]> SALOME platform Git repositories - modules/kernel.git/commitdiff
Salome HOME
PR: merge from branch BR_UnitTests tag mergeto_trunk_17oct05
authorprascle <prascle>
Mon, 17 Oct 2005 10:29:57 +0000 (10:29 +0000)
committerprascle <prascle>
Mon, 17 Oct 2005 10:29:57 +0000 (10:29 +0000)
729 files changed:
INSTALL
Makefile.in
README
README.FIRST.txt [new file with mode: 0644]
bin/VERSION
bin/addToKillList.py [new file with mode: 0755]
bin/appliskel/.bashrc [new file with mode: 0644]
bin/appliskel/CatalogResources.xml [new file with mode: 0644]
bin/appliskel/README [new file with mode: 0644]
bin/appliskel/SalomeApp.xml [new file with mode: 0644]
bin/appliskel/env.d/atFirst.sh [new file with mode: 0644]
bin/appliskel/env.d/envProducts.sh [new file with mode: 0644]
bin/appliskel/env.d/envSalome.sh [new file with mode: 0644]
bin/appliskel/envd [new file with mode: 0644]
bin/appliskel/runAppli [new file with mode: 0755]
bin/appliskel/runConsole [new file with mode: 0755]
bin/appliskel/runParam [new file with mode: 0755]
bin/appliskel/runRemote.sh [new file with mode: 0755]
bin/appliskel/runSession [new file with mode: 0755]
bin/appliskel/runTests [new file with mode: 0755]
bin/createAppli.sh [new file with mode: 0755]
bin/killSalome.py
bin/killSalomeWithPort.py
bin/launchConfigureParser.py
bin/orbmodule.py
bin/runNS.sh
bin/runSalome
bin/runSalome.py
bin/salome.launch
bin/salomeConsole.py
configure.in.base
doc/INSTALL.txt [new file with mode: 0644]
doc/SALOME_Application.txt [new file with mode: 0644]
doc/UnitTests.txt [new file with mode: 0644]
doc/salome/Parallelisme_dans_Salome.pdf [new file with mode: 0644]
doc/salome/Parallelisme_dans_Salome.ps [new file with mode: 0644]
doc/salome/ResourcesManagerManual.pdf [new file with mode: 0644]
doc/salome/gui/KERNEL/cshdat_robohelp.htm
doc/salome/gui/KERNEL/cshdat_webhelp.htm
doc/salome/gui/KERNEL/default.css
doc/salome/gui/KERNEL/default_ns.css
doc/salome/gui/KERNEL/ehelp.xml [new file with mode: 0755]
doc/salome/gui/KERNEL/ehlpdhtm.js
doc/salome/gui/KERNEL/image57.gif [new file with mode: 0755]
doc/salome/gui/KERNEL/image58.gif [new file with mode: 0755]
doc/salome/gui/KERNEL/image59.gif [new file with mode: 0755]
doc/salome/gui/KERNEL/image60.gif [new file with mode: 0755]
doc/salome/gui/KERNEL/image61.gif [new file with mode: 0755]
doc/salome/gui/KERNEL/kernel.htm [new file with mode: 0755]
doc/salome/gui/KERNEL/kernel.log [new file with mode: 0755]
doc/salome/gui/KERNEL/kernel_csh.htm [new file with mode: 0755]
doc/salome/gui/KERNEL/kernel_rhc.htm [new file with mode: 0755]
doc/salome/gui/KERNEL/robohhre.lng [new file with mode: 0755]
doc/salome/gui/KERNEL/webhelp.cab
doc/salome/gui/KERNEL/webhelp.jar
doc/salome/gui/KERNEL/whcsh_home.htm [new file with mode: 0755]
doc/salome/gui/KERNEL/whcshdata.htm [new file with mode: 0755]
doc/salome/gui/KERNEL/whdata/whftdata.js
doc/salome/gui/KERNEL/whdata/whftdata0.htm
doc/salome/gui/KERNEL/whdata/whfts.htm
doc/salome/gui/KERNEL/whdata/whfts.js
doc/salome/gui/KERNEL/whdata/whfwdata.js
doc/salome/gui/KERNEL/whdata/whfwdata0.htm
doc/salome/gui/KERNEL/whdata/whgdata.js
doc/salome/gui/KERNEL/whdata/whgdata0.htm
doc/salome/gui/KERNEL/whdata/whglo.htm
doc/salome/gui/KERNEL/whdata/whglo.js
doc/salome/gui/KERNEL/whdata/whidata.js
doc/salome/gui/KERNEL/whdata/whidx.htm
doc/salome/gui/KERNEL/whdata/whidx.js
doc/salome/gui/KERNEL/whdata/whtdata.js
doc/salome/gui/KERNEL/whdata/whtdata0.htm
doc/salome/gui/KERNEL/whdata/whtoc.htm
doc/salome/gui/KERNEL/whdata/whtoc.js
doc/salome/gui/KERNEL/whfbody.htm
doc/salome/gui/KERNEL/whfdhtml.htm
doc/salome/gui/KERNEL/whfform.htm
doc/salome/gui/KERNEL/whfhost.js
doc/salome/gui/KERNEL/whform.js
doc/salome/gui/KERNEL/whframes.js
doc/salome/gui/KERNEL/whgbody.htm
doc/salome/gui/KERNEL/whgdata/whlstf0.htm
doc/salome/gui/KERNEL/whgdata/whlstf1.htm
doc/salome/gui/KERNEL/whgdata/whlstf2.htm
doc/salome/gui/KERNEL/whgdata/whlstf3.htm
doc/salome/gui/KERNEL/whgdata/whlstf4.htm
doc/salome/gui/KERNEL/whgdata/whlstf5.htm
doc/salome/gui/KERNEL/whgdata/whlstf6.htm
doc/salome/gui/KERNEL/whgdata/whlstf7.htm
doc/salome/gui/KERNEL/whgdata/whlstf8.htm
doc/salome/gui/KERNEL/whgdata/whlstfl0.htm
doc/salome/gui/KERNEL/whgdata/whlstfl1.htm
doc/salome/gui/KERNEL/whgdata/whlstfl10.htm
doc/salome/gui/KERNEL/whgdata/whlstfl11.htm
doc/salome/gui/KERNEL/whgdata/whlstfl12.htm
doc/salome/gui/KERNEL/whgdata/whlstfl13.htm
doc/salome/gui/KERNEL/whgdata/whlstfl14.htm
doc/salome/gui/KERNEL/whgdata/whlstfl15.htm
doc/salome/gui/KERNEL/whgdata/whlstfl16.htm
doc/salome/gui/KERNEL/whgdata/whlstfl17.htm
doc/salome/gui/KERNEL/whgdata/whlstfl18.htm
doc/salome/gui/KERNEL/whgdata/whlstfl19.htm
doc/salome/gui/KERNEL/whgdata/whlstfl2.htm
doc/salome/gui/KERNEL/whgdata/whlstfl20.htm
doc/salome/gui/KERNEL/whgdata/whlstfl21.htm
doc/salome/gui/KERNEL/whgdata/whlstfl22.htm
doc/salome/gui/KERNEL/whgdata/whlstfl23.htm
doc/salome/gui/KERNEL/whgdata/whlstfl24.htm
doc/salome/gui/KERNEL/whgdata/whlstfl25.htm [new file with mode: 0755]
doc/salome/gui/KERNEL/whgdata/whlstfl3.htm
doc/salome/gui/KERNEL/whgdata/whlstfl4.htm
doc/salome/gui/KERNEL/whgdata/whlstfl5.htm
doc/salome/gui/KERNEL/whgdata/whlstfl6.htm
doc/salome/gui/KERNEL/whgdata/whlstfl7.htm
doc/salome/gui/KERNEL/whgdata/whlstfl8.htm
doc/salome/gui/KERNEL/whgdata/whlstfl9.htm
doc/salome/gui/KERNEL/whgdata/whlstg0.htm
doc/salome/gui/KERNEL/whgdata/whlsti0.htm
doc/salome/gui/KERNEL/whgdata/whlstt0.htm
doc/salome/gui/KERNEL/whgdata/whlstt1.htm
doc/salome/gui/KERNEL/whgdata/whlstt2.htm
doc/salome/gui/KERNEL/whgdata/whlstt3.htm
doc/salome/gui/KERNEL/whgdata/whlstt4.htm
doc/salome/gui/KERNEL/whgdata/whnvf30.htm
doc/salome/gui/KERNEL/whgdata/whnvf31.htm
doc/salome/gui/KERNEL/whgdata/whnvf32.htm
doc/salome/gui/KERNEL/whgdata/whnvf33.htm
doc/salome/gui/KERNEL/whgdata/whnvl31.htm
doc/salome/gui/KERNEL/whgdata/whnvl32.htm
doc/salome/gui/KERNEL/whgdata/whnvl33.htm
doc/salome/gui/KERNEL/whgdata/whnvp30.htm
doc/salome/gui/KERNEL/whgdata/whnvp31.htm
doc/salome/gui/KERNEL/whgdata/whnvp32.htm
doc/salome/gui/KERNEL/whgdata/whnvp33.htm
doc/salome/gui/KERNEL/whgdata/whnvt30.htm
doc/salome/gui/KERNEL/whgdata/whnvt31.htm
doc/salome/gui/KERNEL/whgdata/whnvt32.htm
doc/salome/gui/KERNEL/whgdata/whnvt33.htm
doc/salome/gui/KERNEL/whgdef.htm
doc/salome/gui/KERNEL/whgdhtml.htm
doc/salome/gui/KERNEL/whghost.js
doc/salome/gui/KERNEL/whhost.js
doc/salome/gui/KERNEL/whibody.htm
doc/salome/gui/KERNEL/whidhtml.htm
doc/salome/gui/KERNEL/whiform.htm
doc/salome/gui/KERNEL/whihost.js
doc/salome/gui/KERNEL/whlang.js
doc/salome/gui/KERNEL/whmozemu.js
doc/salome/gui/KERNEL/whmsg.js
doc/salome/gui/KERNEL/whnjs.htm
doc/salome/gui/KERNEL/whphost.js
doc/salome/gui/KERNEL/whproj.htm
doc/salome/gui/KERNEL/whproj.js
doc/salome/gui/KERNEL/whproj.xml
doc/salome/gui/KERNEL/whproxy.js
doc/salome/gui/KERNEL/whres.xml
doc/salome/gui/KERNEL/whskin_banner.htm
doc/salome/gui/KERNEL/whskin_blank.htm
doc/salome/gui/KERNEL/whskin_frmset01.htm
doc/salome/gui/KERNEL/whskin_frmset010.htm
doc/salome/gui/KERNEL/whskin_homepage.htm [new file with mode: 0755]
doc/salome/gui/KERNEL/whskin_info.htm
doc/salome/gui/KERNEL/whskin_mbars.htm
doc/salome/gui/KERNEL/whskin_papplet.htm
doc/salome/gui/KERNEL/whskin_pdhtml.htm
doc/salome/gui/KERNEL/whskin_pickup.htm [new file with mode: 0755]
doc/salome/gui/KERNEL/whskin_plist.htm
doc/salome/gui/KERNEL/whskin_tbars.htm
doc/salome/gui/KERNEL/whskin_tw.htm [new file with mode: 0755]
doc/salome/gui/KERNEL/whst_topics.xml
doc/salome/gui/KERNEL/whstart.js
doc/salome/gui/KERNEL/whstub.js
doc/salome/gui/KERNEL/wht_abge.jpg
doc/salome/gui/KERNEL/wht_abgi.jpg
doc/salome/gui/KERNEL/wht_abgw.jpg
doc/salome/gui/KERNEL/wht_abte.jpg
doc/salome/gui/KERNEL/wht_abti.jpg
doc/salome/gui/KERNEL/wht_abtw.jpg
doc/salome/gui/KERNEL/whtbar.js
doc/salome/gui/KERNEL/whtdhtml.htm
doc/salome/gui/KERNEL/whthost.js
doc/salome/gui/KERNEL/whtopic.js
doc/salome/gui/KERNEL/whutils.js
doc/salome/gui/KERNEL/whver.js
doc/salome/tui/KERNEL/doxyfile
idl/Makefile.in
idl/SALOMEDS.idl
idl/SALOME_Comm.idl
idl/SALOME_Component.idl
idl/SALOME_ContainerManager.idl
idl/SALOME_MPIContainer.idl
resources/CatalogResources.xml
resources/KERNELCatalog.xml
resources/Plugin.in [new file with mode: 0755]
salome_adm/Makefile.in
salome_adm/unix/SALOMEconfig.h.in
salome_adm/unix/config_files/ac_cxx_bool.m4
salome_adm/unix/config_files/ac_cxx_depend_flag.m4
salome_adm/unix/config_files/ac_cxx_mutable.m4
salome_adm/unix/config_files/ac_cxx_namespaces.m4
salome_adm/unix/config_files/ac_cxx_partial_specialization.m4
salome_adm/unix/config_files/ac_cxx_typename.m4
salome_adm/unix/config_files/check_boost.m4
salome_adm/unix/config_files/check_cas.m4
salome_adm/unix/config_files/check_cppunit.m4 [new file with mode: 0644]
salome_adm/unix/config_files/check_hdf5.m4
salome_adm/unix/config_files/check_lam.m4
salome_adm/unix/config_files/check_lsf.m4
salome_adm/unix/config_files/check_mico.m4
salome_adm/unix/config_files/check_mpi.m4
salome_adm/unix/config_files/check_mpich.m4
salome_adm/unix/config_files/check_msg2qm.m4 [new file with mode: 0755]
salome_adm/unix/config_files/check_omniorb.m4
salome_adm/unix/config_files/check_opengl.m4
salome_adm/unix/config_files/check_openpbs.m4
salome_adm/unix/config_files/check_pthreads.m4
salome_adm/unix/config_files/check_pyqt.m4
salome_adm/unix/config_files/check_qt.m4
salome_adm/unix/config_files/check_qwt.m4
salome_adm/unix/config_files/check_sip.m4
salome_adm/unix/config_files/check_vtk.m4
salome_adm/unix/config_files/libtool.m4
salome_adm/unix/config_files/production.m4
salome_adm/unix/config_files/pyembed.m4
salome_adm/unix/config_files/python.m4
salome_adm/unix/depend.in
salome_adm/unix/make_commence.in
salome_adm/unix/make_conclude.in
salome_adm/unix/make_module.in
src/Basics/BasicsGenericDestructor.cxx [new file with mode: 0644]
src/Basics/BasicsGenericDestructor.hxx [new file with mode: 0644]
src/Basics/Makefile.in [new file with mode: 0644]
src/Basics/Test/BasicMainTest.hxx [new file with mode: 0644]
src/Basics/Test/Makefile.in [new file with mode: 0644]
src/CASCatch/CASCatch_CatchSignals.cxx [new file with mode: 0644]
src/CASCatch/CASCatch_CatchSignals.hxx [new file with mode: 0644]
src/CASCatch/CASCatch_ErrorHandler.cxx [new file with mode: 0644]
src/CASCatch/CASCatch_ErrorHandler.hxx [new file with mode: 0644]
src/CASCatch/CASCatch_Failure.cxx [new file with mode: 0644]
src/CASCatch/CASCatch_Failure.hxx [new file with mode: 0644]
src/CASCatch/Makefile.in
src/Communication/Makefile.in
src/Communication/MultiCommException.hxx
src/Communication/Receiver.hxx
src/Communication/ReceiverFactory.cxx
src/Communication/ReceiverFactory.hxx
src/Communication/Receivers.cxx
src/Communication/Receivers.hxx
src/Communication/SALOMEMultiComm.cxx
src/Communication/SALOMEMultiComm.hxx
src/Communication/SALOME_Comm_i.cxx
src/Communication/SALOME_Comm_i.hxx
src/Communication/SenderFactory.cxx
src/Communication/SenderFactory.hxx
src/Communication/libSALOME_Comm.i [new file with mode: 0644]
src/Container/Component_i.cxx
src/Container/Container_i.cxx
src/Container/Container_init_python.cxx [new file with mode: 0644]
src/Container/Container_init_python.hxx [new file with mode: 0644]
src/Container/Makefile.in
src/Container/SALOME_ComponentPy.py
src/Container/SALOME_Component_i.hxx
src/Container/SALOME_Container.cxx
src/Container/SALOME_Container.py [new file with mode: 0644]
src/Container/SALOME_ContainerManager.cxx
src/Container/SALOME_ContainerManager.hxx
src/Container/SALOME_ContainerManagerServer.cxx [new file with mode: 0644]
src/Container/SALOME_ContainerPy.py
src/Container/SALOME_Container_i.hxx
src/DataTypeCatalog/Makefile.in
src/DataTypeCatalog/SALOME_DataTypeCatalog_Client.cxx
src/DataTypeCatalog/SALOME_DataTypeCatalog_Handler.hxx
src/DataTypeCatalog/SALOME_DataTypeCatalog_Server.cxx
src/DataTypeCatalog/SALOME_DataTypeCatalog_impl.cxx
src/DataTypeCatalog/SALOME_DataTypeCatalog_impl.hxx
src/GenericObj/SALOME_GenericObj_i.cc
src/GenericObj/SALOME_GenericObj_i.hh
src/HDFPersist/HDFascii.cc
src/HDFPersist/HDFascii.hxx
src/HDFPersist/HDFcontainerObject.hxx
src/HDFPersist/HDFconvert.cc
src/HDFPersist/HDFconvert.hxx
src/HDFPersist/HDFdataset.cc
src/HDFPersist/HDFdataset.hxx
src/HDFPersist/HDFdatasetWrite.c
src/HDFPersist/HDFfile.cc
src/HDFPersist/HDFfile.hxx
src/HDFPersist/HDFgroup.hxx
src/HDFPersist/HDFinternalObject.cc
src/HDFPersist/HDFinternalObject.hxx
src/HDFPersist/HDFobject.hxx
src/KERNEL_PY/Help.py [new file with mode: 0755]
src/KERNEL_PY/Makefile.in [new file with mode: 0755]
src/KERNEL_PY/PyInterp.py [new file with mode: 0755]
src/KERNEL_PY/batchmode_salome.py [new file with mode: 0755]
src/KERNEL_PY/import_hook.py [new file with mode: 0755]
src/KERNEL_PY/kernel_shared_modules.py [new file with mode: 0755]
src/KERNEL_PY/salome.py [new file with mode: 0755]
src/KERNEL_PY/salome_ComponentGUI.py [new file with mode: 0644]
src/KERNEL_PY/salome_iapp.py [new file with mode: 0644]
src/KERNEL_PY/salome_kernel.py [new file with mode: 0644]
src/KERNEL_PY/salome_shared_modules.py [new file with mode: 0755]
src/KERNEL_PY/salome_study.py [new file with mode: 0644]
src/KERNEL_PY/salome_test.py [new file with mode: 0755]
src/LifeCycleCORBA/Launchers.cxx
src/LifeCycleCORBA/Makefile.in
src/LifeCycleCORBA/SALOME_LifeCycleCORBA.cxx
src/LifeCycleCORBA/SALOME_LifeCycleCORBA.hxx
src/LifeCycleCORBA/Test/LifeCycleCORBATest.cxx [new file with mode: 0644]
src/LifeCycleCORBA/Test/LifeCycleCORBATest.hxx [new file with mode: 0644]
src/LifeCycleCORBA/Test/Makefile.in [new file with mode: 0644]
src/LifeCycleCORBA/Test/TestLifeCycleCORBA.cxx [new file with mode: 0644]
src/LifeCycleCORBA/Test/TestLifeCycleCORBA.py [new file with mode: 0644]
src/LifeCycleCORBA/Test_LifeCycleCORBA.cxx [new file with mode: 0644]
src/LifeCycleCORBA_SWIG/LifeCycleCORBA.py [new file with mode: 0644]
src/LifeCycleCORBA_SWIG/Makefile.in [new file with mode: 0644]
src/LifeCycleCORBA_SWIG/TestLifeCycleCORBA.py [new file with mode: 0644]
src/LifeCycleCORBA_SWIG/libSALOME_LifeCycleCORBA.i [new file with mode: 0644]
src/Logger/SALOME_Logger_Server.cxx
src/Logger/SALOME_Logger_Server.hxx
src/Logger/SALOME_Trace.cxx
src/Logger/SALOME_Trace.py
src/Logger/Test/Makefile.in [new file with mode: 0644]
src/Logger/Test/TestKiller.py [new file with mode: 0644]
src/MPIContainer/MPIContainer_i.cxx
src/MPIContainer/MPIContainer_i.hxx
src/MPIContainer/Makefile.in
src/MPIContainer/SALOME_MPIContainer.cxx
src/Makefile.in
src/ModuleCatalog/Makefile.in
src/ModuleCatalog/SALOME_ModuleCatalog_Acomponent_impl.cxx
src/ModuleCatalog/SALOME_ModuleCatalog_Acomponent_impl.hxx
src/ModuleCatalog/SALOME_ModuleCatalog_Client.cxx
src/ModuleCatalog/SALOME_ModuleCatalog_Handler.hxx
src/ModuleCatalog/SALOME_ModuleCatalog_Server.cxx
src/ModuleCatalog/SALOME_ModuleCatalog_impl.cxx
src/ModuleCatalog/SALOME_ModuleCatalog_impl.hxx
src/ModuleGenerator/IDLparser.py
src/NamingService/Makefile.in
src/NamingService/NamingService_WaitForServerReadiness.cxx
src/NamingService/NamingService_WaitForServerReadiness.hxx
src/NamingService/SALOME_NamingService.cxx
src/NamingService/SALOME_NamingService.hxx
src/NamingService/SALOME_NamingServicePy.py
src/NamingService/ServiceUnreachable.hxx
src/Notification/NOTIFICATION.cxx
src/Notification/NOTIFICATION.hxx
src/Notification/NOTIFICATION_Consumer.hxx
src/Notification/NOTIFICATION_Supplier.hxx
src/Registry/Makefile.in
src/Registry/RegistryConnexion.cxx
src/Registry/RegistryConnexion.hxx
src/Registry/RegistryService.cxx
src/Registry/RegistryService.hxx
src/Registry/SALOME_Registry_Server.cxx
src/ResourcesManager/Makefile.in
src/ResourcesManager/SALOME_LoadRateManager.cxx
src/ResourcesManager/SALOME_LoadRateManager.hxx
src/ResourcesManager/SALOME_ResourcesCatalog_Handler.cxx
src/ResourcesManager/SALOME_ResourcesCatalog_Handler.hxx
src/ResourcesManager/SALOME_ResourcesCatalog_Parser.cxx
src/ResourcesManager/SALOME_ResourcesCatalog_Parser.hxx
src/ResourcesManager/SALOME_ResourcesManager.cxx
src/ResourcesManager/SALOME_ResourcesManager.hxx
src/RessourcesCatalog/Makefile.in
src/RessourcesCatalog/SALOME_RessourcesCatalog_Client.cxx
src/RessourcesCatalog/SALOME_RessourcesCatalog_Handler.hxx
src/RessourcesCatalog/SALOME_RessourcesCatalog_Server.cxx
src/RessourcesCatalog/SALOME_RessourcesCatalog_impl.cxx
src/RessourcesCatalog/SALOME_RessourcesCatalog_impl.hxx
src/SALOMEDS/Makefile.in
src/SALOMEDS/SALOMEDS.cxx [new file with mode: 0644]
src/SALOMEDS/SALOMEDS.hxx [new file with mode: 0644]
src/SALOMEDS/SALOMEDS_AttributeComment.cxx [new file with mode: 0644]
src/SALOMEDS/SALOMEDS_AttributeComment.hxx [new file with mode: 0644]
src/SALOMEDS/SALOMEDS_AttributeComment_i.cxx
src/SALOMEDS/SALOMEDS_AttributeComment_i.hxx
src/SALOMEDS/SALOMEDS_AttributeDrawable.cxx [new file with mode: 0644]
src/SALOMEDS/SALOMEDS_AttributeDrawable.hxx [new file with mode: 0644]
src/SALOMEDS/SALOMEDS_AttributeDrawable_i.cxx
src/SALOMEDS/SALOMEDS_AttributeDrawable_i.hxx
src/SALOMEDS/SALOMEDS_AttributeExpandable.cxx [new file with mode: 0644]
src/SALOMEDS/SALOMEDS_AttributeExpandable.hxx [new file with mode: 0644]
src/SALOMEDS/SALOMEDS_AttributeExpandable_i.cxx
src/SALOMEDS/SALOMEDS_AttributeExpandable_i.hxx
src/SALOMEDS/SALOMEDS_AttributeExternalFileDef.cxx [new file with mode: 0644]
src/SALOMEDS/SALOMEDS_AttributeExternalFileDef.hxx [new file with mode: 0644]
src/SALOMEDS/SALOMEDS_AttributeExternalFileDef_i.cxx
src/SALOMEDS/SALOMEDS_AttributeExternalFileDef_i.hxx
src/SALOMEDS/SALOMEDS_AttributeFileType.cxx [new file with mode: 0644]
src/SALOMEDS/SALOMEDS_AttributeFileType.hxx [new file with mode: 0644]
src/SALOMEDS/SALOMEDS_AttributeFileType_i.cxx
src/SALOMEDS/SALOMEDS_AttributeFileType_i.hxx
src/SALOMEDS/SALOMEDS_AttributeFlags.cxx [new file with mode: 0644]
src/SALOMEDS/SALOMEDS_AttributeFlags.hxx [new file with mode: 0644]
src/SALOMEDS/SALOMEDS_AttributeFlags_i.cxx
src/SALOMEDS/SALOMEDS_AttributeFlags_i.hxx
src/SALOMEDS/SALOMEDS_AttributeGraphic.cxx [new file with mode: 0644]
src/SALOMEDS/SALOMEDS_AttributeGraphic.hxx [new file with mode: 0644]
src/SALOMEDS/SALOMEDS_AttributeGraphic_i.cxx
src/SALOMEDS/SALOMEDS_AttributeGraphic_i.hxx
src/SALOMEDS/SALOMEDS_AttributeIOR.cxx [new file with mode: 0644]
src/SALOMEDS/SALOMEDS_AttributeIOR.hxx [new file with mode: 0644]
src/SALOMEDS/SALOMEDS_AttributeIOR_i.cxx
src/SALOMEDS/SALOMEDS_AttributeIOR_i.hxx
src/SALOMEDS/SALOMEDS_AttributeInteger.cxx [new file with mode: 0644]
src/SALOMEDS/SALOMEDS_AttributeInteger.hxx [new file with mode: 0644]
src/SALOMEDS/SALOMEDS_AttributeInteger_i.cxx
src/SALOMEDS/SALOMEDS_AttributeInteger_i.hxx
src/SALOMEDS/SALOMEDS_AttributeLocalID.cxx [new file with mode: 0644]
src/SALOMEDS/SALOMEDS_AttributeLocalID.hxx [new file with mode: 0644]
src/SALOMEDS/SALOMEDS_AttributeLocalID_i.cxx
src/SALOMEDS/SALOMEDS_AttributeLocalID_i.hxx
src/SALOMEDS/SALOMEDS_AttributeName.cxx [new file with mode: 0644]
src/SALOMEDS/SALOMEDS_AttributeName.hxx [new file with mode: 0644]
src/SALOMEDS/SALOMEDS_AttributeName_i.cxx
src/SALOMEDS/SALOMEDS_AttributeName_i.hxx
src/SALOMEDS/SALOMEDS_AttributeOpened.cxx [new file with mode: 0644]
src/SALOMEDS/SALOMEDS_AttributeOpened.hxx [new file with mode: 0644]
src/SALOMEDS/SALOMEDS_AttributeOpened_i.cxx
src/SALOMEDS/SALOMEDS_AttributeOpened_i.hxx
src/SALOMEDS/SALOMEDS_AttributePersistentRef.cxx [new file with mode: 0644]
src/SALOMEDS/SALOMEDS_AttributePersistentRef.hxx [new file with mode: 0644]
src/SALOMEDS/SALOMEDS_AttributePersistentRef_i.cxx
src/SALOMEDS/SALOMEDS_AttributePersistentRef_i.hxx
src/SALOMEDS/SALOMEDS_AttributePixMap.cxx [new file with mode: 0644]
src/SALOMEDS/SALOMEDS_AttributePixMap.hxx [new file with mode: 0644]
src/SALOMEDS/SALOMEDS_AttributePixMap_i.cxx
src/SALOMEDS/SALOMEDS_AttributePixMap_i.hxx
src/SALOMEDS/SALOMEDS_AttributePythonObject.cxx [new file with mode: 0644]
src/SALOMEDS/SALOMEDS_AttributePythonObject.hxx [new file with mode: 0644]
src/SALOMEDS/SALOMEDS_AttributePythonObject_i.cxx
src/SALOMEDS/SALOMEDS_AttributePythonObject_i.hxx
src/SALOMEDS/SALOMEDS_AttributeReal.cxx [new file with mode: 0644]
src/SALOMEDS/SALOMEDS_AttributeReal.hxx [new file with mode: 0644]
src/SALOMEDS/SALOMEDS_AttributeReal_i.cxx
src/SALOMEDS/SALOMEDS_AttributeReal_i.hxx
src/SALOMEDS/SALOMEDS_AttributeSelectable.cxx [new file with mode: 0644]
src/SALOMEDS/SALOMEDS_AttributeSelectable.hxx [new file with mode: 0644]
src/SALOMEDS/SALOMEDS_AttributeSelectable_i.cxx
src/SALOMEDS/SALOMEDS_AttributeSelectable_i.hxx
src/SALOMEDS/SALOMEDS_AttributeSequenceOfInteger.cxx [new file with mode: 0644]
src/SALOMEDS/SALOMEDS_AttributeSequenceOfInteger.hxx [new file with mode: 0644]
src/SALOMEDS/SALOMEDS_AttributeSequenceOfInteger_i.cxx
src/SALOMEDS/SALOMEDS_AttributeSequenceOfInteger_i.hxx
src/SALOMEDS/SALOMEDS_AttributeSequenceOfReal.cxx [new file with mode: 0644]
src/SALOMEDS/SALOMEDS_AttributeSequenceOfReal.hxx [new file with mode: 0644]
src/SALOMEDS/SALOMEDS_AttributeSequenceOfReal_i.cxx
src/SALOMEDS/SALOMEDS_AttributeSequenceOfReal_i.hxx
src/SALOMEDS/SALOMEDS_AttributeStudyProperties.cxx [new file with mode: 0644]
src/SALOMEDS/SALOMEDS_AttributeStudyProperties.hxx [new file with mode: 0644]
src/SALOMEDS/SALOMEDS_AttributeStudyProperties_i.cxx
src/SALOMEDS/SALOMEDS_AttributeStudyProperties_i.hxx
src/SALOMEDS/SALOMEDS_AttributeTableOfInteger.cxx [new file with mode: 0644]
src/SALOMEDS/SALOMEDS_AttributeTableOfInteger.hxx [new file with mode: 0644]
src/SALOMEDS/SALOMEDS_AttributeTableOfInteger_i.cxx
src/SALOMEDS/SALOMEDS_AttributeTableOfInteger_i.hxx
src/SALOMEDS/SALOMEDS_AttributeTableOfReal.cxx [new file with mode: 0644]
src/SALOMEDS/SALOMEDS_AttributeTableOfReal.hxx [new file with mode: 0644]
src/SALOMEDS/SALOMEDS_AttributeTableOfReal_i.cxx
src/SALOMEDS/SALOMEDS_AttributeTableOfReal_i.hxx
src/SALOMEDS/SALOMEDS_AttributeTableOfString.cxx [new file with mode: 0644]
src/SALOMEDS/SALOMEDS_AttributeTableOfString.hxx [new file with mode: 0644]
src/SALOMEDS/SALOMEDS_AttributeTableOfString_i.cxx
src/SALOMEDS/SALOMEDS_AttributeTableOfString_i.hxx
src/SALOMEDS/SALOMEDS_AttributeTarget.cxx [new file with mode: 0644]
src/SALOMEDS/SALOMEDS_AttributeTarget.hxx [new file with mode: 0644]
src/SALOMEDS/SALOMEDS_AttributeTarget_i.cxx
src/SALOMEDS/SALOMEDS_AttributeTarget_i.hxx
src/SALOMEDS/SALOMEDS_AttributeTextColor.cxx [new file with mode: 0644]
src/SALOMEDS/SALOMEDS_AttributeTextColor.hxx [new file with mode: 0644]
src/SALOMEDS/SALOMEDS_AttributeTextColor_i.cxx
src/SALOMEDS/SALOMEDS_AttributeTextColor_i.hxx
src/SALOMEDS/SALOMEDS_AttributeTextHighlightColor.cxx [new file with mode: 0644]
src/SALOMEDS/SALOMEDS_AttributeTextHighlightColor.hxx [new file with mode: 0644]
src/SALOMEDS/SALOMEDS_AttributeTextHighlightColor_i.cxx
src/SALOMEDS/SALOMEDS_AttributeTextHighlightColor_i.hxx
src/SALOMEDS/SALOMEDS_AttributeTreeNode.cxx [new file with mode: 0644]
src/SALOMEDS/SALOMEDS_AttributeTreeNode.hxx [new file with mode: 0644]
src/SALOMEDS/SALOMEDS_AttributeTreeNode_i.cxx
src/SALOMEDS/SALOMEDS_AttributeTreeNode_i.hxx
src/SALOMEDS/SALOMEDS_AttributeUserID.cxx [new file with mode: 0644]
src/SALOMEDS/SALOMEDS_AttributeUserID.hxx [new file with mode: 0644]
src/SALOMEDS/SALOMEDS_AttributeUserID_i.cxx
src/SALOMEDS/SALOMEDS_AttributeUserID_i.hxx
src/SALOMEDS/SALOMEDS_Attributes.hxx [new file with mode: 0644]
src/SALOMEDS/SALOMEDS_ChildIterator.cxx [new file with mode: 0644]
src/SALOMEDS/SALOMEDS_ChildIterator.hxx [new file with mode: 0644]
src/SALOMEDS/SALOMEDS_ChildIterator_i.cxx
src/SALOMEDS/SALOMEDS_ChildIterator_i.hxx
src/SALOMEDS/SALOMEDS_Client.cxx
src/SALOMEDS/SALOMEDS_ClientAttributes.hxx [new file with mode: 0644]
src/SALOMEDS/SALOMEDS_Driver_i.cxx [new file with mode: 0644]
src/SALOMEDS/SALOMEDS_Driver_i.hxx [new file with mode: 0644]
src/SALOMEDS/SALOMEDS_GenericAttribute.cxx [new file with mode: 0644]
src/SALOMEDS/SALOMEDS_GenericAttribute.hxx [new file with mode: 0644]
src/SALOMEDS/SALOMEDS_GenericAttribute_i.cxx
src/SALOMEDS/SALOMEDS_GenericAttribute_i.hxx
src/SALOMEDS/SALOMEDS_SAttribute_i.hxx
src/SALOMEDS/SALOMEDS_SComponent.cxx [new file with mode: 0644]
src/SALOMEDS/SALOMEDS_SComponent.hxx [new file with mode: 0644]
src/SALOMEDS/SALOMEDS_SComponentIterator.cxx [new file with mode: 0644]
src/SALOMEDS/SALOMEDS_SComponentIterator.hxx [new file with mode: 0644]
src/SALOMEDS/SALOMEDS_SComponentIterator_i.cxx
src/SALOMEDS/SALOMEDS_SComponentIterator_i.hxx
src/SALOMEDS/SALOMEDS_SComponent_i.cxx
src/SALOMEDS/SALOMEDS_SComponent_i.hxx
src/SALOMEDS/SALOMEDS_SObject.cxx [new file with mode: 0644]
src/SALOMEDS/SALOMEDS_SObject.hxx [new file with mode: 0644]
src/SALOMEDS/SALOMEDS_SObject_i.cxx
src/SALOMEDS/SALOMEDS_SObject_i.hxx
src/SALOMEDS/SALOMEDS_Server.cxx
src/SALOMEDS/SALOMEDS_Study.cxx [new file with mode: 0644]
src/SALOMEDS/SALOMEDS_Study.hxx [new file with mode: 0644]
src/SALOMEDS/SALOMEDS_StudyBuilder.cxx [new file with mode: 0644]
src/SALOMEDS/SALOMEDS_StudyBuilder.hxx [new file with mode: 0644]
src/SALOMEDS/SALOMEDS_StudyBuilder_i.cxx
src/SALOMEDS/SALOMEDS_StudyBuilder_i.hxx
src/SALOMEDS/SALOMEDS_StudyManager.cxx [new file with mode: 0644]
src/SALOMEDS/SALOMEDS_StudyManager.hxx [new file with mode: 0644]
src/SALOMEDS/SALOMEDS_StudyManager_i.cxx
src/SALOMEDS/SALOMEDS_StudyManager_i.hxx
src/SALOMEDS/SALOMEDS_Study_i.cxx
src/SALOMEDS/SALOMEDS_Study_i.hxx
src/SALOMEDS/SALOMEDS_UseCaseBuilder.cxx [new file with mode: 0644]
src/SALOMEDS/SALOMEDS_UseCaseBuilder.hxx [new file with mode: 0644]
src/SALOMEDS/SALOMEDS_UseCaseBuilder_i.cxx
src/SALOMEDS/SALOMEDS_UseCaseBuilder_i.hxx
src/SALOMEDS/SALOMEDS_UseCaseIterator.cxx [new file with mode: 0644]
src/SALOMEDS/SALOMEDS_UseCaseIterator.hxx [new file with mode: 0644]
src/SALOMEDS/SALOMEDS_UseCaseIterator_i.cxx
src/SALOMEDS/SALOMEDS_UseCaseIterator_i.hxx
src/SALOMEDS/SALOME_DriverPy.py [new file with mode: 0644]
src/SALOMEDSClient/Makefile.in [new file with mode: 0644]
src/SALOMEDSClient/SALOMEDSClient.hxx [new file with mode: 0644]
src/SALOMEDSClient/SALOMEDSClient_AttributeComment.hxx [new file with mode: 0644]
src/SALOMEDSClient/SALOMEDSClient_AttributeDrawable.hxx [new file with mode: 0644]
src/SALOMEDSClient/SALOMEDSClient_AttributeExpandable.hxx [new file with mode: 0644]
src/SALOMEDSClient/SALOMEDSClient_AttributeExternalFileDef.hxx [new file with mode: 0644]
src/SALOMEDSClient/SALOMEDSClient_AttributeFileType.hxx [new file with mode: 0644]
src/SALOMEDSClient/SALOMEDSClient_AttributeFlags.hxx [new file with mode: 0644]
src/SALOMEDSClient/SALOMEDSClient_AttributeGraphic.hxx [new file with mode: 0644]
src/SALOMEDSClient/SALOMEDSClient_AttributeIOR.hxx [new file with mode: 0644]
src/SALOMEDSClient/SALOMEDSClient_AttributeInteger.hxx [new file with mode: 0644]
src/SALOMEDSClient/SALOMEDSClient_AttributeLocalID.hxx [new file with mode: 0644]
src/SALOMEDSClient/SALOMEDSClient_AttributeName.hxx [new file with mode: 0644]
src/SALOMEDSClient/SALOMEDSClient_AttributeOpened.hxx [new file with mode: 0644]
src/SALOMEDSClient/SALOMEDSClient_AttributePersistentRef.hxx [new file with mode: 0644]
src/SALOMEDSClient/SALOMEDSClient_AttributePixMap.hxx [new file with mode: 0644]
src/SALOMEDSClient/SALOMEDSClient_AttributePythonObject.hxx [new file with mode: 0644]
src/SALOMEDSClient/SALOMEDSClient_AttributeReal.hxx [new file with mode: 0644]
src/SALOMEDSClient/SALOMEDSClient_AttributeSelectable.hxx [new file with mode: 0644]
src/SALOMEDSClient/SALOMEDSClient_AttributeSequenceOfInteger.hxx [new file with mode: 0644]
src/SALOMEDSClient/SALOMEDSClient_AttributeSequenceOfReal.hxx [new file with mode: 0644]
src/SALOMEDSClient/SALOMEDSClient_AttributeStudyProperties.hxx [new file with mode: 0644]
src/SALOMEDSClient/SALOMEDSClient_AttributeTableOfInteger.hxx [new file with mode: 0644]
src/SALOMEDSClient/SALOMEDSClient_AttributeTableOfReal.hxx [new file with mode: 0644]
src/SALOMEDSClient/SALOMEDSClient_AttributeTableOfString.hxx [new file with mode: 0644]
src/SALOMEDSClient/SALOMEDSClient_AttributeTarget.hxx [new file with mode: 0644]
src/SALOMEDSClient/SALOMEDSClient_AttributeTextColor.hxx [new file with mode: 0644]
src/SALOMEDSClient/SALOMEDSClient_AttributeTextHighlightColor.hxx [new file with mode: 0644]
src/SALOMEDSClient/SALOMEDSClient_AttributeTreeNode.hxx [new file with mode: 0644]
src/SALOMEDSClient/SALOMEDSClient_AttributeUserID.hxx [new file with mode: 0644]
src/SALOMEDSClient/SALOMEDSClient_ChildIterator.hxx [new file with mode: 0644]
src/SALOMEDSClient/SALOMEDSClient_GenericAttribute.hxx [new file with mode: 0644]
src/SALOMEDSClient/SALOMEDSClient_SComponent.hxx [new file with mode: 0644]
src/SALOMEDSClient/SALOMEDSClient_SComponentIterator.hxx [new file with mode: 0644]
src/SALOMEDSClient/SALOMEDSClient_SObject.hxx [new file with mode: 0644]
src/SALOMEDSClient/SALOMEDSClient_Study.hxx [new file with mode: 0644]
src/SALOMEDSClient/SALOMEDSClient_StudyBuilder.hxx [new file with mode: 0644]
src/SALOMEDSClient/SALOMEDSClient_StudyManager.hxx [new file with mode: 0644]
src/SALOMEDSClient/SALOMEDSClient_UseCaseBuilder.hxx [new file with mode: 0644]
src/SALOMEDSClient/SALOMEDSClient_UseCaseIterator.hxx [new file with mode: 0644]
src/SALOMEDSClient/SALOMEDSClient_definitions.hxx [new file with mode: 0644]
src/SALOMEDSImpl/Makefile.in [new file with mode: 0644]
src/SALOMEDSImpl/SALOMEDSImpl_AttributeComment.cxx [new file with mode: 0644]
src/SALOMEDSImpl/SALOMEDSImpl_AttributeComment.hxx [new file with mode: 0644]
src/SALOMEDSImpl/SALOMEDSImpl_AttributeDrawable.cxx [new file with mode: 0644]
src/SALOMEDSImpl/SALOMEDSImpl_AttributeDrawable.hxx [new file with mode: 0644]
src/SALOMEDSImpl/SALOMEDSImpl_AttributeExpandable.cxx [new file with mode: 0644]
src/SALOMEDSImpl/SALOMEDSImpl_AttributeExpandable.hxx [new file with mode: 0644]
src/SALOMEDSImpl/SALOMEDSImpl_AttributeExternalFileDef.cxx [new file with mode: 0644]
src/SALOMEDSImpl/SALOMEDSImpl_AttributeExternalFileDef.hxx [new file with mode: 0644]
src/SALOMEDSImpl/SALOMEDSImpl_AttributeFileType.cxx [new file with mode: 0644]
src/SALOMEDSImpl/SALOMEDSImpl_AttributeFileType.hxx [new file with mode: 0644]
src/SALOMEDSImpl/SALOMEDSImpl_AttributeFlags.cxx [new file with mode: 0644]
src/SALOMEDSImpl/SALOMEDSImpl_AttributeFlags.hxx [new file with mode: 0644]
src/SALOMEDSImpl/SALOMEDSImpl_AttributeGraphic.cxx [new file with mode: 0644]
src/SALOMEDSImpl/SALOMEDSImpl_AttributeGraphic.hxx [new file with mode: 0644]
src/SALOMEDSImpl/SALOMEDSImpl_AttributeIOR.cxx [new file with mode: 0644]
src/SALOMEDSImpl/SALOMEDSImpl_AttributeIOR.hxx [new file with mode: 0644]
src/SALOMEDSImpl/SALOMEDSImpl_AttributeInteger.cxx [new file with mode: 0644]
src/SALOMEDSImpl/SALOMEDSImpl_AttributeInteger.hxx [new file with mode: 0644]
src/SALOMEDSImpl/SALOMEDSImpl_AttributeLocalID.cxx [new file with mode: 0644]
src/SALOMEDSImpl/SALOMEDSImpl_AttributeLocalID.hxx [new file with mode: 0644]
src/SALOMEDSImpl/SALOMEDSImpl_AttributeName.cxx [new file with mode: 0644]
src/SALOMEDSImpl/SALOMEDSImpl_AttributeName.hxx [new file with mode: 0644]
src/SALOMEDSImpl/SALOMEDSImpl_AttributeOpened.cxx [new file with mode: 0644]
src/SALOMEDSImpl/SALOMEDSImpl_AttributeOpened.hxx [new file with mode: 0644]
src/SALOMEDSImpl/SALOMEDSImpl_AttributePersistentRef.cxx [new file with mode: 0644]
src/SALOMEDSImpl/SALOMEDSImpl_AttributePersistentRef.hxx [new file with mode: 0644]
src/SALOMEDSImpl/SALOMEDSImpl_AttributePixMap.cxx [new file with mode: 0644]
src/SALOMEDSImpl/SALOMEDSImpl_AttributePixMap.hxx [new file with mode: 0644]
src/SALOMEDSImpl/SALOMEDSImpl_AttributePythonObject.cxx [new file with mode: 0644]
src/SALOMEDSImpl/SALOMEDSImpl_AttributePythonObject.hxx [new file with mode: 0644]
src/SALOMEDSImpl/SALOMEDSImpl_AttributeReal.cxx [new file with mode: 0644]
src/SALOMEDSImpl/SALOMEDSImpl_AttributeReal.hxx [new file with mode: 0644]
src/SALOMEDSImpl/SALOMEDSImpl_AttributeReference.cxx [new file with mode: 0644]
src/SALOMEDSImpl/SALOMEDSImpl_AttributeReference.hxx [new file with mode: 0644]
src/SALOMEDSImpl/SALOMEDSImpl_AttributeSelectable.cxx [new file with mode: 0644]
src/SALOMEDSImpl/SALOMEDSImpl_AttributeSelectable.hxx [new file with mode: 0644]
src/SALOMEDSImpl/SALOMEDSImpl_AttributeSequenceOfInteger.cxx [new file with mode: 0644]
src/SALOMEDSImpl/SALOMEDSImpl_AttributeSequenceOfInteger.hxx [new file with mode: 0644]
src/SALOMEDSImpl/SALOMEDSImpl_AttributeSequenceOfReal.cxx [new file with mode: 0644]
src/SALOMEDSImpl/SALOMEDSImpl_AttributeSequenceOfReal.hxx [new file with mode: 0644]
src/SALOMEDSImpl/SALOMEDSImpl_AttributeStudyProperties.cxx [new file with mode: 0644]
src/SALOMEDSImpl/SALOMEDSImpl_AttributeStudyProperties.hxx [new file with mode: 0644]
src/SALOMEDSImpl/SALOMEDSImpl_AttributeTableOfInteger.cxx [new file with mode: 0644]
src/SALOMEDSImpl/SALOMEDSImpl_AttributeTableOfInteger.hxx [new file with mode: 0644]
src/SALOMEDSImpl/SALOMEDSImpl_AttributeTableOfReal.cxx [new file with mode: 0644]
src/SALOMEDSImpl/SALOMEDSImpl_AttributeTableOfReal.hxx [new file with mode: 0644]
src/SALOMEDSImpl/SALOMEDSImpl_AttributeTableOfString.cxx [new file with mode: 0644]
src/SALOMEDSImpl/SALOMEDSImpl_AttributeTableOfString.hxx [new file with mode: 0644]
src/SALOMEDSImpl/SALOMEDSImpl_AttributeTarget.cxx [new file with mode: 0644]
src/SALOMEDSImpl/SALOMEDSImpl_AttributeTarget.hxx [new file with mode: 0644]
src/SALOMEDSImpl/SALOMEDSImpl_AttributeTextColor.cxx [new file with mode: 0644]
src/SALOMEDSImpl/SALOMEDSImpl_AttributeTextColor.hxx [new file with mode: 0644]
src/SALOMEDSImpl/SALOMEDSImpl_AttributeTextHighlightColor.cxx [new file with mode: 0644]
src/SALOMEDSImpl/SALOMEDSImpl_AttributeTextHighlightColor.hxx [new file with mode: 0644]
src/SALOMEDSImpl/SALOMEDSImpl_AttributeTreeNode.cxx [new file with mode: 0644]
src/SALOMEDSImpl/SALOMEDSImpl_AttributeTreeNode.hxx [new file with mode: 0644]
src/SALOMEDSImpl/SALOMEDSImpl_AttributeUserID.cxx [new file with mode: 0644]
src/SALOMEDSImpl/SALOMEDSImpl_AttributeUserID.hxx [new file with mode: 0644]
src/SALOMEDSImpl/SALOMEDSImpl_Attributes.hxx [new file with mode: 0644]
src/SALOMEDSImpl/SALOMEDSImpl_Callback.cxx [new file with mode: 0644]
src/SALOMEDSImpl/SALOMEDSImpl_Callback.hxx [new file with mode: 0644]
src/SALOMEDSImpl/SALOMEDSImpl_ChildIterator.cxx [new file with mode: 0644]
src/SALOMEDSImpl/SALOMEDSImpl_ChildIterator.hxx [new file with mode: 0644]
src/SALOMEDSImpl/SALOMEDSImpl_ChildNodeIterator.cxx [new file with mode: 0644]
src/SALOMEDSImpl/SALOMEDSImpl_ChildNodeIterator.hxx [new file with mode: 0644]
src/SALOMEDSImpl/SALOMEDSImpl_Driver.hxx [new file with mode: 0644]
src/SALOMEDSImpl/SALOMEDSImpl_GenericAttribute.cxx [new file with mode: 0644]
src/SALOMEDSImpl/SALOMEDSImpl_GenericAttribute.hxx [new file with mode: 0644]
src/SALOMEDSImpl/SALOMEDSImpl_OCAFApplication.cxx [new file with mode: 0644]
src/SALOMEDSImpl/SALOMEDSImpl_OCAFApplication.hxx [new file with mode: 0644]
src/SALOMEDSImpl/SALOMEDSImpl_SComponent.cxx [new file with mode: 0644]
src/SALOMEDSImpl/SALOMEDSImpl_SComponent.hxx [new file with mode: 0644]
src/SALOMEDSImpl/SALOMEDSImpl_SComponentIterator.cxx [new file with mode: 0644]
src/SALOMEDSImpl/SALOMEDSImpl_SComponentIterator.hxx [new file with mode: 0644]
src/SALOMEDSImpl/SALOMEDSImpl_SObject.cxx [new file with mode: 0644]
src/SALOMEDSImpl/SALOMEDSImpl_SObject.hxx [new file with mode: 0644]
src/SALOMEDSImpl/SALOMEDSImpl_Study.cxx [new file with mode: 0644]
src/SALOMEDSImpl/SALOMEDSImpl_Study.hxx [new file with mode: 0644]
src/SALOMEDSImpl/SALOMEDSImpl_StudyBuilder.cxx [new file with mode: 0644]
src/SALOMEDSImpl/SALOMEDSImpl_StudyBuilder.hxx [new file with mode: 0644]
src/SALOMEDSImpl/SALOMEDSImpl_StudyHandle.cxx [new file with mode: 0644]
src/SALOMEDSImpl/SALOMEDSImpl_StudyHandle.hxx [new file with mode: 0644]
src/SALOMEDSImpl/SALOMEDSImpl_StudyManager.cxx [new file with mode: 0644]
src/SALOMEDSImpl/SALOMEDSImpl_StudyManager.hxx [new file with mode: 0644]
src/SALOMEDSImpl/SALOMEDSImpl_Tool.cxx [new file with mode: 0644]
src/SALOMEDSImpl/SALOMEDSImpl_Tool.hxx [new file with mode: 0644]
src/SALOMEDSImpl/SALOMEDSImpl_UseCaseBuilder.cxx [new file with mode: 0644]
src/SALOMEDSImpl/SALOMEDSImpl_UseCaseBuilder.hxx [new file with mode: 0644]
src/SALOMEDSImpl/SALOMEDSImpl_UseCaseIterator.cxx [new file with mode: 0644]
src/SALOMEDSImpl/SALOMEDSImpl_UseCaseIterator.hxx [new file with mode: 0644]
src/SALOMEDSImpl/testDS.cxx [new file with mode: 0644]
src/SALOMELocalTrace/BaseTraceCollector.cxx [new file with mode: 0644]
src/SALOMELocalTrace/BaseTraceCollector.hxx [new file with mode: 0644]
src/SALOMELocalTrace/FileTraceCollector.cxx [new file with mode: 0644]
src/SALOMELocalTrace/FileTraceCollector.hxx [new file with mode: 0644]
src/SALOMELocalTrace/LocalTraceBufferPool.cxx
src/SALOMELocalTrace/LocalTraceBufferPool.hxx
src/SALOMELocalTrace/LocalTraceCollector.cxx
src/SALOMELocalTrace/LocalTraceCollector.hxx
src/SALOMELocalTrace/Makefile.in
src/SALOMELocalTrace/Test/Makefile.in [new file with mode: 0644]
src/SALOMELocalTrace/Test/SALOMELocalTraceTest.cxx [new file with mode: 0644]
src/SALOMELocalTrace/Test/SALOMELocalTraceTest.hxx [new file with mode: 0644]
src/SALOMELocalTrace/Test/TestSALOMELocalTrace.cxx [new file with mode: 0644]
src/SALOMELocalTrace/Test/TestSALOMELocalTrace.py [new file with mode: 0644]
src/SALOMELocalTrace/utilities.h
src/SALOMETraceCollector/Makefile.in
src/SALOMETraceCollector/SALOMETraceCollector.cxx
src/SALOMETraceCollector/SALOMETraceCollector.hxx
src/SALOMETraceCollector/Test/Makefile.in [new file with mode: 0644]
src/SALOMETraceCollector/Test/SALOMETraceCollectorTest.cxx [new file with mode: 0644]
src/SALOMETraceCollector/Test/SALOMETraceCollectorTest.hxx [new file with mode: 0644]
src/SALOMETraceCollector/Test/TestSALOMETraceCollector.cxx [new file with mode: 0644]
src/SALOMETraceCollector/Test/TestSALOMETraceCollector.py [new file with mode: 0644]
src/SALOMETraceCollector/TraceCollector_WaitForServerReadiness.cxx
src/TOOLSDS/Makefile.in
src/TOOLSDS/SALOMEDS_Tool.cxx
src/TOOLSDS/SALOMEDS_Tool.hxx
src/TestContainer/Makefile.in
src/TestContainer/SALOME_TestComponent_i.cxx
src/TestContainer/TestComponentPy.py
src/TestContainer/TestContainer.cxx
src/TestMPIContainer/Makefile.in
src/TestMPIContainer/TestMPIContainer.cxx
src/UnitTests/Makefile.in [new file with mode: 0644]
src/UnitTests/UnitTests.cxx [new file with mode: 0644]
src/UnitTests/UnitTests.py [new file with mode: 0644]
src/Utils/Makefile.in
src/Utils/OpUtil.cxx
src/Utils/OpUtil.hxx
src/Utils/Test/Makefile.in [new file with mode: 0644]
src/Utils/Test/TestUtils.cxx [new file with mode: 0644]
src/Utils/Test/TestUtils.py [new file with mode: 0644]
src/Utils/Test/UtilsTest.cxx [new file with mode: 0644]
src/Utils/Test/UtilsTest.hxx [new file with mode: 0644]
src/Utils/Utils_CommException.hxx
src/Utils/Utils_CorbaException.hxx
src/Utils/Utils_DESTRUCTEUR_GENERIQUE.cxx
src/Utils/Utils_DESTRUCTEUR_GENERIQUE.hxx
src/Utils/Utils_ExceptHandlers.hxx
src/Utils/Utils_Identity.cxx
src/Utils/Utils_Identity.hxx
src/Utils/Utils_Mutex.cxx [new file with mode: 0644]
src/Utils/Utils_Mutex.hxx [new file with mode: 0644]
src/Utils/Utils_ORB_INIT.cxx
src/Utils/Utils_ORB_INIT.hxx
src/Utils/Utils_SALOME_Exception.cxx
src/Utils/Utils_SALOME_Exception.hxx
src/Utils/Utils_SINGLETON.hxx
src/Utils/Utils_SignalsHandler.cxx
src/Utils/Utils_SignalsHandler.h
src/Utils/Utils_Timer.cxx
src/Utils/Utils_Timer.hxx
src/Utils/duplicate.cxx

diff --git a/INSTALL b/INSTALL
index f3e4b69171fa5db955cd8ff0cf2c862bd11c77a6..33e3a6454e8b39c2cc8e8dd932ecca9a32fe8d19 100644 (file)
--- a/INSTALL
+++ b/INSTALL
@@ -1,8 +1,15 @@
-This is the version 2.2.0 of KERNEL
-
+This is the version 3.1.0a of KERNEL
 Previous versions :
-        - 2.1.0
+        - 3.0.0
+        - 2.2.4
+        - 2.2.3
+       - 2.2.2
+       - 2.2.1
+       - 2.2.0
+       - 2.1.1
+       - 2.1.0
        - 2.0.0
         - 1.4.1
        - 1.3.0
        - 1.2.1
+
index 5c92e402e779095989ee492e830ebc35c5d90c73..4b00a7b08cba603ba88a54151025054fb04b754b 100644 (file)
@@ -17,73 +17,12 @@ VPATH=.:@srcdir@:@top_srcdir@/bin:./bin/salome:@top_srcdir@/resources:./bin:@top
 SUBDIRS = idl src examples doc salome_adm
 
 RESOURCES_FILES = \
-back.xpm \
-cascade.png \
 CatalogDataType.xml \
 KERNELCatalog.xml \
 CatalogResources.xml \
-CatalogRessources.xml \
 close.png \
 config \
-default.png \
-dl_delete.png \
-dl_insert.png \
-dl_moveup.png \
-dl_movedown.png \
-forward.xpm \
-help.png \
-home.xpm \
-new.png \
-open.png \
-print.png \
-redo.png \
-reset.png \
-Application-Logo.png \
-Application-Splash.png \
-Application-About.png \
-save.png \
-select1.png \
-tile.png \
-Tools_en.xml \
-undo.png \
-view_back.png \
-view_bottom.png \
-view_camera_dump.png \
-view_fitall.png \
-view_fitarea.png \
-view_front.png \
-view_glpan.png \
-view_left.png \
-view_pan.png \
-view_reset.png \
-view_right.png \
-view_rotate.png \
-view_top.png \
-view_triedre.png \
-view_zoom.png \
-copy.png \
-paste.png \
-plot2d_dump.png \
-plot2d_fitall.png \
-plot2d_fitarea.png \
-plot2d_legend.png \
-plot2d_linear.png \
-plot2d_linear_y.png \
-plot2d_lines.png \
-plot2d_log.png \
-plot2d_log_y.png \
-plot2d_pan.png \
-plot2d_points.png \
-plot2d_settings.png \
-plot2d_splines.png \
-plot2d_zoom.png \
-uc_add.png \
-uc_current.png \
-uc_del.png \
-uc_new.png \
-uc_clear.png \
 channel.cfg \
-Plugin \
 SALOMEDS_Resources
 
 BIN_SCRIPT= \
@@ -96,11 +35,13 @@ killSalomeWithPort.py \
 runSalome \
 runSalome.csh \
 runNS.sh \
+createAppli.sh \
 launchConfigureParser.py \
 salome.launch \
 envSalome.py \
 salomeConsole.py \
-showNS.py
+showNS.py \
+addToKillList.py
 
 # copy header files in common directory
 OWN_CONFIG_H=@OWN_CONFIG_H@
@@ -171,10 +112,20 @@ install-include: $(include_list)
        done
 
 # install script in $(bindir) :
+install-appliskel:
+       $(INSTALL) -d  $(bindir)
+       if test -d $(top_builddir)/bin/salome/appliskel; then           \
+           cp -rp $(top_builddir)/bin/salome/appliskel $(bindir);      \
+       fi;
+
 install-bin: $(BIN_SCRIPT)
        $(INSTALL) -d  $(bindir)
        $(INSTALL_PROGRAM) $^ $(bindir)
 
+# install Plugin file
+install-plugin: $(top_builddir)/share/salome/resources/Plugin
+       ($(INSTALL_DATA) $^ $(datadir)/resources/. || exit 1); \
+
 uninstall: uninstall-idl
 
 uninstall-idl:
@@ -190,5 +141,9 @@ distclean-other:
 
 @MODULE@
 
-install: install-bin install-include install-make install-end
+$(top_builddir)/share/salome/resources/Plugin: resources/Plugin
+       cp -f $< $@ ; \
+
+resources: $(top_builddir)/share/salome/resources/Plugin
 
+install: install-bin install-appliskel install-include install-make install-plugin install-end
diff --git a/README b/README
index ec06c9d5bf155cc9ab7c5c3802bcea34e1ed3eb8..03708f80dbf0bbfa28e26a4b33fdbc4352ebdc60 100644 (file)
--- a/README
+++ b/README
@@ -1,330 +1,5 @@
 #
 # =================================================================
-# Installation instructions, up to date for 2.2.0 version
+# This is SALOME2 version 3.1 alpha
 # =================================================================
 #
-
-You'll find here generic instructions for installing the SALOME2 platform.
-
-
-1. Quick Overview
-   --------------
-
-First of all, you have to check (or install if needed) the dependant
-software programs on your system. These programs are:
-
-- common development tools as gcc, automake, autoconf and libtools.
-- third party softwares used in SALOME building or runtime process
-  (python, OCC, VTK, ...)
-
-Further details can be found in sections [2] and [3].
-
-If the dependencies are installed on your system, then you have to set
-your shell environment to get access to the software components
-(cf. [4]. "Preparing the shell environment").
-
-The next step is to install the KERNEL (cf. [5] "Installing KERNEL"):
-$ mkdir <kernel_build>
-$ mkdir <kernel_install>
-$ cd <kernel_src>
-$ ./build_configure
-$ cd <kernel_build>
-$ <kernel_src>/configure --prefix=<kernel_install>
-$ make
-$ make install
-
-Then, the SALOME components GEOM, MED, VISU, ... can be installed
-with a similar procedure (cf. [6]).
-
-Eventually, the platform can be run by executing the shell script
-runSalome (cf. [7]). Here, somme additionnal variables have to be set
-to describe the SALOME runtime configuration (<COMPONENT>_ROOT_DIR,
-OMNIORB_CONFIG)
-
-The following provides you with specific instructions for each step.
-
-
-2. System configuration
-   --------------------
-
-We suggest the following configuration for building process:
-- gcc-3.2 (3.2.3 if gcc3-2 is not the native compiler of your distribution)
-- automake-1.9 (only aclocal is used)
-- autoconf-2.59
-- libtool-1.5.6
-
-remarks :
-- This is the minimum level of automake,autoconf & libtool, if you need
-  to compile all the third party softwares (included OpenCascade 5.2).
-- SALOME2 is compiled and tested on a RedHat 8.0 version, with
-  - gcc-3.2
-  and
-  - automake-1.6.3
-  - autoconf-2.53
-  - libtool-1.4.2
-  This level of automake,autoconf & libtool is OK if you do not need to
-  recompile OpenCascade 5.2.
-
-3. Third-party dependencies
-   ------------------------
-
-The SALOME platform relies on a set of third-party softwares. The
-current version depends on:
-
- CAS-5.2               OpenCascade (try binaries,a source patch is needed)
- PyQt-3.3.2            Python-Qt Wrapper
- Python-2.2.2          Python interpreter
- SWIG-1.3.17           SWIG library
- VTK-4.2.2             VTK 3D-viewer
- boost-1_31_0          C++ library (only include templates are used)
- hdf5-1.4.4            Files Database library
- med-2.1.6             MED Data Format support for file records 
- omniORB-3.0.5         ORB used in SALOME
- qt-x11-free-3.0.5     Qt library
- qwt-0.4.1             Graph components for Qt
- sip-3.3.2             langage binding software 
- tcl8.3                        Tcl interpreter
- tk8.3                 Tk widgets
-
-And, in order to build the documentation:
-
- doxygen-1.3-rc2
- graphviz-1.9
-
-Additionnal software may be installed for optional features: 
-
- netgen4.3_calibre3_gcc3.2.3.tgz
- tix8.1.4_calibre3_gcc3.2.3.tgz
- openpbs-2.3.16
- lsf-???
-
-######
-###### To Do -------------------------
-######
-- Instructions for installing these software programs can be found in a
-  special note doc/configuration_examples/install-prerequis.
-- Installation shell scripts are also provided.
-  These scripts have to be adapted to your own configuration.
-
-- See doc/configuration_examples/*
-######
-###### To Do -------------------------
-######
-
-In the following, we assume that all the third-party softwares are
-installed in the same root directory, named <salomeroot>/prerequis.
-Then, your file system should probably look like:
-
-<salomeroot>/prerequis/Python-2.2.2
-<salomeroot>/prerequis/omniORB-3.0.5
-<salomeroot>/prerequis/qt-x11-free-3.0.5
-...
-
-
-4. Preparing the shell environment
-   -------------------------------
-
-Some variables have to be set to get acces to third-party software
-components (include files, executable, library, ...) during building
-process and runtime.
-
-The shell file prerequis.sh, embedded in the KERNEL source package,
-provides a template for setting those variables. In this example, all the
-softwares are supposed to be installed in the same root directory,
-named here INSTALLROOT.
-
-Copy the prerequis.sh in a working directory and adjust the settings
-to your own configuration. To get the shell prepared, just
-execute the following command in the building shell:
-
-$ source prerequis.sh
-
-(we assume here a ksh or bash mode)
-
-
-5. Installing the KERNEL component
-   -------------------------------
-
-We use here the notation <kernel_src> to specify the source directory
-of the KERNEL component. The shell environment is supposed to have
-been set (cf. 4).
-
-Installing the KERNEL from a source package needs three directories:
-
-- the source directory, denoted here by <kernel_src>.
-
-- the build directory, denoted by <kernel_build> in the following. This
-  directory can't be the same directory as <kernel_src>.
-
-- the install directory, denoted by <kernel_install> in the following. This
-  directory can't be the same directory as <kernel_src> or
-  <kernel_build>.
-
-The installing process is:
-
-STEP 1: preparing directories
-create the <kernel_build> and the <kernel_install> directories.
-$ mkdir <kernel_build>
-$ mkdir <kernel_install>
-
-STEP 2: build configure script
-go to <kernel_src> directory and generate the "configure" script.
-$ cd <kernel_src>
-$ ./build_configure
-
-If it doesn't work, check your system automake tools as specified in
-section [2].
-
-STEP 3: configure the building process
-go to the build directory and execute the configuration process:
-$ cd <kernel_build>
-$ <kernel_src>/configure --prefix=<kernel_install>
-
-Note that <kernel_install> must be an absolute path.
-
-When the configure process is complete, check the status of
-third-party softwares detection. You should have a status like:
-
----------------------------------------------
-Summary
----------------------------------------------
-
-Configure
-           cc : yes
-        boost : yes
-     lex_yacc : yes
-       python : yes
-         swig : yes
-      threads : yes
-       OpenGL : yes
-           qt : yes
-          vtk : yes
-         hdf5 : yes
-         med2 : yes
-      omniORB : yes
-          occ : yes
-          sip : yes
-         pyqt : yes
-          qwt : yes
-      doxygen : yes
-     graphviz : no
-      openpbs : no
-          lsf : no
-
-Default ORB   : omniORB
-
----------------------------------------------
-
-If a software get a status "no", then it's not "seen" in the system:
-- the software is not installed, or
-- the shell environment is not set correctly. 
-
-In this example, the software programs graphviz, openpbs and lsf are not
-installed (optional for most usages).
-
-
-STEP 4 : Building the binary files
-Execute make in the <kernel_build> directory:
-$ make
-
-
-STEP 5: Installing binary files, scripts and documentation
-Execute install target in the <kernel_build> directory:
-$ make install
-
-
-6. Installing the SALOME components
-   --------------------------------
-
-Installing a component <COMPONENT> is done by following the same
-instructions as given for the KERNEL, replacing KERNEL by
-<COMPONENT> (build_configure, configure, make, make install).
-
-You just have to be aware of the dependencies between components:
-
-- MED    depends on KERNEL
-- GEOM   depends on KERNEL
-- SMESH  depends on KERNEL, MED, GEOM
-- VISU   depends on KERNEL, MED
-- SUPERV depends on KERNEL
-
-For example, installing the component SMESH needs the previous
-installation of the KERNEL component, and then the GEOM and MED components.
-
-The building process uses the variables <COMPONENT>_ROOT_DIR to
-localize the dependant components. The variables must be set to the
-install path directory of the components <COMPONENT> (ex:
-KERNEL_ROOT_DIR=<kernel_install>). 
-In the above example, the three variables KERNEL_ROOT_DIR,
-GEOM_ROOT_DIR and MED_ROOT_DIR have to be set before configuring the
-building process of the SMESH component (STEP 3).
-
-
-7. Runtime
-   -------
-
-To run the SALOME platform, the procedure is:
-- set the shell environment to get acces to third-party softwares
-
-$ source prerequis.sh
-
-- define the SALOME configuration by setting the whole set of
-  variables <COMPONENT>_ROOT_DIR. Here, you just have to set the
-  kernel and the components you need.
-
-$ export KERNEL_ROOT_DIR=<kernel_install>
-$ export MED_ROOT_DIR=<med_install>
-$ ...
-
-- define the CORBA configuration file by setting the variable
-  OMNIORB_CONFIG. This variable must be set to a writable file
-  path. The file may be arbitrary chosen and doesn't need to exist
-  before running. We suggest:
-
-$ export OMNIORB_CONFIG=$HOME/.omniORB.cfg
-
-- run the SALOME platform by executing the script runSalome
-$ $KERNEL_ROOT_DIR/bin/salome/runSalome
-
-
-8. Suggestions and advices
-   ----------------------
-
-For convenience or customization, we suggest the following organisation:
-
-- chose and create a root directory for the SALOME platform, say
-  <salomeroot>.
-
-- install the third-party softwares in a sub-directory "prerequis"
-
-- install the SALOME components in a sub-directory "SALOME2"
-
-- make personnal copies of the files prerequis.sh and runSalome in
-  <salomeroot>.
-
-$ cp <kernel_src>/prerequis.sh <rundir>/.
-$ cp <kernel_install>/bin/salome/runSalome <rundir>/.
-
-Edit the file prerequis.sh and adjust it to your own configuration.
-
-- define the SALOME2 configuration
-This step consists in setting the KERNEL_ROOT_DIR, the whole set of
-variables <COMPONENT>_ROOT_DIR you need, and the OMNIORB_CONFIG
-variable.
-We suggest to create a shell file envSalome.sh containing those
-settings. Then the configuration consists in loading envSalome.sh in
-the runtime shell:
-
-$ source envSalome.sh
-
-- When installed with this file organisation, running SALOME is done
-  with the following shell commands:
-
-$ source <salomeroot>/prerequis.sh
-$ source <salomeroot>/envSalome.sh
-$ ./runSalome
-
-
-# =================================================================
-# End of file
diff --git a/README.FIRST.txt b/README.FIRST.txt
new file mode 100644 (file)
index 0000000..4a727c6
--- /dev/null
@@ -0,0 +1,50 @@
+
+=================================================================
+General information, for developpers and users
+=================================================================
+*html version of this document is produced with docutils*::
+
+  rest2html < doc.txt > doc.html
+
+This document corresponds to SALOME2 3.1. (alpha version)
+
++-------------------------------------------+
+| **WORK in PROGRESS, INCOMPLETE DOCUMENT** |
++-------------------------------------------+
+
+How to install SALOME
+---------------------
+
+See INSTALL_ for general information on required configuration and 
+prerequisites, compilation procedure, setting environment principles.
+
+.. _INSTALL: ./doc/INSTALL.html
+
+How to run SALOME on one or more computers, SALOME Application concept
+----------------------------------------------------------------------
+
+See SALOME_Application_ to define your own configuration of SALOME and run it
+on one or several computers. This is the recommended way of configuration.
+
+.. _SALOME_Application: ./doc/SALOME_Application.html
+
+
+Source code structuration and Unit Tests
+----------------------------------------
+
+See UnitTests_ for general information on code directories structure,
+unit tests associated to the different kind of classes, and how to run
+the unit tests.
+
+.. _UnitTests: ./doc/UnitTests.html
+
+End User documentation
+----------------------
+
+link to end user documentation.
+
+
+Developper documentation
+------------------------
+
+How to generate the developper documentation.
index 9f5dca97555cdfb53650b44ff00280777d64ebda..21cff5ac02751d68622c6c7bcf4e8643d55422e4 100755 (executable)
@@ -1 +1 @@
-THIS IS SALOME - KERNEL VERSION: 2.2.0
+THIS IS SALOME - KERNEL VERSION: 3.1.0a
diff --git a/bin/addToKillList.py b/bin/addToKillList.py
new file mode 100755 (executable)
index 0000000..7dad20e
--- /dev/null
@@ -0,0 +1,55 @@
+#!/usr/bin/env python
+
+import os, sys, pickle, string
+
+########## adds to the kill list of SALOME one more process ##########
+def addToKillList(command_pid, command):
+    command=(command.split(" "))[0]
+
+    my_port = 2809
+    try:
+      file = open(os.environ["OMNIORB_CONFIG"], "r")
+      s = file.read()
+      while len(s):
+        l = string.split(s, ":")
+        if string.split(l[0], " ")[0] == "ORBInitRef" or string.split(l[0], " ")[0] == "InitRef" :
+          my_port = int(l[len(l)-1])
+          pass
+        s = file.read()
+        pass
+    except:
+       pass
+    #print "myport = ", my_port
+
+    filedict=os.getenv("HOME")+'/'+os.getenv('USER')+"_"+str(my_port)+'_SALOME_pidict'
+    try:
+        fpid=open(filedict, 'r')
+        process_ids=pickle.load(fpid)
+        fpid.close()
+    except:
+        process_ids=[{}]
+        pass
+        
+    already_in=0
+    for process_id in process_ids:
+        print process_id
+        for pid, cmd in process_id.items():
+            #print "see process %s : %s"% (pid, cmd[0])
+           if pid == command_pid:
+               already_in=1
+        pass
+
+    if already_in == 0:
+        try:
+           process_ids.append({command_pid: [command]})
+           fpid=open(filedict,'w')
+            pickle.dump(process_ids, fpid)
+           fpid.close()
+        except:
+           print "addToKillList: can not add command %s to the kill list"% filedict
+           pass
+       pass
+
+if __name__ == "__main__":
+    print sys.argv
+    addToKillList(sys.argv[1], sys.argv[2])
diff --git a/bin/appliskel/.bashrc b/bin/appliskel/.bashrc
new file mode 100644 (file)
index 0000000..ab711e0
--- /dev/null
@@ -0,0 +1,10 @@
+#!/bin/bash
+
+# If not running interactively, don't do anything:
+[ -z "$PS1" ] && return
+
+# keep original settings (debian)
+. ~/.bashrc
+
+# prefix prompt with naming server hostname and port
+export PS1='[NS='${NSHOST}':'${NSPORT}']'${PS1}
diff --git a/bin/appliskel/CatalogResources.xml b/bin/appliskel/CatalogResources.xml
new file mode 100644 (file)
index 0000000..8caed2b
--- /dev/null
@@ -0,0 +1,28 @@
+<!DOCTYPE ResourcesCatalog>
+<resources>
+  <machine 
+          protocol="ssh"
+          nbOfNodes="1"
+          mode="interactif"
+          OS="LINUX"
+          CPUFreqMHz="2800"
+          userName="prascle"
+          memInMB="1500"
+          nbOfProcPerNode="2"
+          alias="cli76cd"
+          hostname="cli76cd" >
+  </machine>
+
+  <machine
+          protocol="ssh"
+          nbOfNodes="1"
+          mode="interactif"
+          OS="LINUX"
+          CPUFreqMHz="2000"
+          userName="prascle"
+          memInMB="1000"
+          nbOfProcPerNode="1"
+          alias="cli76ce"
+          hostname="cli76ce" >
+  </machine>
+</resources>
diff --git a/bin/appliskel/README b/bin/appliskel/README
new file mode 100644 (file)
index 0000000..264b879
--- /dev/null
@@ -0,0 +1,42 @@
+Set of scripts for a SALOME application
+=======================================
+
+#     - A SALOME application distributed on several computers needs APPLI
+#       directories on the same path ($APPLI) relative to $HOME directory
+#       of the user, on each computer.
+
+user scripts:
+-------------
+
+runAppli   : SALOME launch (idem runSalome but different name to avoid
+             confusion with ${KERNEL_ROOT_DIR}/bin/salome/runSalome
+
+runConsole : a python console in the current SALOME session environment
+
+runSession : a shell in SALOME environment, either interactive (without args)
+             or used to run a program (defined by given args)
+
+internal application scripts:
+-----------------------------
+
+runRemote.sh : called from remote computer, via ssh, rsh...
+               used for instance to create container
+
+envd         : sets SALOME application environment
+               sourced by other scripts
+
+The following files must be adapted to your environment and SALOME Application:
+-------------------------------------------------------------------------------
+
+SalomeApp.xml        - list of modules, options on server launch and resources...
+CatalogResources.xml - configuration of machines used in SALOME application
+                       (no need of modules list and path here)
+
+env.d directory must contain the necessary files to source, to define 
+the SALOME Application environment :
+  (  envd script source these files in alphanumeric order )
+
+For instance,
+ atFirst.sh     - general presets
+ envProducts.sh - prerequisite SALOME environment
+ envSalome.sh   - list of MODULE_ROOT_DIR
diff --git a/bin/appliskel/SalomeApp.xml b/bin/appliskel/SalomeApp.xml
new file mode 100644 (file)
index 0000000..6897b71
--- /dev/null
@@ -0,0 +1,100 @@
+<document>
+  <section name="desktop" >
+    <parameter name="state"  value="max"/>
+    <parameter name="pos_x"  value="100"/>
+    <parameter name="pos_y"  value="050"/>
+    <parameter name="width"  value="640"/>
+    <parameter name="height" value="480"/>
+  </section>
+  <section name="launch">
+    <parameter name="gui"        value="yes"/>
+    <parameter name="splash"     value="yes"/>
+    <parameter name="file"       value="no"/>
+    <parameter name="key"        value="no"/>
+    <parameter name="interp"     value="no"/>
+    <parameter name="logger"     value="no"/>
+    <parameter name="xterm"      value="no"/>
+    <parameter name="portkill"   value="no"/>
+    <parameter name="killall"    value="no"/>
+    <parameter name="modules"    value="GUI,GEOM,SMESH,VISU,SUPERV,MED,COMPONENT,LIGHT,PYHELLO,PYCALCULATOR"/>
+    <parameter name="pyModules"  value=""/>
+    <parameter name="embedded"   value="SalomeAppEngine,cppContainer,registry,moduleCatalog,study"/>
+    <parameter name="standalone" value="pyContainer"/>
+  </section>
+  <section name="language">
+    <parameter name="language"    value="en"/>
+    <parameter name="translators" value="%P_msg_%L.qm|%P_icons.qm|%P_images.qm"/>
+  </section>
+  <section name="resources">
+    <parameter name="SUIT"         value="${SUITRoot}/resources"/>
+    <parameter name="STD"          value="${SUITRoot}/resources"/>
+    <parameter name="Plot2d"       value="${SUITRoot}/resources"/>
+    <parameter name="SPlot2d"      value="${SUITRoot}/resources"/>
+    <parameter name="GLViewer"     value="${SUITRoot}/resources"/>
+    <parameter name="OCCViewer"    value="${SUITRoot}/resources"/>
+    <parameter name="VTKViewer"    value="${SUITRoot}/resources"/>
+    <parameter name="SalomeApp"    value="${SUITRoot}/resources"/>
+    <parameter name="OB"           value="${SUITRoot}/resources"/>
+    <parameter name="CAM"          value="${SUITRoot}/resources"/>
+    <parameter name="GEOM"         value="${GEOM_ROOT_DIR}/share/salome/resources"/>
+    <parameter name="SMESH"        value="${SMESH_ROOT_DIR}/share/salome/resources"/>
+    <parameter name="VISU"         value="${VISU_ROOT_DIR}/share/salome/resources"/>
+    <parameter name="SUPERV"       value="${SUPERV_ROOT_DIR}/share/salome/resources"/>
+    <parameter name="MED"          value="${MED_ROOT_DIR}/share/salome/resources"/>
+    <parameter name="StdMeshers"   value="${SMESH_ROOT_DIR}/share/salome/resources"/>
+    <parameter name="NETGENPlugin" value="${NETGENPLUGIN_ROOT_DIR}/share/salome/resources"/>
+    <parameter name="GHS3DPlugin"  value="${GHS3DPLUGIN_ROOT_DIR}/share/salome/resources"/>
+    <parameter name="COMPONENT"    value="${COMPONENT_ROOT_DIR}/share/salome/resources"/>
+    <parameter name="PYHELLO"      value="${PYHELLO_ROOT_DIR}/share/salome/resources"/>
+    <parameter name="PYCALCULATOR" value="${PYCALCULATOR_ROOT_DIR}/share/salome/resources"/>
+    <parameter name="LIGHT"        value="${LIGHT_ROOT_DIR}/share/salome/resources"/>
+
+  </section>
+  <section name="GEOM">
+    <parameter name="name"       value="Geometry"/>
+    <parameter name="icon"       value="ModuleGeom.png"/>
+  </section>
+  <section name="SMESH">
+    <parameter name="name"       value="Mesh"/>
+    <parameter name="icon"       value="ModuleMesh.png"/>
+  </section>
+  <section name="VISU">
+    <parameter name="name"       value="Post-Pro"/>
+    <parameter name="icon"       value="ModuleVisu.png"/>
+  </section>
+  <section name="SUPERV">
+    <parameter name="name"       value="Supervisor"/>
+    <parameter name="icon"       value="ModuleSupervision.png"/>
+  </section>
+  <section name="MED">
+    <parameter name="name"       value="Med"/>
+    <parameter name="icon"       value="ModuleMed.png"/>
+  </section>
+  <section name="PYHELLO">
+    <parameter name="name"       value="PyHello"/>
+    <parameter name="icon"       value="PYHELLO.png"/>
+    <parameter name="library"    value="libSalomePyQtGUI.so"/>
+  </section>
+  <section name="LIGHT">
+    <parameter name="name"       value="Light"/>
+    <parameter name="icon"       value="LIGHT.png"/>
+  </section>
+
+<!-- values below this line are just an example, they are not used  -->
+  <section name="application">
+    <parameter name="QuickDirList" value=""/>
+    <!-- Here go other common user preferences -->
+  </section>
+  <section name="Geometry" >
+    <parameter value="255, 255, 0" name="shading_color" />
+  </section>
+  <section name="SMESH">
+    <parameter name="plugins" value="NETGENPlugin,GHS3DPlugin"/>
+    <!-- Here go SMESH module user preferences -->
+  </section>
+  <!-- Here go optional sections for other modules -->
+  <section name="resources">
+    <parameter name="salome" value="${KERNEL_ROOT_DIR}/share/salome/res"/>
+    <!-- Here go resource directories for other modules -->
+  </section>
+</document>
diff --git a/bin/appliskel/env.d/atFirst.sh b/bin/appliskel/env.d/atFirst.sh
new file mode 100644 (file)
index 0000000..0c6715f
--- /dev/null
@@ -0,0 +1,62 @@
+#!/bin/sh
+
+#------------------------------------------------
+# to be sourced first, used in following scripts
+#------------------------------------------------
+
+export LD_LIBRARY_PATH="."
+export PATH="/usr/kerberos/bin:/usr/local/bin:/usr/bin:/bin:/usr/X11R6/bin:/home/prascle/bin:."
+export PYTHONPATH=""
+
+export RAC=${HOME}
+export PAKSAL=/opt
+export PUB=${RAC}/public
+export TARP=${RAC}/tarpublic
+export PYPACKAGES=${PUB}/site_packages
+
+# ------------------------------------------------
+# ---- gdb 5.3
+
+export PATH=${PAKSAL}/gdb53/bin:${PATH}
+export LD_LIBRARY_PATH=${PAKSAL}/gdb53/lib:${LD_LIBRARY_PATH}
+
+# ------------------------------------------------
+# ---- ddd 3.3.7
+
+export PATH=${PAKSAL}/ddd337/bin:${PATH}
+export LD_LIBRARY_PATH=${PAKSAL}/ddd337/lib:${LD_LIBRARY_PATH}
+
+# ------------------------------------------------
+# --- Java 1.4
+
+export JDKHOME=${PUB}/j2sdk_nb/j2sdk1.4.2
+export JAVAHOME=${PUB}/j2sdk_nb/j2sdk1.4.2
+export PATH=${JAVAHOME}/bin:${PATH}
+export LD_LIBRARY_PATH=${JAVAHOME}/lib:${LD_LIBRARY_PATH}
+export LD_LIBRARY_PATH=${JAVAHOME}/jre/lib/i386:${LD_LIBRARY_PATH}
+export LD_LIBRARY_PATH=${JAVAHOME}/jre/lib/i386/client:${LD_LIBRARY_PATH}
+
+# ------------------------------------------------
+# --- gsl -1.4
+
+export GSLHOME=${PAKSAL}/gsl-1.4
+export PATH=${GSLHOME}/bin:${PATH}
+export LD_LIBRARY_PATH=${GSLHOME}/lib:${LD_LIBRARY_PATH}
+
+# ------------------------------------------------
+# --- fltk 1.1.4
+
+export FLTKHOME=${PAKSAL}/fltk114
+export PATH=${FLTKHOME}/bin:${PATH}
+export LD_LIBRARY_PATH=${FLTKHOME}/lib:${LD_LIBRARY_PATH}
+
+# ------------------------------------------------
+# --- gmsh 1.48
+
+export GMSHHOME=${PAKSAL}/gmsh148
+export PATH=${GMSHHOME}/bin:${PATH}
+
+# ------------------------------------------------
+# ---- tkcvs, tkdiffb, cvs
+
+export PATH=${PAKSAL}/tkcvs7.2/bin:${PAKSAL}/cvs1.11.14/bin:${PATH}
diff --git a/bin/appliskel/env.d/envProducts.sh b/bin/appliskel/env.d/envProducts.sh
new file mode 100644 (file)
index 0000000..aa05705
--- /dev/null
@@ -0,0 +1,120 @@
+#!/bin/sh
+
+# ------------------------------------------------
+# ---- openpbs
+
+export OPENPBS=/optroot/openpbs2316
+export PATH=${OPENPBS}/bin:${PATH}
+export LD_LIBRARY_PATH=${OPENPBS}/lib:${LD_LIBRARY_PATH}
+
+#------------------------------------------------------------------------------
+
+export INSTALL_ROOT=/home/prascle/PAL_SALOME141
+#------ gcc ------
+export GCC_ROOT=/usr
+export CXX=${GCC_ROOT}/bin/g++
+export CC=${GCC_ROOT}/bin/gcc
+##
+#------ boost ------ 
+export BOOSTDIR=${INSTALL_ROOT}/boost-1.30.2
+##
+
+#------ tcltk ------
+export TCLHOME=/usr
+
+#------ Python ------
+export PYTHONHOME=/usr
+export PYTHONPATH=${PYPACKAGES}:${PYTHONPATH}
+##
+#------ Qt ------
+#export QTDIR=/usr/lib/qt-3.0.5
+export QTDIR=/usr/lib/qt3-gcc3.2
+export PATH=${PATH}:${QTDIR}/bin
+export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:${QTDIR}/lib
+##
+#------ Sip ------
+export SIPDIR=/usr
+export PYQTDIR=/usr
+##
+#------ PyQt ------
+export PYQT_SIPS=/usr/share/sip/qt
+export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:/usr/lib/python2.2/site-packages
+##
+#------ Swig ------ 
+export SWIG_ROOT=${INSTALL_ROOT}/SWIG-1.3.17
+export PATH=${SWIG_ROOT}/bin:${PATH}
+export LD_LIBRARY_PATH=${SWIG_ROOT}/lib:${LD_LIBRARY_PATH}
+##
+#------ OpenCascade ------
+export CASROOT=/opt/CAS52patch
+export LD_LIBRARY_PATH=${CASROOT}/Linux/lib:${LD_LIBRARY_PATH}
+export PATH=${CASROOT}/Linux/bin:${PATH}
+# Variable for Foundation Classes : 
+export CSF_UnitsLexicon=${CASROOT}/src/UnitsAPI/Lexi_Expr.dat 
+export CSF_UnitsDefinition=${CASROOT}/src/UnitsAPI/Units.dat 
+# Variable for DataExchange : 
+export CSF_SHMessage=${CASROOT}/src/SHMessage
+export CSF_XSMessage=${CASROOT}/src/XSMessage 
+# Variable for Font : 
+export CSF_MDTVFontDirectory=${CASROOT}/src/FontMFT 
+export CSF_MDTVTexturesDirectory=${CASROOT}/src/Textures 
+##
+export CSF_LANGUAGE=us
+export MMGT_CLEAR=1
+export CSF_EXCEPTION_PROMPT=1
+export CSF_StandardDefaults=${CASROOT}/src/StdResource
+export CSF_PluginDefaults=${CASROOT}/src/StdResource
+export CSF_XCAFDefaults=${CASROOT}/src/StdResource
+export CSF_GraphicShr=${CASROOT}/Linux/lib/libTKOpenGl.so
+export CSF_IGESDefaults=${CASROOT}/src/XSTEPResource
+export CSF_STEPDefaults=${CASROOT}/src/XSTEPResource
+##
+#export TCLLIBPATH=$TCLHOME/lib
+##
+#------ Qwt ------
+export QWTHOME=${INSTALL_ROOT}/qwt-0.4.1
+export LD_LIBRARY_PATH=${QWTHOME}/lib:${LD_LIBRARY_PATH} 
+##
+#------ Hdf ------
+export HDF5HOME=${INSTALL_ROOT}/hdf5-1.4.4
+export PATH=${HDF5HOME}/bin:$PATH
+export LD_LIBRARY_PATH=${HDF5HOME}/lib:${LD_LIBRARY_PATH}
+##
+#------ Med ------
+export MED2HOME=/opt/med2.2.2
+export PATH=${MED2HOME}/bin:${PATH}
+export LD_LIBRARY_PATH=${MED2HOME}/lib:${LD_LIBRARY_PATH}
+##
+#------ Vtk ------
+export VTKHOME=${INSTALL_ROOT}/VTK-4.2.2
+export PATH=${VTKHOME}/bin:${PATH}
+export LD_LIBRARY_PATH=${VTKHOME}/lib/vtk:${LD_LIBRARY_PATH}
+export PYTHONPATH=${VTKHOME}/lib/vtk:${VTKHOME}/lib/python2.2/site-packages/vtk_python:${PYTHONPATH}
+##
+#------ netgen ------
+export NETGENROOT=${INSTALL_ROOT}/netgen4.3
+export NETGEN_HOME=${INSTALL_ROOT}/netgen4.3
+##
+#------ OmniORB ------
+export OMNIORBDIR=${INSTALL_ROOT}/omniORB-3.0.5
+export OMNIORB_CONFIG=${OMNIORBDIR}/.omniORB.cfg
+export PYTHONPATH=${OMNIORBDIR}/lib/python:${OMNIORBDIR}/lib/i586_linux_2.0_glibc2.1:${PYTHONPATH}
+export PATH=$OMNIORBDIR/bin/i586_linux_2.0_glibc2.1:$PATH
+export LD_LIBRARY_PATH=$OMNIORBDIR/lib/i586_linux_2.0_glibc2.1:$LD_LIBRARY_PATH 
+##
+#------ Numeric ------
+export PYTHONPATH=${INSTALL_ROOT}/Numeric-22.0/lib/python2.2/site-packages/Numeric:${PYTHONPATH}
+##
+#------ HappyDoc ------
+export PATH=${INSTALL_ROOT}/HappyDoc-r2_1/bin:${PATH}
+export PYTHONPATH=${INSTALL_ROOT}/HappyDoc-r2_1/lib/python2.2/site-packages:${PYTHONPATH}
+##
+#------ Doxygen ------
+export PATH=${INSTALL_ROOT}/doxygen-1.3-rc2/bin:${PATH}
+##
+#------ Graphviz ------
+export PATH=${INSTALL_ROOT}/graphviz-1.9/bin:${PATH}
+export LD_LIBRARY_PATH=${INSTALL_ROOT}/graphviz-1.9/lib/graphviz:${LD_LIBRARY_PATH}
+##
+
+#------------------------------------------------------------------------------
diff --git a/bin/appliskel/env.d/envSalome.sh b/bin/appliskel/env.d/envSalome.sh
new file mode 100644 (file)
index 0000000..9d765a0
--- /dev/null
@@ -0,0 +1,27 @@
+#!/bin/sh
+
+# --- example to adapt to your own configuration ---
+#
+# --- envSalome.sh gives a set of MODULE_ROOT_DIR, to source
+# --- you must at least define and export KERNEL_ROOT_DIR
+
+REPINST=/home/prascle/SALOME2/Install
+
+export KERNEL_ROOT_DIR=${REPINST}/KERNEL_V301
+
+export GUI_ROOT_DIR=${REPINST}/GUI_V301
+#export SalomeAppConfig=${GUI_ROOT_DIR}/share/salome/resources
+export SalomeAppConfig=${HOME}/${APPLI}
+export SUITRoot=${GUI_ROOT_DIR}/share/salome
+
+export GEOM_ROOT_DIR=${REPINST}/GEOM_V301
+export MED_ROOT_DIR=${REPINST}/MED_V301
+export SMESH_ROOT_DIR=${REPINST}/SMESH_V301
+export SUPERV_ROOT_DIR=${REPINST}/SUPERV_V301
+export VISU_ROOT_DIR=${REPINST}/VISU_V301
+export NETGENPLUGIN_ROOT_DIR=${REPINST}/NETGENPLUGIN_V301
+export COMPONENT_ROOT_DIR=${REPINST}/COMPONENT_V301
+export PYCALCULATOR_ROOT_DIR=${REPINST}/PYCALCULATOR_V301
+export PYHELLO_ROOT_DIR=${REPINST}/PYHELLO_V301
+export PYTIX_ROOT_DIR=${REPINST}/PYTIX_V301
+
diff --git a/bin/appliskel/envd b/bin/appliskel/envd
new file mode 100644 (file)
index 0000000..80261ad
--- /dev/null
@@ -0,0 +1,3 @@
+#!/bin/bash
+
+for i in $1/env.d/*;do source ${i}; done
diff --git a/bin/appliskel/runAppli b/bin/appliskel/runAppli
new file mode 100755 (executable)
index 0000000..39083ff
--- /dev/null
@@ -0,0 +1,71 @@
+#!/bin/bash
+
+# --- retrieve APPLI path, relative to $HOME
+#     on sarge, "which" gives not allways the absolute path...
+     
+comName=`which $0`
+aa=${comName:0:1}
+if test x$aa == x\/; then
+  mycom=${comName}
+elif test x$aa == x\.; then
+  mycom=${PWD}/${comName:2}
+else
+  mycom=${PWD}/${comName}
+fi
+APPLI=`echo ${HOME} \`dirname $mycom\` | awk ' { print substr($2,length($1)+2) } '`
+#echo $APPLI
+export APPLI
+
+# --- set the SALOME environment (prerequisites, MODULES_ROOT_DIR...)
+
+. ${HOME}/${APPLI}/envd ${HOME}/${APPLI}
+
+# --- define port for CORBA naming service
+
+searchFreePort() {
+    echo -n "Searching for a free port for naming service: "
+    export NSPORT=2810
+    local limit=$NSPORT
+    let limit=limit+100
+    while [ 1 ]
+    do
+        aRes=`netstat -ltn | grep -E :${NSPORT}`
+        if [ -z "$aRes" ]; then
+            echo ${NSPORT} - Ok
+           local myhost=`hostname`
+            export OMNIORB_CONFIG=${HOME}/${APPLI}/.omniORB_${myhost}_${NSPORT}.cfg
+           export NSPORT
+            export NSHOST=${myhost}
+            local initref="NameService=corbaname::"`hostname`":$NSPORT"
+            #echo "ORBInitRef $initref" > $OMNIORB_CONFIG
+            echo "InitRef = $initref" > $OMNIORB_CONFIG
+            export LAST_RUNNING_CONFIG=${HOME}/${APPLI}/.omniORB_${myhost}_last.cfg
+           rm ${LAST_RUNNING_CONFIG}
+            ln -s ${OMNIORB_CONFIG} ${LAST_RUNNING_CONFIG}
+            break
+        fi
+        echo -n "${NSPORT} "
+        if [[ $NSPORT -eq $limit ]] ; then
+            echo
+            echo "Can't find a free port to launch omniNames"
+            echo "Try to kill the running servers and then launch SALOME again."
+            exit
+        fi
+        let NSPORT=NSPORT+1
+    done
+}
+
+# --- run SALOME
+#    (default arguments defined in local salome.launch could be completed
+#     by arguments to this command)
+
+searchFreePort
+
+if [ $# -ne 0 ] ; then
+    ${KERNEL_ROOT_DIR}/bin/salome/envSalome.py python -i ${KERNEL_ROOT_DIR}/bin/salome/runSalome.py $*
+else
+    ${KERNEL_ROOT_DIR}/bin/salome/envSalome.py python ${KERNEL_ROOT_DIR}/bin/salome/runSalome.py 
+fi
+
+rm ${OMNIORB_CONFIG}
+rm ${LAST_RUNNING_CONFIG}
diff --git a/bin/appliskel/runConsole b/bin/appliskel/runConsole
new file mode 100755 (executable)
index 0000000..e45f586
--- /dev/null
@@ -0,0 +1,25 @@
+#!/bin/bash
+
+# --- retrieve APPLI path, relative to $HOME
+#     on sarge, "which" gives not allways the absolute path...
+     
+comName=`which $0`
+aa=${comName:0:1}
+if test x$aa == x\/; then
+  mycom=${comName}
+elif test x$aa == x\.; then
+  mycom=${PWD}/${comName:2}
+else
+  mycom=${PWD}/${comName}
+fi
+APPLI=`echo ${HOME} \`dirname $mycom\` | awk ' { print substr($2,length($1)+2) } '`
+#echo $APPLI
+export APPLI
+
+# --- set the SALOME environment (prerequisites, MODULES_ROOT_DIR...)
+
+. ${HOME}/${APPLI}/envd ${HOME}/${APPLI}
+
+# --- open a Python interpreter with SALOME environment
+
+${KERNEL_ROOT_DIR}/bin/salome/envSalome.py python -i ${KERNEL_ROOT_DIR}/bin/salome/salomeConsole.py $*
diff --git a/bin/appliskel/runParam b/bin/appliskel/runParam
new file mode 100755 (executable)
index 0000000..17bbd61
--- /dev/null
@@ -0,0 +1,5 @@
+#!/bin/bash
+
+./runAppli --killall  
+
+#./runSession killSalome.py
diff --git a/bin/appliskel/runRemote.sh b/bin/appliskel/runRemote.sh
new file mode 100755 (executable)
index 0000000..d3297a6
--- /dev/null
@@ -0,0 +1,56 @@
+#!/bin/bash
+#
+# --- run command in SALOME environment from remote call, ssh or rsh
+#     - SALOME configuration is defined by :
+#        - list of MODULE_ROOT_DIR
+#        - prerequisite environment
+#        - specific configuration for a particular SALOME application
+#     - These elements of configuration are defined locally on each computer
+#       in the directory APPLI:
+#     - A SALOME application distributed on several computers needs APPLI
+#       directories on the same path ($APPLI) relative to $HOME directory
+#       of the user, on each computer.
+#
+# --- call example (from cli76cd to cli76ce):
+# ssh cli76ce ${APPLI}/runRemote.sh cli76cd 2810 SALOME_Container myContainerName
+#
+# --- local arguments
+#     $0 : ${APPLI}/runRemote.sh: from arg name, rebuild and export $APPLI variable
+#     $1 : computer name for CORBA name service (where SALOME was launched)
+#     $2 : port for CORBA name service
+#     $3 and following : local command to execute, with args
+#
+
+# --- retrieve APPLI path, relative to $HOME
+#     on sarge, "which" gives not allways the absolute path...
+     
+comName=`which $0`
+aa=${comName:0:1}
+if test x$aa == x\/; then
+  mycom=${comName}
+elif test x$aa == x\.; then
+  mycom=${PWD}/${comName:2}
+else
+  mycom=${PWD}/${comName}
+fi
+APPLI=`echo ${HOME} \`dirname $mycom\` | awk ' { print substr($2,length($1)+2) } '`
+#echo $APPLI
+export APPLI
+
+# --- set the SALOME environment (prerequisites, MODULES_ROOT_DIR...)
+
+. ${HOME}/${APPLI}/envd ${HOME}/${APPLI}
+
+# --- set the OMNIORB_CONFIG file and environment relative to this run of SALOME
+
+export OMNIORB_CONFIG=${HOME}/${APPLI}/.omniORB_$1_$2.cfg
+export NSHOST=$1
+export NSPORT=$2
+initref="NameService=corbaname::"$1":$2"
+echo "ORBInitRef $initref" > $OMNIORB_CONFIG
+
+# --- execute the command in the SALOME environment
+
+shift 2
+
+${KERNEL_ROOT_DIR}/bin/salome/envSalome.py /bin/bash --rcfile $HOME/$APPLI/.bashrc -c "$*"
diff --git a/bin/appliskel/runSession b/bin/appliskel/runSession
new file mode 100755 (executable)
index 0000000..2ab579c
--- /dev/null
@@ -0,0 +1,38 @@
+#!/bin/bash
+#
+# Useful shell to run executable progs or shells under Salome env
+# Use it with args to run a program : runSession python -i myprog.py
+# Use it without args to run an interactive shell under Salome env
+#
+
+# --- retrieve APPLI path, relative to $HOME
+#     on sarge, "which" gives not allways the absolute path...
+     
+comName=`which $0`
+aa=${comName:0:1}
+if test x$aa == x\/; then
+  mycom=${comName}
+elif test x$aa == x\.; then
+  mycom=${PWD}/${comName:2}
+else
+  mycom=${PWD}/${comName}
+fi
+APPLI=`echo ${HOME} \`dirname $mycom\` | awk ' { print substr($2,length($1)+2) } '`
+echo $APPLI
+export APPLI
+
+# --- set the SALOME environment (prerequisites, MODULES_ROOT_DIR...)
+
+. ${HOME}/${APPLI}/envd ${HOME}/${APPLI}
+
+myhost=`hostname`
+export OMNIORB_CONFIG=${HOME}/${APPLI}/.omniORB_${myhost}_last.cfg
+
+# --- invoque shell with or without args
+
+if [ $# -ne 0 ] ; then
+    ${KERNEL_ROOT_DIR}/bin/salome/envSalome.py /bin/bash --rcfile ${HOME}/${APPLI}/.bashrc -c "$*"
+else
+
+    ${KERNEL_ROOT_DIR}/bin/salome/envSalome.py /bin/bash --rcfile ${HOME}/${APPLI}/.bashrc
+fi
diff --git a/bin/appliskel/runTests b/bin/appliskel/runTests
new file mode 100755 (executable)
index 0000000..487b4a3
--- /dev/null
@@ -0,0 +1,70 @@
+#!/bin/bash
+
+# --- retrieve APPLI path, relative to $HOME
+#     on sarge, "which" gives not allways the absolute path...
+     
+comName=`which $0`
+aa=${comName:0:1}
+if test x$aa == x\/; then
+  mycom=${comName}
+elif test x$aa == x\.; then
+  mycom=${PWD}/${comName:2}
+else
+  mycom=${PWD}/${comName}
+fi
+APPLI=`echo ${HOME} \`dirname $mycom\` | awk ' { print substr($2,length($1)+2) } '`
+#echo $APPLI
+export APPLI
+
+# --- set the SALOME environment (prerequisites, MODULES_ROOT_DIR...)
+
+. ${HOME}/${APPLI}/envd ${HOME}/${APPLI}
+
+# --- define port for CORBA naming service
+
+searchFreePort() {
+    echo -n "Searching for a free port for naming service: "
+    export NSPORT=2810
+    local limit=$NSPORT
+    let limit=limit+100
+    while [ 1 ]
+    do
+        aRes=`netstat -ltn | grep -E :${NSPORT}`
+        if [ -z "$aRes" ]; then
+            echo ${NSPORT} - Ok
+           local myhost=`hostname`
+            export OMNIORB_CONFIG=${HOME}/${APPLI}/.omniORB_${myhost}_${NSPORT}.cfg
+           export NSPORT
+            export NSHOST=${myhost}
+            local initref="NameService=corbaname::"`hostname`":$NSPORT"
+            #echo "ORBInitRef $initref" > $OMNIORB_CONFIG
+            echo "InitRef = $initref" > $OMNIORB_CONFIG
+            export LAST_RUNNING_CONFIG=${HOME}/${APPLI}/.omniORB_${myhost}_test.cfg
+           rm ${LAST_RUNNING_CONFIG}
+            ln -s ${OMNIORB_CONFIG} ${LAST_RUNNING_CONFIG}
+            break
+        fi
+        echo -n "${NSPORT} "
+        if [[ $NSPORT -eq $limit ]] ; then
+            echo
+            echo "Can't find a free port to launch omniNames"
+            echo "Try to kill the running servers and then launch SALOME again."
+            exit
+        fi
+        let NSPORT=NSPORT+1
+    done
+}
+
+# --- invoque shell with or without args
+
+searchFreePort
+
+if [ $# -ne 0 ] ; then
+    ${KERNEL_ROOT_DIR}/bin/salome/envSalome.py /bin/bash --rcfile ${HOME}/${APPLI}/.bashrc -c "$*"
+else
+
+    ${KERNEL_ROOT_DIR}/bin/salome/envSalome.py /bin/bash --rcfile ${HOME}/${APPLI}/.bashrc
+fi
+
+rm ${OMNIORB_CONFIG}
+rm ${LAST_RUNNING_CONFIG}
diff --git a/bin/createAppli.sh b/bin/createAppli.sh
new file mode 100755 (executable)
index 0000000..c6c4de0
--- /dev/null
@@ -0,0 +1,7 @@
+#!/bin/sh
+
+comName=`which $0`
+rep=`dirname $comName`
+
+cp -r $rep/appliskel $1
+chmod +x $1/*.sh $1/run* $1/envd
index 96e923980773f150248c9f98a6363f9b44742cc9..7ed1d63725772a1f8904373028f2982ba796e19d 100755 (executable)
@@ -5,7 +5,7 @@ from killSalomeWithPort import killMyPort
 
 def killAllPorts():
     user = os.getenv('USER')
-    for file in os.listdir("/tmp"):
+    for file in os.listdir(os.getenv("HOME")):
         l = string.split(file, "_")
         if len(l) >= 4:
             if file[:len(user)] == user:
index 7c8dcd2ed1800c80f269142caef2488c702616c4..e3fdea77e4dd30fd4ce8ccfce693f83375a3671b 100755 (executable)
@@ -3,7 +3,7 @@ import os, sys, pickle, signal, commands
 
 ########## kills all salome processes with the given port ##########
 def killMyPort(port):
-    filedict='/tmp/'+os.getenv('USER')+"_"+port+'_SALOME_pidict'
+    filedict=os.getenv("HOME")+'/'+os.getenv('USER')+"_"+port+'_SALOME_pidict'
     found = 0
     try:
         fpid=open(filedict, 'r')
@@ -13,7 +13,7 @@ def killMyPort(port):
         pass
         
     if found:
-        a = os.system("pid=`ps -eo pid,command | egrep \"[0-9] omniNames -start "+str(port)+"\" | sed -e \"s%[^0-9]*\([0-9]*\) .*%\\1%g\"`; kill -9 $pid")
+        a = os.system("pid=`ps -eo pid,command | egrep \"[0-9] omniNames -start "+str(port)+"\" | sed -e \"s%[^0-9]*\([0-9]*\) .*%\\1%g\"`; kill -9 $pid >& /dev/null")
         try:
             process_ids=pickle.load(fpid)
             fpid.close()
@@ -31,9 +31,11 @@ def killMyPort(port):
             pass
         os.remove(filedict)
         pid = commands.getoutput("ps -eo pid,command | egrep \"[0-9] omniNames -start "+str(port)+"\" | sed -e \"s%[^0-9]*\([0-9]*\) .*%\\1%g\"")
-        while pid != "":
-            a = os.system("pid=`ps -eo pid,command | egrep \"[0-9] omniNames -start "+str(port)+"\" | sed -e \"s%[^0-9]*\([0-9]*\) .*%\\1%g\"`; kill -9 $pid")
+       a = ""
+        while pid != "" and len(a.split(" ")) < 2:
+            a = commands.getoutput("pid=`ps -eo pid,command | egrep \"[0-9] omniNames -start "+str(port)+"\" | sed -e \"s%[^0-9]*\([0-9]*\) .*%\\1%g\"`; kill -9 $pid")
             pid = commands.getoutput("ps -eo pid,command | egrep \"[0-9] omniNames -start "+str(port)+"\" | sed -e \"s%[^0-9]*\([0-9]*\) .*%\\1%g\"")
+           print pid
               
 
 if __name__ == "__main__":
index 403e0299bcb3b59799c2fc0fdcda4d519f716f54..f1bd606db4da0ddd7d4a8e39e42f2006a045c1a7 100755 (executable)
@@ -1,20 +1,77 @@
-import os, glob, string, sys
+import os, glob, string, sys, re
 import xml.sax
 
+# names of tags in XML configuration file 
+doc_tag = "document"
+sec_tag = "section"
+par_tag = "parameter"
+
+# names of attributes in XML configuration file 
+nam_att = "name"
+val_att = "value"
+
+# certain values in XML configuration file ("launch" section)
+lanch_nam      = "launch"
+gui_nam        = "gui"
+splash_nam     = "splash"
+logger_nam     = "logger"
+xterm_nam      = "xterm"
+file_nam       = "file"
+portkill_nam   = "portkill"
+killall_nam    = "killall"
+modules_nam    = "modules"
+pyModules_nam  = "pyModules"
+embedded_nam   = "embedded"
+standalone_nam = "standalone"
+containers_nam = "containers"
+key_nam        = "key"
+interp_nam     = "interp"
+
+# values in XML configuration file giving specific module parameters (<module_name> section)
+# which are stored in opts with key <module_name>_<parameter> (eg SMESH_plugins)
+plugins_nam    = "plugins"
+
+# values passed as arguments, NOT read from XML config file, but set from within this script
+appname_nam    = "appname"
+port_nam       = "port"
+appname        = "SalomeApp"
+
+# values of boolean type (must be '0' or '1').
+# xml_parser.boolValue() is used for correct setting
+boolKeys = ( gui_nam, splash_nam, logger_nam, file_nam, xterm_nam, portkill_nam, killall_nam, interp_nam )
+
+# values of list type
+listKeys = ( containers_nam, embedded_nam, key_nam, modules_nam, standalone_nam, plugins_nam )
+
+# return application version (uses GUI_ROOT_DIR (or KERNEL_ROOT_DIR in batch mode) +/bin/salome/VERSION)
+def version():
+    root_dir = os.environ.get( 'KERNEL_ROOT_DIR', '' )     # KERNEL_ROOT_DIR or "" if not found
+    root_dir = os.environ.get( 'GUI_ROOT_DIR', root_dir )  # GUI_ROOT_DIR or KERNEL_ROOT_DIR or "" if both not found
+    filename = root_dir+'/bin/salome/VERSION'
+    str = open( filename, "r" ).readline() # str = "THIS IS SALOME - SALOMEGUI VERSION: 3.0.0"
+    match = re.search( r':\s+([\d\.]+)\s*$', str )
+    if match :
+        return match.group( 1 )
+    return ''
+    
 # -----------------------------------------------------------------------------
 
 ### xml reader for launch configuration file usage
 
+section_to_skip = ""
+
 class xml_parser:
-    def __init__(self, fileName):
+    def __init__(self, fileName, _opts ):
+        print "Processing ",fileName 
         self.space = []
-        self.opts = {}
+        self.opts = _opts
+        self.section = section_to_skip
         parser = xml.sax.make_parser()
         parser.setContentHandler(self)
         parser.parse(fileName)
         pass
 
-    def CorrectBoolean(self, str):
+    def boolValue( self, str ):
         if str in ("yes", "y", "1"):
             return 1
         elif str in ("no", "n", "0"):
@@ -24,56 +81,52 @@ class xml_parser:
         pass
 
     def startElement(self, name, attrs):
-        #print "startElement name=",name
-        #print "startElement attrs=",attrs.getNames()
         self.space.append(name)
         self.current = None
 
-        if self.space[:2] == ["Configuration-list","launchoptions"] and len(self.space) == 3:
-            self.current = name
-        elif self.space == ["Configuration-list","modules-list"]:
-            self.opts["modules"] = []
-        elif self.space == ["Configuration-list","modules-list","module"] and "name" in attrs.getNames():
-            for field in attrs.getNames():
-                if field == "name":
-                    self.currentModuleName = str(attrs.getValue("name"))
-                    self.opts["modules"].append(self.currentModuleName)
-                else:
-                    self.opts[str(attrs.getValue("name"))+"_"+str(field)] = self.CorrectBoolean(attrs.getValue(field))
-                    pass
-                pass
-        elif self.space == ["Configuration-list","modules-list","module","plugin"] and "name" in attrs.getNames():
-            key = str(self.currentModuleName)+"_plugins"
-            if not self.opts.has_key(key):
-                self.opts[key]=[]
-                pass
-            self.opts[key].append(attrs.getValue("name"))
-        elif self.space == ["Configuration-list","embedded-list"]:
-            self.opts["embedded"] = []
+        # if we are analyzing "section" element and its "name" attribute is
+        # either "launch" or module name -- set section_name
+        if self.space == [doc_tag, sec_tag] and nam_att in attrs.getNames():
+            section_name = attrs.getValue( nam_att )
+            if section_name == lanch_nam:
+                self.section = section_name # launch section
+            elif self.opts.has_key( modules_nam ) and \
+                 section_name in self.opts[ modules_nam ]:
+                self.section = section_name # <module> section
+            else:
+                self.section = section_to_skip # any other section
             pass
-        elif self.space == ["Configuration-list","standalone-list"]:
-            self.opts["standalone"] = []
-            pass
-        elif self.space == ["Configuration-list","containers-list"]:
-            self.opts["containers"] = []
+
+        # if we are analyzing "parameter" elements - children of either
+        # "section launch" or "section "<module>"" element, then store them
+        # in self.opts assiciative array (key = [<module>_ + ] value of "name" attribute)
+        elif self.section != section_to_skip           and \
+             self.space == [doc_tag, sec_tag, par_tag] and \
+             nam_att in attrs.getNames()               and \
+             val_att in attrs.getNames():
+            nam = attrs.getValue( nam_att )
+            val = attrs.getValue( val_att )
+            if self.section == lanch_nam: # key for launch section
+                key = nam
+            else:                         # key for <module> section
+                key = self.section + "_" + nam
+            if nam in boolKeys:
+                self.opts[key] = self.boolValue( val )  # assign boolean value: 0 or 1
+            elif nam in listKeys:
+                self.opts[key] = val.split( ',' )       # assign list value: []
+            else:
+                self.opts[key] = val;
             pass
         pass
 
     def endElement(self, name):
         p = self.space.pop()
         self.current = None
+        if self.section != section_to_skip and name == sec_tag:
+            self.section = section_to_skip
         pass
 
     def characters(self, content):
-        #print "Characters content:",content
-        if self.current:
-            self.opts[self.current] = self.CorrectBoolean(content)
-        elif self.space == ["Configuration-list","embedded-list", "embeddedserver"]:
-            self.opts["embedded"].append(content)
-        elif self.space == ["Configuration-list","standalone-list", "standaloneserver"]:
-            self.opts["standalone"].append(content)
-        elif self.space == ["Configuration-list","containers-list", "containertype"]:
-            self.opts["containers"].append(content)
         pass
 
     def processingInstruction(self, target, data):
@@ -92,45 +145,62 @@ class xml_parser:
 
 # -----------------------------------------------------------------------------
 
-### searching for launch configuration file : $HOME/applipath()/salome.launch
-
-appname="salome"
-import Utils_Identity
-versnb=Utils_Identity.version()
-dirname = os.path.join(os.environ["HOME"],Utils_Identity.getapplipath())
-filename=os.path.join(dirname,"salome.launch")
-
-if not os.path.exists(filename):
-   print "Launch configuration file does not exist. Create default:",filename
-   os.system("mkdir -p "+dirname)
-   os.system("cp -f "+os.environ["KERNEL_ROOT_DIR"]+"/bin/salome/salome.launch "+filename)
-
-### get options from launch configuration file
-
+### searching for launch configuration files
+# the rule:
+# - environment variable {'appname'+'Config'} (SalomeAppConfig) contains list of directories (';' as devider)
+# - these directories contain 'appname'+'.xml' (SalomeApp.xml) configuration files
+# - these files are analyzed beginning with the last one (last directory in the list)
+# - if a key is found in next analyzed cofiguration file - it will be replaced
+# - the last configuration file to be analyzed - ~/.'appname'+'rc' (~/SalomeApprc) (if it exists)
+# - but anyway, if user specifies a certain option in a command line - it will replace the values
+# - specified in configuration file(s)
+# - once again the order of settings (next setting replaces the previous ones):
+# -     SalomeApp.xml files in directories specified by SalomeAppConfig env variable
+# -     .SalomeApprc file in user's catalogue
+# -     command line
+
+config_var = appname+'Config'
+dirs = os.environ[config_var]
+dirs = dirs.split( ';' )
+dirs.reverse() # reverse order, like in "path" variable - FILO-style processing
+
+_opts = {} # assiciative array of options to be filled
+
+# SalomeApp.xml files in directories specified by SalomeAppConfig env variable
+for dir in dirs:
+    filename = dir+'/'+appname+'.xml'
+    try:
+        p = xml_parser(filename, _opts)
+        _opts = p.opts
+    except:
+        print 'Can not read launch configuration file ', filename
+        continue
+
+# SalomeApprc file in user's catalogue
+filename = os.environ['HOME']+'/.'+appname+'rc.'+version()
 try:
-    p = xml_parser(filename)
+    p = xml_parser(filename, _opts)
+    _opts = p.opts
 except:
     print 'Can not read launch configuration file ', filename
-    filename = None
-    pass
 
-if filename:
-    args = p.opts
-else:
-    args = {}
-    pass
 
-# --- args completion
-for aKey in ("containers","embedded","key","modules","standalone"):
-    if not args.has_key(aKey):
+args = _opts
+
+# --- setting default values of keys if they were NOT set in config files ---
+for aKey in listKeys:
+    if not args.has_key( aKey ):
         args[aKey]=[]
-for aKey in ("gui","logger","file","xterm","portkill","killall","interp"):
-    if not args.has_key(aKey):
+        
+for aKey in boolKeys:
+    if not args.has_key( aKey ):
         args[aKey]=0
-if args["file"]:
-    afile=args["file"]
-    args["file"]=[afile]
-args["appname"] = appname
+        
+if args[file_nam]:
+    afile=args[file_nam]
+    args[file_nam]=[afile]
+    
+args[appname_nam] = appname
 
 ### searching for my port
 
@@ -140,7 +210,7 @@ try:
   s = file.read()
   while len(s):
     l = string.split(s, ":")
-    if string.split(l[0], " ")[0] == "ORBInitRef":
+    if string.split(l[0], " ")[0] == "ORBInitRef" or string.split(l[0], " ")[0] == "InitRef" :
       my_port = int(l[len(l)-1])
       pass
     s = file.read()
@@ -148,7 +218,7 @@ try:
 except:
   pass
 
-args["port"] = my_port
+args[port_nam] = my_port
 
 # -----------------------------------------------------------------------------
 
@@ -165,7 +235,7 @@ def options_parser(line):
     list = []
     pass
 
-  print "source=",source
+  #print "source=",source
   
   result = {}
   i = 0
@@ -192,27 +262,27 @@ def options_parser(line):
 # -----------------------------------------------------------------------------
 
 ### read command-line options : each arg given in command line supersedes arg from xml config file
-
+cmd_opts = {}
 try:
-    opts = options_parser(sys.argv[1:])
-    print "opts=",opts
+    cmd_opts = options_parser(sys.argv[1:])
+    #print "opts=",cmd_opts
     kernel_root_dir=os.environ["KERNEL_ROOT_DIR"]
 except:
-    opts["h"] = 1
+    cmd_opts["h"] = 1
     pass
 
 ### check all options are right
 
 opterror=0
-for opt in opts:
+for opt in cmd_opts:
     if not opt in ("h","g","l","f","x","m","e","s","c","p","k","t","i"):
         print "command line error: -", opt
         opterror=1
 
 if opterror == 1:
-    opts["h"] = 1
+    cmd_opts["h"] = 1
 
-if opts.has_key("h"):
+if cmd_opts.has_key("h"):
     print """USAGE: runSalome.py [options]
     [command line options] :
     --help or -h                  : print this help
@@ -235,6 +305,7 @@ if opts.has_key("h"):
     --portkill or -p              : kill the salome with current port
     --killall or -k               : kill all salome sessions
     --interp=n or -i=n            : number of additional xterm to open, with session environment
+    -z                            : display splash screen
     
     For each Salome module, the environment variable <modulen>_ROOT_DIR must be set.
     The module name (<modulen>) must be uppercase.
@@ -244,35 +315,37 @@ if opts.has_key("h"):
     pass
 
 ### apply command-line options to the arguments
-for opt in opts:
+for opt in cmd_opts:
     if opt == 'g':
-        args['gui'] = 1
+        args[gui_nam] = 1
+    elif opt == 'z':
+       args[splash_nam] = 1
     elif opt == 'l':
-        args['logger'] = 1
+        args[logger_nam] = 1
     elif opt == 'f':
-        args['file'] = opts['f']
+        args[file_nam] = cmd_opts['f']
     elif opt == 'x':
-        args['xterm'] = 1
+        args[xterm_nam] = 1
     elif opt == 'i':
-        args['interp'] = opts['i']
+        args[interp_nam] = cmd_opts['i']
     elif opt == 'm':
-        args['modules'] = opts['m']
+        args[modules_nam] = cmd_opts['m']
     elif opt == 'e':
-        args['embedded'] = opts['e']
+        args[embedded_nam] = cmd_opts['e']
     elif opt == 's':
-        args['standalone'] = opts['s']
+        args[standalone_nam] = cmd_opts['s']
     elif opt == 'c':
-        args['containers'] = opts['c']
+        args[containers_nam] = cmd_opts['c']
     elif opt == 'p':
-        args['portkill'] = 1
+        args[portkill_nam] = 1
     elif opt == 'k':
-        args['killall'] = 1
+        args[killall_nam] = 1
         pass
     pass
 
 # 'terminal' must be processed in the end: to deny any 'gui' options
-if 't' in opts:
-    args['gui'] = 0
+if 't' in cmd_opts:
+    args[gui_nam] = 0
     pass
 
-print "args=",args
+#print "args=",args
index 627a909871cf824177d886647c4b2763a878e37c..fdc254472e9a5fb5250001117863f42098337179 100755 (executable)
@@ -47,7 +47,7 @@ class client:
       try:
           self.rootContext = obj._narrow(CosNaming.NamingContext)
           return
-      except CORBA.COMM_FAILURE:
+      except (CORBA.TRANSIENT,CORBA.OBJECT_NOT_EXIST,CORBA.COMM_FAILURE):
           self.rootContext = None
           print "Lancement du Naming Service",
           
@@ -62,7 +62,7 @@ class client:
               obj = self.orb.resolve_initial_references("NameService")
               self.rootContext = obj._narrow(CosNaming.NamingContext)
               break
-          except (CORBA.COMM_FAILURE,CORBA.OBJECT_NOT_EXIST):
+          except (CORBA.TRANSIENT,CORBA.OBJECT_NOT_EXIST,CORBA.COMM_FAILURE):
               self.rootContext = None
               sys.stdout.write('+')
               sys.stdout.flush()
@@ -77,15 +77,16 @@ class client:
 
    def showNScontext(self,context,dec=''):
       bl,bi=context.list(0)
-      ok,b=bi.next_one()
-      while(ok):
-         for s in b.binding_name :
-            print "%s%s.%s" %(dec,s.id,s.kind)
-            if s.kind == "dir":
-               obj=context.resolve([s])
-               scontext = obj._narrow(CosNaming.NamingContext)
-               self.showNScontext(scontext,dec=dec+'  ')
+      if bi is not None:
          ok,b=bi.next_one()
+         while(ok):
+            for s in b.binding_name :
+               print "%s%s.%s" %(dec,s.id,s.kind)
+               if s.kind == "dir":
+                  obj=context.resolve([s])
+                  scontext = obj._narrow(CosNaming.NamingContext)
+                  self.showNScontext(scontext,dec=dec+'  ')
+            ok,b=bi.next_one()
 
    # --------------------------------------------------------------------------
 
@@ -112,7 +113,7 @@ class client:
           obj = None
       except CosNaming.NamingContext.CannotProceed, ex:
           obj = None
-      except CORBA.COMM_FAILURE, ex:
+      except (CORBA.TRANSIENT,CORBA.OBJECT_NOT_EXIST,CORBA.COMM_FAILURE):
           obj = None
       return obj
 
@@ -155,7 +156,7 @@ class client:
           obj = None
       except CosNaming.NamingContext.CannotProceed, ex:
           obj = None
-      except CORBA.COMM_FAILURE, ex:
+      except (CORBA.TRANSIENT,CORBA.OBJECT_NOT_EXIST,CORBA.COMM_FAILURE):
           obj = None
       return obj
    
index 76b7452bfbf981dd0e62350ade3632d3119ea91a..b5c155a6c46fda66161d8dbd41b64cd6c461fe17 100755 (executable)
@@ -17,7 +17,7 @@ touch ${BaseDir}/logs/${Username}/dummy
 \rm -f ${BaseDir}/logs/${Username}/omninames* ${BaseDir}/logs/${Username}/dummy ${BaseDir}/logs/${Username}/*.log
 
 echo "Name Service... "
-aSedCommand="s/ORBInitRef NameService=corbaname::`hostname`:\([[:digit:]]*\)/\1/"
+aSedCommand="s/.*NameService=corbaname::`hostname`:\([[:digit:]]*\)/\1/"
 aPort=`sed -e"$aSedCommand" $OMNIORB_CONFIG`
 omniNames -start $aPort -logdir ${BaseDir}/logs/${Username} &
 
index 7505e8b891648bfbf556c3f7719ac61327ed4b34..6e7efbc677aad803501882e98693235dd32dafc1 100755 (executable)
@@ -12,8 +12,13 @@ searchFreePort() {
             echo ${NSPORT} - Ok
            local myhost=`hostname`
             export OMNIORB_CONFIG=${HOME}/.omniORB_${myhost}_${NSPORT}.cfg
-            local initref="NameService=corbaname::"`hostname`":$NSPORT"
-            echo "ORBInitRef $initref" > $OMNIORB_CONFIG
+           local initref="NameService=corbaname::"`hostname`":$NSPORT"
+           export NSPORT
+           if [[ `python -c "import CORBA; print CORBA.ORB_ID"` == "omniORB4" ]]; then
+                echo "InitRef = $initref" > $OMNIORB_CONFIG
+           else
+               echo "ORBInitRef $initref" > $OMNIORB_CONFIG
+           fi
             break
         fi
         echo -n "${NSPORT} "
@@ -29,7 +34,9 @@ searchFreePort() {
 
 searchFreePort
 
-if [ $# -ne 0 ] ; then
+if [[ "$*" == "-nothing" ]]; then
+    echo "port:$NSPORT"
+elif [ $# -ne 0 ] ; then
     python -i ${KERNEL_ROOT_DIR}/bin/salome/runSalome.py $* 
 else
     python ${KERNEL_ROOT_DIR}/bin/salome/runSalome.py
index e423d97bace04f6dc0413e9bb8f2f24260d70477..0827efa5065dc2f8057b1d4a85f9c4a6ae3a550e 100755 (executable)
@@ -5,6 +5,11 @@ import orbmodule
 
 process_id = {}
 
+# salome_subdir variable is used for composing paths like $KERNEL_ROOT_DIR/share/salome/resources, etc.
+# before moving to SUIT-based gui, instead of salome_subdir there was args['appname'] used.
+# but after - 'appname'  = "SalomeApp", so using it in making the subdirectory is an error.
+salome_subdir = "salome"
+
 # -----------------------------------------------------------------------------
 
 def add_path(directory, variable_name):
@@ -52,6 +57,7 @@ def get_config():
     if args.has_key("modules"):
         modules_list += args["modules"]
     # KERNEL must be last in the list to locate it at the first place in PATH 
+    modules_list[:0] = ["GUI"]
     modules_list[:0] = ["KERNEL"]
     modules_list.reverse()
 
@@ -80,6 +86,10 @@ def get_config():
         modules_list.remove("KERNEL")
         pass
 
+    while "GUI" in modules_list:
+        modules_list.remove("GUI")
+        pass
+
     if "SUPERV" in modules_list and not 'superv' in args['standalone']:
         args['standalone'].append("superv")
         pass
@@ -93,51 +103,40 @@ def set_env(args, modules_list, modules_root_dir):
     
     python_version="python%d.%d" % sys.version_info[0:2]
     modules_root_dir_list = []
+    modules_list = modules_list[:] + ["GUI"] 
     modules_list = modules_list[:] + ["KERNEL"] 
     for module in modules_list :
         module_root_dir = modules_root_dir[module]
         modules_root_dir_list[:0] = [module_root_dir]
-        add_path(os.path.join(module_root_dir,"lib",args['appname']),
+        add_path(os.path.join(module_root_dir,"lib",salome_subdir),
                  "LD_LIBRARY_PATH")
-        add_path(os.path.join(module_root_dir,"bin",args['appname']),
+        add_path(os.path.join(module_root_dir,"bin",salome_subdir),
                  "PATH")
         if os.path.exists(module_root_dir + "/examples") :
             add_path(os.path.join(module_root_dir,"examples"),
                      "PYTHONPATH")
-        add_path(os.path.join(module_root_dir,"bin",args['appname']),
+        add_path(os.path.join(module_root_dir,"bin",salome_subdir),
                  "PYTHONPATH")
         add_path(os.path.join(module_root_dir,"lib",
-                              python_version,"site-packages",args['appname']),
+                              python_version,"site-packages",salome_subdir),
                  "PYTHONPATH")
-        add_path(os.path.join(module_root_dir,"lib",args['appname']),
+        add_path(os.path.join(module_root_dir,"lib",salome_subdir),
                  "PYTHONPATH")
         add_path(os.path.join(module_root_dir,"lib",
-                              python_version,"site-packages",args['appname'],
+                              python_version,"site-packages",salome_subdir,
                               "shared_modules"),
                  "PYTHONPATH")
 
     os.environ["SALOMEPATH"]=":".join(modules_root_dir_list)
     
-    # special path for logger lib if needeed
+    # set trace environment variable
     
-    os.environ["SALOME_trace"]="local"
+    if not os.environ.has_key("SALOME_trace"):
+        os.environ["SALOME_trace"]="local"
     if args['file']:
-        os.environ["SALOME_trace"]=args['file'][0]
+        os.environ["SALOME_trace"]="file:"+args['file'][0]
     if args['logger']:
         os.environ["SALOME_trace"]="with_logger"
-        locdir=os.environ['PWD']
-        libtracedir=os.path.join(locdir,"libSalomeTrace")
-        libtrace = os.path.join(modules_root_dir["KERNEL"],"lib",
-                                args['appname'],
-                                "libSALOMELoggerClient.so.0.0.0")
-        libtraceln = os.path.join(libtracedir,"libSALOMELocalTrace.so")
-        aCommand = 'rm -rf ' + libtracedir + "; "
-        aCommand += 'mkdir ' + libtracedir + "; "
-        aCommand += 'ln -s ' + libtrace + " " + libtraceln + "; "
-        aCommand += 'ln -s ' + libtrace + " " + libtraceln + ".0; "
-        aCommand += 'ln -s ' + libtrace + " " + libtraceln + ".0.0.0; "
-        os.system(aCommand)
-        add_path(libtracedir, "LD_LIBRARY_PATH")
 
     # set environment for SMESH plugins
 
@@ -157,22 +156,43 @@ def set_env(args, modules_list, modules_root_dir):
                         os.environ["SALOME_"+plugin+"Resources"] \
                         = plugin_root+"/share/"+args["appname"]+"/resources"
                     add_path(os.path.join(plugin_root,"lib",python_version,
-                                          "site-packages",args['appname']),
+                                          "site-packages",salome_subdir),
                              "PYTHONPATH")
-                    add_path(os.path.join(plugin_root,"lib",args['appname']),
+                    add_path(os.path.join(plugin_root,"lib",salome_subdir),
                              "PYTHONPATH")
-                    add_path(os.path.join(plugin_root,"lib",args['appname']),
+                    add_path(os.path.join(plugin_root,"lib",salome_subdir),
                              "LD_LIBRARY_PATH")
-                    add_path(os.path.join(plugin_root,"bin",args['appname']),
+                    add_path(os.path.join(plugin_root,"bin",salome_subdir),
                              "PYTHONPATH")
-                    add_path(os.path.join(plugin_root,"bin",args['appname']),
+                    add_path(os.path.join(plugin_root,"bin",salome_subdir),
                              "PATH")
             pass
         pass
 
     # set environment for SUPERV module
     os.environ["ENABLE_MACRO_NODE"]="1"
-   
+    # set resources variables if not yet set
+    if os.getenv("GUI_ROOT_DIR"):
+        if not os.getenv("SUITRoot"): os.environ["SUITRoot"] =  os.getenv("GUI_ROOT_DIR") + "/share/salome"
+        if not os.getenv("SalomeAppConfig"): os.environ["SalomeAppConfig"] =  os.getenv("GUI_ROOT_DIR") + "/share/salome/resources"
+        pass   
+
+    os.environ["CSF_PluginDefaults"] \
+    = os.path.join(modules_root_dir["KERNEL"],"share",
+                   salome_subdir,"resources")
+    os.environ["CSF_SALOMEDS_ResourcesDefaults"] \
+    = os.path.join(modules_root_dir["KERNEL"],"share",
+                   salome_subdir,"resources")
+
+    if "GEOM" in modules_list:
+        print "GEOM OCAF Resources"
+        os.environ["CSF_GEOMDS_ResourcesDefaults"] \
+        = os.path.join(modules_root_dir["GEOM"],"share",
+                       salome_subdir,"resources")
+       print "GEOM Shape Healing Resources"
+        os.environ["CSF_ShHealingDefaults"] \
+        = os.path.join(modules_root_dir["GEOM"],"share",
+                       salome_subdir,"resources")
 
 # -----------------------------------------------------------------------------
 
@@ -222,7 +242,7 @@ def kill_salome(args):
        
 # -----------------------------------------------------------------------------
 #
-# Définition des classes d'objets pour le lancement des Server CORBA
+# Definition des classes d'objets pour le lancement des Server CORBA
 #
 
 class Server:
@@ -248,7 +268,7 @@ class Server:
                                  + os.getenv("LD_LIBRARY_PATH")]
             myargs = myargs +['-T']+self.CMD[:1]+['-e'] + env_ld_library_path
         command = myargs + self.CMD
-        print "command = ", command
+        print "command = ", command
         pid = os.spawnvp(os.P_NOWAIT, command[0], command)
         process_id[pid]=self.CMD
 
@@ -263,7 +283,7 @@ class InterpServer(Server):
     def run(self):
         global process_id
         command = self.CMD
-        print "command = ", command
+        #print "command = ", command
         pid = os.spawnvp(os.P_NOWAIT, command[0], command)
         process_id[pid]=self.CMD
 
@@ -274,20 +294,22 @@ class CatalogServer(Server):
         self.args=args
         self.initArgs()
         self.SCMD1=['SALOME_ModuleCatalog_Server','-common']
-        self.SCMD2=['-personal',
-                    '${HOME}/Salome/resources/CatalogModulePersonnel.xml'] 
+        self.SCMD2=[]
+        home_dir=os.getenv('HOME')
+        if home_dir is not None:
+            self.SCMD2=['-personal',os.path.join(home_dir,'Salome/resources/CatalogModulePersonnel.xml')] 
 
     def setpath(self,modules_list,modules_root_dir):
         cata_path=[]
         list_modules = modules_list[:]
         list_modules.reverse()
-        for module in ["KERNEL"] + list_modules:
+        for module in ["KERNEL", "GUI"] + list_modules:
             module_root_dir=modules_root_dir[module]
             module_cata=module+"Catalog.xml"
-            print "   ", module_cata
+            #print "   ", module_cata
             cata_path.extend(
                 glob.glob(os.path.join(module_root_dir,
-                                       "share",self.args['appname'],
+                                       "share",salome_subdir,
                                        "resources",module_cata)))
         self.CMD=self.SCMD1 + [string.join(cata_path,':')] + self.SCMD2
 
@@ -341,31 +363,63 @@ class LoggerServer(Server):
 
 # ---
 
-class SessionLoader(Server):
+class SessionServer(Server):
     def __init__(self,args):
         self.args=args
         self.initArgs()
-        self.CMD=['SALOME_Session_Loader']
-        if "cppContainer" in self.args['standalone'] \
-        or "cppContainer" in self.args['embedded']:
-            self.CMD=self.CMD+['CPP']
-        if "pyContainer" in self.args['standalone'] \
-        or "pyContainer" in self.args['embedded']:
-            self.CMD=self.CMD+['PY']
-        if "supervContainer" in self.args['containers'] \
-        or "supervContainer" in self.args['standalone']:
-            self.CMD=self.CMD+['SUPERV']
+        self.SCMD1=['SALOME_Session_Server']
+        self.SCMD2=[]
+        if 'registry' in self.args['embedded']:
+            self.SCMD1+=['--with','Registry',
+                         '(','--salome_session','theSession',')']
+        if 'moduleCatalog' in self.args['embedded']:
+            self.SCMD1+=['--with','ModuleCatalog','(','-common']
+            home_dir=os.getenv('HOME')
+            if home_dir is not None:
+                self.SCMD2+=['-personal',os.path.join(home_dir,'Salome/resources/CatalogModulePersonnel.xml')] 
+            self.SCMD2+=[')']
+        if 'study' in self.args['embedded']:
+            self.SCMD2+=['--with','SALOMEDS','(',')']
+        if 'cppContainer' in self.args['embedded']:
+            self.SCMD2+=['--with','Container','(','FactoryServer',')']
+        if 'SalomeAppEngine' in self.args['embedded']:
+            self.SCMD2+=['--with','SalomeAppEngine','(',')']
+            
+        if 'cppContainer' in self.args['standalone'] or 'cppContainer' in self.args['embedded']:
+            self.SCMD2+=['CPP']
+        if 'pyContainer' in self.args['standalone'] or 'pyContainer' in self.args['embedded']:
+            self.SCMD2+=['PY']
+        if 'supervContainer' in self.args['containers'] or 'supervContainer' in self.args['standalone']:
+            self.SCMD2+=['SUPERV']
         if self.args['gui']:
-            self.CMD=self.CMD+['GUI']
-        print self.CMD
+            self.SCMD2+=['GUI']
+        if self.args['splash']:
+            self.SCMD2+=['SPLASH']
 
+    def setpath(self,modules_list,modules_root_dir):
+        cata_path=[]
+        list_modules = modules_list[:]
+        list_modules.reverse()
+        for module in ["KERNEL", "GUI"] + list_modules:
+            module_root_dir=modules_root_dir[module]
+            module_cata=module+"Catalog.xml"
+            #print "   ", module_cata
+            cata_path.extend(
+                glob.glob(os.path.join(module_root_dir,"share",
+                                       salome_subdir,"resources",
+                                       module_cata)))
+        if 'moduleCatalog' in self.args['embedded']:
+            self.CMD=self.SCMD1 + [string.join(cata_path,':')] + self.SCMD2
+        else:
+            self.CMD=self.SCMD1 + self.SCMD2
+      
 # ---
 
-class SessionServer(Server):
+class ContainerManagerServer(Server):
     def __init__(self,args):
         self.args=args
         self.initArgs()
-        self.SCMD1=['SALOME_Session_Server']
+        self.SCMD1=['SALOME_ContainerManagerServer']
         self.SCMD2=[]
         if 'registry' in self.args['embedded']:
             self.SCMD1+=['--with','Registry',
@@ -373,20 +427,20 @@ class SessionServer(Server):
         if 'moduleCatalog' in self.args['embedded']:
             self.SCMD1+=['--with','ModuleCatalog','(','-common']
             self.SCMD2+=['-personal',
-                     '${HOME}/Salome/resources/CatalogModulePersonnel.xml',')']
+                         '${HOME}/Salome/resources/CatalogModulePersonnel.xml',')']
         if 'study' in self.args['embedded']:
             self.SCMD2+=['--with','SALOMEDS','(',')']
         if 'cppContainer' in self.args['embedded']:
             self.SCMD2+=['--with','Container','(','FactoryServer',')']
-
+        
     def setpath(self,modules_list,modules_root_dir):
         cata_path=[]
         list_modules = modules_list[:]
         list_modules.reverse()
-        for module in ["KERNEL"] + list_modules:
+        for module in ["KERNEL", "GUI"] + list_modules:
             module_root_dir=modules_root_dir[module]
             module_cata=module+"Catalog.xml"
-            print "   ", module_cata
+            #print "   ", module_cata
             cata_path.extend(
                 glob.glob(os.path.join(module_root_dir,"share",
                                        self.args['appname'],"resources",
@@ -396,19 +450,6 @@ class SessionServer(Server):
         else:
             self.CMD=self.SCMD1 + self.SCMD2
 
-##      # arguments SALOME_Session_Server pour ddd
-##      comm_ddd=""
-##      for mot in self.CMD:
-##          if mot == "(":
-##              comm_ddd+='"(" '
-##          elif mot == ")":
-##              comm_ddd+='")" '
-##          else:
-##              comm_ddd+=mot+" "
-##      print comm_ddd
-      
-# ---
-
 class NotifyServer(Server):
     def __init__(self,args,modules_root_dir):
         self.args=args
@@ -429,6 +470,7 @@ class NotifyServer(Server):
 def startGUI():
     """Salome Session Graphic User Interface activation"""
     import SALOME
+    import SALOME_Session_idl
     session=clt.waitNS("/Kernel/Session",SALOME.Session)
     session.GetInterface()
   
@@ -438,16 +480,8 @@ def startSalome(args, modules_list, modules_root_dir):
     """Launch all SALOME servers requested by args"""
     init_time = os.times()
 
-    #
-    # Lancement Session Loader
-    #
-
     print "startSalome ", args
     
-    if args['gui']:
-        myServer=SessionLoader(args)
-        myServer.run()
-
     #
     # Initialisation ORB et Naming Service
     #
@@ -473,7 +507,7 @@ def startSalome(args, modules_list, modules_root_dir):
 
     #
     # Lancement Registry Server,
-    # attente de la disponibilité du Registry dans le Naming Service
+    # attente de la disponibilite du Registry dans le Naming Service
     #
 
     if 'registry' not in args['embedded']:
@@ -483,7 +517,7 @@ def startSalome(args, modules_list, modules_root_dir):
 
     #
     # Lancement Catalog Server,
-    # attente de la disponibilité du Catalog Server dans le Naming Service
+    # attente de la disponibilite du Catalog Server dans le Naming Service
     #
     
 
@@ -496,47 +530,24 @@ def startSalome(args, modules_list, modules_root_dir):
 
     #
     # Lancement SalomeDS Server,
-    # attente de la disponibilité du SalomeDS dans le Naming Service
+    # attente de la disponibilite du SalomeDS dans le Naming Service
     #
 
-    os.environ["CSF_PluginDefaults"] \
-    = os.path.join(modules_root_dir["KERNEL"],"share",
-                   args['appname'],"resources")
-    os.environ["CSF_SALOMEDS_ResourcesDefaults"] \
-    = os.path.join(modules_root_dir["KERNEL"],"share",
-                   args['appname'],"resources")
-
-    if "GEOM" in modules_list:
-        print "GEOM OCAF Resources"
-        os.environ["CSF_GEOMDS_ResourcesDefaults"] \
-        = os.path.join(modules_root_dir["GEOM"],"share",
-                       args['appname'],"resources")
-       print "GEOM Shape Healing Resources"
-        os.environ["CSF_ShHealingDefaults"] \
-        = os.path.join(modules_root_dir["GEOM"],"share",
-                       args['appname'],"resources")
-
+    #print "ARGS = ",args
     if 'study' not in args['embedded']:
+        print "RunStudy"
         myServer=SalomeDSServer(args)
         myServer.run()
         clt.waitNS("/myStudyManager")
 
     #
-    # Lancement Session Server
-    #
-
-    mySessionServ = SessionServer(args)
-    mySessionServ.setpath(modules_list,modules_root_dir)
-    mySessionServ.run()
-
-    #macomm2=['ddd']
-    #pid = os.spawnvp(os.P_NOWAIT, macomm2[0], macomm2)
-    #
-    # Attente de la disponibilité du Session Server dans le Naming Service
+    # Lancement ContainerManagerServer
     #
+    
+    myCmServer = ContainerManagerServer(args)
+    myCmServer.setpath(modules_list,modules_root_dir)
+    myCmServer.run()
 
-    import SALOME
-    session=clt.waitNS("/Kernel/Session",SALOME.Session)
 
     from Utils_Identity import getShortHostName
     
@@ -550,7 +561,7 @@ def startSalome(args, modules_list, modules_root_dir):
     
     #
     # Lancement Container C++ local,
-    # attente de la disponibilité du Container C++ local dans le Naming Service
+    # attente de la disponibilite du Container C++ local dans le Naming Service
     #
 
     if 'cppContainer' in args['standalone']:
@@ -560,7 +571,7 @@ def startSalome(args, modules_list, modules_root_dir):
 
     #
     # Lancement Container Python local,
-    # attente de la disponibilité du Container Python local
+    # attente de la disponibilite du Container Python local
     # dans le Naming Service
     #
 
@@ -571,7 +582,7 @@ def startSalome(args, modules_list, modules_root_dir):
 
     #
     # Lancement Container Supervision local,
-    # attente de la disponibilité du Container Supervision local
+    # attente de la disponibilite du Container Supervision local
     # dans le Naming Service
     #
 
@@ -580,11 +591,30 @@ def startSalome(args, modules_list, modules_root_dir):
         myServer.run()
         clt.waitNS("/Containers/" + theComputer + "/SuperVisionContainer")
 
+    #
+    # Lancement Session Server
+    #
+    mySessionServ = SessionServer(args)
+    mySessionServ.setpath(modules_list,modules_root_dir)
+    mySessionServ.run()
+##----------------        
+
+    # Attente de la disponibilite du Session Server dans le Naming Service
+    #
+
+    import SALOME
+    import SALOME_Session_idl
+    session=clt.waitNS("/Kernel/Session",SALOME.Session)
+
     end_time = os.times()
     print
     print "Start SALOME, elapsed time : %5.1f seconds"% (end_time[4]
                                                          - init_time[4])
 
+    # ASV start GUI without Loader
+    #if args['gui']:
+    #    session.GetInterface()
+
     #
     # additionnal external python interpreters
     #
@@ -631,9 +661,11 @@ def useSalome(args, modules_list, modules_root_dir):
         
     #print process_id
     
-    filedict = '/tmp/' + os.getenv('USER') + "_" + str(args['port']) \
-             + '_' + args['appname'].upper() + '_pidict'
-   
+#    filedict = '/tmp/' + os.getenv('USER') + "_" + str(args['port']) \
+#             + '_' + args['appname'].upper() + '_pidict'
+# replaced args['appname'] by "SALOME" because in killSalome.py use of 'SALOME' in file name is hardcoded.
+    filedict = os.getenv("HOME") + '/' + os.getenv('USER') + "_" + str(args['port']) \
+               + '_' + 'SALOME' + '_pidict'   
     process_ids = []
     try:
         fpid=open(filedict, 'r')
index 92c5eab6de7aa2368bb556b8fd546c2d795278e5..1b5bbdd1b579140b8b69c8f1ffbaa0ac1493ba6c 100644 (file)
@@ -2,7 +2,6 @@
        <launchoptions>
                <gui>yes</gui>
                <logger>no</logger>
-               <!-- <file>atrace.log</file> -->
                <xterm>no</xterm>
                <portkill>yes</portkill>
                <killall>no</killall>
index 03c0a5e51be09f744ed96f4f59523d5595c623f8..5ce7cec640e869be3cb0c3df648a2baae2adbc12 100755 (executable)
@@ -66,7 +66,7 @@ class client(orbmodule.client):
       try:
           self.rootContext = obj._narrow(CosNaming.NamingContext)
           return
-      except CORBA.COMM_FAILURE:
+      except (CORBA.TRANSIENT,CORBA.OBJECT_NOT_EXIST,CORBA.COMM_FAILURE):
           print "It's not a valid naming service"
           self.rootContext = None
           raise
index 687d5d093b8c9e96437c4c4646b5e2365bb82fbf..81cde052a3b3759aa490a6538cca2bca69ef0aaa 100644 (file)
@@ -212,8 +212,6 @@ WITH_BATCH=no
 test x$openpbs_ok = xyes || test x$lsf_ok = xyes && WITH_BATCH=yes
 AC_SUBST(WITH_BATCH)
 
-
-
 echo
 echo ---------------------------------------------
 echo testing LEX \& YACC
@@ -287,6 +285,14 @@ echo
 
 CHECK_QT
 
+echo
+echo ----------------------------------------------
+echo testing CPPUNIT only required for unit testing
+echo ----------------------------------------------
+echo
+
+CHECK_CPPUNIT
+
 if test "X$WITHIHM" = "Xyes"; then
        echo
        echo ---------------------------------------------
@@ -337,14 +343,6 @@ echo
 
 CHECK_HDF5
 
-echo
-echo ---------------------------------------------
-echo testing MED2
-echo ---------------------------------------------
-echo
-
-CHECK_MED2
-
 echo
 echo ---------------------------------------------
 echo Testing OpenCascade
@@ -368,7 +366,18 @@ echo ---------------------------------------------
 echo
 
 echo Configure
-variables="cc_ok boost_ok lex_yacc_ok mpi_ok python_ok swig_ok threads_ok OpenGL_ok qt_ok vtk_ok hdf5_ok med2_ok omniORB_ok occ_ok sip_ok pyqt_ok qwt_ok doxygen_ok graphviz_ok openpbs_ok lsf_ok"
+variables="cc_ok boost_ok lex_yacc_ok mpi_ok python_ok swig_ok threads_ok OpenGL_ok qt_ok vtk_ok hdf5_ok omniORB_ok occ_ok sip_ok pyqt_ok qwt_ok doxygen_ok graphviz_ok"
+for var in $variables
+do
+   eval toto=\$$var
+   if test x$toto != "x"; then
+     printf "   %10s : " `echo \$var | sed -e "s,_ok,,"`
+     eval echo \$$var
+   fi
+done
+echo "---Optional:"
+variables="cppunit_ok openpbs_ok lsf_ok"
  
 for var in $variables
 do
@@ -436,13 +445,14 @@ dnl directory
 
 mkdir -p bin/salome
 cd bin/salome
-for i in $ROOT_SRCDIR/bin/*
+for i in  `find $ROOT_SRCDIR/bin`
 do
-  local_bin=`echo $i | sed -e "s,$ROOT_SRCDIR,.,"`
+  local_bin=`echo $i | sed -e "s,$ROOT_SRCDIR/bin,.,"`
   case "$local_bin" in
         *.in | *~) ;;
-        ./bin/CVS | ./bin/salome) ;;
-        *) $INSTALL $i .; echo $local_bin ;;
+        . | */CVS | */CVS/* | ./salome) ;;
+        ./appliskel |./appliskel/env.d) $INSTALL -d $local_bin ; echo $local_bin ;;
+        *) $INSTALL $i $local_bin; echo $local_bin ;;
   esac
 done
 cd $ROOT_BUILDDIR
@@ -472,3 +482,4 @@ AC_OUTPUT_COMMANDS([ \
 ])
 
 ## do not delete this line
+
diff --git a/doc/INSTALL.txt b/doc/INSTALL.txt
new file mode 100644 (file)
index 0000000..dddcadb
--- /dev/null
@@ -0,0 +1,380 @@
+
+=================================================================
+Installation instructions, up to date for 3.0 version
+=================================================================
+
+You'll find here generic instructions for installing the SALOME2 platform.
+
++-------------------------------------------+
+| **WORK in PROGRESS, INCOMPLETE DOCUMENT** |
++-------------------------------------------+
+
+Summary
+-------
+
+`1. Quick Overview`_
+
+`2. System configuration`_
+
+`3. Third-party dependencies`_
+
+`4. Preparing the shell environment`_
+
+`5. Installing the KERNEL component`_
+
+`6. Installing the SALOME components`_
+
+`7. Runtime`_
+
+`8. Suggestions and advices`_
+
+
+1. Quick Overview
+-----------------
+
+First of all, you have to check (or install if needed) the dependant
+software programs on your system. These programs are:
+
+- common development tools as gcc, automake, autoconf and libtools.
+- third party softwares used in SALOME building or runtime process
+  (python, OCC, VTK, ...)
+
+Further details can be found in sections [2] and [3].
+
+If the dependencies are installed on your system, then you have to set
+your shell environment to get access to the software components
+(cf. [4]. "Preparing the shell environment").
+
+The next step is to install the KERNEL (cf. [5] "Installing KERNEL"):
+
+::
+
+$ mkdir <kernel_build>
+$ mkdir <kernel_install>
+$ cd <kernel_src>
+$ ./build_configure
+$ cd <kernel_build>
+$ <kernel_src>/configure --prefix=<kernel_install>
+$ make
+$ make install
+
+Then, the SALOME components GEOM, MED, VISU, ... can be installed
+with a similar procedure (cf. [6]).
+
+Eventually, the platform can be run by executing the shell script
+runSalome (cf. [7]). Here, somme additionnal variables have to be set
+to describe the SALOME runtime configuration (<COMPONENT>_ROOT_DIR,
+OMNIORB_CONFIG)
+
+The following provides you with specific instructions for each step.
+
+
+2. System configuration
+-----------------------
+
+SALOME is compiled and tested on differents platforms with native packages:
+- Debian sarge
+- Mandrake 10.1
+- ...
+
+If you have another platform, we suggest the following configuration
+for building process:
+
+- gcc-3.3.x or 3.4.x
+- automake-1.7 or more (only aclocal is used)
+- autoconf-2.59
+- libtool-1.5.6
+
+remarks:
+
+- This is the minimum level of automake, autoconf and libtool, if you need
+  to compile all the third party softwares (included OpenCascade 5.2.x).
+
+3. Third-party dependencies
+---------------------------
+
+The SALOME platform relies on a set of third-party softwares. The
+current version depends on the following list
+(versions given here are from Debian Sarge, except OpenCascade, VTK and MED,
+which are not Debian packages):
+
+===================     ===================================================
+CAS-5.2.4              OpenCascade (try binaries,a source patch is needed)
+VTK-4.2.6              VTK 3D-viewer
+PyQt-3.13              Python-Qt Wrapper
+Python-2.3.5           Python interpreter
+SWIG-1.3.24            SWIG library
+boost-1_32_0           C++ library (only include templates are used)
+hdf5-1.6.2             Files Database library
+med-2.2.2              MED Data Format support for file records 
+omniORB-4.0.5          ORB used in SALOME
+qt-x11-free-3.3.3      Qt library
+qwt-4.2                        Graph components for Qt
+sip4-4.1.1             langage binding software 
+===================     ===================================================
+
+And, in order to build the documentation:
+
+===================     ===================================================
+doxygen-1.4.2
+graphviz-2.2.1
+===================     ===================================================
+
+
+Additionnal software may be installed for optional features: 
+
+===================     ===================================================
+netgen4.3 + patch
+tix8.1.4
+openpbs-2.3.16
+lsf-???
+===================     ===================================================
+
+
+
+3.1 To Do
+~~~~~~~~~
+- Instructions for installing these software programs can be found in a
+  special note doc/configuration_examples/install-prerequis.
+- Installation shell scripts are also provided.
+  These scripts have to be adapted to your own configuration.
+
+- See doc/configuration_examples/*
+
+In the following, we assume that all the third-party softwares are
+installed in the same root directory, named <salomeroot>/prerequis.
+Then, your file system should probably look like::
+
+  <salomeroot>/prerequis/Python-2.2.2
+  <salomeroot>/prerequis/omniORB-3.0.5
+  <salomeroot>/prerequis/qt-x11-free-3.0.5
+  ...
+
+
+4. Preparing the shell environment
+----------------------------------
+
+Some variables have to be set to get acces to third-party software
+components (include files, executable, library, ...) during building
+process and runtime.
+
+The shell file prerequis.sh, embedded in the KERNEL source package,
+provides a template for setting those variables. In this example, all the
+softwares are supposed to be installed in the same root directory,
+named here INSTALLROOT.
+
+Copy the prerequis.sh in a working directory and adjust the settings
+to your own configuration. To get the shell prepared, just
+execute the following command in the building shell:
+
+$ source prerequis.sh
+
+(we assume here a ksh or bash mode)
+
+
+5. Installing the KERNEL component
+----------------------------------
+
+We use here the notation <kernel_src> to specify the source directory
+of the KERNEL component. The shell environment is supposed to have
+been set (cf. 4).
+
+Installing the KERNEL from a source package needs three directories:
+
+- the source directory, denoted here by <kernel_src>.
+
+- the build directory, denoted by <kernel_build> in the following. This
+  directory can't be the same directory as <kernel_src>.
+
+- the install directory, denoted by <kernel_install> in the following. This
+  directory can't be the same directory as <kernel_src> or
+  <kernel_build>.
+
+The installing process is:
+
+STEP 1:
+  preparing directories
+
+  create the <kernel_build> and the <kernel_install> directories::
+
+    $ mkdir <kernel_build>
+    $ mkdir <kernel_install>
+
+STEP 2:
+  build configure script
+
+  go to <kernel_src> directory and generate the "configure" script::
+
+    $ cd <kernel_src>
+    $ ./build_configure
+
+  If it doesn't work, check your system automake tools as specified in
+  section [2].
+
+STEP 3:
+  configure the building process
+  go to the build directory and execute the configuration process::
+
+    $ cd <kernel_build>
+    $ <kernel_src>/configure --prefix=<kernel_install>
+
+  Note that <kernel_install> must be an absolute path.
+
+  When the configure process is complete, check the status of
+  third-party softwares detection. You should have a status like::
+
+    ---------------------------------------------
+    Summary
+    ---------------------------------------------
+    Configure
+           cc : yes
+        boost : yes
+     lex_yacc : yes
+       python : yes
+         swig : yes
+      threads : yes
+       OpenGL : yes
+           qt : yes
+          vtk : yes
+         hdf5 : yes
+         med2 : yes
+      omniORB : yes
+          occ : yes
+          sip : yes
+         pyqt : yes
+          qwt : yes
+      doxygen : yes
+     graphviz : no
+      openpbs : no
+          lsf : no
+    Default ORB   : omniORB
+    ----------------------------------------------
+
+If a software get a status "no", then it's not "seen" in the system:
+
+- the software is not installed, or
+- the shell environment is not set correctly. 
+
+In this example, the software programs graphviz, openpbs and lsf are not
+installed (optional for most usages).
+
+
+STEP 4 :
+  Building the binary files
+
+  Execute make in the <kernel_build> directory::
+
+    $ make
+
+
+STEP 5:
+  Installing binary files, scripts and documentation
+
+  Execute install target in the <kernel_build> directory::
+
+    $ make install
+
+
+6. Installing the SALOME components
+-----------------------------------
+
+TInstalling a component <COMPONENT> is done by following the same
+instructions as given for the KERNEL, replacing KERNEL by
+<COMPONENT> (build_configure, configure, make, make install).
+
+You just have to be aware of the dependencies between components:
+
+- MED    depends on KERNEL
+- GEOM   depends on KERNEL
+- SMESH  depends on KERNEL, MED, GEOM
+- VISU   depends on KERNEL, MED
+- SUPERV depends on KERNEL
+
+For example, installing the component SMESH needs the previous
+installation of the KERNEL component, and then the GEOM and MED components.
+
+The building process uses the variables <COMPONENT>_ROOT_DIR to
+localize the dependant components. The variables must be set to the
+install path directory of the components <COMPONENT> (ex:
+KERNEL_ROOT_DIR=<kernel_install>). 
+In the above example, the three variables KERNEL_ROOT_DIR,
+GEOM_ROOT_DIR and MED_ROOT_DIR have to be set before configuring the
+building process of the SMESH component (STEP 3).
+
+
+7. Runtime
+----------
+
+See SALOME_Application_ to define your own configuration of SALOME and run it
+on one or several computers. This is the recommended way of configuration.
+
+.. _SALOME_Application: ./SALOME_Application.html
+
+The following explains the general principles.
+
+To run the SALOME platform, the procedure is:
+
+- set the shell environment to get acces to third-party softwares::
+
+   $ source prerequis.sh
+
+- define the SALOME configuration by setting the whole set of
+  variables <COMPONENT>_ROOT_DIR. Here, you just have to set the
+  kernel and the components you need::
+
+    $ export KERNEL_ROOT_DIR=<kernel_install>
+    $ export MED_ROOT_DIR=<med_install>
+    $ ...
+
+- define the CORBA configuration file by setting the variable
+  OMNIORB_CONFIG. This variable must be set to a writable file
+  path. The file may be arbitrary chosen and doesn't need to exist
+  before running. We suggest::
+
+    $ export OMNIORB_CONFIG=$HOME/.omniORB.cfg
+
+- run the SALOME platform by executing the script runSalome::
+
+    $KERNEL_ROOT_DIR/bin/salome/runSalome
+
+
+8. Suggestions and advices
+--------------------------
+
+For convenience or customization, we suggest the following organisation:
+
+- chose and create a root directory for the SALOME platform, say
+  <salomeroot>.
+
+- install the third-party softwares in a sub-directory "prerequis"
+
+- install the SALOME components in a sub-directory "SALOME2"
+
+- make personnal copies of the files prerequis.sh and runSalome in
+  <salomeroot>::
+
+    $ cp <kernel_src>/prerequis.sh <rundir>/.
+    $ cp <kernel_install>/bin/salome/runSalome <rundir>/.
+
+  Edit the file prerequis.sh and adjust it to your own configuration.
+
+- define the SALOME2 configuration
+
+  This step consists in setting the KERNEL_ROOT_DIR, the whole set of
+  variables <COMPONENT>_ROOT_DIR you need, and the OMNIORB_CONFIG
+  variable.
+
+  We suggest to create a shell file envSalome.sh containing those
+  settings. Then the configuration consists in loading envSalome.sh in
+  the runtime shell::
+
+    $ source envSalome.sh
+
+- When installed with this file organisation, running SALOME is done
+  with the following shell commands::
+
+    $ source <salomeroot>/prerequis.sh
+    $ source <salomeroot>/envSalome.sh
+    $ ./runSalome
+
diff --git a/doc/SALOME_Application.txt b/doc/SALOME_Application.txt
new file mode 100644 (file)
index 0000000..1133e1e
--- /dev/null
@@ -0,0 +1,156 @@
+
+======================================================================
+SALOME Application Concept. Configuration for one or more computers
+======================================================================
+
+*html version of this document is produced with docutils*::
+
+  rest2html < doc.txt > doc.html
+
+This document corresponds to SALOME2 3.1. (alpha version)
+
++-------------------------------------------+
+| **WORK in PROGRESS, INCOMPLETE DOCUMENT** |
++-------------------------------------------+
+
+The following explains how to configure your own application with your list of
+modules, how to define and run this application on one or more computers.
+
+Summary
+-------
+
+`1. General principles`_
+
+`2. Application Directory`_
+
+`2.1 Proposal for env.d scripts`_
+
+`2.2 User run scripts`_
+
+`2.3 SALOME internal run script`_
+
+`2.4 Other configuration files`_
+
+1. General principles
+---------------------
+
+A SALOME application is defined by a set of modules (GEOM, SMESH, ASTER...).
+
+A SALOME User can define several SALOME Applications. These applications are
+runnable from the same user account. These applications may share the same 
+KERNEL and modules. Thus, the application configuration is independant of
+KERNEL and must not be put in KERNEL_ROOT_DIR.
+
+Furthermore, prerequisites may not be the same on all the applications.
+
+A SALOME Session can run on a several computers.
+
+Binary modules and prerequisites are installed on the different computers.
+There is no need to have all the modules on each computer (the minimum is
+KERNEL).
+
+There is no need of standardization or centralised information on the details
+of configuration on each computer (PATH, LD_LIBRARY_PATH, environment
+variables) provided the application modules are version - compatible. Details
+of configuration stay private to the computer, and are held by scripts on each
+computer.
+
+There is no hierarchy between the computers (for example only one master
+computer used to launch application).
+
+The SALOME user has an account on all the computers. Access between
+account@computer is via rsh or ssh and must be configured for use without
+password (key exchange for ssh). Account may be different on each
+computer.
+
+2. Application Directory
+------------------------
+
+The script createAppli.sh in ${KERNEL_ROOT_DIR}/bin/salome creates an
+application directory with the given path in parameter. ${APPLI} is a path 
+relative to ${HOME}.
+
+The directory is only a skeleton, the user has to edit several files to
+configure his own application.
+
+Directory ${APPLI} must be created on each computer of the application.
+The easiest way is to use the same relative path (to ${HOME}) on each computer.
+(Sometimes it is not possible to use the same path everywhere, for instance
+when ${HOME} is shared with NFS, so it is possible to define different path
+following the computers).
+
+The ${APPLI} directory contains scripts for environment and runs. Environment
+scripts must be configured (by the user) on each computer. All the environment
+scripts are in the ${APPLI}/env.d directory. 
+
+The script  ${APPLI}/envd sources **all** the files in ${APPLI}/env.d in
+alphanumeric order (after edition, think to remove backup files). the envd
+script is used by run scripts.
+
+2.1 Proposal for env.d scripts
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+Each user can define his own configuration for these scripts, following the
+above rules. The following is only a proposal.
+
+atFirst.sh
+    Sets the computer configuration not directly related to SALOME,
+    like useful tools, default PATH.
+
+envProducts.sh
+    Sets the SALOME prerequisites.
+
+envSALOME.sh
+    Sets all the MODULE_ROOT_DIR that can be used in the SALOME application.
+
+2.2 User run scripts
+~~~~~~~~~~~~~~~~~~~~
+
+The SALOME user can use 4 scripts:
+
+runAppli
+   Launches a SALOME Session
+   (similar to ${KERNEL_ROOT_DIR}/bin/salome/runSalome but with a different
+   name to avoid confusions).
+
+runSession
+   Launches a shell script in the SALOME application environment, with access
+   to the current SALOME session (naming service), if any.
+   Without arguments, the script is interactive. With arguments, the script
+   executes the command in the SALOME application environment.
+
+runConsole
+   Gives a python console connected to the current SALOME Session.
+   It is also possible to use runSession, then python.
+
+runTests
+   Similar to runSession, used for unit testing. runSession tries to use an
+   already existing naming service definition from a running session (hostname
+   and port number), runTests defines a new configuration for naming service
+   (new port number).
+
+2.3 SALOME internal run script
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+For remote calls, SALOME uses one script.
+
+runRemote.sh
+   This script is mainly used to launch containers. The first 2 arguments
+   define the hostname and port userd for naming service, the remaining
+   arguments define the command to execute.
+
+2.4 Other configuration files
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+SalomeApp.xml
+   This file is similar to the default given in $GUI_ROOT_DIR
+
+CatalogRessources.xml
+   This files describes all the computer the application can use. The given
+   example is minimal and suppose ${APPLI} is the same relative path
+   to ${HOME}, on all the computers. A different directory can be set on a
+   particular computer with a line::
+
+       appliPath="my/specific/path/on/this/computer"
+
+
+
diff --git a/doc/UnitTests.txt b/doc/UnitTests.txt
new file mode 100644 (file)
index 0000000..6b5808d
--- /dev/null
@@ -0,0 +1,157 @@
+
+=================================================================
+Source code structuration and Unit Tests
+=================================================================
+
+You will find here general information on code directories structure,
+unit tests associated to the different kind of classes, and how to run
+the unit tests.
+
++-------------------------------------------+
+| **WORK in PROGRESS, INCOMPLETE DOCUMENT** |
++-------------------------------------------+
+
+1. SALOME KERNEL source code structuration
+==========================================
+
+1.1 General structure of KERNEL_SRC
+-----------------------------------
+
+KERNEL_SRC
+   Some README files and configuration tools for build
+
+KERNEL_SRC/adm_local
+   Part of the configuration files
+
+KERNEL_SRC/bin
+   Python and shell scripts used at run time.
+
+KERNEL_SRC/doc
+   Kit for end user documentation production: public interfaces, graphic,
+   Python, CORBA. Developper documentation.
+
+KERNEL_SRC/examples
+   To be removed.
+
+KERNEL_SRC/idl
+   All CORBA interfaces from KERNEL are regrouped here.
+
+KERNEL_SRC/resources
+   Configuration files for servers (examples). Icons for Graphic interface
+   (to be removed ?)
+
+KERNEL_SRC/salome_adm
+   Makefile includes and configuration files (M4 macros)
+
+KERNEL_SRC/src
+   The source code (C++ and Python)
+   
+
+1.2 Directory src: C++ and Python source code
+---------------------------------------------
+
+1.2.1 Basic services non related to CORBA
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+Basics
+  A set of general purpose C++ services.
+
+SALOMELocalTrace
+  A multithread trace system that allows message tracing on standard error
+  or a file. 
+
+CASCatch
+  Exceptions and signal handler.
+
+HDFPersist
+  A C++ interface to HDF.
+
+1.2.2 Basic CORBA services
+~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+Logger
+  A CORBA server that collects the trace messages from differents CORBA 
+  process. 
+
+SALOMETraceCollector
+  A multithread trace system derived from SALOMELocalTrace, that sends messages
+  to Logger server via CORBA.
+
+Utils
+  A set of general purpose services related to CORBA, such as basic CORBA
+  exception system.
+
+NamingService
+  C++ and Python interfaces to name, store and retrieve CORBA objects
+
+GenericObj
+  A generic CORBA interface for CORBA objects, to count distributed references,
+  and to allow destruction by client. 
+
+1.2.3 Miscellaneous CORBA servers
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+Registry
+
+ModuleCatalog
+
+DataTypeCatalog
+
+RessourcesCatalog
+
+ResourcesManager
+
+Notification
+
+NOTIFICATION_SWIG
+
+1.2.4 CORBA Containers for SALOME Modules
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+Container
+
+TestContainer
+
+LifeCycleCORBA
+
+LifeCycleCORBA_SWIG
+
+1.2.5 STUDY server and related interfaces and tools
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+SALOMEDSClient
+
+TOOLSDS
+
+SALOMEDSImpl
+
+SALOMEDS
+
+2. Tools and principles used for Unit testing
+=============================================
+
+**TO BE COMPLETED**
+
+Unit Testing rely on cppunit package for C++ testing, and on unittest module
+for Python. See these products for general principles of unit testing.
+
+The cppunit package is optional. When the prerequisite is detected, the unit
+tests are compiled.
+
+Unit Tests sources are in directories Test under the src/directories
+containing the classes to test.
+
+Test are ordered following the order of directories given above.
+
+Tests can be run as a whole, or for a particular directory. In this case, only
+a partial test is run (the classes to test, and the classes used, i.e. the 
+preceding test directories).
+
+
+Today, only some tests are written as an example. There are not yet python
+scripts in KERNEL_SRC, but it's a matter of days, there are working scripts
+to test LifeCycleCORBA_SWIG interface.
+
+
+
+
diff --git a/doc/salome/Parallelisme_dans_Salome.pdf b/doc/salome/Parallelisme_dans_Salome.pdf
new file mode 100644 (file)
index 0000000..7729857
Binary files /dev/null and b/doc/salome/Parallelisme_dans_Salome.pdf differ
diff --git a/doc/salome/Parallelisme_dans_Salome.ps b/doc/salome/Parallelisme_dans_Salome.ps
new file mode 100644 (file)
index 0000000..8891de2
--- /dev/null
@@ -0,0 +1,15829 @@
+%!PS-Adobe-3.0
+%%Title: Microsoft Word - Parallelisme_dans_PAL.doc
+%%Creator: Windows NT 4.0
+%%CreationDate: 11:3 7/10/2002
+%%Pages: (atend)
+%%BoundingBox: 14 26 581 827
+%%LanguageLevel: 2
+%%DocumentNeededFonts: (atend)
+%%DocumentSuppliedFonts: (atend)
+%%EndComments
+%%BeginExitServer: (0)
+%%Resolution: 300
+(0)
+
+%%EndExitServer
+%%BeginProlog
+\r
+%%BeginResource: procset NTPSOct95\r
+/NTPSOct95 100 dict dup begin/bd{bind def}bind def/ld{load def}bd/ed{exch def}\r
+bd/a{currentpoint}bd/c/curveto ld/d/dup ld/e/eofill ld/f/fill ld/tr/translate\r
+ld/gr/grestore ld/gs/gsave ld/j/setlinejoin ld/L/lineto ld/M/moveto ld/n\r
+/newpath ld/cp/closepath ld/rm/rmoveto ld/sl/setlinewidth ld/sd/setdash ld/g\r
+/setgray ld/r/setrgbcolor ld/s/stroke ld/t/show ld/aw/awidthshow ld/im\r
+/imagemask ld/MS{moveto show}bd/SF{findfont exch scalefont setfont}bd/SM{cmtx\r
+setmatrix}bd/MF{findfont exch makefont setfont}bd/CM{/cmtx matrix currentmatrix\r
+def}bd/B{M exch dup 0 rlt exch 0 exch rlt neg 0 rlt}bd/CB{B cp eoclip}bd/EA{1\r
+index 0/G0 put 4 string 1 1 4 -1 roll{3 copy neg exch cvs dup 0 71 put cvn 3 -1\r
+roll exch put}for pop}bd/rlt/rlineto ld/L2?/languagelevel where{pop\r
+languagelevel 2 ge}{false}ifelse def end def \r
+%%EndResource\r
+%%EndProlog
+%%BeginSetup
+[{0
+/languagelevel where{pop languagelevel 2 ge}{false}ifelse
+{1 dict dup/JobTimeout 4 -1 roll put setuserparams}
+{statusdict/setjobtimeout get exec}ifelse
+}stopped cleartomark
+[{300
+/languagelevel where{pop languagelevel 2 ge}{false}ifelse
+{1 dict dup/WaitTimeout 4 -1 roll put setuserparams}
+{statusdict/waittimeout 3 -1 roll put}ifelse
+}stopped cleartomark
+/#copies 1 def
+[{
+%%BeginFeature: *OutputMode Standard
+\r
+<<\r
+   /HWResolution /Default /OutputDevice findresource /HWResolution get 1 get\r
+>> setpagedevice
+%%EndFeature
+} stopped cleartomark
+[{
+%%BeginFeature: *PageSize A4
+<<  /PageSize [595 842] /ImagingBBox null\r
+  >>  setpagedevice
+%%EndFeature
+} stopped cleartomark
+[{
+%%BeginFeature: *TKCollate False
+\r
+  << \r
+    /Collate false\r
+  >>  setpagedevice
+%%EndFeature
+} stopped cleartomark
+[{
+%%BeginFeature: *TKColor VividColor
+\r
+  << \r
+    /DeviceRenderingInfo << \r
+      /Type 2\r
+      /VirtualColorDevice << \r
+        /Type 3\r
+        /ColorTransform /TekBlue\r
+      >> \r
+    >> \r
+   >>  setpagedevice
+%%EndFeature
+} stopped cleartomark
+[{
+%%BeginFeature: *TKCheckPrint False
+
+%%EndFeature
+} stopped cleartomark
+[{
+%%BeginFeature: *TKImageSmoothing False
+\r
+  false /RRCustomProcs /ProcSet findresource /setforceinterpolate get exec
+%%EndFeature
+} stopped cleartomark
+[{
+%%BeginFeature: *Option1 False
+
+%%EndFeature
+} stopped cleartomark
+[{
+%%BeginFeature: *Option2 None
+
+%%EndFeature
+} stopped cleartomark
+[{
+%%BeginFeature: *Option3 False
+
+%%EndFeature
+} stopped cleartomark
+%%EndSetup
+NTPSOct95 begin
+%%Page: 1 1
+NTPSOct95 /PageSV save put
+14.449 827.879 translate 72 300 div dup neg scale
+0 0 transform .25 add round .25 sub exch .25 add round .25 sub exch itransform translate
+%%IncludeFont: Times-Roman
+[25 0 0 -25 0 0]/Times-Roman MF
+gs
+n
+12 11 176 3326 CB
+( )176 3349 MS
+gr
+1 j
+1 setlinecap
+72 sl
+0.375 g
+n
+1134 250 M
+1134 219 1107 194 1072 194 c
+1038 194 1010 219 1010 250 c
+1010 280 1038 305 1072 305 c
+1107 305 1134 280 1134 250 c
+cp
+CM 0.195 0.176 scale
+s
+SM
+71 sl
+n
+1345 249 M
+1345 219 1317 194 1283 194 c
+1248 194 1221 219 1221 249 c
+1221 279 1248 304 1283 304 c
+1317 304 1344 279 1345 249 c
+cp
+CM 0.195 0.176 scale
+s
+SM
+n
+153 28 1100 214 B
+1 g
+f
+1 sl
+n
+155 30 1099 213 B
+cp
+s
+71 sl
+0.375 g
+n
+1240 246 M
+1240 215 1212 190 1178 190 c
+1143 190 1116 215 1116 246 c
+1116 276 1143 301 1178 301 c
+1212 301 1239 276 1240 246 c
+cp
+gs
+1 g
+e
+gr
+CM 0.195 0.176 scale
+s
+SM
+n
+1116 246 M
+1237 246 L
+CM 0.195 0.176 scale
+s
+SM
+n
+43 21 1220 254 B
+1 g
+f
+1 sl
+n
+45 23 1219 253 B
+cp
+s
+n
+1281 238 M
+1256 238 L
+1210 183 L
+1242 184 L
+1279 238 L
+1281 238 L
+cp
+gs
+e
+gr
+s
+n
+1076 235 M
+1100 235 L
+1147 180 L
+1115 181 L
+1077 235 L
+1076 235 L
+cp
+gs
+e
+gr
+s
+0.375 g
+n
+1108 200 M
+1108 197 1104 195 1101 195 c
+1097 195 1094 197 1094 200 c
+1094 203 1097 206 1101 206 c
+1104 206 1108 203 1108 200 c
+cp
+gs
+e
+gr
+s
+n
+1260 200 M
+1260 196 1256 194 1253 194 c
+1249 194 1246 196 1246 200 c
+1246 203 1249 206 1253 206 c
+1256 206 1260 203 1260 200 c
+cp
+gs
+e
+gr
+s
+72 sl
+n
+1350 197 M
+1350 302 L
+CM 0.195 0.176 scale
+s
+SM
+[29 0 0 -29 0 0]/Times-Roman MF
+0 g
+( )1364 318 MS
+[67 0 0 -67 0 0]/Times-Roman MF
+/IsChar{exch/CharStrings get exch known}bd/MapCh{3 -1 roll/Encoding get 3 1\r
+roll put}bd/MapDegree{dup 16#b0 exch/degree IsChar{/degree}{/ring}ifelse MapCh}\r
+bd/MapBB{dup 16#a6 exch/brokenbar IsChar{/brokenbar}{/bar}ifelse MapCh}bd\r
+/reencode{findfont begin currentdict dup length dict begin{1 index/FID ne{def}\r
+{pop pop}ifelse}forall/FontName exch def dup length 0 ne{/Encoding Encoding 256\r
+array copy def 0 exch{dup type/nametype eq{Encoding 2 index 2 index put pop 1\r
+add}{exch pop}ifelse}forall}if pop currentdict dup end end/FontName get exch\r
+definefont dup MapDegree MapBB}bd/LATENC[0/grave/acute/circumflex/tilde/macron\r
+/breve/dotaccent/dieresis/ring/cedilla/hungarumlaut/ogonek/caron/dotlessi/fi/fl\r
+/Lslash/lslash/Zcaron/zcaron/minus/.notdef/.notdef/.notdef/.notdef/.notdef\r
+/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/space/exclam/quotedbl\r
+/numbersign/dollar/percent/ampersand/quotesingle/parenleft/parenright/asterisk\r
+/plus/comma/hyphen/period/slash/zero/one/two/three/four/five/six/seven/eight\r
+/nine/colon/semicolon/less/equal/greater/question/at/A/B/C/D/E/F/G/H/I/J/K/L/M\r
+/N/O/P/Q/R/S/T/U/V/W/X/Y/Z/bracketleft/backslash/bracketright/asciicircum\r
+/underscore/grave/a/b/c/d/e/f/g/h/i/j/k/l/m/n/o/p/q/r/s/t/u/v/w/x/y/z/braceleft\r
+/bar/braceright/asciitilde/.notdef/.notdef/.notdef/quotesinglbase/florin\r
+/quotedblbase/ellipsis/dagger/daggerdbl/circumflex/perthousand/Scaron\r
+/guilsinglleft/OE/.notdef/.notdef/.notdef/.notdef/quoteleft/quoteright\r
+/quotedblleft/quotedblright/bullet/endash/emdash/tilde/trademark/scaron\r
+/guilsinglright/oe/.notdef/.notdef/Ydieresis/.notdef/exclamdown/cent/sterling\r
+/currency/yen/brokenbar/section/dieresis/copyright/ordfeminine/guillemotleft\r
+/logicalnot/hyphen/registered/macron/degree/plusminus/twosuperior/threesuperior\r
+/acute/mu/paragraph/periodcentered/cedilla/onesuperior/ordmasculine\r
+/guillemotright/onequarter/onehalf/threequarters/questiondown/Agrave/Aacute\r
+/Acircumflex/Atilde/Adieresis/Aring/AE/Ccedilla/Egrave/Eacute/Ecircumflex\r
+/Edieresis/Igrave/Iacute/Icircumflex/Idieresis/Eth/Ntilde/Ograve/Oacute\r
+/Ocircumflex/Otilde/Odieresis/multiply/Oslash/Ugrave/Uacute/Ucircumflex\r
+/Udieresis/Yacute/Thorn/germandbls/agrave/aacute/acircumflex/atilde/adieresis\r
+/aring/ae/ccedilla/egrave/eacute/ecircumflex/edieresis/igrave/iacute\r
+/icircumflex/idieresis/eth/ntilde/ograve/oacute/ocircumflex/otilde/odieresis\r
+/divide/oslash/ugrave/uacute/ucircumflex/udieresis/yacute/thorn/ydieresis]def\r
+LATENC /_Times-Roman /Times-Roman reencode
+[67 0 0 -67 0 0]/_Times-Roman MF
+(D)568 403 MS (I)617 403 MS (R)637 403 MS (E)682 403 MS (C)723 403 MS (T)768 403 MS (I)809 403 MS (O)830 403 MS (N)878 403 MS ( )926 403 MS (D)943 403 MS (E)991 403 MS ( )1032 403 MS (L)1050 403 MS (\222)1089 403 MS (\311)1111 403 MS
+(N)1152 403 MS (E)1200 403 MS (R)1241 403 MS (G)1286 403 MS (I)1335 403 MS (E)1355 403 MS ( )1396 403 MS (N)1413 403 MS (U)1461 403 MS (C)1509 403 MS (L)1555 403 MS (\311)1594 403 MS (A)1636 403 MS (I)1685 403 MS (R)1705 403 MS (E)1750 403 MS
+( )1791 403 MS
+[58 0 0 -58 0 0]/Times-Roman MF
+LATENC /_Times-Roman /Times-Roman reencode
+[58 0 0 -58 0 0]/_Times-Roman MF
+(D)300 498 MS (\311)342 498 MS (P)377 498 MS (A)410 498 MS (R)451 498 MS (T)491 498 MS (E)526 498 MS (M)561 498 MS (E)614 498 MS (N)649 498 MS (T)692 498 MS ( )727 498 MS (M)742 498 MS (O)794 498 MS (D)836 498 MS (\311)878 498 MS
+(L)914 498 MS (I)949 498 MS (S)968 498 MS (A)1001 498 MS (T)1043 498 MS (I)1079 498 MS (O)1098 498 MS (N)1140 498 MS ( )1182 498 MS (D)1197 498 MS (E)1239 498 MS ( )1274 498 MS (S)1289 498 MS (Y)1322 498 MS (S)1364 498 MS (T)1396 498 MS
+(\310)1432 498 MS (M)1467 498 MS (E)1519 498 MS (S)1555 498 MS ( )1587 498 MS (E)1602 498 MS (T)1638 498 MS ( )1673 498 MS (S)1688 498 MS (T)1720 498 MS (R)1755 498 MS (U)1794 498 MS (C)1836 498 MS (T)1876 498 MS (U)1911 498 MS (R)1953 498 MS
+(E)1992 498 MS (S)2028 498 MS
+%%IncludeFont: Times-Bold
+[58 0 0 -58 0 0]/Times-Bold MF
+( )2060 498 MS
+[58 0 0 -58 0 0]/_Times-Roman MF
+(S)336 590 MS (E)368 590 MS (R)403 590 MS (V)442 590 MS (I)485 590 MS (C)504 590 MS (E)543 590 MS ( )578 590 MS (F)594 590 MS (L)626 590 MS (U)661 590 MS (I)703 590 MS (D)722 590 MS (E)765 590 MS (S)800 590 MS ( )832 590 MS
+(N)847 590 MS (U)889 590 MS (M)931 590 MS (E)984 590 MS
+(R)1019 590 MS (I)1058 590 MS (Q)1077 590 MS (U)1119 590 MS (E)1162 590 MS (S)1197 590 MS (,)1229 590 MS ( )1244 590 MS (M)1259 590 MS (O)1311 590 MS (D)1353 590 MS (E)1395 590 MS (L)1431 590 MS (I)1466 590 MS (S)1485 590 MS (A)1518 590 MS
+(T)1560 590 MS (I)1595 590 MS (O)1615 590 MS (N)1657 590 MS
+( )1699 590 MS (E)1714 590 MS (T)1749 590 MS ( )1784 590 MS (E)1800 590 MS (T)1835 590 MS (U)1870 590 MS (D)1913 590 MS (E)1955 590 MS (S)1991 590 MS
+( )2023 590 MS
+(L)414 657 MS (A)449 657 MS (B)491 657 MS (O)530 657 MS (R)572 657 MS (A)612 657 MS (T)653 657 MS (O)689 657 MS (I)731 657 MS (R)750 657 MS (E)789 657 MS ( )824 657 MS (D)839 657 MS (E)882 657 MS ( )917 657 MS (G)932 657 MS
+(E)974 657 MS (N)1009 657 MS (I)1052 657 MS (E)1071 657 MS
+( )1106 657 MS (L)1122 657 MS (O)1157 657 MS (G)1199 657 MS (I)1241 657 MS (C)1260 657 MS (I)1300 657 MS (E)1319 657 MS (L)1355 657 MS ( )1389 657 MS (E)1405 657 MS (T)1440 657 MS ( )1475 657 MS (D)1490 657 MS (E)1533 657 MS ( )1568 657 MS
+(S)1583 657 MS (I)1615 657 MS (M)1634 657 MS (U)1686 657 MS
+(L)1729 657 MS (A)1764 657 MS (T)1806 657 MS (I)1842 657 MS (O)1861 657 MS (N)1903 657 MS
+( )1945 657 MS
+( )1180 724 MS
+/Adobe_WinNT_Driver_Gfx 175 dict dup begin
+\r
+%%BeginResource: file Adobe_WinNT_Utils 2.0 0\r
+/|/def load def/,/load load |/~/exch load def/?/ifelse load def/!/pop load def\r
+/`/begin load def/^/index load def/@/dup load def/+/translate load def/$/roll\r
+load def/U/userdict load def/-/rlineto load def/&/currentdict load def/:/gsave\r
+load def/;/grestore load def/F/false load def/T/true load def/N/newpath load\r
+def/E/end load def/Ac/arc load def/An/arcn load def/A/ashow load def/D\r
+/awidthshow load def/C/closepath load def/O/eofill load def/I/lineto load def\r
+/-C/rcurveto load def/-M/rmoveto load def/+S/scale load def/Ji/setfont load def\r
+/Lc/setlinecap load def/Lj/setlinejoin load def/Lw/setlinewidth load def/S/show\r
+load def/LH/showpage load def/K/stroke load def/W/widthshow load def/b{bind\r
+def}bind def/DefIf_B{dup not{userdict/DefIf_save save put}if userdict\r
+/DefIf_bool 2 index put}b/DefIf_El{if userdict/DefIf_bool get not dup{userdict\r
+/DefIf_save get restore}if}b/DefIf_E{DefIf_El pop}b/self currentdict def\r
+/reinitialize{[/TextInit/GraphInit/UtilsInit counttomark{dup where{self eq}\r
+{false}ifelse{cvx exec}{pop}ifelse}repeat cleartomark}b/initialize{begin\r
+userdict begin/ADO_mxRot exch def/TextInitialised? false def end reinitialize}b\r
+/terminate{pop{currentdict self eq{exit}{end}ifelse}loop end}b/dsnap{dtransform\r
+round exch round exch idtransform}b<04>cvn{}def/sg{setgray}b/sco{setrgbcolor}b\r
+/sgco{{sg}{sco}ifelse}b/rp{4 2 roll M 1 index 0 rlt 0 exch rlt neg 0 rlt}b \r
+%%EndResource\r
+\r
+%%BeginResource: file Adobe_WinNT_Utils_L1 2.0 0\r
+L2? not DefIf_B{/rf{newpath rp fill}b}DefIf_E \r
+%%EndResource\r
+\r
+%%BeginResource: file Adobe_WinNT_Utils_L2 2.0 0\r
+L2? DefIf_B{/colspA/DeviceGray def/colspABC/DeviceRGB def/setAorABC{{colspA}\r
+{colspABC}ifelse setcolorspace}b/rf/rectfill load def/UtilsInit{false\r
+setglobal}b}DefIf_E \r
+%%EndResource\r
+end def
+[1.000 0 0 1.000 0 0] Adobe_WinNT_Driver_Gfx dup /initialize get exec
+Adobe_WinNT_Driver_Gfx begin
+\r
+%%BeginResource: file Adobe_WinNT_BW_Images 2.0 0\r
+/iw 0 def/ih 0 def/im_save 0 def/setupimageproc 0 def/polarity 0 def/smoothflag\r
+0 def/mystring 0 def/bpc 0 def/setup1asciiproc{[currentfile mystring\r
+/readhexstring cvx/pop cvx]cvx bind}b/setup1binaryproc{[currentfile mystring\r
+/readstring cvx/pop cvx]cvx bind}b/setup2asciiproc{currentfile/ASCII85Decode\r
+filter/RunLengthDecode filter}b/setup2binaryproc{currentfile/RunLengthDecode\r
+filter}b/mycolorspace{colspABC}def/myimagedict{/myimagedict 10 dict def\r
+myimagedict dup begin/ImageType 1 def/MultipleDataSource false def end}b\r
+/imageprocarray[/setup1binaryproc/setup1asciiproc/setup2binaryproc\r
+/setup2asciiproc]def/L2Polarity{{[1 0]}{[0 1]}ifelse}b/beginimage{/im_save save\r
+def imageprocarray exch get/setupimageproc exch load def L2Polarity/polarity\r
+exch def/smoothflag exch def translate/dx 2 index def/dy 1 index abs def scale\r
+/mystring exch string def/bpc exch def/ih exch def/iw exch def}b/endimage\r
+{im_save restore}b/1bitmaskimage{sgco myimagedict dup begin/Width iw def/Height\r
+ih def/Decode polarity def/ImageMatrix[iw 0 0 ih 0 0]def/DataSource\r
+setupimageproc def/BitsPerComponent 1 def/Interpolate smoothflag def end\r
+imagemask}b/1bitcopyimage{sgco 0 0 1 dx div 1 dy div 1 2 index sub 1 2 index\r
+sub L2?{4}{6}ifelse -2 roll pop pop rf 1bitmaskimage}b/1bitbwcopyimage{0 true 1\r
+true 1bitcopyimage}b \r
+%%EndResource\r
+\r
+%%BeginResource: file Adobe_WinNT_BW_Images_L1 2.0 0\r
+L2? not DefIf_B{/setup2asciiproc{[/Level2ImagesError load aload pop true\r
+FatalErrorIf}b/setup2binaryproc/setup2asciiproc load def/L2Polarity{}def\r
+/1bitmaskimage{sgco iw ih polarity[iw 0 0 ih 0 0]setupimageproc imagemask}b}\r
+DefIf_E \r
+%%EndResource\r
+\r
+%%BeginResource: file Adobe_WinNT_Co_Images_L1 2.0 0\r
+L2? not DefIf_B{/isdefined{where dup{exch pop}if}b/ncolors 1 def/colorimage\r
+where{pop true}{false}ifelse{/ncolors 0 statusdict begin/processcolors where\r
+{pop pop processcolors}{/deviceinfo where{pop deviceinfo/Colors known{pop\r
+{deviceinfo/Colors get}}if}if}ifelse end def ncolors 0 ne{/colorimage isdefined\r
+/setcolortransfer isdefined/currentcolortransfer isdefined/currentcmykcolor\r
+isdefined and and and not{/ncolors 0 def}if}if}if ncolors dup 1 ne exch dup 3\r
+ne exch 4 ne and and{/ncolors 0 def}if ncolors 1 eq DefIf_B{/expandbw\r
+{expandfactor mul round cvi bwclut exch get 255 div}b/doclutimage{pop/bwclut\r
+exch def/expandfactor 1 bpc{2 mul}repeat 1 sub def[/expandbw load/exec load dup\r
+currenttransfer exch]cvx bind settransfer iw ih bpc[iw 0 0 ih 0 0]\r
+setupimageproc image}b}DefIf_E ncolors dup 3 eq exch 4 eq or DefIf_B{/nullproc{\r
+{}}def/concatutil{/exec load 7 -1 roll/exec load}b/defsubclut{1 add getinterval\r
+def}b/spconcattransfer{/Dclut exch def/Cclut exch def/Bclut exch def/Aclut exch\r
+def/ncompute exch load def currentcolortransfer[{Aclut ncompute}concatutil]cvx[\r
+{Bclut ncompute}concatutil]cvx[{Cclut ncompute}concatutil]cvx[{Dclut ncompute}\r
+concatutil]cvx setcolortransfer}b/setuprgbcluts{/bit3x rgbclut length 3 sub def\r
+/bit1x bit3x 3 idiv def/rclut rgbclut def/gclut rclut 1 bit3x defsubclut/bclut\r
+rclut 2 bit3x defsubclut}b}DefIf_E ncolors 3 eq DefIf_B{/3compute{exch bit3x\r
+mul round cvi get 255 div}b/doclutimage{/rgbclut exch def pop setuprgbcluts\r
+/3compute rclut gclut bclut dup spconcattransfer iw ih bpc[iw 0 0 ih 0 0]\r
+[setupimageproc/exec load/dup load dup]cvx nullproc nullproc true 3 colorimage}\r
+b}DefIf_E ncolors 4 eq DefIf_B{/ftoint{1 exch sub 255 mul round cvi}b/stuffclut\r
+{cmykindex 3 -1 roll put}b/4compute{exch bit4x mul round cvi get 255 div}b\r
+/invalidcolortable? true def/computecmykclut{setuprgbcluts/bit4x rgbclut length\r
+3 idiv 4 mul 4 sub def/cmykclut bit4x 4 add string def/cclut cmykclut def/mclut\r
+cclut 1 bit4x defsubclut/yclut cclut 2 bit4x defsubclut/kclut cclut 3 bit4x\r
+defsubclut/cmykindex 0 def 0 1 bit1x{dup/cmykindex exch bit1x exch sub 4 mul\r
+def 3 mul dup rclut exch get 255 div exch dup gclut exch get 255 div exch bclut\r
+exch get 255 div setrgbcolor currentcmykcolor ftoint kclut stuffclut ftoint\r
+yclut stuffclut ftoint mclut stuffclut ftoint cclut stuffclut}for}b/doclutimage\r
+{/rgbclut exch def pop invalidcolortable?{computecmykclut}if/4compute cclut\r
+mclut yclut kclut spconcattransfer iw ih bpc[iw 0 0 ih 0 0][setupimageproc/exec\r
+load/dup load dup dup]cvx nullproc nullproc nullproc true 4 colorimage}b}\r
+DefIf_E ncolors 0 eq DefIf_B{/lookupandstore{3 mul 3 getinterval putinterval\r
+exch 3 add exch 3 copy}b/8lookup/lookupandstore load def/4lookup{/byte 1 index\r
+def -4 bitshift lookupandstore byte 15 and lookupandstore}b/2lookup{/byte 1\r
+index def -6 bitshift lookupandstore byte -4 bitshift 3 and lookupandstore byte\r
+-2 bitshift 3 and lookupandstore byte 3 and lookupandstore}b/1lookup{/byte exch\r
+def -7 1 0{byte exch bitshift 1 and lookupandstore}bind for}b/colorexpand\r
+{mystringexp 0 rgbclut 3 copy 7 -1 roll/mylookup load forall pop pop pop pop\r
+pop}b/createexpandstr{/mystringexp exch mystring length mul string def}b\r
+/doclutimage{/rgbclut exch def pop/mylookup bpc 8 eq{3 createexpandstr/8lookup}\r
+{bpc 4 eq{6 createexpandstr/4lookup}{bpc 2 eq{12 createexpandstr/2lookup}{24\r
+createexpandstr/1lookup}ifelse}ifelse}ifelse load def iw ih 8[iw 0 0 ih 0 0]\r
+[setupimageproc/exec load/colorexpand load/exec load]cvx false 3 colorimage}b}\r
+DefIf_E/colorimage where{pop true}{false}ifelse DefIf_B{/do24image{iw ih 8[iw 0\r
+0 ih 0 0]setupimageproc false 3 colorimage}b}DefIf_El{/rgbtogray{/str exch def\r
+/len str length def/smlen len 3 idiv def/rstr str def/gstr str 1 len 1 sub\r
+getinterval def/bstr str 2 len 2 sub getinterval def str dup 0 1 smlen 1 sub\r
+{dup 3 mul rstr 1 index get .3 mul gstr 2 index get .59 mul add bstr 3 -1 roll\r
+get .11 mul add round cvi put dup}for pop 0 smlen getinterval}b/do24image{iw ih\r
+8[iw 0 0 ih 0 0][setupimageproc/exec load/rgbtogray load/exec load]cvx bind\r
+image}b}DefIf_E/doNimage{bpc 24 eq{do24image}{iw ih bpc[iw 0 0 ih 0 0]\r
+setupimageproc image}ifelse}b}DefIf_E \r
+%%EndResource\r
+\r
+%%BeginResource: file Adobe_WinNT_Co_Images_L2 2.0 0\r
+L2? DefIf_B{/doclutimage{/rgbclut exch def pop/hival 1 bpc{2 mul}repeat 1 sub\r
+def[/Indexed colspABC hival rgbclut]setcolorspace myimagedict dup begin/Width\r
+iw def/Height ih def/Decode[0 hival]def/ImageMatrix[iw 0 0 ih 0 0]def\r
+/DataSource setupimageproc def/BitsPerComponent bpc def/Interpolate smoothflag\r
+def end image}b/doNimage{bpc 24 eq{colspABC}{colspA}ifelse setcolorspace\r
+myimagedict dup begin/Width iw def/Height ih def/Decode bpc 24 eq{[0 1 0 1 0 1]\r
+}{[0 1]}ifelse def/ImageMatrix[iw 0 0 ih 0 0]def/DataSource setupimageproc def\r
+/BitsPerComponent bpc 24 eq{8}{bpc}ifelse def/Interpolate smoothflag def end\r
+image}b}DefIf_E \r
+%%EndResource\r
+end reinitialize
+530 526 1 67 957 949 701 763 false true 3 beginimage
+doNimage
+^]+;L^]+;L^]+;L^]+;L^]+;L^]+;L^]+;L^]+;L^]+;L^]+;L^]+;L^]+;L^]+;L^]+;L^]+;L^]+;L^]+;L^]+;L^]+;L^]+;L^]+;L^]+;L^]+;L^]+;LoD\gfp&>#Qg]%8hoD\gdp&>#Ig]%8hoD\gcp&>$0g]%8hoD\jhJ+imB_qY1k_"7R,r."G?!5[Fi!5S4+!WITBrrD$4rrBk+rrN*`pAY-Ng]%8hoD\jj5PG*WnD!sC_"7R,
+rZCk6!UtTorrBk+rrN*@pAY0gJ)(&(_"7R,rX\`&!Ven7rrBk+rrN*(pAY0g5MZ8=_".L*"8;`qr#a_o!5S1*!.aeC!WF1rrrBk*rr@TCrrN*0h#@Aio)Aa+J+imB#Mf=Z_".L+i.(J#!!h<Z!5S1*!T8J$rr@],rrBk*rrMURpAY,Fh#@Aio)Aa[+85^7_;,%j_".L+n-A[e!5RCi!5S1*!Up-`rrD!4rrBk*rrMThpAY0OJ)1,)_".L,
+n,Rt4rrMURh>[Jjo)Ad\!.XbC!Ur>5rrA,YrrBk*rrVrq5PP0Yp`JMq!"]&.!5S1*!rN$_p\t9l+6*;#TDeci_"%F*!'g5X!W4%qrrBk)rrIX7p\t9n&**ZiL]%/P_"%F*J04Lb!"\,i!!iH%!5S.)!It^TrrLFJj8T+3r;Qc4nc&W?#P\6!c[k-V!/(4L!5S.)!Peg3rrIn+j8T+3r;Qc4nc&XJ"8Dfra+<=O!U#+5rrBk)rrMTip\t97
+J`Qh3_h7me!5S.)!Vc]irrL/kjSo7ua8Gr;_"%F*p]:-h!QT`OrrC+:rrBk)rrMlqp\t93J`Zn4r"&])!5S.)!VcZhrrM$Xjo5AV+8c'<_"%F*p]1'g!T3t>rrMmZqu6Z3nc&Xb!;HKon,VSM!9!_R!5S.)!r)bFq#:Ba!9O4\_>=03_"%F+quD6ArrVZiJ*-b2"8`#t_"%F+rW#1XrrVs(5Ni%Ir"&Z(!5S.)!r`0Aq#:Ej$pWqT!Uq3-
+rrBk(rrE*1q#:Ej%Njm6!T63=rrBk(rrE*%q#:Ej#7p"t!5SF1!5S+(!It4GrrVs#&*Nrm_>4*2_!q@)^]F61!r*"UkPkO7q>UH1nG`OI!VlZrp]n_#rrM_Pq>UH1nG`OI!VlZrp]n_#rr@]HrrBk(rrMTiq#:Ej#N=qI!WE2rrrBk(rrMThq#:En#N4kH!W32trrBk(rrVrq5Pb<\r!2`UrrMm"q#:?0nG`Rb!'g;Z"8iDnJ*R%7p]pTo
+!5S+(!rN$?q>UQp#P`f7rrW2t#Pe<!_!q@*rW!K)rr`0$pcn*E!rP.cq#:?0nG`Rh!"\o*"8i9!5O8=Nr&b5ZrrBk'rrE*)q>UQp!W4&*rrW*X&,?/)_!h:(!!i?""9&?#+7&q.c2\CMrrBk'rrIWTq>UQr!<*MprrRoT+8Gj9_!h:(J-5TH!W`62li.$:!'g8Y!5S('!Pe^1rrR_##OMHmrVuqJq#:?0n,EII!.XhE!l.#*m/I.^!!2us
+!.Y"J!5S('!oO&Cq>UNS5D/>&!r)`tr;QfsJ,]HJ_!h:)n,P]KrrV[3KC&U>p](QsrrN%Irr2u6n,EIY!$D%:!q7:_m/I.V!"]#-!Vh0DrrBk'rrVrq+8Pp<p^_rBrrVZi+8l->i.(b+!5S('!r)a+q>UNo#Cu4A"8m*<5Q(N^^jl@`!5S('!rN$/q>UNo!!)Ed"8FPM5Q(N]JGoKJ_!h:)rW!K)rr`6#!.XG:"7Q9jJ,K<H!WE#u_!h:)
+rW!3!rr`6#E'Ndj!q60jr;QeJ"9&6"_!_4'!!i<!!W[Hemf*@H!'gD]!<<B'rrBk&rrE*)q#:BqHk5ZF!T3tUrrW0"&,lM._!_4'J-5TH!eC1Zn,EIZhuWcU!r)a;rVll5mf*<<!VlZr_#=l5rrTt9"8r0#huH"?rrBk&rrTt9J,0*G_#FZ.rrR]N#Q4T'^]8l_rrBk&rrTt95Pb<\i-u"#rrN0#&,cG.!!)rs!5S%&!oO&#q>UNSItR7j
+"9&9#&,lM0rW"qUrrBk&rrV*Y&,H5,n:/:Drr`0!!$D1>!r`1Lr;Qc4mf*@X!"\o*!q:]tnG`Uc!!",>rrN#uqu6Z3mf*@X!!i?""8G+MJ+<O@n6c5\rVlor"8i)u_!_4(p](Qprr`0@pcn<K"+fA1J,TBJn-Ajj!5S%&!r)`tq>UQp&,8B[rr`0$huN`U!r`01qu6Z3mf*@d!!E&s"9&Q'5P"gVn-@kPrVlrs!'gA\!5S%&!rN$!q>UQr
+"8j83rr_0i^^'i<!r)bFqu6Z3mf*@d!!2lp!Wi3@o)AgM%tG2hrrMThqYpQ2mf*@d!!)fo!Wi3@o)Ag-*rmD]rrMTiqYpQ2mf*@d!!)fo!eC7\o)AfB*rnP(rrM$_qYpQ2mf*Ce!!%NErrU"8&+]`%J0"^grrKnGqYpQ2mf*Ce!!#7ZrrU"8#P.lr%NYZLrrW)u+8Z!;_!_4)qu?^]q>UNSIfo9A!Y,V@rVlro!'g>[!5S%&"8i-!5Pb<\
+i'2b`rr_.#!"]&.!VcZjrrBk&rr`#r!'g;Z"7RC_J+`gErWaMF+8u3?J,oEF!5S%&"8Dir+8Pp=p^b/)p&>0m"qL\urr3'!!!2oq!5S%&"8Dir+8Pp=p]p:Qp&>0a%LrJgrr3&t!!E&s!5S%&"7Q9j#PnB%quc^9p&>-0*WQ3=rrW)u+8Pp:_!_4)n,NFjq>UQp!Vd2urr[d8!!3&u!rN$?q>UH1mf*Ca!!!,srr`6$r"&K#!s!cM"9&6$
+2uk&rrrBk&rr`0!!!E&s"9&?!&,#r)!.FnQrr3*"!!#7ZrrBk&rr`0!!!E#r!Wi30pAY92!.4bWrr3)u!!%NErrBk&rr`6#!!E#r!Wi'$pAY,CrVup?rr3&t!!E#r!5S"%!WW3$q#:DG!!)`m"98u5!'gJ_!rN$'q#:?0mJd6<!!)fo"+U@O+8Gj>rW%0C!.Y"J!rN$/q#:?0mJd9=!!%NEs8Duu#Pe<%rW%<G&,lM0p])E2rrBk%rr_0Z
+!'g>[!;ucqq#:JI!;lg=rVlof!VcTo_!V.(n,NG1qYpQbr;ZhIq>UQt!VcX:rVloV"8Dfq_!V.(p](:9qYpQRr;Zg>q>UQt"8Dj\rVllu#P\5u_!V.(p](:)qYpPGr;Zg&q>UNs+7KC2rrVrq&,6)(_!V.(p](:)qYp^!!WW-!"8`$#irK,;#QF`*j59nJp\t6/mJd:`!!!9$rs&B$&-)[F!W)g!^]FJN&,uS2_nZ6op\t6/mJd:`!!!,u
+rs&5u5QCcQ!;c]u!!E7O&,uS2K7Eqdp\t6/mJd:`!!!,urrMThrr3&t!.XqH"o\K,rr=/?rrRh'"8;`p_!V.(p](9pqu6]T"9/<%rW#1\rrr<#&,lPNrr3&;!!i5t!5S"%"8i-!!W2lti!95\!Iu9irrqll&,ZDlrr3&8!$Cq7!5S"%!<2rtqu6]4&,lM/^^pAC"Q08%p]:?n!l+e#pAY-.m/R%bqu6Zs5Q1T_i!92["FpIon-Asm"2DVO
+J+imB_!M+#!!#7^rrW0"J,TBJp]LKp"o\K%+5dD'rrO:X!;6?l_!M('^]4?VrVlot!;uitp]LKp"oJ?#+2AEdrrN<'!;6?l_!M('n,NG1rVlor!W;ruquQcr#k.fo++PI5s8Mutp&>$-m/I1W!!",>rrN$"r;Qfs!WE#ui;EW[5QCc]!!!&mrrBk$rr`#r!$D1>!Vccorr<&trr@TJ!<3!#n,NFjp&>$-m/I1_!!",>rrMm"qu6\IJ,]KH
+!!!-#rr^%:!$Cn6!5Rt$"8Dir&,lM/n.5Er"Fu"%s8Mrs!$D4?"+U@OJ+`gA_".L*5Q(N`qu?^%rVlof&,ZA5^d%l!rW!&9!.Y"J!e:7Qo`"p,oD\jj5Q(N`qu?^!rVloV+8c'D^d%l!qu?u;!WE$"J,g,PrrBk+rrN*@r;Qls!!!&urrM%"qu6r[5QCc]!"[umrr3)`J,g\`rrBk+rrN*@r;Qls!!!&urrKnWqu6r[+92B=!'fB`rr3)@
+J,hh+rrBk+rrN*@r;Qlu!!!&urrKo"qu6r[+92B9!'fC+rr3)@J,hh+rrBk*rr=/<rrR]N!<)ou^d%_r#Oii8s53m,_#=98LO]@ho`"p,o)A\3qu6`5!!)ut!Pj3^rs/$(s53kWIt@Ru!sa>VJ+Wa@_".L*&,ZA/huEb,rr3"LJ,B6Nn.5Q7!!%KNrr3,r#64aRo`"p,o)A]Fqu6cf!!%NJrrIY"qu6`m&-)V/!Ik@Rrr_`j!!2]k!5S1*
+!/(1K"7Q9j5Q:Z_JGT9Ip^dE(!!.NZrr3)i!!!,mrrBk*rrBn4rr`#r!$D4?!.aqG!r*<*rVus]+9)9BJ,fQ[oD\g+o)A^+qu6cn!!",?rr@TGrs/<0rVurV!$D4?"+U@O+7oL4_".L+iQqH%"7Q9j&,uS/JGT9Np]p]s!8miArr3'#!!.T@rrBk*rrM/8r;Qlg!!!9'rr@TGrse`'GQ7d&!.Y%Kn,NFno)A^*o)AaLa8Gr>p](9rrr2tK
+qYpQjrW!68huJ9,s1eU7&+]`#_".L+n]1S-"8Dir!WN*!JGT9Gq#16p&)[Herr[cO!$Ce3!5S1*!V+)*rr`0!!!3*!!.aqG#5A/u%hIS#rr;rt!'g&S!5S1*!Up3gs8E#trr@TGrsAH#!"T=M&-)\/rVuqJo)A^*o)Aac"8i*&^]4@as8RWGrsAH#!"T1I+92B=rW)Kg!5S1*!Vccors%B]!.Y%KJGT9Pp](:9!!#7`s7lQnnc&U)o)Aai
+"8i*&huEaAs8RWGrrr/t!$;1@rr3)i!!!&irrBk)rr</urs%rm!$D7@JGT9Lp](:9!!3*!rVup#nc&U)nc&Riqu6oj!!",@s+#Urrs8B"4<FP*s8W)t!!!8orrBk)rr<)srs/<!!"],0J:IIr#k.hC*rliOs8;ir!"\W"!5S.)!!)or#P\9!#QOh>J,B6On,`P"!.Y%Kr;HZr5OnaR_"%F*J:ILs#P\9!"98D:5PtH`n,r[p!WN*!r;HZr
+J+<O=_"%F*n3?jN#P\9!!WW285PtH`n-AuD"9/<#q#19_rrBk)rrMm*r;R$"!!!'"s1gkrrrh6bpOEAFrr`#r!!2Th!5S.)!W33#rrE&t!!E9$i#hjr"Q0OFJ-Z)R"+U@O#Oq`n_"%F*qucirrW!'#s55!rrs-=EiIDI=s8Mut!.XM<!5S.)!W3&srs$7=!.Y%,&,ZA/^]WKprr2urrVuqJnG`L(nc&Xh!W2m$n,NGQs6pQrrr[cO^^'l=
+!:]sf!.XM<!5S.)!WE)rrs&5u!$D71#Q+N'J,fQ[rr2uVrVuqJnG`L(nG`Rjs8N-!rs&B$!$D79"8i,t!!",?rr@TK!!%N<rrBk(rsaMYhuElZs8Duu&-)P0r;QcrrVuqJrr;os!$C_1!5S+(!Pj3a!!n)Srr<$(s82oqrrDur!!@`Ns8Mrs!!D`j!5S+(!PisZ!!j,8s*t(Os8E#rrrDur!<2uuq"t-]rrBk(rrM%crW!6,s8RTL"98?#
+J,TBIq#19mrrDQd!!#7RrrBk(rrD!U!!r]+s1eU8s8N'`rVluh!!!'!rrBk4!!!Q"rrBk(rrD!T!!n)ShuEcWs*u3irr^%:!!3*!qZ$U$pAY0mJ,]HJ_!q@6p](:V!!",@huEcWs1f0Drs!uR!!3-"rr)m"#Oh]opAY0mJ,]HJ_!q@6p](R!n,O"!n,NH<s54"Xs8E!#"98E!rW!'#s*t+CrrN%Irr2u6nGa!f!'gM`!!iPn!!#7`n,`Og
+!;ufr$O?_3p](:!s8VQgJ+rsCrr)is_!q@)huWiW&ASDJp](:Ys7cSDs8VQg!!iN'#k.fo+92B=!'g&S!5S+(!Pes>rt+Z#s7cQo+926=&-)[F!!!Q/rr^%:!.Y"J!<=5:rrE&rrrBk(rrIWlrr3E)!<;fo!"],/!!3,trW!-ErVunJ!!3&u!Pf6@rrE#qrrBk(rrE*arr3<(!.XnH!!iQ(JGT<N5Q(Q]!!!-"rrM$_q#:?ir;Qc4nc&[i
+!.XtI#QR*e!!!9(s1nL3#!`%cqu?^%rVlof"8MlroDJUg_"%F*quHZp#_4#p!!!-$s7#mc#!`%cp](:)rVlon!VlZpa8Gr;_"%F*p]:<m#f%P[!!!'"s7lHk#!`%chuEa!rVlor!Vu`rr"&`*!5S.)!VccprrV*hr;HZts8W)q!!Y[es1eU75Q1T_rW)co!Vdc7rrBk)rrMTor;Qif#Q4Q$rr2tKr;['B5QCb6!!%NHrrE+LqYpTkJ,K<H
+_"%F*i",bc!r*#urW!%Ms8V$U!!@U5s8Mutqu6\IJ,90FYl"G#_"%F*i#hms!rN0"rW!$bs8Tn5!!`EEs82is!W2lt^d%\q!!2us!5S.)!PffTrrW*#rr)m"+92@krW!0*rZD18!!!,urrKo"qu6]r&,ZA,_"%F*^d%bs!r`6"rW!!As8W#t#7(8>s7cQo"8i*!i#hjr!W51ZrrBk)rrIX7qu6Zts8E!"#QO`#!!a&7&-"Th!!iE$!T5's
+rrN%Iqu6Z3nc&W?J,B6N!<7QL!!E8Zr;Zpart#//!!!9$rrMU"qu6]lJ,B6G_"%F)!;c]s!<7TK!!#7]!!@`NL]78Q!"\u,!UpWsrrDijrrBk)rr<&qrrR`N_"ds5!WW1Trr)lt&,ZA-p^d9%!;ZKk!5S.)!!2rr!e>dYqZ$g[!!E9$KDtiM!"\u,!VcokrrBk)rr<)rrrTucnG<1iqu@!%s2"^6!!",<rrN$&r;Qcqq>UH1o)Aai!W)ft
+^jkkO!!`Q&!$D7@_>O94!$D+<!W33#rrDrlrrBk*rrN*"qYpW45PY-V#6F`&5QCc!q#16n+8c'=qucls!;$$d!5S1*!WE2trrTu#r;6O!"8i.Ks8V$U!!",<rrN$"r;Qc[q>UH1o)Aai"8`$!i'75=!!3]+!<2uui;EWU5PtH]rWE)u!!i?"!5S1*!WE2trrV+Crql`t+7KC3rrD!U!!#7\rrN*"rVlor&,H5*_".L+qucfq!oQ<Cr;Zp)
+s1em=rrD!U!!#7\rrN*"rVlor+8Pp:_".L+qucfq"5lEDJGoNN+9)<Orr2uVr;Zg^qu6]r!WE#uq"Xjh_".L+qucfq"5lEDJGoNN5Q1XIrr2uVr;Zg^qu6]r!WE#un+cn__".L+qucfq"5lED_#=<95PtM2rr2u6r;Zg^qu6]r!WE#uJ,'$D_".L+qucfq"5lEDi;N]YJ+s"nrr2tKr;Zg^qu6]r!WN*"pj`)=!5S1*!W3&rrr_1Ds5<kV
+!e9\>rVufr!C/mHrrN*"rr2uWp\t6/o)Aag"8`$"i'782rW!"LhuWiW!;ucq!PgqsrrN*"rr2u9p\t6/o)Aag"8`$"i'782rW!"L^]FH7!;QNn!Wg)$qu6]r!WN*!KD5BG_".L+rWE#s"5lEDnGWCh56(fbrrDQf!!32:5PtH]rW3#u!/L=K!5S1*!WE2trr_1Ds7$!f!Xo&6rr2ufr;Zl65PtH]rWE0"!!i8u!5S1*!WE2trr^&$s7#pd
+!.Y"J!9!eU!T63>rrr<&s8W'?p\t6/o)Aai"8`$"^d%kWquH]q!.b%K!c['>qu6it"98E!J+rsC_".L+rW2lq"2KEd_#465!WE&t!!<8k?m#:G!W32orrBk)rr<)rrr^&ds+(%J!!E6#!<2rt!s/1)+8c'@r!39%TD&9b_"%F)!W)ftJ:IUs!!!-#rrE&t!!<9"?k</7"S`6%s$-5W!5S.)!!)lq"Fu"$!"Ai,!!iN'!<2os!rO__qu6fo
+#QOdQpAY-.nc&RhqYp\Ks7cR8rVup'rr2unr;ZnJ0G"'\"S`N-r."G?!5S.)!.aqG"9AJk!'^A^!"])/#N,R^!Pj-a#Q+N'n.5Qsp&>$-nc&W?J,B6K!;M'EIf9<I&,uS6^]4?:i'%,Gqu6cf&-)S#rrBk)rrKo"r;Qs"!Up'hrr)lt&,uS6J,fQSn36mTqu6cV+9$c_rrBk)rrKo"r;Qs"!T3q_rr)lt&,uS6J,fQ[p`BJ<qu6c6+8A(n
+rrBk)rrM%"r;Qru"2Fn$r;HZr&,uV.!!Ei-%tF]Xrr^&$n:1-2!5S.)!T4Ldrrr0"J,hh3rW!$*s8W)t!!FDA&&82BrrR_#iUm-M_"%F*n-Amk"o&<&!.XqG!!<K+s7lQn"[Dtk_>o)`rrN1M_t<s/_"%F*n-Amk"n2Wp!WW)s!!<?'s5<kV"[E"hrr@QIrr`6#s24L/!5S.)!Vccprrq<\!!iQ%rW!$$s8Tn6!!PUe_uG6OrVlut!<7iH
+rrBk)rrN#tr;Qr9!!",@q#16q!WW1MrW!*ds5F!.+8u3Ap]19uo`"p,nc&[i!.XtI"b6RQ5QCNW!!3-"r;[!cs5<nW#Q=Z)n,NG!o`"p,nc&[i!'gJ_!<2rt!rr;ir;Zluq#(0r5QC6Q!!E3""5j.Z5P4sU_!q@)!$D4?#5eH$!WW2hr;ZkJi;N]\3.Lu'Ih2YZrrTt9!V?<k_!q@)J-Z)R#5A/u"98D:r;Zj_JGoNRG^obk5F;G#rr3$"
+!"\]$!5S+(!Peg:rs.H^!!iQ(!$;+>!$D.>%JYGQr]g;\+92B=!!",4rrBk(rs\AsJ,fP!!!!Q0quAt\!!")=!!)fnrs9eH!!iQ(n,NH<oD\g+nG`Xd!"],-rW!37s7cSDJ,fQXrVup!rVm.arr<'!s*t(Lo)A^*nG`Ug!!%NI!!OJEn,`R)qZ$TsrVm/LrVup'huE`Xo)A^*n,N4a"X!d6"97<V!!!-"rrL1<qZ$Tuo)A^*n,EB<qZ$dA
+s54.^i;3KS"9&6$kPR=;!!!Q#rrBk'rrD!S!!PUei",kWqZ$U$rVlrZr]L)Y!$Ce3!5S('!;QEk"[E$;5QCNU!!!9&rrV0Y+8c*=5P"gS_!h:'rqc[!5PtM2s7lHk!"]&.#iYb)huE`ZJ:I.i!5S%&!5SL4"[Dncs8W#o!!",>rs.N_+8c*=++`t^!5S%&!;u`p"[Dbas8W)q!!#7^rs/)oO8lurs+BkA!5S"%!<2os!^8:Crr;iqr;Qig
+s+gUR!WE>orrBk%rrE&s!!5=a5Q:]\!!!9%rrW)ta8Z)>r#bJ/!5S"%#P\9!Du`!#J,]HJJGfHJ+8Z!;j8T&Zpcn<K!5S"%#4MTmn,PQNrVll5r;Zg^qu6]coD\ajn:1!.!5S"%#2fI]p]*8SrVllUr;ZhIqu6ZZrVll5nG`L(mJdC+!!2ip3!9-Z!9!eUqYpQUrVlkMnG`L(mJdB@!!iE%3"Puf!9!hV!!E)t!;$0h!!i#n!5S"%"onXQ
+qu?^=rVllUrVup'qYp`hs53kU&+KT!_!_4-rVururVup?rVll5rVup/qYp`gs,[3X+7T:1_!_4-qu?ctrVup?rVlkJrVup?qYp`oIu"(!J+3I<_!_4-p](Errr<$@rVufr!$D(;"SdJ%s5<AG!5S%&#Oh]us8N(<+9)9?rqufs+8Z!?pcl[rJa`U=_!_4-huF#^rrDOQrr2urr;Zg.qYp]n+63A'n,EC'mf*O-!"],0!:W5PrrDim!!!9#
+rri61nbrd^rrBk&rs+&S+92@kn3?pP!:]pe!!iB#"TAr$p^cin!5S%&#64`gs8N)g5Q:Z_i;EWU"8Vs!L\Lj6n,EC'n,EIg!!*#u!W[1(rr2tKr;Zfuq>UPLquD68rrBk'rs8N&"98E#!&-Y:s82is!Vu`sKDY`;rrBk'rsS;r+92B9!!#7`s8;`oq>UMIqucBe!5S('$fD#7s8VQs!'gM`q"k$kJ,90H_#+H*rrBk'rrKn9rr32l56)f*
+s7#mc!.XkF!oS;6mf*:&n,EE="9/<)i.$8!s8Tn3!!#7[rrW+;+7B./_!h:(!"])/#2oNs&-)Z[qZ$U<q>UHqJ+Wa@&,cG-_!q@*rW"&>rrp4<i!9;^r;Zr8!!",:rr</nrrN$^r;Qc4nG`mo!.Y%KquQie"98B"!!EDn!!!Q*rr<;rrrMnEr;Qc4nG`Oa!<3!&p]LQc!WVro!!EPr!!!9"rr<T%rrDTdrrBk(rrMTkrr32l&-)D*s5<kV
+":tD1!!E&s!tW0IJ+rsCj88iV_!q@)i!98]"lLL&quH`p!!FDA!!!,trri<0!!!8urrC+:rrBk(rsHO`s+(-b+92<?r;?Tu5Q1W_!W)fr_#=<6!VcTochm_B_!q@2J3Vrl"+VKnrrDuq!!.TLrW)fp!.b"J!'g8Y!2'/g!5S+(!<@TI!!GOdrrMoo!!33$s8DuuJ,B9D!!",:rrN*@qu6Z3nc&[i!VlWo!!3*!!J1%F!!39&s8DuuJ,B9D
+!!!9"rrMmZqu6Z3nc&[g"5s.Y!!3*!!Q"R1!!3E*s8Duu5PtKY!!!&qrrMV=qu6Z3nc&[c%tOWZ!!3*!!PnL0!!3]2s8Duu+8c'A!!!9'!!)ip!5\O3!5S.)!Uq3/!!IfOs57;a!!XPFs*t(L+8c'B!!*'!^]8l\rr<<#rrBk)rsI[H!!3,8!'gM`i;EW[5QCb6!!!Q.rs8Tg!!iQ(p]*PUrrN*0qYpQ2nc&rHp])E9qu@i=s5<hU#(Q[Q
+^]4?>rVlut4oc](rrE*Aqu6]r+8Z!;_".L-rW2Kgrr3+O#QOhnr;cis"8Dir"9&6%r#>]drr3"L&,ZA-r#be8!5S1*"+UWl"9/<'huj#ZnGWCf!WN*$rVup#rVlro2urpW!T44[rrMmZqYpQ2o)Adl%tG2irri)ts8V$V!!!-"rrN0#!WE$"pb2gKrrMTkqu6]dJ,90F_"7R/rW"#?+9)9CquHcsi;N]V&,lM0J,fTJrrVuR#Q=Z'p]:9l
+!T8J(rrBk+rri6"IK4lrrrW7Ns5<kV!$D1>!l+d9rVlrpi",ed!W2rprrBt4rrBk+rr`#rquHZp"+WW9_#=<65Q1Ta^]4@arVlo6+8l-=!;lcr&,H5*_"7R.p]LEpr;Ql75QAOu!;uj!huEaArVlnK5Q(N^!.XtI!WF2:rrBk+rr_a$p]LHo#2gU'J,fQMr;R)m!!",@s7?6jJ,K<IJ3X#4!W51XrrBk+rr_aTn-Amk!q6a#rVup#r;R)u
+!!",@s5X+ZJ,K<I^d%et!VenTrrBk+rr_2/n.5Hs!r*<*rVup'r;R'#!!!Q0s5X(Yqu6]T+8u3?pj`,>!5S4+"2Orp+8l-?p]p`r!!!Q-rs8N&!!iQ(a8Q,:rrM$grVlleq#:?0oD\p/s1f`SrrW*#q#16n&,cG5rVup#s8UFC!W2ltn.5Kt!9*_Q!5S4+",$Wh5Q(N_qucHf!!!Q,rs&N(!WVckqucir!Vd3(rrA,TrrBk,rri6)s+#Us
+rrW0#i;N]V&,ZA3J,fTLoDeRfqu6]l#QF`(r]g2X!5S7,"8EE,JGT9H!Pn[7!"\u,#J^<>s5X.S#Q+N%r!36$!Vh0>rrBk,rr_aTs+'tGqu?^%qu6oZ!!%M"s7cirrrN$"rr3#gJ,'$D_"@X/i.(b,qYpPGr;Zg&qu6oZ!!#4cs6pQrrrN$"rr2uVp\t6/o`#$/s8N,rrr@TJ!!!9$rs/#n!$2CFn.5Er!WE3#rr@WErrBk,rr[iPrrMur
+!5SO5!!iE$#P\9!#S6t)&,ZA-rW3#u!!Duq!5S7,!sAT&"8`#t_#=<749PK\!;ufr"!@R4&,ZA1rW3'!rWi2t!5S:-"TAZ+rWE#s!5SR6!Ik4KrrE&t!!>Icn/qQ-"o\Q&s83E%rrBk-rri*-s8E,srrBk6!!3+Nqu6ZqrW!%Ms55!rrrrB&s8VjYp\t6/p&>-p5QC]bqYpQRrW!$"J3Wr2rW!'#s55!qrr`B&s6tO4rrBk.rrrB%J,fEO
+qYpcX!!!'"^`WIR#(Q[Ss8V"!qYpWts8Tn.rrBk.rrrB%s8W!%qYpcX!!!'"^^p>B#/C3=s8V"!qYpWts8RWCrrBk.rrr/us8W!%qYpcX!!!'"i",_b#/C3=s8V"!qYpWts8N,nrrBk.rrq=&s8W!%qYpcX!!!'"pQ,4O#2fI]J,eFKqYpWts8E&mrrBk.rrp2&s8W!%qYpcX!!!-$s2Y$:#4MTmJ,eFKqYpWts83,qrrBk.rrmq&s8W!%
+qYpcX!!!-$s2Y$:#4MTm5QBX`qYpWts6tO3rrBk.rr<&urrN$&qYpcX!!!-$s2Y$:#4MTm+917@qYpTss5<SM!5S@/!WE3#rrN$&qYpcX!!!9(s2Y$:#4MTm&-(Q0qYpTss1n=-!5S@/!W3K-rrN$&qYpcX!!!9(s24a6#2fI]&-(Q0qYpTts+0kC!5S@/!Vdc9rrN$&qYpcX!!!Q0s5X"V#2fI]#QN^(qu6ct!WO87rrBk/rrMURrr3#s
+#Q"H)huEa!s8V'Trs%B]!!E8Z+8c'?rW3!?p&>$-p\t9PJ,]HKr!3)u!oO&Crr3#WJ,K<Nn,NFhs6pQrrr`6$pcnHO!5S@/!5SR5!WE?#rrM$XrVloV5PtHa!!!'"n.5Er"9&>j5P>$V_"[j/iVicWrWE#s!Pea7rrM%Bqu6iX!!*&g&,ZA.rW1sLrrBk/rrDZhrrN*$qYpT3"9&6#n/qW/#Q=\t!!%N<#Q+N&quak/rrBk*rrN*$qYpT3
+&,lM/n/qW/#PnDt!!#7Y#Q+N&qu_`HrrBk*rrN*"qYpT3+8u3?p^d?'#PnE!!!",9#Q+N&p](QkrrBk)rr<)rrrIX7rVlor"9&6)nc/Uh!$Ct<qu6`m!"\`%!5SC0!/LIO!!2rr!.atH$j$8+#QOW"s*t([qucir!r)a+o`"p,q#:=!qu6WrqYpNqqu6c6^]4B5rrg+;#Q+W"rrVZi+8#R5_"dp0#Q+N$JGT9G!W2lsi;N]V+9)9C^]4K9
+!W2luhuJ9!rrBk1rrN*0qu6\IJ,B6G!W2lsnGWCf"9/<'huElY!;lcshuNBK!5SF1!W3K*rrKo"r;Qfs"8i)ui;N]V!WN*&n,NLh!.XqH!Peg/rrBk1rrMURqu6]45Q(N^qucir!5SO5#_2mSp](<o!.XqH!It:DrrBk1rrM&-qu6]T+8l->r!3-!qu@!Es8Vus!<7R6r;Qct#P7rq_"n!1JGT9Hi",bc!Vcotrso#.!WVWh&-)\/!!%Ma
++8u3@rW!2prrBk1rr<)rrrMTor;Qfe&,cG;qu@9-rr<<(s8Duu5N!(Nrri6""96./rrBk2rrN*(qYpTk"8r0"i#hms#4MVBs8Tk8rr3*$!$C\8rVm#q!!E89p&>$-qYpTk&,Q;,p]:<m!PffTrrM$Yrr3#g!<3!$J,g\\!WE$$n,NLhTCr3a_#"'3n3?dL!W2urrrIX7r;Qf5#QF`0quD6Hs1eUFp]19m"Q0Lcs3LB<!5SI2!T8J(rrW0"
+J,TBJ!.XqH!It^[rsJ`*J,fQ,!!iE%J,]HNJ.KHqa7]H4_#"'2_"dp1!'gJ_!WE)rrrE*arVmI[5QCcQ!!iK'+92B?!$C/!kOniT_#"'2Jb]6GJ04dj!Vc]nrrW0"J,TBZ^`WUVp](Er!!E9$p]*PJs6'(T!5SI2!"\l)!Pes>rrM$[r;Qfs!;uj/i",kfp](?p^]8la^]8lRJ+rX9!5SL3!W51WrrM$Yrr3"L#Q4T&quQ`q&F]r)s82it
+s53kZp](<opj_r9!5SL3!Vh0>rs%rm5QC]_&,cG.p]LHo#l"Z)s8Duus7#se!sAT$J+Wa@_#+-3nFuqequ@!%n,OR.rrMm"r;Qfq"9/<&!!%NHr;Zg&nc&U)qu6ZTp\t6mqu?^]r;Qfe#Q4T&quQfs"+UA9s8;ot+8u3>^\7[-_#+-3_tO-.!;lcsn.5Hs!WE-!rrdiP+9-lj!!#7^rrA\brrBk3rr@iJrrBk6!!!,urrM%"qu6Wrrr3,:
+!$D71rVup_rVllTpAY-.qu6X,pAY-NrVup/qu6]T+8c'<!<3!$huF;frr)ltJ+<O=_#435rX\`&!5SR6!'gA\!Pgqsrr@TKrs/#n#QOhn!!)Ng!5SO4!W4&5rr@TK!;c]r^d%_r#(V4's7cR!rr3#W!WN*!p[nIc_#435pcnKPrVup'qYpSHJ,B6M^jlCap](EqrrM$_rr2umo`"p,r;QfeJ+rsCrr)lt#Q"H#JGT9M^jlCaqu?csrrM%B
+nG`L(r;QcTpAY-jrVup/qYpPGqYpc85QCc_!!3*!!5SI2!.XbC!5SO4!/("F!;QNn!"\r+!!)lq!T63ArrE*"rr2u9qYpPFp\t6/r;Qa%pAY-^rVup?qYpNrqYpTS5Q:ZdJ,k*!s+gIN!.XbC!5SR5!WF27rrD!V!!",;rr<)rrrM%"rr3/;!'gM_&+BMu_#=96r'0oT!5SR6!'g>[!!2rr!Uq31rrq<\5QCX'n,EC'rVllmp&Fsj!.XnG
+!WE,rrrMU2rr3/k!$D79+7K40_#=95oCi1arquinrrN*"qYpTc+9)9Dn,O"!n3?CA!5SR5!9a(U!;ufr!!iB#!WE2trrMU2rr3/s!!iP^J+*C;_#=95TD&9bq#16n5PkB\rWE#s!Uq31rri6"#QMU-rrBk5rr=/7rrDQf!;ZWqrWE#s!Uq31rri<$"93r?rrBk6rrN+KpAY6Q!!!&qrrN*$qYpTc+8u3A!!3*)mf*:&rr2urp&>-0!!!,s
+rrN*$qYpTc+8u3A!!)p-mf*:&rr2uqp&>,E!!!Q*rrN*$qYpTc+8u3AJ,o?dmf*:&nc/Rg!$D%:!WE2trrMU2rVlu8!$FMorrBk*rrE&t!!#7ZrrN*"qYpTc+8u3AhuEb,mf*:&o)A^frVuqJq#:<pqYpTc+8u3@n,NIUrrBk*rrDin!;HKn!W)fsi#hpt!r)`rmJd1%o)Ag]!!!&orr<)rrrM%"rVlro!!DWg!5SU6!.X_B"5j.Z"8Dfq
+!W)fsi'72?!rN$#mJd1%!rr<"p&>-P!!!8urr<&qrrM%BrVlrs!!hok!5S1*"2Fm:+8>d8!;c]ri'72?!rN$'mJd1%!rr<!p&>,E!!#7Xrr@TGrrKo"rVlrs!!DWg!5S1*rVuqJp\t8EJ,B6H^jl=_!rN$!mJd1%oD\girW)]m!rN%Jqu6\IJ,TBKqu?`arrBk+rr`0!!!2io!r)a[qu6\IJ,TBKp](<]rrBk+rr`#r!!Duq!q61Squ6YH
+r;Qlo!!%N:rrBk+rr_`j!!i8u!q613qu6Wrr;Qlg!!#7OrrBk+rr_0Z!"\i(!oRH.r;Qfs!W;s"i%P-Qmf*:&oD\p.!!",8rrTuT&,cG.rW2rs"2Xm8+7B./_"7R.J,fR6p\t;Fn-Amk!W3&trrWB&!"\Mt!5S4+rVuqJp\t;Gp]LHo!Vccqrri<+rr<;lrrBk,rrE&t!;?Eo#P\E!rrMTorVm#u&,uV3mf*:&o`#$k!!!&nrrN`/!W;ru
+n-Apl"Sa)=J-56>!5S7,"8Dir"8DftrZD+>r;QfU%fQD1n3?r'!Ufsf_"@X/n,NFnp\tBo5Q:_5rVlqL*.Rtf"Q9=[^]<g&!5S7,"5j.Z&,6),pj`;D+8u3@!'ELFrrp7=s53m,n,EC'o`#$/!!",8rrhiks1f0Err`6#IR!i3"c*-Xp]*PIrrBk,rr[cO!'g5X"QBC\huiuY"8Dlq+9)9D&-)\-!"\Pu!5S7,rVuqJp\t?us8VQgrr3Db
+!WF2@s8F,?s8E!/n,EC'p&>$krW)Zl%hJ^?p]*PYs*t4N+92B=5Q:Z`!!hum!5S:-"8Dir!VZO(TE"rh!"],/!!iKFs8VS<rr3"L"7Q6i_"I^0n,NFjoD]3t!!#66!"])os8V$UrrKn9n,EC'p&>-P!!!8prr@TJ!!#7^rrBt8rrM$Xn,EC'p&>-0!!!Q#rrBk5!!%NIrr@iQrrVZiJ+3I<_"I^0J,fQko)A^ZrW!-'s8W(Jrt#).!q62>
+nG`L(p&>,E!!#7YrrN*`rVllqrW!--s8W(JrZD+=!r)bFnG`L(p&G!k!.XeD!W51[s8E!&+92B=J,DP0rrW)u+7T:1_"Rd.rr)olrrMmZr;Qif!!*#u"8mZDJ,TBKrW!JurrBk.rr`#r!!2io!UtU9rrIWlrr3&tJ)L5(!<<AorrBk.rr[cO!!2io!:][]!rdQJqu6\IoC2b[_"Rd1J,fQOp\t6_p&>*mHis9G!J1(9rrBk.rr[cO!!Duq
+!;Z9e!IP.LrrKt2nG`L(pAb*l!!hcg!W3K*rrM'UnG`L(pAY3qhuF#WrrN%Io`"si+8c'>nGIe+rrBk.rrWMq!"\l)!;uHg!VenVrrVun5OnaR_"[j3rX\Ju&,?/)q"+Ldpj`2@!rdWjnc&U)p\tB3+7K7Pq#:?ioD\g+q>UI[&+TZ"_"[j3^`VJ75PY6Yqt'gfJbf<H*tRoA!5S@/"Mc,;!.XhE!WIT?rr@]IrrJ2$nc&U)p\t?2+5d1p
+rrN*`oD\fGq>UK9j73-L_"[j2`ZMu,q#:Bo5P+mT&,H5+kOJ*B!5S@/"33WV+8Gj:rdXS?!WF2:rrM`enc&U)p\t?9^ApLnrrN%Io`"si5Pb<[q>Bd_!5S@/"7Q6iJ,'$Dq"+Ldpj`,>!rVtGo)A^*pAY3n!.XeD!;Z6d!;Q?h!ri*^o)A^*pAY0m!8[YUHlqqZ!5S=.!W2uSrrN$>o)A^*pAY0g"6KO_chdYBr"&Au!5S=.!Pf61rrDin
+rrC+8rr<;prrBk.rrE*Aq#:?ioD\g[rr2uYqYpTZj7<3M_"[j1rW#1XrrDT\rrD$WrrD6YrrM`Mo)A^*p\t<o!'g8Y!;#g^!5ng9!9a4Y!Vu6UrrBk/rrW)uJ,'$Dj7E9Na8Z)=p\OmkrU>=.rrBk/rrN#up\t6RoD\e$pAY3li.(@u!5S@/!Vd3"rrD*OrrN*@pAY3n!'g)T!5S@/!Uq3*rrDfcrrN$^p&>$m5P+mT_"[j0^`Vh@!W7H?
+rrIWloD\g+p\t6o+6ie*i;ETToD8If^`W1J!5SC0!rN$_l2LbHr;QceqYpTS&+ff$_"dp1quQQl!6=^2!71TC!:fpc!UpWkrrBk0rrMlsp\t66oD\fOr;QcmqYpTk:\4Sd_"dp1n,rFb!0?aO!2&o`!W;-PrrBk0rrMTkp\t48oD\e4o`#!jj.GuD!5SC0!T44XrrN*`o`"sk5P+mUn.50k!5SC0!T8J&rrN+Ko`"siJ+N[@n-AUc!5SC0
+!5S@/!W7H>rrDibrrMm"o`"p,q#:>Ep\t6moD\gbo)Aac"8)Tn_"dp0Ja!+6cgq):p]L0g!5SC0!!2<`!0?^N!W2ujrrBk1rrN*$l2Le`+7fF4rW2Zk!5SF1!Vcc]rrN$^nc&Rio`"p,q>UK2#O26hpj_i6!;Q3d!5SF1!It^FrrMV=nc&Uao`"p,q>UHq+6ie*i:-aIpj_u:!5SI2!r`1Lq#:?SoD\g,nG`OeJ+`gA_#"'3rW2cn!9`tR
+!5n=+!W51TrrBk2rrN$"p\t66oD\gRnG`Oe&,#r&_#"'3r!2ur!9a"S!;Gs^!WE>srrBk2rrMm"l2LbHmf*7hp&>$-qYpTc&*a)oa6rs-JbB$C_#"'3i#h4`!0?RJ!5S:-!5SI2!Iu9WrrN*@mf*:Gp&>$-qYpQr5O/7Lr'0WL!9*VN!5SL3!rN%Jq#:?_o`"se5OSOOiV!3N_#+-4p]1'g!9a"S!Vh04rrDT^rrBk3rrM$Yl2LeRJ+!=:
+nFce]_#+-4^]Wj$!9!8E!Vd3!rrBk3rrIWTl2Lb(m/I%jpAY-.qu6Zt&*a)oO6llH_tO*1_#+-4#G:;]!WEVrrrD*QrrBk4rrN*(l2Le^+70"-j7`KQ_#435r!2Kd!W51KrrDZarrBk4rrN$&l2LeZJ*d18nb2t__#435p]p'`!UtU*rrDifrrBk4rrMm*l2LbQli."`5PP0X_#435n.4d`!:fCT!W32srrBk4rrM%"l2LbTli."b"8Dfq
+_#435^`Vh@!;GdY!.jnE!5SO4!!(CG!9<hR!5SR5!WE2crrDlOrrBk5rrMm"l2LbBhZ!SkrVlof&*a)oiSOS7_#=96i.("k!0?":!5SR5!5Rgu!"\;n!6=m7!5SR5!.a>6!WF2)rrC+7rrBk5rr<&`rrN$>kl1YCq#:?0rVlluJ*R%7pcmX8!5SU6!r`1LlMgnSJ):2*_#F?8quD63rrD$6rrBk6rrMlpl2La=h>[Jjrr3#g!U9Ua&)I6c
+_#F?7n,qtU!WG=GrrDN`rrBk6rrL.FlMgn_J)1,)_#F?7O,*$#!;tXP!5SU6!>!NArrDiLrrBh:s8W'?l2LbZh#@Ai"98E!+6ie*q:tuM^]XW:r#b2'!;YFM!5J^:s7egrrrBjLrrBjLrrBjLrrBjLrrBjLrrBjLrrBjLrrBjLrrBjLrrBjLrrBjLrrBjLrrBjLrrBjLrrBjLrrBjLrrBjLrrBjLrrBjLrrBjLrrBjLrrBjLrrBjLrrBjL
+rrBjLrrBib~>
+endimage
+[67 0 0 -67 0 0]/Times-Roman MF
+( )1658 1712 MS
+[75 0 0 -75 0 0]/Times-Bold MF
+(R)887 1808 MS (A)941 1808 MS (P)995 1808 MS (P)1041 1808 MS (O)1087 1808 MS (R)1145 1808 MS (T)1199 1808 MS ( )1249 1808 MS (D)1268 1808 MS (M)1322 1808 MS (2)1394 1808 MS (S)1431 1808 MS
+[75 0 0 -75 0 0]/Times-Roman MF
+( )1473 1808 MS
+[50 0 0 -50 0 0]/Times-Bold MF
+( )1180 1895 MS
+(S)892 1977 MS (F)920 1977 MS (M)950 1977 MS (E)998 1977 MS (/)1031 1977 MS (L)1045 1977 MS (G)1078 1977 MS (L)1117 1977 MS (S)1150 1977 MS (/)1178 1977 MS (R)1192 1977 MS (T)1228 1977 MS (/)1261 1977 MS (0)1275 1977 MS (2)1300 1977 MS
+(-)1325 1977 MS
+(0)1342 1977 MS (0)1367 1977 MS (2)1392 1977 MS (/)1417 1977 MS
+(A)1431 1977 MS
+( )1467 1977 MS
+( )1180 2060 MS
+( )1180 2142 MS
+( )1180 2225 MS
+( )1180 2307 MS
+[58 0 0 -58 0 0]/Times-Bold MF
+LATENC /_Times-Bold /Times-Bold reencode
+[58 0 0 -58 0 0]/_Times-Bold MF
+(I)340 2425 MS (n)363 2425 MS (t)395 2425 MS (r)414 2425 MS (o)441 2425 MS (d)469 2425 MS (u)502 2425 MS (c)533 2425 MS (t)560 2425 MS (i)579 2425 MS (o)596 2425 MS (n)625 2425 MS ( )656 2425 MS (d)672 2425 MS (u)705 2425 MS ( )736 2425 MS
+(p)751 2425 MS (a)783 2425 MS (r)812 2425 MS (a)838 2425 MS (l)867 2425 MS (l)884 2425 MS (\351)900 2425 MS (l)926 2425 MS (i)942 2425 MS (s)958 2425 MS (m)981 2425 MS (e)1029 2425 MS ( )1055 2425 MS (d)1070 2425 MS (a)1102 2425 MS (n)1132 2425 MS
+(s)1163 2425 MS ( )1186 2425 MS (l)1201 2425 MS (\222)1218 2425 MS (a)1237 2425 MS (r)1266 2425 MS (c)1292 2425 MS (h)1319 2425 MS (i)1351 2425 MS (t)1367 2425 MS (e)1386 2425 MS (c)1412 2425 MS (t)1438 2425 MS (u)1458 2425 MS (r)1489 2425 MS (e)1515 2425 MS
+( )1541 2425 MS (l)1556 2425 MS (o)1573 2425 MS (g)1601 2425 MS (i)1630 2425 MS (c)1646 2425 MS (i)1672 2425 MS (e)1688 2425 MS (l)1715 2425 MS (l)1731 2425 MS (e)1747 2425 MS ( )1773 2425 MS (d)1788 2425 MS (u)1821 2425 MS ( )1852 2425 MS (p)1867 2425 MS
+(r)1899 2425 MS (o)1926 2425 MS (j)1955 2425 MS (e)1974 2425 MS (t)2000 2425 MS ( )2019 2425 MS
+(P)987 2492 MS (A)1023 2492 MS (L)1065 2492 MS (/)1104 2492 MS (S)1120 2492 MS (A)1152 2492 MS (L)1194 2492 MS (O)1233 2492 MS (M)1278 2492 MS (E)1334 2492 MS
+( )1373 2492 MS
+n
+1 1 160 2344 B
+f
+n
+1 1 160 2344 B
+f
+n
+2035 1 162 2344 B
+f
+n
+1 1 2198 2344 B
+f
+n
+1 1 2198 2344 B
+f
+n
+1 183 160 2346 B
+f
+n
+1 1 160 2530 B
+f
+n
+1 1 160 2530 B
+f
+n
+2035 1 162 2530 B
+f
+n
+1 183 2198 2346 B
+f
+n
+1 1 2198 2530 B
+f
+n
+1 1 2198 2530 B
+f
+[50 0 0 -50 0 0]/Times-Bold MF
+( )1180 2578 MS
+[50 0 0 -50 0 0]/Times-Roman MF
+( )1180 2635 MS
+( )1180 2692 MS
+( )1180 2750 MS
+LATENC /_Times-Roman /Times-Roman reencode
+[50 0 0 -50 0 0]/_Times-Roman MF
+(B)1025 2807 MS (e)1058 2807 MS (r)1080 2807 MS (n)1097 2807 MS (a)1121 2807 MS (r)1143 2807 MS (d)1160 2807 MS ( )1185 2807 MS (S)1198 2807 MS (\351)1226 2807 MS (c)1248 2807 MS (h)1271 2807 MS (e)1295 2807 MS (r)1317 2807 MS
+[50 0 0 -50 0 0]/Times-Bold MF
+( )1334 2807 MS
+( )1180 2866 MS
+[50 0 0 -50 0 0]/_Times-Roman MF
+( )1180 2947 MS
+showpage
+%%Page: 2 2
+14.449 827.879 translate 72 300 div dup neg scale
+0 0 transform .25 add round .25 sub exch .25 add round .25 sub exch itransform translate
+1 j
+1 setlinecap
+72 sl
+0.375 g
+n
+435 169 M
+435 136 409 108 376 108 c
+344 108 317 136 317 169 c
+317 202 344 230 376 230 c
+409 230 435 202 435 169 c
+cp
+CM 0.188 0.191 scale
+s
+SM
+71 sl
+n
+635 169 M
+635 136 609 108 576 108 c
+544 108 517 136 517 169 c
+517 202 543 230 576 230 c
+609 230 635 202 635 169 c
+cp
+CM 0.188 0.191 scale
+s
+SM
+n
+144 31 403 131 B
+1 g
+f
+1 sl
+n
+146 33 402 130 B
+cp
+s
+71 sl
+0.375 g
+n
+535 166 M
+535 132 509 105 476 105 c
+444 105 417 132 417 166 c
+417 199 443 226 476 226 c
+509 226 535 199 535 166 c
+cp
+gs
+1 g
+e
+gr
+CM 0.188 0.191 scale
+s
+SM
+n
+418 166 M
+532 166 L
+CM 0.188 0.191 scale
+s
+SM
+n
+40 24 517 174 B
+1 g
+f
+1 sl
+n
+42 26 516 173 B
+cp
+s
+n
+574 157 M
+551 157 L
+507 97 L
+537 99 L
+573 157 L
+574 157 L
+cp
+gs
+e
+gr
+s
+n
+380 153 M
+403 153 L
+447 94 L
+417 96 L
+381 153 L
+380 153 L
+cp
+gs
+e
+gr
+s
+0.375 g
+n
+410 116 M
+410 112 407 110 403 110 c
+399 110 397 112 397 116 c
+397 120 399 123 403 123 c
+407 123 410 120 410 116 c
+cp
+gs
+e
+gr
+s
+n
+554 116 M
+554 112 551 110 547 110 c
+543 110 541 112 541 116 c
+541 119 543 122 547 122 c
+551 122 554 119 554 116 c
+cp
+gs
+e
+gr
+s
+72 sl
+n
+640 113 M
+640 226 L
+CM 0.188 0.191 scale
+s
+SM
+[29 0 0 -29 0 0]/Times-Roman MF
+0 g
+( )653 244 MS
+/IsChar{exch/CharStrings get exch known}bd/MapCh{3 -1 roll/Encoding get 3 1\r
+roll put}bd/MapDegree{dup 16#b0 exch/degree IsChar{/degree}{/ring}ifelse MapCh}\r
+bd/MapBB{dup 16#a6 exch/brokenbar IsChar{/brokenbar}{/bar}ifelse MapCh}bd\r
+/reencode{findfont begin currentdict dup length dict begin{1 index/FID ne{def}\r
+{pop pop}ifelse}forall/FontName exch def dup length 0 ne{/Encoding Encoding 256\r
+array copy def 0 exch{dup type/nametype eq{Encoding 2 index 2 index put pop 1\r
+add}{exch pop}ifelse}forall}if pop currentdict dup end end/FontName get exch\r
+definefont dup MapDegree MapBB}bd/LATENC[0/grave/acute/circumflex/tilde/macron\r
+/breve/dotaccent/dieresis/ring/cedilla/hungarumlaut/ogonek/caron/dotlessi/fi/fl\r
+/Lslash/lslash/Zcaron/zcaron/minus/.notdef/.notdef/.notdef/.notdef/.notdef\r
+/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/space/exclam/quotedbl\r
+/numbersign/dollar/percent/ampersand/quotesingle/parenleft/parenright/asterisk\r
+/plus/comma/hyphen/period/slash/zero/one/two/three/four/five/six/seven/eight\r
+/nine/colon/semicolon/less/equal/greater/question/at/A/B/C/D/E/F/G/H/I/J/K/L/M\r
+/N/O/P/Q/R/S/T/U/V/W/X/Y/Z/bracketleft/backslash/bracketright/asciicircum\r
+/underscore/grave/a/b/c/d/e/f/g/h/i/j/k/l/m/n/o/p/q/r/s/t/u/v/w/x/y/z/braceleft\r
+/bar/braceright/asciitilde/.notdef/.notdef/.notdef/quotesinglbase/florin\r
+/quotedblbase/ellipsis/dagger/daggerdbl/circumflex/perthousand/Scaron\r
+/guilsinglleft/OE/.notdef/.notdef/.notdef/.notdef/quoteleft/quoteright\r
+/quotedblleft/quotedblright/bullet/endash/emdash/tilde/trademark/scaron\r
+/guilsinglright/oe/.notdef/.notdef/Ydieresis/.notdef/exclamdown/cent/sterling\r
+/currency/yen/brokenbar/section/dieresis/copyright/ordfeminine/guillemotleft\r
+/logicalnot/hyphen/registered/macron/degree/plusminus/twosuperior/threesuperior\r
+/acute/mu/paragraph/periodcentered/cedilla/onesuperior/ordmasculine\r
+/guillemotright/onequarter/onehalf/threequarters/questiondown/Agrave/Aacute\r
+/Acircumflex/Atilde/Adieresis/Aring/AE/Ccedilla/Egrave/Eacute/Ecircumflex\r
+/Edieresis/Igrave/Iacute/Icircumflex/Idieresis/Eth/Ntilde/Ograve/Oacute\r
+/Ocircumflex/Otilde/Odieresis/multiply/Oslash/Ugrave/Uacute/Ucircumflex\r
+/Udieresis/Yacute/Thorn/germandbls/agrave/aacute/acircumflex/atilde/adieresis\r
+/aring/ae/ccedilla/egrave/eacute/ecircumflex/edieresis/igrave/iacute\r
+/icircumflex/idieresis/eth/ntilde/ograve/oacute/ocircumflex/otilde/odieresis\r
+/divide/oslash/ugrave/uacute/ucircumflex/udieresis/yacute/thorn/ydieresis]def\r
+LATENC /_Times-Roman /Times-Roman reencode
+[29 0 0 -29 0 0]/_Times-Roman MF
+(C)192 287 MS (O)212 287 MS (M)232 287 MS (M)258 287 MS (I)284 287 MS (S)294 287 MS (S)310 287 MS (A)327 287 MS (R)347 287 MS (I)366 287 MS (A)377 287 MS (T)397 287 MS ( )415 287 MS (A)423 287 MS ( )443 287 MS (L)451 287 MS
+(\222)469 287 MS (E)478 287 MS (N)496 287 MS (E)517 287 MS (R)535 287 MS (G)555 287 MS (I)575 287 MS (E)585 287 MS ( )603 287 MS (A)611 287 MS (T)631 287 MS (O)650 287 MS (M)670 287 MS (I)696 287 MS (Q)706 287 MS (U)726 287 MS
+(E)747 287 MS
+[50 0 0 -50 0 0]/Times-Roman MF
+( )765 287 MS
+530 526 1 67 185 183 1996 92 false true 3 beginimage
+doNimage
+^]+;L^]+;L^]+;L^]+;L^]+;L^]+;L^]+;L^]+;L^]+;L^]+;L^]+;L^]+;L^]+;L^]+;L^]+;L^]+;L^]+;L^]+;L^]+;L^]+;L^]+;L^]+;L^]+;L^]+;LoD\gfp&>#Qg]%8hoD\gdp&>#Ig]%8hoD\gcp&>$0g]%8hoD\jhJ+imB_qY1k_"7R,r."G?!5[Fi!5S4+!WITBrrD$4rrBk+rrN*`pAY-Ng]%8hoD\jj5PG*WnD!sC_"7R,
+rZCk6!UtTorrBk+rrN*@pAY0gJ)(&(_"7R,rX\`&!Ven7rrBk+rrN*(pAY0g5MZ8=_".L*"8;`qr#a_o!5S1*!.aeC!WF1rrrBk*rr@TCrrN*0h#@Aio)Aa+J+imB#Mf=Z_".L+i.(J#!!h<Z!5S1*!T8J$rr@],rrBk*rrMURpAY,Fh#@Aio)Aa[+85^7_;,%j_".L+n-A[e!5RCi!5S1*!Up-`rrD!4rrBk*rrMThpAY0OJ)1,)_".L,
+n,Rt4rrMURh>[Jjo)Ad\!.XbC!Ur>5rrA,YrrBk*rrVrq5PP0Yp`JMq!"]&.!5S1*!rN$_p\t9l+6*;#TDeci_"%F*!'g5X!W4%qrrBk)rrIX7p\t9n&**ZiL]%/P_"%F*J04Lb!"\,i!!iH%!5S.)!It^TrrLFJj8T+3r;Qc4nc&W?#P\6!c[k-V!/(4L!5S.)!Peg3rrIn+j8T+3r;Qc4nc&XJ"8Dfra+<=O!U#+5rrBk)rrMTip\t97
+J`Qh3_h7me!5S.)!Vc]irrL/kjSo7ua8Gr;_"%F*p]:-h!QT`OrrC+:rrBk)rrMlqp\t93J`Zn4r"&])!5S.)!VcZhrrM$Xjo5AV+8c'<_"%F*p]1'g!T3t>rrMmZqu6Z3nc&Xb!;HKon,VSM!9!_R!5S.)!r)bFq#:Ba!9O4\_>=03_"%F+quD6ArrVZiJ*-b2"8`#t_"%F+rW#1XrrVs(5Ni%Ir"&Z(!5S.)!r`0Aq#:Ej$pWqT!Uq3-
+rrBk(rrE*1q#:Ej%Njm6!T63=rrBk(rrE*%q#:Ej#7p"t!5SF1!5S+(!It4GrrVs#&*Nrm_>4*2_!q@)^]F61!r*"UkPkO7q>UH1nG`OI!VlZrp]n_#rrM_Pq>UH1nG`OI!VlZrp]n_#rr@]HrrBk(rrMTiq#:Ej#N=qI!WE2rrrBk(rrMThq#:En#N4kH!W32trrBk(rrVrq5Pb<\r!2`UrrMm"q#:?0nG`Rb!'g;Z"8iDnJ*R%7p]pTo
+!5S+(!rN$?q>UQp#P`f7rrW2t#Pe<!_!q@*rW!K)rr`0$pcn*E!rP.cq#:?0nG`Rh!"\o*"8i9!5O8=Nr&b5ZrrBk'rrE*)q>UQp!W4&*rrW*X&,?/)_!h:(!!i?""9&?#+7&q.c2\CMrrBk'rrIWTq>UQr!<*MprrRoT+8Gj9_!h:(J-5TH!W`62li.$:!'g8Y!5S('!Pe^1rrR_##OMHmrVuqJq#:?0n,EII!.XhE!l.#*m/I.^!!2us
+!.Y"J!5S('!oO&Cq>UNS5D/>&!r)`tr;QfsJ,]HJ_!h:)n,P]KrrV[3KC&U>p](QsrrN%Irr2u6n,EIY!$D%:!q7:_m/I.V!"]#-!Vh0DrrBk'rrVrq+8Pp<p^_rBrrVZi+8l->i.(b+!5S('!r)a+q>UNo#Cu4A"8m*<5Q(N^^jl@`!5S('!rN$/q>UNo!!)Ed"8FPM5Q(N]JGoKJ_!h:)rW!K)rr`6#!.XG:"7Q9jJ,K<H!WE#u_!h:)
+rW!3!rr`6#E'Ndj!q60jr;QeJ"9&6"_!_4'!!i<!!W[Hemf*@H!'gD]!<<B'rrBk&rrE*)q#:BqHk5ZF!T3tUrrW0"&,lM._!_4'J-5TH!eC1Zn,EIZhuWcU!r)a;rVll5mf*<<!VlZr_#=l5rrTt9"8r0#huH"?rrBk&rrTt9J,0*G_#FZ.rrR]N#Q4T'^]8l_rrBk&rrTt95Pb<\i-u"#rrN0#&,cG.!!)rs!5S%&!oO&#q>UNSItR7j
+"9&9#&,lM0rW"qUrrBk&rrV*Y&,H5,n:/:Drr`0!!$D1>!r`1Lr;Qc4mf*@X!"\o*!q:]tnG`Uc!!",>rrN#uqu6Z3mf*@X!!i?""8G+MJ+<O@n6c5\rVlor"8i)u_!_4(p](Qprr`0@pcn<K"+fA1J,TBJn-Ajj!5S%&!r)`tq>UQp&,8B[rr`0$huN`U!r`01qu6Z3mf*@d!!E&s"9&Q'5P"gVn-@kPrVlrs!'gA\!5S%&!rN$!q>UQr
+"8j83rr_0i^^'i<!r)bFqu6Z3mf*@d!!2lp!Wi3@o)AgM%tG2hrrMThqYpQ2mf*@d!!)fo!Wi3@o)Ag-*rmD]rrMTiqYpQ2mf*@d!!)fo!eC7\o)AfB*rnP(rrM$_qYpQ2mf*Ce!!%NErrU"8&+]`%J0"^grrKnGqYpQ2mf*Ce!!#7ZrrU"8#P.lr%NYZLrrW)u+8Z!;_!_4)qu?^]q>UNSIfo9A!Y,V@rVlro!'g>[!5S%&"8i-!5Pb<\
+i'2b`rr_.#!"]&.!VcZjrrBk&rr`#r!'g;Z"7RC_J+`gErWaMF+8u3?J,oEF!5S%&"8Dir+8Pp=p^b/)p&>0m"qL\urr3'!!!2oq!5S%&"8Dir+8Pp=p]p:Qp&>0a%LrJgrr3&t!!E&s!5S%&"7Q9j#PnB%quc^9p&>-0*WQ3=rrW)u+8Pp:_!_4)n,NFjq>UQp!Vd2urr[d8!!3&u!rN$?q>UH1mf*Ca!!!,srr`6$r"&K#!s!cM"9&6$
+2uk&rrrBk&rr`0!!!E&s"9&?!&,#r)!.FnQrr3*"!!#7ZrrBk&rr`0!!!E#r!Wi30pAY92!.4bWrr3)u!!%NErrBk&rr`6#!!E#r!Wi'$pAY,CrVup?rr3&t!!E#r!5S"%!WW3$q#:DG!!)`m"98u5!'gJ_!rN$'q#:?0mJd6<!!)fo"+U@O+8Gj>rW%0C!.Y"J!rN$/q#:?0mJd9=!!%NEs8Duu#Pe<%rW%<G&,lM0p])E2rrBk%rr_0Z
+!'g>[!;ucqq#:JI!;lg=rVlof!VcTo_!V.(n,NG1qYpQbr;ZhIq>UQt!VcX:rVloV"8Dfq_!V.(p](:9qYpQRr;Zg>q>UQt"8Dj\rVllu#P\5u_!V.(p](:)qYpPGr;Zg&q>UNs+7KC2rrVrq&,6)(_!V.(p](:)qYp^!!WW-!"8`$#irK,;#QF`*j59nJp\t6/mJd:`!!!9$rs&B$&-)[F!W)g!^]FJN&,uS2_nZ6op\t6/mJd:`!!!,u
+rs&5u5QCcQ!;c]u!!E7O&,uS2K7Eqdp\t6/mJd:`!!!,urrMThrr3&t!.XqH"o\K,rr=/?rrRh'"8;`p_!V.(p](9pqu6]T"9/<%rW#1\rrr<#&,lPNrr3&;!!i5t!5S"%"8i-!!W2lti!95\!Iu9irrqll&,ZDlrr3&8!$Cq7!5S"%!<2rtqu6]4&,lM/^^pAC"Q08%p]:?n!l+e#pAY-.m/R%bqu6Zs5Q1T_i!92["FpIon-Asm"2DVO
+J+imB_!M+#!!#7^rrW0"J,TBJp]LKp"o\K%+5dD'rrO:X!;6?l_!M('^]4?VrVlot!;uitp]LKp"oJ?#+2AEdrrN<'!;6?l_!M('n,NG1rVlor!W;ruquQcr#k.fo++PI5s8Mutp&>$-m/I1W!!",>rrN$"r;Qfs!WE#ui;EW[5QCc]!!!&mrrBk$rr`#r!$D1>!Vccorr<&trr@TJ!<3!#n,NFjp&>$-m/I1_!!",>rrMm"qu6\IJ,]KH
+!!!-#rr^%:!$Cn6!5Rt$"8Dir&,lM/n.5Er"Fu"%s8Mrs!$D4?"+U@OJ+`gA_".L*5Q(N`qu?^%rVlof&,ZA5^d%l!rW!&9!.Y"J!e:7Qo`"p,oD\jj5Q(N`qu?^!rVloV+8c'D^d%l!qu?u;!WE$"J,g,PrrBk+rrN*@r;Qls!!!&urrM%"qu6r[5QCc]!"[umrr3)`J,g\`rrBk+rrN*@r;Qls!!!&urrKnWqu6r[+92B=!'fB`rr3)@
+J,hh+rrBk+rrN*@r;Qlu!!!&urrKo"qu6r[+92B9!'fC+rr3)@J,hh+rrBk*rr=/<rrR]N!<)ou^d%_r#Oii8s53m,_#=98LO]@ho`"p,o)A\3qu6`5!!)ut!Pj3^rs/$(s53kWIt@Ru!sa>VJ+Wa@_".L*&,ZA/huEb,rr3"LJ,B6Nn.5Q7!!%KNrr3,r#64aRo`"p,o)A]Fqu6cf!!%NJrrIY"qu6`m&-)V/!Ik@Rrr_`j!!2]k!5S1*
+!/(1K"7Q9j5Q:Z_JGT9Ip^dE(!!.NZrr3)i!!!,mrrBk*rrBn4rr`#r!$D4?!.aqG!r*<*rVus]+9)9BJ,fQ[oD\g+o)A^+qu6cn!!",?rr@TGrs/<0rVurV!$D4?"+U@O+7oL4_".L+iQqH%"7Q9j&,uS/JGT9Np]p]s!8miArr3'#!!.T@rrBk*rrM/8r;Qlg!!!9'rr@TGrse`'GQ7d&!.Y%Kn,NFno)A^*o)AaLa8Gr>p](9rrr2tK
+qYpQjrW!68huJ9,s1eU7&+]`#_".L+n]1S-"8Dir!WN*!JGT9Gq#16p&)[Herr[cO!$Ce3!5S1*!V+)*rr`0!!!3*!!.aqG#5A/u%hIS#rr;rt!'g&S!5S1*!Up3gs8E#trr@TGrsAH#!"T=M&-)\/rVuqJo)A^*o)Aac"8i*&^]4@as8RWGrsAH#!"T1I+92B=rW)Kg!5S1*!Vccors%B]!.Y%KJGT9Pp](:9!!#7`s7lQnnc&U)o)Aai
+"8i*&huEaAs8RWGrrr/t!$;1@rr3)i!!!&irrBk)rr</urs%rm!$D7@JGT9Lp](:9!!3*!rVup#nc&U)nc&Riqu6oj!!",@s+#Urrs8B"4<FP*s8W)t!!!8orrBk)rr<)srs/<!!"],0J:IIr#k.hC*rliOs8;ir!"\W"!5S.)!!)or#P\9!#QOh>J,B6On,`P"!.Y%Kr;HZr5OnaR_"%F*J:ILs#P\9!"98D:5PtH`n,r[p!WN*!r;HZr
+J+<O=_"%F*n3?jN#P\9!!WW285PtH`n-AuD"9/<#q#19_rrBk)rrMm*r;R$"!!!'"s1gkrrrh6bpOEAFrr`#r!!2Th!5S.)!W33#rrE&t!!E9$i#hjr"Q0OFJ-Z)R"+U@O#Oq`n_"%F*qucirrW!'#s55!rrs-=EiIDI=s8Mut!.XM<!5S.)!W3&srs$7=!.Y%,&,ZA/^]WKprr2urrVuqJnG`L(nc&Xh!W2m$n,NGQs6pQrrr[cO^^'l=
+!:]sf!.XM<!5S.)!WE)rrs&5u!$D71#Q+N'J,fQ[rr2uVrVuqJnG`L(nG`Rjs8N-!rs&B$!$D79"8i,t!!",?rr@TK!!%N<rrBk(rsaMYhuElZs8Duu&-)P0r;QcrrVuqJrr;os!$C_1!5S+(!Pj3a!!n)Srr<$(s82oqrrDur!!@`Ns8Mrs!!D`j!5S+(!PisZ!!j,8s*t(Os8E#rrrDur!<2uuq"t-]rrBk(rrM%crW!6,s8RTL"98?#
+J,TBIq#19mrrDQd!!#7RrrBk(rrD!U!!r]+s1eU8s8N'`rVluh!!!'!rrBk4!!!Q"rrBk(rrD!T!!n)ShuEcWs*u3irr^%:!!3*!qZ$U$pAY0mJ,]HJ_!q@6p](:V!!",@huEcWs1f0Drs!uR!!3-"rr)m"#Oh]opAY0mJ,]HJ_!q@6p](R!n,O"!n,NH<s54"Xs8E!#"98E!rW!'#s*t+CrrN%Irr2u6nGa!f!'gM`!!iPn!!#7`n,`Og
+!;ufr$O?_3p](:!s8VQgJ+rsCrr)is_!q@)huWiW&ASDJp](:Ys7cSDs8VQg!!iN'#k.fo+92B=!'g&S!5S+(!Pes>rt+Z#s7cQo+926=&-)[F!!!Q/rr^%:!.Y"J!<=5:rrE&rrrBk(rrIWlrr3E)!<;fo!"],/!!3,trW!-ErVunJ!!3&u!Pf6@rrE#qrrBk(rrE*arr3<(!.XnH!!iQ(JGT<N5Q(Q]!!!-"rrM$_q#:?ir;Qc4nc&[i
+!.XtI#QR*e!!!9(s1nL3#!`%cqu?^%rVlof"8MlroDJUg_"%F*quHZp#_4#p!!!-$s7#mc#!`%cp](:)rVlon!VlZpa8Gr;_"%F*p]:<m#f%P[!!!'"s7lHk#!`%chuEa!rVlor!Vu`rr"&`*!5S.)!VccprrV*hr;HZts8W)q!!Y[es1eU75Q1T_rW)co!Vdc7rrBk)rrMTor;Qif#Q4Q$rr2tKr;['B5QCb6!!%NHrrE+LqYpTkJ,K<H
+_"%F*i",bc!r*#urW!%Ms8V$U!!@U5s8Mutqu6\IJ,90FYl"G#_"%F*i#hms!rN0"rW!$bs8Tn5!!`EEs82is!W2lt^d%\q!!2us!5S.)!PffTrrW*#rr)m"+92@krW!0*rZD18!!!,urrKo"qu6]r&,ZA,_"%F*^d%bs!r`6"rW!!As8W#t#7(8>s7cQo"8i*!i#hjr!W51ZrrBk)rrIX7qu6Zts8E!"#QO`#!!a&7&-"Th!!iE$!T5's
+rrN%Iqu6Z3nc&W?J,B6N!<7QL!!E8Zr;Zpart#//!!!9$rrMU"qu6]lJ,B6G_"%F)!;c]s!<7TK!!#7]!!@`NL]78Q!"\u,!UpWsrrDijrrBk)rr<&qrrR`N_"ds5!WW1Trr)lt&,ZA-p^d9%!;ZKk!5S.)!!2rr!e>dYqZ$g[!!E9$KDtiM!"\u,!VcokrrBk)rr<)rrrTucnG<1iqu@!%s2"^6!!",<rrN$&r;Qcqq>UH1o)Aai!W)ft
+^jkkO!!`Q&!$D7@_>O94!$D+<!W33#rrDrlrrBk*rrN*"qYpW45PY-V#6F`&5QCc!q#16n+8c'=qucls!;$$d!5S1*!WE2trrTu#r;6O!"8i.Ks8V$U!!",<rrN$"r;Qc[q>UH1o)Aai"8`$!i'75=!!3]+!<2uui;EWU5PtH]rWE)u!!i?"!5S1*!WE2trrV+Crql`t+7KC3rrD!U!!#7\rrN*"rVlor&,H5*_".L+qucfq!oQ<Cr;Zp)
+s1em=rrD!U!!#7\rrN*"rVlor+8Pp:_".L+qucfq"5lEDJGoNN+9)<Orr2uVr;Zg^qu6]r!WE#uq"Xjh_".L+qucfq"5lEDJGoNN5Q1XIrr2uVr;Zg^qu6]r!WE#un+cn__".L+qucfq"5lED_#=<95PtM2rr2u6r;Zg^qu6]r!WE#uJ,'$D_".L+qucfq"5lEDi;N]YJ+s"nrr2tKr;Zg^qu6]r!WN*"pj`)=!5S1*!W3&rrr_1Ds5<kV
+!e9\>rVufr!C/mHrrN*"rr2uWp\t6/o)Aag"8`$"i'782rW!"LhuWiW!;ucq!PgqsrrN*"rr2u9p\t6/o)Aag"8`$"i'782rW!"L^]FH7!;QNn!Wg)$qu6]r!WN*!KD5BG_".L+rWE#s"5lEDnGWCh56(fbrrDQf!!32:5PtH]rW3#u!/L=K!5S1*!WE2trr_1Ds7$!f!Xo&6rr2ufr;Zl65PtH]rWE0"!!i8u!5S1*!WE2trr^&$s7#pd
+!.Y"J!9!eU!T63>rrr<&s8W'?p\t6/o)Aai"8`$"^d%kWquH]q!.b%K!c['>qu6it"98E!J+rsC_".L+rW2lq"2KEd_#465!WE&t!!<8k?m#:G!W32orrBk)rr<)rrr^&ds+(%J!!E6#!<2rt!s/1)+8c'@r!39%TD&9b_"%F)!W)ftJ:IUs!!!-#rrE&t!!<9"?k</7"S`6%s$-5W!5S.)!!)lq"Fu"$!"Ai,!!iN'!<2os!rO__qu6fo
+#QOdQpAY-.nc&RhqYp\Ks7cR8rVup'rr2unr;ZnJ0G"'\"S`N-r."G?!5S.)!.aqG"9AJk!'^A^!"])/#N,R^!Pj-a#Q+N'n.5Qsp&>$-nc&W?J,B6K!;M'EIf9<I&,uS6^]4?:i'%,Gqu6cf&-)S#rrBk)rrKo"r;Qs"!Up'hrr)lt&,uS6J,fQSn36mTqu6cV+9$c_rrBk)rrKo"r;Qs"!T3q_rr)lt&,uS6J,fQ[p`BJ<qu6c6+8A(n
+rrBk)rrM%"r;Qru"2Fn$r;HZr&,uV.!!Ei-%tF]Xrr^&$n:1-2!5S.)!T4Ldrrr0"J,hh3rW!$*s8W)t!!FDA&&82BrrR_#iUm-M_"%F*n-Amk"o&<&!.XqG!!<K+s7lQn"[Dtk_>o)`rrN1M_t<s/_"%F*n-Amk"n2Wp!WW)s!!<?'s5<kV"[E"hrr@QIrr`6#s24L/!5S.)!Vccprrq<\!!iQ%rW!$$s8Tn6!!PUe_uG6OrVlut!<7iH
+rrBk)rrN#tr;Qr9!!",@q#16q!WW1MrW!*ds5F!.+8u3Ap]19uo`"p,nc&[i!.XtI"b6RQ5QCNW!!3-"r;[!cs5<nW#Q=Z)n,NG!o`"p,nc&[i!'gJ_!<2rt!rr;ir;Zluq#(0r5QC6Q!!E3""5j.Z5P4sU_!q@)!$D4?#5eH$!WW2hr;ZkJi;N]\3.Lu'Ih2YZrrTt9!V?<k_!q@)J-Z)R#5A/u"98D:r;Zj_JGoNRG^obk5F;G#rr3$"
+!"\]$!5S+(!Peg:rs.H^!!iQ(!$;+>!$D.>%JYGQr]g;\+92B=!!",4rrBk(rs\AsJ,fP!!!!Q0quAt\!!")=!!)fnrs9eH!!iQ(n,NH<oD\g+nG`Xd!"],-rW!37s7cSDJ,fQXrVup!rVm.arr<'!s*t(Lo)A^*nG`Ug!!%NI!!OJEn,`R)qZ$TsrVm/LrVup'huE`Xo)A^*n,N4a"X!d6"97<V!!!-"rrL1<qZ$Tuo)A^*n,EB<qZ$dA
+s54.^i;3KS"9&6$kPR=;!!!Q#rrBk'rrD!S!!PUei",kWqZ$U$rVlrZr]L)Y!$Ce3!5S('!;QEk"[E$;5QCNU!!!9&rrV0Y+8c*=5P"gS_!h:'rqc[!5PtM2s7lHk!"]&.#iYb)huE`ZJ:I.i!5S%&!5SL4"[Dncs8W#o!!",>rs.N_+8c*=++`t^!5S%&!;u`p"[Dbas8W)q!!#7^rs/)oO8lurs+BkA!5S"%!<2os!^8:Crr;iqr;Qig
+s+gUR!WE>orrBk%rrE&s!!5=a5Q:]\!!!9%rrW)ta8Z)>r#bJ/!5S"%#P\9!Du`!#J,]HJJGfHJ+8Z!;j8T&Zpcn<K!5S"%#4MTmn,PQNrVll5r;Zg^qu6]coD\ajn:1!.!5S"%#2fI]p]*8SrVllUr;ZhIqu6ZZrVll5nG`L(mJdC+!!2ip3!9-Z!9!eUqYpQUrVlkMnG`L(mJdB@!!iE%3"Puf!9!hV!!E)t!;$0h!!i#n!5S"%"onXQ
+qu?^=rVllUrVup'qYp`hs53kU&+KT!_!_4-rVururVup?rVll5rVup/qYp`gs,[3X+7T:1_!_4-qu?ctrVup?rVlkJrVup?qYp`oIu"(!J+3I<_!_4-p](Errr<$@rVufr!$D(;"SdJ%s5<AG!5S%&#Oh]us8N(<+9)9?rqufs+8Z!?pcl[rJa`U=_!_4-huF#^rrDOQrr2urr;Zg.qYp]n+63A'n,EC'mf*O-!"],0!:W5PrrDim!!!9#
+rri61nbrd^rrBk&rs+&S+92@kn3?pP!:]pe!!iB#"TAr$p^cin!5S%&#64`gs8N)g5Q:Z_i;EWU"8Vs!L\Lj6n,EC'n,EIg!!*#u!W[1(rr2tKr;Zfuq>UPLquD68rrBk'rs8N&"98E#!&-Y:s82is!Vu`sKDY`;rrBk'rsS;r+92B9!!#7`s8;`oq>UMIqucBe!5S('$fD#7s8VQs!'gM`q"k$kJ,90H_#+H*rrBk'rrKn9rr32l56)f*
+s7#mc!.XkF!oS;6mf*:&n,EE="9/<)i.$8!s8Tn3!!#7[rrW+;+7B./_!h:(!"])/#2oNs&-)Z[qZ$U<q>UHqJ+Wa@&,cG-_!q@*rW"&>rrp4<i!9;^r;Zr8!!",:rr</nrrN$^r;Qc4nG`mo!.Y%KquQie"98B"!!EDn!!!Q*rr<;rrrMnEr;Qc4nG`Oa!<3!&p]LQc!WVro!!EPr!!!9"rr<T%rrDTdrrBk(rrMTkrr32l&-)D*s5<kV
+":tD1!!E&s!tW0IJ+rsCj88iV_!q@)i!98]"lLL&quH`p!!FDA!!!,trri<0!!!8urrC+:rrBk(rsHO`s+(-b+92<?r;?Tu5Q1W_!W)fr_#=<6!VcTochm_B_!q@2J3Vrl"+VKnrrDuq!!.TLrW)fp!.b"J!'g8Y!2'/g!5S+(!<@TI!!GOdrrMoo!!33$s8DuuJ,B9D!!",:rrN*@qu6Z3nc&[i!VlWo!!3*!!J1%F!!39&s8DuuJ,B9D
+!!!9"rrMmZqu6Z3nc&[g"5s.Y!!3*!!Q"R1!!3E*s8Duu5PtKY!!!&qrrMV=qu6Z3nc&[c%tOWZ!!3*!!PnL0!!3]2s8Duu+8c'A!!!9'!!)ip!5\O3!5S.)!Uq3/!!IfOs57;a!!XPFs*t(L+8c'B!!*'!^]8l\rr<<#rrBk)rsI[H!!3,8!'gM`i;EW[5QCb6!!!Q.rs8Tg!!iQ(p]*PUrrN*0qYpQ2nc&rHp])E9qu@i=s5<hU#(Q[Q
+^]4?>rVlut4oc](rrE*Aqu6]r+8Z!;_".L-rW2Kgrr3+O#QOhnr;cis"8Dir"9&6%r#>]drr3"L&,ZA-r#be8!5S1*"+UWl"9/<'huj#ZnGWCf!WN*$rVup#rVlro2urpW!T44[rrMmZqYpQ2o)Adl%tG2irri)ts8V$V!!!-"rrN0#!WE$"pb2gKrrMTkqu6]dJ,90F_"7R/rW"#?+9)9CquHcsi;N]V&,lM0J,fTJrrVuR#Q=Z'p]:9l
+!T8J(rrBk+rri6"IK4lrrrW7Ns5<kV!$D1>!l+d9rVlrpi",ed!W2rprrBt4rrBk+rr`#rquHZp"+WW9_#=<65Q1Ta^]4@arVlo6+8l-=!;lcr&,H5*_"7R.p]LEpr;Ql75QAOu!;uj!huEaArVlnK5Q(N^!.XtI!WF2:rrBk+rr_a$p]LHo#2gU'J,fQMr;R)m!!",@s7?6jJ,K<IJ3X#4!W51XrrBk+rr_aTn-Amk!q6a#rVup#r;R)u
+!!",@s5X+ZJ,K<I^d%et!VenTrrBk+rr_2/n.5Hs!r*<*rVup'r;R'#!!!Q0s5X(Yqu6]T+8u3?pj`,>!5S4+"2Orp+8l-?p]p`r!!!Q-rs8N&!!iQ(a8Q,:rrM$grVlleq#:?0oD\p/s1f`SrrW*#q#16n&,cG5rVup#s8UFC!W2ltn.5Kt!9*_Q!5S4+",$Wh5Q(N_qucHf!!!Q,rs&N(!WVckqucir!Vd3(rrA,TrrBk,rri6)s+#Us
+rrW0#i;N]V&,ZA3J,fTLoDeRfqu6]l#QF`(r]g2X!5S7,"8EE,JGT9H!Pn[7!"\u,#J^<>s5X.S#Q+N%r!36$!Vh0>rrBk,rr_aTs+'tGqu?^%qu6oZ!!%M"s7cirrrN$"rr3#gJ,'$D_"@X/i.(b,qYpPGr;Zg&qu6oZ!!#4cs6pQrrrN$"rr2uVp\t6/o`#$/s8N,rrr@TJ!!!9$rs/#n!$2CFn.5Er!WE3#rr@WErrBk,rr[iPrrMur
+!5SO5!!iE$#P\9!#S6t)&,ZA-rW3#u!!Duq!5S7,!sAT&"8`#t_#=<749PK\!;ufr"!@R4&,ZA1rW3'!rWi2t!5S:-"TAZ+rWE#s!5SR6!Ik4KrrE&t!!>Icn/qQ-"o\Q&s83E%rrBk-rri*-s8E,srrBk6!!3+Nqu6ZqrW!%Ms55!rrrrB&s8VjYp\t6/p&>-p5QC]bqYpQRrW!$"J3Wr2rW!'#s55!qrr`B&s6tO4rrBk.rrrB%J,fEO
+qYpcX!!!'"^`WIR#(Q[Ss8V"!qYpWts8Tn.rrBk.rrrB%s8W!%qYpcX!!!'"^^p>B#/C3=s8V"!qYpWts8RWCrrBk.rrr/us8W!%qYpcX!!!'"i",_b#/C3=s8V"!qYpWts8N,nrrBk.rrq=&s8W!%qYpcX!!!'"pQ,4O#2fI]J,eFKqYpWts8E&mrrBk.rrp2&s8W!%qYpcX!!!-$s2Y$:#4MTmJ,eFKqYpWts83,qrrBk.rrmq&s8W!%
+qYpcX!!!-$s2Y$:#4MTm5QBX`qYpWts6tO3rrBk.rr<&urrN$&qYpcX!!!-$s2Y$:#4MTm+917@qYpTss5<SM!5S@/!WE3#rrN$&qYpcX!!!9(s2Y$:#4MTm&-(Q0qYpTss1n=-!5S@/!W3K-rrN$&qYpcX!!!9(s24a6#2fI]&-(Q0qYpTts+0kC!5S@/!Vdc9rrN$&qYpcX!!!Q0s5X"V#2fI]#QN^(qu6ct!WO87rrBk/rrMURrr3#s
+#Q"H)huEa!s8V'Trs%B]!!E8Z+8c'?rW3!?p&>$-p\t9PJ,]HKr!3)u!oO&Crr3#WJ,K<Nn,NFhs6pQrrr`6$pcnHO!5S@/!5SR5!WE?#rrM$XrVloV5PtHa!!!'"n.5Er"9&>j5P>$V_"[j/iVicWrWE#s!Pea7rrM%Bqu6iX!!*&g&,ZA.rW1sLrrBk/rrDZhrrN*$qYpT3"9&6#n/qW/#Q=\t!!%N<#Q+N&quak/rrBk*rrN*$qYpT3
+&,lM/n/qW/#PnDt!!#7Y#Q+N&qu_`HrrBk*rrN*"qYpT3+8u3?p^d?'#PnE!!!",9#Q+N&p](QkrrBk)rr<)rrrIX7rVlor"9&6)nc/Uh!$Ct<qu6`m!"\`%!5SC0!/LIO!!2rr!.atH$j$8+#QOW"s*t([qucir!r)a+o`"p,q#:=!qu6WrqYpNqqu6c6^]4B5rrg+;#Q+W"rrVZi+8#R5_"dp0#Q+N$JGT9G!W2lsi;N]V+9)9C^]4K9
+!W2luhuJ9!rrBk1rrN*0qu6\IJ,B6G!W2lsnGWCf"9/<'huElY!;lcshuNBK!5SF1!W3K*rrKo"r;Qfs"8i)ui;N]V!WN*&n,NLh!.XqH!Peg/rrBk1rrMURqu6]45Q(N^qucir!5SO5#_2mSp](<o!.XqH!It:DrrBk1rrM&-qu6]T+8l->r!3-!qu@!Es8Vus!<7R6r;Qct#P7rq_"n!1JGT9Hi",bc!Vcotrso#.!WVWh&-)\/!!%Ma
++8u3@rW!2prrBk1rr<)rrrMTor;Qfe&,cG;qu@9-rr<<(s8Duu5N!(Nrri6""96./rrBk2rrN*(qYpTk"8r0"i#hms#4MVBs8Tk8rr3*$!$C\8rVm#q!!E89p&>$-qYpTk&,Q;,p]:<m!PffTrrM$Yrr3#g!<3!$J,g\\!WE$$n,NLhTCr3a_#"'3n3?dL!W2urrrIX7r;Qf5#QF`0quD6Hs1eUFp]19m"Q0Lcs3LB<!5SI2!T8J(rrW0"
+J,TBJ!.XqH!It^[rsJ`*J,fQ,!!iE%J,]HNJ.KHqa7]H4_#"'2_"dp1!'gJ_!WE)rrrE*arVmI[5QCcQ!!iK'+92B?!$C/!kOniT_#"'2Jb]6GJ04dj!Vc]nrrW0"J,TBZ^`WUVp](Er!!E9$p]*PJs6'(T!5SI2!"\l)!Pes>rrM$[r;Qfs!;uj/i",kfp](?p^]8la^]8lRJ+rX9!5SL3!W51WrrM$Yrr3"L#Q4T&quQ`q&F]r)s82it
+s53kZp](<opj_r9!5SL3!Vh0>rs%rm5QC]_&,cG.p]LHo#l"Z)s8Duus7#se!sAT$J+Wa@_#+-3nFuqequ@!%n,OR.rrMm"r;Qfq"9/<&!!%NHr;Zg&nc&U)qu6ZTp\t6mqu?^]r;Qfe#Q4T&quQfs"+UA9s8;ot+8u3>^\7[-_#+-3_tO-.!;lcsn.5Hs!WE-!rrdiP+9-lj!!#7^rrA\brrBk3rr@iJrrBk6!!!,urrM%"qu6Wrrr3,:
+!$D71rVup_rVllTpAY-.qu6X,pAY-NrVup/qu6]T+8c'<!<3!$huF;frr)ltJ+<O=_#435rX\`&!5SR6!'gA\!Pgqsrr@TKrs/#n#QOhn!!)Ng!5SO4!W4&5rr@TK!;c]r^d%_r#(V4's7cR!rr3#W!WN*!p[nIc_#435pcnKPrVup'qYpSHJ,B6M^jlCap](EqrrM$_rr2umo`"p,r;QfeJ+rsCrr)lt#Q"H#JGT9M^jlCaqu?csrrM%B
+nG`L(r;QcTpAY-jrVup/qYpPGqYpc85QCc_!!3*!!5SI2!.XbC!5SO4!/("F!;QNn!"\r+!!)lq!T63ArrE*"rr2u9qYpPFp\t6/r;Qa%pAY-^rVup?qYpNrqYpTS5Q:ZdJ,k*!s+gIN!.XbC!5SR5!WF27rrD!V!!",;rr<)rrrM%"rr3/;!'gM_&+BMu_#=96r'0oT!5SR6!'g>[!!2rr!Uq31rrq<\5QCX'n,EC'rVllmp&Fsj!.XnG
+!WE,rrrMU2rr3/k!$D79+7K40_#=95oCi1arquinrrN*"qYpTc+9)9Dn,O"!n3?CA!5SR5!9a(U!;ufr!!iB#!WE2trrMU2rr3/s!!iP^J+*C;_#=95TD&9bq#16n5PkB\rWE#s!Uq31rri6"#QMU-rrBk5rr=/7rrDQf!;ZWqrWE#s!Uq31rri<$"93r?rrBk6rrN+KpAY6Q!!!&qrrN*$qYpTc+8u3A!!3*)mf*:&rr2urp&>-0!!!,s
+rrN*$qYpTc+8u3A!!)p-mf*:&rr2uqp&>,E!!!Q*rrN*$qYpTc+8u3AJ,o?dmf*:&nc/Rg!$D%:!WE2trrMU2rVlu8!$FMorrBk*rrE&t!!#7ZrrN*"qYpTc+8u3AhuEb,mf*:&o)A^frVuqJq#:<pqYpTc+8u3@n,NIUrrBk*rrDin!;HKn!W)fsi#hpt!r)`rmJd1%o)Ag]!!!&orr<)rrrM%"rVlro!!DWg!5SU6!.X_B"5j.Z"8Dfq
+!W)fsi'72?!rN$#mJd1%!rr<"p&>-P!!!8urr<&qrrM%BrVlrs!!hok!5S1*"2Fm:+8>d8!;c]ri'72?!rN$'mJd1%!rr<!p&>,E!!#7Xrr@TGrrKo"rVlrs!!DWg!5S1*rVuqJp\t8EJ,B6H^jl=_!rN$!mJd1%oD\girW)]m!rN%Jqu6\IJ,TBKqu?`arrBk+rr`0!!!2io!r)a[qu6\IJ,TBKp](<]rrBk+rr`#r!!Duq!q61Squ6YH
+r;Qlo!!%N:rrBk+rr_`j!!i8u!q613qu6Wrr;Qlg!!#7OrrBk+rr_0Z!"\i(!oRH.r;Qfs!W;s"i%P-Qmf*:&oD\p.!!",8rrTuT&,cG.rW2rs"2Xm8+7B./_"7R.J,fR6p\t;Fn-Amk!W3&trrWB&!"\Mt!5S4+rVuqJp\t;Gp]LHo!Vccqrri<+rr<;lrrBk,rrE&t!;?Eo#P\E!rrMTorVm#u&,uV3mf*:&o`#$k!!!&nrrN`/!W;ru
+n-Apl"Sa)=J-56>!5S7,"8Dir"8DftrZD+>r;QfU%fQD1n3?r'!Ufsf_"@X/n,NFnp\tBo5Q:_5rVlqL*.Rtf"Q9=[^]<g&!5S7,"5j.Z&,6),pj`;D+8u3@!'ELFrrp7=s53m,n,EC'o`#$/!!",8rrhiks1f0Err`6#IR!i3"c*-Xp]*PIrrBk,rr[cO!'g5X"QBC\huiuY"8Dlq+9)9D&-)\-!"\Pu!5S7,rVuqJp\t?us8VQgrr3Db
+!WF2@s8F,?s8E!/n,EC'p&>$krW)Zl%hJ^?p]*PYs*t4N+92B=5Q:Z`!!hum!5S:-"8Dir!VZO(TE"rh!"],/!!iKFs8VS<rr3"L"7Q6i_"I^0n,NFjoD]3t!!#66!"])os8V$UrrKn9n,EC'p&>-P!!!8prr@TJ!!#7^rrBt8rrM$Xn,EC'p&>-0!!!Q#rrBk5!!%NIrr@iQrrVZiJ+3I<_"I^0J,fQko)A^ZrW!-'s8W(Jrt#).!q62>
+nG`L(p&>,E!!#7YrrN*`rVllqrW!--s8W(JrZD+=!r)bFnG`L(p&G!k!.XeD!W51[s8E!&+92B=J,DP0rrW)u+7T:1_"Rd.rr)olrrMmZr;Qif!!*#u"8mZDJ,TBKrW!JurrBk.rr`#r!!2io!UtU9rrIWlrr3&tJ)L5(!<<AorrBk.rr[cO!!2io!:][]!rdQJqu6\IoC2b[_"Rd1J,fQOp\t6_p&>*mHis9G!J1(9rrBk.rr[cO!!Duq
+!;Z9e!IP.LrrKt2nG`L(pAb*l!!hcg!W3K*rrM'UnG`L(pAY3qhuF#WrrN%Io`"si+8c'>nGIe+rrBk.rrWMq!"\l)!;uHg!VenVrrVun5OnaR_"[j3rX\Ju&,?/)q"+Ldpj`2@!rdWjnc&U)p\tB3+7K7Pq#:?ioD\g+q>UI[&+TZ"_"[j3^`VJ75PY6Yqt'gfJbf<H*tRoA!5S@/"Mc,;!.XhE!WIT?rr@]IrrJ2$nc&U)p\t?2+5d1p
+rrN*`oD\fGq>UK9j73-L_"[j2`ZMu,q#:Bo5P+mT&,H5+kOJ*B!5S@/"33WV+8Gj:rdXS?!WF2:rrM`enc&U)p\t?9^ApLnrrN%Io`"si5Pb<[q>Bd_!5S@/"7Q6iJ,'$Dq"+Ldpj`,>!rVtGo)A^*pAY3n!.XeD!;Z6d!;Q?h!ri*^o)A^*pAY0m!8[YUHlqqZ!5S=.!W2uSrrN$>o)A^*pAY0g"6KO_chdYBr"&Au!5S=.!Pf61rrDin
+rrC+8rr<;prrBk.rrE*Aq#:?ioD\g[rr2uYqYpTZj7<3M_"[j1rW#1XrrDT\rrD$WrrD6YrrM`Mo)A^*p\t<o!'g8Y!;#g^!5ng9!9a4Y!Vu6UrrBk/rrW)uJ,'$Dj7E9Na8Z)=p\OmkrU>=.rrBk/rrN#up\t6RoD\e$pAY3li.(@u!5S@/!Vd3"rrD*OrrN*@pAY3n!'g)T!5S@/!Uq3*rrDfcrrN$^p&>$m5P+mT_"[j0^`Vh@!W7H?
+rrIWloD\g+p\t6o+6ie*i;ETToD8If^`W1J!5SC0!rN$_l2LbHr;QceqYpTS&+ff$_"dp1quQQl!6=^2!71TC!:fpc!UpWkrrBk0rrMlsp\t66oD\fOr;QcmqYpTk:\4Sd_"dp1n,rFb!0?aO!2&o`!W;-PrrBk0rrMTkp\t48oD\e4o`#!jj.GuD!5SC0!T44XrrN*`o`"sk5P+mUn.50k!5SC0!T8J&rrN+Ko`"siJ+N[@n-AUc!5SC0
+!5S@/!W7H>rrDibrrMm"o`"p,q#:>Ep\t6moD\gbo)Aac"8)Tn_"dp0Ja!+6cgq):p]L0g!5SC0!!2<`!0?^N!W2ujrrBk1rrN*$l2Le`+7fF4rW2Zk!5SF1!Vcc]rrN$^nc&Rio`"p,q>UK2#O26hpj_i6!;Q3d!5SF1!It^FrrMV=nc&Uao`"p,q>UHq+6ie*i:-aIpj_u:!5SI2!r`1Lq#:?SoD\g,nG`OeJ+`gA_#"'3rW2cn!9`tR
+!5n=+!W51TrrBk2rrN$"p\t66oD\gRnG`Oe&,#r&_#"'3r!2ur!9a"S!;Gs^!WE>srrBk2rrMm"l2LbHmf*7hp&>$-qYpTc&*a)oa6rs-JbB$C_#"'3i#h4`!0?RJ!5S:-!5SI2!Iu9WrrN*@mf*:Gp&>$-qYpQr5O/7Lr'0WL!9*VN!5SL3!rN%Jq#:?_o`"se5OSOOiV!3N_#+-4p]1'g!9a"S!Vh04rrDT^rrBk3rrM$Yl2LeRJ+!=:
+nFce]_#+-4^]Wj$!9!8E!Vd3!rrBk3rrIWTl2Lb(m/I%jpAY-.qu6Zt&*a)oO6llH_tO*1_#+-4#G:;]!WEVrrrD*QrrBk4rrN*(l2Le^+70"-j7`KQ_#435r!2Kd!W51KrrDZarrBk4rrN$&l2LeZJ*d18nb2t__#435p]p'`!UtU*rrDifrrBk4rrMm*l2LbQli."`5PP0X_#435n.4d`!:fCT!W32srrBk4rrM%"l2LbTli."b"8Dfq
+_#435^`Vh@!;GdY!.jnE!5SO4!!(CG!9<hR!5SR5!WE2crrDlOrrBk5rrMm"l2LbBhZ!SkrVlof&*a)oiSOS7_#=96i.("k!0?":!5SR5!5Rgu!"\;n!6=m7!5SR5!.a>6!WF2)rrC+7rrBk5rr<&`rrN$>kl1YCq#:?0rVlluJ*R%7pcmX8!5SU6!r`1LlMgnSJ):2*_#F?8quD63rrD$6rrBk6rrMlpl2La=h>[Jjrr3#g!U9Ua&)I6c
+_#F?7n,qtU!WG=GrrDN`rrBk6rrL.FlMgn_J)1,)_#F?7O,*$#!;tXP!5SU6!>!NArrDiLrrBh:s8W'?l2LbZh#@Ai"98E!+6ie*q:tuM^]XW:r#b2'!;YFM!5J^:s7egrrrBjLrrBjLrrBjLrrBjLrrBjLrrBjLrrBjLrrBjLrrBjLrrBjLrrBjLrrBjLrrBjLrrBjLrrBjLrrBjLrrBjLrrBjLrrBjLrrBjLrrBjLrrBjLrrBjLrrBjL
+rrBjLrrBib~>
+endimage
+[29 0 0 -29 0 0]/_Times-Roman MF
+( )2181 275 MS
+(D)1596 318 MS (I)1617 318 MS
+(R)1627 318 MS (E)1646 318 MS (C)1664 318 MS (T)1683 318 MS (I)1701 318 MS (O)1711 318 MS (N)1731 318 MS ( )1752 318 MS (D)1759 318 MS (E)1780 318 MS (S)1799 318 MS ( )1815 318 MS (R)1822 318 MS (E)1841 318 MS (A)1860 318 MS (C)1881 318 MS
+(T)1900 318 MS (E)1918 318 MS (U)1936 318 MS (R)1957 318 MS
+(S)1976 318 MS ( )1992 318 MS (N)1999 318 MS (U)2020 318 MS (C)2042 318 MS (L)2062 318 MS (E)2079 318 MS (A)2097 318 MS (I)2117 318 MS (R)2128 318 MS (E)2147 318 MS (S)2165 318 MS
+gs
+n
+13 33 2181 292 CB
+( )2181 318 MS
+gr
+(D)1437 351 MS (E)1458 351 MS (P)1476 351 MS (A)1492 351 MS (R)1513 351 MS (T)1532 351 MS (E)1550 351 MS (M)1568 351 MS (E)1594 351 MS (N)1612 351 MS (T)1633 351 MS ( )1651 351 MS (D)1658 351 MS (E)1679 351 MS ( )1697 351 MS (M)1704 351 MS
+(E)1730 351 MS (C)1748 351 MS (A)1768 351 MS (N)1788 351 MS
+(I)1809 351 MS (Q)1819 351 MS (U)1839 351 MS (E)1860 351 MS ( )1879 351 MS (E)1886 351 MS (T)1904 351 MS ( )1922 351 MS (D)1929 351 MS (E)1950 351 MS ( )1968 351 MS (T)1975 351 MS (E)1993 351 MS (C)2011 351 MS (H)2031 351 MS (N)2051 351 MS
+(O)2073 351 MS (L)2094 351 MS (O)2112 351 MS (G)2133 351 MS
+(I)2153 351 MS (E)2163 351 MS
+( )2181 351 MS
+(S)1225 385 MS (E)1241 385 MS (R)1259 385 MS (V)1278 385 MS (I)1299 385 MS (C)1309 385 MS (E)1328 385 MS ( )1346 385 MS (S)1353 385 MS (I)1369 385 MS (M)1379 385 MS (U)1405 385 MS (L)1427 385 MS (A)1445 385 MS (T)1465 385 MS (I)1483 385 MS
+(O)1493 385 MS (N)1513 385 MS ( )1535 385 MS (D)1542 385 MS
+(E)1563 385 MS (S)1581 385 MS ( )1597 385 MS (S)1604 385 MS (Y)1620 385 MS (S)1641 385 MS (T)1657 385 MS (E)1675 385 MS (M)1693 385 MS (E)1719 385 MS (S)1737 385 MS ( )1753 385 MS (C)1761 385 MS (O)1781 385 MS (M)1801 385 MS (P)1827 385 MS
+(L)1844 385 MS (E)1861 385 MS (X)1879 385 MS (E)1900 385 MS
+(S)1918 385 MS ( )1934 385 MS (E)1941 385 MS (T)1959 385 MS ( )1977 385 MS (D)1984 385 MS (E)2005 385 MS ( )2023 385 MS (L)2031 385 MS (O)2049 385 MS (G)2070 385 MS (I)2090 385 MS (C)2100 385 MS (I)2119 385 MS (E)2129 385 MS (L)2147 385 MS
+(S)2165 385 MS
+gs
+n
+13 33 2181 359 CB
+( )2181 385 MS
+gr
+gs
+n
+13 33 2181 392 CB
+( )2181 418 MS
+gr
+[50 0 0 -50 0 0]/Times-Roman MF
+( )176 474 MS
+[33 0 0 -33 0 0]/Times-Roman MF
+LATENC /_Times-Roman /Times-Roman reencode
+[33 0 0 -33 0 0]/_Times-Roman MF
+(L)242 3254 MS (e)262 3254 MS (s)277 3254 MS ( )289 3254 MS (i)298 3254 MS (n)307 3254 MS (f)324 3254 MS (o)335 3254 MS (r)351 3254 MS (m)363 3254 MS (a)388 3254 MS (t)403 3254 MS (i)412 3254 MS (o)422 3254 MS (n)439 3254 MS (s)456 3254 MS
+( )468 3254 MS (c)477 3254 MS (o)492 3254 MS (n)508 3254 MS (t)524 3254 MS (e)534 3254 MS (n)549 3254 MS (u)565 3254 MS (e)582 3254 MS (s)597 3254 MS ( )610 3254 MS (d)618 3254 MS (a)634 3254 MS (n)650 3254 MS (s)667 3254 MS ( )679 3254 MS
+(c)688 3254 MS (e)703 3254 MS ( )717 3254 MS (d)726 3254 MS (o)742 3254 MS (c)759 3254 MS (u)773 3254 MS (m)791 3254 MS (e)817 3254 MS (n)831 3254 MS (t)847 3254 MS ( )857 3254 MS (s)866 3254 MS (o)878 3254 MS (n)895 3254 MS (t)911 3254 MS
+( )921 3254 MS (r)929 3254 MS (\351)941 3254 MS (s)956 3254 MS (e)968 3254 MS (r)982 3254 MS (v)994 3254 MS (\351)1011 3254 MS (e)1026 3254 MS (s)1041 3254 MS ( )1053 3254 MS (a)1061 3254 MS (u)1076 3254 MS (x)1093 3254 MS ( )1109 3254 MS (d)1118 3254 MS
+(e)1135 3254 MS (s)1150 3254 MS (t)1162 3254 MS (i)1171 3254 MS (n)1181 3254 MS (a)1197 3254 MS (t)1212 3254 MS (a)1221 3254 MS (i)1236 3254 MS (r)1245 3254 MS (e)1257 3254 MS (s)1272 3254 MS ( )1284 3254 MS (n)1293 3254 MS (o)1309 3254 MS (m)1326 3254 MS
+(m)1352 3254 MS (\351)1378 3254 MS (m)1393 3254 MS (e)1419 3254 MS (n)1433 3254 MS (t)1450 3254 MS ( )1459 3254 MS (d)1468 3254 MS (\351)1484 3254 MS (s)1499 3254 MS (i)1512 3254 MS (g)1521 3254 MS
+(n)1538 3254 MS (\351)1555 3254 MS (s)1570 3254 MS ( )1582 3254 MS (e)1591 3254 MS (t)1605 3254 MS ( )1615 3254 MS (n)1623 3254 MS (e)1640 3254 MS ( )1654 3254 MS (p)1663 3254 MS (e)1680 3254 MS (u)1694 3254 MS (v)1711 3254 MS (e)1728 3254 MS (n)1743 3254 MS
+(t)1759 3254 MS ( )1768 3254 MS (r)1776 3254 MS (e)1788 3254 MS (c)1803 3254 MS (e)1818 3254 MS (v)1832 3254 MS (o)1849 3254 MS (i)1865 3254 MS (r)1874 3254 MS ( )1886 3254 MS (a)1894 3254 MS (u)1909 3254 MS (c)1926 3254 MS (u)1940 3254 MS (n)1957 3254 MS
+(e)1974 3254 MS ( )1988 3254 MS (d)1997 3254 MS (i)2013 3254 MS (f)2023 3254 MS (f)2034 3254 MS (u)2044 3254 MS (s)2062 3254 MS (i)2074 3254 MS (o)2084 3254 MS (n)2101 3254 MS
+( )2117 3254 MS
+(s)928 3292 MS (a)940 3292 MS (n)955 3292 MS (s)972 3292 MS ( )985 3292 MS (l)993 3292 MS (\222)1002 3292 MS (a)1013 3292 MS (u)1028 3292 MS (t)1045 3292 MS (o)1054 3292 MS (r)1071 3292 MS (i)1082 3292 MS (s)1092 3292 MS (a)1104 3292 MS (t)1119 3292 MS
+(i)1128 3292 MS (o)1138 3292 MS (n)1154 3292 MS ( )1171 3292 MS (e)1180 3292 MS (x)1194 3292 MS (p)1211 3292 MS (r)1227 3292 MS (e)1239 3292 MS (s)1254 3292 MS (s)1267 3292 MS (e)1280 3292 MS ( )1294 3292 MS (d)1303 3292 MS (u)1319 3292 MS ( )1336 3292 MS
+(D)1344 3292 MS (M)1368 3292 MS (2)1397 3292 MS (S)1414 3292 MS
+[50 0 0 -50 0 0]/Times-Roman MF
+( )1432 3292 MS
+[75 0 0 -75 0 0]/Times-Bold MF
+(R)887 588 MS (A)941 588 MS (P)995 588 MS (P)1041 588 MS (O)1087 588 MS (R)1145 588 MS (T)1199 588 MS ( )1249 588 MS (D)1268 588 MS (M)1322 588 MS (2)1394 588 MS (S)1431 588 MS
+[75 0 0 -75 0 0]/Times-Roman MF
+( )1473 588 MS
+n
+5 5 158 487 B
+f
+n
+5 5 158 487 B
+f
+n
+2031 5 164 487 B
+f
+n
+5 5 2196 487 B
+f
+n
+5 5 2196 487 B
+f
+n
+5 122 158 493 B
+f
+n
+5 122 2196 493 B
+f
+[50 0 0 -50 0 0]/Times-Roman MF
+(R)176 661 MS (E)209 661 MS (F)240 661 MS (E)267 661 MS (R)298 661 MS (E)331 661 MS (N)362 661 MS (C)398 661 MS (E)431 661 MS (S)462 661 MS
+( )490 661 MS
+(:)618 661 MS
+( )632 661 MS
+(S)688 661 MS (F)716 661 MS (M)743 661 MS (E)787 661 MS (/)818 661 MS (L)832 661 MS (G)862 661 MS (L)899 661 MS (S)929 661 MS (/)957 661 MS (R)971 661 MS (T)1004 661 MS (/)1035 661 MS (0)1049 661 MS (2)1074 661 MS
+(-)1099 661 MS
+(0)1116 661 MS (0)1141 661 MS (2)1166 661 MS (/)1191 661 MS
+(A)1205 661 MS
+( )1240 661 MS
+n
+5 192 158 616 B
+f
+n
+5 192 2196 616 B
+f
+[50 0 0 -50 0 0]/Times-Bold MF
+(T)176 854 MS (I)209 854 MS (T)228 854 MS (R)261 854 MS (E)298 854 MS
+[50 0 0 -50 0 0]/Times-Roman MF
+( )332 854 MS
+(:)546 854 MS
+( )560 854 MS
+[50 0 0 -50 0 0]/Times-Bold MF
+LATENC /_Times-Bold /Times-Bold reencode
+[50 0 0 -50 0 0]/_Times-Bold MF
+(I)688 855 MS (n)707 855 MS (t)735 855 MS (r)752 855 MS (o)773 855 MS (d)798 855 MS (u)826 855 MS (c)854 855 MS (t)876 855 MS (i)893 855 MS (o)907 855 MS (n)932 855 MS ( )960 855 MS (d)973 855 MS (u)1001 855 MS ( )1029 855 MS
+(p)1042 855 MS (a)1070 855 MS (r)1095 855 MS (a)1116 855 MS (l)1141 855 MS (l)1155 855 MS (\351)1168 855 MS (l)1191 855 MS (i)1204 855 MS (s)1218 855 MS (m)1238 855 MS (e)1279 855 MS ( )1301 855 MS (d)1314 855 MS (a)1342 855 MS (n)1367 855 MS
+(s)1395 855 MS ( )1414 855 MS (l)1427 855 MS (\222)1440 855 MS (a)1457 855 MS (r)1483 855 MS (c)1504 855 MS (h)1526 855 MS (i)1554 855 MS (t)1568 855 MS (e)1585 855 MS (c)1607 855 MS (t)1629 855 MS (u)1646 855 MS (r)1674 855 MS (e)1696 855 MS
+( )1718 855 MS
+(l)1731 855 MS (o)1744 855 MS (g)1769 855 MS (i)1794 855 MS (c)1808 855 MS (i)1830 855 MS (e)1844 855 MS (l)1867 855 MS (l)1881 855 MS (e)1894 855 MS ( )1916 855 MS (d)1929 855 MS (u)1957 855 MS ( )1985 855 MS (p)1998 855 MS (r)2026 855 MS
+(o)2047 855 MS (j)2072 855 MS (e)2089 855 MS (t)2111 855 MS ( )2128 855 MS
+(P)688 912 MS (A)718 912 MS (L)754 912 MS (/)787 912 MS (S)801 912 MS (A)829 912 MS (L)865 912 MS (O)898 912 MS (M)937 912 MS (E)985 912 MS
+( )1018 912 MS
+[50 0 0 -50 0 0]/Times-Roman MF
+( )688 969 MS
+n
+5 182 158 809 B
+f
+n
+5 182 2196 809 B
+f
+[50 0 0 -50 0 0]/_Times-Bold MF
+(A)176 1057 MS (U)212 1057 MS (T)248 1057 MS (E)281 1057 MS (U)314 1057 MS (R)350 1057 MS (S)386 1057 MS
+( )414 1057 MS
+(S)688 1057 MS (I)716 1057 MS (G)735 1057 MS (N)774 1057 MS (A)810 1057 MS (T)846 1057 MS (U)879 1057 MS (R)915 1057 MS (E)951 1057 MS (S)984 1057 MS
+( )1012 1057 MS
+(A)1165 1057 MS (U)1201 1057 MS (T)1237 1057 MS (E)1270 1057 MS (U)1303 1057 MS (R)1339 1057 MS (S)1375 1057 MS
+( )1403 1057 MS
+(S)1689 1057 MS (I)1717 1057 MS (G)1736 1057 MS (N)1775 1057 MS (A)1811 1057 MS (T)1847 1057 MS (U)1880 1057 MS (R)1916 1057 MS (E)1952 1057 MS (S)1985 1057 MS
+( )2013 1057 MS
+n
+5 5 158 992 B
+f
+n
+507 5 164 992 B
+f
+n
+5 5 672 992 B
+f
+n
+470 5 678 992 B
+f
+n
+5 5 1149 992 B
+f
+n
+517 5 1155 992 B
+f
+n
+5 5 1673 992 B
+f
+n
+516 5 1679 992 B
+f
+n
+5 5 2196 992 B
+f
+n
+5 78 158 998 B
+f
+n
+2 78 672 998 B
+f
+n
+2 78 1149 998 B
+f
+n
+2 78 1673 998 B
+f
+n
+5 78 2196 998 B
+f
+[50 0 0 -50 0 0]/Times-Roman MF
+(B)176 1133 MS (e)209 1133 MS (r)231 1133 MS (n)248 1133 MS (a)272 1133 MS (r)294 1133 MS (d)311 1133 MS ( )336 1133 MS (S)349 1133 MS (E)377 1133 MS (C)408 1133 MS (H)441 1133 MS (E)477 1133 MS (R)508 1133 MS
+( )541 1133 MS
+( )176 1199 MS
+( )176 1264 MS
+( )688 1133 MS
+( )1165 1133 MS
+( )1178 1133 MS
+( )1689 1133 MS
+n
+5 2 158 1077 B
+f
+n
+507 2 164 1077 B
+f
+n
+2 2 672 1077 B
+f
+n
+473 2 675 1077 B
+f
+n
+2 2 1149 1077 B
+f
+n
+520 2 1152 1077 B
+f
+n
+2 2 1673 1077 B
+f
+n
+519 2 1676 1077 B
+f
+n
+5 2 2196 1077 B
+f
+n
+5 200 158 1080 B
+f
+n
+2 200 672 1080 B
+f
+n
+2 200 1149 1080 B
+f
+n
+2 200 1673 1080 B
+f
+n
+5 200 2196 1080 B
+f
+[50 0 0 -50 0 0]/_Times-Bold MF
+(R)176 1345 MS (E)212 1345 MS (S)245 1345 MS (U)273 1345 MS (M)309 1345 MS (E)357 1345 MS ( )390 1345 MS (:)403 1345 MS ( )420 1345 MS
+( )433 1345 MS
+[50 0 0 -50 0 0]/Times-Roman MF
+LATENC /_Times-Roman /Times-Roman reencode
+[50 0 0 -50 0 0]/_Times-Roman MF
+(C)176 1402 MS (e)209 1402 MS ( )231 1402 MS (r)247 1402 MS (a)264 1402 MS (p)286 1402 MS (p)311 1402 MS (o)336 1402 MS (r)362 1402 MS (t)378 1402 MS ( )393 1402 MS (a)409 1402 MS ( )431 1402 MS (p)447 1402 MS (o)472 1402 MS (u)498 1402 MS
+(r)522 1402 MS ( )539 1402 MS (o)555 1402 MS (b)581 1402 MS (j)605 1402 MS (e)618 1402 MS (t)640 1402 MS ( )655 1402 MS (d)671 1402 MS (e)696 1402 MS ( )718 1402 MS (p)734 1402 MS (r)759 1402 MS (\351)776 1402 MS (s)798 1402 MS (e)817 1402 MS
+(n)840 1402 MS (t)864 1402 MS (e)879 1402 MS (r)901 1402 MS ( )918 1402 MS (l)934 1402 MS (e)947 1402 MS (s)969 1402 MS ( )988 1402 MS (p)1004 1402 MS (r)1029 1402 MS (e)1046 1402 MS (m)1069 1402 MS (i)1108 1402 MS (e)1121 1402 MS (r)1143 1402 MS
+(s)1160 1402 MS ( )1179 1402 MS (r)1196 1402 MS (\351)1213 1402 MS (s)1235 1402 MS (u)1254 1402 MS (l)1280 1402 MS (t)1292 1402 MS (a)1307 1402 MS (t)1329 1402 MS (s)1344 1402 MS ( )1363 1402 MS (c)1379 1402 MS (o)1401 1402 MS (n)1427 1402 MS (c)1451 1402 MS
+(e)1473 1402 MS (r)1495 1402 MS (n)1512 1402 MS
+gs
+n
+661 57 1536 1357 CB
+(a)1536 1402 MS (n)1559 1402 MS (t)1583 1402 MS ( )1598 1402 MS (l)1615 1402 MS (a)1627 1402 MS ( )1650 1402 MS (p)1666 1402 MS (r)1691 1402 MS (i)1709 1402 MS (s)1722 1402 MS (e)1741 1402 MS ( )1763 1402 MS (e)1779 1402 MS (n)1802 1402 MS ( )1826 1402 MS
+(c)1843 1402 MS (o)1865 1402 MS (m)1891 1402 MS (p)1928 1402 MS (t)1953 1402 MS (e)1968 1402 MS ( )1990 1402 MS (d)2006 1402 MS (e)2031 1402 MS ( )2053 1402 MS (c)2069 1402 MS (o)2091 1402 MS (d)2117 1402 MS (e)2142 1402 MS (s)2165 1402 MS ( )2185 1402 MS
+gr
+(p)176 1460 MS (a)201 1460 MS (r)223 1460 MS (a)240 1460 MS (l)263 1460 MS (l)276 1460 MS (\350)289 1460 MS (l)312 1460 MS (e)325 1460 MS (s)348 1460 MS ( )367 1460 MS (d)380 1460 MS (a)405 1460 MS (n)427 1460 MS (s)452 1460 MS ( )471 1460 MS
+(l)485 1460 MS (\222)498 1460 MS (a)514 1460 MS (r)536 1460 MS (c)553 1460 MS (h)576 1460 MS (i)601 1460 MS (t)613 1460 MS (e)628 1460 MS (c)650 1460 MS (t)672 1460 MS (u)687 1460 MS (r)712 1460 MS (e)729 1460 MS ( )751 1460 MS (d)764 1460 MS
+(e)789 1460 MS ( )811 1460 MS (l)824 1460 MS (a)836 1460 MS ( )858 1460 MS (p)871 1460 MS (l)897 1460 MS (a)909 1460 MS (t)931 1460 MS (e)946 1460 MS
+(-)968 1460 MS
+(f)986 1460 MS (o)1001 1460 MS (r)1027 1460 MS (m)1044 1460 MS (e)1082 1460 MS ( )1104 1460 MS (S)1117 1460 MS (A)1145 1460 MS (L)1181 1460 MS (O)1211 1460 MS (M)1247 1460 MS (E)1291 1460 MS (.)1322 1460 MS ( )1335 1460 MS
+( )1348 1460 MS
+gs
+n
+2021 57 176 1472 CB
+(L)176 1517 MS (\222)206 1517 MS (\351)222 1517 MS (t)244 1517 MS (a)259 1517 MS (t)281 1517 MS ( )296 1517 MS (d)318 1517 MS (e)343 1517 MS ( )365 1517 MS (l)388 1517 MS (\222)400 1517 MS (a)417 1517 MS (r)439 1517 MS (t)456 1517 MS ( )471 1517 MS
+(d)493 1517 MS (e)518 1517 MS ( )540 1517 MS (c)562 1517 MS (e)584 1517 MS ( )606 1517 MS (q)628 1517 MS (u)653 1517 MS (i)679 1517 MS ( )691 1517 MS (s)714 1517 MS (e)733 1517 MS ( )755 1517 MS (f)778 1517 MS (a)794 1517 MS (i)817 1517 MS
+(t)829 1517 MS ( )844 1517 MS (d)866 1517 MS (a)891 1517 MS (n)914 1517 MS (s)939 1517 MS ( )958 1517 MS (l)981 1517 MS (e)994 1517 MS ( )1016 1517 MS (d)1038 1517 MS (o)1063 1517 MS (m)1090 1517 MS (a)1127 1517 MS (i)1150 1517 MS (n)1163 1517 MS
+(e)1189 1517 MS ( )1211 1517 MS (e)1233 1517 MS (s)1255 1517 MS (t)1274 1517 MS ( )1289 1517 MS (p)1311 1517 MS (r)1336 1517 MS (\351)1353 1517 MS (s)1375 1517 MS (e)1394 1517 MS (n)1417 1517 MS (t)1441 1517 MS (\351)1456 1517 MS (.)1478 1517 MS ( )1491 1517 MS
+(O)1513 1517 MS (n)1549 1517 MS ( )1573 1517 MS (i)1596 1517 MS (n)1609 1517 MS (t)1633 1517 MS (r)1648 1517 MS (o)1665 1517 MS (d)1691 1517 MS (u)1716 1517 MS (i)1741 1517 MS (t)1753 1517 MS ( )1768 1517 MS (e)1790 1517 MS (n)1812 1517 MS (s)1837 1517 MS
+(u)1856 1517 MS (i)1882 1517 MS (t)1894 1517 MS (e)1909 1517 MS ( )1931 1517 MS (l)1954 1517 MS (a)1967 1517 MS ( )1989 1517 MS (m)2012 1517 MS (\351)2050 1517 MS (t)2072 1517 MS (h)2087 1517 MS (o)2111 1517 MS (d)2137 1517 MS (e)2162 1517 MS ( )2185 1517 MS
+gr
+(p)176 1575 MS (r)201 1575 MS (o)218 1575 MS (p)244 1575 MS (o)268 1575 MS (s)294 1575 MS (\351)313 1575 MS (e)335 1575 MS ( )357 1575 MS (d)386 1575 MS (a)411 1575 MS (n)433 1575 MS (s)457 1575 MS ( )477 1575 MS (c)506 1575 MS (e)528 1575 MS
+(t)550 1575 MS (t)565 1575 MS (e)580 1575 MS ( )602 1575 MS (\351)631 1575 MS (t)652 1575 MS (u)667 1575 MS (d)692 1575 MS (e)717 1575 MS (.)739 1575 MS ( )752 1575 MS (L)781 1575 MS (e)811 1575 MS (s)833 1575 MS ( )852 1575 MS (p)881 1575 MS
+(r)906 1575 MS (i)924 1575 MS (n)937 1575 MS (c)962 1575 MS (i)985 1575 MS (p)998 1575 MS (a)1023 1575 MS (u)1045 1575 MS (x)1071 1575 MS ( )1095 1575 MS (c)1124 1575 MS (o)1146 1575 MS (n)1172 1575 MS (c)1197 1575 MS (e)1219 1575 MS (p)1241 1575 MS
+(t)1266 1575 MS (s)1281 1575 MS ( )1300 1575 MS (s)1329 1575 MS (o)1348 1575 MS (n)1374 1575 MS (t)1398 1575 MS ( )1413 1575 MS (d)1442 1575 MS (\351)1467 1575 MS (f)1490 1575 MS (i)1506 1575 MS (n)1519 1575 MS (i)1544 1575 MS (s)1557 1575 MS (,)1576 1575 MS
+( )1590 1575 MS (p)1619 1575 MS (u)1644 1575 MS (i)1670 1575 MS (s)1683 1575 MS ( )1702 1575 MS
+gs
+n
+465 57 1732 1530 CB
+(i)1732 1575 MS (l)1746 1575 MS (l)1760 1575 MS (u)1773 1575 MS (s)1798 1575 MS (t)1817 1575 MS (r)1832 1575 MS (\351)1849 1575 MS (s)1871 1575 MS ( )1890 1575 MS (d)1919 1575 MS (a)1944 1575 MS (n)1967 1575 MS (s)1991 1575 MS ( )2011 1575 MS (u)2040 1575 MS
+(n)2066 1575 MS ( )2090 1575 MS (c)2119 1575 MS (a)2141 1575 MS (s)2165 1575 MS ( )2185 1575 MS
+gr
+gs
+n
+2021 57 176 1587 CB
+(d)176 1632 MS (\222)201 1632 MS (u)217 1632 MS (t)242 1632 MS (i)257 1632 MS (l)270 1632 MS (i)284 1632 MS (s)297 1632 MS (a)317 1632 MS (t)339 1632 MS (i)355 1632 MS (o)367 1632 MS (n)393 1632 MS ( )417 1632 MS (b)441 1632 MS (a)465 1632 MS
+(s)487 1632 MS (\351)506 1632 MS ( )528 1632 MS (s)552 1632 MS (u)571 1632 MS (r)596 1632 MS ( )613 1632 MS (l)637 1632 MS (a)649 1632 MS ( )671 1632 MS (r)694 1632 MS (\351)711 1632 MS (s)734 1632 MS (o)753 1632 MS (l)779 1632 MS (u)791 1632 MS
+(t)816 1632 MS (i)832 1632 MS (o)844 1632 MS (n)870 1632 MS ( )894 1632 MS (d)917 1632 MS (\222)943 1632 MS (u)959 1632 MS (n)985 1632 MS ( )1009 1632 MS (s)1032 1632 MS (y)1052 1632 MS (s)1076 1632 MS (t)1095 1632 MS (\350)1110 1632 MS (m)1133 1632 MS
+(e)1171 1632 MS ( )1194 1632 MS (l)1218 1632 MS (i)1231 1632 MS (n)1244 1632 MS (\351)1269 1632 MS (a)1291 1632 MS (i)1314 1632 MS (r)1327 1632 MS (e)1344 1632 MS ( )1366 1632 MS (\340)1389 1632 MS ( )1411 1632 MS (l)1435 1632 MS (\222)1448 1632 MS (a)1465 1632 MS
+(i)1488 1632 MS (d)1500 1632 MS (e)1526 1632 MS ( )1548 1632 MS (d)1571 1632 MS (e)1596 1632 MS ( )1618 1632 MS (l)1642 1632 MS (a)1655 1632 MS ( )1677 1632 MS (b)1701 1632 MS (i)1726 1632 MS (b)1739 1632 MS (l)1764 1632 MS (i)1778 1632 MS (o)1790 1632 MS
+(t)1816 1632 MS (h)1831 1632 MS (\350)1855 1632 MS (q)1877 1632 MS (u)1902 1632 MS (e)1928 1632 MS ( )1950 1632 MS (N)1973 1632 MS (u)2009 1632 MS (m)2035 1632 MS (e)2073 1632 MS (r)2095 1632 MS (i)2113 1632 MS (c)2125 1632 MS (a)2148 1632 MS (l)2172 1632 MS
+( )2185 1632 MS
+gr
+(P)176 1690 MS (l)205 1690 MS (a)217 1690 MS (t)239 1690 MS (o)254 1690 MS (n)280 1690 MS (.)304 1690 MS
+( )317 1690 MS
+gs
+n
+2021 57 176 1702 CB
+(L)176 1747 MS (a)206 1747 MS ( )228 1747 MS (m)244 1747 MS (\351)282 1747 MS (t)304 1747 MS (h)319 1747 MS (o)343 1747 MS (d)369 1747 MS (e)394 1747 MS ( )416 1747 MS (i)432 1747 MS (d)444 1747 MS (\351)469 1747 MS (a)492 1747 MS (l)515 1747 MS
+(e)528 1747 MS ( )550 1747 MS (p)565 1747 MS (o)590 1747 MS (u)616 1747 MS (r)641 1747 MS ( )658 1747 MS (c)673 1747 MS (o)695 1747 MS (u)721 1747 MS (p)746 1747 MS (l)771 1747 MS (e)783 1747 MS (r)805 1747 MS ( )822 1747 MS (d)837 1747 MS
+(e)862 1747 MS (s)885 1747 MS ( )904 1747 MS (c)919 1747 MS (o)941 1747 MS (d)967 1747 MS (e)992 1747 MS (s)1014 1747 MS ( )1033 1747 MS (p)1048 1747 MS (a)1073 1747 MS (r)1095 1747 MS (a)1112 1747 MS (l)1135 1747 MS (l)1149 1747 MS (\350)1162 1747 MS
+(l)1185 1747 MS (e)1199 1747 MS (s)1221 1747 MS ( )1240 1747 MS (d)1255 1747 MS (a)1280 1747 MS (n)1303 1747 MS (s)1328 1747 MS ( )1347 1747 MS (u)1362 1747 MS (n)1388 1747 MS ( )1412 1747 MS (e)1427 1747 MS (n)1450 1747 MS (v)1475 1747 MS (i)1500 1747 MS
+(r)1513 1747 MS (o)1530 1747 MS (n)1556 1747 MS (n)1581 1747 MS (e)1605 1747 MS (m)1628 1747 MS (e)1666 1747 MS (n)1689 1747 MS (t)1713 1747 MS ( )1728 1747 MS (\340)1743 1747 MS ( )1765 1747 MS (a)1780 1747 MS (r)1802 1747 MS (c)1819 1747 MS (h)1842 1747 MS
+(i)1867 1747 MS (t)1879 1747 MS (e)1894 1747 MS (c)1916 1747 MS (t)1938 1747 MS (u)1953 1747 MS (r)1978 1747 MS (e)1995 1747 MS ( )2017 1747 MS (r)2032 1747 MS (\351)2049 1747 MS (p)2071 1747 MS (a)2096 1747 MS (r)2118 1747 MS (t)2134 1747 MS (i)2149 1747 MS
+(e)2162 1747 MS ( )2185 1747 MS
+gr
+(c)176 1805 MS (o)198 1805 MS (n)224 1805 MS (s)248 1805 MS (i)268 1805 MS (s)281 1805 MS (t)300 1805 MS (e)315 1805 MS (r)337 1805 MS (a)354 1805 MS ( )376 1805 MS (\340)389 1805 MS ( )411 1805 MS (u)424 1805 MS (t)448 1805 MS (i)463 1805 MS
+(l)476 1805 MS (i)490 1805 MS (s)503 1805 MS (e)522 1805 MS (r)544 1805 MS ( )561 1805 MS (u)574 1805 MS (n)599 1805 MS ( )623 1805 MS (O)636 1805 MS (R)672 1805 MS (B)706 1805 MS ( )739 1805 MS (p)752 1805 MS (a)777 1805 MS
+(r)799 1805 MS (a)816 1805 MS (l)839 1805 MS (l)852 1805 MS (\350)865 1805 MS (l)888 1805 MS (e)901 1805 MS ( )923 1805 MS (l)937 1805 MS (o)949 1805 MS (r)975 1805 MS (s)992 1805 MS (q)1011 1805 MS (u)1036 1805 MS (\222)1061 1805 MS (i)1078 1805 MS
+(l)1092 1805 MS ( )1105 1805 MS (s)1118 1805 MS (e)1137 1805 MS (r)1159 1805 MS (a)1176 1805 MS ( )1199 1805 MS (d)1212 1805 MS (i)1237 1805 MS (s)1250 1805 MS (p)1269 1805 MS (o)1294 1805 MS (n)1320 1805 MS (i)1345 1805 MS (b)1358 1805 MS (l)1384 1805 MS
+(e)1397 1805 MS (.)1419 1805 MS ( )1432 1805 MS
+( )1445 1805 MS
+gs
+n
+2021 57 176 1817 CB
+(U)176 1862 MS (n)212 1862 MS (e)236 1862 MS ( )258 1862 MS (a)274 1862 MS (p)296 1862 MS (p)321 1862 MS (r)346 1862 MS (o)363 1862 MS (c)389 1862 MS (h)411 1862 MS (e)435 1862 MS ( )457 1862 MS (s)473 1862 MS (i)493 1862 MS (m)507 1862 MS
+(p)545 1862 MS (l)571 1862 MS (e)584 1862 MS ( )606 1862 MS (c)622 1862 MS (o)644 1862 MS (n)670 1862 MS (s)695 1862 MS (i)715 1862 MS (s)728 1862 MS (t)747 1862 MS (e)762 1862 MS (r)784 1862 MS (a)801 1862 MS (i)824 1862 MS (t)836 1862 MS
+( )851 1862 MS (\340)867 1862 MS ( )889 1862 MS (d)905 1862 MS (\351)930 1862 MS (l)952 1862 MS (\351)964 1862 MS (g)986 1862 MS (u)1011 1862 MS (e)1037 1862 MS (r)1059 1862 MS ( )1076 1862 MS (a)1092 1862 MS (u)1114 1862 MS ( )1139 1862 MS (p)1155 1862 MS
+(r)1180 1862 MS (o)1197 1862 MS (c)1223 1862 MS (e)1245 1862 MS (s)1267 1862 MS (s)1286 1862 MS (u)1305 1862 MS (s)1330 1862 MS ( )1349 1862 MS (m)1366 1862 MS (a)1404 1862 MS (\356)1427 1862 MS (t)1439 1862 MS (r)1454 1862 MS (e)1471 1862 MS ( )1493 1862 MS
+(l)1510 1862 MS (\222)1522 1862 MS (\351)1539 1862 MS (c)1561 1862 MS (h)1584 1862 MS (a)1608 1862 MS (n)1631 1862 MS (g)1655 1862 MS (e)1680 1862 MS ( )1702 1862 MS (d)1718 1862 MS (e)1743 1862 MS (s)1765 1862 MS ( )1784 1862 MS (d)1800 1862 MS (o)1825 1862 MS
+(n)1851 1862 MS (n)1876 1862 MS (\351)1900 1862 MS (e)1923 1862 MS (s)1945 1862 MS ( )1964 1862 MS (p)1980 1862 MS (a)2005 1862 MS (r)2027 1862 MS (a)2044 1862 MS (l)2067 1862 MS (l)2080 1862 MS (\350)2093 1862 MS (l)2117 1862 MS (e)2130 1862 MS (s)2152 1862 MS
+(.)2171 1862 MS ( )2185 1862 MS
+gr
+gs
+n
+2021 57 176 1875 CB
+(L)176 1920 MS (\222)206 1920 MS (i)223 1920 MS (n)236 1920 MS (t)260 1920 MS (\351)275 1920 MS (g)297 1920 MS (r)322 1920 MS (a)339 1920 MS (t)361 1920 MS (i)377 1920 MS (o)389 1920 MS (n)415 1920 MS ( )439 1920 MS (d)454 1920 MS (\222)480 1920 MS
+(u)496 1920 MS (n)521 1920 MS ( )546 1920 MS (c)561 1920 MS (o)583 1920 MS (m)610 1920 MS (p)647 1920 MS (o)672 1920 MS (s)698 1920 MS (a)717 1920 MS (n)739 1920 MS (t)763 1920 MS ( )778 1920 MS (p)793 1920 MS (a)818 1920 MS (r)840 1920 MS
+(a)857 1920 MS (l)880 1920 MS (l)893 1920 MS (\350)906 1920 MS (l)929 1920 MS (e)942 1920 MS ( )964 1920 MS (d)979 1920 MS (a)1005 1920 MS (n)1028 1920 MS (s)1052 1920 MS ( )1071 1920 MS (l)1087 1920 MS (\222)1100 1920 MS (e)1117 1920 MS (n)1140 1920 MS
+(v)1165 1920 MS (i)1190 1920 MS (r)1203 1920 MS (o)1220 1920 MS (n)1246 1920 MS (n)1271 1920 MS (e)1295 1920 MS (m)1318 1920 MS (e)1356 1920 MS (n)1379 1920 MS (t)1403 1920 MS ( )1418 1920 MS (S)1433 1920 MS (A)1461 1920 MS (L)1496 1920 MS (O)1526 1920 MS
+(M)1563 1920 MS (E)1607 1920 MS ( )1638 1920 MS (s)1653 1920 MS (e)1672 1920 MS (r)1694 1920 MS (a)1711 1920 MS (i)1734 1920 MS (t)1746 1920 MS ( )1761 1920 MS (a)1776 1920 MS (i)1799 1920 MS (s)1812 1920 MS (\351)1832 1920 MS (.)1854 1920 MS ( )1867 1920 MS
+(P)1882 1920 MS (a)1910 1920 MS (r)1932 1920 MS ( )1949 1920 MS (c)1964 1920 MS (o)1986 1920 MS (n)2012 1920 MS (t)2036 1920 MS (r)2051 1920 MS (e)2068 1920 MS (,)2089 1920 MS ( )2102 1920 MS (i)2117 1920 MS (l)2130 1920 MS ( )2143 1920 MS (y)2160 1920 MS
+( )2185 1920 MS
+gr
+(a)176 1977 MS (u)198 1977 MS (r)223 1977 MS (a)240 1977 MS (i)263 1977 MS (t)275 1977 MS ( )290 1977 MS (u)303 1977 MS (n)328 1977 MS ( )352 1977 MS (p)365 1977 MS (r)390 1977 MS (o)406 1977 MS (b)432 1977 MS (l)457 1977 MS (\350)470 1977 MS
+(m)493 1977 MS (e)531 1977 MS ( )553 1977 MS (d)566 1977 MS (e)591 1977 MS ( )613 1977 MS (p)626 1977 MS (e)651 1977 MS (r)673 1977 MS
+(f)690 1977 MS (o)705 1977 MS (r)731 1977 MS (m)749 1977 MS (a)786 1977 MS (n)809 1977 MS (c)833 1977 MS (e)855 1977 MS ( )877 1977 MS (n)891 1977 MS (o)915 1977 MS (n)941 1977 MS ( )965 1977 MS (n)978 1977 MS (\351)1003 1977 MS (g)1025 1977 MS
+(l)1051 1977 MS (i)1064 1977 MS (g)1077 1977 MS (e)1102 1977 MS (a)1125 1977 MS (b)1148 1977 MS (l)1173 1977 MS (e)1187 1977 MS ( )1209 1977 MS (d)1222 1977 MS (a)1247 1977 MS (n)1269 1977 MS (s)1293 1977 MS ( )1312 1977 MS (l)1326 1977 MS (\222)1339 1977 MS
+(\351)1356 1977 MS (c)1378 1977 MS (h)1401 1977 MS (a)1425 1977 MS (n)1448 1977 MS (g)1472 1977 MS (e)1497 1977 MS ( )1519 1977 MS (d)1532 1977 MS (e)1557 1977 MS ( )1579 1977 MS (d)1592 1977 MS (o)1617 1977 MS (n)1643 1977 MS (n)1667 1977 MS (\351)1691 1977 MS
+(e)1714 1977 MS (s)1736 1977 MS ( )1755 1977 MS (d)1768 1977 MS (i)1794 1977 MS (s)1807 1977 MS (t)1826 1977 MS (r)1841 1977 MS (i)1858 1977 MS (b)1871 1977 MS (u)1895 1977 MS (\351)1921 1977 MS (e)1943 1977 MS (s)1965 1977 MS (.)1984 1977 MS
+( )1997 1977 MS
+gs
+n
+2021 57 176 1990 CB
+(L)176 2035 MS (a)206 2035 MS ( )228 2035 MS (m)258 2035 MS (\351)296 2035 MS (t)318 2035 MS (h)333 2035 MS (o)357 2035 MS (d)383 2035 MS (e)408 2035 MS ( )430 2035 MS (p)459 2035 MS (r)484 2035 MS (o)501 2035 MS (p)527 2035 MS (o)551 2035 MS
+(s)577 2035 MS (\351)596 2035 MS (e)618 2035 MS ( )640 2035 MS (d)669 2035 MS (a)694 2035 MS (n)716 2035 MS (s)741 2035 MS ( )760 2035 MS (c)789 2035 MS (e)811 2035 MS ( )834 2035 MS (d)863 2035 MS (o)888 2035 MS (c)914 2035 MS (u)936 2035 MS
+(m)962 2035 MS (e)999 2035 MS (n)1022 2035 MS (t)1046 2035 MS ( )1061 2035 MS (p)1090 2035 MS (e)1115 2035 MS (r)1137 2035 MS (m)1155 2035 MS (e)1193 2035 MS (t)1215 2035 MS ( )1230 2035 MS (d)1259 2035 MS (e)1284 2035 MS ( )1306 2035 MS (c)1335 2035 MS
+(o)1357 2035 MS (n)1383 2035 MS (s)1407 2035 MS (e)1426 2035 MS (r)1448 2035 MS (v)1465 2035 MS (e)1489 2035 MS (r)1511 2035 MS ( )1528 2035 MS (u)1557 2035 MS (n)1583 2035 MS (e)1607 2035 MS ( )1630 2035 MS (b)1660 2035 MS (o)1684 2035 MS (n)1710 2035 MS
+(n)1735 2035 MS (e)1759 2035 MS ( )1781 2035 MS (p)1810 2035 MS (e)1835 2035 MS (r)1857 2035 MS (f)1875 2035 MS (o)1890 2035 MS (r)1916 2035 MS (m)1934 2035 MS (a)1971 2035 MS (n)1994 2035 MS (c)2019 2035 MS (e)2041 2035 MS ( )2063 2035 MS (d)2092 2035 MS
+(a)2117 2035 MS (n)2140 2035 MS (s)2165 2035 MS ( )2185 2035 MS
+gr
+gs
+n
+2021 57 176 2047 CB
+(l)176 2092 MS (\222)189 2092 MS (\351)206 2092 MS (c)228 2092 MS (h)251 2092 MS (a)275 2092 MS (n)298 2092 MS (g)322 2092 MS (e)347 2092 MS ( )369 2092 MS (d)385 2092 MS (e)410 2092 MS (s)433 2092 MS ( )452 2092 MS (d)468 2092 MS (o)493 2092 MS
+(n)519 2092 MS (n)544 2092 MS (\351)568 2092 MS (e)590 2092 MS (s)613 2092 MS (,)632 2092 MS ( )645 2092 MS (m)662 2092 MS (a)699 2092 MS (i)722 2092 MS (s)735 2092 MS ( )754 2092 MS (u)770 2092 MS (n)796 2092 MS (e)821 2092 MS ( )843 2092 MS
+(p)859 2092 MS (a)884 2092 MS (r)906 2092 MS (t)923 2092 MS ( )938 2092 MS (i)954 2092 MS (m)967 2092 MS (p)1005 2092 MS (o)1030 2092 MS (r)1056 2092 MS (t)1073 2092 MS (a)1088 2092 MS (n)1110 2092 MS (t)1134 2092 MS (e)1149 2092 MS ( )1171 2092 MS
+(d)1186 2092 MS (e)1211 2092 MS ( )1233 2092 MS (l)1250 2092 MS (a)1262 2092 MS ( )1284 2092 MS (g)1300 2092 MS (e)1325 2092 MS (s)1348 2092 MS (t)1367 2092 MS (i)1383 2092 MS (o)1395 2092 MS (n)1421 2092 MS ( )1445 2092 MS (d)1461 2092 MS (u)1486 2092 MS
+( )1511 2092 MS (p)1527 2092 MS (a)1552 2092 MS (r)1574 2092 MS (a)1591 2092 MS (l)1614 2092 MS (l)1627 2092 MS (\351)1640 2092 MS (l)1663 2092 MS (i)1677 2092 MS (s)1690 2092 MS (m)1711 2092 MS (e)1749 2092 MS ( )1771 2092 MS (r)1787 2092 MS (e)1804 2092 MS
+(s)1826 2092 MS (t)1845 2092 MS (e)1860 2092 MS ( )1882 2092 MS (\340)1898 2092 MS ( )1920 2092 MS (l)1937 2092 MS (a)1949 2092 MS ( )1971 2092 MS (c)1987 2092 MS (h)2010 2092 MS (a)2035 2092 MS (r)2057 2092 MS (g)2074 2092 MS (e)2099 2092 MS ( )2121 2092 MS
+(d)2137 2092 MS (e)2162 2092 MS ( )2185 2092 MS
+gr
+(l)176 2150 MS (\222)189 2150 MS (u)206 2150 MS (t)231 2150 MS (i)246 2150 MS (l)259 2150 MS (i)273 2150 MS (s)286 2150 MS (a)306 2150 MS
+(t)328 2150 MS (e)343 2150 MS (u)365 2150 MS (r)390 2150 MS ( )407 2150 MS (q)420 2150 MS (u)445 2150 MS (i)470 2150 MS ( )482 2150 MS (d)495 2150 MS (\351)520 2150 MS (s)542 2150 MS (i)562 2150 MS (r)575 2150 MS (e)592 2150 MS ( )614 2150 MS
+(i)628 2150 MS (n)641 2150 MS (t)665 2150 MS (\351)680 2150 MS (g)702 2150 MS (r)727 2150 MS (e)744 2150 MS (r)766 2150 MS ( )783 2150 MS (s)796 2150 MS (o)815 2150 MS (n)841 2150 MS ( )865 2150 MS (c)878 2150 MS (o)899 2150 MS (d)925 2150 MS
+(e)950 2150 MS ( )972 2150 MS (d)985 2150 MS (a)1010 2150 MS (n)1032 2150 MS (s)1056 2150 MS ( )1075 2150 MS (l)1089 2150 MS (a)1101 2150 MS ( )1123 2150 MS (p)1136 2150 MS (l)1162 2150 MS (a)1175 2150 MS (t)1198 2150 MS (e)1213 2150 MS
+(-)1235 2150 MS
+(f)1252 2150 MS (o)1267 2150 MS (r)1293 2150 MS (m)1310 2150 MS (e)1347 2150 MS ( )1369 2150 MS (S)1382 2150 MS (A)1410 2150 MS (L)1446 2150 MS (O)1476 2150 MS (M)1513 2150 MS (E)1557 2150 MS (.)1588 2150 MS
+( )1601 2150 MS
+gs
+n
+2021 57 176 2162 CB
+(L)176 2207 MS (a)206 2207 MS ( )228 2207 MS (p)244 2207 MS (h)269 2207 MS (a)294 2207 MS (s)316 2207 MS (e)335 2207 MS ( )357 2207 MS (s)374 2207 MS (u)393 2207 MS (i)419 2207 MS (v)432 2207 MS (a)457 2207 MS (n)480 2207 MS (t)504 2207 MS
+(e)519 2207 MS ( )541 2207 MS (c)557 2207 MS (o)579 2207 MS (n)605 2207 MS (s)629 2207 MS (i)649 2207 MS (s)661 2207 MS (t)680 2207 MS (e)695 2207 MS (r)717 2207 MS (a)734 2207 MS ( )756 2207 MS (\340)772 2207 MS ( )794 2207 MS (t)810 2207 MS
+(r)825 2207 MS (a)842 2207 MS (i)864 2207 MS (t)876 2207 MS (e)891 2207 MS (r)913 2207 MS ( )930 2207 MS (u)946 2207 MS (n)971 2207 MS ( )995 2207 MS (c)1011 2207 MS (a)1033 2207 MS (s)1055 2207 MS ( )1074 2207 MS (r)1090 2207 MS (\351)1107 2207 MS
+(a)1129 2207 MS (l)1152 2207 MS (i)1165 2207 MS (s)1178 2207 MS (t)1199 2207 MS (e)1214 2207 MS ( )1236 2207 MS (p)1252 2207 MS (o)1276 2207 MS (u)1302 2207 MS (r)1326 2207 MS ( )1343 2207 MS (l)1359 2207 MS (a)1371 2207 MS ( )1393 2207 MS (D)1409 2207 MS
+(E)1445 2207 MS (N)1476 2207 MS (,)1512 2207 MS ( )1525 2207 MS (d)1541 2207 MS (e)1566 2207 MS ( )1588 2207 MS (c)1604 2207 MS (o)1626 2207 MS (u)1652 2207 MS (p)1677 2207 MS (l)1702 2207 MS (a)1714 2207 MS (g)1736 2207 MS (e)1762 2207 MS ( )1784 2207 MS
+(d)1800 2207 MS (e)1825 2207 MS ( )1847 2207 MS (c)1863 2207 MS (o)1885 2207 MS (d)1911 2207 MS (e)1936 2207 MS (s)1958 2207 MS ( )1977 2207 MS (p)1993 2207 MS (a)2018 2207 MS (r)2040 2207 MS (a)2057 2207 MS (l)2080 2207 MS (l)2093 2207 MS (\350)2106 2207 MS
+(l)2129 2207 MS (e)2142 2207 MS (s)2165 2207 MS ( )2185 2207 MS
+gr
+(q)176 2265 MS (u)201 2265 MS (i)227 2265 MS ( )239 2265 MS (\351)252 2265 MS (c)274 2265 MS (h)297 2265 MS (a)321 2265 MS (n)344 2265 MS (g)368 2265 MS (e)393 2265 MS (r)415 2265 MS (o)432 2265 MS (n)458 2265 MS (t)482 2265 MS ( )497 2265 MS
+(d)510 2265 MS (e)535 2265 MS (s)557 2265 MS ( )576 2265 MS (m)589 2265 MS (a)626 2265 MS (i)649 2265 MS (l)663 2265 MS (l)677 2265 MS (a)690 2265 MS (g)712 2265 MS (e)737 2265 MS (s)760 2265 MS ( )779 2265 MS (e)792 2265 MS (t)814 2265 MS
+( )829 2265 MS (d)842 2265 MS (e)867 2265 MS (s)889 2265 MS ( )908 2265 MS (c)921 2265 MS (h)943 2265 MS (a)967 2265 MS (m)990 2265 MS (p)1027 2265 MS (s)1053 2265 MS ( )1072 2265 MS (d)1085 2265 MS (i)1111 2265 MS (s)1124 2265 MS (t)1143 2265 MS
+(r)1158 2265 MS (i)1175 2265 MS (b)1188 2265 MS (u)1212 2265 MS (\351)1237 2265 MS (s)1260 2265 MS ( )1279 2265 MS (s)1292 2265 MS (u)1311 2265 MS (r)1336 2265 MS ( )1353 2265 MS (d)1366 2265 MS (i)1392 2265 MS (f)1405 2265 MS (f)1421 2265 MS (\351)1437 2265 MS
+(r)1459 2265 MS (e)1476 2265 MS (n)1499 2265 MS (t)1523 2265 MS (s)1538 2265 MS ( )1557 2265 MS (p)1570 2265 MS (r)1595 2265 MS (o)1611 2265 MS (c)1637 2265 MS (e)1659 2265 MS (s)1681 2265 MS (s)1700 2265 MS (e)1719 2265 MS (u)1741 2265 MS (r)1766 2265 MS
+(s)1783 2265 MS (.)1802 2265 MS
+( )1815 2265 MS
+n
+5 5 158 1281 B
+f
+n
+507 5 164 1281 B
+f
+n
+5 5 672 1281 B
+f
+n
+470 5 678 1281 B
+f
+n
+5 5 1149 1281 B
+f
+n
+517 5 1155 1281 B
+f
+n
+5 5 1673 1281 B
+f
+n
+516 5 1679 1281 B
+f
+n
+5 5 2196 1281 B
+f
+n
+5 5 2196 1281 B
+f
+n
+5 1049 158 1287 B
+f
+[50 0 0 -50 0 0]/Times-Bold MF
+(M)176 2410 MS (O)224 2410 MS (T)263 2410 MS (S)296 2410 MS ( )324 2410 MS (C)337 2410 MS (L)373 2410 MS (E)406 2410 MS (S)439 2410 MS
+[50 0 0 -50 0 0]/_Times-Roman MF
+( )466 2410 MS
+(:)546 2410 MS ( )560 2410 MS
+( )573 2410 MS
+(C)688 2410 MS (o)721 2410 MS (m)747 2410 MS (p)784 2410 MS (o)809 2410 MS (s)835 2410 MS (a)854 2410 MS (n)877 2410 MS (t)901 2410 MS (,)916 2410 MS ( )929 2410 MS (P)942 2410 MS (a)970 2410 MS (r)991 2410 MS (a)1008 2410 MS (l)1030 2410 MS
+(l)1043 2410 MS (\351)1056 2410 MS (l)1079 2410 MS (i)1093 2410 MS (s)1106 2410 MS (m)1127 2410 MS (e)1165 2410 MS (,)1187 2410 MS ( )1200 2410 MS ( )1213 2410 MS (C)1226 2410 MS (O)1259 2410 MS (R)1295 2410 MS (B)1328 2410 MS (A)1362 2410 MS (,)1397 2410 MS
+( )1410 2410 MS
+%%IncludeFont: Times-Italic
+[50 0 0 -50 0 0]/Times-Italic MF
+(M)1423 2410 MS (P)1465 2410 MS (I)1495 2410 MS (,)1512 2410 MS ( )1524 2410 MS (N)1537 2410 MS (u)1570 2410 MS (m)1595 2410 MS (e)1631 2410 MS (r)1653 2410 MS (i)1672 2410 MS (c)1686 2410 MS (a)1709 2410 MS (l)1734 2410 MS ( )1748 2410 MS (P)1761 2410 MS
+(l)1791 2410 MS (a)1805 2410 MS (t)1830 2410 MS (o)1844 2410 MS (n)1869 2410 MS
+[50 0 0 -50 0 0]/_Times-Roman MF
+( )1894 2410 MS
+n
+5 2 158 2337 B
+f
+n
+507 2 164 2337 B
+f
+n
+2 2 672 2337 B
+f
+n
+1520 2 675 2337 B
+f
+n
+2 2 2196 2337 B
+f
+n
+2 2 2199 2337 B
+f
+n
+5 82 158 2340 B
+f
+n
+5 82 2196 2340 B
+f
+[50 0 0 -50 0 0]/Times-Bold MF
+(A)176 2468 MS (F)212 2468 MS (F)242 2468 MS (A)272 2468 MS (I)309 2468 MS (R)328 2468 MS (E)364 2468 MS
+[50 0 0 -50 0 0]/_Times-Roman MF
+( )398 2468 MS
+(:)546 2468 MS
+( )560 2468 MS
+(E)688 2468 MS (O)719 2468 MS (T)755 2468 MS (P)786 2468 MS (:)814 2468 MS ( )827 2468 MS (A)840 2468 MS ( )875 2468 MS
+(\226)888 2468 MS
+( )913 2468 MS (C)926 2468 MS ( )959 2468 MS
+(\226)972 2468 MS
+( )997 2468 MS (P)1010 2468 MS (A)1038 2468 MS (R)1073 2468 MS (A)1106 2468 MS ( )1141 2468 MS
+(\226)1154 2468 MS
+( )1179 2468 MS (0)1192 2468 MS (1)1217 2468 MS ( )1242 2468 MS
+(-)1255 2468 MS
+( )1272 2468 MS (0)1285 2468 MS (2)1310 2468 MS
+( )1335 2468 MS
+n
+5 56 158 2423 B
+f
+n
+5 56 2196 2423 B
+f
+[50 0 0 -50 0 0]/Times-Bold MF
+LATENC /_Times-Bold /Times-Bold reencode
+[50 0 0 -50 0 0]/_Times-Bold MF
+(T)176 2525 MS (i)209 2525 MS (t)223 2525 MS (r)240 2525 MS (e)261 2525 MS ( )283 2525 MS (d)296 2525 MS (e)324 2525 MS ( )346 2525 MS (l)359 2525 MS (\222)372 2525 MS (a)389 2525 MS (f)414 2525 MS (f)431 2525 MS (a)447 2525 MS (i)472 2525 MS
+(r)487 2525 MS (e)508 2525 MS
+[50 0 0 -50 0 0]/Times-Roman MF
+( )531 2525 MS
+(:)546 2525 MS
+( )560 2525 MS
+( )688 2525 MS
+n
+5 82 158 2480 B
+f
+n
+5 82 2196 2480 B
+f
+( )176 2608 MS
+( )338 2608 MS
+( )604 2608 MS
+(V)752 2608 MS (i)789 2608 MS (s)801 2608 MS (a)821 2608 MS
+( )843 2608 MS
+[38 0 0 -38 0 0]/Times-Roman MF
+( )919 2597 MS
+( )1353 2597 MS
+( )1803 2597 MS
+n
+5 82 158 2563 B
+f
+n
+2 82 322 2563 B
+f
+n
+2 82 588 2563 B
+f
+n
+2 82 735 2563 B
+f
+n
+2 82 902 2563 B
+f
+n
+2 82 1337 2563 B
+f
+n
+2 82 1787 2563 B
+f
+n
+5 82 2196 2563 B
+f
+(A)176 2683 MS
+( )202 2683 MS
+(3)338 2683 MS (0)357 2683 MS (/)376 2683 MS (0)387 2683 MS (5)405 2683 MS (/)424 2683 MS (2)435 2683 MS (0)453 2683 MS (0)472 2683 MS (2)491 2683 MS
+( )510 2683 MS
+(3)644 2683 MS (0)663 2683 MS
+( )682 2683 MS
+(N)752 2683 MS (o)779 2683 MS (m)797 2683 MS
+( )826 2683 MS
+(M)919 2683 MS (.)953 2683 MS ( )962 2683 MS (T)972 2683 MS (a)995 2683 MS (j)1011 2683 MS (c)1022 2683 MS (h)1038 2683 MS (m)1057 2683 MS (a)1086 2683 MS (n)1103 2683 MS
+( )1122 2683 MS
+(C)1353 2683 MS (h)1378 2683 MS (.)1397 2683 MS ( )1407 2683 MS (C)1417 2683 MS (a)1441 2683 MS (l)1458 2683 MS (v)1469 2683 MS (i)1487 2683 MS (n)1497 2683 MS
+( )1516 2683 MS
+(E)1803 2683 MS (.)1826 2683 MS ( )1836 2683 MS (D)1846 2683 MS (o)1873 2683 MS (r)1891 2683 MS (l)1903 2683 MS (e)1914 2683 MS (t)1930 2683 MS
+( )1941 2683 MS
+n
+5 2 158 2646 B
+f
+n
+2 2 322 2646 B
+f
+n
+2 2 588 2646 B
+f
+n
+143 2 591 2646 B
+f
+n
+2 2 735 2646 B
+f
+n
+163 2 738 2646 B
+f
+n
+2 2 902 2646 B
+f
+n
+431 2 905 2646 B
+f
+n
+2 2 1337 2646 B
+f
+n
+446 2 1340 2646 B
+f
+n
+2 2 1787 2646 B
+f
+n
+405 2 1790 2646 B
+f
+n
+5 2 2196 2646 B
+f
+n
+5 46 158 2649 B
+f
+n
+2 46 322 2649 B
+f
+n
+2 46 588 2649 B
+f
+n
+2 46 735 2649 B
+f
+n
+2 46 902 2649 B
+f
+n
+2 46 1337 2649 B
+f
+n
+2 46 1787 2649 B
+f
+n
+5 46 2196 2649 B
+f
+[50 0 0 -50 0 0]/Times-Roman MF
+gs
+n
+25 50 176 2696 CB
+( )176 2741 MS
+gr
+gs
+n
+25 50 338 2696 CB
+( )338 2741 MS
+gr
+gs
+n
+25 50 604 2696 CB
+( )604 2741 MS
+gr
+[38 0 0 -38 0 0]/Times-Roman MF
+(D)752 2730 MS (a)779 2730 MS (t)796 2730 MS (e)807 2730 MS
+( )824 2730 MS
+( )919 2730 MS
+[50 0 0 -50 0 0]/Times-Roman MF
+gs
+n
+25 50 1353 2696 CB
+( )1353 2741 MS
+gr
+gs
+n
+25 50 1803 2696 CB
+( )1803 2741 MS
+gr
+n
+5 49 158 2696 B
+f
+n
+2 49 322 2696 B
+f
+n
+2 49 588 2696 B
+f
+n
+2 49 735 2696 B
+f
+n
+2 49 902 2696 B
+f
+n
+2 49 1337 2696 B
+f
+n
+2 49 1787 2696 B
+f
+n
+5 49 2196 2696 B
+f
+[38 0 0 -38 0 0]/Times-Bold MF
+(I)176 2784 MS (n)191 2784 MS (d)212 2784 MS (i)233 2784 MS (c)243 2784 MS (e)260 2784 MS
+[38 0 0 -38 0 0]/Times-Roman MF
+( )277 2784 MS
+[38 0 0 -38 0 0]/Times-Bold MF
+(D)338 2784 MS (a)365 2784 MS (t)384 2784 MS (e)397 2784 MS
+[29 0 0 -29 0 0]/Times-Roman MF
+( )414 2784 MS
+[29 0 0 -29 0 0]/Times-Bold MF
+(N)604 2776 MS (b)625 2776 MS (.)641 2776 MS (P)648 2776 MS (a)666 2776 MS (g)680 2776 MS (e)695 2776 MS
+[29 0 0 -29 0 0]/Times-Roman MF
+( )708 2776 MS
+[38 0 0 -38 0 0]/Times-Roman MF
+( )752 2783 MS
+[38 0 0 -38 0 0]/Times-Bold MF
+LATENC /_Times-Bold /Times-Bold reencode
+[38 0 0 -38 0 0]/_Times-Bold MF
+(V)919 2784 MS (\351)946 2784 MS (r)963 2784 MS (i)980 2784 MS (f)990 2784 MS (i)1003 2784 MS (c)1013 2784 MS (a)1030 2784 MS (t)1049 2784 MS (e)1061 2784 MS (u)1078 2784 MS (r)1099 2784 MS
+[38 0 0 -38 0 0]/Times-Roman MF
+( )1116 2784 MS
+[38 0 0 -38 0 0]/_Times-Bold MF
+(A)1353 2784 MS (u)1380 2784 MS (t)1401 2784 MS (r)1414 2784 MS (e)1431 2784 MS ( )1447 2784 MS (v)1457 2784 MS (i)1475 2784 MS (s)1486 2784 MS (a)1501 2784 MS
+[38 0 0 -38 0 0]/Times-Roman MF
+( )1520 2784 MS
+[38 0 0 -38 0 0]/_Times-Bold MF
+(A)1803 2784 MS (p)1830 2784 MS (p)1851 2784 MS (r)1872 2784 MS (o)1889 2784 MS (b)1907 2784 MS (a)1928 2784 MS (t)1947 2784 MS (e)1960 2784 MS (u)1977 2784 MS (r)1997 2784 MS
+[38 0 0 -38 0 0]/Times-Roman MF
+( )2014 2784 MS
+n
+5 2 158 2746 B
+f
+n
+157 2 164 2746 B
+f
+n
+2 2 322 2746 B
+f
+n
+262 2 325 2746 B
+f
+n
+2 2 588 2746 B
+f
+n
+143 2 591 2746 B
+f
+n
+2 2 735 2746 B
+f
+n
+163 2 738 2746 B
+f
+n
+2 2 902 2746 B
+f
+n
+431 2 905 2746 B
+f
+n
+2 2 1337 2746 B
+f
+n
+446 2 1340 2746 B
+f
+n
+2 2 1787 2746 B
+f
+n
+405 2 1790 2746 B
+f
+n
+5 2 2196 2746 B
+f
+n
+5 46 158 2749 B
+f
+n
+5 5 158 2796 B
+f
+n
+5 5 158 2796 B
+f
+n
+157 5 164 2796 B
+f
+n
+2 46 322 2749 B
+f
+n
+5 5 322 2796 B
+f
+n
+259 5 328 2796 B
+f
+n
+2 46 588 2749 B
+f
+n
+5 5 588 2796 B
+f
+n
+140 5 594 2796 B
+f
+n
+2 46 735 2749 B
+f
+n
+5 5 735 2796 B
+f
+n
+160 5 741 2796 B
+f
+n
+2 46 902 2749 B
+f
+n
+5 5 902 2796 B
+f
+n
+428 5 908 2796 B
+f
+n
+2 46 1337 2749 B
+f
+n
+5 5 1337 2796 B
+f
+n
+443 5 1343 2796 B
+f
+n
+2 46 1787 2749 B
+f
+n
+5 5 1787 2796 B
+f
+n
+402 5 1793 2796 B
+f
+n
+5 46 2196 2749 B
+f
+n
+5 5 2196 2796 B
+f
+n
+5 5 2196 2796 B
+f
+showpage
+Adobe_WinNT_Driver_Gfx dup /terminate get exec
+PageSV restore
+%%Page: 3 3
+NTPSOct95 /PageSV save put
+14.449 827.879 translate 72 300 div dup neg scale
+0 0 transform .25 add round .25 sub exch .25 add round .25 sub exch itransform translate
+1 j
+1 setlinecap
+72 sl
+0.375 g
+n
+494 182 M
+494 155 472 133 445 133 c
+418 133 396 155 396 182 c
+396 209 418 231 445 231 c
+472 231 494 209 494 182 c
+cp
+CM 0.156 0.152 scale
+s
+SM
+71 sl
+n
+660 182 M
+660 155 638 133 611 133 c
+584 133 562 155 562 182 c
+562 209 584 231 611 231 c
+638 231 660 209 660 182 c
+cp
+CM 0.156 0.152 scale
+s
+SM
+n
+120 24 468 152 B
+1 g
+f
+1 sl
+n
+122 26 467 151 B
+cp
+s
+71 sl
+0.375 g
+n
+577 180 M
+577 153 555 131 528 131 c
+501 131 479 153 479 180 c
+479 206 501 228 528 228 c
+555 228 577 206 577 180 c
+cp
+gs
+1 g
+e
+gr
+CM 0.156 0.152 scale
+s
+SM
+n
+480 180 M
+575 180 L
+CM 0.156 0.152 scale
+s
+SM
+n
+34 18 562 187 B
+1 g
+f
+1 sl
+n
+36 20 561 186 B
+cp
+s
+n
+610 173 M
+591 173 L
+554 124 L
+579 126 L
+609 173 L
+610 173 L
+cp
+gs
+e
+gr
+s
+n
+448 170 M
+468 170 L
+504 122 L
+479 123 L
+449 170 L
+448 170 L
+cp
+gs
+e
+gr
+s
+0.375 g
+n
+473 140 M
+473 137 470 135 467 135 c
+464 135 462 137 462 140 c
+462 142 464 145 467 145 c
+470 145 473 142 473 140 c
+cp
+gs
+e
+gr
+s
+n
+593 139 M
+593 136 590 134 588 134 c
+585 134 583 136 583 139 c
+583 141 585 144 588 144 c
+590 144 593 141 593 139 c
+cp
+gs
+e
+gr
+s
+72 sl
+n
+665 137 M
+665 229 L
+CM 0.156 0.152 scale
+s
+SM
+%%IncludeFont: Times-Roman
+[29 0 0 -29 0 0]/Times-Roman MF
+0 g
+( )676 243 MS
+[50 0 0 -50 0 0]/Times-Roman MF
+(D)400 289 MS (E)436 289 MS (N)467 289 MS ( )503 289 MS ( )516 289 MS (S)529 289 MS (a)557 289 MS (c)579 289 MS (l)601 289 MS (a)613 289 MS (y)636 289 MS
+( )660 289 MS
+( )1297 140 MS
+[38 0 0 -38 0 0]/Times-Roman MF
+(S)1785 129 MS (F)1806 129 MS (M)1827 129 MS (E)1861 129 MS (/)1883 129 MS (L)1894 129 MS (G)1916 129 MS (L)1943 129 MS (S)1965 129 MS (/)1986 129 MS (R)1997 129 MS (T)2022 129 MS (/)2045 129 MS (0)2056 129 MS (2)2075 129 MS
+(-)2094 129 MS
+(0)2106 129 MS (0)2125 129 MS (2)2144 129 MS
+( )2163 129 MS
+(D)1785 173 MS (a)1812 173 MS (t)1829 173 MS (e)1840 173 MS
+( )1856 173 MS
+(:)1866 173 MS
+( )1875 173 MS
+(3)1885 173 MS (0)1904 173 MS (/)1923 173 MS (0)1934 173 MS (5)1952 173 MS (/)1971 173 MS (2)1982 173 MS (0)2000 173 MS (0)2019 173 MS (2)2038 173 MS
+( )2057 173 MS
+n
+5 5 232 89 B
+f
+n
+5 5 232 89 B
+f
+n
+584 5 238 89 B
+f
+n
+5 5 823 89 B
+f
+n
+938 5 829 89 B
+f
+n
+5 5 1768 89 B
+f
+n
+436 5 1774 89 B
+f
+n
+5 5 2211 89 B
+f
+n
+5 5 2211 89 B
+f
+n
+5 256 232 95 B
+f
+n
+2 256 823 95 B
+f
+n
+2 256 1768 95 B
+f
+n
+5 256 2211 95 B
+f
+[50 0 0 -50 0 0]/Times-Roman MF
+(D)322 400 MS (M)358 400 MS (2)402 400 MS (S)427 400 MS (/)455 400 MS (S)469 400 MS (F)497 400 MS (M)524 400 MS (E)568 400 MS (/)599 400 MS (L)613 400 MS (G)643 400 MS (L)680 400 MS (S)710 400 MS
+( )738 400 MS
+%%IncludeFont: Times-Bold
+[50 0 0 -50 0 0]/Times-Bold MF
+gs
+n
+241 53 1102 367 CB
+(R)1102 413 MS (A)1138 413 MS (P)1174 413 MS (P)1204 413 MS (O)1234 413 MS (R)1273 413 MS (T)1310 413 MS
+gr
+gs
+n
+150 53 1343 367 CB
+( )1343 413 MS (D)1356 413 MS (M)1392 413 MS (2)1440 413 MS (S)1465 413 MS
+gr
+[50 0 0 -50 0 0]/Times-Roman MF
+gs
+n
+24 52 1493 368 CB
+( )1493 413 MS
+gr
+[38 0 0 -38 0 0]/Times-Roman MF
+(P)1785 400 MS (a)1806 400 MS (g)1823 400 MS (e)1841 400 MS ( )1858 400 MS
+[50 0 0 -50 0 0]/Times-Roman MF
+(3)1868 400 MS
+(/)1893 400 MS
+(3)1907 400 MS (0)1932 400 MS
+[38 0 0 -38 0 0]/Times-Roman MF
+( )1957 400 MS
+n
+5 2 232 352 B
+f
+n
+2 2 823 352 B
+f
+n
+941 2 826 352 B
+f
+n
+2 2 1768 352 B
+f
+n
+5 2 2211 352 B
+f
+n
+5 67 232 355 B
+f
+n
+590 1 232 423 B
+f
+n
+2 67 823 355 B
+f
+n
+1 1 823 423 B
+f
+n
+942 1 825 423 B
+f
+n
+2 67 1768 355 B
+f
+n
+1 1 1768 423 B
+f
+n
+440 1 1770 423 B
+f
+n
+5 67 2211 355 B
+f
+n
+5 1 2211 423 B
+f
+[50 0 0 -50 0 0]/Times-Roman MF
+( )235 470 MS
+[33 0 0 -33 0 0]/Times-Roman MF
+/IsChar{exch/CharStrings get exch known}bd/MapCh{3 -1 roll/Encoding get 3 1\r
+roll put}bd/MapDegree{dup 16#b0 exch/degree IsChar{/degree}{/ring}ifelse MapCh}\r
+bd/MapBB{dup 16#a6 exch/brokenbar IsChar{/brokenbar}{/bar}ifelse MapCh}bd\r
+/reencode{findfont begin currentdict dup length dict begin{1 index/FID ne{def}\r
+{pop pop}ifelse}forall/FontName exch def dup length 0 ne{/Encoding Encoding 256\r
+array copy def 0 exch{dup type/nametype eq{Encoding 2 index 2 index put pop 1\r
+add}{exch pop}ifelse}forall}if pop currentdict dup end end/FontName get exch\r
+definefont dup MapDegree MapBB}bd/LATENC[0/grave/acute/circumflex/tilde/macron\r
+/breve/dotaccent/dieresis/ring/cedilla/hungarumlaut/ogonek/caron/dotlessi/fi/fl\r
+/Lslash/lslash/Zcaron/zcaron/minus/.notdef/.notdef/.notdef/.notdef/.notdef\r
+/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/space/exclam/quotedbl\r
+/numbersign/dollar/percent/ampersand/quotesingle/parenleft/parenright/asterisk\r
+/plus/comma/hyphen/period/slash/zero/one/two/three/four/five/six/seven/eight\r
+/nine/colon/semicolon/less/equal/greater/question/at/A/B/C/D/E/F/G/H/I/J/K/L/M\r
+/N/O/P/Q/R/S/T/U/V/W/X/Y/Z/bracketleft/backslash/bracketright/asciicircum\r
+/underscore/grave/a/b/c/d/e/f/g/h/i/j/k/l/m/n/o/p/q/r/s/t/u/v/w/x/y/z/braceleft\r
+/bar/braceright/asciitilde/.notdef/.notdef/.notdef/quotesinglbase/florin\r
+/quotedblbase/ellipsis/dagger/daggerdbl/circumflex/perthousand/Scaron\r
+/guilsinglleft/OE/.notdef/.notdef/.notdef/.notdef/quoteleft/quoteright\r
+/quotedblleft/quotedblright/bullet/endash/emdash/tilde/trademark/scaron\r
+/guilsinglright/oe/.notdef/.notdef/Ydieresis/.notdef/exclamdown/cent/sterling\r
+/currency/yen/brokenbar/section/dieresis/copyright/ordfeminine/guillemotleft\r
+/logicalnot/hyphen/registered/macron/degree/plusminus/twosuperior/threesuperior\r
+/acute/mu/paragraph/periodcentered/cedilla/onesuperior/ordmasculine\r
+/guillemotright/onequarter/onehalf/threequarters/questiondown/Agrave/Aacute\r
+/Acircumflex/Atilde/Adieresis/Aring/AE/Ccedilla/Egrave/Eacute/Ecircumflex\r
+/Edieresis/Igrave/Iacute/Icircumflex/Idieresis/Eth/Ntilde/Ograve/Oacute\r
+/Ocircumflex/Otilde/Odieresis/multiply/Oslash/Ugrave/Uacute/Ucircumflex\r
+/Udieresis/Yacute/Thorn/germandbls/agrave/aacute/acircumflex/atilde/adieresis\r
+/aring/ae/ccedilla/egrave/eacute/ecircumflex/edieresis/igrave/iacute\r
+/icircumflex/idieresis/eth/ntilde/ograve/oacute/ocircumflex/otilde/odieresis\r
+/divide/oslash/ugrave/uacute/ucircumflex/udieresis/yacute/thorn/ydieresis]def\r
+LATENC /_Times-Roman /Times-Roman reencode
+[33 0 0 -33 0 0]/_Times-Roman MF
+(L)242 3256 MS (e)262 3256 MS (s)277 3256 MS ( )289 3256 MS (i)298 3256 MS (n)307 3256 MS (f)324 3256 MS (o)335 3256 MS (r)351 3256 MS (m)363 3256 MS (a)388 3256 MS (t)403 3256 MS (i)412 3256 MS (o)422 3256 MS (n)439 3256 MS (s)456 3256 MS
+( )468 3256 MS (c)477 3256 MS (o)492 3256 MS (n)508 3256 MS (t)524 3256 MS (e)534 3256 MS (n)549 3256 MS (u)565 3256 MS (e)582 3256 MS (s)597 3256 MS ( )610 3256 MS (d)618 3256 MS (a)634 3256 MS (n)650 3256 MS (s)667 3256 MS ( )679 3256 MS
+(c)688 3256 MS (e)703 3256 MS ( )717 3256 MS (d)726 3256 MS (o)742 3256 MS (c)759 3256 MS (u)773 3256 MS (m)791 3256 MS (e)817 3256 MS (n)831 3256 MS (t)847 3256 MS ( )857 3256 MS (s)866 3256 MS (o)878 3256 MS (n)895 3256 MS (t)911 3256 MS
+( )921 3256 MS (r)929 3256 MS (\351)941 3256 MS (s)956 3256 MS (e)968 3256 MS (r)982 3256 MS (v)994 3256 MS (\351)1011 3256 MS (e)1026 3256 MS (s)1041 3256 MS ( )1053 3256 MS (a)1061 3256 MS (u)1076 3256 MS (x)1093 3256 MS ( )1109 3256 MS (d)1118 3256 MS
+(e)1135 3256 MS (s)1150 3256 MS (t)1162 3256 MS (i)1171 3256 MS (n)1181 3256 MS (a)1197 3256 MS (t)1212 3256 MS (a)1221 3256 MS (i)1236 3256 MS (r)1245 3256 MS (e)1257 3256 MS (s)1272 3256 MS ( )1284 3256 MS (n)1293 3256 MS (o)1309 3256 MS (m)1326 3256 MS
+(m)1352 3256 MS (\351)1378 3256 MS (m)1393 3256 MS (e)1419 3256 MS (n)1433 3256 MS (t)1450 3256 MS ( )1459 3256 MS (d)1468 3256 MS (\351)1484 3256 MS (s)1499 3256 MS (i)1512 3256 MS (g)1521 3256 MS
+(n)1538 3256 MS (\351)1555 3256 MS (s)1570 3256 MS ( )1582 3256 MS (e)1591 3256 MS (t)1605 3256 MS ( )1615 3256 MS (n)1623 3256 MS (e)1640 3256 MS ( )1654 3256 MS (p)1663 3256 MS (e)1680 3256 MS (u)1694 3256 MS (v)1711 3256 MS (e)1728 3256 MS (n)1743 3256 MS
+(t)1759 3256 MS ( )1768 3256 MS (r)1776 3256 MS (e)1788 3256 MS (c)1803 3256 MS (e)1818 3256 MS (v)1832 3256 MS (o)1849 3256 MS (i)1865 3256 MS (r)1874 3256 MS ( )1886 3256 MS (a)1894 3256 MS (u)1909 3256 MS (c)1926 3256 MS (u)1940 3256 MS (n)1957 3256 MS
+(e)1974 3256 MS ( )1988 3256 MS (d)1997 3256 MS (i)2013 3256 MS (f)2023 3256 MS (f)2034 3256 MS (u)2044 3256 MS (s)2062 3256 MS (i)2074 3256 MS (o)2084 3256 MS (n)2101 3256 MS
+( )2117 3256 MS
+(s)928 3294 MS (a)940 3294 MS (n)955 3294 MS (s)972 3294 MS ( )985 3294 MS (l)993 3294 MS (\222)1002 3294 MS (a)1013 3294 MS (u)1028 3294 MS (t)1045 3294 MS (o)1054 3294 MS (r)1071 3294 MS (i)1082 3294 MS (s)1092 3294 MS (a)1104 3294 MS (t)1119 3294 MS
+(i)1128 3294 MS (o)1138 3294 MS (n)1154 3294 MS ( )1171 3294 MS (e)1180 3294 MS (x)1194 3294 MS (p)1211 3294 MS (r)1227 3294 MS (e)1239 3294 MS (s)1254 3294 MS (s)1267 3294 MS (e)1280 3294 MS ( )1294 3294 MS (d)1303 3294 MS (u)1319 3294 MS ( )1336 3294 MS
+(D)1344 3294 MS (M)1368 3294 MS (2)1397 3294 MS (S)1414 3294 MS
+[50 0 0 -50 0 0]/Times-Roman MF
+( )1432 3294 MS
+[58 0 0 -58 0 0]/Times-Roman MF
+(L)235 560 MS (I)270 560 MS (S)289 560 MS (T)322 560 MS (E)358 560 MS ( )393 560 MS (D)408 560 MS (E)450 560 MS ( )485 560 MS (M)500 560 MS (O)552 560 MS (D)594 560 MS (I)636 560 MS (F)656 560 MS (I)688 560 MS (C)707 560 MS
+(A)747 560 MS (T)789 560 MS (I)824 560 MS (O)843 560 MS (N)885 560 MS
+( )927 560 MS
+[50 0 0 -50 0 0]/Times-Roman MF
+(I)250 663 MS (n)267 663 MS (d)291 663 MS (i)317 663 MS (c)330 663 MS (e)352 663 MS
+gs
+n
+20 57 374 618 CB
+( )374 663 MS
+gr
+(D)411 663 MS (a)447 663 MS (t)469 663 MS (e)484 663 MS
+( )506 663 MS
+(M)851 663 MS (o)895 663 MS (t)920 663 MS (i)935 663 MS (f)948 663 MS ( )963 663 MS (e)977 663 MS (t)999 663 MS ( )1014 663 MS (d)1027 663 MS (e)1052 663 MS (s)1074 663 MS (c)1093 663 MS (r)1115 663 MS (i)1132 663 MS (p)1144 663 MS
+(t)1169 663 MS (i)1185 663 MS (o)1197 663 MS (n)1223 663 MS ( )1247 663 MS (d)1260 663 MS (e)1285 663 MS ( )1307 663 MS (l)1321 663 MS (a)1333 663 MS ( )1355 663 MS (m)1369 663 MS (o)1406 663 MS (d)1432 663 MS (i)1458 663 MS (f)1471 663 MS
+(i)1488 663 MS (c)1501 663 MS (a)1524 663 MS (t)1546 663 MS (i)1561 663 MS (o)1573 663 MS (n)1599 663 MS
+( )1623 663 MS
+n
+5 5 232 599 B
+f
+n
+5 5 232 599 B
+f
+n
+155 5 238 599 B
+f
+n
+5 5 394 599 B
+f
+n
+433 5 400 599 B
+f
+n
+5 5 834 599 B
+f
+n
+1488 5 840 599 B
+f
+n
+5 5 2329 599 B
+f
+n
+5 5 2329 599 B
+f
+n
+5 78 232 605 B
+f
+n
+2 78 394 605 B
+f
+n
+2 78 834 605 B
+f
+n
+5 78 2329 605 B
+f
+(A)250 760 MS
+( )285 760 MS
+(3)411 760 MS (0)436 760 MS ( )461 760 MS (m)474 760 MS (a)512 760 MS (i)535 760 MS ( )547 760 MS (2)560 760 MS (0)585 760 MS (0)610 760 MS (2)635 760 MS
+( )660 760 MS
+(D)851 760 MS (o)887 760 MS (c)913 760 MS (u)935 760 MS (m)960 760 MS (e)997 760 MS (n)1020 760 MS (t)1044 760 MS ( )1059 760 MS (i)1073 760 MS (n)1086 760 MS (i)1111 760 MS (t)1123 760 MS (i)1139 760 MS (a)1151 760 MS (l)1174 760 MS
+( )1187 760 MS
+n
+5 5 232 684 B
+f
+n
+155 5 238 684 B
+f
+n
+5 5 394 684 B
+f
+n
+433 5 400 684 B
+f
+n
+5 5 834 684 B
+f
+n
+1488 5 840 684 B
+f
+n
+5 5 2329 684 B
+f
+n
+5 82 232 690 B
+f
+n
+2 82 394 690 B
+f
+n
+2 82 834 690 B
+f
+n
+5 82 2329 690 B
+f
+( )250 846 MS
+( )411 846 MS
+( )851 846 MS
+n
+5 2 232 773 B
+f
+n
+155 2 238 773 B
+f
+n
+2 2 394 773 B
+f
+n
+436 2 397 773 B
+f
+n
+2 2 834 773 B
+f
+n
+1491 2 837 773 B
+f
+n
+5 2 2329 773 B
+f
+n
+5 81 232 776 B
+f
+n
+2 81 394 776 B
+f
+n
+2 81 834 776 B
+f
+n
+5 81 2329 776 B
+f
+( )250 931 MS
+( )411 931 MS
+( )851 931 MS
+n
+5 2 232 858 B
+f
+n
+155 2 238 858 B
+f
+n
+2 2 394 858 B
+f
+n
+436 2 397 858 B
+f
+n
+2 2 834 858 B
+f
+n
+1491 2 837 858 B
+f
+n
+5 2 2329 858 B
+f
+n
+5 82 232 861 B
+f
+n
+2 82 394 861 B
+f
+n
+2 82 834 861 B
+f
+n
+5 82 2329 861 B
+f
+( )250 1017 MS
+( )411 1017 MS
+( )851 1017 MS
+n
+5 2 232 944 B
+f
+n
+155 2 238 944 B
+f
+n
+2 2 394 944 B
+f
+n
+436 2 397 944 B
+f
+n
+2 2 834 944 B
+f
+n
+1491 2 837 944 B
+f
+n
+5 2 2329 944 B
+f
+n
+5 82 232 947 B
+f
+n
+2 82 394 947 B
+f
+n
+2 82 834 947 B
+f
+n
+5 82 2329 947 B
+f
+( )250 1103 MS
+( )411 1103 MS
+( )851 1103 MS
+n
+5 2 232 1030 B
+f
+n
+155 2 238 1030 B
+f
+n
+2 2 394 1030 B
+f
+n
+436 2 397 1030 B
+f
+n
+2 2 834 1030 B
+f
+n
+1491 2 837 1030 B
+f
+n
+5 2 2329 1030 B
+f
+n
+5 82 232 1033 B
+f
+n
+5 5 232 1116 B
+f
+n
+5 5 232 1116 B
+f
+n
+155 5 238 1116 B
+f
+n
+2 82 394 1033 B
+f
+n
+5 5 394 1116 B
+f
+n
+433 5 400 1116 B
+f
+n
+2 82 834 1033 B
+f
+n
+5 5 834 1116 B
+f
+n
+1488 5 840 1116 B
+f
+n
+5 82 2329 1033 B
+f
+n
+5 5 2329 1116 B
+f
+n
+5 5 2329 1116 B
+f
+%%IncludeFont: Palatino-Bold
+[83 0 0 -83 0 0]/Palatino-Bold MF
+( )1180 1200 MS
+showpage
+%%Page: 4 4
+14.449 827.879 translate 72 300 div dup neg scale
+0 0 transform .25 add round .25 sub exch .25 add round .25 sub exch itransform translate
+1 j
+1 setlinecap
+72 sl
+0.375 g
+n
+494 182 M
+494 155 472 133 445 133 c
+418 133 396 155 396 182 c
+396 209 418 231 445 231 c
+472 231 494 209 494 182 c
+cp
+CM 0.156 0.152 scale
+s
+SM
+71 sl
+n
+660 182 M
+660 155 638 133 611 133 c
+584 133 562 155 562 182 c
+562 209 584 231 611 231 c
+638 231 660 209 660 182 c
+cp
+CM 0.156 0.152 scale
+s
+SM
+n
+120 24 468 152 B
+1 g
+f
+1 sl
+n
+122 26 467 151 B
+cp
+s
+71 sl
+0.375 g
+n
+577 180 M
+577 153 555 131 528 131 c
+501 131 479 153 479 180 c
+479 206 501 228 528 228 c
+555 228 577 206 577 180 c
+cp
+gs
+1 g
+e
+gr
+CM 0.156 0.152 scale
+s
+SM
+n
+480 180 M
+575 180 L
+CM 0.156 0.152 scale
+s
+SM
+n
+34 18 562 187 B
+1 g
+f
+1 sl
+n
+36 20 561 186 B
+cp
+s
+n
+610 173 M
+591 173 L
+554 124 L
+579 126 L
+609 173 L
+610 173 L
+cp
+gs
+e
+gr
+s
+n
+448 170 M
+468 170 L
+504 122 L
+479 123 L
+449 170 L
+448 170 L
+cp
+gs
+e
+gr
+s
+0.375 g
+n
+473 140 M
+473 137 470 135 467 135 c
+464 135 462 137 462 140 c
+462 142 464 145 467 145 c
+470 145 473 142 473 140 c
+cp
+gs
+e
+gr
+s
+n
+593 139 M
+593 136 590 134 588 134 c
+585 134 583 136 583 139 c
+583 141 585 144 588 144 c
+590 144 593 141 593 139 c
+cp
+gs
+e
+gr
+s
+72 sl
+n
+665 137 M
+665 229 L
+CM 0.156 0.152 scale
+s
+SM
+[29 0 0 -29 0 0]/Times-Roman MF
+0 g
+( )676 243 MS
+[50 0 0 -50 0 0]/Times-Roman MF
+(D)400 289 MS (E)436 289 MS (N)467 289 MS ( )503 289 MS ( )516 289 MS (S)529 289 MS (a)557 289 MS (c)579 289 MS (l)601 289 MS (a)613 289 MS (y)636 289 MS
+( )660 289 MS
+( )1297 140 MS
+[38 0 0 -38 0 0]/Times-Roman MF
+(S)1785 129 MS (F)1806 129 MS (M)1827 129 MS (E)1861 129 MS (/)1883 129 MS (L)1894 129 MS (G)1916 129 MS (L)1943 129 MS (S)1965 129 MS (/)1986 129 MS (R)1997 129 MS (T)2022 129 MS (/)2045 129 MS (0)2056 129 MS (2)2075 129 MS
+(-)2094 129 MS
+(0)2106 129 MS (0)2125 129 MS (2)2144 129 MS
+( )2163 129 MS
+(D)1785 173 MS (a)1812 173 MS (t)1829 173 MS (e)1840 173 MS
+( )1856 173 MS
+(:)1866 173 MS
+( )1875 173 MS
+(3)1885 173 MS (0)1904 173 MS (/)1923 173 MS (0)1934 173 MS (5)1952 173 MS (/)1971 173 MS (2)1982 173 MS (0)2000 173 MS (0)2019 173 MS (2)2038 173 MS
+( )2057 173 MS
+n
+5 5 232 89 B
+f
+n
+5 5 232 89 B
+f
+n
+584 5 238 89 B
+f
+n
+5 5 823 89 B
+f
+n
+938 5 829 89 B
+f
+n
+5 5 1768 89 B
+f
+n
+436 5 1774 89 B
+f
+n
+5 5 2211 89 B
+f
+n
+5 5 2211 89 B
+f
+n
+5 256 232 95 B
+f
+n
+2 256 823 95 B
+f
+n
+2 256 1768 95 B
+f
+n
+5 256 2211 95 B
+f
+[50 0 0 -50 0 0]/Times-Roman MF
+(D)322 400 MS (M)358 400 MS (2)402 400 MS (S)427 400 MS (/)455 400 MS (S)469 400 MS (F)497 400 MS (M)524 400 MS (E)568 400 MS (/)599 400 MS (L)613 400 MS (G)643 400 MS (L)680 400 MS (S)710 400 MS
+( )738 400 MS
+[50 0 0 -50 0 0]/Times-Bold MF
+gs
+n
+241 53 1102 367 CB
+(R)1102 413 MS (A)1138 413 MS (P)1174 413 MS (P)1204 413 MS (O)1234 413 MS (R)1273 413 MS (T)1310 413 MS
+gr
+gs
+n
+150 53 1343 367 CB
+( )1343 413 MS (D)1356 413 MS (M)1392 413 MS (2)1440 413 MS (S)1465 413 MS
+gr
+[50 0 0 -50 0 0]/Times-Roman MF
+gs
+n
+24 52 1493 368 CB
+( )1493 413 MS
+gr
+[38 0 0 -38 0 0]/Times-Roman MF
+(P)1785 400 MS (a)1806 400 MS (g)1823 400 MS (e)1841 400 MS ( )1858 400 MS
+[50 0 0 -50 0 0]/Times-Roman MF
+(4)1868 400 MS
+(/)1893 400 MS
+(3)1907 400 MS (0)1932 400 MS
+[38 0 0 -38 0 0]/Times-Roman MF
+( )1957 400 MS
+n
+5 2 232 352 B
+f
+n
+2 2 823 352 B
+f
+n
+941 2 826 352 B
+f
+n
+2 2 1768 352 B
+f
+n
+5 2 2211 352 B
+f
+n
+5 67 232 355 B
+f
+n
+590 1 232 423 B
+f
+n
+2 67 823 355 B
+f
+n
+1 1 823 423 B
+f
+n
+942 1 825 423 B
+f
+n
+2 67 1768 355 B
+f
+n
+1 1 1768 423 B
+f
+n
+440 1 1770 423 B
+f
+n
+5 67 2211 355 B
+f
+n
+5 1 2211 423 B
+f
+[50 0 0 -50 0 0]/Times-Roman MF
+( )235 470 MS
+[33 0 0 -33 0 0]/Times-Roman MF
+/IsChar{exch/CharStrings get exch known}bd/MapCh{3 -1 roll/Encoding get 3 1\r
+roll put}bd/MapDegree{dup 16#b0 exch/degree IsChar{/degree}{/ring}ifelse MapCh}\r
+bd/MapBB{dup 16#a6 exch/brokenbar IsChar{/brokenbar}{/bar}ifelse MapCh}bd\r
+/reencode{findfont begin currentdict dup length dict begin{1 index/FID ne{def}\r
+{pop pop}ifelse}forall/FontName exch def dup length 0 ne{/Encoding Encoding 256\r
+array copy def 0 exch{dup type/nametype eq{Encoding 2 index 2 index put pop 1\r
+add}{exch pop}ifelse}forall}if pop currentdict dup end end/FontName get exch\r
+definefont dup MapDegree MapBB}bd/LATENC[0/grave/acute/circumflex/tilde/macron\r
+/breve/dotaccent/dieresis/ring/cedilla/hungarumlaut/ogonek/caron/dotlessi/fi/fl\r
+/Lslash/lslash/Zcaron/zcaron/minus/.notdef/.notdef/.notdef/.notdef/.notdef\r
+/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/space/exclam/quotedbl\r
+/numbersign/dollar/percent/ampersand/quotesingle/parenleft/parenright/asterisk\r
+/plus/comma/hyphen/period/slash/zero/one/two/three/four/five/six/seven/eight\r
+/nine/colon/semicolon/less/equal/greater/question/at/A/B/C/D/E/F/G/H/I/J/K/L/M\r
+/N/O/P/Q/R/S/T/U/V/W/X/Y/Z/bracketleft/backslash/bracketright/asciicircum\r
+/underscore/grave/a/b/c/d/e/f/g/h/i/j/k/l/m/n/o/p/q/r/s/t/u/v/w/x/y/z/braceleft\r
+/bar/braceright/asciitilde/.notdef/.notdef/.notdef/quotesinglbase/florin\r
+/quotedblbase/ellipsis/dagger/daggerdbl/circumflex/perthousand/Scaron\r
+/guilsinglleft/OE/.notdef/.notdef/.notdef/.notdef/quoteleft/quoteright\r
+/quotedblleft/quotedblright/bullet/endash/emdash/tilde/trademark/scaron\r
+/guilsinglright/oe/.notdef/.notdef/Ydieresis/.notdef/exclamdown/cent/sterling\r
+/currency/yen/brokenbar/section/dieresis/copyright/ordfeminine/guillemotleft\r
+/logicalnot/hyphen/registered/macron/degree/plusminus/twosuperior/threesuperior\r
+/acute/mu/paragraph/periodcentered/cedilla/onesuperior/ordmasculine\r
+/guillemotright/onequarter/onehalf/threequarters/questiondown/Agrave/Aacute\r
+/Acircumflex/Atilde/Adieresis/Aring/AE/Ccedilla/Egrave/Eacute/Ecircumflex\r
+/Edieresis/Igrave/Iacute/Icircumflex/Idieresis/Eth/Ntilde/Ograve/Oacute\r
+/Ocircumflex/Otilde/Odieresis/multiply/Oslash/Ugrave/Uacute/Ucircumflex\r
+/Udieresis/Yacute/Thorn/germandbls/agrave/aacute/acircumflex/atilde/adieresis\r
+/aring/ae/ccedilla/egrave/eacute/ecircumflex/edieresis/igrave/iacute\r
+/icircumflex/idieresis/eth/ntilde/ograve/oacute/ocircumflex/otilde/odieresis\r
+/divide/oslash/ugrave/uacute/ucircumflex/udieresis/yacute/thorn/ydieresis]def\r
+LATENC /_Times-Roman /Times-Roman reencode
+[33 0 0 -33 0 0]/_Times-Roman MF
+(L)242 3256 MS (e)262 3256 MS (s)277 3256 MS ( )289 3256 MS (i)298 3256 MS (n)307 3256 MS (f)324 3256 MS (o)335 3256 MS (r)351 3256 MS (m)363 3256 MS (a)388 3256 MS (t)403 3256 MS (i)412 3256 MS (o)422 3256 MS (n)439 3256 MS (s)456 3256 MS
+( )468 3256 MS (c)477 3256 MS (o)492 3256 MS (n)508 3256 MS (t)524 3256 MS (e)534 3256 MS (n)549 3256 MS (u)565 3256 MS (e)582 3256 MS (s)597 3256 MS ( )610 3256 MS (d)618 3256 MS (a)634 3256 MS (n)650 3256 MS (s)667 3256 MS ( )679 3256 MS
+(c)688 3256 MS (e)703 3256 MS ( )717 3256 MS (d)726 3256 MS (o)742 3256 MS (c)759 3256 MS (u)773 3256 MS (m)791 3256 MS (e)817 3256 MS (n)831 3256 MS (t)847 3256 MS ( )857 3256 MS (s)866 3256 MS (o)878 3256 MS (n)895 3256 MS (t)911 3256 MS
+( )921 3256 MS (r)929 3256 MS (\351)941 3256 MS (s)956 3256 MS (e)968 3256 MS (r)982 3256 MS (v)994 3256 MS (\351)1011 3256 MS (e)1026 3256 MS (s)1041 3256 MS ( )1053 3256 MS (a)1061 3256 MS (u)1076 3256 MS (x)1093 3256 MS ( )1109 3256 MS (d)1118 3256 MS
+(e)1135 3256 MS (s)1150 3256 MS (t)1162 3256 MS (i)1171 3256 MS (n)1181 3256 MS (a)1197 3256 MS (t)1212 3256 MS (a)1221 3256 MS (i)1236 3256 MS (r)1245 3256 MS (e)1257 3256 MS (s)1272 3256 MS ( )1284 3256 MS (n)1293 3256 MS (o)1309 3256 MS (m)1326 3256 MS
+(m)1352 3256 MS (\351)1378 3256 MS (m)1393 3256 MS (e)1419 3256 MS (n)1433 3256 MS (t)1450 3256 MS ( )1459 3256 MS (d)1468 3256 MS (\351)1484 3256 MS (s)1499 3256 MS (i)1512 3256 MS (g)1521 3256 MS
+(n)1538 3256 MS (\351)1555 3256 MS (s)1570 3256 MS ( )1582 3256 MS (e)1591 3256 MS (t)1605 3256 MS ( )1615 3256 MS (n)1623 3256 MS (e)1640 3256 MS ( )1654 3256 MS (p)1663 3256 MS (e)1680 3256 MS (u)1694 3256 MS (v)1711 3256 MS (e)1728 3256 MS (n)1743 3256 MS
+(t)1759 3256 MS ( )1768 3256 MS (r)1776 3256 MS (e)1788 3256 MS (c)1803 3256 MS (e)1818 3256 MS (v)1832 3256 MS (o)1849 3256 MS (i)1865 3256 MS (r)1874 3256 MS ( )1886 3256 MS (a)1894 3256 MS (u)1909 3256 MS (c)1926 3256 MS (u)1940 3256 MS (n)1957 3256 MS
+(e)1974 3256 MS ( )1988 3256 MS (d)1997 3256 MS (i)2013 3256 MS (f)2023 3256 MS (f)2034 3256 MS (u)2044 3256 MS (s)2062 3256 MS (i)2074 3256 MS (o)2084 3256 MS (n)2101 3256 MS
+( )2117 3256 MS
+(s)928 3294 MS (a)940 3294 MS (n)955 3294 MS (s)972 3294 MS ( )985 3294 MS (l)993 3294 MS (\222)1002 3294 MS (a)1013 3294 MS (u)1028 3294 MS (t)1045 3294 MS (o)1054 3294 MS (r)1071 3294 MS (i)1082 3294 MS (s)1092 3294 MS (a)1104 3294 MS (t)1119 3294 MS
+(i)1128 3294 MS (o)1138 3294 MS (n)1154 3294 MS ( )1171 3294 MS (e)1180 3294 MS (x)1194 3294 MS (p)1211 3294 MS (r)1227 3294 MS (e)1239 3294 MS (s)1254 3294 MS (s)1267 3294 MS (e)1280 3294 MS ( )1294 3294 MS (d)1303 3294 MS (u)1319 3294 MS ( )1336 3294 MS
+(D)1344 3294 MS (M)1368 3294 MS (2)1397 3294 MS (S)1414 3294 MS
+[50 0 0 -50 0 0]/Times-Roman MF
+( )1432 3294 MS
+[58 0 0 -58 0 0]/Times-Bold MF
+( )1180 561 MS
+[42 0 0 -42 0 0]/Times-Bold MF
+(1)235 637 MS
+[50 0 0 -50 0 0]/Times-Roman MF
+( )256 637 MS
+[42 0 0 -42 0 0]/Times-Bold MF
+(I)335 637 MS (N)351 637 MS (T)381 637 MS (R)409 637 MS (O)439 637 MS (D)472 637 MS (U)502 637 MS (C)532 637 MS (T)562 637 MS (I)590 637 MS (O)606 637 MS (N)639 637 MS
+(.)671 637 MS (.)682 637 MS (.)693 637 MS (.)704 637 MS (.)715 637 MS (.)726 637 MS (.)737 637 MS (.)748 637 MS (.)759 637 MS (.)770 637 MS (.)781 637 MS (.)792 637 MS (.)803 637 MS (.)814 637 MS (.)825 637 MS (.)836 637 MS
+(.)847 637 MS (.)858 637 MS (.)869 637 MS (.)880 637 MS (.)891 637 MS (.)902 637 MS (.)913 637 MS (.)924 637 MS (.)935 637 MS (.)946 637 MS (.)957 637 MS (.)968 637 MS (.)979 637 MS (.)990 637 MS (.)1001 637 MS (.)1012 637 MS
+(.)1023 637 MS (.)1034 637 MS (.)1045 637 MS (.)1056 637 MS (.)1067 637 MS (.)1078 637 MS (.)1089 637 MS (.)1100 637 MS (.)1111 637 MS (.)1122 637 MS (.)1133 637 MS (.)1144 637 MS (.)1155 637 MS (.)1166 637 MS (.)1177 637 MS (.)1188 637 MS
+(.)1199 637 MS (.)1210 637 MS (.)1221 637 MS (.)1232 637 MS (.)1243 637 MS (.)1254 637 MS (.)1265 637 MS (.)1276 637 MS (.)1287 637 MS (.)1298 637 MS (.)1309 637 MS (.)1320 637 MS (.)1331 637 MS (.)1342 637 MS (.)1353 637 MS (.)1364 637 MS
+(.)1375 637 MS (.)1386 637 MS (.)1397 637 MS (.)1408 637 MS (.)1419 637 MS (.)1430 637 MS (.)1441 637 MS (.)1452 637 MS (.)1463 637 MS (.)1474 637 MS (.)1485 637 MS (.)1496 637 MS (.)1507 637 MS (.)1518 637 MS (.)1529 637 MS (.)1540 637 MS
+(.)1551 637 MS (.)1562 637 MS (.)1573 637 MS (.)1584 637 MS (.)1595 637 MS (.)1606 637 MS (.)1617 637 MS (.)1628 637 MS (.)1639 637 MS (.)1650 637 MS (.)1661 637 MS (.)1672 637 MS (.)1683 637 MS (.)1694 637 MS (.)1705 637 MS (.)1716 637 MS
+(.)1727 637 MS (.)1738 637 MS (.)1749 637 MS (.)1760 637 MS (.)1771 637 MS (.)1782 637 MS (.)1793 637 MS (.)1804 637 MS (.)1815 637 MS (.)1826 637 MS (.)1837 637 MS (.)1848 637 MS (.)1859 637 MS (.)1870 637 MS (.)1881 637 MS (.)1892 637 MS
+(.)1903 637 MS (.)1914 637 MS (.)1925 637 MS (.)1936 637 MS (.)1947 637 MS (.)1958 637 MS (.)1969 637 MS (.)1980 637 MS (.)1991 637 MS (.)2002 637 MS (.)2013 637 MS (.)2024 637 MS (.)2035 637 MS (.)2046 637 MS (.)2057 637 MS (.)2068 637 MS
+(.)2079 637 MS (.)2090 637 MS
+(5)2102 637 MS
+[50 0 0 -50 0 0]/Times-Roman MF
+( )2123 637 MS
+[42 0 0 -42 0 0]/Times-Bold MF
+(2)235 710 MS
+[50 0 0 -50 0 0]/Times-Roman MF
+( )256 710 MS
+[42 0 0 -42 0 0]/Times-Bold MF
+LATENC /_Times-Bold /Times-Bold reencode
+[42 0 0 -42 0 0]/_Times-Bold MF
+(E)335 710 MS (T)363 710 MS (A)391 710 MS (T)421 710 MS ( )449 710 MS (D)460 710 MS (E)490 710 MS ( )517 710 MS (L)528 710 MS (\222)556 710 MS (A)570 710 MS (R)600 710 MS (T)630 710 MS ( )657 710 MS (D)668 710 MS (A)698 710 MS
+(N)728 710 MS (S)758 710 MS ( )781 710 MS (L)792 710 MS
+(E)820 710 MS ( )847 710 MS (D)858 710 MS (O)888 710 MS (M)920 710 MS (A)960 710 MS (I)990 710 MS (N)1006 710 MS (E)1036 710 MS
+(.)1067 710 MS (.)1078 710 MS (.)1089 710 MS (.)1100 710 MS (.)1111 710 MS (.)1122 710 MS (.)1133 710 MS (.)1144 710 MS (.)1155 710 MS (.)1166 710 MS (.)1177 710 MS (.)1188 710 MS (.)1199 710 MS (.)1210 710 MS (.)1221 710 MS (.)1232 710 MS
+(.)1243 710 MS (.)1254 710 MS (.)1265 710 MS (.)1276 710 MS (.)1287 710 MS (.)1298 710 MS (.)1309 710 MS (.)1320 710 MS (.)1331 710 MS (.)1342 710 MS (.)1353 710 MS (.)1364 710 MS (.)1375 710 MS (.)1386 710 MS (.)1397 710 MS (.)1408 710 MS
+(.)1419 710 MS (.)1430 710 MS (.)1441 710 MS (.)1452 710 MS (.)1463 710 MS (.)1474 710 MS (.)1485 710 MS (.)1496 710 MS (.)1507 710 MS (.)1518 710 MS (.)1529 710 MS (.)1540 710 MS (.)1551 710 MS (.)1562 710 MS (.)1573 710 MS (.)1584 710 MS
+(.)1595 710 MS (.)1606 710 MS (.)1617 710 MS (.)1628 710 MS (.)1639 710 MS (.)1650 710 MS (.)1661 710 MS (.)1672 710 MS (.)1683 710 MS (.)1694 710 MS (.)1705 710 MS (.)1716 710 MS (.)1727 710 MS (.)1738 710 MS (.)1749 710 MS (.)1760 710 MS
+(.)1771 710 MS (.)1782 710 MS (.)1793 710 MS (.)1804 710 MS (.)1815 710 MS (.)1826 710 MS (.)1837 710 MS (.)1848 710 MS (.)1859 710 MS (.)1870 710 MS (.)1881 710 MS (.)1892 710 MS (.)1903 710 MS (.)1914 710 MS (.)1925 710 MS (.)1936 710 MS
+(.)1947 710 MS (.)1958 710 MS (.)1969 710 MS (.)1980 710 MS (.)1991 710 MS (.)2002 710 MS (.)2013 710 MS (.)2024 710 MS (.)2035 710 MS (.)2046 710 MS (.)2057 710 MS (.)2068 710 MS (.)2079 710 MS (.)2090 710 MS
+(6)2102 710 MS
+[50 0 0 -50 0 0]/Times-Roman MF
+( )2123 710 MS
+[42 0 0 -42 0 0]/_Times-Bold MF
+(3)235 783 MS
+[50 0 0 -50 0 0]/Times-Roman MF
+( )256 783 MS
+[42 0 0 -42 0 0]/_Times-Bold MF
+(A)335 783 MS (P)365 783 MS (P)390 783 MS (R)415 783 MS (O)445 783 MS (C)478 783 MS (H)508 783 MS (E)541 783 MS ( )569 783 MS (D)580 783 MS (E)610 783 MS (V)638 783 MS (E)668 783 MS (L)696 783 MS (O)723 783 MS (P)756 783 MS
+(P)781 783 MS (E)806 783 MS (E)834 783 MS ( )862 783 MS
+(D)873 783 MS (A)903 783 MS (N)933 783 MS (S)963 783 MS ( )986 783 MS (C)997 783 MS (E)1027 783 MS (T)1054 783 MS (T)1082 783 MS (E)1110 783 MS ( )1137 783 MS (E)1148 783 MS (T)1176 783 MS (U)1204 783 MS (D)1234 783 MS (E)1264 783 MS
+(.)1298 783 MS (.)1309 783 MS (.)1320 783 MS (.)1331 783 MS (.)1342 783 MS (.)1353 783 MS (.)1364 783 MS (.)1375 783 MS (.)1386 783 MS (.)1397 783 MS (.)1408 783 MS (.)1419 783 MS (.)1430 783 MS (.)1441 783 MS (.)1452 783 MS (.)1463 783 MS
+(.)1474 783 MS (.)1485 783 MS (.)1496 783 MS (.)1507 783 MS (.)1518 783 MS (.)1529 783 MS (.)1540 783 MS (.)1551 783 MS (.)1562 783 MS (.)1573 783 MS (.)1584 783 MS (.)1595 783 MS (.)1606 783 MS (.)1617 783 MS (.)1628 783 MS (.)1639 783 MS
+(.)1650 783 MS (.)1661 783 MS (.)1672 783 MS (.)1683 783 MS (.)1694 783 MS (.)1705 783 MS (.)1716 783 MS (.)1727 783 MS (.)1738 783 MS (.)1749 783 MS (.)1760 783 MS (.)1771 783 MS (.)1782 783 MS (.)1793 783 MS (.)1804 783 MS (.)1815 783 MS
+(.)1826 783 MS (.)1837 783 MS (.)1848 783 MS (.)1859 783 MS (.)1870 783 MS (.)1881 783 MS (.)1892 783 MS (.)1903 783 MS (.)1914 783 MS (.)1925 783 MS (.)1936 783 MS (.)1947 783 MS (.)1958 783 MS (.)1969 783 MS (.)1980 783 MS (.)1991 783 MS
+(.)2002 783 MS (.)2013 783 MS (.)2024 783 MS (.)2035 783 MS (.)2046 783 MS (.)2057 783 MS (.)2068 783 MS (.)2079 783 MS (.)2090 783 MS
+(7)2102 783 MS
+[50 0 0 -50 0 0]/Times-Roman MF
+( )2123 783 MS
+[42 0 0 -42 0 0]/_Times-Bold MF
+(4)235 856 MS
+[50 0 0 -50 0 0]/Times-Roman MF
+( )256 856 MS
+[42 0 0 -42 0 0]/_Times-Bold MF
+(D)335 856 MS (E)365 856 MS (F)393 856 MS (I)418 856 MS (N)434 856 MS (I)464 856 MS (T)480 856 MS (I)508 856 MS (O)524 856 MS (N)557 856 MS (S)587 856 MS
+(.)616 856 MS (.)627 856 MS (.)638 856 MS (.)649 856 MS (.)660 856 MS (.)671 856 MS (.)682 856 MS (.)693 856 MS (.)704 856 MS (.)715 856 MS (.)726 856 MS (.)737 856 MS (.)748 856 MS (.)759 856 MS (.)770 856 MS (.)781 856 MS
+(.)792 856 MS (.)803 856 MS (.)814 856 MS (.)825 856 MS (.)836 856 MS (.)847 856 MS (.)858 856 MS (.)869 856 MS (.)880 856 MS (.)891 856 MS (.)902 856 MS (.)913 856 MS (.)924 856 MS (.)935 856 MS (.)946 856 MS (.)957 856 MS
+(.)968 856 MS (.)979 856 MS (.)990 856 MS (.)1001 856 MS (.)1012 856 MS (.)1023 856 MS (.)1034 856 MS (.)1045 856 MS (.)1056 856 MS (.)1067 856 MS (.)1078 856 MS (.)1089 856 MS (.)1100 856 MS (.)1111 856 MS (.)1122 856 MS (.)1133 856 MS
+(.)1144 856 MS (.)1155 856 MS (.)1166 856 MS (.)1177 856 MS (.)1188 856 MS (.)1199 856 MS (.)1210 856 MS (.)1221 856 MS (.)1232 856 MS (.)1243 856 MS (.)1254 856 MS (.)1265 856 MS (.)1276 856 MS (.)1287 856 MS (.)1298 856 MS (.)1309 856 MS
+(.)1320 856 MS (.)1331 856 MS (.)1342 856 MS (.)1353 856 MS (.)1364 856 MS (.)1375 856 MS (.)1386 856 MS (.)1397 856 MS (.)1408 856 MS (.)1419 856 MS (.)1430 856 MS (.)1441 856 MS (.)1452 856 MS (.)1463 856 MS (.)1474 856 MS (.)1485 856 MS
+(.)1496 856 MS (.)1507 856 MS (.)1518 856 MS (.)1529 856 MS (.)1540 856 MS (.)1551 856 MS (.)1562 856 MS (.)1573 856 MS (.)1584 856 MS (.)1595 856 MS (.)1606 856 MS (.)1617 856 MS (.)1628 856 MS (.)1639 856 MS (.)1650 856 MS (.)1661 856 MS
+(.)1672 856 MS (.)1683 856 MS (.)1694 856 MS (.)1705 856 MS (.)1716 856 MS (.)1727 856 MS (.)1738 856 MS (.)1749 856 MS (.)1760 856 MS (.)1771 856 MS (.)1782 856 MS (.)1793 856 MS (.)1804 856 MS (.)1815 856 MS (.)1826 856 MS (.)1837 856 MS
+(.)1848 856 MS (.)1859 856 MS (.)1870 856 MS (.)1881 856 MS (.)1892 856 MS (.)1903 856 MS (.)1914 856 MS (.)1925 856 MS (.)1936 856 MS (.)1947 856 MS (.)1958 856 MS (.)1969 856 MS (.)1980 856 MS (.)1991 856 MS (.)2002 856 MS (.)2013 856 MS
+(.)2024 856 MS (.)2035 856 MS (.)2046 856 MS (.)2057 856 MS (.)2068 856 MS (.)2079 856 MS (.)2090 856 MS
+(9)2102 856 MS
+[50 0 0 -50 0 0]/Times-Roman MF
+( )2123 856 MS
+[42 0 0 -42 0 0]/_Times-Bold MF
+(5)235 929 MS
+[50 0 0 -50 0 0]/Times-Roman MF
+( )256 929 MS
+[42 0 0 -42 0 0]/_Times-Bold MF
+(L)335 929 MS (\222)363 929 MS (O)377 929 MS (B)409 929 MS (J)438 929 MS (E)458 929 MS (T)486 929 MS ( )514 929 MS (P)525 929 MS (A)550 929 MS (R)580 929 MS (A)610 929 MS (L)640 929 MS (L)668 929 MS (E)696 929 MS (L)724 929 MS
+(E)751 929 MS ( )779 929 MS (G)789 929 MS (E)822 929 MS
+(N)850 929 MS (E)880 929 MS (R)908 929 MS (I)938 929 MS (Q)953 929 MS (U)987 929 MS (E)1016 929 MS
+(.)1045 929 MS (.)1056 929 MS (.)1067 929 MS (.)1078 929 MS (.)1089 929 MS (.)1100 929 MS (.)1111 929 MS (.)1122 929 MS (.)1133 929 MS (.)1144 929 MS (.)1155 929 MS (.)1166 929 MS (.)1177 929 MS (.)1188 929 MS (.)1199 929 MS (.)1210 929 MS
+(.)1221 929 MS (.)1232 929 MS (.)1243 929 MS (.)1254 929 MS (.)1265 929 MS (.)1276 929 MS (.)1287 929 MS (.)1298 929 MS (.)1309 929 MS (.)1320 929 MS (.)1331 929 MS (.)1342 929 MS (.)1353 929 MS (.)1364 929 MS (.)1375 929 MS (.)1386 929 MS
+(.)1397 929 MS (.)1408 929 MS (.)1419 929 MS (.)1430 929 MS (.)1441 929 MS (.)1452 929 MS (.)1463 929 MS (.)1474 929 MS (.)1485 929 MS (.)1496 929 MS (.)1507 929 MS (.)1518 929 MS (.)1529 929 MS (.)1540 929 MS (.)1551 929 MS (.)1562 929 MS
+(.)1573 929 MS (.)1584 929 MS (.)1595 929 MS (.)1606 929 MS (.)1617 929 MS (.)1628 929 MS (.)1639 929 MS (.)1650 929 MS (.)1661 929 MS (.)1672 929 MS (.)1683 929 MS (.)1694 929 MS (.)1705 929 MS (.)1716 929 MS (.)1727 929 MS (.)1738 929 MS
+(.)1749 929 MS (.)1760 929 MS (.)1771 929 MS (.)1782 929 MS (.)1793 929 MS (.)1804 929 MS (.)1815 929 MS (.)1826 929 MS (.)1837 929 MS (.)1848 929 MS (.)1859 929 MS (.)1870 929 MS (.)1881 929 MS (.)1892 929 MS (.)1903 929 MS (.)1914 929 MS
+(.)1925 929 MS (.)1936 929 MS (.)1947 929 MS (.)1958 929 MS (.)1969 929 MS (.)1980 929 MS (.)1991 929 MS (.)2002 929 MS (.)2013 929 MS (.)2024 929 MS (.)2035 929 MS (.)2046 929 MS (.)2057 929 MS (.)2068 929 MS
+(1)2081 929 MS (0)2102 929 MS
+[50 0 0 -50 0 0]/Times-Roman MF
+( )2123 929 MS
+[42 0 0 -42 0 0]/Times-Roman MF
+(5)285 1001 MS (.)306 1001 MS (1)317 1001 MS
+[50 0 0 -50 0 0]/Times-Roman MF
+( )337 1001 MS
+[42 0 0 -42 0 0]/Times-Roman MF
+(D)435 1001 MS
+[33 0 0 -33 0 0]/Times-Roman MF
+(E)465 1001 MS (F)485 1001 MS (I)503 1001 MS (N)514 1001 MS (I)538 1001 MS (T)549 1001 MS (I)570 1001 MS (O)581 1001 MS (N)605 1001 MS ( )629 1001 MS (D)637 1001 MS (E)662 1001 MS ( )682 1001 MS (L)690 1001 MS
+[42 0 0 -42 0 0]/Times-Roman MF
+LATENC /_Times-Roman /Times-Roman reencode
+[42 0 0 -42 0 0]/_Times-Roman MF
+(\222)710 1001 MS
+[33 0 0 -33 0 0]/Times-Roman MF
+(I)724 1001 MS (N)735 1001 MS (T)759 1001 MS (E)780 1001 MS (R)800 1001 MS (F)823 1001 MS (A)842 1001 MS (C)865 1001 MS (E)887 1001 MS ( )908 1001 MS
+[42 0 0 -42 0 0]/_Times-Roman MF
+(C)916 1001 MS (O)944 1001 MS (R)974 1001 MS (B)1002 1001 MS (A)1029 1001 MS
+(.)1067 1001 MS (.)1078 1001 MS (.)1089 1001 MS (.)1100 1001 MS (.)1111 1001 MS (.)1122 1001 MS (.)1133 1001 MS (.)1144 1001 MS (.)1155 1001 MS (.)1166 1001 MS (.)1177 1001 MS (.)1188 1001 MS (.)1199 1001 MS (.)1210 1001 MS (.)1221 1001 MS (.)1232 1001 MS
+(.)1243 1001 MS (.)1254 1001 MS (.)1265 1001 MS (.)1276 1001 MS (.)1287 1001 MS (.)1298 1001 MS (.)1309 1001 MS (.)1320 1001 MS (.)1331 1001 MS (.)1342 1001 MS (.)1353 1001 MS (.)1364 1001 MS (.)1375 1001 MS (.)1386 1001 MS (.)1397 1001 MS (.)1408 1001 MS
+(.)1419 1001 MS (.)1430 1001 MS (.)1441 1001 MS (.)1452 1001 MS (.)1463 1001 MS (.)1474 1001 MS (.)1485 1001 MS (.)1496 1001 MS (.)1507 1001 MS (.)1518 1001 MS (.)1529 1001 MS (.)1540 1001 MS (.)1551 1001 MS (.)1562 1001 MS (.)1573 1001 MS (.)1584 1001 MS
+(.)1595 1001 MS (.)1606 1001 MS (.)1617 1001 MS (.)1628 1001 MS (.)1639 1001 MS (.)1650 1001 MS (.)1661 1001 MS (.)1672 1001 MS (.)1683 1001 MS (.)1694 1001 MS (.)1705 1001 MS (.)1716 1001 MS (.)1727 1001 MS (.)1738 1001 MS (.)1749 1001 MS (.)1760 1001 MS
+(.)1771 1001 MS (.)1782 1001 MS (.)1793 1001 MS (.)1804 1001 MS (.)1815 1001 MS (.)1826 1001 MS (.)1837 1001 MS (.)1848 1001 MS (.)1859 1001 MS (.)1870 1001 MS (.)1881 1001 MS (.)1892 1001 MS (.)1903 1001 MS (.)1914 1001 MS (.)1925 1001 MS (.)1936 1001 MS
+(.)1947 1001 MS (.)1958 1001 MS (.)1969 1001 MS (.)1980 1001 MS (.)1991 1001 MS (.)2002 1001 MS (.)2013 1001 MS (.)2024 1001 MS (.)2035 1001 MS (.)2046 1001 MS (.)2057 1001 MS (.)2068 1001 MS
+(1)2081 1001 MS (0)2102 1001 MS
+[50 0 0 -50 0 0]/Times-Roman MF
+( )2123 1001 MS
+[42 0 0 -42 0 0]/_Times-Roman MF
+(5)285 1049 MS (.)306 1049 MS (2)317 1049 MS
+[50 0 0 -50 0 0]/Times-Roman MF
+( )337 1049 MS
+[42 0 0 -42 0 0]/_Times-Roman MF
+(D)435 1049 MS
+[33 0 0 -33 0 0]/Times-Roman MF
+(E)465 1049 MS (F)485 1049 MS (I)503 1049 MS (N)514 1049 MS (I)538 1049 MS (T)549 1049 MS (I)570 1049 MS (O)581 1049 MS (N)605 1049 MS ( )629 1049 MS (D)637 1049 MS (E)662 1049 MS ( )682 1049 MS (L)690 1049 MS
+[42 0 0 -42 0 0]/_Times-Roman MF
+(\222)710 1049 MS
+[33 0 0 -33 0 0]/Times-Roman MF
+(I)724 1049 MS (M)736 1049 MS (P)765 1049 MS (L)784 1049 MS (E)804 1049 MS (M)825 1049 MS (E)854 1049 MS (N)874 1049 MS (T)898 1049 MS (A)920 1049 MS (T)943 1049 MS (I)964 1049 MS (O)975 1049 MS
+(N)999 1049 MS
+[42 0 0 -42 0 0]/_Times-Roman MF
+(.)1023 1049 MS (.)1034 1049 MS (.)1045 1049 MS (.)1056 1049 MS (.)1067 1049 MS (.)1078 1049 MS (.)1089 1049 MS (.)1100 1049 MS (.)1111 1049 MS (.)1122 1049 MS (.)1133 1049 MS (.)1144 1049 MS (.)1155 1049 MS (.)1166 1049 MS (.)1177 1049 MS (.)1188 1049 MS
+(.)1199 1049 MS (.)1210 1049 MS (.)1221 1049 MS (.)1232 1049 MS (.)1243 1049 MS (.)1254 1049 MS (.)1265 1049 MS (.)1276 1049 MS (.)1287 1049 MS (.)1298 1049 MS (.)1309 1049 MS (.)1320 1049 MS (.)1331 1049 MS (.)1342 1049 MS (.)1353 1049 MS (.)1364 1049 MS
+(.)1375 1049 MS (.)1386 1049 MS (.)1397 1049 MS (.)1408 1049 MS (.)1419 1049 MS (.)1430 1049 MS (.)1441 1049 MS (.)1452 1049 MS (.)1463 1049 MS (.)1474 1049 MS (.)1485 1049 MS (.)1496 1049 MS (.)1507 1049 MS (.)1518 1049 MS (.)1529 1049 MS (.)1540 1049 MS
+(.)1551 1049 MS (.)1562 1049 MS (.)1573 1049 MS (.)1584 1049 MS (.)1595 1049 MS (.)1606 1049 MS (.)1617 1049 MS (.)1628 1049 MS (.)1639 1049 MS (.)1650 1049 MS (.)1661 1049 MS (.)1672 1049 MS (.)1683 1049 MS (.)1694 1049 MS (.)1705 1049 MS (.)1716 1049 MS
+(.)1727 1049 MS (.)1738 1049 MS (.)1749 1049 MS (.)1760 1049 MS (.)1771 1049 MS (.)1782 1049 MS (.)1793 1049 MS (.)1804 1049 MS (.)1815 1049 MS (.)1826 1049 MS (.)1837 1049 MS (.)1848 1049 MS (.)1859 1049 MS (.)1870 1049 MS (.)1881 1049 MS (.)1892 1049 MS
+(.)1903 1049 MS (.)1914 1049 MS (.)1925 1049 MS (.)1936 1049 MS (.)1947 1049 MS (.)1958 1049 MS (.)1969 1049 MS (.)1980 1049 MS (.)1991 1049 MS (.)2002 1049 MS (.)2013 1049 MS (.)2024 1049 MS (.)2035 1049 MS (.)2046 1049 MS (.)2057 1049 MS (.)2068 1049 MS
+(1)2081 1049 MS (1)2102 1049 MS
+[50 0 0 -50 0 0]/Times-Roman MF
+( )2123 1049 MS
+[42 0 0 -42 0 0]/Times-Bold MF
+(6)235 1123 MS
+[50 0 0 -50 0 0]/Times-Roman MF
+( )256 1123 MS
+[42 0 0 -42 0 0]/Times-Bold MF
+(L)335 1123 MS (E)363 1123 MS ( )391 1123 MS (C)402 1123 MS (O)431 1123 MS (N)464 1123 MS (T)494 1123 MS (A)522 1123 MS (I)552 1123 MS (N)568 1123 MS (E)598 1123 MS (R)626 1123 MS ( )656 1123 MS (P)667 1123 MS (A)692 1123 MS (R)722 1123 MS
+(A)752 1123 MS (L)782 1123 MS (L)810 1123 MS (E)838 1123 MS
+(L)866 1123 MS (E)894 1123 MS
+(.)924 1123 MS (.)935 1123 MS (.)946 1123 MS (.)957 1123 MS (.)968 1123 MS (.)979 1123 MS (.)990 1123 MS (.)1001 1123 MS (.)1012 1123 MS (.)1023 1123 MS (.)1034 1123 MS (.)1045 1123 MS (.)1056 1123 MS (.)1067 1123 MS (.)1078 1123 MS (.)1089 1123 MS
+(.)1100 1123 MS (.)1111 1123 MS (.)1122 1123 MS (.)1133 1123 MS (.)1144 1123 MS (.)1155 1123 MS (.)1166 1123 MS (.)1177 1123 MS (.)1188 1123 MS (.)1199 1123 MS (.)1210 1123 MS (.)1221 1123 MS (.)1232 1123 MS (.)1243 1123 MS (.)1254 1123 MS (.)1265 1123 MS
+(.)1276 1123 MS (.)1287 1123 MS (.)1298 1123 MS (.)1309 1123 MS (.)1320 1123 MS (.)1331 1123 MS (.)1342 1123 MS (.)1353 1123 MS (.)1364 1123 MS (.)1375 1123 MS (.)1386 1123 MS (.)1397 1123 MS (.)1408 1123 MS (.)1419 1123 MS (.)1430 1123 MS (.)1441 1123 MS
+(.)1452 1123 MS (.)1463 1123 MS (.)1474 1123 MS (.)1485 1123 MS (.)1496 1123 MS (.)1507 1123 MS (.)1518 1123 MS (.)1529 1123 MS (.)1540 1123 MS (.)1551 1123 MS (.)1562 1123 MS (.)1573 1123 MS (.)1584 1123 MS (.)1595 1123 MS (.)1606 1123 MS (.)1617 1123 MS
+(.)1628 1123 MS (.)1639 1123 MS (.)1650 1123 MS (.)1661 1123 MS (.)1672 1123 MS (.)1683 1123 MS (.)1694 1123 MS (.)1705 1123 MS (.)1716 1123 MS (.)1727 1123 MS (.)1738 1123 MS (.)1749 1123 MS (.)1760 1123 MS (.)1771 1123 MS (.)1782 1123 MS (.)1793 1123 MS
+(.)1804 1123 MS (.)1815 1123 MS (.)1826 1123 MS (.)1837 1123 MS (.)1848 1123 MS (.)1859 1123 MS (.)1870 1123 MS (.)1881 1123 MS (.)1892 1123 MS (.)1903 1123 MS (.)1914 1123 MS (.)1925 1123 MS (.)1936 1123 MS (.)1947 1123 MS (.)1958 1123 MS (.)1969 1123 MS
+(.)1980 1123 MS (.)1991 1123 MS (.)2002 1123 MS (.)2013 1123 MS (.)2024 1123 MS (.)2035 1123 MS (.)2046 1123 MS (.)2057 1123 MS (.)2068 1123 MS
+(1)2081 1123 MS (2)2102 1123 MS
+[50 0 0 -50 0 0]/Times-Roman MF
+( )2123 1123 MS
+[42 0 0 -42 0 0]/_Times-Roman MF
+(6)285 1195 MS (.)306 1195 MS (1)317 1195 MS
+[50 0 0 -50 0 0]/Times-Roman MF
+( )337 1195 MS
+[42 0 0 -42 0 0]/_Times-Roman MF
+(D)435 1195 MS
+[33 0 0 -33 0 0]/Times-Roman MF
+(E)465 1195 MS (F)485 1195 MS (I)503 1195 MS (N)514 1195 MS (I)538 1195 MS (T)549 1195 MS (I)570 1195 MS (O)581 1195 MS (N)605 1195 MS ( )629 1195 MS (D)637 1195 MS (E)662 1195 MS ( )682 1195 MS (L)690 1195 MS
+[42 0 0 -42 0 0]/_Times-Roman MF
+(\222)710 1195 MS
+[33 0 0 -33 0 0]/Times-Roman MF
+(I)724 1195 MS (N)735 1195 MS (T)759 1195 MS (E)780 1195 MS (R)800 1195 MS (F)823 1195 MS (A)842 1195 MS (C)865 1195 MS (E)887 1195 MS ( )908 1195 MS
+[42 0 0 -42 0 0]/_Times-Roman MF
+(C)916 1195 MS (O)944 1195 MS (R)974 1195 MS (B)1002 1195 MS (A)1029 1195 MS
+(.)1067 1195 MS (.)1078 1195 MS (.)1089 1195 MS (.)1100 1195 MS (.)1111 1195 MS (.)1122 1195 MS (.)1133 1195 MS (.)1144 1195 MS (.)1155 1195 MS (.)1166 1195 MS (.)1177 1195 MS (.)1188 1195 MS (.)1199 1195 MS (.)1210 1195 MS (.)1221 1195 MS (.)1232 1195 MS
+(.)1243 1195 MS (.)1254 1195 MS (.)1265 1195 MS (.)1276 1195 MS (.)1287 1195 MS (.)1298 1195 MS (.)1309 1195 MS (.)1320 1195 MS (.)1331 1195 MS (.)1342 1195 MS (.)1353 1195 MS (.)1364 1195 MS (.)1375 1195 MS (.)1386 1195 MS (.)1397 1195 MS (.)1408 1195 MS
+(.)1419 1195 MS (.)1430 1195 MS (.)1441 1195 MS (.)1452 1195 MS (.)1463 1195 MS (.)1474 1195 MS (.)1485 1195 MS (.)1496 1195 MS (.)1507 1195 MS (.)1518 1195 MS (.)1529 1195 MS (.)1540 1195 MS (.)1551 1195 MS (.)1562 1195 MS (.)1573 1195 MS (.)1584 1195 MS
+(.)1595 1195 MS (.)1606 1195 MS (.)1617 1195 MS (.)1628 1195 MS (.)1639 1195 MS (.)1650 1195 MS (.)1661 1195 MS (.)1672 1195 MS (.)1683 1195 MS (.)1694 1195 MS (.)1705 1195 MS (.)1716 1195 MS (.)1727 1195 MS (.)1738 1195 MS (.)1749 1195 MS (.)1760 1195 MS
+(.)1771 1195 MS (.)1782 1195 MS (.)1793 1195 MS (.)1804 1195 MS (.)1815 1195 MS (.)1826 1195 MS (.)1837 1195 MS (.)1848 1195 MS (.)1859 1195 MS (.)1870 1195 MS (.)1881 1195 MS (.)1892 1195 MS (.)1903 1195 MS (.)1914 1195 MS (.)1925 1195 MS (.)1936 1195 MS
+(.)1947 1195 MS (.)1958 1195 MS (.)1969 1195 MS (.)1980 1195 MS (.)1991 1195 MS (.)2002 1195 MS (.)2013 1195 MS (.)2024 1195 MS (.)2035 1195 MS (.)2046 1195 MS (.)2057 1195 MS (.)2068 1195 MS
+(1)2081 1195 MS (2)2102 1195 MS
+[50 0 0 -50 0 0]/Times-Roman MF
+( )2123 1195 MS
+[42 0 0 -42 0 0]/_Times-Roman MF
+(6)285 1243 MS (.)306 1243 MS (2)317 1243 MS
+[50 0 0 -50 0 0]/Times-Roman MF
+( )337 1243 MS
+[42 0 0 -42 0 0]/_Times-Roman MF
+(D)435 1243 MS
+[33 0 0 -33 0 0]/Times-Roman MF
+(E)465 1243 MS (F)485 1243 MS (I)503 1243 MS (N)514 1243 MS (I)538 1243 MS (T)549 1243 MS (I)570 1243 MS (O)581 1243 MS (N)605 1243 MS ( )629 1243 MS (D)637 1243 MS (E)662 1243 MS ( )682 1243 MS (L)690 1243 MS
+[42 0 0 -42 0 0]/_Times-Roman MF
+(\222)710 1243 MS
+[33 0 0 -33 0 0]/Times-Roman MF
+(I)724 1243 MS (M)736 1243 MS (P)765 1243 MS (L)784 1243 MS (E)804 1243 MS (M)825 1243 MS (E)854 1243 MS (N)874 1243 MS (T)898 1243 MS (A)920 1243 MS (T)943 1243 MS (I)964 1243 MS (O)975 1243 MS (N)999 1243 MS
+[42 0 0 -42 0 0]/_Times-Roman MF
+(.)1023 1243 MS (.)1034 1243 MS (.)1045 1243 MS (.)1056 1243 MS (.)1067 1243 MS (.)1078 1243 MS (.)1089 1243 MS (.)1100 1243 MS (.)1111 1243 MS (.)1122 1243 MS (.)1133 1243 MS (.)1144 1243 MS (.)1155 1243 MS (.)1166 1243 MS (.)1177 1243 MS (.)1188 1243 MS
+(.)1199 1243 MS (.)1210 1243 MS (.)1221 1243 MS (.)1232 1243 MS (.)1243 1243 MS (.)1254 1243 MS (.)1265 1243 MS (.)1276 1243 MS (.)1287 1243 MS (.)1298 1243 MS (.)1309 1243 MS (.)1320 1243 MS (.)1331 1243 MS (.)1342 1243 MS (.)1353 1243 MS (.)1364 1243 MS
+(.)1375 1243 MS (.)1386 1243 MS (.)1397 1243 MS (.)1408 1243 MS (.)1419 1243 MS (.)1430 1243 MS (.)1441 1243 MS (.)1452 1243 MS (.)1463 1243 MS (.)1474 1243 MS (.)1485 1243 MS (.)1496 1243 MS (.)1507 1243 MS (.)1518 1243 MS (.)1529 1243 MS (.)1540 1243 MS
+(.)1551 1243 MS (.)1562 1243 MS (.)1573 1243 MS (.)1584 1243 MS (.)1595 1243 MS (.)1606 1243 MS (.)1617 1243 MS (.)1628 1243 MS (.)1639 1243 MS (.)1650 1243 MS (.)1661 1243 MS (.)1672 1243 MS (.)1683 1243 MS (.)1694 1243 MS (.)1705 1243 MS (.)1716 1243 MS
+(.)1727 1243 MS (.)1738 1243 MS (.)1749 1243 MS (.)1760 1243 MS (.)1771 1243 MS (.)1782 1243 MS (.)1793 1243 MS (.)1804 1243 MS (.)1815 1243 MS (.)1826 1243 MS (.)1837 1243 MS (.)1848 1243 MS (.)1859 1243 MS (.)1870 1243 MS (.)1881 1243 MS (.)1892 1243 MS
+(.)1903 1243 MS (.)1914 1243 MS (.)1925 1243 MS (.)1936 1243 MS (.)1947 1243 MS (.)1958 1243 MS (.)1969 1243 MS (.)1980 1243 MS (.)1991 1243 MS (.)2002 1243 MS (.)2013 1243 MS (.)2024 1243 MS (.)2035 1243 MS (.)2046 1243 MS (.)2057 1243 MS (.)2068 1243 MS
+(1)2081 1243 MS (3)2102 1243 MS
+[50 0 0 -50 0 0]/Times-Roman MF
+( )2123 1243 MS
+[42 0 0 -42 0 0]/Times-Bold MF
+(7)235 1317 MS
+[50 0 0 -50 0 0]/Times-Roman MF
+( )256 1317 MS
+[42 0 0 -42 0 0]/Times-Bold MF
+(L)335 1317 MS (E)363 1317 MS ( )391 1317 MS (C)402 1317 MS (O)431 1317 MS (M)464 1317 MS (P)504 1317 MS (O)529 1317 MS (S)562 1317 MS (A)585 1317 MS (N)615 1317 MS (T)645 1317 MS ( )672 1317 MS (P)683 1317 MS (A)708 1317 MS (R)738 1317 MS
+(A)768 1317 MS (L)798 1317 MS (L)826 1317 MS (E)854 1317 MS
+(L)882 1317 MS (E)910 1317 MS
+(.)946 1317 MS (.)957 1317 MS (.)968 1317 MS (.)979 1317 MS (.)990 1317 MS (.)1001 1317 MS (.)1012 1317 MS (.)1023 1317 MS (.)1034 1317 MS (.)1045 1317 MS (.)1056 1317 MS (.)1067 1317 MS (.)1078 1317 MS (.)1089 1317 MS (.)1100 1317 MS (.)1111 1317 MS
+(.)1122 1317 MS (.)1133 1317 MS (.)1144 1317 MS (.)1155 1317 MS (.)1166 1317 MS (.)1177 1317 MS (.)1188 1317 MS (.)1199 1317 MS (.)1210 1317 MS (.)1221 1317 MS (.)1232 1317 MS (.)1243 1317 MS (.)1254 1317 MS (.)1265 1317 MS (.)1276 1317 MS (.)1287 1317 MS
+(.)1298 1317 MS (.)1309 1317 MS (.)1320 1317 MS (.)1331 1317 MS (.)1342 1317 MS (.)1353 1317 MS (.)1364 1317 MS (.)1375 1317 MS (.)1386 1317 MS (.)1397 1317 MS (.)1408 1317 MS (.)1419 1317 MS (.)1430 1317 MS (.)1441 1317 MS (.)1452 1317 MS (.)1463 1317 MS
+(.)1474 1317 MS (.)1485 1317 MS (.)1496 1317 MS (.)1507 1317 MS (.)1518 1317 MS (.)1529 1317 MS (.)1540 1317 MS (.)1551 1317 MS (.)1562 1317 MS (.)1573 1317 MS (.)1584 1317 MS (.)1595 1317 MS (.)1606 1317 MS (.)1617 1317 MS (.)1628 1317 MS (.)1639 1317 MS
+(.)1650 1317 MS (.)1661 1317 MS (.)1672 1317 MS (.)1683 1317 MS (.)1694 1317 MS (.)1705 1317 MS (.)1716 1317 MS (.)1727 1317 MS (.)1738 1317 MS (.)1749 1317 MS (.)1760 1317 MS (.)1771 1317 MS (.)1782 1317 MS (.)1793 1317 MS (.)1804 1317 MS (.)1815 1317 MS
+(.)1826 1317 MS (.)1837 1317 MS (.)1848 1317 MS (.)1859 1317 MS (.)1870 1317 MS (.)1881 1317 MS (.)1892 1317 MS (.)1903 1317 MS (.)1914 1317 MS (.)1925 1317 MS (.)1936 1317 MS (.)1947 1317 MS (.)1958 1317 MS (.)1969 1317 MS (.)1980 1317 MS (.)1991 1317 MS
+(.)2002 1317 MS (.)2013 1317 MS (.)2024 1317 MS (.)2035 1317 MS (.)2046 1317 MS (.)2057 1317 MS (.)2068 1317 MS
+(1)2081 1317 MS (4)2102 1317 MS
+[50 0 0 -50 0 0]/Times-Roman MF
+( )2123 1317 MS
+[42 0 0 -42 0 0]/Times-Bold MF
+(8)235 1390 MS
+[50 0 0 -50 0 0]/Times-Roman MF
+( )256 1390 MS
+[42 0 0 -42 0 0]/Times-Bold MF
+(L)335 1390 MS (A)363 1390 MS ( )393 1390 MS (D)404 1390 MS (O)434 1390 MS (N)467 1390 MS (N)497 1390 MS (E)527 1390 MS (E)555 1390 MS ( )582 1390 MS (P)593 1390 MS (A)618 1390 MS (R)648 1390 MS (A)678 1390 MS (L)708 1390 MS (L)736 1390 MS
+(E)764 1390 MS (L)792 1390 MS (E)820 1390 MS
+(.)847 1390 MS (.)858 1390 MS (.)869 1390 MS (.)880 1390 MS (.)891 1390 MS (.)902 1390 MS (.)913 1390 MS (.)924 1390 MS (.)935 1390 MS (.)946 1390 MS (.)957 1390 MS (.)968 1390 MS (.)979 1390 MS (.)990 1390 MS (.)1001 1390 MS (.)1012 1390 MS
+(.)1023 1390 MS (.)1034 1390 MS (.)1045 1390 MS (.)1056 1390 MS (.)1067 1390 MS (.)1078 1390 MS (.)1089 1390 MS (.)1100 1390 MS (.)1111 1390 MS (.)1122 1390 MS (.)1133 1390 MS (.)1144 1390 MS (.)1155 1390 MS (.)1166 1390 MS (.)1177 1390 MS (.)1188 1390 MS
+(.)1199 1390 MS (.)1210 1390 MS (.)1221 1390 MS (.)1232 1390 MS (.)1243 1390 MS (.)1254 1390 MS (.)1265 1390 MS (.)1276 1390 MS (.)1287 1390 MS (.)1298 1390 MS (.)1309 1390 MS (.)1320 1390 MS (.)1331 1390 MS (.)1342 1390 MS (.)1353 1390 MS (.)1364 1390 MS
+(.)1375 1390 MS (.)1386 1390 MS (.)1397 1390 MS (.)1408 1390 MS (.)1419 1390 MS (.)1430 1390 MS (.)1441 1390 MS (.)1452 1390 MS (.)1463 1390 MS (.)1474 1390 MS (.)1485 1390 MS (.)1496 1390 MS (.)1507 1390 MS (.)1518 1390 MS (.)1529 1390 MS (.)1540 1390 MS
+(.)1551 1390 MS (.)1562 1390 MS (.)1573 1390 MS (.)1584 1390 MS (.)1595 1390 MS (.)1606 1390 MS (.)1617 1390 MS (.)1628 1390 MS (.)1639 1390 MS (.)1650 1390 MS (.)1661 1390 MS (.)1672 1390 MS (.)1683 1390 MS (.)1694 1390 MS (.)1705 1390 MS (.)1716 1390 MS
+(.)1727 1390 MS (.)1738 1390 MS (.)1749 1390 MS (.)1760 1390 MS (.)1771 1390 MS (.)1782 1390 MS (.)1793 1390 MS (.)1804 1390 MS (.)1815 1390 MS (.)1826 1390 MS (.)1837 1390 MS (.)1848 1390 MS (.)1859 1390 MS (.)1870 1390 MS (.)1881 1390 MS (.)1892 1390 MS
+(.)1903 1390 MS (.)1914 1390 MS (.)1925 1390 MS (.)1936 1390 MS (.)1947 1390 MS (.)1958 1390 MS (.)1969 1390 MS (.)1980 1390 MS (.)1991 1390 MS (.)2002 1390 MS (.)2013 1390 MS (.)2024 1390 MS (.)2035 1390 MS (.)2046 1390 MS (.)2057 1390 MS (.)2068 1390 MS
+(1)2081 1390 MS (5)2102 1390 MS
+[50 0 0 -50 0 0]/Times-Roman MF
+( )2123 1390 MS
+[42 0 0 -42 0 0]/Times-Bold MF
+(9)235 1462 MS
+[50 0 0 -50 0 0]/Times-Roman MF
+( )256 1462 MS
+[42 0 0 -42 0 0]/Times-Bold MF
+LATENC /_Times-Bold /Times-Bold reencode
+[42 0 0 -42 0 0]/_Times-Bold MF
+(C)335 1462 MS (A)365 1462 MS (S)395 1462 MS ( )418 1462 MS (D)429 1462 MS (\222)459 1462 MS (U)473 1462 MS (T)503 1462 MS (I)531 1462 MS (L)547 1462 MS (I)575 1462 MS (S)591 1462 MS (A)614 1462 MS (T)644 1462 MS (I)672 1462 MS (O)688 1462 MS
+(N)721 1462 MS
+(.)759 1462 MS (.)770 1462 MS (.)781 1462 MS (.)792 1462 MS (.)803 1462 MS (.)814 1462 MS (.)825 1462 MS (.)836 1462 MS (.)847 1462 MS (.)858 1462 MS (.)869 1462 MS (.)880 1462 MS (.)891 1462 MS (.)902 1462 MS (.)913 1462 MS (.)924 1462 MS
+(.)935 1462 MS (.)946 1462 MS (.)957 1462 MS (.)968 1462 MS (.)979 1462 MS (.)990 1462 MS (.)1001 1462 MS (.)1012 1462 MS (.)1023 1462 MS (.)1034 1462 MS (.)1045 1462 MS (.)1056 1462 MS (.)1067 1462 MS (.)1078 1462 MS (.)1089 1462 MS (.)1100 1462 MS
+(.)1111 1462 MS (.)1122 1462 MS (.)1133 1462 MS (.)1144 1462 MS (.)1155 1462 MS (.)1166 1462 MS (.)1177 1462 MS (.)1188 1462 MS (.)1199 1462 MS (.)1210 1462 MS (.)1221 1462 MS (.)1232 1462 MS (.)1243 1462 MS (.)1254 1462 MS (.)1265 1462 MS (.)1276 1462 MS
+(.)1287 1462 MS (.)1298 1462 MS (.)1309 1462 MS (.)1320 1462 MS (.)1331 1462 MS (.)1342 1462 MS (.)1353 1462 MS (.)1364 1462 MS (.)1375 1462 MS (.)1386 1462 MS (.)1397 1462 MS (.)1408 1462 MS (.)1419 1462 MS (.)1430 1462 MS (.)1441 1462 MS (.)1452 1462 MS
+(.)1463 1462 MS (.)1474 1462 MS (.)1485 1462 MS (.)1496 1462 MS (.)1507 1462 MS (.)1518 1462 MS (.)1529 1462 MS (.)1540 1462 MS (.)1551 1462 MS (.)1562 1462 MS (.)1573 1462 MS (.)1584 1462 MS (.)1595 1462 MS (.)1606 1462 MS (.)1617 1462 MS (.)1628 1462 MS
+(.)1639 1462 MS (.)1650 1462 MS (.)1661 1462 MS (.)1672 1462 MS (.)1683 1462 MS (.)1694 1462 MS (.)1705 1462 MS (.)1716 1462 MS (.)1727 1462 MS (.)1738 1462 MS (.)1749 1462 MS (.)1760 1462 MS (.)1771 1462 MS (.)1782 1462 MS (.)1793 1462 MS (.)1804 1462 MS
+(.)1815 1462 MS (.)1826 1462 MS (.)1837 1462 MS (.)1848 1462 MS (.)1859 1462 MS (.)1870 1462 MS (.)1881 1462 MS (.)1892 1462 MS (.)1903 1462 MS (.)1914 1462 MS (.)1925 1462 MS (.)1936 1462 MS (.)1947 1462 MS (.)1958 1462 MS (.)1969 1462 MS (.)1980 1462 MS
+(.)1991 1462 MS (.)2002 1462 MS (.)2013 1462 MS (.)2024 1462 MS (.)2035 1462 MS (.)2046 1462 MS (.)2057 1462 MS (.)2068 1462 MS
+(1)2081 1462 MS (6)2102 1462 MS
+[50 0 0 -50 0 0]/Times-Roman MF
+( )2123 1462 MS
+[42 0 0 -42 0 0]/Times-Roman MF
+(9)285 1534 MS (.)306 1534 MS (1)317 1534 MS
+[50 0 0 -50 0 0]/Times-Roman MF
+( )337 1534 MS
+[42 0 0 -42 0 0]/Times-Roman MF
+(L)435 1534 MS
+[33 0 0 -33 0 0]/Times-Roman MF
+(E)460 1534 MS ( )480 1534 MS (C)488 1534 MS (O)510 1534 MS (M)535 1534 MS (P)565 1534 MS (O)583 1534 MS (S)607 1534 MS (A)626 1534 MS (N)649 1534 MS (T)673 1534 MS ( )694 1534 MS (E)702 1534 MS (T)722 1534 MS ( )743 1534 MS (L)751 1534 MS
+(A)772 1534 MS ( )796 1534 MS (D)804 1534 MS (O)828 1534 MS
+(N)852 1534 MS (N)876 1534 MS (E)900 1534 MS (E)921 1534 MS ( )941 1534 MS (V)950 1534 MS (E)974 1534 MS (C)994 1534 MS (T)1016 1534 MS (E)1037 1534 MS (U)1058 1534 MS (R)1081 1534 MS ( )1103 1534 MS (P)1112 1534 MS (A)1131 1534 MS (R)1154 1534 MS
+(A)1177 1534 MS (L)1200 1534 MS (L)1221 1534 MS (E)1241 1534 MS
+(L)1262 1534 MS (E)1282 1534 MS
+[42 0 0 -42 0 0]/Times-Roman MF
+(.)1309 1534 MS (.)1320 1534 MS (.)1331 1534 MS (.)1342 1534 MS (.)1353 1534 MS (.)1364 1534 MS (.)1375 1534 MS (.)1386 1534 MS (.)1397 1534 MS (.)1408 1534 MS (.)1419 1534 MS (.)1430 1534 MS (.)1441 1534 MS (.)1452 1534 MS (.)1463 1534 MS (.)1474 1534 MS
+(.)1485 1534 MS (.)1496 1534 MS (.)1507 1534 MS (.)1518 1534 MS (.)1529 1534 MS (.)1540 1534 MS (.)1551 1534 MS (.)1562 1534 MS (.)1573 1534 MS (.)1584 1534 MS (.)1595 1534 MS (.)1606 1534 MS (.)1617 1534 MS (.)1628 1534 MS (.)1639 1534 MS (.)1650 1534 MS
+(.)1661 1534 MS (.)1672 1534 MS (.)1683 1534 MS (.)1694 1534 MS (.)1705 1534 MS (.)1716 1534 MS (.)1727 1534 MS (.)1738 1534 MS (.)1749 1534 MS (.)1760 1534 MS (.)1771 1534 MS (.)1782 1534 MS (.)1793 1534 MS (.)1804 1534 MS (.)1815 1534 MS (.)1826 1534 MS
+(.)1837 1534 MS (.)1848 1534 MS (.)1859 1534 MS (.)1870 1534 MS (.)1881 1534 MS (.)1892 1534 MS (.)1903 1534 MS (.)1914 1534 MS (.)1925 1534 MS (.)1936 1534 MS (.)1947 1534 MS (.)1958 1534 MS (.)1969 1534 MS (.)1980 1534 MS (.)1991 1534 MS (.)2002 1534 MS
+(.)2013 1534 MS (.)2024 1534 MS (.)2035 1534 MS (.)2046 1534 MS (.)2057 1534 MS (.)2068 1534 MS
+(1)2081 1534 MS (7)2102 1534 MS
+[50 0 0 -50 0 0]/Times-Roman MF
+( )2123 1534 MS
+%%IncludeFont: Times-Italic
+[42 0 0 -42 0 0]/Times-Italic MF
+(9)335 1582 MS (.)356 1582 MS (1)367 1582 MS (.)387 1582 MS (1)398 1582 MS
+[50 0 0 -50 0 0]/Times-Roman MF
+( )418 1582 MS
+[42 0 0 -42 0 0]/Times-Italic MF
+LATENC /_Times-Italic /Times-Italic reencode
+[42 0 0 -42 0 0]/_Times-Italic MF
+(D)485 1582 MS (\351)515 1582 MS (f)534 1582 MS (i)546 1582 MS (n)558 1582 MS (i)578 1582 MS (t)590 1582 MS (i)601 1582 MS (o)613 1582 MS (n)634 1582 MS ( )654 1582 MS (d)665 1582 MS (e)686 1582 MS ( )704 1582 MS (l)715 1582 MS (\222)727 1582 MS
+(i)740 1582 MS (n)752 1582 MS (t)773 1582 MS (e)784 1582 MS (r)803 1582 MS (f)819 1582 MS (a)831 1582 MS (c)851 1582 MS (e)870 1582 MS ( )888 1582 MS (C)899 1582 MS (O)927 1582 MS (R)956 1582 MS
+(B)982 1582 MS (A)1007 1582 MS
+(.)1034 1582 MS (.)1045 1582 MS (.)1056 1582 MS (.)1067 1582 MS (.)1078 1582 MS (.)1089 1582 MS (.)1100 1582 MS (.)1111 1582 MS (.)1122 1582 MS (.)1133 1582 MS (.)1144 1582 MS (.)1155 1582 MS (.)1166 1582 MS (.)1177 1582 MS (.)1188 1582 MS (.)1199 1582 MS
+(.)1210 1582 MS (.)1221 1582 MS (.)1232 1582 MS (.)1243 1582 MS (.)1254 1582 MS (.)1265 1582 MS (.)1276 1582 MS (.)1287 1582 MS (.)1298 1582 MS (.)1309 1582 MS (.)1320 1582 MS (.)1331 1582 MS (.)1342 1582 MS (.)1353 1582 MS (.)1364 1582 MS (.)1375 1582 MS
+(.)1386 1582 MS (.)1397 1582 MS (.)1408 1582 MS (.)1419 1582 MS (.)1430 1582 MS (.)1441 1582 MS (.)1452 1582 MS (.)1463 1582 MS (.)1474 1582 MS (.)1485 1582 MS (.)1496 1582 MS (.)1507 1582 MS (.)1518 1582 MS (.)1529 1582 MS (.)1540 1582 MS (.)1551 1582 MS
+(.)1562 1582 MS (.)1573 1582 MS (.)1584 1582 MS (.)1595 1582 MS (.)1606 1582 MS (.)1617 1582 MS (.)1628 1582 MS (.)1639 1582 MS (.)1650 1582 MS (.)1661 1582 MS (.)1672 1582 MS (.)1683 1582 MS (.)1694 1582 MS (.)1705 1582 MS (.)1716 1582 MS (.)1727 1582 MS
+(.)1738 1582 MS (.)1749 1582 MS (.)1760 1582 MS (.)1771 1582 MS (.)1782 1582 MS (.)1793 1582 MS (.)1804 1582 MS (.)1815 1582 MS (.)1826 1582 MS (.)1837 1582 MS (.)1848 1582 MS (.)1859 1582 MS (.)1870 1582 MS (.)1881 1582 MS (.)1892 1582 MS (.)1903 1582 MS
+(.)1914 1582 MS (.)1925 1582 MS (.)1936 1582 MS (.)1947 1582 MS (.)1958 1582 MS (.)1969 1582 MS (.)1980 1582 MS (.)1991 1582 MS (.)2002 1582 MS (.)2013 1582 MS (.)2024 1582 MS (.)2035 1582 MS (.)2046 1582 MS (.)2057 1582 MS (.)2068 1582 MS
+(1)2081 1582 MS (7)2102 1582 MS
+[50 0 0 -50 0 0]/Times-Roman MF
+( )2123 1582 MS
+[42 0 0 -42 0 0]/_Times-Italic MF
+(9)335 1630 MS (.)356 1630 MS (1)367 1630 MS (.)387 1630 MS (2)398 1630 MS
+[50 0 0 -50 0 0]/Times-Roman MF
+( )418 1630 MS
+[42 0 0 -42 0 0]/_Times-Italic MF
+(D)485 1630 MS (\351)515 1630 MS (f)534 1630 MS (i)546 1630 MS (n)558 1630 MS (i)578 1630 MS (t)590 1630 MS (i)601 1630 MS (o)613 1630 MS (n)634 1630 MS ( )654 1630 MS (d)665 1630 MS (e)686 1630 MS ( )704 1630 MS (l)715 1630 MS (\222)727 1630 MS
+(i)740 1630 MS (m)752 1630 MS (p)782 1630 MS (l)803 1630 MS (\351)814 1630 MS (m)833 1630 MS (e)863 1630 MS (n)881 1630 MS (t)902 1630 MS (a)914 1630 MS (t)934 1630 MS (i)946 1630 MS (o)958 1630 MS (n)979 1630 MS
+(.)1001 1630 MS (.)1012 1630 MS (.)1023 1630 MS (.)1034 1630 MS (.)1045 1630 MS (.)1056 1630 MS (.)1067 1630 MS (.)1078 1630 MS (.)1089 1630 MS (.)1100 1630 MS (.)1111 1630 MS (.)1122 1630 MS (.)1133 1630 MS (.)1144 1630 MS (.)1155 1630 MS (.)1166 1630 MS
+(.)1177 1630 MS (.)1188 1630 MS (.)1199 1630 MS (.)1210 1630 MS (.)1221 1630 MS (.)1232 1630 MS (.)1243 1630 MS (.)1254 1630 MS (.)1265 1630 MS (.)1276 1630 MS (.)1287 1630 MS (.)1298 1630 MS (.)1309 1630 MS (.)1320 1630 MS (.)1331 1630 MS (.)1342 1630 MS
+(.)1353 1630 MS (.)1364 1630 MS (.)1375 1630 MS (.)1386 1630 MS (.)1397 1630 MS (.)1408 1630 MS (.)1419 1630 MS (.)1430 1630 MS (.)1441 1630 MS (.)1452 1630 MS (.)1463 1630 MS (.)1474 1630 MS (.)1485 1630 MS (.)1496 1630 MS (.)1507 1630 MS (.)1518 1630 MS
+(.)1529 1630 MS (.)1540 1630 MS (.)1551 1630 MS (.)1562 1630 MS (.)1573 1630 MS (.)1584 1630 MS (.)1595 1630 MS (.)1606 1630 MS (.)1617 1630 MS (.)1628 1630 MS (.)1639 1630 MS (.)1650 1630 MS (.)1661 1630 MS (.)1672 1630 MS (.)1683 1630 MS (.)1694 1630 MS
+(.)1705 1630 MS (.)1716 1630 MS (.)1727 1630 MS (.)1738 1630 MS (.)1749 1630 MS (.)1760 1630 MS (.)1771 1630 MS (.)1782 1630 MS (.)1793 1630 MS (.)1804 1630 MS (.)1815 1630 MS (.)1826 1630 MS (.)1837 1630 MS (.)1848 1630 MS (.)1859 1630 MS (.)1870 1630 MS
+(.)1881 1630 MS (.)1892 1630 MS (.)1903 1630 MS (.)1914 1630 MS (.)1925 1630 MS (.)1936 1630 MS (.)1947 1630 MS (.)1958 1630 MS (.)1969 1630 MS (.)1980 1630 MS (.)1991 1630 MS (.)2002 1630 MS (.)2013 1630 MS (.)2024 1630 MS (.)2035 1630 MS (.)2046 1630 MS
+(.)2057 1630 MS (.)2068 1630 MS
+(1)2081 1630 MS (9)2102 1630 MS
+[50 0 0 -50 0 0]/Times-Roman MF
+( )2123 1630 MS
+[42 0 0 -42 0 0]/Times-Roman MF
+(9)285 1678 MS (.)306 1678 MS (2)317 1678 MS
+[50 0 0 -50 0 0]/Times-Roman MF
+( )337 1678 MS
+[42 0 0 -42 0 0]/Times-Roman MF
+(L)435 1678 MS
+[33 0 0 -33 0 0]/Times-Roman MF
+(E)460 1678 MS ( )480 1678 MS (C)488 1678 MS (O)510 1678 MS (M)535 1678 MS (P)565 1678 MS (O)583 1678 MS (S)607 1678 MS (A)626 1678 MS (N)649 1678 MS (T)673 1678 MS ( )694 1678 MS (E)702 1678 MS (T)722 1678 MS ( )743 1678 MS (L)751 1678 MS
+(A)772 1678 MS ( )796 1678 MS (D)804 1678 MS (O)828 1678 MS
+(N)852 1678 MS (N)876 1678 MS (E)900 1678 MS (E)921 1678 MS ( )941 1678 MS (M)950 1678 MS (A)980 1678 MS (T)1003 1678 MS (R)1024 1678 MS (I)1046 1678 MS (C)1057 1678 MS (E)1079 1678 MS ( )1099 1678 MS (P)1108 1678 MS (A)1127 1678 MS (R)1150 1678 MS
+(A)1173 1678 MS (L)1197 1678 MS (L)1217 1678 MS (E)1237 1678 MS
+(L)1258 1678 MS (E)1278 1678 MS
+[42 0 0 -42 0 0]/Times-Roman MF
+(.)1309 1678 MS (.)1320 1678 MS (.)1331 1678 MS (.)1342 1678 MS (.)1353 1678 MS (.)1364 1678 MS (.)1375 1678 MS (.)1386 1678 MS (.)1397 1678 MS (.)1408 1678 MS (.)1419 1678 MS (.)1430 1678 MS (.)1441 1678 MS (.)1452 1678 MS (.)1463 1678 MS (.)1474 1678 MS
+(.)1485 1678 MS (.)1496 1678 MS (.)1507 1678 MS (.)1518 1678 MS (.)1529 1678 MS (.)1540 1678 MS (.)1551 1678 MS (.)1562 1678 MS (.)1573 1678 MS (.)1584 1678 MS (.)1595 1678 MS (.)1606 1678 MS (.)1617 1678 MS (.)1628 1678 MS (.)1639 1678 MS (.)1650 1678 MS
+(.)1661 1678 MS (.)1672 1678 MS (.)1683 1678 MS (.)1694 1678 MS (.)1705 1678 MS (.)1716 1678 MS (.)1727 1678 MS (.)1738 1678 MS (.)1749 1678 MS (.)1760 1678 MS (.)1771 1678 MS (.)1782 1678 MS (.)1793 1678 MS (.)1804 1678 MS (.)1815 1678 MS (.)1826 1678 MS
+(.)1837 1678 MS (.)1848 1678 MS (.)1859 1678 MS (.)1870 1678 MS (.)1881 1678 MS (.)1892 1678 MS (.)1903 1678 MS (.)1914 1678 MS (.)1925 1678 MS (.)1936 1678 MS (.)1947 1678 MS (.)1958 1678 MS (.)1969 1678 MS (.)1980 1678 MS (.)1991 1678 MS (.)2002 1678 MS
+(.)2013 1678 MS (.)2024 1678 MS (.)2035 1678 MS (.)2046 1678 MS (.)2057 1678 MS (.)2068 1678 MS
+(2)2081 1678 MS (1)2102 1678 MS
+[50 0 0 -50 0 0]/Times-Roman MF
+( )2123 1678 MS
+[42 0 0 -42 0 0]/_Times-Italic MF
+(9)335 1726 MS (.)356 1726 MS (2)367 1726 MS (.)387 1726 MS (1)398 1726 MS
+[50 0 0 -50 0 0]/Times-Roman MF
+( )418 1726 MS
+[42 0 0 -42 0 0]/_Times-Italic MF
+(D)485 1726 MS (\351)515 1726 MS (f)534 1726 MS (i)546 1726 MS (n)558 1726 MS (i)578 1726 MS (t)590 1726 MS (i)601 1726 MS (o)613 1726 MS (n)634 1726 MS ( )654 1726 MS (d)665 1726 MS (e)686 1726 MS ( )704 1726 MS (l)715 1726 MS (\222)727 1726 MS
+(i)740 1726 MS (n)752 1726 MS (t)773 1726 MS (e)784 1726 MS (r)803 1726 MS (f)819 1726 MS (a)831 1726 MS (c)851 1726 MS (e)870 1726 MS ( )888 1726 MS (C)899 1726 MS (O)927 1726 MS (R)956 1726 MS (B)982 1726 MS (A)1007 1726 MS
+(.)1034 1726 MS (.)1045 1726 MS (.)1056 1726 MS (.)1067 1726 MS (.)1078 1726 MS (.)1089 1726 MS (.)1100 1726 MS (.)1111 1726 MS (.)1122 1726 MS (.)1133 1726 MS (.)1144 1726 MS (.)1155 1726 MS (.)1166 1726 MS (.)1177 1726 MS (.)1188 1726 MS (.)1199 1726 MS
+(.)1210 1726 MS (.)1221 1726 MS (.)1232 1726 MS (.)1243 1726 MS (.)1254 1726 MS (.)1265 1726 MS (.)1276 1726 MS (.)1287 1726 MS (.)1298 1726 MS (.)1309 1726 MS (.)1320 1726 MS (.)1331 1726 MS (.)1342 1726 MS (.)1353 1726 MS (.)1364 1726 MS (.)1375 1726 MS
+(.)1386 1726 MS (.)1397 1726 MS (.)1408 1726 MS (.)1419 1726 MS (.)1430 1726 MS (.)1441 1726 MS (.)1452 1726 MS (.)1463 1726 MS (.)1474 1726 MS (.)1485 1726 MS (.)1496 1726 MS (.)1507 1726 MS (.)1518 1726 MS (.)1529 1726 MS (.)1540 1726 MS (.)1551 1726 MS
+(.)1562 1726 MS (.)1573 1726 MS (.)1584 1726 MS (.)1595 1726 MS (.)1606 1726 MS (.)1617 1726 MS (.)1628 1726 MS (.)1639 1726 MS (.)1650 1726 MS (.)1661 1726 MS (.)1672 1726 MS (.)1683 1726 MS (.)1694 1726 MS (.)1705 1726 MS (.)1716 1726 MS (.)1727 1726 MS
+(.)1738 1726 MS (.)1749 1726 MS (.)1760 1726 MS (.)1771 1726 MS (.)1782 1726 MS (.)1793 1726 MS (.)1804 1726 MS (.)1815 1726 MS (.)1826 1726 MS (.)1837 1726 MS (.)1848 1726 MS (.)1859 1726 MS (.)1870 1726 MS (.)1881 1726 MS (.)1892 1726 MS (.)1903 1726 MS
+(.)1914 1726 MS (.)1925 1726 MS (.)1936 1726 MS (.)1947 1726 MS (.)1958 1726 MS (.)1969 1726 MS (.)1980 1726 MS (.)1991 1726 MS (.)2002 1726 MS (.)2013 1726 MS (.)2024 1726 MS (.)2035 1726 MS (.)2046 1726 MS (.)2057 1726 MS (.)2068 1726 MS
+(2)2081 1726 MS (1)2102 1726 MS
+[50 0 0 -50 0 0]/Times-Roman MF
+( )2123 1726 MS
+[42 0 0 -42 0 0]/_Times-Italic MF
+(9)335 1774 MS (.)356 1774 MS (2)367 1774 MS (.)387 1774 MS (2)398 1774 MS
+[50 0 0 -50 0 0]/Times-Roman MF
+( )418 1774 MS
+[42 0 0 -42 0 0]/_Times-Italic MF
+(D)485 1774 MS (\351)515 1774 MS (f)534 1774 MS (i)546 1774 MS (n)558 1774 MS (i)578 1774 MS (t)590 1774 MS (i)601 1774 MS (o)613 1774 MS (n)634 1774 MS ( )654 1774 MS (d)665 1774 MS (e)686 1774 MS ( )704 1774 MS (l)715 1774 MS (\222)727 1774 MS
+(i)740 1774 MS (m)752 1774 MS (p)782 1774 MS (l)803 1774 MS (\351)814 1774 MS (m)833 1774 MS (e)863 1774 MS (n)881 1774 MS (t)902 1774 MS (a)914 1774 MS (t)934 1774 MS (i)946 1774 MS (o)958 1774 MS (n)979 1774 MS
+(.)1001 1774 MS (.)1012 1774 MS (.)1023 1774 MS (.)1034 1774 MS (.)1045 1774 MS (.)1056 1774 MS (.)1067 1774 MS (.)1078 1774 MS (.)1089 1774 MS (.)1100 1774 MS (.)1111 1774 MS (.)1122 1774 MS (.)1133 1774 MS (.)1144 1774 MS (.)1155 1774 MS (.)1166 1774 MS
+(.)1177 1774 MS (.)1188 1774 MS (.)1199 1774 MS (.)1210 1774 MS (.)1221 1774 MS (.)1232 1774 MS (.)1243 1774 MS (.)1254 1774 MS (.)1265 1774 MS (.)1276 1774 MS (.)1287 1774 MS (.)1298 1774 MS (.)1309 1774 MS (.)1320 1774 MS (.)1331 1774 MS (.)1342 1774 MS
+(.)1353 1774 MS (.)1364 1774 MS (.)1375 1774 MS (.)1386 1774 MS (.)1397 1774 MS (.)1408 1774 MS (.)1419 1774 MS (.)1430 1774 MS (.)1441 1774 MS (.)1452 1774 MS (.)1463 1774 MS (.)1474 1774 MS (.)1485 1774 MS (.)1496 1774 MS (.)1507 1774 MS (.)1518 1774 MS
+(.)1529 1774 MS (.)1540 1774 MS (.)1551 1774 MS (.)1562 1774 MS (.)1573 1774 MS (.)1584 1774 MS (.)1595 1774 MS (.)1606 1774 MS (.)1617 1774 MS (.)1628 1774 MS (.)1639 1774 MS (.)1650 1774 MS (.)1661 1774 MS (.)1672 1774 MS (.)1683 1774 MS (.)1694 1774 MS
+(.)1705 1774 MS (.)1716 1774 MS (.)1727 1774 MS (.)1738 1774 MS (.)1749 1774 MS (.)1760 1774 MS (.)1771 1774 MS (.)1782 1774 MS (.)1793 1774 MS (.)1804 1774 MS (.)1815 1774 MS (.)1826 1774 MS (.)1837 1774 MS (.)1848 1774 MS (.)1859 1774 MS (.)1870 1774 MS
+(.)1881 1774 MS (.)1892 1774 MS (.)1903 1774 MS (.)1914 1774 MS (.)1925 1774 MS (.)1936 1774 MS (.)1947 1774 MS (.)1958 1774 MS (.)1969 1774 MS (.)1980 1774 MS (.)1991 1774 MS (.)2002 1774 MS (.)2013 1774 MS (.)2024 1774 MS (.)2035 1774 MS (.)2046 1774 MS
+(.)2057 1774 MS (.)2068 1774 MS
+(2)2081 1774 MS (3)2102 1774 MS
+[50 0 0 -50 0 0]/Times-Roman MF
+( )2123 1774 MS
+[42 0 0 -42 0 0]/Times-Roman MF
+(9)285 1822 MS (.)306 1822 MS (3)317 1822 MS
+[50 0 0 -50 0 0]/Times-Roman MF
+( )337 1822 MS
+[42 0 0 -42 0 0]/Times-Roman MF
+(L)435 1822 MS
+[33 0 0 -33 0 0]/Times-Roman MF
+(E)460 1822 MS ( )480 1822 MS (C)488 1822 MS (O)510 1822 MS (M)535 1822 MS (P)565 1822 MS (O)583 1822 MS (S)607 1822 MS (A)626 1822 MS (N)649 1822 MS (T)673 1822 MS ( )694 1822 MS (S)703 1822 MS (O)721 1822 MS (L)745 1822 MS (V)766 1822 MS
+(E)789 1822 MS (U)810 1822 MS (R)834 1822 MS
+( )856 1822 MS (E)864 1822 MS (T)884 1822 MS ( )905 1822 MS (L)913 1822 MS (A)934 1822 MS ( )958 1822 MS (D)966 1822 MS (O)990 1822 MS (N)1014 1822 MS (N)1038 1822 MS (E)1062 1822 MS (E)1083 1822 MS ( )1103 1822 MS (V)1112 1822 MS (E)1136 1822 MS
+(C)1156 1822 MS (T)1178 1822 MS (E)1199 1822 MS (U)1220 1822 MS
+(R)1243 1822 MS ( )1265 1822 MS (R)1273 1822 MS (E)1296 1822 MS (S)1316 1822 MS (U)1335 1822 MS (L)1359 1822 MS (T)1379 1822 MS (A)1400 1822 MS (T)1423 1822 MS ( )1444 1822 MS (P)1453 1822 MS (A)1472 1822 MS (R)1495 1822 MS (A)1518 1822 MS (L)1541 1822 MS
+(L)1562 1822 MS (E)1582 1822 MS (L)1602 1822 MS (E)1623 1822 MS
+[42 0 0 -42 0 0]/Times-Roman MF
+(.)1650 1822 MS (.)1661 1822 MS (.)1672 1822 MS (.)1683 1822 MS (.)1694 1822 MS (.)1705 1822 MS (.)1716 1822 MS (.)1727 1822 MS (.)1738 1822 MS (.)1749 1822 MS (.)1760 1822 MS (.)1771 1822 MS (.)1782 1822 MS (.)1793 1822 MS (.)1804 1822 MS (.)1815 1822 MS
+(.)1826 1822 MS (.)1837 1822 MS (.)1848 1822 MS (.)1859 1822 MS (.)1870 1822 MS (.)1881 1822 MS (.)1892 1822 MS (.)1903 1822 MS (.)1914 1822 MS (.)1925 1822 MS (.)1936 1822 MS (.)1947 1822 MS (.)1958 1822 MS (.)1969 1822 MS (.)1980 1822 MS (.)1991 1822 MS
+(.)2002 1822 MS (.)2013 1822 MS (.)2024 1822 MS (.)2035 1822 MS (.)2046 1822 MS (.)2057 1822 MS (.)2068 1822 MS
+(2)2081 1822 MS (5)2102 1822 MS
+[50 0 0 -50 0 0]/Times-Roman MF
+( )2123 1822 MS
+[42 0 0 -42 0 0]/_Times-Italic MF
+(9)335 1870 MS (.)356 1870 MS (3)367 1870 MS (.)387 1870 MS (1)398 1870 MS
+[50 0 0 -50 0 0]/Times-Roman MF
+( )418 1870 MS
+[42 0 0 -42 0 0]/_Times-Italic MF
+(D)485 1870 MS (\351)515 1870 MS (f)534 1870 MS (i)546 1870 MS (n)558 1870 MS (i)578 1870 MS (t)590 1870 MS (i)601 1870 MS (o)613 1870 MS (n)634 1870 MS ( )654 1870 MS (d)665 1870 MS (e)686 1870 MS ( )704 1870 MS (l)715 1870 MS (\222)727 1870 MS
+(i)740 1870 MS (n)752 1870 MS (t)773 1870 MS (e)784 1870 MS (r)803 1870 MS (f)819 1870 MS (a)831 1870 MS (c)851 1870 MS (e)870 1870 MS ( )888 1870 MS (C)899 1870 MS (O)927 1870 MS (R)956 1870 MS (B)982 1870 MS (A)1007 1870 MS
+(.)1034 1870 MS (.)1045 1870 MS (.)1056 1870 MS (.)1067 1870 MS (.)1078 1870 MS (.)1089 1870 MS (.)1100 1870 MS (.)1111 1870 MS (.)1122 1870 MS (.)1133 1870 MS (.)1144 1870 MS (.)1155 1870 MS (.)1166 1870 MS (.)1177 1870 MS (.)1188 1870 MS (.)1199 1870 MS
+(.)1210 1870 MS (.)1221 1870 MS (.)1232 1870 MS (.)1243 1870 MS (.)1254 1870 MS (.)1265 1870 MS (.)1276 1870 MS (.)1287 1870 MS (.)1298 1870 MS (.)1309 1870 MS (.)1320 1870 MS (.)1331 1870 MS (.)1342 1870 MS (.)1353 1870 MS (.)1364 1870 MS (.)1375 1870 MS
+(.)1386 1870 MS (.)1397 1870 MS (.)1408 1870 MS (.)1419 1870 MS (.)1430 1870 MS (.)1441 1870 MS (.)1452 1870 MS (.)1463 1870 MS (.)1474 1870 MS (.)1485 1870 MS (.)1496 1870 MS (.)1507 1870 MS (.)1518 1870 MS (.)1529 1870 MS (.)1540 1870 MS (.)1551 1870 MS
+(.)1562 1870 MS (.)1573 1870 MS (.)1584 1870 MS (.)1595 1870 MS (.)1606 1870 MS (.)1617 1870 MS (.)1628 1870 MS (.)1639 1870 MS (.)1650 1870 MS (.)1661 1870 MS (.)1672 1870 MS (.)1683 1870 MS (.)1694 1870 MS (.)1705 1870 MS (.)1716 1870 MS (.)1727 1870 MS
+(.)1738 1870 MS (.)1749 1870 MS (.)1760 1870 MS (.)1771 1870 MS (.)1782 1870 MS (.)1793 1870 MS (.)1804 1870 MS (.)1815 1870 MS (.)1826 1870 MS (.)1837 1870 MS (.)1848 1870 MS (.)1859 1870 MS (.)1870 1870 MS (.)1881 1870 MS (.)1892 1870 MS (.)1903 1870 MS
+(.)1914 1870 MS (.)1925 1870 MS (.)1936 1870 MS (.)1947 1870 MS (.)1958 1870 MS (.)1969 1870 MS (.)1980 1870 MS (.)1991 1870 MS (.)2002 1870 MS (.)2013 1870 MS (.)2024 1870 MS (.)2035 1870 MS (.)2046 1870 MS (.)2057 1870 MS (.)2068 1870 MS
+(2)2081 1870 MS (5)2102 1870 MS
+[50 0 0 -50 0 0]/Times-Roman MF
+( )2123 1870 MS
+[42 0 0 -42 0 0]/_Times-Italic MF
+(9)335 1918 MS (.)356 1918 MS (3)367 1918 MS (.)387 1918 MS (2)398 1918 MS
+[50 0 0 -50 0 0]/Times-Roman MF
+( )418 1918 MS
+[42 0 0 -42 0 0]/_Times-Italic MF
+(D)485 1918 MS (\351)515 1918 MS (f)534 1918 MS (i)546 1918 MS (n)558 1918 MS (i)578 1918 MS (t)590 1918 MS (i)601 1918 MS (o)613 1918 MS (n)634 1918 MS ( )654 1918 MS (d)665 1918 MS (e)686 1918 MS ( )704 1918 MS (l)715 1918 MS (\222)727 1918 MS
+(i)740 1918 MS (m)752 1918 MS (p)782 1918 MS (l)803 1918 MS (\351)814 1918 MS (m)833 1918 MS (e)863 1918 MS (n)881 1918 MS (t)902 1918 MS (a)914 1918 MS (t)934 1918 MS (i)946 1918 MS (o)958 1918 MS (n)979 1918 MS
+(.)1001 1918 MS (.)1012 1918 MS (.)1023 1918 MS (.)1034 1918 MS (.)1045 1918 MS (.)1056 1918 MS (.)1067 1918 MS (.)1078 1918 MS (.)1089 1918 MS (.)1100 1918 MS (.)1111 1918 MS (.)1122 1918 MS (.)1133 1918 MS (.)1144 1918 MS (.)1155 1918 MS (.)1166 1918 MS
+(.)1177 1918 MS (.)1188 1918 MS (.)1199 1918 MS (.)1210 1918 MS (.)1221 1918 MS (.)1232 1918 MS (.)1243 1918 MS (.)1254 1918 MS (.)1265 1918 MS (.)1276 1918 MS (.)1287 1918 MS (.)1298 1918 MS (.)1309 1918 MS (.)1320 1918 MS (.)1331 1918 MS (.)1342 1918 MS
+(.)1353 1918 MS (.)1364 1918 MS (.)1375 1918 MS (.)1386 1918 MS (.)1397 1918 MS (.)1408 1918 MS (.)1419 1918 MS (.)1430 1918 MS (.)1441 1918 MS (.)1452 1918 MS (.)1463 1918 MS (.)1474 1918 MS (.)1485 1918 MS (.)1496 1918 MS (.)1507 1918 MS (.)1518 1918 MS
+(.)1529 1918 MS (.)1540 1918 MS (.)1551 1918 MS (.)1562 1918 MS (.)1573 1918 MS (.)1584 1918 MS (.)1595 1918 MS (.)1606 1918 MS (.)1617 1918 MS (.)1628 1918 MS (.)1639 1918 MS (.)1650 1918 MS (.)1661 1918 MS (.)1672 1918 MS (.)1683 1918 MS (.)1694 1918 MS
+(.)1705 1918 MS (.)1716 1918 MS (.)1727 1918 MS (.)1738 1918 MS (.)1749 1918 MS (.)1760 1918 MS (.)1771 1918 MS (.)1782 1918 MS (.)1793 1918 MS (.)1804 1918 MS (.)1815 1918 MS (.)1826 1918 MS (.)1837 1918 MS (.)1848 1918 MS (.)1859 1918 MS (.)1870 1918 MS
+(.)1881 1918 MS (.)1892 1918 MS (.)1903 1918 MS (.)1914 1918 MS (.)1925 1918 MS (.)1936 1918 MS (.)1947 1918 MS (.)1958 1918 MS (.)1969 1918 MS (.)1980 1918 MS (.)1991 1918 MS (.)2002 1918 MS (.)2013 1918 MS (.)2024 1918 MS (.)2035 1918 MS (.)2046 1918 MS
+(.)2057 1918 MS (.)2068 1918 MS
+(2)2081 1918 MS (6)2102 1918 MS
+[50 0 0 -50 0 0]/Times-Roman MF
+( )2123 1918 MS
+[42 0 0 -42 0 0]/Times-Roman MF
+(9)285 1966 MS (.)306 1966 MS (4)317 1966 MS
+[50 0 0 -50 0 0]/Times-Roman MF
+( )337 1966 MS
+[42 0 0 -42 0 0]/Times-Roman MF
+(C)435 1966 MS
+[33 0 0 -33 0 0]/Times-Roman MF
+(A)463 1966 MS (S)486 1966 MS ( )505 1966 MS (T)513 1966 MS (E)534 1966 MS (S)554 1966 MS (T)572 1966 MS
+[42 0 0 -42 0 0]/Times-Roman MF
+(.)594 1966 MS (.)605 1966 MS (.)616 1966 MS (.)627 1966 MS (.)638 1966 MS (.)649 1966 MS (.)660 1966 MS (.)671 1966 MS (.)682 1966 MS (.)693 1966 MS (.)704 1966 MS (.)715 1966 MS (.)726 1966 MS (.)737 1966 MS (.)748 1966 MS (.)759 1966 MS
+(.)770 1966 MS (.)781 1966 MS (.)792 1966 MS (.)803 1966 MS (.)814 1966 MS (.)825 1966 MS (.)836 1966 MS (.)847 1966 MS (.)858 1966 MS (.)869 1966 MS (.)880 1966 MS (.)891 1966 MS (.)902 1966 MS (.)913 1966 MS (.)924 1966 MS (.)935 1966 MS
+(.)946 1966 MS (.)957 1966 MS (.)968 1966 MS (.)979 1966 MS (.)990 1966 MS (.)1001 1966 MS (.)1012 1966 MS (.)1023 1966 MS (.)1034 1966 MS (.)1045 1966 MS (.)1056 1966 MS (.)1067 1966 MS (.)1078 1966 MS (.)1089 1966 MS (.)1100 1966 MS (.)1111 1966 MS
+(.)1122 1966 MS (.)1133 1966 MS (.)1144 1966 MS (.)1155 1966 MS (.)1166 1966 MS (.)1177 1966 MS (.)1188 1966 MS (.)1199 1966 MS (.)1210 1966 MS (.)1221 1966 MS (.)1232 1966 MS (.)1243 1966 MS (.)1254 1966 MS (.)1265 1966 MS (.)1276 1966 MS (.)1287 1966 MS
+(.)1298 1966 MS (.)1309 1966 MS (.)1320 1966 MS (.)1331 1966 MS (.)1342 1966 MS (.)1353 1966 MS (.)1364 1966 MS (.)1375 1966 MS (.)1386 1966 MS (.)1397 1966 MS (.)1408 1966 MS (.)1419 1966 MS (.)1430 1966 MS (.)1441 1966 MS (.)1452 1966 MS (.)1463 1966 MS
+(.)1474 1966 MS (.)1485 1966 MS (.)1496 1966 MS (.)1507 1966 MS (.)1518 1966 MS (.)1529 1966 MS (.)1540 1966 MS (.)1551 1966 MS (.)1562 1966 MS (.)1573 1966 MS (.)1584 1966 MS (.)1595 1966 MS (.)1606 1966 MS (.)1617 1966 MS (.)1628 1966 MS (.)1639 1966 MS
+(.)1650 1966 MS (.)1661 1966 MS (.)1672 1966 MS (.)1683 1966 MS (.)1694 1966 MS (.)1705 1966 MS (.)1716 1966 MS (.)1727 1966 MS (.)1738 1966 MS (.)1749 1966 MS (.)1760 1966 MS (.)1771 1966 MS (.)1782 1966 MS (.)1793 1966 MS (.)1804 1966 MS (.)1815 1966 MS
+(.)1826 1966 MS (.)1837 1966 MS (.)1848 1966 MS (.)1859 1966 MS (.)1870 1966 MS (.)1881 1966 MS (.)1892 1966 MS (.)1903 1966 MS (.)1914 1966 MS (.)1925 1966 MS (.)1936 1966 MS (.)1947 1966 MS (.)1958 1966 MS (.)1969 1966 MS (.)1980 1966 MS (.)1991 1966 MS
+(.)2002 1966 MS (.)2013 1966 MS (.)2024 1966 MS (.)2035 1966 MS (.)2046 1966 MS (.)2057 1966 MS (.)2068 1966 MS
+(2)2081 1966 MS (8)2102 1966 MS
+[50 0 0 -50 0 0]/Times-Roman MF
+( )2123 1966 MS
+[42 0 0 -42 0 0]/Times-Bold MF
+(1)235 2039 MS (0)256 2039 MS
+[50 0 0 -50 0 0]/Times-Roman MF
+( )277 2039 MS
+[42 0 0 -42 0 0]/Times-Bold MF
+(C)335 2039 MS (O)365 2039 MS (N)398 2039 MS (C)428 2039 MS (L)458 2039 MS (U)486 2039 MS (S)516 2039 MS (I)539 2039 MS (O)555 2039 MS (N)588 2039 MS
+(.)627 2039 MS (.)638 2039 MS (.)649 2039 MS (.)660 2039 MS (.)671 2039 MS (.)682 2039 MS (.)693 2039 MS (.)704 2039 MS (.)715 2039 MS (.)726 2039 MS (.)737 2039 MS (.)748 2039 MS (.)759 2039 MS (.)770 2039 MS (.)781 2039 MS (.)792 2039 MS
+(.)803 2039 MS (.)814 2039 MS (.)825 2039 MS (.)836 2039 MS (.)847 2039 MS (.)858 2039 MS (.)869 2039 MS (.)880 2039 MS (.)891 2039 MS (.)902 2039 MS (.)913 2039 MS (.)924 2039 MS (.)935 2039 MS (.)946 2039 MS (.)957 2039 MS (.)968 2039 MS
+(.)979 2039 MS (.)990 2039 MS (.)1001 2039 MS (.)1012 2039 MS (.)1023 2039 MS (.)1034 2039 MS (.)1045 2039 MS (.)1056 2039 MS (.)1067 2039 MS (.)1078 2039 MS (.)1089 2039 MS (.)1100 2039 MS (.)1111 2039 MS (.)1122 2039 MS (.)1133 2039 MS (.)1144 2039 MS
+(.)1155 2039 MS (.)1166 2039 MS (.)1177 2039 MS (.)1188 2039 MS (.)1199 2039 MS (.)1210 2039 MS (.)1221 2039 MS (.)1232 2039 MS (.)1243 2039 MS (.)1254 2039 MS (.)1265 2039 MS (.)1276 2039 MS (.)1287 2039 MS (.)1298 2039 MS (.)1309 2039 MS (.)1320 2039 MS
+(.)1331 2039 MS (.)1342 2039 MS (.)1353 2039 MS (.)1364 2039 MS (.)1375 2039 MS (.)1386 2039 MS (.)1397 2039 MS (.)1408 2039 MS (.)1419 2039 MS (.)1430 2039 MS (.)1441 2039 MS (.)1452 2039 MS (.)1463 2039 MS (.)1474 2039 MS (.)1485 2039 MS (.)1496 2039 MS
+(.)1507 2039 MS (.)1518 2039 MS (.)1529 2039 MS (.)1540 2039 MS (.)1551 2039 MS (.)1562 2039 MS (.)1573 2039 MS (.)1584 2039 MS (.)1595 2039 MS (.)1606 2039 MS (.)1617 2039 MS (.)1628 2039 MS (.)1639 2039 MS (.)1650 2039 MS (.)1661 2039 MS (.)1672 2039 MS
+(.)1683 2039 MS (.)1694 2039 MS (.)1705 2039 MS (.)1716 2039 MS (.)1727 2039 MS (.)1738 2039 MS (.)1749 2039 MS (.)1760 2039 MS (.)1771 2039 MS (.)1782 2039 MS (.)1793 2039 MS (.)1804 2039 MS (.)1815 2039 MS (.)1826 2039 MS (.)1837 2039 MS (.)1848 2039 MS
+(.)1859 2039 MS (.)1870 2039 MS (.)1881 2039 MS (.)1892 2039 MS (.)1903 2039 MS (.)1914 2039 MS (.)1925 2039 MS (.)1936 2039 MS (.)1947 2039 MS (.)1958 2039 MS (.)1969 2039 MS (.)1980 2039 MS (.)1991 2039 MS (.)2002 2039 MS (.)2013 2039 MS (.)2024 2039 MS
+(.)2035 2039 MS (.)2046 2039 MS (.)2057 2039 MS (.)2068 2039 MS
+(2)2081 2039 MS (9)2102 2039 MS
+[50 0 0 -50 0 0]/Times-Roman MF
+( )2123 2039 MS
+[42 0 0 -42 0 0]/Times-Bold MF
+(1)235 2112 MS (1)256 2112 MS
+[50 0 0 -50 0 0]/Times-Roman MF
+( )277 2112 MS
+[42 0 0 -42 0 0]/Times-Bold MF
+(R)335 2112 MS (E)365 2112 MS (F)393 2112 MS (E)418 2112 MS (R)446 2112 MS (E)476 2112 MS (N)504 2112 MS (C)534 2112 MS (E)564 2112 MS (S)592 2112 MS
+(.)616 2112 MS (.)627 2112 MS (.)638 2112 MS (.)649 2112 MS (.)660 2112 MS (.)671 2112 MS (.)682 2112 MS (.)693 2112 MS (.)704 2112 MS (.)715 2112 MS (.)726 2112 MS (.)737 2112 MS (.)748 2112 MS (.)759 2112 MS (.)770 2112 MS (.)781 2112 MS
+(.)792 2112 MS (.)803 2112 MS (.)814 2112 MS (.)825 2112 MS (.)836 2112 MS (.)847 2112 MS (.)858 2112 MS (.)869 2112 MS (.)880 2112 MS (.)891 2112 MS (.)902 2112 MS (.)913 2112 MS (.)924 2112 MS (.)935 2112 MS (.)946 2112 MS (.)957 2112 MS
+(.)968 2112 MS (.)979 2112 MS (.)990 2112 MS (.)1001 2112 MS (.)1012 2112 MS (.)1023 2112 MS (.)1034 2112 MS (.)1045 2112 MS (.)1056 2112 MS (.)1067 2112 MS (.)1078 2112 MS (.)1089 2112 MS (.)1100 2112 MS (.)1111 2112 MS (.)1122 2112 MS (.)1133 2112 MS
+(.)1144 2112 MS (.)1155 2112 MS (.)1166 2112 MS (.)1177 2112 MS (.)1188 2112 MS (.)1199 2112 MS (.)1210 2112 MS (.)1221 2112 MS (.)1232 2112 MS (.)1243 2112 MS (.)1254 2112 MS (.)1265 2112 MS (.)1276 2112 MS (.)1287 2112 MS (.)1298 2112 MS (.)1309 2112 MS
+(.)1320 2112 MS (.)1331 2112 MS (.)1342 2112 MS (.)1353 2112 MS (.)1364 2112 MS (.)1375 2112 MS (.)1386 2112 MS (.)1397 2112 MS (.)1408 2112 MS (.)1419 2112 MS (.)1430 2112 MS (.)1441 2112 MS (.)1452 2112 MS (.)1463 2112 MS (.)1474 2112 MS (.)1485 2112 MS
+(.)1496 2112 MS (.)1507 2112 MS (.)1518 2112 MS (.)1529 2112 MS (.)1540 2112 MS (.)1551 2112 MS (.)1562 2112 MS (.)1573 2112 MS (.)1584 2112 MS (.)1595 2112 MS (.)1606 2112 MS (.)1617 2112 MS (.)1628 2112 MS (.)1639 2112 MS (.)1650 2112 MS (.)1661 2112 MS
+(.)1672 2112 MS (.)1683 2112 MS (.)1694 2112 MS (.)1705 2112 MS (.)1716 2112 MS (.)1727 2112 MS (.)1738 2112 MS (.)1749 2112 MS (.)1760 2112 MS (.)1771 2112 MS (.)1782 2112 MS (.)1793 2112 MS (.)1804 2112 MS (.)1815 2112 MS (.)1826 2112 MS (.)1837 2112 MS
+(.)1848 2112 MS (.)1859 2112 MS (.)1870 2112 MS (.)1881 2112 MS (.)1892 2112 MS (.)1903 2112 MS (.)1914 2112 MS (.)1925 2112 MS (.)1936 2112 MS (.)1947 2112 MS (.)1958 2112 MS (.)1969 2112 MS (.)1980 2112 MS (.)1991 2112 MS (.)2002 2112 MS (.)2013 2112 MS
+(.)2024 2112 MS (.)2035 2112 MS (.)2046 2112 MS (.)2057 2112 MS (.)2068 2112 MS
+(3)2081 2112 MS (0)2102 2112 MS
+[50 0 0 -50 0 0]/Times-Roman MF
+( )2123 2112 MS
+%%IncludeFont: Helvetica-Bold
+[67 0 0 -67 0 0]/Helvetica-Bold MF
+( )235 2232 MS
+%%IncludeFont: Palatino-Roman
+[75 0 0 -75 0 0]/Palatino-Roman MF
+( )235 2333 MS
+showpage
+%%Page: 5 5
+14.449 827.879 translate 72 300 div dup neg scale
+0 0 transform .25 add round .25 sub exch .25 add round .25 sub exch itransform translate
+1 j
+1 setlinecap
+72 sl
+0.375 g
+n
+494 182 M
+494 155 472 133 445 133 c
+418 133 396 155 396 182 c
+396 209 418 231 445 231 c
+472 231 494 209 494 182 c
+cp
+CM 0.156 0.152 scale
+s
+SM
+71 sl
+n
+660 182 M
+660 155 638 133 611 133 c
+584 133 562 155 562 182 c
+562 209 584 231 611 231 c
+638 231 660 209 660 182 c
+cp
+CM 0.156 0.152 scale
+s
+SM
+n
+120 24 468 152 B
+1 g
+f
+1 sl
+n
+122 26 467 151 B
+cp
+s
+71 sl
+0.375 g
+n
+577 180 M
+577 153 555 131 528 131 c
+501 131 479 153 479 180 c
+479 206 501 228 528 228 c
+555 228 577 206 577 180 c
+cp
+gs
+1 g
+e
+gr
+CM 0.156 0.152 scale
+s
+SM
+n
+480 180 M
+575 180 L
+CM 0.156 0.152 scale
+s
+SM
+n
+34 18 562 187 B
+1 g
+f
+1 sl
+n
+36 20 561 186 B
+cp
+s
+n
+610 173 M
+591 173 L
+554 124 L
+579 126 L
+609 173 L
+610 173 L
+cp
+gs
+e
+gr
+s
+n
+448 170 M
+468 170 L
+504 122 L
+479 123 L
+449 170 L
+448 170 L
+cp
+gs
+e
+gr
+s
+0.375 g
+n
+473 140 M
+473 137 470 135 467 135 c
+464 135 462 137 462 140 c
+462 142 464 145 467 145 c
+470 145 473 142 473 140 c
+cp
+gs
+e
+gr
+s
+n
+593 139 M
+593 136 590 134 588 134 c
+585 134 583 136 583 139 c
+583 141 585 144 588 144 c
+590 144 593 141 593 139 c
+cp
+gs
+e
+gr
+s
+72 sl
+n
+665 137 M
+665 229 L
+CM 0.156 0.152 scale
+s
+SM
+[29 0 0 -29 0 0]/Times-Roman MF
+0 g
+( )676 243 MS
+[50 0 0 -50 0 0]/Times-Roman MF
+(D)400 289 MS (E)436 289 MS (N)467 289 MS ( )503 289 MS ( )516 289 MS (S)529 289 MS (a)557 289 MS (c)579 289 MS (l)601 289 MS (a)613 289 MS (y)636 289 MS
+( )660 289 MS
+( )1297 140 MS
+[38 0 0 -38 0 0]/Times-Roman MF
+(S)1785 129 MS (F)1806 129 MS (M)1827 129 MS (E)1861 129 MS (/)1883 129 MS (L)1894 129 MS (G)1916 129 MS (L)1943 129 MS (S)1965 129 MS (/)1986 129 MS (R)1997 129 MS (T)2022 129 MS (/)2045 129 MS (0)2056 129 MS (2)2075 129 MS
+(-)2094 129 MS
+(0)2106 129 MS (0)2125 129 MS (2)2144 129 MS
+( )2163 129 MS
+(D)1785 173 MS (a)1812 173 MS (t)1829 173 MS (e)1840 173 MS
+( )1856 173 MS
+(:)1866 173 MS
+( )1875 173 MS
+(3)1885 173 MS (0)1904 173 MS (/)1923 173 MS (0)1934 173 MS (5)1952 173 MS (/)1971 173 MS (2)1982 173 MS (0)2000 173 MS (0)2019 173 MS (2)2038 173 MS
+( )2057 173 MS
+n
+5 5 232 89 B
+f
+n
+5 5 232 89 B
+f
+n
+584 5 238 89 B
+f
+n
+5 5 823 89 B
+f
+n
+938 5 829 89 B
+f
+n
+5 5 1768 89 B
+f
+n
+436 5 1774 89 B
+f
+n
+5 5 2211 89 B
+f
+n
+5 5 2211 89 B
+f
+n
+5 256 232 95 B
+f
+n
+2 256 823 95 B
+f
+n
+2 256 1768 95 B
+f
+n
+5 256 2211 95 B
+f
+[50 0 0 -50 0 0]/Times-Roman MF
+(D)322 400 MS (M)358 400 MS (2)402 400 MS (S)427 400 MS (/)455 400 MS (S)469 400 MS (F)497 400 MS (M)524 400 MS (E)568 400 MS (/)599 400 MS (L)613 400 MS (G)643 400 MS (L)680 400 MS (S)710 400 MS
+( )738 400 MS
+[50 0 0 -50 0 0]/Times-Bold MF
+gs
+n
+241 53 1102 367 CB
+(R)1102 413 MS (A)1138 413 MS (P)1174 413 MS (P)1204 413 MS (O)1234 413 MS (R)1273 413 MS (T)1310 413 MS
+gr
+gs
+n
+150 53 1343 367 CB
+( )1343 413 MS (D)1356 413 MS (M)1392 413 MS (2)1440 413 MS (S)1465 413 MS
+gr
+[50 0 0 -50 0 0]/Times-Roman MF
+gs
+n
+24 52 1493 368 CB
+( )1493 413 MS
+gr
+[38 0 0 -38 0 0]/Times-Roman MF
+(P)1785 400 MS (a)1806 400 MS (g)1823 400 MS (e)1841 400 MS ( )1858 400 MS
+[50 0 0 -50 0 0]/Times-Roman MF
+(5)1868 400 MS
+(/)1893 400 MS
+(3)1907 400 MS (0)1932 400 MS
+[38 0 0 -38 0 0]/Times-Roman MF
+( )1957 400 MS
+n
+5 2 232 352 B
+f
+n
+2 2 823 352 B
+f
+n
+941 2 826 352 B
+f
+n
+2 2 1768 352 B
+f
+n
+5 2 2211 352 B
+f
+n
+5 67 232 355 B
+f
+n
+590 1 232 423 B
+f
+n
+2 67 823 355 B
+f
+n
+1 1 823 423 B
+f
+n
+942 1 825 423 B
+f
+n
+2 67 1768 355 B
+f
+n
+1 1 1768 423 B
+f
+n
+440 1 1770 423 B
+f
+n
+5 67 2211 355 B
+f
+n
+5 1 2211 423 B
+f
+[50 0 0 -50 0 0]/Times-Roman MF
+( )235 470 MS
+[33 0 0 -33 0 0]/Times-Roman MF
+/IsChar{exch/CharStrings get exch known}bd/MapCh{3 -1 roll/Encoding get 3 1\r
+roll put}bd/MapDegree{dup 16#b0 exch/degree IsChar{/degree}{/ring}ifelse MapCh}\r
+bd/MapBB{dup 16#a6 exch/brokenbar IsChar{/brokenbar}{/bar}ifelse MapCh}bd\r
+/reencode{findfont begin currentdict dup length dict begin{1 index/FID ne{def}\r
+{pop pop}ifelse}forall/FontName exch def dup length 0 ne{/Encoding Encoding 256\r
+array copy def 0 exch{dup type/nametype eq{Encoding 2 index 2 index put pop 1\r
+add}{exch pop}ifelse}forall}if pop currentdict dup end end/FontName get exch\r
+definefont dup MapDegree MapBB}bd/LATENC[0/grave/acute/circumflex/tilde/macron\r
+/breve/dotaccent/dieresis/ring/cedilla/hungarumlaut/ogonek/caron/dotlessi/fi/fl\r
+/Lslash/lslash/Zcaron/zcaron/minus/.notdef/.notdef/.notdef/.notdef/.notdef\r
+/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/space/exclam/quotedbl\r
+/numbersign/dollar/percent/ampersand/quotesingle/parenleft/parenright/asterisk\r
+/plus/comma/hyphen/period/slash/zero/one/two/three/four/five/six/seven/eight\r
+/nine/colon/semicolon/less/equal/greater/question/at/A/B/C/D/E/F/G/H/I/J/K/L/M\r
+/N/O/P/Q/R/S/T/U/V/W/X/Y/Z/bracketleft/backslash/bracketright/asciicircum\r
+/underscore/grave/a/b/c/d/e/f/g/h/i/j/k/l/m/n/o/p/q/r/s/t/u/v/w/x/y/z/braceleft\r
+/bar/braceright/asciitilde/.notdef/.notdef/.notdef/quotesinglbase/florin\r
+/quotedblbase/ellipsis/dagger/daggerdbl/circumflex/perthousand/Scaron\r
+/guilsinglleft/OE/.notdef/.notdef/.notdef/.notdef/quoteleft/quoteright\r
+/quotedblleft/quotedblright/bullet/endash/emdash/tilde/trademark/scaron\r
+/guilsinglright/oe/.notdef/.notdef/Ydieresis/.notdef/exclamdown/cent/sterling\r
+/currency/yen/brokenbar/section/dieresis/copyright/ordfeminine/guillemotleft\r
+/logicalnot/hyphen/registered/macron/degree/plusminus/twosuperior/threesuperior\r
+/acute/mu/paragraph/periodcentered/cedilla/onesuperior/ordmasculine\r
+/guillemotright/onequarter/onehalf/threequarters/questiondown/Agrave/Aacute\r
+/Acircumflex/Atilde/Adieresis/Aring/AE/Ccedilla/Egrave/Eacute/Ecircumflex\r
+/Edieresis/Igrave/Iacute/Icircumflex/Idieresis/Eth/Ntilde/Ograve/Oacute\r
+/Ocircumflex/Otilde/Odieresis/multiply/Oslash/Ugrave/Uacute/Ucircumflex\r
+/Udieresis/Yacute/Thorn/germandbls/agrave/aacute/acircumflex/atilde/adieresis\r
+/aring/ae/ccedilla/egrave/eacute/ecircumflex/edieresis/igrave/iacute\r
+/icircumflex/idieresis/eth/ntilde/ograve/oacute/ocircumflex/otilde/odieresis\r
+/divide/oslash/ugrave/uacute/ucircumflex/udieresis/yacute/thorn/ydieresis]def\r
+LATENC /_Times-Roman /Times-Roman reencode
+[33 0 0 -33 0 0]/_Times-Roman MF
+(L)242 3256 MS (e)262 3256 MS (s)277 3256 MS ( )289 3256 MS (i)298 3256 MS (n)307 3256 MS (f)324 3256 MS (o)335 3256 MS (r)351 3256 MS (m)363 3256 MS (a)388 3256 MS (t)403 3256 MS (i)412 3256 MS (o)422 3256 MS (n)439 3256 MS (s)456 3256 MS
+( )468 3256 MS (c)477 3256 MS (o)492 3256 MS (n)508 3256 MS (t)524 3256 MS (e)534 3256 MS (n)549 3256 MS (u)565 3256 MS (e)582 3256 MS (s)597 3256 MS ( )610 3256 MS (d)618 3256 MS (a)634 3256 MS (n)650 3256 MS (s)667 3256 MS ( )679 3256 MS
+(c)688 3256 MS (e)703 3256 MS ( )717 3256 MS (d)726 3256 MS (o)742 3256 MS (c)759 3256 MS (u)773 3256 MS (m)791 3256 MS (e)817 3256 MS (n)831 3256 MS (t)847 3256 MS ( )857 3256 MS (s)866 3256 MS (o)878 3256 MS (n)895 3256 MS (t)911 3256 MS
+( )921 3256 MS (r)929 3256 MS (\351)941 3256 MS (s)956 3256 MS (e)968 3256 MS (r)982 3256 MS (v)994 3256 MS (\351)1011 3256 MS (e)1026 3256 MS (s)1041 3256 MS ( )1053 3256 MS (a)1061 3256 MS (u)1076 3256 MS (x)1093 3256 MS ( )1109 3256 MS (d)1118 3256 MS
+(e)1135 3256 MS (s)1150 3256 MS (t)1162 3256 MS (i)1171 3256 MS (n)1181 3256 MS (a)1197 3256 MS (t)1212 3256 MS (a)1221 3256 MS (i)1236 3256 MS (r)1245 3256 MS (e)1257 3256 MS (s)1272 3256 MS ( )1284 3256 MS (n)1293 3256 MS (o)1309 3256 MS (m)1326 3256 MS
+(m)1352 3256 MS (\351)1378 3256 MS (m)1393 3256 MS (e)1419 3256 MS (n)1433 3256 MS (t)1450 3256 MS ( )1459 3256 MS (d)1468 3256 MS (\351)1484 3256 MS (s)1499 3256 MS (i)1512 3256 MS (g)1521 3256 MS
+(n)1538 3256 MS (\351)1555 3256 MS (s)1570 3256 MS ( )1582 3256 MS (e)1591 3256 MS (t)1605 3256 MS ( )1615 3256 MS (n)1623 3256 MS (e)1640 3256 MS ( )1654 3256 MS (p)1663 3256 MS (e)1680 3256 MS (u)1694 3256 MS (v)1711 3256 MS (e)1728 3256 MS (n)1743 3256 MS
+(t)1759 3256 MS ( )1768 3256 MS (r)1776 3256 MS (e)1788 3256 MS (c)1803 3256 MS (e)1818 3256 MS (v)1832 3256 MS (o)1849 3256 MS (i)1865 3256 MS (r)1874 3256 MS ( )1886 3256 MS (a)1894 3256 MS (u)1909 3256 MS (c)1926 3256 MS (u)1940 3256 MS (n)1957 3256 MS
+(e)1974 3256 MS ( )1988 3256 MS (d)1997 3256 MS (i)2013 3256 MS (f)2023 3256 MS (f)2034 3256 MS (u)2044 3256 MS (s)2062 3256 MS (i)2074 3256 MS (o)2084 3256 MS (n)2101 3256 MS
+( )2117 3256 MS
+(s)928 3294 MS (a)940 3294 MS (n)955 3294 MS (s)972 3294 MS ( )985 3294 MS (l)993 3294 MS (\222)1002 3294 MS (a)1013 3294 MS (u)1028 3294 MS (t)1045 3294 MS (o)1054 3294 MS (r)1071 3294 MS (i)1082 3294 MS (s)1092 3294 MS (a)1104 3294 MS (t)1119 3294 MS
+(i)1128 3294 MS (o)1138 3294 MS (n)1154 3294 MS ( )1171 3294 MS (e)1180 3294 MS (x)1194 3294 MS (p)1211 3294 MS (r)1227 3294 MS (e)1239 3294 MS (s)1254 3294 MS (s)1267 3294 MS (e)1280 3294 MS ( )1294 3294 MS (d)1303 3294 MS (u)1319 3294 MS ( )1336 3294 MS
+(D)1344 3294 MS (M)1368 3294 MS (2)1397 3294 MS (S)1414 3294 MS
+[50 0 0 -50 0 0]/Times-Roman MF
+( )1432 3294 MS
+[67 0 0 -67 0 0]/Helvetica-Bold MF
+(1)310 592 MS
+( )347 592 MS
+(I)400 592 MS (n)419 592 MS (t)460 592 MS (r)482 592 MS (o)508 592 MS (d)549 592 MS (u)590 592 MS (c)631 592 MS (t)668 592 MS (i)689 592 MS (o)708 592 MS (n)749 592 MS
+( )790 592 MS
+[50 0 0 -50 0 0]/Times-Roman MF
+( )348 667 MS
+( )348 724 MS
+LATENC /_Times-Roman /Times-Roman reencode
+[50 0 0 -50 0 0]/_Times-Roman MF
+(L)348 782 MS (a)378 782 MS ( )400 782 MS (D)444 782 MS (i)481 782 MS (r)493 782 MS (e)510 782 MS (c)532 782 MS (t)554 782 MS (i)570 782 MS (o)582 782 MS (n)608 782 MS ( )632 782 MS (d)676 782 MS (e)701 782 MS ( )723 782 MS
+(l)768 782 MS (\222)781 782 MS (E)797 782 MS (n)829 782 MS (e)853 782 MS (r)875 782 MS (g)892 782 MS (i)918 782 MS (e)930 782 MS ( )952 782 MS (N)996 782 MS (u)1032 782 MS (c)1057 782 MS (l)1080 782 MS (\351)1093 782 MS (a)1116 782 MS
+(i)1139 782 MS (r)1151 782 MS (e)1168 782 MS ( )1190 782 MS (\()1234 782 MS (D)1251 782 MS (E)1287 782 MS (N)1318 782 MS (\))1354 782 MS (,)1371 782 MS ( )1384 782 MS (d)1428 782 MS (a)1453 782 MS (n)1475 782 MS (s)1499 782 MS ( )1518 782 MS
+(l)1563 782 MS (e)1575 782 MS ( )1597 782 MS (c)1641 782 MS (a)1663 782 MS (d)1685 782 MS (r)1710 782 MS (e)1727 782 MS ( )1749 782 MS (d)1793 782 MS (e)1818 782 MS ( )1840 782 MS (s)1884 782 MS (a)1903 782 MS ( )1925 782 MS (m)1970 782 MS
+(i)2009 782 MS (s)2022 782 MS (s)2041 782 MS (i)2061 782 MS (o)2073 782 MS (n)2100 782 MS ( )2125 782 MS
+(\351)235 839 MS (l)258 839 MS (e)270 839 MS (c)292 839 MS (t)314 839 MS (r)329 839 MS (o)346 839 MS (n)372 839 MS (u)396 839 MS (c)421 839 MS (l)444 839 MS (\351)456 839 MS (a)478 839 MS (i)501 839 MS (r)514 839 MS (e)531 839 MS
+(,)553 839 MS ( )566 839 MS (a)579 839 MS ( )602 839 MS (l)616 839 MS (a)629 839 MS (n)652 839 MS (c)676 839 MS (\351)698 839 MS ( )721 839 MS (l)735 839 MS (a)748 839 MS ( )770 839 MS (c)783 839 MS (o)805 839 MS (n)831 839 MS
+(s)856 839 MS (t)875 839 MS (r)890 839 MS (u)907 839 MS (c)932 839 MS (t)953 839 MS (i)968 839 MS (o)980 839 MS (n)1006 839 MS ( )1031 839 MS (d)1044 839 MS (\222)1069 839 MS (u)1085 839 MS (n)1111 839 MS ( )1136 839 MS (e)1149 839 MS
+(n)1172 839 MS (v)1197 839 MS (i)1222 839 MS (r)1235 839 MS (o)1253 839 MS (n)1279 839 MS (n)1303 839 MS (e)1327 839 MS (m)1350 839 MS (e)1388 839 MS (n)1411 839 MS (t)1435 839 MS ( )1450 839 MS (d)1463 839 MS (e)1488 839 MS ( )1510 839 MS
+(s)1524 839 MS (i)1544 839 MS (m)1557 839 MS (u)1595 839 MS (l)1621 839 MS (a)1634 839 MS (t)1656 839 MS (i)1672 839 MS (o)1684 839 MS (n)1710 839 MS ( )1735 839 MS (b)1749 839 MS (a)1773 839 MS (s)1795 839 MS (\351)1815 839 MS ( )1837 839 MS
+(s)1851 839 MS (u)1870 839 MS (r)1895 839 MS ( )1912 839 MS (u)1925 839 MS (n)1951 839 MS (e)1975 839 MS ( )1997 839 MS (p)2010 839 MS (l)2036 839 MS (a)2049 839 MS (t)2071 839 MS (e)2086 839 MS
+(-)2108 839 MS
+(f)235 897 MS (o)250 897 MS (r)276 897 MS (m)294 897 MS (e)331 897 MS ( )353 897 MS (d)387 897 MS (\222)413 897 MS (a)429 897 MS (c)451 897 MS (c)473 897 MS (u)495 897 MS (e)520 897 MS (i)543 897 MS (l)557 897 MS ( )570 897 MS
+(d)604 897 MS (e)629 897 MS ( )651 897 MS (c)685 897 MS (o)707 897 MS (m)734 897 MS (p)771 897 MS (o)796 897 MS (s)822 897 MS (a)841 897 MS (n)863 897 MS (t)887 897 MS (s)902 897 MS ( )921 897 MS (l)956 897 MS (o)968 897 MS
+(g)994 897 MS (i)1020 897 MS (c)1032 897 MS (i)1055 897 MS (e)1068 897 MS (l)1091 897 MS (s)1104 897 MS ( )1123 897 MS ([)1157 897 MS (7)1174 897 MS (])1199 897 MS (,)1216 897 MS ( )1229 897 MS (a)1263 897 MS (v)1285 897 MS (e)1309 897 MS
+(c)1331 897 MS ( )1353 897 MS (u)1387 897 MS (n)1413 897 MS ( )1437 897 MS (m)1472 897 MS (o)1509 897 MS (d)1535 897 MS (\350)1560 897 MS (l)1583 897 MS (e)1596 897 MS ( )1618 897 MS (c)1652 897 MS (o)1674 897 MS (m)1700 897 MS (m)1738 897 MS
+(u)1776 897 MS (n)1802 897 MS ( )1826 897 MS (d)1860 897 MS (e)1885 897 MS
+(s)1907 897 MS ( )1926 897 MS (d)1960 897 MS (o)1985 897 MS (n)2011 897 MS (n)2036 897 MS (\351)2060 897 MS (e)2082 897 MS (s)2105 897 MS ( )2125 897 MS
+(\351)235 954 MS (c)257 954 MS (h)279 954 MS (a)304 954 MS (n)327 954 MS (g)351 954 MS (\351)376 954 MS (e)398 954 MS (s)420 954 MS
+( )439 954 MS
+(:)452 954 MS ( )466 954 MS (c)482 954 MS (\222)504 954 MS (e)521 954 MS (s)543 954 MS (t)562 954 MS ( )577 954 MS (l)594 954 MS (e)606 954 MS ( )628 954 MS (p)644 954 MS (r)669 954 MS (o)686 954 MS (j)712 954 MS (e)724 954 MS
+(t)746 954 MS ( )761 954 MS (S)777 954 MS (A)805 954 MS (L)840 954 MS (O)871 954 MS (M)907 954 MS (E)951 954 MS ( )982 954 MS ([)998 954 MS (1)1015 954 MS (])1040 954 MS (.)1057 954 MS ( )1070 954 MS (L)1086 954 MS (e)1116 954 MS
+(s)1138 954 MS ( )1157 954 MS (n)1173 954 MS (o)1197 954 MS (u)1223 954 MS (v)1248 954 MS (e)1272 954 MS (l)1295 954 MS (l)1309 954 MS (e)1322 954 MS (s)1345 954 MS ( )1364 954 MS (a)1380 954 MS (p)1402 954 MS (p)1427 954 MS (l)1453 954 MS
+(i)1466 954 MS (c)1479 954 MS (a)1502 954 MS (t)1524 954 MS (i)1540 954 MS (o)1552 954 MS (n)1578 954 MS (s)1602 954 MS ( )1621 954 MS (d)1637 954 MS (o)1662 954 MS (i)1689 954 MS (v)1702 954 MS (e)1726 954 MS (n)1749 954 MS (t)1773 954 MS
+( )1788 954 MS (p)1804 954 MS (o)1829 954 MS (u)1855 954 MS (v)1880 954 MS (o)1903 954 MS (i)1929 954 MS (r)1941 954 MS ( )1958 954 MS (s)1974 954 MS (i)1994 954 MS (m)2008 954 MS (u)2046 954 MS (l)2072 954 MS (e)2085 954 MS (r)2107 954 MS
+( )2125 954 MS
+(p)235 1012 MS (l)261 1012 MS (u)273 1012 MS (s)298 1012 MS ( )317 1012 MS (f)343 1012 MS (i)360 1012 MS (n)373 1012 MS (e)398 1012 MS (m)421 1012 MS (e)459 1012 MS (n)482 1012 MS (t)506 1012 MS ( )521 1012 MS (d)546 1012 MS (e)571 1012 MS
+(s)593 1012 MS ( )612 1012 MS (p)637 1012 MS (h)662 1012 MS (\351)686 1012 MS (n)709 1012 MS (o)733 1012 MS (m)760 1012 MS (\350)797 1012 MS (n)820 1012 MS (e)844 1012 MS (s)867 1012 MS ( )886 1012 MS (p)911 1012 MS (l)937 1012 MS (u)950 1012 MS
+(s)975 1012 MS ( )994 1012 MS (c)1019 1012 MS (o)1041 1012 MS (m)1068 1012 MS (p)1105 1012 MS (l)1131 1012 MS (e)1144 1012 MS (x)1167 1012 MS (e)1191 1012 MS (s)1214 1012 MS ( )1233 1012 MS (e)1258 1012 MS (n)1280 1012 MS ( )1304 1012 MS (t)1329 1012 MS
+(a)1344 1012 MS (i)1367 1012 MS (l)1380 1012 MS (l)1394 1012 MS (e)1407 1012 MS ( )1429 1012 MS (e)1454 1012 MS (t)1476 1012 MS ( )1491 1012 MS (e)1516 1012 MS (n)1538 1012 MS ( )1562 1012 MS (c)1587 1012 MS (o)1609 1012 MS (u)1635 1012 MS (p)1660 1012 MS
+(l)1686 1012 MS (a)1698 1012 MS (g)1720 1012 MS (e)1745 1012 MS (s)1767 1012 MS ( )1786 1012 MS (p)1811 1012 MS (h)1837 1012 MS (y)1862 1012 MS (s)1886 1012 MS (i)1906 1012 MS (q)1919 1012 MS (u)1944 1012 MS (e)1970 1012 MS (s)1992 1012 MS (.)2011 1012 MS
+( )2024 1012 MS (C)2049 1012 MS (e)2082 1012 MS (s)2105 1012 MS ( )2125 1012 MS
+(a)235 1069 MS (p)257 1069 MS (p)282 1069 MS (l)308 1069 MS (i)321 1069 MS (c)334 1069 MS (a)356 1069 MS (t)378 1069 MS (i)394 1069 MS (o)406 1069 MS (n)432 1069 MS (s)457 1069 MS ( )476 1069 MS (d)499 1069 MS (o)524 1069 MS (i)550 1069 MS
+(v)563 1069 MS (e)588 1069 MS (n)611 1069 MS (t)635 1069 MS ( )650 1069 MS (a)673 1069 MS (u)695 1069 MS (s)720 1069 MS (s)739 1069 MS (i)759 1069 MS ( )771 1069 MS (t)794 1069 MS (i)810 1069 MS (r)822 1069 MS (e)839 1069 MS (r)861 1069 MS
+( )878 1069 MS (l)902 1069 MS (e)914 1069 MS ( )936 1069 MS (m)960 1069 MS (e)998 1069 MS (i)1021 1069 MS (l)1035 1069 MS (l)1049 1069 MS (e)1062 1069 MS (u)1084 1069 MS (r)1109 1069 MS ( )1126 1069 MS (p)1149 1069 MS (a)1174 1069 MS (r)1196 1069 MS
+(t)1213 1069 MS (i)1228 1069 MS ( )1241 1069 MS (d)1264 1069 MS (e)1289 1069 MS (s)1311 1069 MS ( )1330 1069 MS (p)1353 1069 MS (e)1378 1069 MS (r)1400 1069 MS (f)1418 1069 MS (o)1433 1069 MS (r)1459 1069 MS (m)1476 1069 MS (a)1514 1069 MS (n)1537 1069 MS
+(c)1561 1069 MS (e)1583 1069 MS (s)1605 1069 MS ( )1624 1069 MS (d)1647 1069 MS (e)1672 1069 MS
+(s)1695 1069 MS ( )1714 1069 MS (m)1738 1069 MS (a)1776 1069 MS (c)1798 1069 MS (h)1821 1069 MS (i)1846 1069 MS (n)1859 1069 MS (e)1884 1069 MS (s)1907 1069 MS ( )1926 1069 MS (a)1949 1069 MS (c)1971 1069 MS (t)1993 1069 MS (u)2008 1069 MS (e)2033 1069 MS
+(l)2056 1069 MS (l)2069 1069 MS (e)2082 1069 MS (s)2105 1069 MS ( )2125 1069 MS
+(\()235 1127 MS (c)252 1127 MS (a)274 1127 MS (l)297 1127 MS (c)309 1127 MS (u)331 1127 MS (l)357 1127 MS (a)370 1127 MS (t)392 1127 MS (e)407 1127 MS (u)429 1127 MS (r)454 1127 MS ( )471 1127 MS (m)488 1127 MS (a)525 1127 MS (s)548 1127 MS
+(s)567 1127 MS (i)587 1127 MS (v)600 1127 MS (e)625 1127 MS (m)648 1127 MS (e)686 1127 MS (n)709 1127 MS (t)733 1127 MS ( )748 1127 MS (p)764 1127 MS (a)789 1127 MS (r)811 1127 MS (a)828 1127 MS (l)851 1127 MS (l)864 1127 MS (\350)877 1127 MS
+(l)901 1127 MS (e)914 1127 MS (,)936 1127 MS ( )949 1127 MS (c)965 1127 MS (l)988 1127 MS (u)1001 1127 MS (s)1026 1127 MS (t)1045 1127 MS (e)1060 1127 MS (r)1082 1127 MS ( )1099 1127 MS (d)1115 1127 MS (e)1140 1127 MS ( )1162 1127 MS (P)1178 1127 MS
+(C)1206 1127 MS (,)1239 1127 MS ( )1252 1127 MS (e)1268 1127 MS (t)1290 1127 MS (c)1305 1127 MS (.)1327 1127 MS (\))1340 1127 MS (.)1356 1127 MS ( )1369 1127 MS (L)1385 1127 MS (\222)1415 1127 MS (i)1432 1127 MS (n)1445 1127 MS (t)1469 1127 MS (\351)1484 1127 MS
+(g)1506 1127 MS (r)1531 1127 MS (a)1548 1127 MS (t)1570 1127 MS (i)1585 1127 MS (o)1597 1127 MS (n)1623 1127 MS ( )1648 1127 MS (d)1664 1127 MS (e)1689 1127 MS (s)1711 1127 MS ( )1731 1127 MS (c)1747 1127 MS (o)1769 1127 MS (d)1795 1127 MS (e)1820 1127 MS
+(s)1842 1127 MS ( )1861 1127 MS (d)1877 1127 MS (e)1902 1127 MS ( )1924 1127 MS (c)1941 1127 MS (a)1963 1127 MS (l)1986 1127 MS (c)1999 1127 MS (u)2021 1127 MS (l)2047 1127 MS ( )2060 1127 MS (d)2076 1127 MS (e)2102 1127 MS ( )2125 1127 MS
+(l)235 1184 MS (a)248 1184 MS ( )270 1184 MS (D)291 1184 MS (E)327 1184 MS (N)358 1184 MS (,)394 1184 MS ( )407 1184 MS (d)428 1184 MS (o)453 1184 MS (n)479 1184 MS (t)503 1184 MS ( )518 1184 MS (c)539 1184 MS (e)561 1184 MS (r)583 1184 MS
+(t)599 1184 MS (a)614 1184 MS (i)636 1184 MS (n)649 1184 MS (s)673 1184 MS ( )692 1184 MS (s)713 1184 MS (o)732 1184 MS (n)758 1184 MS (t)782 1184 MS ( )797 1184 MS (p)818 1184 MS (a)843 1184 MS (r)865 1184 MS (a)882 1184 MS (l)905 1184 MS
+(l)918 1184 MS (\350)931 1184 MS (l)954 1184 MS (e)967 1184 MS (s)990 1184 MS (,)1009 1184 MS ( )1022 1184 MS (d)1043 1184 MS (a)1068 1184 MS (n)1090 1184 MS (s)1115 1184 MS ( )1134 1184 MS (l)1156 1184 MS (\222)1169 1184 MS (e)1185 1184 MS (n)1208 1184 MS
+(v)1233 1184 MS (i)1258 1184 MS (r)1271 1184 MS (o)1288 1184 MS (n)1314 1184 MS (n)1339 1184 MS (e)1363 1184 MS (m)1386 1184 MS (e)1424 1184 MS (n)1447 1184 MS (t)1471 1184 MS ( )1486 1184 MS (S)1507 1184 MS (A)1535 1184 MS (L)1570 1184 MS (O)1600 1184 MS
+(M)1637 1184 MS (E)1681 1184 MS ( )1712 1184 MS (e)1733 1184 MS (x)1755 1184 MS (i)1780 1184 MS (g)1793 1184 MS (e)1818 1184 MS ( )1840 1184 MS (l)1862 1184 MS (a)1875 1184 MS ( )1897 1184 MS (p)1918 1184 MS (o)1943 1184 MS (s)1969 1184 MS (s)1988 1184 MS
+(i)2008 1184 MS (b)2021 1184 MS (i)2047 1184 MS (l)2060 1184 MS (i)2074 1184 MS (t)2086 1184 MS (\351)2102 1184 MS ( )2125 1184 MS
+(d)235 1242 MS (\222)260 1242 MS (i)277 1242 MS (n)290 1242 MS (t)314 1242 MS (r)329 1242 MS (o)346 1242 MS (d)372 1242 MS (u)397 1242 MS (i)422 1242 MS (r)434 1242 MS (e)451 1242 MS ( )473 1242 MS (d)486 1242 MS (a)511 1242 MS (n)533 1242 MS
+(s)558 1242 MS ( )577 1242 MS (c)590 1242 MS (e)612 1242 MS (t)634 1242 MS (t)649 1242 MS (e)664 1242 MS ( )685 1242 MS (p)698 1242 MS (l)723 1242 MS (a)735 1242 MS (t)757 1242 MS (e)772 1242 MS
+(-)794 1242 MS
+(f)812 1242 MS (o)827 1242 MS (r)853 1242 MS (m)870 1242 MS (e)907 1242 MS ( )929 1242 MS (l)943 1242 MS (a)956 1242 MS ( )978 1242 MS (n)991 1242 MS (o)1015 1242 MS (t)1041 1242 MS (i)1056 1242 MS (o)1068 1242 MS (n)1094 1242 MS ( )1118 1242 MS
+(d)1131 1242 MS (e)1156 1242 MS ( )1178 1242 MS (c)1191 1242 MS (o)1213 1242 MS (m)1239 1242 MS
+(p)1277 1242 MS (o)1302 1242 MS (s)1328 1242 MS (a)1347 1242 MS (n)1370 1242 MS (t)1394 1242 MS (s)1409 1242 MS ( )1428 1242 MS (p)1441 1242 MS (a)1466 1242 MS (r)1488 1242 MS (a)1505 1242 MS (l)1527 1242 MS (l)1540 1242 MS (\350)1553 1242 MS (l)1576 1242 MS
+(e)1589 1242 MS (s)1612 1242 MS (.)1631 1242 MS
+( )1644 1242 MS
+( )348 1299 MS
+( )361 1299 MS
+(D)348 1357 MS (a)384 1357 MS (n)406 1357 MS (s)431 1357 MS ( )450 1357 MS (S)489 1357 MS (A)517 1357 MS (L)553 1357 MS (O)583 1357 MS (M)619 1357 MS (E)663 1357 MS ( )694 1357 MS (c)733 1357 MS (e)755 1357 MS ( )777 1357 MS (c)816 1357 MS
+(o)838 1357 MS (m)865 1357 MS (p)902 1357 MS (o)927 1357 MS (s)953 1357 MS (a)972 1357 MS (n)994 1357 MS (t)1018 1357 MS ( )1033 1357 MS (p)1072 1357 MS (a)1097 1357 MS (r)1119 1357 MS (a)1136 1357 MS (l)1159 1357 MS (l)1172 1357 MS (\350)1185 1357 MS
+(l)1208 1357 MS (e)1221 1357 MS ( )1243 1357 MS (d)1282 1357 MS (e)1307 1357 MS (v)1330 1357 MS (r)1354 1357 MS (a)1371 1357 MS ( )1393 1357 MS (p)1432 1357 MS (o)1457 1357 MS (u)1483 1357 MS (v)1508 1357 MS (o)1532 1357 MS (i)1558 1357 MS (r)1570 1357 MS
+( )1587 1357 MS (i)1627 1357 MS (n)1640 1357 MS (t)1664 1357 MS (e)1679 1357 MS (r)1701 1357 MS (a)1718 1357 MS (g)1740 1357 MS (i)1766 1357 MS (r)1778 1357 MS ( )1795 1357 MS (a)1834 1357 MS (v)1856 1357 MS (e)1880 1357 MS (c)1902 1357 MS ( )1924 1357 MS
+(d)1963 1357 MS (\222)1989 1357 MS (a)2005 1357 MS (u)2027 1357 MS (t)2052 1357 MS (r)2067 1357 MS (e)2084 1357 MS (s)2106 1357 MS ( )2125 1357 MS
+(c)235 1414 MS (o)257 1414 MS (m)283 1414 MS (p)320 1414 MS (o)345 1414 MS (s)371 1414 MS (a)390 1414 MS (n)413 1414 MS (t)437 1414 MS (s)452 1414 MS ( )471 1414 MS (q)485 1414 MS (u)510 1414 MS (\222)535 1414 MS (i)552 1414 MS (l)566 1414 MS
+(s)579 1414 MS ( )598 1414 MS (s)613 1414 MS (o)632 1414 MS (i)659 1414 MS (e)671 1414 MS (n)694 1414 MS (t)718 1414 MS ( )733 1414 MS (s)747 1414 MS (\351)766 1414 MS (q)788 1414 MS (u)813 1414 MS (e)838 1414 MS (n)861 1414 MS (t)885 1414 MS
+(i)901 1414 MS (e)913 1414 MS (l)936 1414 MS (s)949 1414 MS ( )969 1414 MS (o)983 1414 MS (u)1009 1414 MS ( )1034 1414 MS (p)1048 1414 MS (a)1073 1414 MS (r)1095 1414 MS (a)1112 1414 MS (l)1135 1414 MS (l)1148 1414 MS (\350)1161 1414 MS (l)1184 1414 MS
+(e)1197 1414 MS (s)1219 1414 MS (,)1238 1414 MS ( )1252 1414 MS (c)1266 1414 MS (o)1288 1414 MS
+(-)1314 1414 MS
+(l)1331 1414 MS (o)1343 1414 MS (c)1369 1414 MS (a)1391 1414 MS (l)1414 1414 MS (i)1427 1414 MS (s)1440 1414 MS (\351)1460 1414 MS (s)1482 1414 MS ( )1502 1414 MS (o)1516 1414 MS (u)1542 1414 MS ( )1567 1414 MS (d)1581 1414 MS (i)1607 1414 MS (s)1619 1414 MS
+(t)1638 1414 MS (a)1653 1414 MS (n)1675 1414 MS (t)1699 1414 MS (s)1714 1414 MS (,)1733 1414 MS ( )1746 1414 MS (t)1760 1414 MS (o)1774 1414 MS (u)1800 1414 MS (t)1824 1414 MS ( )1839 1414 MS (e)1853 1414 MS (n)1875 1414 MS ( )1899 1414 MS (o)1913 1414 MS
+(p)1939 1414 MS (t)1964 1414 MS (i)1979 1414 MS (m)1992 1414 MS (i)2030 1414 MS (s)2043 1414 MS (a)2063 1414 MS (n)2086 1414 MS (t)2110 1414 MS ( )2125 1414 MS
+(l)235 1472 MS (e)248 1472 MS (s)271 1472 MS ( )290 1472 MS (c)316 1472 MS (o)338 1472 MS (m)365 1472 MS (m)403 1472 MS (u)441 1472 MS (n)467 1472 MS (i)492 1472 MS (c)505 1472 MS (a)527 1472 MS (t)549 1472 MS (i)565 1472 MS (o)577 1472 MS
+(n)603 1472 MS (s)627 1472 MS ( )647 1472 MS (e)673 1472 MS (t)695 1472 MS ( )710 1472 MS (l)737 1472 MS (\222)750 1472 MS (a)766 1472 MS (l)789 1472 MS (l)803 1472 MS (o)815 1472 MS (c)841 1472 MS (a)863 1472 MS (t)885 1472 MS (i)901 1472 MS
+(o)913 1472 MS (n)939 1472 MS ( )963 1472 MS (m)990 1472 MS (\351)1028 1472 MS (m)1051 1472 MS (o)1088 1472 MS (i)1115 1472 MS (r)1128 1472 MS (e)1145 1472 MS (.)1167 1472 MS ( )1180 1472 MS (S)1206 1472 MS (i)1235 1472 MS ( )1249 1472 MS (l)1276 1472 MS
+(\222)1289 1472 MS (i)1306 1472 MS (n)1319 1472 MS (t)1343 1472 MS (\351)1358 1472 MS (g)1380 1472 MS (r)1405 1472 MS (a)1422 1472 MS (t)1444 1472 MS (i)1460 1472 MS (o)1472 1472 MS (n)1498 1472 MS ( )1522 1472 MS (d)1548 1472 MS (e)1573 1472 MS ( )1596 1472 MS
+(c)1622 1472 MS (o)1644 1472 MS (m)1671 1472 MS (p)1708 1472 MS (o)1733 1472 MS (s)1759 1472 MS (a)1778 1472 MS (n)1800 1472 MS (t)1824 1472 MS (s)1839 1472 MS ( )1858 1472 MS (p)1884 1472 MS (a)1909 1472 MS (r)1931 1472 MS (a)1948 1472 MS (l)1971 1472 MS
+(l)1985 1472 MS (\350)1998 1472 MS (l)2021 1472 MS (e)2034 1472 MS (s)2056 1472 MS ( )2076 1472 MS (\340)2102 1472 MS ( )2125 1472 MS
+(m)235 1529 MS (\351)273 1529 MS (m)296 1529 MS (o)333 1529 MS (i)360 1529 MS (r)372 1529 MS (e)390 1529 MS ( )412 1529 MS (p)431 1529 MS (a)456 1529 MS (r)478 1529 MS (t)495 1529 MS (a)510 1529 MS (g)532 1529 MS (\351)557 1529 MS (e)579 1529 MS
+( )601 1529 MS (\()620 1529 MS (u)637 1529 MS (t)661 1529 MS (i)676 1529 MS (l)689 1529 MS (i)703 1529 MS (s)716 1529 MS (a)735 1529 MS (n)758 1529 MS (t)782 1529 MS ( )797 1529 MS (p)816 1529 MS (a)841 1529 MS (r)863 1529 MS ( )880 1529 MS
+(e)899 1529 MS (x)921 1529 MS (e)945 1529 MS (m)968 1529 MS (p)1006 1529 MS (l)1032 1529 MS (e)1045 1529 MS ( )1067 1529 MS (O)1086 1529 MS (p)1122 1529 MS (e)1147 1529 MS (n)1170 1529 MS (M)1194 1529 MS (P)1239 1529 MS (\))1267 1529 MS (,)1284 1529 MS
+( )1297 1529 MS (n)1316 1529 MS (e)1340 1529 MS ( )1362 1529 MS (p)1381 1529 MS (o)1406 1529 MS (s)1432 1529 MS (e)1451 1529 MS ( )1473 1529 MS (p)1492 1529 MS (a)1517 1529 MS (s)1539 1529 MS ( )1558 1529 MS (d)1577 1529 MS (e)1602 1529 MS ( )1624 1529 MS
+(p)1643 1529 MS (r)1668 1529 MS (o)1684 1529 MS (b)1710 1529 MS (l)1735 1529 MS (\350)1747 1529 MS (m)1770 1529 MS (e)1808 1529 MS ( )1830 1529 MS (s)1849 1529 MS (p)1868 1529 MS (\351)1894 1529 MS (c)1916 1529 MS (i)1939 1529 MS (f)1952 1529 MS (i)1969 1529 MS
+(q)1982 1529 MS (u)2007 1529 MS (e)2032 1529 MS ( )2054 1529 MS (d)2073 1529 MS (u)2099 1529 MS ( )2125 1529 MS
+(f)235 1586 MS (a)251 1586 MS (i)274 1586 MS (t)286 1586 MS ( )301 1586 MS (d)315 1586 MS (e)340 1586 MS ( )362 1586 MS (l)377 1586 MS (a)389 1586 MS ( )411 1586 MS (l)426 1586 MS (o)438 1586 MS (c)464 1586 MS (a)487 1586 MS (l)510 1586 MS
+(i)523 1586 MS (s)536 1586 MS (a)556 1586 MS (t)578 1586 MS (i)594 1586 MS (o)606 1586 MS (n)632 1586 MS ( )656 1586 MS (d)670 1586 MS (u)695 1586 MS ( )720 1586 MS (p)734 1586 MS (a)759 1586 MS (r)781 1586 MS (a)798 1586 MS (l)821 1586 MS
+(l)834 1586 MS (\351)847 1586 MS (l)870 1586 MS (i)884 1586 MS (s)897 1586 MS (m)917 1586 MS (e)955 1586 MS ( )977 1586 MS (d)991 1586 MS (a)1017 1586 MS (n)1040 1586 MS (s)1064 1586 MS ( )1083 1586 MS (d)1097 1586 MS (e)1122 1586 MS (s)1145 1586 MS
+( )1164 1586 MS (r)1178 1586 MS (\351)1195 1586 MS (g)1217 1586 MS (i)1243 1586 MS (o)1256 1586 MS (n)1282 1586 MS (s)1306 1586 MS ( )1325 1586 MS (b)1339 1586 MS (i)1364 1586 MS (e)1377 1586 MS (n)1400 1586 MS ( )1424 1586 MS (c)1438 1586 MS (i)1461 1586 MS
+(r)1474 1586 MS (c)1491 1586 MS (o)1513 1586 MS (n)1539 1586 MS (s)1563 1586 MS (c)1583 1586 MS (r)1605 1586 MS (i)1623 1586 MS (t)1635 1586 MS (e)1650 1586 MS (s)1672 1586 MS ( )1691 1586 MS (i)1706 1586 MS (n)1719 1586 MS (t)1743 1586 MS (e)1758 1586 MS
+(r)1780 1586 MS (n)1797 1586 MS (e)1821 1586 MS (s)1844 1586 MS ( )1863 1586 MS (a)1877 1586 MS (u)1899 1586 MS (x)1925 1586 MS ( )1949 1586 MS (s)1963 1586 MS (e)1982 1586 MS (r)2004 1586 MS (v)2022 1586 MS (i)2047 1586 MS (c)2060 1586 MS (e)2082 1586 MS
+(s)2105 1586 MS ( )2125 1586 MS
+(d)235 1644 MS (u)260 1644 MS ( )285 1644 MS (c)302 1644 MS (o)324 1644 MS (m)350 1644 MS (p)387 1644 MS (o)412 1644 MS (s)438 1644 MS (a)457 1644 MS (n)480 1644 MS (t)504 1644 MS (,)519 1644 MS ( )532 1644 MS (i)549 1644 MS (l)562 1644 MS
+( )575 1644 MS (n)593 1644 MS (\222)618 1644 MS (e)634 1644 MS (n)657 1644 MS ( )681 1644 MS (v)699 1644 MS (a)723 1644 MS ( )745 1644 MS (p)762 1644 MS (a)787 1644 MS (s)810 1644 MS ( )829 1644 MS (d)846 1644 MS (e)871 1644 MS ( )893 1644 MS
+(m)911 1644 MS (\352)949 1644 MS (m)972 1644 MS (e)1010 1644 MS ( )1032 1644 MS (p)1049 1644 MS (o)1074 1644 MS (u)1100 1644 MS (r)1125 1644 MS ( )1142 1644 MS (l)1160 1644 MS (e)1172 1644 MS (s)1195 1644 MS ( )1214 1644 MS (c)1231 1644 MS
+(o)1254 1644 MS (m)1280 1644 MS (p)1317 1644 MS (o)1342 1644 MS (s)1368 1644 MS (a)1387 1644 MS (n)1410 1644 MS (t)1434 1644 MS (s)1449 1644 MS ( )1468 1644 MS (p)1485 1644 MS (a)1510 1644 MS (r)1532 1644 MS (a)1549 1644 MS (l)1572 1644 MS (l)1585 1644 MS
+(\350)1598 1644 MS (l)1621 1644 MS (e)1634 1644 MS (s)1656 1644 MS ( )1676 1644 MS (\340)1693 1644 MS ( )1715 1644 MS (m)1733 1644 MS (\351)1771 1644 MS (m)1794 1644 MS (o)1831 1644 MS (i)1858 1644 MS (r)1870 1644 MS (e)1887 1644 MS ( )1910 1644 MS (d)1927 1644 MS
+(i)1953 1644 MS (s)1966 1644 MS (t)1985 1644 MS (r)2000 1644 MS (i)2017 1644 MS (b)2030 1644 MS (u)2054 1644 MS (\351)2080 1644 MS (e)2102 1644 MS ( )2125 1644 MS
+(\()235 1701 MS (u)252 1701 MS (t)277 1701 MS (i)292 1701 MS (l)305 1701 MS (i)318 1701 MS (s)331 1701 MS (a)351 1701 MS (n)374 1701 MS (t)398 1701 MS ( )413 1701 MS (p)426 1701 MS (a)451 1701 MS (r)473 1701 MS ( )490 1701 MS (e)503 1701 MS
+(x)525 1701 MS (e)549 1701 MS (m)572 1701 MS (p)609 1701 MS (l)635 1701 MS (e)648 1701 MS ( )670 1701 MS (M)683 1701 MS (P)727 1701 MS (I)755 1701 MS (\))772 1701 MS (.)789 1701 MS
+( )802 1701 MS
+( )348 1759 MS
+(L)348 1816 MS (a)378 1816 MS ( )400 1816 MS (c)421 1816 MS (o)443 1816 MS (u)469 1816 MS (c)494 1816 MS (h)516 1816 MS (e)540 1816 MS ( )562 1816 MS (l)584 1816 MS (o)596 1816 MS (g)622 1816 MS (i)648 1816 MS (c)661 1816 MS (i)684 1816 MS
+(e)697 1816 MS (l)720 1816 MS (l)734 1816 MS (e)747 1816 MS ( )769 1816 MS (d)790 1816 MS (e)815 1816 MS ( )837 1816 MS (c)858 1816 MS (o)880 1816 MS (m)907 1816 MS (m)945 1816 MS (u)983 1816 MS (n)1009 1816 MS (i)1034 1816 MS (c)1047 1816 MS
+(a)1069 1816 MS (t)1091 1816 MS (i)1107 1816 MS (o)1119 1816 MS (n)1145 1816 MS ( )1169 1816 MS (e)1190 1816 MS (n)1213 1816 MS (t)1237 1816 MS (r)1252 1816 MS (e)1269 1816 MS ( )1291 1816 MS (c)1312 1816 MS (o)1334 1816 MS (m)1359 1816 MS (p)1397 1816 MS
+(o)1422 1816 MS (s)1448 1816 MS (a)1467 1816 MS (n)1490 1816 MS (t)1514 1816 MS (s)1529 1816 MS ( )1548 1816 MS (c)1569 1816 MS (h)1591 1816 MS (o)1615 1816 MS (i)1642 1816 MS (s)1654 1816 MS (i)1674 1816 MS (e)1687 1816 MS ( )1709 1816 MS (d)1730 1816 MS
+(a)1755 1816 MS (n)1778 1816 MS (s)1803 1816 MS ( )1822 1816 MS (S)1843 1816 MS (A)1872 1816 MS (L)1907 1816 MS (O)1937 1816 MS (M)1974 1816 MS (E)2018 1816 MS ( )2049 1816 MS (e)2070 1816 MS (s)2092 1816 MS (t)2111 1816 MS ( )2125 1816 MS
+(C)235 1874 MS (O)268 1874 MS (R)304 1874 MS (B)337 1874 MS (A)371 1874 MS ( )406 1874 MS ([)420 1874 MS (2)437 1874 MS (])462 1874 MS (,)479 1874 MS ( )492 1874 MS ([)506 1874 MS (3)523 1874 MS (])548 1874 MS (.)565 1874 MS ( )578 1874 MS
+(M)592 1874 MS (a)636 1874 MS (l)659 1874 MS (h)672 1874 MS (e)696 1874 MS (u)718 1874 MS (r)743 1874 MS (e)760 1874 MS (u)782 1874 MS (s)807 1874 MS (e)827 1874 MS (m)850 1874 MS (e)888 1874 MS (n)911 1874 MS (t)935 1874 MS (,)950 1874 MS
+( )963 1874 MS (l)977 1874 MS (a)989 1874 MS ( )1012 1874 MS (n)1027 1874 MS (o)1051 1874 MS (r)1077 1874 MS (m)1094 1874 MS (e)1131 1874 MS ( )1154 1874 MS (C)1168 1874 MS (O)1201 1874 MS (R)1238 1874 MS (B)1271 1874 MS (A)1305 1874 MS ( )1340 1874 MS
+(a)1354 1874 MS (c)1376 1874 MS (t)1398 1874 MS (u)1413 1874 MS (e)1438 1874 MS (l)1461 1874 MS (l)1474 1874 MS (e)1487 1874 MS ( )1510 1874 MS (\()1524 1874 MS (V)1541 1874 MS (2)1577 1874 MS (\))1602 1874 MS (,)1619 1874 MS ( )1632 1874 MS (n)1646 1874 MS
+(e)1670 1874 MS ( )1692 1874 MS (p)1706 1874 MS (r)1731 1874 MS (e)1748 1874 MS (n)1771 1874 MS (d)1795 1874 MS ( )1820 1874 MS (p)1834 1874 MS (a)1859 1874 MS (s)1882 1874 MS ( )1901 1874 MS (e)1915 1874 MS (n)1938 1874 MS ( )1963 1874 MS (c)1977 1874 MS
+(o)1999 1874 MS (m)2026 1874 MS (p)2063 1874 MS (t)2088 1874 MS (e)2103 1874 MS ( )2125 1874 MS
+(l)235 1931 MS (e)248 1931 MS ( )270 1931 MS (p)298 1931 MS (a)323 1931 MS (r)345 1931 MS (a)362 1931 MS (l)385 1931 MS (l)399 1931 MS (\351)412 1931 MS (l)435 1931 MS (i)449 1931 MS (s)462 1931 MS (m)482 1931 MS (e)520 1931 MS ( )542 1931 MS
+(\340)571 1931 MS ( )593 1931 MS (m)622 1931 MS
+(\351)660 1931 MS (m)683 1931 MS (o)720 1931 MS (i)747 1931 MS (r)759 1931 MS (e)776 1931 MS ( )798 1931 MS (d)826 1931 MS (i)852 1931 MS (s)865 1931 MS (t)884 1931 MS (r)899 1931 MS (i)917 1931 MS (b)930 1931 MS (u)954 1931 MS (\351)979 1931 MS
+(e)1002 1931 MS (.)1024 1931 MS ( )1037 1931 MS (I)1065 1931 MS (l)1083 1931 MS ( )1095 1931 MS (e)1123 1931 MS (s)1145 1931 MS (t)1164 1931 MS ( )1179 1931 MS (d)1207 1931 MS (o)1232 1931 MS (n)1257 1931 MS (c)1281 1931 MS ( )1303 1931 MS (n)1332 1931 MS
+(\351)1356 1931 MS (c)1379 1931 MS (e)1401 1931 MS (s)1423 1931 MS (s)1443 1931 MS (a)1462 1931 MS (i)1485 1931 MS (r)1497 1931 MS (e)1515 1931 MS ( )1537 1931 MS (d)1565 1931 MS (e)1590 1931 MS ( )1612 1931 MS (r)1640 1931 MS (\351)1657 1931 MS (u)1679 1931 MS
+(s)1704 1931 MS (s)1724 1931 MS (i)1744 1931 MS (r)1756 1931 MS ( )1773 1931 MS (l)1802 1931 MS (\222)1815 1931 MS (i)1833 1931 MS (n)1846 1931 MS (t)1870 1931 MS (\351)1885 1931 MS (g)1907 1931 MS (r)1932 1931 MS (a)1949 1931 MS (t)1971 1931 MS (i)1986 1931 MS
+(o)1998 1931 MS (n)2024 1931 MS ( )2048 1931 MS (d)2076 1931 MS (e)2102 1931 MS ( )2125 1931 MS
+(c)235 1989 MS (o)257 1989 MS (m)283 1989 MS (p)320 1989 MS (o)345 1989 MS (s)371 1989 MS (a)390 1989 MS (n)413 1989 MS (t)437 1989 MS (s)452 1989 MS ( )471 1989 MS (p)499 1989 MS (a)524 1989 MS (r)546 1989 MS (a)563 1989 MS (l)586 1989 MS
+(l)599 1989 MS (\350)612 1989 MS (l)635 1989 MS (e)648 1989 MS (s)671 1989 MS ( )690 1989 MS (\340)719 1989 MS ( )741 1989 MS (m)770 1989 MS (\351)808 1989 MS (m)831 1989 MS (o)868 1989 MS (i)895 1989 MS (r)908 1989 MS (e)925 1989 MS ( )947 1989 MS
+(d)975 1989 MS (i)1001 1989 MS (s)1014 1989 MS (t)1033 1989 MS (r)1048 1989 MS (i)1066 1989 MS (b)1079 1989 MS (u)1103 1989 MS (\351)1128 1989 MS (e)1150 1989 MS ( )1173 1989 MS (d)1201 1989 MS (a)1226 1989 MS (n)1249 1989 MS (s)1273 1989 MS ( )1293 1989 MS
+(S)1321 1989 MS (A)1350 1989 MS (L)1385 1989 MS (O)1415 1989 MS (M)1452 1989 MS (E)1496 1989 MS ( )1527 1989 MS (e)1555 1989 MS (n)1578 1989 MS ( )1602 1989 MS (u)1630 1989 MS (t)1655 1989 MS (i)1671 1989 MS (l)1684 1989 MS (i)1698 1989 MS (s)1711 1989 MS
+(a)1731 1989 MS (n)1754 1989 MS (t)1778 1989 MS ( )1793 1989 MS (u)1821 1989 MS (n)1846 1989 MS ( )1870 1989 MS (l)1899 1989 MS (o)1911 1989 MS (g)1937 1989 MS (i)1963 1989 MS (c)1976 1989 MS (i)1999 1989 MS (e)2012 1989 MS (l)2035 1989 MS ( )2048 1989 MS
+(d)2077 1989 MS (e)2102 1989 MS ( )2125 1989 MS
+(\253)235 2046 MS
+( )259 2046 MS
+(m)273 2046 MS (i)311 2046 MS (d)324 2046 MS (d)349 2046 MS (l)375 2046 MS (e)388 2046 MS (w)410 2046 MS (a)447 2046 MS (r)469 2046 MS (e)486 2046 MS
+( )508 2046 MS
+(\273)521 2046 MS ( )545 2046 MS (C)558 2046 MS (O)591 2046 MS (R)627 2046 MS (B)661 2046 MS (A)695 2046 MS ( )730 2046 MS (\()743 2046 MS (O)760 2046 MS (R)796 2046 MS (B)829 2046 MS (\))862 2046 MS ( )879 2046 MS (s)892 2046 MS (\351)911 2046 MS
+(q)933 2046 MS (u)958 2046 MS (e)983 2046 MS (n)1006 2046 MS (t)1030 2046 MS (i)1045 2046 MS (e)1058 2046 MS (l)1081 2046 MS (.)1093 2046 MS ( )1106 2046 MS
+( )1119 2046 MS
+( )348 2104 MS
+(O)348 2161 MS (n)384 2161 MS ( )408 2161 MS (s)423 2161 MS (e)442 2161 MS ( )464 2161 MS (p)478 2161 MS (r)503 2161 MS (o)520 2161 MS (p)546 2161 MS (o)570 2161 MS (s)596 2161 MS (e)615 2161 MS ( )637 2161 MS (d)651 2161 MS (e)676 2161 MS
+( )698 2161 MS (p)712 2161 MS (r)737 2161 MS (\351)754 2161 MS (s)776 2161 MS (e)795 2161 MS (n)818 2161 MS (t)842 2161 MS (e)857 2161 MS (r)879 2161 MS ( )896 2161 MS (d)910 2161 MS (\222)935 2161 MS (a)951 2161 MS (b)973 2161 MS (o)997 2161 MS
+(r)1023 2161 MS (d)1040 2161 MS ( )1065 2161 MS (l)1080 2161 MS (\222)1092 2161 MS (\351)1109 2161 MS (t)1131 2161 MS (a)1146 2161 MS (t)1168 2161 MS ( )1182 2161 MS (d)1196 2161 MS (e)1221 2161 MS ( )1243 2161 MS (l)1258 2161 MS (\222)1270 2161 MS (a)1286 2161 MS
+(r)1308 2161 MS (t)1325 2161 MS ( )1340 2161 MS (d)1354 2161 MS (e)1379 2161 MS ( )1401 2161 MS (c)1415 2161 MS (e)1437 2161 MS ( )1459 2161 MS (q)1473 2161 MS (u)1498 2161 MS (i)1524 2161 MS ( )1536 2161 MS (s)1551 2161 MS
+(e)1570 2161 MS ( )1592 2161 MS (f)1607 2161 MS (a)1623 2161 MS (i)1646 2161 MS (t)1658 2161 MS ( )1673 2161 MS (d)1687 2161 MS (a)1712 2161 MS (n)1735 2161 MS (s)1759 2161 MS ( )1778 2161 MS (l)1793 2161 MS (e)1806 2161 MS ( )1828 2161 MS (d)1842 2161 MS
+(o)1867 2161 MS (m)1894 2161 MS (a)1931 2161 MS (i)1954 2161 MS (n)1967 2161 MS (e)1992 2161 MS (,)2014 2161 MS ( )2027 2161 MS (p)2041 2161 MS (u)2066 2161 MS (i)2092 2161 MS (s)2105 2161 MS ( )2125 2161 MS
+(d)235 2219 MS (\222)260 2219 MS (i)277 2219 MS (n)290 2219 MS (t)314 2219 MS (r)329 2219 MS (o)346 2219 MS (d)372 2219 MS (u)397 2219 MS (i)422 2219 MS (r)434 2219 MS (e)451 2219 MS ( )473 2219 MS (l)487 2219 MS (a)500 2219 MS ( )522 2219 MS
+(m)536 2219 MS (\351)574 2219 MS (t)596 2219 MS (h)611 2219 MS (o)635 2219 MS (d)661 2219 MS (e)686 2219 MS ( )708 2219 MS (u)721 2219 MS (t)746 2219 MS (i)761 2219 MS (l)774 2219 MS (i)788 2219 MS (s)801 2219 MS (\351)820 2219 MS (e)843 2219 MS
+( )865 2219 MS (d)878 2219 MS (a)903 2219 MS (n)926 2219 MS (s)950 2219 MS ( )969 2219 MS (c)982 2219 MS (e)1005 2219 MS (t)1027 2219 MS (t)1041 2219 MS (e)1056 2219 MS ( )1078 2219 MS (\351)1091 2219 MS (t)1113 2219 MS (u)1128 2219 MS (d)1153 2219 MS
+(e)1178 2219 MS (.)1199 2219 MS ( )1212 2219 MS (L)1225 2219 MS (e)1255 2219 MS (s)1277 2219 MS ( )1296 2219 MS (p)1309 2219 MS (r)1334 2219 MS (i)1352 2219 MS (n)1365 2219 MS (c)1389 2219 MS (i)1412 2219 MS (p)1425 2219 MS (a)1450 2219 MS (u)1472 2219 MS
+(x)1498 2219 MS ( )1523 2219 MS (c)1536 2219 MS (o)1558 2219 MS (n)1584 2219 MS (c)1608 2219 MS (e)1630 2219 MS (p)1652 2219 MS (t)1677 2219 MS (s)1692 2219 MS ( )1711 2219 MS (s)1724 2219 MS (o)1743 2219 MS (n)1769 2219 MS (t)1793 2219 MS ( )1808 2219 MS
+(d)1821 2219 MS (\351)1846 2219 MS (f)1869 2219 MS (i)1885 2219 MS (n)1898 2219 MS (i)1923 2219 MS (s)1936 2219 MS ( )1956 2219 MS (d)1969 2219 MS (a)1994 2219 MS (n)2017 2219 MS (s)2042 2219 MS ( )2061 2219 MS (u)2074 2219 MS (n)2100 2219 MS ( )2125 2219 MS
+(p)235 2276 MS (r)260 2276 MS (e)277 2276 MS (m)300 2276 MS (i)338 2276 MS (e)351 2276 MS (r)373 2276 MS ( )390 2276 MS (t)414 2276 MS (e)429 2276 MS (m)451 2276 MS (p)488 2276 MS (s)514 2276 MS (,)533 2276 MS ( )546 2276 MS (p)570 2276 MS
+(u)595 2276 MS (i)621 2276 MS (s)633 2276 MS ( )652 2276 MS (o)676 2276 MS (n)702 2276 MS ( )726 2276 MS (p)750 2276 MS (r)775 2276 MS (\351)792 2276 MS (s)814 2276 MS (e)833 2276 MS (n)856 2276 MS (t)880 2276 MS (e)895 2276 MS ( )917 2276 MS
+(u)941 2276 MS (n)966 2276 MS ( )990 2276 MS (c)1014 2276 MS (a)1036 2276 MS (s)1058 2276 MS ( )1077 2276 MS (d)1101 2276 MS (\222)1127 2276 MS (u)1143 2276 MS (t)1168 2276 MS (i)1184 2276 MS (l)1197 2276 MS (i)1210 2276 MS (s)1223 2276 MS (a)1244 2276 MS
+(t)1266 2276 MS (i)1281 2276 MS (o)1293 2276 MS (n)1319 2276 MS ( )1343 2276 MS (b)1368 2276 MS (a)1392 2276 MS (s)1414 2276 MS (\351)1434 2276 MS ( )1456 2276 MS (s)1480 2276 MS (u)1499 2276 MS (r)1524 2276 MS ( )1541 2276 MS (l)1566 2276 MS (a)1578 2276 MS
+( )1600 2276 MS (r)1624 2276 MS (\351)1641 2276 MS (s)1663 2276 MS (o)1682 2276 MS (l)1709 2276 MS (u)1721 2276 MS (t)1746 2276 MS (i)1762 2276 MS (o)1774 2276 MS (n)1800 2276 MS ( )1824 2276 MS (d)1848 2276 MS (\222)1873 2276 MS (u)1889 2276 MS (n)1915 2276 MS
+( )1939 2276 MS (s)1963 2276 MS (y)1983 2276 MS (s)2007 2276 MS (t)2026 2276 MS (\350)2041 2276 MS (m)2064 2276 MS (e)2102 2276 MS ( )2125 2276 MS
+(l)235 2334 MS (i)249 2334 MS (n)262 2334 MS (\351)287 2334 MS (a)309 2334 MS (i)332 2334 MS (r)345 2334 MS (e)362 2334 MS ( )384 2334 MS (\340)397 2334 MS ( )419 2334 MS (l)433 2334 MS (\222)446 2334 MS (a)462 2334 MS (i)485 2334 MS (d)498 2334 MS
+(e)523 2334 MS ( )545 2334 MS (d)558 2334 MS (e)583 2334 MS ( )605 2334 MS (l)619 2334 MS (a)631 2334 MS ( )653 2334 MS (b)667 2334 MS (i)692 2334 MS (b)705 2334 MS (l)730 2334 MS (i)744 2334 MS (o)756 2334 MS (t)782 2334 MS (h)797 2334 MS
+(\350)821 2334 MS (q)843 2334 MS (u)868 2334 MS (e)894 2334 MS ( )916 2334 MS (N)929 2334 MS (u)965 2334 MS (m)991 2334 MS (e)1028 2334 MS (r)1050 2334 MS
+(i)1068 2334 MS (c)1081 2334 MS (a)1103 2334 MS (l)1126 2334 MS ( )1139 2334 MS (P)1152 2334 MS (l)1181 2334 MS (a)1193 2334 MS (t)1215 2334 MS (o)1230 2334 MS (n)1255 2334 MS ( )1279 2334 MS ([)1292 2334 MS (8)1309 2334 MS (])1334 2334 MS (.)1351 2334 MS
+( )1364 2334 MS
+showpage
+%%Page: 6 6
+14.449 827.879 translate 72 300 div dup neg scale
+0 0 transform .25 add round .25 sub exch .25 add round .25 sub exch itransform translate
+1 j
+1 setlinecap
+72 sl
+0.375 g
+n
+494 182 M
+494 155 472 133 445 133 c
+418 133 396 155 396 182 c
+396 209 418 231 445 231 c
+472 231 494 209 494 182 c
+cp
+CM 0.156 0.152 scale
+s
+SM
+71 sl
+n
+660 182 M
+660 155 638 133 611 133 c
+584 133 562 155 562 182 c
+562 209 584 231 611 231 c
+638 231 660 209 660 182 c
+cp
+CM 0.156 0.152 scale
+s
+SM
+n
+120 24 468 152 B
+1 g
+f
+1 sl
+n
+122 26 467 151 B
+cp
+s
+71 sl
+0.375 g
+n
+577 180 M
+577 153 555 131 528 131 c
+501 131 479 153 479 180 c
+479 206 501 228 528 228 c
+555 228 577 206 577 180 c
+cp
+gs
+1 g
+e
+gr
+CM 0.156 0.152 scale
+s
+SM
+n
+480 180 M
+575 180 L
+CM 0.156 0.152 scale
+s
+SM
+n
+34 18 562 187 B
+1 g
+f
+1 sl
+n
+36 20 561 186 B
+cp
+s
+n
+610 173 M
+591 173 L
+554 124 L
+579 126 L
+609 173 L
+610 173 L
+cp
+gs
+e
+gr
+s
+n
+448 170 M
+468 170 L
+504 122 L
+479 123 L
+449 170 L
+448 170 L
+cp
+gs
+e
+gr
+s
+0.375 g
+n
+473 140 M
+473 137 470 135 467 135 c
+464 135 462 137 462 140 c
+462 142 464 145 467 145 c
+470 145 473 142 473 140 c
+cp
+gs
+e
+gr
+s
+n
+593 139 M
+593 136 590 134 588 134 c
+585 134 583 136 583 139 c
+583 141 585 144 588 144 c
+590 144 593 141 593 139 c
+cp
+gs
+e
+gr
+s
+72 sl
+n
+665 137 M
+665 229 L
+CM 0.156 0.152 scale
+s
+SM
+[29 0 0 -29 0 0]/Times-Roman MF
+0 g
+( )676 243 MS
+[50 0 0 -50 0 0]/Times-Roman MF
+(D)400 289 MS (E)436 289 MS (N)467 289 MS ( )503 289 MS ( )516 289 MS (S)529 289 MS (a)557 289 MS (c)579 289 MS (l)601 289 MS (a)613 289 MS (y)636 289 MS
+( )660 289 MS
+( )1297 140 MS
+[38 0 0 -38 0 0]/Times-Roman MF
+(S)1785 129 MS (F)1806 129 MS (M)1827 129 MS (E)1861 129 MS (/)1883 129 MS (L)1894 129 MS (G)1916 129 MS (L)1943 129 MS (S)1965 129 MS (/)1986 129 MS (R)1997 129 MS (T)2022 129 MS (/)2045 129 MS (0)2056 129 MS (2)2075 129 MS
+(-)2094 129 MS
+(0)2106 129 MS (0)2125 129 MS (2)2144 129 MS
+( )2163 129 MS
+(D)1785 173 MS (a)1812 173 MS (t)1829 173 MS (e)1840 173 MS
+( )1856 173 MS
+(:)1866 173 MS
+( )1875 173 MS
+(3)1885 173 MS (0)1904 173 MS (/)1923 173 MS (0)1934 173 MS (5)1952 173 MS (/)1971 173 MS (2)1982 173 MS (0)2000 173 MS (0)2019 173 MS (2)2038 173 MS
+( )2057 173 MS
+n
+5 5 232 89 B
+f
+n
+5 5 232 89 B
+f
+n
+584 5 238 89 B
+f
+n
+5 5 823 89 B
+f
+n
+938 5 829 89 B
+f
+n
+5 5 1768 89 B
+f
+n
+436 5 1774 89 B
+f
+n
+5 5 2211 89 B
+f
+n
+5 5 2211 89 B
+f
+n
+5 256 232 95 B
+f
+n
+2 256 823 95 B
+f
+n
+2 256 1768 95 B
+f
+n
+5 256 2211 95 B
+f
+[50 0 0 -50 0 0]/Times-Roman MF
+(D)322 400 MS (M)358 400 MS (2)402 400 MS (S)427 400 MS (/)455 400 MS (S)469 400 MS (F)497 400 MS (M)524 400 MS (E)568 400 MS (/)599 400 MS (L)613 400 MS (G)643 400 MS (L)680 400 MS (S)710 400 MS
+( )738 400 MS
+[50 0 0 -50 0 0]/Times-Bold MF
+gs
+n
+241 53 1102 367 CB
+(R)1102 413 MS (A)1138 413 MS (P)1174 413 MS (P)1204 413 MS (O)1234 413 MS (R)1273 413 MS (T)1310 413 MS
+gr
+gs
+n
+150 53 1343 367 CB
+( )1343 413 MS (D)1356 413 MS (M)1392 413 MS (2)1440 413 MS (S)1465 413 MS
+gr
+[50 0 0 -50 0 0]/Times-Roman MF
+gs
+n
+24 52 1493 368 CB
+( )1493 413 MS
+gr
+[38 0 0 -38 0 0]/Times-Roman MF
+(P)1785 400 MS (a)1806 400 MS (g)1823 400 MS (e)1841 400 MS ( )1858 400 MS
+[50 0 0 -50 0 0]/Times-Roman MF
+(6)1868 400 MS
+(/)1893 400 MS
+(3)1907 400 MS (0)1932 400 MS
+[38 0 0 -38 0 0]/Times-Roman MF
+( )1957 400 MS
+n
+5 2 232 352 B
+f
+n
+2 2 823 352 B
+f
+n
+941 2 826 352 B
+f
+n
+2 2 1768 352 B
+f
+n
+5 2 2211 352 B
+f
+n
+5 67 232 355 B
+f
+n
+590 1 232 423 B
+f
+n
+2 67 823 355 B
+f
+n
+1 1 823 423 B
+f
+n
+942 1 825 423 B
+f
+n
+2 67 1768 355 B
+f
+n
+1 1 1768 423 B
+f
+n
+440 1 1770 423 B
+f
+n
+5 67 2211 355 B
+f
+n
+5 1 2211 423 B
+f
+[50 0 0 -50 0 0]/Times-Roman MF
+( )235 470 MS
+[33 0 0 -33 0 0]/Times-Roman MF
+/IsChar{exch/CharStrings get exch known}bd/MapCh{3 -1 roll/Encoding get 3 1\r
+roll put}bd/MapDegree{dup 16#b0 exch/degree IsChar{/degree}{/ring}ifelse MapCh}\r
+bd/MapBB{dup 16#a6 exch/brokenbar IsChar{/brokenbar}{/bar}ifelse MapCh}bd\r
+/reencode{findfont begin currentdict dup length dict begin{1 index/FID ne{def}\r
+{pop pop}ifelse}forall/FontName exch def dup length 0 ne{/Encoding Encoding 256\r
+array copy def 0 exch{dup type/nametype eq{Encoding 2 index 2 index put pop 1\r
+add}{exch pop}ifelse}forall}if pop currentdict dup end end/FontName get exch\r
+definefont dup MapDegree MapBB}bd/LATENC[0/grave/acute/circumflex/tilde/macron\r
+/breve/dotaccent/dieresis/ring/cedilla/hungarumlaut/ogonek/caron/dotlessi/fi/fl\r
+/Lslash/lslash/Zcaron/zcaron/minus/.notdef/.notdef/.notdef/.notdef/.notdef\r
+/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/space/exclam/quotedbl\r
+/numbersign/dollar/percent/ampersand/quotesingle/parenleft/parenright/asterisk\r
+/plus/comma/hyphen/period/slash/zero/one/two/three/four/five/six/seven/eight\r
+/nine/colon/semicolon/less/equal/greater/question/at/A/B/C/D/E/F/G/H/I/J/K/L/M\r
+/N/O/P/Q/R/S/T/U/V/W/X/Y/Z/bracketleft/backslash/bracketright/asciicircum\r
+/underscore/grave/a/b/c/d/e/f/g/h/i/j/k/l/m/n/o/p/q/r/s/t/u/v/w/x/y/z/braceleft\r
+/bar/braceright/asciitilde/.notdef/.notdef/.notdef/quotesinglbase/florin\r
+/quotedblbase/ellipsis/dagger/daggerdbl/circumflex/perthousand/Scaron\r
+/guilsinglleft/OE/.notdef/.notdef/.notdef/.notdef/quoteleft/quoteright\r
+/quotedblleft/quotedblright/bullet/endash/emdash/tilde/trademark/scaron\r
+/guilsinglright/oe/.notdef/.notdef/Ydieresis/.notdef/exclamdown/cent/sterling\r
+/currency/yen/brokenbar/section/dieresis/copyright/ordfeminine/guillemotleft\r
+/logicalnot/hyphen/registered/macron/degree/plusminus/twosuperior/threesuperior\r
+/acute/mu/paragraph/periodcentered/cedilla/onesuperior/ordmasculine\r
+/guillemotright/onequarter/onehalf/threequarters/questiondown/Agrave/Aacute\r
+/Acircumflex/Atilde/Adieresis/Aring/AE/Ccedilla/Egrave/Eacute/Ecircumflex\r
+/Edieresis/Igrave/Iacute/Icircumflex/Idieresis/Eth/Ntilde/Ograve/Oacute\r
+/Ocircumflex/Otilde/Odieresis/multiply/Oslash/Ugrave/Uacute/Ucircumflex\r
+/Udieresis/Yacute/Thorn/germandbls/agrave/aacute/acircumflex/atilde/adieresis\r
+/aring/ae/ccedilla/egrave/eacute/ecircumflex/edieresis/igrave/iacute\r
+/icircumflex/idieresis/eth/ntilde/ograve/oacute/ocircumflex/otilde/odieresis\r
+/divide/oslash/ugrave/uacute/ucircumflex/udieresis/yacute/thorn/ydieresis]def\r
+LATENC /_Times-Roman /Times-Roman reencode
+[33 0 0 -33 0 0]/_Times-Roman MF
+(L)242 3256 MS (e)262 3256 MS (s)277 3256 MS ( )289 3256 MS (i)298 3256 MS (n)307 3256 MS (f)324 3256 MS (o)335 3256 MS (r)351 3256 MS (m)363 3256 MS (a)388 3256 MS (t)403 3256 MS (i)412 3256 MS (o)422 3256 MS (n)439 3256 MS (s)456 3256 MS
+( )468 3256 MS (c)477 3256 MS (o)492 3256 MS (n)508 3256 MS (t)524 3256 MS (e)534 3256 MS (n)549 3256 MS (u)565 3256 MS (e)582 3256 MS (s)597 3256 MS ( )610 3256 MS (d)618 3256 MS (a)634 3256 MS (n)650 3256 MS (s)667 3256 MS ( )679 3256 MS
+(c)688 3256 MS (e)703 3256 MS ( )717 3256 MS (d)726 3256 MS (o)742 3256 MS (c)759 3256 MS (u)773 3256 MS (m)791 3256 MS (e)817 3256 MS (n)831 3256 MS (t)847 3256 MS ( )857 3256 MS (s)866 3256 MS (o)878 3256 MS (n)895 3256 MS (t)911 3256 MS
+( )921 3256 MS (r)929 3256 MS (\351)941 3256 MS (s)956 3256 MS (e)968 3256 MS (r)982 3256 MS (v)994 3256 MS (\351)1011 3256 MS (e)1026 3256 MS (s)1041 3256 MS ( )1053 3256 MS (a)1061 3256 MS (u)1076 3256 MS (x)1093 3256 MS ( )1109 3256 MS (d)1118 3256 MS
+(e)1135 3256 MS (s)1150 3256 MS (t)1162 3256 MS (i)1171 3256 MS (n)1181 3256 MS (a)1197 3256 MS (t)1212 3256 MS (a)1221 3256 MS (i)1236 3256 MS (r)1245 3256 MS (e)1257 3256 MS (s)1272 3256 MS ( )1284 3256 MS (n)1293 3256 MS (o)1309 3256 MS (m)1326 3256 MS
+(m)1352 3256 MS (\351)1378 3256 MS (m)1393 3256 MS (e)1419 3256 MS (n)1433 3256 MS (t)1450 3256 MS ( )1459 3256 MS (d)1468 3256 MS (\351)1484 3256 MS (s)1499 3256 MS (i)1512 3256 MS (g)1521 3256 MS
+(n)1538 3256 MS (\351)1555 3256 MS (s)1570 3256 MS ( )1582 3256 MS (e)1591 3256 MS (t)1605 3256 MS ( )1615 3256 MS (n)1623 3256 MS (e)1640 3256 MS ( )1654 3256 MS (p)1663 3256 MS (e)1680 3256 MS (u)1694 3256 MS (v)1711 3256 MS (e)1728 3256 MS (n)1743 3256 MS
+(t)1759 3256 MS ( )1768 3256 MS (r)1776 3256 MS (e)1788 3256 MS (c)1803 3256 MS (e)1818 3256 MS (v)1832 3256 MS (o)1849 3256 MS (i)1865 3256 MS (r)1874 3256 MS ( )1886 3256 MS (a)1894 3256 MS (u)1909 3256 MS (c)1926 3256 MS (u)1940 3256 MS (n)1957 3256 MS
+(e)1974 3256 MS ( )1988 3256 MS (d)1997 3256 MS (i)2013 3256 MS (f)2023 3256 MS (f)2034 3256 MS (u)2044 3256 MS (s)2062 3256 MS (i)2074 3256 MS (o)2084 3256 MS (n)2101 3256 MS
+( )2117 3256 MS
+(s)928 3294 MS (a)940 3294 MS (n)955 3294 MS (s)972 3294 MS ( )985 3294 MS (l)993 3294 MS (\222)1002 3294 MS (a)1013 3294 MS (u)1028 3294 MS (t)1045 3294 MS (o)1054 3294 MS (r)1071 3294 MS (i)1082 3294 MS (s)1092 3294 MS (a)1104 3294 MS (t)1119 3294 MS
+(i)1128 3294 MS (o)1138 3294 MS (n)1154 3294 MS ( )1171 3294 MS (e)1180 3294 MS (x)1194 3294 MS (p)1211 3294 MS (r)1227 3294 MS (e)1239 3294 MS (s)1254 3294 MS (s)1267 3294 MS (e)1280 3294 MS ( )1294 3294 MS (d)1303 3294 MS (u)1319 3294 MS ( )1336 3294 MS
+(D)1344 3294 MS (M)1368 3294 MS (2)1397 3294 MS (S)1414 3294 MS
+[50 0 0 -50 0 0]/Times-Roman MF
+( )1432 3294 MS
+[67 0 0 -67 0 0]/Helvetica-Bold MF
+(2)310 592 MS
+( )347 592 MS
+LATENC /_Helvetica-Bold /Helvetica-Bold reencode
+[67 0 0 -67 0 0]/_Helvetica-Bold MF
+(E)400 592 MS (t)445 592 MS (a)465 592 MS (t)502 592 MS ( )524 592 MS (d)543 592 MS (e)584 592 MS ( )621 592 MS (l)639 592 MS (\222)658 592 MS (a)677 592 MS (r)714 592 MS (t)740 592 MS ( )762 592 MS (d)780 592 MS (a)821 592 MS
+(n)858 592 MS (s)899 592 MS ( )936 592 MS (l)954 592 MS (e)973 592 MS ( )1010 592 MS (d)1029 592 MS (o)1069 592 MS (m)1110 592 MS (a)1170 592 MS (i)1206 592 MS (n)1225 592 MS (e)1266 592 MS
+( )1303 592 MS
+[50 0 0 -50 0 0]/Times-Roman MF
+( )348 667 MS
+LATENC /_Times-Roman /Times-Roman reencode
+[50 0 0 -50 0 0]/_Times-Roman MF
+(L)348 724 MS (\222)378 724 MS
+( )394 724 MS
+(\253)408 724 MS
+( )432 724 MS
+(O)445 724 MS (b)481 724 MS (j)506 724 MS (e)519 724 MS (c)542 724 MS (t)564 724 MS ( )579 724 MS (M)597 724 MS (a)641 724 MS (n)663 724 MS (a)687 724 MS (g)709 724 MS (e)735 724 MS (m)758 724 MS (e)796 724 MS (n)819 724 MS
+(t)843 724 MS ( )858 724 MS (G)876 724 MS (r)912 724 MS (o)929 724 MS (u)955 724 MS (p)980 724 MS
+( )1004 724 MS
+(\273)1017 724 MS ( )1041 724 MS (\()1059 724 MS (O)1076 724 MS (M)1112 724 MS (G)1156 724 MS (\))1192 724 MS ( )1209 724 MS (d)1227 724 MS (\351)1252 724 MS (f)1275 724 MS (i)1291 724 MS (n)1304 724 MS (i)1330 724 MS (t)1342 724 MS ( )1358 724 MS
+(e)1376 724 MS (t)1398 724 MS ( )1413 724 MS (s)1431 724 MS (p)1450 724 MS (\351)1475 724 MS (c)1497 724 MS (i)1520 724 MS (f)1533 724 MS (i)1550 724 MS (e)1563 724 MS ( )1585 724 MS (a)1603 724 MS (c)1626 724 MS (t)1648 724 MS (u)1663 724 MS
+(e)1688 724 MS (l)1711 724 MS (l)1724 724 MS (e)1737 724 MS (m)1760 724 MS (e)1798 724 MS (n)1821 724 MS (t)1845 724 MS ( )1860 724 MS (l)1879 724 MS (a)1891 724 MS ( )1913 724 MS (n)1932 724 MS (o)1956 724 MS (t)1982 724 MS (i)1997 724 MS
+(o)2009 724 MS (n)2035 724 MS ( )2059 724 MS (d)2077 724 MS (e)2102 724 MS ( )2125 724 MS
+(C)235 782 MS (O)268 782 MS (R)304 782 MS (B)337 782 MS (A)371 782 MS ( )406 782 MS (p)429 782 MS (a)454 782 MS (r)476 782 MS (a)493 782 MS (l)516 782 MS (l)530 782 MS (\350)543 782 MS (l)566 782 MS (e)579 782 MS ( )601 782 MS
+([)624 782 MS (4)641 782 MS (,)666 782 MS (9)679 782 MS (])704 782 MS (.)721 782 MS ( )733 782 MS (A)756 782 MS (i)792 782 MS (n)805 782 MS (s)830 782 MS (i)850 782 MS (,)862 782 MS ( )875 782 MS (d)898 782 MS (a)923 782 MS
+(n)946 782 MS (s)970 782 MS ( )989 782 MS (l)1013 782 MS (e)1026 782 MS ( )1048 782 MS (f)1072 782 MS (u)1087 782 MS (t)1112 782 MS (u)1127 782 MS (r)1152 782 MS (,)1169 782 MS ( )1182 782 MS (l)1205 782 MS (a)1217 782 MS ( )1240 782 MS
+(p)1263 782 MS (l)1288 782 MS (a)1301 782 MS (t)1323 782 MS (e)1338 782 MS
+(-)1360 782 MS
+(f)1377 782 MS (o)1392 782 MS (r)1418 782 MS (m)1436 782 MS (e)1473 782 MS ( )1495 782 MS (S)1518 782 MS (A)1546 782 MS (L)1582 782 MS (O)1612 782 MS (M)1648 782 MS (E)1692 782 MS ( )1723 782 MS (b)1746 782 MS (\351)1771 782 MS (n)1794 782 MS
+(\351)1818 782 MS (f)1841 782 MS (i)1857 782 MS (c)1870 782 MS (i)1893 782 MS (e)1906 782 MS (r)1928 782 MS (a)1945 782 MS ( )1967 782 MS (d)1990 782 MS (e)2015 782 MS ( )2037 782 MS (c)2060 782 MS (e)2082 782 MS (s)2105 782 MS ( )2125 782 MS
+(n)235 839 MS (o)259 839 MS (u)285 839 MS (v)310 839 MS (e)334 839 MS (l)357 839 MS (l)371 839 MS (e)384 839 MS (s)407 839 MS ( )426 839 MS (f)465 839 MS (o)480 839 MS (n)506 839 MS (c)530 839 MS (t)552 839 MS (i)568 839 MS
+(o)580 839 MS (n)606 839 MS (n)631 839 MS (a)655 839 MS (l)678 839 MS (i)692 839 MS (t)704 839 MS (\351)719 839 MS (s)742 839 MS ( )761 839 MS (q)799 839 MS (u)824 839 MS (i)850 839 MS ( )863 839 MS (p)901 839 MS (e)926 839 MS
+(r)948 839 MS (m)966 839 MS (e)1004 839 MS (t)1026 839 MS (t)1040 839 MS (r)1055 839 MS
+(o)1071 839 MS (n)1097 839 MS (t)1121 839 MS ( )1136 839 MS (d)1174 839 MS (e)1199 839 MS ( )1221 839 MS (s)1258 839 MS (i)1278 839 MS (m)1291 839 MS (p)1329 839 MS (l)1355 839 MS (i)1369 839 MS (f)1383 839 MS (i)1400 839 MS (e)1413 839 MS
+(r)1435 839 MS ( )1452 839 MS (g)1490 839 MS (r)1515 839 MS (a)1532 839 MS (n)1554 839 MS (d)1578 839 MS (e)1603 839 MS (m)1626 839 MS (e)1664 839 MS (n)1687 839 MS (t)1711 839 MS ( )1726 839 MS (l)1765 839 MS (\222)1778 839 MS (i)1795 839 MS
+(n)1808 839 MS (t)1832 839 MS (r)1847 839 MS (o)1864 839 MS (d)1890 839 MS (u)1915 839 MS (c)1940 839 MS (t)1961 839 MS (i)1976 839 MS (o)1988 839 MS (n)2014 839 MS ( )2038 839 MS (d)2076 839 MS (e)2102 839 MS ( )2125 839 MS
+(c)235 897 MS (o)257 897 MS (m)283 897 MS (p)320 897 MS (o)345 897 MS (s)371 897 MS (a)390 897 MS (n)413 897 MS (t)437 897 MS (s)452 897 MS ( )471 897 MS (p)498 897 MS (a)523 897 MS (r)545 897 MS (a)562 897 MS (l)585 897 MS
+(l)598 897 MS (\350)611 897 MS (l)634 897 MS (e)647 897 MS (s)670 897 MS ( )689 897 MS (q)716 897 MS (u)741 897 MS (i)767 897 MS ( )779 897 MS (n)807 897 MS (e)832 897 MS ( )854 897 MS (d)881 897 MS (e)906 897 MS (v)929 897 MS
+(r)953 897 MS (a)970 897 MS (i)993 897 MS (t)1005 897 MS ( )1020 897 MS (p)1047 897 MS (a)1072 897 MS (s)1094 897 MS ( )1113 897 MS (p)1140 897 MS (o)1165 897 MS (s)1191 897 MS (e)1210 897 MS (r)1232 897 MS ( )1249 897 MS (p)1276 897 MS
+(l)1302 897 MS (u)1314 897 MS (s)1339 897 MS ( )1358 897 MS (d)1385 897 MS (e)1410 897 MS ( )1432 897 MS (p)1459 897 MS (r)1484 897 MS (o)1501 897 MS (b)1527 897 MS (l)1552 897 MS (\350)1565 897 MS (m)1588 897 MS (e)1626 897 MS ( )1648 897 MS
+(q)1675 897 MS (u)1700 897 MS (e)1725 897 MS ( )1747 897 MS (l)1775 897 MS (\222)1788 897 MS (i)1806 897 MS (n)1819 897 MS (t)1843 897 MS (r)1858 897 MS (o)1875 897 MS (d)1901 897 MS (u)1926 897 MS (c)1951 897 MS (t)1972 897 MS (i)1987 897 MS
+(o)1999 897 MS (n)2025 897 MS ( )2049 897 MS (d)2076 897 MS (e)2102 897 MS ( )2125 897 MS
+(c)235 954 MS (o)257 954 MS (m)283 954 MS (p)320 954 MS (o)345 954 MS (s)371 954 MS (a)390 954 MS (n)413 954 MS (t)437 954 MS (s)452 954 MS ( )471 954 MS (s)485 954 MS (\351)504 954 MS (q)526 954 MS (u)551 954 MS (e)576 954 MS
+(n)599 954 MS (t)623 954 MS (i)639 954 MS (e)651 954 MS (l)674 954 MS (s)687 954 MS (,)706 954 MS ( )719 954 MS (p)733 954 MS (u)758 954 MS (i)784 954 MS (s)797 954 MS (q)816 954 MS (u)841 954 MS (e)867 954 MS ( )889 954 MS
+(l)904 954 MS (a)917 954 MS ( )939 954 MS (g)953 954 MS (e)978 954 MS (s)1001 954 MS (t)1020 954 MS (i)1035 954 MS (o)1047 954 MS (n)1073 954 MS ( )1098 954 MS (d)1112 954 MS (u)1137 954 MS ( )1162 954 MS (p)1176 954 MS (a)1201 954 MS
+(r)1223 954 MS (a)1241 954 MS (l)1264 954 MS (l)1277 954 MS (\351)1290 954 MS (l)1313 954 MS (i)1327 954 MS (s)1340 954 MS (m)1360 954 MS (e)1398 954 MS ( )1421 954 MS (\()1435 954 MS (n)1452 954 MS (o)1476 954 MS (t)1502 954 MS (a)1517 954 MS
+(m)1539 954 MS (m)1577 954 MS (e)1615 954 MS (n)1638 954 MS (t)1662 954 MS ( )1677 954 MS (l)1692 954 MS (\222)1705 954 MS (\351)1721 954 MS (c)1743 954 MS (h)1766 954 MS (a)1791 954 MS (n)1814 954 MS (g)1838 954 MS (e)1863 954 MS ( )1885 954 MS
+(d)1899 954 MS (e)1924 954 MS ( )1946 954 MS (d)1960 954 MS (o)1985 954 MS (n)2011 954 MS (n)2036 954 MS (\351)2060 954 MS (e)2083 954 MS (s)2105 954 MS ( )2125 954 MS
+(d)235 1012 MS (i)261 1012 MS (s)273 1012 MS (t)292 1012 MS (r)307 1012 MS (i)325 1012 MS (b)338 1012 MS (u)362 1012 MS (\351)387 1012 MS (e)409 1012 MS (\))431 1012 MS ( )448 1012 MS (s)471 1012 MS (e)490 1012 MS (r)512 1012 MS (a)529 1012 MS
+( )551 1012 MS (i)574 1012 MS (n)587 1012 MS (c)612 1012 MS (l)635 1012 MS (u)648 1012 MS (s)673 1012 MS (e)693 1012 MS ( )715 1012 MS (d)737 1012 MS (a)762 1012 MS (n)785 1012 MS (s)809 1012 MS ( )829 1012 MS (l)852 1012 MS (e)865 1012 MS
+( )887 1012 MS (m)910 1012 MS (i)949 1012 MS (d)962 1012 MS (d)987 1012 MS (l)1013 1012 MS (e)1026 1012 MS (w)1048 1012 MS (a)1084 1012 MS (r)1106 1012 MS (e)1123 1012 MS ( )1146 1012 MS (e)1168 1012 MS (t)1190 1012 MS ( )1205 1012 MS (n)1227 1012 MS
+(o)1252 1012 MS (n)1278 1012 MS ( )1302 1012 MS (p)1324 1012 MS (l)1350 1012 MS (u)1362 1012 MS (s)1388 1012 MS ( )1407 1012 MS (d)1429 1012 MS (a)1454 1012 MS (n)1477 1012 MS (s)1502 1012 MS ( )1521 1012 MS (l)1544 1012 MS (e)1557 1012 MS ( )1579 1012 MS
+(c)1602 1012 MS (o)1624 1012 MS (m)1650 1012 MS (p)1687 1012 MS (o)1712 1012 MS (s)1738 1012 MS (a)1757 1012 MS (n)1780 1012 MS (t)1804 1012 MS ( )1819 1012 MS (\()1841 1012 MS (p)1858 1012 MS (o)1883 1012 MS (u)1909 1012 MS (r)1934 1012 MS ( )1951 1012 MS
+(p)1973 1012 MS (l)1998 1012 MS (u)2010 1012 MS (s)2035 1012 MS ( )2055 1012 MS (d)2077 1012 MS (e)2102 1012 MS ( )2125 1012 MS
+(d)235 1069 MS (\351)260 1069 MS (t)282 1069 MS (a)297 1069 MS (i)319 1069 MS (l)332 1069 MS (s)345 1069 MS ( )365 1069 MS (o)387 1069 MS (n)413 1069 MS ( )437 1069 MS (p)459 1069 MS (e)484 1069 MS (u)506 1069 MS (t)531 1069 MS ( )546 1069 MS
+(s)568 1069 MS (e)587 1069 MS ( )609 1069 MS (r)631 1069 MS (\351)648 1069 MS (f)671 1069 MS (\351)686 1069 MS (r)708 1069 MS (e)725 1069 MS (r)747 1069 MS ( )764 1069 MS (a)786 1069 MS (u)808 1069 MS ( )833 1069 MS (d)855 1069 MS (o)880 1069 MS
+(c)906 1069 MS (u)928 1069 MS (m)954 1069 MS (e)992 1069 MS (n)1015 1069 MS (t)1039 1069 MS ( )1054 1069 MS ([)1076 1069 MS (9)1093 1069 MS (])1118 1069 MS (\))1135 1069 MS (.)1151 1069 MS ( )1164 1069 MS (D)1186 1069 MS (e)1222 1069 MS ( )1244 1069 MS
+(p)1266 1069 MS (l)1292 1069 MS (u)1304 1069 MS (s)1329 1069 MS (,)1348 1069 MS ( )1361 1069 MS (d)1383 1069 MS (e)1408 1069 MS (s)1431 1069 MS ( )1450 1069 MS (e)1472 1069 MS (f)1495 1069 MS (f)1511 1069 MS (o)1526 1069 MS (r)1552 1069 MS (t)1569 1069 MS
+(s)1584 1069 MS ( )1603 1069 MS (s)1625 1069 MS (o)1644 1069 MS (n)1670 1069 MS (t)1694 1069 MS ( )1709 1069 MS (d)1731 1069 MS (\351)1756 1069 MS (j)1779 1069 MS (\340)1791 1069 MS ( )1813 1069 MS (e)1836 1069 MS (n)1859 1069 MS (t)1883 1069 MS (r)1898 1069 MS
+(e)1915 1069 MS (p)1937 1069 MS (r)1962 1069 MS (i)1979 1069 MS (s)1991 1069 MS ( )2010 1069 MS (p)2032 1069 MS (o)2057 1069 MS (u)2083 1069 MS (r)2108 1069 MS ( )2125 1069 MS
+(f)235 1127 MS (o)250 1127 MS (u)276 1127 MS (r)301 1127 MS (n)318 1127 MS (i)343 1127 MS (r)356 1127 MS ( )373 1127 MS (u)410 1127 MS (n)436 1127 MS (e)460 1127 MS ( )482 1127 MS (p)519 1127 MS (r)544 1127 MS (e)561 1127 MS (m)584 1127 MS
+(i)623 1127 MS (\350)636 1127 MS (r)658 1127 MS (e)675 1127 MS ( )697 1127 MS (i)735 1127 MS (m)749 1127 MS (p)787 1127 MS (l)813 1127 MS (\351)826 1127 MS (m)849 1127 MS (e)887 1127 MS (n)910 1127 MS (t)934 1127 MS (a)949 1127 MS (t)971 1127 MS
+(i)986 1127 MS (o)998 1127 MS (n)1024 1127 MS ( )1048 1127 MS (d)1085 1127 MS (e)1111 1127 MS ( )1133 1127 MS (C)1170 1127 MS (O)1203 1127 MS (R)1240 1127 MS (B)1273 1127 MS (A)1307 1127 MS ( )1342 1127 MS (p)1379 1127 MS (a)1404 1127 MS (r)1426 1127 MS
+(a)1443 1127 MS (l)1466 1127 MS (l)1480 1127 MS (\350)1493 1127 MS (l)1516 1127 MS (e)1529 1127 MS
+( )1551 1127 MS
+(:)1564 1127 MS ( )1578 1127 MS (P)1615 1127 MS (a)1643 1127 MS (C)1665 1127 MS (O)1698 1127 MS ( )1734 1127 MS ([)1771 1127 MS (5)1788 1127 MS (])1813 1127 MS (,)1830 1127 MS ( )1843 1127 MS (P)1880 1127 MS (a)1908 1127 MS (r)1930 1127 MS (D)1947 1127 MS
+(i)1984 1127 MS (s)1996 1127 MS ( )2016 1127 MS ([)2053 1127 MS (6)2070 1127 MS (])2095 1127 MS (.)2112 1127 MS ( )2125 1127 MS
+(M)235 1184 MS (a)279 1184 MS (l)302 1184 MS (h)315 1184 MS (e)340 1184 MS (u)362 1184 MS (r)387 1184 MS (e)404 1184 MS (u)426 1184 MS (s)451 1184 MS (e)470 1184 MS (m)493 1184 MS (e)531 1184 MS (n)554 1184 MS (t)578 1184 MS (,)593 1184 MS
+( )606 1184 MS (c)619 1184 MS (e)641 1184 MS (s)663 1184 MS ( )682 1184 MS (p)695 1184 MS (r)720 1184 MS (o)737 1184 MS (j)764 1184 MS (e)776 1184 MS (t)798 1184 MS (s)813 1184 MS ( )832 1184 MS (n)846 1184 MS
+(e)870 1184 MS ( )892 1184 MS (s)905 1184 MS (o)924 1184 MS (n)950 1184 MS (t)974 1184 MS ( )989 1184 MS (e)1002 1184 MS (n)1025 1184 MS (c)1049 1184 MS (o)1071 1184 MS (r)1097 1184 MS (e)1114 1184 MS ( )1136 1184 MS (q)1149 1184 MS (u)1174 1184 MS
+(\222)1199 1184 MS (\340)1215 1184 MS ( )1237 1184 MS (l)1251 1184 MS (\222)1264 1184 MS (\351)1281 1184 MS (t)1303 1184 MS (a)1318 1184 MS (t)1340 1184 MS ( )1355 1184 MS (d)1368 1184 MS (e)1393 1184 MS ( )1415 1184 MS (r)1428 1184 MS (e)1445 1184 MS (c)1467 1184 MS
+(h)1489 1184 MS (e)1513 1184 MS (r)1535 1184 MS (c)1552 1184 MS (h)1575 1184 MS (e)1599 1184 MS ( )1621 1184 MS (e)1634 1184 MS (t)1656 1184 MS ( )1671 1184 MS (n)1684 1184 MS (e)1709 1184 MS ( )1731 1184 MS (s)1744 1184 MS (o)1763 1184 MS (n)1789 1184 MS
+(t)1813 1184 MS ( )1828 1184 MS (p)1841 1184 MS (a)1866 1184 MS (s)1888 1184 MS ( )1908 1184 MS (u)1921 1184 MS (t)1946 1184 MS (i)1961 1184 MS (l)1974 1184 MS (i)1988 1184 MS (s)2001 1184 MS (a)2021 1184 MS (b)2044 1184 MS (l)2069 1184 MS (e)2082 1184 MS
+(s)2105 1184 MS ( )2125 1184 MS
+(t)235 1242 MS (e)250 1242 MS (l)272 1242 MS (s)284 1242 MS ( )303 1242 MS (q)316 1242 MS (u)341 1242 MS (e)366 1242 MS (l)389 1242 MS (s)402 1242 MS ( )421 1242 MS (d)434 1242 MS (a)459 1242 MS (n)482 1242 MS (s)507 1242 MS ( )526 1242 MS
+(S)539 1242 MS (A)568 1242 MS (L)603 1242 MS (O)633 1242 MS (M)670 1242 MS (E)714 1242 MS (.)745 1242 MS ( )758 1242 MS (I)771 1242 MS (l)788 1242 MS (s)800 1242 MS ( )819 1242 MS (s)832 1242 MS (\222)852 1242 MS (a)868 1242 MS (p)890 1242 MS
+(p)915 1242 MS (u)940 1242 MS (i)966 1242 MS (e)979 1242 MS (n)1002 1242 MS (t)1026 1242 MS ( )1041 1242 MS (s)1054 1242 MS (u)1073 1242 MS (r)1098 1242 MS ( )1115 1242 MS (u)1128 1242 MS (n)1153 1242 MS ( )1177 1242 MS (I)1190 1242 MS (D)1207 1242 MS
+(L)1243 1242 MS ( )1273 1242 MS (\351)1286 1242 MS (t)1308 1242 MS (e)1323 1242 MS (n)1345 1242 MS (d)1369 1242 MS (u)1394 1242 MS ( )1419 1242 MS (d)1432 1242 MS (e)1457 1242 MS ( )1479 1242 MS (C)1492 1242 MS (O)1525 1242 MS (R)1561 1242 MS (B)1594 1242 MS
+(A)1628 1242 MS (,)1663 1242 MS ( )1676 1242 MS (e)1689 1242 MS (t)1711 1242 MS ( )1726 1242 MS (d)1739 1242 MS (o)1763 1242 MS (n)1789 1242 MS (c)1813 1242 MS ( )1835 1242 MS (i)1849 1242 MS (m)1862 1242 MS (p)1900 1242 MS (o)1925 1242 MS (s)1951 1242 MS
+(e)1970 1242 MS (n)1992 1242 MS (t)2016 1242 MS ( )2031 1242 MS (t)2044 1242 MS (r)2059 1242 MS (o)2075 1242 MS (p)2101 1242 MS ( )2125 1242 MS
+(d)235 1299 MS (e)260 1299 MS ( )282 1299 MS (c)306 1299 MS (o)328 1299 MS (n)354 1299 MS (t)378 1299 MS (r)393 1299 MS (a)410 1299 MS (i)432 1299 MS (n)445 1299 MS (t)469 1299 MS (e)484 1299 MS (s)506 1299 MS ( )525 1299 MS (s)549 1299 MS
+(u)568 1299 MS (r)593 1299 MS ( )610 1299 MS (l)635 1299 MS (e)648 1299 MS (u)670 1299 MS (r)695 1299 MS ( )712 1299 MS (u)736 1299 MS (t)761 1299 MS (i)776 1299 MS (l)789 1299 MS (i)803 1299 MS (s)816 1299 MS (a)836 1299 MS (t)858 1299 MS
+(i)873 1299 MS (o)885 1299 MS (n)911 1299 MS (.)935 1299 MS ( )948 1299 MS (E)972 1299 MS (n)1003 1299 MS (f)1028 1299 MS (i)1045 1299 MS (n)1058 1299 MS ( )1083 1299 MS (l)1108 1299 MS (a)1121 1299 MS ( )1143 1299 MS (v)1168 1299 MS (e)1192 1299 MS
+(r)1214 1299 MS (s)1231 1299 MS (i)1251 1299 MS (o)1263 1299 MS (n)1290 1299 MS ( )1314 1299 MS (d)1338 1299 MS (e)1363 1299 MS ( )1385 1299 MS (P)1409 1299 MS (a)1437 1299 MS (C)1459 1299 MS (O)1493 1299 MS ( )1529 1299 MS (t)1553 1299 MS (e)1568 1299 MS
+(s)1590 1299 MS (t)1609 1299 MS (\351)1624 1299 MS (e)1646 1299 MS ( )1668 1299 MS (a)1692 1299 MS (u)1714 1299 MS ( )1739 1299 MS (L)1763 1299 MS (G)1793 1299 MS (L)1829 1299 MS (S)1859 1299 MS ( )1887 1299 MS (a)1911 1299 MS ( )1933 1299 MS (p)1957 1299 MS
+(r)1982 1299 MS (\351)1999 1299 MS (s)2021 1299 MS (e)2040 1299 MS (n)2063 1299 MS (t)2087 1299 MS (\351)2102 1299 MS ( )2125 1299 MS
+(q)235 1357 MS (u)260 1357 MS (e)285 1357 MS (l)308 1357 MS (q)320 1357 MS (u)345 1357 MS (e)370 1357 MS (s)393 1357 MS ( )412 1357 MS (p)425 1357 MS (r)450 1357 MS (o)467 1357 MS (b)493 1357 MS
+(l)518 1357 MS (\350)531 1357 MS (m)554 1357 MS (e)592 1357 MS (s)614 1357 MS ( )634 1357 MS (d)647 1357 MS (\222)672 1357 MS (u)688 1357 MS (t)713 1357 MS (i)729 1357 MS (l)742 1357 MS (i)756 1357 MS (s)769 1357 MS (a)789 1357 MS (t)811 1357 MS
+(i)826 1357 MS (o)838 1357 MS (n)864 1357 MS
+( )888 1357 MS
+(\()901 1357 MS (b)919 1357 MS (u)943 1357 MS (g)968 1357 MS (,)993 1357 MS ( )1006 1357 MS (f)1020 1357 MS (o)1035 1357 MS (n)1061 1357 MS (c)1085 1357 MS (t)1107 1357 MS (i)1123 1357 MS (o)1135 1357 MS (n)1161 1357 MS (n)1186 1357 MS (a)1210 1357 MS
+(l)1233 1357 MS (i)1247 1357 MS (t)1259 1357 MS (\351)1274 1357 MS ( )1296 1357 MS (m)1310 1357 MS (a)1348 1357 MS (n)1371 1357 MS (q)1395 1357 MS (u)1420 1357 MS (a)1446 1357 MS (n)1469 1357 MS (t)1493 1357 MS (e)1508 1357 MS (\))1530 1357 MS ( )1547 1357 MS
+(q)1560 1357 MS (u)1585 1357 MS (i)1611 1357 MS ( )1623 1357 MS (o)1636 1357 MS (n)1662 1357 MS (t)1686 1357 MS ( )1701 1357 MS (e)1714 1357 MS (m)1737 1357 MS (p)1774 1357 MS (\352)1800 1357 MS (c)1822 1357 MS (h)1845 1357 MS (\351)1869 1357 MS ( )1891 1357 MS
+(d)1904 1357 MS (\222)1930 1357 MS (e)1946 1357 MS (f)1969 1357 MS (f)1986 1357 MS (e)2002 1357 MS (c)2024 1357 MS (t)2046 1357 MS (u)2061 1357 MS (e)2086 1357 MS (r)2108 1357 MS ( )2125 1357 MS
+(u)235 1414 MS (n)260 1414 MS ( )284 1414 MS (e)323 1414 MS (x)346 1414 MS (e)370 1414 MS (r)392 1414 MS (c)409 1414 MS (i)432 1414 MS (c)445 1414 MS (e)467 1414 MS ( )489 1414 MS (c)528 1414 MS (o)550 1414 MS (m)577 1414 MS (p)614 1414 MS
+(l)640 1414 MS (e)653 1414 MS (t)675 1414 MS ( )690 1414 MS (d)729 1414 MS (a)754 1414 MS (n)776 1414 MS (s)800 1414 MS ( )819 1414 MS (l)859 1414 MS (e)871 1414 MS ( )893 1414 MS (c)932 1414 MS (a)954 1414 MS (d)976 1414 MS (r)1001 1414 MS
+(e)1018 1414 MS ( )1040 1414 MS (d)1079 1414 MS (e)1104 1414 MS ( )1126 1414 MS (S)1165 1414 MS (A)1193 1414 MS (L)1229 1414 MS (O)1259 1414 MS (M)1295 1414 MS (E)1339 1414 MS (.)1370 1414 MS ( )1383 1414 MS (A)1422 1414 MS (u)1457 1414 MS (j)1483 1414 MS
+(o)1495 1414 MS (u)1521 1414 MS (r)1546 1414 MS (d)1563 1414 MS (\222)1588 1414 MS (h)1605 1414 MS (u)1629 1414 MS (i)1655 1414 MS (,)1667 1414 MS ( )1680 1414 MS (i)1720 1414 MS (l)1734 1414 MS ( )1746 1414 MS (n)1786 1414 MS (\222)1811 1414 MS (e)1827 1414 MS
+(x)1850 1414 MS (i)1875 1414 MS (s)1888 1414 MS (t)1907 1414 MS (e)1922 1414 MS ( )1944 1414 MS (a)1983 1414 MS (u)2005 1414 MS (c)2030 1414 MS (u)2052 1414 MS (n)2077 1414 MS (e)2102 1414 MS ( )2125 1414 MS
+(i)235 1472 MS (m)249 1472 MS (p)287 1472 MS (l)313 1472 MS (\351)326 1472 MS (m)349 1472 MS (e)387 1472 MS (n)410 1472 MS (t)434 1472 MS (a)449 1472 MS (t)471 1472 MS (i)486 1472 MS (o)498 1472 MS (n)524 1472 MS ( )548 1472 MS (s)567 1472 MS
+(t)586 1472 MS (a)601 1472 MS (b)623 1472 MS (l)648 1472 MS (e)661 1472 MS ( )683 1472 MS (d)702 1472 MS (u)727 1472 MS ( )752 1472 MS (C)772 1472 MS (O)805 1472 MS (R)841 1472 MS (B)875 1472 MS (A)909 1472 MS ( )944 1472 MS (p)963 1472 MS
+(a)988 1472 MS (r)1010 1472 MS (a)1027 1472 MS (l)1050 1472 MS (l)1063 1472 MS (\350)1076 1472 MS (l)1100 1472 MS (e)1113 1472 MS ( )1135 1472 MS (q)1154 1472 MS (u)1179 1472 MS (i)1205 1472 MS ( )1218 1472 MS (r)1237 1472 MS (e)1254 1472 MS (s)1276 1472 MS
+(t)1295 1472 MS (e)1310 1472 MS ( )1332 1472 MS (e)1351 1472 MS (n)1373 1472 MS (c)1397 1472 MS (o)1419 1472 MS (r)1445 1472 MS (e)1462 1472 MS ( )1484 1472 MS (\340)1503 1472 MS ( )1525 1472 MS (l)1545 1472 MS (\222)1558 1472 MS (\351)1574 1472 MS (t)1596 1472 MS
+(a)1611 1472 MS (t)1633 1472 MS ( )1648 1472 MS (d)1667 1472 MS (e)1692 1472 MS ( )1714 1472 MS (s)1733 1472 MS (p)1752 1472 MS (\351)1777 1472 MS (c)1799 1472 MS (i)1822 1472 MS (f)1835 1472 MS (i)1851 1472 MS (c)1864 1472 MS (a)1887 1472 MS (t)1909 1472 MS
+(i)1924 1472 MS (o)1936 1472 MS (n)1962 1472 MS
+( )1986 1472 MS
+(;)2000 1472 MS ( )2013 1472 MS (d)2032 1472 MS (\222)2057 1472 MS (o)2073 1472 MS (\371)2099 1472 MS ( )2125 1472 MS
+(l)235 1529 MS (\222)248 1529 MS (i)265 1529 MS (m)279 1529 MS (p)317 1529 MS (o)342 1529 MS (r)368 1529 MS (t)385 1529 MS
+(a)400 1529 MS (n)422 1529 MS (c)446 1529 MS (e)468 1529 MS ( )490 1529 MS (d)503 1529 MS (e)528 1529 MS (s)550 1529 MS ( )569 1529 MS (t)582 1529 MS (r)597 1529 MS (a)614 1529 MS (v)636 1529 MS (a)660 1529 MS (u)682 1529 MS (x)707 1529 MS
+( )731 1529 MS (\340)744 1529 MS ( )766 1529 MS (r)779 1529 MS (\351)796 1529 MS (a)818 1529 MS (l)841 1529 MS (i)854 1529 MS (s)867 1529 MS (e)887 1529 MS (r)909 1529 MS ( )926 1529 MS (d)939 1529 MS (a)964 1529 MS (n)986 1529 MS (s)1010 1529 MS
+( )1029 1529 MS (c)1042 1529 MS (e)1064 1529 MS ( )1086 1529 MS (d)1099 1529 MS (o)1124 1529 MS (m)1151 1529 MS (a)1188 1529 MS (i)1211 1529 MS (n)1224 1529 MS (e)1250 1529 MS (.)1272 1529 MS
+( )1285 1529 MS
+( )348 1586 MS
+(L)348 1644 MS (e)378 1644 MS ( )400 1644 MS (l)425 1644 MS (a)438 1644 MS (b)461 1644 MS (o)485 1644 MS (r)511 1644 MS (a)528 1644 MS (t)550 1644 MS (o)564 1644 MS (i)590 1644 MS (r)602 1644 MS (e)619 1644 MS ( )641 1644 MS (d)665 1644 MS
+(e)690 1644 MS ( )712 1644 MS (l)737 1644 MS (\222)750 1644 MS (I)766 1644 MS (R)783 1644 MS (I)816 1644 MS (S)833 1644 MS (A)862 1644 MS ( )897 1644 MS (s)921 1644 MS (i)941 1644 MS (t)953 1644 MS (u)968 1644 MS (\351)993 1644 MS ( )1015 1644 MS
+(\340)1039 1644 MS ( )1061 1644 MS (R)1086 1644 MS (e)1119 1644 MS (n)1142 1644 MS (n)1167 1644 MS (e)1191 1644 MS (s)1213 1644 MS ( )1232 1644 MS (t)1256 1644 MS (r)1271 1644 MS (a)1288 1644 MS (v)1310 1644 MS (a)1334 1644 MS (i)1357 1644 MS (l)1371 1644 MS
+(l)1385 1644 MS (e)1398 1644 MS ( )1420 1644 MS (s)1444 1644 MS (u)1463 1644 MS (r)1488 1644 MS ( )1505 1644 MS (d)1529 1644 MS (i)1555 1644 MS (f)1569 1644 MS (f)1585 1644 MS (\351)1601 1644 MS (r)1623 1644 MS (e)1640 1644 MS (n)1663 1644 MS (t)1687 1644 MS
+(s)1702 1644 MS ( )1721 1644 MS (p)1745 1644 MS (r)1770 1644 MS (o)1787 1644 MS (j)1813 1644 MS (e)1825 1644 MS (t)1847 1644 MS (s)1862 1644 MS ( )1881 1644 MS
+(c)1905 1644 MS (o)1927 1644 MS (n)1953 1644 MS (c)1977 1644 MS (e)1999 1644 MS (r)2021 1644 MS (n)2039 1644 MS (a)2063 1644 MS (n)2086 1644 MS (t)2110 1644 MS ( )2125 1644 MS
+(l)235 1701 MS (\222)248 1701 MS (u)265 1701 MS (t)290 1701 MS (i)305 1701 MS (l)318 1701 MS (i)332 1701 MS (s)345 1701 MS (a)365 1701 MS (t)387 1701 MS (i)403 1701 MS (o)415 1701 MS (n)441 1701 MS ( )465 1701 MS (d)487 1701 MS (e)512 1701 MS
+( )534 1701 MS (C)556 1701 MS (O)589 1701 MS (R)625 1701 MS (B)658 1701 MS (A)692 1701 MS ( )727 1701 MS (p)749 1701 MS (o)774 1701 MS (u)800 1701 MS (r)825 1701 MS ( )842 1701 MS (l)865 1701 MS (e)877 1701 MS ( )899 1701 MS (c)921 1701 MS
+(a)943 1701 MS (l)966 1701 MS (c)979 1701 MS (u)1001 1701 MS (l)1027 1701 MS ( )1040 1701 MS (h)1063 1701 MS (a)1087 1701 MS (u)1109 1701 MS (t)1134 1701 MS (e)1149 1701 MS
+(-)1171 1701 MS
+(p)1188 1701 MS (e)1213 1701 MS (r)1235 1701 MS (f)1251 1701 MS (o)1266 1701 MS (r)1292 1701 MS (m)1310 1701 MS (a)1347 1701 MS (n)1370 1701 MS (c)1395 1701 MS (e)1417 1701 MS (.)1439 1701 MS ( )1452 1701 MS (T)1474 1701 MS (o)1505 1701 MS (u)1531 1701 MS
+(t)1555 1701 MS ( )1569 1701 MS (d)1591 1701 MS (\222)1616 1701 MS (a)1632 1701 MS (b)1654 1701 MS (o)1678 1701 MS (r)1704 1701 MS (d)1721 1701 MS ( )1746 1701 MS (i)1768 1701 MS (l)1781 1701 MS ( )1794 1701 MS (a)1816 1701 MS ( )1838 1701 MS (e)1860 1701 MS
+(n)1883 1701 MS (t)1907 1701 MS (r)1922 1701 MS (e)1939 1701 MS (p)1961 1701 MS (r)1986 1701 MS (i)2003 1701 MS (s)2016 1701 MS ( )2035 1701 MS (d)2057 1701 MS (e)2082 1701 MS (s)2105 1701 MS ( )2125 1701 MS
+(\351)235 1759 MS (t)257 1759 MS (u)272 1759 MS (d)297 1759 MS (e)322 1759 MS (s)344 1759 MS ( )363 1759 MS (s)377 1759 MS (u)396 1759 MS (r)421 1759 MS ( )438 1759 MS (u)452 1759 MS (n)477 1759 MS (e)501 1759 MS ( )523 1759 MS (i)538 1759 MS
+(m)552 1759 MS (p)590 1759 MS (l)616 1759 MS (\351)629 1759 MS (m)652 1759 MS (e)690 1759 MS (n)713 1759 MS (t)737 1759 MS (a)752 1759 MS (t)774 1759 MS (i)789 1759 MS (o)801 1759 MS (n)827 1759 MS ( )851 1759 MS (p)865 1759 MS (o)890 1759 MS
+(r)916 1759 MS (t)933 1759 MS (a)948 1759 MS (b)970 1759 MS
+(l)995 1759 MS (e)1007 1759 MS ( )1029 1759 MS (d)1043 1759 MS (u)1068 1759 MS ( )1093 1759 MS (c)1107 1759 MS (o)1129 1759 MS (n)1155 1759 MS (c)1179 1759 MS (e)1202 1759 MS (p)1224 1759 MS (t)1250 1759 MS ( )1265 1759 MS (d)1279 1759 MS (\222)1304 1759 MS
+(o)1320 1759 MS (b)1346 1759 MS (j)1370 1759 MS (e)1383 1759 MS (t)1405 1759 MS ( )1420 1759 MS (C)1434 1759 MS (O)1467 1759 MS (R)1503 1759 MS (B)1536 1759 MS (A)1570 1759 MS ( )1605 1759 MS (p)1619 1759 MS (a)1644 1759 MS (r)1666 1759 MS (a)1683 1759 MS
+(l)1706 1759 MS (l)1720 1759 MS (\350)1733 1759 MS (l)1756 1759 MS (e)1769 1759 MS ( )1791 1759 MS (\()1805 1759 MS (P)1822 1759 MS (a)1850 1759 MS (C)1872 1759 MS (O)1905 1759 MS (+)1941 1759 MS (+)1970 1759 MS (\))1998 1759 MS ( )2015 1759 MS ([)2029 1759 MS
+(1)2046 1759 MS (1)2071 1759 MS (])2096 1759 MS (.)2113 1759 MS ( )2125 1759 MS
+(D)235 1816 MS (a)271 1816 MS (n)293 1816 MS (s)318 1816 MS ( )337 1816 MS (c)350 1816 MS (e)372 1816 MS ( )394 1816 MS (d)407 1816 MS (e)432 1816 MS (r)454 1816 MS (n)471 1816 MS (i)496 1816 MS (e)509 1816 MS (r)531 1816 MS (,)548 1816 MS
+( )561 1816 MS (i)575 1816 MS (l)588 1816 MS ( )600 1816 MS (n)614 1816 MS (\222)639 1816 MS (y)656 1816 MS ( )680 1816 MS (a)693 1816 MS ( )715 1816 MS (p)728 1816 MS (l)754 1816 MS (u)766 1816 MS (s)792 1816 MS ( )811 1816 MS (b)824 1816 MS
+(e)849 1816 MS (s)871 1816 MS (o)890 1816 MS (i)917 1816 MS (n)930 1816 MS ( )954 1816 MS (d)967 1816 MS (e)992 1816 MS ( )1014 1816 MS (m)1028 1816 MS (o)1065 1816 MS (d)1091 1816 MS (i)1117 1816 MS (f)1130 1816 MS (i)1147 1816 MS (e)1160 1816 MS
+(r)1182 1816 MS ( )1199 1816 MS (l)1213 1816 MS (a)1225 1816 MS ( )1248 1816 MS (s)1261 1816 MS (y)1281 1816 MS (n)1305 1816 MS (t)1329 1816 MS (a)1344 1816 MS (x)1366 1816 MS (e)1390 1816 MS ( )1412 1816 MS (d)1425 1816 MS (u)1450 1816 MS ( )1475 1816 MS
+(l)1489 1816 MS (a)1502 1816 MS (n)1525 1816 MS (g)1549 1816 MS (a)1574 1816 MS (g)1596 1816 MS (e)1621 1816 MS ( )1643 1816 MS (I)1656 1816 MS (D)1673 1816 MS (L)1709 1816 MS (.)1739 1816 MS ( )1752 1816 MS (L)1765 1816 MS (e)1795 1816 MS (s)1817 1816 MS
+( )1836 1816 MS (s)1849 1816 MS (p)1868 1816 MS (\351)1893 1816 MS (c)1916 1816 MS (i)1939 1816 MS (f)1952 1816 MS (i)1969 1816 MS (c)1982 1816 MS (a)2004 1816 MS (t)2026 1816 MS (i)2042 1816 MS (o)2054 1816 MS (n)2080 1816 MS (s)2105 1816 MS ( )2125 1816 MS
+(d)235 1874 MS (e)260 1874 MS ( )282 1874 MS (d)302 1874 MS (i)328 1874 MS (s)341 1874 MS (t)360 1874 MS (r)375 1874 MS (i)392 1874 MS (b)405 1874 MS (u)429 1874 MS (t)454 1874 MS (i)470 1874 MS (o)482 1874 MS (n)508 1874 MS (s)532 1874 MS
+( )551 1874 MS (s)572 1874 MS (o)591 1874 MS (n)617 1874 MS (t)641 1874 MS ( )656 1874 MS (i)676 1874 MS (n)689 1874 MS (c)714 1874 MS (l)737 1874 MS (u)749 1874 MS (s)775 1874 MS (e)794 1874 MS (s)817 1874 MS ( )836 1874 MS (d)856 1874 MS
+(a)881 1874 MS (n)904 1874 MS (s)928 1874 MS ( )947 1874 MS (u)967 1874 MS (n)993 1874 MS ( )1017 1874 MS (f)1038 1874 MS (i)1055 1874 MS (c)1068 1874 MS (h)1091 1874 MS (i)1116 1874 MS (e)1129 1874 MS (r)1151 1874 MS ( )1168 1874 MS (X)1188 1874 MS
+(M)1225 1874 MS (L)1269 1874 MS (.)1299 1874 MS ( )1312 1874 MS (U)1332 1874 MS (n)1369 1874 MS ( )1393 1874 MS (p)1413 1874 MS (r)1438 1874 MS (o)1455 1874 MS (t)1480 1874 MS (o)1494 1874 MS (t)1519 1874 MS (y)1534 1874 MS (p)1557 1874 MS (e)1582 1874 MS
+( )1604 1874 MS (e)1624 1874 MS (s)1647 1874 MS (t)1666 1874 MS ( )1681 1874 MS (e)1701 1874 MS (n)1723 1874 MS ( )1747 1874 MS (c)1767 1874 MS (o)1789 1874 MS (u)1815 1874 MS (r)1840 1874 MS (s)1857 1874 MS ( )1876 1874 MS (d)1896 1874 MS (e)1921 1874 MS
+( )1943 1874 MS (m)1964 1874 MS (i)2002 1874 MS (s)2015 1874 MS (e)2035 1874 MS ( )2057 1874 MS (e)2077 1874 MS (n)2100 1874 MS ( )2125 1874 MS
+(o)235 1931 MS (e)261 1931 MS (u)283 1931 MS (v)308 1931 MS (r)332 1931 MS (e)349 1931 MS (.)371 1931 MS ( )384 1931 MS (C)400 1931 MS (e)433 1931 MS ( )455 1931 MS (l)472 1931 MS (a)484 1931 MS (b)507 1931 MS (o)531 1931 MS (r)557 1931 MS
+(a)574 1931 MS (t)596 1931 MS
+(o)610 1931 MS (i)636 1931 MS (r)648 1931 MS (e)665 1931 MS ( )687 1931 MS (a)703 1931 MS ( )725 1931 MS (r)741 1931 MS (\351)758 1931 MS (c)780 1931 MS (e)802 1931 MS (m)825 1931 MS (m)864 1931 MS (e)902 1931 MS (n)925 1931 MS (t)949 1931 MS
+( )964 1931 MS (u)980 1931 MS (t)1004 1931 MS (i)1019 1931 MS (l)1032 1931 MS (i)1046 1931 MS (s)1059 1931 MS (\351)1079 1931 MS ( )1101 1931 MS (c)1117 1931 MS (e)1139 1931 MS (t)1161 1931 MS (t)1176 1931 MS (e)1191 1931 MS ( )1213 1931 MS (i)1229 1931 MS
+(m)1242 1931 MS (p)1280 1931 MS (l)1306 1931 MS (\351)1319 1931 MS (m)1342 1931 MS (e)1380 1931 MS (n)1403 1931 MS (t)1427 1931 MS (a)1442 1931 MS (t)1464 1931 MS (i)1479 1931 MS (o)1491 1931 MS (n)1517 1931 MS ( )1541 1931 MS (p)1557 1931 MS (o)1582 1931 MS
+(u)1608 1931 MS (r)1633 1931 MS ( )1650 1931 MS (e)1666 1931 MS (x)1688 1931 MS (p)1712 1931 MS (\351)1737 1931 MS (r)1759 1931 MS (i)1777 1931 MS (m)1790 1931 MS (e)1828 1931 MS (n)1851 1931 MS (t)1875 1931 MS (e)1890 1931 MS (r)1912 1931 MS ( )1929 1931 MS
+(l)1946 1931 MS (e)1958 1931 MS ( )1980 1931 MS (r)1996 1931 MS (\351)2013 1931 MS (s)2035 1931 MS (e)2055 1931 MS (a)2077 1931 MS (u)2099 1931 MS ( )2125 1931 MS
+(V)235 1989 MS (T)271 1989 MS (H)302 1989 MS (D)338 1989 MS ( )374 1989 MS (\()390 1989 MS (1)407 1989 MS ( )432 1989 MS (G)448 1989 MS (b)484 1989 MS (/)508 1989 MS (s)523 1989 MS ( )542 1989 MS (e)558 1989 MS (n)581 1989 MS (t)605 1989 MS
+(r)620 1989 MS (e)637 1989 MS ( )659 1989 MS (p)675 1989 MS (l)701 1989 MS (u)713 1989 MS (s)738 1989 MS (i)758 1989 MS (e)771 1989 MS (u)793 1989 MS (r)818 1989 MS (s)836 1989 MS ( )855 1989 MS (g)871 1989 MS (r)896 1989 MS (a)913 1989 MS
+(p)935 1989 MS (p)960 1989 MS (e)985 1989 MS (s)1007 1989 MS ( )1027 1989 MS (d)1043 1989 MS (e)1068 1989 MS ( )1090 1989 MS (l)1107 1989 MS (')1120 1989 MS (I)1129 1989 MS (N)1146 1989 MS (R)1182 1989 MS (I)1215 1989 MS (A)1233 1989 MS (\))1268 1989 MS
+(.)1285 1989 MS ( )1298 1989 MS (I)1314 1989 MS (l)1332 1989 MS ( )1344 1989 MS (a)1361 1989 MS ( )1383 1989 MS (r)1399 1989 MS (\351)1416 1989 MS (u)1438 1989 MS (s)1463 1989 MS (s)1483 1989 MS (i)1503 1989 MS ( )1516 1989 MS (\340)1532 1989 MS ( )1554 1989 MS
+(o)1570 1989 MS (b)1596 1989 MS (t)1620 1989 MS (e)1635 1989 MS (n)1657 1989 MS (i)1682 1989 MS (r)1695 1989 MS ( )1712 1989 MS (u)1728 1989 MS (n)1754 1989 MS ( )1778 1989 MS (d)1794 1989 MS (\351)1820 1989 MS (b)1843 1989 MS (i)1868 1989 MS (t)1880 1989 MS
+( )1895 1989 MS (e)1911 1989 MS (n)1934 1989 MS (t)1958 1989 MS (r)1973 1989 MS (e)1990 1989 MS ( )2012 1989 MS (d)2028 1989 MS (e)2053 1989 MS (u)2075 1989 MS (x)2100 1989 MS ( )2125 1989 MS
+(c)235 2046 MS (o)257 2046 MS (l)283 2046 MS (l)296 2046 MS (e)309 2046 MS (c)331 2046 MS (t)353 2046 MS (i)369 2046 MS (o)381 2046 MS (n)407 2046 MS (s)432 2046 MS ( )451 2046 MS (d)469 2046 MS (e)494 2046 MS ( )516 2046 MS (l)535 2046 MS
+(')548 2046 MS (o)556 2046 MS (r)582 2046 MS (d)599 2046 MS (r)624 2046 MS (e)641 2046 MS ( )663 2046 MS (d)681 2046 MS (e)706 2046 MS ( )729 2046 MS (8)747 2046 MS (0)772 2046 MS (0)797 2046 MS ( )822 2046 MS (M)840 2046 MS (b)885 2046 MS
+(i)910 2046 MS (t)922 2046 MS (/)937 2046 MS (s)951 2046 MS ( )971 2046 MS (s)989 2046 MS (u)1008 2046 MS (r)1033 2046 MS ( )1050 2046 MS (d)1068 2046 MS (e)1093 2046 MS (u)1115 2046 MS (x)1141 2046 MS ( )1166 2046 MS (g)1184 2046 MS (r)1209 2046 MS
+(a)1226 2046 MS (p)1248 2046 MS (p)1273 2046 MS (e)1298 2046 MS (s)1320 2046 MS ( )1339 2046 MS (d)1357 2046 MS (i)1383 2046 MS (s)1396 2046 MS (t)1415 2046 MS (a)1430 2046 MS (n)1452 2046 MS (t)1476 2046 MS (e)1491 2046 MS (s)1513 2046 MS ( )1532 2046 MS
+(d)1550 2046 MS (e)1575 2046 MS ( )1598 2046 MS (1)1616 2046 MS (0)1641 2046 MS (0)1666 2046 MS (0)1691 2046 MS ( )1716 2046 MS (k)1734 2046 MS (m)1760 2046 MS (.)1797 2046 MS ( )1811 2046 MS (I)1829 2046 MS (l)1847 2046 MS ( )1859 2046 MS (a)1878 2046 MS
+( )1900 2046 MS (\351)1918 2046 MS (g)1940 2046 MS (a)1965 2046 MS (l)1988 2046 MS (e)2001 2046 MS (m)2024 2046 MS (e)2062 2046 MS (n)2085 2046 MS (t)2109 2046 MS
+( )2125 2046 MS
+(l)235 2104 MS (a)248 2104 MS (n)271 2104 MS (c)295 2104 MS (\351)317 2104 MS ( )340 2104 MS (u)369 2104 MS (n)395 2104 MS ( )419 2104 MS (n)449 2104 MS (o)473 2104 MS (u)499 2104 MS (v)524 2104 MS (e)548 2104 MS (a)571 2104 MS (u)593 2104 MS
+( )618 2104 MS (p)647 2104 MS (r)672 2104 MS (o)689 2104 MS (j)715 2104 MS (e)728 2104 MS (t)750 2104 MS ( )765 2104 MS (s)794 2104 MS (u)813 2104 MS (r)838 2104 MS ( )855 2104 MS (l)885 2104 MS (a)897 2104 MS ( )920 2104 MS (r)949 2104 MS
+(\351)966 2104 MS (a)988 2104 MS (l)1011 2104 MS (i)1025 2104 MS (s)1038 2104 MS (a)1057 2104 MS (t)1079 2104 MS (i)1095 2104 MS (o)1107 2104 MS (n)1133 2104 MS ( )1157 2104 MS (d)1186 2104 MS (\222)1212 2104 MS (u)1228 2104 MS (n)1254 2104 MS (e)1278 2104 MS
+( )1301 2104 MS (p)1330 2104 MS (l)1356 2104 MS (a)1369 2104 MS (t)1391 2104 MS (e)1406 2104 MS
+(-)1428 2104 MS
+(f)1445 2104 MS (o)1460 2104 MS (r)1486 2104 MS (m)1504 2104 MS (e)1541 2104 MS ( )1563 2104 MS (d)1592 2104 MS (')1618 2104 MS (o)1626 2104 MS (b)1652 2104 MS (j)1677 2104 MS (e)1690 2104 MS (t)1712 2104 MS (s)1727 2104 MS ( )1746 2104 MS (d)1775 2104 MS
+(i)1801 2104 MS (s)1814 2104 MS (t)1833 2104 MS (r)1848 2104 MS (i)1866 2104 MS (b)1879 2104 MS (u)1903 2104 MS (\351)1928 2104 MS (s)1950 2104 MS ( )1970 2104 MS (h)2000 2104 MS (a)2024 2104 MS (u)2046 2104 MS (t)2071 2104 MS (e)2086 2104 MS
+(-)2108 2104 MS
+(p)235 2161 MS (e)260 2161 MS (r)282 2161 MS (f)299 2161 MS (o)314 2161 MS (r)340 2161 MS (m)358 2161 MS (a)395 2161 MS (n)418 2161 MS (c)442 2161 MS (e)465 2161 MS (.)487 2161 MS ( )500 2161 MS (I)517 2161 MS (l)535 2161 MS ( )547 2161 MS
+(s)565 2161 MS (')585 2161 MS (a)593 2161 MS (g)615 2161 MS (i)641 2161 MS (t)653 2161 MS ( )668 2161 MS (d)685 2161 MS (u)710 2161 MS ( )735 2161 MS (p)752 2161 MS (r)777 2161 MS (o)794 2161 MS (j)821 2161 MS (e)833 2161 MS (t)855 2161 MS
+( )870 2161 MS (P)887 2161 MS (a)915 2161 MS (d)937 2161 MS (i)963 2161 MS (c)975 2161 MS (o)997 2161 MS ( )1023 2161 MS ([)1040 2161 MS (1)1057 2161 MS (1)1082 2161 MS (])1107 2161 MS (.)1124 2161 MS ( )1137 2161 MS (L)1154 2161 MS (')1184 2161 MS
+(o)1192 2161 MS (b)1218 2161 MS (j)1243 2161 MS (e)1257 2161 MS (c)1279 2161 MS (t)1301 2161 MS (i)1316 2161 MS (f)1329 2161 MS ( )1345 2161 MS (e)1362 2161 MS (s)1385 2161 MS (t)1404 2161 MS ( )1419 2161 MS (d)1436 2161 MS (e)1461 2161 MS ( )1483 2161 MS
+(p)1500 2161 MS (e)1525 2161 MS (r)1547 2161 MS (m)1565 2161 MS (e)1602 2161 MS (t)1624 2161 MS (t)1639 2161 MS (r)1654 2161 MS (e)1671 2161 MS ( )1693 2161 MS (d)1710 2161 MS (')1735 2161 MS (u)1743 2161 MS (t)1768 2161 MS (i)1783 2161 MS (l)1796 2161 MS
+(i)1810 2161 MS (s)1823 2161 MS (e)1842 2161 MS (r)1864 2161 MS ( )1881 2161 MS (d)1898 2161 MS (e)1924 2161 MS ( )1946 2161 MS (m)1964 2161 MS (a)2002 2161 MS (n)2025 2161 MS (i)2050 2161 MS (\350)2063 2161 MS (r)2085 2161 MS (e)2102 2161 MS ( )2125 2161 MS
+(t)235 2219 MS (r)250 2219 MS (a)267 2219 MS (n)289 2219 MS (s)313 2219 MS (p)332 2219 MS (a)357 2219 MS (r)379 2219 MS (e)396 2219 MS (n)418 2219 MS (t)442 2219 MS (e)457 2219 MS ( )479 2219 MS (d)501 2219 MS (e)526 2219 MS (s)548 2219 MS
+( )567 2219 MS (r)589 2219 MS (\351)606 2219 MS (s)629 2219 MS (e)648 2219 MS (a)670 2219 MS (u)692 2219 MS (x)718 2219 MS ( )742 2219 MS (d)764 2219 MS (')790 2219 MS (i)799 2219 MS (n)812 2219 MS (t)836 2219 MS (e)851 2219 MS (r)873 2219 MS
+(c)890 2219 MS (o)912 2219 MS (n)938 2219 MS (n)963 2219 MS (e)987 2219 MS (x)1010 2219 MS (i)1035 2219 MS (o)1047 2219 MS (n)1074 2219 MS ( )1098 2219 MS (\()1120 2219 MS (M)1137 2219 MS (y)1182 2219 MS (r)1206 2219 MS (i)1224 2219 MS (n)1238 2219 MS
+(e)1262 2219 MS (t)1284 2219 MS (,)1299 2219 MS ( )1312 2219 MS (V)1334 2219 MS (I)1370 2219 MS (A)1387 2219 MS (,)1422 2219 MS ( )1435 2219 MS (S)1457 2219 MS (C)1485 2219 MS (I)1518 2219 MS (,)1535 2219 MS ( )1548 2219 MS (r)1570 2219 MS (\351)1587 2219 MS
+(s)1609 2219 MS (e)1628 2219 MS (a)1650 2219 MS (u)1672 2219 MS (x)1697 2219 MS ( )1722 2219 MS (d)1744 2219 MS (a)1769 2219 MS
+(n)1792 2219 MS (s)1816 2219 MS ( )1835 2219 MS (l)1858 2219 MS (e)1871 2219 MS (s)1894 2219 MS ( )1913 2219 MS (m)1936 2219 MS (a)1974 2219 MS (c)1996 2219 MS (h)2019 2219 MS (i)2044 2219 MS (n)2057 2219 MS (e)2082 2219 MS (s)2105 2219 MS ( )2125 2219 MS
+(p)235 2276 MS (a)260 2276 MS (r)282 2276 MS (a)299 2276 MS (l)322 2276 MS (l)335 2276 MS (\350)348 2276 MS (l)371 2276 MS (e)384 2276 MS (s)407 2276 MS (\))426 2276 MS ( )443 2276 MS (a)465 2276 MS (u)487 2276 MS ( )512 2276 MS (t)534 2276 MS
+(r)549 2276 MS (a)566 2276 MS (v)588 2276 MS (e)612 2276 MS (r)634 2276 MS (s)651 2276 MS ( )670 2276 MS (d)692 2276 MS (e)717 2276 MS ( )739 2276 MS (m)762 2276 MS (i)801 2276 MS (d)814 2276 MS (d)839 2276 MS (l)865 2276 MS (e)878 2276 MS
+(w)900 2276 MS (a)936 2276 MS (r)958 2276 MS (e)975 2276 MS ( )997 2276 MS (\()1019 2276 MS (C)1036 2276 MS (O)1069 2276 MS (R)1106 2276 MS (B)1139 2276 MS (A)1173 2276 MS (\))1208 2276 MS (,)1225 2276 MS ( )1238 2276 MS (e)1260 2276 MS (x)1282 2276 MS
+(\351)1306 2276 MS (c)1329 2276 MS (u)1351 2276 MS (t)1376 2276 MS (i)1391 2276 MS (f)1404 2276 MS (s)1420 2276 MS ( )1440 2276 MS (\()1462 2276 MS (M)1479 2276 MS (P)1523 2276 MS (I)1551 2276 MS (,)1568 2276 MS ( )1581 2276 MS (D)1603 2276 MS (S)1639 2276 MS
+(M)1667 2276 MS (,)1711 2276 MS ( )1724 2276 MS (.)1746 2276 MS (.)1759 2276 MS (.)1771 2276 MS (\))1784 2276 MS ( )1801 2276 MS (e)1823 2276 MS (t)1844 2276 MS ( )1859 2276 MS (d)1881 2276 MS (e)1906 2276 MS ( )1928 2276 MS (l)1951 2276 MS (a)1963 2276 MS
+(n)1986 2276 MS (g)2010 2276 MS (a)2035 2276 MS (g)2057 2276 MS (e)2082 2276 MS (s)2105 2276 MS ( )2125 2276 MS
+(\()235 2334 MS (J)252 2334 MS (a)271 2334 MS (v)293 2334 MS (a)317 2334 MS (\))339 2334 MS (.)356 2334 MS ( )369 2334 MS (A)386 2334 MS (v)422 2334 MS (e)446 2334 MS (c)468 2334 MS ( )491 2334 MS (c)507 2334 MS (e)529 2334 MS ( )551 2334 MS
+(t)567 2334 MS (y)583 2334 MS (p)606 2334 MS (e)631 2334 MS ( )654 2334 MS (d)670 2334 MS (e)695 2334 MS ( )717 2334 MS (p)733 2334 MS (l)759 2334 MS (a)772 2334 MS (t)794 2334 MS (e)809 2334 MS
+(-)831 2334 MS
+(f)848 2334 MS (o)863 2334 MS (r)889 2334 MS (m)907 2334 MS (e)944 2334 MS (,)966 2334 MS ( )979 2334 MS (u)995 2334 MS (n)1021 2334 MS (e)1045 2334 MS ( )1067 2334 MS (a)1083 2334 MS (p)1105 2334 MS (p)1130 2334 MS (l)1156 2334 MS (i)1170 2334 MS
+(c)1183 2334 MS (a)1206 2334 MS (t)1228 2334 MS (i)1243 2334 MS (o)1256 2334 MS (n)1282 2334 MS ( )1306 2334 MS (q)1322 2334 MS (u)1347 2334 MS (i)1373 2334 MS ( )1385 2334 MS (u)1401 2334 MS (t)1426 2334 MS (i)1442 2334 MS (l)1455 2334 MS (i)1469 2334 MS
+(s)1482 2334 MS (e)1502 2334 MS ( )1524 2334 MS (\340)1540 2334 MS ( )1562 2334 MS (l)1579 2334 MS (a)1592 2334 MS ( )1615 2334 MS (f)1632 2334 MS (o)1647 2334 MS (i)1674 2334 MS (s)1687 2334 MS ( )1706 2334 MS (C)1722 2334 MS (O)1755 2334 MS (R)1792 2334 MS
+(B)1825 2334 MS (A)1859 2334 MS ( )1894 2334 MS (e)1910 2334 MS (t)1932 2334 MS ( )1947 2334 MS (M)1963 2334 MS (P)2007 2334 MS (I)2035 2334 MS ( )2052 2334 MS (e)2068 2334 MS (s)2090 2334 MS (t)2109 2334 MS ( )2125 2334 MS
+(a)235 2391 MS (s)257 2391 MS (s)276 2391 MS (u)295 2391 MS (r)320 2391 MS (\351)337 2391 MS (e)359 2391 MS ( )381 2391 MS (d)400 2391 MS (e)425 2391 MS ( )448 2391 MS (p)467 2391 MS (o)492 2391 MS (u)518 2391 MS (v)543 2391 MS (o)567 2391 MS
+(i)594 2391 MS (r)606 2391 MS ( )623 2391 MS (u)642 2391 MS (t)667 2391 MS (i)682 2391 MS (l)695 2391 MS (i)709 2391 MS (s)722 2391 MS (e)742 2391 MS (r)764 2391 MS ( )781 2391 MS (l)801 2391 MS (e)813 2391 MS (s)836 2391 MS ( )855 2391 MS
+(m)875 2391 MS (e)913 2391 MS (i)936 2391 MS (l)950 2391 MS (l)964 2391 MS (e)977 2391 MS (u)999 2391 MS (r)1024 2391 MS (s)1041 2391 MS ( )1060 2391 MS (r)1079 2391 MS (\351)1096 2391 MS (s)1119 2391 MS (e)1138 2391 MS (a)1160 2391 MS (u)1182 2391 MS
+(x)1208 2391 MS ( )1232 2391 MS (d)1252 2391 MS (i)1278 2391 MS (s)1290 2391 MS (p)1309 2391 MS (o)1334 2391 MS (n)1360 2391 MS (i)1385 2391 MS (b)1398 2391 MS (l)1424 2391 MS (e)1437 2391 MS (s)1460 2391 MS
+(.)1479 2391 MS ( )1492 2391 MS (U)1511 2391 MS (n)1548 2391 MS (e)1572 2391 MS ( )1594 2391 MS (p)1613 2391 MS (r)1638 2391 MS (e)1655 2391 MS (m)1678 2391 MS (i)1717 2391 MS (\350)1730 2391 MS (r)1752 2391 MS (e)1769 2391 MS ( )1791 2391 MS (i)1811 2391 MS
+(m)1825 2391 MS (p)1863 2391 MS (l)1889 2391 MS (\351)1902 2391 MS (m)1925 2391 MS (e)1963 2391 MS (n)1986 2391 MS (t)2010 2391 MS (a)2025 2391 MS (t)2047 2391 MS (i)2062 2391 MS (o)2074 2391 MS (n)2100 2391 MS ( )2125 2391 MS
+(e)235 2449 MS (s)257 2449 MS (t)276 2449 MS ( )291 2449 MS (e)312 2449 MS (n)334 2449 MS ( )358 2449 MS (b)379 2449 MS (o)403 2449 MS (n)429 2449 MS (n)454 2449 MS (e)478 2449 MS ( )500 2449 MS (v)522 2449 MS (o)546 2449 MS (i)572 2449 MS
+(e)585 2449 MS ( )607 2449 MS (d)628 2449 MS (')653 2449 MS (a)661 2449 MS (c)684 2449 MS (h)707 2449 MS (\350)731 2449 MS (v)754 2449 MS (e)778 2449 MS (m)801 2449 MS (e)839 2449 MS (n)862 2449 MS (t)886 2449 MS ( )901 2449 MS (a)922 2449 MS
+(v)944 2449 MS (e)968 2449 MS (c)990 2449 MS ( )1012 2449 MS (d)1033 2449 MS (e)1058 2449 MS (s)1080 2449 MS ( )1099 2449 MS (p)1120 2449 MS (e)1145 2449 MS (r)1167 2449 MS (f)1185 2449 MS (o)1200 2449 MS (r)1226 2449 MS (m)1243 2449 MS (a)1281 2449 MS
+(n)1304 2449 MS (c)1328 2449 MS (e)1350 2449 MS (s)1373 2449 MS ( )1392 2449 MS (r)1413 2449 MS (e)1430 2449 MS (m)1453 2449 MS (a)1490 2449 MS (r)1512 2449 MS (q)1529 2449 MS (u)1554 2449 MS (a)1579 2449 MS (b)1602 2449 MS (l)1627 2449 MS (e)1640 2449 MS
+(s)1663 2449 MS ( )1682 2449 MS (\()1703 2449 MS (C)1720 2449 MS (O)1753 2449 MS (R)1789 2449 MS (B)1822 2449 MS (A)1856 2449 MS (:)1891 2449 MS ( )1905 2449 MS (2)1926 2449 MS (4)1951 2449 MS (0)1976 2449 MS ( )2001 2449 MS (M)2022 2449 MS (o)2066 2449 MS
+(/)2092 2449 MS (s)2106 2449 MS ( )2125 2449 MS
+(a)235 2506 MS (v)257 2506 MS (e)281 2506 MS (c)304 2506 MS ( )326 2506 MS (O)362 2506 MS (m)399 2506 MS (n)437 2506 MS (i)462 2506 MS (O)475 2506 MS (R)512 2506 MS (B)545 2506 MS ( )578 2506 MS (e)614 2506 MS (t)636 2506 MS ( )651 2506 MS
+(M)687 2506 MS (y)732 2506 MS (r)755 2506 MS (i)773 2506 MS (n)786 2506 MS (e)811 2506 MS (t)833 2506 MS
+(-)848 2506 MS
+(2)865 2506 MS (0)890 2506 MS (0)915 2506 MS (0)940 2506 MS (\))965 2506 MS (.)981 2506 MS ( )994 2506 MS (C)1030 2506 MS (e)1063 2506 MS (t)1085 2506 MS (t)1099 2506 MS (e)1114 2506 MS ( )1135 2506 MS (p)1171 2506 MS (l)1196 2506 MS (a)1208 2506 MS
+(t)1230 2506 MS (e)1245 2506 MS
+(-)1267 2506 MS
+(f)1284 2506 MS (o)1299 2506 MS (r)1325 2506 MS (m)1343 2506 MS (e)1380 2506 MS ( )1402 2506 MS (e)1438 2506 MS (s)1461 2506 MS (t)1480 2506 MS ( )1495 2506 MS (c)1531 2506 MS (a)1553 2506 MS (p)1575 2506 MS (a)1600 2506 MS (b)1622 2506 MS (l)1647 2506 MS
+(e)1660 2506 MS ( )1682 2506 MS (d)1718 2506 MS (')1744 2506 MS (i)1753 2506 MS (n)1766 2506 MS (t)1790 2506 MS (\351)1805 2506 MS (g)1827 2506 MS (r)1852 2506 MS (e)1869 2506 MS (r)1891 2506 MS ( )1908 2506 MS (p)1944 2506 MS (l)1970 2506 MS (u)1982 2506 MS
+(s)2007 2506 MS (i)2027 2506 MS (e)2040 2506 MS (u)2062 2506 MS (r)2087 2506 MS (s)2105 2506 MS ( )2125 2506 MS
+(i)235 2564 MS (m)249 2564 MS (p)287 2564 MS (l)313 2564 MS (\351)326 2564 MS (m)349 2564 MS (e)387 2564 MS (n)410 2564 MS (t)434 2564 MS (a)449 2564 MS (t)471 2564 MS (i)486 2564 MS (o)498 2564 MS (n)524 2564 MS (s)548 2564 MS ( )567 2564 MS
+(d)587 2564 MS (e)612 2564 MS ( )635 2564 MS (C)655 2564 MS (O)688 2564 MS (R)724 2564 MS (B)758 2564 MS (A)792 2564 MS (.)827 2564 MS ( )840 2564 MS (L)860 2564 MS (')891 2564 MS (i)900 2564 MS (n)913 2564 MS (t)937 2564 MS (\351)952 2564 MS
+(g)974 2564 MS (r)999 2564 MS (a)1016 2564 MS (t)1038 2564 MS (i)1054 2564 MS (o)1066 2564 MS (n)1092 2564 MS ( )1116 2564 MS (d)1136 2564 MS (')1162 2564 MS (u)1170 2564 MS (n)1196 2564 MS ( )1220 2564 MS (O)1241 2564 MS (R)1277 2564 MS (B)1310 2564 MS
+( )1343 2564 MS (d)1363 2564 MS (a)1388 2564 MS (n)1411 2564 MS (s)1436 2564 MS ( )1455 2564 MS (l)1476 2564 MS (a)1489 2564 MS ( )1511 2564 MS (p)1531 2564 MS (l)1557 2564 MS (a)1570 2564 MS (t)1592 2564 MS
+(e)1607 2564 MS
+(-)1629 2564 MS
+(f)1646 2564 MS (o)1661 2564 MS (r)1687 2564 MS (m)1705 2564 MS (e)1742 2564 MS ( )1764 2564 MS (n)1785 2564 MS (e)1809 2564 MS ( )1831 2564 MS (n)1852 2564 MS (\351)1876 2564 MS (c)1899 2564 MS (e)1921 2564 MS (s)1943 2564 MS (s)1963 2564 MS (i)1983 2564 MS
+(t)1995 2564 MS (e)2010 2564 MS ( )2032 2564 MS (q)2052 2564 MS (u)2077 2564 MS (e)2102 2564 MS ( )2125 2564 MS
+(q)235 2621 MS (u)260 2621 MS (e)285 2621 MS (l)308 2621 MS (q)320 2621 MS (u)345 2621 MS (e)370 2621 MS (s)393 2621 MS ( )412 2621 MS (m)442 2621 MS (o)479 2621 MS (d)505 2621 MS (i)531 2621 MS (f)544 2621 MS (i)561 2621 MS (c)574 2621 MS
+(a)597 2621 MS (t)619 2621 MS (i)634 2621 MS (o)646 2621 MS (n)672 2621 MS (s)697 2621 MS ( )716 2621 MS (d)745 2621 MS (e)770 2621 MS ( )792 2621 MS (l)822 2621 MS (')835 2621 MS (O)844 2621 MS (R)881 2621 MS (B)914 2621 MS (.)947 2621 MS
+( )960 2621 MS (E)989 2621 MS (n)1020 2621 MS (f)1045 2621 MS (i)1062 2621 MS (n)1075 2621 MS (,)1099 2621 MS ( )1112 2621 MS (l)1142 2621 MS (e)1155 2621 MS ( )1178 2621 MS (t)1207 2621 MS (r)1222 2621 MS (o)1238 2621 MS (i)1264 2621 MS (s)1276 2621 MS
+(i)1296 2621 MS (\350)1309 2621 MS (m)1332 2621 MS (e)1370 2621 MS ( )1393 2621 MS (p)1422 2621 MS (r)1447 2621 MS (o)1464 2621 MS (j)1490 2621 MS (e)1502 2621 MS (t)1524 2621 MS ( )1539 2621 MS (c)1568 2621 MS (o)1590 2621 MS (n)1616 2621 MS (c)1640 2621 MS
+(e)1662 2621 MS (r)1684 2621 MS (n)1702 2621 MS (e)1726 2621 MS ( )1748 2621 MS (l)1778 2621 MS (')1791 2621 MS (i)1801 2621 MS (n)1814 2621 MS (t)1838 2621 MS (r)1853 2621 MS (o)1870 2621 MS (d)1896 2621 MS (u)1921 2621 MS (c)1946 2621 MS (t)1967 2621 MS
+(i)1982 2621 MS (o)1994 2621 MS (n)2020 2621 MS ( )2044 2621 MS (d)2073 2621 MS (u)2099 2621 MS ( )2125 2621 MS
+(p)235 2679 MS (a)260 2679 MS (r)282 2679 MS (a)299 2679 MS (l)322 2679 MS (l)335 2679 MS (\351)348 2679 MS (l)371 2679 MS (i)385 2679 MS (s)398 2679 MS (m)418 2679 MS (e)456 2679 MS ( )479 2679 MS (a)494 2679 MS (u)516 2679 MS ( )541 2679 MS
+(s)557 2679 MS (e)576 2679 MS (i)599 2679 MS (n)612 2679 MS ( )637 2679 MS (d)652 2679 MS (e)677 2679 MS (s)700 2679 MS ( )719 2679 MS (m)735 2679 MS (o)772 2679 MS (d)798 2679 MS (\350)823 2679 MS (l)846 2679 MS (e)859 2679 MS (s)882 2679 MS
+( )901 2679 MS (d)916 2679 MS (e)941 2679 MS ( )964 2679 MS (c)979 2679 MS (o)1001 2679 MS (m)1028 2679 MS (p)1065 2679 MS (o)1090 2679 MS (s)1116 2679 MS (a)1135 2679 MS (n)1157 2679 MS (t)1181 2679 MS (s)1196 2679 MS ( )1215 2679 MS (\()1230 2679 MS
+(C)1248 2679 MS (C)1281 2679 MS (M)1314 2679 MS (,)1358 2679 MS ( )1371 2679 MS (E)1386 2679 MS (J)1417 2679 MS (B)1436 2679 MS (\))1469 2679 MS (.)1486 2679 MS ( )1499 2679 MS (I)1514 2679 MS (l)1532 2679 MS ( )1545 2679 MS (y)1561 2679 MS ( )1585 2679 MS
+(a)1600 2679 MS ( )1623 2679 MS (u)1638 2679 MS (n)1664 2679 MS (e)1688 2679 MS ( )1710 2679 MS (t)1725 2679 MS (h)1740 2679 MS (\350)1764 2679 MS (s)1787 2679 MS (e)1806 2679 MS ( )1828 2679 MS (q)1843 2679 MS (u)1868 2679 MS (i)1894 2679 MS ( )1907 2679 MS
+(d)1923 2679 MS (\351)1948 2679 MS (m)1971 2679 MS (a)2009 2679 MS (r)2031 2679 MS (r)2048 2679 MS (e)2065 2679 MS ( )2087 2679 MS (\340)2102 2679 MS ( )2125 2679 MS
+(l)235 2736 MS (\222)248 2736 MS (I)264 2736 MS (R)282 2736 MS (I)315 2736 MS (S)332 2736 MS (A)360 2736 MS ( )396 2736 MS (s)410 2736 MS (u)429 2736 MS (i)455 2736 MS (t)467 2736 MS (e)482 2736 MS ( )504 2736 MS (\340)519 2736 MS ( )541 2736 MS
+(u)555 2736 MS (n)581 2736 MS ( )606 2736 MS (s)620 2736 MS (t)639 2736 MS (a)654 2736 MS (g)676 2736 MS (e)701 2736 MS ( )723 2736 MS (d)737 2736 MS (e)762 2736 MS ( )784 2736 MS (D)799 2736 MS (E)835 2736 MS (A)866 2736 MS (.)901 2736 MS
+( )914 2736 MS (I)928 2736 MS (l)946 2736 MS (s)959 2736 MS ( )979 2736 MS (u)993 2736 MS (t)1018 2736 MS (i)1033 2736 MS (l)1046 2736 MS (i)1060 2736 MS (s)1073 2736 MS (e)1093 2736 MS (n)1116 2736 MS (t)1140 2736 MS ( )1155 2736 MS (O)1169 2736 MS
+(p)1205 2736 MS (e)1230 2736 MS (n)1253 2736 MS (C)1277 2736 MS (C)1311 2736 MS (M)1344 2736 MS
+( )1389 2736 MS ([)1403 2736 MS (1)1420 2736 MS (0)1445 2736 MS (])1470 2736 MS ( )1487 2736 MS (\()1501 2736 MS (i)1519 2736 MS (m)1532 2736 MS (p)1570 2736 MS (l)1596 2736 MS (\351)1609 2736 MS (m)1632 2736 MS (e)1670 2736 MS (n)1693 2736 MS (t)1717 2736 MS
+(a)1732 2736 MS (t)1754 2736 MS (i)1769 2736 MS (o)1781 2736 MS (n)1807 2736 MS ( )1831 2736 MS (d)1845 2736 MS (e)1870 2736 MS ( )1893 2736 MS (C)1907 2736 MS (C)1941 2736 MS (M)1974 2736 MS ( )2019 2736 MS (a)2033 2736 MS (v)2056 2736 MS (e)2080 2736 MS
+(c)2102 2736 MS ( )2125 2736 MS
+(J)235 2794 MS (a)254 2794 MS (v)277 2794 MS (a)301 2794 MS (\))323 2794 MS (.)340 2794 MS ( )353 2794 MS (L)367 2794 MS (e)397 2794 MS (u)419 2794 MS (r)444 2794 MS ( )461 2794 MS (o)475 2794 MS (b)501 2794 MS (j)525 2794 MS (e)538 2794 MS
+(c)560 2794 MS (t)582 2794 MS (i)598 2794 MS (f)611 2794 MS ( )626 2794 MS (e)640 2794 MS (s)662 2794 MS (t)681 2794 MS ( )696 2794 MS (d)710 2794 MS (e)735 2794 MS ( )757 2794 MS (p)771 2794 MS (o)796 2794 MS (u)822 2794 MS (v)847 2794 MS
+(o)871 2794 MS (i)897 2794 MS (r)909 2794 MS ( )926 2794 MS (p)940 2794 MS (r)965 2794 MS (o)981 2794 MS (p)1007 2794 MS (o)1031 2794 MS (s)1057 2794 MS (e)1076 2794 MS (r)1098 2794 MS ( )1115 2794 MS (u)1129 2794 MS (n)1154 2794 MS (e)1178 2794 MS
+( )1200 2794 MS (c)1214 2794 MS (o)1236 2794 MS (m)1262 2794 MS (p)1299 2794 MS (o)1324 2794 MS (s)1350 2794 MS (i)1370 2794 MS (t)1382 2794 MS (i)1398 2794 MS (o)1410 2794 MS (n)1436 2794 MS ( )1460 2794 MS (\253)1475 2794 MS
+( )1499 2794 MS
+(s)1512 2794 MS (c)1531 2794 MS (a)1553 2794 MS (l)1576 2794 MS (a)1589 2794 MS (b)1612 2794 MS (l)1637 2794 MS (e)1650 2794 MS
+( )1672 2794 MS
+(\273)1686 2794 MS ( )1710 2794 MS (p)1724 2794 MS (e)1749 2794 MS (r)1771 2794 MS (m)1789 2794 MS (e)1826 2794 MS (t)1848 2794 MS (t)1863 2794 MS (a)1878 2794 MS (n)1900 2794 MS (t)1924 2794 MS ( )1939 2794 MS (d)1953 2794 MS (')1978 2794 MS (u)1986 2794 MS
+(t)2010 2794 MS (i)2025 2794 MS (l)2038 2794 MS (i)2052 2794 MS (s)2065 2794 MS (e)2085 2794 MS (r)2107 2794 MS ( )2125 2794 MS
+(l)235 2851 MS (e)248 2851 MS (s)271 2851 MS ( )290 2851 MS (r)303 2851 MS (\351)320 2851 MS (s)342 2851 MS (e)361 2851 MS (a)383 2851 MS (u)405 2851 MS (x)431 2851 MS ( )455 2851 MS (r)468 2851 MS (a)485 2851 MS (p)507 2851 MS (i)533 2851 MS
+(d)545 2851 MS (e)570 2851 MS (s)593 2851 MS ( )612 2851 MS (\()625 2851 MS (v)642 2851 MS (i)667 2851 MS (a)680 2851 MS ( )702 2851 MS (P)715 2851 MS (a)743 2851 MS (d)765 2851 MS (i)791 2851 MS (c)803 2851 MS (o)825 2851 MS (\))851 2851 MS
+(.)868 2851 MS
+( )881 2851 MS
+( )348 2909 MS
+(D)348 2966 MS (\222)384 2966 MS (a)400 2966 MS (u)422 2966 MS (t)447 2966 MS (r)462 2966 MS (e)479 2966 MS ( )501 2966 MS (p)539 2966 MS (a)564 2966 MS (r)586 2966 MS (t)602 2966 MS (,)617 2966 MS ( )629 2966 MS (\253)667 2966 MS
+( )691 2966 MS
+(M)704 2966 MS (e)748 2966 MS (r)770 2966 MS (c)787 2966 MS (u)809 2966 MS (r)834 2966 MS (y)852 2966 MS ( )875 2966 MS (C)913 2966 MS (o)946 2966 MS (m)973 2966 MS (p)1010 2966 MS (u)1035 2966 MS (t)1060 2966 MS (e)1075 2966 MS (r)1097 2966 MS
+( )1114 2966 MS (S)1152 2966 MS (y)1180 2966 MS (s)1203 2966 MS (t)1222 2966 MS (e)1237 2966 MS (m)1260 2966 MS (s)1298 2966 MS
+( )1317 2966 MS
+(\273)1330 2966 MS ( )1355 2966 MS (e)1393 2966 MS (t)1415 2966 MS ( )1429 2966 MS (\253)1467 2966 MS
+( )1491 2966 MS
+(M)1504 2966 MS (P)1548 2966 MS (I)1576 2966 MS ( )1593 2966 MS (S)1631 2966 MS (o)1658 2966 MS (f)1684 2966 MS (t)1699 2966 MS (w)1714 2966 MS (a)1750 2966 MS (r)1772 2966 MS (e)1789 2966 MS ( )1811 2966 MS (T)1849 2966 MS (e)1880 2966 MS (c)1902 2966 MS
+(h)1924 2966 MS (n)1949 2966 MS (o)1973 2966 MS (l)1999 2966 MS (o)2011 2966 MS (g)2037 2966 MS (y)2063 2966 MS
+( )2086 2966 MS
+(\273)2100 2966 MS ( )2125 2966 MS
+(t)235 3024 MS (r)250 3024 MS (a)267 3024 MS (v)289 3024 MS (a)313 3024 MS (i)336 3024 MS (l)349 3024 MS (l)363 3024 MS (e)376 3024 MS (n)399 3024 MS (t)423 3024 MS ( )438 3024 MS (a)472 3024 MS (c)494 3024 MS (t)516 3024 MS (u)531 3024 MS
+(e)556 3024 MS
+(l)578 3024 MS (l)591 3024 MS (e)604 3024 MS (m)627 3024 MS (e)665 3024 MS (n)688 3024 MS (t)712 3024 MS ( )727 3024 MS (\340)761 3024 MS ( )784 3024 MS (u)818 3024 MS (n)844 3024 MS (e)868 3024 MS ( )890 3024 MS (p)924 3024 MS (r)949 3024 MS
+(e)966 3024 MS (m)989 3024 MS (i)1028 3024 MS (\350)1041 3024 MS (r)1063 3024 MS (e)1080 3024 MS ( )1102 3024 MS (i)1137 3024 MS (m)1151 3024 MS (p)1189 3024 MS (l)1215 3024 MS (\351)1228 3024 MS (m)1251 3024 MS (e)1289 3024 MS (n)1312 3024 MS (t)1336 3024 MS
+(a)1351 3024 MS (t)1373 3024 MS (i)1388 3024 MS (o)1400 3024 MS (n)1426 3024 MS ( )1450 3024 MS (d)1484 3024 MS (e)1510 3024 MS (s)1532 3024 MS ( )1551 3024 MS (s)1586 3024 MS (p)1605 3024 MS (\351)1630 3024 MS (c)1652 3024 MS (i)1675 3024 MS (f)1689 3024 MS
+(i)1706 3024 MS (c)1719 3024 MS (a)1741 3024 MS (t)1763 3024 MS (i)1779 3024 MS (o)1791 3024 MS (n)1817 3024 MS (s)1841 3024 MS ( )1861 3024 MS (d)1895 3024 MS (e)1920 3024 MS ( )1942 3024 MS (l)1977 3024 MS (\222)1990 3024 MS (O)2007 3024 MS (M)2043 3024 MS
+(G)2088 3024 MS ( )2125 3024 MS
+(c)235 3081 MS (o)257 3081 MS (n)283 3081 MS (c)307 3081 MS (e)329 3081 MS (r)351 3081 MS (n)368 3081 MS (a)392 3081 MS (n)415 3081 MS (t)439 3081 MS ( )454 3081 MS (u)467 3081 MS (n)492 3081 MS ( )516 3081 MS (O)529 3081 MS (R)565 3081 MS
+(B)598 3081 MS ( )631 3081 MS (p)644 3081 MS (a)669 3081 MS (r)691 3081 MS (a)708 3081 MS (l)731 3081 MS (l)744 3081 MS (\350)757 3081 MS (l)780 3081 MS (e)793 3081 MS (.)815 3081 MS ( )828 3081 MS (U)841 3081 MS (n)878 3081 MS (e)902 3081 MS
+( )924 3081 MS (p)937 3081 MS (r)962 3081 MS (e)979 3081 MS (m)1002 3081 MS (i)1040 3081 MS (\350)1053 3081 MS (r)1075 3081 MS (e)1092 3081 MS ( )1114 3081 MS (v)1128 3081 MS (e)1152 3081 MS (r)1174 3081 MS (s)1191 3081 MS (i)1211 3081 MS (o)1223 3081 MS
+(n)1250 3081 MS ( )1274 3081 MS (d)1287 3081 MS (e)1312 3081 MS (v)1335 3081 MS (r)1359 3081 MS (a)1376 3081 MS (i)1399 3081 MS (t)1411 3081 MS ( )1426 3081 MS (\352)1439 3081 MS (t)1461 3081 MS (r)1476 3081 MS (e)1493 3081 MS ( )1514 3081 MS (d)1527 3081 MS
+(i)1552 3081 MS (s)1565 3081 MS (p)1584 3081 MS (o)1609 3081 MS (n)1635 3081 MS (i)1660 3081 MS (b)1673 3081 MS (l)1698 3081 MS (e)1711 3081 MS ( )1733 3081 MS (e)1746 3081 MS (n)1769 3081 MS ( )1793 3081 MS (m)1807 3081 MS (a)1845 3081 MS (r)1867 3081 MS
+(s)1884 3081 MS ( )1903 3081 MS (2)1916 3081 MS (0)1941 3081 MS (0)1966 3081 MS (3)1991 3081 MS (.)2016 3081 MS
+( )2029 3081 MS
+( )348 3139 MS
+showpage
+%%Page: 7 7
+14.449 827.879 translate 72 300 div dup neg scale
+0 0 transform .25 add round .25 sub exch .25 add round .25 sub exch itransform translate
+1 j
+1 setlinecap
+72 sl
+0.375 g
+n
+494 182 M
+494 155 472 133 445 133 c
+418 133 396 155 396 182 c
+396 209 418 231 445 231 c
+472 231 494 209 494 182 c
+cp
+CM 0.156 0.152 scale
+s
+SM
+71 sl
+n
+660 182 M
+660 155 638 133 611 133 c
+584 133 562 155 562 182 c
+562 209 584 231 611 231 c
+638 231 660 209 660 182 c
+cp
+CM 0.156 0.152 scale
+s
+SM
+n
+120 24 468 152 B
+1 g
+f
+1 sl
+n
+122 26 467 151 B
+cp
+s
+71 sl
+0.375 g
+n
+577 180 M
+577 153 555 131 528 131 c
+501 131 479 153 479 180 c
+479 206 501 228 528 228 c
+555 228 577 206 577 180 c
+cp
+gs
+1 g
+e
+gr
+CM 0.156 0.152 scale
+s
+SM
+n
+480 180 M
+575 180 L
+CM 0.156 0.152 scale
+s
+SM
+n
+34 18 562 187 B
+1 g
+f
+1 sl
+n
+36 20 561 186 B
+cp
+s
+n
+610 173 M
+591 173 L
+554 124 L
+579 126 L
+609 173 L
+610 173 L
+cp
+gs
+e
+gr
+s
+n
+448 170 M
+468 170 L
+504 122 L
+479 123 L
+449 170 L
+448 170 L
+cp
+gs
+e
+gr
+s
+0.375 g
+n
+473 140 M
+473 137 470 135 467 135 c
+464 135 462 137 462 140 c
+462 142 464 145 467 145 c
+470 145 473 142 473 140 c
+cp
+gs
+e
+gr
+s
+n
+593 139 M
+593 136 590 134 588 134 c
+585 134 583 136 583 139 c
+583 141 585 144 588 144 c
+590 144 593 141 593 139 c
+cp
+gs
+e
+gr
+s
+72 sl
+n
+665 137 M
+665 229 L
+CM 0.156 0.152 scale
+s
+SM
+[29 0 0 -29 0 0]/Times-Roman MF
+0 g
+( )676 243 MS
+[50 0 0 -50 0 0]/Times-Roman MF
+(D)400 289 MS (E)436 289 MS (N)467 289 MS ( )503 289 MS ( )516 289 MS (S)529 289 MS (a)557 289 MS (c)579 289 MS (l)601 289 MS (a)613 289 MS (y)636 289 MS
+( )660 289 MS
+( )1297 140 MS
+[38 0 0 -38 0 0]/Times-Roman MF
+(S)1785 129 MS (F)1806 129 MS (M)1827 129 MS (E)1861 129 MS (/)1883 129 MS (L)1894 129 MS (G)1916 129 MS (L)1943 129 MS (S)1965 129 MS (/)1986 129 MS (R)1997 129 MS (T)2022 129 MS (/)2045 129 MS (0)2056 129 MS (2)2075 129 MS
+(-)2094 129 MS
+(0)2106 129 MS (0)2125 129 MS (2)2144 129 MS
+( )2163 129 MS
+(D)1785 173 MS (a)1812 173 MS (t)1829 173 MS (e)1840 173 MS
+( )1856 173 MS
+(:)1866 173 MS
+( )1875 173 MS
+(3)1885 173 MS (0)1904 173 MS (/)1923 173 MS (0)1934 173 MS (5)1952 173 MS (/)1971 173 MS (2)1982 173 MS (0)2000 173 MS (0)2019 173 MS (2)2038 173 MS
+( )2057 173 MS
+n
+5 5 232 89 B
+f
+n
+5 5 232 89 B
+f
+n
+584 5 238 89 B
+f
+n
+5 5 823 89 B
+f
+n
+938 5 829 89 B
+f
+n
+5 5 1768 89 B
+f
+n
+436 5 1774 89 B
+f
+n
+5 5 2211 89 B
+f
+n
+5 5 2211 89 B
+f
+n
+5 256 232 95 B
+f
+n
+2 256 823 95 B
+f
+n
+2 256 1768 95 B
+f
+n
+5 256 2211 95 B
+f
+[50 0 0 -50 0 0]/Times-Roman MF
+(D)322 400 MS (M)358 400 MS (2)402 400 MS (S)427 400 MS (/)455 400 MS (S)469 400 MS (F)497 400 MS (M)524 400 MS (E)568 400 MS (/)599 400 MS (L)613 400 MS (G)643 400 MS (L)680 400 MS (S)710 400 MS
+( )738 400 MS
+[50 0 0 -50 0 0]/Times-Bold MF
+gs
+n
+241 53 1102 367 CB
+(R)1102 413 MS (A)1138 413 MS (P)1174 413 MS (P)1204 413 MS (O)1234 413 MS (R)1273 413 MS (T)1310 413 MS
+gr
+gs
+n
+150 53 1343 367 CB
+( )1343 413 MS (D)1356 413 MS (M)1392 413 MS (2)1440 413 MS (S)1465 413 MS
+gr
+[50 0 0 -50 0 0]/Times-Roman MF
+gs
+n
+24 52 1493 368 CB
+( )1493 413 MS
+gr
+[38 0 0 -38 0 0]/Times-Roman MF
+(P)1785 400 MS (a)1806 400 MS (g)1823 400 MS (e)1841 400 MS ( )1858 400 MS
+[50 0 0 -50 0 0]/Times-Roman MF
+(7)1868 400 MS
+(/)1893 400 MS
+(3)1907 400 MS (0)1932 400 MS
+[38 0 0 -38 0 0]/Times-Roman MF
+( )1957 400 MS
+n
+5 2 232 352 B
+f
+n
+2 2 823 352 B
+f
+n
+941 2 826 352 B
+f
+n
+2 2 1768 352 B
+f
+n
+5 2 2211 352 B
+f
+n
+5 67 232 355 B
+f
+n
+590 1 232 423 B
+f
+n
+2 67 823 355 B
+f
+n
+1 1 823 423 B
+f
+n
+942 1 825 423 B
+f
+n
+2 67 1768 355 B
+f
+n
+1 1 1768 423 B
+f
+n
+440 1 1770 423 B
+f
+n
+5 67 2211 355 B
+f
+n
+5 1 2211 423 B
+f
+[50 0 0 -50 0 0]/Times-Roman MF
+( )235 470 MS
+[33 0 0 -33 0 0]/Times-Roman MF
+/IsChar{exch/CharStrings get exch known}bd/MapCh{3 -1 roll/Encoding get 3 1\r
+roll put}bd/MapDegree{dup 16#b0 exch/degree IsChar{/degree}{/ring}ifelse MapCh}\r
+bd/MapBB{dup 16#a6 exch/brokenbar IsChar{/brokenbar}{/bar}ifelse MapCh}bd\r
+/reencode{findfont begin currentdict dup length dict begin{1 index/FID ne{def}\r
+{pop pop}ifelse}forall/FontName exch def dup length 0 ne{/Encoding Encoding 256\r
+array copy def 0 exch{dup type/nametype eq{Encoding 2 index 2 index put pop 1\r
+add}{exch pop}ifelse}forall}if pop currentdict dup end end/FontName get exch\r
+definefont dup MapDegree MapBB}bd/LATENC[0/grave/acute/circumflex/tilde/macron\r
+/breve/dotaccent/dieresis/ring/cedilla/hungarumlaut/ogonek/caron/dotlessi/fi/fl\r
+/Lslash/lslash/Zcaron/zcaron/minus/.notdef/.notdef/.notdef/.notdef/.notdef\r
+/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/space/exclam/quotedbl\r
+/numbersign/dollar/percent/ampersand/quotesingle/parenleft/parenright/asterisk\r
+/plus/comma/hyphen/period/slash/zero/one/two/three/four/five/six/seven/eight\r
+/nine/colon/semicolon/less/equal/greater/question/at/A/B/C/D/E/F/G/H/I/J/K/L/M\r
+/N/O/P/Q/R/S/T/U/V/W/X/Y/Z/bracketleft/backslash/bracketright/asciicircum\r
+/underscore/grave/a/b/c/d/e/f/g/h/i/j/k/l/m/n/o/p/q/r/s/t/u/v/w/x/y/z/braceleft\r
+/bar/braceright/asciitilde/.notdef/.notdef/.notdef/quotesinglbase/florin\r
+/quotedblbase/ellipsis/dagger/daggerdbl/circumflex/perthousand/Scaron\r
+/guilsinglleft/OE/.notdef/.notdef/.notdef/.notdef/quoteleft/quoteright\r
+/quotedblleft/quotedblright/bullet/endash/emdash/tilde/trademark/scaron\r
+/guilsinglright/oe/.notdef/.notdef/Ydieresis/.notdef/exclamdown/cent/sterling\r
+/currency/yen/brokenbar/section/dieresis/copyright/ordfeminine/guillemotleft\r
+/logicalnot/hyphen/registered/macron/degree/plusminus/twosuperior/threesuperior\r
+/acute/mu/paragraph/periodcentered/cedilla/onesuperior/ordmasculine\r
+/guillemotright/onequarter/onehalf/threequarters/questiondown/Agrave/Aacute\r
+/Acircumflex/Atilde/Adieresis/Aring/AE/Ccedilla/Egrave/Eacute/Ecircumflex\r
+/Edieresis/Igrave/Iacute/Icircumflex/Idieresis/Eth/Ntilde/Ograve/Oacute\r
+/Ocircumflex/Otilde/Odieresis/multiply/Oslash/Ugrave/Uacute/Ucircumflex\r
+/Udieresis/Yacute/Thorn/germandbls/agrave/aacute/acircumflex/atilde/adieresis\r
+/aring/ae/ccedilla/egrave/eacute/ecircumflex/edieresis/igrave/iacute\r
+/icircumflex/idieresis/eth/ntilde/ograve/oacute/ocircumflex/otilde/odieresis\r
+/divide/oslash/ugrave/uacute/ucircumflex/udieresis/yacute/thorn/ydieresis]def\r
+LATENC /_Times-Roman /Times-Roman reencode
+[33 0 0 -33 0 0]/_Times-Roman MF
+(L)242 3256 MS (e)262 3256 MS (s)277 3256 MS ( )289 3256 MS (i)298 3256 MS (n)307 3256 MS (f)324 3256 MS (o)335 3256 MS (r)351 3256 MS (m)363 3256 MS (a)388 3256 MS (t)403 3256 MS (i)412 3256 MS (o)422 3256 MS (n)439 3256 MS (s)456 3256 MS
+( )468 3256 MS (c)477 3256 MS (o)492 3256 MS (n)508 3256 MS (t)524 3256 MS (e)534 3256 MS (n)549 3256 MS (u)565 3256 MS (e)582 3256 MS (s)597 3256 MS ( )610 3256 MS (d)618 3256 MS (a)634 3256 MS (n)650 3256 MS (s)667 3256 MS ( )679 3256 MS
+(c)688 3256 MS (e)703 3256 MS ( )717 3256 MS (d)726 3256 MS (o)742 3256 MS (c)759 3256 MS (u)773 3256 MS (m)791 3256 MS (e)817 3256 MS (n)831 3256 MS (t)847 3256 MS ( )857 3256 MS (s)866 3256 MS (o)878 3256 MS (n)895 3256 MS (t)911 3256 MS
+( )921 3256 MS (r)929 3256 MS (\351)941 3256 MS (s)956 3256 MS (e)968 3256 MS (r)982 3256 MS (v)994 3256 MS (\351)1011 3256 MS (e)1026 3256 MS (s)1041 3256 MS ( )1053 3256 MS (a)1061 3256 MS (u)1076 3256 MS (x)1093 3256 MS ( )1109 3256 MS (d)1118 3256 MS
+(e)1135 3256 MS (s)1150 3256 MS (t)1162 3256 MS (i)1171 3256 MS (n)1181 3256 MS (a)1197 3256 MS (t)1212 3256 MS (a)1221 3256 MS (i)1236 3256 MS (r)1245 3256 MS (e)1257 3256 MS (s)1272 3256 MS ( )1284 3256 MS (n)1293 3256 MS (o)1309 3256 MS (m)1326 3256 MS
+(m)1352 3256 MS (\351)1378 3256 MS (m)1393 3256 MS (e)1419 3256 MS (n)1433 3256 MS (t)1450 3256 MS ( )1459 3256 MS (d)1468 3256 MS (\351)1484 3256 MS (s)1499 3256 MS (i)1512 3256 MS (g)1521 3256 MS
+(n)1538 3256 MS (\351)1555 3256 MS (s)1570 3256 MS ( )1582 3256 MS (e)1591 3256 MS (t)1605 3256 MS ( )1615 3256 MS (n)1623 3256 MS (e)1640 3256 MS ( )1654 3256 MS (p)1663 3256 MS (e)1680 3256 MS (u)1694 3256 MS (v)1711 3256 MS (e)1728 3256 MS (n)1743 3256 MS
+(t)1759 3256 MS ( )1768 3256 MS (r)1776 3256 MS (e)1788 3256 MS (c)1803 3256 MS (e)1818 3256 MS (v)1832 3256 MS (o)1849 3256 MS (i)1865 3256 MS (r)1874 3256 MS ( )1886 3256 MS (a)1894 3256 MS (u)1909 3256 MS (c)1926 3256 MS (u)1940 3256 MS (n)1957 3256 MS
+(e)1974 3256 MS ( )1988 3256 MS (d)1997 3256 MS (i)2013 3256 MS (f)2023 3256 MS (f)2034 3256 MS (u)2044 3256 MS (s)2062 3256 MS (i)2074 3256 MS (o)2084 3256 MS (n)2101 3256 MS
+( )2117 3256 MS
+(s)928 3294 MS (a)940 3294 MS (n)955 3294 MS (s)972 3294 MS ( )985 3294 MS (l)993 3294 MS (\222)1002 3294 MS (a)1013 3294 MS (u)1028 3294 MS (t)1045 3294 MS (o)1054 3294 MS (r)1071 3294 MS (i)1082 3294 MS (s)1092 3294 MS (a)1104 3294 MS (t)1119 3294 MS
+(i)1128 3294 MS (o)1138 3294 MS (n)1154 3294 MS ( )1171 3294 MS (e)1180 3294 MS (x)1194 3294 MS (p)1211 3294 MS (r)1227 3294 MS (e)1239 3294 MS (s)1254 3294 MS (s)1267 3294 MS (e)1280 3294 MS ( )1294 3294 MS (d)1303 3294 MS (u)1319 3294 MS ( )1336 3294 MS
+(D)1344 3294 MS (M)1368 3294 MS (2)1397 3294 MS (S)1414 3294 MS
+[50 0 0 -50 0 0]/Times-Roman MF
+( )1432 3294 MS
+LATENC /_Times-Roman /Times-Roman reencode
+[50 0 0 -50 0 0]/_Times-Roman MF
+(D)348 527 MS (\222)384 527 MS (a)400 527 MS (u)422 527 MS (t)447 527 MS (r)462 527 MS (e)479 527 MS (s)501 527 MS ( )520 527 MS (l)545 527 MS (a)557 527 MS (b)580 527 MS (o)604 527 MS (r)630 527 MS (a)647 527 MS (t)669 527 MS
+(o)683 527 MS (i)709 527 MS (r)721 527 MS (e)738 527 MS (s)760 527 MS ( )779 527 MS (c)803 527 MS (o)825 527 MS (m)852 527 MS (m)890 527 MS (e)928 527 MS ( )950 527 MS (l)975 527 MS (e)988 527 MS ( )1011 527 MS (C)1035 527 MS
+(E)1068 527 MS (R)1099 527 MS (F)1133 527 MS (A)1161 527 MS (C)1196 527 MS (S)1229 527 MS ( )1257 527 MS (o)1281 527 MS (u)1307 527 MS ( )1332 527 MS (l)1357 527 MS (\222)1370 527 MS (I)1386 527 MS (N)1403 527 MS (R)1439 527 MS (I)1472 527 MS
+(A)1489 527 MS ( )1525 527 MS (R)1549 527 MS (h)1583 527 MS (\364)1607 527 MS (n)1633 527 MS (e)1657 527 MS
+(-)1679 527 MS
+(A)1697 527 MS (l)1733 527 MS (p)1746 527 MS (e)1771 527 MS (s)1793 527 MS ( )1812 527 MS (p)1836 527 MS (r)1861 527 MS (o)1878 527 MS (p)1904 527 MS (o)1929 527 MS (s)1955 527 MS (e)1974 527 MS (n)1996 527 MS (t)2020 527 MS ( )2035 527 MS
+(d)2059 527 MS (e)2084 527 MS (s)2106 527 MS ( )2125 527 MS
+(s)235 585 MS (o)254 585 MS (l)280 585 MS (u)292 585 MS (t)317 585 MS (i)333 585 MS (o)345 585 MS (n)371 585 MS (s)396 585 MS ( )415 585 MS (b)440 585 MS (a)464 585 MS (s)487 585 MS (\351)506 585 MS (e)528 585 MS (s)551 585 MS
+( )570 585 MS (s)595 585 MS (o)614 585 MS (i)641 585 MS (t)653 585 MS ( )668 585 MS (s)693 585 MS (u)712 585 MS (r)737 585 MS
+( )754 585 MS (C)779 585 MS (O)812 585 MS (R)848 585 MS (B)881 585 MS (A)914 585 MS ( )949 585 MS (\()974 585 MS (p)991 585 MS (i)1017 585 MS (l)1030 585 MS (o)1042 585 MS (t)1068 585 MS (e)1083 585 MS ( )1105 585 MS (A)1130 585 MS
+(t)1165 585 MS (h)1180 585 MS (a)1204 585 MS (p)1226 585 MS (a)1252 585 MS (s)1274 585 MS (c)1293 585 MS (a)1315 585 MS (n)1338 585 MS
+(-)1362 585 MS
+(C)1379 585 MS (O)1412 585 MS (R)1448 585 MS (B)1482 585 MS (A)1516 585 MS (\))1551 585 MS ( )1568 585 MS (s)1593 585 MS (o)1612 585 MS (i)1638 585 MS (t)1650 585 MS ( )1665 585 MS (u)1690 585 MS (n)1715 585 MS (i)1740 585 MS (q)1753 585 MS
+(u)1778 585 MS (e)1803 585 MS (m)1826 585 MS (e)1864 585 MS (n)1887 585 MS (t)1911 585 MS ( )1926 585 MS (s)1951 585 MS (u)1970 585 MS (r)1995 585 MS ( )2012 585 MS (M)2037 585 MS (P)2081 585 MS (I)2109 585 MS ( )2125 585 MS
+(\()235 642 MS (P)252 642 MS (A)280 642 MS (L)315 642 MS (M)346 642 MS (\))390 642 MS ( )407 642 MS ([)420 642 MS (1)437 642 MS (2)462 642 MS (])487 642 MS (.)503 642 MS
+( )516 642 MS
+( )348 700 MS
+[67 0 0 -67 0 0]/Helvetica-Bold MF
+(3)310 822 MS
+( )347 822 MS
+LATENC /_Helvetica-Bold /Helvetica-Bold reencode
+[67 0 0 -67 0 0]/_Helvetica-Bold MF
+(A)400 822 MS (p)446 822 MS (p)488 822 MS (r)529 822 MS (o)555 822 MS (c)596 822 MS (h)633 822 MS (e)674 822 MS ( )711 822 MS (d)730 822 MS (\351)771 822 MS (v)808 822 MS (e)845 822 MS (l)882 822 MS (o)901 822 MS (p)941 822 MS
+(p)982 822 MS (\351)1023 822 MS (e)1060 822 MS ( )1097 822 MS (d)1116 822 MS (a)1157 822 MS (n)1193 822 MS (s)1234 822 MS ( )1271 822 MS (c)1290 822 MS (e)1327 822 MS (t)1364 822 MS (t)1386 822 MS (e)1407 822 MS ( )1444 822 MS (\351)1463 822 MS
+(t)1500 822 MS (u)1522 822 MS (d)1563 822 MS (e)1604 822 MS
+( )1641 822 MS
+[50 0 0 -50 0 0]/Times-Roman MF
+( )348 897 MS
+LATENC /_Times-Roman /Times-Roman reencode
+[50 0 0 -50 0 0]/_Times-Roman MF
+(L)348 954 MS (\222)378 954 MS (i)395 954 MS (n)408 954 MS (t)432 954 MS (r)447 954 MS (o)464 954 MS (d)490 954 MS (u)515 954 MS (c)540 954 MS (t)562 954 MS (i)577 954 MS (o)589 954 MS (n)615 954 MS ( )639 954 MS (d)660 954 MS
+(u)685 954 MS ( )710 954 MS (p)731 954 MS (a)756 954 MS (r)778 954 MS (a)795 954 MS (l)818 954 MS (l)831 954 MS (\351)844 954 MS (l)867 954 MS (i)881 954 MS (s)894 954 MS (m)914 954 MS (e)952 954 MS ( )974 954 MS (d)995 954 MS
+(a)1021 954 MS (n)1044 954 MS (s)1068 954 MS ( )1087 954 MS (l)1109 954 MS (\222)1122 954 MS (a)1139 954 MS (r)1161 954 MS (c)1178 954 MS (h)1200 954 MS (i)1225 954 MS (t)1237 954 MS (e)1252 954 MS (c)1275 954 MS (t)1297 954 MS (u)1312 954 MS
+(r)1337 954 MS (e)1353 954 MS ( )1375 954 MS (l)1397 954 MS (o)1409 954 MS (g)1435 954 MS (i)1461 954 MS (c)1473 954 MS (i)1496 954 MS (e)1509 954 MS (l)1532 954 MS (l)1546 954 MS (e)1559 954 MS ( )1581 954 MS (d)1602 954 MS (u)1627 954 MS
+( )1652 954 MS (p)1673 954 MS (r)1698 954 MS (o)1715 954 MS (j)1741 954 MS (e)1753 954 MS (t)1775 954 MS ( )1790 954 MS (P)1811 954 MS (A)1839 954 MS (L)1875 954 MS (/)1905 954 MS (S)1919 954 MS (A)1947 954 MS (L)1983 954 MS (O)2013 954 MS
+(M)2050 954 MS (E)2094 954 MS ( )2125 954 MS
+(d)235 1012 MS (o)260 1012 MS (i)286 1012 MS (t)298 1012 MS ( )313 1012 MS (\352)336 1012 MS (t)358 1012 MS (r)373 1012 MS (e)390 1012 MS ( )412 1012 MS (d)435 1012 MS (i)460 1012 MS (r)472 1012 MS (e)489 1012 MS (c)511 1012 MS (t)533 1012 MS
+(e)548 1012 MS (m)571 1012 MS (e)609 1012 MS (n)632 1012 MS (t)656 1012 MS ( )671 1012 MS (l)695 1012 MS (i)708 1012 MS (\351)721 1012 MS (e)743 1012 MS ( )766 1012 MS (\340)789 1012 MS ( )811 1012 MS (l)835 1012 MS (a)848 1012 MS ( )871 1012 MS
+(d)894 1012 MS (\351)919 1012 MS (f)942 1012 MS (i)958 1012 MS (n)971 1012 MS (i)997 1012 MS (t)1009 1012 MS (i)1025 1012 MS (o)1037 1012 MS (n)1064 1012 MS ( )1089 1012 MS (e)1112 1012 MS (x)1135 1012 MS (a)1159 1012 MS (c)1181 1012 MS (t)1203 1012 MS
+(e)1218 1012 MS ( )1240 1012 MS (d)1263 1012 MS (u)1288 1012 MS ( )1313 1012 MS (g)1336 1012 MS (r)1361 1012 MS (a)1378 1012 MS (i)1401 1012 MS (n)1414 1012 MS ( )1439 1012 MS (d)1462 1012 MS (e)1487 1012 MS (s)1510 1012 MS ( )1529 1012 MS (c)1552 1012 MS
+(o)1574 1012 MS (m)1601 1012 MS (p)1638 1012 MS (o)1663 1012 MS (s)1689 1012 MS (a)1708 1012 MS (n)1731 1012 MS (t)1755 1012 MS (s)1770 1012 MS (.)1789 1012 MS ( )1802 1012 MS (E)1825 1012 MS (n)1856 1012 MS ( )1880 1012 MS (e)1903 1012 MS (f)1926 1012 MS
+(f)1943 1012 MS (e)1959 1012 MS (t)1981 1012 MS (,)1996 1012 MS ( )2009 1012 MS (s)2032 1012 MS (i)2052 1012 MS ( )2064 1012 MS (l)2088 1012 MS (e)2102 1012 MS ( )2125 1012 MS
+(c)235 1069 MS (o)257 1069 MS (u)283 1069 MS (p)308 1069 MS (l)333 1069 MS (a)345 1069 MS (g)367 1069 MS (e)392 1069 MS ( )414 1069 MS (d)429 1069 MS (e)454 1069 MS (s)477 1069 MS ( )496 1069 MS (c)511 1069 MS (o)533 1069 MS (d)559 1069 MS
+(e)584 1069 MS (s)606 1069 MS ( )625 1069 MS (r)640 1069 MS (e)657 1069 MS (s)679 1069 MS (t)698 1069 MS (e)713 1069 MS ( )735 1069 MS (a)750 1069 MS (u)772 1069 MS ( )797 1069 MS (n)812 1069 MS (i)837 1069 MS (v)850 1069 MS (e)875 1069 MS
+(a)897 1069 MS (u)919 1069 MS ( )944 1069 MS (d)959 1069 MS (u)984 1069 MS ( )1009 1069 MS (c)1024 1069 MS (h)1047 1069 MS (a)1071 1069 MS (\356)1094 1069 MS (n)1107 1069 MS (a)1132 1069 MS (g)1154 1069 MS (e)1179 1069 MS (,)1201 1069 MS ( )1214 1069 MS
+(i)1230 1069 MS (l)1243 1069 MS ( )1257 1069 MS (n)1272 1069 MS (\222)1296 1069 MS (e)1313 1069 MS (s)1335 1069 MS (t)1354 1069 MS ( )1369 1069 MS (p)1384 1069 MS (a)1409 1069 MS (s)1431 1069 MS ( )1450 1069 MS (i)1466 1069 MS (n)1479 1069 MS (d)1503 1069 MS
+(i)1529 1069 MS (s)1542 1069 MS (p)1562 1069 MS (e)1587 1069 MS (n)1610 1069 MS (s)1634 1069 MS (a)1653 1069 MS (b)1676 1069 MS (l)1701 1069 MS (e)1714 1069 MS ( )1736 1069 MS (\()1751 1069 MS (b)1769 1069 MS (i)1794 1069 MS (e)1807 1069 MS (n)1830 1069 MS
+( )1854 1069 MS (q)1869 1069 MS (u)1894 1069 MS (e)1919 1069 MS ( )1941 1069 MS (c)1956 1069 MS (e)1978 1069 MS (l)2001 1069 MS (a)2014 1069 MS ( )2036 1069 MS (s)2052 1069 MS (o)2071 1069 MS (i)2097 1069 MS (t)2109 1069 MS ( )2125 1069 MS
+(p)235 1127 MS (l)261 1127 MS (u)273 1127 MS (s)298 1127 MS ( )317 1127 MS (p)332 1127 MS (e)357 1127 MS (r)379 1127 MS (f)397 1127 MS (o)412 1127 MS (r)438 1127 MS (m)456 1127 MS (a)493 1127 MS (n)516 1127 MS (t)540 1127 MS (\))555 1127 MS
+( )572 1127 MS (d)587 1127 MS (\222)612 1127 MS (i)629 1127 MS (n)642 1127 MS (t)666 1127 MS (r)681 1127 MS (o)697 1127 MS (d)723 1127 MS (u)748 1127 MS (i)773 1127 MS (r)785 1127 MS (e)802 1127 MS ( )824 1127 MS (d)839 1127 MS (a)864 1127 MS
+(n)887 1127 MS (s)912 1127 MS ( )931 1127 MS (l)947 1127 MS (a)959 1127 MS ( )981 1127 MS (n)997 1127 MS (o)1021 1127 MS (t)1047 1127 MS (i)1062 1127 MS (o)1074 1127 MS (n)1100 1127 MS ( )1124 1127 MS (d)1139 1127 MS (e)1164 1127 MS ( )1186 1127 MS
+(c)1201 1127 MS (o)1223 1127 MS (m)1248 1127 MS (p)1286 1127 MS (o)1311 1127 MS (s)1337 1127 MS (a)1356 1127 MS (n)1379 1127 MS (t)1403 1127 MS ( )1418 1127 MS (p)1433 1127 MS (a)1458 1127 MS (r)1480 1127 MS (a)1497 1127 MS (l)1519 1127 MS (l)1532 1127 MS
+(\350)1545 1127 MS (l)1568 1127 MS (e)1581 1127 MS ( )1603 1127 MS (l)1619 1127 MS (a)1632 1127 MS ( )1654 1127 MS (p)1669 1127 MS (o)1694 1127 MS (s)1720 1127 MS (s)1739 1127 MS (i)1759 1127 MS (b)1772 1127 MS (i)1797 1127 MS (l)1811 1127 MS (i)1825 1127 MS
+(t)1837 1127 MS (\351)1852 1127 MS ( )1874 1127 MS (d)1889 1127 MS (\222)1914 1127 MS
+( )1930 1127 MS
+(\351)1943 1127 MS (c)1965 1127 MS (h)1988 1127 MS (a)2012 1127 MS (n)2035 1127 MS (g)2059 1127 MS (e)2085 1127 MS (r)2107 1127 MS ( )2125 1127 MS
+(d)235 1184 MS (e)260 1184 MS (s)282 1184 MS ( )301 1184 MS (d)321 1184 MS (o)346 1184 MS (n)372 1184 MS (n)397 1184 MS (\351)421 1184 MS (e)443 1184 MS (s)466 1184 MS ( )485 1184 MS (d)505 1184 MS (i)531 1184 MS (s)544 1184 MS (t)563 1184 MS
+(r)578 1184 MS (i)596 1184 MS (b)609 1184 MS (u)633 1184 MS (\351)658 1184 MS (e)680 1184 MS (s)702 1184 MS (.)721 1184 MS ( )734 1184 MS (P)754 1184 MS (a)782 1184 MS (r)804 1184 MS ( )821 1184 MS (c)841 1184 MS (o)863 1184 MS (n)889 1184 MS
+(t)913 1184 MS (r)928 1184 MS (e)945 1184 MS ( )967 1184 MS (s)987 1184 MS (i)1007 1184 MS ( )1019 1184 MS
+(l)1040 1184 MS (\222)1053 1184 MS (o)1069 1184 MS (n)1096 1184 MS ( )1120 1184 MS (v)1141 1184 MS (i)1166 1184 MS (s)1179 1184 MS (e)1199 1184 MS ( )1221 1184 MS (d)1242 1184 MS (e)1267 1184 MS (s)1289 1184 MS ( )1308 1184 MS (c)1328 1184 MS (o)1350 1184 MS
+(u)1376 1184 MS (p)1401 1184 MS (l)1427 1184 MS (a)1439 1184 MS (g)1461 1184 MS (e)1486 1184 MS (s)1509 1184 MS ( )1528 1184 MS (b)1549 1184 MS (e)1573 1184 MS (a)1595 1184 MS (u)1617 1184 MS (c)1642 1184 MS (o)1664 1184 MS (u)1690 1184 MS (p)1715 1184 MS
+( )1740 1184 MS (p)1760 1184 MS (l)1786 1184 MS (u)1798 1184 MS (s)1824 1184 MS ( )1843 1184 MS (f)1864 1184 MS (i)1881 1184 MS (n)1894 1184 MS (s)1919 1184 MS (,)1938 1184 MS ( )1951 1184 MS (a)1971 1184 MS (l)1994 1184 MS (o)2006 1184 MS (r)2032 1184 MS
+(s)2049 1184 MS ( )2068 1184 MS (l)2089 1184 MS (a)2102 1184 MS ( )2125 1184 MS
+(n)235 1242 MS (\351)259 1242 MS (c)281 1242 MS (e)304 1242 MS (s)326 1242 MS (s)345 1242 MS (i)365 1242 MS (t)377 1242 MS (\351)392 1242 MS ( )414 1242 MS (d)443 1242 MS (e)468 1242 MS ( )490 1242 MS (p)519 1242 MS (r)544 1242 MS (e)561 1242 MS
+(n)584 1242 MS (d)608 1242 MS (r)633 1242 MS (e)650 1242 MS ( )672 1242 MS (e)701 1242 MS (n)723 1242 MS ( )747 1242 MS (c)776 1242 MS (o)798 1242 MS (m)825 1242 MS (p)862 1242 MS (t)887 1242 MS (e)902 1242 MS ( )924 1242 MS (l)953 1242 MS
+(e)965 1242 MS (s)988 1242 MS ( )1007 1242 MS (\351)1036 1242 MS (c)1058 1242 MS (h)1081 1242 MS (a)1105 1242 MS (n)1128 1242 MS (g)1152 1242 MS (e)1177 1242 MS (s)1200 1242 MS ( )1219 1242 MS (d)1248 1242 MS (e)1273 1242 MS ( )1295 1242 MS (d)1324 1242 MS
+(o)1349 1242 MS (n)1375 1242 MS (n)1399 1242 MS (\351)1423 1242 MS (e)1445 1242 MS (s)1468 1242 MS ( )1487 1242 MS (d)1516 1242 MS (i)1542 1242 MS (s)1554 1242 MS (t)1573 1242 MS (r)1588 1242 MS (i)1606 1242 MS (b)1619 1242 MS (u)1643 1242 MS (\351)1668 1242 MS
+(e)1690 1242 MS (s)1713 1242 MS ( )1732 1242 MS (e)1761 1242 MS (s)1783 1242 MS (t)1802 1242 MS ( )1817 1242 MS (\340)1846 1242 MS ( )1868 1242 MS (p)1897 1242 MS (r)1922 1242 MS (e)1939 1242 MS (n)1961 1242 MS (d)1985 1242 MS (r)2010 1242 MS (e)2027 1242 MS
+( )2049 1242 MS (e)2078 1242 MS (n)2100 1242 MS ( )2125 1242 MS
+(c)235 1299 MS (o)257 1299 MS (n)283 1299 MS (s)307 1299 MS (i)327 1299 MS (d)340 1299 MS (\351)365 1299 MS (r)387 1299 MS (a)404 1299 MS (t)426 1299 MS (i)441 1299 MS (o)453 1299 MS (n)479 1299 MS (.)503 1299 MS ( )516 1299 MS
+( )529 1299 MS
+(C)348 1357 MS (e)381 1357 MS ( )403 1357 MS (d)418 1357 MS (o)443 1357 MS (c)469 1357 MS (u)491 1357 MS (m)517 1357 MS (e)554 1357 MS (n)577 1357 MS (t)601 1357 MS ( )616 1357 MS (t)631 1357 MS (r)646 1357 MS (a)663 1357 MS (i)685 1357 MS
+(t)697 1357 MS (e)712 1357 MS ( )734 1357 MS (d)749 1357 MS (o)774 1357 MS (n)800 1357 MS (c)824 1357 MS ( )846 1357 MS (d)861 1357 MS (e)886 1357 MS ( )908 1357 MS (l)924 1357 MS (a)937 1357 MS ( )959 1357 MS (c)974 1357 MS (o)996 1357 MS
+(m)1023 1357 MS (m)1061 1357 MS (u)1099 1357 MS (n)1125 1357 MS (i)1150 1357 MS (c)1163 1357 MS (a)1185 1357 MS (t)1207 1357 MS (i)1223 1357 MS (o)1235 1357 MS (n)1261 1357 MS ( )1285 1357 MS (e)1300 1357 MS (n)1323 1357 MS (t)1347 1357 MS (r)1362 1357 MS
+(e)1379 1357 MS ( )1401 1357 MS (c)1416 1357 MS (o)1438 1357 MS (m)1464 1357 MS (p)1501 1357 MS (o)1526 1357 MS (s)1552 1357 MS (a)1571 1357 MS (n)1594 1357 MS (t)1618 1357 MS (s)1633 1357 MS ( )1652 1357 MS (p)1667 1357 MS (a)1692 1357 MS (r)1714 1357 MS
+(a)1731 1357 MS (l)1754 1357 MS (l)1767 1357 MS (\350)1780 1357 MS (l)1803 1357 MS (e)1816 1357 MS (s)1839 1357 MS ( )1858 1357 MS (p)1873 1357 MS (o)1898 1357 MS (u)1924 1357 MS (v)1949 1357 MS (a)1973 1357 MS (n)1996 1357 MS (t)2020 1357 MS ( )2035 1357 MS
+(\352)2050 1357 MS (t)2072 1357 MS (r)2087 1357 MS (e)2104 1357 MS ( )2125 1357 MS
+(d)235 1414 MS (i)261 1414 MS (s)273 1414 MS (t)292 1414 MS (r)307 1414 MS (i)325 1414 MS (b)338 1414 MS (u)362 1414 MS (\351)387 1414 MS (s)409 1414 MS ( )428 1414 MS (s)456 1414 MS (u)475 1414 MS (r)500 1414 MS ( )517 1414 MS (d)545 1414 MS
+(e)570 1414 MS (s)592 1414 MS
+( )611 1414 MS (n)640 1414 MS (o)664 1414 MS (m)691 1414 MS (b)729 1414 MS (r)753 1414 MS (e)770 1414 MS (s)792 1414 MS ( )811 1414 MS (d)839 1414 MS (e)864 1414 MS ( )886 1414 MS (p)914 1414 MS (r)939 1414 MS (o)956 1414 MS (c)982 1414 MS
+(e)1004 1414 MS (s)1026 1414 MS (s)1045 1414 MS (u)1064 1414 MS (s)1089 1414 MS ( )1108 1414 MS (d)1136 1414 MS (i)1162 1414 MS (f)1175 1414 MS (f)1191 1414 MS (\351)1207 1414 MS (r)1229 1414 MS (e)1247 1414 MS (n)1269 1414 MS (t)1293 1414 MS (s)1308 1414 MS
+(.)1327 1414 MS ( )1340 1414 MS (C)1368 1414 MS (e)1401 1414 MS (s)1423 1414 MS ( )1442 1414 MS (c)1470 1414 MS (o)1492 1414 MS (m)1518 1414 MS (p)1555 1414 MS (o)1580 1414 MS (s)1606 1414 MS (a)1625 1414 MS (n)1648 1414 MS (t)1672 1414 MS (s)1687 1414 MS
+( )1706 1414 MS (v)1734 1414 MS (o)1758 1414 MS (n)1784 1414 MS (t)1808 1414 MS ( )1823 1414 MS (\351)1851 1414 MS (c)1873 1414 MS (h)1895 1414 MS (a)1919 1414 MS (n)1942 1414 MS (g)1966 1414 MS (e)1991 1414 MS (r)2013 1414 MS ( )2030 1414 MS (d)2058 1414 MS
+(e)2083 1414 MS (s)2105 1414 MS ( )2125 1414 MS
+(\253)235 1472 MS
+( )259 1472 MS
+(d)272 1472 MS (o)297 1472 MS (n)323 1472 MS (n)347 1472 MS (\351)372 1472 MS (e)394 1472 MS (s)416 1472 MS ( )436 1472 MS (d)460 1472 MS (i)486 1472 MS (s)499 1472 MS (t)518 1472 MS (r)533 1472 MS (i)550 1472 MS (b)563 1472 MS (u)587 1472 MS
+(\351)613 1472 MS (e)635 1472 MS (s)657 1472 MS
+( )676 1472 MS
+(\273)690 1472 MS ( )714 1472 MS (d)738 1472 MS (i)764 1472 MS (r)777 1472 MS (e)794 1472 MS (c)816 1472 MS (t)838 1472 MS (e)853 1472 MS (m)876 1472 MS (e)913 1472 MS (n)936 1472 MS (t)960 1472 MS ( )975 1472 MS (d)999 1472 MS (e)1024 1472 MS
+( )1046 1472 MS (p)1070 1472 MS (r)1095 1472 MS (o)1112 1472 MS (c)1138 1472 MS (e)1160 1472 MS (s)1182 1472 MS (s)1201 1472 MS (u)1220 1472 MS (s)1246 1472 MS ( )1265 1472 MS (\340)1289 1472 MS ( )1311 1472 MS (p)1335 1472 MS (r)1360 1472 MS (o)1377 1472 MS
+(c)1403 1472 MS (e)1425 1472 MS (s)1447 1472 MS (s)1466 1472 MS (u)1485 1472 MS (s)1511 1472 MS ( )1530 1472 MS (s)1555 1472 MS (a)1574 1472 MS (n)1597 1472 MS (s)1621 1472 MS ( )1641 1472 MS (p)1665 1472 MS (a)1690 1472 MS (s)1712 1472 MS (s)1732 1472 MS
+(e)1751 1472 MS (r)1773 1472 MS ( )1790 1472 MS (p)1814 1472 MS (a)1839 1472 MS (r)1861 1472 MS ( )1878 1472 MS (u)1902 1472 MS (n)1928 1472 MS ( )1953 1472 MS (s)1977 1472 MS (e)1996 1472 MS (r)2018 1472 MS (v)2036 1472 MS (e)2060 1472 MS (u)2082 1472 MS
+(r)2107 1472 MS ( )2125 1472 MS
+(u)235 1529 MS (n)260 1529 MS (i)285 1529 MS (q)298 1529 MS (u)323 1529 MS (e)348 1529 MS ( )370 1529 MS (q)385 1529 MS (u)410 1529 MS (i)436 1529 MS ( )449 1529 MS (d)464 1529 MS (e)490 1529 MS (v)513 1529 MS (i)538 1529 MS (e)551 1529 MS
+(n)574 1529 MS (d)598 1529 MS (r)623 1529 MS (a)640 1529 MS (i)663 1529 MS (t)675 1529 MS ( )690 1529 MS (u)705 1529 MS (n)730 1529 MS ( )755 1529 MS (g)770 1529 MS (o)795 1529 MS (u)821 1529 MS (l)846 1529 MS (o)858 1529 MS (t)884 1529 MS
+( )899 1529 MS (d)914 1529 MS (\222)939 1529 MS (\351)955 1529 MS (t)977 1529 MS (r)992 1529 MS (a)1009 1529 MS (n)1031 1529 MS (g)1055 1529 MS (l)1081 1529 MS (e)1093 1529 MS (m)1116 1529 MS (e)1154 1529 MS (n)1177 1529 MS (t)1201 1529 MS ( )1216 1529 MS
+(p)1231 1529 MS (o)1256 1529 MS (u)1282 1529 MS (r)1307 1529 MS ( )1324 1529 MS (l)1339 1529 MS (e)1351 1529 MS ( )1373 1529 MS (t)1388 1529 MS (r)1403 1529 MS (a)1420 1529 MS (n)1442 1529 MS (s)1466 1529 MS (f)1486 1529 MS (e)1502 1529 MS (r)1524 1529 MS
+(t)1541 1529 MS ( )1556 1529 MS (d)1571 1529 MS (e)1596 1529 MS ( )1618 1529 MS (c)1633 1529 MS (e)1655 1529 MS (s)1677 1529 MS ( )1696 1529 MS (d)1711 1529 MS (o)1736 1529 MS (n)1762 1529 MS (n)1787 1529 MS (\351)1811 1529 MS (e)1834 1529 MS (s)1856 1529 MS
+(.)1875 1529 MS ( )1888 1529 MS (I)1903 1529 MS (l)1921 1529 MS ( )1934 1529 MS (y)1950 1529 MS ( )1974 1529 MS (a)1989 1529 MS ( )2011 1529 MS (d)2026 1529 MS (o)2051 1529 MS (n)2077 1529 MS (c)2102 1529 MS ( )2125 1529 MS
+(r)235 1586 MS (e)252 1586 MS (d)274 1586 MS (i)300 1586 MS (s)312 1586 MS (t)331 1586 MS (r)346 1586 MS
+(i)364 1586 MS (b)377 1586 MS (u)401 1586 MS (t)426 1586 MS (i)441 1586 MS (o)453 1586 MS (n)479 1586 MS ( )503 1586 MS (d)530 1586 MS (e)556 1586 MS (s)578 1586 MS ( )597 1586 MS (d)624 1586 MS (o)649 1586 MS (n)675 1586 MS (n)700 1586 MS
+(\351)724 1586 MS (e)746 1586 MS (s)769 1586 MS (.)788 1586 MS ( )801 1586 MS (C)828 1586 MS (e)861 1586 MS (p)883 1586 MS (e)908 1586 MS (n)931 1586 MS (d)955 1586 MS (a)980 1586 MS (n)1003 1586 MS (t)1027 1586 MS ( )1042 1586 MS (c)1069 1586 MS
+(e)1091 1586 MS (l)1114 1586 MS (a)1127 1586 MS ( )1149 1586 MS (n)1177 1586 MS (e)1201 1586 MS ( )1223 1586 MS (r)1251 1586 MS (e)1268 1586 MS (s)1290 1586 MS (t)1309 1586 MS (e)1324 1586 MS ( )1346 1586 MS (p)1373 1586 MS (o)1397 1586 MS (s)1423 1586 MS
+(s)1442 1586 MS (i)1462 1586 MS (b)1475 1586 MS (l)1500 1586 MS (e)1513 1586 MS ( )1535 1586 MS (a)1563 1586 MS (s)1585 1586 MS (s)1604 1586 MS (e)1624 1586 MS (z)1646 1586 MS ( )1668 1586 MS (f)1696 1586 MS (a)1712 1586 MS (c)1734 1586 MS (i)1757 1586 MS
+(l)1771 1586 MS (e)1784 1586 MS (m)1807 1586 MS (e)1845 1586 MS (n)1868 1586 MS (t)1892 1586 MS ( )1907 1586 MS (q)1934 1586 MS (u)1959 1586 MS (e)1984 1586 MS ( )2006 1586 MS (d)2033 1586 MS (a)2058 1586 MS (n)2080 1586 MS (s)2105 1586 MS ( )2125 1586 MS
+(c)235 1644 MS (e)257 1644 MS (r)279 1644 MS (t)296 1644 MS (a)311 1644 MS (i)333 1644 MS (n)346 1644 MS (s)370 1644 MS ( )389 1644 MS (c)418 1644 MS (a)440 1644 MS (s)462 1644 MS ( )481 1644 MS (p)509 1644 MS (r)534 1644 MS (\351)551 1644 MS
+(c)573 1644 MS (i)596 1644 MS (s)609 1644 MS ( )629 1644 MS (o)657 1644 MS (\371)683 1644 MS ( )708 1644 MS (l)737 1644 MS (e)749 1644 MS (s)771 1644 MS ( )790 1644 MS (d)818 1644 MS (e)843 1644 MS (u)865 1644 MS (x)891 1644 MS ( )916 1644 MS
+(c)944 1644 MS (o)966 1644 MS (m)993 1644 MS (p)1030 1644 MS (o)1055 1644 MS (s)1081 1644 MS (a)1100 1644 MS (n)1122 1644 MS (t)1146 1644 MS (s)1161 1644 MS ( )1180 1644 MS (m)1209 1644 MS (a)1247 1644 MS (n)1269 1644 MS (i)1294 1644 MS (p)1307 1644 MS
+(u)1332 1644 MS (l)1358 1644 MS (e)1371 1644 MS (n)1394 1644 MS (t)1418 1644 MS ( )1433 1644 MS (d)1461 1644 MS (e)1486 1644 MS (s)1508 1644 MS ( )1527 1644 MS (d)1555 1644 MS (o)1580 1644 MS (n)1606 1644 MS (n)1631 1644 MS (\351)1655 1644 MS (e)1677 1644 MS
+(s)1700 1644 MS ( )1719 1644 MS (d)1747 1644 MS (e)1772 1644 MS ( )1794 1644 MS (m)1823 1644 MS (\352)1861 1644 MS (m)1884 1644 MS (e)1922 1644 MS ( )1944 1644 MS (n)1973 1644 MS (a)1997 1644 MS (t)2019 1644 MS (u)2034 1644 MS (r)2059 1644 MS (e)2076 1644 MS
+( )2098 1644 MS
+(:)2111 1644 MS ( )2125 1644 MS
+(d)235 1701 MS (i)261 1701 MS (s)273 1701 MS (c)293 1701 MS (r)315 1701 MS (\351)332 1701 MS (t)354 1701 MS (i)369 1701 MS (s)382 1701 MS (a)401 1701 MS (t)423 1701 MS (i)439 1701 MS (o)451 1701 MS (n)477 1701 MS ( )501 1701 MS (i)523 1701 MS
+(d)535 1701 MS (e)560 1701 MS (n)583 1701 MS (t)607 1701 MS (i)623 1701 MS (q)635 1701 MS (u)660 1701 MS (e)685 1701 MS ( )707 1701 MS (d)728 1701 MS (u)753 1701 MS ( )778 1701 MS (p)799 1701 MS (r)824 1701 MS (o)841 1701 MS (b)867 1701 MS
+(l)892 1701 MS (\350)904 1701 MS (m)927 1701 MS (e)965 1701 MS ( )987 1701 MS (t)1008 1701 MS (r)1023 1701 MS (a)1040 1701 MS (i)1063 1701 MS (t)1075 1701 MS (\351)1090 1701 MS (.)1112 1701 MS ( )1125 1701 MS (N)1146 1701 MS (o)1181 1701 MS (u)1207 1701 MS
+(s)1232 1701 MS ( )1251 1701 MS (n)1272 1701 MS (\222)1296 1701 MS (\351)1313 1701 MS (t)1335 1701 MS (u)1350 1701 MS (d)1375 1701 MS (i)1400 1701 MS (e)1413 1701 MS (r)1435 1701 MS (o)1452 1701 MS (n)1478 1701 MS (s)1502 1701 MS ( )1521 1701 MS (d)1542 1701 MS
+(a)1567 1701 MS (n)1590 1701 MS (s)1614 1701 MS ( )1633 1701 MS (c)1654 1701 MS (e)1676 1701 MS ( )1698 1701 MS (d)1719 1701 MS (o)1744 1701 MS (c)1770 1701 MS (u)1792 1701 MS (m)1818 1701 MS (e)1855 1701 MS (n)1878 1701 MS (t)1902 1701 MS ( )1917 1701 MS
+(q)1938 1701 MS (u)1963 1701 MS (e)1988 1701 MS ( )2010 1701 MS (c)2031 1701 MS (e)2053 1701 MS (t)2075 1701 MS (t)2089 1701 MS (e)2104 1701 MS ( )2125 1701 MS
+(s)235 1759 MS (i)255 1759 MS (t)267 1759 MS
+(u)282 1759 MS (a)307 1759 MS (t)329 1759 MS (i)344 1759 MS (o)356 1759 MS (n)382 1759 MS (.)406 1759 MS
+( )419 1759 MS
+(U)348 1816 MS (n)384 1816 MS ( )408 1816 MS (a)423 1816 MS (u)445 1816 MS (t)470 1816 MS (r)485 1816 MS (e)502 1816 MS ( )524 1816 MS (p)538 1816 MS (o)563 1816 MS (i)589 1816 MS (n)601 1816 MS (t)625 1816 MS ( )640 1816 MS (i)655 1816 MS
+(m)668 1816 MS (p)706 1816 MS (o)731 1816 MS (r)757 1816 MS (t)774 1816 MS (a)789 1816 MS (n)811 1816 MS (t)835 1816 MS ( )850 1816 MS (e)864 1816 MS (s)886 1816 MS (t)905 1816 MS ( )920 1816 MS (d)934 1816 MS (e)959 1816 MS ( )981 1816 MS
+(p)995 1816 MS (o)1020 1816 MS (u)1046 1816 MS (v)1071 1816 MS (o)1095 1816 MS (i)1121 1816 MS (r)1133 1816 MS ( )1150 1816 MS (g)1164 1816 MS (a)1189 1816 MS (r)1211 1816 MS (d)1228 1816 MS (e)1253 1816 MS (r)1275 1816 MS ( )1292 1816 MS (e)1306 1816 MS
+(n)1329 1816 MS ( )1353 1816 MS (m)1368 1816 MS (\351)1406 1816 MS (m)1429 1816 MS (o)1466 1816 MS (i)1493 1816 MS (r)1505 1816 MS (e)1523 1816 MS ( )1545 1816 MS (l)1560 1816 MS (e)1573 1816 MS (s)1596 1816 MS ( )1615 1816 MS (d)1629 1816 MS (o)1654 1816 MS
+(n)1680 1816 MS (n)1705 1816 MS (\351)1729 1816 MS (e)1751 1816 MS (s)1774 1816 MS ( )1793 1816 MS (g)1807 1816 MS (\351)1832 1816 MS (n)1855 1816 MS (\351)1879 1816 MS (r)1901 1816 MS (\351)1918 1816 MS (e)1940 1816 MS (s)1963 1816 MS ( )1982 1816 MS (p)1996 1816 MS
+(a)2021 1816 MS (r)2043 1816 MS ( )2060 1816 MS (u)2074 1816 MS (n)2100 1816 MS ( )2125 1816 MS
+(s)235 1874 MS (e)254 1874 MS (r)276 1874 MS (v)293 1874 MS (i)318 1874 MS (c)331 1874 MS (e)354 1874 MS (,)376 1874 MS ( )389 1874 MS (\340)403 1874 MS ( )425 1874 MS (l)440 1874 MS (a)453 1874 MS ( )475 1874 MS (f)490 1874 MS (i)507 1874 MS
+(n)520 1874 MS ( )545 1874 MS (d)559 1874 MS (e)584 1874 MS ( )607 1874 MS (s)621 1874 MS (o)640 1874 MS (n)666 1874 MS ( )691 1874 MS (e)705 1874 MS (x)728 1874 MS (\351)752 1874 MS (c)774 1874 MS (u)796 1874 MS (t)821 1874 MS (i)837 1874 MS
+(o)849 1874 MS (n)875 1874 MS (.)899 1874 MS ( )912 1874 MS (C)926 1874 MS (e)959 1874 MS (l)982 1874 MS (a)995 1874 MS ( )1018 1874 MS (p)1032 1874 MS (e)1057 1874 MS (r)1079 1874 MS (m)1097 1874 MS (e)1135 1874 MS (t)1157 1874 MS ( )1172 1874 MS
+(d)1186 1874 MS (\222)1211 1874 MS (a)1227 1874 MS (c)1250 1874 MS (t)1272 1874 MS (i)1287 1874 MS (v)1300 1874 MS (e)1324 1874 MS (r)1346 1874 MS ( )1363 1874 MS (u)1377 1874 MS (n)1403 1874 MS ( )1427 1874 MS (a)1442 1874 MS (u)1464 1874 MS (t)1489 1874 MS
+(r)1504 1874 MS (e)1521 1874 MS ( )1543 1874 MS (s)1557 1874 MS (e)1576 1874 MS (r)1598 1874 MS (v)1615 1874 MS (i)1640 1874 MS (c)1653 1874 MS (e)1675 1874 MS (,)1697 1874 MS ( )1710 1874 MS (l)1725 1874 MS (o)1737 1874 MS (c)1763 1874 MS (a)1785 1874 MS
+(l)1808 1874 MS ( )1821 1874 MS (o)1835 1874 MS (u)1861 1874 MS ( )1886 1874 MS (d)1900 1874 MS (i)1926 1874 MS (s)1939 1874 MS (t)1958 1874 MS (a)1973 1874 MS (n)1995 1874 MS (t)2019 1874 MS (,)2034 1874 MS ( )2047 1874 MS (q)2061 1874 MS (u)2086 1874 MS
+(i)2112 1874 MS ( )2125 1874 MS
+(u)235 1931 MS (t)260 1931 MS (i)275 1931 MS (l)288 1931 MS (i)302 1931 MS (s)315 1931 MS (e)334 1931 MS ( )356 1931 MS (c)369 1931 MS (e)391 1931 MS (s)414 1931 MS ( )433 1931 MS (d)446 1931 MS (o)471 1931 MS (n)497 1931 MS (n)521 1931 MS
+(\351)545 1931 MS (e)567 1931 MS (s)590 1931 MS ( )609 1931 MS (s)622 1931 MS (a)641 1931 MS (n)664 1931 MS (s)688 1931 MS ( )707 1931 MS (a)720 1931 MS (v)743 1931 MS (o)767 1931 MS (i)794 1931 MS (r)806 1931 MS ( )823 1931 MS (\340)836 1931 MS
+( )858 1931 MS (l)872 1931 MS (e)884 1931 MS (s)906 1931 MS ( )925 1931 MS (r)938 1931 MS (e)955 1931 MS (c)977 1931 MS (h)1000 1931 MS (a)1024 1931 MS (r)1046 1931 MS (g)1063 1931 MS (e)1088 1931 MS (r)1110 1931 MS ( )1127 1931 MS (e)1140 1931 MS
+(n)1162 1931 MS ( )1186 1931 MS (m)1200 1931 MS (\351)1239 1931 MS (m)1262 1931 MS (o)1299 1931 MS (i)1326 1931 MS (r)1338 1931 MS (e)1355 1931 MS (.)1377 1931 MS
+( )1390 1931 MS
+(L)348 1989 MS (\222)378 1989 MS (a)394 1989 MS (p)416 1989 MS (p)441 1989 MS
+(r)466 1989 MS (o)483 1989 MS (c)509 1989 MS (h)531 1989 MS (e)555 1989 MS ( )578 1989 MS (p)601 1989 MS (r)626 1989 MS (\351)643 1989 MS (s)665 1989 MS (e)684 1989 MS (n)707 1989 MS (t)731 1989 MS (\351)746 1989 MS (e)768 1989 MS ( )790 1989 MS
+(d)813 1989 MS (a)838 1989 MS (n)861 1989 MS (s)885 1989 MS ( )905 1989 MS (c)928 1989 MS (e)950 1989 MS ( )972 1989 MS (d)995 1989 MS (o)1020 1989 MS (c)1046 1989 MS (u)1068 1989 MS (m)1094 1989 MS (e)1131 1989 MS (n)1154 1989 MS (t)1178 1989 MS
+( )1193 1989 MS (c)1216 1989 MS (o)1238 1989 MS (n)1264 1989 MS (s)1288 1989 MS (i)1308 1989 MS (s)1321 1989 MS (t)1340 1989 MS (e)1355 1989 MS ( )1377 1989 MS (\340)1400 1989 MS ( )1422 1989 MS (u)1445 1989 MS (t)1470 1989 MS (i)1486 1989 MS (l)1499 1989 MS
+(i)1512 1989 MS (s)1525 1989 MS (e)1545 1989 MS (r)1567 1989 MS ( )1584 1989 MS (u)1607 1989 MS (n)1633 1989 MS ( )1657 1989 MS (O)1680 1989 MS (R)1717 1989 MS (B)1750 1989 MS ( )1783 1989 MS (s)1807 1989 MS (\351)1826 1989 MS (q)1848 1989 MS (u)1873 1989 MS
+(e)1898 1989 MS (n)1921 1989 MS (t)1945 1989 MS (i)1961 1989 MS (e)1973 1989 MS (l)1996 1989 MS ( )2009 1989 MS (p)2032 1989 MS (o)2057 1989 MS (u)2083 1989 MS (r)2108 1989 MS ( )2125 1989 MS
+(c)235 2046 MS (o)257 2046 MS (u)283 2046 MS (p)308 2046 MS (l)333 2046 MS (e)345 2046 MS (r)367 2046 MS ( )384 2046 MS (d)397 2046 MS (e)422 2046 MS (s)444 2046 MS ( )463 2046 MS (c)477 2046 MS (o)499 2046 MS (m)525 2046 MS (p)562 2046 MS
+(o)587 2046 MS (s)613 2046 MS (a)632 2046 MS (n)655 2046 MS (t)679 2046 MS (s)694 2046 MS ( )713 2046 MS (p)726 2046 MS (a)751 2046 MS (r)773 2046 MS (a)790 2046 MS (l)813 2046 MS (l)826 2046 MS (\350)839 2046 MS (l)862 2046 MS (e)875 2046 MS
+(s)898 2046 MS (.)917 2046 MS ( )930 2046 MS (L)943 2046 MS (a)973 2046 MS ( )995 2046 MS (g)1008 2046 MS (e)1033 2046 MS (s)1055 2046 MS (t)1074 2046 MS (i)1090 2046 MS (o)1102 2046 MS (n)1128 2046 MS ( )1152 2046 MS (d)1165 2046 MS (u)1190 2046 MS
+( )1215 2046 MS (p)1228 2046 MS (a)1254 2046 MS (r)1276 2046 MS (a)1293 2046 MS (l)1316 2046 MS (l)1329 2046 MS (\351)1342 2046 MS (l)1365 2046 MS (i)1379 2046 MS (s)1392 2046 MS (m)1412 2046 MS (e)1450 2046 MS ( )1472 2046 MS (d)1485 2046 MS (\222)1511 2046 MS
+(a)1527 2046 MS (c)1549 2046 MS (t)1571 2046 MS (i)1587 2046 MS (v)1600 2046 MS (a)1624 2046 MS (t)1646 2046 MS (i)1662 2046 MS (o)1674 2046 MS (n)1700 2046 MS ( )1724 2046 MS (d)1737 2046 MS (e)1762 2046 MS ( )1784 2046 MS (s)1797 2046 MS (e)1817 2046 MS
+(r)1839 2046 MS (v)1856 2046 MS (i)1881 2046 MS (c)1894 2046 MS (e)1917 2046 MS ( )1939 2046 MS (C)1952 2046 MS (O)1985 2046 MS (R)2021 2046 MS (B)2055 2046 MS (A)2089 2046 MS ( )2125 2046 MS
+(e)235 2104 MS (s)257 2104 MS (t)276 2104 MS ( )291 2104 MS (d)313 2104 MS (o)337 2104 MS (n)363 2104 MS (c)387 2104 MS ( )409 2104 MS (e)431 2104 MS (n)454 2104 MS (t)478 2104 MS (i)494 2104 MS (\350)506 2104 MS (r)528 2104 MS (e)545 2104 MS
+(m)568 2104 MS (e)606 2104 MS (n)629 2104 MS (t)653 2104 MS ( )668 2104 MS (\340)690 2104 MS ( )712 2104 MS (l)734 2104 MS (a)747 2104 MS ( )769 2104 MS (c)791 2104 MS (h)814 2104 MS (a)838 2104 MS (r)860 2104 MS (g)877 2104 MS (e)902 2104 MS
+( )924 2104 MS (d)946 2104 MS (u)971 2104 MS ( )996 2104 MS (c)1018 2104 MS (o)1040 2104 MS (m)1067 2104 MS (p)1104 2104 MS (o)1129 2104 MS (s)1155 2104 MS (a)1174 2104 MS (n)1196 2104 MS (t)1220 2104 MS (.)1235 2104 MS ( )1248 2104 MS (A)1270 2104 MS
+(i)1306 2104 MS (n)1319 2104 MS (s)1344 2104 MS (i)1364 2104 MS (,)1377 2104 MS ( )1390 2104 MS (s)1412 2104 MS (e)1431 2104 MS (u)1453 2104 MS (l)1479 2104 MS ( )1492 2104 MS (l)1515 2104 MS (e)1528 2104 MS ( )1550 2104 MS (p)1572 2104 MS (r)1597 2104 MS
+(o)1614 2104 MS (c)1640 2104 MS (e)1662 2104 MS (s)1684 2104 MS (s)1703 2104 MS (u)1722 2104 MS (s)1748 2104 MS ( )1767 2104 MS (0)1789 2104 MS ( )1814 2104 MS (d)1836 2104 MS (u)1861 2104 MS ( )1886 2104 MS (c)1908 2104 MS (o)1930 2104 MS (m)1956 2104 MS
+(p)1993 2104 MS (o)2018 2104 MS (s)2044 2104 MS (a)2063 2104 MS (n)2086 2104 MS (t)2110 2104 MS ( )2125 2104 MS
+(p)235 2161 MS
+(a)260 2161 MS (r)282 2161 MS (a)299 2161 MS (l)322 2161 MS (l)335 2161 MS (\350)348 2161 MS (l)371 2161 MS (e)384 2161 MS ( )406 2161 MS (e)422 2161 MS (s)444 2161 MS (t)463 2161 MS ( )478 2161 MS (v)494 2161 MS (i)519 2161 MS (s)532 2161 MS
+(i)552 2161 MS (b)565 2161 MS (l)591 2161 MS (e)604 2161 MS ( )626 2161 MS (d)642 2161 MS (e)667 2161 MS (p)689 2161 MS (u)714 2161 MS (i)740 2161 MS (s)753 2161 MS ( )772 2161 MS (l)789 2161 MS (e)802 2161 MS ( )824 2161 MS (c)840 2161 MS
+(l)863 2161 MS (i)877 2161 MS (e)890 2161 MS (n)913 2161 MS (t)937 2161 MS (.)952 2161 MS ( )965 2161 MS (U)981 2161 MS (n)1017 2161 MS (e)1041 2161 MS ( )1063 2161 MS (f)1080 2161 MS (o)1095 2161 MS (i)1121 2161 MS (s)1134 2161 MS ( )1153 2161 MS
+(a)1169 2161 MS (c)1191 2161 MS (t)1213 2161 MS (i)1229 2161 MS (v)1242 2161 MS (\351)1266 2161 MS ( )1288 2161 MS (p)1304 2161 MS (a)1329 2161 MS (r)1351 2161 MS ( )1368 2161 MS (l)1385 2161 MS (e)1397 2161 MS ( )1419 2161 MS (c)1435 2161 MS (l)1458 2161 MS
+(i)1472 2161 MS (e)1485 2161 MS (n)1508 2161 MS (t)1532 2161 MS (,)1547 2161 MS ( )1560 2161 MS (l)1576 2161 MS (e)1588 2161 MS ( )1610 2161 MS (p)1626 2161 MS (r)1651 2161 MS (o)1668 2161 MS (c)1694 2161 MS (e)1716 2161 MS (s)1738 2161 MS (s)1757 2161 MS
+(u)1776 2161 MS (s)1801 2161 MS ( )1820 2161 MS (0)1836 2161 MS ( )1861 2161 MS (a)1877 2161 MS (c)1899 2161 MS (t)1921 2161 MS (i)1937 2161 MS (v)1950 2161 MS (e)1974 2161 MS (r)1996 2161 MS (a)2013 2161 MS (,)2035 2161 MS ( )2048 2161 MS (v)2064 2161 MS
+(i)2089 2161 MS (a)2102 2161 MS ( )2125 2161 MS
+(C)235 2219 MS (O)268 2219 MS (R)304 2219 MS (B)337 2219 MS (A)371 2219 MS (,)406 2219 MS ( )419 2219 MS (l)433 2219 MS (e)445 2219 MS (s)468 2219 MS ( )487 2219 MS (a)500 2219 MS (u)522 2219 MS (t)547 2219 MS (r)562 2219 MS (e)579 2219 MS
+(s)601 2219 MS ( )620 2219 MS (p)633 2219 MS (r)658 2219 MS (o)674 2219 MS (c)700 2219 MS (e)722 2219 MS (s)744 2219 MS (s)763 2219 MS (u)782 2219 MS (s)807 2219 MS ( )826 2219 MS (c)839 2219 MS (o)861 2219 MS (n)887 2219 MS (s)911 2219 MS
+(t)930 2219 MS (i)946 2219 MS (t)958 2219 MS (u)973 2219 MS (a)998 2219 MS (n)1020 2219 MS (t)1044 2219 MS ( )1059 2219 MS (l)1072 2219 MS (e)1085 2219 MS ( )1107 2219 MS (c)1120 2219 MS (o)1142 2219 MS (m)1168 2219 MS (p)1205 2219 MS (o)1230 2219 MS
+(s)1256 2219 MS (a)1275 2219 MS (n)1298 2219 MS (t)1322 2219 MS ( )1337 2219 MS (p)1350 2219 MS (a)1375 2219 MS (r)1397 2219 MS (a)1414 2219 MS (l)1436 2219 MS (l)1449 2219 MS (\350)1462 2219 MS (l)1485 2219 MS (e)1498 2219 MS (.)1520 2219 MS ( )1533 2219 MS
+(D)1546 2219 MS (u)1582 2219 MS ( )1607 2219 MS (p)1620 2219 MS (o)1645 2219 MS (i)1671 2219 MS (n)1684 2219 MS (t)1708 2219 MS ( )1723 2219 MS (d)1736 2219 MS (e)1761 2219 MS ( )1783 2219 MS (v)1796 2219 MS (u)1820 2219 MS (e)1845 2219 MS ( )1867 2219 MS
+(d)1880 2219 MS (e)1905 2219 MS ( )1927 2219 MS (C)1940 2219 MS (O)1973 2219 MS (R)2009 2219 MS (B)2042 2219 MS (A)2076 2219 MS (,)2111 2219 MS ( )2125 2219 MS
+(l)235 2276 MS (e)248 2276 MS ( )270 2276 MS (p)283 2276 MS (r)308 2276 MS (o)325 2276 MS (c)351 2276 MS (e)373 2276 MS (s)395 2276 MS (s)414 2276 MS (u)433 2276 MS (s)459 2276 MS ( )478 2276 MS (0)491 2276 MS ( )516 2276 MS (d)529 2276 MS
+(\222)555 2276 MS (u)571 2276 MS (n)597 2276 MS ( )621 2276 MS (c)634 2276 MS (o)656 2276 MS (m)683 2276 MS (p)720 2276 MS (o)745 2276 MS (s)771 2276 MS (a)790 2276 MS (n)812 2276 MS (t)836 2276 MS ( )851 2276 MS (p)864 2276 MS (a)889 2276 MS
+(r)911 2276 MS (a)928 2276 MS (l)951 2276 MS (l)964 2276 MS (\350)977 2276 MS (l)1000 2276 MS (e)1013 2276 MS ( )1036 2276 MS (s)1049 2276 MS (e)1068 2276 MS ( )1091 2276 MS (c)1104 2276 MS (o)1126 2276 MS (m)1153 2276 MS (p)1190 2276 MS (o)1215 2276 MS
+(r)1241 2276 MS (t)1257 2276 MS (e)1272 2276 MS ( )1294 2276 MS (e)1307 2276 MS (n)1329 2276 MS ( )1353 2276 MS (c)1366 2276 MS (l)1389 2276 MS (i)1403 2276 MS (e)1416 2276 MS (n)1439 2276 MS (t)1463 2276 MS ( )1478 2276 MS (d)1491 2276 MS (e)1516 2276 MS
+( )1538 2276 MS (t)1551 2276 MS (o)1565 2276 MS
+(u)1591 2276 MS (s)1616 2276 MS ( )1635 2276 MS (l)1649 2276 MS (e)1661 2276 MS (s)1683 2276 MS ( )1702 2276 MS (a)1716 2276 MS (u)1738 2276 MS (t)1763 2276 MS (r)1778 2276 MS (e)1795 2276 MS (s)1817 2276 MS ( )1836 2276 MS (p)1849 2276 MS (r)1874 2276 MS
+(o)1891 2276 MS (c)1917 2276 MS (e)1939 2276 MS (s)1961 2276 MS (s)1980 2276 MS (u)1999 2276 MS (s)2024 2276 MS (.)2043 2276 MS ( )2056 2276 MS (E)2069 2276 MS (n)2100 2276 MS ( )2125 2276 MS
+(c)235 2334 MS (e)257 2334 MS ( )279 2334 MS (q)309 2334 MS (u)334 2334 MS (i)360 2334 MS ( )372 2334 MS (c)402 2334 MS (o)424 2334 MS (n)450 2334 MS (c)474 2334 MS (e)496 2334 MS (r)518 2334 MS (n)536 2334 MS (e)560 2334 MS ( )582 2334 MS
+(l)613 2334 MS (\222)626 2334 MS (\351)642 2334 MS (c)665 2334 MS (h)688 2334 MS (a)712 2334 MS (n)735 2334 MS (g)759 2334 MS (e)784 2334 MS ( )806 2334 MS (e)836 2334 MS (t)858 2334 MS ( )873 2334 MS (l)903 2334 MS (a)916 2334 MS ( )938 2334 MS
+(r)968 2334 MS (e)985 2334 MS (d)1007 2334 MS (i)1033 2334 MS (s)1046 2334 MS (t)1065 2334 MS (r)1080 2334 MS (i)1097 2334 MS (b)1110 2334 MS (u)1134 2334 MS (t)1159 2334 MS (i)1175 2334 MS (o)1187 2334 MS (n)1213 2334 MS ( )1238 2334 MS (d)1268 2334 MS
+(e)1293 2334 MS ( )1315 2334 MS (d)1345 2334 MS (o)1370 2334 MS (n)1396 2334 MS (n)1420 2334 MS (\351)1444 2334 MS (e)1466 2334 MS (s)1488 2334 MS ( )1507 2334 MS (p)1537 2334 MS (a)1562 2334 MS (r)1584 2334 MS (a)1601 2334 MS (l)1624 2334 MS (l)1638 2334 MS
+(\350)1651 2334 MS (l)1674 2334 MS (e)1687 2334 MS (s)1710 2334 MS ( )1729 2334 MS (e)1759 2334 MS (n)1782 2334 MS (t)1806 2334 MS (r)1821 2334 MS (e)1838 2334 MS ( )1860 2334 MS (c)1890 2334 MS (o)1911 2334 MS (m)1937 2334 MS (p)1974 2334 MS (o)1999 2334 MS
+(s)2025 2334 MS (a)2044 2334 MS (n)2067 2334 MS (t)2091 2334 MS (s)2106 2334 MS ( )2125 2334 MS
+(p)235 2391 MS (a)260 2391 MS (r)282 2391 MS (a)299 2391 MS (l)322 2391 MS (l)335 2391 MS (\350)348 2391 MS (l)371 2391 MS (e)384 2391 MS (s)407 2391 MS (,)426 2391 MS ( )439 2391 MS (c)453 2391 MS (h)476 2391 MS (a)500 2391 MS (q)522 2391 MS
+(u)547 2391 MS (e)572 2391 MS ( )594 2391 MS (p)608 2391 MS (r)633 2391 MS (o)650 2391 MS (c)676 2391 MS (e)698 2391 MS (s)720 2391 MS (s)739 2391 MS (u)758 2391 MS (s)784 2391 MS ( )803 2391 MS (q)817 2391 MS (u)842 2391 MS (i)868 2391 MS
+( )881 2391 MS (v)896 2391 MS (e)921 2391 MS (u)943 2391 MS (t)968 2391 MS ( )983 2391 MS (r)997 2391 MS (\351)1014 2391 MS (c)1036 2391 MS (u)1058 2391 MS (p)1083 2391 MS (\351)1108 2391 MS (r)1130 2391 MS (e)1147 2391 MS (r)1169 2391 MS ( )1186 2391 MS
+(s)1200 2391 MS (a)1219 2391 MS ( )1241 2391 MS (p)1256 2391 MS (a)1281 2391 MS (r)1303 2391 MS (t)1320 2391 MS (i)1335 2391 MS (e)1347 2391 MS ( )1369 2391 MS (l)1384 2391 MS (o)1396 2391 MS (c)1422 2391 MS (a)1444 2391 MS (l)1467 2391 MS (e)1480 2391 MS
+( )1503 2391 MS (d)1517 2391 MS (e)1542 2391 MS ( )1565 2391 MS (l)1580 2391 MS (a)1593 2391 MS ( )1615 2391 MS (d)1629 2391 MS (o)1654 2391 MS (n)1680 2391 MS (n)1705 2391 MS (\351)1729 2391 MS (e)1751 2391 MS (,)1773 2391 MS ( )1786 2391 MS (d)1800 2391 MS
+(e)1826 2391 MS (v)1849 2391 MS (i)1874 2391 MS (e)1887 2391 MS (n)1910 2391 MS (t)1934 2391 MS ( )1949 2391 MS (l)1964 2391 MS (e)1976 2391 MS ( )1998 2391 MS (c)2013 2391 MS (l)2036 2391 MS (i)2049 2391 MS (e)2062 2391 MS (n)2085 2391 MS (t)2109 2391 MS
+( )2125 2391 MS
+(s)235 2449 MS (e)254 2449 MS (l)277 2449 MS (o)289 2449 MS (n)316 2449 MS ( )340 2449 MS (C)369 2449 MS (O)402 2449 MS (R)439 2449 MS (B)472 2449 MS (A)506 2449 MS (,)541 2449 MS ( )554 2449 MS (d)583 2449 MS (e)608 2449 MS ( )631 2449 MS
+(c)660 2449 MS (h)683 2449 MS (a)707 2449 MS (c)729 2449 MS (u)751 2449 MS (n)777 2449 MS ( )802 2449 MS (d)831 2449 MS (e)856 2449 MS (s)878 2449 MS ( )898 2449 MS (p)927 2449 MS (r)952 2449 MS (o)969 2449 MS (c)995 2449 MS (e)1017 2449 MS
+(s)1039 2449 MS (s)1058 2449 MS (u)1077 2449 MS (s)1102 2449 MS ( )1121 2449 MS (d)1150 2449 MS (u)1175 2449 MS ( )1201 2449 MS (c)1230 2449 MS (o)1253 2449 MS (m)1279 2449 MS (p)1316 2449 MS (o)1341 2449 MS
+(s)1367 2449 MS (a)1386 2449 MS (n)1409 2449 MS (t)1433 2449 MS ( )1448 2449 MS (p)1477 2449 MS (a)1502 2449 MS (r)1524 2449 MS (a)1541 2449 MS (l)1564 2449 MS (l)1577 2449 MS (\350)1590 2449 MS (l)1613 2449 MS (e)1626 2449 MS ( )1648 2449 MS (q)1677 2449 MS
+(u)1702 2449 MS (i)1728 2449 MS ( )1741 2449 MS (a)1771 2449 MS (b)1794 2449 MS (r)1818 2449 MS (i)1836 2449 MS (t)1848 2449 MS (e)1863 2449 MS ( )1885 2449 MS (l)1915 2449 MS (a)1928 2449 MS ( )1950 2449 MS (d)1979 2449 MS (o)2004 2449 MS (n)2030 2449 MS
+(n)2055 2449 MS (\351)2079 2449 MS (e)2102 2449 MS ( )2125 2449 MS
+(d)235 2506 MS (i)261 2506 MS (s)273 2506 MS (t)292 2506 MS (r)307 2506 MS (i)325 2506 MS (b)338 2506 MS (u)362 2506 MS (\351)387 2506 MS (e)409 2506 MS (.)431 2506 MS ( )444 2506 MS (I)466 2506 MS (l)484 2506 MS ( )496 2506 MS (y)519 2506 MS
+( )543 2506 MS (a)565 2506 MS ( )587 2506 MS (a)609 2506 MS (i)632 2506 MS (n)645 2506 MS (s)670 2506 MS (i)691 2506 MS ( )703 2506 MS (c)726 2506 MS (o)748 2506 MS (m)775 2506 MS (m)813 2506 MS (u)850 2506 MS (n)876 2506 MS (i)901 2506 MS
+(c)914 2506 MS (a)937 2506 MS (t)959 2506 MS (i)974 2506 MS (o)986 2506 MS (n)1012 2506 MS ( )1036 2506 MS (d)1058 2506 MS (i)1084 2506 MS (r)1097 2506 MS (e)1114 2506 MS (c)1136 2506 MS (t)1158 2506 MS (e)1173 2506 MS ( )1195 2506 MS (d)1217 2506 MS
+(e)1242 2506 MS ( )1264 2506 MS (p)1286 2506 MS (r)1311 2506 MS (o)1328 2506 MS (c)1354 2506 MS (e)1376 2506 MS (s)1398 2506 MS (s)1417 2506 MS (u)1436 2506 MS (s)1461 2506 MS ( )1480 2506 MS (\340)1502 2506 MS ( )1524 2506 MS (p)1546 2506 MS (r)1571 2506 MS
+(o)1588 2506 MS (c)1614 2506 MS (e)1636 2506 MS (s)1658 2506 MS (s)1677 2506 MS (u)1696 2506 MS (s)1721 2506 MS (,)1740 2506 MS ( )1753 2506 MS (c)1775 2506 MS (e)1797 2506 MS ( )1819 2506 MS (q)1841 2506 MS (u)1866 2506 MS (i)1892 2506 MS ( )1905 2506 MS
+(\351)1927 2506 MS (v)1950 2506 MS (i)1975 2506 MS (t)1987 2506 MS (e)2002 2506 MS ( )2024 2506 MS (t)2046 2506 MS (o)2061 2506 MS (u)2086 2506 MS (t)2110 2506 MS ( )2125 2506 MS
+(g)235 2564 MS (o)260 2564 MS (u)286 2564 MS (l)311 2564 MS (o)323 2564 MS (t)349 2564 MS ( )364 2564 MS (d)384 2564 MS (\222)409 2564 MS (\351)425 2564 MS (t)447 2564 MS (r)462 2564 MS (a)479 2564 MS (n)501 2564 MS (g)525 2564 MS (l)551 2564 MS
+(e)563 2564 MS (m)586 2564 MS (e)624 2564 MS (n)647 2564 MS (t)671 2564 MS ( )686 2564 MS (p)706 2564 MS (o)731 2564 MS (u)757 2564 MS (r)782 2564 MS ( )799 2564 MS (l)819 2564 MS (\222)832 2564 MS (\351)848 2564 MS (c)870 2564 MS (h)893 2564 MS
+(a)918 2564 MS (n)941 2564 MS (g)965 2564 MS (e)990 2564 MS ( )1012 2564 MS (d)1032 2564 MS (e)1057 2564 MS ( )1080 2564 MS (d)1100 2564 MS (o)1125 2564 MS (n)1151 2564 MS (n)1176 2564 MS (\351)1200 2564 MS (e)1222 2564 MS (s)1245 2564 MS (.)1264 2564 MS
+( )1277 2564 MS (C)1297 2564 MS (e)1330 2564 MS (t)1352 2564 MS (t)1367 2564 MS (e)1382 2564 MS ( )1404 2564 MS (m)1424 2564 MS (\351)1461 2564 MS (t)1483 2564 MS (h)1498 2564 MS (o)1522 2564 MS (d)1548 2564 MS (e)1573 2564 MS ( )1595 2564 MS (e)1615 2564 MS
+(s)1638 2564 MS (t)1657 2564 MS ( )1672 2564 MS (l)1693 2564 MS (a)1705 2564 MS ( )1728 2564 MS (m)1749 2564 MS (\351)1787 2564 MS (t)1809 2564 MS (h)1824 2564 MS (o)1848 2564 MS (d)1874 2564 MS (e)1899 2564 MS ( )1921 2564 MS (c)1941 2564 MS (l)1964 2564 MS
+(a)1977 2564 MS (s)1999 2564 MS (s)2018 2564 MS (i)2038 2564 MS (q)2051 2564 MS (u)2076 2564 MS (e)2102 2564 MS ( )2125 2564 MS
+(u)235 2621 MS (t)260 2621 MS (i)275 2621 MS (l)288 2621 MS (i)302 2621 MS (s)315 2621 MS (\351)334 2621 MS (e)356 2621 MS ( )378 2621 MS (p)393 2621 MS (a)419 2621 MS (r)441 2621 MS ( )458 2621 MS (l)474 2621 MS (e)487 2621 MS (s)509 2621 MS
+( )528 2621 MS (p)543 2621 MS (e)568 2621 MS (r)590 2621 MS (s)607 2621 MS (o)626 2621 MS (n)652 2621 MS (n)677 2621 MS (e)702 2621 MS (s)724 2621 MS ( )743 2621 MS (i)759 2621 MS (n)772 2621 MS (t)796 2621 MS (\351)811 2621 MS (r)833 2621 MS
+(e)850 2621 MS (s)872 2621 MS (s)892 2621 MS (\351)911 2621 MS (e)933 2621 MS (s)956 2621 MS ( )975 2621 MS (p)990 2621 MS (a)1015 2621 MS
+(r)1037 2621 MS ( )1054 2621 MS (l)1070 2621 MS (e)1083 2621 MS ( )1105 2621 MS (c)1120 2621 MS (o)1142 2621 MS (u)1168 2621 MS (p)1193 2621 MS (l)1219 2621 MS (a)1231 2621 MS (g)1254 2621 MS (e)1279 2621 MS ( )1301 2621 MS (d)1316 2621 MS (e)1341 2621 MS
+( )1363 2621 MS (c)1378 2621 MS (o)1400 2621 MS (d)1426 2621 MS (e)1451 2621 MS ( )1473 2621 MS (p)1488 2621 MS (a)1513 2621 MS (r)1535 2621 MS (a)1552 2621 MS (l)1575 2621 MS (l)1588 2621 MS (\350)1601 2621 MS (l)1624 2621 MS (e)1637 2621 MS (s)1660 2621 MS
+( )1679 2621 MS (d)1694 2621 MS (a)1719 2621 MS (n)1742 2621 MS (s)1766 2621 MS ( )1785 2621 MS (u)1800 2621 MS (n)1826 2621 MS (e)1851 2621 MS ( )1873 2621 MS (a)1888 2621 MS (r)1910 2621 MS (c)1927 2621 MS (h)1950 2621 MS (i)1975 2621 MS (t)1987 2621 MS
+(e)2002 2621 MS (c)2024 2621 MS (t)2046 2621 MS (u)2061 2621 MS (r)2086 2621 MS (e)2103 2621 MS ( )2125 2621 MS
+(r)235 2679 MS (\351)252 2679 MS (p)274 2679 MS (a)299 2679 MS (r)321 2679 MS (t)338 2679 MS (i)353 2679 MS (e)365 2679 MS ( )387 2679 MS (b)400 2679 MS (a)424 2679 MS (s)447 2679 MS (\351)466 2679 MS (e)488 2679 MS ( )510 2679 MS (s)523 2679 MS
+(u)542 2679 MS (r)567 2679 MS ( )584 2679 MS (l)598 2679 MS (e)610 2679 MS ( )632 2679 MS (\253)646 2679 MS
+( )670 2679 MS
+(m)684 2679 MS (i)722 2679 MS (d)735 2679 MS (d)760 2679 MS (l)786 2679 MS (e)799 2679 MS (w)821 2679 MS (a)857 2679 MS (r)879 2679 MS (e)896 2679 MS ( )918 2679 MS (\273)932 2679 MS ( )956 2679 MS (C)969 2679 MS (O)1002 2679 MS (R)1038 2679 MS
+(B)1071 2679 MS (A)1105 2679 MS (.)1140 2679 MS
+( )1153 2679 MS
+(L)348 2736 MS (e)378 2736 MS (s)400 2736 MS ( )419 2736 MS (o)443 2736 MS (b)469 2736 MS (j)494 2736 MS (e)507 2736 MS (c)529 2736 MS (t)551 2736 MS (i)567 2736 MS (f)580 2736 MS (s)596 2736 MS ( )615 2736 MS (d)639 2736 MS (e)665 2736 MS
+( )687 2736 MS (c)711 2736 MS (e)733 2736 MS (t)755 2736 MS (t)770 2736 MS (e)785 2736 MS ( )807 2736 MS (\351)831 2736 MS (t)852 2736 MS (u)867 2736 MS (d)892 2736 MS (e)917 2736 MS ( )939 2736 MS (s)963 2736 MS (o)982 2736 MS (n)1008 2736 MS
+(t)1032 2736 MS ( )1047 2736 MS (i)1071 2736 MS (l)1084 2736 MS (l)1097 2736 MS (u)1110 2736 MS (s)1136 2736 MS (t)1155 2736 MS (r)1170 2736 MS (\351)1187 2736 MS (s)1209 2736 MS ( )1228 2736 MS (p)1252 2736 MS (a)1277 2736 MS (r)1299 2736 MS ( )1316 2736 MS
+(u)1340 2736 MS (n)1365 2736 MS ( )1389 2736 MS (c)1413 2736 MS (a)1435 2736 MS (s)1458 2736 MS ( )1477 2736 MS (d)1501 2736 MS (\222)1527 2736 MS (u)1543 2736 MS (t)1568 2736 MS (i)1583 2736 MS (l)1596 2736 MS (i)1610 2736 MS (s)1623 2736 MS (a)1643 2736 MS
+(t)1665 2736 MS (i)1680 2736 MS (o)1692 2736 MS (n)1718 2736 MS ( )1742 2736 MS (q)1766 2736 MS (u)1791 2736 MS (i)1817 2736 MS ( )1830 2736 MS (e)1855 2736 MS (s)1877 2736 MS (t)1896 2736 MS ( )1911 2736 MS (d)1935 2736 MS (\351)1960 2736 MS (c)1982 2736 MS
+(r)2004 2736 MS (i)2022 2736 MS (s)2034 2736 MS ( )2053 2736 MS (a)2078 2736 MS (u)2100 2736 MS ( )2125 2736 MS
+(c)235 2794 MS (h)257 2794 MS (a)281 2794 MS (p)303 2794 MS (i)329 2794 MS (t)341 2794 MS (r)356 2794 MS (e)373 2794 MS ( )395 2794 MS (9)408 2794 MS (.)433 2794 MS
+%%IncludeFont: Courier
+[42 0 0 -42 0 0]/Courier MF
+( )446 2794 MS
+[50 0 0 -50 0 0]/_Times-Roman MF
+( )348 2851 MS
+[42 0 0 -42 0 0]/Courier MF
+( )348 2899 MS
+showpage
+%%Page: 8 8
+14.449 827.879 translate 72 300 div dup neg scale
+0 0 transform .25 add round .25 sub exch .25 add round .25 sub exch itransform translate
+1 j
+1 setlinecap
+72 sl
+0.375 g
+n
+494 182 M
+494 155 472 133 445 133 c
+418 133 396 155 396 182 c
+396 209 418 231 445 231 c
+472 231 494 209 494 182 c
+cp
+CM 0.156 0.152 scale
+s
+SM
+71 sl
+n
+660 182 M
+660 155 638 133 611 133 c
+584 133 562 155 562 182 c
+562 209 584 231 611 231 c
+638 231 660 209 660 182 c
+cp
+CM 0.156 0.152 scale
+s
+SM
+n
+120 24 468 152 B
+1 g
+f
+1 sl
+n
+122 26 467 151 B
+cp
+s
+71 sl
+0.375 g
+n
+577 180 M
+577 153 555 131 528 131 c
+501 131 479 153 479 180 c
+479 206 501 228 528 228 c
+555 228 577 206 577 180 c
+cp
+gs
+1 g
+e
+gr
+CM 0.156 0.152 scale
+s
+SM
+n
+480 180 M
+575 180 L
+CM 0.156 0.152 scale
+s
+SM
+n
+34 18 562 187 B
+1 g
+f
+1 sl
+n
+36 20 561 186 B
+cp
+s
+n
+610 173 M
+591 173 L
+554 124 L
+579 126 L
+609 173 L
+610 173 L
+cp
+gs
+e
+gr
+s
+n
+448 170 M
+468 170 L
+504 122 L
+479 123 L
+449 170 L
+448 170 L
+cp
+gs
+e
+gr
+s
+0.375 g
+n
+473 140 M
+473 137 470 135 467 135 c
+464 135 462 137 462 140 c
+462 142 464 145 467 145 c
+470 145 473 142 473 140 c
+cp
+gs
+e
+gr
+s
+n
+593 139 M
+593 136 590 134 588 134 c
+585 134 583 136 583 139 c
+583 141 585 144 588 144 c
+590 144 593 141 593 139 c
+cp
+gs
+e
+gr
+s
+72 sl
+n
+665 137 M
+665 229 L
+CM 0.156 0.152 scale
+s
+SM
+[29 0 0 -29 0 0]/Times-Roman MF
+0 g
+( )676 243 MS
+[50 0 0 -50 0 0]/Times-Roman MF
+(D)400 289 MS (E)436 289 MS (N)467 289 MS ( )503 289 MS ( )516 289 MS (S)529 289 MS (a)557 289 MS (c)579 289 MS (l)601 289 MS (a)613 289 MS (y)636 289 MS
+( )660 289 MS
+( )1297 140 MS
+[38 0 0 -38 0 0]/Times-Roman MF
+(S)1785 129 MS (F)1806 129 MS (M)1827 129 MS (E)1861 129 MS (/)1883 129 MS (L)1894 129 MS (G)1916 129 MS (L)1943 129 MS (S)1965 129 MS (/)1986 129 MS (R)1997 129 MS (T)2022 129 MS (/)2045 129 MS (0)2056 129 MS (2)2075 129 MS
+(-)2094 129 MS
+(0)2106 129 MS (0)2125 129 MS (2)2144 129 MS
+( )2163 129 MS
+(D)1785 173 MS (a)1812 173 MS (t)1829 173 MS (e)1840 173 MS
+( )1856 173 MS
+(:)1866 173 MS
+( )1875 173 MS
+(3)1885 173 MS (0)1904 173 MS (/)1923 173 MS (0)1934 173 MS (5)1952 173 MS (/)1971 173 MS (2)1982 173 MS (0)2000 173 MS (0)2019 173 MS (2)2038 173 MS
+( )2057 173 MS
+n
+5 5 232 89 B
+f
+n
+5 5 232 89 B
+f
+n
+584 5 238 89 B
+f
+n
+5 5 823 89 B
+f
+n
+938 5 829 89 B
+f
+n
+5 5 1768 89 B
+f
+n
+436 5 1774 89 B
+f
+n
+5 5 2211 89 B
+f
+n
+5 5 2211 89 B
+f
+n
+5 256 232 95 B
+f
+n
+2 256 823 95 B
+f
+n
+2 256 1768 95 B
+f
+n
+5 256 2211 95 B
+f
+[50 0 0 -50 0 0]/Times-Roman MF
+(D)322 400 MS (M)358 400 MS (2)402 400 MS (S)427 400 MS (/)455 400 MS (S)469 400 MS (F)497 400 MS (M)524 400 MS (E)568 400 MS (/)599 400 MS (L)613 400 MS (G)643 400 MS (L)680 400 MS (S)710 400 MS
+( )738 400 MS
+[50 0 0 -50 0 0]/Times-Bold MF
+gs
+n
+241 53 1102 367 CB
+(R)1102 413 MS (A)1138 413 MS (P)1174 413 MS (P)1204 413 MS (O)1234 413 MS (R)1273 413 MS (T)1310 413 MS
+gr
+gs
+n
+150 53 1343 367 CB
+( )1343 413 MS (D)1356 413 MS (M)1392 413 MS (2)1440 413 MS (S)1465 413 MS
+gr
+[50 0 0 -50 0 0]/Times-Roman MF
+gs
+n
+24 52 1493 368 CB
+( )1493 413 MS
+gr
+[38 0 0 -38 0 0]/Times-Roman MF
+(P)1785 400 MS (a)1806 400 MS (g)1823 400 MS (e)1841 400 MS ( )1858 400 MS
+[50 0 0 -50 0 0]/Times-Roman MF
+(8)1868 400 MS
+(/)1893 400 MS
+(3)1907 400 MS (0)1932 400 MS
+[38 0 0 -38 0 0]/Times-Roman MF
+( )1957 400 MS
+n
+5 2 232 352 B
+f
+n
+2 2 823 352 B
+f
+n
+941 2 826 352 B
+f
+n
+2 2 1768 352 B
+f
+n
+5 2 2211 352 B
+f
+n
+5 67 232 355 B
+f
+n
+590 1 232 423 B
+f
+n
+2 67 823 355 B
+f
+n
+1 1 823 423 B
+f
+n
+942 1 825 423 B
+f
+n
+2 67 1768 355 B
+f
+n
+1 1 1768 423 B
+f
+n
+440 1 1770 423 B
+f
+n
+5 67 2211 355 B
+f
+n
+5 1 2211 423 B
+f
+[50 0 0 -50 0 0]/Times-Roman MF
+( )235 470 MS
+[33 0 0 -33 0 0]/Times-Roman MF
+/IsChar{exch/CharStrings get exch known}bd/MapCh{3 -1 roll/Encoding get 3 1\r
+roll put}bd/MapDegree{dup 16#b0 exch/degree IsChar{/degree}{/ring}ifelse MapCh}\r
+bd/MapBB{dup 16#a6 exch/brokenbar IsChar{/brokenbar}{/bar}ifelse MapCh}bd\r
+/reencode{findfont begin currentdict dup length dict begin{1 index/FID ne{def}\r
+{pop pop}ifelse}forall/FontName exch def dup length 0 ne{/Encoding Encoding 256\r
+array copy def 0 exch{dup type/nametype eq{Encoding 2 index 2 index put pop 1\r
+add}{exch pop}ifelse}forall}if pop currentdict dup end end/FontName get exch\r
+definefont dup MapDegree MapBB}bd/LATENC[0/grave/acute/circumflex/tilde/macron\r
+/breve/dotaccent/dieresis/ring/cedilla/hungarumlaut/ogonek/caron/dotlessi/fi/fl\r
+/Lslash/lslash/Zcaron/zcaron/minus/.notdef/.notdef/.notdef/.notdef/.notdef\r
+/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/space/exclam/quotedbl\r
+/numbersign/dollar/percent/ampersand/quotesingle/parenleft/parenright/asterisk\r
+/plus/comma/hyphen/period/slash/zero/one/two/three/four/five/six/seven/eight\r
+/nine/colon/semicolon/less/equal/greater/question/at/A/B/C/D/E/F/G/H/I/J/K/L/M\r
+/N/O/P/Q/R/S/T/U/V/W/X/Y/Z/bracketleft/backslash/bracketright/asciicircum\r
+/underscore/grave/a/b/c/d/e/f/g/h/i/j/k/l/m/n/o/p/q/r/s/t/u/v/w/x/y/z/braceleft\r
+/bar/braceright/asciitilde/.notdef/.notdef/.notdef/quotesinglbase/florin\r
+/quotedblbase/ellipsis/dagger/daggerdbl/circumflex/perthousand/Scaron\r
+/guilsinglleft/OE/.notdef/.notdef/.notdef/.notdef/quoteleft/quoteright\r
+/quotedblleft/quotedblright/bullet/endash/emdash/tilde/trademark/scaron\r
+/guilsinglright/oe/.notdef/.notdef/Ydieresis/.notdef/exclamdown/cent/sterling\r
+/currency/yen/brokenbar/section/dieresis/copyright/ordfeminine/guillemotleft\r
+/logicalnot/hyphen/registered/macron/degree/plusminus/twosuperior/threesuperior\r
+/acute/mu/paragraph/periodcentered/cedilla/onesuperior/ordmasculine\r
+/guillemotright/onequarter/onehalf/threequarters/questiondown/Agrave/Aacute\r
+/Acircumflex/Atilde/Adieresis/Aring/AE/Ccedilla/Egrave/Eacute/Ecircumflex\r
+/Edieresis/Igrave/Iacute/Icircumflex/Idieresis/Eth/Ntilde/Ograve/Oacute\r
+/Ocircumflex/Otilde/Odieresis/multiply/Oslash/Ugrave/Uacute/Ucircumflex\r
+/Udieresis/Yacute/Thorn/germandbls/agrave/aacute/acircumflex/atilde/adieresis\r
+/aring/ae/ccedilla/egrave/eacute/ecircumflex/edieresis/igrave/iacute\r
+/icircumflex/idieresis/eth/ntilde/ograve/oacute/ocircumflex/otilde/odieresis\r
+/divide/oslash/ugrave/uacute/ucircumflex/udieresis/yacute/thorn/ydieresis]def\r
+LATENC /_Times-Roman /Times-Roman reencode
+[33 0 0 -33 0 0]/_Times-Roman MF
+(L)242 3256 MS (e)262 3256 MS (s)277 3256 MS ( )289 3256 MS (i)298 3256 MS (n)307 3256 MS (f)324 3256 MS (o)335 3256 MS (r)351 3256 MS (m)363 3256 MS (a)388 3256 MS (t)403 3256 MS (i)412 3256 MS (o)422 3256 MS (n)439 3256 MS (s)456 3256 MS
+( )468 3256 MS (c)477 3256 MS (o)492 3256 MS (n)508 3256 MS (t)524 3256 MS (e)534 3256 MS (n)549 3256 MS (u)565 3256 MS (e)582 3256 MS (s)597 3256 MS ( )610 3256 MS (d)618 3256 MS (a)634 3256 MS (n)650 3256 MS (s)667 3256 MS ( )679 3256 MS
+(c)688 3256 MS (e)703 3256 MS ( )717 3256 MS (d)726 3256 MS (o)742 3256 MS (c)759 3256 MS (u)773 3256 MS (m)791 3256 MS (e)817 3256 MS (n)831 3256 MS (t)847 3256 MS ( )857 3256 MS (s)866 3256 MS (o)878 3256 MS (n)895 3256 MS (t)911 3256 MS
+( )921 3256 MS (r)929 3256 MS (\351)941 3256 MS (s)956 3256 MS (e)968 3256 MS (r)982 3256 MS (v)994 3256 MS (\351)1011 3256 MS (e)1026 3256 MS (s)1041 3256 MS ( )1053 3256 MS (a)1061 3256 MS (u)1076 3256 MS (x)1093 3256 MS ( )1109 3256 MS (d)1118 3256 MS
+(e)1135 3256 MS (s)1150 3256 MS (t)1162 3256 MS (i)1171 3256 MS (n)1181 3256 MS (a)1197 3256 MS (t)1212 3256 MS (a)1221 3256 MS (i)1236 3256 MS (r)1245 3256 MS (e)1257 3256 MS (s)1272 3256 MS ( )1284 3256 MS (n)1293 3256 MS (o)1309 3256 MS (m)1326 3256 MS
+(m)1352 3256 MS (\351)1378 3256 MS (m)1393 3256 MS (e)1419 3256 MS (n)1433 3256 MS (t)1450 3256 MS ( )1459 3256 MS (d)1468 3256 MS (\351)1484 3256 MS (s)1499 3256 MS (i)1512 3256 MS (g)1521 3256 MS
+(n)1538 3256 MS (\351)1555 3256 MS (s)1570 3256 MS ( )1582 3256 MS (e)1591 3256 MS (t)1605 3256 MS ( )1615 3256 MS (n)1623 3256 MS (e)1640 3256 MS ( )1654 3256 MS (p)1663 3256 MS (e)1680 3256 MS (u)1694 3256 MS (v)1711 3256 MS (e)1728 3256 MS (n)1743 3256 MS
+(t)1759 3256 MS ( )1768 3256 MS (r)1776 3256 MS (e)1788 3256 MS (c)1803 3256 MS (e)1818 3256 MS (v)1832 3256 MS (o)1849 3256 MS (i)1865 3256 MS (r)1874 3256 MS ( )1886 3256 MS (a)1894 3256 MS (u)1909 3256 MS (c)1926 3256 MS (u)1940 3256 MS (n)1957 3256 MS
+(e)1974 3256 MS ( )1988 3256 MS (d)1997 3256 MS (i)2013 3256 MS (f)2023 3256 MS (f)2034 3256 MS (u)2044 3256 MS (s)2062 3256 MS (i)2074 3256 MS (o)2084 3256 MS (n)2101 3256 MS
+( )2117 3256 MS
+(s)928 3294 MS (a)940 3294 MS (n)955 3294 MS (s)972 3294 MS ( )985 3294 MS (l)993 3294 MS (\222)1002 3294 MS (a)1013 3294 MS (u)1028 3294 MS (t)1045 3294 MS (o)1054 3294 MS (r)1071 3294 MS (i)1082 3294 MS (s)1092 3294 MS (a)1104 3294 MS (t)1119 3294 MS
+(i)1128 3294 MS (o)1138 3294 MS (n)1154 3294 MS ( )1171 3294 MS (e)1180 3294 MS (x)1194 3294 MS (p)1211 3294 MS (r)1227 3294 MS (e)1239 3294 MS (s)1254 3294 MS (s)1267 3294 MS (e)1280 3294 MS ( )1294 3294 MS (d)1303 3294 MS (u)1319 3294 MS ( )1336 3294 MS
+(D)1344 3294 MS (M)1368 3294 MS (2)1397 3294 MS (S)1414 3294 MS
+[50 0 0 -50 0 0]/Times-Roman MF
+( )1432 3294 MS
+[42 0 0 -42 0 0]/Courier MF
+( )235 517 MS
+( )235 565 MS
+[50 0 0 -50 0 0]/Times-Roman MF
+LATENC /_Times-Roman /Times-Roman reencode
+[50 0 0 -50 0 0]/_Times-Roman MF
+(D)348 622 MS (u)384 622 MS ( )409 622 MS (p)435 622 MS (o)460 622 MS (i)486 622 MS (n)499 622 MS (t)523 622 MS ( )538 622 MS (d)564 622 MS (e)589 622 MS ( )611 622 MS (v)637 622 MS (u)661 622 MS (e)686 622 MS ( )708 622 MS
+(d)734 622 MS (u)759 622 MS ( )784 622 MS (c)810 622 MS (l)833 622 MS (i)846 622 MS (e)859 622 MS (n)882 622 MS (t)906 622 MS (,)921 622 MS ( )934 622 MS (l)961 622 MS (\222)973 622 MS (i)990 622 MS (n)1003 622 MS (v)1028 622 MS
+(o)1052 622 MS (c)1078 622 MS (a)1100 622 MS (t)1122 622 MS (i)1138 622 MS (o)1150 622 MS (n)1176 622 MS ( )1200 622 MS (d)1226 622 MS (\222)1252 622 MS (u)1268 622 MS (n)1294 622 MS ( )1318 622 MS (s)1344 622 MS (e)1364 622 MS (r)1386 622 MS
+(v)1403 622 MS (i)1428 622 MS (c)1441 622 MS (e)1463 622 MS ( )1485 622 MS
+(d)1511 622 MS (\222)1537 622 MS (u)1553 622 MS (n)1579 622 MS ( )1603 622 MS (c)1629 622 MS (o)1651 622 MS (m)1677 622 MS (p)1714 622 MS (o)1739 622 MS (s)1765 622 MS (a)1784 622 MS (n)1807 622 MS (t)1831 622 MS ( )1846 622 MS (p)1872 622 MS
+(a)1897 622 MS (r)1919 622 MS (a)1936 622 MS (l)1959 622 MS (l)1972 622 MS (\350)1985 622 MS (l)2008 622 MS (e)2021 622 MS ( )2043 622 MS (e)2069 622 MS (s)2091 622 MS (t)2110 622 MS ( )2125 622 MS
+(i)235 679 MS (d)248 679 MS (e)273 679 MS (n)296 679 MS (t)320 679 MS (i)336 679 MS (q)348 679 MS (u)373 679 MS (e)398 679 MS ( )420 679 MS (\340)435 679 MS ( )457 679 MS (l)473 679 MS (\222)486 679 MS (i)503 679 MS (n)516 679 MS
+(v)541 679 MS (o)565 679 MS (c)591 679 MS (a)613 679 MS (t)635 679 MS (i)651 679 MS (o)663 679 MS (n)689 679 MS ( )713 679 MS (d)728 679 MS (\222)753 679 MS (u)769 679 MS (n)795 679 MS ( )819 679 MS (c)834 679 MS (o)856 679 MS
+(m)883 679 MS (p)920 679 MS (o)945 679 MS (s)971 679 MS (a)990 679 MS (n)1012 679 MS (t)1036 679 MS ( )1051 679 MS (s)1066 679 MS (\351)1085 679 MS (q)1107 679 MS (u)1132 679 MS (e)1157 679 MS (n)1179 679 MS (t)1203 679 MS (i)1219 679 MS
+(e)1231 679 MS (l)1254 679 MS (.)1266 679 MS ( )1279 679 MS (S)1294 679 MS (e)1322 679 MS (u)1344 679 MS (l)1370 679 MS ( )1382 679 MS (l)1398 679 MS (e)1411 679 MS ( )1433 679 MS (s)1448 679 MS (e)1467 679 MS (r)1489 679 MS (v)1507 679 MS
+(i)1532 679 MS (c)1545 679 MS (e)1567 679 MS ( )1589 679 MS (s)1604 679 MS (u)1623 679 MS (r)1648 679 MS ( )1665 679 MS (l)1681 679 MS (e)1694 679 MS ( )1716 679 MS (p)1731 679 MS (r)1756 679 MS (o)1773 679 MS (c)1799 679 MS (e)1821 679 MS
+(s)1843 679 MS (s)1862 679 MS ( )1881 679 MS (0)1896 679 MS ( )1921 679 MS (e)1936 679 MS (s)1958 679 MS (t)1977 679 MS ( )1991 679 MS (a)2006 679 MS (c)2028 679 MS (t)2049 679 MS (i)2064 679 MS (v)2077 679 MS (\351)2102 679 MS ( )2125 679 MS
+(p)235 737 MS (a)260 737 MS (r)282 737 MS ( )299 737 MS (l)312 737 MS (e)324 737 MS ( )346 737 MS (c)359 737 MS (l)382 737 MS (i)396 737 MS (e)409 737 MS (n)432 737 MS (t)456 737 MS (.)471 737 MS ( )484 737 MS (C)497 737 MS
+(\222)530 737 MS (e)546 737 MS (s)568 737 MS (t)587 737 MS ( )602 737 MS (c)615 737 MS (e)637 737 MS ( )659 737 MS (s)672 737 MS (e)691 737 MS (r)713 737 MS (v)730 737 MS (i)755 737 MS (c)767 737 MS (e)790 737 MS ( )812 737 MS
+(q)825 737 MS (u)850 737 MS (i)876 737 MS ( )888 737 MS (a)901 737 MS (c)923 737 MS (t)945 737 MS (i)961 737 MS (v)974 737 MS (e)998 737 MS ( )1020 737 MS (l)1034 737 MS (e)1046 737 MS ( )1068 737 MS (s)1081 737 MS (e)1101 737 MS
+(r)1123 737 MS (v)1140 737 MS (i)1165 737 MS (c)1178 737 MS (e)1201 737 MS ( )1223 737 MS (\351)1236 737 MS (q)1258 737 MS (u)1283 737 MS (i)1309 737 MS (v)1322 737 MS (a)1346 737 MS (l)1369 737 MS (e)1382 737 MS (n)1405 737 MS (t)1429 737 MS
+( )1444 737 MS (s)1457 737 MS (u)1476 737 MS (r)1501 737 MS ( )1518 737 MS (l)1531 737 MS (e)1543 737 MS (s)1566 737 MS ( )1585 737 MS (a)1598 737 MS (u)1620 737 MS (t)1645 737 MS (r)1660 737 MS (e)1677 737 MS (s)1699 737 MS ( )1718 737 MS
+(p)1731 737 MS (r)1756 737 MS (o)1772 737 MS (c)1798 737 MS (e)1820 737 MS (s)1842 737 MS (s)1861 737 MS ( )1880 737 MS (p)1893 737 MS (o)1918 737 MS (u)1944 737 MS (r)1968 737 MS ( )1985 737 MS (m)1998 737 MS (e)2035 737 MS (t)2057 737 MS
+(t)2072 737 MS (r)2086 737 MS (e)2103 737 MS ( )2125 737 MS
+(e)235 794 MS (n)257 794 MS ( )281 794 MS (\234)294 794 MS (u)330 794 MS (v)356 794 MS (r)380 794 MS (e)397 794 MS ( )419 794 MS (l)433 794 MS (e)445 794 MS ( )467 794 MS (p)480 794 MS (a)505 794 MS (r)527 794 MS (a)544 794 MS
+(l)567 794 MS (l)580 794 MS (\351)593 794 MS (l)617 794 MS (i)630 794 MS (s)643 794 MS (m)664 794 MS (e)702 794 MS (.)724 794 MS
+( )737 794 MS
+[42 0 0 -42 0 0]/Courier MF
+( )235 842 MS
+( )235 889 MS
+( )235 936 MS
+( )235 983 MS
+( )235 1031 MS
+( )235 1078 MS
+( )235 1125 MS
+( )235 1172 MS
+( )235 1219 MS
+( )235 1267 MS
+( )235 1314 MS
+( )235 1361 MS
+( )235 1408 MS
+( )235 1455 MS
+( )235 1503 MS
+( )235 1550 MS
+( )235 1597 MS
+( )235 1644 MS
+( )235 1691 MS
+( )235 1739 MS
+( )235 1786 MS
+( )235 1833 MS
+[50 0 0 -50 0 0]/_Times-Roman MF
+(L)348 1890 MS (e)378 1890 MS (s)400 1890 MS ( )419 1890 MS (\351)437 1890 MS (c)459 1890 MS (h)482 1890 MS (a)506 1890 MS (n)529 1890 MS (g)553 1890 MS (e)578 1890 MS (s)601 1890 MS ( )620 1890 MS (d)638 1890 MS (e)663 1890 MS (s)685 1890 MS
+( )704 1890 MS (d)722 1890 MS (o)747 1890 MS (n)773 1890 MS (n)798 1890 MS (\351)822 1890 MS (e)844 1890 MS (s)867 1890 MS ( )886 1890 MS (p)904 1890 MS (a)929 1890 MS (r)951 1890 MS (a)968 1890 MS (l)991 1890 MS (l)1004 1890 MS (\350)1017 1890 MS
+(l)1040 1890 MS (e)1053 1890 MS (s)1076 1890 MS ( )1095 1890 MS (r)1113 1890 MS (e)1130 1890 MS (s)1152 1890 MS (t)1171 1890 MS (e)1186 1890 MS (n)1208 1890 MS (t)1232 1890 MS ( )1247 1890 MS (\340)1265 1890 MS ( )1287 1890 MS (l)1305 1890 MS (a)1317 1890 MS
+( )1339 1890 MS (c)1357 1890 MS (h)1379 1890 MS (a)1403 1890 MS (r)1425 1890 MS (g)1442 1890 MS (e)1467 1890 MS ( )1489 1890 MS (d)1507 1890 MS (u)1532 1890 MS ( )1557 1890 MS (c)1575 1890 MS (l)1598 1890 MS (i)1611 1890 MS (e)1624 1890 MS (n)1647 1890 MS
+(t)1671 1890 MS ( )1686 1890 MS (d)1704 1890 MS (e)1729 1890 MS ( )1751 1890 MS (f)1769 1890 MS (a)1785 1890 MS (\347)1807 1890 MS (o)1829 1890 MS (n)1855 1890 MS ( )1879 1890 MS (\340)1897 1890 MS ( )1919 1890 MS (c)1937 1890 MS (e)1959 1890 MS ( )1981 1890 MS
+(q)1999 1890 MS (u)2024 1890 MS (e)2049 1890 MS ( )2071 1890 MS (l)2090 1890 MS (a)2102 1890 MS ( )2125 1890 MS
+(r)235 1948 MS (e)252 1948 MS (d)274 1948 MS (i)300 1948 MS (s)312 1948 MS (t)331 1948 MS (r)346 1948 MS (i)364 1948 MS (b)377 1948 MS (u)401 1948 MS (t)426 1948 MS (i)441 1948 MS (o)453 1948 MS (n)479 1948 MS ( )503 1948 MS (s)518 1948 MS
+(e)538 1948 MS ( )560 1948 MS (f)576 1948 MS (a)591 1948 MS (s)614 1948 MS (s)633 1948 MS (e)652 1948 MS ( )674 1948 MS (d)689 1948 MS (e)714 1948 MS ( )736 1948 MS (f)752 1948 MS (a)768 1948 MS (\347)790 1948 MS (o)812 1948 MS (n)838 1948 MS
+( )862 1948 MS (o)877 1948 MS (p)903 1948 MS (t)927 1948 MS (i)942 1948 MS (m)955 1948 MS (a)993 1948 MS (l)1016 1948 MS (e)1029 1948 MS ( )1051 1948 MS (d)1066 1948 MS (i)1092 1948 MS (r)1105 1948 MS (e)1122 1948 MS (c)1144 1948 MS (t)1166 1948 MS
+(e)1181 1948 MS (m)1204 1948 MS (e)1242 1948 MS (n)1264 1948 MS (t)1288 1948 MS ( )1303 1948 MS (d)1318 1948 MS (u)1343 1948 MS ( )1368 1948 MS (p)1383 1948 MS (r)1408 1948 MS (o)1424 1948 MS (c)1450 1948 MS (e)1472 1948 MS (s)1494 1948 MS (s)1513 1948 MS
+( )1532 1948 MS (s)1547 1948 MS (e)1566 1948 MS (r)1588 1948 MS (v)1605 1948 MS (e)1629 1948 MS (u)1651 1948 MS (r)1676 1948 MS ( )1693 1948 MS (a)1708 1948 MS (u)1730 1948 MS ( )1755 1948 MS (p)1770 1948 MS (r)1795 1948 MS (o)1812 1948 MS (c)1838 1948 MS
+(e)1860 1948 MS (s)1882 1948 MS (s)1901 1948 MS ( )1920 1948 MS (c)1935 1948 MS (l)1958 1948 MS (i)1971 1948 MS (e)1984 1948 MS (n)2007 1948 MS (t)2031 1948 MS ( )2046 1948 MS (q)2061 1948 MS (u)2086 1948 MS (i)2112 1948 MS ( )2125 1948 MS
+(h)235 2005 MS (\351)259 2005 MS (b)282 2005 MS (e)306 2005 MS (r)328 2005 MS (g)345 2005 MS (e)370 2005 MS ( )392 2005 MS (l)406 2005 MS (a)419 2005 MS ( )441 2005 MS (d)454 2005 MS (o)479 2005 MS (n)505 2005 MS (n)529 2005 MS (\351)553 2005 MS
+(e)576 2005 MS (.)598 2005 MS ( )611 2005 MS
+[42 0 0 -42 0 0]/Courier MF
+( )624 2005 MS
+( )235 2053 MS
+( )235 2100 MS
+( )235 2147 MS
+( )235 2194 MS
+( )235 2241 MS
+( )235 2289 MS
+( )235 2336 MS
+( )235 2383 MS
+( )235 2430 MS
+( )235 2477 MS
+0 j
+3 sl
+n
+1075 800 535 832 B
+cp
+gs
+1 g
+e
+gr
+CM [1 0 0 1 -60 -58] concat
+s
+SM
+[100 0 0 -100 0 0]/Times-Roman MF
+( )1073 942 MS
+1 j
+n
+335 1757 M
+860 1757 L
+CM [1 0 0 1 -60 -58] concat
+s
+SM
+n
+860 1757 M
+860 1612 L
+CM [1 0 0 1 -60 -58] concat
+s
+SM
+n
+877 1615 M
+860 1582 L
+844 1615 L
+cp
+e
+0 j
+n
+350 150 1135 932 B
+cp
+gs
+1 g
+e
+gr
+CM [1 0 0 1 -60 -58] concat
+s
+SM
+[50 0 0 -50 0 0]/_Times-Roman MF
+(P)1216 995 MS (r)1244 995 MS (o)1260 995 MS (c)1286 995 MS (e)1308 995 MS (s)1330 995 MS (s)1349 995 MS ( )1368 995 MS (n)1381 995 MS
+( )1405 995 MS
+n
+350 150 685 1432 B
+cp
+gs
+1 g
+e
+gr
+CM [1 0 0 1 -60 -58] concat
+s
+SM
+(P)765 1495 MS (r)793 1495 MS (o)809 1495 MS (c)835 1495 MS (e)857 1495 MS (s)879 1495 MS (s)898 1495 MS ( )917 1495 MS (0)930 1495 MS
+( )955 1495 MS
+n
+350 150 885 1107 B
+cp
+gs
+1 g
+e
+gr
+CM [1 0 0 1 -60 -58] concat
+s
+SM
+[100 0 0 -100 0 0]/Times-Roman MF
+( )1060 1214 MS
+[50 0 0 -50 0 0]/_Times-Roman MF
+(P)965 1193 MS (r)993 1193 MS (o)1009 1193 MS (c)1035 1193 MS (e)1057 1193 MS (s)1079 1193 MS (s)1098 1193 MS ( )1117 1193 MS (1)1130 1193 MS
+gs
+n
+1 57 1155 1148 CB
+( )1155 1193 MS
+gr
+1 j
+[0 6 ]0 sd
+n
+1285 1207 M
+1435 1107 L
+CM [1 0 0 1 -60 -58] concat
+s
+SM
+[12 9 3 9 ]0 sd
+n
+1035 1482 M
+1135 1482 L
+CM [1 0 0 1 -60 -58] concat
+s
+SM
+n
+1035 1557 M
+1360 1557 L
+CM [1 0 0 1 -60 -58] concat
+s
+SM
+n
+1135 1482 M
+1135 1287 L
+CM [1 0 0 1 -60 -58] concat
+s
+SM
+n
+1152 1290 M
+1136 1258 L
+1119 1290 L
+cp
+e
+n
+1360 1557 M
+1360 1112 L
+CM [1 0 0 1 -60 -58] concat
+s
+SM
+n
+1377 1115 M
+1360 1082 L
+1344 1115 L
+cp
+e
+(C)590 918 MS (o)623 918 MS (n)649 918 MS (t)673 918 MS (a)688 918 MS (i)710 918 MS (n)723 918 MS (e)747 918 MS (r)769 918 MS ( )786 918 MS (p)799 918 MS (a)824 918 MS (r)846 918 MS (a)863 918 MS (l)886 918 MS (l)899 918 MS
+(\350)912 918 MS (l)936 918 MS (e)949 918 MS
+gs
+n
+3 57 971 873 CB
+( )971 918 MS
+gr
+(I)340 1743 MS (n)357 1743 MS (v)382 1743 MS (o)406 1743 MS (c)432 1743 MS (a)454 1743 MS (t)476 1743 MS (i)491 1743 MS (o)503 1743 MS (n)529 1743 MS ( )553 1743 MS (s)566 1743 MS (e)585 1743 MS (r)607 1743 MS (v)625 1743 MS (i)650 1743 MS
+(c)663 1743 MS (e)685 1743 MS
+gs
+n
+3 57 707 1698 CB
+( )707 1743 MS
+gr
+0 j
+[0 6 ]0 sd
+n
+1075 550 610 2052 B
+cp
+gs
+1 g
+e
+gr
+CM [1 0 0 1 -60 -58] concat
+s
+SM
+[100 0 0 -100 0 0]/Times-Roman MF
+( )1148 2162 MS
+1 j
+[]0 sd
+n
+410 2727 M
+1410 2727 L
+CM [1 0 0 1 -60 -58] concat
+s
+SM
+n
+935 2727 M
+935 2582 L
+CM [1 0 0 1 -60 -58] concat
+s
+SM
+n
+952 2585 M
+936 2552 L
+919 2585 L
+cp
+e
+[50 0 0 -50 0 0]/_Times-Roman MF
+(C)665 2113 MS (o)698 2113 MS (n)724 2113 MS (t)748 2113 MS (a)763 2113 MS (i)785 2113 MS (n)798 2113 MS (e)822 2113 MS (r)844 2113 MS ( )861 2113 MS (p)874 2113 MS (a)899 2113 MS (r)921 2113 MS (a)938 2113 MS (l)961 2113 MS (l)974 2113 MS
+(\350)987 2113 MS (l)1011 2113 MS (e)1024 2113 MS
+gs
+n
+3 57 1046 2068 CB
+( )1046 2113 MS
+gr
+(E)415 2713 MS (c)446 2713 MS (h)468 2713 MS (a)492 2713 MS (n)515 2713 MS (g)539 2713 MS (e)564 2713 MS ( )586 2713 MS (d)599 2713 MS (e)624 2713 MS (s)646 2713 MS ( )665 2713 MS (d)678 2713 MS (o)703 2713 MS (n)729 2713 MS (n)754 2713 MS
+(\351)778 2713 MS (e)800 2713 MS (s)823 2713 MS
+gs
+n
+2 57 842 2668 CB
+( )842 2713 MS
+gr
+[12 9 ]0 sd
+n
+1210 2502 M
+1485 2327 L
+CM [1 0 0 1 -60 -58] concat
+s
+SM
+[]0 sd
+n
+1110 2489 M
+1110 2455 1031 2427 935 2427 c
+838 2427 760 2455 760 2489 c
+760 2524 838 2552 935 2552 c
+1031 2552 1110 2524 1110 2489 c
+cp
+gs
+1 g
+e
+gr
+CM [1 0 0 1 -60 -58] concat
+s
+SM
+(P)840 2503 MS (r)868 2503 MS (o)884 2503 MS (c)910 2503 MS (e)932 2503 MS (s)954 2503 MS (s)973 2503 MS ( )992 2503 MS (0)1005 2503 MS
+gs
+n
+6 57 1030 2458 CB
+( )1030 2503 MS
+gr
+n
+1285 2364 M
+1285 2330 1206 2302 1110 2302 c
+1013 2302 935 2330 935 2364 c
+935 2399 1013 2427 1110 2427 c
+1206 2427 1285 2399 1285 2364 c
+cp
+gs
+1 g
+e
+gr
+CM [1 0 0 1 -60 -58] concat
+s
+SM
+(P)1015 2378 MS (r)1043 2378 MS (o)1059 2378 MS (c)1085 2378 MS (e)1107 2378 MS (s)1129 2378 MS (s)1148 2378 MS ( )1167 2378 MS (1)1180 2378 MS
+gs
+n
+6 57 1205 2333 CB
+( )1205 2378 MS
+gr
+n
+1585 2189 M
+1585 2155 1506 2127 1410 2127 c
+1313 2127 1235 2155 1235 2189 c
+1235 2224 1313 2252 1410 2252 c
+1506 2252 1585 2224 1585 2189 c
+cp
+gs
+1 g
+e
+gr
+CM [1 0 0 1 -60 -58] concat
+s
+SM
+(P)1316 2203 MS (r)1344 2203 MS (o)1360 2203 MS (c)1386 2203 MS (e)1408 2203 MS (s)1430 2203 MS (s)1449 2203 MS ( )1468 2203 MS (n)1481 2203 MS
+gs
+n
+6 57 1505 2158 CB
+( )1505 2203 MS
+gr
+n
+1135 2727 M
+1135 2457 L
+CM [1 0 0 1 -60 -58] concat
+s
+SM
+n
+1152 2460 M
+1136 2428 L
+1119 2460 L
+cp
+e
+n
+1410 2727 M
+1410 2282 L
+CM [1 0 0 1 -60 -58] concat
+s
+SM
+n
+1427 2285 M
+1410 2252 L
+1394 2285 L
+cp
+e
+showpage
+%%Page: 9 9
+14.449 827.879 translate 72 300 div dup neg scale
+0 0 transform .25 add round .25 sub exch .25 add round .25 sub exch itransform translate
+1 j
+1 setlinecap
+72 sl
+0.375 g
+n
+494 182 M
+494 155 472 133 445 133 c
+418 133 396 155 396 182 c
+396 209 418 231 445 231 c
+472 231 494 209 494 182 c
+cp
+CM 0.156 0.152 scale
+s
+SM
+71 sl
+n
+660 182 M
+660 155 638 133 611 133 c
+584 133 562 155 562 182 c
+562 209 584 231 611 231 c
+638 231 660 209 660 182 c
+cp
+CM 0.156 0.152 scale
+s
+SM
+n
+120 24 468 152 B
+1 g
+f
+1 sl
+n
+122 26 467 151 B
+cp
+s
+71 sl
+0.375 g
+n
+577 180 M
+577 153 555 131 528 131 c
+501 131 479 153 479 180 c
+479 206 501 228 528 228 c
+555 228 577 206 577 180 c
+cp
+gs
+1 g
+e
+gr
+CM 0.156 0.152 scale
+s
+SM
+n
+480 180 M
+575 180 L
+CM 0.156 0.152 scale
+s
+SM
+n
+34 18 562 187 B
+1 g
+f
+1 sl
+n
+36 20 561 186 B
+cp
+s
+n
+610 173 M
+591 173 L
+554 124 L
+579 126 L
+609 173 L
+610 173 L
+cp
+gs
+e
+gr
+s
+n
+448 170 M
+468 170 L
+504 122 L
+479 123 L
+449 170 L
+448 170 L
+cp
+gs
+e
+gr
+s
+0.375 g
+n
+473 140 M
+473 137 470 135 467 135 c
+464 135 462 137 462 140 c
+462 142 464 145 467 145 c
+470 145 473 142 473 140 c
+cp
+gs
+e
+gr
+s
+n
+593 139 M
+593 136 590 134 588 134 c
+585 134 583 136 583 139 c
+583 141 585 144 588 144 c
+590 144 593 141 593 139 c
+cp
+gs
+e
+gr
+s
+72 sl
+n
+665 137 M
+665 229 L
+CM 0.156 0.152 scale
+s
+SM
+[29 0 0 -29 0 0]/Times-Roman MF
+0 g
+( )676 243 MS
+[50 0 0 -50 0 0]/Times-Roman MF
+(D)400 289 MS (E)436 289 MS (N)467 289 MS ( )503 289 MS ( )516 289 MS (S)529 289 MS (a)557 289 MS (c)579 289 MS (l)601 289 MS (a)613 289 MS (y)636 289 MS
+( )660 289 MS
+( )1297 140 MS
+[38 0 0 -38 0 0]/Times-Roman MF
+(S)1785 129 MS (F)1806 129 MS (M)1827 129 MS (E)1861 129 MS (/)1883 129 MS (L)1894 129 MS (G)1916 129 MS (L)1943 129 MS (S)1965 129 MS (/)1986 129 MS (R)1997 129 MS (T)2022 129 MS (/)2045 129 MS (0)2056 129 MS (2)2075 129 MS
+(-)2094 129 MS
+(0)2106 129 MS (0)2125 129 MS (2)2144 129 MS
+( )2163 129 MS
+(D)1785 173 MS (a)1812 173 MS (t)1829 173 MS (e)1840 173 MS
+( )1856 173 MS
+(:)1866 173 MS
+( )1875 173 MS
+(3)1885 173 MS (0)1904 173 MS (/)1923 173 MS (0)1934 173 MS (5)1952 173 MS (/)1971 173 MS (2)1982 173 MS (0)2000 173 MS (0)2019 173 MS (2)2038 173 MS
+( )2057 173 MS
+n
+5 5 232 89 B
+f
+n
+5 5 232 89 B
+f
+n
+584 5 238 89 B
+f
+n
+5 5 823 89 B
+f
+n
+938 5 829 89 B
+f
+n
+5 5 1768 89 B
+f
+n
+436 5 1774 89 B
+f
+n
+5 5 2211 89 B
+f
+n
+5 5 2211 89 B
+f
+n
+5 256 232 95 B
+f
+n
+2 256 823 95 B
+f
+n
+2 256 1768 95 B
+f
+n
+5 256 2211 95 B
+f
+[50 0 0 -50 0 0]/Times-Roman MF
+(D)322 400 MS (M)358 400 MS (2)402 400 MS (S)427 400 MS (/)455 400 MS (S)469 400 MS (F)497 400 MS (M)524 400 MS (E)568 400 MS (/)599 400 MS (L)613 400 MS (G)643 400 MS (L)680 400 MS (S)710 400 MS
+( )738 400 MS
+[50 0 0 -50 0 0]/Times-Bold MF
+gs
+n
+241 53 1102 367 CB
+(R)1102 413 MS (A)1138 413 MS (P)1174 413 MS (P)1204 413 MS (O)1234 413 MS (R)1273 413 MS (T)1310 413 MS
+gr
+gs
+n
+150 53 1343 367 CB
+( )1343 413 MS (D)1356 413 MS (M)1392 413 MS (2)1440 413 MS (S)1465 413 MS
+gr
+[50 0 0 -50 0 0]/Times-Roman MF
+gs
+n
+24 52 1493 368 CB
+( )1493 413 MS
+gr
+[38 0 0 -38 0 0]/Times-Roman MF
+(P)1785 400 MS (a)1806 400 MS (g)1823 400 MS (e)1841 400 MS ( )1858 400 MS
+[50 0 0 -50 0 0]/Times-Roman MF
+(9)1868 400 MS
+(/)1893 400 MS
+(3)1907 400 MS (0)1932 400 MS
+[38 0 0 -38 0 0]/Times-Roman MF
+( )1957 400 MS
+n
+5 2 232 352 B
+f
+n
+2 2 823 352 B
+f
+n
+941 2 826 352 B
+f
+n
+2 2 1768 352 B
+f
+n
+5 2 2211 352 B
+f
+n
+5 67 232 355 B
+f
+n
+590 1 232 423 B
+f
+n
+2 67 823 355 B
+f
+n
+1 1 823 423 B
+f
+n
+942 1 825 423 B
+f
+n
+2 67 1768 355 B
+f
+n
+1 1 1768 423 B
+f
+n
+440 1 1770 423 B
+f
+n
+5 67 2211 355 B
+f
+n
+5 1 2211 423 B
+f
+[50 0 0 -50 0 0]/Times-Roman MF
+( )235 470 MS
+[33 0 0 -33 0 0]/Times-Roman MF
+/IsChar{exch/CharStrings get exch known}bd/MapCh{3 -1 roll/Encoding get 3 1\r
+roll put}bd/MapDegree{dup 16#b0 exch/degree IsChar{/degree}{/ring}ifelse MapCh}\r
+bd/MapBB{dup 16#a6 exch/brokenbar IsChar{/brokenbar}{/bar}ifelse MapCh}bd\r
+/reencode{findfont begin currentdict dup length dict begin{1 index/FID ne{def}\r
+{pop pop}ifelse}forall/FontName exch def dup length 0 ne{/Encoding Encoding 256\r
+array copy def 0 exch{dup type/nametype eq{Encoding 2 index 2 index put pop 1\r
+add}{exch pop}ifelse}forall}if pop currentdict dup end end/FontName get exch\r
+definefont dup MapDegree MapBB}bd/LATENC[0/grave/acute/circumflex/tilde/macron\r
+/breve/dotaccent/dieresis/ring/cedilla/hungarumlaut/ogonek/caron/dotlessi/fi/fl\r
+/Lslash/lslash/Zcaron/zcaron/minus/.notdef/.notdef/.notdef/.notdef/.notdef\r
+/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/space/exclam/quotedbl\r
+/numbersign/dollar/percent/ampersand/quotesingle/parenleft/parenright/asterisk\r
+/plus/comma/hyphen/period/slash/zero/one/two/three/four/five/six/seven/eight\r
+/nine/colon/semicolon/less/equal/greater/question/at/A/B/C/D/E/F/G/H/I/J/K/L/M\r
+/N/O/P/Q/R/S/T/U/V/W/X/Y/Z/bracketleft/backslash/bracketright/asciicircum\r
+/underscore/grave/a/b/c/d/e/f/g/h/i/j/k/l/m/n/o/p/q/r/s/t/u/v/w/x/y/z/braceleft\r
+/bar/braceright/asciitilde/.notdef/.notdef/.notdef/quotesinglbase/florin\r
+/quotedblbase/ellipsis/dagger/daggerdbl/circumflex/perthousand/Scaron\r
+/guilsinglleft/OE/.notdef/.notdef/.notdef/.notdef/quoteleft/quoteright\r
+/quotedblleft/quotedblright/bullet/endash/emdash/tilde/trademark/scaron\r
+/guilsinglright/oe/.notdef/.notdef/Ydieresis/.notdef/exclamdown/cent/sterling\r
+/currency/yen/brokenbar/section/dieresis/copyright/ordfeminine/guillemotleft\r
+/logicalnot/hyphen/registered/macron/degree/plusminus/twosuperior/threesuperior\r
+/acute/mu/paragraph/periodcentered/cedilla/onesuperior/ordmasculine\r
+/guillemotright/onequarter/onehalf/threequarters/questiondown/Agrave/Aacute\r
+/Acircumflex/Atilde/Adieresis/Aring/AE/Ccedilla/Egrave/Eacute/Ecircumflex\r
+/Edieresis/Igrave/Iacute/Icircumflex/Idieresis/Eth/Ntilde/Ograve/Oacute\r
+/Ocircumflex/Otilde/Odieresis/multiply/Oslash/Ugrave/Uacute/Ucircumflex\r
+/Udieresis/Yacute/Thorn/germandbls/agrave/aacute/acircumflex/atilde/adieresis\r
+/aring/ae/ccedilla/egrave/eacute/ecircumflex/edieresis/igrave/iacute\r
+/icircumflex/idieresis/eth/ntilde/ograve/oacute/ocircumflex/otilde/odieresis\r
+/divide/oslash/ugrave/uacute/ucircumflex/udieresis/yacute/thorn/ydieresis]def\r
+LATENC /_Times-Roman /Times-Roman reencode
+[33 0 0 -33 0 0]/_Times-Roman MF
+(L)242 3256 MS (e)262 3256 MS (s)277 3256 MS ( )289 3256 MS (i)298 3256 MS (n)307 3256 MS (f)324 3256 MS (o)335 3256 MS (r)351 3256 MS (m)363 3256 MS (a)388 3256 MS (t)403 3256 MS (i)412 3256 MS (o)422 3256 MS (n)439 3256 MS (s)456 3256 MS
+( )468 3256 MS (c)477 3256 MS (o)492 3256 MS (n)508 3256 MS (t)524 3256 MS (e)534 3256 MS (n)549 3256 MS (u)565 3256 MS (e)582 3256 MS (s)597 3256 MS ( )610 3256 MS (d)618 3256 MS (a)634 3256 MS (n)650 3256 MS (s)667 3256 MS ( )679 3256 MS
+(c)688 3256 MS (e)703 3256 MS ( )717 3256 MS (d)726 3256 MS (o)742 3256 MS (c)759 3256 MS (u)773 3256 MS (m)791 3256 MS (e)817 3256 MS (n)831 3256 MS (t)847 3256 MS ( )857 3256 MS (s)866 3256 MS (o)878 3256 MS (n)895 3256 MS (t)911 3256 MS
+( )921 3256 MS (r)929 3256 MS (\351)941 3256 MS (s)956 3256 MS (e)968 3256 MS (r)982 3256 MS (v)994 3256 MS (\351)1011 3256 MS (e)1026 3256 MS (s)1041 3256 MS ( )1053 3256 MS (a)1061 3256 MS (u)1076 3256 MS (x)1093 3256 MS ( )1109 3256 MS (d)1118 3256 MS
+(e)1135 3256 MS (s)1150 3256 MS (t)1162 3256 MS (i)1171 3256 MS (n)1181 3256 MS (a)1197 3256 MS (t)1212 3256 MS (a)1221 3256 MS (i)1236 3256 MS (r)1245 3256 MS (e)1257 3256 MS (s)1272 3256 MS ( )1284 3256 MS (n)1293 3256 MS (o)1309 3256 MS (m)1326 3256 MS
+(m)1352 3256 MS (\351)1378 3256 MS (m)1393 3256 MS (e)1419 3256 MS (n)1433 3256 MS (t)1450 3256 MS ( )1459 3256 MS (d)1468 3256 MS (\351)1484 3256 MS (s)1499 3256 MS (i)1512 3256 MS (g)1521 3256 MS
+(n)1538 3256 MS (\351)1555 3256 MS (s)1570 3256 MS ( )1582 3256 MS (e)1591 3256 MS (t)1605 3256 MS ( )1615 3256 MS (n)1623 3256 MS (e)1640 3256 MS ( )1654 3256 MS (p)1663 3256 MS (e)1680 3256 MS (u)1694 3256 MS (v)1711 3256 MS (e)1728 3256 MS (n)1743 3256 MS
+(t)1759 3256 MS ( )1768 3256 MS (r)1776 3256 MS (e)1788 3256 MS (c)1803 3256 MS (e)1818 3256 MS (v)1832 3256 MS (o)1849 3256 MS (i)1865 3256 MS (r)1874 3256 MS ( )1886 3256 MS (a)1894 3256 MS (u)1909 3256 MS (c)1926 3256 MS (u)1940 3256 MS (n)1957 3256 MS
+(e)1974 3256 MS ( )1988 3256 MS (d)1997 3256 MS (i)2013 3256 MS (f)2023 3256 MS (f)2034 3256 MS (u)2044 3256 MS (s)2062 3256 MS (i)2074 3256 MS (o)2084 3256 MS (n)2101 3256 MS
+( )2117 3256 MS
+(s)928 3294 MS (a)940 3294 MS (n)955 3294 MS (s)972 3294 MS ( )985 3294 MS (l)993 3294 MS (\222)1002 3294 MS (a)1013 3294 MS (u)1028 3294 MS (t)1045 3294 MS (o)1054 3294 MS (r)1071 3294 MS (i)1082 3294 MS (s)1092 3294 MS (a)1104 3294 MS (t)1119 3294 MS
+(i)1128 3294 MS (o)1138 3294 MS (n)1154 3294 MS ( )1171 3294 MS (e)1180 3294 MS (x)1194 3294 MS (p)1211 3294 MS (r)1227 3294 MS (e)1239 3294 MS (s)1254 3294 MS (s)1267 3294 MS (e)1280 3294 MS ( )1294 3294 MS (d)1303 3294 MS (u)1319 3294 MS ( )1336 3294 MS
+(D)1344 3294 MS (M)1368 3294 MS (2)1397 3294 MS (S)1414 3294 MS
+[50 0 0 -50 0 0]/Times-Roman MF
+( )1432 3294 MS
+[67 0 0 -67 0 0]/Helvetica-Bold MF
+(4)310 592 MS
+( )347 592 MS
+LATENC /_Helvetica-Bold /Helvetica-Bold reencode
+[67 0 0 -67 0 0]/_Helvetica-Bold MF
+(D)400 592 MS (\351)448 592 MS (f)485 592 MS (i)507 592 MS (n)526 592 MS (i)567 592 MS (t)586 592 MS (i)608 592 MS (o)627 592 MS (n)667 592 MS (s)708 592 MS
+( )745 592 MS
+[50 0 0 -50 0 0]/Times-Roman MF
+( )235 667 MS
+(U)348 724 MS (n)384 724 MS ( )408 724 MS (c)434 724 MS (o)456 724 MS (m)483 724 MS (p)520 724 MS (o)545 724 MS (s)571 724 MS (a)590 724 MS (n)613 724 MS
+LATENC /_Times-Roman /Times-Roman reencode
+[50 0 0 -50 0 0]/_Times-Roman MF
+(t)637 724 MS ( )652 724 MS (S)678 724 MS (A)706 724 MS (L)741 724 MS (O)771 724 MS (M)808 724 MS (E)852 724 MS ( )883 724 MS (e)909 724 MS (s)931 724 MS (t)950 724 MS ( )965 724 MS (u)991 724 MS (n)1016 724 MS (e)1040 724 MS
+( )1062 724 MS (\253)1089 724 MS
+( )1113 724 MS
+(e)1126 724 MS (n)1148 724 MS (t)1172 724 MS (i)1188 724 MS (t)1200 724 MS (\351)1215 724 MS ( )1237 724 MS (l)1264 724 MS (o)1276 724 MS (g)1302 724 MS (i)1328 724 MS (c)1340 724 MS (i)1363 724 MS (e)1376 724 MS (l)1399 724 MS (l)1413 724 MS
+(e)1426 724 MS
+( )1448 724 MS
+(\273)1462 724 MS ( )1486 724 MS (d)1512 724 MS (e)1537 724 MS ( )1559 724 MS (b)1586 724 MS (a)1610 724 MS (s)1632 724 MS (e)1651 724 MS ( )1673 724 MS (q)1699 724 MS (u)1724 724 MS (i)1750 724 MS ( )1763 724 MS (o)1789 724 MS (f)1816 724 MS
+(f)1832 724 MS (r)1847 724 MS (e)1864 724 MS ( )1886 724 MS (u)1912 724 MS (n)1938 724 MS ( )1962 724 MS (c)1988 724 MS (e)2011 724 MS (r)2033 724 MS (t)2050 724 MS (a)2065 724 MS (i)2087 724 MS (n)2100 724 MS ( )2125 724 MS
+(n)235 782 MS (o)259 782 MS (m)286 782 MS (b)324 782 MS (r)348 782 MS (e)365 782 MS ( )387 782 MS (d)406 782 MS (e)431 782 MS ( )453 782 MS (s)472 782 MS (e)491 782 MS (r)513 782 MS (v)531 782 MS (i)556 782 MS (c)569 782 MS
+(e)591 782 MS (s)614 782 MS (.)633 782 MS ( )646 782 MS (L)665 782 MS (\222)695 782 MS (e)712 782 MS (n)735 782 MS (s)759 782 MS (e)778 782 MS (m)801 782 MS (b)839 782 MS (l)865 782 MS (e)878 782 MS ( )900 782 MS (d)919 782 MS
+(e)944 782 MS ( )966 782 MS (c)986 782 MS (e)1008 782 MS (s)1030 782 MS ( )1049 782 MS (s)1069 782 MS (e)1088 782 MS (r)1110 782 MS (v)1127 782 MS (i)1152 782 MS (c)1165 782 MS (e)1188 782 MS (s)1210 782 MS ( )1229 782 MS (e)1249 782 MS
+(s)1271 782 MS (t)1290 782 MS ( )1305 782 MS (d)1324 782 MS (\351)1349 782 MS (f)1371 782 MS (i)1387 782 MS (n)1400 782 MS (i)1426 782 MS ( )1439 782 MS (d)1458 782 MS (a)1483 782 MS (n)1506 782 MS (s)1531 782 MS ( )1550 782 MS (l)1570 782 MS
+(e)1583 782 MS ( )1605 782 MS (d)1624 782 MS (o)1649 782 MS (m)1676 782 MS (a)1713 782 MS (i)1736 782 MS (n)1749 782 MS (e)1774 782 MS ( )1796 782 MS (p)1815 782 MS (u)1840 782 MS (b)1866 782 MS (l)1891 782 MS (i)1905 782 MS (c)1918 782 MS
+(.)1940 782 MS ( )1953 782 MS (I)1972 782 MS (l)1990 782 MS (s)2002 782 MS ( )2021 782 MS (s)2041 782 MS (o)2060 782 MS (n)2086 782 MS (t)2110 782 MS ( )2125 782 MS
+(d)235 839 MS (o)260 839 MS (n)286 839 MS (c)310 839 MS ( )332 839 MS (a)351 839 MS (c)373 839 MS (c)395 839 MS (e)417 839 MS (s)439 839 MS (s)459 839 MS (i)479 839 MS (b)492 839 MS (l)517 839 MS (e)530 839 MS (s)553 839 MS
+( )572 839 MS (d)591 839 MS (e)616 839 MS (p)638 839 MS (u)663 839 MS (i)689 839 MS (s)702 839 MS ( )721 839 MS (n)741 839 MS (\222)766 839 MS (i)783 839 MS (m)797 839 MS (p)835 839 MS (o)860 839 MS (r)886 839 MS (t)902 839 MS
+(e)917 839 MS ( )939 839 MS (q)958 839 MS (u)983 839 MS (e)1008 839 MS (l)1030 839 MS ( )1042 839 MS (a)1061 839 MS (u)1083 839 MS (t)1108 839 MS (r)1123 839 MS (e)1140 839 MS ( )1162 839 MS (l)1182 839 MS (o)1194 839 MS (g)1220 839 MS
+(i)1245 839 MS (c)1258 839 MS (i)1281 839 MS (e)1294 839 MS (l)1317 839 MS ( )1330 839 MS (c)1349 839 MS (l)1372 839 MS (i)1386 839 MS (e)1399 839 MS (n)1422 839 MS (t)1446 839 MS (,)1461 839 MS ( )1474 839 MS (q)1493 839 MS (u)1518 839 MS
+(\222)1543 839 MS (i)1560 839 MS (l)1573 839 MS ( )1585 839 MS (s)1605 839 MS (o)1624 839 MS (i)1651 839 MS (t)1663 839 MS ( )1678 839 MS (l)1697 839 MS (o)1709 839 MS (c)1735 839 MS (a)1757 839 MS (l)1780 839 MS (i)1794 839 MS (s)1807 839 MS
+(\351)1826 839 MS ( )1848 839 MS (s)1867 839 MS (u)1886 839 MS (r)1911 839 MS ( )1928 839 MS (l)1948 839 MS (a)1961 839 MS ( )1983 839 MS (m)2003 839 MS (\352)2041 839 MS (m)2064 839 MS (e)2102 839 MS ( )2125 839 MS
+(m)235 897 MS (a)273 897 MS (c)295 897 MS
+(h)318 897 MS (i)343 897 MS (n)356 897 MS (e)381 897 MS ( )403 897 MS (o)418 897 MS (u)444 897 MS ( )469 897 MS (d)484 897 MS (i)510 897 MS (s)522 897 MS (t)541 897 MS (a)556 897 MS (n)578 897 MS (t)602 897 MS (.)617 897 MS
+( )630 897 MS (I)645 897 MS (l)662 897 MS (s)674 897 MS ( )693 897 MS (p)708 897 MS (e)733 897 MS (r)755 897 MS (m)773 897 MS (e)811 897 MS (t)833 897 MS (t)848 897 MS (e)863 897 MS (n)885 897 MS (t)909 897 MS ( )923 897 MS
+(\351)938 897 MS (g)960 897 MS (a)985 897 MS (l)1008 897 MS (e)1020 897 MS (m)1043 897 MS (e)1081 897 MS (n)1104 897 MS (t)1128 897 MS ( )1143 897 MS (a)1158 897 MS (u)1180 897 MS (x)1205 897 MS ( )1229 897 MS (d)1244 897 MS (i)1270 897 MS
+(f)1283 897 MS (f)1299 897 MS (\351)1315 897 MS (r)1337 897 MS (e)1354 897 MS (n)1377 897 MS (t)1401 897 MS (s)1416 897 MS ( )1435 897 MS (c)1450 897 MS (o)1472 897 MS (m)1498 897 MS (p)1535 897 MS (o)1560 897 MS (s)1586 897 MS (a)1605 897 MS
+(n)1628 897 MS (t)1652 897 MS (s)1667 897 MS ( )1686 897 MS (d)1701 897 MS (\222)1726 897 MS (\351)1742 897 MS (c)1764 897 MS (h)1787 897 MS (a)1811 897 MS (n)1834 897 MS (g)1858 897 MS (e)1883 897 MS (r)1905 897 MS ( )1922 897 MS (e)1937 897 MS
+(n)1960 897 MS (t)1984 897 MS (r)1999 897 MS (e)2016 897 MS ( )2038 897 MS (e)2053 897 MS (u)2075 897 MS (x)2100 897 MS ( )2125 897 MS
+(d)235 954 MS (e)260 954 MS (s)282 954 MS ( )301 954 MS (d)321 954 MS (o)346 954 MS (n)372 954 MS (n)396 954 MS (\351)421 954 MS (e)443 954 MS (s)465 954 MS (.)484 954 MS ( )497 954 MS (D)517 954 MS (a)553 954 MS (n)576 954 MS
+(s)600 954 MS ( )619 954 MS ( )639 954 MS (S)659 954 MS (A)688 954 MS (L)723 954 MS (O)753 954 MS (M)790 954 MS (E)834 954 MS (,)865 954 MS ( )878 954 MS (u)898 954 MS (n)923 954 MS ( )947 954 MS (c)967 954 MS (o)989 954 MS
+(m)1015 954 MS (p)1052 954 MS (o)1077 954 MS (s)1103 954 MS (a)1122 954 MS (n)1145 954 MS (t)1169 954 MS ( )1184 954 MS (e)1204 954 MS (s)1226 954 MS (t)1245 954 MS ( )1260 954 MS (c)1280 954 MS (o)1301 954 MS (n)1327 954 MS (c)1351 954 MS
+(r)1373 954 MS (\351)1390 954 MS (t)1412 954 MS (i)1427 954 MS (s)1439 954 MS (\351)1458 954 MS ( )1480 954 MS (p)1500 954 MS (a)1525 954 MS (r)1547 954 MS ( )1564 954 MS (u)1584 954 MS (n)1610 954 MS (e)1634 954 MS ( )1656 954 MS (o)1676 954 MS
+(u)1702 954 MS ( )1727 954 MS (p)1747 954 MS (l)1772 954 MS (u)1784 954 MS (s)1810 954 MS (i)1830 954 MS (e)1843 954 MS (u)1865 954 MS (r)1890 954 MS (s)1907 954 MS ( )1926 954 MS (l)1947 954 MS (i)1960 954 MS (b)1973 954 MS (r)1998 954 MS
+(a)2015 954 MS (i)2038 954 MS (r)2051 954 MS (i)2069 954 MS (e)2082 954 MS (s)2105 954 MS ( )2125 954 MS
+(d)235 1012 MS (y)261 1012 MS (n)285 1012 MS (a)309 1012 MS (m)332 1012 MS (i)371 1012 MS (q)384 1012 MS (u)409 1012 MS (e)434 1012 MS (s)457 1012 MS (.)476 1012 MS
+( )489 1012 MS
+(L)348 1069 MS (e)378 1069 MS ( )400 1069 MS (\253)429 1069 MS
+( )453 1069 MS
+(m)467 1069 MS (i)506 1069 MS (d)519 1069 MS (d)544 1069 MS (l)570 1069 MS (e)583 1069 MS (w)605 1069 MS (a)641 1069 MS (r)663 1069 MS (e)680 1069 MS
+( )702 1069 MS
+(\273)715 1069 MS ( )739 1069 MS (e)768 1069 MS (s)791 1069 MS (t)810 1069 MS ( )825 1069 MS (l)854 1069 MS (a)866 1069 MS ( )888 1069 MS (c)917 1069 MS (o)939 1069 MS (u)965 1069 MS (c)990 1069 MS (h)1012 1069 MS (e)1036 1069 MS ( )1058 1069 MS
+(l)1088 1069 MS (o)1100 1069 MS (g)1126 1069 MS (i)1152 1069 MS (c)1165 1069 MS (i)1188 1069 MS (e)1201 1069 MS (l)1224 1069 MS (l)1238 1069 MS (e)1251 1069 MS ( )1273 1069 MS (c)1302 1069 MS (h)1325 1069 MS (a)1350 1069 MS (r)1372 1069 MS (g)1389 1069 MS
+(\351)1414 1069 MS (e)1436 1069 MS ( )1458 1069 MS (d)1487 1069 MS (e)1512 1069 MS (s)1534 1069 MS ( )1553 1069 MS (c)1582 1069 MS (o)1604 1069 MS (m)1630 1069 MS (m)1668 1069 MS (u)1706 1069 MS (n)1732 1069 MS (i)1757 1069 MS (c)1770 1069 MS (a)1792 1069 MS
+(t)1814 1069 MS (i)1830 1069 MS (o)1842 1069 MS (n)1868 1069 MS
+(s)1893 1069 MS ( )1912 1069 MS (e)1941 1069 MS (n)1963 1069 MS (t)1987 1069 MS (r)2002 1069 MS (e)2019 1069 MS ( )2041 1069 MS (l)2071 1069 MS (e)2083 1069 MS (s)2105 1069 MS ( )2125 1069 MS
+(c)235 1127 MS (o)257 1127 MS (m)283 1127 MS (p)320 1127 MS (o)345 1127 MS (s)371 1127 MS (a)390 1127 MS (n)413 1127 MS (t)437 1127 MS (s)452 1127 MS ( )471 1127 MS (d)491 1127 MS (a)516 1127 MS (n)539 1127 MS (s)563 1127 MS ( )582 1127 MS
+(u)602 1127 MS (n)628 1127 MS (e)653 1127 MS ( )675 1127 MS (a)695 1127 MS (r)717 1127 MS (c)734 1127 MS (h)757 1127 MS (i)782 1127 MS (t)794 1127 MS (e)809 1127 MS (c)831 1127 MS (t)853 1127 MS (u)868 1127 MS (r)893 1127 MS (e)910 1127 MS
+( )932 1127 MS (r)952 1127 MS (\351)969 1127 MS (p)991 1127 MS (a)1016 1127 MS (r)1038 1127 MS (t)1055 1127 MS (i)1070 1127 MS (e)1082 1127 MS ( )1104 1127 MS (\()1124 1127 MS (e)1141 1127 MS (x)1164 1127 MS
+( )1188 1127 MS
+(:)1201 1127 MS ( )1215 1127 MS (C)1236 1127 MS (O)1269 1127 MS (R)1305 1127 MS (B)1338 1127 MS (A)1372 1127 MS (\))1407 1127 MS ( )1424 1127 MS ([)1444 1127 MS (2)1461 1127 MS (])1486 1127 MS (,)1503 1127 MS ( )1516 1127 MS ([)1536 1127 MS (3)1553 1127 MS
+(])1578 1127 MS (.)1595 1127 MS ( )1608 1127 MS (I)1628 1127 MS (l)1645 1127 MS ( )1658 1127 MS (d)1678 1127 MS (\351)1703 1127 MS (f)1726 1127 MS (i)1742 1127 MS (n)1755 1127 MS (i)1781 1127 MS (t)1793 1127 MS ( )1808 1127 MS (n)1829 1127 MS (o)1853 1127 MS
+(t)1879 1127 MS (a)1894 1127 MS (m)1916 1127 MS (m)1954 1127 MS (e)1992 1127 MS (n)2015 1127 MS (t)2039 1127 MS ( )2054 1127 MS (u)2074 1127 MS (n)2100 1127 MS ( )2125 1127 MS
+(s)235 1184 MS (e)254 1184 MS (r)276 1184 MS (v)293 1184 MS (i)318 1184 MS (c)331 1184 MS (e)354 1184 MS ( )376 1184 MS (d)396 1184 MS (e)421 1184 MS ( )444 1184 MS (n)465 1184 MS (o)489 1184 MS (m)516 1184 MS (m)554 1184 MS (a)592 1184 MS
+(g)614 1184 MS (e)639 1184 MS ( )661 1184 MS (q)681 1184 MS (u)706 1184 MS (i)732 1184 MS ( )745 1184 MS (d)766 1184 MS (o)791 1184 MS (n)817 1184 MS (n)842 1184 MS (e)866 1184 MS ( )888 1184 MS (u)908 1184 MS (n)934 1184 MS ( )959 1184 MS
+(a)979 1184 MS (c)1001 1184 MS (c)1023 1184 MS (\350)1046 1184 MS (s)1068 1184 MS ( )1088 1184 MS (\340)1108 1184 MS ( )1130 1184 MS (l)1151 1184 MS (a)1164 1184 MS ( )1187 1184 MS (r)1207 1184 MS (\351)1224 1184 MS (f)1247 1184 MS (\351)1263 1184 MS (r)1285 1184 MS
+(e)1302 1184 MS (n)1325 1184 MS (c)1349 1184 MS (e)1371 1184 MS ( )1394 1184 MS (d)1414 1184 MS (e)1439 1184 MS ( )1461 1184 MS (c)1481 1184 MS (h)1504 1184 MS (a)1529 1184 MS (c)1551 1184 MS (u)1573 1184 MS (n)1599 1184 MS ( )1623 1184 MS (d)1643 1184 MS
+(e)1668 1184 MS (s)1691 1184 MS ( )1710 1184 MS (o)1730 1184 MS (b)1756 1184 MS (j)1781 1184 MS (e)1794 1184 MS (t)1816 1184 MS (s)1831 1184 MS ( )1850 1184 MS (i)1871 1184 MS (n)1884 1184 MS (s)1909 1184 MS (t)1928 1184 MS (a)1943 1184 MS (n)1966 1184 MS
+(c)1990 1184 MS (i)2013 1184 MS (\351)2026 1184 MS (s)2048 1184 MS ( )2068 1184 MS (e)2088 1184 MS (t)2110 1184 MS ( )2125 1184 MS
+(i)235 1242 MS (d)248 1242 MS (e)273 1242 MS (n)296 1242 MS (t)320 1242 MS (i)336 1242 MS (f)349 1242 MS (i)365 1242 MS (\351)378 1242 MS (s)401 1242 MS (.)420 1242 MS
+( )433 1242 MS
+(U)348 1299 MS (n)384 1299 MS ( )408 1299 MS (\253)424 1299 MS
+( )448 1299 MS
+(c)461 1299 MS (o)483 1299 MS (n)509 1299 MS (t)533 1299 MS (a)548 1299 MS (i)571 1299 MS (n)584 1299 MS (e)608 1299 MS (r)630 1299 MS
+( )647 1299 MS
+(\273)660 1299 MS ( )684 1299 MS (e)699 1299 MS (s)721 1299 MS (t)740 1299 MS ( )755 1299 MS (u)770 1299 MS (n)795 1299 MS ( )819 1299 MS (g)834 1299 MS (e)859 1299 MS (s)882 1299 MS (t)901 1299 MS (i)916 1299 MS (o)928 1299 MS (n)954 1299 MS
+(n)979 1299 MS (a)1004 1299 MS (i)1027 1299 MS (r)1039 1299 MS (e)1056 1299 MS ( )1078 1299 MS (d)1093 1299 MS (e)1118 1299 MS ( )1140 1299 MS (c)1155 1299 MS (o)1177 1299 MS (m)1204 1299 MS (p)1241 1299 MS (o)1266 1299 MS (s)1292 1299 MS (a)1311 1299 MS
+(n)1334 1299 MS (t)1359 1299 MS (s)1374 1299 MS ( )1393 1299 MS (s)1408 1299 MS (u)1427 1299 MS (r)1452 1299 MS ( )1469 1299 MS
+(u)1484 1299 MS (n)1509 1299 MS (e)1533 1299 MS ( )1555 1299 MS (m)1571 1299 MS (a)1608 1299 MS (c)1630 1299 MS (h)1653 1299 MS (i)1678 1299 MS (n)1691 1299 MS (e)1716 1299 MS ( )1738 1299 MS (d)1753 1299 MS (o)1778 1299 MS (n)1804 1299 MS (n)1829 1299 MS
+(\351)1853 1299 MS (e)1876 1299 MS ( )1898 1299 MS (\()1913 1299 MS (s)1930 1299 MS (t)1949 1299 MS (a)1964 1299 MS (t)1986 1299 MS (i)2001 1299 MS (o)2013 1299 MS (n)2039 1299 MS ( )2063 1299 MS (d)2078 1299 MS (e)2103 1299 MS ( )2125 1299 MS
+(t)235 1357 MS (r)250 1357 MS (a)267 1357 MS (v)289 1357 MS (a)313 1357 MS (i)336 1357 MS (l)349 1357 MS (,)361 1357 MS ( )374 1357 MS (s)409 1357 MS (e)428 1357 MS (r)450 1357 MS (v)468 1357 MS (e)492 1357 MS (u)514 1357 MS (r)539 1357 MS
+( )556 1357 MS (m)591 1357 MS (u)629 1357 MS (l)655 1357 MS (t)667 1357 MS (i)683 1357 MS
+(-)695 1357 MS
+(p)712 1357 MS (r)737 1357 MS (o)754 1357 MS (c)780 1357 MS (e)802 1357 MS (s)824 1357 MS (s)843 1357 MS (e)862 1357 MS (u)884 1357 MS (r)909 1357 MS (s)926 1357 MS (,)945 1357 MS ( )958 1357 MS (m)993 1357 MS (a)1031 1357 MS (c)1053 1357 MS
+(h)1076 1357 MS (i)1101 1357 MS (n)1114 1357 MS (e)1139 1357 MS ( )1161 1357 MS (v)1196 1357 MS (e)1220 1357 MS (c)1243 1357 MS (t)1265 1357 MS (o)1279 1357 MS (r)1305 1357 MS (i)1322 1357 MS (e)1334 1357 MS (l)1357 1357 MS (l)1371 1357 MS (e)1384 1357 MS
+(,)1406 1357 MS ( )1419 1357 MS (m)1454 1357 MS (a)1492 1357 MS (c)1514 1357 MS (h)1537 1357 MS (i)1562 1357 MS (n)1575 1357 MS (e)1600 1357 MS ( )1622 1357 MS (m)1657 1357 MS (a)1695 1357 MS (s)1717 1357 MS (s)1737 1357 MS (i)1757 1357 MS (v)1770 1357 MS
+(e)1795 1357 MS (m)1818 1357 MS (e)1856 1357 MS (n)1879 1357 MS (t)1903 1357 MS ( )1918 1357 MS (p)1952 1357 MS (a)1977 1357 MS (r)1999 1357 MS (a)2016 1357 MS (l)2039 1357 MS (l)2052 1357 MS (\350)2065 1357 MS (l)2088 1357 MS (e)2102 1357 MS ( )2125 1357 MS
+(c)235 1414 MS (o)257 1414 MS (m)283 1414 MS (m)321 1414 MS (e)359 1414 MS ( )381 1414 MS (l)409 1414 MS (e)422 1414 MS ( )444 1414 MS (C)472 1414 MS (o)505 1414 MS (m)532 1414 MS (p)569 1414 MS (a)594 1414 MS (q)616 1414 MS ( )641 1414 MS
+(S)668 1414 MS (C)696 1414 MS (2)729 1414 MS (5)754 1414 MS (6)779 1414 MS ( )804 1414 MS (d)831 1414 MS (e)856 1414 MS ( )879 1414 MS (G)906 1414 MS (r)942 1414 MS (e)959 1414 MS (n)982 1414 MS (o)1006 1414 MS (b)1032 1414 MS (l)1057 1414 MS
+(e)1070 1414 MS (,)1092 1414 MS ( )1105 1414 MS (c)1132 1414 MS (l)1155 1414 MS (u)1167 1414 MS (s)1193 1414 MS (t)1212 1414 MS (e)1227 1414 MS (r)1249 1414 MS ( )1266 1414 MS (d)1293 1414 MS (e)1318 1414 MS ( )1340 1414 MS (P)1367 1414 MS (C)1395 1414 MS
+(/)1428 1414 MS (l)1443 1414 MS (i)1456 1414 MS (n)1469 1414 MS (u)1494 1414 MS (x)1520 1414 MS (,)1544 1414 MS ( )1557 1414 MS (\205)1584 1414 MS (\))1634 1414 MS (.)1651 1414 MS ( )1664 1414 MS (C)1691 1414 MS (\222)1724 1414 MS (e)1740 1414 MS (s)1762 1414 MS
+(t)1781 1414 MS ( )1796 1414 MS (l)1824 1414 MS (u)1836 1414 MS (i)1862 1414 MS ( )1875 1414 MS (q)1902 1414 MS (u)1927 1414 MS (i)1953 1414 MS ( )1966 1414 MS (r)1993 1414 MS (\351)2010 1414 MS (a)2032 1414 MS (l)2055 1414 MS (i)2069 1414 MS (s)2082 1414 MS
+(e)2102 1414 MS ( )2125 1414 MS
+(l)235 1472 MS (\222)248 1472 MS (i)265 1472 MS (n)278 1472 MS (s)303 1472 MS (t)322 1472 MS (a)337 1472 MS (n)360 1472 MS (c)384 1472 MS (i)407 1472 MS (a)420 1472 MS (t)442 1472 MS (i)458 1472 MS (o)470 1472 MS (n)496 1472 MS ( )520 1472 MS
+(e)534 1472 MS (t)556 1472 MS ( )571 1472 MS (l)586 1472 MS (a)598 1472 MS ( )620 1472 MS (d)634 1472 MS (e)659 1472 MS (s)682 1472 MS (t)701 1472 MS (r)716 1472 MS (u)733 1472 MS (c)758 1472 MS (t)779 1472 MS (i)794 1472 MS (o)806 1472 MS
+(n)832 1472 MS ( )856 1472 MS (d)870 1472 MS (e)896 1472 MS ( )918 1472 MS (c)932 1472 MS (o)954 1472 MS (m)981 1472 MS (p)1018 1472 MS (o)1043 1472 MS (s)1069 1472 MS (a)1088 1472 MS (n)1110 1472 MS (t)1134 1472 MS (s)1149 1472 MS ( )1168 1472 MS
+(s)1182 1472 MS (u)1201 1472 MS (r)1226 1472 MS ( )1243 1472 MS (l)1258 1472 MS (a)1271 1472 MS ( )1293 1472 MS (m)1308 1472 MS
+(a)1346 1472 MS (c)1368 1472 MS (h)1391 1472 MS (i)1416 1472 MS (n)1429 1472 MS (e)1454 1472 MS ( )1476 1472 MS (q)1490 1472 MS (u)1515 1472 MS (i)1541 1472 MS ( )1554 1472 MS (l)1569 1472 MS (\222)1582 1472 MS (a)1599 1472 MS (b)1622 1472 MS (r)1646 1472 MS
+(i)1664 1472 MS (t)1676 1472 MS (e)1691 1472 MS (.)1713 1472 MS ( )1726 1472 MS (D)1740 1472 MS (a)1776 1472 MS (n)1798 1472 MS (s)1823 1472 MS ( )1842 1472 MS (S)1856 1472 MS (A)1885 1472 MS (L)1920 1472 MS (O)1950 1472 MS (M)1987 1472 MS (E)2031 1472 MS
+(,)2062 1472 MS ( )2075 1472 MS (l)2090 1472 MS (e)2102 1472 MS ( )2125 1472 MS
+(c)235 1529 MS (o)257 1529 MS (n)283 1529 MS (t)307 1529 MS (a)322 1529 MS (i)344 1529 MS (n)357 1529 MS (e)381 1529 MS (r)403 1529 MS ( )420 1529 MS (e)433 1529 MS (s)455 1529 MS (t)474 1529 MS ( )489 1529 MS (c)502 1529 MS (o)524 1529 MS
+(n)550 1529 MS (c)574 1529 MS (r)596 1529 MS (\351)613 1529 MS (t)635 1529 MS (i)650 1529 MS (s)662 1529 MS (\351)681 1529 MS ( )703 1529 MS (p)716 1529 MS (a)741 1529 MS (r)763 1529 MS ( )780 1529 MS (u)793 1529 MS (n)818 1529 MS ( )842 1529 MS
+(e)855 1529 MS (x)878 1529 MS (\351)902 1529 MS (c)924 1529 MS (u)946 1529 MS (t)971 1529 MS (a)986 1529 MS (b)1008 1529 MS (l)1033 1529 MS (e)1046 1529 MS ( )1068 1529 MS (q)1081 1529 MS (u)1106 1529 MS (i)1132 1529 MS ( )1144 1529 MS (e)1157 1529 MS
+(s)1180 1529 MS (t)1199 1529 MS ( )1214 1529 MS (u)1227 1529 MS (n)1251 1529 MS ( )1275 1529 MS (s)1288 1529 MS (e)1307 1529 MS (r)1329 1529 MS (v)1347 1529 MS (e)1371 1529 MS (u)1393 1529 MS (r)1418 1529 MS ( )1435 1529 MS (C)1448 1529 MS (O)1481 1529 MS
+(R)1517 1529 MS (B)1550 1529 MS (A)1584 1529 MS (.)1619 1529 MS
+( )1632 1529 MS
+(L)348 1586 MS (e)378 1586 MS ( )400 1586 MS (p)416 1586 MS (r)441 1586 MS (i)459 1586 MS (n)472 1586 MS (c)496 1586 MS (i)519 1586 MS (p)532 1586 MS (e)557 1586 MS ( )579 1586 MS (d)595 1586 MS (e)620 1586 MS ( )642 1586 MS (f)659 1586 MS
+(o)674 1586 MS (n)700 1586 MS (c)724 1586 MS (t)746 1586 MS (i)762 1586 MS (o)774 1586 MS (n)800 1586 MS (n)825 1586 MS (e)849 1586 MS (m)872 1586 MS (e)910 1586 MS (n)933 1586 MS (t)957 1586 MS ( )972 1586 MS (e)988 1586 MS (s)1010 1586 MS
+(t)1029 1586 MS ( )1044 1586 MS (l)1060 1586 MS (e)1072 1586 MS ( )1094 1586 MS (s)1110 1586 MS (u)1129 1586 MS (i)1155 1586 MS (v)1168 1586 MS (a)1193 1586 MS (n)1216 1586 MS (t)1240 1586 MS
+( )1255 1586 MS
+(:)1268 1586 MS ( )1281 1586 MS (o)1296 1586 MS (n)1322 1586 MS ( )1346 1586 MS (s)1362 1586 MS (u)1381 1586 MS (p)1406 1586 MS (p)1431 1586 MS (o)1456 1586 MS (s)1482 1586 MS (e)1501 1586 MS ( )1523 1586 MS (q)1539 1586 MS (u)1564 1586 MS (\222)1589 1586 MS
+(u)1605 1586 MS (n)1630 1586 MS ( )1654 1586 MS (c)1670 1586 MS (o)1692 1586 MS (n)1718 1586 MS (t)1742 1586 MS (a)1757 1586 MS (i)1780 1586 MS (n)1793 1586 MS (e)1817 1586 MS (r)1839 1586 MS ( )1856 1586 MS (e)1872 1586 MS (s)1894 1586 MS (t)1913 1586 MS
+( )1928 1586 MS (l)1944 1586 MS (a)1956 1586 MS (n)1979 1586 MS (c)2004 1586 MS (\351)2026 1586 MS ( )2048 1586 MS (s)2064 1586 MS (u)2083 1586 MS (r)2108 1586 MS ( )2125 1586 MS
+(u)235 1644 MS (n)260 1644 MS (e)284 1644 MS ( )306 1644 MS (m)330 1644 MS (a)368 1644 MS (c)391 1644 MS (h)414 1644 MS (i)439 1644 MS (n)452 1644 MS (e)477 1644 MS ( )499 1644 MS (d)522 1644 MS (o)547 1644 MS (n)573 1644 MS (n)598 1644 MS
+(\351)622 1644 MS (e)645 1644 MS (.)667 1644 MS ( )680 1644 MS (C)703 1644 MS (\222)736 1644 MS (e)753 1644 MS (s)775 1644 MS (t)794 1644 MS ( )809 1644 MS (u)832 1644 MS (n)857 1644 MS ( )881 1644 MS (s)905 1644 MS (e)924 1644 MS (r)946 1644 MS
+(v)964 1644 MS (e)988 1644 MS (u)1010 1644 MS (r)1035 1644 MS ( )1052 1644 MS (C)1075 1644 MS (O)1108 1644 MS (R)1145 1644 MS (B)1178 1644 MS (A)1212 1644 MS ( )1248 1644 MS (d)1271 1644 MS (o)1296 1644 MS (n)1322 1644 MS (t)1346 1644 MS ( )1361 1644 MS
+(l)1384 1644 MS (a)1397 1644 MS ( )1419 1644 MS (r)1442 1644 MS (\351)1459 1644 MS (f)1482 1644 MS (\351)1498 1644 MS (r)1520 1644 MS (e)1537 1644 MS (n)1559 1644 MS (c)1584 1644 MS (e)1606 1644 MS ( )1628 1644 MS (e)1651 1644 MS
+(s)1674 1644 MS (t)1693 1644 MS ( )1708 1644 MS (e)1731 1644 MS (n)1753 1644 MS (r)1777 1644 MS (e)1794 1644 MS (g)1816 1644 MS (i)1842 1644 MS (s)1855 1644 MS (t)1874 1644 MS (r)1889 1644 MS (\351)1906 1644 MS (e)1928 1644 MS ( )1950 1644 MS (d)1973 1644 MS
+(a)1998 1644 MS (n)2021 1644 MS (s)2045 1644 MS ( )2064 1644 MS (l)2088 1644 MS (e)2102 1644 MS ( )2125 1644 MS
+(s)235 1701 MS (e)254 1701 MS (r)276 1701 MS (v)293 1701 MS (i)318 1701 MS (c)331 1701 MS (e)354 1701 MS ( )376 1701 MS (d)389 1701 MS (e)414 1701 MS ( )436 1701 MS (n)450 1701 MS (o)474 1701 MS (m)501 1701 MS (m)539 1701 MS (a)577 1701 MS
+(g)599 1701 MS (e)624 1701 MS (.)646 1701 MS ( )659 1701 MS (L)672 1701 MS (o)702 1701 MS (r)728 1701 MS (s)745 1701 MS (q)764 1701 MS (u)789 1701 MS (\222)814 1701 MS (u)830 1701 MS (n)856 1701 MS ( )880 1701 MS (c)893 1701 MS (l)916 1701 MS
+(i)930 1701 MS (e)943 1701 MS (n)966 1701 MS (t)990 1701 MS ( )1005 1701 MS (v)1018 1701 MS (e)1042 1701 MS (u)1064 1701 MS (t)1089 1701 MS ( )1104 1701 MS (u)1117 1701 MS (t)1142 1701 MS (i)1157 1701 MS (l)1170 1701 MS (i)1184 1701 MS (s)1197 1701 MS
+(e)1216 1701 MS (r)1238 1701 MS ( )1256 1701 MS (u)1269 1701 MS (n)1294 1701 MS ( )1318 1701 MS (s)1332 1701 MS (e)1351 1701 MS (r)1373 1701 MS (v)1390 1701 MS (i)1415 1701 MS (c)1428 1701 MS (e)1451 1701 MS ( )1473 1701 MS (d)1486 1701 MS (\222)1511 1701 MS
+(u)1527 1701 MS (n)1553 1701 MS ( )1577 1701 MS (c)1591 1701 MS (o)1613 1701 MS (m)1639 1701 MS (p)1676 1701 MS (o)1701 1701 MS (s)1727 1701 MS (a)1746 1701 MS (n)1769 1701 MS (t)1793 1701 MS ( )1808 1701 MS (d)1821 1701 MS (o)1846 1701 MS (n)1872 1701 MS
+(n)1896 1701 MS (\351)1920 1701 MS ( )1942 1701 MS (s)1956 1701 MS (u)1975 1701 MS (r)2000 1701 MS ( )2017 1701 MS (c)2030 1701 MS (e)2052 1701 MS (t)2074 1701 MS (t)2089 1701 MS (e)2104 1701 MS ( )2125 1701 MS
+(m)235 1759 MS (a)273 1759 MS (c)295 1759 MS (h)318 1759 MS (i)343 1759 MS (n)356 1759 MS (e)381 1759 MS (,)403 1759 MS ( )416 1759 MS (i)448 1759 MS (l)462 1759 MS ( )475 1759 MS (d)507 1759 MS (e)532 1759 MS (m)555 1759 MS (a)593 1759 MS
+(n)616 1759 MS (d)640 1759 MS (e)665 1759 MS ( )687 1759 MS (a)719 1759 MS (u)741 1759 MS ( )766 1759 MS (c)797 1759 MS (o)819 1759 MS (n)845 1759 MS (t)869 1759 MS (a)884 1759 MS (i)907 1759 MS (n)920 1759 MS (e)944 1759 MS (r)966 1759 MS
+( )984 1759 MS (d)1015 1759 MS (\222)1040 1759 MS (i)1057 1759 MS (n)1070 1759 MS (s)1095 1759 MS (t)1114 1759 MS (a)1129 1759 MS (n)1152 1759 MS (c)1176 1759 MS (i)1199 1759 MS (e)1212 1759 MS (r)1234 1759 MS ( )1252 1759 MS (l)1284 1759 MS (e)1297 1759 MS
+( )1319 1759 MS (c)1350 1759 MS (o)1372 1759 MS (m)1399 1759 MS (p)1436 1759 MS (o)1461 1759 MS (s)1487 1759 MS (a)1506 1759 MS (n)1529 1759 MS (t)1553 1759 MS (.)1568 1759 MS ( )1581 1759 MS (L)1612 1759 MS (e)1642 1759 MS ( )1664 1759 MS (c)1695 1759 MS
+(o)1717 1759 MS (n)1743 1759 MS (t)1767 1759 MS (a)1782 1759 MS (i)1805 1759 MS (n)1818 1759 MS (e)1842 1759 MS (r)1864 1759 MS ( )1881 1759 MS (c)1912 1759 MS (h)1935 1759 MS (a)1960 1759 MS (r)1982 1759 MS (g)1999 1759 MS (e)2024 1759 MS ( )2046 1759 MS
+(e)2077 1759 MS (n)2100 1759 MS ( )2125 1759 MS
+(d)235 1816 MS (y)261 1816 MS (n)285 1816 MS (a)309 1816 MS (m)332 1816 MS (i)371 1816 MS (q)384 1816 MS (u)409 1816 MS (e)434 1816 MS ( )456 1816 MS (l)483 1816 MS (a)496 1816 MS ( )518 1816 MS (o)544 1816 MS (u)570 1816 MS ( )595 1816 MS
+(l)622 1816 MS (e)634 1816 MS (s)657 1816 MS ( )676 1816 MS (l)703 1816 MS (i)716 1816 MS (b)729 1816 MS (r)754 1816 MS (a)771 1816 MS (i)794 1816 MS (r)807 1816 MS (i)825 1816 MS (e)838 1816 MS (s)860 1816 MS ( )879 1816 MS (c)905 1816 MS
+(o)927 1816 MS (r)953 1816 MS (r)970 1816 MS (e)987 1816 MS (s)1009 1816 MS (p)1028 1816 MS (o)1053 1816 MS (n)1079 1816 MS (d)1103 1816 MS (a)1128 1816 MS (n)1151 1816 MS (t)1175 1816 MS ( )1190 1816 MS (a)1216 1816 MS (u)1238 1816 MS ( )1263 1816 MS
+(c)1289 1816 MS (o)1311 1816 MS (m)1337 1816 MS (p)1374 1816 MS (o)1399 1816 MS (s)1425 1816 MS (a)1444 1816 MS (n)1467 1816 MS (t)1491 1816 MS
+(.)1506 1816 MS ( )1519 1816 MS (I)1545 1816 MS (l)1562 1816 MS ( )1574 1816 MS (l)1601 1816 MS (u)1613 1816 MS (i)1639 1816 MS ( )1652 1816 MS (a)1678 1816 MS (f)1701 1816 MS (f)1718 1816 MS (e)1734 1816 MS (c)1756 1816 MS (t)1778 1816 MS (e)1793 1816 MS
+( )1815 1816 MS (u)1841 1816 MS (n)1866 1816 MS (e)1890 1816 MS ( )1912 1816 MS (r)1938 1816 MS (\351)1955 1816 MS (f)1978 1816 MS (\351)1994 1816 MS (r)2016 1816 MS (e)2033 1816 MS (n)2056 1816 MS (c)2080 1816 MS (e)2102 1816 MS ( )2125 1816 MS
+(C)235 1874 MS (O)268 1874 MS (R)304 1874 MS (B)337 1874 MS (A)371 1874 MS ( )407 1874 MS (e)430 1874 MS (t)452 1874 MS ( )467 1874 MS (l)491 1874 MS (\222)503 1874 MS (e)520 1874 MS (n)543 1874 MS (r)567 1874 MS (e)584 1874 MS (g)606 1874 MS
+(i)632 1874 MS (s)645 1874 MS (t)664 1874 MS (r)679 1874 MS (e)696 1874 MS ( )718 1874 MS (a)741 1874 MS (u)763 1874 MS ( )788 1874 MS (s)811 1874 MS (e)830 1874 MS (r)852 1874 MS (v)870 1874 MS (i)895 1874 MS (c)908 1874 MS (e)930 1874 MS
+( )952 1874 MS (d)975 1874 MS (e)1000 1874 MS ( )1023 1874 MS (n)1047 1874 MS (o)1071 1874 MS (m)1098 1874 MS (m)1136 1874 MS (a)1174 1874 MS (g)1196 1874 MS (e)1221 1874 MS (.)1243 1874 MS ( )1256 1874 MS (L)1279 1874 MS (e)1309 1874 MS ( )1331 1874 MS
+(c)1355 1874 MS (l)1378 1874 MS (i)1391 1874 MS (e)1404 1874 MS (n)1427 1874 MS (t)1451 1874 MS ( )1466 1874 MS (r)1489 1874 MS (\351)1506 1874 MS (c)1528 1874 MS (u)1550 1874 MS (p)1575 1874 MS (\350)1600 1874 MS (r)1622 1874 MS (e)1639 1874 MS ( )1661 1874 MS
+(a)1684 1874 MS (u)1706 1874 MS (p)1731 1874 MS (r)1756 1874 MS (\350)1773 1874 MS (s)1796 1874 MS ( )1815 1874 MS (d)1838 1874 MS (u)1863 1874 MS ( )1888 1874 MS (s)1912 1874 MS (e)1931 1874 MS (r)1953 1874 MS (v)1970 1874 MS (i)1995 1874 MS (c)2008 1874 MS
+(e)2031 1874 MS ( )2053 1874 MS (d)2076 1874 MS (e)2102 1874 MS ( )2125 1874 MS
+(n)235 1931 MS (o)259 1931 MS (m)286 1931 MS (m)324 1931 MS (a)362 1931 MS (g)384 1931 MS (e)409 1931 MS ( )431 1931 MS (l)445 1931 MS (a)458 1931 MS ( )480 1931 MS (r)493 1931 MS (\351)510 1931 MS (f)533 1931 MS (\351)548 1931 MS (r)570 1931 MS
+(e)587 1931 MS (n)610 1931 MS (c)634 1931 MS (e)656 1931 MS ( )678 1931 MS (d)691 1931 MS (u)716 1931 MS ( )741 1931 MS (c)754 1931 MS (o)776 1931 MS (m)802 1931 MS (p)839 1931 MS (o)864 1931 MS (s)890 1931 MS (a)909 1931 MS (n)932 1931 MS
+(t)956 1931 MS ( )971 1931 MS (e)984 1931 MS (t)1005 1931 MS ( )1020 1931 MS (p)1033 1931 MS (e)1058 1931 MS (u)1080 1931 MS (t)1104 1931 MS ( )1118 1931 MS (a)1131 1931 MS (c)1153 1931 MS (t)1175 1931 MS (i)1190 1931 MS (v)1202 1931 MS (e)1227 1931 MS
+(r)1250 1931 MS ( )1267 1931 MS (l)1280 1931 MS (e)1292 1931 MS ( )1314 1931 MS (s)1327 1931 MS (e)1346 1931 MS (r)1368 1931 MS (v)1386 1931 MS (i)1411 1931 MS (c)1424 1931 MS (e)1446 1931 MS ( )1468 1931 MS (v)1482 1931 MS (o)1506 1931 MS (u)1532 1931 MS
+(l)1558 1931 MS (u)1570 1931 MS (.)1595 1931 MS
+( )1608 1931 MS
+( )348 1989 MS
+( )348 2046 MS
+%%IncludeFont: Helvetica-BoldOblique
+[50 0 0 -50 0 0]/Helvetica-BoldOblique MF
+( )310 2154 MS
+[67 0 0 -67 0 0]/Helvetica-Bold MF
+( )310 2276 MS
+[50 0 0 -50 0 0]/_Times-Roman MF
+( )348 2351 MS
+( )348 2408 MS
+showpage
+%%Page: 10 10
+14.449 827.879 translate 72 300 div dup neg scale
+0 0 transform .25 add round .25 sub exch .25 add round .25 sub exch itransform translate
+1 j
+1 setlinecap
+72 sl
+0.375 g
+n
+494 182 M
+494 155 472 133 445 133 c
+418 133 396 155 396 182 c
+396 209 418 231 445 231 c
+472 231 494 209 494 182 c
+cp
+CM 0.156 0.152 scale
+s
+SM
+71 sl
+n
+660 182 M
+660 155 638 133 611 133 c
+584 133 562 155 562 182 c
+562 209 584 231 611 231 c
+638 231 660 209 660 182 c
+cp
+CM 0.156 0.152 scale
+s
+SM
+n
+120 24 468 152 B
+1 g
+f
+1 sl
+n
+122 26 467 151 B
+cp
+s
+71 sl
+0.375 g
+n
+577 180 M
+577 153 555 131 528 131 c
+501 131 479 153 479 180 c
+479 206 501 228 528 228 c
+555 228 577 206 577 180 c
+cp
+gs
+1 g
+e
+gr
+CM 0.156 0.152 scale
+s
+SM
+n
+480 180 M
+575 180 L
+CM 0.156 0.152 scale
+s
+SM
+n
+34 18 562 187 B
+1 g
+f
+1 sl
+n
+36 20 561 186 B
+cp
+s
+n
+610 173 M
+591 173 L
+554 124 L
+579 126 L
+609 173 L
+610 173 L
+cp
+gs
+e
+gr
+s
+n
+448 170 M
+468 170 L
+504 122 L
+479 123 L
+449 170 L
+448 170 L
+cp
+gs
+e
+gr
+s
+0.375 g
+n
+473 140 M
+473 137 470 135 467 135 c
+464 135 462 137 462 140 c
+462 142 464 145 467 145 c
+470 145 473 142 473 140 c
+cp
+gs
+e
+gr
+s
+n
+593 139 M
+593 136 590 134 588 134 c
+585 134 583 136 583 139 c
+583 141 585 144 588 144 c
+590 144 593 141 593 139 c
+cp
+gs
+e
+gr
+s
+72 sl
+n
+665 137 M
+665 229 L
+CM 0.156 0.152 scale
+s
+SM
+[29 0 0 -29 0 0]/Times-Roman MF
+0 g
+( )676 243 MS
+[50 0 0 -50 0 0]/Times-Roman MF
+(D)400 289 MS (E)436 289 MS (N)467 289 MS ( )503 289 MS ( )516 289 MS (S)529 289 MS (a)557 289 MS (c)579 289 MS (l)601 289 MS (a)613 289 MS (y)636 289 MS
+( )660 289 MS
+( )1297 140 MS
+[38 0 0 -38 0 0]/Times-Roman MF
+(S)1785 129 MS (F)1806 129 MS (M)1827 129 MS (E)1861 129 MS (/)1883 129 MS (L)1894 129 MS (G)1916 129 MS (L)1943 129 MS (S)1965 129 MS (/)1986 129 MS (R)1997 129 MS (T)2022 129 MS (/)2045 129 MS (0)2056 129 MS (2)2075 129 MS
+(-)2094 129 MS
+(0)2106 129 MS (0)2125 129 MS (2)2144 129 MS
+( )2163 129 MS
+(D)1785 173 MS (a)1812 173 MS (t)1829 173 MS (e)1840 173 MS
+( )1856 173 MS
+(:)1866 173 MS
+( )1875 173 MS
+(3)1885 173 MS (0)1904 173 MS (/)1923 173 MS (0)1934 173 MS (5)1952 173 MS (/)1971 173 MS (2)1982 173 MS (0)2000 173 MS (0)2019 173 MS (2)2038 173 MS
+( )2057 173 MS
+n
+5 5 232 89 B
+f
+n
+5 5 232 89 B
+f
+n
+584 5 238 89 B
+f
+n
+5 5 823 89 B
+f
+n
+938 5 829 89 B
+f
+n
+5 5 1768 89 B
+f
+n
+436 5 1774 89 B
+f
+n
+5 5 2211 89 B
+f
+n
+5 5 2211 89 B
+f
+n
+5 256 232 95 B
+f
+n
+2 256 823 95 B
+f
+n
+2 256 1768 95 B
+f
+n
+5 256 2211 95 B
+f
+[50 0 0 -50 0 0]/Times-Roman MF
+(D)322 400 MS (M)358 400 MS (2)402 400 MS (S)427 400 MS (/)455 400 MS (S)469 400 MS (F)497 400 MS (M)524 400 MS (E)568 400 MS (/)599 400 MS (L)613 400 MS (G)643 400 MS (L)680 400 MS (S)710 400 MS
+( )738 400 MS
+[50 0 0 -50 0 0]/Times-Bold MF
+gs
+n
+241 53 1102 367 CB
+(R)1102 413 MS (A)1138 413 MS (P)1174 413 MS (P)1204 413 MS (O)1234 413 MS (R)1273 413 MS (T)1310 413 MS
+gr
+gs
+n
+150 53 1343 367 CB
+( )1343 413 MS (D)1356 413 MS (M)1392 413 MS (2)1440 413 MS (S)1465 413 MS
+gr
+[50 0 0 -50 0 0]/Times-Roman MF
+gs
+n
+24 52 1493 368 CB
+( )1493 413 MS
+gr
+[38 0 0 -38 0 0]/Times-Roman MF
+(P)1785 400 MS (a)1806 400 MS (g)1823 400 MS (e)1841 400 MS ( )1858 400 MS
+[50 0 0 -50 0 0]/Times-Roman MF
+(1)1868 400 MS (0)1893 400 MS
+(/)1918 400 MS
+(3)1932 400 MS (0)1957 400 MS
+[38 0 0 -38 0 0]/Times-Roman MF
+( )1982 400 MS
+n
+5 2 232 352 B
+f
+n
+2 2 823 352 B
+f
+n
+941 2 826 352 B
+f
+n
+2 2 1768 352 B
+f
+n
+5 2 2211 352 B
+f
+n
+5 67 232 355 B
+f
+n
+590 1 232 423 B
+f
+n
+2 67 823 355 B
+f
+n
+1 1 823 423 B
+f
+n
+942 1 825 423 B
+f
+n
+2 67 1768 355 B
+f
+n
+1 1 1768 423 B
+f
+n
+440 1 1770 423 B
+f
+n
+5 67 2211 355 B
+f
+n
+5 1 2211 423 B
+f
+[50 0 0 -50 0 0]/Times-Roman MF
+( )235 470 MS
+[33 0 0 -33 0 0]/Times-Roman MF
+/IsChar{exch/CharStrings get exch known}bd/MapCh{3 -1 roll/Encoding get 3 1\r
+roll put}bd/MapDegree{dup 16#b0 exch/degree IsChar{/degree}{/ring}ifelse MapCh}\r
+bd/MapBB{dup 16#a6 exch/brokenbar IsChar{/brokenbar}{/bar}ifelse MapCh}bd\r
+/reencode{findfont begin currentdict dup length dict begin{1 index/FID ne{def}\r
+{pop pop}ifelse}forall/FontName exch def dup length 0 ne{/Encoding Encoding 256\r
+array copy def 0 exch{dup type/nametype eq{Encoding 2 index 2 index put pop 1\r
+add}{exch pop}ifelse}forall}if pop currentdict dup end end/FontName get exch\r
+definefont dup MapDegree MapBB}bd/LATENC[0/grave/acute/circumflex/tilde/macron\r
+/breve/dotaccent/dieresis/ring/cedilla/hungarumlaut/ogonek/caron/dotlessi/fi/fl\r
+/Lslash/lslash/Zcaron/zcaron/minus/.notdef/.notdef/.notdef/.notdef/.notdef\r
+/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/space/exclam/quotedbl\r
+/numbersign/dollar/percent/ampersand/quotesingle/parenleft/parenright/asterisk\r
+/plus/comma/hyphen/period/slash/zero/one/two/three/four/five/six/seven/eight\r
+/nine/colon/semicolon/less/equal/greater/question/at/A/B/C/D/E/F/G/H/I/J/K/L/M\r
+/N/O/P/Q/R/S/T/U/V/W/X/Y/Z/bracketleft/backslash/bracketright/asciicircum\r
+/underscore/grave/a/b/c/d/e/f/g/h/i/j/k/l/m/n/o/p/q/r/s/t/u/v/w/x/y/z/braceleft\r
+/bar/braceright/asciitilde/.notdef/.notdef/.notdef/quotesinglbase/florin\r
+/quotedblbase/ellipsis/dagger/daggerdbl/circumflex/perthousand/Scaron\r
+/guilsinglleft/OE/.notdef/.notdef/.notdef/.notdef/quoteleft/quoteright\r
+/quotedblleft/quotedblright/bullet/endash/emdash/tilde/trademark/scaron\r
+/guilsinglright/oe/.notdef/.notdef/Ydieresis/.notdef/exclamdown/cent/sterling\r
+/currency/yen/brokenbar/section/dieresis/copyright/ordfeminine/guillemotleft\r
+/logicalnot/hyphen/registered/macron/degree/plusminus/twosuperior/threesuperior\r
+/acute/mu/paragraph/periodcentered/cedilla/onesuperior/ordmasculine\r
+/guillemotright/onequarter/onehalf/threequarters/questiondown/Agrave/Aacute\r
+/Acircumflex/Atilde/Adieresis/Aring/AE/Ccedilla/Egrave/Eacute/Ecircumflex\r
+/Edieresis/Igrave/Iacute/Icircumflex/Idieresis/Eth/Ntilde/Ograve/Oacute\r
+/Ocircumflex/Otilde/Odieresis/multiply/Oslash/Ugrave/Uacute/Ucircumflex\r
+/Udieresis/Yacute/Thorn/germandbls/agrave/aacute/acircumflex/atilde/adieresis\r
+/aring/ae/ccedilla/egrave/eacute/ecircumflex/edieresis/igrave/iacute\r
+/icircumflex/idieresis/eth/ntilde/ograve/oacute/ocircumflex/otilde/odieresis\r
+/divide/oslash/ugrave/uacute/ucircumflex/udieresis/yacute/thorn/ydieresis]def\r
+LATENC /_Times-Roman /Times-Roman reencode
+[33 0 0 -33 0 0]/_Times-Roman MF
+(L)242 3256 MS (e)262 3256 MS (s)277 3256 MS ( )289 3256 MS (i)298 3256 MS (n)307 3256 MS (f)324 3256 MS (o)335 3256 MS (r)351 3256 MS (m)363 3256 MS (a)388 3256 MS (t)403 3256 MS (i)412 3256 MS (o)422 3256 MS (n)439 3256 MS (s)456 3256 MS
+( )468 3256 MS (c)477 3256 MS (o)492 3256 MS (n)508 3256 MS (t)524 3256 MS (e)534 3256 MS (n)549 3256 MS (u)565 3256 MS (e)582 3256 MS (s)597 3256 MS ( )610 3256 MS (d)618 3256 MS (a)634 3256 MS (n)650 3256 MS (s)667 3256 MS ( )679 3256 MS
+(c)688 3256 MS (e)703 3256 MS ( )717 3256 MS (d)726 3256 MS (o)742 3256 MS (c)759 3256 MS (u)773 3256 MS (m)791 3256 MS (e)817 3256 MS (n)831 3256 MS (t)847 3256 MS ( )857 3256 MS (s)866 3256 MS (o)878 3256 MS (n)895 3256 MS (t)911 3256 MS
+( )921 3256 MS (r)929 3256 MS (\351)941 3256 MS (s)956 3256 MS (e)968 3256 MS (r)982 3256 MS (v)994 3256 MS (\351)1011 3256 MS (e)1026 3256 MS (s)1041 3256 MS ( )1053 3256 MS (a)1061 3256 MS (u)1076 3256 MS (x)1093 3256 MS ( )1109 3256 MS (d)1118 3256 MS
+(e)1135 3256 MS (s)1150 3256 MS (t)1162 3256 MS (i)1171 3256 MS (n)1181 3256 MS (a)1197 3256 MS (t)1212 3256 MS (a)1221 3256 MS (i)1236 3256 MS (r)1245 3256 MS (e)1257 3256 MS (s)1272 3256 MS ( )1284 3256 MS (n)1293 3256 MS (o)1309 3256 MS (m)1326 3256 MS
+(m)1352 3256 MS (\351)1378 3256 MS (m)1393 3256 MS (e)1419 3256 MS (n)1433 3256 MS (t)1450 3256 MS ( )1459 3256 MS (d)1468 3256 MS (\351)1484 3256 MS (s)1499 3256 MS (i)1512 3256 MS (g)1521 3256 MS
+(n)1538 3256 MS (\351)1555 3256 MS (s)1570 3256 MS ( )1582 3256 MS (e)1591 3256 MS (t)1605 3256 MS ( )1615 3256 MS (n)1623 3256 MS (e)1640 3256 MS ( )1654 3256 MS (p)1663 3256 MS (e)1680 3256 MS (u)1694 3256 MS (v)1711 3256 MS (e)1728 3256 MS (n)1743 3256 MS
+(t)1759 3256 MS ( )1768 3256 MS (r)1776 3256 MS (e)1788 3256 MS (c)1803 3256 MS (e)1818 3256 MS (v)1832 3256 MS (o)1849 3256 MS (i)1865 3256 MS (r)1874 3256 MS ( )1886 3256 MS (a)1894 3256 MS (u)1909 3256 MS (c)1926 3256 MS (u)1940 3256 MS (n)1957 3256 MS
+(e)1974 3256 MS ( )1988 3256 MS (d)1997 3256 MS (i)2013 3256 MS (f)2023 3256 MS (f)2034 3256 MS (u)2044 3256 MS (s)2062 3256 MS (i)2074 3256 MS (o)2084 3256 MS (n)2101 3256 MS
+( )2117 3256 MS
+(s)928 3294 MS (a)940 3294 MS (n)955 3294 MS (s)972 3294 MS ( )985 3294 MS (l)993 3294 MS (\222)1002 3294 MS (a)1013 3294 MS (u)1028 3294 MS (t)1045 3294 MS (o)1054 3294 MS (r)1071 3294 MS (i)1082 3294 MS (s)1092 3294 MS (a)1104 3294 MS (t)1119 3294 MS
+(i)1128 3294 MS (o)1138 3294 MS (n)1154 3294 MS ( )1171 3294 MS (e)1180 3294 MS (x)1194 3294 MS (p)1211 3294 MS (r)1227 3294 MS (e)1239 3294 MS (s)1254 3294 MS (s)1267 3294 MS (e)1280 3294 MS ( )1294 3294 MS (d)1303 3294 MS (u)1319 3294 MS ( )1336 3294 MS
+(D)1344 3294 MS (M)1368 3294 MS (2)1397 3294 MS (S)1414 3294 MS
+[50 0 0 -50 0 0]/Times-Roman MF
+( )1432 3294 MS
+[67 0 0 -67 0 0]/Helvetica-Bold MF
+(5)310 592 MS
+( )347 592 MS
+LATENC /_Helvetica-Bold /Helvetica-Bold reencode
+[67 0 0 -67 0 0]/_Helvetica-Bold MF
+(L)400 592 MS (\222)437 592 MS (o)456 592 MS (b)497 592 MS (j)538 592 MS (e)556 592 MS (t)593 592 MS ( )615 592 MS (p)634 592 MS (a)673 592 MS (r)710 592 MS (a)736 592 MS (l)773 592 MS (l)791 592 MS (\350)810 592 MS (l)847 592 MS
+(e)866 592 MS ( )902 592 MS (g)921 592 MS (\351)962 592 MS (n)999 592 MS (\351)1040 592 MS (r)1077 592 MS (i)1102 592 MS (q)1121 592 MS (u)1162 592 MS (e)1203 592 MS
+( )1240 592 MS
+[50 0 0 -50 0 0]/Times-Roman MF
+( )235 667 MS
+(P)348 724 MS (o)376 724 MS (u)402 724 MS (r)426 724 MS ( )443 724 MS (i)474 724 MS (n)487 724 MS (t)511 724 MS (r)526 724 MS (o)542 724 MS (d)568 724 MS (u)593 724 MS (i)618 724 MS (r)630 724 MS (e)647 724 MS ( )669 724 MS
+(d)699 724 MS (a)725 724 MS (n)748 724 MS (s)772 724 MS ( )792 724 MS (S)822 724 MS (A)850 724 MS (L)886 724 MS (O)916 724 MS (M)953 724 MS (E)997 724 MS ( )1028 724 MS (l)1059 724 MS (e)1072 724 MS ( )1094 724 MS (p)1124 724 MS
+(a)1149 724 MS (r)1171 724 MS (a)1188 724 MS (l)1211 724 MS
+LATENC /_Times-Roman /Times-Roman reencode
+[50 0 0 -50 0 0]/_Times-Roman MF
+(l)1225 724 MS (\351)1238 724 MS (l)1261 724 MS (i)1275 724 MS (s)1288 724 MS (m)1308 724 MS (e)1346 724 MS (,)1369 724 MS ( )1382 724 MS (i)1413 724 MS (l)1426 724 MS ( )1439 724 MS (s)1470 724 MS (\222)1489 724 MS (a)1505 724 MS (g)1527 724 MS
+(i)1553 724 MS (t)1565 724 MS ( )1581 724 MS (d)1611 724 MS (e)1636 724 MS ( )1658 724 MS (d)1688 724 MS (\351)1713 724 MS (f)1736 724 MS (i)1753 724 MS (n)1766 724 MS (i)1792 724 MS (r)1805 724 MS ( )1822 724 MS (l)1853 724 MS (a)1866 724 MS
+( )1889 724 MS (n)1920 724 MS (o)1944 724 MS (t)1969 724 MS (i)1984 724 MS (o)1996 724 MS (n)2022 724 MS ( )2047 724 MS (d)2077 724 MS (e)2102 724 MS ( )2125 724 MS
+(c)235 782 MS (o)257 782 MS (m)283 782 MS (p)320 782 MS (o)345 782 MS (s)371 782 MS (a)390 782 MS (n)413 782 MS (t)437 782 MS ( )452 782 MS (p)475 782 MS (a)500 782 MS (r)522 782 MS (a)539 782 MS (l)561 782 MS (l)574 782 MS
+(\350)587 782 MS (l)610 782 MS (e)623 782 MS (.)645 782 MS ( )658 782 MS (L)681 782 MS (e)711 782 MS ( )733 782 MS (c)756 782 MS (y)779 782 MS (c)803 782 MS (l)826 782 MS (e)839 782 MS ( )861 782 MS (d)884 782 MS (e)909 782 MS
+( )931 782 MS (v)955 782 MS (i)980 782 MS (e)993 782 MS ( )1015 782 MS (\()1038 782 MS (i)1056 782 MS (n)1069 782 MS (s)1094 782 MS (t)1113 782 MS (a)1128 782 MS (n)1150 782 MS (c)1174 782 MS (i)1197 782 MS (a)1210 782 MS (t)1232 782 MS
+(i)1247 782 MS (o)1259 782 MS (n)1286 782 MS (,)1310 782 MS ( )1323 782 MS (a)1346 782 MS (r)1368 782 MS (r)1385 782 MS (\352)1402 782 MS (t)1424 782 MS (,)1438 782 MS ( )1451 782 MS (r)1474 782 MS (e)1491 782 MS (p)1513 782 MS (r)1537 782 MS
+(i)1554 782 MS (s)1567 782 MS (e)1586 782 MS (,)1608 782 MS ( )1621 782 MS (d)1644 782 MS (e)1669 782 MS (s)1691 782 MS (t)1710 782 MS (r)1725 782 MS (u)1742 782 MS (c)1767 782 MS (t)1788 782 MS (i)1803 782 MS (o)1815 782 MS (n)1841 782 MS
+(,)1865 782 MS ( )1878 782 MS (\205)1901 782 MS (\))1951 782 MS ( )1968 782 MS (d)1991 782 MS (e)2016 782 MS ( )2038 782 MS (c)2061 782 MS (e)2083 782 MS (s)2105 782 MS ( )2125 782 MS
+(c)235 839 MS (o)257 839 MS (m)283 839 MS (p)320 839 MS (o)345 839 MS (s)371 839 MS (a)390 839 MS (n)413 839 MS (t)437 839 MS (s)452 839 MS ( )471 839 MS (p)502 839 MS (a)527 839 MS (r)549 839 MS (a)566 839 MS (l)589 839 MS
+(l)602 839 MS (\350)615 839 MS (l)638 839 MS (e)651 839 MS (s)674 839 MS ( )693 839 MS (s)724 839 MS (e)744 839 MS (r)766 839 MS (a)783 839 MS ( )805 839 MS (g)836 839 MS (\351)861 839 MS (r)883 839 MS (\351)900 839 MS ( )922 839 MS
+(p)953 839 MS (a)978 839 MS (r)1000 839 MS ( )1017 839 MS (u)1048 839 MS (n)1074 839 MS ( )1098 839 MS (c)1129 839 MS (o)1151 839 MS (n)1177 839 MS (t)1201 839 MS (a)1216 839 MS (i)1239 839 MS (n)1252 839 MS (e)1276 839 MS (r)1298 839 MS
+( )1315 839 MS (p)1346 839 MS (a)1371 839 MS (r)1393 839 MS (a)1410 839 MS (l)1433 839 MS (l)1447 839 MS (\350)1460 839 MS (l)1483 839 MS (e)1496 839 MS (.)1518 839 MS ( )1531 839 MS (L)1562 839 MS (e)1592 839 MS (s)1615 839 MS ( )1634 839 MS
+(c)1665 839 MS (o)1687 839 MS (m)1714 839 MS (p)1751 839 MS (o)1776 839 MS (s)1802 839 MS (a)1821 839 MS (n)1844 839 MS (t)1868 839 MS (s)1883 839 MS ( )1902 839 MS (p)1933 839 MS (a)1958 839 MS (r)1980 839 MS (a)1997 839 MS (l)2020 839 MS
+(l)2033 839 MS (\350)2046 839 MS (l)2069 839 MS (e)2082 839 MS (s)2105 839 MS ( )2125 839 MS
+(f)235 897 MS (o)250 897 MS (u)276 897 MS (r)301 897 MS (n)318 897 MS (i)343 897 MS (s)356 897 MS (s)376 897 MS (e)395 897 MS (n)418 897 MS (t)442 897 MS ( )457 897 MS (\340)471 897 MS ( )493 897 MS (l)508 897 MS (e)520 897 MS
+(u)542 897 MS (r)567 897 MS (s)584 897 MS ( )603 897 MS (c)617 897 MS (l)640 897 MS (i)654 897 MS (e)667 897 MS (n)690 897 MS (t)714 897 MS (s)729 897 MS ( )748 897 MS (d)762 897 MS (e)787 897 MS (s)809 897 MS ( )828 897 MS
+(d)842 897 MS (o)867 897 MS (n)893 897 MS
+(n)918 897 MS (\351)942 897 MS (e)964 897 MS (s)986 897 MS (,)1005 897 MS ( )1018 897 MS (q)1032 897 MS (u)1057 897 MS (i)1083 897 MS ( )1095 897 MS (s)1110 897 MS (o)1129 897 MS (n)1155 897 MS (t)1179 897 MS ( )1194 897 MS (d)1208 897 MS
+(e)1233 897 MS (s)1255 897 MS ( )1274 897 MS (o)1288 897 MS (b)1314 897 MS (j)1339 897 MS (e)1351 897 MS (t)1373 897 MS (s)1388 897 MS ( )1407 897 MS (p)1421 897 MS (a)1446 897 MS (r)1468 897 MS (a)1485 897 MS (l)1508 897 MS (l)1521 897 MS
+(\350)1534 897 MS (l)1557 897 MS (e)1570 897 MS (s)1593 897 MS (.)1612 897 MS ( )1625 897 MS (O)1639 897 MS (n)1675 897 MS ( )1699 897 MS (v)1714 897 MS (i)1739 897 MS (e)1752 897 MS (n)1775 897 MS (t)1799 897 MS ( )1814 897 MS (d)1828 897 MS
+(e)1853 897 MS ( )1875 897 MS (d)1889 897 MS (\351)1914 897 MS (f)1937 897 MS (i)1953 897 MS (n)1966 897 MS (i)1992 897 MS (r)2004 897 MS ( )2021 897 MS (t)2035 897 MS (r)2050 897 MS (o)2067 897 MS (i)2093 897 MS (s)2105 897 MS ( )2125 897 MS
+(\253)235 954 MS
+( )259 954 MS
+(e)272 954 MS (n)295 954 MS (t)319 954 MS (i)334 954 MS (t)346 954 MS (\351)361 954 MS (s)383 954 MS ( )402 954 MS (p)427 954 MS (a)452 954 MS (r)474 954 MS (a)491 954 MS (l)514 954 MS (l)528 954 MS (\350)541 954 MS (l)564 954 MS
+(e)577 954 MS (s)599 954 MS
+( )618 954 MS
+(\273)632 954 MS ( )656 954 MS (d)681 954 MS (i)707 954 MS (s)720 954 MS (t)739 954 MS (i)755 954 MS (n)768 954 MS (c)792 954 MS (t)814 954 MS (e)829 954 MS (s)851 954 MS
+( )870 954 MS
+(:)883 954 MS ( )897 954 MS (l)922 954 MS (e)935 954 MS (s)957 954 MS ( )976 954 MS (c)1001 954 MS (o)1023 954 MS (n)1049 954 MS (t)1073 954 MS (a)1088 954 MS (i)1111 954 MS (n)1124 954 MS (e)1148 954 MS (r)1170 954 MS (s)1187 954 MS
+(,)1206 954 MS ( )1219 954 MS (l)1245 954 MS (e)1258 954 MS (s)1280 954 MS ( )1299 954 MS (c)1324 954 MS (o)1346 954 MS (m)1372 954 MS (p)1409 954 MS (o)1434 954 MS (s)1460 954 MS (a)1479 954 MS (n)1502 954 MS (t)1526 954 MS (s)1541 954 MS
+( )1560 954 MS (e)1585 954 MS (t)1607 954 MS ( )1622 954 MS (l)1647 954 MS (e)1659 954 MS (s)1682 954 MS ( )1701 954 MS (d)1726 954 MS (o)1751 954 MS (n)1777 954 MS (n)1801 954 MS (\351)1826 954 MS (e)1848 954 MS (s)1870 954 MS (.)1889 954 MS
+( )1902 954 MS (P)1927 954 MS (o)1955 954 MS (u)1981 954 MS (r)2006 954 MS ( )2023 954 MS (l)2048 954 MS (e)2060 954 MS (u)2082 954 MS (r)2107 954 MS ( )2125 954 MS
+(r)235 1012 MS (\351)252 1012 MS (a)274 1012 MS (l)297 1012 MS (i)310 1012 MS (s)323 1012 MS (a)342 1012 MS (t)364 1012 MS (i)380 1012 MS (o)392 1012 MS (n)418 1012 MS (,)442 1012 MS ( )455 1012 MS (i)469 1012 MS (l)482 1012 MS ( )494 1012 MS
+(n)508 1012 MS (o)532 1012 MS (u)558 1012 MS (s)583 1012 MS ( )602 1012 MS (f)616 1012 MS (a)631 1012 MS (u)653 1012 MS (t)678 1012 MS ( )693 1012 MS (d)706 1012 MS (\351)731 1012 MS (f)753 1012 MS (i)769 1012 MS (n)782 1012 MS (i)808 1012 MS
+(r)821 1012 MS ( )838 1012 MS (u)851 1012 MS (n)876 1012 MS ( )900 1012 MS (o)913 1012 MS (b)939 1012 MS (j)964 1012 MS (e)977 1012 MS (t)999 1012 MS ( )1014 1012 MS (p)1027 1012 MS (a)1052 1012 MS (r)1074 1012 MS (a)1091 1012 MS (l)1113 1012 MS
+(l)1126 1012 MS (\350)1139 1012 MS (l)1162 1012 MS (e)1175 1012 MS ( )1197 1012 MS (g)1210 1012 MS (\351)1235 1012 MS (n)1258 1012 MS (\351)1282 1012 MS (r)1304 1012 MS (i)1322 1012 MS (q)1335 1012 MS (u)1360 1012 MS (e)1385 1012 MS (.)1407 1012 MS
+( )1420 1012 MS
+(L)348 1069 MS (\222)378 1069 MS (i)395 1069 MS (n)408 1069 MS (t)432 1069 MS (\351)447 1069 MS (r)469 1069 MS (\352)486 1069 MS (t)508 1069 MS ( )523 1069 MS (d)541 1069 MS (e)566 1069 MS ( )588 1069 MS (l)607 1069 MS (a)619 1069 MS ( )641 1069 MS
+(d)659 1069 MS (\351)684 1069 MS (f)707 1069 MS (i)724 1069 MS (n)737 1069 MS (i)763 1069 MS (t)775 1069 MS (i)791 1069 MS (o)803 1069 MS (n)829 1069 MS ( )853 1069 MS (d)871 1069 MS (\222)897 1069 MS (u)913 1069 MS (n)939 1069 MS ( )963 1069 MS
+(o)981 1069 MS (b)1007 1069 MS (j)1032 1069 MS
+(e)1045 1069 MS (t)1067 1069 MS ( )1082 1069 MS (p)1100 1069 MS (a)1125 1069 MS (r)1147 1069 MS (a)1164 1069 MS (l)1187 1069 MS (l)1200 1069 MS (\350)1213 1069 MS (l)1236 1069 MS (e)1249 1069 MS ( )1271 1069 MS (g)1289 1069 MS (\351)1314 1069 MS (n)1337 1069 MS
+(\351)1362 1069 MS (r)1384 1069 MS (i)1402 1069 MS (q)1414 1069 MS (u)1439 1069 MS (e)1464 1069 MS ( )1486 1069 MS (e)1504 1069 MS (s)1527 1069 MS (t)1546 1069 MS ( )1561 1069 MS (d)1579 1069 MS (e)1604 1069 MS ( )1626 1069 MS (s)1644 1069 MS (p)1663 1069 MS
+(\351)1688 1069 MS (c)1710 1069 MS (i)1733 1069 MS (f)1746 1069 MS (i)1763 1069 MS (e)1776 1069 MS (r)1798 1069 MS ( )1815 1069 MS (l)1834 1069 MS (e)1847 1069 MS (s)1869 1069 MS ( )1888 1069 MS (a)1906 1069 MS (t)1928 1069 MS (t)1943 1069 MS (r)1958 1069 MS
+(i)1975 1069 MS (b)1988 1069 MS (u)2012 1069 MS (t)2037 1069 MS (s)2052 1069 MS ( )2071 1069 MS (e)2089 1069 MS (t)2111 1069 MS ( )2125 1069 MS
+(s)235 1127 MS (e)254 1127 MS (r)276 1127 MS (v)293 1127 MS (i)318 1127 MS (c)331 1127 MS (e)354 1127 MS (s)376 1127 MS ( )395 1127 MS (c)423 1127 MS (o)445 1127 MS (m)472 1127 MS (m)510 1127 MS (u)547 1127 MS (n)573 1127 MS (s)598 1127 MS
+( )617 1127 MS (a)644 1127 MS (u)666 1127 MS (x)692 1127 MS ( )717 1127 MS (t)744 1127 MS (r)759 1127 MS (o)775 1127 MS (i)801 1127 MS (s)814 1127 MS ( )833 1127 MS (e)860 1127 MS (n)883 1127 MS (t)907 1127 MS (i)923 1127 MS (t)935 1127 MS
+(\351)950 1127 MS (s)972 1127 MS ( )991 1127 MS (p)1018 1127 MS (a)1043 1127 MS (r)1065 1127 MS (a)1082 1127 MS (l)1105 1127 MS (l)1119 1127 MS (\350)1132 1127 MS (l)1155 1127 MS (e)1168 1127 MS (s)1191 1127 MS ( )1210 1127 MS (p)1238 1127 MS (r)1263 1127 MS
+(\351)1280 1127 MS (c)1302 1127 MS (\351)1324 1127 MS (d)1346 1127 MS (e)1371 1127 MS (m)1394 1127 MS (m)1432 1127 MS (e)1470 1127 MS (n)1493 1127 MS (t)1517 1127 MS ( )1532 1127 MS (d)1559 1127 MS (\351)1584 1127 MS (f)1607 1127 MS (i)1623 1127 MS (n)1636 1127 MS
+(i)1662 1127 MS (e)1675 1127 MS (s)1698 1127 MS (.)1717 1127 MS ( )1730 1127 MS (E)1757 1127 MS (n)1788 1127 MS ( )1813 1127 MS (f)1841 1127 MS (a)1857 1127 MS (i)1880 1127 MS (t)1892 1127 MS (,)1907 1127 MS ( )1920 1127 MS (u)1947 1127 MS (n)1972 1127 MS
+( )1997 1127 MS (o)2024 1127 MS (b)2050 1127 MS (j)2075 1127 MS (e)2088 1127 MS (t)2110 1127 MS ( )2125 1127 MS
+(p)235 1184 MS (a)260 1184 MS (r)282 1184 MS (a)299 1184 MS (l)322 1184 MS (l)335 1184 MS (\350)348 1184 MS (l)371 1184 MS (e)384 1184 MS ( )406 1184 MS (e)422 1184 MS (s)444 1184 MS (t)463 1184 MS ( )478 1184 MS (u)494 1184 MS (n)519 1184 MS
+(e)543 1184 MS ( )565 1184 MS (c)581 1184 MS (o)603 1184 MS (l)629 1184 MS (l)642 1184 MS (e)655 1184 MS (c)678 1184 MS (t)700 1184 MS (i)715 1184 MS (o)727 1184 MS (n)753 1184 MS ( )777 1184 MS (d)793 1184 MS (\222)819 1184 MS (o)835 1184 MS
+(b)861 1184 MS (j)886 1184 MS (e)899 1184 MS (t)921 1184 MS (s)936 1184 MS (.)955 1184 MS ( )968 1184 MS (E)984 1184 MS (n)1015 1184 MS ( )1039 1184 MS (e)1055 1184 MS (f)1077 1184 MS (f)1093 1184 MS (e)1109 1184 MS (t)1131 1184 MS ( )1146 1184 MS
+(l)1162 1184 MS (e)1174 1184 MS ( )1196 1184 MS (c)1212 1184 MS (o)1235 1184 MS (n)1261 1184 MS (t)1285 1184 MS (a)1300 1184 MS (i)1322 1184 MS (n)1335 1184 MS (e)1359 1184 MS (r)1381 1184 MS ( )1398 1184 MS (p)1414 1184 MS (a)1439 1184 MS (r)1461 1184 MS
+(a)1478 1184 MS (l)1501 1184 MS (l)1514 1184 MS (\350)1527 1184 MS (l)1550 1184 MS (e)1563 1184 MS ( )1585 1184 MS (M)1601 1184 MS (P)1645 1184 MS (I)1673 1184 MS ( )1690 1184 MS (e)1706 1184 MS (s)1728 1184 MS (t)1747 1184 MS ( )1762 1184 MS (u)1778 1184 MS
+(n)1803 1184 MS (e)1827 1184 MS ( )1849 1184 MS (c)1865 1184 MS (o)1887 1184 MS (l)1913 1184 MS (l)1926 1184 MS (e)1939 1184 MS (c)1961 1184 MS (t)1983 1184 MS (i)1999 1184 MS (o)2011 1184 MS (n)2037 1184 MS ( )2061 1184 MS (d)2077 1184 MS (e)2102 1184 MS
+( )2125 1184 MS
+(p)235 1242 MS (r)260 1242 MS (o)277 1242 MS (c)303 1242 MS (e)325 1242 MS (s)347 1242 MS (s)366 1242 MS (u)385 1242 MS (s)410 1242 MS ( )429 1242 MS (q)447 1242 MS (u)472 1242 MS (i)498 1242 MS ( )510 1242 MS (e)528 1242 MS
+(x)551 1242 MS (\351)575 1242 MS (c)597 1242 MS (u)619 1242 MS (t)644 1242 MS (e)659 1242 MS (n)681 1242 MS (t)705 1242 MS ( )720 1242 MS (l)739 1242 MS (e)751 1242 MS ( )773 1242 MS (m)792 1242 MS (\352)830 1242 MS (m)853 1242 MS (e)891 1242 MS
+( )913 1242 MS (p)931 1242 MS (r)956 1242 MS (o)973 1242 MS (g)999 1242 MS (r)1024 1242 MS (a)1041 1242 MS (m)1063 1242 MS (m)1101 1242 MS (e)1139 1242 MS (.)1161 1242 MS ( )1174 1242 MS (D)1192 1242 MS (o)1228 1242 MS (n)1254 1242 MS (c)1278 1242 MS
+( )1300 1242 MS (c)1318 1242 MS (h)1341 1242 MS (a)1365 1242 MS (c)1388 1242 MS (u)1410 1242 MS (n)1436 1242 MS ( )1460 1242 MS (d)1478 1242 MS (e)1503 1242 MS ( )1525 1242 MS (c)1543 1242 MS (e)1565 1242 MS (s)1587 1242 MS ( )1606 1242 MS (p)1624 1242 MS
+(r)1649 1242 MS (o)1666 1242 MS (c)1692 1242 MS (e)1714 1242 MS (s)1736 1242 MS (s)1755 1242 MS (u)1774 1242 MS (s)1799 1242 MS ( )1818 1242 MS (e)1836 1242 MS (s)1859 1242 MS (t)1878 1242 MS ( )1893 1242 MS (u)1911 1242 MS (n)1936 1242 MS ( )1960 1242 MS
+(s)1978 1242 MS (e)1997 1242 MS (r)2019 1242 MS (v)2036 1242 MS (e)2060 1242 MS (u)2082 1242 MS (r)2107 1242 MS ( )2125 1242 MS
+(C)235 1299 MS (O)268 1299 MS (R)304 1299 MS (B)337 1299 MS (A)371 1299 MS (.)406 1299 MS ( )419 1299 MS
+( )432 1299 MS
+( )348 1357 MS
+[50 0 0 -50 0 0]/Helvetica-BoldOblique MF
+(5)310 1464 MS (.)338 1464 MS (1)352 1464 MS
+( )380 1464 MS
+LATENC /_Helvetica-BoldOblique /Helvetica-BoldOblique reencode
+[50 0 0 -50 0 0]/_Helvetica-BoldOblique MF
+(D)430 1464 MS (\351)466 1464 MS (f)494 1464 MS (i)511 1464 MS (n)525 1464 MS (i)556 1464 MS (t)570 1464 MS (i)586 1464 MS (o)600 1464 MS (n)630 1464 MS ( )661 1464 MS (d)675 1464 MS (e)706 1464 MS ( )734 1464 MS (l)747 1464 MS (\222)761 1464 MS
+(i)775 1464 MS (n)789 1464 MS (t)819 1464 MS (e)836 1464 MS (r)864 1464 MS (f)883 1464 MS (a)900 1464 MS (c)928 1464 MS (e)956 1464 MS ( )984 1464 MS (C)998 1464 MS (O)1034 1464 MS (R)1073 1464 MS (B)1109 1464 MS (A)1145 1464 MS
+( )1181 1464 MS
+[50 0 0 -50 0 0]/Times-Roman MF
+( )235 1534 MS
+LATENC /_Times-Roman /Times-Roman reencode
+[50 0 0 -50 0 0]/_Times-Roman MF
+(U)348 1591 MS (n)384 1591 MS ( )408 1591 MS (o)433 1591 MS (b)459 1591 MS (j)484 1591 MS (e)497 1591 MS (t)519 1591 MS ( )534 1591 MS (p)559 1591 MS (a)584 1591 MS (r)606 1591 MS (a)623 1591 MS (l)645 1591 MS (l)658 1591 MS (\350)671 1591 MS
+(l)694 1591 MS (e)707 1591 MS ( )729 1591 MS (g)754 1591 MS (\351)779 1591 MS (n)802 1591 MS (\351)826 1591 MS (r)848 1591 MS (i)866 1591 MS (q)879 1591 MS (u)904 1591 MS (e)929 1591 MS ( )951 1591 MS (e)976 1591 MS (s)999 1591 MS (t)1018 1591 MS
+( )1033 1591 MS (u)1058 1591 MS (n)1083 1591 MS (e)1107 1591 MS ( )1129 1591 MS (l)1155 1591 MS (i)1168 1591 MS (s)1181 1591 MS (t)1200 1591 MS (e)1215 1591 MS ( )1237 1591 MS (d)1262 1591 MS (e)1287 1591 MS ( )1309 1591 MS (r)1334 1591 MS (\351)1350 1591 MS
+(f)1373 1591 MS (\351)1388 1591 MS (r)1410 1591 MS (e)1427 1591 MS (n)1450 1591 MS (c)1474 1591 MS (e)1496 1591 MS (s)1519 1591 MS ( )1538 1591 MS (C)1563 1591 MS (O)1596 1591 MS (R)1632 1591 MS (B)1665 1591 MS (A)1699 1591 MS (,)1734 1591 MS ( )1747 1591 MS
+(c)1772 1591 MS (h)1795 1591 MS (a)1819 1591 MS (q)1841 1591 MS (u)1866 1591 MS (e)1891 1591 MS ( )1913 1591 MS (r)1938 1591 MS (\351)1955 1591 MS (f)1978 1591 MS (\351)1994 1591 MS (r)2016 1591 MS (e)2033 1591 MS (n)2055 1591 MS (c)2080 1591 MS (e)2102 1591 MS
+( )2125 1591 MS
+(c)235 1649 MS (o)257 1649 MS (r)283 1649 MS (r)299 1649 MS (e)316 1649 MS (s)338 1649 MS (p)357 1649 MS (o)382 1649 MS (n)408 1649 MS (d)432 1649 MS (a)457 1649 MS (n)479 1649 MS (t)503 1649 MS ( )518 1649 MS (\340)532 1649 MS ( )554 1649 MS
+(l)569 1649 MS (\222)582 1649 MS (i)599 1649 MS (d)612 1649 MS (e)638 1649 MS (n)661 1649 MS (t)685 1649 MS (i)700 1649 MS (f)713 1649 MS (i)730 1649 MS (a)743 1649 MS (n)766 1649 MS (t)790 1649 MS ( )805 1649 MS (d)819 1649 MS (e)844 1649 MS
+( )866 1649 MS (l)881 1649 MS (\222)894 1649 MS (o)910 1649 MS (b)936 1649 MS (j)961 1649 MS (e)974 1649 MS (t)996 1649 MS ( )1011 1649 MS (s)1025 1649 MS (u)1044 1649 MS (r)1069 1649 MS ( )1086 1649 MS (u)1100 1649 MS (n)1126 1649 MS ( )1150 1649 MS
+(p)1164 1649 MS (r)1189 1649 MS (o)1206 1649 MS (c)1232 1649 MS (e)1254 1649 MS (s)1276 1649 MS (s)1295 1649 MS (u)1314 1649 MS (s)1340 1649 MS ( )1359 1649 MS (d)1373 1649 MS (o)1398 1649 MS (n)1424 1649 MS
+(n)1449 1649 MS (\351)1473 1649 MS (.)1495 1649 MS ( )1508 1649 MS (A)1523 1649 MS (u)1558 1649 MS ( )1583 1649 MS (n)1598 1649 MS (i)1623 1649 MS (v)1636 1649 MS (e)1661 1649 MS (a)1683 1649 MS (u)1705 1649 MS ( )1731 1649 MS (d)1745 1649 MS (u)1770 1649 MS
+( )1795 1649 MS (l)1810 1649 MS (a)1823 1649 MS (n)1846 1649 MS (g)1870 1649 MS (a)1895 1649 MS (g)1917 1649 MS (e)1943 1649 MS ( )1965 1649 MS (I)1979 1649 MS (D)1996 1649 MS (L)2032 1649 MS ( )2062 1649 MS (d)2076 1649 MS (e)2102 1649 MS ( )2125 1649 MS
+(C)235 1706 MS (O)268 1706 MS (R)304 1706 MS (B)337 1706 MS (A)371 1706 MS (,)406 1706 MS ( )419 1706 MS (o)437 1706 MS (n)463 1706 MS ( )487 1706 MS (d)505 1706 MS (\351)530 1706 MS (f)553 1706 MS (i)569 1706 MS (n)582 1706 MS (i)608 1706 MS
+(t)620 1706 MS ( )635 1706 MS (u)653 1706 MS (n)678 1706 MS ( )702 1706 MS (t)720 1706 MS (y)736 1706 MS (p)759 1706 MS (e)784 1706 MS ( )806 1706 MS (\253)825 1706 MS
+( )849 1706 MS
+(I)862 1706 MS (O)879 1706 MS (R)915 1706 MS (T)948 1706 MS (a)979 1706 MS (b)1001 1706 MS
+( )1025 1706 MS
+(\273)1039 1706 MS ( )1063 1706 MS (q)1081 1706 MS (u)1106 1706 MS (i)1132 1706 MS ( )1144 1706 MS (e)1162 1706 MS (s)1185 1706 MS (t)1204 1706 MS ( )1219 1706 MS (u)1236 1706 MS (n)1261 1706 MS (e)1285 1706 MS ( )1307 1706 MS (s)1325 1706 MS (\351)1345 1706 MS
+(q)1367 1706 MS (u)1392 1706 MS (e)1417 1706 MS (n)1440 1706 MS (c)1464 1706 MS (e)1486 1706 MS ( )1508 1706 MS (d)1526 1706 MS (\222)1551 1706 MS (o)1567 1706 MS (b)1593 1706 MS (j)1618 1706 MS (e)1631 1706 MS (t)1653 1706 MS (s)1668 1706 MS ( )1687 1706 MS
+(g)1705 1706 MS (\351)1730 1706 MS (n)1753 1706 MS (\351)1777 1706 MS (r)1799 1706 MS (i)1817 1706 MS (q)1829 1706 MS (u)1854 1706 MS (e)1880 1706 MS (s)1902 1706 MS ( )1921 1706 MS (C)1939 1706 MS (O)1972 1706 MS (R)2009 1706 MS (B)2042 1706 MS (A)2076 1706 MS
+(.)2111 1706 MS ( )2125 1706 MS
+(L)235 1764 MS (\222)265 1764 MS (o)281 1764 MS (b)307 1764 MS (j)332 1764 MS (e)345 1764 MS (t)367 1764 MS ( )382 1764 MS (p)412 1764 MS (a)437 1764 MS (r)459 1764 MS (a)476 1764 MS (l)499 1764 MS (l)512 1764 MS (\350)525 1764 MS (l)548 1764 MS
+(e)561 1764 MS ( )584 1764 MS (g)614 1764 MS (\351)639 1764 MS (n)662 1764 MS (\351)686 1764 MS (r)708 1764 MS (i)726 1764 MS (q)739 1764 MS (u)764 1764 MS (e)789 1764 MS ( )811 1764 MS (p)841 1764 MS (o)866 1764 MS (s)892 1764 MS (s)911 1764 MS
+(\350)930 1764 MS (d)952 1764 MS (e)977 1764 MS ( )1000 1764 MS (u)1030 1764 MS (n)1056 1764 MS ( )1080 1764 MS (u)1110 1764 MS (n)1136 1764 MS (i)1161 1764 MS (q)1174 1764 MS (u)1199 1764 MS (e)1224 1764 MS ( )1247 1764 MS (a)1277 1764 MS (t)1299 1764 MS
+(t)1313 1764 MS (r)1328 1764 MS (i)1345 1764 MS (b)1358 1764 MS (u)1382 1764 MS (t)1407 1764 MS ( )1422 1764 MS (\253)1452 1764 MS
+( )1476 1764 MS
+(I)1489 1764 MS (O)1506 1764 MS (R)1542 1764 MS (T)1575 1764 MS (a)1606 1764 MS (b)1628 1764 MS
+( )1652 1764 MS
+(\273)1666 1764 MS (.)1690 1764 MS ( )1703 1764 MS (A)1734 1764 MS (i)1770 1764 MS (n)1783 1764 MS (s)1808 1764 MS (i)1828 1764 MS ( )1841 1764 MS (l)1872 1764 MS (e)1885 1764 MS ( )1908 1764 MS (c)1938 1764 MS (o)1960 1764 MS (n)1986 1764 MS (t)2010 1764 MS
+(a)2025 1764 MS (i)2048 1764 MS (n)2061 1764 MS (e)2085 1764 MS (r)2107 1764 MS ( )2125 1764 MS
+(p)235 1821 MS (a)260 1821 MS (r)282 1821 MS (a)299 1821 MS (l)322 1821 MS (l)335 1821 MS (\350)348 1821 MS (l)371 1821 MS (e)384 1821 MS ( )406 1821 MS (h)435 1821 MS (\351)460 1821 MS (r)482 1821 MS (i)500 1821 MS (t)512 1821 MS (e)527 1821 MS
+( )549 1821 MS (d)577 1821 MS (\222)602 1821 MS (u)618 1821 MS (n)644 1821 MS (e)668 1821 MS ( )691 1821 MS (p)719 1821 MS (a)744 1821 MS (r)766 1821 MS (t)783 1821 MS ( )798 1821 MS (d)826 1821 MS (u)851 1821 MS ( )876 1821 MS (c)904 1821 MS
+(o)926 1821 MS (n)952 1821 MS (t)976 1821 MS (a)991 1821 MS (i)1013 1821 MS (n)1026 1821 MS (e)1051 1821 MS (r)1073 1821 MS ( )1090 1821 MS (g)1118 1821 MS (\351)1143 1821 MS (n)1166 1821 MS (\351)1190 1821 MS (r)1212 1821 MS (i)1230 1821 MS (q)1244 1821 MS
+(u)1269 1821 MS (e)1294 1821 MS ( )1316 1821 MS (S)1344 1821 MS (A)1372 1821 MS
+(L)1408 1821 MS (O)1438 1821 MS (M)1475 1821 MS (E)1519 1821 MS ( )1550 1821 MS (e)1578 1821 MS (t)1600 1821 MS ( )1615 1821 MS (d)1643 1821 MS (\222)1668 1821 MS (a)1684 1821 MS (u)1706 1821 MS (t)1731 1821 MS (r)1746 1821 MS (e)1763 1821 MS ( )1785 1821 MS
+(p)1813 1821 MS (a)1838 1821 MS (r)1860 1821 MS (t)1877 1821 MS ( )1892 1821 MS (d)1920 1821 MS (e)1945 1821 MS ( )1967 1821 MS (l)1995 1821 MS (\222)2008 1821 MS (o)2024 1821 MS (b)2050 1821 MS (j)2075 1821 MS (e)2088 1821 MS (t)2110 1821 MS ( )2125 1821 MS
+(g)235 1879 MS (\351)260 1879 MS (n)282 1879 MS (\351)306 1879 MS (r)328 1879 MS (i)346 1879 MS (q)359 1879 MS (u)384 1879 MS (e)409 1879 MS ( )431 1879 MS (p)444 1879 MS (a)469 1879 MS (r)491 1879 MS (a)508 1879 MS (l)531 1879 MS (l)544 1879 MS
+(\350)557 1879 MS (l)580 1879 MS (e)593 1879 MS (.)615 1879 MS
+( )628 1879 MS
+( )235 1936 MS
+[42 0 0 -42 0 0]/Courier MF
+(#)235 1984 MS (i)260 1984 MS (f)285 1984 MS (n)310 1984 MS (d)335 1984 MS (e)360 1984 MS (f)385 1984 MS ( )410 1984 MS (_)435 1984 MS (S)460 1984 MS (A)485 1984 MS (L)510 1984 MS (O)535 1984 MS (M)560 1984 MS (E)585 1984 MS (_)610 1984 MS
+(M)635 1984 MS (P)660 1984 MS (I)685 1984 MS (O)710 1984 MS (B)735 1984 MS (J)760 1984 MS (E)785 1984 MS (C)810 1984 MS (T)835 1984 MS (_)860 1984 MS (I)885 1984 MS (D)910 1984 MS (L)935 1984 MS (_)960 1984 MS
+( )985 1984 MS
+(#)235 2031 MS (d)260 2031 MS (e)285 2031 MS (f)310 2031 MS (i)335 2031 MS (n)360 2031 MS (e)385 2031 MS ( )410 2031 MS (_)435 2031 MS (S)460 2031 MS (A)485 2031 MS (L)510 2031 MS (O)535 2031 MS (M)560 2031 MS (E)585 2031 MS (_)610 2031 MS
+(M)635 2031 MS (P)660 2031 MS (I)685 2031 MS (O)710 2031 MS (B)735 2031 MS (J)760 2031 MS (E)785 2031 MS (C)810 2031 MS (T)835 2031 MS (_)860 2031 MS (I)885 2031 MS (D)910 2031 MS (L)935 2031 MS (_)960 2031 MS
+( )985 2031 MS
+( )235 2078 MS
+(m)235 2126 MS (o)260 2126 MS (d)285 2126 MS (u)310 2126 MS (l)335 2126 MS (e)360 2126 MS ( )385 2126 MS (E)410 2126 MS (n)435 2126 MS (g)460 2126 MS (i)485 2126 MS (n)510 2126 MS (e)535 2126 MS (s)560 2126 MS
+( )585 2126 MS
+({)235 2173 MS
+( )260 2173 MS
+( )235 2220 MS ( )260 2220 MS (t)285 2220 MS (y)310 2220 MS (p)335 2220 MS (e)360 2220 MS (d)385 2220 MS (e)410 2220 MS (f)435 2220 MS ( )460 2220 MS (s)485 2220 MS (e)510 2220 MS (q)535 2220 MS (u)560 2220 MS (e)585 2220 MS (n)610 2220 MS
+(c)635 2220 MS (e)660 2220 MS (<)685 2220 MS (O)710 2220 MS (b)735 2220 MS (j)760 2220 MS (e)785 2220 MS (c)810 2220 MS (t)835 2220 MS (>)860 2220 MS ( )885 2220 MS (I)910 2220 MS (O)935 2220 MS (R)960 2220 MS (T)985 2220 MS (a)1010 2220 MS
+(b)1035 2220 MS (;)1060 2220 MS
+( )1085 2220 MS
+( )235 2267 MS ( )260 2267 MS
+(i)285 2267 MS (n)310 2267 MS (t)335 2267 MS (e)360 2267 MS (r)385 2267 MS (f)410 2267 MS (a)435 2267 MS (c)460 2267 MS (e)485 2267 MS ( )510 2267 MS (M)535 2267 MS (P)560 2267 MS (I)585 2267 MS (O)610 2267 MS (b)635 2267 MS (j)660 2267 MS
+(e)685 2267 MS (c)710 2267 MS (t)735 2267 MS
+( )760 2267 MS
+( )235 2314 MS ( )260 2314 MS ({)285 2314 MS
+( )310 2314 MS
+( )235 2362 MS ( )260 2362 MS ( )285 2362 MS ( )310 2362 MS (a)335 2362 MS (t)360 2362 MS (t)385 2362 MS (r)410 2362 MS (i)435 2362 MS (b)460 2362 MS (u)485 2362 MS (t)510 2362 MS (e)535 2362 MS ( )560 2362 MS (I)585 2362 MS (O)610 2362 MS
+(R)635 2362 MS (T)660 2362 MS (a)685 2362 MS (b)710 2362 MS ( )735 2362 MS (t)760 2362 MS (i)785 2362 MS (o)810 2362 MS (r)835 2362 MS (;)860 2362 MS
+( )885 2362 MS
+( )235 2409 MS ( )260 2409 MS (})285 2409 MS ( )310 2409 MS (;)335 2409 MS
+( )360 2409 MS
+(})235 2456 MS ( )260 2456 MS (;)285 2456 MS
+( )310 2456 MS
+( )235 2503 MS
+(#)235 2550 MS (e)260 2550 MS (n)285 2550 MS (d)310 2550 MS (i)335 2550 MS (f)360 2550 MS
+( )385 2550 MS
+[50 0 0 -50 0 0]/_Times-Roman MF
+( )235 2608 MS
+showpage
+%%Page: 11 11
+14.449 827.879 translate 72 300 div dup neg scale
+0 0 transform .25 add round .25 sub exch .25 add round .25 sub exch itransform translate
+1 j
+1 setlinecap
+72 sl
+0.375 g
+n
+494 182 M
+494 155 472 133 445 133 c
+418 133 396 155 396 182 c
+396 209 418 231 445 231 c
+472 231 494 209 494 182 c
+cp
+CM 0.156 0.152 scale
+s
+SM
+71 sl
+n
+660 182 M
+660 155 638 133 611 133 c
+584 133 562 155 562 182 c
+562 209 584 231 611 231 c
+638 231 660 209 660 182 c
+cp
+CM 0.156 0.152 scale
+s
+SM
+n
+120 24 468 152 B
+1 g
+f
+1 sl
+n
+122 26 467 151 B
+cp
+s
+71 sl
+0.375 g
+n
+577 180 M
+577 153 555 131 528 131 c
+501 131 479 153 479 180 c
+479 206 501 228 528 228 c
+555 228 577 206 577 180 c
+cp
+gs
+1 g
+e
+gr
+CM 0.156 0.152 scale
+s
+SM
+n
+480 180 M
+575 180 L
+CM 0.156 0.152 scale
+s
+SM
+n
+34 18 562 187 B
+1 g
+f
+1 sl
+n
+36 20 561 186 B
+cp
+s
+n
+610 173 M
+591 173 L
+554 124 L
+579 126 L
+609 173 L
+610 173 L
+cp
+gs
+e
+gr
+s
+n
+448 170 M
+468 170 L
+504 122 L
+479 123 L
+449 170 L
+448 170 L
+cp
+gs
+e
+gr
+s
+0.375 g
+n
+473 140 M
+473 137 470 135 467 135 c
+464 135 462 137 462 140 c
+462 142 464 145 467 145 c
+470 145 473 142 473 140 c
+cp
+gs
+e
+gr
+s
+n
+593 139 M
+593 136 590 134 588 134 c
+585 134 583 136 583 139 c
+583 141 585 144 588 144 c
+590 144 593 141 593 139 c
+cp
+gs
+e
+gr
+s
+72 sl
+n
+665 137 M
+665 229 L
+CM 0.156 0.152 scale
+s
+SM
+[29 0 0 -29 0 0]/Times-Roman MF
+0 g
+( )676 243 MS
+[50 0 0 -50 0 0]/Times-Roman MF
+(D)400 289 MS (E)436 289 MS (N)467 289 MS ( )503 289 MS ( )516 289 MS (S)529 289 MS (a)557 289 MS (c)579 289 MS (l)601 289 MS (a)613 289 MS (y)636 289 MS
+( )660 289 MS
+( )1297 140 MS
+[38 0 0 -38 0 0]/Times-Roman MF
+(S)1785 129 MS (F)1806 129 MS (M)1827 129 MS (E)1861 129 MS (/)1883 129 MS (L)1894 129 MS (G)1916 129 MS (L)1943 129 MS (S)1965 129 MS (/)1986 129 MS (R)1997 129 MS (T)2022 129 MS (/)2045 129 MS (0)2056 129 MS (2)2075 129 MS
+(-)2094 129 MS
+(0)2106 129 MS (0)2125 129 MS (2)2144 129 MS
+( )2163 129 MS
+(D)1785 173 MS (a)1812 173 MS (t)1829 173 MS (e)1840 173 MS
+( )1856 173 MS
+(:)1866 173 MS
+( )1875 173 MS
+(3)1885 173 MS (0)1904 173 MS (/)1923 173 MS (0)1934 173 MS (5)1952 173 MS (/)1971 173 MS (2)1982 173 MS (0)2000 173 MS (0)2019 173 MS (2)2038 173 MS
+( )2057 173 MS
+n
+5 5 232 89 B
+f
+n
+5 5 232 89 B
+f
+n
+584 5 238 89 B
+f
+n
+5 5 823 89 B
+f
+n
+938 5 829 89 B
+f
+n
+5 5 1768 89 B
+f
+n
+436 5 1774 89 B
+f
+n
+5 5 2211 89 B
+f
+n
+5 5 2211 89 B
+f
+n
+5 256 232 95 B
+f
+n
+2 256 823 95 B
+f
+n
+2 256 1768 95 B
+f
+n
+5 256 2211 95 B
+f
+[50 0 0 -50 0 0]/Times-Roman MF
+(D)322 400 MS (M)358 400 MS (2)402 400 MS (S)427 400 MS (/)455 400 MS (S)469 400 MS (F)497 400 MS (M)524 400 MS (E)568 400 MS (/)599 400 MS (L)613 400 MS (G)643 400 MS (L)680 400 MS (S)710 400 MS
+( )738 400 MS
+[50 0 0 -50 0 0]/Times-Bold MF
+gs
+n
+241 53 1102 367 CB
+(R)1102 413 MS (A)1138 413 MS (P)1174 413 MS (P)1204 413 MS (O)1234 413 MS (R)1273 413 MS (T)1310 413 MS
+gr
+gs
+n
+150 53 1343 367 CB
+( )1343 413 MS (D)1356 413 MS (M)1392 413 MS (2)1440 413 MS (S)1465 413 MS
+gr
+[50 0 0 -50 0 0]/Times-Roman MF
+gs
+n
+24 52 1493 368 CB
+( )1493 413 MS
+gr
+[38 0 0 -38 0 0]/Times-Roman MF
+(P)1785 400 MS (a)1806 400 MS (g)1823 400 MS (e)1841 400 MS ( )1858 400 MS
+[50 0 0 -50 0 0]/Times-Roman MF
+(1)1868 400 MS (1)1893 400 MS
+(/)1918 400 MS
+(3)1932 400 MS (0)1957 400 MS
+[38 0 0 -38 0 0]/Times-Roman MF
+( )1982 400 MS
+n
+5 2 232 352 B
+f
+n
+2 2 823 352 B
+f
+n
+941 2 826 352 B
+f
+n
+2 2 1768 352 B
+f
+n
+5 2 2211 352 B
+f
+n
+5 67 232 355 B
+f
+n
+590 1 232 423 B
+f
+n
+2 67 823 355 B
+f
+n
+1 1 823 423 B
+f
+n
+942 1 825 423 B
+f
+n
+2 67 1768 355 B
+f
+n
+1 1 1768 423 B
+f
+n
+440 1 1770 423 B
+f
+n
+5 67 2211 355 B
+f
+n
+5 1 2211 423 B
+f
+[50 0 0 -50 0 0]/Times-Roman MF
+( )235 470 MS
+[33 0 0 -33 0 0]/Times-Roman MF
+/IsChar{exch/CharStrings get exch known}bd/MapCh{3 -1 roll/Encoding get 3 1\r
+roll put}bd/MapDegree{dup 16#b0 exch/degree IsChar{/degree}{/ring}ifelse MapCh}\r
+bd/MapBB{dup 16#a6 exch/brokenbar IsChar{/brokenbar}{/bar}ifelse MapCh}bd\r
+/reencode{findfont begin currentdict dup length dict begin{1 index/FID ne{def}\r
+{pop pop}ifelse}forall/FontName exch def dup length 0 ne{/Encoding Encoding 256\r
+array copy def 0 exch{dup type/nametype eq{Encoding 2 index 2 index put pop 1\r
+add}{exch pop}ifelse}forall}if pop currentdict dup end end/FontName get exch\r
+definefont dup MapDegree MapBB}bd/LATENC[0/grave/acute/circumflex/tilde/macron\r
+/breve/dotaccent/dieresis/ring/cedilla/hungarumlaut/ogonek/caron/dotlessi/fi/fl\r
+/Lslash/lslash/Zcaron/zcaron/minus/.notdef/.notdef/.notdef/.notdef/.notdef\r
+/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/space/exclam/quotedbl\r
+/numbersign/dollar/percent/ampersand/quotesingle/parenleft/parenright/asterisk\r
+/plus/comma/hyphen/period/slash/zero/one/two/three/four/five/six/seven/eight\r
+/nine/colon/semicolon/less/equal/greater/question/at/A/B/C/D/E/F/G/H/I/J/K/L/M\r
+/N/O/P/Q/R/S/T/U/V/W/X/Y/Z/bracketleft/backslash/bracketright/asciicircum\r
+/underscore/grave/a/b/c/d/e/f/g/h/i/j/k/l/m/n/o/p/q/r/s/t/u/v/w/x/y/z/braceleft\r
+/bar/braceright/asciitilde/.notdef/.notdef/.notdef/quotesinglbase/florin\r
+/quotedblbase/ellipsis/dagger/daggerdbl/circumflex/perthousand/Scaron\r
+/guilsinglleft/OE/.notdef/.notdef/.notdef/.notdef/quoteleft/quoteright\r
+/quotedblleft/quotedblright/bullet/endash/emdash/tilde/trademark/scaron\r
+/guilsinglright/oe/.notdef/.notdef/Ydieresis/.notdef/exclamdown/cent/sterling\r
+/currency/yen/brokenbar/section/dieresis/copyright/ordfeminine/guillemotleft\r
+/logicalnot/hyphen/registered/macron/degree/plusminus/twosuperior/threesuperior\r
+/acute/mu/paragraph/periodcentered/cedilla/onesuperior/ordmasculine\r
+/guillemotright/onequarter/onehalf/threequarters/questiondown/Agrave/Aacute\r
+/Acircumflex/Atilde/Adieresis/Aring/AE/Ccedilla/Egrave/Eacute/Ecircumflex\r
+/Edieresis/Igrave/Iacute/Icircumflex/Idieresis/Eth/Ntilde/Ograve/Oacute\r
+/Ocircumflex/Otilde/Odieresis/multiply/Oslash/Ugrave/Uacute/Ucircumflex\r
+/Udieresis/Yacute/Thorn/germandbls/agrave/aacute/acircumflex/atilde/adieresis\r
+/aring/ae/ccedilla/egrave/eacute/ecircumflex/edieresis/igrave/iacute\r
+/icircumflex/idieresis/eth/ntilde/ograve/oacute/ocircumflex/otilde/odieresis\r
+/divide/oslash/ugrave/uacute/ucircumflex/udieresis/yacute/thorn/ydieresis]def\r
+LATENC /_Times-Roman /Times-Roman reencode
+[33 0 0 -33 0 0]/_Times-Roman MF
+(L)242 3256 MS (e)262 3256 MS (s)277 3256 MS ( )289 3256 MS (i)298 3256 MS (n)307 3256 MS (f)324 3256 MS (o)335 3256 MS (r)351 3256 MS (m)363 3256 MS (a)388 3256 MS (t)403 3256 MS (i)412 3256 MS (o)422 3256 MS (n)439 3256 MS (s)456 3256 MS
+( )468 3256 MS (c)477 3256 MS (o)492 3256 MS (n)508 3256 MS (t)524 3256 MS (e)534 3256 MS (n)549 3256 MS (u)565 3256 MS (e)582 3256 MS (s)597 3256 MS ( )610 3256 MS (d)618 3256 MS (a)634 3256 MS (n)650 3256 MS (s)667 3256 MS ( )679 3256 MS
+(c)688 3256 MS (e)703 3256 MS ( )717 3256 MS (d)726 3256 MS (o)742 3256 MS (c)759 3256 MS (u)773 3256 MS (m)791 3256 MS (e)817 3256 MS (n)831 3256 MS (t)847 3256 MS ( )857 3256 MS (s)866 3256 MS (o)878 3256 MS (n)895 3256 MS (t)911 3256 MS
+( )921 3256 MS (r)929 3256 MS (\351)941 3256 MS (s)956 3256 MS (e)968 3256 MS (r)982 3256 MS (v)994 3256 MS (\351)1011 3256 MS (e)1026 3256 MS (s)1041 3256 MS ( )1053 3256 MS (a)1061 3256 MS (u)1076 3256 MS (x)1093 3256 MS ( )1109 3256 MS (d)1118 3256 MS
+(e)1135 3256 MS (s)1150 3256 MS (t)1162 3256 MS (i)1171 3256 MS (n)1181 3256 MS (a)1197 3256 MS (t)1212 3256 MS (a)1221 3256 MS (i)1236 3256 MS (r)1245 3256 MS (e)1257 3256 MS (s)1272 3256 MS ( )1284 3256 MS (n)1293 3256 MS (o)1309 3256 MS (m)1326 3256 MS
+(m)1352 3256 MS (\351)1378 3256 MS (m)1393 3256 MS (e)1419 3256 MS (n)1433 3256 MS (t)1450 3256 MS ( )1459 3256 MS (d)1468 3256 MS (\351)1484 3256 MS (s)1499 3256 MS (i)1512 3256 MS (g)1521 3256 MS
+(n)1538 3256 MS (\351)1555 3256 MS (s)1570 3256 MS ( )1582 3256 MS (e)1591 3256 MS (t)1605 3256 MS ( )1615 3256 MS (n)1623 3256 MS (e)1640 3256 MS ( )1654 3256 MS (p)1663 3256 MS (e)1680 3256 MS (u)1694 3256 MS (v)1711 3256 MS (e)1728 3256 MS (n)1743 3256 MS
+(t)1759 3256 MS ( )1768 3256 MS (r)1776 3256 MS (e)1788 3256 MS (c)1803 3256 MS (e)1818 3256 MS (v)1832 3256 MS (o)1849 3256 MS (i)1865 3256 MS (r)1874 3256 MS ( )1886 3256 MS (a)1894 3256 MS (u)1909 3256 MS (c)1926 3256 MS (u)1940 3256 MS (n)1957 3256 MS
+(e)1974 3256 MS ( )1988 3256 MS (d)1997 3256 MS (i)2013 3256 MS (f)2023 3256 MS (f)2034 3256 MS (u)2044 3256 MS (s)2062 3256 MS (i)2074 3256 MS (o)2084 3256 MS (n)2101 3256 MS
+( )2117 3256 MS
+(s)928 3294 MS (a)940 3294 MS (n)955 3294 MS (s)972 3294 MS ( )985 3294 MS (l)993 3294 MS (\222)1002 3294 MS (a)1013 3294 MS (u)1028 3294 MS (t)1045 3294 MS (o)1054 3294 MS (r)1071 3294 MS (i)1082 3294 MS (s)1092 3294 MS (a)1104 3294 MS (t)1119 3294 MS
+(i)1128 3294 MS (o)1138 3294 MS (n)1154 3294 MS ( )1171 3294 MS (e)1180 3294 MS (x)1194 3294 MS (p)1211 3294 MS (r)1227 3294 MS (e)1239 3294 MS (s)1254 3294 MS (s)1267 3294 MS (e)1280 3294 MS ( )1294 3294 MS (d)1303 3294 MS (u)1319 3294 MS ( )1336 3294 MS
+(D)1344 3294 MS (M)1368 3294 MS (2)1397 3294 MS (S)1414 3294 MS
+[50 0 0 -50 0 0]/Times-Roman MF
+( )1432 3294 MS
+[50 0 0 -50 0 0]/Helvetica-BoldOblique MF
+(5)310 577 MS (.)338 577 MS (2)352 577 MS
+( )380 577 MS
+LATENC /_Helvetica-BoldOblique /Helvetica-BoldOblique reencode
+[50 0 0 -50 0 0]/_Helvetica-BoldOblique MF
+(D)430 577 MS (\351)466 577 MS (f)494 577 MS (i)511 577 MS (n)525 577 MS (i)556 577 MS (t)570 577 MS (i)586 577 MS (o)600 577 MS (n)630 577 MS ( )661 577 MS (d)675 577 MS (e)706 577 MS ( )734 577 MS
+(l)747 577 MS (\222)761 577 MS (i)775 577 MS (m)789 577 MS (p)833 577 MS (l)864 577 MS (\351)878 577 MS (m)906 577 MS (e)950 577 MS (n)978 577 MS (t)1008 577 MS (a)1025 577 MS (t)1053 577 MS (i)1070 577 MS (o)1083 577 MS (n)1114 577 MS
+( )1145 577 MS
+[50 0 0 -50 0 0]/Times-Roman MF
+( )235 647 MS
+LATENC /_Times-Roman /Times-Roman reencode
+[50 0 0 -50 0 0]/_Times-Roman MF
+(L)348 705 MS (\222)378 705 MS (i)395 705 MS (m)409 705 MS (p)447 705 MS (l)473 705 MS (\351)486 705 MS (m)509 705 MS (e)547 705 MS (n)570 705 MS (t)594 705 MS (a)609 705 MS (t)631 705 MS (i)646 705 MS (o)658 705 MS (n)684 705 MS
+( )708 705 MS (d)721 705 MS (e)746 705 MS ( )768 705 MS (l)782 705 MS (\222)795 705 MS (o)811 705 MS (b)838 705 MS (j)863 705 MS (e)876 705 MS (t)898 705 MS ( )913 705 MS (g)926 705 MS (\351)951 705 MS (n)973 705 MS (\351)997 705 MS
+(r)1019 705 MS (i)1037 705 MS (q)1050 705 MS (u)1075 705 MS (e)1100 705 MS ( )1122 705 MS (p)1135 705 MS (a)1160 705 MS (r)1182 705 MS (a)1199 705 MS (l)1222 705 MS (l)1236 705 MS (\350)1249 705 MS (l)1272 705 MS (e)1285 705 MS ( )1307 705 MS
+(d)1320 705 MS (o)1345 705 MS (i)1371 705 MS (t)1383 705 MS ( )1398 705 MS (d)1411 705 MS (\351)1436 705 MS (f)1459 705 MS (i)1476 705 MS (n)1489 705 MS (i)1514 705 MS (r)1527 705 MS ( )1544 705 MS (a)1557 705 MS (u)1579 705 MS ( )1604 705 MS
+(m)1618 705 MS (o)1655 705 MS (i)1682 705 MS (n)1695 705 MS (s)1720 705 MS ( )1740 705 MS (d)1753 705 MS (e)1778 705 MS (u)1800 705 MS (x)1826 705 MS ( )1850 705 MS (f)1864 705 MS (o)1879 705 MS (n)1905 705 MS (c)1930 705 MS (t)1952 705 MS
+(i)1967 705 MS (o)1979 705 MS (n)2005 705 MS (s)2030 705 MS
+( )2049 705 MS
+(:)2062 705 MS ( )2076 705 MS (l)2090 705 MS (a)2102 705 MS ( )2125 705 MS
+(p)235 762 MS (r)260 762 MS (e)277 762 MS (m)300 762 MS (i)338 762 MS (\350)351 762 MS (r)373 762 MS (e)390 762 MS ( )412 762 MS (q)434 762 MS (u)459 762 MS (i)485 762 MS ( )498 762 MS (d)520 762 MS (o)545 762 MS (n)571 762 MS
+(n)596 762 MS (e)620 762 MS ( )642 762 MS (\340)665 762 MS ( )687 762 MS (l)710 762 MS (\222)723 762 MS (o)739 762 MS (b)765 762 MS (j)790 762 MS (e)803 762 MS (t)825 762 MS ( )840 762 MS (p)862 762 MS (a)887 762 MS (r)909 762 MS
+(a)926 762 MS (l)949 762 MS (l)962 762 MS (\350)975 762 MS (l)998 762 MS (e)1011 762 MS ( )1034 762 MS (s)1056 762 MS (a)1076 762 MS ( )1098 762 MS (l)1121 762 MS (i)1135 762 MS (s)1148 762 MS (t)1167 762 MS (e)1182 762 MS ( )1204 762 MS
+(d)1226 762 MS (e)1251 762 MS ( )1273 762 MS (r)1295 762 MS (\351)1312 762 MS (f)1335 762 MS (\351)1350 762 MS (r)1372 762 MS (e)1389 762 MS (n)1412 762 MS (c)1436 762 MS (e)1458 762 MS (s)1481 762 MS ( )1500 762 MS (C)1522 762 MS (O)1555 762 MS
+(R)1592 762 MS (B)1625 762 MS (A)1659 762 MS ( )1695 762 MS (\()1717 762 MS (f)1735 762 MS (o)1750 762 MS (n)1776 762 MS (c)1800 762 MS (t)1822 762 MS (i)1838 762 MS (o)1850 762 MS (n)1876 762 MS ( )1900 762 MS (s)1922 762 MS (e)1942 762 MS
+(t)1964 762 MS (\))1979 762 MS (,)1996 762 MS ( )2009 762 MS (e)2031 762 MS (t)2052 762 MS ( )2067 762 MS (l)2089 762 MS (a)2102 762 MS ( )2125 762 MS
+(d)235 820 MS (e)260 820 MS (u)282 820 MS (x)307 820 MS (i)332 820 MS (\350)345 820 MS (m)368 820 MS (e)406 820 MS ( )428 820 MS (q)452 820 MS (u)477 820 MS (i)503 820 MS ( )516 820 MS (p)540 820 MS (e)566 820 MS (r)588 820 MS
+(m)606 820 MS (e)643 820 MS (t)665 820 MS ( )680 820 MS (\340)704 820 MS ( )726 820 MS (u)750 820 MS (n)776 820 MS ( )800 820 MS (c)824 820 MS (l)847 820 MS (i)861 820 MS (e)874 820 MS (n)897 820 MS (t)921 820 MS ( )936 820 MS
+(d)960 820 MS (e)985 820 MS ( )1007 820 MS (r)1031 820 MS (\351)1048 820 MS (c)1070 820 MS (u)1092 820 MS (p)1117 820 MS (\351)1142 820 MS (r)1164 820 MS (e)1181 820 MS (r)1203 820 MS ( )1220 820 MS (l)1245 820 MS (a)1258 820 MS ( )1280 820 MS
+(l)1305 820 MS (i)1318 820 MS (s)1331 820 MS (t)1350 820 MS (e)1365 820 MS ( )1387 820 MS (d)1411 820 MS (e)1436 820 MS ( )1458 820 MS (r)1482 820 MS
+(\351)1499 820 MS (f)1522 820 MS (\351)1538 820 MS (r)1560 820 MS (e)1577 820 MS (n)1600 820 MS (c)1624 820 MS (e)1646 820 MS (s)1668 820 MS ( )1688 820 MS (C)1712 820 MS (O)1745 820 MS (R)1781 820 MS (B)1815 820 MS (A)1849 820 MS ( )1884 820 MS
+(d)1908 820 MS (\222)1934 820 MS (u)1950 820 MS (n)1976 820 MS ( )2000 820 MS (o)2024 820 MS (b)2050 820 MS (j)2075 820 MS (e)2088 820 MS (t)2110 820 MS ( )2125 820 MS
+(p)235 877 MS (a)260 877 MS (r)282 877 MS (a)299 877 MS (l)322 877 MS (l)335 877 MS (\350)348 877 MS (l)371 877 MS (e)384 877 MS ( )406 877 MS (q)421 877 MS (u)446 877 MS (e)472 877 MS (l)495 877 MS (c)508 877 MS (o)530 877 MS
+(n)556 877 MS (q)580 877 MS (u)605 877 MS (e)630 877 MS ( )652 877 MS (\()667 877 MS (f)685 877 MS (o)700 877 MS (n)727 877 MS (c)751 877 MS (t)773 877 MS (i)789 877 MS (o)801 877 MS (n)827 877 MS ( )851 877 MS (g)866 877 MS
+(e)891 877 MS (t)913 877 MS (\))928 877 MS (.)945 877 MS ( )958 877 MS (A)973 877 MS ( )1008 877 MS (c)1023 877 MS (e)1045 877 MS (c)1068 877 MS (i)1091 877 MS ( )1104 877 MS (,)1119 877 MS ( )1132 877 MS (i)1148 877 MS (l)1162 877 MS
+( )1175 877 MS (e)1190 877 MS (s)1213 877 MS (t)1232 877 MS ( )1247 877 MS (n)1262 877 MS (\351)1287 877 MS (c)1309 877 MS (e)1331 877 MS (s)1353 877 MS (s)1373 877 MS (a)1392 877 MS (i)1415 877 MS (r)1428 877 MS (e)1445 877 MS ( )1467 877 MS
+(d)1482 877 MS (e)1507 877 MS ( )1530 877 MS (r)1545 877 MS (a)1562 877 MS (j)1585 877 MS (o)1597 877 MS (u)1623 877 MS (t)1648 877 MS (e)1663 877 MS (r)1685 877 MS ( )1702 877 MS (q)1717 877 MS (u)1742 877 MS (e)1767 877 MS (l)1790 877 MS
+(q)1802 877 MS (u)1827 877 MS (e)1852 877 MS (s)1874 877 MS ( )1894 877 MS (a)1909 877 MS (t)1931 877 MS (t)1946 877 MS (r)1960 877 MS (i)1977 877 MS (b)1990 877 MS (u)2014 877 MS (t)2039 877 MS (s)2054 877 MS ( )2073 877 MS (e)2088 877 MS
+(t)2110 877 MS ( )2125 877 MS
+(s)235 935 MS (e)254 935 MS (r)276 935 MS (v)293 935 MS (i)318 935 MS (c)331 935 MS (e)354 935 MS (s)376 935 MS ( )395 935 MS (n)420 935 MS (\351)444 935 MS (c)466 935 MS (e)488 935 MS (s)511 935 MS (s)530 935 MS (a)549 935 MS
+(i)572 935 MS (r)585 935 MS (e)602 935 MS (s)624 935 MS ( )643 935 MS (a)667 935 MS (u)689 935 MS ( )714 935 MS (b)739 935 MS (o)763 935 MS (n)789 935 MS ( )813 935 MS (f)838 935 MS (o)853 935 MS (n)879 935 MS (c)903 935 MS
+(t)925 935 MS (i)941 935 MS (o)953 935 MS (n)979 935 MS (n)1004 935 MS (e)1028 935 MS (m)1051 935 MS (e)1089 935 MS (n)1112 935 MS (t)1136 935 MS ( )1151 935 MS (d)1175 935 MS (e)1200 935 MS ( )1222 935 MS (l)1245 935 MS (\222)1258 935 MS
+(o)1274 935 MS (b)1301 935 MS (j)1326 935 MS (e)1339 935 MS (t)1361 935 MS ( )1376 935 MS (p)1400 935 MS (a)1425 935 MS (r)1447 935 MS (a)1464 935 MS (l)1486 935 MS (l)1499 935 MS (\350)1512 935 MS (l)1535 935 MS (e)1548 935 MS ( )1570 935 MS
+(g)1594 935 MS (\351)1619 935 MS (n)1642 935 MS (\351)1666 935 MS (r)1688 935 MS (i)1706 935 MS (q)1719 935 MS (u)1744 935 MS (e)1769 935 MS
+( )1791 935 MS
+(:)1804 935 MS ( )1818 935 MS (l)1842 935 MS (e)1855 935 MS ( )1877 935 MS (n)1901 935 MS (o)1925 935 MS (m)1952 935 MS (b)1990 935 MS (r)2014 935 MS (e)2031 935 MS ( )2053 935 MS (d)2077 935 MS (e)2102 935 MS ( )2125 935 MS
+(p)235 992 MS (r)260 992 MS (o)277 992 MS (c)303 992 MS (e)325 992 MS (s)347 992 MS (s)366 992 MS (u)385 992 MS (s)410 992 MS (,)429 992 MS ( )442 992 MS (l)461 992 MS (e)474 992 MS ( )496 992 MS (n)515 992 MS (u)539 992 MS
+(m)565 992 MS (\351)603 992 MS (r)625 992 MS (o)642 992 MS ( )668 992 MS (d)687 992 MS (u)712 992 MS ( )737 992 MS (p)756 992 MS (r)781 992 MS (o)797 992 MS (c)823 992 MS (e)845 992 MS (s)867 992 MS (s)886 992 MS (u)905 992 MS
+(s)930 992 MS ( )949 992 MS (c)968 992 MS (o)990 992 MS (u)1016 992 MS (r)1041 992 MS (a)1058 992 MS (n)1080 992 MS (t)1104 992 MS (,)1119 992 MS
+( )1132 992 MS (l)1151 992 MS (a)1163 992 MS ( )1185 992 MS (l)1205 992 MS (i)1218 992 MS (s)1231 992 MS (t)1252 992 MS (e)1267 992 MS ( )1289 992 MS (d)1308 992 MS (e)1333 992 MS (s)1355 992 MS ( )1374 992 MS (r)1393 992 MS (\351)1410 992 MS
+(f)1432 992 MS (\351)1447 992 MS (r)1469 992 MS (e)1486 992 MS (n)1509 992 MS (c)1533 992 MS (e)1555 992 MS (s)1577 992 MS ( )1596 992 MS (C)1616 992 MS (O)1649 992 MS (R)1685 992 MS (B)1718 992 MS (A)1752 992 MS ( )1787 992 MS (d)1806 992 MS
+(e)1831 992 MS ( )1853 992 MS (l)1873 992 MS (a)1886 992 MS ( )1908 992 MS (c)1927 992 MS (o)1949 992 MS (l)1976 992 MS (l)1989 992 MS (e)2002 992 MS (c)2024 992 MS (t)2046 992 MS (i)2062 992 MS (o)2074 992 MS (n)2100 992 MS ( )2125 992 MS
+(d)235 1050 MS (\222)260 1050 MS (o)276 1050 MS (b)302 1050 MS (j)327 1050 MS (e)340 1050 MS (t)362 1050 MS (s)377 1050 MS ( )396 1050 MS (f)418 1050 MS (o)433 1050 MS (r)459 1050 MS (m)476 1050 MS (a)513 1050 MS (n)536 1050 MS (t)560 1050 MS
+( )575 1050 MS (l)597 1050 MS (\222)610 1050 MS (o)626 1050 MS (b)652 1050 MS (j)677 1050 MS (e)690 1050 MS (t)712 1050 MS ( )727 1050 MS (p)748 1050 MS (a)773 1050 MS (r)795 1050 MS (a)812 1050 MS (l)835 1050 MS (l)848 1050 MS (\350)861 1050 MS
+(l)884 1050 MS (e)897 1050 MS (,)919 1050 MS ( )932 1050 MS (e)953 1050 MS (t)975 1050 MS ( )990 1050 MS (u)1011 1050 MS (n)1036 1050 MS (e)1060 1050 MS ( )1082 1050 MS (f)1104 1050 MS (o)1119 1050 MS (n)1145 1050 MS (c)1169 1050 MS (t)1191 1050 MS
+(i)1207 1050 MS (o)1219 1050 MS (n)1245 1050 MS ( )1269 1050 MS (d)1290 1050 MS (\222)1316 1050 MS (\351)1332 1050 MS (c)1354 1050 MS (h)1377 1050 MS (a)1401 1050 MS (n)1424 1050 MS (g)1448 1050 MS (e)1473 1050 MS ( )1495 1050 MS (d)1516 1050 MS (e)1542 1050 MS
+(s)1564 1050 MS ( )1583 1050 MS (r)1604 1050 MS (\351)1621 1050 MS (f)1644 1050 MS (\351)1660 1050 MS (r)1682 1050 MS (e)1699 1050 MS (n)1722 1050 MS (c)1746 1050 MS (e)1768 1050 MS (s)1790 1050 MS ( )1809 1050 MS (C)1831 1050 MS (O)1864 1050 MS (R)1900 1050 MS
+(B)1933 1050 MS (A)1967 1050 MS ( )2003 1050 MS (e)2024 1050 MS (n)2047 1050 MS (t)2071 1050 MS (r)2086 1050 MS (e)2103 1050 MS ( )2125 1050 MS
+(p)235 1107 MS (r)260 1107 MS (o)277 1107 MS (c)303 1107 MS (e)325 1107 MS (s)347 1107 MS (s)366 1107 MS (u)385 1107 MS (s)410 1107 MS (,)429 1107 MS ( )442 1107 MS (v)455 1107 MS (i)480 1107 MS (a)492 1107 MS ( )514 1107 MS (M)527 1107 MS
+(P)571 1107 MS (I)599 1107 MS (,)616 1107 MS ( )629 1107 MS (a)642 1107 MS (f)665 1107 MS (i)681 1107 MS (n)694 1107 MS ( )718 1107 MS (d)731 1107 MS (e)756 1107 MS ( )778 1107 MS (c)791 1107 MS (o)813 1107 MS (n)839 1107 MS (s)863 1107 MS
+(t)882 1107 MS (i)898 1107 MS (t)910 1107 MS (u)925 1107 MS (e)950 1107 MS (r)972 1107 MS ( )989 1107 MS (l)1002 1107 MS (a)1014 1107 MS ( )1036 1107 MS (d)1049 1107 MS (i)1075 1107 MS (t)1087 1107 MS (e)1102 1107 MS ( )1124 1107 MS (l)1138 1107 MS
+(i)1151 1107 MS (s)1164 1107 MS (t)1183 1107 MS (e)1198 1107 MS (.)1220 1107 MS
+( )1233 1107 MS
+( )348 1165 MS
+[42 0 0 -42 0 0]/Courier MF
+(#)235 1212 MS (i)260 1212 MS (f)285 1212 MS (n)310 1212 MS (d)335 1212 MS (e)360 1212 MS (f)385 1212 MS ( )410 1212 MS (_)435 1212 MS (S)460 1212 MS (A)485 1212 MS (L)510 1212 MS (O)535 1212 MS (M)560 1212 MS (E)585 1212 MS (_)610 1212 MS
+(M)635 1212 MS (P)660 1212 MS (I)685 1212 MS (O)710 1212 MS (B)735 1212 MS (J)760 1212 MS (E)785 1212 MS (C)810 1212 MS (T)835 1212 MS (_)860 1212 MS (I)885 1212 MS (_)910 1212 MS (H)935 1212 MS (_)960 1212 MS
+( )985 1212 MS
+(#)235 1260 MS (d)260 1260 MS (e)285 1260 MS (f)310 1260 MS (i)335 1260 MS (n)360 1260 MS (e)385 1260 MS ( )410 1260 MS (_)435 1260 MS (S)460 1260 MS (A)485 1260 MS (L)510 1260 MS (O)535 1260 MS (M)560 1260 MS (E)585 1260 MS (_)610 1260 MS
+(M)635 1260 MS (P)660 1260 MS (I)685 1260 MS (O)710 1260 MS (B)735 1260 MS (J)760 1260 MS (E)785 1260 MS (C)810 1260 MS (T)835 1260 MS (_)860 1260 MS (I)885 1260 MS (_)910 1260 MS (H)935 1260 MS (_)960 1260 MS
+( )985 1260 MS
+( )235 1307 MS
+(#)235 1354 MS
+(i)260 1354 MS (n)285 1354 MS (c)310 1354 MS (l)335 1354 MS (u)360 1354 MS (d)385 1354 MS (e)410 1354 MS ( )435 1354 MS (")460 1354 MS (S)485 1354 MS (A)510 1354 MS (L)535 1354 MS (O)560 1354 MS (M)585 1354 MS (E)610 1354 MS (c)635 1354 MS
+(o)660 1354 MS (n)685 1354 MS (f)710 1354 MS (i)735 1354 MS (g)760 1354 MS (.)785 1354 MS (h)810 1354 MS (")835 1354 MS
+( )860 1354 MS
+(#)235 1401 MS (i)260 1401 MS (n)285 1401 MS (c)310 1401 MS (l)335 1401 MS (u)360 1401 MS (d)385 1401 MS (e)410 1401 MS ( )435 1401 MS (C)460 1401 MS (O)485 1401 MS (R)510 1401 MS (B)535 1401 MS (A)560 1401 MS (_)585 1401 MS (S)610 1401 MS
+(E)635 1401 MS (R)660 1401 MS (V)685 1401 MS (E)710 1401 MS (R)735 1401 MS (_)760 1401 MS (H)785 1401 MS (E)810 1401 MS (A)835 1401 MS (D)860 1401 MS (E)885 1401 MS (R)910 1401 MS (\()935 1401 MS (M)960 1401 MS (P)985 1401 MS (I)1010 1401 MS
+(O)1035 1401 MS (b)1060 1401 MS (j)1085 1401 MS (e)1110 1401 MS (c)1135 1401 MS (t)1160 1401 MS (\))1185 1401 MS
+( )1210 1401 MS
+( )235 1448 MS
+(c)235 1496 MS (l)260 1496 MS (a)285 1496 MS (s)310 1496 MS (s)335 1496 MS ( )360 1496 MS (M)385 1496 MS (P)410 1496 MS (I)435 1496 MS (O)460 1496 MS (b)485 1496 MS (j)510 1496 MS (e)535 1496 MS (c)560 1496 MS (t)585 1496 MS (_)610 1496 MS
+(i)635 1496 MS (:)660 1496 MS ( )685 1496 MS (p)710 1496 MS (u)735 1496 MS (b)760 1496 MS (l)785 1496 MS (i)810 1496 MS (c)835 1496 MS ( )860 1496 MS (P)885 1496 MS (O)910 1496 MS (A)935 1496 MS (_)960 1496 MS (E)985 1496 MS (n)1010 1496 MS
+(g)1035 1496 MS (i)1060 1496 MS (n)1085 1496 MS (e)1110 1496 MS (s)1135 1496 MS (:)1160 1496 MS (:)1185 1496 MS (M)1210 1496 MS (P)1235 1496 MS (I)1260 1496 MS (O)1285 1496 MS (b)1310 1496 MS (j)1335 1496 MS (e)1360 1496 MS (c)1385 1496 MS (t)1410 1496 MS
+( )1435 1496 MS
+({)235 1543 MS
+( )260 1543 MS
+( )235 1590 MS (p)260 1590 MS (u)285 1590 MS (b)310 1590 MS (l)335 1590 MS (i)360 1590 MS (c)385 1590 MS (:)410 1590 MS
+( )435 1590 MS
+( )235 1637 MS ( )260 1637 MS (M)285 1637 MS (P)310 1637 MS (I)335 1637 MS (O)360 1637 MS (b)385 1637 MS (j)410 1637 MS (e)435 1637 MS (c)460 1637 MS (t)485 1637 MS (_)510 1637 MS (i)535 1637 MS (\()560 1637 MS (\))585 1637 MS (;)610 1637 MS
+( )635 1637 MS
+( )235 1684 MS ( )260 1684 MS (M)285 1684 MS (P)310 1684 MS (I)335 1684 MS (O)360 1684 MS (b)385 1684 MS (j)410 1684 MS (e)435 1684 MS (c)460 1684 MS (t)485 1684 MS (_)510 1684 MS (i)535 1684 MS (\()560 1684 MS (i)585 1684 MS (n)610 1684 MS
+(t)635 1684 MS ( )660 1684 MS (n)685 1684 MS (b)710 1684 MS (p)735 1684 MS (r)760 1684 MS (o)785 1684 MS (c)810 1684 MS (,)835 1684 MS ( )860 1684 MS (i)885 1684 MS (n)910 1684 MS (t)935 1684 MS ( )960 1684 MS (n)985 1684 MS (u)1010 1684 MS
+(m)1035 1684 MS (p)1060 1684 MS (r)1085 1684 MS (o)1110 1684 MS (c)1135 1684 MS (\))1160 1684 MS (;)1185 1684 MS
+( )1210 1684 MS
+( )235 1732 MS ( )260 1732 MS (~)285 1732 MS (M)310 1732 MS (P)335 1732 MS (I)360 1732 MS (O)385 1732 MS (b)410 1732 MS (j)435 1732 MS (e)460 1732 MS (c)485 1732 MS (t)510 1732 MS (_)535 1732 MS (i)560 1732 MS (\()585 1732 MS (\))610 1732 MS
+(;)635 1732 MS
+( )660 1732 MS
+( )235 1779 MS ( )260 1779 MS ( )285 1779 MS ( )310 1779 MS
+( )335 1779 MS
+( )235 1826 MS ( )260 1826 MS (E)285 1826 MS (n)310 1826 MS (g)335 1826 MS (i)360 1826 MS (n)385 1826 MS (e)410 1826 MS (s)435 1826 MS (:)460 1826 MS (:)485 1826 MS (I)510 1826 MS (O)535 1826 MS (R)560 1826 MS (T)585 1826 MS (a)610 1826 MS
+(b)635 1826 MS (*)660 1826 MS ( )685 1826 MS (t)710 1826 MS (i)735 1826 MS (o)760 1826 MS (r)785 1826 MS (\()810 1826 MS (\))835 1826 MS (;)860 1826 MS
+( )885 1826 MS
+( )235 1873 MS ( )260 1873 MS (v)285 1873 MS (o)310 1873 MS (i)335 1873 MS (d)360 1873 MS ( )385 1873 MS (t)410 1873 MS (i)435 1873 MS (o)460 1873 MS (r)485 1873 MS (\()510 1873 MS (c)535 1873 MS (o)560 1873 MS (n)585 1873 MS (s)610 1873 MS
+(t)635 1873 MS ( )660 1873 MS (E)685 1873 MS (n)710 1873 MS (g)735 1873 MS (i)760 1873 MS (n)785 1873 MS
+(e)810 1873 MS (s)835 1873 MS (:)860 1873 MS (:)885 1873 MS (I)910 1873 MS (O)935 1873 MS (R)960 1873 MS (T)985 1873 MS (a)1010 1873 MS (b)1035 1873 MS (&)1060 1873 MS ( )1085 1873 MS (i)1110 1873 MS (o)1135 1873 MS (r)1160 1873 MS (\))1185 1873 MS
+(;)1210 1873 MS
+( )1235 1873 MS
+( )235 1920 MS
+( )235 1968 MS
+(p)260 1968 MS (r)285 1968 MS (o)310 1968 MS (t)335 1968 MS (e)360 1968 MS (c)385 1968 MS (t)410 1968 MS (e)435 1968 MS (d)460 1968 MS (:)485 1968 MS
+( )510 1968 MS
+( )235 2015 MS ( )260 2015 MS (/)285 2015 MS (/)310 2015 MS ( )335 2015 MS (N)360 2015 MS (u)385 2015 MS (m)410 2015 MS (b)435 2015 MS (e)460 2015 MS (r)485 2015 MS ( )510 2015 MS (o)535 2015 MS (f)560 2015 MS ( )585 2015 MS (c)610 2015 MS
+(u)635 2015 MS (r)660 2015 MS (r)685 2015 MS (e)710 2015 MS (n)735 2015 MS (t)760 2015 MS ( )785 2015 MS (p)810 2015 MS (r)835 2015 MS (o)860 2015 MS (c)885 2015 MS (e)910 2015 MS (s)935 2015 MS (s)960 2015 MS
+( )985 2015 MS
+( )235 2062 MS ( )260 2062 MS
+(i)285 2062 MS (n)310 2062 MS (t)335 2062 MS ( )360 2062 MS (_)385 2062 MS (n)410 2062 MS (u)435 2062 MS (m)460 2062 MS (p)485 2062 MS (r)510 2062 MS (o)535 2062 MS (c)560 2062 MS (;)585 2062 MS
+( )610 2062 MS
+( )235 2109 MS ( )260 2109 MS (/)285 2109 MS (/)310 2109 MS ( )335 2109 MS (P)360 2109 MS (r)385 2109 MS (o)410 2109 MS (c)435 2109 MS (e)460 2109 MS (s)485 2109 MS (s)510 2109 MS ( )535 2109 MS (n)560 2109 MS (u)585 2109 MS (m)610 2109 MS
+(b)635 2109 MS (e)660 2109 MS (r)685 2109 MS
+( )710 2109 MS
+( )235 2156 MS ( )260 2156 MS (i)285 2156 MS (n)310 2156 MS (t)335 2156 MS ( )360 2156 MS (_)385 2156 MS (n)410 2156 MS (b)435 2156 MS (p)460 2156 MS (r)485 2156 MS (o)510 2156 MS (c)535 2156 MS (;)560 2156 MS
+( )585 2156 MS
+( )235 2204 MS ( )260 2204 MS (/)285 2204 MS (/)310 2204 MS ( )335 2204 MS (L)360 2204 MS (i)385 2204 MS (s)410 2204 MS (t)435 2204 MS ( )460 2204 MS (o)485 2204 MS (f)510 2204 MS ( )535 2204 MS (I)560 2204 MS (O)585 2204 MS (R)610 2204 MS
+( )635 2204 MS (o)660 2204 MS (f)685 2204 MS ( )710 2204 MS (e)735 2204 MS (a)760 2204 MS (c)785 2204 MS (h)810 2204 MS ( )835 2204 MS (o)860 2204 MS (b)885 2204 MS (j)910 2204 MS (e)935 2204 MS (c)960 2204 MS (t)985 2204 MS ( )1010 2204 MS
+(o)1035 2204 MS (n)1060 2204 MS ( )1085 2204 MS (a)1110 2204 MS (l)1135 2204 MS (l)1160 2204 MS ( )1185 2204 MS (m)1210 2204 MS (p)1235 2204 MS (i)1260 2204 MS ( )1285 2204 MS (p)1310 2204 MS (r)1335 2204 MS (o)1360 2204 MS (c)1385 2204 MS (e)1410 2204 MS
+(s)1435 2204 MS (s)1460 2204 MS
+( )1485 2204 MS
+( )235 2251 MS ( )260 2251 MS (E)285 2251 MS (n)310 2251 MS (g)335 2251 MS (i)360 2251 MS (n)385 2251 MS (e)410 2251 MS (s)435 2251 MS (:)460 2251 MS (:)485 2251 MS (I)510 2251 MS (O)535 2251 MS (R)560 2251 MS (T)585 2251 MS (a)610 2251 MS
+(b)635 2251 MS (*)660 2251 MS ( )685 2251 MS (_)710 2251 MS (t)735 2251 MS (i)760 2251 MS (o)785 2251 MS (r)810 2251 MS (;)835 2251 MS
+( )860 2251 MS
+( )235 2298 MS ( )260 2298 MS (/)285 2298 MS (/)310 2298 MS ( )335 2298 MS (B)360 2298 MS (r)385 2298 MS (o)410 2298 MS (a)435 2298 MS (d)460 2298 MS (c)485 2298 MS (a)510 2298 MS (s)535 2298 MS (t)560 2298 MS ( )585 2298 MS (o)610 2298 MS
+(f)635 2298 MS ( )660 2298 MS (I)685 2298 MS (O)710 2298 MS (R)735 2298 MS ( )760 2298 MS (b)785 2298 MS (e)810 2298 MS (t)835 2298 MS (w)860 2298 MS (e)885 2298 MS (e)910 2298 MS (n)935 2298 MS ( )960 2298 MS (e)985 2298 MS (a)1010 2298 MS
+(c)1035 2298 MS (h)1060 2298 MS ( )1085 2298 MS (p)1110 2298 MS (r)1135 2298 MS (o)1160 2298 MS (c)1185 2298 MS (e)1210 2298 MS (s)1235 2298 MS (s)1260 2298 MS ( )1285 2298 MS (t)1310 2298 MS (o)1335 2298 MS ( )1360 2298 MS (b)1385 2298 MS (u)1410 2298 MS
+(i)1435 2298 MS (l)1460 2298 MS (d)1485 2298 MS ( )1510 2298 MS (I)1535 2298 MS (O)1560 2298 MS (R)1585 2298 MS ( )1610 2298 MS (l)1635 2298 MS (i)1660 2298 MS (s)1685 2298 MS (t)1710 2298 MS
+( )1735 2298 MS
+( )235 2345 MS ( )260 2345 MS
+(v)285 2345 MS (o)310 2345 MS (i)335 2345 MS
+(d)360 2345 MS ( )385 2345 MS (B)410 2345 MS (C)435 2345 MS (a)460 2345 MS (s)485 2345 MS (t)510 2345 MS (I)535 2345 MS (O)560 2345 MS (R)585 2345 MS (\()610 2345 MS (C)635 2345 MS (O)660 2345 MS (R)685 2345 MS (B)710 2345 MS (A)735 2345 MS
+(:)760 2345 MS (:)785 2345 MS (O)810 2345 MS (R)835 2345 MS (B)860 2345 MS (_)885 2345 MS (p)910 2345 MS (t)935 2345 MS (r)960 2345 MS ( )985 2345 MS (o)1010 2345 MS (r)1035 2345 MS (b)1060 2345 MS (,)1085 2345 MS (E)1110 2345 MS (n)1135 2345 MS
+(g)1160 2345 MS (i)1185 2345 MS (n)1210 2345 MS (e)1235 2345 MS (s)1260 2345 MS (:)1285 2345 MS (:)1310 2345 MS (M)1335 2345 MS (P)1360 2345 MS (I)1385 2345 MS (O)1410 2345 MS (b)1435 2345 MS (j)1460 2345 MS (e)1485 2345 MS (c)1510 2345 MS (t)1535 2345 MS
+(_)1560 2345 MS (v)1585 2345 MS (a)1610 2345 MS (r)1635 2345 MS ( )1660 2345 MS (p)1685 2345 MS (o)1710 2345 MS (b)1735 2345 MS (j)1760 2345 MS (,)1785 2345 MS (b)1810 2345 MS (o)1835 2345 MS (o)1860 2345 MS (l)1885 2345 MS ( )1910 2345 MS
+(a)235 2392 MS (m)260 2392 MS (i)285 2392 MS (C)310 2392 MS (o)335 2392 MS (n)360 2392 MS (t)385 2392 MS (\))410 2392 MS (;)435 2392 MS
+( )460 2392 MS
+(})235 2440 MS ( )260 2440 MS (;)285 2440 MS
+( )310 2440 MS
+( )235 2487 MS
+(#)235 2534 MS (e)260 2534 MS (n)285 2534 MS (d)310 2534 MS (i)335 2534 MS (f)360 2534 MS
+( )385 2534 MS
+( )235 2581 MS
+[50 0 0 -50 0 0]/_Times-Roman MF
+( )348 2638 MS
+showpage
+%%Page: 12 12
+14.449 827.879 translate 72 300 div dup neg scale
+0 0 transform .25 add round .25 sub exch .25 add round .25 sub exch itransform translate
+1 j
+1 setlinecap
+72 sl
+0.375 g
+n
+494 182 M
+494 155 472 133 445 133 c
+418 133 396 155 396 182 c
+396 209 418 231 445 231 c
+472 231 494 209 494 182 c
+cp
+CM 0.156 0.152 scale
+s
+SM
+71 sl
+n
+660 182 M
+660 155 638 133 611 133 c
+584 133 562 155 562 182 c
+562 209 584 231 611 231 c
+638 231 660 209 660 182 c
+cp
+CM 0.156 0.152 scale
+s
+SM
+n
+120 24 468 152 B
+1 g
+f
+1 sl
+n
+122 26 467 151 B
+cp
+s
+71 sl
+0.375 g
+n
+577 180 M
+577 153 555 131 528 131 c
+501 131 479 153 479 180 c
+479 206 501 228 528 228 c
+555 228 577 206 577 180 c
+cp
+gs
+1 g
+e
+gr
+CM 0.156 0.152 scale
+s
+SM
+n
+480 180 M
+575 180 L
+CM 0.156 0.152 scale
+s
+SM
+n
+34 18 562 187 B
+1 g
+f
+1 sl
+n
+36 20 561 186 B
+cp
+s
+n
+610 173 M
+591 173 L
+554 124 L
+579 126 L
+609 173 L
+610 173 L
+cp
+gs
+e
+gr
+s
+n
+448 170 M
+468 170 L
+504 122 L
+479 123 L
+449 170 L
+448 170 L
+cp
+gs
+e
+gr
+s
+0.375 g
+n
+473 140 M
+473 137 470 135 467 135 c
+464 135 462 137 462 140 c
+462 142 464 145 467 145 c
+470 145 473 142 473 140 c
+cp
+gs
+e
+gr
+s
+n
+593 139 M
+593 136 590 134 588 134 c
+585 134 583 136 583 139 c
+583 141 585 144 588 144 c
+590 144 593 141 593 139 c
+cp
+gs
+e
+gr
+s
+72 sl
+n
+665 137 M
+665 229 L
+CM 0.156 0.152 scale
+s
+SM
+[29 0 0 -29 0 0]/Times-Roman MF
+0 g
+( )676 243 MS
+[50 0 0 -50 0 0]/Times-Roman MF
+(D)400 289 MS (E)436 289 MS (N)467 289 MS ( )503 289 MS ( )516 289 MS (S)529 289 MS (a)557 289 MS (c)579 289 MS (l)601 289 MS (a)613 289 MS (y)636 289 MS
+( )660 289 MS
+( )1297 140 MS
+[38 0 0 -38 0 0]/Times-Roman MF
+(S)1785 129 MS (F)1806 129 MS (M)1827 129 MS (E)1861 129 MS (/)1883 129 MS (L)1894 129 MS (G)1916 129 MS (L)1943 129 MS (S)1965 129 MS (/)1986 129 MS (R)1997 129 MS (T)2022 129 MS (/)2045 129 MS (0)2056 129 MS (2)2075 129 MS
+(-)2094 129 MS
+(0)2106 129 MS (0)2125 129 MS (2)2144 129 MS
+( )2163 129 MS
+(D)1785 173 MS (a)1812 173 MS (t)1829 173 MS (e)1840 173 MS
+( )1856 173 MS
+(:)1866 173 MS
+( )1875 173 MS
+(3)1885 173 MS (0)1904 173 MS (/)1923 173 MS (0)1934 173 MS (5)1952 173 MS (/)1971 173 MS (2)1982 173 MS (0)2000 173 MS (0)2019 173 MS (2)2038 173 MS
+( )2057 173 MS
+n
+5 5 232 89 B
+f
+n
+5 5 232 89 B
+f
+n
+584 5 238 89 B
+f
+n
+5 5 823 89 B
+f
+n
+938 5 829 89 B
+f
+n
+5 5 1768 89 B
+f
+n
+436 5 1774 89 B
+f
+n
+5 5 2211 89 B
+f
+n
+5 5 2211 89 B
+f
+n
+5 256 232 95 B
+f
+n
+2 256 823 95 B
+f
+n
+2 256 1768 95 B
+f
+n
+5 256 2211 95 B
+f
+[50 0 0 -50 0 0]/Times-Roman MF
+(D)322 400 MS (M)358 400 MS (2)402 400 MS (S)427 400 MS (/)455 400 MS (S)469 400 MS (F)497 400 MS (M)524 400 MS (E)568 400 MS (/)599 400 MS (L)613 400 MS (G)643 400 MS (L)680 400 MS (S)710 400 MS
+( )738 400 MS
+[50 0 0 -50 0 0]/Times-Bold MF
+gs
+n
+241 53 1102 367 CB
+(R)1102 413 MS (A)1138 413 MS (P)1174 413 MS (P)1204 413 MS (O)1234 413 MS (R)1273 413 MS (T)1310 413 MS
+gr
+gs
+n
+150 53 1343 367 CB
+( )1343 413 MS (D)1356 413 MS (M)1392 413 MS (2)1440 413 MS (S)1465 413 MS
+gr
+[50 0 0 -50 0 0]/Times-Roman MF
+gs
+n
+24 52 1493 368 CB
+( )1493 413 MS
+gr
+[38 0 0 -38 0 0]/Times-Roman MF
+(P)1785 400 MS (a)1806 400 MS (g)1823 400 MS (e)1841 400 MS ( )1858 400 MS
+[50 0 0 -50 0 0]/Times-Roman MF
+(1)1868 400 MS (2)1893 400 MS
+(/)1918 400 MS
+(3)1932 400 MS (0)1957 400 MS
+[38 0 0 -38 0 0]/Times-Roman MF
+( )1982 400 MS
+n
+5 2 232 352 B
+f
+n
+2 2 823 352 B
+f
+n
+941 2 826 352 B
+f
+n
+2 2 1768 352 B
+f
+n
+5 2 2211 352 B
+f
+n
+5 67 232 355 B
+f
+n
+590 1 232 423 B
+f
+n
+2 67 823 355 B
+f
+n
+1 1 823 423 B
+f
+n
+942 1 825 423 B
+f
+n
+2 67 1768 355 B
+f
+n
+1 1 1768 423 B
+f
+n
+440 1 1770 423 B
+f
+n
+5 67 2211 355 B
+f
+n
+5 1 2211 423 B
+f
+[50 0 0 -50 0 0]/Times-Roman MF
+( )235 470 MS
+[33 0 0 -33 0 0]/Times-Roman MF
+/IsChar{exch/CharStrings get exch known}bd/MapCh{3 -1 roll/Encoding get 3 1\r
+roll put}bd/MapDegree{dup 16#b0 exch/degree IsChar{/degree}{/ring}ifelse MapCh}\r
+bd/MapBB{dup 16#a6 exch/brokenbar IsChar{/brokenbar}{/bar}ifelse MapCh}bd\r
+/reencode{findfont begin currentdict dup length dict begin{1 index/FID ne{def}\r
+{pop pop}ifelse}forall/FontName exch def dup length 0 ne{/Encoding Encoding 256\r
+array copy def 0 exch{dup type/nametype eq{Encoding 2 index 2 index put pop 1\r
+add}{exch pop}ifelse}forall}if pop currentdict dup end end/FontName get exch\r
+definefont dup MapDegree MapBB}bd/LATENC[0/grave/acute/circumflex/tilde/macron\r
+/breve/dotaccent/dieresis/ring/cedilla/hungarumlaut/ogonek/caron/dotlessi/fi/fl\r
+/Lslash/lslash/Zcaron/zcaron/minus/.notdef/.notdef/.notdef/.notdef/.notdef\r
+/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/space/exclam/quotedbl\r
+/numbersign/dollar/percent/ampersand/quotesingle/parenleft/parenright/asterisk\r
+/plus/comma/hyphen/period/slash/zero/one/two/three/four/five/six/seven/eight\r
+/nine/colon/semicolon/less/equal/greater/question/at/A/B/C/D/E/F/G/H/I/J/K/L/M\r
+/N/O/P/Q/R/S/T/U/V/W/X/Y/Z/bracketleft/backslash/bracketright/asciicircum\r
+/underscore/grave/a/b/c/d/e/f/g/h/i/j/k/l/m/n/o/p/q/r/s/t/u/v/w/x/y/z/braceleft\r
+/bar/braceright/asciitilde/.notdef/.notdef/.notdef/quotesinglbase/florin\r
+/quotedblbase/ellipsis/dagger/daggerdbl/circumflex/perthousand/Scaron\r
+/guilsinglleft/OE/.notdef/.notdef/.notdef/.notdef/quoteleft/quoteright\r
+/quotedblleft/quotedblright/bullet/endash/emdash/tilde/trademark/scaron\r
+/guilsinglright/oe/.notdef/.notdef/Ydieresis/.notdef/exclamdown/cent/sterling\r
+/currency/yen/brokenbar/section/dieresis/copyright/ordfeminine/guillemotleft\r
+/logicalnot/hyphen/registered/macron/degree/plusminus/twosuperior/threesuperior\r
+/acute/mu/paragraph/periodcentered/cedilla/onesuperior/ordmasculine\r
+/guillemotright/onequarter/onehalf/threequarters/questiondown/Agrave/Aacute\r
+/Acircumflex/Atilde/Adieresis/Aring/AE/Ccedilla/Egrave/Eacute/Ecircumflex\r
+/Edieresis/Igrave/Iacute/Icircumflex/Idieresis/Eth/Ntilde/Ograve/Oacute\r
+/Ocircumflex/Otilde/Odieresis/multiply/Oslash/Ugrave/Uacute/Ucircumflex\r
+/Udieresis/Yacute/Thorn/germandbls/agrave/aacute/acircumflex/atilde/adieresis\r
+/aring/ae/ccedilla/egrave/eacute/ecircumflex/edieresis/igrave/iacute\r
+/icircumflex/idieresis/eth/ntilde/ograve/oacute/ocircumflex/otilde/odieresis\r
+/divide/oslash/ugrave/uacute/ucircumflex/udieresis/yacute/thorn/ydieresis]def\r
+LATENC /_Times-Roman /Times-Roman reencode
+[33 0 0 -33 0 0]/_Times-Roman MF
+(L)242 3256 MS (e)262 3256 MS (s)277 3256 MS ( )289 3256 MS (i)298 3256 MS (n)307 3256 MS (f)324 3256 MS (o)335 3256 MS (r)351 3256 MS (m)363 3256 MS (a)388 3256 MS (t)403 3256 MS (i)412 3256 MS (o)422 3256 MS (n)439 3256 MS (s)456 3256 MS
+( )468 3256 MS (c)477 3256 MS (o)492 3256 MS (n)508 3256 MS (t)524 3256 MS (e)534 3256 MS (n)549 3256 MS (u)565 3256 MS (e)582 3256 MS (s)597 3256 MS ( )610 3256 MS (d)618 3256 MS (a)634 3256 MS (n)650 3256 MS (s)667 3256 MS ( )679 3256 MS
+(c)688 3256 MS (e)703 3256 MS ( )717 3256 MS (d)726 3256 MS (o)742 3256 MS (c)759 3256 MS (u)773 3256 MS (m)791 3256 MS (e)817 3256 MS (n)831 3256 MS (t)847 3256 MS ( )857 3256 MS (s)866 3256 MS (o)878 3256 MS (n)895 3256 MS (t)911 3256 MS
+( )921 3256 MS (r)929 3256 MS (\351)941 3256 MS (s)956 3256 MS (e)968 3256 MS (r)982 3256 MS (v)994 3256 MS (\351)1011 3256 MS (e)1026 3256 MS (s)1041 3256 MS ( )1053 3256 MS (a)1061 3256 MS (u)1076 3256 MS (x)1093 3256 MS ( )1109 3256 MS (d)1118 3256 MS
+(e)1135 3256 MS (s)1150 3256 MS (t)1162 3256 MS (i)1171 3256 MS (n)1181 3256 MS (a)1197 3256 MS (t)1212 3256 MS (a)1221 3256 MS (i)1236 3256 MS (r)1245 3256 MS (e)1257 3256 MS (s)1272 3256 MS ( )1284 3256 MS (n)1293 3256 MS (o)1309 3256 MS (m)1326 3256 MS
+(m)1352 3256 MS (\351)1378 3256 MS (m)1393 3256 MS (e)1419 3256 MS (n)1433 3256 MS (t)1450 3256 MS ( )1459 3256 MS (d)1468 3256 MS (\351)1484 3256 MS (s)1499 3256 MS (i)1512 3256 MS (g)1521 3256 MS
+(n)1538 3256 MS (\351)1555 3256 MS (s)1570 3256 MS ( )1582 3256 MS (e)1591 3256 MS (t)1605 3256 MS ( )1615 3256 MS (n)1623 3256 MS (e)1640 3256 MS ( )1654 3256 MS (p)1663 3256 MS (e)1680 3256 MS (u)1694 3256 MS (v)1711 3256 MS (e)1728 3256 MS (n)1743 3256 MS
+(t)1759 3256 MS ( )1768 3256 MS (r)1776 3256 MS (e)1788 3256 MS (c)1803 3256 MS (e)1818 3256 MS (v)1832 3256 MS (o)1849 3256 MS (i)1865 3256 MS (r)1874 3256 MS ( )1886 3256 MS (a)1894 3256 MS (u)1909 3256 MS (c)1926 3256 MS (u)1940 3256 MS (n)1957 3256 MS
+(e)1974 3256 MS ( )1988 3256 MS (d)1997 3256 MS (i)2013 3256 MS (f)2023 3256 MS (f)2034 3256 MS (u)2044 3256 MS (s)2062 3256 MS (i)2074 3256 MS (o)2084 3256 MS (n)2101 3256 MS
+( )2117 3256 MS
+(s)928 3294 MS (a)940 3294 MS (n)955 3294 MS (s)972 3294 MS ( )985 3294 MS (l)993 3294 MS (\222)1002 3294 MS (a)1013 3294 MS (u)1028 3294 MS (t)1045 3294 MS (o)1054 3294 MS (r)1071 3294 MS (i)1082 3294 MS (s)1092 3294 MS (a)1104 3294 MS (t)1119 3294 MS
+(i)1128 3294 MS (o)1138 3294 MS (n)1154 3294 MS ( )1171 3294 MS (e)1180 3294 MS (x)1194 3294 MS (p)1211 3294 MS (r)1227 3294 MS (e)1239 3294 MS (s)1254 3294 MS (s)1267 3294 MS (e)1280 3294 MS ( )1294 3294 MS (d)1303 3294 MS (u)1319 3294 MS ( )1336 3294 MS
+(D)1344 3294 MS (M)1368 3294 MS (2)1397 3294 MS (S)1414 3294 MS
+[50 0 0 -50 0 0]/Times-Roman MF
+( )1432 3294 MS
+[67 0 0 -67 0 0]/Helvetica-Bold MF
+(6)310 592 MS
+( )347 592 MS
+LATENC /_Helvetica-Bold /Helvetica-Bold reencode
+[67 0 0 -67 0 0]/_Helvetica-Bold MF
+(L)400 592 MS (e)441 592 MS ( )478 592 MS (c)497 592 MS (o)534 592 MS (n)575 592 MS (t)616 592 MS (a)636 592 MS (i)673 592 MS (n)691 592 MS (e)732 592 MS (r)769 592 MS ( )795 592 MS (p)814 592 MS (a)853 592 MS (r)890 592 MS
+(a)916 592 MS (l)952 592 MS (l)971 592 MS (\350)990 592 MS (l)1027 592 MS (e)1046 592 MS
+( )1083 592 MS
+[50 0 0 -50 0 0]/Times-Roman MF
+( )235 667 MS
+LATENC /_Times-Roman /Times-Roman reencode
+[50 0 0 -50 0 0]/_Times-Roman MF
+(L)348 724 MS (e)378 724 MS ( )400 724 MS (c)413 724 MS (o)435 724 MS (n)461 724 MS (t)485 724 MS (a)500 724 MS (i)522 724 MS (n)535 724 MS (e)560 724 MS (r)582 724 MS ( )599 724 MS (p)612 724 MS (a)637 724 MS (r)659 724 MS
+(a)676 724 MS (l)699 724 MS (l)712 724 MS (\350)725 724 MS (l)748 724 MS (e)761 724 MS ( )783 724 MS (h)796 724 MS (\351)820 724 MS (r)842 724 MS (i)860 724 MS (t)872 724 MS (e)887 724 MS ( )909 724 MS (d)922 724 MS (u)947 724 MS
+( )972 724 MS (c)985 724 MS (o)1007 724 MS (n)1033 724 MS (t)1057 724 MS (a)1072 724 MS (i)1094 724 MS (n)1107 724 MS (e)1131 724 MS (r)1153 724 MS ( )1170 724 MS (g)1183 724 MS (\351)1208 724 MS (n)1231 724 MS (\351)1255 724 MS (r)1277 724 MS
+(i)1295 724 MS (q)1307 724 MS (u)1332 724 MS (e)1358 724 MS ( )1380 724 MS (S)1393 724 MS (A)1421 724 MS (L)1456 724 MS (O)1486 724 MS (M)1523 724 MS (E)1567 724 MS ( )1598 724 MS (e)1611 724 MS (t)1633 724 MS ( )1647 724 MS (d)1660 724 MS
+(e)1685 724 MS ( )1707 724 MS (l)1720 724 MS (\222)1733 724 MS (o)1749 724 MS (b)1775 724 MS (j)1800 724 MS (e)1813 724 MS (t)1835 724 MS ( )1850 724 MS (p)1863 724 MS (a)1888 724 MS (r)1910 724 MS (a)1927 724 MS (l)1949 724 MS (l)1962 724 MS
+(\350)1975 724 MS (l)1998 724 MS (e)2011 724 MS ( )2033 724 MS
+(g)235 782 MS (\351)260 782 MS (n)282 782 MS (\351)306 782 MS (r)328 782 MS (i)346 782 MS (q)359 782 MS (u)384 782 MS (e)409 782 MS (.)431 782 MS
+( )444 782 MS
+( )348 839 MS
+[50 0 0 -50 0 0]/Helvetica-BoldOblique MF
+(6)310 947 MS (.)338 947 MS (1)352 947 MS
+( )380 947 MS
+LATENC /_Helvetica-BoldOblique /Helvetica-BoldOblique reencode
+[50 0 0 -50 0 0]/_Helvetica-BoldOblique MF
+(D)430 947 MS (\351)466 947 MS (f)494 947 MS (i)511 947 MS (n)525 947 MS (i)556 947 MS (t)570 947 MS (i)586 947 MS (o)600 947 MS (n)630 947 MS ( )661 947 MS (d)675 947 MS (e)706 947 MS ( )734 947 MS (l)747 947 MS (\222)761 947 MS
+(i)775 947 MS (n)789 947 MS (t)819 947 MS (e)836 947 MS (r)864 947 MS (f)883 947 MS (a)900 947 MS (c)928 947 MS (e)956 947 MS ( )984 947 MS (C)998 947 MS (O)1034 947 MS (R)1073 947 MS (B)1109 947 MS (A)1145 947 MS
+( )1181 947 MS
+[50 0 0 -50 0 0]/Times-Roman MF
+( )235 1017 MS
+LATENC /_Times-Roman /Times-Roman reencode
+[50 0 0 -50 0 0]/_Times-Roman MF
+(I)348 1074 MS (l)366 1074 MS ( )378 1074 MS (n)391 1074 MS (\222)416 1074 MS (e)432 1074 MS (s)454 1074 MS (t)473 1074 MS ( )488 1074 MS (p)501 1074 MS (a)526 1074 MS (s)548 1074 MS ( )567 1074 MS (n)580 1074 MS (\351)604 1074 MS
+(c)626 1074 MS (e)648 1074 MS (s)671 1074 MS (s)690 1074 MS (a)710 1074 MS (i)733 1074 MS (r)745 1074 MS (e)762 1074 MS ( )784 1074 MS (d)797 1074 MS (e)822 1074 MS ( )844 1074 MS (s)857 1074 MS (p)876 1074 MS (\351)901 1074 MS (c)923 1074 MS
+(i)946 1074 MS (f)960 1074 MS (i)977 1074 MS (e)990 1074 MS (r)1012 1074 MS ( )1029 1074 MS (d)1042 1074 MS (e)1067 1074 MS ( )1089 1074 MS (n)1102 1074 MS (o)1126 1074 MS (u)1152 1074 MS (v)1177 1074 MS (e)1201 1074 MS (a)1223 1074 MS (u)1245 1074 MS
+(x)1271 1074 MS ( )1295 1074 MS (a)1308 1074 MS (t)1330 1074 MS (t)1345 1074 MS (r)1359 1074 MS (i)1377 1074 MS (b)1390 1074 MS (u)1414 1074 MS (t)1439 1074 MS (s)1454 1074 MS ( )1473 1074 MS (o)1485 1074 MS (u)1511 1074 MS ( )1536 1074 MS (s)1549 1074 MS
+(e)1568 1074 MS (r)1590 1074 MS (v)1607 1074 MS (i)1632 1074 MS (c)1644 1074 MS (e)1666 1074 MS (s)1689 1074 MS (.)1708 1074 MS ( )1721 1074 MS (I)1734 1074 MS (l)1751 1074 MS (s)1764 1074 MS ( )1783 1074 MS (e)1796 1074 MS (x)1819 1074 MS (i)1844 1074 MS
+(s)1857 1074 MS (t)1876 1074 MS (e)1891 1074 MS (n)1913 1074 MS (t)1937 1074 MS ( )1952 1074 MS (d)1965 1074 MS (\351)1990 1074 MS (j)2012 1074 MS (\340)2025 1074 MS ( )2047 1074 MS
+(d)235 1132 MS (a)260 1132 MS (n)282 1132 MS (s)307 1132 MS ( )326 1132 MS (l)340 1132 MS (e)352 1132 MS (s)375 1132 MS ( )394 1132 MS (c)407 1132 MS (l)430 1132 MS (a)442 1132 MS (s)465 1132 MS (s)484 1132 MS (e)504 1132 MS (s)526 1132 MS
+( )545 1132 MS (p)558 1132 MS (a)583 1132 MS (r)605 1132 MS (e)622 1132 MS (n)645 1132 MS (t)669 1132 MS (e)684 1132 MS (s)706 1132 MS (.)725 1132 MS
+( )738 1132 MS
+( )348 1189 MS
+[42 0 0 -42 0 0]/Courier MF
+(#)235 1237 MS (i)260 1237 MS (f)285 1237 MS (n)310 1237 MS (d)335 1237 MS (e)360 1237 MS (f)385 1237 MS ( )410 1237 MS (_)435 1237 MS (S)460 1237 MS (A)485 1237 MS (L)510 1237 MS (O)535 1237 MS (M)560 1237 MS (E)585 1237 MS (_)610 1237 MS
+(M)635 1237 MS (P)660 1237 MS (I)685 1237 MS (C)710 1237 MS (O)735 1237 MS (N)760 1237 MS (T)785 1237 MS (A)810 1237 MS (I)835 1237 MS (N)860 1237 MS (E)885 1237 MS (R)910 1237 MS (_)935 1237 MS (I)960 1237 MS (D)985 1237 MS (L)1010 1237 MS
+(_)1035 1237 MS
+( )1060 1237 MS
+(#)235 1284 MS (d)260 1284 MS (e)285 1284 MS (f)310 1284 MS (i)335 1284 MS (n)360 1284 MS (e)385 1284 MS ( )410 1284 MS (_)435 1284 MS (S)460 1284 MS (A)485 1284 MS (L)510 1284 MS (O)535 1284 MS (M)560 1284 MS (E)585 1284 MS (_)610 1284 MS
+(M)635 1284 MS (P)660 1284 MS (I)685 1284 MS (C)710 1284 MS (O)735 1284 MS (N)760 1284 MS (T)785 1284 MS (A)810 1284 MS (I)835 1284 MS (N)860 1284 MS (E)885 1284 MS (R)910 1284 MS (_)935 1284 MS (I)960 1284 MS (D)985 1284 MS (L)1010 1284 MS
+(_)1035 1284 MS
+( )1060 1284 MS
+( )235 1331 MS
+(#)235 1378 MS (i)260 1378 MS (n)285 1378 MS (c)310 1378 MS (l)335 1378 MS (u)360 1378 MS (d)385 1378 MS (e)410 1378 MS ( )435 1378 MS (")460 1378 MS (S)485 1378 MS (A)510 1378 MS (L)535 1378 MS (O)560 1378 MS (M)585 1378 MS (E)610 1378 MS
+(_)635 1378 MS (C)660 1378 MS (o)685 1378 MS (m)710 1378 MS (p)735 1378 MS (o)760 1378 MS (n)785 1378 MS (e)810 1378 MS (n)835 1378 MS (t)860 1378 MS (.)885 1378 MS (i)910 1378 MS (d)935 1378 MS (l)960 1378 MS (")985 1378 MS
+( )1010 1378 MS
+(#)235 1425 MS (i)260 1425 MS (n)285 1425 MS (c)310 1425 MS (l)335 1425 MS (u)360 1425 MS (d)385 1425 MS (e)410 1425 MS ( )435 1425 MS (")460 1425 MS (M)485 1425 MS (P)510 1425 MS (I)535 1425 MS (O)560 1425 MS (b)585 1425 MS (j)610 1425 MS
+(e)635 1425 MS (c)660 1425 MS (t)685 1425 MS (.)710 1425 MS (i)735 1425 MS (d)760 1425 MS (l)785 1425 MS (")810 1425 MS
+( )835 1425 MS
+( )235 1473 MS
+(m)235 1520 MS (o)260 1520 MS (d)285 1520 MS (u)310 1520 MS (l)335 1520 MS (e)360 1520 MS ( )385 1520 MS (E)410 1520 MS (n)435 1520 MS (g)460 1520 MS (i)485 1520 MS (n)510 1520 MS (e)535 1520 MS (s)560 1520 MS
+( )585 1520 MS
+({)235 1567 MS
+( )260 1567 MS
+( )235 1614 MS ( )260 1614 MS (i)285 1614 MS (n)310 1614 MS (t)335 1614 MS (e)360 1614 MS (r)385 1614 MS (f)410 1614 MS (a)435 1614 MS
+(c)460 1614 MS (e)485 1614 MS ( )510 1614 MS (M)535 1614 MS (P)560 1614 MS (I)585 1614 MS (C)610 1614 MS (o)635 1614 MS (n)660 1614 MS (t)685 1614 MS (a)710 1614 MS (i)735 1614 MS (n)760 1614 MS (e)785 1614 MS (r)810 1614 MS (:)835 1614 MS
+(C)860 1614 MS (o)885 1614 MS (n)910 1614 MS (t)935 1614 MS (a)960 1614 MS (i)985 1614 MS (n)1010 1614 MS (e)1035 1614 MS (r)1060 1614 MS (,)1085 1614 MS (M)1110 1614 MS (P)1135 1614 MS (I)1160 1614 MS (O)1185 1614 MS (b)1210 1614 MS (j)1235 1614 MS
+(e)1260 1614 MS (c)1285 1614 MS (t)1310 1614 MS
+( )1335 1614 MS
+( )235 1661 MS ( )260 1661 MS ({)285 1661 MS
+( )310 1661 MS
+( )235 1709 MS ( )260 1709 MS (})285 1709 MS ( )310 1709 MS (;)335 1709 MS
+( )360 1709 MS
+(})235 1756 MS ( )260 1756 MS (;)285 1756 MS
+( )310 1756 MS
+( )235 1803 MS
+(#)235 1850 MS (e)260 1850 MS (n)285 1850 MS (d)310 1850 MS (i)335 1850 MS (f)360 1850 MS
+( )385 1850 MS
+( )235 1897 MS
+( )235 1945 MS
+showpage
+%%Page: 13 13
+14.449 827.879 translate 72 300 div dup neg scale
+0 0 transform .25 add round .25 sub exch .25 add round .25 sub exch itransform translate
+1 j
+1 setlinecap
+72 sl
+0.375 g
+n
+494 182 M
+494 155 472 133 445 133 c
+418 133 396 155 396 182 c
+396 209 418 231 445 231 c
+472 231 494 209 494 182 c
+cp
+CM 0.156 0.152 scale
+s
+SM
+71 sl
+n
+660 182 M
+660 155 638 133 611 133 c
+584 133 562 155 562 182 c
+562 209 584 231 611 231 c
+638 231 660 209 660 182 c
+cp
+CM 0.156 0.152 scale
+s
+SM
+n
+120 24 468 152 B
+1 g
+f
+1 sl
+n
+122 26 467 151 B
+cp
+s
+71 sl
+0.375 g
+n
+577 180 M
+577 153 555 131 528 131 c
+501 131 479 153 479 180 c
+479 206 501 228 528 228 c
+555 228 577 206 577 180 c
+cp
+gs
+1 g
+e
+gr
+CM 0.156 0.152 scale
+s
+SM
+n
+480 180 M
+575 180 L
+CM 0.156 0.152 scale
+s
+SM
+n
+34 18 562 187 B
+1 g
+f
+1 sl
+n
+36 20 561 186 B
+cp
+s
+n
+610 173 M
+591 173 L
+554 124 L
+579 126 L
+609 173 L
+610 173 L
+cp
+gs
+e
+gr
+s
+n
+448 170 M
+468 170 L
+504 122 L
+479 123 L
+449 170 L
+448 170 L
+cp
+gs
+e
+gr
+s
+0.375 g
+n
+473 140 M
+473 137 470 135 467 135 c
+464 135 462 137 462 140 c
+462 142 464 145 467 145 c
+470 145 473 142 473 140 c
+cp
+gs
+e
+gr
+s
+n
+593 139 M
+593 136 590 134 588 134 c
+585 134 583 136 583 139 c
+583 141 585 144 588 144 c
+590 144 593 141 593 139 c
+cp
+gs
+e
+gr
+s
+72 sl
+n
+665 137 M
+665 229 L
+CM 0.156 0.152 scale
+s
+SM
+[29 0 0 -29 0 0]/Times-Roman MF
+0 g
+( )676 243 MS
+[50 0 0 -50 0 0]/Times-Roman MF
+(D)400 289 MS (E)436 289 MS (N)467 289 MS ( )503 289 MS ( )516 289 MS (S)529 289 MS (a)557 289 MS (c)579 289 MS (l)601 289 MS (a)613 289 MS (y)636 289 MS
+( )660 289 MS
+( )1297 140 MS
+[38 0 0 -38 0 0]/Times-Roman MF
+(S)1785 129 MS (F)1806 129 MS (M)1827 129 MS (E)1861 129 MS (/)1883 129 MS (L)1894 129 MS (G)1916 129 MS (L)1943 129 MS (S)1965 129 MS (/)1986 129 MS (R)1997 129 MS (T)2022 129 MS (/)2045 129 MS (0)2056 129 MS (2)2075 129 MS
+(-)2094 129 MS
+(0)2106 129 MS (0)2125 129 MS (2)2144 129 MS
+( )2163 129 MS
+(D)1785 173 MS (a)1812 173 MS (t)1829 173 MS (e)1840 173 MS
+( )1856 173 MS
+(:)1866 173 MS
+( )1875 173 MS
+(3)1885 173 MS (0)1904 173 MS (/)1923 173 MS (0)1934 173 MS (5)1952 173 MS (/)1971 173 MS (2)1982 173 MS (0)2000 173 MS (0)2019 173 MS (2)2038 173 MS
+( )2057 173 MS
+n
+5 5 232 89 B
+f
+n
+5 5 232 89 B
+f
+n
+584 5 238 89 B
+f
+n
+5 5 823 89 B
+f
+n
+938 5 829 89 B
+f
+n
+5 5 1768 89 B
+f
+n
+436 5 1774 89 B
+f
+n
+5 5 2211 89 B
+f
+n
+5 5 2211 89 B
+f
+n
+5 256 232 95 B
+f
+n
+2 256 823 95 B
+f
+n
+2 256 1768 95 B
+f
+n
+5 256 2211 95 B
+f
+[50 0 0 -50 0 0]/Times-Roman MF
+(D)322 400 MS (M)358 400 MS (2)402 400 MS (S)427 400 MS (/)455 400 MS (S)469 400 MS (F)497 400 MS (M)524 400 MS (E)568 400 MS (/)599 400 MS (L)613 400 MS (G)643 400 MS (L)680 400 MS (S)710 400 MS
+( )738 400 MS
+[50 0 0 -50 0 0]/Times-Bold MF
+gs
+n
+241 53 1102 367 CB
+(R)1102 413 MS (A)1138 413 MS (P)1174 413 MS (P)1204 413 MS (O)1234 413 MS (R)1273 413 MS (T)1310 413 MS
+gr
+gs
+n
+150 53 1343 367 CB
+( )1343 413 MS (D)1356 413 MS (M)1392 413 MS (2)1440 413 MS (S)1465 413 MS
+gr
+[50 0 0 -50 0 0]/Times-Roman MF
+gs
+n
+24 52 1493 368 CB
+( )1493 413 MS
+gr
+[38 0 0 -38 0 0]/Times-Roman MF
+(P)1785 400 MS (a)1806 400 MS (g)1823 400 MS (e)1841 400 MS ( )1858 400 MS
+[50 0 0 -50 0 0]/Times-Roman MF
+(1)1868 400 MS (3)1893 400 MS
+(/)1918 400 MS
+(3)1932 400 MS (0)1957 400 MS
+[38 0 0 -38 0 0]/Times-Roman MF
+( )1982 400 MS
+n
+5 2 232 352 B
+f
+n
+2 2 823 352 B
+f
+n
+941 2 826 352 B
+f
+n
+2 2 1768 352 B
+f
+n
+5 2 2211 352 B
+f
+n
+5 67 232 355 B
+f
+n
+590 1 232 423 B
+f
+n
+2 67 823 355 B
+f
+n
+1 1 823 423 B
+f
+n
+942 1 825 423 B
+f
+n
+2 67 1768 355 B
+f
+n
+1 1 1768 423 B
+f
+n
+440 1 1770 423 B
+f
+n
+5 67 2211 355 B
+f
+n
+5 1 2211 423 B
+f
+[50 0 0 -50 0 0]/Times-Roman MF
+( )235 470 MS
+[33 0 0 -33 0 0]/Times-Roman MF
+/IsChar{exch/CharStrings get exch known}bd/MapCh{3 -1 roll/Encoding get 3 1\r
+roll put}bd/MapDegree{dup 16#b0 exch/degree IsChar{/degree}{/ring}ifelse MapCh}\r
+bd/MapBB{dup 16#a6 exch/brokenbar IsChar{/brokenbar}{/bar}ifelse MapCh}bd\r
+/reencode{findfont begin currentdict dup length dict begin{1 index/FID ne{def}\r
+{pop pop}ifelse}forall/FontName exch def dup length 0 ne{/Encoding Encoding 256\r
+array copy def 0 exch{dup type/nametype eq{Encoding 2 index 2 index put pop 1\r
+add}{exch pop}ifelse}forall}if pop currentdict dup end end/FontName get exch\r
+definefont dup MapDegree MapBB}bd/LATENC[0/grave/acute/circumflex/tilde/macron\r
+/breve/dotaccent/dieresis/ring/cedilla/hungarumlaut/ogonek/caron/dotlessi/fi/fl\r
+/Lslash/lslash/Zcaron/zcaron/minus/.notdef/.notdef/.notdef/.notdef/.notdef\r
+/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/space/exclam/quotedbl\r
+/numbersign/dollar/percent/ampersand/quotesingle/parenleft/parenright/asterisk\r
+/plus/comma/hyphen/period/slash/zero/one/two/three/four/five/six/seven/eight\r
+/nine/colon/semicolon/less/equal/greater/question/at/A/B/C/D/E/F/G/H/I/J/K/L/M\r
+/N/O/P/Q/R/S/T/U/V/W/X/Y/Z/bracketleft/backslash/bracketright/asciicircum\r
+/underscore/grave/a/b/c/d/e/f/g/h/i/j/k/l/m/n/o/p/q/r/s/t/u/v/w/x/y/z/braceleft\r
+/bar/braceright/asciitilde/.notdef/.notdef/.notdef/quotesinglbase/florin\r
+/quotedblbase/ellipsis/dagger/daggerdbl/circumflex/perthousand/Scaron\r
+/guilsinglleft/OE/.notdef/.notdef/.notdef/.notdef/quoteleft/quoteright\r
+/quotedblleft/quotedblright/bullet/endash/emdash/tilde/trademark/scaron\r
+/guilsinglright/oe/.notdef/.notdef/Ydieresis/.notdef/exclamdown/cent/sterling\r
+/currency/yen/brokenbar/section/dieresis/copyright/ordfeminine/guillemotleft\r
+/logicalnot/hyphen/registered/macron/degree/plusminus/twosuperior/threesuperior\r
+/acute/mu/paragraph/periodcentered/cedilla/onesuperior/ordmasculine\r
+/guillemotright/onequarter/onehalf/threequarters/questiondown/Agrave/Aacute\r
+/Acircumflex/Atilde/Adieresis/Aring/AE/Ccedilla/Egrave/Eacute/Ecircumflex\r
+/Edieresis/Igrave/Iacute/Icircumflex/Idieresis/Eth/Ntilde/Ograve/Oacute\r
+/Ocircumflex/Otilde/Odieresis/multiply/Oslash/Ugrave/Uacute/Ucircumflex\r
+/Udieresis/Yacute/Thorn/germandbls/agrave/aacute/acircumflex/atilde/adieresis\r
+/aring/ae/ccedilla/egrave/eacute/ecircumflex/edieresis/igrave/iacute\r
+/icircumflex/idieresis/eth/ntilde/ograve/oacute/ocircumflex/otilde/odieresis\r
+/divide/oslash/ugrave/uacute/ucircumflex/udieresis/yacute/thorn/ydieresis]def\r
+LATENC /_Times-Roman /Times-Roman reencode
+[33 0 0 -33 0 0]/_Times-Roman MF
+(L)242 3256 MS (e)262 3256 MS (s)277 3256 MS ( )289 3256 MS (i)298 3256 MS (n)307 3256 MS (f)324 3256 MS (o)335 3256 MS (r)351 3256 MS (m)363 3256 MS (a)388 3256 MS (t)403 3256 MS (i)412 3256 MS (o)422 3256 MS (n)439 3256 MS (s)456 3256 MS
+( )468 3256 MS (c)477 3256 MS (o)492 3256 MS (n)508 3256 MS (t)524 3256 MS (e)534 3256 MS (n)549 3256 MS (u)565 3256 MS (e)582 3256 MS (s)597 3256 MS ( )610 3256 MS (d)618 3256 MS (a)634 3256 MS (n)650 3256 MS (s)667 3256 MS ( )679 3256 MS
+(c)688 3256 MS (e)703 3256 MS ( )717 3256 MS (d)726 3256 MS (o)742 3256 MS (c)759 3256 MS (u)773 3256 MS (m)791 3256 MS (e)817 3256 MS (n)831 3256 MS (t)847 3256 MS ( )857 3256 MS (s)866 3256 MS (o)878 3256 MS (n)895 3256 MS (t)911 3256 MS
+( )921 3256 MS (r)929 3256 MS (\351)941 3256 MS (s)956 3256 MS (e)968 3256 MS (r)982 3256 MS (v)994 3256 MS (\351)1011 3256 MS (e)1026 3256 MS (s)1041 3256 MS ( )1053 3256 MS (a)1061 3256 MS (u)1076 3256 MS (x)1093 3256 MS ( )1109 3256 MS (d)1118 3256 MS
+(e)1135 3256 MS (s)1150 3256 MS (t)1162 3256 MS (i)1171 3256 MS (n)1181 3256 MS (a)1197 3256 MS (t)1212 3256 MS (a)1221 3256 MS (i)1236 3256 MS (r)1245 3256 MS (e)1257 3256 MS (s)1272 3256 MS ( )1284 3256 MS (n)1293 3256 MS (o)1309 3256 MS (m)1326 3256 MS
+(m)1352 3256 MS (\351)1378 3256 MS (m)1393 3256 MS (e)1419 3256 MS (n)1433 3256 MS (t)1450 3256 MS ( )1459 3256 MS (d)1468 3256 MS (\351)1484 3256 MS (s)1499 3256 MS (i)1512 3256 MS (g)1521 3256 MS
+(n)1538 3256 MS (\351)1555 3256 MS (s)1570 3256 MS ( )1582 3256 MS (e)1591 3256 MS (t)1605 3256 MS ( )1615 3256 MS (n)1623 3256 MS (e)1640 3256 MS ( )1654 3256 MS (p)1663 3256 MS (e)1680 3256 MS (u)1694 3256 MS (v)1711 3256 MS (e)1728 3256 MS (n)1743 3256 MS
+(t)1759 3256 MS ( )1768 3256 MS (r)1776 3256 MS (e)1788 3256 MS (c)1803 3256 MS (e)1818 3256 MS (v)1832 3256 MS (o)1849 3256 MS (i)1865 3256 MS (r)1874 3256 MS ( )1886 3256 MS (a)1894 3256 MS (u)1909 3256 MS (c)1926 3256 MS (u)1940 3256 MS (n)1957 3256 MS
+(e)1974 3256 MS ( )1988 3256 MS (d)1997 3256 MS (i)2013 3256 MS (f)2023 3256 MS (f)2034 3256 MS (u)2044 3256 MS (s)2062 3256 MS (i)2074 3256 MS (o)2084 3256 MS (n)2101 3256 MS
+( )2117 3256 MS
+(s)928 3294 MS (a)940 3294 MS (n)955 3294 MS (s)972 3294 MS ( )985 3294 MS (l)993 3294 MS (\222)1002 3294 MS (a)1013 3294 MS (u)1028 3294 MS (t)1045 3294 MS (o)1054 3294 MS (r)1071 3294 MS (i)1082 3294 MS (s)1092 3294 MS (a)1104 3294 MS (t)1119 3294 MS
+(i)1128 3294 MS (o)1138 3294 MS (n)1154 3294 MS ( )1171 3294 MS (e)1180 3294 MS (x)1194 3294 MS (p)1211 3294 MS (r)1227 3294 MS (e)1239 3294 MS (s)1254 3294 MS (s)1267 3294 MS (e)1280 3294 MS ( )1294 3294 MS (d)1303 3294 MS (u)1319 3294 MS ( )1336 3294 MS
+(D)1344 3294 MS (M)1368 3294 MS (2)1397 3294 MS (S)1414 3294 MS
+[50 0 0 -50 0 0]/Times-Roman MF
+( )1432 3294 MS
+[50 0 0 -50 0 0]/Helvetica-BoldOblique MF
+(6)310 577 MS (.)338 577 MS (2)352 577 MS
+( )380 577 MS
+LATENC /_Helvetica-BoldOblique /Helvetica-BoldOblique reencode
+[50 0 0 -50 0 0]/_Helvetica-BoldOblique MF
+(D)430 577 MS (\351)466 577 MS (f)494 577 MS (i)511 577 MS (n)525 577 MS (i)556 577 MS (t)570 577 MS (i)586 577 MS (o)600 577 MS (n)630 577 MS ( )661 577 MS (d)675 577 MS (e)706 577 MS ( )734 577 MS (l)747 577 MS (\222)761 577 MS
+(i)775 577 MS (m)789 577 MS (p)833 577 MS (l)864 577 MS (\351)878 577 MS (m)906 577 MS (e)950 577 MS (n)978 577 MS (t)1008 577 MS (a)1025 577 MS (t)1053 577 MS (i)1070 577 MS (o)1083 577 MS (n)1114 577 MS
+( )1145 577 MS
+[50 0 0 -50 0 0]/Times-Roman MF
+( )235 647 MS
+LATENC /_Times-Roman /Times-Roman reencode
+[50 0 0 -50 0 0]/_Times-Roman MF
+(D)348 705 MS (a)384 705 MS (n)406 705 MS (s)431 705 MS ( )450 705 MS (l)478 705 MS (\222)491 705 MS (i)508 705 MS (m)522 705 MS (p)560 705 MS (l)586 705 MS (\351)599 705 MS (m)622 705 MS (e)660 705 MS (n)683 705 MS (t)707 705 MS
+(a)722 705 MS (t)744 705 MS (i)759 705 MS (o)771 705 MS (n)797 705 MS ( )821 705 MS (d)848 705 MS (u)873 705 MS ( )898 705 MS (c)925 705 MS (o)947 705 MS (n)973 705 MS (t)997 705 MS (a)1012 705 MS (i)1035 705 MS (n)1048 705 MS
+(e)1072 705 MS (r)1094 705 MS ( )1111 705 MS (p)1138 705 MS (a)1163 705 MS (r)1185 705 MS (a)1202 705 MS (l)1225 705 MS (l)1238 705 MS (\350)1251 705 MS (l)1274 705 MS (e)1287 705 MS (,)1309 705 MS ( )1322 705 MS (i)1350 705 MS (l)1363 705 MS
+( )1376 705 MS (n)1404 705 MS (\222)1428 705 MS (e)1445 705 MS (s)1467 705 MS (t)1486 705 MS ( )1501 705 MS (p)1528 705 MS (a)1553 705 MS (s)1575 705 MS ( )1594 705 MS (n)1621 705 MS (\351)1645 705 MS (c)1667 705 MS (e)1690 705 MS (s)1712 705 MS
+(s)1732 705 MS (a)1751 705 MS (i)1774 705 MS (r)1786 705 MS (e)1803 705 MS ( )1825 705 MS (n)1853 705 MS (o)1877 705 MS (n)1903 705 MS ( )1927 705 MS (p)1954 705 MS (l)1980 705 MS (u)1993 705 MS (s)2018 705 MS (,)2037 705 MS ( )2050 705 MS
+(d)2077 705 MS (e)2102 705 MS ( )2125 705 MS
+(r)235 762 MS (a)252 762 MS (j)275 762 MS (o)287 762 MS (u)313 762 MS (t)338 762 MS (e)353 762 MS (r)374 762 MS ( )391 762 MS (d)415 762 MS (e)440 762 MS ( )462 762 MS (n)486 762 MS (o)510 762 MS (u)536 762 MS (v)561 762 MS
+(e)585 762 MS (a)607 762 MS (u)629 762 MS (x)655 762 MS ( )679 762 MS (a)703 762 MS (t)725 762 MS (t)740 762 MS (r)754 762 MS (i)771 762 MS (b)784 762 MS (u)808 762 MS (t)833 762 MS (s)848 762 MS ( )867 762 MS (o)891 762 MS
+(u)917 762 MS ( )942 762 MS (s)966 762 MS (e)985 762 MS (r)1007 762 MS (v)1024 762 MS (i)1049 762 MS (c)1062 762 MS (e)1084 762 MS (s)1107 762 MS (.)1126 762 MS ( )1139 762 MS (P)1163 762 MS (a)1191 762 MS (r)1213 762 MS ( )1230 762 MS
+(c)1254 762 MS (o)1276 762 MS (n)1302 762 MS (t)1326 762 MS (r)1341 762 MS (e)1358 762 MS ( )1380 762 MS (i)1404 762 MS (l)1417 762 MS ( )1430 762 MS (e)1454 762 MS (s)1476 762 MS (t)1495 762 MS ( )1510 762 MS (n)1534 762 MS (\351)1558 762 MS
+(c)1580 762 MS (e)1603 762 MS (s)1625 762 MS (s)1645 762 MS (a)1664 762 MS (i)1687 762 MS (r)1699 762 MS (e)1716 762 MS ( )1738 762 MS (d)1762 762 MS (e)1788 762 MS ( )1810 762 MS (s)1834 762 MS (u)1853 762 MS (r)1878 762 MS (c)1895 762 MS
+(h)1918 762 MS (a)1942 762 MS (r)1964 762 MS (g)1981 762 MS (e)2006 762 MS (r)2028 762 MS ( )2045 762 MS (l)2070 762 MS (e)2083 762 MS (s)2105 762 MS ( )2125 762 MS
+(d)235 820 MS (i)261 820 MS (f)274 820 MS (f)290 820 MS (\351)306 820 MS (r)328 820 MS (e)345 820 MS (n)368 820 MS (t)392 820 MS (e)407 820 MS (s)429 820 MS ( )448 820 MS (m)465 820 MS (\351)502 820 MS (t)524 820 MS (h)539 820 MS
+(o)563 820 MS (d)589 820 MS (e)614 820 MS (s)636 820 MS ( )655 820 MS (d)671 820 MS (\351)696 820 MS (f)719 820 MS (i)735 820 MS (n)748 820 MS (i)774 820 MS (e)787 820 MS (s)810 820 MS ( )829 820 MS (d)845 820 MS (a)870 820 MS
+(n)892 820 MS (s)917 820 MS ( )936 820 MS (l)953 820 MS (e)966 820 MS ( )988 820 MS (c)1004 820 MS (o)1026 820 MS (n)1052 820 MS (t)1076 820 MS (a)1091 820 MS (i)1113 820 MS (n)1126 820 MS (e)1150 820 MS (r)1172 820 MS ( )1189 820 MS
+(g)1205 820 MS (\351)1230 820 MS (n)1253 820 MS (\351)1277 820 MS (r)1299 820 MS (i)1317 820 MS (q)1330 820 MS (u)1355 820 MS (e)1380 820 MS ( )1402 820 MS (S)1418 820 MS (A)1446 820 MS (L)1482 820 MS (O)1512 820 MS (M)1548 820 MS (E)1592 820 MS
+( )1623 820 MS (p)1639 820 MS (o)1664 820 MS (u)1690 820 MS (r)1715 820 MS ( )1732 820 MS (p)1748 820 MS (r)1772 820 MS (e)1789 820 MS (n)1811 820 MS (d)1835 820 MS (r)1860 820 MS (e)1877 820 MS ( )1899 820 MS (e)1915 820 MS (n)1937 820 MS
+( )1961 820 MS (c)1977 820 MS (o)1999 820 MS (m)2026 820 MS (p)2063 820 MS (t)2088 820 MS (e)2103 820 MS ( )2125 820 MS
+(l)235 877 MS (e)248 877 MS ( )270 877 MS (p)283 877 MS (a)308 877 MS (r)330 877 MS (a)347 877 MS (l)370 877 MS (l)383 877 MS (\351)396 877 MS (l)419 877 MS (i)433 877 MS (s)446 877 MS (m)467 877 MS (e)505 877 MS (.)527 877 MS
+( )540 877 MS
+( )553 877 MS
+( )348 935 MS
+(A)348 992 MS (i)384 992 MS (n)397 992 MS (s)422 992 MS (i)442 992 MS ( )455 992 MS (d)469 992 MS (a)494 992 MS (n)517 992 MS (s)541 992 MS ( )561 992 MS (l)575 992 MS (e)588 992 MS ( )610 992 MS (c)623 992 MS (o)645 992 MS
+(n)671 992 MS (s)696 992 MS (t)715 992 MS (r)730 992 MS (u)747 992 MS (c)772 992 MS (t)793 992 MS (e)808 992 MS (u)830 992 MS (r)855 992 MS ( )872 992 MS (d)885 992 MS (u)910 992 MS ( )935 992 MS (c)948 992 MS (o)970 992 MS
+(n)996 992 MS (t)1020 992 MS (a)1035 992 MS (i)1057 992 MS (n)1070 992 MS (e)1094 992 MS (r)1116 992 MS ( )1133 992 MS (p)1146 992 MS (a)1171 992 MS (r)1193 992 MS (a)1210 992 MS (l)1233 992 MS (l)1247 992 MS (\350)1260 992 MS (l)1283 992 MS
+(e)1296 992 MS (,)1318 992 MS ( )1331 992 MS (s)1344 992 MS (e)1364 992 MS (u)1386 992 MS (l)1412 992 MS ( )1424 992 MS (l)1438 992 MS (\222)1451 992 MS (o)1467 992 MS (b)1494 992 MS (j)1519 992 MS (e)1532 992 MS (t)1554 992 MS ( )1569 992 MS
+(d)1582 992 MS (u)1607 992 MS ( )1632 992 MS (p)1645 992 MS (r)1670 992 MS (o)1687 992 MS (c)1713 992 MS (e)1735 992 MS (s)1757 992 MS (s)1776 992 MS (u)1795 992 MS (s)1820 992 MS ( )1839 992 MS (0)1852 992 MS ( )1878 992 MS (s)1891 992 MS
+(\222)1911 992 MS (e)1927 992 MS (n)1950 992 MS (r)1974 992 MS (e)1991 992 MS (g)2013 992 MS (i)2039 992 MS (s)2052 992 MS (t)2071 992 MS (r)2086 992 MS (e)2103 992 MS ( )2125 992 MS
+(a)235 1050 MS (u)257 1050 MS ( )282 1050 MS (s)296 1050 MS (e)315 1050 MS (r)337 1050 MS (v)355 1050 MS (i)380 1050 MS (c)393 1050 MS (e)415 1050 MS ( )437 1050 MS (d)451 1050 MS (e)476 1050 MS ( )498 1050 MS (n)513 1050 MS (o)537 1050 MS
+(m)564 1050 MS (m)602 1050 MS (a)640 1050 MS (g)662 1050 MS (e)688 1050 MS (.)710 1050 MS ( )723 1050 MS (L)737 1050 MS (e)767 1050 MS (s)789 1050 MS ( )809 1050 MS (a)823 1050 MS (u)845 1050 MS (t)870 1050 MS (r)885 1050 MS (e)902 1050 MS
+(s)924 1050 MS ( )943 1050 MS (p)957 1050 MS (r)982 1050 MS (o)999 1050 MS (c)1025 1050 MS (e)1047 1050 MS (s)1069 1050 MS (s)1088 1050 MS (u)1107 1050 MS (s)1132 1050 MS ( )1151 1050 MS (s)1165 1050 MS (e)1184 1050 MS
+( )1206 1050 MS (c)1221 1050 MS (o)1244 1050 MS (n)1270 1050 MS (t)1294 1050 MS (e)1309 1050 MS (n)1331 1050 MS (t)1355 1050 MS (e)1370 1050 MS (n)1392 1050 MS (t)1416 1050 MS ( )1431 1050 MS (d)1445 1050 MS (\222)1470 1050 MS (e)1486 1050 MS (n)1508 1050 MS
+(v)1533 1050 MS (o)1557 1050 MS (y)1584 1050 MS (e)1607 1050 MS (r)1629 1050 MS ( )1646 1050 MS (l)1661 1050 MS (e)1674 1050 MS (u)1696 1050 MS (r)1721 1050 MS ( )1738 1050 MS (r)1752 1050 MS (\351)1769 1050 MS (f)1792 1050 MS (\351)1808 1050 MS (r)1830 1050 MS
+(e)1847 1050 MS (n)1869 1050 MS (c)1894 1050 MS (e)1916 1050 MS ( )1938 1050 MS (C)1952 1050 MS (O)1985 1050 MS (R)2022 1050 MS (B)2055 1050 MS (A)2089 1050 MS ( )2125 1050 MS
+(a)235 1107 MS (u)257 1107 MS ( )282 1107 MS (p)297 1107 MS (r)322 1107 MS (o)338 1107 MS (c)364 1107 MS (e)386 1107 MS (s)408 1107 MS (s)427 1107 MS (u)446 1107 MS (s)471 1107 MS ( )490 1107 MS (0)505 1107 MS ( )530 1107 MS (a)545 1107 MS
+(v)567 1107 MS (e)592 1107 MS (c)614 1107 MS ( )636 1107 MS (l)652 1107 MS (a)664 1107 MS ( )686 1107 MS (f)702 1107 MS (o)717 1107 MS (n)744 1107 MS (c)768 1107 MS (t)790 1107 MS (i)806 1107 MS (o)818 1107 MS (n)844 1107 MS ( )868 1107 MS
+(d)883 1107 MS (e)908 1107 MS ( )930 1107 MS (l)946 1107 MS (\222)958 1107 MS (o)974 1107 MS (b)1000 1107 MS (j)1025 1107 MS (e)1038 1107 MS (t)1060 1107 MS ( )1075 1107 MS (p)1090 1107 MS (a)1115 1107 MS (r)1137 1107 MS (a)1154 1107 MS (l)1177 1107 MS
+(l)1190 1107 MS (\350)1203 1107 MS (l)1226 1107 MS (e)1240 1107 MS ( )1262 1107 MS (g)1277 1107 MS (\351)1302 1107 MS (n)1324 1107 MS (\351)1348 1107 MS (r)1370 1107 MS (i)1388 1107 MS (q)1401 1107 MS (u)1426 1107 MS (e)1451 1107 MS
+( )1473 1107 MS
+(:)1486 1107 MS ( )1500 1107 MS (B)1515 1107 MS (C)1548 1107 MS (a)1581 1107 MS (s)1603 1107 MS (t)1622 1107 MS (I)1637 1107 MS (O)1654 1107 MS (R)1690 1107 MS (\()1723 1107 MS (\))1740 1107 MS ( )1757 1107 MS (p)1772 1107 MS (o)1796 1107 MS (u)1822 1107 MS
+(r)1847 1107 MS ( )1863 1107 MS (c)1878 1107 MS (o)1899 1107 MS (n)1925 1107 MS (s)1949 1107 MS (t)1968 1107 MS (i)1984 1107 MS (t)1996 1107 MS (u)2011 1107 MS (e)2036 1107 MS (r)2058 1107 MS ( )2075 1107 MS (l)2090 1107 MS (a)2102 1107 MS ( )2125 1107 MS
+(l)235 1165 MS (i)249 1165 MS (s)262 1165 MS (t)281 1165 MS (e)296 1165 MS ( )318 1165 MS (I)348 1165 MS (O)365 1165 MS (R)401 1165 MS (T)434 1165 MS (a)465 1165 MS (b)487 1165 MS (.)511 1165 MS ( )524 1165 MS (A)554 1165 MS (i)590 1165 MS
+(n)603 1165 MS (s)628 1165 MS (i)648 1165 MS (,)661 1165 MS ( )674 1165 MS (l)705 1165 MS (e)717 1165 MS ( )739 1165 MS (c)769 1165 MS (o)791 1165 MS (n)817 1165 MS (t)841 1165 MS (a)856 1165 MS (i)879 1165 MS (n)892 1165 MS (e)916 1165 MS
+(r)938 1165 MS ( )955 1165 MS (p)985 1165 MS (a)1010 1165 MS (r)1032 1165 MS (a)1049 1165 MS (l)1072 1165 MS (l)1085 1165 MS (\350)1098 1165 MS (l)1121 1165 MS (e)1134 1165 MS ( )1156 1165 MS (e)1186 1165 MS (s)1208 1165 MS (t)1227 1165 MS ( )1242 1165 MS
+(v)1272 1165 MS (u)1296 1165 MS ( )1321 1165 MS (p)1351 1165 MS (a)1376 1165 MS (r)1398 1165 MS ( )1415 1165 MS (l)1445 1165 MS (\222)1458 1165 MS (e)1474 1165 MS (x)1497 1165 MS (t)1521 1165 MS (\351)1536 1165 MS (r)1558 1165 MS (i)1576 1165 MS (e)1588 1165 MS
+(u)1610 1165 MS (r)1635 1165 MS ( )1652 1165 MS (c)1682 1165 MS (o)1704 1165 MS (m)1730 1165 MS (m)1768 1165 MS (e)1806 1165 MS ( )1828 1165 MS (u)1858 1165 MS (n)1884 1165 MS ( )1908 1165 MS (c)1938 1165 MS (o)1960 1165 MS (n)1986 1165 MS (t)2010 1165 MS
+(a)2025 1165 MS (i)2048 1165 MS (n)2061 1165 MS (e)2085 1165 MS (r)2107 1165 MS ( )2125 1165 MS
+(s)235 1222 MS (\351)254 1222 MS (q)276 1222 MS (u)301 1222 MS (e)326 1222 MS (n)349 1222 MS (t)373 1222 MS (i)389 1222 MS (e)401 1222 MS (l)424 1222 MS (.)436 1222 MS ( )449 1222 MS (U)464 1222 MS (n)501 1222 MS ( )525 1222 MS (c)541 1222 MS
+(l)564 1222 MS (i)577 1222 MS (e)590 1222 MS (n)613 1222 MS (t)637 1222 MS ( )652 1222 MS (q)667 1222 MS (u)692 1222 MS (i)718 1222 MS ( )731 1222 MS (a)746 1222 MS (c)768 1222 MS (t)790 1222 MS (i)806 1222 MS (v)819 1222 MS (e)843 1222 MS
+( )865 1222 MS (u)880 1222 MS (n)906 1222 MS ( )930 1222 MS (s)946 1222 MS (e)965 1222 MS (r)987 1222 MS (v)1004 1222 MS (i)1029 1222 MS (c)1042 1222 MS (e)1065 1222 MS ( )1087 1222 MS (d)1102 1222 MS (\222)1127 1222 MS (u)1143 1222 MS (n)1169 1222 MS
+( )1194 1222 MS (c)1209 1222 MS (o)1231 1222 MS (n)1257 1222 MS (t)1281 1222 MS (a)1296 1222 MS (i)1319 1222 MS (n)1332 1222 MS (e)1356 1222 MS (r)1378 1222 MS ( )1395 1222 MS (p)1410 1222 MS (a)1435 1222 MS (r)1457 1222 MS (a)1474 1222 MS (l)1497 1222 MS
+(l)1511 1222 MS (\350)1524 1222 MS (l)1547 1222 MS (e)1560 1222 MS (,)1582 1222 MS ( )1595 1222 MS (a)1610 1222 MS (c)1632 1222 MS (t)1654 1222 MS (i)1670 1222 MS (v)1683 1222 MS (e)1707 1222 MS ( )1729 1222 MS (e)1744 1222 MS (n)1767 1222 MS ( )1791 1222 MS
+(f)1807 1222 MS (a)1823 1222 MS (i)1846 1222 MS (t)1858 1222 MS ( )1873 1222 MS (u)1888 1222 MS (n)1914 1222 MS (i)1939 1222 MS (q)1952 1222 MS (u)1977 1222 MS (e)2002 1222 MS (m)2025 1222 MS (e)2063 1222 MS (n)2086 1222 MS (t)2110 1222 MS ( )2125 1222 MS
+(l)235 1280 MS (e)248 1280 MS ( )270 1280 MS (s)285 1280 MS (e)304 1280 MS (r)326 1280 MS (v)344 1280 MS (i)369 1280 MS (c)382 1280 MS (e)404 1280 MS ( )426 1280 MS (c)440 1280 MS (o)462 1280 MS (r)488 1280 MS (r)505 1280 MS (e)522 1280 MS
+(s)544 1280 MS (p)563 1280 MS (o)588 1280 MS (n)614 1280 MS (d)638 1280 MS (a)663 1280 MS (n)685 1280 MS (t)709 1280 MS ( )724 1280 MS (a)738 1280 MS (u)760 1280 MS ( )785 1280 MS (p)799 1280 MS (r)824 1280 MS (o)841 1280 MS (c)867 1280 MS
+(e)889 1280 MS (s)911 1280 MS (s)930 1280 MS (u)949 1280 MS (s)974 1280 MS ( )993 1280 MS (0)1007 1280 MS (.)1032 1280 MS ( )1045 1280 MS (C)1059 1280 MS (\222)1093 1280 MS (e)1109 1280 MS (s)1132 1280 MS (t)1151 1280 MS ( )1166 1280 MS (l)1181 1280 MS
+(e)1193 1280 MS ( )1215 1280 MS (s)1229 1280 MS (e)1249 1280 MS (r)1271 1280 MS (v)1288 1280 MS (i)1313 1280 MS (c)1326 1280 MS (e)1348 1280 MS ( )1370 1280 MS (a)1384 1280 MS (c)1407 1280 MS (t)1429 1280 MS (i)1444 1280 MS (v)1457 1280 MS (\351)1482 1280 MS
+( )1504 1280 MS (d)1518 1280 MS (u)1543 1280 MS ( )1568 1280 MS (p)1582 1280 MS (r)1607 1280 MS (o)1624 1280 MS (c)1650 1280 MS (e)1672 1280 MS (s)1694 1280 MS (s)1713 1280 MS (u)1732 1280 MS (s)1757 1280 MS ( )1777 1280 MS (0)1791 1280 MS (,)1816 1280 MS
+( )1829 1280 MS (q)1843 1280 MS (u)1868 1280 MS (i)1894 1280 MS ( )1906 1280 MS (v)1921 1280 MS (a)1945 1280 MS ( )1968 1280 MS (e)1982 1280 MS (n)2005 1280 MS (s)2029 1280 MS (u)2048 1280 MS (i)2074 1280 MS (t)2086 1280 MS (e)2102 1280 MS ( )2125 1280 MS
+(a)235 1337 MS (c)257 1337 MS (t)279 1337 MS (i)294 1337 MS (v)307 1337 MS (e)331 1337 MS (r)353 1337 MS ( )370 1337 MS (l)384 1337 MS (e)397 1337 MS (s)420 1337 MS ( )439 1337 MS (s)452 1337 MS (e)471 1337 MS (r)493 1337 MS (v)511 1337 MS
+(i)536 1337 MS (c)549 1337 MS (e)571 1337 MS (s)594 1337 MS ( )613 1337 MS (c)626 1337 MS (o)648 1337 MS (r)674 1337 MS (r)691 1337 MS (e)708 1337 MS (s)730 1337 MS (p)749 1337 MS (o)774 1337 MS (n)800 1337 MS (d)824 1337 MS (a)849 1337 MS
+(n)871 1337 MS (t)895 1337 MS (s)910 1337 MS ( )929 1337 MS (d)942 1337 MS (e)967 1337 MS (s)989 1337 MS ( )1008 1337 MS (a)1022 1337 MS (u)1044 1337 MS (t)1069 1337 MS (r)1084 1337 MS (e)1101 1337 MS (s)1123 1337 MS ( )1142 1337 MS (p)1155 1337 MS
+(r)1180 1337 MS (o)1197 1337 MS (c)1223 1337 MS (e)1244 1337 MS (s)1266 1337 MS (s)1285 1337 MS (u)1304 1337 MS (s)1330 1337 MS (.)1349 1337 MS ( )1362 1337 MS (I)1375 1337 MS (l)1393 1337 MS ( )1405 1337 MS (p)1418 1337 MS (o)1443 1337 MS (u)1469 1337 MS
+(r)1494 1337 MS (r)1511 1337 MS (a)1528 1337 MS ( )1550 1337 MS (l)1563 1337 MS (e)1576 1337 MS ( )1598 1337 MS (f)1612 1337 MS (a)1627 1337 MS (i)1650 1337 MS (r)1663 1337 MS (e)1680 1337 MS ( )1702 1337 MS (v)1716 1337 MS (i)1741 1337 MS (a)1754 1337 MS
+( )1777 1337 MS (l)1791 1337 MS (e)1804 1337 MS ( )1826 1337 MS (m)1840 1337 MS (\351)1878 1337 MS (c)1900 1337 MS (a)1922 1337 MS (n)1945 1337 MS (i)1970 1337 MS (s)1983 1337 MS (m)2003 1337 MS (e)2041 1337 MS ( )2064 1337 MS (d)2077 1337 MS (e)2102 1337 MS
+( )2125 1337 MS
+(C)235 1395 MS (O)268 1395 MS (R)304 1395 MS (B)337 1395 MS (A)371 1395 MS (,)406 1395 MS ( )419 1395 MS (p)436 1395 MS (u)461 1395 MS (i)487 1395 MS (s)500 1395 MS (q)520 1395 MS (u)545 1395 MS (\222)570 1395 MS (i)587 1395 MS (l)601 1395 MS
+( )614 1395 MS (p)631 1395 MS (o)656 1395 MS (s)682 1395 MS (s)701 1395 MS (\350)721 1395 MS (d)743 1395 MS (e)768 1395 MS ( )790 1395 MS (l)808 1395 MS (a)821 1395 MS ( )844 1395 MS (l)862 1395 MS (i)876 1395 MS (s)889 1395 MS (t)908 1395 MS
+(e)923 1395 MS ( )945 1395 MS (d)962 1395 MS (e)987 1395 MS (s)1009 1395 MS ( )1029 1395 MS (r)1046 1395 MS (\351)1063 1395 MS (f)1086 1395 MS (\351)1101 1395 MS (r)1123 1395 MS (e)1140 1395 MS (n)1163 1395 MS (c)1187 1395 MS (e)1210 1395 MS (s)1232 1395 MS
+( )1252 1395 MS (C)1269 1395 MS (O)1302 1395 MS (R)1338 1395 MS (B)1372 1395 MS (A)1406 1395 MS ( )1441 1395 MS (d)1458 1395 MS (e)1483 1395 MS (s)1506 1395 MS ( )1525 1395 MS (a)1543 1395 MS (u)1565 1395 MS (t)1590 1395 MS (r)1605 1395 MS (e)1622 1395 MS
+(s)1644 1395 MS ( )1663 1395 MS (p)1680 1395 MS (r)1705 1395 MS (o)1722 1395 MS (c)1748 1395 MS (e)1770 1395 MS (s)1792 1395 MS (s)1811 1395 MS (u)1830 1395 MS (s)1855 1395 MS (.)1874 1395 MS ( )1887 1395 MS (U)1904 1395 MS (n)1941 1395 MS ( )1965 1395 MS
+(s)1983 1395 MS (e)2002 1395 MS (r)2024 1395 MS (v)2041 1395 MS (i)2066 1395 MS (c)2079 1395 MS (e)2102 1395 MS ( )2125 1395 MS
+(q)235 1452 MS (u)260 1452 MS (e)285 1452 MS (l)308 1452 MS (c)320 1452 MS (o)342 1452 MS (n)368 1452 MS (q)392 1452 MS (u)417 1452 MS (e)442 1452 MS ( )464 1452 MS (d)477 1452 MS (u)502 1452 MS ( )527 1452 MS (p)540 1452 MS (r)565 1452 MS
+(o)582 1452 MS (c)608 1452 MS (e)630 1452 MS (s)652 1452 MS (s)671 1452 MS (u)690 1452 MS (s)715 1452 MS ( )734 1452 MS (0)747 1452 MS ( )772 1452 MS (d)785 1452 MS (e)810 1452 MS (v)832 1452 MS (i)857 1452 MS (e)870 1452 MS (n)893 1452 MS
+(t)917 1452 MS ( )932 1452 MS (a)945 1452 MS (i)968 1452 MS (n)981 1452 MS (s)1005 1452 MS (i)1025 1452 MS ( )1037 1452 MS (l)1051 1452 MS (e)1064 1452 MS ( )1086 1452 MS (c)1099 1452 MS (l)1122 1452 MS (i)1136 1452 MS (e)1149 1452 MS (n)1172 1452 MS
+(t)1196 1452 MS ( )1211 1452 MS (p)1224 1452 MS (o)1248 1452 MS (u)1274 1452 MS (r)1299 1452 MS ( )1315 1452 MS (l)1328 1452 MS (e)1340 1452 MS ( )1362 1452 MS (m)1376 1452 MS (\352)1414 1452 MS (m)1437 1452 MS (e)1475 1452 MS ( )1497 1452 MS (s)1510 1452 MS
+(e)1529 1452 MS (r)1551 1452 MS (v)1569 1452 MS (i)1594 1452 MS (c)1607 1452 MS (e)1629 1452 MS ( )1651 1452 MS (d)1664 1452 MS (e)1689 1452 MS (s)1711 1452 MS ( )1730 1452 MS (a)1743 1452 MS (u)1765 1452 MS (t)1790 1452 MS (r)1805 1452 MS (e)1822 1452 MS
+(s)1844 1452 MS ( )1863 1452 MS (p)1876 1452 MS (r)1901 1452 MS (o)1917 1452 MS (c)1943 1452 MS (e)1965 1452 MS (s)1987 1452 MS (s)2006 1452 MS (u)2025 1452 MS (s)2050 1452 MS (.)2069 1452 MS
+( )2082 1452 MS
+( )348 1510 MS
+(A)348 1567 MS (i)384 1567 MS (n)397 1567 MS (s)422 1567 MS (i)442 1567 MS (,)455 1567 MS ( )468 1567 MS (l)484 1567 MS (o)496 1567 MS (r)522 1567 MS (s)539 1567 MS (q)558 1567 MS (u)583 1567 MS (e)608 1567 MS ( )630 1567 MS (l)646 1567 MS
+(e)658 1567 MS ( )680 1567 MS (c)695 1567 MS (o)717 1567 MS (n)743 1567 MS (t)767 1567 MS (a)782 1567 MS (i)805 1567 MS (n)818 1567 MS (e)842 1567 MS (r)864 1567 MS ( )881 1567 MS (p)896 1567 MS (a)921 1567 MS (r)943 1567 MS (a)960 1567 MS
+(l)983 1567 MS (l)996 1567 MS (\350)1009 1567 MS (l)1032 1567 MS (e)1045 1567 MS ( )1067 1567 MS (e)1082 1567 MS (s)1105 1567 MS (t)1124 1567 MS ( )1139 1567 MS (a)1154 1567 MS (c)1176 1567 MS (t)1198 1567 MS (i)1213 1567 MS (v)1225 1567 MS (\351)1250 1567 MS
+( )1272 1567 MS (p)1287 1567 MS (o)1312 1567 MS (u)1338 1567 MS (r)1362 1567 MS ( )1379 1567 MS (i)1394 1567 MS (n)1407 1567 MS (s)1432 1567 MS (t)1451 1567 MS (a)1466 1567 MS (n)1488 1567 MS (c)1512 1567 MS (i)1535 1567 MS (e)1548 1567 MS (r)1570 1567 MS
+( )1587 1567 MS (u)1602 1567 MS (n)1627 1567 MS ( )1651 1567 MS (c)1666 1567 MS (o)1688 1567 MS (m)1715 1567 MS (p)1752 1567 MS (o)1777 1567 MS
+(s)1803 1567 MS (a)1822 1567 MS (n)1845 1567 MS (t)1869 1567 MS ( )1884 1567 MS (p)1899 1567 MS (a)1924 1567 MS (r)1946 1567 MS (a)1963 1567 MS (l)1985 1567 MS (l)1998 1567 MS (\350)2011 1567 MS (l)2034 1567 MS (e)2047 1567 MS (,)2069 1567 MS ( )2082 1567 MS
+(i)2098 1567 MS (l)2112 1567 MS ( )2125 1567 MS
+(v)235 1625 MS (a)259 1625 MS ( )281 1625 MS (d)294 1625 MS (\222)319 1625 MS (a)336 1625 MS (b)359 1625 MS (o)383 1625 MS (r)409 1625 MS (d)426 1625 MS ( )451 1625 MS (d)464 1625 MS (e)489 1625 MS (m)511 1625 MS (a)548 1625 MS (n)571 1625 MS
+(d)595 1625 MS (e)620 1625 MS (r)642 1625 MS ( )659 1625 MS (a)672 1625 MS (u)694 1625 MS (x)719 1625 MS ( )743 1625 MS (a)756 1625 MS (u)778 1625 MS (t)803 1625 MS (r)818 1625 MS (e)835 1625 MS (s)857 1625 MS ( )876 1625 MS (p)889 1625 MS
+(r)914 1625 MS (o)931 1625 MS (c)957 1625 MS (e)979 1625 MS (s)1001 1625 MS (s)1020 1625 MS (u)1039 1625 MS (s)1064 1625 MS ( )1083 1625 MS (d)1096 1625 MS (\222)1121 1625 MS (i)1138 1625 MS (n)1151 1625 MS (s)1176 1625 MS (t)1195 1625 MS (a)1210 1625 MS
+(n)1232 1625 MS (c)1257 1625 MS (i)1280 1625 MS (e)1292 1625 MS (r)1314 1625 MS ( )1331 1625 MS (l)1345 1625 MS (e)1358 1625 MS ( )1380 1625 MS (c)1393 1625 MS (o)1415 1625 MS (m)1441 1625 MS (p)1478 1625 MS (o)1503 1625 MS (s)1529 1625 MS (a)1548 1625 MS
+(n)1571 1625 MS (t)1595 1625 MS (,)1610 1625 MS ( )1623 1625 MS (p)1636 1625 MS (u)1661 1625 MS (i)1686 1625 MS (s)1698 1625 MS ( )1717 1625 MS (i)1731 1625 MS (n)1744 1625 MS (s)1769 1625 MS (t)1788 1625 MS (a)1803 1625 MS (n)1825 1625 MS (c)1849 1625 MS
+(i)1872 1625 MS (e)1885 1625 MS (r)1907 1625 MS ( )1924 1625 MS (l)1938 1625 MS (u)1950 1625 MS (i)1976 1625 MS ( )1989 1625 MS (m)2003 1625 MS (\352)2041 1625 MS (m)2064 1625 MS (e)2102 1625 MS ( )2125 1625 MS
+(c)235 1682 MS (e)257 1682 MS ( )279 1682 MS (c)299 1682 MS (o)321 1682 MS (m)348 1682 MS (p)385 1682 MS (o)410 1682 MS (s)436 1682 MS (a)455 1682 MS (n)477 1682 MS (t)501 1682 MS (.)516 1682 MS ( )529 1682 MS (A)549 1682 MS (i)585 1682 MS
+(n)598 1682 MS (s)623 1682 MS (i)644 1682 MS ( )657 1682 MS (u)677 1682 MS (n)703 1682 MS (e)727 1682 MS ( )749 1682 MS (c)770 1682 MS (o)792 1682 MS (l)818 1682 MS (l)831 1682 MS (e)844 1682 MS (c)867 1682 MS (t)889 1682 MS (i)905 1682 MS
+(o)917 1682 MS (n)943 1682 MS ( )967 1682 MS (d)987 1682 MS (e)1012 1682 MS ( )1034 1682 MS (c)1055 1682 MS (o)1077 1682 MS (m)1103 1682 MS (p)1140 1682 MS (o)1165 1682 MS (s)1191 1682 MS (a)1210 1682 MS (n)1233 1682 MS (t)1258 1682 MS (s)1273 1682 MS
+( )1292 1682 MS (i)1313 1682 MS (d)1325 1682 MS (e)1350 1682 MS (n)1373 1682 MS (t)1397 1682 MS (i)1413 1682 MS (q)1425 1682 MS (u)1450 1682 MS (e)1475 1682 MS (s)1497 1682 MS (,)1516 1682 MS ( )1529 1682 MS (i)1550 1682 MS (d)1563 1682 MS (e)1588 1682 MS
+(n)1611 1682 MS (t)1635 1682 MS (i)1651 1682 MS (f)1664 1682 MS (i)1680 1682 MS (\351)1693 1682 MS (s)1716 1682 MS ( )1735 1682 MS (p)1755 1682 MS (a)1781 1682 MS (r)1803 1682 MS ( )1820 1682 MS (l)1841 1682 MS (e)1854 1682 MS (u)1876 1682 MS (r)1901 1682 MS
+( )1918 1682 MS (r)1938 1682 MS (\351)1955 1682 MS (f)1978 1682 MS (\351)1993 1682 MS (r)2015 1682 MS (e)2032 1682 MS (n)2055 1682 MS (c)2079 1682 MS (e)2102 1682 MS ( )2125 1682 MS
+(C)235 1740 MS (O)268 1740 MS (R)304 1740 MS (B)337 1740 MS (A)371 1740 MS (,)406 1740 MS ( )419 1740 MS (e)445 1740 MS (s)467 1740 MS (t)486 1740 MS ( )501 1740 MS (c)527 1740 MS (h)550 1740 MS (a)574 1740 MS (r)596 1740 MS (g)613 1740 MS
+(\351)638 1740 MS (e)660 1740 MS ( )682 1740 MS (e)708 1740 MS (n)731 1740 MS ( )755 1740 MS (m)782 1740 MS (\351)820 1740 MS (m)843 1740 MS (o)880 1740 MS (i)907 1740 MS (r)919 1740 MS (e)937 1740 MS ( )959 1740 MS (s)985 1740 MS (u)1004 1740 MS
+(r)1029 1740 MS ( )1046 1740 MS (l)1073 1740 MS (\222)1086 1740 MS (e)1103 1740 MS (n)1126 1740 MS (s)1150 1740 MS (e)1169 1740 MS (m)1192 1740 MS (b)1230 1740 MS (l)1256 1740 MS (e)1269 1740 MS ( )1291 1740 MS (d)1317 1740 MS (e)1342 1740 MS (s)1365 1740 MS
+( )1384 1740 MS (p)1410 1740 MS (r)1435 1740 MS (o)1452 1740 MS (c)1478 1740 MS
+(e)1500 1740 MS (s)1522 1740 MS (s)1541 1740 MS (u)1560 1740 MS (s)1585 1740 MS ( )1604 1740 MS (c)1630 1740 MS (o)1652 1740 MS (n)1678 1740 MS (s)1703 1740 MS (t)1722 1740 MS (i)1738 1740 MS (t)1750 1740 MS (u)1765 1740 MS (a)1790 1740 MS (n)1812 1740 MS
+(t)1836 1740 MS ( )1851 1740 MS (l)1877 1740 MS (e)1890 1740 MS ( )1912 1740 MS (c)1938 1740 MS (o)1960 1740 MS (n)1986 1740 MS (t)2010 1740 MS (a)2025 1740 MS (i)2048 1740 MS (n)2061 1740 MS (e)2085 1740 MS (r)2107 1740 MS ( )2125 1740 MS
+(p)235 1797 MS (a)260 1797 MS (r)282 1797 MS (a)299 1797 MS (l)322 1797 MS (l)335 1797 MS (\350)348 1797 MS (l)371 1797 MS (e)384 1797 MS (.)406 1797 MS ( )419 1797 MS (C)433 1797 MS (e)466 1797 MS (s)489 1797 MS ( )508 1797 MS (r)522 1797 MS
+(\351)539 1797 MS (f)562 1797 MS (\351)578 1797 MS (r)600 1797 MS (e)617 1797 MS (n)639 1797 MS (c)664 1797 MS (e)686 1797 MS (s)708 1797 MS ( )727 1797 MS (C)742 1797 MS (O)775 1797 MS (R)811 1797 MS (B)844 1797 MS (A)878 1797 MS ( )914 1797 MS
+(s)928 1797 MS (o)947 1797 MS (n)973 1797 MS (t)997 1797 MS ( )1012 1797 MS (\351)1026 1797 MS (c)1048 1797 MS (h)1071 1797 MS (a)1095 1797 MS (n)1118 1797 MS (g)1142 1797 MS (\351)1167 1797 MS (e)1189 1797 MS (s)1212 1797 MS ( )1231 1797 MS (e)1246 1797 MS
+(n)1268 1797 MS (t)1292 1797 MS (r)1307 1797 MS (e)1324 1797 MS ( )1346 1797 MS (p)1360 1797 MS (r)1385 1797 MS (o)1402 1797 MS (c)1428 1797 MS (e)1450 1797 MS (s)1472 1797 MS (s)1491 1797 MS (u)1510 1797 MS (s)1535 1797 MS (,)1554 1797 MS ( )1567 1797 MS
+(v)1581 1797 MS (i)1606 1797 MS (a)1619 1797 MS ( )1641 1797 MS (M)1656 1797 MS (P)1700 1797 MS (I)1728 1797 MS (,)1745 1797 MS ( )1758 1797 MS (p)1772 1797 MS (o)1797 1797 MS (u)1823 1797 MS (r)1847 1797 MS ( )1864 1797 MS (c)1878 1797 MS (o)1900 1797 MS
+(n)1926 1797 MS (s)1950 1797 MS (t)1969 1797 MS (i)1984 1797 MS (t)1996 1797 MS (u)2011 1797 MS (e)2036 1797 MS (r)2058 1797 MS ( )2075 1797 MS (l)2090 1797 MS (a)2102 1797 MS ( )2125 1797 MS
+(l)235 1855 MS (i)249 1855 MS (s)262 1855 MS (t)281 1855 MS (e)296 1855 MS ( )318 1855 MS (\253)347 1855 MS
+( )371 1855 MS
+(I)384 1855 MS (O)401 1855 MS (R)437 1855 MS (T)470 1855 MS (a)501 1855 MS (b)524 1855 MS
+( )548 1855 MS
+(\273)561 1855 MS ( )585 1855 MS (c)614 1855 MS (o)636 1855 MS (r)662 1855 MS (r)679 1855 MS (e)696 1855 MS (s)718 1855 MS (p)737 1855 MS (o)762 1855 MS (n)788 1855 MS (d)812 1855 MS (a)837 1855 MS (n)859 1855 MS (t)883 1855 MS ( )898 1855 MS
+(a)927 1855 MS (u)949 1855 MS ( )974 1855 MS (c)1003 1855 MS (o)1025 1855 MS (m)1051 1855 MS (p)1088 1855 MS (o)1113 1855 MS (s)1139 1855 MS (a)1158 1855 MS (n)1181 1855 MS (t)1205 1855 MS ( )1220 1855 MS (p)1249 1855 MS (a)1274 1855 MS (r)1296 1855 MS
+(a)1313 1855 MS (l)1336 1855 MS (l)1349 1855 MS (\350)1362 1855 MS (l)1385 1855 MS (e)1398 1855 MS ( )1420 1855 MS (a)1449 1855 MS (i)1472 1855 MS (n)1485 1855 MS (s)1510 1855 MS (i)1530 1855 MS ( )1543 1855 MS (f)1573 1855 MS (o)1588 1855 MS (r)1614 1855 MS
+(m)1632 1855 MS (\351)1670 1855 MS (.)1692 1855 MS ( )1705 1855 MS (S)1734 1855 MS (e)1762 1855 MS (u)1784 1855 MS (l)1810 1855 MS (e)1822 1855 MS ( )1844 1855 MS (l)1874 1855 MS (a)1887 1855 MS ( )1909 1855 MS (r)1938 1855 MS (\351)1955 1855 MS (f)1978 1855 MS
+(\351)1994 1855 MS (r)2016 1855 MS (e)2033 1855 MS (n)2056 1855 MS (c)2080 1855 MS (e)2102 1855 MS ( )2125 1855 MS
+(C)235 1912 MS (O)268 1912 MS (R)304 1912 MS (B)337 1912 MS (A)371 1912 MS ( )407 1912 MS (d)425 1912 MS (u)450 1912 MS ( )475 1912 MS (c)493 1912 MS (o)515 1912 MS (m)542 1912 MS (p)579 1912 MS (o)604 1912 MS (s)630 1912 MS (a)649 1912 MS
+(n)672 1912 MS (t)696 1912 MS ( )711 1912 MS (c)729 1912 MS (h)751 1912 MS (a)775 1912 MS (r)797 1912 MS (g)814 1912 MS (\351)839 1912 MS ( )862 1912 MS (s)880 1912 MS (u)899 1912 MS (r)924 1912 MS ( )941 1912 MS (l)960 1912 MS (e)973 1912 MS
+( )995 1912 MS (p)1013 1912 MS (r)1038 1912 MS (o)1055 1912 MS (c)1081 1912 MS (e)1103 1912 MS (s)1125 1912 MS (s)1144 1912 MS (u)1163 1912 MS (s)1189 1912 MS ( )1208 1912 MS (0)1226 1912 MS ( )1252 1912 MS (e)1270 1912 MS (s)1292 1912 MS
+(t)1311 1912 MS ( )1326 1912 MS (e)1344 1912 MS (n)1366 1912 MS (r)1390 1912 MS (e)1407 1912 MS (g)1429 1912 MS (i)1455 1912 MS (s)1468 1912 MS (t)1487 1912 MS (r)1502 1912 MS (\351)1519 1912 MS (e)1541 1912 MS ( )1563 1912 MS (a)1581 1912 MS (u)1603 1912 MS
+( )1628 1912 MS (s)1647 1912 MS (e)1666 1912 MS (r)1688 1912 MS (v)1706 1912 MS (i)1731 1912 MS (c)1744 1912 MS (e)1766 1912 MS ( )1788 1912 MS (d)1806 1912 MS (e)1832 1912 MS ( )1854 1912 MS (n)1873 1912 MS (o)1897 1912 MS (m)1924 1912 MS (m)1962 1912 MS
+(a)2000 1912 MS (g)2022 1912 MS (e)2047 1912 MS ( )2069 1912 MS (e)2088 1912 MS (t)2110 1912 MS ( )2125 1912 MS
+(r)235 1970 MS (e)252 1970 MS (n)274 1970 MS (v)299 1970 MS (o)323 1970 MS (y)350 1970 MS (\351)373 1970 MS (e)395 1970 MS ( )417 1970 MS (a)430 1970 MS (u)452 1970 MS ( )477 1970 MS (c)490 1970 MS (l)513 1970 MS (i)526 1970 MS (e)539 1970 MS
+(n)562 1970 MS (t)586 1970 MS (.)601 1970 MS
+( )614 1970 MS
+( )348 2027 MS
+(I)348 2085 MS (l)366 2085 MS ( )378 2085 MS (e)396 2085 MS (n)419 2085 MS ( )444 2085 MS (v)463 2085 MS (a)487 2085 MS ( )509 2085 MS (d)527 2085 MS (e)552 2085 MS ( )575 2085 MS (m)594 2085 MS (\352)632 2085 MS (m)655 2085 MS (e)693 2085 MS
+( )716 2085 MS (p)734 2085 MS (o)759 2085 MS (u)785 2085 MS (r)810 2085 MS ( )827 2085 MS (d)845 2085 MS (\351)870 2085 MS (t)892 2085 MS (r)906 2085 MS (u)923 2085 MS (i)948 2085 MS (r)960 2085 MS (e)977 2085 MS ( )1000 2085 MS (u)1018 2085 MS
+(n)1043 2085 MS ( )1068 2085 MS (c)1086 2085 MS (o)1108 2085 MS (m)1135 2085 MS (p)1172 2085 MS (o)1197 2085 MS (s)1223 2085 MS (a)1242 2085 MS (n)1265 2085 MS (t)1289 2085 MS ( )1304 2085 MS (p)1322 2085 MS (a)1347 2085 MS (r)1369 2085 MS (a)1386 2085 MS
+(l)1409 2085 MS (l)1422 2085 MS (\350)1435 2085 MS (l)1458 2085 MS (e)1471 2085 MS (.)1493 2085 MS ( )1506 2085 MS (L)1524 2085 MS (e)1555 2085 MS ( )1577 2085 MS (c)1595 2085 MS (l)1618 2085 MS (i)1632 2085 MS (e)1645 2085 MS (n)1668 2085 MS (t)1692 2085 MS
+( )1707 2085 MS (a)1725 2085 MS (c)1747 2085 MS (t)1769 2085 MS (i)1785 2085 MS (v)1798 2085 MS (e)1822 2085 MS ( )1844 2085 MS (l)1863 2085 MS (e)1876 2085 MS ( )1899 2085 MS (s)1917 2085 MS (e)1936 2085 MS (r)1958 2085 MS (v)1976 2085 MS (i)2001 2085 MS
+(c)2014 2085 MS (e)2036 2085 MS ( )2059 2085 MS (d)2077 2085 MS (e)2102 2085 MS ( )2125 2085 MS
+(d)235 2142 MS (e)260 2142 MS (s)282 2142 MS (t)301 2142 MS (r)316 2142 MS (u)333 2142 MS (c)358 2142 MS (t)379 2142 MS (i)394 2142 MS (o)406 2142 MS (n)432 2142 MS ( )456 2142 MS (d)474 2142 MS (\222)500 2142 MS (u)516 2142 MS (n)542 2142 MS
+( )566 2142 MS (c)584 2142 MS (o)606 2142 MS (m)633 2142 MS (p)670 2142 MS (o)695 2142 MS (s)721 2142 MS (a)740 2142 MS (n)762 2142 MS (t)786 2142 MS ( )801 2142 MS (d)819 2142 MS (u)844 2142 MS ( )869 2142 MS (c)887 2142 MS (o)909 2142 MS
+(n)935 2142 MS (t)959 2142 MS (a)974 2142 MS (i)996 2142 MS (n)1009 2142 MS (e)1034 2142 MS (r)1056 2142 MS ( )1073 2142 MS (s)1091 2142 MS (i)1111 2142 MS (t)1123 2142 MS (u)1138 2142 MS (\351)1163 2142 MS ( )1185 2142 MS (s)1203 2142 MS (u)1222 2142 MS
+(r)1248 2142 MS ( )1265 2142 MS (l)1283 2142 MS (e)1296 2142 MS ( )1318 2142 MS (p)1336 2142 MS (r)1361 2142 MS (o)1378 2142 MS (c)1404 2142 MS (e)1426 2142 MS (s)1448 2142 MS (s)1467 2142 MS (u)1486 2142 MS (s)1511 2142 MS ( )1530 2142 MS (0)1548 2142 MS
+(.)1573 2142 MS ( )1586 2142 MS (C)1604 2142 MS (e)1637 2142 MS ( )1659 2142 MS (s)1677 2142 MS (e)1697 2142 MS (r)1719 2142 MS (v)1736 2142 MS (i)1761 2142 MS (c)1774 2142 MS (e)1796 2142 MS ( )1818 2142 MS (d)1836 2142 MS (e)1862 2142 MS ( )1884 2142 MS
+(d)1902 2142 MS (e)1927 2142 MS (s)1949 2142 MS (t)1968 2142 MS (r)1983 2142 MS (u)2000 2142 MS (c)2025 2142 MS (t)2047 2142 MS (i)2062 2142 MS (o)2074 2142 MS (n)2100 2142 MS ( )2125 2142 MS
+(a)235 2200 MS (c)257 2200 MS (t)279 2200 MS (i)294 2200 MS (v)307 2200 MS (e)331 2200 MS ( )353 2200 MS (a)368 2200 MS (l)391 2200 MS (o)403 2200 MS (r)429 2200 MS (s)446 2200 MS ( )465 2200 MS (l)481 2200 MS (e)494 2200 MS ( )516 2200 MS
+(m)532 2200 MS (\352)569 2200 MS
+(m)592 2200 MS (e)630 2200 MS ( )652 2200 MS (s)667 2200 MS (e)686 2200 MS (r)708 2200 MS (v)726 2200 MS (i)751 2200 MS (c)764 2200 MS (e)786 2200 MS ( )808 2200 MS (s)823 2200 MS (u)842 2200 MS (r)867 2200 MS ( )884 2200 MS (l)900 2200 MS
+(e)913 2200 MS (s)935 2200 MS ( )954 2200 MS (a)969 2200 MS (u)991 2200 MS (t)1016 2200 MS (r)1031 2200 MS (e)1048 2200 MS (s)1070 2200 MS ( )1089 2200 MS (p)1104 2200 MS (r)1129 2200 MS (o)1145 2200 MS (c)1171 2200 MS (e)1193 2200 MS (s)1215 2200 MS
+(s)1234 2200 MS (u)1253 2200 MS (s)1278 2200 MS (,)1297 2200 MS ( )1310 2200 MS (p)1325 2200 MS (u)1350 2200 MS (i)1375 2200 MS (s)1388 2200 MS (q)1407 2200 MS (u)1432 2200 MS (\222)1457 2200 MS (i)1474 2200 MS (l)1488 2200 MS ( )1501 2200 MS (p)1516 2200 MS
+(o)1541 2200 MS (s)1567 2200 MS (s)1586 2200 MS (\350)1605 2200 MS (d)1627 2200 MS (e)1652 2200 MS ( )1674 2200 MS (l)1690 2200 MS (a)1703 2200 MS ( )1725 2200 MS (l)1741 2200 MS (i)1754 2200 MS (s)1767 2200 MS (t)1786 2200 MS (e)1801 2200 MS ( )1823 2200 MS
+(d)1838 2200 MS (e)1863 2200 MS (s)1885 2200 MS ( )1904 2200 MS (r)1919 2200 MS (\351)1936 2200 MS (f)1959 2200 MS (\351)1974 2200 MS (r)1996 2200 MS (e)2013 2200 MS (n)2036 2200 MS (c)2060 2200 MS (e)2082 2200 MS (s)2105 2200 MS ( )2125 2200 MS
+(d)235 2257 MS (e)260 2257 MS ( )282 2257 MS (c)295 2257 MS (e)317 2257 MS (s)339 2257 MS ( )358 2257 MS (o)371 2257 MS (b)397 2257 MS (j)422 2257 MS (e)434 2257 MS (t)456 2257 MS (s)471 2257 MS ( )490 2257 MS (C)503 2257 MS (O)536 2257 MS
+(R)572 2257 MS (B)605 2257 MS (A)639 2257 MS (.)674 2257 MS
+( )687 2257 MS
+showpage
+%%Page: 14 14
+14.449 827.879 translate 72 300 div dup neg scale
+0 0 transform .25 add round .25 sub exch .25 add round .25 sub exch itransform translate
+1 j
+1 setlinecap
+72 sl
+0.375 g
+n
+494 182 M
+494 155 472 133 445 133 c
+418 133 396 155 396 182 c
+396 209 418 231 445 231 c
+472 231 494 209 494 182 c
+cp
+CM 0.156 0.152 scale
+s
+SM
+71 sl
+n
+660 182 M
+660 155 638 133 611 133 c
+584 133 562 155 562 182 c
+562 209 584 231 611 231 c
+638 231 660 209 660 182 c
+cp
+CM 0.156 0.152 scale
+s
+SM
+n
+120 24 468 152 B
+1 g
+f
+1 sl
+n
+122 26 467 151 B
+cp
+s
+71 sl
+0.375 g
+n
+577 180 M
+577 153 555 131 528 131 c
+501 131 479 153 479 180 c
+479 206 501 228 528 228 c
+555 228 577 206 577 180 c
+cp
+gs
+1 g
+e
+gr
+CM 0.156 0.152 scale
+s
+SM
+n
+480 180 M
+575 180 L
+CM 0.156 0.152 scale
+s
+SM
+n
+34 18 562 187 B
+1 g
+f
+1 sl
+n
+36 20 561 186 B
+cp
+s
+n
+610 173 M
+591 173 L
+554 124 L
+579 126 L
+609 173 L
+610 173 L
+cp
+gs
+e
+gr
+s
+n
+448 170 M
+468 170 L
+504 122 L
+479 123 L
+449 170 L
+448 170 L
+cp
+gs
+e
+gr
+s
+0.375 g
+n
+473 140 M
+473 137 470 135 467 135 c
+464 135 462 137 462 140 c
+462 142 464 145 467 145 c
+470 145 473 142 473 140 c
+cp
+gs
+e
+gr
+s
+n
+593 139 M
+593 136 590 134 588 134 c
+585 134 583 136 583 139 c
+583 141 585 144 588 144 c
+590 144 593 141 593 139 c
+cp
+gs
+e
+gr
+s
+72 sl
+n
+665 137 M
+665 229 L
+CM 0.156 0.152 scale
+s
+SM
+[29 0 0 -29 0 0]/Times-Roman MF
+0 g
+( )676 243 MS
+[50 0 0 -50 0 0]/Times-Roman MF
+(D)400 289 MS (E)436 289 MS (N)467 289 MS ( )503 289 MS ( )516 289 MS (S)529 289 MS (a)557 289 MS (c)579 289 MS (l)601 289 MS (a)613 289 MS (y)636 289 MS
+( )660 289 MS
+( )1297 140 MS
+[38 0 0 -38 0 0]/Times-Roman MF
+(S)1785 129 MS (F)1806 129 MS (M)1827 129 MS (E)1861 129 MS (/)1883 129 MS (L)1894 129 MS (G)1916 129 MS (L)1943 129 MS (S)1965 129 MS (/)1986 129 MS (R)1997 129 MS (T)2022 129 MS (/)2045 129 MS (0)2056 129 MS (2)2075 129 MS
+(-)2094 129 MS
+(0)2106 129 MS (0)2125 129 MS (2)2144 129 MS
+( )2163 129 MS
+(D)1785 173 MS (a)1812 173 MS (t)1829 173 MS (e)1840 173 MS
+( )1856 173 MS
+(:)1866 173 MS
+( )1875 173 MS
+(3)1885 173 MS (0)1904 173 MS (/)1923 173 MS (0)1934 173 MS (5)1952 173 MS (/)1971 173 MS (2)1982 173 MS (0)2000 173 MS (0)2019 173 MS (2)2038 173 MS
+( )2057 173 MS
+n
+5 5 232 89 B
+f
+n
+5 5 232 89 B
+f
+n
+584 5 238 89 B
+f
+n
+5 5 823 89 B
+f
+n
+938 5 829 89 B
+f
+n
+5 5 1768 89 B
+f
+n
+436 5 1774 89 B
+f
+n
+5 5 2211 89 B
+f
+n
+5 5 2211 89 B
+f
+n
+5 256 232 95 B
+f
+n
+2 256 823 95 B
+f
+n
+2 256 1768 95 B
+f
+n
+5 256 2211 95 B
+f
+[50 0 0 -50 0 0]/Times-Roman MF
+(D)322 400 MS (M)358 400 MS (2)402 400 MS (S)427 400 MS (/)455 400 MS (S)469 400 MS (F)497 400 MS (M)524 400 MS (E)568 400 MS (/)599 400 MS (L)613 400 MS (G)643 400 MS (L)680 400 MS (S)710 400 MS
+( )738 400 MS
+[50 0 0 -50 0 0]/Times-Bold MF
+gs
+n
+241 53 1102 367 CB
+(R)1102 413 MS (A)1138 413 MS (P)1174 413 MS (P)1204 413 MS (O)1234 413 MS (R)1273 413 MS (T)1310 413 MS
+gr
+gs
+n
+150 53 1343 367 CB
+( )1343 413 MS (D)1356 413 MS (M)1392 413 MS (2)1440 413 MS (S)1465 413 MS
+gr
+[50 0 0 -50 0 0]/Times-Roman MF
+gs
+n
+24 52 1493 368 CB
+( )1493 413 MS
+gr
+[38 0 0 -38 0 0]/Times-Roman MF
+(P)1785 400 MS (a)1806 400 MS (g)1823 400 MS (e)1841 400 MS ( )1858 400 MS
+[50 0 0 -50 0 0]/Times-Roman MF
+(1)1868 400 MS (4)1893 400 MS
+(/)1918 400 MS
+(3)1932 400 MS (0)1957 400 MS
+[38 0 0 -38 0 0]/Times-Roman MF
+( )1982 400 MS
+n
+5 2 232 352 B
+f
+n
+2 2 823 352 B
+f
+n
+941 2 826 352 B
+f
+n
+2 2 1768 352 B
+f
+n
+5 2 2211 352 B
+f
+n
+5 67 232 355 B
+f
+n
+590 1 232 423 B
+f
+n
+2 67 823 355 B
+f
+n
+1 1 823 423 B
+f
+n
+942 1 825 423 B
+f
+n
+2 67 1768 355 B
+f
+n
+1 1 1768 423 B
+f
+n
+440 1 1770 423 B
+f
+n
+5 67 2211 355 B
+f
+n
+5 1 2211 423 B
+f
+[50 0 0 -50 0 0]/Times-Roman MF
+( )235 470 MS
+[33 0 0 -33 0 0]/Times-Roman MF
+/IsChar{exch/CharStrings get exch known}bd/MapCh{3 -1 roll/Encoding get 3 1\r
+roll put}bd/MapDegree{dup 16#b0 exch/degree IsChar{/degree}{/ring}ifelse MapCh}\r
+bd/MapBB{dup 16#a6 exch/brokenbar IsChar{/brokenbar}{/bar}ifelse MapCh}bd\r
+/reencode{findfont begin currentdict dup length dict begin{1 index/FID ne{def}\r
+{pop pop}ifelse}forall/FontName exch def dup length 0 ne{/Encoding Encoding 256\r
+array copy def 0 exch{dup type/nametype eq{Encoding 2 index 2 index put pop 1\r
+add}{exch pop}ifelse}forall}if pop currentdict dup end end/FontName get exch\r
+definefont dup MapDegree MapBB}bd/LATENC[0/grave/acute/circumflex/tilde/macron\r
+/breve/dotaccent/dieresis/ring/cedilla/hungarumlaut/ogonek/caron/dotlessi/fi/fl\r
+/Lslash/lslash/Zcaron/zcaron/minus/.notdef/.notdef/.notdef/.notdef/.notdef\r
+/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/space/exclam/quotedbl\r
+/numbersign/dollar/percent/ampersand/quotesingle/parenleft/parenright/asterisk\r
+/plus/comma/hyphen/period/slash/zero/one/two/three/four/five/six/seven/eight\r
+/nine/colon/semicolon/less/equal/greater/question/at/A/B/C/D/E/F/G/H/I/J/K/L/M\r
+/N/O/P/Q/R/S/T/U/V/W/X/Y/Z/bracketleft/backslash/bracketright/asciicircum\r
+/underscore/grave/a/b/c/d/e/f/g/h/i/j/k/l/m/n/o/p/q/r/s/t/u/v/w/x/y/z/braceleft\r
+/bar/braceright/asciitilde/.notdef/.notdef/.notdef/quotesinglbase/florin\r
+/quotedblbase/ellipsis/dagger/daggerdbl/circumflex/perthousand/Scaron\r
+/guilsinglleft/OE/.notdef/.notdef/.notdef/.notdef/quoteleft/quoteright\r
+/quotedblleft/quotedblright/bullet/endash/emdash/tilde/trademark/scaron\r
+/guilsinglright/oe/.notdef/.notdef/Ydieresis/.notdef/exclamdown/cent/sterling\r
+/currency/yen/brokenbar/section/dieresis/copyright/ordfeminine/guillemotleft\r
+/logicalnot/hyphen/registered/macron/degree/plusminus/twosuperior/threesuperior\r
+/acute/mu/paragraph/periodcentered/cedilla/onesuperior/ordmasculine\r
+/guillemotright/onequarter/onehalf/threequarters/questiondown/Agrave/Aacute\r
+/Acircumflex/Atilde/Adieresis/Aring/AE/Ccedilla/Egrave/Eacute/Ecircumflex\r
+/Edieresis/Igrave/Iacute/Icircumflex/Idieresis/Eth/Ntilde/Ograve/Oacute\r
+/Ocircumflex/Otilde/Odieresis/multiply/Oslash/Ugrave/Uacute/Ucircumflex\r
+/Udieresis/Yacute/Thorn/germandbls/agrave/aacute/acircumflex/atilde/adieresis\r
+/aring/ae/ccedilla/egrave/eacute/ecircumflex/edieresis/igrave/iacute\r
+/icircumflex/idieresis/eth/ntilde/ograve/oacute/ocircumflex/otilde/odieresis\r
+/divide/oslash/ugrave/uacute/ucircumflex/udieresis/yacute/thorn/ydieresis]def\r
+LATENC /_Times-Roman /Times-Roman reencode
+[33 0 0 -33 0 0]/_Times-Roman MF
+(L)242 3256 MS (e)262 3256 MS (s)277 3256 MS ( )289 3256 MS (i)298 3256 MS (n)307 3256 MS (f)324 3256 MS (o)335 3256 MS (r)351 3256 MS (m)363 3256 MS (a)388 3256 MS (t)403 3256 MS (i)412 3256 MS (o)422 3256 MS (n)439 3256 MS (s)456 3256 MS
+( )468 3256 MS (c)477 3256 MS (o)492 3256 MS (n)508 3256 MS (t)524 3256 MS (e)534 3256 MS (n)549 3256 MS (u)565 3256 MS (e)582 3256 MS (s)597 3256 MS ( )610 3256 MS (d)618 3256 MS (a)634 3256 MS (n)650 3256 MS (s)667 3256 MS ( )679 3256 MS
+(c)688 3256 MS (e)703 3256 MS ( )717 3256 MS (d)726 3256 MS (o)742 3256 MS (c)759 3256 MS (u)773 3256 MS (m)791 3256 MS (e)817 3256 MS (n)831 3256 MS (t)847 3256 MS ( )857 3256 MS (s)866 3256 MS (o)878 3256 MS (n)895 3256 MS (t)911 3256 MS
+( )921 3256 MS (r)929 3256 MS (\351)941 3256 MS (s)956 3256 MS (e)968 3256 MS (r)982 3256 MS (v)994 3256 MS (\351)1011 3256 MS (e)1026 3256 MS (s)1041 3256 MS ( )1053 3256 MS (a)1061 3256 MS (u)1076 3256 MS (x)1093 3256 MS ( )1109 3256 MS (d)1118 3256 MS
+(e)1135 3256 MS (s)1150 3256 MS (t)1162 3256 MS (i)1171 3256 MS (n)1181 3256 MS (a)1197 3256 MS (t)1212 3256 MS (a)1221 3256 MS (i)1236 3256 MS (r)1245 3256 MS (e)1257 3256 MS (s)1272 3256 MS ( )1284 3256 MS (n)1293 3256 MS (o)1309 3256 MS (m)1326 3256 MS
+(m)1352 3256 MS (\351)1378 3256 MS (m)1393 3256 MS (e)1419 3256 MS (n)1433 3256 MS (t)1450 3256 MS ( )1459 3256 MS (d)1468 3256 MS (\351)1484 3256 MS (s)1499 3256 MS (i)1512 3256 MS (g)1521 3256 MS
+(n)1538 3256 MS (\351)1555 3256 MS (s)1570 3256 MS ( )1582 3256 MS (e)1591 3256 MS (t)1605 3256 MS ( )1615 3256 MS (n)1623 3256 MS (e)1640 3256 MS ( )1654 3256 MS (p)1663 3256 MS (e)1680 3256 MS (u)1694 3256 MS (v)1711 3256 MS (e)1728 3256 MS (n)1743 3256 MS
+(t)1759 3256 MS ( )1768 3256 MS (r)1776 3256 MS (e)1788 3256 MS (c)1803 3256 MS (e)1818 3256 MS (v)1832 3256 MS (o)1849 3256 MS (i)1865 3256 MS (r)1874 3256 MS ( )1886 3256 MS (a)1894 3256 MS (u)1909 3256 MS (c)1926 3256 MS (u)1940 3256 MS (n)1957 3256 MS
+(e)1974 3256 MS ( )1988 3256 MS (d)1997 3256 MS (i)2013 3256 MS (f)2023 3256 MS (f)2034 3256 MS (u)2044 3256 MS (s)2062 3256 MS (i)2074 3256 MS (o)2084 3256 MS (n)2101 3256 MS
+( )2117 3256 MS
+(s)928 3294 MS (a)940 3294 MS (n)955 3294 MS (s)972 3294 MS ( )985 3294 MS (l)993 3294 MS (\222)1002 3294 MS (a)1013 3294 MS (u)1028 3294 MS (t)1045 3294 MS (o)1054 3294 MS (r)1071 3294 MS (i)1082 3294 MS (s)1092 3294 MS (a)1104 3294 MS (t)1119 3294 MS
+(i)1128 3294 MS (o)1138 3294 MS (n)1154 3294 MS ( )1171 3294 MS (e)1180 3294 MS (x)1194 3294 MS (p)1211 3294 MS (r)1227 3294 MS (e)1239 3294 MS (s)1254 3294 MS (s)1267 3294 MS (e)1280 3294 MS ( )1294 3294 MS (d)1303 3294 MS (u)1319 3294 MS ( )1336 3294 MS
+(D)1344 3294 MS (M)1368 3294 MS (2)1397 3294 MS (S)1414 3294 MS
+[50 0 0 -50 0 0]/Times-Roman MF
+( )1432 3294 MS
+[67 0 0 -67 0 0]/Helvetica-Bold MF
+(7)310 592 MS
+( )347 592 MS
+LATENC /_Helvetica-Bold /Helvetica-Bold reencode
+[67 0 0 -67 0 0]/_Helvetica-Bold MF
+(L)400 592 MS (e)441 592 MS ( )478 592 MS (c)497 592 MS (o)534 592 MS (m)574 592 MS (p)634 592 MS (o)675 592 MS (s)716 592 MS (a)753 592 MS (n)790 592 MS (t)831 592 MS ( )852 592 MS (p)871 592 MS (a)910 592 MS (r)947 592 MS
+(a)973 592 MS (l)1010 592 MS (l)1028 592 MS (\350)1047 592 MS (l)1084 592 MS (e)1103 592 MS
+( )1140 592 MS
+[50 0 0 -50 0 0]/Times-Roman MF
+( )235 667 MS
+LATENC /_Times-Roman /Times-Roman reencode
+[50 0 0 -50 0 0]/_Times-Roman MF
+(L)348 724 MS (e)378 724 MS ( )400 724 MS (c)413 724 MS (o)435 724 MS (m)461 724 MS (p)498 724 MS (o)523 724 MS (s)549 724 MS (a)568 724 MS (n)591 724 MS (t)615 724 MS ( )630 724 MS (p)643 724 MS (a)668 724 MS (r)690 724 MS
+(a)707 724 MS (l)729 724 MS (l)742 724 MS (\350)755 724 MS (l)778 724 MS (e)791 724 MS ( )813 724 MS (h)827 724 MS (\351)851 724 MS (r)873 724 MS (i)891 724 MS (t)903 724 MS (e)918 724 MS ( )940 724 MS (d)953 724 MS (u)978 724 MS
+( )1003 724 MS (c)1016 724 MS (o)1038 724 MS (m)1064 724 MS (p)1101 724 MS (o)1126 724 MS (s)1152 724 MS (a)1171 724 MS (n)1193 724 MS (t)1217 724 MS ( )1232 724 MS (g)1245 724 MS (\351)1270 724 MS (n)1292 724 MS (\351)1316 724 MS (r)1338 724 MS
+(i)1356 724 MS (q)1370 724 MS (u)1395 724 MS (e)1420 724 MS ( )1442 724 MS (S)1455 724 MS (A)1483 724 MS (L)1518 724 MS (O)1548 724 MS (M)1585 724 MS (E)1629 724 MS ( )1660 724 MS (e)1673 724 MS (t)1695 724 MS ( )1709 724 MS (d)1722 724 MS
+(e)1747 724 MS ( )1769 724 MS (l)1782 724 MS (\222)1795 724 MS (o)1811 724 MS (b)1837 724 MS (j)1862 724 MS (e)1875 724 MS (t)1897 724 MS ( )1912 724 MS (p)1925 724 MS (a)1950 724 MS (r)1972 724 MS (a)1989 724 MS (l)2011 724 MS (l)2024 724 MS
+(\350)2037 724 MS (l)2060 724 MS (e)2073 724 MS ( )2095 724 MS
+(g)235 782 MS (\351)260 782 MS (n)282 782 MS (\351)306 782 MS (r)328 782 MS (i)346 782 MS (q)359 782 MS (u)384 782 MS (e)409 782 MS (.)431 782 MS
+( )444 782 MS
+( )235 839 MS
+(L)348 897 MS (\222)378 897 MS (i)395 897 MS (n)408 897 MS (t)432 897 MS (e)447 897 MS (r)469 897 MS (f)487 897 MS (a)503 897 MS (c)525 897 MS (e)547 897 MS ( )569 897 MS (C)591 897 MS (O)624 897 MS (R)661 897 MS (B)694 897 MS
+(A)728 897 MS ( )763 897 MS (d)785 897 MS (\222)810 897 MS (u)826 897 MS (n)852 897 MS ( )876 897 MS (c)898 897 MS (o)920 897 MS (m)947 897 MS (p)984 897 MS (o)1009 897 MS (s)1035 897 MS (a)1054 897 MS (n)1077 897 MS (t)1101 897 MS
+( )1116 897 MS (p)1138 897 MS (a)1163 897 MS
+(r)1185 897 MS (a)1202 897 MS (l)1225 897 MS (l)1238 897 MS (\350)1251 897 MS (l)1274 897 MS (e)1287 897 MS ( )1309 897 MS (e)1331 897 MS (s)1354 897 MS (t)1373 897 MS ( )1388 897 MS (b)1410 897 MS (i)1435 897 MS (e)1447 897 MS (n)1470 897 MS
+( )1494 897 MS (s)1516 897 MS (\373)1535 897 MS (r)1560 897 MS ( )1577 897 MS (s)1599 897 MS (p)1618 897 MS (\351)1643 897 MS (c)1666 897 MS (i)1689 897 MS (f)1702 897 MS (i)1719 897 MS (q)1732 897 MS (u)1757 897 MS (e)1782 897 MS ( )1804 897 MS
+(\340)1826 897 MS ( )1848 897 MS (l)1871 897 MS (a)1884 897 MS ( )1906 897 MS (n)1929 897 MS (a)1953 897 MS (t)1975 897 MS (u)1990 897 MS (r)2015 897 MS (e)2032 897 MS ( )2054 897 MS (d)2076 897 MS (u)2101 897 MS ( )2125 897 MS
+(c)235 954 MS (o)257 954 MS (m)283 954 MS (p)320 954 MS (o)345 954 MS (s)371 954 MS (a)390 954 MS (n)413 954 MS (t)437 954 MS (.)452 954 MS ( )465 954 MS (C)485 954 MS (e)518 954 MS (p)540 954 MS (e)565 954 MS (n)587 954 MS
+(d)611 954 MS (a)636 954 MS (n)659 954 MS (t)683 954 MS (,)698 954 MS ( )711 954 MS (o)730 954 MS (n)756 954 MS ( )780 954 MS (p)800 954 MS (e)825 954 MS (u)847 954 MS (t)872 954 MS ( )887 954 MS (t)906 954 MS (i)921 954 MS
+(r)933 954 MS (e)950 954 MS (r)972 954 MS ( )989 954 MS (c)1009 954 MS (e)1031 954 MS (r)1053 954 MS (t)1070 954 MS (a)1085 954 MS (i)1107 954 MS (n)1120 954 MS (e)1145 954 MS (s)1167 954 MS ( )1186 954 MS (g)1206 954 MS (\351)1231 954 MS
+(n)1254 954 MS (\351)1278 954 MS (r)1300 954 MS (a)1317 954 MS (l)1340 954 MS (i)1354 954 MS (t)1366 954 MS (\351)1381 954 MS (s)1403 954 MS ( )1422 954 MS (l)1443 954 MS (i)1457 954 MS (\351)1470 954 MS (e)1492 954 MS (s)1515 954 MS ( )1534 954 MS
+(\340)1554 954 MS ( )1576 954 MS (l)1597 954 MS (a)1610 954 MS ( )1632 954 MS (n)1653 954 MS (a)1677 954 MS (t)1699 954 MS (u)1714 954 MS (r)1739 954 MS (e)1756 954 MS ( )1778 954 MS (d)1798 954 MS (u)1823 954 MS ( )1848 954 MS (p)1868 954 MS
+(a)1893 954 MS (r)1915 954 MS (a)1932 954 MS (l)1955 954 MS (l)1968 954 MS (\351)1981 954 MS (l)2004 954 MS (i)2018 954 MS (s)2031 954 MS (m)2051 954 MS (e)2089 954 MS (.)2111 954 MS ( )2125 954 MS
+(A)235 1012 MS (i)271 1012 MS (n)284 1012 MS (s)309 1012 MS (i)329 1012 MS (,)342 1012 MS ( )355 1012 MS (l)372 1012 MS (o)384 1012 MS (r)410 1012 MS (s)427 1012 MS (q)446 1012 MS (u)471 1012 MS (e)496 1012 MS ( )519 1012 MS (u)535 1012 MS
+(n)561 1012 MS ( )585 1012 MS (s)602 1012 MS (e)621 1012 MS (r)643 1012 MS (v)660 1012 MS (i)685 1012 MS (c)698 1012 MS (e)721 1012 MS ( )743 1012 MS (d)759 1012 MS (o)784 1012 MS (n)810 1012 MS (n)835 1012 MS (\351)859 1012 MS ( )882 1012 MS
+(d)898 1012 MS (\222)923 1012 MS (u)939 1012 MS (n)965 1012 MS ( )990 1012 MS (c)1006 1012 MS (o)1028 1012 MS (m)1055 1012 MS (p)1092 1012 MS (o)1117 1012 MS (s)1143 1012 MS (a)1162 1012 MS (n)1184 1012 MS (t)1208 1012 MS ( )1223 1012 MS (p)1240 1012 MS
+(a)1265 1012 MS (r)1287 1012 MS (a)1304 1012 MS (l)1327 1012 MS (l)1340 1012 MS (\350)1353 1012 MS (l)1376 1012 MS (e)1389 1012 MS ( )1411 1012 MS (e)1428 1012 MS (s)1450 1012 MS (t)1469 1012 MS ( )1484 1012 MS (a)1500 1012 MS (c)1522 1012 MS (t)1544 1012 MS
+(i)1560 1012 MS (v)1573 1012 MS (\351)1597 1012 MS ( )1619 1012 MS (p)1635 1012 MS (a)1660 1012 MS (r)1682 1012 MS ( )1699 1012 MS (u)1715 1012 MS (n)1741 1012 MS ( )1766 1012 MS (c)1782 1012 MS (l)1805 1012 MS (i)1819 1012 MS (e)1832 1012 MS (n)1855 1012 MS
+(t)1879 1012 MS (,)1894 1012 MS ( )1907 1012 MS (c)1923 1012 MS (e)1945 1012 MS ( )1967 1012 MS (d)1983 1012 MS (e)2008 1012 MS (r)2030 1012 MS (n)2047 1012 MS (i)2072 1012 MS (e)2085 1012 MS (r)2107 1012 MS ( )2125 1012 MS
+(c)235 1069 MS (o)257 1069 MS (n)283 1069 MS (n)307 1069 MS (a)331 1069 MS (\356)354 1069 MS (t)366 1069 MS ( )381 1069 MS (u)394 1069 MS (n)420 1069 MS (i)445 1069 MS (q)458 1069 MS (u)483 1069 MS (e)508 1069 MS (m)531 1069 MS (e)569 1069 MS
+(n)592 1069 MS (t)616 1069 MS ( )631 1069 MS (l)644 1069 MS (a)656 1069 MS ( )678 1069 MS
+(r)691 1069 MS (\351)708 1069 MS (f)731 1069 MS (\351)746 1069 MS (r)768 1069 MS (e)785 1069 MS (n)808 1069 MS (c)832 1069 MS (e)855 1069 MS ( )877 1069 MS (C)890 1069 MS (O)923 1069 MS (R)959 1069 MS (B)992 1069 MS (A)1026 1069 MS ( )1061 1069 MS
+(d)1074 1069 MS (u)1099 1069 MS ( )1124 1069 MS (c)1137 1069 MS (o)1159 1069 MS (m)1185 1069 MS (p)1222 1069 MS (o)1248 1069 MS (s)1274 1069 MS (a)1293 1069 MS (n)1315 1069 MS (t)1339 1069 MS ( )1354 1069 MS (s)1367 1069 MS (i)1386 1069 MS (t)1398 1069 MS
+(u)1413 1069 MS (\351)1438 1069 MS ( )1460 1069 MS (s)1473 1069 MS (u)1492 1069 MS (r)1517 1069 MS ( )1534 1069 MS (l)1547 1069 MS (e)1560 1069 MS ( )1582 1069 MS (p)1595 1069 MS (r)1620 1069 MS (o)1637 1069 MS (c)1663 1069 MS (e)1685 1069 MS (s)1707 1069 MS
+(s)1726 1069 MS (u)1745 1069 MS (s)1770 1069 MS ( )1789 1069 MS (0)1802 1069 MS (.)1827 1069 MS ( )1840 1069 MS
+( )1853 1069 MS
+(D)348 1127 MS (o)384 1127 MS (n)410 1127 MS (c)434 1127 MS (,)456 1127 MS ( )469 1127 MS (s)491 1127 MS (e)510 1127 MS (u)532 1127 MS (l)558 1127 MS ( )570 1127 MS (l)593 1127 MS (e)606 1127 MS ( )628 1127 MS (s)650 1127 MS (e)669 1127 MS
+(r)691 1127 MS (v)709 1127 MS (i)734 1127 MS (c)747 1127 MS (e)769 1127 MS ( )791 1127 MS (c)813 1127 MS (o)835 1127 MS (r)861 1127 MS (r)878 1127 MS (e)895 1127 MS (s)917 1127 MS (p)936 1127 MS (o)961 1127 MS (n)987 1127 MS (d)1011 1127 MS
+(a)1036 1127 MS (n)1058 1127 MS (t)1082 1127 MS ( )1097 1127 MS (a)1119 1127 MS (u)1141 1127 MS ( )1166 1127 MS (p)1188 1127 MS (r)1213 1127 MS (o)1229 1127 MS (c)1255 1127 MS (e)1277 1127 MS (s)1299 1127 MS (s)1318 1127 MS (u)1337 1127 MS (s)1362 1127 MS
+( )1381 1127 MS (0)1403 1127 MS ( )1428 1127 MS (s)1450 1127 MS (\222)1469 1127 MS (e)1485 1127 MS (x)1508 1127 MS (\351)1532 1127 MS (c)1554 1127 MS (u)1576 1127 MS (t)1601 1127 MS (e)1616 1127 MS (.)1638 1127 MS ( )1651 1127 MS (I)1673 1127 MS (l)1690 1127 MS
+( )1702 1127 MS (f)1725 1127 MS (a)1740 1127 MS (u)1762 1127 MS (t)1787 1127 MS ( )1802 1127 MS (q)1824 1127 MS (u)1849 1127 MS (e)1874 1127 MS ( )1896 1127 MS (c)1918 1127 MS (e)1940 1127 MS ( )1962 1127 MS (s)1984 1127 MS (e)2003 1127 MS (r)2025 1127 MS
+(v)2042 1127 MS (i)2067 1127 MS (c)2080 1127 MS (e)2102 1127 MS ( )2125 1127 MS
+(a)235 1184 MS (c)257 1184 MS (t)279 1184 MS (i)294 1184 MS (v)307 1184 MS (e)331 1184 MS ( )354 1184 MS (l)375 1184 MS (e)388 1184 MS ( )410 1184 MS (m)431 1184 MS (\352)469 1184 MS (m)492 1184 MS (e)530 1184 MS ( )552 1184 MS (s)573 1184 MS
+(e)592 1184 MS (r)614 1184 MS (v)632 1184 MS (i)657 1184 MS (c)670 1184 MS (e)692 1184 MS ( )714 1184 MS (d)734 1184 MS (u)759 1184 MS ( )784 1184 MS (c)805 1184 MS (o)827 1184 MS (m)853 1184 MS (p)890 1184 MS (o)915 1184 MS (s)941 1184 MS
+(a)960 1184 MS (n)983 1184 MS (t)1007 1184 MS ( )1022 1184 MS (s)1042 1184 MS (i)1062 1184 MS (t)1074 1184 MS (u)1089 1184 MS (\351)1114 1184 MS ( )1136 1184 MS (s)1156 1184 MS (u)1175 1184 MS (r)1200 1184 MS ( )1217 1184 MS (l)1238 1184 MS (\222)1252 1184 MS
+(e)1268 1184 MS (n)1291 1184 MS (s)1315 1184 MS (e)1334 1184 MS (m)1357 1184 MS (b)1395 1184 MS (l)1421 1184 MS (e)1434 1184 MS ( )1457 1184 MS (d)1477 1184 MS (e)1502 1184 MS (s)1524 1184 MS ( )1544 1184 MS (a)1564 1184 MS (u)1586 1184 MS (t)1611 1184 MS
+(r)1626 1184 MS (e)1643 1184 MS (s)1665 1184 MS ( )1684 1184 MS (p)1704 1184 MS (r)1729 1184 MS (o)1746 1184 MS (c)1772 1184 MS (e)1794 1184 MS (s)1816 1184 MS (s)1835 1184 MS (u)1854 1184 MS (s)1879 1184 MS (.)1898 1184 MS ( )1911 1184 MS (I)1931 1184 MS
+(l)1949 1184 MS ( )1961 1184 MS (p)1981 1184 MS (e)2006 1184 MS (u)2028 1184 MS (t)2053 1184 MS ( )2068 1184 MS (l)2089 1184 MS (e)2102 1184 MS ( )2125 1184 MS
+(f)235 1242 MS (a)251 1242 MS (i)274 1242 MS (r)286 1242 MS (e)304 1242 MS (,)326 1242 MS ( )339 1242 MS (c)354 1242 MS (a)376 1242 MS (r)398 1242 MS ( )415 1242 MS (i)431 1242 MS (l)444 1242 MS ( )457 1242 MS (p)472 1242 MS (o)497 1242 MS
+(s)523 1242 MS (s)542 1242 MS (\350)561 1242 MS (d)583 1242 MS (e)608 1242 MS ( )630 1242 MS (l)646 1242 MS (a)659 1242 MS ( )681 1242 MS
+(l)697 1242 MS (i)711 1242 MS (s)724 1242 MS (t)743 1242 MS (e)758 1242 MS ( )780 1242 MS (d)795 1242 MS (e)820 1242 MS (s)842 1242 MS ( )861 1242 MS (r)876 1242 MS (\351)893 1242 MS (f)916 1242 MS (\351)931 1242 MS (r)953 1242 MS (e)970 1242 MS
+(n)993 1242 MS (c)1018 1242 MS (e)1040 1242 MS (s)1062 1242 MS ( )1081 1242 MS (C)1096 1242 MS (O)1130 1242 MS (R)1166 1242 MS (B)1199 1242 MS (A)1233 1242 MS ( )1268 1242 MS (d)1283 1242 MS (e)1308 1242 MS ( )1330 1242 MS (c)1345 1242 MS (e)1368 1242 MS
+(s)1390 1242 MS ( )1409 1242 MS (c)1424 1242 MS (o)1446 1242 MS (m)1473 1242 MS (p)1510 1242 MS (o)1535 1242 MS (s)1561 1242 MS (a)1580 1242 MS (n)1603 1242 MS (t)1627 1242 MS (s)1642 1242 MS (.)1661 1242 MS ( )1674 1242 MS (D)1689 1242 MS (e)1725 1242 MS
+( )1747 1242 MS (p)1762 1242 MS (l)1788 1242 MS (u)1800 1242 MS (s)1825 1242 MS (,)1844 1242 MS ( )1857 1242 MS (p)1872 1242 MS (o)1897 1242 MS (u)1923 1242 MS (r)1948 1242 MS ( )1965 1242 MS (q)1980 1242 MS (u)2005 1242 MS (e)2030 1242 MS ( )2052 1242 MS
+(c)2067 1242 MS (e)2089 1242 MS (t)2110 1242 MS ( )2125 1242 MS
+(e)235 1299 MS (n)257 1299 MS (s)282 1299 MS (e)301 1299 MS (m)324 1299 MS (b)362 1299 MS (l)388 1299 MS (e)401 1299 MS ( )423 1299 MS (d)442 1299 MS (e)467 1299 MS ( )489 1299 MS (s)508 1299 MS (e)527 1299 MS (r)549 1299 MS (v)567 1299 MS
+(i)592 1299 MS (c)605 1299 MS (e)627 1299 MS (s)649 1299 MS ( )668 1299 MS (i)688 1299 MS (d)701 1299 MS (e)726 1299 MS (n)749 1299 MS (t)773 1299 MS (i)789 1299 MS (q)801 1299 MS (u)826 1299 MS (e)851 1299 MS (s)874 1299 MS (,)893 1299 MS
+( )906 1299 MS (s)925 1299 MS (\222)944 1299 MS (e)960 1299 MS (x)983 1299 MS (\351)1007 1299 MS (c)1030 1299 MS (u)1052 1299 MS (t)1077 1299 MS (e)1092 1299 MS (n)1114 1299 MS (t)1138 1299 MS ( )1153 1299 MS (e)1172 1299 MS (n)1194 1299 MS ( )1218 1299 MS
+(p)1237 1299 MS (a)1262 1299 MS (r)1284 1299 MS (a)1301 1299 MS (l)1324 1299 MS (l)1337 1299 MS (\350)1350 1299 MS (l)1373 1299 MS (e)1386 1299 MS (,)1408 1299 MS ( )1421 1299 MS (l)1441 1299 MS (e)1453 1299 MS ( )1475 1299 MS (p)1494 1299 MS (r)1519 1299 MS
+(o)1536 1299 MS (c)1562 1299 MS (e)1584 1299 MS (s)1606 1299 MS (s)1625 1299 MS (u)1644 1299 MS (s)1669 1299 MS ( )1688 1299 MS (0)1707 1299 MS ( )1732 1299 MS (d)1751 1299 MS (o)1776 1299 MS (i)1803 1299 MS (t)1815 1299 MS ( )1830 1299 MS (l)1849 1299 MS
+(e)1861 1299 MS (s)1884 1299 MS ( )1903 1299 MS (a)1922 1299 MS (c)1944 1299 MS (t)1966 1299 MS (i)1982 1299 MS (v)1995 1299 MS (e)2019 1299 MS (r)2041 1299 MS ( )2058 1299 MS (e)2077 1299 MS (n)2100 1299 MS ( )2125 1299 MS
+(m)235 1357 MS (o)272 1357 MS (d)298 1357 MS (e)323 1357 MS ( )345 1357 MS (a)362 1357 MS (s)385 1357 MS (y)405 1357 MS (n)429 1357 MS (c)454 1357 MS (h)477 1357 MS (r)501 1357 MS (o)518 1357 MS (n)544 1357 MS (e)568 1357 MS
+( )590 1357 MS
+(:)603 1357 MS ( )617 1357 MS (c)634 1357 MS (\222)656 1357 MS (e)672 1357 MS (s)695 1357 MS (t)714 1357 MS ( )729 1357 MS (\340)746 1357 MS ( )768 1357 MS (d)785 1357 MS (i)811 1357 MS (r)823 1357 MS (e)840 1357 MS ( )862 1357 MS (a)879 1357 MS
+(c)901 1357 MS (t)923 1357 MS (i)939 1357 MS (v)952 1357 MS (e)976 1357 MS (r)998 1357 MS ( )1015 1357 MS (l)1033 1357 MS (e)1046 1357 MS ( )1068 1357 MS (s)1086 1357 MS (e)1105 1357 MS (r)1127 1357 MS (v)1144 1357 MS (i)1169 1357 MS (c)1182 1357 MS
+(e)1205 1357 MS ( )1227 1357 MS (d)1245 1357 MS (e)1270 1357 MS (s)1292 1357 MS ( )1311 1357 MS (a)1328 1357 MS (u)1350 1357 MS (t)1375 1357 MS (r)1390 1357 MS (e)1407 1357 MS (s)1429 1357 MS ( )1448 1357 MS (p)1465 1357 MS (r)1490 1357 MS (o)1507 1357 MS
+(c)1533 1357 MS (e)1555 1357 MS (s)1577 1357 MS (s)1596 1357 MS (u)1615 1357 MS (s)1640 1357 MS ( )1659 1357 MS (e)1676 1357 MS (t)1698 1357 MS ( )1713 1357 MS (c)1730 1357 MS (o)1752 1357 MS (n)1778 1357 MS (t)1802 1357 MS (i)1817 1357 MS (n)1830 1357 MS
+(u)1854 1357 MS (e)1879 1357 MS (r)1901 1357 MS ( )1918 1357 MS (s)1935 1357 MS (a)1954 1357 MS ( )1976 1357 MS (p)1993 1357 MS (r)2018 1357 MS (o)2035 1357 MS (p)2061 1357 MS (r)2086 1357 MS (e)2103 1357 MS ( )2125 1357 MS
+(e)235 1414 MS (x)257 1414 MS (\351)281 1414 MS (c)304 1414 MS (u)326 1414 MS (t)351 1414 MS (i)366 1414 MS (o)378 1414 MS (n)404 1414 MS ( )428 1414 MS (s)441 1414 MS (a)460 1414 MS (n)483 1414 MS (s)508 1414 MS ( )527 1414 MS (a)540 1414 MS
+(t)562 1414 MS (t)576 1414 MS (e)591 1414 MS (n)613 1414 MS (d)637 1414 MS (r)662 1414 MS (e)679 1414 MS ( )701 1414 MS (q)714 1414 MS (u)739 1414 MS (e)764 1414 MS ( )786 1414 MS (l)799 1414 MS (e)812 1414 MS (s)834 1414 MS ( )853 1414 MS
+(s)866 1414 MS (e)885 1414 MS (r)907 1414 MS (v)925 1414 MS (i)950 1414 MS (c)963 1414 MS (e)985 1414 MS (s)1008 1414 MS ( )1027 1414 MS (i)1041 1414 MS (n)1054 1414 MS (v)1079 1414 MS (o)1103 1414 MS (q)1129 1414 MS (u)1154 1414 MS (\351)1179 1414 MS
+(s)1201 1414 MS ( )1220 1414 MS (n)1233 1414 MS (e)1258 1414 MS ( )1280 1414 MS (s)1293 1414 MS (o)1312 1414 MS (i)1338 1414 MS (t)1350 1414 MS ( )1365 1414 MS (t)1377 1414 MS (e)1392 1414 MS (r)1414 1414 MS (m)1431 1414 MS (i)1469 1414 MS (n)1482 1414 MS
+(\351)1507 1414 MS (s)1530 1414 MS (.)1549 1414 MS ( )1562 1414 MS
+( )1575 1414 MS
+(A)348 1472 MS (i)384 1472 MS (n)397 1472 MS (s)422 1472 MS (i)442 1472 MS (,)455 1472 MS ( )468 1472 MS (u)489 1472 MS (n)515 1472 MS ( )539 1472 MS (s)560 1472 MS (e)579 1472 MS (r)601 1472 MS (v)619 1472 MS (i)644 1472 MS (c)657 1472 MS
+(e)679 1472 MS ( )701 1472 MS (d)722 1472 MS (\222)747 1472 MS (u)763 1472 MS (n)789 1472 MS ( )813 1472 MS (c)834 1472 MS (o)856 1472 MS (m)883 1472 MS (p)920 1472 MS (o)945 1472 MS (s)971 1472 MS (a)990 1472 MS (n)1013 1472 MS (t)1037 1472 MS
+( )1052 1472 MS (p)1073 1472 MS (a)1098 1472 MS (r)1120 1472 MS (a)1137 1472 MS (l)1159 1472 MS (l)1172 1472 MS (\350)1185 1472 MS (l)1208 1472 MS (e)1221 1472 MS ( )1243 1472 MS (d)1264 1472 MS (o)1289 1472 MS (i)1316 1472 MS (t)1328 1472 MS ( )1343 1472 MS
+(n)1364 1472 MS (\351)1388 1472 MS (c)1410 1472 MS (e)1433 1472 MS (s)1455 1472 MS (s)1474 1472 MS (a)1494 1472 MS (i)1517 1472 MS (r)1529 1472 MS (e)1546 1472 MS (m)1569 1472 MS (e)1607 1472 MS (n)1630 1472 MS (t)1654 1472 MS ( )1669 1472 MS (\352)1690 1472 MS
+(t)1712 1472 MS (r)1727 1472 MS (e)1744 1472 MS ( )1766 1472 MS (a)1787 1472 MS (s)1809 1472 MS (y)1828 1472 MS (n)1852 1472 MS (c)1877 1472 MS (h)1900 1472 MS (r)1924 1472 MS (o)1941 1472 MS (n)1967 1472 MS (e)1991 1472 MS ( )2013 1472 MS (\()2034 1472 MS
+(n)2051 1472 MS (o)2075 1472 MS (n)2101 1472 MS ( )2125 1472 MS
+(b)235 1529 MS (l)260 1529 MS (o)272 1529 MS (q)298 1529 MS (u)323 1529 MS (a)348 1529 MS (n)371 1529 MS (t)395 1529 MS (\))410 1529 MS (.)427 1529 MS ( )440 1529 MS (O)453 1529 MS (r)489 1529 MS (,)506 1529 MS ( )519 1529 MS (c)532 1529 MS
+(e)554 1529 MS (l)576 1529 MS (a)589 1529 MS ( )611 1529 MS (n)625 1529 MS (\222)650 1529 MS (e)666 1529 MS (s)688 1529 MS (t)707 1529 MS ( )722 1529 MS (p)735 1529 MS (a)760 1529 MS (s)782 1529 MS ( )802 1529 MS (p)815 1529 MS (o)840 1529 MS
+(s)866 1529 MS (s)885 1529 MS (i)905 1529 MS (b)918 1529 MS (l)943 1529 MS (e)956 1529 MS (,)978 1529 MS ( )991 1529 MS (s)1005 1529 MS (i)1025 1529 MS ( )1038 1529 MS (l)1052 1529 MS (e)1065 1529 MS ( )1087 1529 MS (s)1101 1529 MS (e)1120 1529 MS
+(r)1142 1529 MS (v)1160 1529 MS (i)1185 1529 MS (c)1198 1529 MS (e)1220 1529 MS ( )1242 1529 MS (e)1256 1529 MS (n)1278 1529 MS ( )1303 1529 MS (q)1316 1529 MS (u)1341 1529 MS (e)1366 1529 MS (s)1388 1529 MS (t)1407 1529 MS (i)1423 1529 MS (o)1435 1529 MS
+(n)1461 1529 MS ( )1485 1529 MS (d)1498 1529 MS (o)1523 1529 MS (i)1550 1529 MS (t)1562 1529 MS ( )1577 1529 MS (r)1590 1529 MS (e)1607 1529 MS (t)1629 1529 MS (o)1643 1529 MS (u)1669 1529 MS (r)1694 1529 MS (n)1711 1529 MS (e)1735 1529 MS (r)1757 1529 MS
+( )1774 1529 MS (a)1787 1529 MS (u)1809 1529 MS ( )1834 1529 MS (c)1847 1529 MS (l)1870 1529 MS (i)1884 1529 MS (e)1897 1529 MS (n)1920 1529 MS (t)1944 1529 MS ( )1959 1529 MS (u)1972 1529 MS (n)1997 1529 MS (e)2021 1529 MS ( )2044 1529 MS (\()2057 1529 MS
+(o)2074 1529 MS (u)2100 1529 MS ( )2125 1529 MS
+(p)235 1586 MS (l)261 1586 MS (u)273 1586 MS (s)298 1586 MS
+(i)318 1586 MS (e)331 1586 MS (u)353 1586 MS (r)378 1586 MS (s)396 1586 MS (\))415 1586 MS ( )432 1586 MS (d)448 1586 MS (o)473 1586 MS (n)499 1586 MS (n)523 1586 MS (\351)548 1586 MS (e)570 1586 MS (.)592 1586 MS ( )605 1586 MS (D)621 1586 MS
+(a)657 1586 MS (n)680 1586 MS (s)704 1586 MS ( )724 1586 MS (c)740 1586 MS (e)762 1586 MS ( )784 1586 MS (d)800 1586 MS (e)826 1586 MS (r)848 1586 MS (n)865 1586 MS (i)890 1586 MS (e)903 1586 MS (r)925 1586 MS ( )942 1586 MS (c)958 1586 MS
+(a)981 1586 MS (s)1003 1586 MS (,)1022 1586 MS ( )1035 1586 MS (l)1052 1586 MS (\222)1065 1586 MS (i)1082 1586 MS (n)1095 1586 MS (t)1119 1586 MS (e)1134 1586 MS (r)1156 1586 MS (f)1174 1586 MS (a)1190 1586 MS (c)1212 1586 MS (e)1234 1586 MS ( )1257 1586 MS
+(C)1273 1586 MS (O)1306 1586 MS (R)1342 1586 MS (B)1375 1586 MS (A)1409 1586 MS ( )1445 1586 MS (d)1461 1586 MS (o)1486 1586 MS (i)1513 1586 MS (t)1525 1586 MS ( )1540 1586 MS (n)1556 1586 MS (\351)1580 1586 MS (c)1602 1586 MS (e)1625 1586 MS (s)1647 1586 MS
+(s)1666 1586 MS (a)1686 1586 MS (i)1709 1586 MS (r)1721 1586 MS (e)1738 1586 MS (m)1761 1586 MS (e)1799 1586 MS (n)1822 1586 MS (t)1846 1586 MS ( )1861 1586 MS (d)1877 1586 MS (\351)1902 1586 MS (f)1925 1586 MS (i)1941 1586 MS (n)1954 1586 MS (i)1980 1586 MS
+(r)1993 1586 MS ( )2010 1586 MS (d)2026 1586 MS (e)2051 1586 MS (u)2073 1586 MS (x)2100 1586 MS ( )2125 1586 MS
+(s)235 1644 MS (e)254 1644 MS (r)276 1644 MS (v)293 1644 MS (i)318 1644 MS (c)331 1644 MS (e)354 1644 MS (s)376 1644 MS ( )395 1644 MS (d)416 1644 MS (i)442 1644 MS (f)455 1644 MS (f)472 1644 MS (\351)488 1644 MS (r)510 1644 MS (e)527 1644 MS
+(n)550 1644 MS (t)574 1644 MS (s)589 1644 MS ( )608 1644 MS (p)629 1644 MS (o)654 1644 MS (u)680 1644 MS (r)704 1644 MS ( )721 1644 MS (r)742 1644 MS (\351)759 1644 MS (a)781 1644 MS (l)803 1644 MS (i)816 1644 MS (s)829 1644 MS (e)849 1644 MS
+(r)871 1644 MS ( )888 1644 MS (l)910 1644 MS (a)922 1644 MS ( )944 1644 MS (m)966 1644 MS (\352)1004 1644 MS (m)1027 1644 MS (e)1065 1644 MS ( )1087 1644 MS (f)1109 1644 MS (o)1124 1644 MS (n)1150 1644 MS (c)1174 1644 MS (t)1196 1644 MS (i)1212 1644 MS
+(o)1224 1644 MS (n)1250 1644 MS (.)1274 1644 MS ( )1287 1644 MS (L)1308 1644 MS (e)1338 1644 MS ( )1360 1644 MS (p)1381 1644 MS (r)1406 1644 MS (e)1423 1644 MS (m)1446 1644 MS (i)1484 1644 MS (e)1497 1644 MS (r)1519 1644 MS ( )1536 1644 MS (e)1557 1644 MS
+(s)1579 1644 MS (t)1598 1644 MS ( )1613 1644 MS (s)1634 1644 MS (y)1654 1644 MS (n)1678 1644 MS (c)1702 1644 MS (h)1725 1644 MS (r)1749 1644 MS (o)1766 1644 MS (n)1792 1644 MS (e)1816 1644 MS ( )1838 1644 MS (\()1859 1644 MS (b)1876 1644 MS (l)1901 1644 MS
+(o)1913 1644 MS (q)1939 1644 MS (u)1964 1644 MS (a)1990 1644 MS (n)2013 1644 MS (t)2037 1644 MS (\))2052 1644 MS ( )2069 1644 MS (e)2090 1644 MS (t)2111 1644 MS ( )2125 1644 MS
+(r)235 1701 MS (e)252 1701 MS (t)274 1701 MS (o)288 1701 MS (u)314 1701 MS (r)338 1701 MS (n)355 1701 MS (e)379 1701 MS ( )401 1701 MS (a)420 1701 MS (u)442 1701 MS ( )467 1701 MS (c)486 1701 MS (l)509 1701 MS (i)522 1701 MS (e)535 1701 MS
+(n)558 1701 MS (t)582 1701 MS ( )597 1701 MS (l)617 1701 MS (a)629 1701 MS ( )651 1701 MS (d)670 1701 MS (o)695 1701 MS (n)721 1701 MS (n)746 1701 MS (\351)771 1701 MS (e)793 1701 MS ( )815 1701 MS (p)834 1701 MS (a)859 1701 MS (r)881 1701 MS
+(a)898 1701 MS (l)921 1701 MS (l)934 1701 MS (\350)947 1701 MS (l)970 1701 MS (e)983 1701 MS (.)1005 1701 MS ( )1018 1701 MS (I)1037 1701 MS (l)1055 1701 MS ( )1067 1701 MS (s)1087 1701 MS (\222)1107 1701 MS (e)1123 1701 MS (x)1146 1701 MS (\351)1170 1701 MS
+(c)1192 1701 MS (u)1214 1701 MS (t)1239 1701 MS (e)1254 1701 MS ( )1276 1701 MS (s)1295 1701 MS (e)1314 1701 MS (u)1336 1701 MS (l)1362 1701 MS (e)1375 1701 MS (m)1398 1701 MS (e)1436 1701 MS (n)1459 1701 MS (t)1483 1701 MS ( )1498 1701 MS (s)1517 1701 MS
+(u)1536 1701 MS (r)1561 1701 MS ( )1578 1701 MS (l)1597 1701 MS (e)1610 1701 MS ( )1632 1701 MS (p)1651 1701 MS (r)1676 1701 MS (o)1693 1701 MS (c)1719 1701 MS (e)1741 1701 MS (s)1763 1701 MS (s)1782 1701 MS (u)1801 1701 MS
+(s)1826 1701 MS ( )1845 1701 MS (0)1864 1701 MS ( )1889 1701 MS (d)1908 1701 MS (u)1933 1701 MS ( )1958 1701 MS (s)1977 1701 MS (e)1996 1701 MS (r)2018 1701 MS (v)2036 1701 MS (e)2060 1701 MS (u)2082 1701 MS (r)2107 1701 MS ( )2125 1701 MS
+(p)235 1759 MS (a)260 1759 MS (r)282 1759 MS (a)299 1759 MS (l)322 1759 MS (l)335 1759 MS (\350)348 1759 MS (l)371 1759 MS (e)384 1759 MS (.)406 1759 MS ( )419 1759 MS (L)434 1759 MS (e)464 1759 MS ( )486 1759 MS (s)501 1759 MS (e)520 1759 MS
+(c)542 1759 MS (o)564 1759 MS (n)590 1759 MS (d)614 1759 MS ( )639 1759 MS (e)654 1759 MS (s)677 1759 MS (t)696 1759 MS ( )711 1759 MS (a)726 1759 MS (s)748 1759 MS (y)768 1759 MS (n)792 1759 MS (c)816 1759 MS (h)839 1759 MS (r)863 1759 MS
+(o)880 1759 MS (n)906 1759 MS (e)930 1759 MS ( )952 1759 MS (\()967 1759 MS (n)984 1759 MS (o)1008 1759 MS (n)1034 1759 MS ( )1058 1759 MS (b)1074 1759 MS (l)1099 1759 MS (o)1111 1759 MS (q)1137 1759 MS (u)1162 1759 MS (a)1187 1759 MS (n)1210 1759 MS
+(t)1234 1759 MS (\))1249 1759 MS
+( )1266 1759 MS
+(:)1279 1759 MS ( )1293 1759 MS (i)1308 1759 MS (l)1321 1759 MS ( )1333 1759 MS (s)1349 1759 MS (\222)1368 1759 MS (e)1384 1759 MS (x)1407 1759 MS (\351)1432 1759 MS (c)1454 1759 MS (u)1476 1759 MS (t)1501 1759 MS (e)1516 1759 MS ( )1538 1759 MS (s)1553 1759 MS
+(u)1572 1759 MS (r)1597 1759 MS ( )1614 1759 MS (t)1628 1759 MS (o)1642 1759 MS (u)1668 1759 MS (s)1693 1759 MS ( )1712 1759 MS (l)1727 1759 MS (e)1739 1759 MS (s)1762 1759 MS ( )1781 1759 MS (a)1796 1759 MS (u)1818 1759 MS (t)1843 1759 MS (r)1858 1759 MS
+(e)1875 1759 MS (s)1897 1759 MS ( )1916 1759 MS (p)1931 1759 MS (r)1956 1759 MS (o)1972 1759 MS (c)1998 1759 MS (e)2020 1759 MS (s)2042 1759 MS (s)2061 1759 MS (u)2080 1759 MS (s)2105 1759 MS ( )2125 1759 MS
+(e)235 1816 MS (t)257 1816 MS ( )272 1816 MS (e)287 1816 MS (s)309 1816 MS (t)328 1816 MS ( )343 1816 MS (a)358 1816 MS (c)380 1816 MS (t)402 1816 MS (i)417 1816 MS (v)430 1816 MS (\351)454 1816 MS ( )476 1816 MS (u)491 1816 MS (n)517 1816 MS
+(i)542 1816 MS (q)555 1816 MS (u)580 1816 MS (e)605 1816 MS (m)628 1816 MS (e)666 1816 MS (n)689 1816 MS (t)713 1816 MS ( )728 1816 MS (p)743 1816 MS (a)768 1816 MS (r)790 1816 MS ( )807 1816 MS (l)823 1816 MS (a)836 1816 MS ( )858 1816 MS
+(f)874 1816 MS (o)889 1816 MS (n)916 1816 MS (c)940 1816 MS (t)962 1816 MS (i)978 1816 MS (o)990 1816 MS (n)1016 1816 MS ( )1040 1816 MS (s)1056 1816 MS (y)1076 1816 MS (n)1100 1816 MS (c)1125 1816 MS (h)1148 1816 MS (r)1172 1816 MS (o)1189 1816 MS
+(n)1215 1816 MS (e)1239 1816 MS ( )1261 1816 MS (d)1276 1816 MS (u)1301 1816 MS ( )1326 1816 MS (p)1341 1816 MS (r)1366 1816 MS (o)1383 1816 MS (c)1409 1816 MS (e)1431 1816 MS (s)1453 1816 MS (s)1472 1816 MS (u)1491 1816 MS (s)1516 1816 MS ( )1536 1816 MS
+(0)1551 1816 MS (.)1576 1816 MS ( )1589 1816 MS (S)1604 1816 MS (i)1633 1816 MS ( )1646 1816 MS (l)1662 1816 MS (e)1675 1816 MS ( )1697 1816 MS (s)1713 1816 MS (e)1732 1816 MS (r)1754 1816 MS (v)1771 1816 MS (i)1796 1816 MS (c)1809 1816 MS (e)1832 1816 MS
+( )1854 1816 MS (r)1869 1816 MS (e)1886 1816 MS (t)1908 1816 MS (o)1923 1816 MS (u)1949 1816 MS (r)1973 1816 MS (n)1990 1816 MS (e)2014 1816 MS ( )2036 1816 MS (u)2051 1816 MS (n)2077 1816 MS (e)2102 1816 MS ( )2125 1816 MS
+(d)235 1874 MS (o)260 1874 MS (n)286 1874 MS (n)310 1874 MS (\351)334 1874 MS (e)356 1874 MS ( )378 1874 MS (a)394 1874 MS (u)416 1874 MS ( )442 1874 MS (c)457 1874 MS (l)480 1874 MS (i)494 1874 MS (e)507 1874 MS (n)530 1874 MS (t)554 1874 MS
+(,)569 1874 MS ( )582 1874 MS (c)597 1874 MS (e)619 1874 MS (l)642 1874 MS (l)655 1874 MS (e)668 1874 MS
+(-)690 1874 MS
+(c)707 1874 MS (i)730 1874 MS ( )743 1874 MS (e)758 1874 MS (s)781 1874 MS (t)800 1874 MS ( )815 1874 MS (u)830 1874 MS (n)855 1874 MS (e)879 1874 MS ( )902 1874 MS (d)917 1874 MS (o)942 1874 MS (n)968 1874 MS (n)993 1874 MS (\351)1017 1874 MS
+(e)1039 1874 MS ( )1062 1874 MS (p)1077 1874 MS (a)1102 1874 MS (r)1124 1874 MS (a)1141 1874 MS (l)1164 1874 MS (l)1178 1874 MS (\350)1191 1874 MS (l)1214 1874 MS (e)1227 1874 MS
+(.)1250 1874 MS ( )1263 1874 MS (C)1278 1874 MS (\222)1311 1874 MS (e)1327 1874 MS (s)1350 1874 MS (t)1369 1874 MS ( )1384 1874 MS (\340)1399 1874 MS ( )1421 1874 MS (d)1436 1874 MS (i)1462 1874 MS (r)1474 1874 MS (e)1491 1874 MS ( )1514 1874 MS (q)1529 1874 MS
+(u)1554 1874 MS (e)1579 1874 MS ( )1602 1874 MS (c)1617 1874 MS (h)1640 1874 MS (a)1664 1874 MS (q)1686 1874 MS (u)1711 1874 MS (e)1736 1874 MS ( )1759 1874 MS (p)1774 1874 MS (r)1799 1874 MS (o)1816 1874 MS (c)1842 1874 MS (e)1864 1874 MS (s)1886 1874 MS
+(s)1905 1874 MS (u)1924 1874 MS (s)1949 1874 MS ( )1969 1874 MS (c)1984 1874 MS (r)2006 1874 MS (\351)2023 1874 MS (e)2045 1874 MS ( )2067 1874 MS (s)2083 1874 MS (a)2102 1874 MS ( )2125 1874 MS
+(p)235 1931 MS (r)260 1931 MS (o)277 1931 MS (p)303 1931 MS (r)327 1931 MS (e)344 1931 MS ( )366 1931 MS (d)387 1931 MS (o)412 1931 MS (n)438 1931 MS (n)462 1931 MS (\351)486 1931 MS (e)508 1931 MS ( )530 1931 MS (C)551 1931 MS (O)585 1931 MS
+(R)621 1931 MS (B)654 1931 MS (A)688 1931 MS ( )724 1931 MS (e)745 1931 MS (t)767 1931 MS ( )782 1931 MS (e)803 1931 MS (n)825 1931 MS (v)850 1931 MS (o)874 1931 MS (i)901 1931 MS (e)913 1931 MS (,)935 1931 MS ( )948 1931 MS (v)970 1931 MS
+(i)995 1931 MS (a)1008 1931 MS ( )1030 1931 MS (M)1051 1931 MS (P)1095 1931 MS (I)1123 1931 MS (,)1140 1931 MS ( )1153 1931 MS (a)1174 1931 MS (u)1196 1931 MS ( )1221 1931 MS (p)1243 1931 MS (r)1268 1931 MS (o)1285 1931 MS (c)1311 1931 MS (e)1333 1931 MS
+(s)1355 1931 MS (s)1374 1931 MS (u)1393 1931 MS (s)1418 1931 MS ( )1437 1931 MS (0)1458 1931 MS ( )1483 1931 MS (l)1505 1931 MS (a)1518 1931 MS ( )1540 1931 MS (r)1561 1931 MS (\351)1578 1931 MS (f)1601 1931 MS (\351)1617 1931 MS (r)1639 1931 MS (e)1656 1931 MS
+(n)1678 1931 MS (c)1703 1931 MS (e)1725 1931 MS ( )1747 1931 MS (C)1768 1931 MS (O)1801 1931 MS (R)1838 1931 MS (B)1871 1931 MS (A)1905 1931 MS ( )1940 1931 MS (d)1961 1931 MS (e)1986 1931 MS ( )2009 1931 MS (c)2030 1931 MS (e)2052 1931 MS (t)2074 1931 MS
+(t)2089 1931 MS (e)2104 1931 MS ( )2125 1931 MS
+(d)235 1989 MS (o)260 1989 MS (n)286 1989 MS (n)310 1989 MS (\351)334 1989 MS (e)356 1989 MS (.)378 1989 MS ( )391 1989 MS (U)404 1989 MS (n)441 1989 MS (e)465 1989 MS ( )487 1989 MS (f)501 1989 MS (o)516 1989 MS (i)543 1989 MS (s)556 1989 MS
+( )575 1989 MS (q)588 1989 MS (u)613 1989 MS (e)638 1989 MS ( )660 1989 MS (l)674 1989 MS (e)687 1989 MS ( )709 1989 MS (p)722 1989 MS (r)747 1989 MS (o)764 1989 MS (c)790 1989 MS (e)812 1989 MS (s)834 1989 MS (s)853 1989 MS (u)872 1989 MS
+(s)897 1989 MS ( )916 1989 MS (0)929 1989 MS ( )954 1989 MS (,)967 1989 MS ( )980 1989 MS (a)993 1989 MS ( )1015 1989 MS (r)1028 1989 MS (e)1045 1989 MS (\347)1067 1989 MS (u)1089 1989 MS ( )1114 1989 MS (l)1128 1989 MS (\222)1140 1989 MS (e)1156 1989 MS
+(n)1179 1989 MS (s)1204 1989 MS (e)1223 1989 MS (m)1246 1989 MS (b)1284 1989 MS (l)1310 1989 MS (e)1323 1989 MS ( )1345 1989 MS (d)1358 1989 MS (e)1383 1989 MS (s)1405 1989 MS ( )1424 1989 MS (r)1437 1989 MS (\351)1454 1989 MS (f)1477 1989 MS (\351)1493 1989 MS
+(r)1515 1989 MS (e)1532 1989 MS (n)1555 1989 MS (c)1579 1989 MS (e)1601 1989 MS (s)1624 1989 MS ( )1643 1989 MS (C)1656 1989 MS (O)1689 1989 MS (R)1725 1989 MS (B)1759 1989 MS (A)1793 1989 MS ( )1828 1989 MS (c)1841 1989 MS (o)1863 1989 MS (r)1889 1989 MS
+(r)1906 1989 MS (e)1923 1989 MS (s)1945 1989 MS (p)1964 1989 MS (o)1989 1989 MS (n)2015 1989 MS (d)2039 1989 MS (a)2064 1989 MS (n)2086 1989 MS (t)2110 1989 MS ( )2125 1989 MS
+(\340)235 2046 MS ( )257 2046 MS (l)271 2046 MS (a)283 2046 MS ( )305 2046 MS (d)318 2046 MS (o)343 2046 MS (n)369 2046 MS (n)393 2046 MS (\351)417 2046 MS (e)440 2046 MS ( )462 2046 MS (p)475 2046 MS (a)500 2046 MS (r)522 2046 MS (a)539 2046 MS
+(l)562 2046 MS (l)575 2046 MS (\350)588 2046 MS (l)611 2046 MS (e)624 2046 MS ( )646 2046 MS (\()659 2046 MS (v)676 2046 MS (i)701 2046 MS (a)714 2046 MS ( )736 2046 MS (l)750 2046 MS (a)763 2046 MS ( )785 2046 MS (f)799 2046 MS (o)814 2046 MS
+(n)840 2046 MS (c)864 2046 MS (t)886 2046 MS (i)902 2046 MS (o)914 2046 MS (n)940 2046 MS
+( )964 2046 MS (B)977 2046 MS (C)1010 2046 MS (a)1043 2046 MS (s)1066 2046 MS (t)1085 2046 MS (I)1100 2046 MS (O)1117 2046 MS (R)1153 2046 MS (\()1186 2046 MS (\))1203 2046 MS (\))1220 2046 MS (,)1236 2046 MS ( )1248 2046 MS (i)1261 2046 MS (l)1274 2046 MS
+( )1287 2046 MS (p)1300 2046 MS (e)1325 2046 MS (u)1347 2046 MS (t)1372 2046 MS ( )1387 2046 MS (l)1400 2046 MS (a)1412 2046 MS ( )1434 2046 MS (r)1447 2046 MS (e)1464 2046 MS (n)1487 2046 MS (v)1512 2046 MS (o)1536 2046 MS (y)1563 2046 MS (e)1586 2046 MS
+(r)1608 2046 MS ( )1625 2046 MS (a)1638 2046 MS (u)1660 2046 MS ( )1685 2046 MS (c)1698 2046 MS (l)1721 2046 MS (i)1734 2046 MS (e)1747 2046 MS (n)1770 2046 MS (t)1794 2046 MS (.)1809 2046 MS
+( )1822 2046 MS
+( )235 2104 MS
+showpage
+%%Page: 15 15
+14.449 827.879 translate 72 300 div dup neg scale
+0 0 transform .25 add round .25 sub exch .25 add round .25 sub exch itransform translate
+1 j
+1 setlinecap
+72 sl
+0.375 g
+n
+494 182 M
+494 155 472 133 445 133 c
+418 133 396 155 396 182 c
+396 209 418 231 445 231 c
+472 231 494 209 494 182 c
+cp
+CM 0.156 0.152 scale
+s
+SM
+71 sl
+n
+660 182 M
+660 155 638 133 611 133 c
+584 133 562 155 562 182 c
+562 209 584 231 611 231 c
+638 231 660 209 660 182 c
+cp
+CM 0.156 0.152 scale
+s
+SM
+n
+120 24 468 152 B
+1 g
+f
+1 sl
+n
+122 26 467 151 B
+cp
+s
+71 sl
+0.375 g
+n
+577 180 M
+577 153 555 131 528 131 c
+501 131 479 153 479 180 c
+479 206 501 228 528 228 c
+555 228 577 206 577 180 c
+cp
+gs
+1 g
+e
+gr
+CM 0.156 0.152 scale
+s
+SM
+n
+480 180 M
+575 180 L
+CM 0.156 0.152 scale
+s
+SM
+n
+34 18 562 187 B
+1 g
+f
+1 sl
+n
+36 20 561 186 B
+cp
+s
+n
+610 173 M
+591 173 L
+554 124 L
+579 126 L
+609 173 L
+610 173 L
+cp
+gs
+e
+gr
+s
+n
+448 170 M
+468 170 L
+504 122 L
+479 123 L
+449 170 L
+448 170 L
+cp
+gs
+e
+gr
+s
+0.375 g
+n
+473 140 M
+473 137 470 135 467 135 c
+464 135 462 137 462 140 c
+462 142 464 145 467 145 c
+470 145 473 142 473 140 c
+cp
+gs
+e
+gr
+s
+n
+593 139 M
+593 136 590 134 588 134 c
+585 134 583 136 583 139 c
+583 141 585 144 588 144 c
+590 144 593 141 593 139 c
+cp
+gs
+e
+gr
+s
+72 sl
+n
+665 137 M
+665 229 L
+CM 0.156 0.152 scale
+s
+SM
+[29 0 0 -29 0 0]/Times-Roman MF
+0 g
+( )676 243 MS
+[50 0 0 -50 0 0]/Times-Roman MF
+(D)400 289 MS (E)436 289 MS (N)467 289 MS ( )503 289 MS ( )516 289 MS (S)529 289 MS (a)557 289 MS (c)579 289 MS (l)601 289 MS (a)613 289 MS (y)636 289 MS
+( )660 289 MS
+( )1297 140 MS
+[38 0 0 -38 0 0]/Times-Roman MF
+(S)1785 129 MS (F)1806 129 MS (M)1827 129 MS (E)1861 129 MS (/)1883 129 MS (L)1894 129 MS (G)1916 129 MS (L)1943 129 MS (S)1965 129 MS (/)1986 129 MS (R)1997 129 MS (T)2022 129 MS (/)2045 129 MS (0)2056 129 MS (2)2075 129 MS
+(-)2094 129 MS
+(0)2106 129 MS (0)2125 129 MS (2)2144 129 MS
+( )2163 129 MS
+(D)1785 173 MS (a)1812 173 MS (t)1829 173 MS (e)1840 173 MS
+( )1856 173 MS
+(:)1866 173 MS
+( )1875 173 MS
+(3)1885 173 MS (0)1904 173 MS (/)1923 173 MS (0)1934 173 MS (5)1952 173 MS (/)1971 173 MS (2)1982 173 MS (0)2000 173 MS (0)2019 173 MS (2)2038 173 MS
+( )2057 173 MS
+n
+5 5 232 89 B
+f
+n
+5 5 232 89 B
+f
+n
+584 5 238 89 B
+f
+n
+5 5 823 89 B
+f
+n
+938 5 829 89 B
+f
+n
+5 5 1768 89 B
+f
+n
+436 5 1774 89 B
+f
+n
+5 5 2211 89 B
+f
+n
+5 5 2211 89 B
+f
+n
+5 256 232 95 B
+f
+n
+2 256 823 95 B
+f
+n
+2 256 1768 95 B
+f
+n
+5 256 2211 95 B
+f
+[50 0 0 -50 0 0]/Times-Roman MF
+(D)322 400 MS (M)358 400 MS (2)402 400 MS (S)427 400 MS (/)455 400 MS (S)469 400 MS (F)497 400 MS (M)524 400 MS (E)568 400 MS (/)599 400 MS (L)613 400 MS (G)643 400 MS (L)680 400 MS (S)710 400 MS
+( )738 400 MS
+[50 0 0 -50 0 0]/Times-Bold MF
+gs
+n
+241 53 1102 367 CB
+(R)1102 413 MS (A)1138 413 MS (P)1174 413 MS (P)1204 413 MS (O)1234 413 MS (R)1273 413 MS (T)1310 413 MS
+gr
+gs
+n
+150 53 1343 367 CB
+( )1343 413 MS (D)1356 413 MS (M)1392 413 MS (2)1440 413 MS (S)1465 413 MS
+gr
+[50 0 0 -50 0 0]/Times-Roman MF
+gs
+n
+24 52 1493 368 CB
+( )1493 413 MS
+gr
+[38 0 0 -38 0 0]/Times-Roman MF
+(P)1785 400 MS (a)1806 400 MS (g)1823 400 MS (e)1841 400 MS ( )1858 400 MS
+[50 0 0 -50 0 0]/Times-Roman MF
+(1)1868 400 MS (5)1893 400 MS
+(/)1918 400 MS
+(3)1932 400 MS (0)1957 400 MS
+[38 0 0 -38 0 0]/Times-Roman MF
+( )1982 400 MS
+n
+5 2 232 352 B
+f
+n
+2 2 823 352 B
+f
+n
+941 2 826 352 B
+f
+n
+2 2 1768 352 B
+f
+n
+5 2 2211 352 B
+f
+n
+5 67 232 355 B
+f
+n
+590 1 232 423 B
+f
+n
+2 67 823 355 B
+f
+n
+1 1 823 423 B
+f
+n
+942 1 825 423 B
+f
+n
+2 67 1768 355 B
+f
+n
+1 1 1768 423 B
+f
+n
+440 1 1770 423 B
+f
+n
+5 67 2211 355 B
+f
+n
+5 1 2211 423 B
+f
+[50 0 0 -50 0 0]/Times-Roman MF
+( )235 470 MS
+[33 0 0 -33 0 0]/Times-Roman MF
+/IsChar{exch/CharStrings get exch known}bd/MapCh{3 -1 roll/Encoding get 3 1\r
+roll put}bd/MapDegree{dup 16#b0 exch/degree IsChar{/degree}{/ring}ifelse MapCh}\r
+bd/MapBB{dup 16#a6 exch/brokenbar IsChar{/brokenbar}{/bar}ifelse MapCh}bd\r
+/reencode{findfont begin currentdict dup length dict begin{1 index/FID ne{def}\r
+{pop pop}ifelse}forall/FontName exch def dup length 0 ne{/Encoding Encoding 256\r
+array copy def 0 exch{dup type/nametype eq{Encoding 2 index 2 index put pop 1\r
+add}{exch pop}ifelse}forall}if pop currentdict dup end end/FontName get exch\r
+definefont dup MapDegree MapBB}bd/LATENC[0/grave/acute/circumflex/tilde/macron\r
+/breve/dotaccent/dieresis/ring/cedilla/hungarumlaut/ogonek/caron/dotlessi/fi/fl\r
+/Lslash/lslash/Zcaron/zcaron/minus/.notdef/.notdef/.notdef/.notdef/.notdef\r
+/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/space/exclam/quotedbl\r
+/numbersign/dollar/percent/ampersand/quotesingle/parenleft/parenright/asterisk\r
+/plus/comma/hyphen/period/slash/zero/one/two/three/four/five/six/seven/eight\r
+/nine/colon/semicolon/less/equal/greater/question/at/A/B/C/D/E/F/G/H/I/J/K/L/M\r
+/N/O/P/Q/R/S/T/U/V/W/X/Y/Z/bracketleft/backslash/bracketright/asciicircum\r
+/underscore/grave/a/b/c/d/e/f/g/h/i/j/k/l/m/n/o/p/q/r/s/t/u/v/w/x/y/z/braceleft\r
+/bar/braceright/asciitilde/.notdef/.notdef/.notdef/quotesinglbase/florin\r
+/quotedblbase/ellipsis/dagger/daggerdbl/circumflex/perthousand/Scaron\r
+/guilsinglleft/OE/.notdef/.notdef/.notdef/.notdef/quoteleft/quoteright\r
+/quotedblleft/quotedblright/bullet/endash/emdash/tilde/trademark/scaron\r
+/guilsinglright/oe/.notdef/.notdef/Ydieresis/.notdef/exclamdown/cent/sterling\r
+/currency/yen/brokenbar/section/dieresis/copyright/ordfeminine/guillemotleft\r
+/logicalnot/hyphen/registered/macron/degree/plusminus/twosuperior/threesuperior\r
+/acute/mu/paragraph/periodcentered/cedilla/onesuperior/ordmasculine\r
+/guillemotright/onequarter/onehalf/threequarters/questiondown/Agrave/Aacute\r
+/Acircumflex/Atilde/Adieresis/Aring/AE/Ccedilla/Egrave/Eacute/Ecircumflex\r
+/Edieresis/Igrave/Iacute/Icircumflex/Idieresis/Eth/Ntilde/Ograve/Oacute\r
+/Ocircumflex/Otilde/Odieresis/multiply/Oslash/Ugrave/Uacute/Ucircumflex\r
+/Udieresis/Yacute/Thorn/germandbls/agrave/aacute/acircumflex/atilde/adieresis\r
+/aring/ae/ccedilla/egrave/eacute/ecircumflex/edieresis/igrave/iacute\r
+/icircumflex/idieresis/eth/ntilde/ograve/oacute/ocircumflex/otilde/odieresis\r
+/divide/oslash/ugrave/uacute/ucircumflex/udieresis/yacute/thorn/ydieresis]def\r
+LATENC /_Times-Roman /Times-Roman reencode
+[33 0 0 -33 0 0]/_Times-Roman MF
+(L)242 3256 MS (e)262 3256 MS (s)277 3256 MS ( )289 3256 MS (i)298 3256 MS (n)307 3256 MS (f)324 3256 MS (o)335 3256 MS (r)351 3256 MS (m)363 3256 MS (a)388 3256 MS (t)403 3256 MS (i)412 3256 MS (o)422 3256 MS (n)439 3256 MS (s)456 3256 MS
+( )468 3256 MS (c)477 3256 MS (o)492 3256 MS (n)508 3256 MS (t)524 3256 MS (e)534 3256 MS (n)549 3256 MS (u)565 3256 MS (e)582 3256 MS (s)597 3256 MS ( )610 3256 MS (d)618 3256 MS (a)634 3256 MS (n)650 3256 MS (s)667 3256 MS ( )679 3256 MS
+(c)688 3256 MS (e)703 3256 MS ( )717 3256 MS (d)726 3256 MS (o)742 3256 MS (c)759 3256 MS (u)773 3256 MS (m)791 3256 MS (e)817 3256 MS (n)831 3256 MS (t)847 3256 MS ( )857 3256 MS (s)866 3256 MS (o)878 3256 MS (n)895 3256 MS (t)911 3256 MS
+( )921 3256 MS (r)929 3256 MS (\351)941 3256 MS (s)956 3256 MS (e)968 3256 MS (r)982 3256 MS (v)994 3256 MS (\351)1011 3256 MS (e)1026 3256 MS (s)1041 3256 MS ( )1053 3256 MS (a)1061 3256 MS (u)1076 3256 MS (x)1093 3256 MS ( )1109 3256 MS (d)1118 3256 MS
+(e)1135 3256 MS (s)1150 3256 MS (t)1162 3256 MS (i)1171 3256 MS (n)1181 3256 MS (a)1197 3256 MS (t)1212 3256 MS (a)1221 3256 MS (i)1236 3256 MS (r)1245 3256 MS (e)1257 3256 MS (s)1272 3256 MS ( )1284 3256 MS (n)1293 3256 MS (o)1309 3256 MS (m)1326 3256 MS
+(m)1352 3256 MS (\351)1378 3256 MS (m)1393 3256 MS (e)1419 3256 MS (n)1433 3256 MS (t)1450 3256 MS ( )1459 3256 MS (d)1468 3256 MS (\351)1484 3256 MS (s)1499 3256 MS (i)1512 3256 MS (g)1521 3256 MS
+(n)1538 3256 MS (\351)1555 3256 MS (s)1570 3256 MS ( )1582 3256 MS (e)1591 3256 MS (t)1605 3256 MS ( )1615 3256 MS (n)1623 3256 MS (e)1640 3256 MS ( )1654 3256 MS (p)1663 3256 MS (e)1680 3256 MS (u)1694 3256 MS (v)1711 3256 MS (e)1728 3256 MS (n)1743 3256 MS
+(t)1759 3256 MS ( )1768 3256 MS (r)1776 3256 MS (e)1788 3256 MS (c)1803 3256 MS (e)1818 3256 MS (v)1832 3256 MS (o)1849 3256 MS (i)1865 3256 MS (r)1874 3256 MS ( )1886 3256 MS (a)1894 3256 MS (u)1909 3256 MS (c)1926 3256 MS (u)1940 3256 MS (n)1957 3256 MS
+(e)1974 3256 MS ( )1988 3256 MS (d)1997 3256 MS (i)2013 3256 MS (f)2023 3256 MS (f)2034 3256 MS (u)2044 3256 MS (s)2062 3256 MS (i)2074 3256 MS (o)2084 3256 MS (n)2101 3256 MS
+( )2117 3256 MS
+(s)928 3294 MS (a)940 3294 MS (n)955 3294 MS (s)972 3294 MS ( )985 3294 MS (l)993 3294 MS (\222)1002 3294 MS (a)1013 3294 MS (u)1028 3294 MS (t)1045 3294 MS (o)1054 3294 MS (r)1071 3294 MS (i)1082 3294 MS (s)1092 3294 MS (a)1104 3294 MS (t)1119 3294 MS
+(i)1128 3294 MS (o)1138 3294 MS (n)1154 3294 MS ( )1171 3294 MS (e)1180 3294 MS (x)1194 3294 MS (p)1211 3294 MS (r)1227 3294 MS (e)1239 3294 MS (s)1254 3294 MS (s)1267 3294 MS (e)1280 3294 MS ( )1294 3294 MS (d)1303 3294 MS (u)1319 3294 MS ( )1336 3294 MS
+(D)1344 3294 MS (M)1368 3294 MS (2)1397 3294 MS (S)1414 3294 MS
+[50 0 0 -50 0 0]/Times-Roman MF
+( )1432 3294 MS
+[67 0 0 -67 0 0]/Helvetica-Bold MF
+(8)310 592 MS
+( )347 592 MS
+LATENC /_Helvetica-Bold /Helvetica-Bold reencode
+[67 0 0 -67 0 0]/_Helvetica-Bold MF
+(L)400 592 MS (a)441 592 MS ( )478 592 MS (d)497 592 MS (o)538 592 MS (n)578 592 MS (n)619 592 MS (\351)660 592 MS (e)697 592 MS ( )734 592 MS (p)753 592 MS (a)792 592 MS (r)829 592 MS (a)855 592 MS (l)891 592 MS (l)910 592 MS
+(\350)929 592 MS (l)965 592 MS (e)984 592 MS
+( )1021 592 MS
+[50 0 0 -50 0 0]/Times-Roman MF
+( )235 667 MS
+LATENC /_Times-Roman /Times-Roman reencode
+[50 0 0 -50 0 0]/_Times-Roman MF
+(L)348 724 MS (a)378 724 MS ( )400 724 MS (d)418 724 MS (o)443 724 MS (n)469 724 MS (n)494 724 MS (\351)518 724 MS (e)540 724 MS ( )562 724 MS (p)580 724 MS (a)605 724 MS (r)627 724 MS (a)644 724 MS (l)667 724 MS (l)681 724 MS
+(\350)694 724 MS (l)717 724 MS (e)730 724 MS ( )752 724 MS (h)771 724 MS (\351)796 724 MS (r)818 724 MS (i)836 724 MS (t)848 724 MS (e)863 724 MS ( )885 724 MS (d)903 724 MS (e)928 724 MS ( )950 724 MS (l)969 724 MS (\222)982 724 MS
+(o)998 724 MS (b)1024 724 MS (j)1049 724 MS (e)1062 724 MS (t)1084 724 MS ( )1099 724 MS (p)1117 724 MS (a)1142 724 MS (r)1164 724 MS (a)1181 724 MS (l)1204 724 MS (l)1217 724 MS (\350)1230 724 MS (l)1253 724 MS (e)1266 724 MS ( )1288 724 MS
+(g)1306 724 MS (\351)1332 724 MS (n)1355 724 MS (\351)1379 724 MS (r)1401 724 MS (i)1419 724 MS (q)1432 724 MS (u)1457 724 MS (e)1482 724 MS (.)1504 724 MS ( )1517 724 MS (C)1535 724 MS (\222)1568 724 MS (e)1585 724 MS (s)1607 724 MS (t)1626 724 MS
+( )1641 724 MS (u)1659 724 MS (n)1684 724 MS (e)1708 724 MS ( )1730 724 MS (c)1749 724 MS (o)1771 724 MS (l)1797 724 MS (l)1810 724 MS (e)1823 724 MS (c)1846 724 MS (t)1868 724 MS (i)1884 724 MS (o)1896 724 MS (n)1922 724 MS ( )1946 724 MS
+(d)1964 724 MS (\222)1989 724 MS (o)2005 724 MS (b)2031 724 MS (j)2056 724 MS (e)2069 724 MS (t)2091 724 MS (s)2106 724 MS ( )2125 724 MS
+(i)235 782 MS (d)248 782 MS (e)273 782 MS (n)296 782 MS (t)320 782 MS (i)336 782 MS (q)348 782 MS (u)373 782 MS (e)398 782 MS (s)420 782 MS ( )439 782 MS (d)453 782 MS (i)479 782 MS (s)492 782 MS (t)511 782 MS (r)526 782 MS
+(i)544 782 MS (b)557 782 MS (u)581 782 MS (\351)606 782 MS (s)629 782 MS ( )648 782 MS (s)662 782 MS (u)681 782 MS (r)706 782 MS ( )723 782 MS (d)737 782 MS (i)763 782 MS (f)776 782 MS (f)792 782 MS (\351)808 782 MS (r)830 782 MS
+(e)847 782 MS (n)870 782 MS (t)894 782 MS (s)909 782 MS ( )928 782 MS (p)942 782 MS (r)967 782 MS (o)984 782 MS (c)1010 782 MS (e)1032 782 MS (s)1054 782 MS (s)1073 782 MS (u)1092 782 MS (s)1117 782 MS (.)1136 782 MS ( )1149 782 MS
+(S)1163 782 MS (o)1191 782 MS (n)1217 782 MS ( )1241 782 MS (i)1254 782 MS (n)1267 782 MS (t)1291 782 MS (e)1306 782 MS (r)1328 782 MS (f)1346 782 MS (a)1361 782 MS (c)1384 782 MS (e)1406 782 MS ( )1428 782 MS (C)1442 782 MS (O)1475 782 MS
+(R)1511 782 MS (B)1545 782 MS (A)1579 782 MS ( )1614 782 MS (e)1628 782 MS (s)1650 782 MS (t)1669 782 MS ( )1684 782 MS (s)1698 782 MS (p)1717 782 MS (\351)1742 782 MS (c)1764 782 MS (i)1787 782 MS (f)1800 782 MS (i)1817 782 MS (q)1830 782 MS
+(u)1855 782 MS (e)1880 782 MS ( )1902 782 MS (a)1916 782 MS (u)1938 782 MS ( )1963 782 MS (t)1977 782 MS (y)1992 782 MS (p)2015 782 MS (e)2041 782 MS ( )2063 782 MS (d)2077 782 MS (e)2102 782 MS ( )2125 782 MS
+(l)235 839 MS (a)248 839 MS ( )271 839 MS (d)287 839 MS (o)312 839 MS
+(n)338 839 MS (n)363 839 MS (\351)387 839 MS (e)409 839 MS (,)431 839 MS ( )444 839 MS (p)460 839 MS (a)485 839 MS (r)507 839 MS ( )524 839 MS (e)540 839 MS (x)563 839 MS (e)588 839 MS (m)611 839 MS (p)648 839 MS (l)674 839 MS
+(e)687 839 MS ( )710 839 MS (u)726 839 MS (n)752 839 MS (e)776 839 MS ( )799 839 MS (s)815 839 MS (\351)834 839 MS (q)856 839 MS (u)881 839 MS (e)907 839 MS (n)930 839 MS (c)954 839 MS (e)976 839 MS ( )998 839 MS (d)1014 839 MS
+(e)1040 839 MS ( )1062 839 MS (d)1078 839 MS (o)1103 839 MS (u)1129 839 MS (b)1154 839 MS (l)1179 839 MS (e)1192 839 MS (s)1215 839 MS ( )1234 839 MS (f)1251 839 MS (l)1268 839 MS (o)1280 839 MS (t)1306 839 MS (t)1320 839 MS (a)1335 839 MS
+(n)1357 839 MS (t)1381 839 MS (s)1396 839 MS ( )1415 839 MS (p)1431 839 MS (o)1456 839 MS (u)1482 839 MS (r)1507 839 MS ( )1524 839 MS (u)1540 839 MS (n)1565 839 MS ( )1589 839 MS (v)1606 839 MS (e)1630 839 MS (c)1652 839 MS (t)1674 839 MS
+(e)1689 839 MS (u)1711 839 MS (r)1736 839 MS (.)1753 839 MS ( )1766 839 MS (C)1782 839 MS (e)1815 839 MS (p)1837 839 MS (e)1862 839 MS (n)1885 839 MS (d)1909 839 MS (a)1934 839 MS (n)1957 839 MS (t)1981 839 MS (,)1996 839 MS ( )2009 839 MS
+(i)2026 839 MS (l)2039 839 MS ( )2052 839 MS (e)2068 839 MS (s)2091 839 MS (t)2110 839 MS ( )2125 839 MS
+(n)235 897 MS (\351)259 897 MS (c)281 897 MS (e)304 897 MS (s)326 897 MS (s)345 897 MS (a)365 897 MS (i)388 897 MS (r)400 897 MS (e)417 897 MS ( )439 897 MS (d)455 897 MS (e)480 897 MS ( )502 897 MS (s)518 897 MS (p)537 897 MS
+(\351)562 897 MS (c)585 897 MS (i)608 897 MS (f)621 897 MS (i)638 897 MS (e)651 897 MS (r)673 897 MS ( )690 897 MS (c)706 897 MS (e)728 897 MS (r)750 897 MS (t)767 897 MS (a)782 897 MS (i)804 897 MS (n)817 897 MS (s)842 897 MS
+( )861 897 MS (s)877 897 MS (e)896 897 MS (r)918 897 MS (v)936 897 MS (i)961 897 MS (c)974 897 MS (e)996 897 MS (s)1018 897 MS ( )1037 897 MS (q)1053 897 MS (u)1078 897 MS (i)1104 897 MS ( )1116 897 MS (p)1132 897 MS (e)1158 897 MS
+(r)1180 897 MS (m)1198 897 MS (e)1235 897 MS (t)1258 897 MS (t)1272 897 MS (r)1286 897 MS (o)1302 897 MS (n)1328 897 MS (t)1352 897 MS ( )1367 897 MS (a)1383 897 MS (u)1405 897 MS ( )1430 897 MS (c)1446 897 MS (l)1468 897 MS (i)1481 897 MS
+(e)1494 897 MS (n)1517 897 MS (t)1541 897 MS ( )1556 897 MS (d)1572 897 MS (\222)1597 897 MS (a)1613 897 MS (v)1635 897 MS (o)1659 897 MS (i)1686 897 MS (r)1698 897 MS ( )1715 897 MS (d)1731 897 MS (e)1756 897 MS (s)1778 897 MS ( )1797 897 MS
+(r)1813 897 MS (e)1830 897 MS (n)1852 897 MS (s)1877 897 MS (e)1896 897 MS (i)1919 897 MS (g)1932 897 MS (n)1958 897 MS (e)1982 897 MS (m)2005 897 MS (e)2043 897 MS (n)2066 897 MS (t)2090 897 MS (s)2105 897 MS ( )2125 897 MS
+(s)235 954 MS (u)254 954 MS (r)279 954 MS ( )296 954 MS (l)318 954 MS (a)330 954 MS ( )352 954 MS (d)373 954 MS (i)399 954 MS (s)412 954 MS (t)431 954 MS (r)446 954 MS (i)463 954 MS (b)476 954 MS (u)500 954 MS (t)525 954 MS
+(i)541 954 MS (o)553 954 MS (n)579 954 MS ( )603 954 MS (d)624 954 MS (e)649 954 MS ( )671 954 MS (l)693 954 MS (\222)706 954 MS (o)722 954 MS (b)748 954 MS (j)773 954 MS (e)786 954 MS (t)808 954 MS ( )823 954 MS (p)844 954 MS
+(a)869 954 MS (r)891 954 MS (a)908 954 MS (l)930 954 MS (l)943 954 MS (\350)956 954 MS (l)979 954 MS (e)992 954 MS ( )1014 954 MS (s)1035 954 MS (i)1055 954 MS (t)1067 954 MS (u)1082 954 MS (\351)1107 954 MS ( )1129 954 MS (s)1150 954 MS
+(u)1169 954 MS (r)1194 954 MS ( )1211 954 MS (l)1233 954 MS (e)1246 954 MS ( )1268 954 MS (s)1289 954 MS (e)1308 954 MS (r)1330 954 MS (v)1347 954 MS (e)1371 954 MS (u)1393 954 MS (r)1418 954 MS (.)1435 954 MS ( )1448 954 MS (N)1469 954 MS
+(o)1505 954 MS (t)1530 954 MS (a)1545 954 MS (m)1567 954 MS (m)1605 954 MS (e)1643 954 MS (n)1666 954 MS (t)1690 954 MS (,)1705 954 MS ( )1718 954 MS
+(i)1739 954 MS (l)1752 954 MS ( )1764 954 MS (e)1785 954 MS (s)1808 954 MS (t)1827 954 MS ( )1842 954 MS (i)1863 954 MS (m)1876 954 MS (p)1914 954 MS (o)1939 954 MS (r)1965 954 MS (t)1982 954 MS (a)1997 954 MS (n)2019 954 MS (t)2043 954 MS
+( )2057 954 MS (d)2078 954 MS (e)2103 954 MS ( )2125 954 MS
+(p)235 1012 MS (o)260 1012 MS (u)286 1012 MS (v)311 1012 MS (o)335 1012 MS (i)361 1012 MS (r)373 1012 MS ( )390 1012 MS (r)414 1012 MS (\351)431 1012 MS (c)453 1012 MS (u)475 1012 MS (p)500 1012 MS (\351)525 1012 MS (r)547 1012 MS (e)564 1012 MS
+(r)586 1012 MS ( )603 1012 MS (l)628 1012 MS (a)640 1012 MS ( )662 1012 MS (t)686 1012 MS (a)701 1012 MS (i)724 1012 MS (l)737 1012 MS (l)751 1012 MS (e)764 1012 MS ( )786 1012 MS (t)810 1012 MS (o)824 1012 MS (t)849 1012 MS (a)864 1012 MS
+(l)886 1012 MS (e)899 1012 MS ( )921 1012 MS (d)945 1012 MS (e)970 1012 MS ( )992 1012 MS (l)1017 1012 MS (\222)1030 1012 MS (o)1046 1012 MS (b)1072 1012 MS (j)1097 1012 MS (e)1110 1012 MS (t)1132 1012 MS ( )1147 1012 MS (e)1171 1012 MS (t)1193 1012 MS
+( )1208 1012 MS (s)1232 1012 MS (a)1250 1012 MS ( )1272 1012 MS (d)1296 1012 MS (i)1322 1012 MS (s)1334 1012 MS (t)1353 1012 MS (r)1368 1012 MS (i)1386 1012 MS (b)1399 1012 MS (u)1423 1012 MS (t)1448 1012 MS (i)1464 1012 MS (o)1476 1012 MS (n)1502 1012 MS
+( )1526 1012 MS (s)1550 1012 MS (u)1569 1012 MS (r)1594 1012 MS ( )1611 1012 MS (l)1636 1012 MS (e)1648 1012 MS (s)1671 1012 MS ( )1690 1012 MS (d)1714 1012 MS (i)1740 1012 MS (f)1753 1012 MS (f)1770 1012 MS (\351)1786 1012 MS (r)1808 1012 MS (e)1825 1012 MS
+(n)1848 1012 MS (t)1872 1012 MS (s)1887 1012 MS ( )1906 1012 MS (p)1930 1012 MS (r)1955 1012 MS (o)1972 1012 MS (c)1998 1012 MS (e)2020 1012 MS (s)2042 1012 MS (s)2061 1012 MS (u)2080 1012 MS (s)2105 1012 MS ( )2125 1012 MS
+(c)235 1069 MS (o)257 1069 MS (n)283 1069 MS (t)307 1069 MS (e)322 1069 MS (n)344 1069 MS (a)368 1069 MS (n)390 1069 MS (t)414 1069 MS ( )429 1069 MS (l)443 1069 MS (e)455 1069 MS ( )477 1069 MS (c)490 1069 MS (o)512 1069 MS (m)538 1069 MS
+(p)575 1069 MS (o)600 1069 MS (s)626 1069 MS (a)645 1069 MS (n)668 1069 MS (t)692 1069 MS ( )707 1069 MS (p)720 1069 MS (a)745 1069 MS (r)767 1069 MS (a)784 1069 MS (l)806 1069 MS (l)819 1069 MS (\350)832 1069 MS (l)855 1069 MS (e)868 1069 MS
+( )890 1069 MS (q)903 1069 MS (u)928 1069 MS (i)954 1069 MS ( )966 1069 MS (a)980 1069 MS (b)1003 1069 MS (r)1027 1069 MS (i)1045 1069 MS (t)1057 1069 MS (e)1072 1069 MS ( )1094 1069 MS (l)1108 1069 MS (a)1120 1069 MS ( )1142 1069 MS (d)1155 1069 MS
+(o)1180 1069 MS (n)1206 1069 MS (n)1230 1069 MS (\351)1255 1069 MS (e)1277 1069 MS (.)1299 1069 MS
+( )1312 1069 MS
+( )348 1127 MS
+(L)348 1184 MS (e)378 1184 MS ( )400 1184 MS (c)420 1184 MS (l)443 1184 MS (i)457 1184 MS (e)470 1184 MS (n)493 1184 MS (t)517 1184 MS ( )532 1184 MS (q)552 1184 MS (u)577 1184 MS (i)602 1184 MS ( )614 1184 MS (v)635 1184 MS (e)660 1184 MS
+(u)682 1184 MS (t)707 1184 MS ( )722 1184 MS (r)742 1184 MS (\351)759 1184 MS (c)781 1184 MS (u)803 1184 MS (p)828 1184 MS (\351)853 1184 MS (r)875 1184 MS (e)892 1184 MS (r)914 1184 MS ( )931 1184 MS (u)951 1184 MS (n)976 1184 MS (e)1000 1184 MS
+( )1022 1184 MS (d)1042 1184 MS (o)1067 1184 MS (n)1093 1184 MS (n)1117 1184 MS (\351)1141 1184 MS (e)1163 1184 MS ( )1185 1184 MS (p)1205 1184 MS (a)1231 1184 MS (r)1253 1184 MS (a)1270 1184 MS (l)1293 1184 MS (l)1306 1184 MS (\350)1319 1184 MS (l)1342 1184 MS
+(e)1356 1184 MS (,)1378 1184 MS ( )1391 1184 MS (p)1411 1184 MS (e)1436 1184 MS (u)1458 1184 MS (t)1483 1184 MS ( )1498 1184 MS (\352)1518 1184 MS (t)1539 1184 MS (r)1553 1184 MS (e)1570 1184 MS ( )1592 1184 MS (l)1612 1184 MS (u)1624 1184 MS (i)1650 1184 MS
+( )1663 1184 MS (m)1684 1184 MS (\352)1722 1184 MS (m)1745 1184 MS (e)1783 1184 MS ( )1805 1184 MS (p)1825 1184 MS (a)1850 1184 MS (r)1872 1184 MS (a)1889 1184 MS (l)1912 1184 MS (l)1926 1184 MS (\350)1939 1184 MS (l)1962 1184 MS (e)1975 1184 MS (,)1997 1184 MS
+( )2010 1184 MS (m)2031 1184 MS (a)2069 1184 MS (i)2092 1184 MS (s)2105 1184 MS ( )2125 1184 MS
+(a)235 1242 MS (v)257 1242 MS (e)281 1242 MS (c)304 1242 MS ( )326 1242 MS (u)344 1242 MS (n)369 1242 MS ( )393 1242 MS (n)412 1242 MS (o)436 1242 MS (m)462 1242 MS (b)500 1242 MS (r)524 1242 MS (e)541 1242 MS ( )563 1242 MS (d)581 1242 MS
+(e)606 1242 MS ( )628 1242 MS (p)646 1242 MS (r)671 1242 MS (o)688 1242 MS (c)714 1242 MS (e)736 1242 MS (s)758 1242 MS (s)777 1242 MS (u)796 1242 MS (s)821 1242 MS ( )840 1242 MS (d)858 1242 MS (i)884 1242 MS (f)897 1242 MS (f)914 1242 MS
+(\351)930 1242 MS (r)952 1242 MS (e)969 1242 MS (n)992 1242 MS (t)1016 1242 MS (s)1031 1242 MS ( )1050 1242 MS (d)1068 1242 MS (u)1093 1242 MS ( )1118 1242 MS (s)1136 1242 MS (e)1155 1242 MS (r)1177 1242 MS (v)1194 1242 MS (e)1218 1242 MS (u)1240 1242 MS
+(r)1265 1242 MS (.)1282 1242 MS ( )1295 1242 MS (L)1313 1242 MS (o)1342 1242 MS (r)1368 1242 MS (s)1385 1242 MS ( )1404 1242 MS (d)1422 1242 MS (u)1447 1242 MS ( )1471 1242 MS (t)1488 1242 MS (r)1503 1242 MS (a)1520 1242 MS (n)1542 1242 MS (s)1566 1242 MS
+(f)1586 1242 MS (e)1601 1242 MS (r)1623 1242 MS (t)1640 1242 MS ( )1655 1242 MS (d)1673 1242 MS (e)1698 1242 MS (s)1720 1242 MS ( )1739 1242 MS (d)1757 1242 MS (o)1782 1242 MS (n)1808 1242 MS (n)1832 1242 MS (\351)1856 1242 MS (e)1878 1242 MS (s)1900 1242 MS
+(,)1919 1242 MS ( )1932 1242 MS (i)1951 1242 MS (l)1964 1242 MS ( )1977 1242 MS (y)1996 1242 MS ( )2019 1242 MS (a)2037 1242 MS (u)2059 1242 MS (r)2084 1242 MS (a)2102 1242 MS ( )2125 1242 MS
+(d)235 1299 MS (o)260 1299 MS (n)286 1299 MS (c)310 1299 MS ( )332 1299 MS (r)355 1299 MS (e)372 1299 MS (d)394 1299 MS (i)420 1299 MS (s)432 1299 MS (t)451 1299 MS (r)466 1299 MS (i)484 1299 MS (b)497 1299 MS (u)521 1299 MS (t)546 1299 MS
+(i)561 1299 MS (o)573 1299 MS (n)599 1299 MS ( )623 1299 MS (d)646 1299 MS (e)672 1299 MS ( )694 1299 MS (l)718 1299 MS (\222)731 1299 MS (o)747 1299 MS (b)773 1299 MS (j)798 1299 MS (e)811 1299 MS (t)833 1299 MS (.)848 1299 MS ( )861 1299 MS
+(I)884 1299 MS (l)901 1299 MS ( )913 1299 MS (f)937 1299 MS (a)953 1299 MS (u)975 1299 MS (t)1000 1299 MS ( )1015 1299 MS (q)1038 1299 MS (u)1063 1299 MS (e)1088 1299 MS ( )1110 1299 MS (c)1133 1299 MS (e)1155 1299 MS ( )1177 1299 MS (m)1201 1299 MS
+(\351)1239 1299 MS (c)1261 1299 MS (a)1283 1299 MS (n)1306 1299 MS (i)1331 1299 MS (s)1344 1299 MS (m)1364 1299 MS (e)1402 1299 MS ( )1424 1299 MS (s)1447 1299 MS (o)1466 1299 MS (i)1493 1299 MS (t)1505 1299 MS ( )1520 1299 MS (o)1543 1299 MS (p)1569 1299 MS
+(t)1593 1299 MS (i)1608 1299 MS (m)1621 1299 MS (a)1659 1299 MS (l)1682 1299 MS (,)1694 1299 MS ( )1707 1299 MS (c)1730 1299 MS (\222)1753 1299 MS (e)1769 1299 MS (s)1792 1299 MS (t)1811 1299 MS ( )1826 1299 MS (\340)1849 1299 MS ( )1871 1299 MS (d)1894 1299 MS
+(i)1919 1299 MS (r)1931 1299 MS (e)1948 1299 MS ( )1970 1299 MS (q)1993 1299 MS (u)2018 1299 MS (e)2043 1299 MS ( )2065 1299 MS (l)2089 1299 MS (a)2102 1299 MS ( )2125 1299 MS
+(d)235 1357 MS (o)260 1357 MS (n)286 1357 MS (n)310 1357 MS (\351)334 1357 MS (e)356 1357 MS ( )378 1357 MS (n)402 1357 MS (e)426 1357 MS ( )448 1357 MS (t)471 1357 MS (r)486 1357 MS (a)503 1357 MS (n)525 1357 MS (s)549 1357 MS (i)569 1357 MS
+(t)581 1357 MS (e)596 1357 MS ( )618 1357 MS (q)641 1357 MS (u)666 1357 MS (\222)691 1357 MS (u)707 1357 MS (n)733 1357 MS (e)758 1357 MS ( )780 1357 MS (s)803 1357 MS (e)822 1357 MS (u)844 1357 MS (l)870 1357 MS (e)883 1357 MS ( )905 1357 MS
+(f)929 1357 MS (o)944 1357 MS (i)971 1357 MS (s)984 1357 MS ( )1003 1357 MS (s)1026 1357 MS (u)1045 1357 MS (r)1070 1357 MS ( )1087 1357 MS (l)1111 1357 MS (e)1123 1357 MS ( )1145 1357 MS (r)1168 1357 MS (\351)1185 1357 MS (s)1207 1357 MS (e)1227 1357 MS
+(a)1250 1357 MS (u)1272 1357 MS ( )1297 1357 MS (e)1320 1357 MS (t)1342 1357 MS ( )1357 1357 MS (q)1380 1357 MS (u)1405 1357 MS (e)1430 1357 MS ( )1452 1357 MS (c)1475 1357 MS (h)1497 1357 MS (a)1521 1357 MS (q)1543 1357 MS (u)1568 1357 MS (e)1593 1357 MS
+( )1615 1357 MS (p)1638 1357 MS (r)1663 1357 MS (o)1679 1357 MS (c)1705 1357 MS (e)1727 1357 MS (s)1749 1357 MS (s)1768 1357 MS (u)1787 1357 MS
+(s)1812 1357 MS ( )1831 1357 MS (c)1854 1357 MS (l)1877 1357 MS (i)1891 1357 MS (e)1904 1357 MS (n)1927 1357 MS (t)1951 1357 MS ( )1966 1357 MS (t)1989 1357 MS (i)2004 1357 MS (r)2016 1357 MS (e)2033 1357 MS ( )2055 1357 MS (e)2078 1357 MS (n)2100 1357 MS
+( )2125 1357 MS
+(p)235 1414 MS (a)260 1414 MS (r)282 1414 MS (a)299 1414 MS (l)322 1414 MS (l)335 1414 MS (\350)348 1414 MS (l)371 1414 MS (e)384 1414 MS ( )406 1414 MS (l)436 1414 MS (e)449 1414 MS (s)471 1414 MS ( )490 1414 MS (d)519 1414 MS (o)544 1414 MS
+(n)570 1414 MS (n)595 1414 MS (\351)619 1414 MS (e)641 1414 MS (s)664 1414 MS ( )683 1414 MS (q)712 1414 MS (u)737 1414 MS (\222)762 1414 MS (i)779 1414 MS (l)793 1414 MS ( )805 1414 MS (a)834 1414 MS ( )856 1414 MS (b)886 1414 MS (e)910 1414 MS
+(s)933 1414 MS (o)952 1414 MS (i)979 1414 MS (n)992 1414 MS ( )1016 1414 MS (e)1045 1414 MS (n)1067 1414 MS ( )1091 1414 MS (l)1121 1414 MS (o)1133 1414 MS (c)1159 1414 MS (a)1181 1414 MS (l)1204 1414 MS ( )1217 1414 MS (e)1247 1414 MS (t)1269 1414 MS
+( )1284 1414 MS (u)1313 1414 MS (n)1338 1414 MS (i)1363 1414 MS (q)1375 1414 MS (u)1400 1414 MS (e)1425 1414 MS (m)1448 1414 MS (e)1486 1414 MS (n)1509 1414 MS (t)1533 1414 MS ( )1548 1414 MS (c)1577 1414 MS (e)1599 1414 MS (l)1622 1414 MS (l)1635 1414 MS
+(e)1648 1414 MS (s)1670 1414 MS
+(-)1689 1414 MS
+(c)1706 1414 MS (i)1729 1414 MS (.)1741 1414 MS ( )1754 1414 MS (I)1783 1414 MS (l)1801 1414 MS ( )1813 1414 MS (n)1843 1414 MS (e)1867 1414 MS ( )1889 1414 MS (s)1918 1414 MS (\222)1938 1414 MS (a)1954 1414 MS (g)1976 1414 MS (i)2002 1414 MS (t)2014 1414 MS
+( )2029 1414 MS (p)2058 1414 MS (a)2083 1414 MS (s)2105 1414 MS ( )2125 1414 MS
+(d)235 1472 MS (\222)260 1472 MS (e)276 1472 MS (f)299 1472 MS (f)315 1472 MS (e)331 1472 MS (c)354 1472 MS (t)376 1472 MS (u)391 1472 MS (e)416 1472 MS (r)438 1472 MS ( )455 1472 MS (u)476 1472 MS (n)501 1472 MS (e)525 1472 MS ( )547 1472 MS
+(r)568 1472 MS (e)585 1472 MS (d)607 1472 MS (i)633 1472 MS (s)646 1472 MS (t)665 1472 MS (r)680 1472 MS (i)697 1472 MS (b)710 1472 MS (u)734 1472 MS (t)759 1472 MS (i)775 1472 MS (o)787 1472 MS (n)813 1472 MS ( )837 1472 MS (s)858 1472 MS
+(u)877 1472 MS (r)902 1472 MS ( )919 1472 MS (l)941 1472 MS (e)954 1472 MS (s)977 1472 MS ( )996 1472 MS (d)1017 1472 MS (i)1043 1472 MS (f)1056 1472 MS (f)1073 1472 MS (\351)1089 1472 MS (r)1111 1472 MS (e)1128 1472 MS (n)1151 1472 MS (t)1175 1472 MS
+(s)1190 1472 MS ( )1209 1472 MS (p)1230 1472 MS (r)1255 1472 MS (o)1272 1472 MS (c)1298 1472 MS (e)1320 1472 MS (s)1342 1472 MS (s)1361 1472 MS (u)1380 1472 MS (s)1405 1472 MS ( )1424 1472 MS (d)1445 1472 MS (u)1470 1472 MS ( )1495 1472 MS (c)1516 1472 MS
+(l)1539 1472 MS (i)1552 1472 MS (e)1565 1472 MS (n)1588 1472 MS (t)1612 1472 MS ( )1627 1472 MS (a)1648 1472 MS (p)1670 1472 MS (r)1695 1472 MS (\350)1712 1472 MS (s)1734 1472 MS ( )1753 1472 MS (l)1775 1472 MS (e)1788 1472 MS ( )1810 1472 MS (t)1831 1472 MS
+(r)1846 1472 MS (a)1863 1472 MS (n)1885 1472 MS (s)1910 1472 MS (f)1930 1472 MS (e)1945 1472 MS (r)1967 1472 MS (t)1984 1472 MS ( )1999 1472 MS (d)2020 1472 MS (e)2045 1472 MS ( )2067 1472 MS (l)2089 1472 MS (a)2102 1472 MS ( )2125 1472 MS
+(d)235 1529 MS (o)260 1529 MS (n)286 1529 MS (n)310 1529 MS (\351)334 1529 MS (e)356 1529 MS ( )378 1529 MS (p)396 1529 MS (a)421 1529 MS (r)443 1529 MS (a)460 1529 MS (l)483 1529 MS (l)497 1529 MS (\350)510 1529 MS (l)533 1529 MS (e)546 1529 MS
+(.)568 1529 MS ( )581 1529 MS (C)599 1529 MS (e)632 1529 MS (c)654 1529 MS (i)677 1529 MS ( )690 1529 MS (e)708 1529 MS (s)730 1529 MS (t)749 1529 MS ( )764 1529 MS (f)782 1529 MS (a)798 1529 MS (i)821 1529 MS (s)834 1529 MS (a)853 1529 MS
+(b)876 1529 MS (l)901 1529 MS (e)914 1529 MS ( )936 1529 MS (p)954 1529 MS (u)979 1529 MS (i)1005 1529 MS (s)1018 1529 MS (q)1037 1529 MS (u)1062 1529 MS (e)1087 1529 MS ( )1109 1529 MS (l)1128 1529 MS (e)1141 1529 MS ( )1163 1529 MS (c)1181 1529 MS
+(l)1204 1529 MS (i)1218 1529 MS (e)1231 1529 MS (n)1254 1529 MS (t)1278 1529 MS ( )1293 1529 MS (\340)1311 1529 MS ( )1333 1529 MS
+(a)1351 1529 MS (c)1373 1529 MS (c)1395 1529 MS (\350)1417 1529 MS (s)1439 1529 MS ( )1458 1529 MS (\340)1476 1529 MS ( )1498 1529 MS (l)1517 1529 MS (a)1529 1529 MS ( )1551 1529 MS (t)1569 1529 MS (a)1584 1529 MS (i)1607 1529 MS (l)1620 1529 MS (l)1634 1529 MS
+(e)1647 1529 MS ( )1669 1529 MS (t)1687 1529 MS (o)1701 1529 MS (t)1726 1529 MS (a)1741 1529 MS (l)1763 1529 MS (e)1776 1529 MS ( )1798 1529 MS (d)1816 1529 MS (e)1841 1529 MS ( )1863 1529 MS (l)1882 1529 MS (\222)1895 1529 MS (o)1911 1529 MS (b)1937 1529 MS
+(j)1962 1529 MS (e)1975 1529 MS (t)1997 1529 MS ( )2012 1529 MS (e)2030 1529 MS (t)2051 1529 MS ( )2066 1529 MS (s)2084 1529 MS (a)2103 1529 MS ( )2125 1529 MS
+(d)235 1586 MS (i)261 1586 MS (s)273 1586 MS (t)292 1586 MS (r)307 1586 MS (i)325 1586 MS (b)338 1586 MS (u)362 1586 MS (t)387 1586 MS (i)403 1586 MS (o)415 1586 MS (n)441 1586 MS ( )465 1586 MS (s)488 1586 MS (u)507 1586 MS (r)532 1586 MS
+( )549 1586 MS (l)573 1586 MS (e)585 1586 MS ( )607 1586 MS (s)631 1586 MS (e)650 1586 MS (r)672 1586 MS (v)690 1586 MS (e)714 1586 MS (u)736 1586 MS (r)761 1586 MS (.)778 1586 MS ( )791 1586 MS (C)814 1586 MS (h)847 1586 MS (a)871 1586 MS
+(q)893 1586 MS (u)918 1586 MS (e)944 1586 MS ( )966 1586 MS (p)989 1586 MS (r)1014 1586 MS (o)1031 1586 MS (c)1057 1586 MS (e)1079 1586 MS (s)1101 1586 MS (s)1120 1586 MS (u)1139 1586 MS (s)1164 1586 MS ( )1183 1586 MS (d)1206 1586 MS (u)1231 1586 MS
+( )1257 1586 MS (c)1280 1586 MS (l)1303 1586 MS (i)1316 1586 MS (e)1329 1586 MS (n)1352 1586 MS (t)1376 1586 MS ( )1391 1586 MS (s)1414 1586 MS (e)1433 1586 MS (r)1455 1586 MS (a)1472 1586 MS ( )1494 1586 MS (d)1517 1586 MS (o)1542 1586 MS (n)1568 1586 MS
+(c)1592 1586 MS ( )1614 1586 MS (c)1637 1586 MS (a)1659 1586 MS (p)1681 1586 MS (a)1706 1586 MS (b)1729 1586 MS (l)1754 1586 MS (e)1767 1586 MS ( )1789 1586 MS (d)1812 1586 MS (e)1837 1586 MS ( )1859 1586 MS (d)1882 1586 MS (e)1907 1586 MS (m)1930 1586 MS
+(a)1968 1586 MS (n)1991 1586 MS (d)2015 1586 MS (e)2040 1586 MS (r)2062 1586 MS ( )2079 1586 MS (\340)2102 1586 MS ( )2125 1586 MS
+(c)235 1644 MS (h)257 1644 MS (a)281 1644 MS (q)303 1644 MS (u)328 1644 MS (e)354 1644 MS ( )376 1644 MS (p)389 1644 MS (r)414 1644 MS (o)431 1644 MS (c)457 1644 MS (e)479 1644 MS (s)501 1644 MS (s)520 1644 MS (u)539 1644 MS (s)564 1644 MS
+( )583 1644 MS (d)596 1644 MS (u)621 1644 MS ( )646 1644 MS (s)659 1644 MS (e)678 1644 MS (r)700 1644 MS (v)717 1644 MS (e)741 1644 MS (u)763 1644 MS (r)788 1644 MS ( )805 1644 MS (l)819 1644 MS (e)831 1644 MS (s)854 1644 MS ( )873 1644 MS
+(d)886 1644 MS (o)911 1644 MS (n)937 1644 MS (n)961 1644 MS (\351)985 1644 MS (e)1007 1644 MS (s)1030 1644 MS ( )1049 1644 MS (l)1063 1644 MS (o)1075 1644 MS (c)1101 1644 MS (a)1123 1644 MS (l)1146 1644 MS (e)1159 1644 MS (s)1181 1644 MS ( )1200 1644 MS
+(d)1213 1644 MS (o)1239 1644 MS (n)1265 1644 MS (t)1289 1644 MS ( )1303 1644 MS (i)1316 1644 MS (l)1329 1644 MS ( )1342 1644 MS (a)1355 1644 MS ( )1377 1644 MS (b)1390 1644 MS (e)1415 1644 MS (s)1437 1644 MS (o)1456 1644 MS (i)1483 1644 MS (n)1496 1644 MS
+( )1520 1644 MS (e)1533 1644 MS (t)1555 1644 MS ( )1570 1644 MS (u)1583 1644 MS (n)1608 1644 MS (i)1633 1644 MS (q)1645 1644 MS (u)1670 1644 MS (e)1695 1644 MS (m)1718 1644 MS (e)1756 1644 MS (n)1779 1644 MS (t)1803 1644 MS ( )1818 1644 MS (c)1831 1644 MS
+(e)1853 1644 MS (l)1876 1644 MS (l)1889 1644 MS (e)1902 1644 MS (s)1924 1644 MS
+(-)1943 1644 MS
+(c)1960 1644 MS (i)1983 1644 MS (.)1995 1644 MS
+( )2008 1644 MS
+( )348 1701 MS
+(O)348 1759 MS (n)384 1759 MS ( )408 1759 MS (p)426 1759 MS (o)451 1759 MS (u)477 1759 MS (r)502 1759 MS (r)519 1759 MS (a)536 1759 MS (i)558 1759 MS (t)570 1759 MS ( )585 1759 MS (i)604 1759 MS (m)617 1759 MS (a)655 1759 MS (g)677 1759 MS
+(i)703 1759 MS (n)716 1759 MS (e)741 1759 MS (r)763 1759 MS ( )780 1759 MS (u)798 1759 MS (n)823 1759 MS (e)847 1759 MS ( )869 1759 MS (a)887 1759 MS (u)909 1759 MS (t)934 1759 MS (r)949 1759 MS (e)966 1759 MS ( )988 1759 MS (f)1006 1759 MS
+(a)1022 1759 MS (\347)1044 1759 MS (o)1066 1759 MS
+(n)1092 1759 MS ( )1116 1759 MS (d)1134 1759 MS (e)1159 1759 MS ( )1181 1759 MS (t)1199 1759 MS (r)1214 1759 MS (a)1231 1759 MS (n)1253 1759 MS (s)1277 1759 MS (f)1297 1759 MS (\351)1312 1759 MS (r)1334 1759 MS (e)1352 1759 MS (r)1374 1759 MS ( )1391 1759 MS
+(l)1409 1759 MS (e)1422 1759 MS (s)1444 1759 MS ( )1463 1759 MS (d)1481 1759 MS (o)1506 1759 MS (n)1532 1759 MS (n)1557 1759 MS (\351)1581 1759 MS (e)1603 1759 MS (s)1626 1759 MS
+( )1645 1759 MS
+(:)1658 1759 MS ( )1672 1759 MS (a)1690 1759 MS (u)1712 1759 MS ( )1737 1759 MS (l)1755 1759 MS (i)1768 1759 MS (e)1781 1759 MS (u)1804 1759 MS ( )1829 1759 MS (q)1847 1759 MS (u)1872 1759 MS (e)1897 1759 MS ( )1919 1759 MS (c)1937 1759 MS (e)1959 1759 MS
+( )1981 1759 MS (s)1999 1759 MS (o)2018 1759 MS (i)2045 1759 MS (t)2057 1759 MS ( )2072 1759 MS (l)2090 1759 MS (e)2102 1759 MS ( )2125 1759 MS
+(c)235 1816 MS (l)258 1816 MS (i)271 1816 MS (e)284 1816 MS (n)307 1816 MS (t)331 1816 MS ( )346 1816 MS (q)370 1816 MS (u)395 1816 MS (i)421 1816 MS ( )433 1816 MS (s)457 1816 MS (\351)476 1816 MS (l)499 1816 MS (e)512 1816 MS (c)534 1816 MS
+(t)556 1816 MS (i)572 1816 MS (o)584 1816 MS (n)610 1816 MS (n)635 1816 MS (e)659 1816 MS ( )681 1816 MS (l)706 1816 MS (e)719 1816 MS (s)741 1816 MS ( )760 1816 MS (v)785 1816 MS (a)809 1816 MS (l)832 1816 MS (e)845 1816 MS (u)867 1816 MS
+(r)892 1816 MS (s)909 1816 MS ( )928 1816 MS (d)952 1816 MS (o)977 1816 MS (n)1003 1816 MS (t)1027 1816 MS ( )1042 1816 MS (i)1066 1816 MS (l)1079 1816 MS ( )1092 1816 MS (a)1116 1816 MS ( )1138 1816 MS (b)1162 1816 MS (e)1187 1816 MS (s)1209 1816 MS
+(o)1228 1816 MS (i)1254 1816 MS (n)1267 1816 MS ( )1292 1816 MS (e)1316 1816 MS (n)1339 1816 MS ( )1363 1816 MS (f)1388 1816 MS (o)1403 1816 MS (n)1429 1816 MS (c)1453 1816 MS (t)1475 1816 MS (i)1491 1816 MS (o)1503 1816 MS (n)1529 1816 MS ( )1553 1816 MS
+(d)1577 1816 MS (e)1602 1816 MS ( )1624 1816 MS (l)1649 1816 MS (e)1661 1816 MS (u)1683 1816 MS (r)1708 1816 MS ( )1725 1816 MS (d)1749 1816 MS (i)1775 1816 MS (s)1788 1816 MS (t)1807 1816 MS (r)1822 1816 MS (i)1839 1816 MS (b)1852 1816 MS (u)1876 1816 MS
+(t)1901 1816 MS (i)1917 1816 MS (o)1929 1816 MS (n)1955 1816 MS ( )1979 1816 MS (s)2003 1816 MS (u)2022 1816 MS (r)2047 1816 MS ( )2064 1816 MS (l)2089 1816 MS (e)2102 1816 MS ( )2125 1816 MS
+(s)235 1874 MS (e)254 1874 MS (r)276 1874 MS (v)293 1874 MS (e)317 1874 MS (u)339 1874 MS (r)364 1874 MS (,)381 1874 MS ( )394 1874 MS (o)411 1874 MS (n)437 1874 MS ( )461 1874 MS (a)478 1874 MS (u)500 1874 MS (r)525 1874 MS (a)542 1874 MS
+(i)565 1874 MS (t)577 1874 MS ( )592 1874 MS (p)609 1874 MS (u)634 1874 MS ( )659 1874 MS (f)677 1874 MS (a)692 1874 MS (i)715 1874 MS (r)727 1874 MS (e)745 1874 MS ( )767 1874 MS (q)784 1874 MS (u)809 1874 MS (e)834 1874 MS ( )856 1874 MS
+(c)873 1874 MS (h)896 1874 MS (a)920 1874 MS (q)942 1874 MS (u)967 1874 MS (e)992 1874 MS ( )1014 1874 MS (p)1031 1874 MS (r)1056 1874 MS (o)1073 1874 MS (c)1099 1874 MS (e)1121 1874 MS (s)1143 1874 MS (s)1162 1874 MS (u)1181 1874 MS (s)1206 1874 MS
+( )1225 1874 MS (c)1243 1874 MS (l)1266 1874 MS (i)1279 1874 MS (e)1292 1874 MS (n)1315 1874 MS (t)1339 1874 MS ( )1354 1874 MS (d)1371 1874 MS (e)1396 1874 MS (m)1419 1874 MS (a)1456 1874 MS (n)1479 1874 MS (d)1503 1874 MS (e)1528 1874 MS ( )1550 1874 MS
+(\340)1568 1874 MS ( )1590 1874 MS (c)1607 1874 MS (h)1630 1874 MS (a)1654 1874 MS (q)1676 1874 MS (u)1701 1874 MS (e)1726 1874 MS ( )1748 1874 MS (p)1765 1874 MS (r)1790 1874 MS (o)1807 1874 MS (c)1833 1874 MS (e)1855 1874 MS (s)1877 1874 MS (s)1896 1874 MS
+(u)1915 1874 MS (s)1940 1874 MS ( )1959 1874 MS (s)1977 1874 MS (e)1996 1874 MS (r)2018 1874 MS (v)2035 1874 MS (e)2060 1874 MS (u)2082 1874 MS (r)2107 1874 MS ( )2125 1874 MS
+(l)235 1931 MS (e)248 1931 MS (s)271 1931 MS ( )290 1931 MS (d)307 1931 MS (o)332 1931 MS (n)358 1931 MS (n)383 1931 MS (\351)407 1931 MS (e)429 1931 MS (s)451 1931 MS ( )471 1931 MS (l)489 1931 MS (o)501 1931 MS (c)527 1931 MS (a)549 1931 MS
+(l)572 1931 MS (e)585 1931 MS (s)607 1931 MS ( )627 1931 MS
+(d)644 1931 MS (a)669 1931 MS (n)692 1931 MS (s)716 1931 MS ( )735 1931 MS (l)753 1931 MS (a)766 1931 MS ( )789 1931 MS (d)806 1931 MS (i)832 1931 MS (s)845 1931 MS (t)864 1931 MS (r)879 1931 MS (i)896 1931 MS (b)909 1931 MS (u)933 1931 MS
+(t)958 1931 MS (i)974 1931 MS (o)986 1931 MS (n)1012 1931 MS ( )1036 1931 MS (c)1053 1931 MS (l)1076 1931 MS (i)1090 1931 MS (e)1103 1931 MS (n)1126 1931 MS (t)1150 1931 MS (e)1165 1931 MS (.)1187 1931 MS ( )1200 1931 MS (C)1217 1931 MS (h)1251 1931 MS
+(a)1275 1931 MS (q)1297 1931 MS (u)1322 1931 MS (e)1347 1931 MS ( )1370 1931 MS (p)1387 1931 MS (r)1412 1931 MS (o)1429 1931 MS (c)1455 1931 MS (e)1477 1931 MS (s)1499 1931 MS (s)1518 1931 MS (u)1537 1931 MS (s)1562 1931 MS ( )1581 1931 MS (s)1598 1931 MS
+(e)1618 1931 MS (r)1640 1931 MS (v)1657 1931 MS (e)1682 1931 MS (u)1704 1931 MS (r)1729 1931 MS ( )1746 1931 MS (l)1764 1931 MS (u)1776 1931 MS (i)1802 1931 MS ( )1815 1931 MS (a)1832 1931 MS (u)1854 1931 MS (r)1879 1931 MS (a)1896 1931 MS (i)1919 1931 MS
+(t)1931 1931 MS ( )1946 1931 MS (r)1963 1931 MS (e)1980 1931 MS (n)2003 1931 MS (v)2028 1931 MS (o)2052 1931 MS (y)2079 1931 MS (\351)2102 1931 MS ( )2125 1931 MS
+(u)235 1989 MS (n)260 1989 MS (i)285 1989 MS (q)298 1989 MS (u)323 1989 MS (e)348 1989 MS (m)371 1989 MS (e)409 1989 MS (n)432 1989 MS (t)456 1989 MS ( )471 1989 MS (c)496 1989 MS (e)518 1989 MS (l)541 1989 MS (l)554 1989 MS (e)567 1989 MS
+(s)589 1989 MS ( )608 1989 MS (q)633 1989 MS (u)658 1989 MS (i)684 1989 MS ( )696 1989 MS (l)722 1989 MS (u)735 1989 MS (i)761 1989 MS ( )774 1989 MS (s)799 1989 MS (o)818 1989 MS (n)844 1989 MS (t)868 1989 MS ( )883 1989 MS (l)908 1989 MS
+(o)920 1989 MS (c)946 1989 MS (a)968 1989 MS (l)991 1989 MS (e)1004 1989 MS (s)1026 1989 MS (.)1045 1989 MS ( )1058 1989 MS (D)1083 1989 MS (a)1119 1989 MS (n)1142 1989 MS (s)1166 1989 MS ( )1185 1989 MS (c)1210 1989 MS (e)1232 1989 MS ( )1255 1989 MS
+(d)1280 1989 MS (e)1305 1989 MS (r)1327 1989 MS (n)1344 1989 MS (i)1369 1989 MS (e)1381 1989 MS (r)1403 1989 MS ( )1420 1989 MS (c)1445 1989 MS (a)1467 1989 MS (s)1489 1989 MS (,)1508 1989 MS ( )1521 1989 MS (l)1547 1989 MS (e)1560 1989 MS ( )1582 1989 MS
+(c)1607 1989 MS (l)1630 1989 MS (i)1643 1989 MS (e)1656 1989 MS (n)1679 1989 MS (t)1703 1989 MS ( )1718 1989 MS (n)1743 1989 MS (\222)1767 1989 MS (a)1784 1989 MS ( )1806 1989 MS (p)1831 1989 MS (a)1856 1989 MS (s)1878 1989 MS ( )1897 1989 MS (b)1922 1989 MS
+(e)1947 1989 MS (s)1969 1989 MS (o)1988 1989 MS (i)2015 1989 MS (n)2028 1989 MS ( )2052 1989 MS (d)2077 1989 MS (e)2102 1989 MS ( )2125 1989 MS
+(d)235 2046 MS (e)260 2046 MS (m)283 2046 MS (a)320 2046 MS (n)343 2046 MS (d)367 2046 MS (e)392 2046 MS (r)414 2046 MS ( )431 2046 MS (a)444 2046 MS (u)466 2046 MS ( )491 2046 MS (p)504 2046 MS (r)529 2046 MS (\351)546 2046 MS (a)568 2046 MS
+(l)591 2046 MS (a)603 2046 MS (b)626 2046 MS (l)651 2046 MS (e)664 2046 MS ( )686 2046 MS (a)699 2046 MS (u)721 2046 MS ( )746 2046 MS (s)759 2046 MS (e)778 2046 MS (r)800 2046 MS (v)818 2046 MS (e)842 2046 MS (u)864 2046 MS (r)889 2046 MS
+( )906 2046 MS (d)919 2046 MS (e)944 2046 MS ( )966 2046 MS (l)980 2046 MS (u)992 2046 MS (i)1018 2046 MS ( )1030 2046 MS (e)1043 2046 MS (n)1066 2046 MS (v)1091 2046 MS (o)1115 2046 MS (y)1142 2046 MS (e)1166 2046 MS (r)1188 2046 MS ( )1205 2046 MS
+(l)1219 2046 MS (a)1231 2046 MS ( )1254 2046 MS (d)1267 2046 MS (i)1292 2046 MS (s)1305 2046 MS (t)1324 2046 MS (r)1339 2046 MS (i)1356 2046 MS (b)1369 2046 MS (u)1393 2046 MS (t)1418 2046 MS (i)1434 2046 MS (o)1446 2046 MS (n)1472 2046 MS ( )1496 2046 MS
+(d)1509 2046 MS (e)1534 2046 MS (s)1556 2046 MS ( )1575 2046 MS (d)1588 2046 MS (o)1613 2046 MS (n)1639 2046 MS (n)1664 2046 MS (\351)1688 2046 MS (e)1710 2046 MS (s)1732 2046 MS ( )1751 2046 MS (\340)1764 2046 MS ( )1786 2046 MS (t)1799 2046 MS (r)1814 2046 MS
+(a)1831 2046 MS (n)1853 2046 MS (s)1877 2046 MS (f)1897 2046 MS (\351)1913 2046 MS (r)1935 2046 MS (e)1952 2046 MS (r)1974 2046 MS (.)1991 2046 MS
+( )2004 2046 MS
+( )348 2104 MS
+( )235 2161 MS
+showpage
+%%Page: 16 16
+14.449 827.879 translate 72 300 div dup neg scale
+0 0 transform .25 add round .25 sub exch .25 add round .25 sub exch itransform translate
+1 j
+1 setlinecap
+72 sl
+0.375 g
+n
+494 182 M
+494 155 472 133 445 133 c
+418 133 396 155 396 182 c
+396 209 418 231 445 231 c
+472 231 494 209 494 182 c
+cp
+CM 0.156 0.152 scale
+s
+SM
+71 sl
+n
+660 182 M
+660 155 638 133 611 133 c
+584 133 562 155 562 182 c
+562 209 584 231 611 231 c
+638 231 660 209 660 182 c
+cp
+CM 0.156 0.152 scale
+s
+SM
+n
+120 24 468 152 B
+1 g
+f
+1 sl
+n
+122 26 467 151 B
+cp
+s
+71 sl
+0.375 g
+n
+577 180 M
+577 153 555 131 528 131 c
+501 131 479 153 479 180 c
+479 206 501 228 528 228 c
+555 228 577 206 577 180 c
+cp
+gs
+1 g
+e
+gr
+CM 0.156 0.152 scale
+s
+SM
+n
+480 180 M
+575 180 L
+CM 0.156 0.152 scale
+s
+SM
+n
+34 18 562 187 B
+1 g
+f
+1 sl
+n
+36 20 561 186 B
+cp
+s
+n
+610 173 M
+591 173 L
+554 124 L
+579 126 L
+609 173 L
+610 173 L
+cp
+gs
+e
+gr
+s
+n
+448 170 M
+468 170 L
+504 122 L
+479 123 L
+449 170 L
+448 170 L
+cp
+gs
+e
+gr
+s
+0.375 g
+n
+473 140 M
+473 137 470 135 467 135 c
+464 135 462 137 462 140 c
+462 142 464 145 467 145 c
+470 145 473 142 473 140 c
+cp
+gs
+e
+gr
+s
+n
+593 139 M
+593 136 590 134 588 134 c
+585 134 583 136 583 139 c
+583 141 585 144 588 144 c
+590 144 593 141 593 139 c
+cp
+gs
+e
+gr
+s
+72 sl
+n
+665 137 M
+665 229 L
+CM 0.156 0.152 scale
+s
+SM
+[29 0 0 -29 0 0]/Times-Roman MF
+0 g
+( )676 243 MS
+[50 0 0 -50 0 0]/Times-Roman MF
+(D)400 289 MS (E)436 289 MS (N)467 289 MS ( )503 289 MS ( )516 289 MS (S)529 289 MS (a)557 289 MS (c)579 289 MS (l)601 289 MS (a)613 289 MS (y)636 289 MS
+( )660 289 MS
+( )1297 140 MS
+[38 0 0 -38 0 0]/Times-Roman MF
+(S)1785 129 MS (F)1806 129 MS (M)1827 129 MS (E)1861 129 MS (/)1883 129 MS (L)1894 129 MS (G)1916 129 MS (L)1943 129 MS (S)1965 129 MS (/)1986 129 MS (R)1997 129 MS (T)2022 129 MS (/)2045 129 MS (0)2056 129 MS (2)2075 129 MS
+(-)2094 129 MS
+(0)2106 129 MS (0)2125 129 MS (2)2144 129 MS
+( )2163 129 MS
+(D)1785 173 MS (a)1812 173 MS (t)1829 173 MS (e)1840 173 MS
+( )1856 173 MS
+(:)1866 173 MS
+( )1875 173 MS
+(3)1885 173 MS (0)1904 173 MS (/)1923 173 MS (0)1934 173 MS (5)1952 173 MS (/)1971 173 MS (2)1982 173 MS (0)2000 173 MS (0)2019 173 MS (2)2038 173 MS
+( )2057 173 MS
+n
+5 5 232 89 B
+f
+n
+5 5 232 89 B
+f
+n
+584 5 238 89 B
+f
+n
+5 5 823 89 B
+f
+n
+938 5 829 89 B
+f
+n
+5 5 1768 89 B
+f
+n
+436 5 1774 89 B
+f
+n
+5 5 2211 89 B
+f
+n
+5 5 2211 89 B
+f
+n
+5 256 232 95 B
+f
+n
+2 256 823 95 B
+f
+n
+2 256 1768 95 B
+f
+n
+5 256 2211 95 B
+f
+[50 0 0 -50 0 0]/Times-Roman MF
+(D)322 400 MS (M)358 400 MS (2)402 400 MS (S)427 400 MS (/)455 400 MS (S)469 400 MS (F)497 400 MS (M)524 400 MS (E)568 400 MS (/)599 400 MS (L)613 400 MS (G)643 400 MS (L)680 400 MS (S)710 400 MS
+( )738 400 MS
+[50 0 0 -50 0 0]/Times-Bold MF
+gs
+n
+241 53 1102 367 CB
+(R)1102 413 MS (A)1138 413 MS (P)1174 413 MS (P)1204 413 MS (O)1234 413 MS (R)1273 413 MS (T)1310 413 MS
+gr
+gs
+n
+150 53 1343 367 CB
+( )1343 413 MS (D)1356 413 MS (M)1392 413 MS (2)1440 413 MS (S)1465 413 MS
+gr
+[50 0 0 -50 0 0]/Times-Roman MF
+gs
+n
+24 52 1493 368 CB
+( )1493 413 MS
+gr
+[38 0 0 -38 0 0]/Times-Roman MF
+(P)1785 400 MS (a)1806 400 MS (g)1823 400 MS (e)1841 400 MS ( )1858 400 MS
+[50 0 0 -50 0 0]/Times-Roman MF
+(1)1868 400 MS (6)1893 400 MS
+(/)1918 400 MS
+(3)1932 400 MS (0)1957 400 MS
+[38 0 0 -38 0 0]/Times-Roman MF
+( )1982 400 MS
+n
+5 2 232 352 B
+f
+n
+2 2 823 352 B
+f
+n
+941 2 826 352 B
+f
+n
+2 2 1768 352 B
+f
+n
+5 2 2211 352 B
+f
+n
+5 67 232 355 B
+f
+n
+590 1 232 423 B
+f
+n
+2 67 823 355 B
+f
+n
+1 1 823 423 B
+f
+n
+942 1 825 423 B
+f
+n
+2 67 1768 355 B
+f
+n
+1 1 1768 423 B
+f
+n
+440 1 1770 423 B
+f
+n
+5 67 2211 355 B
+f
+n
+5 1 2211 423 B
+f
+[50 0 0 -50 0 0]/Times-Roman MF
+( )235 470 MS
+[33 0 0 -33 0 0]/Times-Roman MF
+/IsChar{exch/CharStrings get exch known}bd/MapCh{3 -1 roll/Encoding get 3 1\r
+roll put}bd/MapDegree{dup 16#b0 exch/degree IsChar{/degree}{/ring}ifelse MapCh}\r
+bd/MapBB{dup 16#a6 exch/brokenbar IsChar{/brokenbar}{/bar}ifelse MapCh}bd\r
+/reencode{findfont begin currentdict dup length dict begin{1 index/FID ne{def}\r
+{pop pop}ifelse}forall/FontName exch def dup length 0 ne{/Encoding Encoding 256\r
+array copy def 0 exch{dup type/nametype eq{Encoding 2 index 2 index put pop 1\r
+add}{exch pop}ifelse}forall}if pop currentdict dup end end/FontName get exch\r
+definefont dup MapDegree MapBB}bd/LATENC[0/grave/acute/circumflex/tilde/macron\r
+/breve/dotaccent/dieresis/ring/cedilla/hungarumlaut/ogonek/caron/dotlessi/fi/fl\r
+/Lslash/lslash/Zcaron/zcaron/minus/.notdef/.notdef/.notdef/.notdef/.notdef\r
+/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/space/exclam/quotedbl\r
+/numbersign/dollar/percent/ampersand/quotesingle/parenleft/parenright/asterisk\r
+/plus/comma/hyphen/period/slash/zero/one/two/three/four/five/six/seven/eight\r
+/nine/colon/semicolon/less/equal/greater/question/at/A/B/C/D/E/F/G/H/I/J/K/L/M\r
+/N/O/P/Q/R/S/T/U/V/W/X/Y/Z/bracketleft/backslash/bracketright/asciicircum\r
+/underscore/grave/a/b/c/d/e/f/g/h/i/j/k/l/m/n/o/p/q/r/s/t/u/v/w/x/y/z/braceleft\r
+/bar/braceright/asciitilde/.notdef/.notdef/.notdef/quotesinglbase/florin\r
+/quotedblbase/ellipsis/dagger/daggerdbl/circumflex/perthousand/Scaron\r
+/guilsinglleft/OE/.notdef/.notdef/.notdef/.notdef/quoteleft/quoteright\r
+/quotedblleft/quotedblright/bullet/endash/emdash/tilde/trademark/scaron\r
+/guilsinglright/oe/.notdef/.notdef/Ydieresis/.notdef/exclamdown/cent/sterling\r
+/currency/yen/brokenbar/section/dieresis/copyright/ordfeminine/guillemotleft\r
+/logicalnot/hyphen/registered/macron/degree/plusminus/twosuperior/threesuperior\r
+/acute/mu/paragraph/periodcentered/cedilla/onesuperior/ordmasculine\r
+/guillemotright/onequarter/onehalf/threequarters/questiondown/Agrave/Aacute\r
+/Acircumflex/Atilde/Adieresis/Aring/AE/Ccedilla/Egrave/Eacute/Ecircumflex\r
+/Edieresis/Igrave/Iacute/Icircumflex/Idieresis/Eth/Ntilde/Ograve/Oacute\r
+/Ocircumflex/Otilde/Odieresis/multiply/Oslash/Ugrave/Uacute/Ucircumflex\r
+/Udieresis/Yacute/Thorn/germandbls/agrave/aacute/acircumflex/atilde/adieresis\r
+/aring/ae/ccedilla/egrave/eacute/ecircumflex/edieresis/igrave/iacute\r
+/icircumflex/idieresis/eth/ntilde/ograve/oacute/ocircumflex/otilde/odieresis\r
+/divide/oslash/ugrave/uacute/ucircumflex/udieresis/yacute/thorn/ydieresis]def\r
+LATENC /_Times-Roman /Times-Roman reencode
+[33 0 0 -33 0 0]/_Times-Roman MF
+(L)242 3256 MS (e)262 3256 MS (s)277 3256 MS ( )289 3256 MS (i)298 3256 MS (n)307 3256 MS (f)324 3256 MS (o)335 3256 MS (r)351 3256 MS (m)363 3256 MS (a)388 3256 MS (t)403 3256 MS (i)412 3256 MS (o)422 3256 MS (n)439 3256 MS (s)456 3256 MS
+( )468 3256 MS (c)477 3256 MS (o)492 3256 MS (n)508 3256 MS (t)524 3256 MS (e)534 3256 MS (n)549 3256 MS (u)565 3256 MS (e)582 3256 MS (s)597 3256 MS ( )610 3256 MS (d)618 3256 MS (a)634 3256 MS (n)650 3256 MS (s)667 3256 MS ( )679 3256 MS
+(c)688 3256 MS (e)703 3256 MS ( )717 3256 MS (d)726 3256 MS (o)742 3256 MS (c)759 3256 MS (u)773 3256 MS (m)791 3256 MS (e)817 3256 MS (n)831 3256 MS (t)847 3256 MS ( )857 3256 MS (s)866 3256 MS (o)878 3256 MS (n)895 3256 MS (t)911 3256 MS
+( )921 3256 MS (r)929 3256 MS (\351)941 3256 MS (s)956 3256 MS (e)968 3256 MS (r)982 3256 MS (v)994 3256 MS (\351)1011 3256 MS (e)1026 3256 MS (s)1041 3256 MS ( )1053 3256 MS (a)1061 3256 MS (u)1076 3256 MS (x)1093 3256 MS ( )1109 3256 MS (d)1118 3256 MS
+(e)1135 3256 MS (s)1150 3256 MS (t)1162 3256 MS (i)1171 3256 MS (n)1181 3256 MS (a)1197 3256 MS (t)1212 3256 MS (a)1221 3256 MS (i)1236 3256 MS (r)1245 3256 MS (e)1257 3256 MS (s)1272 3256 MS ( )1284 3256 MS (n)1293 3256 MS (o)1309 3256 MS (m)1326 3256 MS
+(m)1352 3256 MS (\351)1378 3256 MS (m)1393 3256 MS (e)1419 3256 MS (n)1433 3256 MS (t)1450 3256 MS ( )1459 3256 MS (d)1468 3256 MS (\351)1484 3256 MS (s)1499 3256 MS (i)1512 3256 MS (g)1521 3256 MS
+(n)1538 3256 MS (\351)1555 3256 MS (s)1570 3256 MS ( )1582 3256 MS (e)1591 3256 MS (t)1605 3256 MS ( )1615 3256 MS (n)1623 3256 MS (e)1640 3256 MS ( )1654 3256 MS (p)1663 3256 MS (e)1680 3256 MS (u)1694 3256 MS (v)1711 3256 MS (e)1728 3256 MS (n)1743 3256 MS
+(t)1759 3256 MS ( )1768 3256 MS (r)1776 3256 MS (e)1788 3256 MS (c)1803 3256 MS (e)1818 3256 MS (v)1832 3256 MS (o)1849 3256 MS (i)1865 3256 MS (r)1874 3256 MS ( )1886 3256 MS (a)1894 3256 MS (u)1909 3256 MS (c)1926 3256 MS (u)1940 3256 MS (n)1957 3256 MS
+(e)1974 3256 MS ( )1988 3256 MS (d)1997 3256 MS (i)2013 3256 MS (f)2023 3256 MS (f)2034 3256 MS (u)2044 3256 MS (s)2062 3256 MS (i)2074 3256 MS (o)2084 3256 MS (n)2101 3256 MS
+( )2117 3256 MS
+(s)928 3294 MS (a)940 3294 MS (n)955 3294 MS (s)972 3294 MS ( )985 3294 MS (l)993 3294 MS (\222)1002 3294 MS (a)1013 3294 MS (u)1028 3294 MS (t)1045 3294 MS (o)1054 3294 MS (r)1071 3294 MS (i)1082 3294 MS (s)1092 3294 MS (a)1104 3294 MS (t)1119 3294 MS
+(i)1128 3294 MS (o)1138 3294 MS (n)1154 3294 MS ( )1171 3294 MS (e)1180 3294 MS (x)1194 3294 MS (p)1211 3294 MS (r)1227 3294 MS (e)1239 3294 MS (s)1254 3294 MS (s)1267 3294 MS (e)1280 3294 MS ( )1294 3294 MS (d)1303 3294 MS (u)1319 3294 MS ( )1336 3294 MS
+(D)1344 3294 MS (M)1368 3294 MS (2)1397 3294 MS (S)1414 3294 MS
+[50 0 0 -50 0 0]/Times-Roman MF
+( )1432 3294 MS
+[67 0 0 -67 0 0]/Helvetica-Bold MF
+(9)310 592 MS
+( )347 592 MS
+LATENC /_Helvetica-Bold /Helvetica-Bold reencode
+[67 0 0 -67 0 0]/_Helvetica-Bold MF
+(C)400 592 MS (a)448 592 MS (s)485 592 MS ( )522 592 MS (d)541 592 MS (\222)582 592 MS (u)601 592 MS (t)642 592 MS (i)663 592 MS (l)682 592 MS (i)701 592 MS (s)720 592 MS (a)757 592 MS (t)794 592 MS (i)815 592 MS (o)834 592 MS
+(n)875 592 MS
+( )916 592 MS
+[50 0 0 -50 0 0]/Times-Roman MF
+( )235 667 MS
+LATENC /_Times-Roman /Times-Roman reencode
+[50 0 0 -50 0 0]/_Times-Roman MF
+(L)348 724 MS (\222)378 724 MS (o)394 724 MS (b)420 724 MS (j)445 724 MS (e)458 724 MS (c)480 724 MS (t)502 724 MS (i)518 724 MS (f)531 724 MS ( )547 724 MS (d)563 724 MS (e)588 724 MS ( )610 724 MS (l)627 724 MS (\222)640 724 MS
+(e)656 724 MS (x)679 724 MS (e)703 724 MS (r)725 724 MS (c)742 724 MS (i)765 724 MS (c)778 724 MS (e)800 724 MS ( )822 724 MS (e)838 724 MS (s)861 724 MS (t)880 724 MS ( )895 724 MS (l)911 724 MS (e)923 724 MS ( )945 724 MS
+(s)961 724 MS (u)980 724 MS (i)1006 724 MS (v)1019 724 MS (a)1044 724 MS (n)1067 724 MS (t)1091 724 MS
+( )1106 724 MS
+(:)1119 724 MS ( )1133 724 MS (i)1149 724 MS (l)1162 724 MS ( )1175 724 MS (s)1191 724 MS (\222)1211 724 MS (a)1227 724 MS (g)1249 724 MS (i)1275 724 MS (t)1287 724 MS ( )1302 724 MS (d)1318 724 MS (e)1343 724 MS ( )1366 724 MS (l)1383 724 MS
+(a)1395 724 MS (n)1418 724 MS (c)1442 724 MS (e)1464 724 MS (r)1486 724 MS ( )1503 724 MS (d)1519 724 MS (e)1544 724 MS (u)1566 724 MS (x)1592 724 MS ( )1616 724 MS (c)1632 724 MS (o)1654 724 MS (n)1680 724 MS (t)1704 724 MS (a)1719 724 MS
+(i)1741 724 MS (n)1754 724 MS (e)1779 724 MS (r)1801 724 MS (s)1818 724 MS ( )1837 724 MS (p)1853 724 MS (a)1878 724 MS (r)1900 724 MS (a)1917 724 MS (l)1940 724 MS (l)1953 724 MS (\350)1966 724 MS (l)1989 724 MS (e)2002 724 MS (s)2025 724 MS
+(.)2044 724 MS ( )2057 724 MS (L)2073 724 MS (e)2103 724 MS ( )2125 724 MS
+(p)235 782 MS (r)260 782 MS (e)277 782 MS (m)300 782 MS (i)338 782 MS (e)351 782 MS (r)373 782 MS ( )390 782 MS (c)417 782 MS (o)439 782 MS (n)465 782 MS (t)489 782 MS (a)504 782 MS (i)527 782 MS (n)540 782 MS (e)564 782 MS
+(r)586 782 MS ( )603 782 MS (p)630 782 MS (a)655 782 MS (r)677 782 MS (a)694 782 MS (l)717 782 MS (l)730 782 MS (\350)743 782 MS (l)766 782 MS (e)779 782 MS ( )802 782 MS (e)829 782 MS (s)851 782 MS (t)870 782 MS ( )885 782 MS
+(a)912 782 MS (c)934 782 MS (t)956 782 MS (i)971 782 MS (v)984 782 MS (\351)1009 782 MS ( )1031 782 MS (s)1058 782 MS (u)1077 782 MS (r)1102 782 MS ( )1119 782 MS (n)1147 782 MS ( )1171 782 MS (m)1199 782 MS (a)1238 782 MS (c)1260 782 MS
+(h)1282 782 MS (i)1307 782 MS (n)1320 782 MS (e)1345 782 MS (s)1368 782 MS ( )1387 782 MS (\()1414 782 MS (P)1431 782 MS (C)1459 782 MS (/)1492 782 MS (l)1507 782 MS (i)1520 782 MS (n)1533 782 MS (u)1558 782 MS (x)1584 782 MS (\))1608 782 MS
+( )1625 782 MS (d)1652 782 MS (i)1678 782 MS (f)1692 782 MS (f)1708 782 MS (\351)1724 782 MS (r)1746 782 MS (e)1763 782 MS (n)1786 782 MS (t)1810 782 MS (e)1825 782 MS (s)1847 782 MS (.)1866 782 MS ( )1879 782 MS (L)1906 782 MS (e)1936 782 MS
+( )1958 782 MS (s)1986 782 MS (e)2005 782 MS (c)2027 782 MS (o)2049 782 MS (n)2075 782 MS (d)2099 782 MS ( )2125 782 MS
+(c)235 839 MS (o)257 839 MS (n)283 839 MS (t)307 839 MS (a)322 839 MS (i)344 839 MS (n)357 839 MS (e)381 839 MS (r)403 839 MS ( )420 839 MS (e)444 839 MS (s)467 839 MS (t)486 839 MS ( )501 839 MS (a)525 839 MS (c)547 839 MS
+(t)569 839 MS (i)584 839 MS (v)597 839 MS (\351)621 839 MS ( )643 839 MS (s)668 839 MS (u)687 839 MS (r)712 839 MS ( )729 839 MS (p)753 839 MS ( )778 839 MS (a)802 839 MS (u)824 839 MS (t)849 839 MS (r)864 839 MS (e)881 839 MS
+(s)903 839 MS ( )922 839 MS (m)947 839 MS (a)985 839 MS (c)1007 839 MS (h)1030 839 MS (i)1055 839 MS (n)1068 839 MS (e)1093 839 MS (s)1115 839 MS ( )1135 839 MS (\()1159 839 MS (P)1176 839 MS (C)1204 839 MS (/)1237 839 MS (l)1251 839 MS
+(i)1265 839 MS (n)1278 839 MS (u)1303 839 MS (x)1329 839 MS (\))1353 839 MS ( )1370 839 MS (d)1394 839 MS (i)1420 839 MS
+(s)1433 839 MS (t)1452 839 MS (i)1468 839 MS (n)1481 839 MS (c)1505 839 MS (t)1527 839 MS (e)1542 839 MS (s)1564 839 MS ( )1583 839 MS (d)1607 839 MS (e)1632 839 MS (s)1654 839 MS ( )1674 839 MS (m)1699 839 MS (a)1737 839 MS (c)1759 839 MS
+(h)1782 839 MS (i)1807 839 MS (n)1820 839 MS (e)1845 839 MS (s)1867 839 MS ( )1887 839 MS (a)1911 839 MS (b)1934 839 MS (r)1958 839 MS (i)1976 839 MS (t)1988 839 MS (a)2003 839 MS (n)2025 839 MS (t)2049 839 MS ( )2064 839 MS (l)2089 839 MS
+(e)2102 839 MS ( )2125 839 MS
+(p)235 897 MS (r)260 897 MS (e)277 897 MS (m)300 897 MS (i)338 897 MS (e)351 897 MS (r)373 897 MS ( )390 897 MS (c)407 897 MS (o)429 897 MS (n)455 897 MS (t)479 897 MS (a)494 897 MS (i)516 897 MS (n)529 897 MS (e)553 897 MS
+(r)575 897 MS (.)592 897 MS ( )605 897 MS (O)622 897 MS (n)658 897 MS ( )682 897 MS (s)700 897 MS (u)719 897 MS (p)744 897 MS (p)769 897 MS (o)794 897 MS (s)820 897 MS (e)839 897 MS (,)861 897 MS ( )874 897 MS (b)891 897 MS
+(i)916 897 MS (e)928 897 MS (n)951 897 MS ( )975 897 MS (e)992 897 MS (n)1015 897 MS (t)1039 897 MS (e)1054 897 MS (n)1076 897 MS (d)1100 897 MS (u)1125 897 MS (,)1150 897 MS ( )1163 897 MS (q)1180 897 MS (u)1205 897 MS (e)1230 897 MS
+( )1253 897 MS (l)1271 897 MS (e)1283 897 MS ( )1305 897 MS (s)1322 897 MS (e)1341 897 MS (r)1363 897 MS (v)1381 897 MS (i)1406 897 MS (c)1419 897 MS (e)1441 897 MS ( )1463 897 MS (d)1480 897 MS (e)1505 897 MS ( )1527 897 MS (n)1545 897 MS
+(o)1569 897 MS (m)1595 897 MS (m)1633 897 MS (a)1671 897 MS (g)1694 897 MS (e)1719 897 MS ( )1741 897 MS (C)1758 897 MS (O)1791 897 MS (R)1827 897 MS (B)1861 897 MS (A)1895 897 MS ( )1930 897 MS (e)1947 897 MS (s)1969 897 MS (t)1988 897 MS
+( )2003 897 MS (l)2020 897 MS (a)2033 897 MS (n)2056 897 MS (c)2080 897 MS (\351)2102 897 MS ( )2125 897 MS
+(p)235 954 MS (r)260 954 MS (\351)277 954 MS (a)299 954 MS (l)322 954 MS (a)334 954 MS (b)357 954 MS (l)382 954 MS (e)395 954 MS (m)418 954 MS (e)456 954 MS (n)479 954 MS (t)503 954 MS (.)518 954 MS ( )531 954 MS (U)557 954 MS
+(n)593 954 MS ( )617 954 MS (c)643 954 MS (o)665 954 MS (d)691 954 MS (e)716 954 MS ( )738 954 MS (c)764 954 MS (l)786 954 MS (i)799 954 MS (e)812 954 MS (n)835 954 MS (t)859 954 MS ( )874 954 MS (d)900 954 MS (e)925 954 MS
+(m)947 954 MS (a)985 954 MS (n)1008 954 MS (d)1032 954 MS (e)1057 954 MS ( )1079 954 MS (e)1105 954 MS (n)1127 954 MS (s)1152 954 MS (u)1171 954 MS (i)1197 954 MS (t)1209 954 MS (e)1224 954 MS ( )1247 954 MS (d)1273 954 MS (\222)1298 954 MS
+(i)1315 954 MS (n)1328 954 MS (s)1353 954 MS (t)1372 954 MS (a)1387 954 MS (n)1409 954 MS (c)1433 954 MS (i)1456 954 MS (e)1469 954 MS (r)1491 954 MS ( )1508 954 MS (s)1534 954 MS (u)1553 954 MS (r)1578 954 MS ( )1595 954 MS (l)1622 954 MS
+(e)1634 954 MS ( )1656 954 MS (p)1682 954 MS (r)1707 954 MS (e)1724 954 MS (m)1747 954 MS (i)1785 954 MS (e)1798 954 MS (r)1820 954 MS ( )1837 954 MS (c)1863 954 MS (o)1885 954 MS (n)1911 954 MS (t)1935 954 MS (a)1950 954 MS (i)1972 954 MS
+(n)1985 954 MS (e)2010 954 MS (r)2032 954 MS ( )2049 954 MS (u)2075 954 MS (n)2100 954 MS ( )2125 954 MS
+(c)235 1012 MS (o)257 1012 MS (m)283 1012 MS (p)320 1012 MS (o)345 1012 MS (s)371 1012 MS (a)390 1012 MS (n)413 1012 MS (t)437 1012 MS ( )452 1012 MS (N)466 1012 MS (u)502 1012 MS (m)527 1012 MS (e)565 1012 MS (r)587 1012 MS (i)605 1012 MS
+(c)617 1012 MS (a)639 1012 MS (l)662 1012 MS ( )675 1012 MS (P)689 1012 MS (l)718 1012 MS (a)731 1012 MS (t)753 1012 MS (o)768 1012 MS (n)794 1012 MS ( )818 1012 MS ([)832 1012 MS (8)849 1012 MS (])874 1012 MS ( )891 1012 MS (d)905 1012 MS
+(o)929 1012 MS (n)955 1012 MS (t)979 1012 MS ( )994 1012 MS (l)1008 1012 MS (e)1020 1012 MS ( )1042 1012 MS (b)1056 1012 MS (u)1080 1012 MS (t)1105 1012 MS ( )1120 1012 MS (e)1134 1012 MS (s)1156 1012 MS (t)1175 1012 MS ( )1190 1012 MS (d)1204 1012 MS
+(e)1229 1012 MS ( )1251 1012 MS (c)1265 1012 MS (h)1287 1012 MS (a)1311 1012 MS (r)1333 1012 MS (g)1350 1012 MS (e)1375 1012 MS (r)1397 1012 MS ( )1414 1012 MS (e)1428 1012 MS (n)1451 1012 MS ( )1475 1012 MS (m)1490 1012 MS (\351)1528 1012 MS (m)1551 1012 MS
+(o)1588 1012 MS (i)1615 1012 MS (r)1627 1012 MS (e)1644 1012 MS ( )1666 1012 MS (u)1680 1012 MS (n)1706 1012 MS (e)1730 1012 MS ( )1752 1012 MS (m)1767 1012 MS (a)1805 1012 MS (t)1827 1012 MS (r)1842 1012 MS (i)1859 1012 MS (c)1872 1012 MS (e)1894 1012 MS
+( )1916 1012 MS (d)1930 1012 MS (e)1955 1012 MS (p)1977 1012 MS (u)2002 1012 MS (i)2028 1012 MS (s)2041 1012 MS ( )2060 1012 MS (u)2074 1012 MS (n)2100 1012 MS ( )2125 1012 MS
+(f)235 1069 MS (i)252 1069 MS (c)265 1069 MS (h)288 1069 MS (i)313 1069 MS (e)326 1069 MS (r)348 1069 MS (,)365 1069 MS ( )378 1069 MS (u)398 1069 MS (n)423 1069 MS ( )447 1069 MS (c)467 1069 MS (o)489 1069 MS (m)516 1069 MS (p)553 1069 MS
+(o)578 1069 MS (s)604 1069 MS (a)623 1069 MS (n)645 1069 MS (t)669 1069 MS ( )684 1069 MS (N)704 1069 MS (u)740 1069 MS (m)766 1069 MS (e)803 1069 MS (r)825 1069 MS (i)843 1069 MS (c)856 1069 MS (a)878 1069 MS (l)901 1069 MS ( )914 1069 MS
+(P)934 1069 MS (l)963 1069 MS (a)976 1069 MS (t)998 1069 MS (o)1013 1069 MS (n)1039 1069 MS ( )1063 1069 MS (d)1083 1069 MS (o)1108 1069 MS (n)1134 1069 MS (t)1157 1069 MS ( )1172 1069 MS (l)1192 1069 MS (e)1204 1069 MS ( )1226 1069 MS (b)1247 1069 MS
+(u)1271 1069 MS (t)1296 1069 MS ( )1311 1069 MS (e)1331 1069 MS (s)1353 1069 MS (t)1372 1069 MS ( )1387 1069 MS (d)1407 1069 MS (e)1432 1069 MS ( )1454 1069 MS (c)1474 1069 MS (h)1496 1069 MS (a)1520 1069 MS (r)1542 1069 MS (g)1559 1069 MS (e)1584 1069 MS
+(r)1606 1069 MS ( )1623 1069 MS (e)1643 1069 MS (n)1665 1069 MS ( )1689 1069 MS (m)1710 1069 MS (\351)1748 1069 MS (m)1771 1069 MS (o)1808 1069 MS (i)1835 1069 MS (r)1847 1069 MS (e)1865 1069 MS ( )1887 1069 MS (u)1907 1069 MS (n)1932 1069 MS ( )1956 1069 MS
+(v)1977 1069 MS (e)2002 1069 MS (c)2024 1069 MS (t)2046 1069 MS (e)2061 1069 MS (u)2083 1069 MS (r)2108 1069 MS ( )2125 1069 MS
+(d)235 1127 MS (e)260 1127 MS (p)282 1127 MS (u)307 1127 MS (i)333 1127 MS (s)346 1127 MS ( )365 1127 MS (u)389 1127 MS (n)414 1127 MS ( )438 1127 MS (f)463 1127 MS (i)479 1127 MS (c)492 1127 MS (h)515 1127 MS (i)540 1127 MS (e)553 1127 MS
+(r)575 1127 MS (,)592 1127 MS ( )605 1127 MS (u)629 1127 MS (n)654 1127 MS ( )678 1127 MS (a)702 1127 MS (u)724 1127 MS (t)749 1127 MS (r)764 1127 MS (e)781 1127 MS ( )803 1127 MS (c)827 1127 MS (o)849 1127 MS (m)875 1127 MS (p)912 1127 MS
+(o)937 1127 MS (s)963 1127 MS (a)982 1127 MS (n)1004 1127 MS (t)1028 1127 MS ( )1043 1127 MS (N)1067 1127 MS (u)1103 1127 MS (m)1129 1127 MS (e)1166 1127 MS (r)1188 1127 MS (i)1206 1127 MS (c)1219 1127 MS (a)1242 1127 MS (l)1265 1127 MS ( )1277 1127 MS
+(P)1301 1127 MS (l)1330 1127 MS (a)1343 1127 MS (t)1365 1127 MS (o)1379 1127 MS (n)1405 1127 MS ( )1429 1127 MS (d)1453 1127 MS (o)1478 1127 MS (n)1504 1127 MS (t)1528 1127 MS ( )1543 1127 MS (l)1567 1127 MS (e)1579 1127 MS ( )1601 1127 MS (b)1625 1127 MS
+(u)1649 1127 MS (t)1674 1127 MS ( )1689 1127 MS (e)1713 1127 MS (s)1735 1127 MS (t)1754 1127 MS ( )1769 1127 MS (d)1793 1127 MS (e)1818 1127 MS ( )1840 1127 MS (r)1863 1127 MS (\351)1880 1127 MS (c)1902 1127 MS (u)1924 1127 MS (p)1949 1127 MS (\351)1974 1127 MS
+(r)1996 1127 MS (e)2013 1127 MS (r)2035 1127 MS ( )2052 1127 MS (u)2076 1127 MS (n)2101 1127 MS ( )2125 1127 MS
+(v)235 1184 MS (e)259 1184 MS (c)281 1184 MS (t)303 1184 MS (e)318 1184 MS (u)340 1184 MS (r)365 1184 MS ( )382 1184 MS (e)395 1184 MS (t)417 1184 MS ( )432 1184 MS (d)445 1184 MS (e)470 1184 MS ( )492 1184 MS (l)506 1184 MS (e)518 1184 MS
+( )540 1184 MS (s)554 1184 MS (t)573 1184 MS (o)587 1184 MS (c)613 1184 MS (k)635 1184 MS (e)660 1184 MS (r)682 1184 MS ( )699 1184 MS (d)712 1184 MS (a)737 1184 MS (n)759 1184 MS (s)783 1184 MS ( )802 1184 MS (u)815 1184 MS (n)841 1184 MS
+( )866 1184 MS (f)880 1184 MS (i)896 1184 MS (c)909 1184 MS (h)932 1184 MS (i)957 1184 MS
+(e)970 1184 MS (r)992 1184 MS (.)1009 1184 MS ( )1022 1184 MS (C)1035 1184 MS (e)1068 1184 MS (s)1091 1184 MS ( )1110 1184 MS (t)1123 1184 MS (r)1138 1184 MS (o)1154 1184 MS (i)1180 1184 MS (s)1193 1184 MS ( )1212 1184 MS (o)1225 1184 MS (b)1251 1184 MS
+(j)1276 1184 MS (e)1289 1184 MS (t)1311 1184 MS (s)1326 1184 MS ( )1345 1184 MS (N)1358 1184 MS (u)1394 1184 MS (m)1420 1184 MS (e)1458 1184 MS (r)1480 1184 MS (i)1498 1184 MS (c)1510 1184 MS (a)1533 1184 MS (l)1556 1184 MS ( )1569 1184 MS (P)1582 1184 MS
+(l)1611 1184 MS (a)1624 1184 MS (t)1646 1184 MS (o)1660 1184 MS (n)1686 1184 MS ( )1710 1184 MS (s)1723 1184 MS (o)1742 1184 MS (n)1768 1184 MS (t)1792 1184 MS ( )1807 1184 MS (d)1820 1184 MS (o)1845 1184 MS (n)1871 1184 MS (c)1895 1184 MS ( )1917 1184 MS
+(d)1930 1184 MS (i)1956 1184 MS (s)1969 1184 MS (t)1988 1184 MS (r)2003 1184 MS (i)2020 1184 MS (b)2033 1184 MS (u)2057 1184 MS (\351)2082 1184 MS (s)2105 1184 MS ( )2125 1184 MS
+(s)235 1242 MS (u)254 1242 MS (r)279 1242 MS ( )296 1242 MS (l)311 1242 MS (e)323 1242 MS (s)346 1242 MS ( )365 1242 MS (n)379 1242 MS ( )403 1242 MS (p)417 1242 MS (r)442 1242 MS (o)459 1242 MS (c)485 1242 MS (e)507 1242 MS (s)529 1242 MS
+(s)548 1242 MS (u)567 1242 MS (s)593 1242 MS ( )612 1242 MS (c)626 1242 MS (o)648 1242 MS (n)674 1242 MS (s)698 1242 MS (t)717 1242 MS (i)733 1242 MS (t)745 1242 MS (u)760 1242 MS (a)785 1242 MS (n)807 1242 MS (t)831 1242 MS ( )846 1242 MS
+(l)861 1242 MS (e)873 1242 MS ( )895 1242 MS (p)909 1242 MS (r)934 1242 MS (e)951 1242 MS (m)974 1242 MS (i)1013 1242 MS (e)1026 1242 MS (r)1048 1242 MS ( )1065 1242 MS (c)1079 1242 MS (o)1101 1242 MS (n)1127 1242 MS (t)1151 1242 MS (a)1166 1242 MS
+(i)1188 1242 MS (n)1201 1242 MS (e)1226 1242 MS (r)1249 1242 MS (.)1266 1242 MS ( )1279 1242 MS (L)1293 1242 MS (e)1323 1242 MS ( )1345 1242 MS (m)1360 1242 MS (\352)1397 1242 MS (m)1420 1242 MS (e)1458 1242 MS ( )1480 1242 MS (c)1494 1242 MS (o)1516 1242 MS
+(d)1542 1242 MS (e)1567 1242 MS ( )1589 1242 MS (c)1603 1242 MS (l)1626 1242 MS (i)1639 1242 MS (e)1652 1242 MS (n)1675 1242 MS (t)1699 1242 MS ( )1714 1242 MS (d)1728 1242 MS (e)1753 1242 MS (m)1776 1242 MS (a)1813 1242 MS (n)1836 1242 MS (d)1860 1242 MS
+(e)1885 1242 MS ( )1907 1242 MS (e)1922 1242 MS (n)1945 1242 MS (s)1969 1242 MS (u)1988 1242 MS (i)2014 1242 MS (t)2026 1242 MS (e)2041 1242 MS ( )2063 1242 MS (a)2077 1242 MS (u)2099 1242 MS ( )2125 1242 MS
+(s)235 1299 MS (e)254 1299 MS (c)276 1299 MS (o)298 1299 MS (n)324 1299 MS (d)348 1299 MS ( )373 1299 MS (c)389 1299 MS (o)411 1299 MS (n)437 1299 MS (t)461 1299 MS (a)476 1299 MS (i)499 1299 MS (n)512 1299 MS (e)536 1299 MS (r)558 1299 MS
+( )575 1299 MS (d)591 1299 MS (\222)617 1299 MS (i)634 1299 MS (n)647 1299 MS (s)672 1299 MS (t)691 1299 MS (a)706 1299 MS (n)728 1299 MS (c)752 1299 MS (i)775 1299 MS (e)788 1299 MS (r)810 1299 MS ( )827 1299 MS (u)843 1299 MS (n)869 1299 MS
+( )893 1299 MS (c)910 1299 MS (o)932 1299 MS (m)958 1299 MS (p)995 1299 MS (o)1020 1299 MS (s)1046 1299 MS (a)1065 1299 MS (n)1088 1299 MS (t)1112 1299 MS ( )1127 1299 MS (N)1143 1299 MS (u)1179 1299 MS (m)1205 1299 MS (e)1243 1299 MS (r)1265 1299 MS
+(i)1283 1299 MS (c)1295 1299 MS (a)1317 1299 MS (l)1340 1299 MS ( )1353 1299 MS (P)1369 1299 MS (l)1398 1299 MS (a)1411 1299 MS (t)1433 1299 MS (o)1448 1299 MS (n)1474 1299 MS ( )1498 1299 MS (d)1514 1299 MS (o)1539 1299 MS (n)1565 1299 MS (t)1589 1299 MS
+( )1604 1299 MS (l)1620 1299 MS (e)1632 1299 MS ( )1654 1299 MS (b)1671 1299 MS (u)1695 1299 MS (t)1720 1299 MS ( )1735 1299 MS (e)1751 1299 MS (s)1773 1299 MS (t)1792 1299 MS ( )1807 1299 MS (d)1823 1299 MS (e)1848 1299 MS ( )1870 1299 MS (r)1886 1299 MS
+(\351)1903 1299 MS (s)1925 1299 MS (o)1944 1299 MS (u)1970 1299 MS (d)1995 1299 MS (r)2020 1299 MS (e)2037 1299 MS ( )2059 1299 MS (u)2075 1299 MS (n)2100 1299 MS ( )2125 1299 MS
+(s)235 1357 MS (y)255 1357 MS (s)279 1357 MS (t)298 1357 MS (\350)313 1357 MS (m)336 1357 MS (e)373 1357 MS ( )395 1357 MS (l)418 1357 MS (i)431 1357 MS (n)444 1357 MS (\351)469 1357 MS (a)492 1357 MS
+(i)515 1357 MS (r)527 1357 MS (e)545 1357 MS (.)567 1357 MS ( )580 1357 MS (C)602 1357 MS (e)635 1357 MS ( )657 1357 MS (c)679 1357 MS (o)701 1357 MS (m)727 1357 MS (p)764 1357 MS (o)789 1357 MS (s)815 1357 MS (a)834 1357 MS (n)857 1357 MS
+(t)881 1357 MS ( )896 1357 MS (a)918 1357 MS ( )940 1357 MS (d)962 1357 MS (o)986 1357 MS (n)1012 1357 MS (c)1036 1357 MS ( )1058 1357 MS (u)1080 1357 MS (n)1105 1357 MS ( )1129 1357 MS (u)1151 1357 MS (n)1176 1357 MS (i)1201 1357 MS (q)1214 1357 MS
+(u)1240 1357 MS (e)1265 1357 MS ( )1287 1357 MS (s)1309 1357 MS (e)1328 1357 MS (r)1350 1357 MS (v)1367 1357 MS (i)1392 1357 MS (c)1405 1357 MS (e)1427 1357 MS ( )1449 1357 MS (S)1471 1357 MS (o)1499 1357 MS (l)1526 1357 MS (v)1539 1357 MS (e)1563 1357 MS
+(\()1585 1357 MS (\))1602 1357 MS ( )1619 1357 MS (q)1641 1357 MS (u)1666 1357 MS (i)1692 1357 MS ( )1704 1357 MS (p)1726 1357 MS (r)1751 1357 MS (e)1768 1357 MS (n)1790 1357 MS (d)1814 1357 MS ( )1839 1357 MS (e)1861 1357 MS (n)1884 1357 MS ( )1908 1357 MS
+(e)1930 1357 MS (n)1953 1357 MS (t)1977 1357 MS (r)1992 1357 MS (\351)2009 1357 MS (e)2031 1357 MS ( )2053 1357 MS (u)2075 1357 MS (n)2100 1357 MS ( )2125 1357 MS
+(m)235 1414 MS (a)273 1414 MS (t)295 1414 MS (r)310 1414 MS (i)328 1414 MS (c)340 1414 MS (e)362 1414 MS ( )384 1414 MS (e)408 1414 MS (t)430 1414 MS ( )445 1414 MS (u)469 1414 MS (n)494 1414 MS ( )518 1414 MS (v)543 1414 MS (e)567 1414 MS
+(c)590 1414 MS (t)612 1414 MS (e)627 1414 MS (u)649 1414 MS (r)674 1414 MS ( )691 1414 MS (e)715 1414 MS (t)736 1414 MS ( )751 1414 MS (r)775 1414 MS (e)792 1414 MS (d)814 1414 MS (o)838 1414 MS (n)864 1414 MS (n)888 1414 MS (e)913 1414 MS
+( )935 1414 MS (e)959 1414 MS (n)982 1414 MS ( )1006 1414 MS (s)1030 1414 MS (o)1049 1414 MS (r)1075 1414 MS (t)1092 1414 MS (i)1107 1414 MS (e)1119 1414 MS ( )1141 1414 MS (l)1166 1414 MS (e)1179 1414 MS ( )1201 1414 MS (v)1226 1414 MS (e)1251 1414 MS
+(c)1273 1414 MS (t)1295 1414 MS (e)1310 1414 MS (u)1332 1414 MS (r)1357 1414 MS ( )1374 1414 MS (s)1398 1414 MS (o)1417 1414 MS (l)1443 1414 MS (u)1455 1414 MS (t)1480 1414 MS (i)1495 1414 MS (o)1507 1414 MS (n)1533 1414 MS (.)1557 1414 MS ( )1570 1414 MS
+(C)1594 1414 MS (e)1627 1414 MS (s)1650 1414 MS ( )1669 1414 MS (t)1693 1414 MS (r)1708 1414 MS (o)1724 1414 MS (i)1750 1414 MS (s)1763 1414 MS ( )1782 1414 MS (o)1806 1414 MS (b)1832 1414 MS (j)1857 1414 MS (e)1870 1414 MS (t)1892 1414 MS (s)1907 1414 MS
+( )1926 1414 MS (s)1950 1414 MS (o)1969 1414 MS (n)1995 1414 MS (t)2019 1414 MS ( )2034 1414 MS (d)2058 1414 MS (e)2083 1414 MS (s)2105 1414 MS ( )2125 1414 MS
+(d)235 1472 MS (o)260 1472 MS (n)286 1472 MS (n)310 1472 MS (\351)334 1472 MS (e)356 1472 MS (s)379 1472 MS ( )398 1472 MS (C)425 1472 MS (O)458 1472 MS (R)495 1472 MS (B)528 1472 MS (A)562 1472 MS ( )597 1472 MS (p)624 1472 MS (a)649 1472 MS
+(r)671 1472 MS (a)688 1472 MS (l)711 1472 MS (l)725 1472 MS (\350)738 1472 MS (l)761 1472 MS (e)774 1472 MS (s)797 1472 MS (.)816 1472 MS ( )829 1472 MS (U)856 1472 MS (n)892 1472 MS (e)916 1472 MS ( )938 1472 MS (f)966 1472 MS (o)981 1472 MS
+(i)1008 1472 MS (s)1021 1472 MS ( )1040 1472 MS (a)1067 1472 MS (c)1090 1472 MS (t)1112 1472 MS (i)1127 1472 MS (v)1140 1472 MS (\351)1165 1472 MS (,)1187 1472 MS ( )1200 1472 MS (l)1228 1472 MS (e)1241 1472 MS ( )1263 1472 MS (s)1290 1472 MS (e)1309 1472 MS
+(r)1331 1472 MS (v)1348 1472 MS (i)1373 1472 MS (c)1386 1472 MS (e)1409 1472 MS ( )1431 1472 MS (S)1458 1472 MS (o)1486 1472 MS (l)1512 1472 MS (v)1525 1472 MS (e)1550 1472 MS (\()1572 1472 MS (\))1589 1472 MS ( )1606 1472 MS (t)1633 1472 MS (r)1647 1472 MS
+(a)1664 1472 MS (v)1686 1472 MS (a)1710 1472 MS (i)1733 1472 MS (l)1747 1472 MS (l)1760 1472 MS (e)1773 1472 MS ( )1796 1472 MS (s)1823 1472 MS (u)1842 1472 MS (r)1867 1472 MS ( )1884 1472 MS (d)1911 1472 MS (e)1936 1472 MS (s)1958 1472 MS ( )1977 1472 MS
+(o)2004 1472 MS (b)2030 1472 MS (j)2055 1472 MS (e)2068 1472 MS (t)2090 1472 MS (s)2105 1472 MS ( )2125 1472 MS
+(N)235 1529 MS (u)271 1529 MS (m)297 1529 MS (e)334 1529 MS (r)356 1529 MS
+(i)374 1529 MS (c)387 1529 MS (a)409 1529 MS (l)432 1529 MS ( )445 1529 MS (P)462 1529 MS (l)491 1529 MS (a)504 1529 MS (t)526 1529 MS (o)541 1529 MS (n)567 1529 MS ( )591 1529 MS (d)608 1529 MS (i)634 1529 MS (s)646 1529 MS (t)665 1529 MS
+(r)680 1529 MS (i)698 1529 MS (b)711 1529 MS (u)735 1529 MS (\351)760 1529 MS (s)782 1529 MS ( )801 1529 MS (s)819 1529 MS (u)838 1529 MS (r)863 1529 MS ( )880 1529 MS (p)897 1529 MS ( )922 1529 MS (m)940 1529 MS (a)978 1529 MS (c)1000 1529 MS
+(h)1023 1529 MS (i)1048 1529 MS (n)1061 1529 MS (e)1086 1529 MS (s)1109 1529 MS (.)1128 1529 MS ( )1141 1529 MS (L)1158 1529 MS (a)1188 1529 MS ( )1210 1529 MS (s)1227 1529 MS (o)1247 1529 MS (l)1273 1529 MS (u)1285 1529 MS (t)1310 1529 MS (i)1326 1529 MS
+(o)1338 1529 MS (n)1364 1529 MS ( )1388 1529 MS (e)1405 1529 MS (s)1427 1529 MS (t)1446 1529 MS ( )1461 1529 MS (e)1478 1529 MS (n)1501 1529 MS (s)1525 1529 MS (u)1544 1529 MS (i)1570 1529 MS (t)1582 1529 MS (e)1597 1529 MS ( )1619 1529 MS (r)1636 1529 MS
+(e)1653 1529 MS (n)1676 1529 MS (v)1701 1529 MS (o)1725 1529 MS (y)1752 1529 MS (\351)1775 1529 MS (e)1797 1529 MS ( )1819 1529 MS (s)1837 1529 MS (u)1856 1529 MS (r)1881 1529 MS ( )1898 1529 MS (l)1916 1529 MS (e)1929 1529 MS ( )1951 1529 MS (p)1968 1529 MS
+(r)1993 1529 MS (e)2010 1529 MS (m)2033 1529 MS (i)2071 1529 MS (e)2084 1529 MS (r)2107 1529 MS ( )2125 1529 MS
+(c)235 1586 MS (o)257 1586 MS (n)283 1586 MS (t)307 1586 MS (a)322 1586 MS (i)344 1586 MS (n)357 1586 MS (e)381 1586 MS (r)403 1586 MS ( )420 1586 MS (\()433 1586 MS (e)450 1586 MS (t)472 1586 MS ( )487 1586 MS (d)500 1586 MS (o)524 1586 MS
+(n)550 1586 MS (c)574 1586 MS ( )596 1586 MS (r)609 1586 MS (e)626 1586 MS (d)648 1586 MS (i)673 1586 MS (s)686 1586 MS (t)705 1586 MS (r)720 1586 MS (i)737 1586 MS (b)750 1586 MS (u)774 1586 MS (\351)799 1586 MS (e)821 1586 MS ( )843 1586 MS
+(s)856 1586 MS (u)875 1586 MS (r)900 1586 MS ( )917 1586 MS (n)930 1586 MS ( )954 1586 MS (m)968 1586 MS (a)1006 1586 MS (c)1028 1586 MS (h)1051 1586 MS (i)1076 1586 MS (n)1089 1586 MS (e)1114 1586 MS (s)1137 1586 MS (\))1156 1586 MS (,)1173 1586 MS
+( )1186 1586 MS (p)1199 1586 MS (u)1224 1586 MS (i)1248 1586 MS (s)1261 1586 MS ( )1280 1586 MS (s)1293 1586 MS (t)1312 1586 MS (o)1327 1586 MS (c)1353 1586 MS (k)1375 1586 MS (\351)1400 1586 MS (e)1422 1586 MS ( )1444 1586 MS (d)1457 1586 MS (a)1482 1586 MS
+(n)1504 1586 MS (s)1528 1586 MS ( )1547 1586 MS (u)1560 1586 MS (n)1585 1586 MS ( )1609 1586 MS (f)1623 1586 MS (i)1639 1586 MS (c)1652 1586 MS (h)1675 1586 MS (i)1700 1586 MS (e)1713 1586 MS (r)1735 1586 MS (.)1752 1586 MS
+( )1765 1586 MS
+( )348 1644 MS
+(L)348 1701 MS (e)378 1701 MS (s)400 1701 MS ( )419 1701 MS (o)441 1701 MS (b)467 1701 MS (j)492 1701 MS (e)505 1701 MS (t)527 1701 MS (s)542 1701 MS ( )561 1701 MS (C)583 1701 MS (O)616 1701 MS (R)653 1701 MS (B)686 1701 MS (A)720 1701 MS
+( )755 1701 MS (u)777 1701 MS (t)802 1701 MS (i)818 1701 MS (l)831 1701 MS (i)845 1701 MS (s)858 1701 MS (\351)877 1701 MS (s)900 1701 MS ( )919 1701 MS (d)941 1701 MS (a)966 1701 MS (n)989 1701 MS (s)1014 1701 MS ( )1033 1701 MS (c)1055 1701 MS
+(e)1077 1701 MS (t)1099 1701 MS ( )1114 1701 MS (e)1136 1701 MS (x)1158 1701 MS (e)1182 1701 MS (r)1204 1701 MS (c)1221 1701 MS (i)1244 1701 MS (c)1257 1701 MS (e)1280 1701 MS ( )1302 1701 MS (s)1324 1701 MS (o)1343 1701 MS (n)1369 1701 MS (t)1393 1701 MS
+( )1408 1701 MS (d)1430 1701 MS (o)1455 1701 MS (n)1481 1701 MS (c)1505 1701 MS ( )1527 1701 MS (d)1549 1701 MS (e)1574 1701 MS (s)1596 1701 MS ( )1615 1701 MS (v)1638 1701 MS (e)1662 1701 MS (c)1684 1701 MS (t)1706 1701 MS (e)1721 1701 MS (u)1743 1701 MS
+(r)1768 1701 MS (s)1785 1701 MS
+( )1804 1701 MS
+(:)1817 1701 MS ( )1831 1701 MS (s)1853 1701 MS (\351)1872 1701 MS (q)1894 1701 MS (u)1919 1701 MS (e)1944 1701 MS (n)1967 1701 MS (c)1991 1701 MS (e)2013 1701 MS (s)2036 1701 MS ( )2055 1701 MS (d)2077 1701 MS (e)2102 1701 MS ( )2125 1701 MS
+(d)235 1759 MS (o)260 1759 MS (u)286 1759 MS (b)311 1759 MS (l)336 1759 MS (e)348 1759 MS ( )370 1759 MS
+(f)384 1759 MS (l)401 1759 MS (o)413 1759 MS (t)439 1759 MS (t)453 1759 MS (a)468 1759 MS (n)490 1759 MS (t)514 1759 MS (s)529 1759 MS ( )548 1759 MS (e)561 1759 MS (t)583 1759 MS ( )598 1759 MS (u)611 1759 MS (n)636 1759 MS (e)660 1759 MS
+( )682 1759 MS (m)696 1759 MS (a)733 1759 MS (t)755 1759 MS (r)770 1759 MS (i)787 1759 MS (c)799 1759 MS (e)822 1759 MS ( )844 1759 MS (c)857 1759 MS (r)879 1759 MS (e)896 1759 MS (u)918 1759 MS (s)943 1759 MS (e)962 1759 MS ( )984 1759 MS
+(a)997 1759 MS (u)1019 1759 MS ( )1044 1759 MS (f)1058 1759 MS (o)1073 1759 MS (r)1099 1759 MS (m)1117 1759 MS (a)1155 1759 MS (t)1177 1759 MS ( )1192 1759 MS (C)1205 1759 MS (o)1238 1759 MS (m)1264 1759 MS (p)1301 1759 MS (r)1326 1759 MS (e)1343 1759 MS
+(s)1365 1759 MS (s)1385 1759 MS (e)1404 1759 MS (d)1426 1759 MS ( )1451 1759 MS (S)1464 1759 MS (p)1492 1759 MS (a)1517 1759 MS (r)1539 1759 MS (s)1556 1759 MS (e)1575 1759 MS ( )1597 1759 MS (R)1610 1759 MS (o)1643 1759 MS (w)1669 1759 MS ( )1705 1759 MS
+(\()1718 1759 MS (C)1735 1759 MS (S)1768 1759 MS (R)1796 1759 MS (\))1829 1759 MS (.)1846 1759 MS ( )1859 1759 MS (C)1872 1759 MS (e)1905 1759 MS (s)1927 1759 MS ( )1946 1759 MS (t)1959 1759 MS (y)1974 1759 MS (p)1997 1759 MS (e)2022 1759 MS (s)2045 1759 MS
+( )2064 1759 MS (d)2077 1759 MS (e)2102 1759 MS ( )2125 1759 MS
+(b)235 1816 MS (a)259 1816 MS (s)282 1816 MS (e)301 1816 MS ( )323 1816 MS (s)336 1816 MS (o)355 1816 MS (n)381 1816 MS (t)405 1816 MS ( )420 1816 MS (d)433 1816 MS (\351)458 1816 MS (f)480 1816 MS (i)496 1816 MS (n)509 1816 MS (i)535 1816 MS
+(s)548 1816 MS ( )567 1816 MS (d)580 1816 MS (a)605 1816 MS (n)628 1816 MS (s)652 1816 MS ( )671 1816 MS (u)684 1816 MS (n)710 1816 MS ( )734 1816 MS (f)748 1816 MS (i)764 1816 MS (c)777 1816 MS (h)800 1816 MS (i)825 1816 MS (e)838 1816 MS
+(r)860 1816 MS ( )877 1816 MS (d)890 1816 MS (\222)915 1816 MS (i)932 1816 MS (n)945 1816 MS (c)970 1816 MS (l)993 1816 MS (u)1006 1816 MS (d)1031 1816 MS (e)1056 1816 MS
+( )1078 1816 MS
+(:)1091 1816 MS ( )1105 1816 MS (\253)1118 1816 MS
+( )1142 1816 MS
+(T)1155 1816 MS (y)1187 1816 MS (p)1210 1816 MS (e)1235 1816 MS (D)1258 1816 MS (a)1294 1816 MS (t)1316 1816 MS (a)1331 1816 MS (.)1353 1816 MS (i)1366 1816 MS (d)1378 1816 MS (l)1404 1816 MS
+( )1416 1816 MS
+(\273)1430 1816 MS (.)1454 1816 MS
+( )1467 1816 MS
+( )348 1874 MS
+[42 0 0 -42 0 0]/Courier MF
+(#)235 1921 MS (i)260 1921 MS (f)285 1921 MS (n)310 1921 MS (d)335 1921 MS (e)360 1921 MS (f)385 1921 MS ( )410 1921 MS (_)435 1921 MS (S)460 1921 MS (A)485 1921 MS (L)510 1921 MS (O)535 1921 MS (M)560 1921 MS (E)585 1921 MS (_)610 1921 MS
+(T)635 1921 MS (Y)660 1921 MS (P)685 1921 MS (E)710 1921 MS (D)735 1921 MS (A)760 1921 MS (T)785 1921 MS (A)810 1921 MS (_)835 1921 MS (I)860 1921 MS (D)885 1921 MS (L)910 1921 MS (_)935 1921 MS
+( )960 1921 MS
+(#)235 1969 MS (d)260 1969 MS (e)285 1969 MS (f)310 1969 MS (i)335 1969 MS (n)360 1969 MS (e)385 1969 MS ( )410 1969 MS (_)435 1969 MS (S)460 1969 MS (A)485 1969 MS (L)510 1969 MS (O)535 1969 MS (M)560 1969 MS (E)585 1969 MS (_)610 1969 MS
+(T)635 1969 MS (Y)660 1969 MS (P)685 1969 MS (E)710 1969 MS (D)735 1969 MS (A)760 1969 MS (T)785 1969 MS (A)810 1969 MS (_)835 1969 MS (I)860 1969 MS (D)885 1969 MS (L)910 1969 MS (_)935 1969 MS
+( )960 1969 MS
+( )235 2016 MS
+(m)235 2063 MS (o)260 2063 MS (d)285 2063 MS (u)310 2063 MS (l)335 2063 MS (e)360 2063 MS ( )385 2063 MS (E)410 2063 MS (n)435 2063 MS (g)460 2063 MS (i)485 2063 MS (n)510 2063 MS (e)535 2063 MS (s)560 2063 MS
+( )585 2063 MS
+({)235 2110 MS
+( )260 2110 MS
+( )235 2157 MS
+( )235 2205 MS ( )260 2205 MS (t)285 2205 MS (y)310 2205 MS (p)335 2205 MS (e)360 2205 MS (d)385 2205 MS (e)410 2205 MS (f)435 2205 MS ( )460 2205 MS (s)485 2205 MS (e)510 2205 MS (q)535 2205 MS (u)560 2205 MS (e)585 2205 MS (n)610 2205 MS
+(c)635 2205 MS (e)660 2205 MS (<)685 2205 MS (d)710 2205 MS (o)735 2205 MS (u)760 2205 MS (b)785 2205 MS (l)810 2205 MS (e)835 2205 MS (>)860 2205 MS ( )885 2205 MS (D)910 2205 MS
+(o)935 2205 MS (u)960 2205 MS (b)985 2205 MS (l)1010 2205 MS (e)1035 2205 MS (V)1060 2205 MS (e)1085 2205 MS (c)1110 2205 MS ( )1135 2205 MS (;)1160 2205 MS
+( )1185 2205 MS
+( )235 2252 MS ( )260 2252 MS (t)285 2252 MS (y)310 2252 MS (p)335 2252 MS (e)360 2252 MS (d)385 2252 MS (e)410 2252 MS (f)435 2252 MS ( )460 2252 MS (s)485 2252 MS (e)510 2252 MS (q)535 2252 MS (u)560 2252 MS (e)585 2252 MS (n)610 2252 MS
+(c)635 2252 MS (e)660 2252 MS (<)685 2252 MS (l)710 2252 MS (o)735 2252 MS (n)760 2252 MS (g)785 2252 MS (>)810 2252 MS ( )835 2252 MS (I)860 2252 MS (n)885 2252 MS (t)910 2252 MS (V)935 2252 MS (e)960 2252 MS (c)985 2252 MS (;)1010 2252 MS
+( )1035 2252 MS
+( )235 2299 MS
+( )235 2346 MS ( )260 2346 MS (t)285 2346 MS (y)310 2346 MS (p)335 2346 MS (e)360 2346 MS (d)385 2346 MS (e)410 2346 MS (f)435 2346 MS ( )460 2346 MS (s)485 2346 MS (t)510 2346 MS (r)535 2346 MS (u)560 2346 MS (c)585 2346 MS (t)610 2346 MS
+( )635 2346 MS (C)660 2346 MS (S)685 2346 MS (R)710 2346 MS ( )735 2346 MS ({)760 2346 MS
+( )785 2346 MS
+( )235 2393 MS ( )260 2393 MS ( )285 2393 MS ( )310 2393 MS (u)335 2393 MS (n)360 2393 MS (s)385 2393 MS (i)410 2393 MS (g)435 2393 MS (n)460 2393 MS (e)485 2393 MS (d)510 2393 MS ( )535 2393 MS (l)560 2393 MS (o)585 2393 MS (n)610 2393 MS
+(g)635 2393 MS ( )660 2393 MS (n)685 2393 MS (b)710 2393 MS (p)735 2393 MS (o)760 2393 MS (s)785 2393 MS (;)810 2393 MS
+( )835 2393 MS
+( )235 2441 MS ( )260 2441 MS ( )285 2441 MS ( )310 2441 MS (u)335 2441 MS (n)360 2441 MS (s)385 2441 MS (i)410 2441 MS (g)435 2441 MS (n)460 2441 MS (e)485 2441 MS (d)510 2441 MS ( )535 2441 MS (l)560 2441 MS (o)585 2441 MS (n)610 2441 MS
+(g)635 2441 MS ( )660 2441 MS (n)685 2441 MS (b)710 2441 MS (v)735 2441 MS (a)760 2441 MS (l)785 2441 MS (;)810 2441 MS
+( )835 2441 MS
+( )235 2488 MS ( )260 2488 MS ( )285 2488 MS ( )310 2488 MS
+(I)335 2488 MS (n)360 2488 MS (t)385 2488 MS (V)410 2488 MS (e)435 2488 MS (c)460 2488 MS ( )485 2488 MS (p)510 2488 MS (o)535 2488 MS (s)560 2488 MS (;)585 2488 MS
+( )610 2488 MS
+( )235 2535 MS ( )260 2535 MS ( )285 2535 MS ( )310 2535 MS (I)335 2535 MS (n)360 2535 MS (t)385 2535 MS (V)410 2535 MS (e)435 2535 MS (c)460 2535 MS ( )485 2535 MS (c)510 2535 MS (o)535 2535 MS (l)560 2535 MS (;)585 2535 MS
+( )610 2535 MS
+( )235 2582 MS ( )260 2582 MS ( )285 2582 MS ( )310 2582 MS (D)335 2582 MS (o)360 2582 MS (u)385 2582 MS (b)410 2582 MS (l)435 2582 MS (e)460 2582 MS (V)485 2582 MS (e)510 2582 MS (c)535 2582 MS ( )560 2582 MS (d)585 2582 MS (a)610 2582 MS
+(t)635 2582 MS (a)660 2582 MS (;)685 2582 MS
+( )710 2582 MS
+( )235 2629 MS ( )260 2629 MS (})285 2629 MS ( )310 2629 MS (C)335 2629 MS (S)360 2629 MS (R)385 2629 MS (M)410 2629 MS (a)435 2629 MS (t)460 2629 MS (S)485 2629 MS (t)510 2629 MS (r)535 2629 MS (u)560 2629 MS (c)585 2629 MS (t)610 2629 MS
+(;)635 2629 MS
+( )660 2629 MS
+( )235 2677 MS
+(})235 2724 MS ( )260 2724 MS (;)285 2724 MS
+( )310 2724 MS
+( )235 2771 MS
+( )260 2771 MS
+(#)235 2818 MS (e)260 2818 MS (n)285 2818 MS (d)310 2818 MS (i)335 2818 MS (f)360 2818 MS
+( )385 2818 MS
+( )235 2865 MS
+( )235 2913 MS
+[50 0 0 -50 0 0]/_Times-Roman MF
+( )348 2970 MS
+( )235 3027 MS
+showpage
+%%Page: 17 17
+14.449 827.879 translate 72 300 div dup neg scale
+0 0 transform .25 add round .25 sub exch .25 add round .25 sub exch itransform translate
+1 j
+1 setlinecap
+72 sl
+0.375 g
+n
+494 182 M
+494 155 472 133 445 133 c
+418 133 396 155 396 182 c
+396 209 418 231 445 231 c
+472 231 494 209 494 182 c
+cp
+CM 0.156 0.152 scale
+s
+SM
+71 sl
+n
+660 182 M
+660 155 638 133 611 133 c
+584 133 562 155 562 182 c
+562 209 584 231 611 231 c
+638 231 660 209 660 182 c
+cp
+CM 0.156 0.152 scale
+s
+SM
+n
+120 24 468 152 B
+1 g
+f
+1 sl
+n
+122 26 467 151 B
+cp
+s
+71 sl
+0.375 g
+n
+577 180 M
+577 153 555 131 528 131 c
+501 131 479 153 479 180 c
+479 206 501 228 528 228 c
+555 228 577 206 577 180 c
+cp
+gs
+1 g
+e
+gr
+CM 0.156 0.152 scale
+s
+SM
+n
+480 180 M
+575 180 L
+CM 0.156 0.152 scale
+s
+SM
+n
+34 18 562 187 B
+1 g
+f
+1 sl
+n
+36 20 561 186 B
+cp
+s
+n
+610 173 M
+591 173 L
+554 124 L
+579 126 L
+609 173 L
+610 173 L
+cp
+gs
+e
+gr
+s
+n
+448 170 M
+468 170 L
+504 122 L
+479 123 L
+449 170 L
+448 170 L
+cp
+gs
+e
+gr
+s
+0.375 g
+n
+473 140 M
+473 137 470 135 467 135 c
+464 135 462 137 462 140 c
+462 142 464 145 467 145 c
+470 145 473 142 473 140 c
+cp
+gs
+e
+gr
+s
+n
+593 139 M
+593 136 590 134 588 134 c
+585 134 583 136 583 139 c
+583 141 585 144 588 144 c
+590 144 593 141 593 139 c
+cp
+gs
+e
+gr
+s
+72 sl
+n
+665 137 M
+665 229 L
+CM 0.156 0.152 scale
+s
+SM
+[29 0 0 -29 0 0]/Times-Roman MF
+0 g
+( )676 243 MS
+[50 0 0 -50 0 0]/Times-Roman MF
+(D)400 289 MS (E)436 289 MS (N)467 289 MS ( )503 289 MS ( )516 289 MS (S)529 289 MS (a)557 289 MS (c)579 289 MS (l)601 289 MS (a)613 289 MS (y)636 289 MS
+( )660 289 MS
+( )1297 140 MS
+[38 0 0 -38 0 0]/Times-Roman MF
+(S)1785 129 MS (F)1806 129 MS (M)1827 129 MS (E)1861 129 MS (/)1883 129 MS (L)1894 129 MS (G)1916 129 MS (L)1943 129 MS (S)1965 129 MS (/)1986 129 MS (R)1997 129 MS (T)2022 129 MS (/)2045 129 MS (0)2056 129 MS (2)2075 129 MS
+(-)2094 129 MS
+(0)2106 129 MS (0)2125 129 MS (2)2144 129 MS
+( )2163 129 MS
+(D)1785 173 MS (a)1812 173 MS (t)1829 173 MS (e)1840 173 MS
+( )1856 173 MS
+(:)1866 173 MS
+( )1875 173 MS
+(3)1885 173 MS (0)1904 173 MS (/)1923 173 MS (0)1934 173 MS (5)1952 173 MS (/)1971 173 MS (2)1982 173 MS (0)2000 173 MS (0)2019 173 MS (2)2038 173 MS
+( )2057 173 MS
+n
+5 5 232 89 B
+f
+n
+5 5 232 89 B
+f
+n
+584 5 238 89 B
+f
+n
+5 5 823 89 B
+f
+n
+938 5 829 89 B
+f
+n
+5 5 1768 89 B
+f
+n
+436 5 1774 89 B
+f
+n
+5 5 2211 89 B
+f
+n
+5 5 2211 89 B
+f
+n
+5 256 232 95 B
+f
+n
+2 256 823 95 B
+f
+n
+2 256 1768 95 B
+f
+n
+5 256 2211 95 B
+f
+[50 0 0 -50 0 0]/Times-Roman MF
+(D)322 400 MS (M)358 400 MS (2)402 400 MS (S)427 400 MS (/)455 400 MS (S)469 400 MS (F)497 400 MS (M)524 400 MS (E)568 400 MS (/)599 400 MS (L)613 400 MS (G)643 400 MS (L)680 400 MS (S)710 400 MS
+( )738 400 MS
+[50 0 0 -50 0 0]/Times-Bold MF
+gs
+n
+241 53 1102 367 CB
+(R)1102 413 MS (A)1138 413 MS (P)1174 413 MS (P)1204 413 MS (O)1234 413 MS (R)1273 413 MS (T)1310 413 MS
+gr
+gs
+n
+150 53 1343 367 CB
+( )1343 413 MS (D)1356 413 MS (M)1392 413 MS (2)1440 413 MS (S)1465 413 MS
+gr
+[50 0 0 -50 0 0]/Times-Roman MF
+gs
+n
+24 52 1493 368 CB
+( )1493 413 MS
+gr
+[38 0 0 -38 0 0]/Times-Roman MF
+(P)1785 400 MS (a)1806 400 MS (g)1823 400 MS (e)1841 400 MS ( )1858 400 MS
+[50 0 0 -50 0 0]/Times-Roman MF
+(1)1868 400 MS (7)1893 400 MS
+(/)1918 400 MS
+(3)1932 400 MS (0)1957 400 MS
+[38 0 0 -38 0 0]/Times-Roman MF
+( )1982 400 MS
+n
+5 2 232 352 B
+f
+n
+2 2 823 352 B
+f
+n
+941 2 826 352 B
+f
+n
+2 2 1768 352 B
+f
+n
+5 2 2211 352 B
+f
+n
+5 67 232 355 B
+f
+n
+590 1 232 423 B
+f
+n
+2 67 823 355 B
+f
+n
+1 1 823 423 B
+f
+n
+942 1 825 423 B
+f
+n
+2 67 1768 355 B
+f
+n
+1 1 1768 423 B
+f
+n
+440 1 1770 423 B
+f
+n
+5 67 2211 355 B
+f
+n
+5 1 2211 423 B
+f
+[50 0 0 -50 0 0]/Times-Roman MF
+( )235 470 MS
+[33 0 0 -33 0 0]/Times-Roman MF
+/IsChar{exch/CharStrings get exch known}bd/MapCh{3 -1 roll/Encoding get 3 1\r
+roll put}bd/MapDegree{dup 16#b0 exch/degree IsChar{/degree}{/ring}ifelse MapCh}\r
+bd/MapBB{dup 16#a6 exch/brokenbar IsChar{/brokenbar}{/bar}ifelse MapCh}bd\r
+/reencode{findfont begin currentdict dup length dict begin{1 index/FID ne{def}\r
+{pop pop}ifelse}forall/FontName exch def dup length 0 ne{/Encoding Encoding 256\r
+array copy def 0 exch{dup type/nametype eq{Encoding 2 index 2 index put pop 1\r
+add}{exch pop}ifelse}forall}if pop currentdict dup end end/FontName get exch\r
+definefont dup MapDegree MapBB}bd/LATENC[0/grave/acute/circumflex/tilde/macron\r
+/breve/dotaccent/dieresis/ring/cedilla/hungarumlaut/ogonek/caron/dotlessi/fi/fl\r
+/Lslash/lslash/Zcaron/zcaron/minus/.notdef/.notdef/.notdef/.notdef/.notdef\r
+/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/space/exclam/quotedbl\r
+/numbersign/dollar/percent/ampersand/quotesingle/parenleft/parenright/asterisk\r
+/plus/comma/hyphen/period/slash/zero/one/two/three/four/five/six/seven/eight\r
+/nine/colon/semicolon/less/equal/greater/question/at/A/B/C/D/E/F/G/H/I/J/K/L/M\r
+/N/O/P/Q/R/S/T/U/V/W/X/Y/Z/bracketleft/backslash/bracketright/asciicircum\r
+/underscore/grave/a/b/c/d/e/f/g/h/i/j/k/l/m/n/o/p/q/r/s/t/u/v/w/x/y/z/braceleft\r
+/bar/braceright/asciitilde/.notdef/.notdef/.notdef/quotesinglbase/florin\r
+/quotedblbase/ellipsis/dagger/daggerdbl/circumflex/perthousand/Scaron\r
+/guilsinglleft/OE/.notdef/.notdef/.notdef/.notdef/quoteleft/quoteright\r
+/quotedblleft/quotedblright/bullet/endash/emdash/tilde/trademark/scaron\r
+/guilsinglright/oe/.notdef/.notdef/Ydieresis/.notdef/exclamdown/cent/sterling\r
+/currency/yen/brokenbar/section/dieresis/copyright/ordfeminine/guillemotleft\r
+/logicalnot/hyphen/registered/macron/degree/plusminus/twosuperior/threesuperior\r
+/acute/mu/paragraph/periodcentered/cedilla/onesuperior/ordmasculine\r
+/guillemotright/onequarter/onehalf/threequarters/questiondown/Agrave/Aacute\r
+/Acircumflex/Atilde/Adieresis/Aring/AE/Ccedilla/Egrave/Eacute/Ecircumflex\r
+/Edieresis/Igrave/Iacute/Icircumflex/Idieresis/Eth/Ntilde/Ograve/Oacute\r
+/Ocircumflex/Otilde/Odieresis/multiply/Oslash/Ugrave/Uacute/Ucircumflex\r
+/Udieresis/Yacute/Thorn/germandbls/agrave/aacute/acircumflex/atilde/adieresis\r
+/aring/ae/ccedilla/egrave/eacute/ecircumflex/edieresis/igrave/iacute\r
+/icircumflex/idieresis/eth/ntilde/ograve/oacute/ocircumflex/otilde/odieresis\r
+/divide/oslash/ugrave/uacute/ucircumflex/udieresis/yacute/thorn/ydieresis]def\r
+LATENC /_Times-Roman /Times-Roman reencode
+[33 0 0 -33 0 0]/_Times-Roman MF
+(L)242 3256 MS (e)262 3256 MS (s)277 3256 MS ( )289 3256 MS (i)298 3256 MS (n)307 3256 MS (f)324 3256 MS (o)335 3256 MS (r)351 3256 MS (m)363 3256 MS (a)388 3256 MS (t)403 3256 MS (i)412 3256 MS (o)422 3256 MS (n)439 3256 MS (s)456 3256 MS
+( )468 3256 MS (c)477 3256 MS (o)492 3256 MS (n)508 3256 MS (t)524 3256 MS (e)534 3256 MS (n)549 3256 MS (u)565 3256 MS (e)582 3256 MS (s)597 3256 MS ( )610 3256 MS (d)618 3256 MS (a)634 3256 MS (n)650 3256 MS (s)667 3256 MS ( )679 3256 MS
+(c)688 3256 MS (e)703 3256 MS ( )717 3256 MS (d)726 3256 MS (o)742 3256 MS (c)759 3256 MS (u)773 3256 MS (m)791 3256 MS (e)817 3256 MS (n)831 3256 MS (t)847 3256 MS ( )857 3256 MS (s)866 3256 MS (o)878 3256 MS (n)895 3256 MS (t)911 3256 MS
+( )921 3256 MS (r)929 3256 MS (\351)941 3256 MS (s)956 3256 MS (e)968 3256 MS (r)982 3256 MS (v)994 3256 MS (\351)1011 3256 MS (e)1026 3256 MS (s)1041 3256 MS ( )1053 3256 MS (a)1061 3256 MS (u)1076 3256 MS (x)1093 3256 MS ( )1109 3256 MS (d)1118 3256 MS
+(e)1135 3256 MS (s)1150 3256 MS (t)1162 3256 MS (i)1171 3256 MS (n)1181 3256 MS (a)1197 3256 MS (t)1212 3256 MS (a)1221 3256 MS (i)1236 3256 MS (r)1245 3256 MS (e)1257 3256 MS (s)1272 3256 MS ( )1284 3256 MS (n)1293 3256 MS (o)1309 3256 MS (m)1326 3256 MS
+(m)1352 3256 MS (\351)1378 3256 MS (m)1393 3256 MS (e)1419 3256 MS (n)1433 3256 MS (t)1450 3256 MS ( )1459 3256 MS (d)1468 3256 MS (\351)1484 3256 MS (s)1499 3256 MS (i)1512 3256 MS (g)1521 3256 MS
+(n)1538 3256 MS (\351)1555 3256 MS (s)1570 3256 MS ( )1582 3256 MS (e)1591 3256 MS (t)1605 3256 MS ( )1615 3256 MS (n)1623 3256 MS (e)1640 3256 MS ( )1654 3256 MS (p)1663 3256 MS (e)1680 3256 MS (u)1694 3256 MS (v)1711 3256 MS (e)1728 3256 MS (n)1743 3256 MS
+(t)1759 3256 MS ( )1768 3256 MS (r)1776 3256 MS (e)1788 3256 MS (c)1803 3256 MS (e)1818 3256 MS (v)1832 3256 MS (o)1849 3256 MS (i)1865 3256 MS (r)1874 3256 MS ( )1886 3256 MS (a)1894 3256 MS (u)1909 3256 MS (c)1926 3256 MS (u)1940 3256 MS (n)1957 3256 MS
+(e)1974 3256 MS ( )1988 3256 MS (d)1997 3256 MS (i)2013 3256 MS (f)2023 3256 MS (f)2034 3256 MS (u)2044 3256 MS (s)2062 3256 MS (i)2074 3256 MS (o)2084 3256 MS (n)2101 3256 MS
+( )2117 3256 MS
+(s)928 3294 MS (a)940 3294 MS (n)955 3294 MS (s)972 3294 MS ( )985 3294 MS (l)993 3294 MS (\222)1002 3294 MS (a)1013 3294 MS (u)1028 3294 MS (t)1045 3294 MS (o)1054 3294 MS (r)1071 3294 MS (i)1082 3294 MS (s)1092 3294 MS (a)1104 3294 MS (t)1119 3294 MS
+(i)1128 3294 MS (o)1138 3294 MS (n)1154 3294 MS ( )1171 3294 MS (e)1180 3294 MS (x)1194 3294 MS (p)1211 3294 MS (r)1227 3294 MS (e)1239 3294 MS (s)1254 3294 MS (s)1267 3294 MS (e)1280 3294 MS ( )1294 3294 MS (d)1303 3294 MS (u)1319 3294 MS ( )1336 3294 MS
+(D)1344 3294 MS (M)1368 3294 MS (2)1397 3294 MS (S)1414 3294 MS
+[50 0 0 -50 0 0]/Times-Roman MF
+( )1432 3294 MS
+[50 0 0 -50 0 0]/Helvetica-BoldOblique MF
+(9)310 527 MS (.)338 527 MS (1)352 527 MS
+( )380 527 MS
+LATENC /_Helvetica-BoldOblique /Helvetica-BoldOblique reencode
+[50 0 0 -50 0 0]/_Helvetica-BoldOblique MF
+(L)430 527 MS (e)461 527 MS ( )489 527 MS (c)503 527 MS (o)531 527 MS (m)562 527 MS (p)606 527 MS (o)636 527 MS (s)667 527 MS (a)695 527 MS (n)722 527 MS (t)753 527 MS ( )770 527 MS (e)784 527 MS (t)811 527 MS ( )828 527 MS
+(l)842 527 MS (a)856 527 MS ( )884 527 MS (d)897 527 MS (o)928 527 MS (n)958 527 MS (n)989 527 MS (\351)1020 527 MS (e)1047 527 MS ( )1075 527 MS (v)1089 527 MS (e)1117 527 MS (c)1145 527 MS (t)1172 527 MS (e)1189 527 MS (u)1217 527 MS
+(r)1248 527 MS ( )1267 527 MS (p)1281 527 MS (a)1311 527 MS (r)1339 527 MS (a)1358 527 MS (l)1386 527 MS (l)1400 527 MS (\350)1414 527 MS (l)1441 527 MS (e)1455 527 MS
+( )1483 527 MS
+[50 0 0 -50 0 0]/Times-Roman MF
+( )235 597 MS
+(L)348 655 MS (e)378 655 MS ( )400 655 MS (c)416 655 MS (o)438 655 MS
+LATENC /_Times-Roman /Times-Roman reencode
+[50 0 0 -50 0 0]/_Times-Roman MF
+(m)464 655 MS (p)501 655 MS (o)526 655 MS (s)552 655 MS (a)571 655 MS (n)594 655 MS (t)618 655 MS ( )633 655 MS (p)649 655 MS (a)674 655 MS (r)696 655 MS (a)713 655 MS (l)736 655 MS (l)749 655 MS (\350)762 655 MS (l)785 655 MS
+(e)798 655 MS ( )820 655 MS (v)836 655 MS (e)861 655 MS (c)883 655 MS (t)905 655 MS (e)920 655 MS (u)942 655 MS (r)967 655 MS ( )984 655 MS (N)1000 655 MS (u)1036 655 MS (m)1061 655 MS (e)1098 655 MS (r)1120 655 MS (i)1138 655 MS
+(c)1151 655 MS (a)1173 655 MS (l)1196 655 MS ( )1209 655 MS (P)1225 655 MS (l)1254 655 MS (a)1267 655 MS (t)1289 655 MS (o)1304 655 MS (n)1330 655 MS ( )1354 655 MS (e)1369 655 MS (s)1391 655 MS (t)1410 655 MS ( )1425 655 MS (c)1441 655 MS
+(e)1463 655 MS (n)1485 655 MS (s)1509 655 MS (\351)1528 655 MS ( )1550 655 MS (\352)1566 655 MS (t)1588 655 MS (r)1603 655 MS (e)1620 655 MS ( )1642 655 MS (r)1658 655 MS (e)1675 655 MS (p)1697 655 MS (r)1722 655 MS (\351)1739 655 MS (s)1761 655 MS
+(e)1780 655 MS (n)1802 655 MS (t)1826 655 MS (a)1841 655 MS (t)1863 655 MS (i)1878 655 MS (f)1891 655 MS ( )1906 655 MS (d)1922 655 MS (\222)1948 655 MS (u)1964 655 MS (n)1990 655 MS ( )2014 655 MS (c)2030 655 MS (o)2052 655 MS (d)2078 655 MS
+(e)2103 655 MS ( )2125 655 MS
+(d)235 712 MS (e)260 712 MS ( )282 712 MS (c)296 712 MS (a)318 712 MS (l)341 712 MS (c)354 712 MS (u)376 712 MS (l)402 712 MS ( )415 712 MS (q)429 712 MS (u)454 712 MS (i)480 712 MS ( )493 712 MS (g)508 712 MS (\351)533 712 MS
+(n)556 712 MS (\350)580 712 MS (r)602 712 MS (e)619 712 MS ( )641 712 MS (u)655 712 MS (n)681 712 MS ( )706 712 MS (r)720 712 MS (\351)737 712 MS (s)759 712 MS (u)778 712 MS (l)804 712 MS (t)816 712 MS (a)831 712 MS (t)853 712 MS
+( )868 712 MS (d)882 712 MS (e)907 712 MS ( )929 712 MS (t)943 712 MS (y)959 712 MS (p)982 712 MS (e)1007 712 MS ( )1030 712 MS (o)1044 712 MS (b)1070 712 MS (j)1095 712 MS (e)1108 712 MS (t)1130 712 MS ( )1145 712 MS (v)1159 712 MS
+(e)1183 712 MS (c)1205 712 MS (t)1227 712 MS (e)1242 712 MS (u)1264 712 MS (r)1289 712 MS ( )1306 712 MS (p)1320 712 MS (a)1345 712 MS (r)1367 712 MS (a)1384 712 MS (l)1407 712 MS (l)1420 712 MS (\350)1433 712 MS (l)1456 712 MS (e)1469 712 MS
+(.)1491 712 MS ( )1504 712 MS (I)1518 712 MS (l)1536 712 MS ( )1549 712 MS (f)1564 712 MS (a)1580 712 MS (u)1602 712 MS (t)1627 712 MS ( )1642 712 MS (b)1656 712 MS (i)1681 712 MS (e)1694 712 MS (n)1717 712 MS ( )1742 712 MS (f)1757 712 MS
+(a)1773 712 MS (i)1796 712 MS (r)1808 712 MS (e)1825 712 MS ( )1848 712 MS (l)1863 712 MS (a)1876 712 MS ( )1898 712 MS (d)1912 712 MS (i)1938 712 MS (s)1951 712 MS (t)1970 712 MS (i)1986 712 MS (n)1999 712 MS (c)2024 712 MS (t)2046 712 MS
+(i)2062 712 MS (o)2074 712 MS (n)2100 712 MS ( )2125 712 MS
+(e)235 770 MS (n)257 770 MS (t)281 770 MS (r)296 770 MS (e)313 770 MS ( )335 770 MS (l)358 770 MS (e)370 770 MS ( )392 770 MS (c)415 770 MS (o)437 770 MS (m)464 770 MS (p)501 770 MS (o)526 770 MS (s)552 770 MS (a)571 770 MS
+(n)593 770 MS (t)617 770 MS ( )632 770 MS (e)654 770 MS (t)676 770 MS ( )691 770 MS (l)714 770 MS (a)726 770 MS ( )748 770 MS (d)770 770 MS (o)795 770 MS (n)821 770 MS (n)846 770 MS (\351)870 770 MS (e)892 770 MS (,)914 770 MS
+( )927 770 MS (m)950 770 MS (\352)988 770 MS (m)1011 770 MS (e)1049 770 MS ( )1071 770 MS (s)1094 770 MS (i)1114 770 MS ( )1127 770 MS (t)1149 770 MS (o)1164 770 MS (u)1190 770 MS (s)1215 770 MS ( )1234 770 MS (l)1256 770 MS (e)1269 770 MS
+(s)1292 770 MS ( )1311 770 MS (d)1333 770 MS (e)1358 770 MS (u)1380 770 MS (x)1406 770 MS ( )1430 770 MS (s)1453 770 MS (o)1472 770 MS (n)1498 770 MS (t)1522 770 MS ( )1537 770 MS (r)1559 770 MS (e)1576 770 MS (p)1598 770 MS (r)1623 770 MS
+(\351)1640 770 MS (s)1662 770 MS (e)1681 770 MS (n)1703 770 MS (t)1727 770 MS (\351)1742 770 MS (s)1764 770 MS ( )1783 770 MS (d)1805 770 MS (a)1830 770 MS
+(n)1853 770 MS (s)1877 770 MS ( )1897 770 MS (l)1920 770 MS (\222)1933 770 MS (i)1950 770 MS (n)1963 770 MS (t)1987 770 MS (e)2002 770 MS (r)2024 770 MS (f)2042 770 MS (a)2058 770 MS (c)2080 770 MS (e)2102 770 MS ( )2125 770 MS
+(C)235 827 MS (O)268 827 MS (R)304 827 MS (B)337 827 MS (A)371 827 MS ( )406 827 MS (c)419 827 MS (o)441 827 MS (m)468 827 MS (m)506 827 MS (e)544 827 MS ( )566 827 MS (u)579 827 MS (n)605 827 MS (e)629 827 MS ( )651 827 MS
+(\253)665 827 MS
+( )689 827 MS
+(i)703 827 MS (n)716 827 MS (t)740 827 MS (e)755 827 MS (r)777 827 MS (f)794 827 MS (a)810 827 MS (c)832 827 MS (e)854 827 MS
+( )876 827 MS
+(\273)890 827 MS (.)914 827 MS ( )927 827 MS (S)940 827 MS (i)968 827 MS ( )980 827 MS (l)994 827 MS (a)1007 827 MS ( )1029 827 MS (d)1042 827 MS (o)1067 827 MS (n)1093 827 MS (n)1118 827 MS (\351)1142 827 MS (e)1164 827 MS ( )1186 827 MS
+(v)1200 827 MS (e)1224 827 MS (c)1247 827 MS (t)1269 827 MS (e)1284 827 MS (u)1306 827 MS (r)1331 827 MS ( )1348 827 MS (e)1361 827 MS (s)1383 827 MS (t)1401 827 MS ( )1416 827 MS (u)1429 827 MS (n)1454 827 MS (e)1478 827 MS ( )1500 827 MS
+(i)1514 827 MS (n)1527 827 MS (t)1551 827 MS (e)1566 827 MS (r)1588 827 MS (f)1605 827 MS (a)1620 827 MS (c)1642 827 MS (e)1665 827 MS ( )1687 827 MS (e)1700 827 MS (t)1722 827 MS ( )1737 827 MS (n)1750 827 MS (o)1774 827 MS (n)1800 827 MS
+( )1824 827 MS (s)1837 827 MS (e)1856 827 MS (u)1878 827 MS (l)1904 827 MS (e)1917 827 MS (m)1940 827 MS (e)1978 827 MS (n)2001 827 MS (t)2025 827 MS ( )2040 827 MS (u)2053 827 MS (n)2078 827 MS (e)2102 827 MS ( )2125 827 MS
+(s)235 885 MS (\351)254 885 MS (q)276 885 MS (u)301 885 MS (e)326 885 MS (n)349 885 MS (c)373 885 MS (e)395 885 MS ( )417 885 MS (d)436 885 MS (e)461 885 MS ( )483 885 MS (d)502 885 MS (o)527 885 MS (u)553 885 MS (b)578 885 MS
+(l)603 885 MS (e)616 885 MS ( )638 885 MS (f)658 885 MS (l)675 885 MS (o)687 885 MS (t)713 885 MS (t)728 885 MS (a)743 885 MS (n)765 885 MS (t)789 885 MS (s)804 885 MS (,)823 885 MS ( )836 885 MS (c)855 885 MS (\222)877 885 MS
+(e)893 885 MS (s)915 885 MS (t)934 885 MS ( )949 885 MS (p)968 885 MS (o)992 885 MS (u)1018 885 MS (r)1043 885 MS ( )1060 885 MS (p)1079 885 MS (e)1104 885 MS (r)1126 885 MS (m)1143 885 MS (e)1180 885 MS (t)1202 885 MS (t)1217 885 MS
+(r)1231 885 MS (e)1247 885 MS ( )1269 885 MS (d)1288 885 MS (\222)1313 885 MS (u)1329 885 MS (n)1355 885 MS (e)1379 885 MS ( )1401 885 MS (p)1420 885 MS (a)1445 885 MS (r)1467 885 MS (t)1484 885 MS ( )1499 885 MS (d)1518 885 MS (e)1543 885 MS
+( )1565 885 MS (t)1584 885 MS (r)1599 885 MS (a)1616 885 MS (n)1638 885 MS (s)1662 885 MS (m)1682 885 MS (e)1719 885 MS (t)1741 885 MS (t)1756 885 MS (r)1771 885 MS (e)1788 885 MS ( )1810 885 MS (u)1829 885 MS (n)1854 885 MS (i)1879 885 MS
+(q)1891 885 MS (u)1916 885 MS (e)1941 885 MS (m)1964 885 MS (e)2002 885 MS (n)2025 885 MS (t)2049 885 MS ( )2064 885 MS (s)2083 885 MS (a)2102 885 MS ( )2125 885 MS
+(r)235 942 MS (\351)252 942 MS (f)274 942 MS (\351)290 942 MS (r)312 942 MS (e)329 942 MS (n)352 942 MS (c)376 942 MS (e)398 942 MS ( )420 942 MS (C)433 942 MS (O)467 942 MS (R)503 942 MS (B)536 942 MS (A)570 942 MS ( )605 942 MS
+(e)619 942 MS (n)642 942 MS ( )666 942 MS (a)679 942 MS (r)701 942 MS (g)718 942 MS (u)743 942 MS (m)769 942 MS (e)807 942 MS (n)830 942 MS (t)854 942 MS ( )869 942 MS (d)882 942 MS (e)907 942 MS ( )929 942 MS (s)942 942 MS
+(e)961 942 MS (r)983 942 MS (v)1000 942 MS (i)1025 942 MS (c)1038 942 MS (e)1061 942 MS ( )1083 942 MS (e)1096 942 MS (t)1118 942 MS ( )1133 942 MS (n)1146 942 MS (o)1170 942 MS (n)1196 942 MS ( )1220 942 MS (p)1234 942 MS (a)1259 942 MS
+(s)1281 942 MS ( )1300 942 MS (l)1314 942 MS (\222)1327 942 MS (e)1344 942 MS (n)1367 942 MS (s)1391 942 MS (e)1410 942 MS (m)1433 942 MS (b)1471 942 MS (l)1497 942 MS
+(e)1510 942 MS ( )1532 942 MS (d)1545 942 MS (u)1570 942 MS ( )1595 942 MS (v)1609 942 MS (e)1634 942 MS (c)1656 942 MS (t)1678 942 MS (e)1693 942 MS (u)1715 942 MS (r)1740 942 MS (,)1757 942 MS ( )1770 942 MS (e)1783 942 MS (t)1804 942 MS
+( )1819 942 MS (d)1832 942 MS (\222)1857 942 MS (a)1873 942 MS (u)1895 942 MS (t)1920 942 MS (r)1935 942 MS (e)1952 942 MS ( )1974 942 MS (p)1987 942 MS (a)2012 942 MS (r)2034 942 MS (t)2050 942 MS ( )2065 942 MS (d)2078 942 MS (e)2103 942 MS
+( )2125 942 MS
+(l)235 1000 MS (e)248 1000 MS ( )270 1000 MS (d)286 1000 MS (\351)311 1000 MS (f)334 1000 MS (i)351 1000 MS (n)364 1000 MS (i)389 1000 MS (r)402 1000 MS ( )419 1000 MS (e)435 1000 MS (n)458 1000 MS ( )482 1000 MS (t)498 1000 MS (a)513 1000 MS
+(n)535 1000 MS (t)559 1000 MS ( )574 1000 MS (q)590 1000 MS (u)615 1000 MS (e)640 1000 MS ( )662 1000 MS (d)678 1000 MS (o)703 1000 MS (n)729 1000 MS (n)753 1000 MS (\351)777 1000 MS (e)799 1000 MS ( )821 1000 MS (p)837 1000 MS (a)862 1000 MS
+(r)884 1000 MS (a)901 1000 MS (l)924 1000 MS (l)938 1000 MS (\350)951 1000 MS (l)974 1000 MS (e)987 1000 MS
+( )1009 1000 MS
+(:)1022 1000 MS ( )1036 1000 MS (c)1052 1000 MS (\222)1074 1000 MS (e)1090 1000 MS (s)1112 1000 MS (t)1131 1000 MS ( )1146 1000 MS (\340)1162 1000 MS ( )1184 1000 MS (d)1200 1000 MS (i)1226 1000 MS (r)1238 1000 MS (e)1256 1000 MS ( )1278 1000 MS (q)1294 1000 MS
+(u)1319 1000 MS (e)1344 1000 MS ( )1366 1000 MS (l)1383 1000 MS (\222)1395 1000 MS (i)1412 1000 MS (n)1425 1000 MS (t)1449 1000 MS (e)1464 1000 MS (r)1486 1000 MS (f)1504 1000 MS (a)1520 1000 MS (c)1542 1000 MS (e)1564 1000 MS ( )1586 1000 MS (P)1602 1000 MS
+(V)1630 1000 MS (e)1666 1000 MS (c)1688 1000 MS ( )1710 1000 MS (h)1727 1000 MS (\351)1751 1000 MS (r)1773 1000 MS (i)1791 1000 MS (t)1803 1000 MS (e)1818 1000 MS ( )1840 1000 MS (d)1856 1000 MS (e)1881 1000 MS ( )1903 1000 MS (l)1920 1000 MS (\222)1933 1000 MS
+(i)1950 1000 MS (n)1963 1000 MS (t)1987 1000 MS (e)2002 1000 MS (r)2024 1000 MS (f)2042 1000 MS (a)2058 1000 MS (c)2080 1000 MS (e)2102 1000 MS ( )2125 1000 MS
+(g)235 1057 MS (\351)260 1057 MS (n)282 1057 MS (\351)306 1057 MS (r)328 1057 MS (i)346 1057 MS (q)359 1057 MS (u)384 1057 MS (e)409 1057 MS ( )431 1057 MS (M)444 1057 MS (P)488 1057 MS (I)516 1057 MS (O)533 1057 MS (b)570 1057 MS (j)595 1057 MS
+(e)608 1057 MS (c)630 1057 MS (t)652 1057 MS (.)667 1057 MS
+( )680 1057 MS
+( )235 1115 MS
+[54 0 0 -54 0 0]/Helvetica-Bold MF
+(9)310 1225 MS (.)340 1225 MS (1)355 1225 MS (.)385 1225 MS (1)400 1225 MS
+( )430 1225 MS
+LATENC /_Helvetica-Bold /Helvetica-Bold reencode
+[54 0 0 -54 0 0]/_Helvetica-Bold MF
+(D)460 1225 MS (\351)499 1225 MS (f)529 1225 MS (i)547 1225 MS (n)562 1225 MS (i)595 1225 MS (t)610 1225 MS (i)628 1225 MS (o)643 1225 MS (n)676 1225 MS ( )709 1225 MS (d)724 1225 MS (e)757 1225 MS ( )787 1225 MS (l)802 1225 MS (\222)817 1225 MS
+(i)832 1225 MS (n)847 1225 MS (t)880 1225 MS (e)898 1225 MS (r)928 1225 MS (f)949 1225 MS (a)968 1225 MS (c)998 1225 MS (e)1028 1225 MS ( )1058 1225 MS (C)1073 1225 MS (O)1112 1225 MS (R)1154 1225 MS (B)1193 1225 MS (A)1233 1225 MS
+( )1271 1225 MS
+[50 0 0 -50 0 0]/Times-Roman MF
+( )235 1297 MS
+LATENC /_Times-Roman /Times-Roman reencode
+[50 0 0 -50 0 0]/_Times-Roman MF
+(D)348 1355 MS (a)384 1355 MS (n)406 1355 MS (s)431 1355 MS ( )450 1355 MS (l)483 1355 MS (\222)496 1355 MS (e)512 1355 MS (x)535 1355 MS (e)560 1355 MS (m)583 1355 MS (p)620 1355 MS (l)646 1355 MS (e)659 1355 MS ( )682 1355 MS (c)714 1355 MS
+(i)737 1355 MS
+(-)749 1355 MS
+(d)766 1355 MS (e)791 1355 MS (s)814 1355 MS (s)833 1355 MS (o)852 1355 MS (u)878 1355 MS (s)903 1355 MS (,)922 1355 MS ( )935 1355 MS (o)967 1355 MS (n)993 1355 MS ( )1017 1355 MS (d)1049 1355 MS (\351)1074 1355 MS (f)1097 1355 MS (i)1113 1355 MS
+(n)1126 1355 MS (i)1152 1355 MS (t)1164 1355 MS ( )1179 1355 MS (d)1211 1355 MS (e)1236 1355 MS (u)1258 1355 MS (x)1284 1355 MS ( )1308 1355 MS (i)1341 1355 MS (n)1355 1355 MS (t)1379 1355 MS (e)1394 1355 MS (r)1416 1355 MS (f)1433 1355 MS (a)1449 1355 MS
+(c)1471 1355 MS (e)1493 1355 MS (s)1515 1355 MS (.)1534 1355 MS ( )1547 1355 MS (C)1579 1355 MS (e)1612 1355 MS (s)1635 1355 MS ( )1654 1355 MS (d)1686 1355 MS (e)1711 1355 MS (u)1733 1355 MS (x)1759 1355 MS ( )1783 1355 MS (i)1816 1355 MS (n)1829 1355 MS
+(t)1853 1355 MS (e)1868 1355 MS (r)1890 1355 MS (f)1908 1355 MS
+(a)1923 1355 MS (c)1946 1355 MS (e)1968 1355 MS (s)1990 1355 MS ( )2009 1355 MS (s)2042 1355 MS (o)2061 1355 MS (n)2087 1355 MS (t)2111 1355 MS ( )2125 1355 MS
+(p)235 1412 MS (a)260 1412 MS (r)282 1412 MS (a)299 1412 MS (l)322 1412 MS (l)335 1412 MS (\350)348 1412 MS (l)371 1412 MS (e)384 1412 MS (s)407 1412 MS ( )426 1412 MS (c)439 1412 MS (a)461 1412 MS (r)483 1412 MS ( )500 1412 MS (e)513 1412 MS
+(l)536 1412 MS (l)549 1412 MS (e)562 1412 MS (s)584 1412 MS ( )603 1412 MS (h)617 1412 MS (\351)641 1412 MS (r)663 1412 MS (i)681 1412 MS (t)693 1412 MS (e)708 1412 MS (n)730 1412 MS (t)754 1412 MS ( )769 1412 MS (d)782 1412 MS (e)807 1412 MS
+( )829 1412 MS (l)842 1412 MS (\222)855 1412 MS (i)872 1412 MS (n)885 1412 MS (t)909 1412 MS (e)924 1412 MS (r)946 1412 MS (f)964 1412 MS (a)980 1412 MS (c)1002 1412 MS (e)1024 1412 MS ( )1046 1412 MS (g)1059 1412 MS (\351)1084 1412 MS (n)1107 1412 MS
+(\351)1131 1412 MS (r)1153 1412 MS (i)1171 1412 MS (q)1183 1412 MS (u)1208 1412 MS (e)1233 1412 MS ( )1256 1412 MS (p)1269 1412 MS (a)1294 1412 MS (r)1316 1412 MS (a)1333 1412 MS (l)1355 1412 MS (l)1368 1412 MS (\350)1381 1412 MS (l)1404 1412 MS (e)1417 1412 MS
+( )1439 1412 MS
+(:)1452 1412 MS ( )1466 1412 MS (M)1479 1412 MS (P)1523 1412 MS (I)1551 1412 MS (O)1568 1412 MS (b)1604 1412 MS (j)1629 1412 MS (e)1642 1412 MS (c)1665 1412 MS (t)1687 1412 MS (.)1702 1412 MS ( )1715 1412 MS
+( )1728 1412 MS
+(L)348 1470 MS (a)378 1470 MS ( )400 1470 MS (p)429 1470 MS (r)454 1470 MS (e)471 1470 MS (m)494 1470 MS (i)533 1470 MS (\350)546 1470 MS (r)568 1470 MS (e)585 1470 MS ( )607 1470 MS (i)637 1470 MS (n)650 1470 MS (t)674 1470 MS (e)689 1470 MS
+(r)711 1470 MS (f)729 1470 MS (a)745 1470 MS (c)767 1470 MS (e)789 1470 MS ( )811 1470 MS (n)841 1470 MS (o)865 1470 MS (m)892 1470 MS (m)930 1470 MS (\351)968 1470 MS (e)990 1470 MS ( )1013 1470 MS (P)1042 1470 MS (V)1070 1470 MS (e)1106 1470 MS
+(c)1128 1470 MS ( )1150 1470 MS (r)1179 1470 MS (e)1196 1470 MS (p)1218 1470 MS (r)1243 1470 MS (\351)1260 1470 MS (s)1283 1470 MS (e)1302 1470 MS (n)1325 1470 MS (t)1349 1470 MS (e)1364 1470 MS ( )1386 1470 MS (l)1416 1470 MS (a)1429 1470 MS ( )1451 1470 MS
+(d)1480 1470 MS (o)1505 1470 MS (n)1531 1470 MS (n)1556 1470 MS (\351)1580 1470 MS (e)1602 1470 MS ( )1625 1470 MS (v)1655 1470 MS (e)1679 1470 MS (c)1701 1470 MS (t)1723 1470 MS (e)1738 1470 MS (u)1760 1470 MS (r)1785 1470 MS ( )1802 1470 MS (p)1831 1470 MS
+(a)1856 1470 MS (r)1878 1470 MS (a)1895 1470 MS (l)1918 1470 MS (l)1931 1470 MS (\350)1944 1470 MS (l)1967 1470 MS (e)1980 1470 MS (.)2002 1470 MS ( )2015 1470 MS (E)2044 1470 MS (l)2076 1470 MS (l)2089 1470 MS (e)2102 1470 MS ( )2125 1470 MS
+(c)235 1527 MS (o)257 1527 MS (n)283 1527 MS (t)307 1527 MS (i)322 1527 MS (e)334 1527 MS (n)357 1527 MS (t)381 1527 MS ( )396 1527 MS (u)422 1527 MS (n)447 1527 MS ( )471 1527 MS (a)497 1527 MS (t)519 1527 MS (t)533 1527 MS (r)548 1527 MS
+(i)565 1527 MS (b)578 1527 MS (u)602 1527 MS (t)627 1527 MS ( )642 1527 MS (d)668 1527 MS (e)693 1527 MS ( )715 1527 MS (t)740 1527 MS (y)755 1527 MS (p)778 1527 MS (e)804 1527 MS ( )826 1527 MS (s)852 1527 MS (\351)871 1527 MS (q)893 1527 MS
+(u)918 1527 MS (e)943 1527 MS (n)966 1527 MS (c)990 1527 MS (e)1012 1527 MS ( )1034 1527 MS (d)1060 1527 MS (e)1085 1527 MS ( )1107 1527 MS (d)1133 1527 MS (o)1158 1527 MS (u)1184 1527 MS (b)1209 1527 MS (l)1234 1527 MS (e)1248 1527 MS ( )1270 1527 MS
+(f)1297 1527 MS (l)1313 1527 MS (o)1325 1527 MS (t)1351 1527 MS (t)1365 1527 MS (a)1380 1527 MS (n)1402 1527 MS (t)1426 1527 MS (s)1441 1527 MS (.)1460 1527 MS ( )1473 1527 MS (C)1499 1527 MS (e)1532 1527 MS (t)1553 1527 MS (t)1567 1527 MS (e)1582 1527 MS
+( )1604 1527 MS (s)1630 1527 MS (\351)1649 1527 MS (q)1671 1527 MS (u)1696 1527 MS (e)1721 1527 MS (n)1743 1527 MS (c)1767 1527 MS (e)1789 1527 MS ( )1811 1527 MS (r)1837 1527 MS (e)1854 1527 MS (p)1876 1527 MS (r)1901 1527 MS (\351)1918 1527 MS (s)1940 1527 MS
+(e)1959 1527 MS (n)1982 1527 MS (t)2006 1527 MS (e)2021 1527 MS ( )2043 1527 MS (l)2070 1527 MS (e)2082 1527 MS (s)2105 1527 MS
+( )2125 1527 MS
+(d)235 1585 MS (o)260 1585 MS (n)286 1585 MS (n)310 1585 MS (\351)334 1585 MS (e)356 1585 MS (s)379 1585 MS ( )398 1585 MS (l)419 1585 MS (o)431 1585 MS (c)457 1585 MS (a)479 1585 MS (l)502 1585 MS (e)515 1585 MS (s)538 1585 MS ( )557 1585 MS
+(\340)577 1585 MS ( )599 1585 MS (u)619 1585 MS (n)645 1585 MS ( )669 1585 MS (p)689 1585 MS (r)714 1585 MS (o)731 1585 MS (c)757 1585 MS (e)779 1585 MS (s)801 1585 MS (s)820 1585 MS (e)839 1585 MS (u)861 1585 MS (r)886 1585 MS (,)903 1585 MS
+( )916 1585 MS (e)936 1585 MS (t)958 1585 MS ( )973 1585 MS (c)993 1585 MS (o)1015 1585 MS (n)1041 1585 MS (s)1065 1585 MS (t)1084 1585 MS (i)1099 1585 MS (t)1111 1585 MS (u)1126 1585 MS (e)1151 1585 MS ( )1173 1585 MS (d)1193 1585 MS (o)1218 1585 MS
+(n)1243 1585 MS (c)1267 1585 MS ( )1289 1585 MS (u)1309 1585 MS (n)1335 1585 MS (e)1359 1585 MS ( )1382 1585 MS (p)1402 1585 MS (a)1427 1585 MS (r)1449 1585 MS (t)1466 1585 MS (i)1481 1585 MS (e)1493 1585 MS ( )1516 1585 MS (s)1536 1585 MS (e)1555 1585 MS
+(u)1577 1585 MS (l)1603 1585 MS (e)1616 1585 MS (m)1639 1585 MS (e)1677 1585 MS (n)1700 1585 MS (t)1724 1585 MS ( )1739 1585 MS (d)1759 1585 MS (e)1784 1585 MS ( )1806 1585 MS (l)1827 1585 MS (\222)1840 1585 MS (o)1856 1585 MS (b)1882 1585 MS (j)1907 1585 MS
+(e)1920 1585 MS (t)1942 1585 MS ( )1957 1585 MS (v)1977 1585 MS (e)2001 1585 MS (c)2024 1585 MS (t)2046 1585 MS (e)2061 1585 MS (u)2083 1585 MS (r)2108 1585 MS ( )2125 1585 MS
+(d)235 1642 MS (i)261 1642 MS (s)273 1642 MS (t)292 1642 MS (r)307 1642 MS (i)325 1642 MS (b)338 1642 MS (u)362 1642 MS (\351)387 1642 MS (.)409 1642 MS ( )422 1642 MS (C)441 1642 MS (e)474 1642 MS (t)496 1642 MS (t)511 1642 MS (e)526 1642 MS
+( )548 1642 MS (i)567 1642 MS (n)580 1642 MS (t)604 1642 MS (e)619 1642 MS (r)641 1642 MS (f)658 1642 MS (a)673 1642 MS (c)695 1642 MS (e)718 1642 MS ( )740 1642 MS (p)759 1642 MS (o)784 1642 MS (s)810 1642 MS (s)829 1642 MS (\350)848 1642 MS
+(d)870 1642 MS (e)895 1642 MS ( )917 1642 MS (d)936 1642 MS (e)961 1642 MS ( )983 1642 MS (p)1002 1642 MS (l)1028 1642 MS (u)1040 1642 MS (s)1066 1642 MS ( )1085 1642 MS (u)1104 1642 MS (n)1130 1642 MS (e)1154 1642 MS ( )1176 1642 MS (f)1196 1642 MS
+(o)1211 1642 MS (n)1237 1642 MS (c)1261 1642 MS (t)1283 1642 MS (i)1299 1642 MS (o)1311 1642 MS (n)1337 1642 MS ( )1361 1642 MS (S)1380 1642 MS (i)1409 1642 MS (z)1422 1642 MS (e)1444 1642 MS (\()1466 1642 MS (\))1483 1642 MS ( )1500 1642 MS (q)1519 1642 MS
+(u)1544 1642 MS (i)1570 1642 MS ( )1582 1642 MS (r)1601 1642 MS (e)1618 1642 MS (n)1641 1642 MS (v)1666 1642 MS (o)1690 1642 MS (i)1717 1642 MS (e)1729 1642 MS ( )1751 1642 MS (l)1771 1642 MS (a)1784 1642 MS ( )1806 1642 MS (t)1825 1642 MS (a)1840 1642 MS
+(i)1862 1642 MS (l)1875 1642 MS (l)1889 1642 MS (e)1902 1642 MS ( )1924 1642 MS (t)1943 1642 MS (o)1958 1642 MS (t)1983 1642 MS (a)1998 1642 MS (l)2020 1642 MS (e)2032 1642 MS ( )2054 1642 MS (d)2073 1642 MS (u)2099 1642 MS ( )2125 1642 MS
+(v)235 1700 MS (e)259 1700 MS (c)281 1700 MS (t)303 1700 MS (e)318 1700 MS (u)340 1700 MS (r)365 1700 MS ( )382 1700 MS (s)408 1700 MS (u)427 1700 MS (r)452 1700 MS ( )469 1700 MS (l)496 1700 MS (\222)509 1700 MS (e)526 1700 MS (n)549 1700 MS
+(s)573 1700 MS (e)592 1700 MS (m)615 1700 MS (b)653 1700 MS (l)679 1700 MS (e)692 1700 MS ( )715 1700 MS (d)741 1700 MS (e)766 1700 MS (s)788 1700 MS ( )808 1700 MS (p)834 1700 MS (r)859 1700 MS (o)876 1700 MS (c)902 1700 MS (e)924 1700 MS
+(s)946 1700 MS (s)965 1700 MS (e)984 1700 MS (u)1006 1700 MS (r)1031 1700 MS (s)1048 1700 MS (,)1067 1700 MS ( )1080 1700 MS (e)1106 1700 MS (t)1128 1700 MS ( )1143 1700 MS (u)1169 1700 MS (n)1194 1700 MS (e)1219 1700 MS ( )1242 1700 MS (f)1269 1700 MS
+(o)1284 1700 MS (n)1310 1700 MS (c)1334 1700 MS (t)1356 1700 MS (i)1372 1700 MS (o)1384 1700 MS (n)1410 1700 MS ( )1434 1700 MS (L)1461 1700 MS (V)1491 1700 MS (e)1527 1700 MS (c)1549 1700 MS (\()1571 1700 MS (s)1589 1700 MS (t)1608 1700 MS (a)1623 1700 MS
+(r)1645 1700 MS (t)1661 1700 MS (,)1676 1700 MS (e)1689 1700 MS (n)1711 1700 MS
+(d)1735 1700 MS (\))1760 1700 MS ( )1777 1700 MS (q)1803 1700 MS (u)1828 1700 MS (i)1854 1700 MS ( )1866 1700 MS (r)1892 1700 MS (e)1909 1700 MS (n)1932 1700 MS (v)1957 1700 MS (o)1981 1700 MS (i)2008 1700 MS (e)2020 1700 MS ( )2043 1700 MS (l)2070 1700 MS
+(e)2083 1700 MS (s)2105 1700 MS ( )2125 1700 MS
+(i)235 1757 MS (n)248 1757 MS (d)273 1757 MS (i)299 1757 MS (c)312 1757 MS (e)334 1757 MS (s)357 1757 MS ( )376 1757 MS (d)394 1757 MS (e)419 1757 MS ( )441 1757 MS (d)459 1757 MS (\351)484 1757 MS (b)506 1757 MS (u)530 1757 MS (t)555 1757 MS
+( )570 1757 MS (e)588 1757 MS (t)610 1757 MS ( )624 1757 MS (d)642 1757 MS (e)667 1757 MS ( )689 1757 MS (f)707 1757 MS (i)723 1757 MS (n)736 1757 MS ( )760 1757 MS (c)778 1757 MS (o)800 1757 MS (r)826 1757 MS (r)843 1757 MS (e)860 1757 MS
+(s)882 1757 MS (p)901 1757 MS (o)926 1757 MS (n)952 1757 MS (d)976 1757 MS (a)1001 1757 MS (n)1023 1757 MS (t)1047 1757 MS ( )1062 1757 MS (\340)1080 1757 MS ( )1102 1757 MS (l)1120 1757 MS (a)1132 1757 MS ( )1154 1757 MS (p)1172 1757 MS (a)1197 1757 MS
+(r)1219 1757 MS (t)1236 1757 MS (i)1251 1757 MS (e)1264 1757 MS ( )1286 1757 MS (l)1305 1757 MS (o)1317 1757 MS (c)1343 1757 MS (a)1365 1757 MS (l)1388 1757 MS (e)1401 1757 MS ( )1423 1757 MS (d)1441 1757 MS (u)1466 1757 MS ( )1491 1757 MS (v)1509 1757 MS
+(e)1533 1757 MS (c)1555 1757 MS (t)1577 1757 MS (e)1592 1757 MS (u)1614 1757 MS (r)1639 1757 MS ( )1656 1757 MS (s)1674 1757 MS (u)1693 1757 MS (r)1718 1757 MS ( )1735 1757 MS (c)1753 1757 MS (h)1775 1757 MS (a)1799 1757 MS (q)1821 1757 MS (u)1846 1757 MS
+(e)1871 1757 MS ( )1893 1757 MS (p)1911 1757 MS (r)1936 1757 MS (o)1953 1757 MS (c)1979 1757 MS (e)2001 1757 MS (s)2023 1757 MS (s)2042 1757 MS (e)2061 1757 MS (u)2083 1757 MS (r)2108 1757 MS ( )2125 1757 MS
+(\253)235 1815 MS
+( )259 1815 MS
+(s)272 1815 MS (e)291 1815 MS (r)313 1815 MS (v)331 1815 MS (e)355 1815 MS (u)377 1815 MS (r)402 1815 MS
+( )419 1815 MS
+(\273)432 1815 MS ( )456 1815 MS (p)478 1815 MS (a)504 1815 MS (r)526 1815 MS (m)544 1815 MS (i)582 1815 MS ( )595 1815 MS (l)618 1815 MS (\222)631 1815 MS (e)648 1815 MS (n)671 1815 MS (s)695 1815 MS (e)715 1815 MS (m)738 1815 MS (b)776 1815 MS
+(l)801 1815 MS (e)814 1815 MS ( )837 1815 MS (d)859 1815 MS (u)884 1815 MS ( )909 1815 MS (v)932 1815 MS (e)956 1815 MS (c)978 1815 MS (t)1000 1815 MS (e)1015 1815 MS (u)1037 1815 MS (r)1062 1815 MS (.)1079 1815 MS ( )1092 1815 MS (C)1114 1815 MS
+(e)1147 1815 MS (t)1169 1815 MS (t)1183 1815 MS (e)1198 1815 MS ( )1220 1815 MS (p)1242 1815 MS (a)1267 1815 MS (r)1289 1815 MS (t)1306 1815 MS (i)1321 1815 MS (e)1333 1815 MS ( )1355 1815 MS (l)1378 1815 MS (o)1390 1815 MS (c)1416 1815 MS (a)1438 1815 MS
+(l)1461 1815 MS (e)1474 1815 MS ( )1497 1815 MS (e)1519 1815 MS (s)1541 1815 MS (t)1560 1815 MS ( )1575 1815 MS (c)1597 1815 MS (o)1619 1815 MS (n)1645 1815 MS (s)1669 1815 MS (t)1688 1815 MS (i)1704 1815 MS (t)1716 1815 MS (u)1731 1815 MS (\351)1756 1815 MS
+(e)1778 1815 MS ( )1800 1815 MS (d)1822 1815 MS (\222)1847 1815 MS (u)1863 1815 MS (n)1889 1815 MS ( )1913 1815 MS (e)1935 1815 MS (n)1958 1815 MS (s)1983 1815 MS (e)2002 1815 MS (m)2025 1815 MS (b)2063 1815 MS (l)2089 1815 MS (e)2102 1815 MS ( )2125 1815 MS
+(c)235 1872 MS (o)257 1872 MS (n)283 1872 MS (t)307 1872 MS (i)322 1872 MS (g)334 1872 MS (u)359 1872 MS ( )384 1872 MS (d)407 1872 MS (\222)433 1872 MS (i)450 1872 MS (n)463 1872 MS (d)488 1872 MS (i)514 1872 MS (c)527 1872 MS (e)549 1872 MS
+(s)572 1872 MS (.)591 1872 MS ( )604 1872 MS (E)627 1872 MS (n)658 1872 MS (f)683 1872 MS (i)700 1872 MS (n)713 1872 MS ( )738 1872 MS (u)761 1872 MS (n)787 1872 MS (e)811 1872 MS ( )833 1872 MS (f)857 1872 MS (o)872 1872 MS (n)899 1872 MS
+(c)923 1872 MS (t)945 1872 MS (i)961 1872 MS (o)973 1872 MS (n)999 1872 MS ( )1023 1872 MS (n)1047 1872 MS (v)1072 1872 MS (e)1097 1872 MS (c)1119 1872 MS (\()1141 1872 MS (s)1158 1872 MS (t)1177 1872 MS (a)1192 1872 MS (r)1214 1872 MS (t)1231 1872 MS
+(,)1245 1872 MS (e)1257 1872 MS (n)1279 1872 MS (d)1303 1872 MS (\))1328 1872 MS ( )1345 1872 MS
+(p)1368 1872 MS (e)1393 1872 MS (r)1415 1872 MS (m)1433 1872 MS (e)1471 1872 MS (t)1493 1872 MS ( )1508 1872 MS (\340)1531 1872 MS ( )1553 1872 MS (u)1576 1872 MS (n)1602 1872 MS ( )1626 1872 MS (p)1649 1872 MS (r)1674 1872 MS (o)1691 1872 MS (c)1717 1872 MS
+(e)1739 1872 MS (s)1761 1872 MS (s)1780 1872 MS (u)1799 1872 MS (s)1825 1872 MS ( )1844 1872 MS (\253)1868 1872 MS
+( )1892 1872 MS
+(c)1905 1872 MS (l)1928 1872 MS (i)1942 1872 MS (e)1955 1872 MS (n)1978 1872 MS (t)2002 1872 MS
+( )2017 1872 MS
+(\273)2030 1872 MS ( )2054 1872 MS (d)2077 1872 MS (e)2102 1872 MS ( )2125 1872 MS
+(r)235 1930 MS (\351)252 1930 MS (c)274 1930 MS (u)296 1930 MS (p)321 1930 MS (\351)346 1930 MS (r)368 1930 MS (e)385 1930 MS (r)407 1930 MS ( )424 1930 MS (u)440 1930 MS (n)465 1930 MS (e)489 1930 MS ( )511 1930 MS (p)527 1930 MS (a)552 1930 MS
+(r)574 1930 MS (t)591 1930 MS (i)607 1930 MS (e)619 1930 MS ( )641 1930 MS (s)658 1930 MS (e)677 1930 MS (u)699 1930 MS (l)725 1930 MS (e)738 1930 MS (m)761 1930 MS (e)799 1930 MS (n)822 1930 MS (t)846 1930 MS ( )861 1930 MS (d)877 1930 MS
+(e)902 1930 MS (s)924 1930 MS ( )943 1930 MS (d)959 1930 MS (o)984 1930 MS (n)1010 1930 MS (n)1035 1930 MS (\351)1059 1930 MS (e)1081 1930 MS (s)1104 1930 MS ( )1123 1930 MS (l)1140 1930 MS (o)1152 1930 MS (c)1178 1930 MS (a)1200 1930 MS (l)1223 1930 MS
+(e)1237 1930 MS (s)1259 1930 MS ( )1278 1930 MS (a)1294 1930 MS (u)1316 1930 MS ( )1341 1930 MS (p)1357 1930 MS (r)1382 1930 MS (o)1399 1930 MS (c)1425 1930 MS (e)1447 1930 MS (s)1469 1930 MS (s)1488 1930 MS (e)1507 1930 MS (u)1529 1930 MS (r)1554 1930 MS
+( )1571 1930 MS (\253)1588 1930 MS
+( )1612 1930 MS
+(s)1625 1930 MS (e)1644 1930 MS (r)1666 1930 MS (v)1684 1930 MS (e)1708 1930 MS (u)1730 1930 MS (r)1755 1930 MS
+( )1772 1930 MS
+(\273)1785 1930 MS (.)1809 1930 MS ( )1822 1930 MS (C)1838 1930 MS (e)1872 1930 MS (t)1894 1930 MS (t)1908 1930 MS (e)1923 1930 MS ( )1945 1930 MS (d)1961 1930 MS (e)1986 1930 MS (r)2008 1930 MS (n)2025 1930 MS (i)2050 1930 MS (\350)2063 1930 MS (r)2085 1930 MS
+(e)2102 1930 MS ( )2125 1930 MS
+(f)235 1987 MS (o)250 1987 MS (n)277 1987 MS (c)301 1987 MS (t)323 1987 MS (i)339 1987 MS (o)351 1987 MS (n)377 1987 MS ( )401 1987 MS (e)426 1987 MS (s)448 1987 MS (t)467 1987 MS ( )482 1987 MS (i)508 1987 MS (m)521 1987 MS (p)559 1987 MS
+(o)584 1987 MS (r)610 1987 MS (t)626 1987 MS (a)641 1987 MS (n)663 1987 MS (t)687 1987 MS (e)702 1987 MS (,)724 1987 MS ( )737 1987 MS (c)762 1987 MS (a)784 1987 MS (r)806 1987 MS ( )823 1987 MS (e)848 1987 MS (l)870 1987 MS (l)883 1987 MS
+(e)896 1987 MS ( )918 1987 MS (p)943 1987 MS (e)968 1987 MS (r)990 1987 MS (m)1008 1987 MS (e)1046 1987 MS (t)1068 1987 MS ( )1083 1987 MS (\340)1108 1987 MS ( )1130 1987 MS (c)1155 1987 MS (h)1177 1987 MS (a)1201 1987 MS (q)1223 1987 MS (u)1249 1987 MS
+(e)1274 1987 MS ( )1296 1987 MS (p)1321 1987 MS (r)1346 1987 MS (o)1363 1987 MS (c)1389 1987 MS (e)1411 1987 MS (s)1433 1987 MS (s)1452 1987 MS (u)1471 1987 MS (s)1496 1987 MS ( )1515 1987 MS (d)1540 1987 MS (\222)1565 1987 MS (u)1581 1987 MS (n)1607 1987 MS
+( )1631 1987 MS (\253)1657 1987 MS
+( )1681 1987 MS
+(c)1694 1987 MS (l)1717 1987 MS (i)1730 1987 MS (e)1743 1987 MS (n)1766 1987 MS (t)1790 1987 MS
+( )1805 1987 MS
+(\273)1818 1987 MS ( )1842 1987 MS (p)1867 1987 MS (a)1892 1987 MS (r)1914 1987 MS (a)1931 1987 MS (l)1954 1987 MS (l)1968 1987 MS (\350)1981 1987 MS (l)2004 1987 MS (e)2017 1987 MS (,)2039 1987 MS ( )2052 1987 MS (d)2077 1987 MS (e)2102 1987 MS ( )2125 1987 MS
+(r)235 2045 MS (\351)252 2045 MS (c)274 2045 MS (u)296 2045 MS (p)321 2045 MS (\351)346 2045 MS (r)368 2045 MS (e)385 2045 MS (r)407 2045 MS ( )424 2045 MS (s)453 2045 MS (u)472 2045 MS (r)497 2045 MS ( )514 2045 MS (l)543 2045 MS (e)555 2045 MS
+(s)578 2045 MS ( )597 2045 MS (p)626 2045 MS (r)651 2045 MS (o)668 2045 MS (c)694 2045 MS (e)716 2045 MS (s)738 2045 MS (s)757 2045 MS (u)776 2045 MS (s)801 2045 MS ( )820 2045 MS (c)849 2045 MS (o)871 2045 MS (n)897 2045 MS (c)921 2045 MS
+(e)943 2045 MS (r)965 2045 MS (n)982 2045 MS (\351)1007 2045 MS (s)1029 2045 MS
+( )1048 2045 MS (d)1077 2045 MS (u)1102 2045 MS ( )1127 2045 MS (\253)1156 2045 MS
+( )1180 2045 MS
+(s)1193 2045 MS (e)1213 2045 MS (r)1235 2045 MS (v)1252 2045 MS (e)1276 2045 MS (u)1298 2045 MS (r)1323 2045 MS
+( )1340 2045 MS
+(\273)1353 2045 MS ( )1377 2045 MS (p)1406 2045 MS (a)1431 2045 MS (r)1453 2045 MS (a)1470 2045 MS (l)1493 2045 MS (l)1507 2045 MS (\350)1520 2045 MS (l)1543 2045 MS (e)1556 2045 MS (,)1578 2045 MS ( )1591 2045 MS (u)1620 2045 MS (n)1645 2045 MS (i)1670 2045 MS
+(q)1683 2045 MS (u)1708 2045 MS (e)1733 2045 MS (m)1756 2045 MS (e)1794 2045 MS (n)1817 2045 MS (t)1841 2045 MS ( )1856 2045 MS (s)1885 2045 MS (e)1904 2045 MS (s)1926 2045 MS ( )1945 2045 MS (p)1974 2045 MS (r)1999 2045 MS (o)2016 2045 MS (p)2042 2045 MS
+(r)2067 2045 MS (e)2084 2045 MS (s)2106 2045 MS ( )2125 2045 MS
+(d)235 2102 MS (o)260 2102 MS (n)286 2102 MS (n)310 2102 MS (\351)334 2102 MS (e)356 2102 MS (s)379 2102 MS ( )398 2102 MS (l)423 2102 MS (o)435 2102 MS (c)461 2102 MS (a)483 2102 MS (l)506 2102 MS (e)519 2102 MS (s)542 2102 MS (.)561 2102 MS
+( )574 2102 MS (L)598 2102 MS (e)628 2102 MS (s)650 2102 MS ( )669 2102 MS (t)693 2102 MS (r)708 2102 MS (a)725 2102 MS (n)747 2102 MS (s)771 2102 MS (f)791 2102 MS (e)807 2102 MS (r)829 2102 MS (t)846 2102 MS (s)861 2102 MS ( )880 2102 MS
+(d)904 2102 MS (\222)929 2102 MS (u)945 2102 MS (n)971 2102 MS (e)995 2102 MS ( )1017 2102 MS (d)1041 2102 MS (o)1066 2102 MS (n)1092 2102 MS (n)1117 2102 MS (\351)1141 2102 MS (e)1163 2102 MS ( )1185 2102 MS (p)1209 2102 MS (a)1235 2102 MS (r)1258 2102 MS
+(a)1275 2102 MS (l)1298 2102 MS (l)1311 2102 MS (\350)1324 2102 MS (l)1347 2102 MS (e)1360 2102 MS ( )1382 2102 MS (e)1406 2102 MS (s)1429 2102 MS (t)1448 2102 MS ( )1463 2102 MS (d)1487 2102 MS (o)1511 2102 MS (n)1537 2102 MS (c)1561 2102 MS ( )1583 2102 MS
+(o)1607 2102 MS (p)1633 2102 MS (t)1657 2102 MS (i)1672 2102 MS (m)1685 2102 MS (i)1724 2102 MS (s)1737 2102 MS (\351)1757 2102 MS (e)1779 2102 MS ( )1801 2102 MS (s)1825 2102 MS (u)1844 2102 MS (r)1869 2102 MS ( )1886 2102 MS (l)1911 2102 MS (e)1924 2102 MS
+( )1946 2102 MS (r)1970 2102 MS (\351)1987 2102 MS (s)2009 2102 MS (e)2029 2102 MS (a)2051 2102 MS (u)2073 2102 MS
+( )2098 2102 MS
+(:)2111 2102 MS ( )2125 2102 MS
+(c)235 2160 MS (h)257 2160 MS (a)281 2160 MS (q)303 2160 MS (u)328 2160 MS (e)354 2160 MS ( )376 2160 MS (c)394 2160 MS (o)416 2160 MS (m)443 2160 MS (p)480 2160 MS (o)505 2160 MS (s)531 2160 MS (a)550 2160 MS (n)572 2160 MS (t)596 2160 MS
+(e)611 2160 MS ( )633 2160 MS (d)651 2160 MS (u)676 2160 MS ( )701 2160 MS (v)719 2160 MS (e)743 2160 MS (c)766 2160 MS (t)788 2160 MS (e)803 2160 MS (u)825 2160 MS (r)850 2160 MS ( )867 2160 MS (p)885 2160 MS (a)910 2160 MS (r)932 2160 MS
+(a)949 2160 MS (l)971 2160 MS (l)984 2160 MS (\350)997 2160 MS (l)1020 2160 MS (e)1033 2160 MS ( )1055 2160 MS (n)1074 2160 MS (e)1099 2160 MS ( )1121 2160 MS (t)1139 2160 MS (r)1154 2160 MS (a)1171 2160 MS (n)1193 2160 MS (s)1217 2160 MS (i)1237 2160 MS
+(t)1251 2160 MS (e)1266 2160 MS ( )1288 2160 MS (q)1306 2160 MS (u)1331 2160 MS (\222)1356 2160 MS (u)1372 2160 MS (n)1397 2160 MS (e)1421 2160 MS ( )1443 2160 MS (s)1461 2160 MS (e)1481 2160 MS (u)1503 2160 MS (l)1529 2160 MS (e)1542 2160 MS ( )1564 2160 MS
+(f)1583 2160 MS (o)1598 2160 MS (i)1625 2160 MS (s)1638 2160 MS ( )1657 2160 MS (s)1675 2160 MS (u)1694 2160 MS (r)1719 2160 MS ( )1736 2160 MS (l)1755 2160 MS (e)1768 2160 MS ( )1790 2160 MS (r)1808 2160 MS (\351)1825 2160 MS (s)1847 2160 MS (e)1866 2160 MS
+(a)1888 2160 MS (u)1910 2160 MS ( )1935 2160 MS (e)1954 2160 MS (t)1976 2160 MS ( )1991 2160 MS (a)2009 2160 MS (r)2031 2160 MS (r)2048 2160 MS (i)2065 2160 MS (v)2078 2160 MS (e)2102 2160 MS ( )2125 2160 MS
+(d)235 2217 MS (i)261 2217 MS (r)273 2217 MS (e)290 2217 MS (c)312 2217 MS (t)334 2217 MS (e)349 2217 MS (m)372 2217 MS (e)409 2217 MS (n)432 2217 MS (t)456 2217 MS ( )471 2217 MS (s)500 2217 MS (u)519 2217 MS (r)544 2217 MS ( )561 2217 MS
+(l)591 2217 MS (e)603 2217 MS ( )625 2217 MS (p)654 2217 MS (r)679 2217 MS (o)696 2217 MS (c)722 2217 MS
+(e)744 2217 MS (s)766 2217 MS (s)785 2217 MS (u)804 2217 MS (s)829 2217 MS ( )848 2217 MS (\253)878 2217 MS
+( )902 2217 MS
+(c)915 2217 MS (l)938 2217 MS (i)952 2217 MS (e)965 2217 MS (n)988 2217 MS (t)1012 2217 MS
+( )1027 2217 MS
+(\273)1040 2217 MS ( )1064 2217 MS (q)1093 2217 MS (u)1118 2217 MS (i)1144 2217 MS ( )1156 2217 MS (l)1186 2217 MS (\222)1199 2217 MS (h)1216 2217 MS (\351)1242 2217 MS (b)1264 2217 MS (e)1288 2217 MS (r)1310 2217 MS (g)1327 2217 MS (e)1352 2217 MS ( )1374 2217 MS
+(e)1403 2217 MS (n)1426 2217 MS ( )1450 2217 MS (l)1480 2217 MS (o)1492 2217 MS (c)1518 2217 MS (a)1541 2217 MS (l)1564 2217 MS (.)1576 2217 MS ( )1589 2217 MS (I)1618 2217 MS (l)1636 2217 MS ( )1649 2217 MS (n)1679 2217 MS (\222)1703 2217 MS (y)1720 2217 MS
+( )1744 2217 MS (a)1773 2217 MS ( )1795 2217 MS (p)1824 2217 MS (a)1849 2217 MS (s)1872 2217 MS ( )1891 2217 MS (d)1920 2217 MS (e)1945 2217 MS ( )1967 2217 MS (g)1996 2217 MS (o)2021 2217 MS (u)2047 2217 MS (l)2073 2217 MS (o)2085 2217 MS (t)2111 2217 MS
+( )2125 2217 MS
+(d)235 2275 MS (\222)260 2275 MS (\351)276 2275 MS (t)298 2275 MS (r)313 2275 MS (a)330 2275 MS (n)352 2275 MS (g)376 2275 MS (l)402 2275 MS (e)415 2275 MS (m)438 2275 MS (e)476 2275 MS (n)499 2275 MS (t)523 2275 MS ( )538 2275 MS (l)556 2275 MS
+(o)568 2275 MS (g)594 2275 MS (i)620 2275 MS (c)632 2275 MS (i)655 2275 MS (e)668 2275 MS (l)691 2275 MS ( )704 2275 MS (c)722 2275 MS (a)744 2275 MS (r)766 2275 MS ( )783 2275 MS (l)802 2275 MS (e)815 2275 MS ( )837 2275 MS (t)855 2275 MS
+(r)870 2275 MS (a)887 2275 MS (n)909 2275 MS (s)933 2275 MS (f)953 2275 MS (e)968 2275 MS (r)990 2275 MS (t)1007 2275 MS ( )1022 2275 MS (s)1040 2275 MS (e)1059 2275 MS ( )1081 2275 MS (f)1099 2275 MS (a)1115 2275 MS (i)1138 2275 MS (t)1150 2275 MS
+( )1165 2275 MS (e)1183 2275 MS (n)1205 2275 MS ( )1229 2275 MS (p)1248 2275 MS (a)1273 2275 MS (r)1295 2275 MS (a)1312 2275 MS (l)1335 2275 MS (l)1348 2275 MS (\350)1361 2275 MS (l)1384 2275 MS (e)1397 2275 MS ( )1419 2275 MS (s)1437 2275 MS (u)1456 2275 MS
+(r)1481 2275 MS ( )1498 2275 MS (c)1516 2275 MS (h)1539 2275 MS (a)1563 2275 MS (c)1585 2275 MS (u)1607 2275 MS (n)1633 2275 MS ( )1657 2275 MS (d)1675 2275 MS (e)1700 2275 MS (s)1722 2275 MS ( )1741 2275 MS (c)1759 2275 MS (o)1781 2275 MS (u)1807 2275 MS
+(p)1832 2275 MS (l)1858 2275 MS (e)1870 2275 MS (s)1893 2275 MS ( )1912 2275 MS (p)1930 2275 MS (r)1955 2275 MS (o)1972 2275 MS (c)1998 2275 MS (e)2020 2275 MS (s)2042 2275 MS (s)2061 2275 MS (u)2080 2275 MS (s)2105 2275 MS ( )2125 2275 MS
+(\253)235 2332 MS
+( )259 2332 MS
+(c)272 2332 MS (l)295 2332 MS (i)308 2332 MS (e)321 2332 MS (n)344 2332 MS (t)368 2332 MS (/)383 2332 MS (s)397 2332 MS (e)416 2332 MS (r)438 2332 MS (v)456 2332 MS (e)480 2332 MS (u)502 2332 MS (r)527 2332 MS
+( )544 2332 MS
+(\273)557 2332 MS ( )581 2332 MS (c)598 2332 MS (o)620 2332 MS (n)646 2332 MS (c)670 2332 MS (e)692 2332 MS (r)714 2332 MS (n)732 2332 MS (\351)756 2332 MS (s)778 2332 MS (,)797 2332 MS ( )810 2332 MS (e)826 2332 MS (t)848 2332 MS ( )863 2332 MS
+(i)880 2332 MS (l)893 2332 MS ( )906 2332 MS (n)923 2332 MS (\222)948 2332 MS (y)965 2332 MS ( )989 2332 MS (a)1006 2332 MS ( )1028 2332 MS (p)1044 2332 MS (a)1069 2332 MS (s)1092 2332 MS ( )1111 2332 MS (r)1127 2332 MS (e)1144 2332 MS (d)1166 2332 MS
+(i)1192 2332 MS (s)1205 2332 MS (t)1224 2332 MS (r)1239 2332 MS (i)1256 2332 MS (b)1269 2332 MS (u)1294 2332 MS (t)1319 2332 MS (i)1335 2332 MS (o)1347 2332 MS (n)1373 2332 MS ( )1397 2332 MS (d)1413 2332 MS (e)1438 2332 MS (s)1461 2332 MS ( )1480 2332 MS
+(d)1496 2332 MS (o)1521 2332 MS (n)1547 2332 MS (n)1572 2332 MS (\351)1596 2332 MS (e)1618 2332 MS (s)1641 2332 MS (,)1660 2332 MS ( )1673 2332 MS (u)1689 2332 MS (n)1715 2332 MS (e)1739 2332 MS ( )1761 2332 MS (f)1778 2332 MS (o)1793 2332 MS (i)1820 2332 MS
+(s)1833 2332 MS ( )1853 2332 MS (q)1869 2332 MS (u)1894 2332 MS (e)1919 2332 MS ( )1941 2332 MS (c)1957 2332 MS (e)1980 2332 MS (l)2003 2332 MS (l)2016 2332 MS (e)2029 2332 MS (s)2052 2332 MS
+(-)2071 2332 MS
+(c)2088 2332 MS (i)2112 2332 MS ( )2125 2332 MS
+(s)235 2390 MS (o)254 2390 MS (n)280 2390 MS (t)304 2390 MS ( )319 2390 MS (a)334 2390 MS (r)356 2390 MS (r)373 2390 MS (i)390 2390 MS (v)402 2390 MS (\351)427 2390 MS (e)449 2390 MS (s)471 2390 MS ( )490 2390 MS (s)505 2390 MS (u)524 2390 MS
+(r)549 2390 MS ( )566 2390 MS (l)582 2390 MS (e)595 2390 MS (s)617 2390 MS ( )636 2390 MS (p)651 2390 MS (r)676 2390 MS (o)693 2390 MS (c)719 2390 MS (e)741 2390 MS (s)763 2390 MS (s)782 2390 MS (u)801 2390 MS (s)826 2390 MS ( )845 2390 MS
+(\253)861 2390 MS
+( )885 2390 MS
+(c)898 2390 MS (l)921 2390 MS (i)935 2390 MS (e)948 2390 MS (n)971 2390 MS (t)995 2390 MS
+( )1010 2390 MS
+(\273)1023 2390 MS (.)1047 2390 MS ( )1060 2390 MS (L)1075 2390 MS (e)1105 2390 MS ( )1127 2390 MS (s)1142 2390 MS (e)1161 2390 MS (u)1183 2390 MS (l)1209 2390 MS ( )1221 2390 MS (g)1237 2390 MS (o)1262 2390 MS (u)1288 2390 MS (l)1313 2390 MS (o)1325 2390 MS
+(t)1351 2390 MS ( )1365 2390 MS (d)1380 2390 MS (\222)1405 2390 MS (\351)1421 2390 MS (t)1443 2390 MS (r)1458 2390 MS (a)1475 2390 MS (n)1497 2390 MS (g)1521 2390 MS (l)1547 2390 MS (e)1559 2390 MS (m)1582 2390 MS (e)1620 2390 MS (n)1643 2390 MS (t)1667 2390 MS
+( )1682 2390 MS (e)1697 2390 MS (s)1719 2390 MS (t)1738 2390 MS ( )1753 2390 MS (l)1768 2390 MS (e)1780 2390 MS ( )1802 2390 MS (d)1817 2390 MS (\351)1842 2390 MS (b)1865 2390 MS (i)1890 2390 MS (t)1902 2390 MS ( )1917 2390 MS (d)1932 2390 MS (u)1957 2390 MS
+( )1982 2390 MS (r)1997 2390 MS (\351)2014 2390 MS (s)2036 2390 MS (e)2055 2390 MS (a)2077 2390 MS (u)2099 2390 MS ( )2125 2390 MS
+(u)235 2447 MS (t)260 2447 MS (i)275 2447 MS (l)288 2447 MS (i)302 2447 MS (s)315 2447 MS (\351)334 2447 MS (.)356 2447 MS
+( )369 2447 MS
+(L)348 2505 MS (a)378 2505 MS ( )400 2505 MS (s)413 2505 MS (e)432 2505 MS (c)454 2505 MS (o)476 2505 MS (n)502 2505 MS (d)526 2505 MS (e)551 2505 MS ( )573 2505 MS (i)587 2505 MS (n)600 2505 MS (t)624 2505 MS (e)639 2505 MS (r)661 2505 MS
+(f)679 2505 MS (a)695 2505 MS (c)717 2505 MS (e)739 2505 MS ( )761 2505 MS (n)775 2505 MS (o)799 2505 MS (m)825 2505 MS (m)863 2505 MS (\351)901 2505 MS (e)924 2505 MS ( )946 2505 MS (N)959 2505 MS (P)995 2505 MS (V)1023 2505 MS (e)1059 2505 MS
+(c)1081 2505 MS (C)1103 2505 MS (o)1136 2505 MS (m)1163 2505 MS (p)1200 2505 MS (o)1225 2505 MS (n)1251 2505 MS (e)1275 2505 MS (n)1298 2505 MS (t)1322 2505 MS ( )1337 2505 MS (r)1350 2505 MS (e)1366 2505 MS (p)1388 2505 MS (r)1413 2505 MS (\351)1430 2505 MS
+(s)1452 2505 MS (e)1471 2505 MS (n)1494 2505 MS (t)1518 2505 MS (e)1533 2505 MS ( )1555 2505 MS (l)1568 2505 MS (e)1580 2505 MS ( )1602 2505 MS (c)1615 2505 MS (o)1637 2505 MS (d)1663 2505 MS (e)1688 2505 MS ( )1710 2505 MS (d)1723 2505 MS (e)1748 2505 MS
+( )1770 2505 MS (c)1783 2505 MS (a)1805 2505 MS (l)1828 2505 MS (c)1841 2505 MS (u)1863 2505 MS (l)1889 2505 MS ( )1901 2505 MS (q)1914 2505 MS (u)1939 2505 MS (i)1965 2505 MS ( )1978 2505 MS (g)1991 2505 MS (\351)2016 2505 MS (n)2039 2505 MS (\350)2063 2505 MS
+(r)2085 2505 MS (e)2102 2505 MS ( )2125 2505 MS
+(o)235 2562 MS (u)261 2562 MS ( )286 2562 MS (q)301 2562 MS (u)326 2562 MS (i)351 2562 MS ( )363 2562 MS (r)378 2562 MS (\351)395 2562 MS (c)417 2562 MS (u)439 2562 MS (p)464 2562 MS (\350)489 2562 MS (r)511 2562 MS (e)528 2562 MS ( )550 2562 MS
+(u)565 2562 MS (n)590 2562 MS (e)614 2562 MS ( )636 2562 MS (d)651 2562 MS (o)676 2562 MS (n)702 2562 MS (n)727 2562 MS (\351)751 2562 MS (e)773 2562 MS ( )795 2562 MS (d)810 2562 MS (e)835 2562 MS ( )857 2562 MS (t)872 2562 MS (y)888 2562 MS
+(p)911 2562 MS (e)936 2562 MS ( )958 2562 MS (v)974 2562 MS (e)998 2562 MS (c)1020 2562 MS (t)1042 2562 MS (e)1057 2562 MS (u)1079 2562 MS (r)1104 2562 MS ( )1121 2562 MS (p)1136 2562 MS (a)1161 2562 MS (r)1183 2562 MS (a)1200 2562 MS (l)1223 2562 MS
+(l)1236 2562 MS (\350)1250 2562 MS (l)1273 2562 MS (e)1285 2562 MS (.)1307 2562 MS ( )1320 2562 MS (E)1335 2562 MS (l)1367 2562 MS (l)1380 2562 MS (e)1393 2562 MS ( )1415 2562 MS (p)1430 2562 MS (o)1455 2562 MS (s)1481 2562 MS (s)1500 2562 MS (\350)1519 2562 MS
+(d)1541 2562 MS (e)1566 2562 MS ( )1588 2562 MS
+(u)1603 2562 MS (n)1629 2562 MS ( )1653 2562 MS (a)1668 2562 MS (t)1690 2562 MS (t)1705 2562 MS (r)1719 2562 MS (i)1736 2562 MS (b)1749 2562 MS (u)1773 2562 MS (t)1798 2562 MS ( )1813 2562 MS (d)1828 2562 MS (e)1853 2562 MS ( )1875 2562 MS (t)1889 2562 MS
+(y)1904 2562 MS (p)1927 2562 MS (e)1953 2562 MS ( )1975 2562 MS (P)1990 2562 MS (V)2018 2562 MS (e)2054 2562 MS (c)2076 2562 MS
+( )2098 2562 MS
+(:)2111 2562 MS ( )2125 2562 MS
+(c)235 2620 MS (\222)257 2620 MS (e)273 2620 MS (s)295 2620 MS (t)314 2620 MS ( )329 2620 MS (l)380 2620 MS (a)392 2620 MS ( )415 2620 MS (d)465 2620 MS (o)490 2620 MS (n)516 2620 MS (n)540 2620 MS (\351)565 2620 MS (e)587 2620 MS ( )609 2620 MS
+(p)659 2620 MS (a)684 2620 MS (r)706 2620 MS (a)723 2620 MS (l)746 2620 MS (l)760 2620 MS (\350)773 2620 MS (l)796 2620 MS (e)809 2620 MS ( )831 2620 MS (\351)881 2620 MS (c)903 2620 MS (h)926 2620 MS (a)951 2620 MS (n)974 2620 MS (g)998 2620 MS
+(\351)1023 2620 MS (e)1045 2620 MS ( )1067 2620 MS ( )1117 2620 MS (a)1167 2620 MS (v)1190 2620 MS (e)1214 2620 MS (c)1237 2620 MS ( )1259 2620 MS (l)1310 2620 MS (e)1322 2620 MS (s)1345 2620 MS ( )1364 2620 MS (a)1414 2620 MS (u)1436 2620 MS (t)1461 2620 MS
+(r)1476 2620 MS (e)1493 2620 MS (s)1515 2620 MS ( )1534 2620 MS (c)1584 2620 MS (o)1606 2620 MS (m)1632 2620 MS (p)1669 2620 MS (o)1694 2620 MS (s)1720 2620 MS (a)1739 2620 MS (n)1762 2620 MS (t)1786 2620 MS (s)1801 2620 MS (,)1820 2620 MS ( )1833 2620 MS
+(u)1883 2620 MS (n)1908 2620 MS ( )1932 2620 MS (s)1982 2620 MS (e)2001 2620 MS (r)2023 2620 MS (v)2041 2620 MS (i)2066 2620 MS (c)2079 2620 MS (e)2102 2620 MS ( )2125 2620 MS
+(S)235 2677 MS (e)263 2677 MS (t)285 2677 MS (F)300 2677 MS (i)328 2677 MS (l)341 2677 MS (e)354 2677 MS (N)376 2677 MS (a)412 2677 MS (m)435 2677 MS (e)473 2677 MS (\()495 2677 MS (f)513 2677 MS (i)529 2677 MS (l)543 2677 MS (e)556 2677 MS
+(n)579 2677 MS (a)603 2677 MS (m)626 2677 MS (e)664 2677 MS (\))686 2677 MS ( )703 2677 MS (q)718 2677 MS (u)743 2677 MS (i)769 2677 MS ( )782 2677 MS (p)797 2677 MS (e)822 2677 MS (r)844 2677 MS (m)862 2677 MS (e)900 2677 MS (t)922 2677 MS
+( )937 2677 MS (d)952 2677 MS (e)977 2677 MS ( )999 2677 MS (s)1014 2677 MS (p)1033 2677 MS (\351)1058 2677 MS (c)1080 2677 MS (i)1103 2677 MS (f)1117 2677 MS (i)1134 2677 MS (e)1147 2677 MS (r)1169 2677 MS ( )1186 2677 MS (o)1201 2677 MS (\371)1227 2677 MS
+( )1252 2677 MS (s)1267 2677 MS (e)1286 2677 MS ( )1308 2677 MS (t)1323 2677 MS (r)1338 2677 MS (o)1354 2677 MS (u)1380 2677 MS (v)1405 2677 MS (e)1429 2677 MS ( )1451 2677 MS (l)1467 2677 MS (a)1480 2677 MS ( )1502 2677 MS (d)1517 2677 MS (o)1542 2677 MS
+(n)1568 2677 MS (n)1593 2677 MS (\351)1617 2677 MS (e)1639 2677 MS ( )1661 2677 MS (p)1676 2677 MS (e)1701 2677 MS (r)1723 2677 MS (s)1740 2677 MS (i)1760 2677 MS (s)1773 2677 MS (t)1792 2677 MS (a)1807 2677 MS (n)1830 2677 MS (t)1854 2677 MS (e)1869 2677 MS
+(,)1891 2677 MS ( )1904 2677 MS (u)1919 2677 MS (n)1944 2677 MS ( )1968 2677 MS (s)1983 2677 MS (e)2002 2677 MS (r)2024 2677 MS (v)2042 2677 MS (i)2067 2677 MS (c)2080 2677 MS (e)2102 2677 MS ( )2125 2677 MS
+(R)235 2735 MS (e)268 2735 MS (a)290 2735 MS (d)312 2735 MS (D)337 2735 MS (a)373 2735 MS (t)395 2735 MS (a)410 2735 MS (F)432 2735 MS (r)459 2735 MS (o)476 2735 MS (m)502 2735 MS (F)540 2735 MS (i)568 2735 MS (l)582 2735 MS (e)595 2735 MS
+(\()617 2735 MS (\))634 2735 MS ( )651 2735 MS (q)691 2735 MS (u)716 2735 MS (i)742 2735 MS ( )754 2735 MS (p)794 2735 MS (e)820 2735 MS (r)842 2735 MS (m)860 2735 MS (e)897 2735 MS (t)919 2735 MS ( )934 2735 MS (d)974 2735 MS (e)999 2735 MS
+( )1021 2735 MS (c)1061 2735 MS (h)1084 2735 MS (a)1108 2735 MS (r)1130 2735 MS (g)1147 2735 MS (e)1172 2735 MS (r)1194 2735 MS ( )1211 2735 MS (l)1251 2735 MS (a)1264 2735 MS ( )1286 2735 MS (d)1326 2735 MS (o)1351 2735 MS (n)1377 2735 MS (n)1402 2735 MS
+(\351)1426 2735 MS (e)1448 2735 MS ( )1471 2735 MS (e)1511 2735 MS (n)1534 2735 MS ( )1558 2735 MS (m)1599 2735 MS (\351)1637 2735 MS (m)1660 2735 MS (o)1697 2735 MS (i)1724 2735 MS (r)1736 2735 MS (e)1753 2735 MS
+( )1776 2735 MS (e)1816 2735 MS (t)1838 2735 MS ( )1853 2735 MS (u)1893 2735 MS (n)1918 2735 MS ( )1942 2735 MS (s)1982 2735 MS (e)2001 2735 MS (r)2023 2735 MS (v)2041 2735 MS (i)2066 2735 MS (c)2079 2735 MS (e)2102 2735 MS ( )2125 2735 MS
+(S)235 2792 MS (a)263 2792 MS (v)285 2792 MS (e)309 2792 MS (D)331 2792 MS (a)367 2792 MS (t)389 2792 MS (a)404 2792 MS (T)426 2792 MS (o)457 2792 MS (F)483 2792 MS (i)511 2792 MS (l)524 2792 MS (e)537 2792 MS (\()559 2792 MS (\))576 2792 MS
+( )593 2792 MS (q)613 2792 MS (u)638 2792 MS (i)664 2792 MS ( )676 2792 MS (p)696 2792 MS (e)721 2792 MS (r)743 2792 MS (m)761 2792 MS (e)799 2792 MS (t)821 2792 MS ( )836 2792 MS (d)856 2792 MS (e)881 2792 MS ( )903 2792 MS (s)923 2792 MS
+(a)942 2792 MS (u)964 2792 MS (v)989 2792 MS (e)1014 2792 MS (g)1036 2792 MS (a)1061 2792 MS (r)1083 2792 MS (d)1100 2792 MS (e)1125 2792 MS (r)1147 2792 MS ( )1164 2792 MS (u)1184 2792 MS (n)1209 2792 MS (e)1233 2792 MS ( )1256 2792 MS (d)1276 2792 MS
+(o)1301 2792 MS (n)1327 2792 MS (n)1351 2792 MS (\351)1375 2792 MS (e)1397 2792 MS ( )1419 2792 MS (e)1439 2792 MS (n)1462 2792 MS ( )1486 2792 MS (m)1507 2792 MS (\351)1545 2792 MS (m)1568 2792 MS (o)1605 2792 MS (i)1632 2792 MS (r)1645 2792 MS (e)1662 2792 MS
+( )1684 2792 MS (d)1704 2792 MS (a)1729 2792 MS (n)1752 2792 MS (s)1777 2792 MS ( )1796 2792 MS (u)1816 2792 MS (n)1842 2792 MS ( )1866 2792 MS (f)1887 2792 MS (i)1903 2792 MS (c)1916 2792 MS (h)1939 2792 MS (i)1964 2792 MS (e)1977 2792 MS (r)1999 2792 MS
+(.)2016 2792 MS ( )2029 2792 MS (C)2049 2792 MS (e)2082 2792 MS (s)2105 2792 MS ( )2125 2792 MS
+(d)235 2850 MS (e)260 2850 MS (u)282 2850 MS (x)307 2850 MS ( )331 2850 MS (d)353 2850 MS (e)378 2850 MS (r)400 2850 MS (n)418 2850 MS (i)443 2850 MS (e)456 2850 MS (r)478 2850 MS (s)495 2850 MS ( )514 2850 MS (s)536 2850 MS (e)555 2850 MS
+(r)577 2850 MS (v)595 2850 MS (i)620 2850 MS (c)633 2850 MS (e)655 2850 MS (s)678 2850 MS ( )697 2850 MS (d)719 2850 MS (o)744 2850 MS (i)770 2850 MS (v)783 2850 MS (e)807 2850 MS (n)830 2850 MS (t)854 2850 MS ( )869 2850 MS (p)891 2850 MS
+(o)916 2850 MS (u)942 2850 MS (v)967 2850 MS (o)991 2850 MS (i)1017 2850 MS (r)1029 2850 MS ( )1046 2850 MS (s)1068 2850 MS (\222)1087 2850 MS (e)1104 2850 MS (x)1127 2850 MS (\351)1151 2850 MS (c)1173 2850 MS (u)1195 2850 MS (t)1220 2850 MS (e)1235 2850 MS
+(r)1257 2850 MS ( )1274 2850 MS (e)1296 2850 MS (n)1318 2850 MS ( )1342 2850 MS (p)1364 2850 MS (a)1389 2850 MS (r)1411 2850 MS (a)1428 2850 MS (l)1451 2850 MS (l)1464 2850 MS (\350)1477 2850 MS (l)1500 2850 MS (e)1513 2850 MS
+( )1535 2850 MS
+(:)1548 2850 MS ( )1562 2850 MS (i)1585 2850 MS (l)1598 2850 MS (s)1611 2850 MS ( )1630 2850 MS (s)1653 2850 MS (o)1672 2850 MS (n)1698 2850 MS (t)1722 2850 MS ( )1737 2850 MS (d)1759 2850 MS (o)1784 2850 MS (n)1810 2850 MS (c)1834 2850 MS ( )1856 2850 MS
+(a)1878 2850 MS (s)1900 2850 MS (y)1920 2850 MS (n)1944 2850 MS (c)1968 2850 MS (h)1991 2850 MS (r)2015 2850 MS (o)2032 2850 MS (n)2058 2850 MS (e)2082 2850 MS (s)2105 2850 MS ( )2125 2850 MS
+(\()235 2907 MS (t)252 2907 MS (y)267 2907 MS (p)290 2907 MS (e)315 2907 MS ( )337 2907 MS (C)361 2907 MS (O)394 2907 MS (R)430 2907 MS (B)463 2907 MS (A)497 2907 MS ( )532 2907 MS (o)556 2907 MS (n)582 2907 MS (e)606 2907 MS (w)628 2907 MS
+(a)664 2907 MS (y)687 2907 MS (\))711 2907 MS (.)728 2907 MS ( )741 2907 MS (D)765 2907 MS (e)801 2907 MS ( )823 2907 MS (p)847 2907 MS (l)873 2907 MS (u)885 2907 MS (s)910 2907 MS ( )929 2907 MS (l)954 2907 MS (\222)967 2907 MS (a)984 2907 MS
+(t)1006 2907 MS (t)1020 2907 MS (r)1035 2907 MS (i)1052 2907 MS (b)1065 2907 MS (u)1089 2907 MS (t)1114 2907 MS ( )1129 2907 MS (P)1153 2907 MS (V)1181 2907 MS (e)1217 2907 MS (c)1238 2907 MS ( )1260 2907 MS (v)1284 2907 MS (a)1308 2907 MS ( )1330 2907 MS
+(g)1354 2907 MS (\351)1379 2907 MS (n)1402 2907 MS (\351)1426 2907 MS (r)1448 2907 MS (e)1465 2907 MS (r)1487 2907 MS ( )1504 2907 MS (d)1528 2907 MS (e)1553 2907 MS (u)1575 2907 MS (x)1600 2907 MS ( )1624 2907 MS (f)1649 2907 MS (o)1664 2907 MS (n)1690 2907 MS
+(c)1714 2907 MS (t)1736 2907 MS (i)1752 2907 MS (o)1764 2907 MS (n)1790 2907 MS (s)1815 2907 MS ( )1834 2907 MS (d)1858 2907 MS (e)1883 2907 MS ( )1905 2907 MS (l)1930 2907 MS (e)1942 2907 MS (c)1964 2907 MS (t)1986 2907 MS (u)2001 2907 MS (r)2026 2907 MS
+(e)2043 2907 MS ( )2065 2907 MS (e)2089 2907 MS (t)2110 2907 MS ( )2125 2907 MS
+(\351)235 2965 MS (c)257 2965 MS (r)279 2965 MS (i)297 2965 MS (t)309 2965 MS (u)324 2965 MS (r)349 2965 MS (e)366 2965 MS ( )388 2965 MS (s)410 2965 MS (y)430 2965 MS (n)454 2965 MS (c)479 2965 MS (h)502 2965 MS (r)526 2965 MS (o)543 2965 MS
+(n)569 2965 MS (e)593 2965 MS (s)615 2965 MS (.)634 2965 MS ( )647 2965 MS (P)669 2965 MS (o)697 2965 MS (u)723 2965 MS (r)748 2965 MS ( )765 2965 MS (p)787 2965 MS (o)812 2965 MS (u)838 2965 MS (v)863 2965 MS (o)887 2965 MS (i)913 2965 MS
+(r)925 2965 MS ( )942 2965 MS (e)964 2965 MS (x)987 2965 MS (\351)1011 2965 MS (c)1033 2965 MS (u)1055 2965 MS (t)1080 2965 MS (e)1095 2965 MS (r)1117 2965 MS ( )1134 2965 MS (c)1156 2965 MS (e)1178 2965 MS (s)1200 2965 MS ( )1219 2965 MS (s)1242 2965 MS
+(e)1261 2965 MS (r)1283 2965 MS (v)1300 2965 MS (i)1325 2965 MS (c)1338 2965 MS (e)1361 2965 MS (s)1383 2965 MS ( )1402 2965 MS (e)1425 2965 MS (n)1448 2965 MS ( )1472 2965 MS (p)1494 2965 MS (a)1519 2965 MS (r)1541 2965 MS (a)1558 2965 MS (l)1581 2965 MS
+(l)1595 2965 MS (\350)1608 2965 MS (l)1631 2965 MS (e)1644 2965 MS (s)1666 2965 MS (,)1685 2965 MS ( )1698 2965 MS (i)1721 2965 MS (l)1735 2965 MS ( )1748 2965 MS (e)1771 2965 MS (s)1793 2965 MS (t)1812 2965 MS ( )1827 2965 MS (n)1849 2965 MS (\351)1874 2965 MS
+(c)1896 2965 MS (e)1918 2965 MS (s)1940 2965 MS (s)1960 2965 MS (a)1979 2965 MS (i)2002 2965 MS (r)2015 2965 MS (e)2032 2965 MS ( )2054 2965 MS (d)2076 2965 MS (e)2102 2965 MS ( )2125 2965 MS
+(d)235 3022 MS (\351)260 3022 MS (f)283 3022 MS (i)299 3022 MS (n)312 3022 MS (i)338 3022 MS (r)350 3022 MS ( )367 3022 MS (d)380 3022 MS (e)405 3022 MS (u)427 3022 MS (x)453 3022 MS ( )477 3022 MS (a)490 3022 MS (u)512 3022 MS (t)537 3022 MS
+(r)552 3022 MS (e)569 3022 MS (s)591 3022 MS ( )610 3022 MS (s)623 3022 MS (e)642 3022 MS (r)664 3022 MS (v)681 3022 MS (i)706 3022 MS (c)719 3022 MS (e)741 3022 MS (s)763 3022 MS ( )782 3022 MS (i)796 3022 MS (d)809 3022 MS (e)834 3022 MS
+(n)857 3022 MS (t)881 3022 MS (i)897 3022 MS (q)909 3022 MS (u)934 3022 MS (e)959 3022 MS (s)981 3022 MS ( )1000 3022 MS (m)1014 3022 MS (a)1052 3022 MS (i)1075 3022 MS (s)1088 3022 MS ( )1107 3022 MS (a)1120 3022 MS (s)1142 3022 MS (y)1162 3022 MS
+(n)1186 3022 MS (c)1211 3022 MS (h)1235 3022 MS (r)1259 3022 MS (o)1276 3022 MS (n)1302 3022 MS (e)1326 3022 MS (s)1348 3022 MS
+( )1367 3022 MS
+(:)1380 3022 MS ( )1394 3022 MS (g)1407 3022 MS (e)1432 3022 MS (t)1454 3022 MS (_)1469 3022 MS (d)1494 3022 MS (v)1519 3022 MS (e)1543 3022 MS (c)1565 3022 MS (\()1587 3022 MS (\))1604 3022 MS ( )1621 3022 MS (e)1634 3022 MS (t)1655 3022 MS ( )1670 3022 MS
+(p)1683 3022 MS (u)1708 3022 MS (t)1732 3022 MS (_)1747 3022 MS (d)1772 3022 MS (v)1797 3022 MS (e)1821 3022 MS (c)1843 3022 MS (\()1865 3022 MS (\))1882 3022 MS (.)1899 3022 MS
+( )1912 3022 MS
+( )235 3079 MS
+showpage
+%%Page: 18 18
+14.449 827.879 translate 72 300 div dup neg scale
+0 0 transform .25 add round .25 sub exch .25 add round .25 sub exch itransform translate
+1 j
+1 setlinecap
+72 sl
+0.375 g
+n
+494 182 M
+494 155 472 133 445 133 c
+418 133 396 155 396 182 c
+396 209 418 231 445 231 c
+472 231 494 209 494 182 c
+cp
+CM 0.156 0.152 scale
+s
+SM
+71 sl
+n
+660 182 M
+660 155 638 133 611 133 c
+584 133 562 155 562 182 c
+562 209 584 231 611 231 c
+638 231 660 209 660 182 c
+cp
+CM 0.156 0.152 scale
+s
+SM
+n
+120 24 468 152 B
+1 g
+f
+1 sl
+n
+122 26 467 151 B
+cp
+s
+71 sl
+0.375 g
+n
+577 180 M
+577 153 555 131 528 131 c
+501 131 479 153 479 180 c
+479 206 501 228 528 228 c
+555 228 577 206 577 180 c
+cp
+gs
+1 g
+e
+gr
+CM 0.156 0.152 scale
+s
+SM
+n
+480 180 M
+575 180 L
+CM 0.156 0.152 scale
+s
+SM
+n
+34 18 562 187 B
+1 g
+f
+1 sl
+n
+36 20 561 186 B
+cp
+s
+n
+610 173 M
+591 173 L
+554 124 L
+579 126 L
+609 173 L
+610 173 L
+cp
+gs
+e
+gr
+s
+n
+448 170 M
+468 170 L
+504 122 L
+479 123 L
+449 170 L
+448 170 L
+cp
+gs
+e
+gr
+s
+0.375 g
+n
+473 140 M
+473 137 470 135 467 135 c
+464 135 462 137 462 140 c
+462 142 464 145 467 145 c
+470 145 473 142 473 140 c
+cp
+gs
+e
+gr
+s
+n
+593 139 M
+593 136 590 134 588 134 c
+585 134 583 136 583 139 c
+583 141 585 144 588 144 c
+590 144 593 141 593 139 c
+cp
+gs
+e
+gr
+s
+72 sl
+n
+665 137 M
+665 229 L
+CM 0.156 0.152 scale
+s
+SM
+[29 0 0 -29 0 0]/Times-Roman MF
+0 g
+( )676 243 MS
+[50 0 0 -50 0 0]/Times-Roman MF
+(D)400 289 MS (E)436 289 MS (N)467 289 MS ( )503 289 MS ( )516 289 MS (S)529 289 MS (a)557 289 MS (c)579 289 MS (l)601 289 MS (a)613 289 MS (y)636 289 MS
+( )660 289 MS
+( )1297 140 MS
+[38 0 0 -38 0 0]/Times-Roman MF
+(S)1785 129 MS (F)1806 129 MS (M)1827 129 MS (E)1861 129 MS (/)1883 129 MS (L)1894 129 MS (G)1916 129 MS (L)1943 129 MS (S)1965 129 MS (/)1986 129 MS (R)1997 129 MS (T)2022 129 MS (/)2045 129 MS (0)2056 129 MS (2)2075 129 MS
+(-)2094 129 MS
+(0)2106 129 MS (0)2125 129 MS (2)2144 129 MS
+( )2163 129 MS
+(D)1785 173 MS (a)1812 173 MS (t)1829 173 MS (e)1840 173 MS
+( )1856 173 MS
+(:)1866 173 MS
+( )1875 173 MS
+(3)1885 173 MS (0)1904 173 MS (/)1923 173 MS (0)1934 173 MS (5)1952 173 MS (/)1971 173 MS (2)1982 173 MS (0)2000 173 MS (0)2019 173 MS (2)2038 173 MS
+( )2057 173 MS
+n
+5 5 232 89 B
+f
+n
+5 5 232 89 B
+f
+n
+584 5 238 89 B
+f
+n
+5 5 823 89 B
+f
+n
+938 5 829 89 B
+f
+n
+5 5 1768 89 B
+f
+n
+436 5 1774 89 B
+f
+n
+5 5 2211 89 B
+f
+n
+5 5 2211 89 B
+f
+n
+5 256 232 95 B
+f
+n
+2 256 823 95 B
+f
+n
+2 256 1768 95 B
+f
+n
+5 256 2211 95 B
+f
+[50 0 0 -50 0 0]/Times-Roman MF
+(D)322 400 MS (M)358 400 MS (2)402 400 MS (S)427 400 MS (/)455 400 MS (S)469 400 MS (F)497 400 MS (M)524 400 MS (E)568 400 MS (/)599 400 MS (L)613 400 MS (G)643 400 MS (L)680 400 MS (S)710 400 MS
+( )738 400 MS
+[50 0 0 -50 0 0]/Times-Bold MF
+gs
+n
+241 53 1102 367 CB
+(R)1102 413 MS (A)1138 413 MS (P)1174 413 MS (P)1204 413 MS (O)1234 413 MS (R)1273 413 MS (T)1310 413 MS
+gr
+gs
+n
+150 53 1343 367 CB
+( )1343 413 MS (D)1356 413 MS (M)1392 413 MS (2)1440 413 MS (S)1465 413 MS
+gr
+[50 0 0 -50 0 0]/Times-Roman MF
+gs
+n
+24 52 1493 368 CB
+( )1493 413 MS
+gr
+[38 0 0 -38 0 0]/Times-Roman MF
+(P)1785 400 MS (a)1806 400 MS (g)1823 400 MS (e)1841 400 MS ( )1858 400 MS
+[50 0 0 -50 0 0]/Times-Roman MF
+(1)1868 400 MS (8)1893 400 MS
+(/)1918 400 MS
+(3)1932 400 MS (0)1957 400 MS
+[38 0 0 -38 0 0]/Times-Roman MF
+( )1982 400 MS
+n
+5 2 232 352 B
+f
+n
+2 2 823 352 B
+f
+n
+941 2 826 352 B
+f
+n
+2 2 1768 352 B
+f
+n
+5 2 2211 352 B
+f
+n
+5 67 232 355 B
+f
+n
+590 1 232 423 B
+f
+n
+2 67 823 355 B
+f
+n
+1 1 823 423 B
+f
+n
+942 1 825 423 B
+f
+n
+2 67 1768 355 B
+f
+n
+1 1 1768 423 B
+f
+n
+440 1 1770 423 B
+f
+n
+5 67 2211 355 B
+f
+n
+5 1 2211 423 B
+f
+[50 0 0 -50 0 0]/Times-Roman MF
+( )235 470 MS
+[33 0 0 -33 0 0]/Times-Roman MF
+/IsChar{exch/CharStrings get exch known}bd/MapCh{3 -1 roll/Encoding get 3 1\r
+roll put}bd/MapDegree{dup 16#b0 exch/degree IsChar{/degree}{/ring}ifelse MapCh}\r
+bd/MapBB{dup 16#a6 exch/brokenbar IsChar{/brokenbar}{/bar}ifelse MapCh}bd\r
+/reencode{findfont begin currentdict dup length dict begin{1 index/FID ne{def}\r
+{pop pop}ifelse}forall/FontName exch def dup length 0 ne{/Encoding Encoding 256\r
+array copy def 0 exch{dup type/nametype eq{Encoding 2 index 2 index put pop 1\r
+add}{exch pop}ifelse}forall}if pop currentdict dup end end/FontName get exch\r
+definefont dup MapDegree MapBB}bd/LATENC[0/grave/acute/circumflex/tilde/macron\r
+/breve/dotaccent/dieresis/ring/cedilla/hungarumlaut/ogonek/caron/dotlessi/fi/fl\r
+/Lslash/lslash/Zcaron/zcaron/minus/.notdef/.notdef/.notdef/.notdef/.notdef\r
+/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/space/exclam/quotedbl\r
+/numbersign/dollar/percent/ampersand/quotesingle/parenleft/parenright/asterisk\r
+/plus/comma/hyphen/period/slash/zero/one/two/three/four/five/six/seven/eight\r
+/nine/colon/semicolon/less/equal/greater/question/at/A/B/C/D/E/F/G/H/I/J/K/L/M\r
+/N/O/P/Q/R/S/T/U/V/W/X/Y/Z/bracketleft/backslash/bracketright/asciicircum\r
+/underscore/grave/a/b/c/d/e/f/g/h/i/j/k/l/m/n/o/p/q/r/s/t/u/v/w/x/y/z/braceleft\r
+/bar/braceright/asciitilde/.notdef/.notdef/.notdef/quotesinglbase/florin\r
+/quotedblbase/ellipsis/dagger/daggerdbl/circumflex/perthousand/Scaron\r
+/guilsinglleft/OE/.notdef/.notdef/.notdef/.notdef/quoteleft/quoteright\r
+/quotedblleft/quotedblright/bullet/endash/emdash/tilde/trademark/scaron\r
+/guilsinglright/oe/.notdef/.notdef/Ydieresis/.notdef/exclamdown/cent/sterling\r
+/currency/yen/brokenbar/section/dieresis/copyright/ordfeminine/guillemotleft\r
+/logicalnot/hyphen/registered/macron/degree/plusminus/twosuperior/threesuperior\r
+/acute/mu/paragraph/periodcentered/cedilla/onesuperior/ordmasculine\r
+/guillemotright/onequarter/onehalf/threequarters/questiondown/Agrave/Aacute\r
+/Acircumflex/Atilde/Adieresis/Aring/AE/Ccedilla/Egrave/Eacute/Ecircumflex\r
+/Edieresis/Igrave/Iacute/Icircumflex/Idieresis/Eth/Ntilde/Ograve/Oacute\r
+/Ocircumflex/Otilde/Odieresis/multiply/Oslash/Ugrave/Uacute/Ucircumflex\r
+/Udieresis/Yacute/Thorn/germandbls/agrave/aacute/acircumflex/atilde/adieresis\r
+/aring/ae/ccedilla/egrave/eacute/ecircumflex/edieresis/igrave/iacute\r
+/icircumflex/idieresis/eth/ntilde/ograve/oacute/ocircumflex/otilde/odieresis\r
+/divide/oslash/ugrave/uacute/ucircumflex/udieresis/yacute/thorn/ydieresis]def\r
+LATENC /_Times-Roman /Times-Roman reencode
+[33 0 0 -33 0 0]/_Times-Roman MF
+(L)242 3256 MS (e)262 3256 MS (s)277 3256 MS ( )289 3256 MS (i)298 3256 MS (n)307 3256 MS (f)324 3256 MS (o)335 3256 MS (r)351 3256 MS (m)363 3256 MS (a)388 3256 MS (t)403 3256 MS (i)412 3256 MS (o)422 3256 MS (n)439 3256 MS (s)456 3256 MS
+( )468 3256 MS (c)477 3256 MS (o)492 3256 MS (n)508 3256 MS (t)524 3256 MS (e)534 3256 MS (n)549 3256 MS (u)565 3256 MS (e)582 3256 MS (s)597 3256 MS ( )610 3256 MS (d)618 3256 MS (a)634 3256 MS (n)650 3256 MS (s)667 3256 MS ( )679 3256 MS
+(c)688 3256 MS (e)703 3256 MS ( )717 3256 MS (d)726 3256 MS (o)742 3256 MS (c)759 3256 MS (u)773 3256 MS (m)791 3256 MS (e)817 3256 MS (n)831 3256 MS (t)847 3256 MS ( )857 3256 MS (s)866 3256 MS (o)878 3256 MS (n)895 3256 MS (t)911 3256 MS
+( )921 3256 MS (r)929 3256 MS (\351)941 3256 MS (s)956 3256 MS (e)968 3256 MS (r)982 3256 MS (v)994 3256 MS (\351)1011 3256 MS (e)1026 3256 MS (s)1041 3256 MS ( )1053 3256 MS (a)1061 3256 MS (u)1076 3256 MS (x)1093 3256 MS ( )1109 3256 MS (d)1118 3256 MS
+(e)1135 3256 MS (s)1150 3256 MS (t)1162 3256 MS (i)1171 3256 MS (n)1181 3256 MS (a)1197 3256 MS (t)1212 3256 MS (a)1221 3256 MS (i)1236 3256 MS (r)1245 3256 MS (e)1257 3256 MS (s)1272 3256 MS ( )1284 3256 MS (n)1293 3256 MS (o)1309 3256 MS (m)1326 3256 MS
+(m)1352 3256 MS (\351)1378 3256 MS (m)1393 3256 MS (e)1419 3256 MS (n)1433 3256 MS (t)1450 3256 MS ( )1459 3256 MS (d)1468 3256 MS (\351)1484 3256 MS (s)1499 3256 MS (i)1512 3256 MS (g)1521 3256 MS
+(n)1538 3256 MS (\351)1555 3256 MS (s)1570 3256 MS ( )1582 3256 MS (e)1591 3256 MS (t)1605 3256 MS ( )1615 3256 MS (n)1623 3256 MS (e)1640 3256 MS ( )1654 3256 MS (p)1663 3256 MS (e)1680 3256 MS (u)1694 3256 MS (v)1711 3256 MS (e)1728 3256 MS (n)1743 3256 MS
+(t)1759 3256 MS ( )1768 3256 MS (r)1776 3256 MS (e)1788 3256 MS (c)1803 3256 MS (e)1818 3256 MS (v)1832 3256 MS (o)1849 3256 MS (i)1865 3256 MS (r)1874 3256 MS ( )1886 3256 MS (a)1894 3256 MS (u)1909 3256 MS (c)1926 3256 MS (u)1940 3256 MS (n)1957 3256 MS
+(e)1974 3256 MS ( )1988 3256 MS (d)1997 3256 MS (i)2013 3256 MS (f)2023 3256 MS (f)2034 3256 MS (u)2044 3256 MS (s)2062 3256 MS (i)2074 3256 MS (o)2084 3256 MS (n)2101 3256 MS
+( )2117 3256 MS
+(s)928 3294 MS (a)940 3294 MS (n)955 3294 MS (s)972 3294 MS ( )985 3294 MS (l)993 3294 MS (\222)1002 3294 MS (a)1013 3294 MS (u)1028 3294 MS (t)1045 3294 MS (o)1054 3294 MS (r)1071 3294 MS (i)1082 3294 MS (s)1092 3294 MS (a)1104 3294 MS (t)1119 3294 MS
+(i)1128 3294 MS (o)1138 3294 MS (n)1154 3294 MS ( )1171 3294 MS (e)1180 3294 MS (x)1194 3294 MS (p)1211 3294 MS (r)1227 3294 MS (e)1239 3294 MS (s)1254 3294 MS (s)1267 3294 MS (e)1280 3294 MS ( )1294 3294 MS (d)1303 3294 MS (u)1319 3294 MS ( )1336 3294 MS
+(D)1344 3294 MS (M)1368 3294 MS (2)1397 3294 MS (S)1414 3294 MS
+[50 0 0 -50 0 0]/Times-Roman MF
+( )1432 3294 MS
+[42 0 0 -42 0 0]/Courier MF
+(#)235 517 MS (i)260 517 MS (f)285 517 MS (n)310 517 MS (d)335 517 MS (e)360 517 MS (f)385 517 MS ( )410 517 MS (_)435 517 MS (S)460 517 MS (A)485 517 MS (L)510 517 MS (O)535 517 MS (M)560 517 MS (E)585 517 MS (_)610 517 MS
+(N)635 517 MS (P)660 517 MS (V)685 517 MS (E)710 517 MS (C)735 517 MS (C)760 517 MS (O)785 517 MS (M)810 517 MS (P)835 517 MS (O)860 517 MS (N)885 517 MS (E)910 517 MS (N)935 517 MS (T)960 517 MS (_)985 517 MS (I)1010 517 MS
+(D)1035 517 MS (L)1060 517 MS (_)1085 517 MS
+( )1110 517 MS
+(#)235 565 MS (d)260 565 MS (e)285 565 MS (f)310 565 MS (i)335 565 MS (n)360 565 MS (e)385 565 MS ( )410 565 MS (_)435 565 MS (S)460 565 MS (A)485 565 MS (L)510 565 MS (O)535 565 MS (M)560 565 MS (E)585 565 MS (_)610 565 MS
+(N)635 565 MS (P)660 565 MS (V)685 565 MS (E)710 565 MS
+(C)735 565 MS (C)760 565 MS (O)785 565 MS (M)810 565 MS (P)835 565 MS (O)860 565 MS (N)885 565 MS (E)910 565 MS (N)935 565 MS (T)960 565 MS (_)985 565 MS (I)1010 565 MS (D)1035 565 MS (L)1060 565 MS (_)1085 565 MS
+( )1110 565 MS
+( )235 612 MS
+(#)235 659 MS (i)260 659 MS (n)285 659 MS (c)310 659 MS (l)335 659 MS (u)360 659 MS (d)385 659 MS (e)410 659 MS ( )435 659 MS (")460 659 MS (S)485 659 MS (A)510 659 MS (L)535 659 MS (O)560 659 MS (M)585 659 MS (E)610 659 MS
+(_)635 659 MS (C)660 659 MS (o)685 659 MS (m)710 659 MS (p)735 659 MS (o)760 659 MS (n)785 659 MS (e)810 659 MS (n)835 659 MS (t)860 659 MS (.)885 659 MS (i)910 659 MS (d)935 659 MS (l)960 659 MS (")985 659 MS
+( )1010 659 MS
+(#)235 706 MS (i)260 706 MS (n)285 706 MS (c)310 706 MS (l)335 706 MS (u)360 706 MS (d)385 706 MS (e)410 706 MS ( )435 706 MS (")460 706 MS (T)485 706 MS (y)510 706 MS (p)535 706 MS (e)560 706 MS (D)585 706 MS (a)610 706 MS
+(t)635 706 MS (a)660 706 MS (.)685 706 MS (i)710 706 MS (d)735 706 MS (l)760 706 MS (")785 706 MS
+( )810 706 MS
+(#)235 753 MS (i)260 753 MS (n)285 753 MS (c)310 753 MS (l)335 753 MS (u)360 753 MS (d)385 753 MS (e)410 753 MS ( )435 753 MS (")460 753 MS (M)485 753 MS (P)510 753 MS (I)535 753 MS (O)560 753 MS (b)585 753 MS (j)610 753 MS
+(e)635 753 MS (c)660 753 MS (t)685 753 MS (.)710 753 MS (i)735 753 MS (d)760 753 MS (l)785 753 MS (")810 753 MS
+( )835 753 MS
+( )235 801 MS
+(m)235 848 MS (o)260 848 MS (d)285 848 MS (u)310 848 MS (l)335 848 MS (e)360 848 MS ( )385 848 MS (E)410 848 MS (n)435 848 MS (g)460 848 MS (i)485 848 MS (n)510 848 MS (e)535 848 MS (s)560 848 MS
+( )585 848 MS
+({)235 895 MS
+( )260 895 MS
+( )235 942 MS ( )260 942 MS (/)285 942 MS (/)310 942 MS ( )335 942 MS (D)360 942 MS (e)385 942 MS (f)410 942 MS (i)435 942 MS (n)460 942 MS (i)485 942 MS (t)510 942 MS (i)535 942 MS (o)560 942 MS (n)585 942 MS ( )610 942 MS
+(d)635 942 MS (e)660 942 MS ( )685 942 MS (l)710 942 MS (a)735 942 MS ( )760 942 MS (d)785 942 MS (o)810 942 MS (n)835 942 MS (n)860 942 MS (e)885 942 MS (e)910 942 MS ( )935 942 MS (v)960 942 MS (e)985 942 MS (c)1010 942 MS
+(t)1035 942 MS (e)1060 942 MS (u)1085 942 MS (r)1110 942 MS ( )1135 942 MS (p)1160 942 MS (a)1185 942 MS (r)1210 942 MS (a)1235 942 MS (l)1260 942 MS (l)1285 942 MS (e)1310 942 MS (l)1335 942 MS (e)1360 942 MS
+( )1385 942 MS
+( )235 989 MS ( )260 989 MS
+(i)285 989 MS (n)310 989 MS (t)335 989 MS (e)360 989 MS (r)385 989 MS (f)410 989 MS (a)435 989 MS (c)460 989 MS (e)485 989 MS ( )510 989 MS (P)535 989 MS (V)560 989 MS (e)585 989 MS (c)610 989 MS ( )635 989 MS (:)660 989 MS
+( )685 989 MS (M)710 989 MS (P)735 989 MS (I)760 989 MS (O)785 989 MS (b)810 989 MS (j)835 989 MS (e)860 989 MS (c)885 989 MS (t)910 989 MS
+( )935 989 MS
+( )235 1037 MS ( )260 1037 MS ({)285 1037 MS
+( )310 1037 MS
+( )235 1084 MS ( )260 1084 MS ( )285 1084 MS ( )310 1084 MS (r)335 1084 MS (e)360 1084 MS (a)385 1084 MS (d)410 1084 MS (o)435 1084 MS (n)460 1084 MS (l)485 1084 MS (y)510 1084 MS ( )535 1084 MS (a)560 1084 MS (t)585 1084 MS (t)610 1084 MS
+(r)635 1084 MS (i)660 1084 MS (b)685 1084 MS (u)710 1084 MS (t)735 1084 MS (e)760 1084 MS ( )785 1084 MS (D)810 1084 MS (o)835 1084 MS (u)860 1084 MS (b)885 1084 MS (l)910 1084 MS (e)935 1084 MS (V)960 1084 MS (e)985 1084 MS (c)1010 1084 MS
+( )1035 1084 MS (v)1060 1084 MS (e)1085 1084 MS (c)1110 1084 MS (;)1135 1084 MS
+( )1160 1084 MS
+( )235 1131 MS
+( )235 1178 MS ( )260 1178 MS ( )285 1178 MS ( )310 1178 MS (u)335 1178 MS (n)360 1178 MS (s)385 1178 MS (i)410 1178 MS (g)435 1178 MS (n)460 1178 MS (e)485 1178 MS (d)510 1178 MS ( )535 1178 MS (l)560 1178 MS (o)585 1178 MS (n)610 1178 MS
+(g)635 1178 MS ( )660 1178 MS (S)685 1178 MS (i)710 1178 MS (z)735 1178 MS
+(e)760 1178 MS (\()785 1178 MS (\))810 1178 MS (;)835 1178 MS
+( )860 1178 MS
+( )235 1225 MS ( )260 1225 MS ( )285 1225 MS ( )310 1225 MS (v)335 1225 MS (o)360 1225 MS (i)385 1225 MS (d)410 1225 MS ( )435 1225 MS (L)460 1225 MS (V)485 1225 MS (e)510 1225 MS (c)535 1225 MS (\()560 1225 MS (o)585 1225 MS (u)610 1225 MS
+(t)635 1225 MS ( )660 1225 MS (u)685 1225 MS (n)710 1225 MS (s)735 1225 MS (i)760 1225 MS (g)785 1225 MS (n)810 1225 MS (e)835 1225 MS (d)860 1225 MS ( )885 1225 MS (l)910 1225 MS (o)935 1225 MS (n)960 1225 MS (g)985 1225 MS ( )1010 1225 MS
+(s)1035 1225 MS (t)1060 1225 MS (a)1085 1225 MS (r)1110 1225 MS (t)1135 1225 MS (,)1160 1225 MS ( )1185 1225 MS (o)1210 1225 MS (u)1235 1225 MS (t)1260 1225 MS ( )1285 1225 MS (u)1310 1225 MS (n)1335 1225 MS (s)1360 1225 MS (i)1385 1225 MS (g)1410 1225 MS
+(n)1435 1225 MS (e)1460 1225 MS (d)1485 1225 MS ( )1510 1225 MS (l)1535 1225 MS (o)1560 1225 MS (n)1585 1225 MS (g)1610 1225 MS ( )1635 1225 MS (e)1660 1225 MS (n)1685 1225 MS (d)1710 1225 MS (\))1735 1225 MS (;)1760 1225 MS
+( )1785 1225 MS
+( )235 1273 MS ( )260 1273 MS ( )285 1273 MS ( )310 1273 MS (D)335 1273 MS (o)360 1273 MS (u)385 1273 MS (b)410 1273 MS (l)435 1273 MS (e)460 1273 MS (V)485 1273 MS (e)510 1273 MS (c)535 1273 MS ( )560 1273 MS (n)585 1273 MS (v)610 1273 MS
+(e)635 1273 MS (c)660 1273 MS (\()685 1273 MS (i)710 1273 MS (n)735 1273 MS ( )760 1273 MS (u)785 1273 MS (n)810 1273 MS (s)835 1273 MS (i)860 1273 MS (g)885 1273 MS (n)910 1273 MS (e)935 1273 MS (d)960 1273 MS ( )985 1273 MS (l)1010 1273 MS
+(o)1035 1273 MS (n)1060 1273 MS (g)1085 1273 MS ( )1110 1273 MS (s)1135 1273 MS (t)1160 1273 MS (a)1185 1273 MS (r)1210 1273 MS (t)1235 1273 MS (,)1260 1273 MS ( )1285 1273 MS (i)1310 1273 MS (n)1335 1273 MS ( )1360 1273 MS (u)1385 1273 MS (n)1410 1273 MS
+(s)1435 1273 MS (i)1460 1273 MS (g)1485 1273 MS (n)1510 1273 MS (e)1535 1273 MS (d)1560 1273 MS ( )1585 1273 MS (l)1610 1273 MS (o)1635 1273 MS (n)1660 1273 MS (g)1685 1273 MS ( )1710 1273 MS (e)1735 1273 MS (n)1760 1273 MS (d)1785 1273 MS (\))1810 1273 MS
+(;)1835 1273 MS
+( )1860 1273 MS
+( )235 1320 MS ( )260 1320 MS
+(})285 1320 MS (;)310 1320 MS
+( )335 1320 MS
+( )235 1367 MS
+( )235 1414 MS ( )260 1414 MS (/)285 1414 MS (/)310 1414 MS ( )335 1414 MS (D)360 1414 MS (e)385 1414 MS (f)410 1414 MS (i)435 1414 MS (n)460 1414 MS (i)485 1414 MS (t)510 1414 MS (i)535 1414 MS (o)560 1414 MS (n)585 1414 MS ( )610 1414 MS
+(d)635 1414 MS (u)660 1414 MS ( )685 1414 MS (c)710 1414 MS (o)735 1414 MS (m)760 1414 MS (p)785 1414 MS (o)810 1414 MS (s)835 1414 MS (a)860 1414 MS (n)885 1414 MS (t)910 1414 MS ( )935 1414 MS (v)960 1414 MS (e)985 1414 MS (c)1010 1414 MS
+(t)1035 1414 MS (e)1060 1414 MS (u)1085 1414 MS (r)1110 1414 MS ( )1135 1414 MS (N)1160 1414 MS (P)1185 1414 MS ( )1210 1414 MS (p)1235 1414 MS (a)1260 1414 MS (r)1285 1414 MS (a)1310 1414 MS (l)1335 1414 MS (l)1360 1414 MS (e)1385 1414 MS (l)1410 1414 MS
+(e)1435 1414 MS
+( )1460 1414 MS
+( )235 1461 MS ( )260 1461 MS (i)285 1461 MS (n)310 1461 MS (t)335 1461 MS (e)360 1461 MS (r)385 1461 MS (f)410 1461 MS (a)435 1461 MS (c)460 1461 MS (e)485 1461 MS ( )510 1461 MS (N)535 1461 MS (P)560 1461 MS (V)585 1461 MS (e)610 1461 MS
+(c)635 1461 MS (C)660 1461 MS (o)685 1461 MS (m)710 1461 MS (p)735 1461 MS (o)760 1461 MS (n)785 1461 MS (e)810 1461 MS (n)835 1461 MS (t)860 1461 MS (:)885 1461 MS (C)910 1461 MS (o)935 1461 MS (m)960 1461 MS (p)985 1461 MS (o)1010 1461 MS
+(n)1035 1461 MS (e)1060 1461 MS (n)1085 1461 MS (t)1110 1461 MS (,)1135 1461 MS (M)1160 1461 MS (P)1185 1461 MS (I)1210 1461 MS (O)1235 1461 MS (b)1260 1461 MS (j)1285 1461 MS (e)1310 1461 MS (c)1335 1461 MS (t)1360 1461 MS
+( )1385 1461 MS
+( )235 1509 MS ( )260 1509 MS ({)285 1509 MS
+( )310 1509 MS
+( )235 1556 MS ( )260 1556 MS ( )285 1556 MS ( )310 1556 MS (/)335 1556 MS (/)360 1556 MS ( )385 1556 MS (v)410 1556 MS (e)435 1556 MS (r)460 1556 MS (s)485 1556 MS (i)510 1556 MS (o)535 1556 MS (n)560 1556 MS ( )585 1556 MS
+LATENC /_Courier /Courier reencode
+[42 0 0 -42 0 0]/_Courier MF
+(s)610 1556 MS (y)635 1556 MS (n)660 1556 MS (c)685 1556 MS (h)710 1556 MS (r)735 1556 MS (o)760 1556 MS (n)785 1556 MS (e)810 1556 MS ( )835 1556 MS (d)860 1556 MS (e)885 1556 MS (s)910 1556 MS ( )935 1556 MS (l)960 1556 MS (e)985 1556 MS
+(c)1010 1556 MS (t)1035 1556 MS (u)1060 1556 MS (r)1085 1556 MS (e)1110 1556 MS (/)1135 1556 MS (\351)1160 1556 MS (c)1185 1556 MS (r)1210 1556 MS (i)1235 1556 MS (t)1260 1556 MS (u)1285 1556 MS (r)1310 1556 MS (e)1335 1556 MS ( )1360 1556 MS (d)1385 1556 MS
+(u)1410 1556 MS ( )1435 1556 MS (v)1460 1556 MS (e)1485 1556 MS (c)1510 1556 MS (t)1535 1556 MS (e)1560 1556 MS (u)1585 1556 MS (r)1610 1556 MS ( )1635 1556 MS (p)1660 1556 MS (a)1685 1556 MS (r)1710 1556 MS (a)1735 1556 MS (l)1760 1556 MS (l)1785 1556 MS
+(e)1810 1556 MS (l)1835 1556 MS (e)1860 1556 MS
+( )1885 1556 MS
+( )235 1603 MS ( )260 1603 MS ( )285 1603 MS ( )310 1603 MS (a)335 1603 MS (t)360 1603 MS (t)385 1603 MS (r)410 1603 MS (i)435 1603 MS (b)460 1603 MS (u)485 1603 MS (t)510 1603 MS (e)535 1603 MS ( )560 1603 MS (P)585 1603 MS (V)610 1603 MS
+(e)635 1603 MS (c)660 1603 MS ( )685 1603 MS (d)710 1603 MS (v)735 1603 MS (e)760 1603 MS (c)785 1603 MS (;)810 1603 MS
+( )835 1603 MS
+( )235 1650 MS ( )260 1650 MS ( )285 1650 MS ( )310 1650 MS (/)335 1650 MS (/)360 1650 MS ( )385 1650 MS (v)410 1650 MS (e)435 1650 MS (r)460 1650 MS (s)485 1650 MS (i)510 1650 MS (o)535 1650 MS (n)560 1650 MS ( )585 1650 MS (a)610 1650 MS
+(s)635 1650 MS (y)660 1650 MS (n)685 1650 MS (c)710 1650 MS (h)735 1650 MS (r)760 1650 MS (o)785 1650 MS (n)810 1650 MS (e)835 1650 MS ( )860 1650 MS (d)885 1650 MS (e)910 1650 MS (s)935 1650 MS ( )960 1650 MS (l)985 1650 MS (e)1010 1650 MS
+(c)1035 1650 MS (t)1060 1650 MS (u)1085 1650 MS (r)1110 1650 MS (e)1135 1650 MS (/)1160 1650 MS (\351)1185 1650 MS (c)1210 1650 MS (r)1235 1650 MS (i)1260 1650 MS (t)1285 1650 MS (u)1310 1650 MS (r)1335 1650 MS (e)1360 1650 MS ( )1385 1650 MS (d)1410 1650 MS
+(u)1435 1650 MS ( )1460 1650 MS (v)1485 1650 MS (e)1510 1650 MS (c)1535 1650 MS (t)1560 1650 MS (e)1585 1650 MS (u)1610 1650 MS (r)1635 1650 MS ( )1660 1650 MS (p)1685 1650 MS (a)1710 1650 MS (r)1735 1650 MS (a)1760 1650 MS (l)1785 1650 MS (l)1810 1650 MS
+(e)1835 1650 MS (l)1860 1650 MS (e)1885 1650 MS
+( )1910 1650 MS
+( )235 1697 MS ( )260 1697 MS ( )285 1697 MS ( )310 1697 MS
+(o)335 1697 MS (n)360 1697 MS (e)385 1697 MS (w)410 1697 MS (a)435 1697 MS (y)460 1697 MS ( )485 1697 MS (v)510 1697 MS (o)535 1697 MS (i)560 1697 MS (d)585 1697 MS ( )610 1697 MS (g)635 1697 MS (e)660 1697 MS (t)685 1697 MS (_)710 1697 MS
+(d)735 1697 MS (v)760 1697 MS (e)785 1697 MS (c)810 1697 MS (\()835 1697 MS (i)860 1697 MS (n)885 1697 MS ( )910 1697 MS (s)935 1697 MS (t)960 1697 MS (r)985 1697 MS (i)1010 1697 MS (n)1035 1697 MS (g)1060 1697 MS ( )1085 1697 MS (i)1110 1697 MS
+(d)1135 1697 MS (_)1160 1697 MS (c)1185 1697 MS (a)1210 1697 MS (l)1235 1697 MS (l)1260 1697 MS (b)1285 1697 MS (a)1310 1697 MS (c)1335 1697 MS (k)1360 1697 MS (\))1385 1697 MS (;)1410 1697 MS
+( )1435 1697 MS
+( )235 1745 MS ( )260 1745 MS ( )285 1745 MS ( )310 1745 MS (o)335 1745 MS (n)360 1745 MS (e)385 1745 MS (w)410 1745 MS (a)435 1745 MS (y)460 1745 MS ( )485 1745 MS (v)510 1745 MS (o)535 1745 MS (i)560 1745 MS (d)585 1745 MS ( )610 1745 MS
+(p)635 1745 MS (u)660 1745 MS (t)685 1745 MS (_)710 1745 MS (d)735 1745 MS (v)760 1745 MS (e)785 1745 MS (c)810 1745 MS (\()835 1745 MS (i)860 1745 MS (n)885 1745 MS ( )910 1745 MS (P)935 1745 MS (V)960 1745 MS (e)985 1745 MS (c)1010 1745 MS
+( )1035 1745 MS (v)1060 1745 MS (e)1085 1745 MS (c)1110 1745 MS (,)1135 1745 MS (i)1160 1745 MS (n)1185 1745 MS ( )1210 1745 MS (s)1235 1745 MS (t)1260 1745 MS (r)1285 1745 MS (i)1310 1745 MS (n)1335 1745 MS (g)1360 1745 MS ( )1385 1745 MS (i)1410 1745 MS
+(d)1435 1745 MS (_)1460 1745 MS (c)1485 1745 MS (a)1510 1745 MS (l)1535 1745 MS (l)1560 1745 MS (b)1585 1745 MS (a)1610 1745 MS (c)1635 1745 MS (k)1660 1745 MS (\))1685 1745 MS (;)1710 1745 MS
+( )1735 1745 MS
+( )235 1792 MS
+( )235 1839 MS ( )260 1839 MS ( )285 1839 MS ( )310 1839 MS (v)335 1839 MS (o)360 1839 MS (i)385 1839 MS (d)410 1839 MS ( )435 1839 MS (S)460 1839 MS (e)485 1839 MS (t)510 1839 MS (F)535 1839 MS (i)560 1839 MS (l)585 1839 MS (e)610 1839 MS
+(N)635 1839 MS (a)660 1839 MS (m)685 1839 MS (e)710 1839 MS (\()735 1839 MS (i)760 1839 MS (n)785 1839 MS ( )810 1839 MS (s)835 1839 MS (t)860 1839 MS (r)885 1839 MS (i)910 1839 MS (n)935 1839 MS (g)960 1839 MS ( )985 1839 MS (f)1010 1839 MS
+(i)1035 1839 MS (l)1060 1839 MS (e)1085 1839 MS (n)1110 1839 MS (a)1135 1839 MS (m)1160 1839 MS (e)1185 1839 MS (\))1210 1839 MS (;)1235 1839 MS
+( )1260 1839 MS
+( )235 1886 MS
+( )235 1933 MS ( )260 1933 MS ( )285 1933 MS ( )310 1933 MS (o)335 1933 MS (n)360 1933 MS (e)385 1933 MS (w)410 1933 MS (a)435 1933 MS (y)460 1933 MS ( )485 1933 MS (v)510 1933 MS (o)535 1933 MS (i)560 1933 MS (d)585 1933 MS ( )610 1933 MS
+(R)635 1933 MS (e)660 1933 MS (a)685 1933 MS (d)710 1933 MS (D)735 1933 MS (a)760 1933 MS (t)785 1933 MS (a)810 1933 MS (F)835 1933 MS (r)860 1933 MS (o)885 1933 MS (m)910 1933 MS (F)935 1933 MS (i)960 1933 MS (l)985 1933 MS (e)1010 1933 MS
+(\()1035 1933 MS (i)1060 1933 MS (n)1085 1933 MS ( )1110 1933 MS (s)1135 1933 MS (t)1160 1933 MS (r)1185 1933 MS (i)1210 1933 MS (n)1235 1933 MS (g)1260 1933 MS ( )1285 1933 MS (i)1310 1933 MS (d)1335 1933 MS (_)1360 1933 MS (c)1385 1933 MS (a)1410 1933 MS
+(l)1435 1933 MS (l)1460 1933 MS (b)1485 1933 MS (a)1510 1933 MS (c)1535 1933 MS (k)1560 1933 MS (\))1585 1933 MS (;)1610 1933 MS
+( )1635 1933 MS
+( )235 1981 MS ( )260 1981 MS ( )285 1981 MS ( )310 1981 MS (o)335 1981 MS (n)360 1981 MS (e)385 1981 MS (w)410 1981 MS (a)435 1981 MS (y)460 1981 MS ( )485 1981 MS (v)510 1981 MS (o)535 1981 MS (i)560 1981 MS (d)585 1981 MS ( )610 1981 MS
+(S)635 1981 MS (a)660 1981 MS (v)685 1981 MS (e)710 1981 MS (D)735 1981 MS (a)760 1981 MS (t)785 1981 MS (a)810 1981 MS (T)835 1981 MS (o)860 1981 MS (F)885 1981 MS (i)910 1981 MS (l)935 1981 MS (e)960 1981 MS (\()985 1981 MS (i)1010 1981 MS
+(n)1035 1981 MS ( )1060 1981 MS (s)1085 1981 MS (t)1110 1981 MS (r)1135 1981 MS (i)1160 1981 MS (n)1185 1981 MS (g)1210 1981 MS ( )1235 1981 MS (i)1260 1981 MS (d)1285 1981 MS (_)1310 1981 MS (c)1335 1981 MS (a)1360 1981 MS (l)1385 1981 MS (l)1410 1981 MS
+(b)1435 1981 MS (a)1460 1981 MS (c)1485 1981 MS (k)1510 1981 MS (\))1535 1981 MS (;)1560 1981 MS
+( )1585 1981 MS
+( )235 2028 MS
+( )235 2075 MS ( )260 2075 MS
+(})285 2075 MS ( )310 2075 MS (;)335 2075 MS
+( )360 2075 MS
+(})235 2122 MS ( )260 2122 MS (;)285 2122 MS
+( )310 2122 MS
+( )235 2169 MS
+( )260 2169 MS
+(#)235 2217 MS (e)260 2217 MS (n)285 2217 MS (d)310 2217 MS (i)335 2217 MS (f)360 2217 MS
+( )385 2217 MS
+( )235 2264 MS
+( )235 2311 MS
+( )235 2358 MS
+[50 0 0 -50 0 0]/Times-Roman MF
+( )235 2415 MS
+( )235 2473 MS
+( )348 2530 MS
+( )235 2588 MS
+showpage
+%%Page: 19 19
+14.449 827.879 translate 72 300 div dup neg scale
+0 0 transform .25 add round .25 sub exch .25 add round .25 sub exch itransform translate
+1 j
+1 setlinecap
+72 sl
+0.375 g
+n
+494 182 M
+494 155 472 133 445 133 c
+418 133 396 155 396 182 c
+396 209 418 231 445 231 c
+472 231 494 209 494 182 c
+cp
+CM 0.156 0.152 scale
+s
+SM
+71 sl
+n
+660 182 M
+660 155 638 133 611 133 c
+584 133 562 155 562 182 c
+562 209 584 231 611 231 c
+638 231 660 209 660 182 c
+cp
+CM 0.156 0.152 scale
+s
+SM
+n
+120 24 468 152 B
+1 g
+f
+1 sl
+n
+122 26 467 151 B
+cp
+s
+71 sl
+0.375 g
+n
+577 180 M
+577 153 555 131 528 131 c
+501 131 479 153 479 180 c
+479 206 501 228 528 228 c
+555 228 577 206 577 180 c
+cp
+gs
+1 g
+e
+gr
+CM 0.156 0.152 scale
+s
+SM
+n
+480 180 M
+575 180 L
+CM 0.156 0.152 scale
+s
+SM
+n
+34 18 562 187 B
+1 g
+f
+1 sl
+n
+36 20 561 186 B
+cp
+s
+n
+610 173 M
+591 173 L
+554 124 L
+579 126 L
+609 173 L
+610 173 L
+cp
+gs
+e
+gr
+s
+n
+448 170 M
+468 170 L
+504 122 L
+479 123 L
+449 170 L
+448 170 L
+cp
+gs
+e
+gr
+s
+0.375 g
+n
+473 140 M
+473 137 470 135 467 135 c
+464 135 462 137 462 140 c
+462 142 464 145 467 145 c
+470 145 473 142 473 140 c
+cp
+gs
+e
+gr
+s
+n
+593 139 M
+593 136 590 134 588 134 c
+585 134 583 136 583 139 c
+583 141 585 144 588 144 c
+590 144 593 141 593 139 c
+cp
+gs
+e
+gr
+s
+72 sl
+n
+665 137 M
+665 229 L
+CM 0.156 0.152 scale
+s
+SM
+[29 0 0 -29 0 0]/Times-Roman MF
+0 g
+( )676 243 MS
+[50 0 0 -50 0 0]/Times-Roman MF
+(D)400 289 MS (E)436 289 MS (N)467 289 MS ( )503 289 MS ( )516 289 MS (S)529 289 MS (a)557 289 MS (c)579 289 MS (l)601 289 MS (a)613 289 MS (y)636 289 MS
+( )660 289 MS
+( )1297 140 MS
+[38 0 0 -38 0 0]/Times-Roman MF
+(S)1785 129 MS (F)1806 129 MS (M)1827 129 MS (E)1861 129 MS (/)1883 129 MS (L)1894 129 MS (G)1916 129 MS (L)1943 129 MS (S)1965 129 MS (/)1986 129 MS (R)1997 129 MS (T)2022 129 MS (/)2045 129 MS (0)2056 129 MS (2)2075 129 MS
+(-)2094 129 MS
+(0)2106 129 MS (0)2125 129 MS (2)2144 129 MS
+( )2163 129 MS
+(D)1785 173 MS (a)1812 173 MS (t)1829 173 MS (e)1840 173 MS
+( )1856 173 MS
+(:)1866 173 MS
+( )1875 173 MS
+(3)1885 173 MS (0)1904 173 MS (/)1923 173 MS (0)1934 173 MS (5)1952 173 MS (/)1971 173 MS (2)1982 173 MS (0)2000 173 MS (0)2019 173 MS (2)2038 173 MS
+( )2057 173 MS
+n
+5 5 232 89 B
+f
+n
+5 5 232 89 B
+f
+n
+584 5 238 89 B
+f
+n
+5 5 823 89 B
+f
+n
+938 5 829 89 B
+f
+n
+5 5 1768 89 B
+f
+n
+436 5 1774 89 B
+f
+n
+5 5 2211 89 B
+f
+n
+5 5 2211 89 B
+f
+n
+5 256 232 95 B
+f
+n
+2 256 823 95 B
+f
+n
+2 256 1768 95 B
+f
+n
+5 256 2211 95 B
+f
+[50 0 0 -50 0 0]/Times-Roman MF
+(D)322 400 MS (M)358 400 MS (2)402 400 MS (S)427 400 MS (/)455 400 MS (S)469 400 MS (F)497 400 MS (M)524 400 MS (E)568 400 MS (/)599 400 MS (L)613 400 MS (G)643 400 MS (L)680 400 MS (S)710 400 MS
+( )738 400 MS
+[50 0 0 -50 0 0]/Times-Bold MF
+gs
+n
+241 53 1102 367 CB
+(R)1102 413 MS (A)1138 413 MS (P)1174 413 MS (P)1204 413 MS (O)1234 413 MS (R)1273 413 MS (T)1310 413 MS
+gr
+gs
+n
+150 53 1343 367 CB
+( )1343 413 MS (D)1356 413 MS (M)1392 413 MS (2)1440 413 MS (S)1465 413 MS
+gr
+[50 0 0 -50 0 0]/Times-Roman MF
+gs
+n
+24 52 1493 368 CB
+( )1493 413 MS
+gr
+[38 0 0 -38 0 0]/Times-Roman MF
+(P)1785 400 MS (a)1806 400 MS (g)1823 400 MS (e)1841 400 MS ( )1858 400 MS
+[50 0 0 -50 0 0]/Times-Roman MF
+(1)1868 400 MS (9)1893 400 MS
+(/)1918 400 MS
+(3)1932 400 MS (0)1957 400 MS
+[38 0 0 -38 0 0]/Times-Roman MF
+( )1982 400 MS
+n
+5 2 232 352 B
+f
+n
+2 2 823 352 B
+f
+n
+941 2 826 352 B
+f
+n
+2 2 1768 352 B
+f
+n
+5 2 2211 352 B
+f
+n
+5 67 232 355 B
+f
+n
+590 1 232 423 B
+f
+n
+2 67 823 355 B
+f
+n
+1 1 823 423 B
+f
+n
+942 1 825 423 B
+f
+n
+2 67 1768 355 B
+f
+n
+1 1 1768 423 B
+f
+n
+440 1 1770 423 B
+f
+n
+5 67 2211 355 B
+f
+n
+5 1 2211 423 B
+f
+[50 0 0 -50 0 0]/Times-Roman MF
+( )235 470 MS
+[33 0 0 -33 0 0]/Times-Roman MF
+/IsChar{exch/CharStrings get exch known}bd/MapCh{3 -1 roll/Encoding get 3 1\r
+roll put}bd/MapDegree{dup 16#b0 exch/degree IsChar{/degree}{/ring}ifelse MapCh}\r
+bd/MapBB{dup 16#a6 exch/brokenbar IsChar{/brokenbar}{/bar}ifelse MapCh}bd\r
+/reencode{findfont begin currentdict dup length dict begin{1 index/FID ne{def}\r
+{pop pop}ifelse}forall/FontName exch def dup length 0 ne{/Encoding Encoding 256\r
+array copy def 0 exch{dup type/nametype eq{Encoding 2 index 2 index put pop 1\r
+add}{exch pop}ifelse}forall}if pop currentdict dup end end/FontName get exch\r
+definefont dup MapDegree MapBB}bd/LATENC[0/grave/acute/circumflex/tilde/macron\r
+/breve/dotaccent/dieresis/ring/cedilla/hungarumlaut/ogonek/caron/dotlessi/fi/fl\r
+/Lslash/lslash/Zcaron/zcaron/minus/.notdef/.notdef/.notdef/.notdef/.notdef\r
+/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/space/exclam/quotedbl\r
+/numbersign/dollar/percent/ampersand/quotesingle/parenleft/parenright/asterisk\r
+/plus/comma/hyphen/period/slash/zero/one/two/three/four/five/six/seven/eight\r
+/nine/colon/semicolon/less/equal/greater/question/at/A/B/C/D/E/F/G/H/I/J/K/L/M\r
+/N/O/P/Q/R/S/T/U/V/W/X/Y/Z/bracketleft/backslash/bracketright/asciicircum\r
+/underscore/grave/a/b/c/d/e/f/g/h/i/j/k/l/m/n/o/p/q/r/s/t/u/v/w/x/y/z/braceleft\r
+/bar/braceright/asciitilde/.notdef/.notdef/.notdef/quotesinglbase/florin\r
+/quotedblbase/ellipsis/dagger/daggerdbl/circumflex/perthousand/Scaron\r
+/guilsinglleft/OE/.notdef/.notdef/.notdef/.notdef/quoteleft/quoteright\r
+/quotedblleft/quotedblright/bullet/endash/emdash/tilde/trademark/scaron\r
+/guilsinglright/oe/.notdef/.notdef/Ydieresis/.notdef/exclamdown/cent/sterling\r
+/currency/yen/brokenbar/section/dieresis/copyright/ordfeminine/guillemotleft\r
+/logicalnot/hyphen/registered/macron/degree/plusminus/twosuperior/threesuperior\r
+/acute/mu/paragraph/periodcentered/cedilla/onesuperior/ordmasculine\r
+/guillemotright/onequarter/onehalf/threequarters/questiondown/Agrave/Aacute\r
+/Acircumflex/Atilde/Adieresis/Aring/AE/Ccedilla/Egrave/Eacute/Ecircumflex\r
+/Edieresis/Igrave/Iacute/Icircumflex/Idieresis/Eth/Ntilde/Ograve/Oacute\r
+/Ocircumflex/Otilde/Odieresis/multiply/Oslash/Ugrave/Uacute/Ucircumflex\r
+/Udieresis/Yacute/Thorn/germandbls/agrave/aacute/acircumflex/atilde/adieresis\r
+/aring/ae/ccedilla/egrave/eacute/ecircumflex/edieresis/igrave/iacute\r
+/icircumflex/idieresis/eth/ntilde/ograve/oacute/ocircumflex/otilde/odieresis\r
+/divide/oslash/ugrave/uacute/ucircumflex/udieresis/yacute/thorn/ydieresis]def\r
+LATENC /_Times-Roman /Times-Roman reencode
+[33 0 0 -33 0 0]/_Times-Roman MF
+(L)242 3256 MS (e)262 3256 MS (s)277 3256 MS ( )289 3256 MS (i)298 3256 MS (n)307 3256 MS (f)324 3256 MS (o)335 3256 MS (r)351 3256 MS (m)363 3256 MS (a)388 3256 MS (t)403 3256 MS (i)412 3256 MS (o)422 3256 MS (n)439 3256 MS (s)456 3256 MS
+( )468 3256 MS (c)477 3256 MS (o)492 3256 MS (n)508 3256 MS (t)524 3256 MS (e)534 3256 MS (n)549 3256 MS (u)565 3256 MS (e)582 3256 MS (s)597 3256 MS ( )610 3256 MS (d)618 3256 MS (a)634 3256 MS (n)650 3256 MS (s)667 3256 MS ( )679 3256 MS
+(c)688 3256 MS (e)703 3256 MS ( )717 3256 MS (d)726 3256 MS (o)742 3256 MS (c)759 3256 MS (u)773 3256 MS (m)791 3256 MS (e)817 3256 MS (n)831 3256 MS (t)847 3256 MS ( )857 3256 MS (s)866 3256 MS (o)878 3256 MS (n)895 3256 MS (t)911 3256 MS
+( )921 3256 MS (r)929 3256 MS (\351)941 3256 MS (s)956 3256 MS (e)968 3256 MS (r)982 3256 MS (v)994 3256 MS (\351)1011 3256 MS (e)1026 3256 MS (s)1041 3256 MS ( )1053 3256 MS (a)1061 3256 MS (u)1076 3256 MS (x)1093 3256 MS ( )1109 3256 MS (d)1118 3256 MS
+(e)1135 3256 MS (s)1150 3256 MS (t)1162 3256 MS (i)1171 3256 MS (n)1181 3256 MS (a)1197 3256 MS (t)1212 3256 MS (a)1221 3256 MS (i)1236 3256 MS (r)1245 3256 MS (e)1257 3256 MS (s)1272 3256 MS ( )1284 3256 MS (n)1293 3256 MS (o)1309 3256 MS (m)1326 3256 MS
+(m)1352 3256 MS (\351)1378 3256 MS (m)1393 3256 MS (e)1419 3256 MS (n)1433 3256 MS (t)1450 3256 MS ( )1459 3256 MS (d)1468 3256 MS (\351)1484 3256 MS (s)1499 3256 MS (i)1512 3256 MS (g)1521 3256 MS
+(n)1538 3256 MS (\351)1555 3256 MS (s)1570 3256 MS ( )1582 3256 MS (e)1591 3256 MS (t)1605 3256 MS ( )1615 3256 MS (n)1623 3256 MS (e)1640 3256 MS ( )1654 3256 MS (p)1663 3256 MS (e)1680 3256 MS (u)1694 3256 MS (v)1711 3256 MS (e)1728 3256 MS (n)1743 3256 MS
+(t)1759 3256 MS ( )1768 3256 MS (r)1776 3256 MS (e)1788 3256 MS (c)1803 3256 MS (e)1818 3256 MS (v)1832 3256 MS (o)1849 3256 MS (i)1865 3256 MS (r)1874 3256 MS ( )1886 3256 MS (a)1894 3256 MS (u)1909 3256 MS (c)1926 3256 MS (u)1940 3256 MS (n)1957 3256 MS
+(e)1974 3256 MS ( )1988 3256 MS (d)1997 3256 MS (i)2013 3256 MS (f)2023 3256 MS (f)2034 3256 MS (u)2044 3256 MS (s)2062 3256 MS (i)2074 3256 MS (o)2084 3256 MS (n)2101 3256 MS
+( )2117 3256 MS
+(s)928 3294 MS (a)940 3294 MS (n)955 3294 MS (s)972 3294 MS ( )985 3294 MS (l)993 3294 MS (\222)1002 3294 MS (a)1013 3294 MS (u)1028 3294 MS (t)1045 3294 MS (o)1054 3294 MS (r)1071 3294 MS (i)1082 3294 MS (s)1092 3294 MS (a)1104 3294 MS (t)1119 3294 MS
+(i)1128 3294 MS (o)1138 3294 MS (n)1154 3294 MS ( )1171 3294 MS (e)1180 3294 MS (x)1194 3294 MS (p)1211 3294 MS (r)1227 3294 MS (e)1239 3294 MS (s)1254 3294 MS (s)1267 3294 MS (e)1280 3294 MS ( )1294 3294 MS (d)1303 3294 MS (u)1319 3294 MS ( )1336 3294 MS
+(D)1344 3294 MS (M)1368 3294 MS (2)1397 3294 MS (S)1414 3294 MS
+[50 0 0 -50 0 0]/Times-Roman MF
+( )1432 3294 MS
+[54 0 0 -54 0 0]/Helvetica-Bold MF
+(9)310 580 MS (.)340 580 MS (1)355 580 MS (.)385 580 MS (2)400 580 MS
+( )430 580 MS
+LATENC /_Helvetica-Bold /Helvetica-Bold reencode
+[54 0 0 -54 0 0]/_Helvetica-Bold MF
+(D)460 580 MS (\351)499 580 MS (f)529 580 MS (i)547 580 MS (n)562 580 MS (i)595 580 MS (t)610 580 MS (i)628 580 MS (o)643 580 MS (n)676 580 MS ( )709 580 MS (d)724 580 MS (e)757 580 MS ( )787 580 MS (l)802 580 MS (\222)817 580 MS
+(i)832 580 MS (m)848 580 MS (p)895 580 MS (l)928 580 MS (\351)944 580 MS (m)975 580 MS (e)1022 580 MS (n)1052 580 MS (t)1085 580 MS (a)1103 580 MS (t)1133 580 MS (i)1151 580 MS (o)1166 580 MS (n)1199 580 MS ( )1232 580 MS
+( )1247 580 MS
+[50 0 0 -50 0 0]/Times-Roman MF
+( )235 652 MS
+LATENC /_Times-Roman /Times-Roman reencode
+[50 0 0 -50 0 0]/_Times-Roman MF
+(L)348 710 MS (\222)378 710 MS (i)395 710 MS (m)409 710 MS (p)447 710 MS (l)473 710 MS (\351)486 710 MS (m)509 710 MS (e)547 710 MS (n)570 710 MS (t)594 710 MS (a)609 710 MS (t)631 710 MS (i)646 710 MS (o)658 710 MS (n)684 710 MS
+( )708 710 MS (d)726 710 MS (e)752 710 MS ( )774 710 MS (l)793 710 MS (a)806 710 MS ( )829 710 MS (d)847 710 MS (o)872 710 MS (n)898 710 MS (n)923 710 MS (\351)947 710 MS (e)969 710 MS ( )991 710 MS (v)1010 710 MS (e)1035 710 MS
+(c)1057 710 MS (t)1079 710 MS (e)1094 710 MS (u)1116 710 MS (r)1141 710 MS ( )1158 710 MS (p)1176 710 MS (a)1201 710 MS
+(r)1223 710 MS (a)1240 710 MS (l)1263 710 MS (l)1276 710 MS (\350)1289 710 MS (l)1312 710 MS (e)1325 710 MS ( )1348 710 MS (d)1367 710 MS (o)1392 710 MS (i)1418 710 MS (t)1430 710 MS ( )1445 710 MS (d)1463 710 MS (o)1488 710 MS (n)1514 710 MS
+(c)1538 710 MS ( )1560 710 MS (d)1578 710 MS (\351)1603 710 MS (f)1626 710 MS (i)1643 710 MS (n)1656 710 MS (i)1681 710 MS (r)1694 710 MS ( )1712 710 MS (u)1730 710 MS (n)1756 710 MS (e)1780 710 MS ( )1802 710 MS (f)1821 710 MS (o)1836 710 MS
+(n)1863 710 MS (c)1887 710 MS (t)1909 710 MS (i)1925 710 MS (o)1937 710 MS (n)1963 710 MS ( )1987 710 MS (S)2005 710 MS (i)2034 710 MS (z)2047 710 MS (e)2069 710 MS (\()2091 710 MS (\))2108 710 MS ( )2125 710 MS
+(q)235 767 MS (u)260 767 MS (i)286 767 MS ( )298 767 MS (r)317 767 MS (e)334 767 MS (n)356 767 MS (v)381 767 MS (o)405 767 MS (i)432 767 MS (e)444 767 MS ( )466 767 MS (l)486 767 MS (a)499 767 MS ( )521 767 MS (t)540 767 MS
+(a)555 767 MS (i)577 767 MS (l)590 767 MS (l)604 767 MS (e)617 767 MS ( )639 767 MS (t)658 767 MS (o)673 767 MS (t)698 767 MS (a)713 767 MS (l)735 767 MS (e)747 767 MS ( )769 767 MS (d)788 767 MS (u)813 767 MS ( )838 767 MS
+(v)857 767 MS (e)881 767 MS (c)903 767 MS (t)925 767 MS (e)940 767 MS (u)962 767 MS (r)987 767 MS ( )1004 767 MS (d)1023 767 MS (i)1048 767 MS (s)1061 767 MS (t)1080 767 MS (r)1095 767 MS (i)1112 767 MS (b)1125 767 MS (u)1149 767 MS
+(\351)1174 767 MS (,)1196 767 MS ( )1209 767 MS (u)1228 767 MS (n)1253 767 MS (e)1277 767 MS ( )1299 767 MS (f)1319 767 MS (o)1334 767 MS (n)1360 767 MS (c)1385 767 MS (t)1407 767 MS (i)1422 767 MS (o)1434 767 MS (n)1460 767 MS ( )1484 767 MS
+(L)1503 767 MS (V)1533 767 MS (e)1570 767 MS (c)1592 767 MS (\()1614 767 MS (s)1631 767 MS (t)1650 767 MS (a)1665 767 MS (r)1687 767 MS (t)1704 767 MS (,)1718 767 MS (e)1731 767 MS (n)1753 767 MS (d)1777 767 MS (\))1802 767 MS ( )1819 767 MS
+(q)1838 767 MS (u)1863 767 MS (i)1888 767 MS ( )1900 767 MS (r)1919 767 MS (e)1936 767 MS (n)1959 767 MS (v)1984 767 MS (o)2008 767 MS (i)2034 767 MS (e)2047 767 MS ( )2069 767 MS (l)2089 767 MS (a)2102 767 MS ( )2125 767 MS
+(d)235 825 MS (i)261 825 MS (s)273 825 MS (t)292 825 MS (r)307 825 MS (i)325 825 MS (b)338 825 MS (u)362 825 MS (t)387 825 MS (i)403 825 MS (o)415 825 MS (n)441 825 MS ( )465 825 MS (l)486 825 MS (o)498 825 MS (c)524 825 MS
+(a)546 825 MS (l)569 825 MS (e)582 825 MS ( )604 825 MS (\340)624 825 MS ( )646 825 MS (u)666 825 MS (n)692 825 MS ( )717 825 MS (p)737 825 MS (r)762 825 MS (o)779 825 MS (c)805 825 MS (e)827 825 MS (s)849 825 MS (s)868 825 MS
+(e)887 825 MS (u)909 825 MS (r)934 825 MS ( )951 825 MS (d)971 825 MS (u)996 825 MS ( )1021 825 MS (v)1041 825 MS (e)1066 825 MS (c)1088 825 MS (t)1110 825 MS (e)1125 825 MS (u)1147 825 MS (r)1172 825 MS ( )1189 825 MS (p)1209 825 MS
+(a)1234 825 MS (r)1256 825 MS (a)1273 825 MS (l)1296 825 MS (l)1309 825 MS (\350)1322 825 MS (l)1345 825 MS (e)1358 825 MS (,)1380 825 MS ( )1393 825 MS (u)1413 825 MS (n)1438 825 MS (e)1463 825 MS ( )1485 825 MS (f)1506 825 MS (o)1521 825 MS
+(n)1547 825 MS (c)1572 825 MS (t)1594 825 MS (i)1609 825 MS (o)1621 825 MS (n)1647 825 MS ( )1672 825 MS (v)1692 825 MS (e)1717 825 MS (c)1739 825 MS (\()1761 825 MS (\))1778 825 MS ( )1795 825 MS (q)1815 825 MS (u)1840 825 MS (i)1866 825 MS
+( )1878 825 MS (r)1898 825 MS (e)1915 825 MS (n)1938 825 MS (v)1963 825 MS (o)1987 825 MS (i)2014 825 MS (e)2026 825 MS ( )2048 825 MS (l)2069 825 MS (e)2082 825 MS (s)2105 825 MS ( )2125 825 MS
+(d)235 882 MS (o)260 882 MS (n)286 882 MS (n)310 882 MS (\351)334 882 MS (e)356 882 MS (s)379 882 MS ( )398 882 MS (l)415 882 MS (o)427 882 MS (c)453 882 MS (a)475 882 MS (l)498 882 MS (e)511 882 MS (s)533 882 MS ( )552 882 MS
+(d)568 882 MS (u)593 882 MS ( )618 882 MS (v)634 882 MS (e)659 882 MS (c)681 882 MS
+(t)703 882 MS (e)718 882 MS (u)740 882 MS (r)765 882 MS ( )782 882 MS (\340)798 882 MS ( )820 882 MS (u)836 882 MS (n)861 882 MS ( )885 882 MS (p)901 882 MS (r)926 882 MS (o)942 882 MS (c)968 882 MS (e)990 882 MS (s)1012 882 MS
+(s)1031 882 MS (e)1050 882 MS (u)1072 882 MS (r)1097 882 MS (.)1114 882 MS ( )1127 882 MS (D)1143 882 MS (e)1179 882 MS ( )1201 882 MS (p)1217 882 MS (l)1242 882 MS (u)1255 882 MS (s)1280 882 MS (,)1299 882 MS ( )1312 882 MS (p)1328 882 MS
+(o)1353 882 MS (u)1379 882 MS (r)1403 882 MS ( )1420 882 MS (p)1436 882 MS (e)1461 882 MS (r)1483 882 MS (m)1500 882 MS (e)1537 882 MS (t)1559 882 MS (t)1573 882 MS (r)1588 882 MS (e)1605 882 MS ( )1627 882 MS (u)1643 882 MS (n)1668 882 MS
+( )1692 882 MS (t)1707 882 MS (r)1722 882 MS (a)1739 882 MS (n)1761 882 MS (s)1785 882 MS (f)1805 882 MS (e)1821 882 MS (r)1843 882 MS (t)1860 882 MS ( )1875 882 MS (o)1890 882 MS (p)1916 882 MS (t)1940 882 MS (i)1955 882 MS (m)1968 882 MS
+(a)2005 882 MS (l)2028 882 MS ( )2041 882 MS (d)2057 882 MS (e)2082 882 MS (s)2105 882 MS ( )2125 882 MS
+(d)235 940 MS (o)260 940 MS (n)286 940 MS (n)310 940 MS (\351)334 940 MS (e)356 940 MS (s)379 940 MS ( )398 940 MS (p)412 940 MS (a)437 940 MS (r)459 940 MS (a)476 940 MS (l)499 940 MS (l)513 940 MS (\350)526 940 MS (l)549 940 MS
+(e)562 940 MS (s)585 940 MS ( )604 940 MS (d)618 940 MS (\222)644 940 MS (u)660 940 MS (n)686 940 MS ( )710 940 MS (c)725 940 MS (o)747 940 MS (m)773 940 MS (p)810 940 MS (o)835 940 MS (s)861 940 MS (a)880 940 MS (n)903 940 MS
+(t)927 940 MS ( )942 940 MS (\340)956 940 MS ( )978 940 MS (u)992 940 MS (n)1018 940 MS ( )1042 940 MS (a)1057 940 MS (u)1079 940 MS (t)1104 940 MS (r)1119 940 MS (e)1136 940 MS ( )1158 940 MS (l)1173 940 MS (o)1185 940 MS (r)1211 940 MS
+(s)1228 940 MS (q)1247 940 MS (u)1272 940 MS (e)1297 940 MS ( )1319 940 MS (c)1333 940 MS (e)1355 940 MS (u)1377 940 MS (x)1403 940 MS
+(-)1427 940 MS
+(c)1444 940 MS (i)1467 940 MS ( )1480 940 MS (s)1495 940 MS (e)1514 940 MS ( )1536 940 MS (t)1550 940 MS (r)1565 940 MS (o)1582 940 MS (u)1608 940 MS (v)1633 940 MS (e)1657 940 MS (n)1679 940 MS (t)1703 940 MS ( )1718 940 MS (d)1732 940 MS
+(a)1757 940 MS (n)1779 940 MS (s)1804 940 MS ( )1823 940 MS (d)1837 940 MS (e)1863 940 MS (s)1885 940 MS ( )1904 940 MS (c)1919 940 MS (o)1941 940 MS (n)1967 940 MS (t)1991 940 MS (a)2006 940 MS (i)2029 940 MS (n)2042 940 MS (e)2066 940 MS
+(r)2088 940 MS (s)2105 940 MS ( )2125 940 MS
+(d)235 997 MS (i)261 997 MS (f)274 997 MS (f)290 997 MS (\351)306 997 MS (r)328 997 MS (e)345 997 MS (n)368 997 MS (t)392 997 MS (s)407 997 MS ( )426 997 MS (e)444 997 MS (t)466 997 MS ( )481 997 MS (s)499 997 MS (u)518 997 MS
+(i)544 997 MS (v)557 997 MS (a)581 997 MS (n)604 997 MS (t)628 997 MS ( )643 997 MS (u)661 997 MS (n)686 997 MS ( )710 997 MS (n)728 997 MS (o)752 997 MS (m)779 997 MS (b)817 997 MS (r)841 997 MS (e)858 997 MS ( )880 997 MS
+(d)898 997 MS (e)923 997 MS ( )945 997 MS (p)963 997 MS (r)988 997 MS (o)1005 997 MS (c)1031 997 MS (e)1053 997 MS (s)1075 997 MS (s)1094 997 MS (u)1113 997 MS (s)1138 997 MS ( )1157 997 MS (d)1175 997 MS (i)1201 997 MS (f)1215 997 MS
+(f)1231 997 MS (\351)1248 997 MS (r)1270 997 MS (e)1287 997 MS (n)1309 997 MS (t)1333 997 MS (s)1348 997 MS (,)1367 997 MS ( )1380 997 MS (i)1399 997 MS (l)1412 997 MS ( )1424 997 MS (e)1443 997 MS (s)1465 997 MS (t)1484 997 MS ( )1499 997 MS
+(n)1517 997 MS (\351)1541 997 MS (c)1563 997 MS (e)1585 997 MS (s)1608 997 MS (s)1627 997 MS (a)1646 997 MS (i)1669 997 MS (r)1682 997 MS (e)1699 997 MS ( )1721 997 MS (d)1739 997 MS (\222)1765 997 MS (i)1782 997 MS (m)1795 997 MS (p)1833 997 MS
+(l)1859 997 MS (\351)1872 997 MS (m)1895 997 MS (e)1933 997 MS (n)1956 997 MS (t)1980 997 MS (e)1995 997 MS (r)2017 997 MS ( )2034 997 MS (u)2052 997 MS (n)2077 997 MS (e)2102 997 MS
+( )2125 997 MS
+(f)235 1055 MS (o)250 1055 MS (n)277 1055 MS (c)301 1055 MS (t)323 1055 MS (i)339 1055 MS (o)351 1055 MS (n)377 1055 MS ( )401 1055 MS (n)416 1055 MS (v)441 1055 MS (e)465 1055 MS (c)487 1055 MS (\()509 1055 MS (s)526 1055 MS (t)545 1055 MS
+(a)560 1055 MS (r)582 1055 MS (t)599 1055 MS (,)613 1055 MS (e)626 1055 MS (n)648 1055 MS (d)672 1055 MS (\))697 1055 MS ( )714 1055 MS (q)728 1055 MS (u)753 1055 MS (i)779 1055 MS ( )791 1055 MS (r)805 1055 MS (e)822 1055 MS (n)845 1055 MS
+(v)870 1055 MS (o)894 1055 MS (i)921 1055 MS (e)933 1055 MS ( )955 1055 MS (u)969 1055 MS (n)995 1055 MS (e)1020 1055 MS ( )1042 1055 MS (p)1056 1055 MS (a)1081 1055 MS (r)1103 1055 MS (t)1120 1055 MS (i)1135 1055 MS (e)1147 1055 MS ( )1170 1055 MS
+(s)1184 1055 MS (e)1203 1055 MS (u)1225 1055 MS (l)1251 1055 MS (e)1264 1055 MS (m)1287 1055 MS (e)1325 1055 MS (n)1348 1055 MS (t)1372 1055 MS ( )1387 1055 MS (d)1401 1055 MS (e)1426 1055 MS (s)1448 1055 MS ( )1467 1055 MS (d)1481 1055 MS (o)1506 1055 MS
+(n)1532 1055 MS (n)1557 1055 MS (\351)1581 1055 MS (e)1603 1055 MS (s)1626 1055 MS ( )1645 1055 MS (l)1660 1055 MS (o)1672 1055 MS (c)1698 1055 MS (a)1720 1055 MS (l)1743 1055 MS (e)1756 1055 MS (s)1779 1055 MS ( )1798 1055 MS (d)1812 1055 MS (u)1837 1055 MS
+( )1862 1055 MS (v)1877 1055 MS (e)1901 1055 MS (c)1923 1055 MS (t)1945 1055 MS (e)1960 1055 MS (u)1982 1055 MS (r)2007 1055 MS ( )2024 1055 MS (\340)2038 1055 MS ( )2060 1055 MS (u)2074 1055 MS (n)2100 1055 MS ( )2125 1055 MS
+(p)235 1112 MS (r)260 1112 MS (o)277 1112 MS (c)303 1112 MS (e)325 1112 MS (s)347 1112 MS (s)366 1112 MS (e)385 1112 MS (u)407 1112 MS (r)432 1112 MS (.)449 1112 MS
+( )462 1112 MS
+( )348 1170 MS
+(L)348 1227 MS (\222)378 1227 MS (i)395 1227 MS (m)409 1227 MS (p)447 1227 MS (l)473 1227 MS (\351)486 1227 MS (m)509 1227 MS (e)547 1227 MS (n)570 1227 MS (t)594 1227 MS (a)609 1227 MS (t)631 1227 MS (i)646 1227 MS (o)658 1227 MS (n)684 1227 MS
+( )708 1227 MS (d)724 1227 MS (u)749 1227 MS ( )774 1227 MS (c)790 1227 MS (o)812 1227 MS (m)839 1227 MS (p)876 1227 MS (o)901 1227 MS (s)927 1227 MS (a)946 1227 MS (n)968 1227 MS (t)992 1227 MS ( )1007 1227 MS (v)1023 1227 MS (e)1047 1227 MS
+(c)1069 1227 MS (t)1091 1227 MS (e)1106 1227 MS (u)1128 1227 MS (r)1153 1227 MS ( )1170 1227 MS (N)1186 1227 MS (u)1222 1227 MS (m)1248 1227 MS (e)1285 1227 MS (r)1307 1227 MS (i)1325 1227 MS (c)1338 1227 MS (a)1361 1227 MS (l)1384 1227 MS ( )1396 1227 MS
+(P)1412 1227 MS (l)1441 1227 MS (a)1454 1227 MS (t)1476 1227 MS (o)1491 1227 MS (n)1517 1227 MS ( )1541 1227 MS (e)1557 1227 MS (s)1579 1227 MS (t)1598 1227 MS ( )1613 1227 MS (r)1628 1227 MS (e)1645 1227 MS (p)1667 1227 MS (r)1692 1227 MS (\351)1709 1227 MS
+(s)1731 1227 MS (e)1750 1227 MS (n)1772 1227 MS (t)1796 1227 MS (a)1811 1227 MS (t)1833 1227 MS (i)1848 1227 MS (v)1861 1227 MS (e)1885 1227 MS ( )1907 1227 MS (d)1923 1227 MS (\222)1948 1227 MS (u)1964 1227 MS (n)1990 1227 MS ( )2014 1227 MS (c)2030 1227 MS
+(o)2052 1227 MS (d)2078 1227 MS (e)2103 1227 MS ( )2125 1227 MS
+(d)235 1285 MS (e)260 1285 MS ( )282 1285 MS (c)295 1285 MS (a)317 1285 MS (l)340 1285 MS (c)353 1285 MS (u)375 1285 MS (l)401 1285 MS ( )413 1285 MS (q)426 1285 MS (u)451 1285 MS (i)477 1285 MS ( )490 1285 MS (g)503 1285 MS (\351)528 1285 MS
+(n)551 1285 MS (\350)575 1285 MS (r)597 1285 MS (e)614 1285 MS ( )636 1285 MS (u)649 1285 MS (n)675 1285 MS ( )699 1285 MS (o)712 1285 MS (b)738 1285 MS (j)763 1285 MS (e)776 1285 MS (t)798 1285 MS ( )813 1285 MS (d)826 1285 MS (e)851 1285 MS
+( )873 1285 MS (t)886 1285 MS (y)901 1285 MS (p)924 1285 MS (e)949 1285 MS ( )971 1285 MS (v)985 1285 MS (e)1009 1285 MS (c)1031 1285 MS (t)1053 1285 MS (e)1068 1285 MS (u)1090 1285 MS (r)1115 1285 MS ( )1132 1285 MS (p)1145 1285 MS (a)1170 1285 MS
+(r)1192 1285 MS (a)1209 1285 MS (l)1232 1285 MS (l)1245 1285 MS (\350)1258 1285 MS (l)1281 1285 MS (e)1294 1285 MS (,)1316 1285 MS ( )1329 1285 MS (o)1342 1285 MS (u)1368 1285 MS ( )1393 1285 MS (q)1406 1285 MS (u)1431 1285 MS (i)1456 1285 MS ( )1468 1285 MS
+(p)1481 1285 MS (r)1506 1285 MS (e)1523 1285 MS (n)1546 1285 MS (d)1570 1285 MS ( )1595 1285 MS (e)1608 1285 MS (n)1631 1285 MS ( )1655 1285 MS (e)1668 1285 MS (n)1691 1285 MS (t)1715 1285 MS (r)1730 1285 MS (\351)1747 1285 MS (e)1769 1285 MS ( )1791 1285 MS
+(d)1804 1285 MS (\222)1829 1285 MS (u)1845 1285 MS (n)1871 1285 MS ( )1895 1285 MS (a)1908 1285 MS (l)1931 1285 MS (g)1943 1285 MS (o)1968 1285 MS (r)1994 1285 MS (i)2012 1285 MS (t)2024 1285 MS (h)2039 1285 MS (m)2064 1285 MS (e)2102 1285 MS ( )2125 1285 MS
+(u)235 1342 MS (n)260 1342 MS ( )284 1342 MS (v)308 1342 MS (e)333 1342 MS (c)355 1342 MS (t)377 1342 MS (e)392 1342 MS (u)414 1342 MS (r)439 1342 MS ( )456 1342 MS (p)479 1342 MS (a)504 1342 MS (r)526 1342 MS (a)543 1342 MS (l)566 1342 MS
+(l)579 1342 MS (\350)592 1342 MS (l)615 1342 MS (e)628 1342 MS (.)650 1342 MS ( )663 1342 MS (I)686 1342 MS (l)704 1342 MS ( )717 1342 MS (d)740 1342 MS (o)765 1342 MS (i)792 1342 MS (t)804 1342 MS ( )819 1342 MS (d)842 1342 MS (o)867 1342 MS
+(n)893 1342 MS (c)917 1342 MS ( )939 1342 MS (d)962 1342 MS (\351)987 1342 MS (f)1010 1342 MS (i)1026 1342 MS (n)1039 1342 MS (i)1065 1342 MS (r)1078 1342 MS ( )1095 1342 MS (u)1118 1342 MS (n)1144 1342 MS (e)1169 1342 MS ( )1191 1342 MS (f)1215 1342 MS
+(o)1230 1342 MS (n)1257 1342 MS (c)1281 1342 MS (t)1303 1342 MS (i)1319 1342 MS (o)1331 1342 MS (n)1357 1342 MS ( )1381 1342 MS (d)1404 1342 MS (e)1430 1342 MS ( )1452 1342 MS (l)1476 1342 MS (e)1489 1342 MS (c)1511 1342 MS (t)1533 1342 MS (u)1548 1342 MS
+(r)1573 1342 MS (e)1590 1342 MS ( )1612 1342 MS (d)1635 1342 MS (\222)1660 1342 MS (u)1676 1342 MS (n)1702 1342 MS ( )1727 1342 MS (v)1751 1342 MS (e)1775 1342 MS (c)1797 1342 MS (t)1819 1342 MS (e)1834 1342 MS (u)1856 1342 MS (r)1881 1342 MS ( )1898 1342 MS
+(d)1921 1342 MS (e)1946 1342 MS (p)1968 1342 MS (u)1993 1342 MS (i)2019 1342 MS (s)2032 1342 MS ( )2051 1342 MS (u)2074 1342 MS (n)2100 1342 MS ( )2125 1342 MS
+(f)235 1400 MS (i)252 1400 MS (c)265 1400 MS (h)288 1400 MS (i)313 1400 MS (e)326 1400 MS (r)348 1400 MS
+( )365 1400 MS
+(:)378 1400 MS ( )392 1400 MS (R)406 1400 MS (e)439 1400 MS (a)461 1400 MS (d)483 1400 MS (D)508 1400 MS (a)544 1400 MS (t)566 1400 MS (a)581 1400 MS (F)603 1400 MS (r)630 1400 MS (o)647 1400 MS (m)674 1400 MS (F)711 1400 MS (i)739 1400 MS
+(l)753 1400 MS (e)766 1400 MS (\()788 1400 MS (\))805 1400 MS (,)822 1400 MS ( )835 1400 MS (d)849 1400 MS (\222)874 1400 MS (\351)890 1400 MS (c)913 1400 MS (r)935 1400 MS (i)953 1400 MS (t)965 1400 MS (u)980 1400 MS (r)1005 1400 MS (e)1022 1400 MS
+( )1044 1400 MS (d)1058 1400 MS (\222)1083 1400 MS (u)1099 1400 MS (n)1125 1400 MS ( )1149 1400 MS (v)1164 1400 MS (e)1189 1400 MS (c)1211 1400 MS (t)1233 1400 MS (e)1248 1400 MS (u)1270 1400 MS (r)1295 1400 MS ( )1312 1400 MS (d)1326 1400 MS (a)1351 1400 MS
+(n)1373 1400 MS (s)1398 1400 MS ( )1417 1400 MS (u)1431 1400 MS (n)1457 1400 MS ( )1482 1400 MS (f)1497 1400 MS (i)1513 1400 MS (c)1526 1400 MS (h)1549 1400 MS (i)1574 1400 MS (e)1587 1400 MS (r)1609 1400 MS
+( )1626 1400 MS
+(:)1639 1400 MS ( )1653 1400 MS (S)1667 1400 MS (a)1695 1400 MS (v)1718 1400 MS (e)1742 1400 MS (D)1764 1400 MS (a)1800 1400 MS (t)1822 1400 MS (a)1837 1400 MS (T)1859 1400 MS (o)1890 1400 MS (F)1916 1400 MS (i)1944 1400 MS (l)1957 1400 MS (e)1970 1400 MS
+(\()1992 1400 MS (\))2009 1400 MS (,)2026 1400 MS ( )2039 1400 MS (u)2053 1400 MS (n)2078 1400 MS (e)2102 1400 MS ( )2125 1400 MS
+(f)235 1457 MS (o)250 1457 MS (n)277 1457 MS (c)301 1457 MS (t)323 1457 MS (i)339 1457 MS (o)351 1457 MS (n)377 1457 MS ( )401 1457 MS (q)414 1457 MS (u)439 1457 MS (i)465 1457 MS ( )478 1457 MS (r)491 1457 MS (e)508 1457 MS (n)530 1457 MS
+(v)555 1457 MS (o)579 1457 MS (i)606 1457 MS (e)619 1457 MS ( )641 1457 MS (u)654 1457 MS (n)680 1457 MS (e)704 1457 MS ( )726 1457 MS (r)739 1457 MS (\351)756 1457 MS (f)779 1457 MS (\351)795 1457 MS (r)817 1457 MS (e)834 1457 MS (n)856 1457 MS
+(c)881 1457 MS (e)903 1457 MS ( )925 1457 MS (C)938 1457 MS (O)971 1457 MS (R)1008 1457 MS (B)1041 1457 MS (A)1075 1457 MS
+( )1110 1457 MS (s)1124 1457 MS (u)1143 1457 MS (r)1168 1457 MS ( )1185 1457 MS (u)1198 1457 MS (n)1223 1457 MS ( )1248 1457 MS (o)1261 1457 MS (b)1287 1457 MS (j)1312 1457 MS (e)1324 1457 MS (t)1346 1457 MS ( )1361 1457 MS (v)1374 1457 MS (e)1398 1457 MS
+(c)1420 1457 MS (t)1442 1457 MS (e)1457 1457 MS (u)1479 1457 MS (r)1504 1457 MS ( )1521 1457 MS (p)1534 1457 MS (a)1559 1457 MS (r)1581 1457 MS (a)1598 1457 MS (l)1621 1457 MS (l)1634 1457 MS (\350)1647 1457 MS (l)1670 1457 MS (e)1683 1457 MS ( )1705 1457 MS
+(d)1718 1457 MS (v)1744 1457 MS (e)1769 1457 MS (c)1791 1457 MS (\()1813 1457 MS (\))1830 1457 MS (,)1847 1457 MS ( )1860 1457 MS (u)1873 1457 MS (n)1898 1457 MS (e)1922 1457 MS ( )1944 1457 MS (f)1958 1457 MS (o)1973 1457 MS (n)2000 1457 MS (c)2024 1457 MS
+(t)2046 1457 MS (i)2061 1457 MS (o)2073 1457 MS (n)2100 1457 MS ( )2125 1457 MS
+(q)235 1515 MS (u)260 1515 MS (i)286 1515 MS ( )298 1515 MS (p)313 1515 MS (r)338 1515 MS (e)355 1515 MS (n)377 1515 MS (d)401 1515 MS ( )426 1515 MS (e)441 1515 MS (n)464 1515 MS ( )488 1515 MS (e)503 1515 MS (n)526 1515 MS (t)550 1515 MS
+(r)565 1515 MS (\351)582 1515 MS (e)604 1515 MS ( )626 1515 MS (u)641 1515 MS (n)666 1515 MS (e)690 1515 MS ( )712 1515 MS (r)727 1515 MS (\351)744 1515 MS (f)767 1515 MS (\351)782 1515 MS (r)804 1515 MS (e)821 1515 MS (n)844 1515 MS (c)868 1515 MS
+(e)891 1515 MS ( )913 1515 MS (C)928 1515 MS (O)961 1515 MS (R)997 1515 MS (B)1031 1515 MS (A)1065 1515 MS ( )1100 1515 MS (s)1115 1515 MS (u)1134 1515 MS (r)1159 1515 MS ( )1176 1515 MS (u)1191 1515 MS (n)1216 1515 MS ( )1240 1515 MS (o)1256 1515 MS
+(b)1282 1515 MS (j)1307 1515 MS (e)1319 1515 MS (t)1341 1515 MS ( )1356 1515 MS (v)1371 1515 MS (e)1395 1515 MS (c)1417 1515 MS (t)1439 1515 MS (e)1454 1515 MS (u)1476 1515 MS (r)1501 1515 MS ( )1518 1515 MS (p)1533 1515 MS (a)1558 1515 MS (r)1580 1515 MS
+(a)1597 1515 MS (l)1619 1515 MS (l)1632 1515 MS (\350)1645 1515 MS (l)1668 1515 MS (e)1681 1515 MS ( )1703 1515 MS (d)1718 1515 MS (v)1744 1515 MS (e)1768 1515 MS (c)1791 1515 MS (\()1813 1515 MS (v)1830 1515 MS (e)1854 1515 MS (c)1877 1515 MS (\))1899 1515 MS
+(,)1916 1515 MS ( )1929 1515 MS (a)1944 1515 MS (i)1967 1515 MS (n)1980 1515 MS (s)2004 1515 MS (i)2024 1515 MS ( )2037 1515 MS (q)2052 1515 MS (u)2077 1515 MS (e)2102 1515 MS ( )2125 1515 MS
+(l)235 1572 MS (e)248 1572 MS (u)270 1572 MS (r)295 1572 MS ( )312 1572 MS (\351)325 1572 MS (q)347 1572 MS (u)372 1572 MS (i)398 1572 MS (v)411 1572 MS (a)435 1572 MS (l)458 1572 MS (e)471 1572 MS (n)494 1572 MS (t)518 1572 MS ( )533 1572 MS
+(e)546 1572 MS (n)568 1572 MS ( )592 1572 MS (a)605 1572 MS (s)627 1572 MS (y)647 1572 MS (n)671 1572 MS (c)696 1572 MS (h)719 1572 MS (r)743 1572 MS (o)760 1572 MS (n)786 1572 MS (e)810 1572 MS
+( )832 1572 MS
+(:)845 1572 MS ( )859 1572 MS (g)872 1572 MS (e)897 1572 MS (t)919 1572 MS (_)934 1572 MS (d)959 1572 MS (v)984 1572 MS (e)1008 1572 MS (c)1030 1572 MS (\()1052 1572 MS (\))1069 1572 MS ( )1086 1572 MS (e)1099 1572 MS (t)1120 1572 MS ( )1135 1572 MS
+(p)1148 1572 MS (u)1173 1572 MS (t)1197 1572 MS (_)1212 1572 MS (d)1236 1572 MS (v)1261 1572 MS (e)1285 1572 MS (c)1307 1572 MS (\()1329 1572 MS (\))1346 1572 MS (.)1363 1572 MS
+( )1376 1572 MS
+( )348 1630 MS
+[42 0 0 -42 0 0]/Courier MF
+(#)235 1677 MS (i)260 1677 MS (f)285 1677 MS (n)310 1677 MS (d)335 1677 MS (e)360 1677 MS (f)385 1677 MS ( )410 1677 MS (_)435 1677 MS (N)460 1677 MS (P)485 1677 MS (V)510 1677 MS (E)535 1677 MS (C)560 1677 MS (C)585 1677 MS (O)610 1677 MS
+(M)635 1677 MS (P)660 1677 MS (O)685 1677 MS (N)710 1677 MS (E)735 1677 MS (N)760 1677 MS (T)785 1677 MS (_)810 1677 MS
+( )835 1677 MS
+(#)235 1724 MS (d)260 1724 MS (e)285 1724 MS (f)310 1724 MS (i)335 1724 MS (n)360 1724 MS (e)385 1724 MS ( )410 1724 MS (_)435 1724 MS (N)460 1724 MS (P)485 1724 MS (V)510 1724 MS (E)535 1724 MS (C)560 1724 MS (C)585 1724 MS (O)610 1724 MS
+(M)635 1724 MS (P)660 1724 MS (O)685 1724 MS (N)710 1724 MS (E)735 1724 MS (N)760 1724 MS (T)785 1724 MS (_)810 1724 MS
+( )835 1724 MS
+( )235 1772 MS
+(#)235 1819 MS
+(i)260 1819 MS (n)285 1819 MS (c)310 1819 MS (l)335 1819 MS (u)360 1819 MS (d)385 1819 MS (e)410 1819 MS ( )435 1819 MS (")460 1819 MS (S)485 1819 MS (A)510 1819 MS (L)535 1819 MS (O)560 1819 MS (M)585 1819 MS (E)610 1819 MS (c)635 1819 MS
+(o)660 1819 MS (n)685 1819 MS (f)710 1819 MS (i)735 1819 MS (g)760 1819 MS (.)785 1819 MS (h)810 1819 MS (")835 1819 MS
+( )860 1819 MS
+(#)235 1866 MS (i)260 1866 MS (n)285 1866 MS (c)310 1866 MS (l)335 1866 MS (u)360 1866 MS (d)385 1866 MS (e)410 1866 MS ( )435 1866 MS (C)460 1866 MS (O)485 1866 MS (R)510 1866 MS (B)535 1866 MS (A)560 1866 MS (_)585 1866 MS (S)610 1866 MS
+(E)635 1866 MS (R)660 1866 MS (V)685 1866 MS (E)710 1866 MS (R)735 1866 MS (_)760 1866 MS (H)785 1866 MS (E)810 1866 MS (A)835 1866 MS (D)860 1866 MS (E)885 1866 MS (R)910 1866 MS (\()935 1866 MS (N)960 1866 MS (P)985 1866 MS (V)1010 1866 MS
+(e)1035 1866 MS (c)1060 1866 MS (C)1085 1866 MS (o)1110 1866 MS (m)1135 1866 MS (p)1160 1866 MS (o)1185 1866 MS (n)1210 1866 MS (e)1235 1866 MS (n)1260 1866 MS (t)1285 1866 MS (\))1310 1866 MS
+( )1335 1866 MS
+(#)235 1913 MS (i)260 1913 MS (n)285 1913 MS (c)310 1913 MS (l)335 1913 MS (u)360 1913 MS (d)385 1913 MS (e)410 1913 MS ( )435 1913 MS (")460 1913 MS (S)485 1913 MS (A)510 1913 MS (L)535 1913 MS (O)560 1913 MS (M)585 1913 MS (E)610 1913 MS
+(_)635 1913 MS (C)660 1913 MS (o)685 1913 MS (m)710 1913 MS (p)735 1913 MS (o)760 1913 MS (n)785 1913 MS (e)810 1913 MS (n)835 1913 MS (t)860 1913 MS (_)885 1913 MS (i)910 1913 MS (.)935 1913 MS (h)960 1913 MS (x)985 1913 MS (x)1010 1913 MS
+(")1035 1913 MS
+( )1060 1913 MS
+(#)235 1960 MS (i)260 1960 MS (n)285 1960 MS (c)310 1960 MS (l)335 1960 MS (u)360 1960 MS (d)385 1960 MS (e)410 1960 MS ( )435 1960 MS (")460 1960 MS (M)485 1960 MS (P)510 1960 MS (I)535 1960 MS (O)560 1960 MS (b)585 1960 MS (j)610 1960 MS
+(e)635 1960 MS (c)660 1960 MS (t)685 1960 MS (_)710 1960 MS (i)735 1960 MS (.)760 1960 MS (h)785 1960 MS (")810 1960 MS
+( )835 1960 MS
+(#)235 2008 MS (i)260 2008 MS (n)285 2008 MS (c)310 2008 MS (l)335 2008 MS (u)360 2008 MS (d)385 2008 MS (e)410 2008 MS ( )435 2008 MS (")460 2008 MS (n)485 2008 MS (p)510 2008 MS (_)535 2008 MS (v)560 2008 MS (e)585 2008 MS (c)610 2008 MS
+(t)635 2008 MS (o)660 2008 MS (r)685 2008 MS (.)710 2008 MS (h)735 2008 MS (h)760 2008 MS (")785 2008 MS
+( )810 2008 MS
+( )235 2055 MS
+(c)235 2102 MS (l)260 2102 MS (a)285 2102 MS (s)310 2102 MS (s)335 2102 MS ( )360 2102 MS (P)385 2102 MS (V)410 2102 MS (e)435 2102 MS (c)460 2102 MS (_)485 2102 MS (i)510 2102 MS (:)535 2102 MS ( )560 2102 MS (p)585 2102 MS (u)610 2102 MS
+(b)635 2102 MS (l)660 2102 MS (i)685 2102 MS (c)710 2102 MS ( )735 2102 MS (P)760 2102 MS (O)785 2102 MS (A)810 2102 MS (_)835 2102 MS (E)860 2102 MS (n)885 2102 MS (g)910 2102 MS (i)935 2102 MS (n)960 2102 MS (e)985 2102 MS (s)1010 2102 MS
+(:)1035 2102 MS (:)1060 2102 MS (P)1085 2102 MS (V)1110 2102 MS (e)1135 2102 MS (c)1160 2102 MS (,)1185 2102 MS ( )1210 2102 MS
+( )1235 2102 MS
+( )235 2149 MS
+( )382 2149 MS ( )407 2149 MS ( )432 2149 MS ( )457 2149 MS ( )482 2149 MS ( )507 2149 MS (p)532 2149 MS (u)557 2149 MS (b)582 2149 MS (l)607 2149 MS (i)632 2149 MS (c)657 2149 MS ( )682 2149 MS (M)707 2149 MS (P)732 2149 MS (I)757 2149 MS
+(O)782 2149 MS (b)807 2149 MS (j)832 2149 MS (e)857 2149 MS (c)882 2149 MS (t)907 2149 MS (_)932 2149 MS (i)957 2149 MS
+( )982 2149 MS
+( )235 2196 MS
+({)235 2244 MS
+( )260 2244 MS
+(p)235 2291 MS (u)260 2291 MS (b)285 2291 MS (l)310 2291 MS (i)335 2291 MS (c)360 2291 MS (:)385 2291 MS
+( )410 2291 MS
+( )235 2338 MS ( )260 2338 MS (/)285 2338 MS (/)310 2338 MS ( )335 2338 MS (C)360 2338 MS (o)385 2338 MS (n)410 2338 MS (s)435 2338 MS (t)460 2338 MS (r)485 2338 MS (u)510 2338 MS (c)535 2338 MS (t)560 2338 MS (o)585 2338 MS (r)610 2338 MS
+(s)635 2338 MS
+( )660 2338 MS
+( )235 2385 MS ( )260 2385 MS (P)285 2385 MS (V)310 2385 MS (e)335 2385 MS (c)360 2385 MS
+(_)385 2385 MS (i)410 2385 MS (\()435 2385 MS (i)460 2385 MS (n)485 2385 MS (t)510 2385 MS ( )535 2385 MS (n)560 2385 MS (b)585 2385 MS (p)610 2385 MS (r)635 2385 MS (o)660 2385 MS (c)685 2385 MS (,)710 2385 MS ( )735 2385 MS (i)760 2385 MS
+(n)785 2385 MS (t)810 2385 MS ( )835 2385 MS (n)860 2385 MS (u)885 2385 MS (m)910 2385 MS (p)935 2385 MS (r)960 2385 MS (o)985 2385 MS (c)1010 2385 MS (,)1035 2385 MS ( )1060 2385 MS (i)1085 2385 MS (n)1110 2385 MS (t)1135 2385 MS ( )1160 2385 MS
+(*)1185 2385 MS (l)1210 2385 MS (i)1235 2385 MS (m)1260 2385 MS (,)1285 2385 MS ( )1310 2385 MS (i)1335 2385 MS (n)1360 2385 MS (t)1385 2385 MS ( )1410 2385 MS (s)1435 2385 MS (i)1460 2385 MS (z)1485 2385 MS (e)1510 2385 MS (,)1535 2385 MS ( )1560 2385 MS
+(d)1585 2385 MS (o)1610 2385 MS (u)1635 2385 MS (b)1660 2385 MS (l)1685 2385 MS (e)1710 2385 MS ( )1735 2385 MS (*)1760 2385 MS (d)1785 2385 MS (a)1810 2385 MS (t)1835 2385 MS (a)1860 2385 MS (\))1885 2385 MS ( )1910 2385 MS (;)1935 2385 MS
+( )1960 2385 MS
+( )235 2432 MS ( )260 2432 MS (/)285 2432 MS (/)310 2432 MS ( )335 2432 MS (D)360 2432 MS (e)385 2432 MS (s)410 2432 MS (t)435 2432 MS (r)460 2432 MS (u)485 2432 MS (c)510 2432 MS (t)535 2432 MS (o)560 2432 MS (r)585 2432 MS
+( )610 2432 MS
+( )235 2480 MS ( )260 2480 MS (~)285 2480 MS (P)310 2480 MS (V)335 2480 MS (e)360 2480 MS (c)385 2480 MS (_)410 2480 MS (i)435 2480 MS (\()460 2480 MS (\))485 2480 MS ( )510 2480 MS (;)535 2480 MS
+( )560 2480 MS
+( )235 2527 MS ( )260 2527 MS
+( )285 2527 MS
+( )235 2574 MS ( )260 2574 MS (E)285 2574 MS (n)310 2574 MS (g)335 2574 MS (i)360 2574 MS (n)385 2574 MS (e)410 2574 MS (s)435 2574 MS (:)460 2574 MS (:)485 2574 MS (D)510 2574 MS (o)535 2574 MS (u)560 2574 MS (b)585 2574 MS (l)610 2574 MS
+(e)635 2574 MS (V)660 2574 MS (e)685 2574 MS (c)710 2574 MS (*)735 2574 MS ( )760 2574 MS (v)785 2574 MS (e)810 2574 MS (c)835 2574 MS (\()860 2574 MS (\))885 2574 MS (;)910 2574 MS
+( )935 2574 MS
+( )235 2621 MS ( )260 2621 MS (C)285 2621 MS (O)310 2621 MS (R)335 2621 MS (B)360 2621 MS (A)385 2621 MS (:)410 2621 MS (:)435 2621 MS (U)460 2621 MS (L)485 2621 MS (o)510 2621 MS (n)535 2621 MS (g)560 2621 MS ( )585 2621 MS (S)610 2621 MS
+(i)635 2621 MS (z)660 2621 MS (e)685 2621 MS (\()710 2621 MS (\))735 2621 MS ( )760 2621 MS ({)785 2621 MS ( )810 2621 MS (r)835 2621 MS (e)860 2621 MS (t)885 2621 MS (u)910 2621 MS (r)935 2621 MS (n)960 2621 MS ( )985 2621 MS (\()1010 2621 MS
+(C)1035 2621 MS (O)1060 2621 MS (R)1085 2621 MS (B)1110 2621 MS (A)1135 2621 MS (:)1160 2621 MS (:)1185 2621 MS (U)1210 2621 MS (L)1235 2621 MS (o)1260 2621 MS (n)1285 2621 MS (g)1310 2621 MS (\))1335 2621 MS (_)1360 2621 MS (s)1385 2621 MS (i)1410 2621 MS
+(z)1435 2621 MS (e)1460 2621 MS (;)1485 2621 MS ( )1510 2621 MS (})1535 2621 MS (;)1560 2621 MS
+( )1585 2621 MS
+( )235 2668 MS ( )260 2668 MS (v)285 2668 MS (o)310 2668 MS (i)335 2668 MS (d)360 2668 MS ( )385 2668 MS (L)410 2668 MS (V)435 2668 MS (e)460 2668 MS (c)485 2668 MS (\()510 2668 MS (C)535 2668 MS (O)560 2668 MS (R)585 2668 MS (B)610 2668 MS
+(A)635 2668 MS (:)660 2668 MS (:)685 2668 MS (U)710 2668 MS (L)735 2668 MS (o)760 2668 MS (n)785 2668 MS (g)810 2668 MS (&)835 2668 MS ( )860 2668 MS (s)885 2668 MS (t)910 2668 MS (a)935 2668 MS (r)960 2668 MS (t)985 2668 MS (,)1010 2668 MS
+( )1035 2668 MS (C)1060 2668 MS (O)1085 2668 MS (R)1110 2668 MS (B)1135 2668 MS (A)1160 2668 MS (:)1185 2668 MS (:)1210 2668 MS (U)1235 2668 MS (L)1260 2668 MS (o)1285 2668 MS (n)1310 2668 MS (g)1335 2668 MS (&)1360 2668 MS ( )1385 2668 MS (e)1410 2668 MS
+(n)1435 2668 MS (d)1460 2668 MS (\))1485 2668 MS ( )1510 2668 MS ({)1535 2668 MS ( )1560 2668 MS (s)1585 2668 MS (t)1610 2668 MS (a)1635 2668 MS (r)1660 2668 MS (t)1685 2668 MS ( )1710 2668 MS (=)1735 2668 MS ( )1760 2668 MS (_)1785 2668 MS (l)1810 2668 MS
+(i)1835 2668 MS (m)1860 2668 MS ([)1885 2668 MS (0)1910 2668 MS (])1935 2668 MS (;)1960 2668 MS
+( )1985 2668 MS
+( )235 2716 MS ( )260 2716 MS ( )285 2716 MS ( )310 2716 MS
+( )335 2716 MS ( )360 2716 MS ( )385 2716 MS ( )410 2716 MS ( )435 2716 MS ( )460 2716 MS ( )485 2716 MS ( )510 2716 MS ( )535 2716 MS ( )560 2716 MS ( )585 2716 MS ( )610 2716 MS ( )635 2716 MS ( )660 2716 MS ( )685 2716 MS ( )710 2716 MS
+( )735 2716 MS ( )760 2716 MS ( )785 2716 MS ( )810 2716 MS ( )835 2716 MS ( )860 2716 MS ( )885 2716 MS ( )910 2716 MS ( )935 2716 MS ( )960 2716 MS ( )985 2716 MS ( )1010 2716 MS ( )1035 2716 MS ( )1060 2716 MS ( )1085 2716 MS ( )1110 2716 MS
+( )1135 2716 MS ( )1160 2716 MS ( )1185 2716 MS ( )1210 2716 MS ( )1235 2716 MS ( )1260 2716 MS ( )1285 2716 MS ( )1310 2716 MS ( )1335 2716 MS ( )1360 2716 MS ( )1385 2716 MS ( )1410 2716 MS ( )1435 2716 MS ( )1460 2716 MS ( )1485 2716 MS ( )1510 2716 MS
+( )1535 2716 MS ( )1560 2716 MS (e)1585 2716 MS (n)1610 2716 MS (d)1635 2716 MS ( )1660 2716 MS (=)1685 2716 MS ( )1710 2716 MS (_)1735 2716 MS (l)1760 2716 MS (i)1785 2716 MS (m)1810 2716 MS ([)1835 2716 MS (1)1860 2716 MS (])1885 2716 MS (;)1910 2716 MS
+( )1935 2716 MS (})1960 2716 MS (;)1985 2716 MS
+( )2010 2716 MS
+( )235 2763 MS ( )260 2763 MS (E)285 2763 MS (n)310 2763 MS (g)335 2763 MS (i)360 2763 MS (n)385 2763 MS (e)410 2763 MS (s)435 2763 MS (:)460 2763 MS (:)485 2763 MS (D)510 2763 MS (o)535 2763 MS (u)560 2763 MS (b)585 2763 MS (l)610 2763 MS
+(e)635 2763 MS (V)660 2763 MS (e)685 2763 MS (c)710 2763 MS (*)735 2763 MS ( )760 2763 MS (n)785 2763 MS (v)810 2763 MS (e)835 2763 MS (c)860 2763 MS (\()885 2763 MS (C)910 2763 MS (O)935 2763 MS (R)960 2763 MS (B)985 2763 MS (A)1010 2763 MS
+(:)1035 2763 MS (:)1060 2763 MS (U)1085 2763 MS (L)1110 2763 MS (o)1135 2763 MS (n)1160 2763 MS (g)1185 2763 MS ( )1210 2763 MS (s)1235 2763 MS (t)1260 2763 MS (a)1285 2763 MS (r)1310 2763 MS (t)1335 2763 MS (,)1360 2763 MS ( )1385 2763 MS (C)1410 2763 MS
+(O)1435 2763 MS (R)1460 2763 MS (B)1485 2763 MS (A)1510 2763 MS (:)1535 2763 MS (:)1560 2763 MS (U)1585 2763 MS (L)1610 2763 MS (o)1635 2763 MS (n)1660 2763 MS (g)1685 2763 MS ( )1710 2763 MS (e)1735 2763 MS (n)1760 2763 MS (d)1785 2763 MS (\))1810 2763 MS
+(;)1835 2763 MS
+( )1860 2763 MS
+( )235 2810 MS
+( )235 2857 MS
+(p)260 2857 MS (r)285 2857 MS (o)310 2857 MS (t)335 2857 MS (e)360 2857 MS (c)385 2857 MS (t)410 2857 MS (e)435 2857 MS (d)460 2857 MS (:)485 2857 MS
+( )510 2857 MS
+( )235 2904 MS ( )260 2904 MS (E)285 2904 MS (n)310 2904 MS (g)335 2904 MS (i)360 2904 MS (n)385 2904 MS (e)410 2904 MS (s)435 2904 MS (:)460 2904 MS (:)485 2904 MS (D)510 2904 MS (o)535 2904 MS (u)560 2904 MS (b)585 2904 MS (l)610 2904 MS
+(e)635 2904 MS (V)660 2904 MS (e)685 2904 MS (c)710 2904 MS (*)735 2904 MS ( )760 2904 MS (_)785 2904 MS (v)810 2904 MS (e)835 2904 MS (c)860 2904 MS (;)885 2904 MS
+( )910 2904 MS
+( )235 2952 MS ( )260 2952 MS (i)285 2952 MS (n)310 2952 MS (t)335 2952 MS ( )360 2952 MS (_)385 2952 MS (l)410 2952 MS (i)435 2952 MS (m)460 2952 MS ([)485 2952 MS (2)510 2952 MS (])535 2952 MS (;)560 2952 MS
+( )585 2952 MS
+( )235 2999 MS ( )260 2999 MS (i)285 2999 MS (n)310 2999 MS (t)335 2999 MS ( )360 2999 MS (_)385 2999 MS (s)410 2999 MS (i)435 2999 MS (z)460 2999 MS (e)485 2999 MS (;)510 2999 MS
+( )535 2999 MS
+( )235 3046 MS ( )260 3046 MS (d)285 3046 MS (o)310 3046 MS (u)335 3046 MS (b)360 3046 MS (l)385 3046 MS (e)410 3046 MS ( )435 3046 MS (*)460 3046 MS (_)485 3046 MS (d)510 3046 MS (a)535 3046 MS (t)560 3046 MS (a)585 3046 MS (;)610 3046 MS
+( )635 3046 MS
+( )235 3093 MS
+(})235 3140 MS ( )260 3140 MS (;)285 3140 MS
+( )310 3140 MS
+showpage
+%%Page: 20 20
+14.449 827.879 translate 72 300 div dup neg scale
+0 0 transform .25 add round .25 sub exch .25 add round .25 sub exch itransform translate
+1 j
+1 setlinecap
+72 sl
+0.375 g
+n
+494 182 M
+494 155 472 133 445 133 c
+418 133 396 155 396 182 c
+396 209 418 231 445 231 c
+472 231 494 209 494 182 c
+cp
+CM 0.156 0.152 scale
+s
+SM
+71 sl
+n
+660 182 M
+660 155 638 133 611 133 c
+584 133 562 155 562 182 c
+562 209 584 231 611 231 c
+638 231 660 209 660 182 c
+cp
+CM 0.156 0.152 scale
+s
+SM
+n
+120 24 468 152 B
+1 g
+f
+1 sl
+n
+122 26 467 151 B
+cp
+s
+71 sl
+0.375 g
+n
+577 180 M
+577 153 555 131 528 131 c
+501 131 479 153 479 180 c
+479 206 501 228 528 228 c
+555 228 577 206 577 180 c
+cp
+gs
+1 g
+e
+gr
+CM 0.156 0.152 scale
+s
+SM
+n
+480 180 M
+575 180 L
+CM 0.156 0.152 scale
+s
+SM
+n
+34 18 562 187 B
+1 g
+f
+1 sl
+n
+36 20 561 186 B
+cp
+s
+n
+610 173 M
+591 173 L
+554 124 L
+579 126 L
+609 173 L
+610 173 L
+cp
+gs
+e
+gr
+s
+n
+448 170 M
+468 170 L
+504 122 L
+479 123 L
+449 170 L
+448 170 L
+cp
+gs
+e
+gr
+s
+0.375 g
+n
+473 140 M
+473 137 470 135 467 135 c
+464 135 462 137 462 140 c
+462 142 464 145 467 145 c
+470 145 473 142 473 140 c
+cp
+gs
+e
+gr
+s
+n
+593 139 M
+593 136 590 134 588 134 c
+585 134 583 136 583 139 c
+583 141 585 144 588 144 c
+590 144 593 141 593 139 c
+cp
+gs
+e
+gr
+s
+72 sl
+n
+665 137 M
+665 229 L
+CM 0.156 0.152 scale
+s
+SM
+[29 0 0 -29 0 0]/Times-Roman MF
+0 g
+( )676 243 MS
+[50 0 0 -50 0 0]/Times-Roman MF
+(D)400 289 MS (E)436 289 MS (N)467 289 MS ( )503 289 MS ( )516 289 MS (S)529 289 MS (a)557 289 MS (c)579 289 MS (l)601 289 MS (a)613 289 MS (y)636 289 MS
+( )660 289 MS
+( )1297 140 MS
+[38 0 0 -38 0 0]/Times-Roman MF
+(S)1785 129 MS (F)1806 129 MS (M)1827 129 MS (E)1861 129 MS (/)1883 129 MS (L)1894 129 MS (G)1916 129 MS (L)1943 129 MS (S)1965 129 MS (/)1986 129 MS (R)1997 129 MS (T)2022 129 MS (/)2045 129 MS (0)2056 129 MS (2)2075 129 MS
+(-)2094 129 MS
+(0)2106 129 MS (0)2125 129 MS (2)2144 129 MS
+( )2163 129 MS
+(D)1785 173 MS (a)1812 173 MS (t)1829 173 MS (e)1840 173 MS
+( )1856 173 MS
+(:)1866 173 MS
+( )1875 173 MS
+(3)1885 173 MS (0)1904 173 MS (/)1923 173 MS (0)1934 173 MS (5)1952 173 MS (/)1971 173 MS (2)1982 173 MS (0)2000 173 MS (0)2019 173 MS (2)2038 173 MS
+( )2057 173 MS
+n
+5 5 232 89 B
+f
+n
+5 5 232 89 B
+f
+n
+584 5 238 89 B
+f
+n
+5 5 823 89 B
+f
+n
+938 5 829 89 B
+f
+n
+5 5 1768 89 B
+f
+n
+436 5 1774 89 B
+f
+n
+5 5 2211 89 B
+f
+n
+5 5 2211 89 B
+f
+n
+5 256 232 95 B
+f
+n
+2 256 823 95 B
+f
+n
+2 256 1768 95 B
+f
+n
+5 256 2211 95 B
+f
+[50 0 0 -50 0 0]/Times-Roman MF
+(D)322 400 MS (M)358 400 MS (2)402 400 MS (S)427 400 MS (/)455 400 MS (S)469 400 MS (F)497 400 MS (M)524 400 MS (E)568 400 MS (/)599 400 MS (L)613 400 MS (G)643 400 MS (L)680 400 MS (S)710 400 MS
+( )738 400 MS
+[50 0 0 -50 0 0]/Times-Bold MF
+gs
+n
+241 53 1102 367 CB
+(R)1102 413 MS (A)1138 413 MS (P)1174 413 MS (P)1204 413 MS (O)1234 413 MS (R)1273 413 MS (T)1310 413 MS
+gr
+gs
+n
+150 53 1343 367 CB
+( )1343 413 MS (D)1356 413 MS (M)1392 413 MS (2)1440 413 MS (S)1465 413 MS
+gr
+[50 0 0 -50 0 0]/Times-Roman MF
+gs
+n
+24 52 1493 368 CB
+( )1493 413 MS
+gr
+[38 0 0 -38 0 0]/Times-Roman MF
+(P)1785 400 MS (a)1806 400 MS (g)1823 400 MS (e)1841 400 MS ( )1858 400 MS
+[50 0 0 -50 0 0]/Times-Roman MF
+(2)1868 400 MS (0)1893 400 MS
+(/)1918 400 MS
+(3)1932 400 MS (0)1957 400 MS
+[38 0 0 -38 0 0]/Times-Roman MF
+( )1982 400 MS
+n
+5 2 232 352 B
+f
+n
+2 2 823 352 B
+f
+n
+941 2 826 352 B
+f
+n
+2 2 1768 352 B
+f
+n
+5 2 2211 352 B
+f
+n
+5 67 232 355 B
+f
+n
+590 1 232 423 B
+f
+n
+2 67 823 355 B
+f
+n
+1 1 823 423 B
+f
+n
+942 1 825 423 B
+f
+n
+2 67 1768 355 B
+f
+n
+1 1 1768 423 B
+f
+n
+440 1 1770 423 B
+f
+n
+5 67 2211 355 B
+f
+n
+5 1 2211 423 B
+f
+[50 0 0 -50 0 0]/Times-Roman MF
+( )235 470 MS
+[33 0 0 -33 0 0]/Times-Roman MF
+/IsChar{exch/CharStrings get exch known}bd/MapCh{3 -1 roll/Encoding get 3 1\r
+roll put}bd/MapDegree{dup 16#b0 exch/degree IsChar{/degree}{/ring}ifelse MapCh}\r
+bd/MapBB{dup 16#a6 exch/brokenbar IsChar{/brokenbar}{/bar}ifelse MapCh}bd\r
+/reencode{findfont begin currentdict dup length dict begin{1 index/FID ne{def}\r
+{pop pop}ifelse}forall/FontName exch def dup length 0 ne{/Encoding Encoding 256\r
+array copy def 0 exch{dup type/nametype eq{Encoding 2 index 2 index put pop 1\r
+add}{exch pop}ifelse}forall}if pop currentdict dup end end/FontName get exch\r
+definefont dup MapDegree MapBB}bd/LATENC[0/grave/acute/circumflex/tilde/macron\r
+/breve/dotaccent/dieresis/ring/cedilla/hungarumlaut/ogonek/caron/dotlessi/fi/fl\r
+/Lslash/lslash/Zcaron/zcaron/minus/.notdef/.notdef/.notdef/.notdef/.notdef\r
+/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/space/exclam/quotedbl\r
+/numbersign/dollar/percent/ampersand/quotesingle/parenleft/parenright/asterisk\r
+/plus/comma/hyphen/period/slash/zero/one/two/three/four/five/six/seven/eight\r
+/nine/colon/semicolon/less/equal/greater/question/at/A/B/C/D/E/F/G/H/I/J/K/L/M\r
+/N/O/P/Q/R/S/T/U/V/W/X/Y/Z/bracketleft/backslash/bracketright/asciicircum\r
+/underscore/grave/a/b/c/d/e/f/g/h/i/j/k/l/m/n/o/p/q/r/s/t/u/v/w/x/y/z/braceleft\r
+/bar/braceright/asciitilde/.notdef/.notdef/.notdef/quotesinglbase/florin\r
+/quotedblbase/ellipsis/dagger/daggerdbl/circumflex/perthousand/Scaron\r
+/guilsinglleft/OE/.notdef/.notdef/.notdef/.notdef/quoteleft/quoteright\r
+/quotedblleft/quotedblright/bullet/endash/emdash/tilde/trademark/scaron\r
+/guilsinglright/oe/.notdef/.notdef/Ydieresis/.notdef/exclamdown/cent/sterling\r
+/currency/yen/brokenbar/section/dieresis/copyright/ordfeminine/guillemotleft\r
+/logicalnot/hyphen/registered/macron/degree/plusminus/twosuperior/threesuperior\r
+/acute/mu/paragraph/periodcentered/cedilla/onesuperior/ordmasculine\r
+/guillemotright/onequarter/onehalf/threequarters/questiondown/Agrave/Aacute\r
+/Acircumflex/Atilde/Adieresis/Aring/AE/Ccedilla/Egrave/Eacute/Ecircumflex\r
+/Edieresis/Igrave/Iacute/Icircumflex/Idieresis/Eth/Ntilde/Ograve/Oacute\r
+/Ocircumflex/Otilde/Odieresis/multiply/Oslash/Ugrave/Uacute/Ucircumflex\r
+/Udieresis/Yacute/Thorn/germandbls/agrave/aacute/acircumflex/atilde/adieresis\r
+/aring/ae/ccedilla/egrave/eacute/ecircumflex/edieresis/igrave/iacute\r
+/icircumflex/idieresis/eth/ntilde/ograve/oacute/ocircumflex/otilde/odieresis\r
+/divide/oslash/ugrave/uacute/ucircumflex/udieresis/yacute/thorn/ydieresis]def\r
+LATENC /_Times-Roman /Times-Roman reencode
+[33 0 0 -33 0 0]/_Times-Roman MF
+(L)242 3256 MS (e)262 3256 MS (s)277 3256 MS ( )289 3256 MS (i)298 3256 MS (n)307 3256 MS (f)324 3256 MS (o)335 3256 MS (r)351 3256 MS (m)363 3256 MS (a)388 3256 MS (t)403 3256 MS (i)412 3256 MS (o)422 3256 MS (n)439 3256 MS (s)456 3256 MS
+( )468 3256 MS (c)477 3256 MS (o)492 3256 MS (n)508 3256 MS (t)524 3256 MS (e)534 3256 MS (n)549 3256 MS (u)565 3256 MS (e)582 3256 MS (s)597 3256 MS ( )610 3256 MS (d)618 3256 MS (a)634 3256 MS (n)650 3256 MS (s)667 3256 MS ( )679 3256 MS
+(c)688 3256 MS (e)703 3256 MS ( )717 3256 MS (d)726 3256 MS (o)742 3256 MS (c)759 3256 MS (u)773 3256 MS (m)791 3256 MS (e)817 3256 MS (n)831 3256 MS (t)847 3256 MS ( )857 3256 MS (s)866 3256 MS (o)878 3256 MS (n)895 3256 MS (t)911 3256 MS
+( )921 3256 MS (r)929 3256 MS (\351)941 3256 MS (s)956 3256 MS (e)968 3256 MS (r)982 3256 MS (v)994 3256 MS (\351)1011 3256 MS (e)1026 3256 MS (s)1041 3256 MS ( )1053 3256 MS (a)1061 3256 MS (u)1076 3256 MS (x)1093 3256 MS ( )1109 3256 MS (d)1118 3256 MS
+(e)1135 3256 MS (s)1150 3256 MS (t)1162 3256 MS (i)1171 3256 MS (n)1181 3256 MS (a)1197 3256 MS (t)1212 3256 MS (a)1221 3256 MS (i)1236 3256 MS (r)1245 3256 MS (e)1257 3256 MS (s)1272 3256 MS ( )1284 3256 MS (n)1293 3256 MS (o)1309 3256 MS (m)1326 3256 MS
+(m)1352 3256 MS (\351)1378 3256 MS (m)1393 3256 MS (e)1419 3256 MS (n)1433 3256 MS (t)1450 3256 MS ( )1459 3256 MS (d)1468 3256 MS (\351)1484 3256 MS (s)1499 3256 MS (i)1512 3256 MS (g)1521 3256 MS
+(n)1538 3256 MS (\351)1555 3256 MS (s)1570 3256 MS ( )1582 3256 MS (e)1591 3256 MS (t)1605 3256 MS ( )1615 3256 MS (n)1623 3256 MS (e)1640 3256 MS ( )1654 3256 MS (p)1663 3256 MS (e)1680 3256 MS (u)1694 3256 MS (v)1711 3256 MS (e)1728 3256 MS (n)1743 3256 MS
+(t)1759 3256 MS ( )1768 3256 MS (r)1776 3256 MS (e)1788 3256 MS (c)1803 3256 MS (e)1818 3256 MS (v)1832 3256 MS (o)1849 3256 MS (i)1865 3256 MS (r)1874 3256 MS ( )1886 3256 MS (a)1894 3256 MS (u)1909 3256 MS (c)1926 3256 MS (u)1940 3256 MS (n)1957 3256 MS
+(e)1974 3256 MS ( )1988 3256 MS (d)1997 3256 MS (i)2013 3256 MS (f)2023 3256 MS (f)2034 3256 MS (u)2044 3256 MS (s)2062 3256 MS (i)2074 3256 MS (o)2084 3256 MS (n)2101 3256 MS
+( )2117 3256 MS
+(s)928 3294 MS (a)940 3294 MS (n)955 3294 MS (s)972 3294 MS ( )985 3294 MS (l)993 3294 MS (\222)1002 3294 MS (a)1013 3294 MS (u)1028 3294 MS (t)1045 3294 MS (o)1054 3294 MS (r)1071 3294 MS (i)1082 3294 MS (s)1092 3294 MS (a)1104 3294 MS (t)1119 3294 MS
+(i)1128 3294 MS (o)1138 3294 MS (n)1154 3294 MS ( )1171 3294 MS (e)1180 3294 MS (x)1194 3294 MS (p)1211 3294 MS (r)1227 3294 MS (e)1239 3294 MS (s)1254 3294 MS (s)1267 3294 MS (e)1280 3294 MS ( )1294 3294 MS (d)1303 3294 MS (u)1319 3294 MS ( )1336 3294 MS
+(D)1344 3294 MS (M)1368 3294 MS (2)1397 3294 MS (S)1414 3294 MS
+[50 0 0 -50 0 0]/Times-Roman MF
+( )1432 3294 MS
+[42 0 0 -42 0 0]/Courier MF
+( )235 517 MS
+(c)235 565 MS (l)260 565 MS (a)285 565 MS (s)310 565 MS (s)335 565 MS ( )360 565 MS (N)385 565 MS (P)410 565 MS (V)435 565 MS (e)460 565 MS (c)485 565 MS (C)510 565 MS (o)535 565 MS (m)560 565 MS (p)585 565 MS (o)610 565 MS
+(n)635 565 MS (e)660 565 MS (n)685 565 MS (t)710 565 MS (_)735 565 MS (i)760 565 MS (:)785 565 MS ( )810 565 MS (p)835 565 MS (u)860 565 MS (b)885 565 MS (l)910 565 MS (i)935 565 MS (c)960 565 MS
+( )985 565 MS (P)1010 565 MS (O)1035 565 MS (A)1060 565 MS (_)1085 565 MS (E)1110 565 MS (n)1135 565 MS (g)1160 565 MS (i)1185 565 MS (n)1210 565 MS (e)1235 565 MS (s)1260 565 MS (:)1285 565 MS (:)1310 565 MS (N)1335 565 MS (P)1360 565 MS
+(V)1385 565 MS (e)1410 565 MS (c)1435 565 MS (C)1460 565 MS (o)1485 565 MS (m)1510 565 MS (p)1535 565 MS (o)1560 565 MS (n)1585 565 MS (e)1610 565 MS (n)1635 565 MS (t)1660 565 MS (,)1685 565 MS ( )1710 565 MS
+( )1735 565 MS
+( )235 612 MS
+( )382 612 MS
+( )530 612 MS
+(p)677 612 MS (u)702 612 MS (b)727 612 MS (l)752 612 MS (i)777 612 MS (c)802 612 MS ( )827 612 MS (E)852 612 MS (n)877 612 MS (g)902 612 MS (i)927 612 MS (n)952 612 MS (e)977 612 MS (s)1002 612 MS (_)1027 612 MS (C)1052 612 MS
+(o)1077 612 MS (m)1102 612 MS (p)1127 612 MS (o)1152 612 MS (n)1177 612 MS (e)1202 612 MS (n)1227 612 MS (t)1252 612 MS (_)1277 612 MS (i)1302 612 MS (,)1327 612 MS
+( )1352 612 MS
+( )235 659 MS
+( )382 659 MS
+( )530 659 MS
+(p)677 659 MS (u)702 659 MS (b)727 659 MS (l)752 659 MS (i)777 659 MS (c)802 659 MS ( )827 659 MS (M)852 659 MS (P)877 659 MS (I)902 659 MS (O)927 659 MS (b)952 659 MS (j)977 659 MS (e)1002 659 MS (c)1027 659 MS (t)1052 659 MS
+(_)1077 659 MS (i)1102 659 MS
+( )1127 659 MS
+( )235 706 MS
+({)235 753 MS
+( )260 753 MS
+(p)235 801 MS (u)260 801 MS (b)285 801 MS (l)310 801 MS (i)335 801 MS (c)360 801 MS (:)385 801 MS
+( )410 801 MS
+( )235 848 MS ( )260 848 MS (/)285 848 MS (/)310 848 MS ( )335 848 MS (C)360 848 MS (o)385 848 MS (n)410 848 MS (s)435 848 MS (t)460 848 MS (r)485 848 MS (u)510 848 MS (c)535 848 MS (t)560 848 MS (o)585 848 MS (r)610 848 MS
+(s)635 848 MS
+( )660 848 MS
+( )235 895 MS ( )260 895 MS (N)285 895 MS (P)310 895 MS (V)335 895 MS (e)360 895 MS (c)385 895 MS (C)410 895 MS (o)435 895 MS (m)460 895 MS (p)485 895 MS (o)510 895 MS (n)535 895 MS (e)560 895 MS (n)585 895 MS (t)610 895 MS
+(_)635 895 MS (i)660 895 MS (\()685 895 MS (\))710 895 MS ( )735 895 MS (;)760 895 MS
+( )785 895 MS
+( )235 942 MS ( )260 942 MS (N)285 942 MS (P)310 942 MS (V)335 942 MS (e)360 942 MS (c)385 942 MS (C)410 942 MS (o)435 942 MS (m)460 942 MS (p)485 942 MS (o)510 942 MS (n)535 942 MS (e)560 942 MS (n)585 942 MS (t)610 942 MS
+(_)635 942 MS (i)660 942 MS (\()685 942 MS ( )710 942 MS (i)735 942 MS (n)760 942 MS (t)785 942 MS ( )810 942 MS (n)835 942 MS (b)860 942 MS (p)885 942 MS (r)910 942 MS (o)935 942 MS (c)960 942 MS (,)985 942 MS ( )1010 942 MS
+(i)1035 942 MS (n)1060 942 MS (t)1085 942 MS ( )1110 942 MS (n)1135 942 MS (u)1160 942 MS (m)1185 942 MS (p)1210 942 MS (r)1235 942 MS (o)1260 942 MS (c)1285 942 MS (,)1310 942 MS
+( )1335 942 MS
+( )235 989 MS
+( )382 989 MS
+( )530 989 MS ( )555 989 MS ( )580 989 MS ( )605 989 MS (C)630 989 MS (O)655 989 MS (R)680 989 MS (B)705 989 MS (A)730 989 MS (:)755 989 MS (:)780 989 MS (O)805 989 MS (R)830 989 MS (B)855 989 MS (_)880 989 MS (p)905 989 MS
+(t)930 989 MS (r)955 989 MS ( )980 989 MS (o)1005 989 MS (r)1030 989 MS (b)1055 989 MS (,)1080 989 MS
+( )1105 989 MS
+( )235 1037 MS
+( )382 1037 MS
+( )530 1037 MS ( )555 1037 MS ( )580 1037 MS ( )605 1037 MS (P)630 1037 MS (o)655 1037 MS (r)680 1037 MS (t)705 1037 MS (a)730 1037 MS (b)755 1037 MS (l)780 1037 MS (e)805 1037 MS (S)830 1037 MS (e)855 1037 MS (r)880 1037 MS (v)905 1037 MS
+(e)930 1037 MS (r)955 1037 MS (:)980 1037 MS (:)1005 1037 MS (P)1030 1037 MS (O)1055 1037 MS (A)1080 1037 MS (_)1105 1037 MS (p)1130 1037 MS (t)1155 1037 MS (r)1180 1037 MS ( )1205 1037 MS (p)1230 1037 MS (o)1255 1037 MS (a)1280 1037 MS (,)1305 1037 MS
+( )1330 1037 MS
+( )1355 1037 MS
+( )235 1084 MS
+( )382 1084 MS
+( )530 1084 MS ( )555 1084 MS ( )580 1084 MS ( )605 1084 MS (P)630 1084 MS (o)655 1084 MS (r)680 1084 MS (t)705 1084 MS (a)730 1084 MS (b)755 1084 MS (l)780 1084 MS
+(e)805 1084 MS (S)830 1084 MS (e)855 1084 MS (r)880 1084 MS (v)905 1084 MS (e)930 1084 MS (r)955 1084 MS (:)980 1084 MS (:)1005 1084 MS (O)1030 1084 MS (b)1055 1084 MS (j)1080 1084 MS (e)1105 1084 MS (c)1130 1084 MS (t)1155 1084 MS (I)1180 1084 MS
+(d)1205 1084 MS ( )1230 1084 MS (*)1255 1084 MS ( )1280 1084 MS (c)1305 1084 MS (o)1330 1084 MS (n)1355 1084 MS (t)1380 1084 MS (I)1405 1084 MS (d)1430 1084 MS (,)1455 1084 MS ( )1480 1084 MS
+( )1505 1084 MS
+( )235 1131 MS
+( )382 1131 MS
+( )530 1131 MS ( )555 1131 MS ( )580 1131 MS ( )605 1131 MS (c)630 1131 MS (o)655 1131 MS (n)680 1131 MS (s)705 1131 MS (t)730 1131 MS ( )755 1131 MS (c)780 1131 MS (h)805 1131 MS (a)830 1131 MS (r)855 1131 MS ( )880 1131 MS (*)905 1131 MS
+(i)930 1131 MS (n)955 1131 MS (s)980 1131 MS (t)1005 1131 MS (a)1030 1131 MS (n)1055 1131 MS (c)1080 1131 MS (e)1105 1131 MS (N)1130 1131 MS (a)1155 1131 MS (m)1180 1131 MS (e)1205 1131 MS (,)1230 1131 MS
+( )1255 1131 MS
+( )235 1178 MS
+( )382 1178 MS
+( )530 1178 MS ( )555 1178 MS ( )580 1178 MS ( )605 1178 MS (c)630 1178 MS (o)655 1178 MS (n)680 1178 MS (s)705 1178 MS (t)730 1178 MS ( )755 1178 MS (c)780 1178 MS (h)805 1178 MS (a)830 1178 MS (r)855 1178 MS ( )880 1178 MS (*)905 1178 MS
+(i)930 1178 MS (n)955 1178 MS (t)980 1178 MS (e)1005 1178 MS (r)1030 1178 MS (f)1055 1178 MS (a)1080 1178 MS (c)1105 1178 MS (e)1130 1178 MS (N)1155 1178 MS (a)1180 1178 MS (m)1205 1178 MS (e)1230 1178 MS (\))1255 1178 MS (;)1280 1178 MS
+( )1305 1178 MS
+( )235 1225 MS ( )260 1225 MS (N)285 1225 MS (P)310 1225 MS (V)335 1225 MS (e)360 1225 MS (c)385 1225 MS (C)410 1225 MS (o)435 1225 MS (m)460 1225 MS (p)485 1225 MS (o)510 1225 MS (n)535 1225 MS (e)560 1225 MS (n)585 1225 MS (t)610 1225 MS
+(_)635 1225 MS (i)660 1225 MS (\()685 1225 MS ( )710 1225 MS (i)735 1225 MS (n)760 1225 MS (t)785 1225 MS ( )810 1225 MS (n)835 1225 MS (b)860 1225 MS (p)885 1225 MS (r)910 1225 MS (o)935 1225 MS (c)960 1225 MS (,)985 1225 MS ( )1010 1225 MS
+(i)1035 1225 MS (n)1060 1225 MS (t)1085 1225 MS ( )1110 1225 MS (n)1135 1225 MS (u)1160 1225 MS (m)1185 1225 MS (p)1210 1225 MS (r)1235 1225 MS (o)1260 1225 MS (c)1285 1225 MS (,)1310 1225 MS
+( )1335 1225 MS
+( )235 1273 MS
+( )382 1273 MS
+( )530 1273 MS ( )555 1273 MS ( )580 1273 MS ( )605 1273 MS (C)630 1273 MS (O)655 1273 MS (R)680 1273 MS (B)705 1273 MS (A)730 1273 MS (:)755 1273 MS (:)780 1273 MS (O)805 1273 MS (R)830 1273 MS (B)855 1273 MS (_)880 1273 MS (p)905 1273 MS
+(t)930 1273 MS (r)955 1273 MS ( )980 1273 MS (o)1005 1273 MS (r)1030 1273 MS (b)1055 1273 MS (,)1080 1273 MS
+( )1105 1273 MS
+( )235 1320 MS
+( )382 1320 MS
+( )530 1320 MS ( )555 1320 MS ( )580 1320 MS ( )605 1320 MS (P)630 1320 MS (o)655 1320 MS (r)680 1320 MS (t)705 1320 MS (a)730 1320 MS (b)755 1320 MS (l)780 1320 MS (e)805 1320 MS (S)830 1320 MS (e)855 1320 MS (r)880 1320 MS (v)905 1320 MS
+(e)930 1320 MS (r)955 1320 MS (:)980 1320 MS (:)1005 1320 MS (P)1030 1320 MS (O)1055 1320 MS (A)1080 1320 MS (_)1105 1320 MS (p)1130 1320 MS (t)1155 1320 MS (r)1180 1320 MS ( )1205 1320 MS (p)1230 1320 MS (o)1255 1320 MS (a)1280 1320 MS (,)1305 1320 MS
+( )1330 1320 MS
+( )1355 1320 MS
+( )235 1367 MS
+( )382 1367 MS
+( )530 1367 MS ( )555 1367 MS ( )580 1367 MS ( )605 1367 MS (P)630 1367 MS (o)655 1367 MS (r)680 1367 MS (t)705 1367 MS (a)730 1367 MS (b)755 1367 MS (l)780 1367 MS (e)805 1367 MS (S)830 1367 MS (e)855 1367 MS (r)880 1367 MS (v)905 1367 MS
+(e)930 1367 MS (r)955 1367 MS (:)980 1367 MS (:)1005 1367 MS (O)1030 1367 MS (b)1055 1367 MS (j)1080 1367 MS (e)1105 1367 MS (c)1130 1367 MS (t)1155 1367 MS (I)1180 1367 MS (d)1205 1367 MS ( )1230 1367 MS (*)1255 1367 MS ( )1280 1367 MS (c)1305 1367 MS
+(o)1330 1367 MS (n)1355 1367 MS (t)1380 1367 MS (I)1405 1367 MS (d)1430 1367 MS (,)1455 1367 MS ( )1480 1367 MS
+( )1505 1367 MS
+( )235 1414 MS
+( )382 1414 MS
+( )530 1414 MS ( )555 1414 MS ( )580 1414 MS ( )605 1414 MS (c)630 1414 MS (o)655 1414 MS (n)680 1414 MS (s)705 1414 MS (t)730 1414 MS ( )755 1414 MS
+(c)780 1414 MS (h)805 1414 MS (a)830 1414 MS (r)855 1414 MS ( )880 1414 MS (*)905 1414 MS (i)930 1414 MS (n)955 1414 MS (s)980 1414 MS (t)1005 1414 MS (a)1030 1414 MS (n)1055 1414 MS (c)1080 1414 MS (e)1105 1414 MS (N)1130 1414 MS (a)1155 1414 MS
+(m)1180 1414 MS (e)1205 1414 MS (,)1230 1414 MS
+( )1255 1414 MS
+( )235 1461 MS
+( )382 1461 MS
+( )530 1461 MS ( )555 1461 MS ( )580 1461 MS ( )605 1461 MS (c)630 1461 MS (o)655 1461 MS (n)680 1461 MS (s)705 1461 MS (t)730 1461 MS ( )755 1461 MS (c)780 1461 MS (h)805 1461 MS (a)830 1461 MS (r)855 1461 MS ( )880 1461 MS (*)905 1461 MS
+(i)930 1461 MS (n)955 1461 MS (t)980 1461 MS (e)1005 1461 MS (r)1030 1461 MS (f)1055 1461 MS (a)1080 1461 MS (c)1105 1461 MS (e)1130 1461 MS (N)1155 1461 MS (a)1180 1461 MS (m)1205 1461 MS (e)1230 1461 MS (,)1255 1461 MS
+( )1280 1461 MS
+( )235 1509 MS
+( )382 1509 MS
+( )530 1509 MS ( )555 1509 MS ( )580 1509 MS ( )605 1509 MS (i)630 1509 MS (n)655 1509 MS (t)680 1509 MS ( )705 1509 MS (f)730 1509 MS (l)755 1509 MS (a)780 1509 MS (g)805 1509 MS (\))830 1509 MS (;)855 1509 MS
+( )880 1509 MS
+( )235 1556 MS ( )260 1556 MS (N)285 1556 MS (P)310 1556 MS (V)335 1556 MS (e)360 1556 MS (c)385 1556 MS (C)410 1556 MS (o)435 1556 MS (m)460 1556 MS (p)485 1556 MS (o)510 1556 MS (n)535 1556 MS (e)560 1556 MS (n)585 1556 MS (t)610 1556 MS
+(_)635 1556 MS (i)660 1556 MS (\()685 1556 MS ( )710 1556 MS (i)735 1556 MS (n)760 1556 MS (t)785 1556 MS ( )810 1556 MS (n)835 1556 MS (b)860 1556 MS (p)885 1556 MS (r)910 1556 MS (o)935 1556 MS (c)960 1556 MS (,)985 1556 MS ( )1010 1556 MS
+(i)1035 1556 MS (n)1060 1556 MS (t)1085 1556 MS ( )1110 1556 MS (n)1135 1556 MS (u)1160 1556 MS (m)1185 1556 MS (p)1210 1556 MS (r)1235 1556 MS (o)1260 1556 MS (c)1285 1556 MS (,)1310 1556 MS ( )1335 1556 MS (N)1360 1556 MS (P)1385 1556 MS (v)1410 1556 MS
+(e)1435 1556 MS (c)1460 1556 MS (t)1485 1556 MS (o)1510 1556 MS (r)1535 1556 MS ( )1560 1556 MS (*)1585 1556 MS (v)1610 1556 MS (e)1635 1556 MS (c)1660 1556 MS (,)1685 1556 MS
+( )1710 1556 MS
+( )235 1603 MS
+( )382 1603 MS
+( )530 1603 MS ( )555 1603 MS ( )580 1603 MS ( )605 1603 MS (C)630 1603 MS (O)655 1603 MS (R)680 1603 MS (B)705 1603 MS (A)730 1603 MS (:)755 1603 MS (:)780 1603 MS (O)805 1603 MS (R)830 1603 MS (B)855 1603 MS (_)880 1603 MS (p)905 1603 MS
+(t)930 1603 MS (r)955 1603 MS ( )980 1603 MS (o)1005 1603 MS (r)1030 1603 MS (b)1055 1603 MS (,)1080 1603 MS
+( )1105 1603 MS
+( )235 1650 MS
+( )382 1650 MS
+( )530 1650 MS ( )555 1650 MS ( )580 1650 MS ( )605 1650 MS (P)630 1650 MS (o)655 1650 MS (r)680 1650 MS (t)705 1650 MS (a)730 1650 MS (b)755 1650 MS (l)780 1650 MS (e)805 1650 MS (S)830 1650 MS (e)855 1650 MS (r)880 1650 MS (v)905 1650 MS
+(e)930 1650 MS (r)955 1650 MS (:)980 1650 MS (:)1005 1650 MS (P)1030 1650 MS (O)1055 1650 MS (A)1080 1650 MS (_)1105 1650 MS (p)1130 1650 MS (t)1155 1650 MS (r)1180 1650 MS ( )1205 1650 MS (p)1230 1650 MS (o)1255 1650 MS (a)1280 1650 MS (,)1305 1650 MS
+( )1330 1650 MS
+( )1355 1650 MS
+( )235 1697 MS
+( )382 1697 MS
+( )530 1697 MS ( )555 1697 MS ( )580 1697 MS ( )605 1697 MS (P)630 1697 MS (o)655 1697 MS (r)680 1697 MS (t)705 1697 MS (a)730 1697 MS (b)755 1697 MS (l)780 1697 MS (e)805 1697 MS (S)830 1697 MS (e)855 1697 MS (r)880 1697 MS (v)905 1697 MS
+(e)930 1697 MS (r)955 1697 MS (:)980 1697 MS (:)1005 1697 MS (O)1030 1697 MS (b)1055 1697 MS (j)1080 1697 MS (e)1105 1697 MS (c)1130 1697 MS (t)1155 1697 MS (I)1180 1697 MS (d)1205 1697 MS ( )1230 1697 MS (*)1255 1697 MS ( )1280 1697 MS (c)1305 1697 MS
+(o)1330 1697 MS (n)1355 1697 MS (t)1380 1697 MS (I)1405 1697 MS (d)1430 1697 MS (,)1455 1697 MS ( )1480 1697 MS
+( )1505 1697 MS
+( )235 1745 MS
+( )382 1745 MS
+( )530 1745 MS ( )555 1745 MS ( )580 1745 MS ( )605 1745 MS (c)630 1745 MS (o)655 1745 MS (n)680 1745 MS (s)705 1745 MS (t)730 1745 MS ( )755 1745 MS (c)780 1745 MS (h)805 1745 MS (a)830 1745 MS (r)855 1745 MS ( )880 1745 MS (*)905 1745 MS
+(i)930 1745 MS (n)955 1745 MS (s)980 1745 MS (t)1005 1745 MS
+(a)1030 1745 MS (n)1055 1745 MS (c)1080 1745 MS (e)1105 1745 MS (N)1130 1745 MS (a)1155 1745 MS (m)1180 1745 MS (e)1205 1745 MS (,)1230 1745 MS
+( )1255 1745 MS
+( )235 1792 MS
+( )382 1792 MS
+( )530 1792 MS ( )555 1792 MS ( )580 1792 MS ( )605 1792 MS (c)630 1792 MS (o)655 1792 MS (n)680 1792 MS (s)705 1792 MS (t)730 1792 MS ( )755 1792 MS (c)780 1792 MS (h)805 1792 MS (a)830 1792 MS (r)855 1792 MS ( )880 1792 MS (*)905 1792 MS
+(i)930 1792 MS (n)955 1792 MS (t)980 1792 MS (e)1005 1792 MS (r)1030 1792 MS (f)1055 1792 MS (a)1080 1792 MS (c)1105 1792 MS (e)1130 1792 MS (N)1155 1792 MS (a)1180 1792 MS (m)1205 1792 MS (e)1230 1792 MS (\))1255 1792 MS (;)1280 1792 MS
+( )1305 1792 MS
+( )235 1839 MS ( )260 1839 MS (/)285 1839 MS (/)310 1839 MS ( )335 1839 MS (D)360 1839 MS (e)385 1839 MS (s)410 1839 MS (t)435 1839 MS (r)460 1839 MS (u)485 1839 MS (c)510 1839 MS (t)535 1839 MS (o)560 1839 MS (r)585 1839 MS
+( )610 1839 MS
+( )235 1886 MS ( )260 1886 MS (~)285 1886 MS (N)310 1886 MS (P)335 1886 MS (V)360 1886 MS (e)385 1886 MS (c)410 1886 MS (C)435 1886 MS (o)460 1886 MS (m)485 1886 MS (p)510 1886 MS (o)535 1886 MS (n)560 1886 MS (e)585 1886 MS (n)610 1886 MS
+(t)635 1886 MS (_)660 1886 MS (i)685 1886 MS (\()710 1886 MS (\))735 1886 MS ( )760 1886 MS (;)785 1886 MS
+( )810 1886 MS
+( )235 1933 MS ( )260 1933 MS
+( )285 1933 MS
+( )235 1981 MS ( )260 1981 MS (v)285 1981 MS (o)310 1981 MS (i)335 1981 MS (d)360 1981 MS ( )385 1981 MS (S)410 1981 MS (e)435 1981 MS (t)460 1981 MS (F)485 1981 MS (i)510 1981 MS (l)535 1981 MS (e)560 1981 MS (N)585 1981 MS (a)610 1981 MS
+(m)635 1981 MS (e)660 1981 MS (\()685 1981 MS (c)710 1981 MS (o)735 1981 MS (n)760 1981 MS (s)785 1981 MS (t)810 1981 MS ( )835 1981 MS (c)860 1981 MS (h)885 1981 MS (a)910 1981 MS (r)935 1981 MS (*)960 1981 MS (f)985 1981 MS (i)1010 1981 MS
+(l)1035 1981 MS (e)1060 1981 MS (N)1085 1981 MS (a)1110 1981 MS (m)1135 1981 MS (e)1160 1981 MS (\))1185 1981 MS (;)1210 1981 MS
+( )1235 1981 MS
+( )235 2028 MS ( )260 2028 MS (v)285 2028 MS (o)310 2028 MS (i)335 2028 MS (d)360 2028 MS ( )385 2028 MS (R)410 2028 MS (e)435 2028 MS (a)460 2028 MS (d)485 2028 MS (D)510 2028 MS (a)535 2028 MS (t)560 2028 MS (a)585 2028 MS (F)610 2028 MS
+(r)635 2028 MS (o)660 2028 MS (m)685 2028 MS (F)710 2028 MS (i)735 2028 MS (l)760 2028 MS (e)785 2028 MS (\()810 2028 MS (c)835 2028 MS (o)860 2028 MS (n)885 2028 MS (s)910 2028 MS (t)935 2028 MS ( )960 2028 MS (c)985 2028 MS (h)1010 2028 MS
+(a)1035 2028 MS (r)1060 2028 MS (*)1085 2028 MS ( )1110 2028 MS (i)1135 2028 MS (d)1160 2028 MS (_)1185 2028 MS (c)1210 2028 MS (a)1235 2028 MS (l)1260 2028 MS (l)1285 2028 MS (b)1310 2028 MS (a)1335 2028 MS (c)1360 2028 MS (k)1385 2028 MS (\))1410 2028 MS
+( )1435 2028 MS (;)1460 2028 MS
+( )1485 2028 MS
+( )235 2075 MS ( )260 2075 MS ( )285 2075 MS ( )310 2075 MS
+( )335 2075 MS
+( )235 2122 MS ( )260 2122 MS (v)285 2122 MS (o)310 2122 MS (i)335 2122 MS (d)360 2122 MS ( )385 2122 MS (S)410 2122 MS (a)435 2122 MS (v)460 2122 MS (e)485 2122 MS (D)510 2122 MS (a)535 2122 MS (t)560 2122 MS (a)585 2122 MS (T)610 2122 MS
+(o)635 2122 MS (F)660 2122 MS (i)685 2122 MS (l)710 2122 MS (e)735 2122 MS (\()760 2122 MS (c)785 2122 MS (o)810 2122 MS (n)835 2122 MS (s)860 2122 MS (t)885 2122 MS ( )910 2122 MS (c)935 2122 MS (h)960 2122 MS (a)985 2122 MS (r)1010 2122 MS
+(*)1035 2122 MS ( )1060 2122 MS (i)1085 2122 MS (d)1110 2122 MS (_)1135 2122 MS (c)1160 2122 MS (a)1185 2122 MS (l)1210 2122 MS (l)1235 2122 MS (b)1260 2122 MS (a)1285 2122 MS (c)1310 2122 MS (k)1335 2122 MS (\))1360 2122 MS ( )1385 2122 MS (;)1410 2122 MS
+( )1435 2122 MS
+( )235 2169 MS
+( )235 2217 MS ( )260 2217 MS (N)285 2217 MS (P)310 2217 MS (v)335 2217 MS (e)360 2217 MS (c)385 2217 MS (t)410 2217 MS (o)435 2217 MS (r)460 2217 MS ( )485 2217 MS (*)510 2217 MS (G)535 2217 MS (e)560 2217 MS (t)585 2217 MS (D)610 2217 MS
+(a)635 2217 MS (t)660 2217 MS (a)685 2217 MS (\()710 2217 MS ( )735 2217 MS (v)760 2217 MS
+(o)785 2217 MS (i)810 2217 MS (d)835 2217 MS ( )860 2217 MS (\))885 2217 MS (;)910 2217 MS
+( )935 2217 MS
+( )235 2264 MS ( )260 2264 MS (E)285 2264 MS (n)310 2264 MS (g)335 2264 MS (i)360 2264 MS (n)385 2264 MS (e)410 2264 MS (s)435 2264 MS (:)460 2264 MS (:)485 2264 MS (P)510 2264 MS (V)535 2264 MS (e)560 2264 MS (c)585 2264 MS (_)610 2264 MS
+(p)635 2264 MS (t)660 2264 MS (r)685 2264 MS ( )710 2264 MS (d)735 2264 MS (v)760 2264 MS (e)785 2264 MS (c)810 2264 MS (\()835 2264 MS (\))860 2264 MS (;)885 2264 MS
+( )910 2264 MS
+( )235 2311 MS ( )260 2311 MS (v)285 2311 MS (o)310 2311 MS (i)335 2311 MS (d)360 2311 MS ( )385 2311 MS (d)410 2311 MS (v)435 2311 MS (e)460 2311 MS (c)485 2311 MS (\()510 2311 MS (E)535 2311 MS (n)560 2311 MS (g)585 2311 MS (i)610 2311 MS
+(n)635 2311 MS (e)660 2311 MS (s)685 2311 MS (:)710 2311 MS (:)735 2311 MS (P)760 2311 MS (V)785 2311 MS (e)810 2311 MS (c)835 2311 MS (_)860 2311 MS (p)885 2311 MS (t)910 2311 MS (r)935 2311 MS ( )960 2311 MS (v)985 2311 MS (e)1010 2311 MS
+(c)1035 2311 MS (\))1060 2311 MS (;)1085 2311 MS
+( )1110 2311 MS
+( )235 2358 MS ( )260 2358 MS (v)285 2358 MS (o)310 2358 MS (i)335 2358 MS (d)360 2358 MS ( )385 2358 MS (g)410 2358 MS (e)435 2358 MS (t)460 2358 MS (_)485 2358 MS (d)510 2358 MS (v)535 2358 MS (e)560 2358 MS (c)585 2358 MS (\()610 2358 MS
+(c)635 2358 MS (o)660 2358 MS (n)685 2358 MS (s)710 2358 MS (t)735 2358 MS ( )760 2358 MS (c)785 2358 MS (h)810 2358 MS (a)835 2358 MS (r)860 2358 MS (*)885 2358 MS ( )910 2358 MS (i)935 2358 MS (d)960 2358 MS (_)985 2358 MS (c)1010 2358 MS
+(a)1035 2358 MS (l)1060 2358 MS (l)1085 2358 MS (b)1110 2358 MS (a)1135 2358 MS (c)1160 2358 MS (k)1185 2358 MS (\))1210 2358 MS (;)1235 2358 MS
+( )1260 2358 MS
+( )235 2405 MS ( )260 2405 MS (v)285 2405 MS (o)310 2405 MS (i)335 2405 MS (d)360 2405 MS ( )385 2405 MS (p)410 2405 MS (u)435 2405 MS (t)460 2405 MS (_)485 2405 MS (d)510 2405 MS (v)535 2405 MS (e)560 2405 MS (c)585 2405 MS (\()610 2405 MS
+(E)635 2405 MS (n)660 2405 MS (g)685 2405 MS (i)710 2405 MS (n)735 2405 MS (e)760 2405 MS (s)785 2405 MS (:)810 2405 MS (:)835 2405 MS (P)860 2405 MS (V)885 2405 MS (e)910 2405 MS (c)935 2405 MS (_)960 2405 MS (p)985 2405 MS (t)1010 2405 MS
+(r)1035 2405 MS ( )1060 2405 MS (v)1085 2405 MS (e)1110 2405 MS (c)1135 2405 MS (,)1160 2405 MS (c)1185 2405 MS (o)1210 2405 MS (n)1235 2405 MS (s)1260 2405 MS (t)1285 2405 MS ( )1310 2405 MS (c)1335 2405 MS (h)1360 2405 MS (a)1385 2405 MS (r)1410 2405 MS
+(*)1435 2405 MS ( )1460 2405 MS (i)1485 2405 MS (d)1510 2405 MS (_)1535 2405 MS (c)1560 2405 MS (a)1585 2405 MS (l)1610 2405 MS (l)1635 2405 MS (b)1660 2405 MS (a)1685 2405 MS (c)1710 2405 MS (k)1735 2405 MS (\))1760 2405 MS (;)1785 2405 MS
+( )1810 2405 MS
+( )235 2453 MS
+(p)235 2500 MS (r)260 2500 MS (o)285 2500 MS (t)310 2500 MS (e)335 2500 MS (c)360 2500 MS (t)385 2500 MS (e)410 2500 MS (d)435 2500 MS (:)460 2500 MS
+( )485 2500 MS
+( )235 2547 MS ( )260 2547 MS (/)285 2547 MS (/)310 2547 MS ( )335 2547 MS (f)360 2547 MS (i)385 2547 MS (l)410 2547 MS (e)435 2547 MS (n)460 2547 MS (a)485 2547 MS (m)510 2547 MS (e)535 2547 MS
+( )560 2547 MS
+( )235 2594 MS ( )260 2594 MS (s)285 2594 MS (t)310 2594 MS (r)335 2594 MS (i)360 2594 MS (n)385 2594 MS (g)410 2594 MS ( )435 2594 MS (_)460 2594 MS (f)485 2594 MS (i)510 2594 MS (l)535 2594 MS (e)560 2594 MS (N)585 2594 MS (a)610 2594 MS
+(m)635 2594 MS (e)660 2594 MS (;)685 2594 MS
+( )710 2594 MS
+( )235 2641 MS ( )260 2641 MS (/)285 2641 MS (/)310 2641 MS ( )335 2641 MS (N)360 2641 MS (P)385 2641 MS ( )410 2641 MS (v)435 2641 MS (e)460 2641 MS (c)485 2641 MS (t)510 2641 MS (o)535 2641 MS (r)560 2641 MS ( )585 2641 MS (p)610 2641 MS
+(o)635 2641 MS (i)660 2641 MS (n)685 2641 MS (t)710 2641 MS (e)735 2641 MS (r)760 2641 MS
+( )785 2641 MS
+( )235 2689 MS ( )260 2689 MS (N)285 2689 MS (P)310 2689 MS (v)335 2689 MS (e)360 2689 MS (c)385 2689 MS (t)410 2689 MS (o)435 2689 MS (r)460 2689 MS
+( )485 2689 MS (*)510 2689 MS (_)535 2689 MS (v)560 2689 MS (e)585 2689 MS (c)610 2689 MS (;)635 2689 MS
+( )660 2689 MS
+( )235 2736 MS ( )260 2736 MS (/)285 2736 MS (/)310 2736 MS ( )335 2736 MS (G)360 2736 MS (e)385 2736 MS (t)410 2736 MS ( )435 2736 MS (L)460 2736 MS (o)485 2736 MS (c)510 2736 MS (a)535 2736 MS (l)560 2736 MS ( )585 2736 MS (D)610 2736 MS
+(a)635 2736 MS (t)660 2736 MS (a)685 2736 MS
+( )710 2736 MS
+( )235 2783 MS ( )260 2783 MS
+(E)285 2783 MS (n)310 2783 MS (g)335 2783 MS (i)360 2783 MS (n)385 2783 MS (e)410 2783 MS (s)435 2783 MS (:)460 2783 MS (:)485 2783 MS (P)510 2783 MS (V)535 2783 MS (e)560 2783 MS (c)585 2783 MS (_)610 2783 MS (p)635 2783 MS (t)660 2783 MS
+(r)685 2783 MS ( )710 2783 MS (G)735 2783 MS (e)760 2783 MS (t)785 2783 MS (L)810 2783 MS (o)835 2783 MS (c)860 2783 MS (a)885 2783 MS (l)910 2783 MS (D)935 2783 MS (a)960 2783 MS (t)985 2783 MS (a)1010 2783 MS (\()1035 2783 MS (v)1060 2783 MS
+(o)1085 2783 MS (i)1110 2783 MS (d)1135 2783 MS (\))1160 2783 MS (;)1185 2783 MS
+( )1210 2783 MS
+(})235 2830 MS ( )260 2830 MS (;)285 2830 MS
+( )310 2830 MS
+( )235 2877 MS
+(#)235 2925 MS (e)260 2925 MS (n)285 2925 MS (d)310 2925 MS (i)335 2925 MS (f)360 2925 MS
+( )385 2925 MS
+( )235 2972 MS
+( )235 3019 MS
+[50 0 0 -50 0 0]/Times-Roman MF
+( )348 3076 MS
+showpage
+%%Page: 21 21
+14.449 827.879 translate 72 300 div dup neg scale
+0 0 transform .25 add round .25 sub exch .25 add round .25 sub exch itransform translate
+1 j
+1 setlinecap
+72 sl
+0.375 g
+n
+494 182 M
+494 155 472 133 445 133 c
+418 133 396 155 396 182 c
+396 209 418 231 445 231 c
+472 231 494 209 494 182 c
+cp
+CM 0.156 0.152 scale
+s
+SM
+71 sl
+n
+660 182 M
+660 155 638 133 611 133 c
+584 133 562 155 562 182 c
+562 209 584 231 611 231 c
+638 231 660 209 660 182 c
+cp
+CM 0.156 0.152 scale
+s
+SM
+n
+120 24 468 152 B
+1 g
+f
+1 sl
+n
+122 26 467 151 B
+cp
+s
+71 sl
+0.375 g
+n
+577 180 M
+577 153 555 131 528 131 c
+501 131 479 153 479 180 c
+479 206 501 228 528 228 c
+555 228 577 206 577 180 c
+cp
+gs
+1 g
+e
+gr
+CM 0.156 0.152 scale
+s
+SM
+n
+480 180 M
+575 180 L
+CM 0.156 0.152 scale
+s
+SM
+n
+34 18 562 187 B
+1 g
+f
+1 sl
+n
+36 20 561 186 B
+cp
+s
+n
+610 173 M
+591 173 L
+554 124 L
+579 126 L
+609 173 L
+610 173 L
+cp
+gs
+e
+gr
+s
+n
+448 170 M
+468 170 L
+504 122 L
+479 123 L
+449 170 L
+448 170 L
+cp
+gs
+e
+gr
+s
+0.375 g
+n
+473 140 M
+473 137 470 135 467 135 c
+464 135 462 137 462 140 c
+462 142 464 145 467 145 c
+470 145 473 142 473 140 c
+cp
+gs
+e
+gr
+s
+n
+593 139 M
+593 136 590 134 588 134 c
+585 134 583 136 583 139 c
+583 141 585 144 588 144 c
+590 144 593 141 593 139 c
+cp
+gs
+e
+gr
+s
+72 sl
+n
+665 137 M
+665 229 L
+CM 0.156 0.152 scale
+s
+SM
+[29 0 0 -29 0 0]/Times-Roman MF
+0 g
+( )676 243 MS
+[50 0 0 -50 0 0]/Times-Roman MF
+(D)400 289 MS (E)436 289 MS (N)467 289 MS ( )503 289 MS ( )516 289 MS (S)529 289 MS (a)557 289 MS (c)579 289 MS (l)601 289 MS (a)613 289 MS (y)636 289 MS
+( )660 289 MS
+( )1297 140 MS
+[38 0 0 -38 0 0]/Times-Roman MF
+(S)1785 129 MS (F)1806 129 MS (M)1827 129 MS (E)1861 129 MS (/)1883 129 MS (L)1894 129 MS (G)1916 129 MS (L)1943 129 MS (S)1965 129 MS (/)1986 129 MS (R)1997 129 MS (T)2022 129 MS (/)2045 129 MS (0)2056 129 MS (2)2075 129 MS
+(-)2094 129 MS
+(0)2106 129 MS (0)2125 129 MS (2)2144 129 MS
+( )2163 129 MS
+(D)1785 173 MS (a)1812 173 MS (t)1829 173 MS (e)1840 173 MS
+( )1856 173 MS
+(:)1866 173 MS
+( )1875 173 MS
+(3)1885 173 MS (0)1904 173 MS (/)1923 173 MS (0)1934 173 MS (5)1952 173 MS (/)1971 173 MS (2)1982 173 MS (0)2000 173 MS (0)2019 173 MS (2)2038 173 MS
+( )2057 173 MS
+n
+5 5 232 89 B
+f
+n
+5 5 232 89 B
+f
+n
+584 5 238 89 B
+f
+n
+5 5 823 89 B
+f
+n
+938 5 829 89 B
+f
+n
+5 5 1768 89 B
+f
+n
+436 5 1774 89 B
+f
+n
+5 5 2211 89 B
+f
+n
+5 5 2211 89 B
+f
+n
+5 256 232 95 B
+f
+n
+2 256 823 95 B
+f
+n
+2 256 1768 95 B
+f
+n
+5 256 2211 95 B
+f
+[50 0 0 -50 0 0]/Times-Roman MF
+(D)322 400 MS (M)358 400 MS (2)402 400 MS (S)427 400 MS (/)455 400 MS (S)469 400 MS (F)497 400 MS (M)524 400 MS (E)568 400 MS (/)599 400 MS (L)613 400 MS (G)643 400 MS (L)680 400 MS (S)710 400 MS
+( )738 400 MS
+[50 0 0 -50 0 0]/Times-Bold MF
+gs
+n
+241 53 1102 367 CB
+(R)1102 413 MS (A)1138 413 MS (P)1174 413 MS (P)1204 413 MS (O)1234 413 MS (R)1273 413 MS (T)1310 413 MS
+gr
+gs
+n
+150 53 1343 367 CB
+( )1343 413 MS (D)1356 413 MS (M)1392 413 MS (2)1440 413 MS (S)1465 413 MS
+gr
+[50 0 0 -50 0 0]/Times-Roman MF
+gs
+n
+24 52 1493 368 CB
+( )1493 413 MS
+gr
+[38 0 0 -38 0 0]/Times-Roman MF
+(P)1785 400 MS (a)1806 400 MS (g)1823 400 MS (e)1841 400 MS ( )1858 400 MS
+[50 0 0 -50 0 0]/Times-Roman MF
+(2)1868 400 MS (1)1893 400 MS
+(/)1918 400 MS
+(3)1932 400 MS (0)1957 400 MS
+[38 0 0 -38 0 0]/Times-Roman MF
+( )1982 400 MS
+n
+5 2 232 352 B
+f
+n
+2 2 823 352 B
+f
+n
+941 2 826 352 B
+f
+n
+2 2 1768 352 B
+f
+n
+5 2 2211 352 B
+f
+n
+5 67 232 355 B
+f
+n
+590 1 232 423 B
+f
+n
+2 67 823 355 B
+f
+n
+1 1 823 423 B
+f
+n
+942 1 825 423 B
+f
+n
+2 67 1768 355 B
+f
+n
+1 1 1768 423 B
+f
+n
+440 1 1770 423 B
+f
+n
+5 67 2211 355 B
+f
+n
+5 1 2211 423 B
+f
+[50 0 0 -50 0 0]/Times-Roman MF
+( )235 470 MS
+[33 0 0 -33 0 0]/Times-Roman MF
+/IsChar{exch/CharStrings get exch known}bd/MapCh{3 -1 roll/Encoding get 3 1\r
+roll put}bd/MapDegree{dup 16#b0 exch/degree IsChar{/degree}{/ring}ifelse MapCh}\r
+bd/MapBB{dup 16#a6 exch/brokenbar IsChar{/brokenbar}{/bar}ifelse MapCh}bd\r
+/reencode{findfont begin currentdict dup length dict begin{1 index/FID ne{def}\r
+{pop pop}ifelse}forall/FontName exch def dup length 0 ne{/Encoding Encoding 256\r
+array copy def 0 exch{dup type/nametype eq{Encoding 2 index 2 index put pop 1\r
+add}{exch pop}ifelse}forall}if pop currentdict dup end end/FontName get exch\r
+definefont dup MapDegree MapBB}bd/LATENC[0/grave/acute/circumflex/tilde/macron\r
+/breve/dotaccent/dieresis/ring/cedilla/hungarumlaut/ogonek/caron/dotlessi/fi/fl\r
+/Lslash/lslash/Zcaron/zcaron/minus/.notdef/.notdef/.notdef/.notdef/.notdef\r
+/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/space/exclam/quotedbl\r
+/numbersign/dollar/percent/ampersand/quotesingle/parenleft/parenright/asterisk\r
+/plus/comma/hyphen/period/slash/zero/one/two/three/four/five/six/seven/eight\r
+/nine/colon/semicolon/less/equal/greater/question/at/A/B/C/D/E/F/G/H/I/J/K/L/M\r
+/N/O/P/Q/R/S/T/U/V/W/X/Y/Z/bracketleft/backslash/bracketright/asciicircum\r
+/underscore/grave/a/b/c/d/e/f/g/h/i/j/k/l/m/n/o/p/q/r/s/t/u/v/w/x/y/z/braceleft\r
+/bar/braceright/asciitilde/.notdef/.notdef/.notdef/quotesinglbase/florin\r
+/quotedblbase/ellipsis/dagger/daggerdbl/circumflex/perthousand/Scaron\r
+/guilsinglleft/OE/.notdef/.notdef/.notdef/.notdef/quoteleft/quoteright\r
+/quotedblleft/quotedblright/bullet/endash/emdash/tilde/trademark/scaron\r
+/guilsinglright/oe/.notdef/.notdef/Ydieresis/.notdef/exclamdown/cent/sterling\r
+/currency/yen/brokenbar/section/dieresis/copyright/ordfeminine/guillemotleft\r
+/logicalnot/hyphen/registered/macron/degree/plusminus/twosuperior/threesuperior\r
+/acute/mu/paragraph/periodcentered/cedilla/onesuperior/ordmasculine\r
+/guillemotright/onequarter/onehalf/threequarters/questiondown/Agrave/Aacute\r
+/Acircumflex/Atilde/Adieresis/Aring/AE/Ccedilla/Egrave/Eacute/Ecircumflex\r
+/Edieresis/Igrave/Iacute/Icircumflex/Idieresis/Eth/Ntilde/Ograve/Oacute\r
+/Ocircumflex/Otilde/Odieresis/multiply/Oslash/Ugrave/Uacute/Ucircumflex\r
+/Udieresis/Yacute/Thorn/germandbls/agrave/aacute/acircumflex/atilde/adieresis\r
+/aring/ae/ccedilla/egrave/eacute/ecircumflex/edieresis/igrave/iacute\r
+/icircumflex/idieresis/eth/ntilde/ograve/oacute/ocircumflex/otilde/odieresis\r
+/divide/oslash/ugrave/uacute/ucircumflex/udieresis/yacute/thorn/ydieresis]def\r
+LATENC /_Times-Roman /Times-Roman reencode
+[33 0 0 -33 0 0]/_Times-Roman MF
+(L)242 3256 MS (e)262 3256 MS (s)277 3256 MS ( )289 3256 MS (i)298 3256 MS (n)307 3256 MS (f)324 3256 MS (o)335 3256 MS (r)351 3256 MS (m)363 3256 MS (a)388 3256 MS (t)403 3256 MS (i)412 3256 MS (o)422 3256 MS (n)439 3256 MS (s)456 3256 MS
+( )468 3256 MS (c)477 3256 MS (o)492 3256 MS (n)508 3256 MS (t)524 3256 MS (e)534 3256 MS (n)549 3256 MS (u)565 3256 MS (e)582 3256 MS (s)597 3256 MS ( )610 3256 MS (d)618 3256 MS (a)634 3256 MS (n)650 3256 MS (s)667 3256 MS ( )679 3256 MS
+(c)688 3256 MS (e)703 3256 MS ( )717 3256 MS (d)726 3256 MS (o)742 3256 MS (c)759 3256 MS (u)773 3256 MS (m)791 3256 MS (e)817 3256 MS (n)831 3256 MS (t)847 3256 MS ( )857 3256 MS (s)866 3256 MS (o)878 3256 MS (n)895 3256 MS (t)911 3256 MS
+( )921 3256 MS (r)929 3256 MS (\351)941 3256 MS (s)956 3256 MS (e)968 3256 MS (r)982 3256 MS (v)994 3256 MS (\351)1011 3256 MS (e)1026 3256 MS (s)1041 3256 MS ( )1053 3256 MS (a)1061 3256 MS (u)1076 3256 MS (x)1093 3256 MS ( )1109 3256 MS (d)1118 3256 MS
+(e)1135 3256 MS (s)1150 3256 MS (t)1162 3256 MS (i)1171 3256 MS (n)1181 3256 MS (a)1197 3256 MS (t)1212 3256 MS (a)1221 3256 MS (i)1236 3256 MS (r)1245 3256 MS (e)1257 3256 MS (s)1272 3256 MS ( )1284 3256 MS (n)1293 3256 MS (o)1309 3256 MS (m)1326 3256 MS
+(m)1352 3256 MS (\351)1378 3256 MS (m)1393 3256 MS (e)1419 3256 MS (n)1433 3256 MS (t)1450 3256 MS ( )1459 3256 MS (d)1468 3256 MS (\351)1484 3256 MS (s)1499 3256 MS (i)1512 3256 MS (g)1521 3256 MS
+(n)1538 3256 MS (\351)1555 3256 MS (s)1570 3256 MS ( )1582 3256 MS (e)1591 3256 MS (t)1605 3256 MS ( )1615 3256 MS (n)1623 3256 MS (e)1640 3256 MS ( )1654 3256 MS (p)1663 3256 MS (e)1680 3256 MS (u)1694 3256 MS (v)1711 3256 MS (e)1728 3256 MS (n)1743 3256 MS
+(t)1759 3256 MS ( )1768 3256 MS (r)1776 3256 MS (e)1788 3256 MS (c)1803 3256 MS (e)1818 3256 MS (v)1832 3256 MS (o)1849 3256 MS (i)1865 3256 MS (r)1874 3256 MS ( )1886 3256 MS (a)1894 3256 MS (u)1909 3256 MS (c)1926 3256 MS (u)1940 3256 MS (n)1957 3256 MS
+(e)1974 3256 MS ( )1988 3256 MS (d)1997 3256 MS (i)2013 3256 MS (f)2023 3256 MS (f)2034 3256 MS (u)2044 3256 MS (s)2062 3256 MS (i)2074 3256 MS (o)2084 3256 MS (n)2101 3256 MS
+( )2117 3256 MS
+(s)928 3294 MS (a)940 3294 MS (n)955 3294 MS (s)972 3294 MS ( )985 3294 MS (l)993 3294 MS (\222)1002 3294 MS (a)1013 3294 MS (u)1028 3294 MS (t)1045 3294 MS (o)1054 3294 MS (r)1071 3294 MS (i)1082 3294 MS (s)1092 3294 MS (a)1104 3294 MS (t)1119 3294 MS
+(i)1128 3294 MS (o)1138 3294 MS (n)1154 3294 MS ( )1171 3294 MS (e)1180 3294 MS (x)1194 3294 MS (p)1211 3294 MS (r)1227 3294 MS (e)1239 3294 MS (s)1254 3294 MS (s)1267 3294 MS (e)1280 3294 MS ( )1294 3294 MS (d)1303 3294 MS (u)1319 3294 MS ( )1336 3294 MS
+(D)1344 3294 MS (M)1368 3294 MS (2)1397 3294 MS (S)1414 3294 MS
+[50 0 0 -50 0 0]/Times-Roman MF
+( )1432 3294 MS
+[50 0 0 -50 0 0]/Helvetica-BoldOblique MF
+(9)310 577 MS (.)338 577 MS (2)352 577 MS
+( )380 577 MS
+LATENC /_Helvetica-BoldOblique /Helvetica-BoldOblique reencode
+[50 0 0 -50 0 0]/_Helvetica-BoldOblique MF
+(L)430 577 MS (e)461 577 MS ( )489 577 MS (c)503 577 MS (o)531 577 MS (m)562 577 MS (p)606 577 MS (o)636 577 MS (s)667 577 MS (a)695 577 MS (n)722 577 MS (t)753 577 MS ( )770 577 MS (e)784 577 MS (t)811 577 MS ( )828 577 MS
+(l)842 577 MS (a)856 577 MS ( )884 577 MS (d)897 577 MS (o)928 577 MS (n)958 577 MS (n)989 577 MS (\351)1020 577 MS (e)1047 577 MS ( )1075 577 MS (m)1089 577 MS (a)1133 577 MS (t)1161 577 MS (r)1178 577 MS (i)1197 577 MS (c)1211 577 MS
+(e)1239 577 MS ( )1267 577 MS (p)1281 577 MS (a)1311 577 MS (r)1339 577 MS (a)1358 577 MS (l)1386 577 MS (l)1400 577 MS (\350)1414 577 MS (l)1441 577 MS (e)1455 577 MS
+( )1483 577 MS
+[50 0 0 -50 0 0]/Times-Roman MF
+( )235 647 MS
+LATENC /_Times-Roman /Times-Roman reencode
+[50 0 0 -50 0 0]/_Times-Roman MF
+(L)348 705 MS (e)378 705 MS ( )400 705 MS (c)415 705 MS (o)437 705 MS (m)464 705 MS (p)501 705 MS (o)526 705 MS (s)552 705 MS (a)571 705 MS (n)594 705 MS (t)618 705 MS ( )633 705 MS (p)648 705 MS (a)673 705 MS (r)695 705 MS
+(a)712 705 MS (l)735 705 MS (l)748 705 MS (\350)761 705 MS (l)784 705 MS (e)797 705 MS ( )820 705 MS (m)836 705 MS (a)874 705 MS (t)896 705 MS (r)911 705 MS (i)928 705 MS (c)940 705 MS (e)963 705 MS ( )985 705 MS (N)1000 705 MS
+(u)1036 705 MS (m)1062 705 MS (e)1100 705 MS (r)1122 705 MS (i)1140 705 MS (c)1153 705 MS (a)1175 705 MS (l)1198 705 MS ( )1211 705 MS (P)1226 705 MS (l)1255 705 MS (a)1268 705 MS (t)1290 705 MS (o)1305 705 MS (n)1331 705 MS ( )1355 705 MS
+(e)1371 705 MS (s)1393 705 MS (t)1412 705 MS ( )1427 705 MS (c)1442 705 MS (e)1464 705 MS (n)1486 705 MS (s)1511 705 MS (\351)1530 705 MS ( )1552 705 MS (\352)1568 705 MS (t)1590 705 MS (r)1605 705 MS (e)1622 705 MS ( )1644 705 MS (r)1659 705 MS
+(e)1676 705 MS (p)1698 705 MS (r)1723 705 MS (\351)1740 705 MS (s)1762 705 MS (e)1781 705 MS (n)1803 705 MS (t)1827 705 MS (a)1842 705 MS (t)1864 705 MS (i)1879 705 MS (f)1892 705 MS ( )1908 705 MS (d)1923 705 MS (\222)1949 705 MS (u)1965 705 MS
+(n)1991 705 MS ( )2015 705 MS (c)2030 705 MS (o)2052 705 MS (d)2078 705 MS (e)2103 705 MS ( )2125 705 MS
+(d)235 762 MS (e)260 762 MS ( )282 762 MS (c)296 762 MS (a)318 762 MS (l)341 762 MS (c)354 762 MS (u)376 762 MS (l)402 762 MS ( )415 762 MS (q)429 762 MS (u)454 762 MS (i)480 762 MS ( )493 762 MS (g)507 762 MS (\351)532 762 MS
+(n)555 762 MS (\350)580 762 MS (r)602 762 MS (e)619 762 MS ( )641 762 MS (u)655 762 MS (n)681 762 MS ( )705 762 MS (r)719 762 MS (\351)736 762 MS (s)758 762 MS (u)777 762 MS (l)803 762 MS (t)815 762 MS (a)830 762 MS (t)852 762 MS
+( )867 762 MS (d)881 762 MS (e)906 762 MS ( )928 762 MS (t)942 762 MS (y)958 762 MS (p)981 762 MS (e)1006 762 MS
+( )1028 762 MS (o)1042 762 MS (b)1068 762 MS (j)1093 762 MS (e)1106 762 MS (t)1128 762 MS ( )1143 762 MS (m)1158 762 MS (a)1195 762 MS (t)1217 762 MS (r)1232 762 MS (i)1249 762 MS (c)1262 762 MS (e)1284 762 MS ( )1307 762 MS (p)1321 762 MS
+(a)1346 762 MS (r)1368 762 MS (a)1385 762 MS (l)1408 762 MS (l)1421 762 MS (\350)1434 762 MS (l)1457 762 MS (e)1470 762 MS (.)1492 762 MS ( )1505 762 MS (I)1519 762 MS (l)1537 762 MS ( )1550 762 MS (f)1565 762 MS (a)1581 762 MS (u)1603 762 MS
+(t)1628 762 MS ( )1643 762 MS (b)1657 762 MS (i)1682 762 MS (e)1695 762 MS (n)1718 762 MS ( )1742 762 MS (f)1757 762 MS (a)1773 762 MS (i)1796 762 MS (r)1809 762 MS (e)1826 762 MS ( )1848 762 MS (l)1863 762 MS (a)1876 762 MS ( )1899 762 MS
+(d)1913 762 MS (i)1939 762 MS (s)1952 762 MS (t)1971 762 MS (i)1987 762 MS (n)2000 762 MS (c)2024 762 MS (t)2046 762 MS (i)2062 762 MS (o)2074 762 MS (n)2100 762 MS ( )2125 762 MS
+(e)235 820 MS (n)257 820 MS (t)281 820 MS (r)296 820 MS (e)313 820 MS ( )335 820 MS (l)358 820 MS (e)370 820 MS ( )392 820 MS (c)415 820 MS (o)437 820 MS (m)464 820 MS (p)501 820 MS (o)526 820 MS (s)552 820 MS (a)571 820 MS
+(n)593 820 MS (t)617 820 MS ( )632 820 MS (e)654 820 MS (t)676 820 MS ( )691 820 MS (l)714 820 MS (a)726 820 MS ( )748 820 MS (d)770 820 MS (o)795 820 MS (n)821 820 MS (n)846 820 MS (\351)870 820 MS (e)892 820 MS (,)914 820 MS
+( )927 820 MS (m)950 820 MS (\352)988 820 MS (m)1011 820 MS (e)1049 820 MS ( )1071 820 MS (s)1094 820 MS (i)1114 820 MS ( )1127 820 MS (t)1149 820 MS (o)1164 820 MS (u)1190 820 MS (s)1215 820 MS ( )1234 820 MS (l)1256 820 MS (e)1269 820 MS
+(s)1292 820 MS ( )1311 820 MS (d)1333 820 MS (e)1358 820 MS (u)1380 820 MS (x)1406 820 MS ( )1430 820 MS (s)1453 820 MS (o)1472 820 MS (n)1498 820 MS (t)1522 820 MS ( )1537 820 MS (r)1559 820 MS (e)1576 820 MS (p)1598 820 MS (r)1623 820 MS
+(\351)1640 820 MS (s)1662 820 MS (e)1681 820 MS (n)1703 820 MS (t)1727 820 MS (\351)1742 820 MS (s)1764 820 MS ( )1783 820 MS (d)1805 820 MS (a)1830 820 MS (n)1853 820 MS (s)1877 820 MS ( )1897 820 MS (l)1920 820 MS (\222)1933 820 MS (i)1950 820 MS
+(n)1963 820 MS (t)1987 820 MS (e)2002 820 MS (r)2024 820 MS (f)2042 820 MS (a)2058 820 MS (c)2080 820 MS (e)2102 820 MS ( )2125 820 MS
+(C)235 877 MS (O)268 877 MS (R)304 877 MS (B)337 877 MS (A)371 877 MS ( )406 877 MS (c)419 877 MS (o)441 877 MS (m)468 877 MS (m)506 877 MS (e)544 877 MS ( )566 877 MS (u)579 877 MS (n)604 877 MS (e)629 877 MS ( )651 877 MS
+(\253)664 877 MS
+( )688 877 MS
+(i)702 877 MS (n)715 877 MS (t)739 877 MS (e)754 877 MS (r)776 877 MS (f)794 877 MS (a)809 877 MS (c)831 877 MS (e)853 877 MS
+( )875 877 MS
+(\273)889 877 MS (.)913 877 MS ( )926 877 MS (S)939 877 MS (i)968 877 MS ( )980 877 MS (l)994 877 MS (a)1006 877 MS ( )1028 877 MS (d)1041 877 MS (o)1066 877 MS (n)1092 877 MS (n)1117 877 MS (\351)1141 877 MS (e)1163 877 MS ( )1185 877 MS
+(m)1199 877 MS (a)1238 877 MS (t)1260 877 MS (r)1275 877 MS (i)1292 877 MS (c)1304 877 MS (e)1326 877 MS ( )1348 877 MS (e)1361 877 MS (s)1383 877 MS (t)1402 877 MS ( )1417 877 MS (u)1430 877 MS (n)1455 877 MS (e)1479 877 MS ( )1501 877 MS
+(i)1515 877 MS (n)1528 877 MS (t)1552 877 MS (e)1567 877 MS (r)1589 877 MS (f)1607 877 MS (a)1622 877 MS (c)1644 877 MS (e)1666 877 MS ( )1688 877 MS (e)1701 877 MS (t)1723 877 MS ( )1738 877 MS (n)1751 877 MS (o)1775 877 MS (n)1801 877 MS
+( )1825 877 MS (s)1838 877 MS (e)1857 877 MS (u)1879 877 MS (l)1905 877 MS (e)1917 877 MS (m)1940 877 MS (e)1978 877 MS (n)2001 877 MS (t)2025 877 MS ( )2040 877 MS (u)2053 877 MS (n)2078 877 MS (e)2102 877 MS ( )2125 877 MS
+(s)235 935 MS (t)254 935 MS (r)269 935 MS (u)286 935 MS (c)311 935 MS (t)332 935 MS (u)347 935 MS (r)372 935 MS (e)389 935 MS ( )410 935 MS (C)438 935 MS (S)471 935 MS (R)499 935 MS (,)532 935 MS ( )545 935 MS (c)573 935 MS
+(\222)595 935 MS (e)611 935 MS (s)633 935 MS (t)652 935 MS ( )667 935 MS (p)695 935 MS (o)719 935 MS (u)745 935 MS (r)770 935 MS ( )786 935 MS (p)814 935 MS (e)839 935 MS (r)861 935 MS (m)878 935 MS (e)915 935 MS (t)937 935 MS
+(t)952 935 MS (r)966 935 MS (e)983 935 MS ( )1005 935 MS (d)1033 935 MS (\222)1058 935 MS (u)1074 935 MS (n)1099 935 MS (e)1123 935 MS ( )1145 935 MS (p)1173 935 MS (a)1198 935 MS (r)1220 935 MS (t)1237 935 MS ( )1251 935 MS (d)1279 935 MS
+(e)1304 935 MS ( )1326 935 MS (t)1353 935 MS (r)1368 935 MS (a)1385 935 MS (n)1407 935 MS (s)1431 935 MS (m)1451 935 MS (e)1489 935 MS (t)1511 935 MS (t)1525 935 MS (r)1540 935 MS (e)1557 935 MS ( )1579 935 MS (u)1607 935 MS (n)1632 935 MS
+(i)1657 935 MS (q)1669 935 MS (u)1694 935 MS (e)1719 935 MS (m)1742 935 MS (e)1780 935 MS (n)1803 935 MS (t)1827 935 MS ( )1842 935 MS (s)1870 935 MS (a)1889 935 MS ( )1911 935 MS (r)1939 935 MS (\351)1956 935 MS (f)1978 935 MS (\351)1993 935 MS
+(r)2015 935 MS (e)2032 935 MS (n)2055 935 MS (c)2079 935 MS (e)2102 935 MS ( )2125 935 MS
+(C)235 992 MS (O)268 992 MS (R)304 992 MS (B)337 992 MS (A)371 992 MS ( )407 992 MS (e)426 992 MS (n)449 992 MS ( )473 992 MS (a)493 992 MS (r)515 992 MS (g)532 992 MS (u)557 992 MS (m)583 992 MS (e)620 992 MS (n)643 992 MS
+(t)667 992 MS ( )682 992 MS (d)701 992 MS (e)726 992 MS ( )748 992 MS (s)768 992 MS (e)787 992 MS (r)809 992 MS (v)827 992 MS (i)852 992 MS (c)865 992 MS (e)887 992 MS ( )909 992 MS (e)928 992 MS (t)950 992 MS ( )965 992 MS
+(n)985 992 MS (o)1009 992 MS (n)1035 992 MS ( )1059 992 MS (p)1078 992 MS (a)1103 992 MS (s)1126 992 MS ( )1145 992 MS (l)1165 992 MS (\222)1178 992 MS (e)1195 992 MS (n)1218 992 MS (s)1243 992 MS (e)1262 992 MS (m)1285 992 MS (b)1323 992 MS
+(l)1348 992 MS (e)1361 992 MS ( )1384 992 MS (d)1403 992 MS (e)1428 992 MS ( )1451 992 MS (l)1471 992 MS (a)1484 992 MS ( )1506 992 MS (m)1526 992 MS (a)1564 992 MS (t)1586 992 MS (r)1601 992 MS (i)1619 992 MS (c)1631 992 MS (e)1653 992 MS
+(,)1675 992 MS ( )1688 992 MS (e)1707 992 MS (t)1729 992 MS ( )1744 992 MS (d)1763 992 MS (\222)1788 992 MS (a)1804 992 MS (u)1826 992 MS (t)1851 992 MS (r)1866 992 MS (e)1883 992 MS ( )1905 992 MS (p)1924 992 MS (a)1949 992 MS (r)1971 992 MS
+(t)1988 992 MS ( )2003 992 MS (d)2022 992 MS (e)2047 992 MS ( )2069 992 MS (l)2089 992 MS (e)2102 992 MS ( )2125 992 MS
+(d)235 1050 MS (\351)260 1050 MS (f)283 1050 MS (i)299 1050 MS (n)312 1050 MS (i)338 1050 MS (r)350 1050 MS ( )368 1050 MS (e)387 1050 MS (n)410 1050 MS ( )434 1050 MS (t)453 1050 MS (a)468 1050 MS (n)490 1050 MS (t)514 1050 MS ( )529 1050 MS
+(q)548 1050 MS (u)573 1050 MS (e)598 1050 MS ( )621 1050 MS (d)640 1050 MS (o)665 1050 MS (n)691 1050 MS (n)716 1050 MS (\351)740 1050 MS (e)762 1050 MS ( )784 1050 MS (p)803 1050 MS (a)829 1050 MS (r)851 1050 MS (a)868 1050 MS (l)891 1050 MS
+(l)904 1050 MS (\350)917 1050 MS (l)940 1050 MS (e)953 1050 MS
+( )975 1050 MS
+(:)988 1050 MS ( )1002 1050 MS (c)1022 1050 MS (\222)1044 1050 MS (e)1060 1050 MS (s)1083 1050 MS (t)1102 1050 MS ( )1117 1050 MS (\340)1136 1050 MS ( )1158 1050 MS (d)1177 1050 MS (i)1203 1050 MS (r)1215 1050 MS (e)1233 1050 MS ( )1256 1050 MS (q)1275 1050 MS
+(u)1300 1050 MS (e)1325 1050 MS ( )1347 1050 MS (l)1367 1050 MS (\222)1380 1050 MS (i)1398 1050 MS (n)1411 1050 MS (t)1435 1050 MS (e)1450 1050 MS (r)1472 1050 MS (f)1490 1050 MS (a)1505 1050 MS (c)1527 1050 MS (e)1550 1050 MS ( )1572 1050 MS (P)1591 1050 MS
+(M)1619 1050 MS (a)1663 1050 MS (t)1685 1050 MS ( )1700 1050 MS (h)1720 1050 MS (\351)1744 1050 MS (r)1766 1050 MS (i)1784 1050 MS (t)1796 1050 MS (e)1811 1050 MS ( )1833 1050 MS (d)1852 1050 MS (e)1877 1050 MS ( )1900 1050 MS (l)1920 1050 MS (\222)1933 1050 MS
+(i)1950 1050 MS (n)1963 1050 MS (t)1987 1050 MS (e)2002 1050 MS (r)2024 1050 MS (f)2042 1050 MS (a)2058 1050 MS (c)2080 1050 MS (e)2102 1050 MS ( )2125 1050 MS
+(g)235 1107 MS (\351)260 1107 MS (n)282 1107 MS
+(\351)306 1107 MS (r)328 1107 MS (i)346 1107 MS (q)359 1107 MS (u)384 1107 MS (e)409 1107 MS ( )431 1107 MS (M)444 1107 MS (P)488 1107 MS (I)516 1107 MS (O)533 1107 MS (b)570 1107 MS (j)595 1107 MS (e)608 1107 MS (c)630 1107 MS (t)652 1107 MS
+(.)667 1107 MS
+( )680 1107 MS
+( )235 1165 MS
+[54 0 0 -54 0 0]/Helvetica-Bold MF
+(9)310 1275 MS (.)340 1275 MS (2)355 1275 MS (.)385 1275 MS (1)400 1275 MS
+( )430 1275 MS
+LATENC /_Helvetica-Bold /Helvetica-Bold reencode
+[54 0 0 -54 0 0]/_Helvetica-Bold MF
+(D)460 1275 MS (\351)499 1275 MS (f)529 1275 MS (i)547 1275 MS (n)562 1275 MS (i)595 1275 MS (t)610 1275 MS (i)628 1275 MS (o)643 1275 MS (n)676 1275 MS ( )709 1275 MS (d)724 1275 MS (e)757 1275 MS ( )787 1275 MS (l)802 1275 MS (\222)817 1275 MS
+(i)832 1275 MS (n)847 1275 MS (t)880 1275 MS (e)898 1275 MS (r)928 1275 MS (f)949 1275 MS (a)968 1275 MS (c)998 1275 MS (e)1028 1275 MS ( )1058 1275 MS (C)1073 1275 MS (O)1112 1275 MS (R)1154 1275 MS (B)1193 1275 MS (A)1233 1275 MS
+( )1271 1275 MS
+[50 0 0 -50 0 0]/Times-Roman MF
+( )235 1347 MS
+LATENC /_Times-Roman /Times-Roman reencode
+[50 0 0 -50 0 0]/_Times-Roman MF
+(D)348 1405 MS (a)384 1405 MS (n)406 1405 MS (s)431 1405 MS ( )450 1405 MS (l)483 1405 MS (\222)496 1405 MS (e)512 1405 MS (x)535 1405 MS (e)560 1405 MS (m)583 1405 MS (p)620 1405 MS (l)646 1405 MS (e)659 1405 MS ( )682 1405 MS (c)714 1405 MS
+(i)737 1405 MS
+(-)749 1405 MS
+(d)766 1405 MS (e)791 1405 MS (s)814 1405 MS (s)833 1405 MS (o)852 1405 MS (u)878 1405 MS (s)903 1405 MS (,)922 1405 MS ( )935 1405 MS (o)967 1405 MS (n)993 1405 MS ( )1017 1405 MS (d)1049 1405 MS (\351)1074 1405 MS (f)1097 1405 MS (i)1113 1405 MS
+(n)1126 1405 MS (i)1152 1405 MS (t)1164 1405 MS ( )1179 1405 MS (d)1211 1405 MS (e)1236 1405 MS (u)1258 1405 MS (x)1284 1405 MS ( )1308 1405 MS (i)1341 1405 MS (n)1355 1405 MS (t)1379 1405 MS (e)1394 1405 MS (r)1416 1405 MS (f)1433 1405 MS (a)1449 1405 MS
+(c)1471 1405 MS (e)1493 1405 MS (s)1515 1405 MS (.)1534 1405 MS ( )1547 1405 MS (C)1579 1405 MS (e)1612 1405 MS (s)1635 1405 MS ( )1654 1405 MS (d)1686 1405 MS (e)1711 1405 MS (u)1733 1405 MS (x)1759 1405 MS ( )1783 1405 MS (i)1816 1405 MS (n)1829 1405 MS
+(t)1853 1405 MS (e)1868 1405 MS (r)1890 1405 MS (f)1908 1405 MS (a)1923 1405 MS (c)1946 1405 MS (e)1968 1405 MS (s)1990 1405 MS ( )2009 1405 MS (s)2042 1405 MS (o)2061 1405 MS (n)2087 1405 MS (t)2111 1405 MS ( )2125 1405 MS
+(p)235 1462 MS (a)260 1462 MS (r)282 1462 MS (a)299 1462 MS (l)322 1462 MS (l)335 1462 MS (\350)348 1462 MS (l)371 1462 MS (e)384 1462 MS (s)407 1462 MS ( )426 1462 MS (c)439 1462 MS (a)461 1462 MS (r)483 1462 MS ( )500 1462 MS (e)513 1462 MS
+(l)536 1462 MS (l)549 1462 MS (e)562 1462 MS (s)584 1462 MS ( )603 1462 MS (h)617 1462 MS (\351)641 1462 MS (r)663 1462 MS (i)681 1462 MS (t)693 1462 MS (e)708 1462 MS (n)730 1462 MS (t)754 1462 MS ( )769 1462 MS (d)782 1462 MS (e)807 1462 MS
+( )829 1462 MS (l)842 1462 MS (\222)855 1462 MS (i)872 1462 MS (n)885 1462 MS (t)909 1462 MS (e)924 1462 MS (r)946 1462 MS (f)964 1462 MS (a)980 1462 MS (c)1002 1462 MS (e)1024 1462 MS ( )1046 1462 MS (g)1059 1462 MS (\351)1084 1462 MS (n)1107 1462 MS
+(\351)1131 1462 MS (r)1153 1462 MS (i)1171 1462 MS (q)1183 1462 MS (u)1208 1462 MS (e)1233 1462 MS ( )1256 1462 MS (p)1269 1462 MS (a)1294 1462 MS (r)1316 1462 MS (a)1333 1462 MS (l)1355 1462 MS (l)1368 1462 MS (\350)1381 1462 MS (l)1404 1462 MS (e)1417 1462 MS
+( )1439 1462 MS
+(:)1452 1462 MS ( )1466 1462 MS (M)1479 1462 MS (P)1523 1462 MS (I)1551 1462 MS (O)1568 1462 MS (b)1604 1462 MS (j)1629 1462 MS (e)1642 1462 MS (c)1665 1462 MS (t)1687 1462 MS (.)1702 1462 MS ( )1715 1462 MS
+( )1728 1462 MS
+(L)348 1520 MS (a)378 1520 MS ( )400 1520 MS (p)429 1520 MS (r)454 1520 MS (e)471 1520 MS (m)494 1520 MS (i)532 1520 MS (\350)545 1520 MS (r)567 1520 MS (e)584 1520 MS ( )607 1520 MS (i)637 1520 MS (n)650 1520 MS (t)674 1520 MS (e)689 1520 MS
+(r)711 1520 MS (f)729 1520 MS (a)744 1520 MS (c)766 1520 MS (e)788 1520 MS ( )810 1520 MS (n)840 1520 MS (o)864 1520 MS (m)891 1520 MS (m)929 1520 MS (\351)967 1520 MS (e)990 1520 MS ( )1012 1520 MS (P)1041 1520 MS (M)1069 1520 MS (a)1113 1520 MS
+(t)1135 1520 MS ( )1150 1520 MS (r)1179 1520 MS (e)1196 1520 MS (p)1218 1520 MS (r)1243 1520 MS (\351)1260 1520 MS (s)1282 1520 MS (e)1301 1520 MS (n)1323 1520 MS (t)1347 1520 MS (e)1362 1520 MS ( )1384 1520 MS
+(l)1414 1520 MS (a)1426 1520 MS ( )1448 1520 MS (d)1477 1520 MS (o)1502 1520 MS (n)1528 1520 MS (n)1553 1520 MS (\351)1578 1520 MS (e)1600 1520 MS ( )1622 1520 MS (m)1652 1520 MS (a)1690 1520 MS (t)1712 1520 MS (r)1727 1520 MS (i)1744 1520 MS (c)1757 1520 MS
+(e)1779 1520 MS ( )1801 1520 MS (p)1830 1520 MS (a)1855 1520 MS (r)1877 1520 MS (a)1894 1520 MS (l)1917 1520 MS (l)1931 1520 MS (\350)1944 1520 MS (l)1967 1520 MS (e)1980 1520 MS (.)2002 1520 MS ( )2015 1520 MS (E)2044 1520 MS (l)2076 1520 MS (l)2089 1520 MS
+(e)2102 1520 MS ( )2125 1520 MS
+(c)235 1577 MS (o)257 1577 MS (n)283 1577 MS (t)307 1577 MS (i)322 1577 MS (e)334 1577 MS (n)357 1577 MS (t)381 1577 MS ( )396 1577 MS (u)419 1577 MS (n)444 1577 MS ( )469 1577 MS (a)492 1577 MS (t)514 1577 MS (t)529 1577 MS (r)543 1577 MS
+(i)560 1577 MS (b)573 1577 MS (u)597 1577 MS (t)622 1577 MS ( )637 1577 MS (d)660 1577 MS (e)685 1577 MS ( )707 1577 MS (t)730 1577 MS (y)746 1577 MS (p)769 1577 MS (e)794 1577 MS ( )816 1577 MS (s)840 1577 MS (t)859 1577 MS (r)874 1577 MS
+(u)891 1577 MS (c)916 1577 MS (t)937 1577 MS (u)952 1577 MS (r)977 1577 MS (e)994 1577 MS ( )1016 1577 MS (C)1039 1577 MS (S)1072 1577 MS (R)1100 1577 MS ( )1133 1577 MS (d)1156 1577 MS (\351)1181 1577 MS (f)1204 1577 MS (i)1220 1577 MS (n)1234 1577 MS
+(i)1259 1577 MS (e)1272 1577 MS ( )1294 1577 MS (d)1317 1577 MS (a)1343 1577 MS (n)1366 1577 MS (s)1390 1577 MS ( )1409 1577 MS (l)1433 1577 MS (e)1446 1577 MS ( )1469 1577 MS (f)1493 1577 MS (i)1509 1577 MS (c)1522 1577 MS (h)1545 1577 MS (i)1570 1577 MS
+(e)1583 1577 MS (r)1605 1577 MS ( )1622 1577 MS (\253)1646 1577 MS
+( )1670 1577 MS
+(T)1683 1577 MS (y)1715 1577 MS (p)1738 1577 MS (e)1764 1577 MS (D)1786 1577 MS (a)1822 1577 MS (t)1844 1577 MS (a)1859 1577 MS (.)1881 1577 MS (i)1894 1577 MS (d)1906 1577 MS (l)1932 1577 MS
+( )1945 1577 MS
+(\273)1959 1577 MS (.)1983 1577 MS ( )1996 1577 MS (C)2019 1577 MS (e)2052 1577 MS (t)2074 1577 MS (t)2089 1577 MS (e)2104 1577 MS ( )2125 1577 MS
+(s)235 1635 MS (t)254 1635 MS (r)269 1635 MS (u)286 1635 MS (c)311 1635 MS (t)332 1635 MS (u)347 1635 MS (r)372 1635 MS (e)389 1635 MS ( )411 1635 MS (r)440 1635 MS (e)457 1635 MS (p)479 1635 MS (r)504 1635 MS (\351)521 1635 MS (s)543 1635 MS
+(e)562 1635 MS (n)584 1635 MS (t)608 1635 MS (e)623 1635 MS ( )645 1635 MS (l)675 1635 MS (e)687 1635 MS (s)710 1635 MS ( )729 1635 MS (d)758 1635 MS (o)783 1635 MS (n)809 1635 MS (n)834 1635 MS (\351)858 1635 MS (e)880 1635 MS (s)903 1635 MS
+( )922 1635 MS (l)952 1635 MS (o)964 1635 MS (c)990 1635 MS (a)1013 1635 MS (l)1036 1635 MS (e)1049 1635 MS (s)1071 1635 MS ( )1091 1635 MS (\340)1120 1635 MS ( )1142 1635 MS (u)1171 1635 MS (n)1197 1635 MS ( )1222 1635 MS (p)1252 1635 MS (r)1277 1635 MS
+(o)1294 1635 MS (c)1320 1635 MS (e)1342 1635 MS (s)1364 1635 MS (s)1383 1635 MS (e)1402 1635 MS (u)1424 1635 MS (r)1449 1635 MS (,)1466 1635 MS ( )1479 1635 MS (e)1508 1635 MS (t)1530 1635 MS ( )1545 1635 MS (c)1574 1635 MS (o)1595 1635 MS (n)1621 1635 MS
+(s)1645 1635 MS (t)1664 1635 MS (i)1680 1635 MS (t)1692 1635 MS (u)1707 1635 MS (e)1732 1635 MS ( )1754 1635 MS (d)1783 1635 MS (o)1808 1635 MS (n)1834 1635 MS (c)1858 1635 MS ( )1880 1635 MS (u)1909 1635 MS (n)1935 1635 MS (e)1959 1635 MS ( )1981 1635 MS
+(p)2010 1635 MS (a)2035 1635 MS (r)2057 1635 MS (t)2074 1635 MS (i)2090 1635 MS (e)2102 1635 MS ( )2125 1635 MS
+(s)235 1692 MS (e)254 1692 MS (u)276 1692 MS (l)302 1692 MS (e)315 1692 MS (m)338 1692 MS (e)376 1692 MS (n)399 1692 MS (t)423 1692 MS ( )438 1692 MS (d)451 1692 MS (e)476 1692 MS ( )498 1692 MS (l)512 1692 MS (\222)524 1692 MS (o)540 1692 MS
+(b)566 1692 MS (j)591 1692 MS (e)604 1692 MS (t)626 1692 MS ( )641 1692 MS (m)655 1692 MS (a)692 1692 MS (t)714 1692 MS (r)729 1692 MS (i)747 1692 MS (c)759 1692 MS (e)781 1692 MS ( )803 1692 MS (d)816 1692 MS (i)842 1692 MS (s)855 1692 MS
+(t)874 1692 MS (r)889 1692 MS (i)907 1692 MS (b)920 1692 MS (u)944 1692 MS (\351)969 1692 MS (.)991 1692 MS ( )1004 1692 MS (C)1017 1692 MS (e)1050 1692 MS (t)1072 1692 MS (t)1087 1692 MS
+(e)1102 1692 MS ( )1124 1692 MS (i)1137 1692 MS (n)1150 1692 MS (t)1174 1692 MS (e)1189 1692 MS (r)1211 1692 MS (f)1228 1692 MS (a)1244 1692 MS (c)1266 1692 MS (e)1288 1692 MS ( )1310 1692 MS (p)1323 1692 MS (o)1348 1692 MS (s)1374 1692 MS (s)1393 1692 MS
+(\350)1412 1692 MS (d)1434 1692 MS (e)1459 1692 MS ( )1481 1692 MS (d)1494 1692 MS (e)1519 1692 MS ( )1541 1692 MS (p)1554 1692 MS (l)1580 1692 MS (u)1593 1692 MS (s)1618 1692 MS ( )1637 1692 MS (u)1650 1692 MS (n)1676 1692 MS (e)1700 1692 MS ( )1722 1692 MS
+(f)1736 1692 MS (o)1751 1692 MS (n)1778 1692 MS (c)1802 1692 MS (t)1824 1692 MS (i)1840 1692 MS (o)1852 1692 MS (n)1878 1692 MS ( )1902 1692 MS (N)1915 1692 MS (b)1952 1692 MS (R)1976 1692 MS (o)2009 1692 MS (w)2035 1692 MS (s)2071 1692 MS (\()2090 1692 MS
+(\))2107 1692 MS ( )2125 1692 MS
+(q)235 1750 MS (u)260 1750 MS (i)286 1750 MS ( )298 1750 MS (r)322 1750 MS (e)339 1750 MS (n)362 1750 MS (v)387 1750 MS (o)411 1750 MS (i)437 1750 MS (e)450 1750 MS ( )472 1750 MS (l)497 1750 MS (e)510 1750 MS ( )532 1750 MS (n)556 1750 MS
+(o)580 1750 MS (m)607 1750 MS (b)645 1750 MS (r)669 1750 MS (e)686 1750 MS ( )708 1750 MS (t)732 1750 MS (o)747 1750 MS (t)772 1750 MS (a)787 1750 MS (l)809 1750 MS ( )821 1750 MS (d)845 1750 MS (e)870 1750 MS ( )892 1750 MS (l)917 1750 MS
+(i)930 1750 MS (g)943 1750 MS (n)969 1750 MS (e)994 1750 MS (s)1016 1750 MS ( )1035 1750 MS (d)1059 1750 MS (e)1084 1750 MS ( )1106 1750 MS (l)1131 1750 MS (a)1144 1750 MS ( )1166 1750 MS (m)1191 1750 MS (a)1229 1750 MS (t)1252 1750 MS (r)1267 1750 MS
+(i)1284 1750 MS (c)1296 1750 MS (e)1318 1750 MS ( )1340 1750 MS (s)1364 1750 MS (u)1383 1750 MS (r)1408 1750 MS ( )1425 1750 MS (l)1450 1750 MS (\222)1463 1750 MS (e)1479 1750 MS (n)1502 1750 MS (s)1527 1750 MS (e)1546 1750 MS (m)1569 1750 MS (b)1607 1750 MS
+(l)1633 1750 MS (e)1646 1750 MS ( )1668 1750 MS (d)1692 1750 MS (e)1717 1750 MS (s)1739 1750 MS ( )1758 1750 MS (p)1782 1750 MS (r)1807 1750 MS (o)1824 1750 MS (c)1850 1750 MS (e)1872 1750 MS (s)1894 1750 MS (s)1913 1750 MS (e)1932 1750 MS (u)1954 1750 MS
+(r)1979 1750 MS (s)1996 1750 MS (,)2015 1750 MS ( )2028 1750 MS (u)2052 1750 MS (n)2078 1750 MS (e)2102 1750 MS ( )2125 1750 MS
+(f)235 1807 MS (o)250 1807 MS (n)277 1807 MS (c)301 1807 MS (t)323 1807 MS (i)339 1807 MS (o)351 1807 MS (n)377 1807 MS ( )401 1807 MS (N)418 1807 MS (b)455 1807 MS (C)479 1807 MS (o)512 1807 MS (l)539 1807 MS (s)552 1807 MS (\()571 1807 MS
+(\))588 1807 MS ( )605 1807 MS (q)622 1807 MS (u)647 1807 MS (i)673 1807 MS ( )685 1807 MS (r)702 1807 MS (e)719 1807 MS (n)742 1807 MS (v)767 1807 MS (o)791 1807 MS (i)818 1807 MS (e)830 1807 MS ( )852 1807 MS (l)870 1807 MS (e)883 1807 MS
+( )905 1807 MS (n)923 1807 MS (o)947 1807 MS (m)974 1807 MS (b)1012 1807 MS (r)1036 1807 MS (e)1053 1807 MS ( )1075 1807 MS (t)1092 1807 MS (o)1107 1807 MS (t)1132 1807 MS (a)1147 1807 MS (l)1169 1807 MS ( )1181 1807 MS (d)1198 1807 MS (e)1224 1807 MS
+( )1247 1807 MS (c)1264 1807 MS (o)1286 1807 MS (l)1312 1807 MS (o)1324 1807 MS (n)1350 1807 MS (n)1375 1807 MS (e)1399 1807 MS (s)1422 1807 MS ( )1441 1807 MS (d)1458 1807 MS (e)1483 1807 MS ( )1505 1807 MS (l)1523 1807 MS (a)1536 1807 MS ( )1559 1807 MS
+(m)1577 1807 MS (a)1615 1807 MS (t)1637 1807 MS (r)1652 1807 MS (i)1669 1807 MS (c)1681 1807 MS (e)1704 1807 MS ( )1726 1807 MS (s)1743 1807 MS (u)1762 1807 MS (r)1787 1807 MS ( )1804 1807 MS (l)1822 1807 MS (\222)1835 1807 MS (e)1852 1807 MS (n)1875 1807 MS
+(s)1899 1807 MS (e)1918 1807 MS (m)1941 1807 MS (b)1979 1807 MS (l)2005 1807 MS (e)2018 1807 MS ( )2041 1807 MS (d)2058 1807 MS (e)2083 1807 MS (s)2105 1807 MS ( )2125 1807 MS
+(p)235 1865 MS (r)260 1865 MS (o)277 1865 MS (c)303 1865 MS (e)325 1865 MS (s)347 1865 MS (s)366 1865 MS (e)385 1865 MS (u)407 1865 MS (r)432 1865 MS (s)449 1865 MS ( )468 1865 MS (e)482 1865 MS (t)504 1865 MS ( )519 1865 MS (u)533 1865 MS
+(n)558 1865 MS (e)582 1865 MS ( )604 1865 MS (f)619 1865 MS (o)634 1865 MS (n)660 1865 MS (c)685 1865 MS (t)707 1865 MS (i)722 1865 MS (o)734 1865 MS (n)760 1865 MS
+( )784 1865 MS (L)799 1865 MS (M)829 1865 MS (a)874 1865 MS (t)896 1865 MS (\()911 1865 MS (s)928 1865 MS (t)947 1865 MS (a)962 1865 MS (r)983 1865 MS (t)999 1865 MS (,)1014 1865 MS (e)1027 1865 MS (n)1049 1865 MS (d)1073 1865 MS (\))1098 1865 MS
+( )1115 1865 MS (q)1129 1865 MS (u)1154 1865 MS (i)1180 1865 MS ( )1192 1865 MS (r)1206 1865 MS (e)1223 1865 MS (n)1245 1865 MS (v)1270 1865 MS (o)1294 1865 MS (i)1321 1865 MS (e)1333 1865 MS ( )1355 1865 MS (l)1370 1865 MS (e)1383 1865 MS (s)1406 1865 MS
+( )1425 1865 MS (i)1440 1865 MS (n)1453 1865 MS (d)1478 1865 MS (i)1504 1865 MS (c)1517 1865 MS (e)1539 1865 MS (s)1561 1865 MS ( )1580 1865 MS (d)1594 1865 MS (e)1620 1865 MS ( )1642 1865 MS (l)1657 1865 MS (i)1671 1865 MS (g)1684 1865 MS (n)1710 1865 MS
+(e)1734 1865 MS ( )1756 1865 MS (d)1770 1865 MS (e)1795 1865 MS ( )1817 1865 MS (d)1831 1865 MS (\351)1856 1865 MS (b)1879 1865 MS (u)1903 1865 MS (t)1928 1865 MS ( )1943 1865 MS (e)1957 1865 MS (t)1979 1865 MS ( )1994 1865 MS (d)2008 1865 MS (e)2033 1865 MS
+( )2055 1865 MS (f)2069 1865 MS (i)2085 1865 MS (n)2099 1865 MS ( )2125 1865 MS
+(c)235 1922 MS (o)257 1922 MS (r)283 1922 MS (r)299 1922 MS (e)316 1922 MS (s)338 1922 MS (p)357 1922 MS (o)382 1922 MS (n)408 1922 MS (d)432 1922 MS (a)457 1922 MS (n)479 1922 MS (t)503 1922 MS ( )518 1922 MS (\340)545 1922 MS ( )567 1922 MS
+(l)595 1922 MS (a)608 1922 MS ( )630 1922 MS (p)657 1922 MS (a)682 1922 MS (r)704 1922 MS (t)721 1922 MS (i)737 1922 MS (e)749 1922 MS ( )771 1922 MS (l)799 1922 MS (o)811 1922 MS (c)837 1922 MS (a)859 1922 MS (l)882 1922 MS (e)895 1922 MS
+( )918 1922 MS (d)945 1922 MS (e)970 1922 MS ( )992 1922 MS (l)1020 1922 MS (a)1033 1922 MS ( )1056 1922 MS (m)1084 1922 MS (a)1122 1922 MS (t)1144 1922 MS (r)1159 1922 MS (i)1176 1922 MS (c)1188 1922 MS (e)1210 1922 MS ( )1233 1922 MS (s)1260 1922 MS
+(u)1279 1922 MS (r)1304 1922 MS ( )1321 1922 MS (c)1348 1922 MS (h)1371 1922 MS (a)1395 1922 MS (q)1417 1922 MS (u)1442 1922 MS (e)1467 1922 MS ( )1489 1922 MS (p)1516 1922 MS (r)1541 1922 MS (o)1558 1922 MS (c)1584 1922 MS (e)1606 1922 MS (s)1628 1922 MS
+(s)1647 1922 MS (e)1666 1922 MS (u)1688 1922 MS (r)1713 1922 MS ( )1730 1922 MS (\253)1758 1922 MS
+( )1782 1922 MS
+(s)1795 1922 MS (e)1814 1922 MS (r)1836 1922 MS (v)1854 1922 MS (e)1878 1922 MS (u)1900 1922 MS (r)1925 1922 MS
+( )1942 1922 MS
+(\273)1955 1922 MS ( )1980 1922 MS (p)2007 1922 MS (a)2032 1922 MS (r)2054 1922 MS (m)2072 1922 MS (i)2111 1922 MS ( )2125 1922 MS
+(l)235 1980 MS (\222)248 1980 MS (e)265 1980 MS (n)288 1980 MS (s)312 1980 MS (e)331 1980 MS (m)354 1980 MS (b)392 1980 MS (l)418 1980 MS (e)431 1980 MS ( )453 1980 MS (d)471 1980 MS (e)496 1980 MS ( )518 1980 MS (l)537 1980 MS (a)550 1980 MS
+( )572 1980 MS (m)591 1980 MS (a)628 1980 MS (t)650 1980 MS (r)665 1980 MS (i)683 1980 MS (c)695 1980 MS (e)717 1980 MS ( )739 1980 MS (\()757 1980 MS (o)774 1980 MS (n)800 1980 MS ( )824 1980 MS (s)842 1980 MS (u)861 1980 MS (p)886 1980 MS
+(p)911 1980 MS (o)936 1980 MS (s)962 1980 MS (e)981 1980 MS ( )1003 1980 MS (d)1021 1980 MS (a)1046 1980 MS (n)1068 1980 MS (s)1092 1980 MS ( )1111 1980 MS (c)1129 1980 MS (e)1151 1980 MS (t)1173 1980 MS ( )1188 1980 MS (e)1206 1980 MS (x)1228 1980 MS
+(e)1252 1980 MS (m)1275 1980 MS (p)1312 1980 MS (l)1338 1980 MS (e)1351 1980 MS ( )1373 1980 MS (q)1391 1980 MS (u)1416 1980 MS (e)1441 1980 MS ( )1463 1980 MS (l)1482 1980 MS (a)1494 1980 MS ( )1516 1980 MS (m)1535 1980 MS (a)1573 1980 MS (t)1595 1980 MS
+(r)1610 1980 MS (i)1627 1980 MS (c)1640 1980 MS (e)1662 1980 MS ( )1684 1980 MS (e)1702 1980 MS (s)1724 1980 MS (t)1743 1980 MS ( )1758 1980 MS (d)1776 1980 MS (i)1801 1980 MS (s)1814 1980 MS (t)1833 1980 MS (r)1848 1980 MS (i)1865 1980 MS (b)1878 1980 MS
+(u)1902 1980 MS (\351)1927 1980 MS (e)1950 1980 MS ( )1972 1980 MS (s)1990 1980 MS (u)2009 1980 MS (r)2034 1980 MS ( )2051 1980 MS (l)2070 1980 MS (e)2082 1980 MS (s)2105 1980 MS ( )2125 1980 MS
+(d)235 2037 MS (i)261 2037 MS (f)274 2037 MS (f)290 2037 MS (\351)306 2037 MS (r)328 2037 MS (e)345 2037 MS (n)368 2037 MS
+(t)392 2037 MS (s)407 2037 MS ( )426 2037 MS (p)471 2037 MS (r)496 2037 MS (o)513 2037 MS (c)539 2037 MS (e)561 2037 MS (s)583 2037 MS (s)602 2037 MS (e)621 2037 MS (u)643 2037 MS (r)668 2037 MS (s)685 2037 MS ( )704 2037 MS (s)749 2037 MS
+(u)768 2037 MS (i)794 2037 MS (v)807 2037 MS (a)832 2037 MS (n)855 2037 MS (t)879 2037 MS ( )894 2037 MS (d)939 2037 MS (e)964 2037 MS (s)986 2037 MS ( )1005 2037 MS (b)1050 2037 MS (l)1075 2037 MS (o)1087 2037 MS (c)1113 2037 MS (s)1135 2037 MS
+( )1154 2037 MS (d)1199 2037 MS (e)1224 2037 MS ( )1247 2037 MS (l)1293 2037 MS (i)1306 2037 MS (g)1319 2037 MS (n)1345 2037 MS (e)1369 2037 MS (s)1391 2037 MS ( )1410 2037 MS (e)1455 2037 MS (n)1478 2037 MS (t)1502 2037 MS (i)1518 2037 MS (\350)1530 2037 MS
+(r)1552 2037 MS (e)1569 2037 MS (s)1591 2037 MS (\))1610 2037 MS (.)1627 2037 MS ( )1640 2037 MS (E)1685 2037 MS (n)1716 2037 MS (f)1741 2037 MS (i)1757 2037 MS (n)1770 2037 MS ( )1795 2037 MS (u)1840 2037 MS (n)1866 2037 MS (e)1890 2037 MS ( )1912 2037 MS
+(f)1958 2037 MS (o)1973 2037 MS (n)2000 2037 MS (c)2024 2037 MS (t)2046 2037 MS (i)2062 2037 MS (o)2074 2037 MS (n)2100 2037 MS ( )2125 2037 MS
+(n)235 2095 MS (c)259 2095 MS (s)282 2095 MS (r)301 2095 MS (m)319 2095 MS (a)356 2095 MS (t)378 2095 MS (\()393 2095 MS (s)410 2095 MS (t)429 2095 MS (a)444 2095 MS (r)466 2095 MS (t)482 2095 MS (,)496 2095 MS (e)509 2095 MS (n)531 2095 MS
+(d)555 2095 MS (\))580 2095 MS ( )597 2095 MS (p)619 2095 MS (e)644 2095 MS (r)666 2095 MS (m)684 2095 MS (e)721 2095 MS (t)743 2095 MS ( )758 2095 MS (\340)780 2095 MS ( )802 2095 MS (u)824 2095 MS (n)850 2095 MS ( )874 2095 MS (p)896 2095 MS
+(r)921 2095 MS (o)938 2095 MS (c)964 2095 MS (e)986 2095 MS (s)1008 2095 MS (s)1027 2095 MS (u)1046 2095 MS (s)1072 2095 MS ( )1091 2095 MS (\253)1114 2095 MS
+( )1138 2095 MS
+(c)1151 2095 MS (l)1174 2095 MS (i)1187 2095 MS (e)1200 2095 MS (n)1223 2095 MS (t)1249 2095 MS
+( )1263 2095 MS
+(\273)1276 2095 MS ( )1300 2095 MS (d)1322 2095 MS (e)1347 2095 MS ( )1369 2095 MS (r)1391 2095 MS (\351)1408 2095 MS (c)1430 2095 MS (u)1452 2095 MS (p)1477 2095 MS (\351)1502 2095 MS (r)1524 2095 MS (e)1541 2095 MS (r)1563 2095 MS ( )1580 2095 MS (u)1602 2095 MS
+(n)1628 2095 MS (e)1652 2095 MS ( )1674 2095 MS (p)1696 2095 MS (a)1722 2095 MS (r)1744 2095 MS (t)1761 2095 MS (i)1776 2095 MS (e)1788 2095 MS ( )1811 2095 MS (s)1833 2095 MS (e)1852 2095 MS (u)1874 2095 MS (l)1900 2095 MS (e)1913 2095 MS (m)1936 2095 MS
+(e)1974 2095 MS (n)1997 2095 MS (t)2021 2095 MS ( )2036 2095 MS (d)2058 2095 MS (e)2083 2095 MS (s)2105 2095 MS ( )2125 2095 MS
+(d)235 2152 MS (o)260 2152 MS (n)286 2152 MS (n)310 2152 MS (\351)334 2152 MS (e)356 2152 MS (s)379 2152 MS ( )398 2152 MS (l)421 2152 MS (o)433 2152 MS (c)459 2152 MS (a)481 2152 MS (l)504 2152 MS (e)517 2152 MS (s)539 2152 MS ( )558 2152 MS
+(a)580 2152 MS (u)602 2152 MS ( )627 2152 MS (p)649 2152 MS (r)674 2152 MS (o)691 2152 MS (c)717 2152 MS (e)739 2152 MS (s)761 2152 MS (s)780 2152 MS (e)799 2152 MS (u)821 2152 MS (r)846 2152 MS ( )863 2152 MS (\253)885 2152 MS
+( )909 2152 MS
+(s)922 2152 MS (e)941 2152 MS (r)963 2152 MS (v)981 2152 MS (e)1005 2152 MS (u)1027 2152 MS (r)1052 2152 MS
+( )1069 2152 MS
+(\273)1082 2152 MS (.)1106 2152 MS ( )1119 2152 MS (C)1141 2152 MS (e)1174 2152 MS (t)1196 2152 MS (t)1211 2152 MS (e)1226 2152 MS ( )1247 2152 MS (d)1269 2152 MS (e)1294 2152 MS (r)1316 2152 MS (n)1333 2152 MS (i)1358 2152 MS (\350)1371 2152 MS (r)1393 2152 MS
+(e)1410 2152 MS ( )1432 2152 MS (f)1455 2152 MS (o)1470 2152 MS (n)1496 2152 MS (c)1520 2152 MS (t)1542 2152 MS (i)1558 2152 MS (o)1570 2152 MS (n)1596 2152 MS ( )1620 2152 MS (e)1642 2152 MS (s)1664 2152 MS (t)1683 2152 MS ( )1698 2152 MS (i)1720 2152 MS
+(m)1733 2152 MS (p)1771 2152 MS (o)1796 2152 MS (r)1822 2152 MS (t)1839 2152 MS (a)1854 2152 MS (n)1876 2152 MS (t)1900 2152 MS (e)1915 2152 MS (,)1936 2152 MS ( )1949 2152 MS (c)1971 2152 MS (a)1993 2152 MS (r)2015 2152 MS ( )2032 2152 MS (e)2054 2152 MS
+(l)2076 2152 MS (l)2089 2152 MS (e)2102 2152 MS ( )2125 2152 MS
+(p)235 2210 MS
+(e)260 2210 MS (r)282 2210 MS (m)300 2210 MS (e)337 2210 MS (t)359 2210 MS ( )374 2210 MS (\340)389 2210 MS ( )411 2210 MS (c)426 2210 MS (h)449 2210 MS (a)473 2210 MS (q)495 2210 MS (u)520 2210 MS (e)545 2210 MS ( )567 2210 MS (p)582 2210 MS
+(r)607 2210 MS (o)624 2210 MS (c)650 2210 MS (e)672 2210 MS (s)694 2210 MS (s)713 2210 MS (u)732 2210 MS (s)758 2210 MS ( )777 2210 MS (d)792 2210 MS (\222)818 2210 MS (u)834 2210 MS (n)860 2210 MS ( )884 2210 MS (\253)900 2210 MS
+( )924 2210 MS
+(c)937 2210 MS (l)960 2210 MS (i)974 2210 MS (e)987 2210 MS (n)1010 2210 MS (t)1034 2210 MS
+( )1049 2210 MS
+(\273)1062 2210 MS ( )1086 2210 MS (p)1101 2210 MS (a)1126 2210 MS (r)1148 2210 MS (a)1165 2210 MS (l)1188 2210 MS (l)1201 2210 MS (\350)1214 2210 MS (l)1237 2210 MS (e)1251 2210 MS (,)1273 2210 MS ( )1286 2210 MS (d)1301 2210 MS (e)1326 2210 MS ( )1348 2210 MS
+(r)1363 2210 MS (\351)1380 2210 MS (c)1402 2210 MS (u)1424 2210 MS (p)1449 2210 MS (\351)1474 2210 MS (r)1496 2210 MS (e)1513 2210 MS (r)1535 2210 MS ( )1552 2210 MS (s)1567 2210 MS (u)1586 2210 MS (r)1611 2210 MS ( )1628 2210 MS (l)1644 2210 MS (e)1657 2210 MS
+(s)1679 2210 MS ( )1699 2210 MS (p)1714 2210 MS (r)1739 2210 MS (o)1756 2210 MS (c)1782 2210 MS (e)1804 2210 MS (s)1826 2210 MS (s)1845 2210 MS (u)1864 2210 MS (s)1889 2210 MS ( )1908 2210 MS (c)1924 2210 MS (o)1946 2210 MS (n)1972 2210 MS (c)1996 2210 MS
+(e)2018 2210 MS (r)2040 2210 MS (n)2058 2210 MS (\351)2082 2210 MS (s)2105 2210 MS ( )2125 2210 MS
+(d)235 2267 MS (u)260 2267 MS ( )285 2267 MS (\253)299 2267 MS
+( )323 2267 MS
+(s)336 2267 MS (e)355 2267 MS (r)377 2267 MS (v)395 2267 MS (e)419 2267 MS (u)441 2267 MS (r)466 2267 MS
+( )483 2267 MS
+(\273)496 2267 MS ( )520 2267 MS (p)534 2267 MS (a)559 2267 MS (r)581 2267 MS (a)598 2267 MS (l)621 2267 MS (l)635 2267 MS (\350)648 2267 MS (l)671 2267 MS (e)684 2267 MS (,)706 2267 MS ( )719 2267 MS (u)733 2267 MS (n)759 2267 MS (i)784 2267 MS
+(q)797 2267 MS (u)822 2267 MS (e)847 2267 MS (m)870 2267 MS (e)908 2267 MS (n)931 2267 MS (t)955 2267 MS ( )970 2267 MS (s)984 2267 MS (e)1003 2267 MS (s)1025 2267 MS ( )1044 2267 MS (p)1058 2267 MS (r)1083 2267 MS (o)1100 2267 MS (p)1126 2267 MS
+(r)1151 2267 MS (e)1168 2267 MS (s)1190 2267 MS ( )1209 2267 MS (d)1223 2267 MS (o)1248 2267 MS (n)1274 2267 MS (n)1298 2267 MS (\351)1322 2267 MS (e)1344 2267 MS (s)1367 2267 MS ( )1386 2267 MS (l)1401 2267 MS (o)1413 2267 MS (c)1439 2267 MS (a)1461 2267 MS
+(l)1484 2267 MS (e)1497 2267 MS (s)1520 2267 MS (.)1539 2267 MS ( )1552 2267 MS (L)1566 2267 MS (e)1596 2267 MS (s)1618 2267 MS ( )1637 2267 MS (t)1651 2267 MS (r)1666 2267 MS (a)1683 2267 MS (n)1705 2267 MS (s)1730 2267 MS (f)1750 2267 MS (e)1765 2267 MS
+(r)1787 2267 MS (t)1804 2267 MS (s)1819 2267 MS ( )1838 2267 MS (d)1852 2267 MS (\222)1877 2267 MS (u)1893 2267 MS (n)1919 2267 MS (e)1943 2267 MS ( )1965 2267 MS (d)1979 2267 MS (o)2004 2267 MS (n)2030 2267 MS (n)2055 2267 MS (\351)2080 2267 MS (e)2102 2267 MS
+( )2125 2267 MS
+(p)235 2325 MS (a)260 2325 MS (r)282 2325 MS (a)299 2325 MS (l)322 2325 MS (l)335 2325 MS (\350)348 2325 MS (l)371 2325 MS (e)384 2325 MS ( )406 2325 MS (e)428 2325 MS (s)451 2325 MS (t)470 2325 MS ( )485 2325 MS (d)507 2325 MS (o)532 2325 MS
+(n)558 2325 MS (c)582 2325 MS ( )604 2325 MS (o)626 2325 MS (p)652 2325 MS (t)676 2325 MS (i)691 2325 MS (m)704 2325 MS (i)742 2325 MS (s)755 2325 MS (\351)775 2325 MS (e)797 2325 MS ( )819 2325 MS (s)842 2325 MS (u)861 2325 MS (r)886 2325 MS
+( )903 2325 MS (l)926 2325 MS (e)939 2325 MS ( )961 2325 MS (r)983 2325 MS (\351)1000 2325 MS (s)1022 2325 MS (e)1041 2325 MS (a)1063 2325 MS (u)1085 2325 MS
+( )1110 2325 MS
+(:)1123 2325 MS ( )1137 2325 MS (c)1159 2325 MS (h)1182 2325 MS (a)1206 2325 MS (q)1228 2325 MS (u)1254 2325 MS (e)1279 2325 MS ( )1301 2325 MS (c)1323 2325 MS (o)1345 2325 MS (m)1371 2325 MS (p)1408 2325 MS (o)1433 2325 MS (s)1459 2325 MS (a)1478 2325 MS
+(n)1501 2325 MS (t)1525 2325 MS (e)1540 2325 MS ( )1562 2325 MS (d)1584 2325 MS (e)1609 2325 MS ( )1631 2325 MS (l)1654 2325 MS (a)1666 2325 MS ( )1688 2325 MS
+(m)1711 2325 MS (a)1749 2325 MS (t)1771 2325 MS (r)1786 2325 MS (i)1804 2325 MS (c)1816 2325 MS (e)1838 2325 MS ( )1860 2325 MS (p)1882 2325 MS (a)1908 2325 MS (r)1930 2325 MS (a)1947 2325 MS (l)1970 2325 MS (l)1983 2325 MS (\350)1996 2325 MS (l)2019 2325 MS
+(e)2032 2325 MS ( )2054 2325 MS (n)2077 2325 MS (e)2102 2325 MS ( )2125 2325 MS
+(t)235 2382 MS (r)250 2382 MS (a)267 2382 MS (n)289 2382 MS (s)313 2382 MS (i)333 2382 MS (t)345 2382 MS (e)360 2382 MS ( )382 2382 MS (q)401 2382 MS (u)426 2382 MS (\222)451 2382 MS (u)467 2382 MS (n)493 2382 MS (e)517 2382 MS ( )540 2382 MS
+(s)559 2382 MS (e)578 2382 MS (u)600 2382 MS (l)626 2382 MS (e)639 2382 MS ( )662 2382 MS (f)682 2382 MS (o)697 2382 MS (i)724 2382 MS (s)737 2382 MS ( )756 2382 MS (s)776 2382 MS (u)795 2382 MS (r)820 2382 MS ( )837 2382 MS (l)857 2382 MS
+(e)870 2382 MS ( )892 2382 MS (r)911 2382 MS (\351)928 2382 MS (s)950 2382 MS (e)970 2382 MS (a)992 2382 MS (u)1014 2382 MS ( )1039 2382 MS (e)1058 2382 MS (t)1080 2382 MS ( )1095 2382 MS (a)1114 2382 MS (r)1136 2382 MS (r)1153 2382 MS (i)1171 2382 MS
+(v)1184 2382 MS (e)1208 2382 MS ( )1230 2382 MS (d)1250 2382 MS (i)1276 2382 MS (r)1288 2382 MS (e)1305 2382 MS (c)1327 2382 MS (t)1349 2382 MS (e)1364 2382 MS (m)1387 2382 MS (e)1424 2382 MS (n)1447 2382 MS (t)1471 2382 MS ( )1486 2382 MS (s)1505 2382 MS
+(u)1524 2382 MS (r)1549 2382 MS ( )1566 2382 MS (l)1586 2382 MS (e)1599 2382 MS ( )1621 2382 MS (p)1640 2382 MS (r)1665 2382 MS (o)1682 2382 MS (c)1708 2382 MS (e)1730 2382 MS (s)1752 2382 MS (s)1771 2382 MS (u)1790 2382 MS (s)1816 2382 MS ( )1835 2382 MS
+(\253)1855 2382 MS
+( )1879 2382 MS
+(c)1892 2382 MS (l)1915 2382 MS (i)1928 2382 MS (e)1941 2382 MS (n)1964 2382 MS (t)1988 2382 MS
+( )2003 2382 MS
+(\273)2016 2382 MS ( )2040 2382 MS (q)2059 2382 MS (u)2084 2382 MS (i)2111 2382 MS ( )2125 2382 MS
+(l)235 2440 MS (\222)248 2440 MS (h)265 2440 MS (\351)290 2440 MS (b)313 2440 MS (e)337 2440 MS (r)359 2440 MS (g)376 2440 MS (e)401 2440 MS ( )423 2440 MS (e)442 2440 MS (n)465 2440 MS ( )490 2440 MS (l)510 2440 MS (o)522 2440 MS (c)548 2440 MS
+(a)570 2440 MS (l)593 2440 MS (.)606 2440 MS ( )619 2440 MS (I)638 2440 MS (l)656 2440 MS ( )669 2440 MS (n)689 2440 MS (\222)714 2440 MS (y)731 2440 MS ( )755 2440 MS (a)774 2440 MS ( )797 2440 MS (p)816 2440 MS (a)841 2440 MS (s)863 2440 MS
+( )883 2440 MS (d)902 2440 MS (e)927 2440 MS ( )950 2440 MS (g)969 2440 MS (o)994 2440 MS (u)1020 2440 MS (l)1045 2440 MS (o)1057 2440 MS (t)1083 2440 MS ( )1098 2440 MS (d)1117 2440 MS (\222)1142 2440 MS (\351)1158 2440 MS (t)1180 2440 MS (r)1195 2440 MS
+(a)1212 2440 MS (n)1234 2440 MS (g)1258 2440 MS (l)1284 2440 MS (e)1296 2440 MS (m)1319 2440 MS (e)1357 2440 MS (n)1380 2440 MS (t)1404 2440 MS ( )1419 2440 MS (l)1439 2440 MS (o)1451 2440 MS (g)1477 2440 MS (i)1503 2440 MS (c)1515 2440 MS (i)1538 2440 MS
+(e)1551 2440 MS (l)1574 2440 MS ( )1587 2440 MS (c)1607 2440 MS (a)1629 2440 MS (r)1651 2440 MS ( )1668 2440 MS (l)1688 2440 MS (e)1701 2440 MS ( )1724 2440 MS (t)1743 2440 MS (r)1758 2440 MS (a)1775 2440 MS (n)1797 2440 MS (s)1821 2440 MS (f)1841 2440 MS
+(e)1857 2440 MS (r)1879 2440 MS (t)1896 2440 MS ( )1911 2440 MS (s)1930 2440 MS (e)1949 2440 MS ( )1971 2440 MS (f)1991 2440 MS (a)2007 2440 MS (i)2030 2440 MS (t)2042 2440 MS ( )2057 2440 MS (e)2076 2440 MS (n)2100 2440 MS ( )2125 2440 MS
+(p)235 2497 MS (a)260 2497 MS (r)282 2497 MS (a)299 2497 MS (l)322 2497 MS (l)335 2497 MS (\350)348 2497 MS (l)371 2497 MS (e)384 2497 MS ( )406 2497 MS (s)433 2497 MS (u)452 2497 MS (r)477 2497 MS ( )494 2497 MS (c)521 2497 MS (h)544 2497 MS
+(a)568 2497 MS (c)590 2497 MS (u)612 2497 MS (n)638 2497 MS ( )662 2497 MS (d)689 2497 MS (e)715 2497 MS (s)737 2497 MS ( )756 2497 MS (c)783 2497 MS (o)805 2497 MS (u)831 2497 MS (p)856 2497 MS (l)882 2497 MS (e)894 2497 MS (s)917 2497 MS
+( )936 2497 MS (p)963 2497 MS (r)988 2497 MS (o)1005 2497 MS (c)1031 2497 MS (e)1053 2497 MS (s)1075 2497 MS (s)1094 2497 MS (u)1113 2497 MS (s)1138 2497 MS ( )1157 2497 MS (\253)1185 2497 MS
+( )1209 2497 MS
+(c)1222 2497 MS (l)1245 2497 MS (i)1258 2497 MS (e)1271 2497 MS (n)1294 2497 MS (t)1318 2497 MS (/)1333 2497 MS (s)1347 2497 MS (e)1366 2497 MS (r)1388 2497 MS (v)1405 2497 MS (e)1429 2497 MS (u)1451 2497 MS (r)1476 2497 MS
+( )1493 2497 MS
+(\273)1506 2497 MS ( )1530 2497 MS (c)1558 2497 MS (o)1580 2497 MS (n)1606 2497 MS (c)1630 2497 MS (e)1652 2497 MS (r)1674 2497 MS (n)1692 2497 MS (\351)1716 2497 MS (s)1738 2497 MS (,)1757 2497 MS ( )1770 2497 MS (e)1797 2497 MS (t)1819 2497 MS ( )1834 2497 MS
+(i)1861 2497 MS (l)1874 2497 MS ( )1887 2497 MS (n)1915 2497 MS (\222)1940 2497 MS (y)1957 2497 MS ( )1981 2497 MS (a)2008 2497 MS ( )2030 2497 MS (p)2057 2497 MS (a)2082 2497 MS (s)2105 2497 MS ( )2125 2497 MS
+(r)235 2555 MS (e)252 2555 MS (d)274 2555 MS (i)300 2555 MS (s)312 2555 MS (t)331 2555 MS (r)346 2555 MS (i)364 2555 MS (b)377 2555 MS (u)401 2555 MS (t)426 2555 MS (i)441 2555 MS (o)453 2555 MS (n)479 2555 MS ( )504 2555 MS (d)518 2555 MS
+(e)543 2555 MS (s)565 2555 MS ( )585 2555 MS (d)599 2555 MS (o)624 2555 MS (n)650 2555 MS (n)675 2555 MS (\351)699 2555 MS (e)721 2555 MS (s)744 2555 MS (,)763 2555 MS ( )776 2555 MS (u)790 2555 MS (n)816 2555 MS (e)840 2555 MS ( )862 2555 MS
+(f)877 2555 MS (o)892 2555 MS (i)919 2555 MS (s)932 2555 MS ( )952 2555 MS (q)966 2555 MS (u)991 2555 MS (e)1016 2555 MS ( )1038 2555 MS (c)1052 2555 MS (e)1075 2555 MS (l)1098 2555 MS (l)1111 2555 MS (e)1124 2555 MS (s)1147 2555 MS
+(-)1166 2555 MS
+(c)1183 2555 MS (i)1206 2555 MS ( )1219 2555 MS (s)1234 2555 MS (o)1254 2555 MS (n)1280 2555 MS (t)1304 2555 MS ( )1319 2555 MS (a)1333 2555 MS (r)1355 2555 MS (r)1372 2555 MS (i)1389 2555 MS (v)1402 2555 MS (\351)1426 2555 MS (e)1448 2555 MS (s)1471 2555 MS
+( )1490 2555 MS (s)1504 2555 MS (u)1523 2555 MS (r)1548 2555 MS ( )1565 2555 MS (l)1580 2555 MS (e)1593 2555 MS (s)1616 2555 MS ( )1635 2555 MS (p)1649 2555 MS (r)1674 2555 MS (o)1691 2555 MS (c)1717 2555 MS (e)1739 2555 MS (s)1761 2555 MS (s)1780 2555 MS
+(u)1799 2555 MS (s)1825 2555 MS ( )1844 2555 MS (\253)1859 2555 MS
+( )1883 2555 MS
+(c)1896 2555 MS (l)1919 2555 MS (i)1933 2555 MS (e)1946 2555 MS (n)1969 2555 MS (t)1993 2555 MS
+( )2008 2555 MS
+(\273)2021 2555 MS (.)2045 2555 MS ( )2058 2555 MS (L)2072 2555 MS (e)2102 2555 MS ( )2125 2555 MS
+(s)235 2612 MS (e)254 2612 MS (u)276 2612 MS (l)302 2612 MS ( )314 2612 MS (g)327 2612 MS (o)352 2612 MS (u)378 2612 MS (l)404 2612 MS (o)416 2612 MS (t)442 2612 MS ( )456 2612 MS (d)469 2612 MS (\222)494 2612 MS (\351)510 2612 MS (t)532 2612 MS
+(r)547 2612 MS (a)564 2612 MS (n)586 2612 MS (g)610 2612 MS (l)636 2612 MS (e)648 2612 MS (m)671 2612 MS (e)709 2612 MS (n)732 2612 MS (t)756 2612 MS ( )771 2612 MS (e)784 2612 MS (s)806 2612 MS (t)825 2612 MS ( )839 2612 MS (l)852 2612 MS
+(e)864 2612 MS ( )886 2612 MS (d)899 2612 MS (\351)924 2612 MS (b)947 2612 MS (i)972 2612 MS (t)984 2612 MS ( )999 2612 MS (d)1012 2612 MS (u)1037 2612 MS ( )1062 2612 MS (r)1075 2612 MS (\351)1092 2612 MS (s)1114 2612 MS (e)1133 2612 MS (a)1155 2612 MS
+(u)1177 2612 MS ( )1202 2612 MS (u)1215 2612 MS (t)1240 2612 MS (i)1254 2612 MS (l)1268 2612 MS (i)1282 2612 MS (s)1295 2612 MS (\351)1314 2612 MS (.)1336 2612 MS
+( )1349 2612 MS
+(L)235 2670 MS (a)265 2670 MS ( )287 2670 MS (s)302 2670 MS (e)321 2670 MS (c)344 2670 MS (o)366 2670 MS (n)392 2670 MS (d)416 2670 MS (e)441 2670 MS ( )463 2670 MS (i)479 2670 MS (n)492 2670 MS (t)516 2670 MS (e)531 2670 MS (r)553 2670 MS
+(f)571 2670 MS (a)586 2670 MS (c)608 2670 MS (e)631 2670 MS ( )653 2670 MS (n)668 2670 MS (o)692 2670 MS (m)719 2670 MS (m)757 2670 MS (\351)795 2670 MS (e)818 2670 MS ( )840 2670 MS (N)855 2670 MS (P)891 2670 MS (M)919 2670 MS (a)963 2670 MS
+(t)985 2670 MS (C)1000 2670 MS (o)1033 2670 MS (m)1059 2670 MS (p)1096 2670 MS (o)1121 2670 MS (n)1147 2670 MS (e)1171 2670 MS (n)1194 2670 MS (t)1218 2670 MS ( )1233 2670 MS (r)1248 2670 MS (e)1265 2670 MS (p)1287 2670 MS (r)1312 2670 MS (\351)1329 2670 MS
+(s)1351 2670 MS (e)1370 2670 MS (n)1392 2670 MS (t)1416 2670 MS (e)1431 2670 MS ( )1453 2670 MS (l)1469 2670 MS
+(e)1481 2670 MS ( )1503 2670 MS (c)1519 2670 MS (o)1541 2670 MS (d)1567 2670 MS (e)1592 2670 MS ( )1614 2670 MS (d)1629 2670 MS (e)1654 2670 MS ( )1676 2670 MS (c)1691 2670 MS (a)1713 2670 MS (l)1736 2670 MS (c)1748 2670 MS (u)1770 2670 MS (l)1796 2670 MS
+( )1809 2670 MS (q)1824 2670 MS (u)1849 2670 MS (i)1875 2670 MS ( )1888 2670 MS (g)1903 2670 MS (\351)1928 2670 MS (n)1951 2670 MS (\350)1975 2670 MS (r)1997 2670 MS (e)2014 2670 MS ( )2036 2670 MS (u)2051 2670 MS (n)2077 2670 MS (e)2102 2670 MS ( )2125 2670 MS
+(d)235 2727 MS (o)260 2727 MS (n)286 2727 MS (n)310 2727 MS (\351)334 2727 MS (e)356 2727 MS ( )378 2727 MS (d)400 2727 MS (e)425 2727 MS ( )447 2727 MS (t)469 2727 MS (y)485 2727 MS (p)508 2727 MS (e)533 2727 MS ( )555 2727 MS (m)578 2727 MS
+(a)615 2727 MS (t)637 2727 MS (r)652 2727 MS (i)670 2727 MS (c)682 2727 MS (e)704 2727 MS ( )726 2727 MS (p)748 2727 MS (a)773 2727 MS (r)795 2727 MS (a)812 2727 MS (l)835 2727 MS (l)848 2727 MS (\350)861 2727 MS (l)885 2727 MS (e)898 2727 MS
+(.)920 2727 MS ( )933 2727 MS (E)955 2727 MS (l)986 2727 MS (l)999 2727 MS (e)1012 2727 MS ( )1034 2727 MS (p)1056 2727 MS (o)1081 2727 MS (s)1107 2727 MS (s)1126 2727 MS (\350)1145 2727 MS (d)1167 2727 MS (e)1192 2727 MS ( )1214 2727 MS (u)1237 2727 MS
+(n)1262 2727 MS ( )1286 2727 MS (a)1308 2727 MS (t)1330 2727 MS (t)1345 2727 MS (r)1359 2727 MS (i)1376 2727 MS (b)1389 2727 MS (u)1413 2727 MS (t)1438 2727 MS ( )1453 2727 MS (d)1475 2727 MS (e)1500 2727 MS ( )1522 2727 MS (t)1543 2727 MS (y)1558 2727 MS
+(p)1581 2727 MS (e)1606 2727 MS ( )1628 2727 MS (P)1650 2727 MS (M)1678 2727 MS (a)1722 2727 MS (t)1744 2727 MS
+( )1759 2727 MS
+(:)1772 2727 MS ( )1786 2727 MS (c)1808 2727 MS (\222)1830 2727 MS (e)1846 2727 MS (s)1868 2727 MS (t)1887 2727 MS ( )1902 2727 MS (l)1924 2727 MS (a)1936 2727 MS ( )1958 2727 MS (d)1980 2727 MS (o)2005 2727 MS (n)2031 2727 MS (n)2056 2727 MS (\351)2080 2727 MS
+(e)2102 2727 MS ( )2125 2727 MS
+(p)235 2785 MS (a)260 2785 MS (r)282 2785 MS (a)299 2785 MS (l)322 2785 MS (l)335 2785 MS (\350)348 2785 MS (l)371 2785 MS (e)384 2785 MS ( )406 2785 MS (\351)420 2785 MS (c)442 2785 MS (h)465 2785 MS (a)490 2785 MS (n)513 2785 MS (g)537 2785 MS
+(\351)562 2785 MS (e)584 2785 MS ( )606 2785 MS ( )620 2785 MS (a)634 2785 MS (v)657 2785 MS (e)681 2785 MS (c)703 2785 MS ( )725 2785 MS (l)740 2785 MS (e)753 2785 MS (s)776 2785 MS ( )795 2785 MS (a)809 2785 MS (u)831 2785 MS (t)856 2785 MS
+(r)871 2785 MS (e)888 2785 MS (s)910 2785 MS ( )929 2785 MS (c)943 2785 MS (o)965 2785 MS (m)991 2785 MS (p)1028 2785 MS (o)1053 2785 MS (s)1079 2785 MS (a)1098 2785 MS (n)1121 2785 MS (t)1145 2785 MS (s)1160 2785 MS (,)1179 2785 MS ( )1192 2785 MS
+(u)1206 2785 MS (n)1231 2785 MS ( )1256 2785 MS (s)1270 2785 MS (e)1289 2785 MS (r)1311 2785 MS (v)1328 2785 MS (i)1353 2785 MS (c)1366 2785 MS (e)1388 2785 MS ( )1410 2785 MS (S)1424 2785 MS (e)1452 2785 MS (t)1474 2785 MS (F)1489 2785 MS (i)1517 2785 MS
+(l)1531 2785 MS (e)1544 2785 MS (N)1566 2785 MS (a)1602 2785 MS (m)1625 2785 MS (e)1663 2785 MS (\()1685 2785 MS (f)1703 2785 MS (i)1720 2785 MS (l)1734 2785 MS (e)1747 2785 MS (n)1770 2785 MS (a)1794 2785 MS (m)1817 2785 MS (e)1855 2785 MS (\))1877 2785 MS
+( )1894 2785 MS (q)1908 2785 MS (u)1933 2785 MS (i)1959 2785 MS ( )1971 2785 MS (p)1985 2785 MS (e)2011 2785 MS (r)2033 2785 MS (m)2051 2785 MS (e)2088 2785 MS (t)2110 2785 MS ( )2125 2785 MS
+(d)235 2842 MS (e)260 2842 MS ( )282 2842 MS (s)296 2842 MS (p)315 2842 MS (\351)340 2842 MS (c)362 2842 MS (i)385 2842 MS (f)399 2842 MS (i)416 2842 MS (e)429 2842 MS (r)451 2842 MS ( )468 2842 MS (o)482 2842 MS (\371)508 2842 MS ( )533 2842 MS
+(s)547 2842 MS (e)566 2842 MS ( )588 2842 MS (t)602 2842 MS (r)617 2842 MS (o)634 2842 MS (u)660 2842 MS (v)685 2842 MS (e)709 2842 MS ( )731 2842 MS (l)746 2842 MS (a)758 2842 MS ( )781 2842 MS (d)795 2842 MS (o)820 2842 MS (n)846 2842 MS
+(n)871 2842 MS (\351)895 2842 MS (e)917 2842 MS ( )939 2842 MS (p)953 2842 MS (e)979 2842 MS (r)1001 2842 MS (s)1018 2842 MS (i)1038 2842 MS (s)1051 2842 MS
+(t)1070 2842 MS (a)1085 2842 MS (n)1107 2842 MS (t)1131 2842 MS (e)1146 2842 MS (,)1168 2842 MS ( )1181 2842 MS (u)1195 2842 MS (n)1220 2842 MS ( )1245 2842 MS (s)1259 2842 MS (e)1278 2842 MS (r)1300 2842 MS (v)1318 2842 MS (i)1343 2842 MS (c)1356 2842 MS
+(e)1378 2842 MS ( )1400 2842 MS (R)1415 2842 MS (e)1448 2842 MS (a)1470 2842 MS (d)1492 2842 MS (D)1517 2842 MS (a)1553 2842 MS (t)1575 2842 MS (a)1590 2842 MS (F)1612 2842 MS (r)1639 2842 MS (o)1656 2842 MS (m)1683 2842 MS (F)1720 2842 MS (i)1748 2842 MS
+(l)1762 2842 MS (e)1775 2842 MS (\()1797 2842 MS (\))1814 2842 MS ( )1831 2842 MS (q)1845 2842 MS (u)1870 2842 MS (i)1896 2842 MS ( )1909 2842 MS (p)1923 2842 MS (e)1948 2842 MS (r)1970 2842 MS (m)1988 2842 MS (e)2026 2842 MS (t)2048 2842 MS ( )2063 2842 MS
+(d)2077 2842 MS (e)2102 2842 MS ( )2125 2842 MS
+(c)235 2900 MS (h)257 2900 MS (a)281 2900 MS (r)303 2900 MS (g)320 2900 MS (e)345 2900 MS (r)367 2900 MS ( )384 2900 MS (l)399 2900 MS (a)412 2900 MS ( )434 2900 MS (d)448 2900 MS (o)473 2900 MS (n)499 2900 MS (n)524 2900 MS (\351)549 2900 MS
+(e)571 2900 MS ( )593 2900 MS (e)607 2900 MS (n)630 2900 MS ( )654 2900 MS (m)669 2900 MS (\351)707 2900 MS (m)730 2900 MS (o)767 2900 MS (i)794 2900 MS (r)807 2900 MS (e)824 2900 MS ( )846 2900 MS (e)861 2900 MS (t)883 2900 MS ( )898 2900 MS
+(u)912 2900 MS (n)937 2900 MS ( )961 2900 MS (s)975 2900 MS (e)995 2900 MS (r)1017 2900 MS (v)1034 2900 MS (i)1059 2900 MS (c)1072 2900 MS (e)1095 2900 MS ( )1117 2900 MS (S)1131 2900 MS (a)1159 2900 MS (v)1182 2900 MS (e)1206 2900 MS (D)1229 2900 MS
+(a)1265 2900 MS (t)1287 2900 MS (a)1302 2900 MS (T)1324 2900 MS (o)1354 2900 MS (F)1380 2900 MS (i)1408 2900 MS (l)1421 2900 MS (e)1434 2900 MS (\()1456 2900 MS (\))1473 2900 MS ( )1490 2900 MS (q)1504 2900 MS (u)1529 2900 MS (i)1555 2900 MS ( )1567 2900 MS
+(p)1581 2900 MS (e)1607 2900 MS (r)1629 2900 MS (m)1647 2900 MS (e)1684 2900 MS (t)1706 2900 MS ( )1721 2900 MS (d)1735 2900 MS (e)1760 2900 MS ( )1782 2900 MS (s)1796 2900 MS (a)1815 2900 MS (u)1837 2900 MS (v)1863 2900 MS (e)1888 2900 MS (g)1910 2900 MS
+(a)1935 2900 MS (r)1957 2900 MS (d)1974 2900 MS (e)1999 2900 MS (r)2021 2900 MS ( )2038 2900 MS (u)2052 2900 MS (n)2078 2900 MS (e)2102 2900 MS ( )2125 2900 MS
+(d)235 2957 MS (o)260 2957 MS (n)286 2957 MS (n)310 2957 MS (\351)334 2957 MS (e)356 2957 MS ( )378 2957 MS (e)395 2957 MS (n)418 2957 MS ( )442 2957 MS (m)460 2957 MS (\351)498 2957 MS (m)521 2957 MS (o)558 2957 MS (i)585 2957 MS (r)598 2957 MS
+(e)615 2957 MS ( )637 2957 MS (d)654 2957 MS (a)679 2957 MS (n)702 2957 MS (s)726 2957 MS ( )745 2957 MS (u)762 2957 MS (n)788 2957 MS ( )812 2957 MS (f)830 2957 MS (i)846 2957 MS (c)859 2957 MS (h)882 2957 MS (i)907 2957 MS (e)920 2957 MS
+(r)942 2957 MS (.)959 2957 MS ( )972 2957 MS (.)989 2957 MS ( )1002 2957 MS (C)1019 2957 MS (e)1052 2957 MS (s)1074 2957 MS ( )1093 2957 MS (d)1110 2957 MS (e)1135 2957 MS (u)1157 2957 MS (x)1183 2957 MS ( )1207 2957 MS (d)1224 2957 MS (e)1250 2957 MS
+(r)1272 2957 MS (n)1289 2957 MS (i)1314 2957 MS (e)1327 2957 MS (r)1349 2957 MS (s)1366 2957 MS ( )1385 2957 MS (s)1402 2957 MS (e)1421 2957 MS (r)1443 2957 MS (v)1461 2957 MS (i)1486 2957 MS (c)1499 2957 MS (e)1521 2957 MS (s)1544 2957 MS ( )1563 2957 MS
+(d)1580 2957 MS (o)1605 2957 MS (i)1631 2957 MS (v)1644 2957 MS (e)1669 2957 MS (n)1692 2957 MS (t)1716 2957 MS ( )1731 2957 MS (p)1748 2957 MS (o)1772 2957 MS (u)1798 2957 MS (v)1823 2957 MS (o)1847 2957 MS (i)1873 2957 MS (r)1885 2957 MS ( )1902 2957 MS
+(s)1919 2957 MS (\222)1939 2957 MS (e)1955 2957 MS (x)1978 2957 MS (\351)2002 2957 MS (c)2024 2957 MS (u)2046 2957 MS (t)2071 2957 MS (e)2086 2957 MS (r)2108 2957 MS ( )2125 2957 MS
+(e)235 3015 MS (n)257 3015 MS ( )281 3015 MS (p)317 3015 MS (a)342 3015 MS (r)364 3015 MS (a)381 3015 MS (l)404 3015 MS (l)418 3015 MS (\350)431 3015 MS (l)454 3015 MS (e)467 3015 MS
+( )489 3015 MS
+(:)502 3015 MS ( )516 3015 MS (i)553 3015 MS (l)566 3015 MS (s)579 3015 MS ( )598 3015 MS (s)635 3015 MS (o)654 3015 MS (n)680 3015 MS (t)704 3015 MS ( )719 3015 MS
+(d)755 3015 MS (o)779 3015 MS (n)805 3015 MS (c)829 3015 MS ( )851 3015 MS (a)887 3015 MS (s)909 3015 MS (y)929 3015 MS (n)953 3015 MS (c)978 3015 MS (h)1001 3015 MS (r)1025 3015 MS (o)1042 3015 MS (n)1068 3015 MS (e)1092 3015 MS (s)1114 3015 MS
+( )1133 3015 MS (\()1169 3015 MS (t)1186 3015 MS (y)1201 3015 MS (p)1224 3015 MS (e)1250 3015 MS ( )1272 3015 MS (C)1308 3015 MS (O)1341 3015 MS (R)1377 3015 MS (B)1410 3015 MS (A)1444 3015 MS ( )1479 3015 MS (o)1515 3015 MS (n)1541 3015 MS (e)1565 3015 MS
+(w)1587 3015 MS (a)1623 3015 MS (y)1646 3015 MS (\))1670 3015 MS (.)1687 3015 MS ( )1700 3015 MS (D)1736 3015 MS (e)1772 3015 MS ( )1794 3015 MS (p)1830 3015 MS (l)1856 3015 MS (u)1868 3015 MS (s)1894 3015 MS ( )1913 3015 MS (l)1950 3015 MS (\222)1963 3015 MS
+(a)1979 3015 MS (t)2001 3015 MS (t)2016 3015 MS (r)2030 3015 MS (i)2047 3015 MS (b)2060 3015 MS (u)2084 3015 MS (t)2109 3015 MS ( )2125 3015 MS
+(\253)235 3072 MS
+( )259 3072 MS
+(r)272 3072 MS (e)289 3072 MS (a)311 3072 MS (d)333 3072 MS (o)358 3072 MS (n)384 3072 MS (l)409 3072 MS (y)422 3072 MS
+( )446 3072 MS
+(\273)460 3072 MS ( )484 3072 MS (P)498 3072 MS (C)526 3072 MS (S)559 3072 MS (R)587 3072 MS (M)620 3072 MS (a)664 3072 MS (t)686 3072 MS ( )701 3072 MS (v)715 3072 MS (a)739 3072 MS ( )761 3072 MS (g)775 3072 MS (\351)800 3072 MS (n)823 3072 MS
+(\351)847 3072 MS (r)869 3072 MS (e)886 3072 MS (r)908 3072 MS ( )925 3072 MS (u)939 3072 MS (n)964 3072 MS (e)989 3072 MS ( )1011 3072 MS (f)1026 3072 MS (o)1041 3072 MS (n)1067 3072 MS (c)1091 3072 MS (t)1113 3072 MS (i)1129 3072 MS (o)1141 3072 MS
+(n)1167 3072 MS ( )1191 3072 MS (d)1205 3072 MS (e)1230 3072 MS ( )1253 3072 MS (l)1268 3072 MS (e)1280 3072 MS (c)1302 3072 MS (t)1324 3072 MS (u)1339 3072 MS (r)1364 3072 MS (e)1381 3072 MS ( )1403 3072 MS (s)1417 3072 MS (y)1437 3072 MS (n)1461 3072 MS
+(c)1485 3072 MS (h)1508 3072 MS (r)1532 3072 MS (o)1549 3072 MS (n)1575 3072 MS (e)1599 3072 MS (.)1621 3072 MS ( )1634 3072 MS (P)1648 3072 MS (o)1676 3072 MS (u)1702 3072 MS (r)1726 3072 MS ( )1743 3072 MS (p)1757 3072 MS (o)1781 3072 MS (u)1807 3072 MS
+(v)1832 3072 MS (o)1856 3072 MS (i)1882 3072 MS (r)1894 3072 MS ( )1911 3072 MS (l)1926 3072 MS (\222)1939 3072 MS (e)1955 3072 MS (x)1978 3072 MS (\351)2002 3072 MS (c)2024 3072 MS (u)2046 3072 MS (t)2071 3072 MS (e)2086 3072 MS (r)2108 3072 MS ( )2125 3072 MS
+(e)235 3129 MS (n)257 3129 MS ( )281 3129 MS (p)294 3129 MS (a)319 3129 MS (r)341 3129 MS (a)358 3129 MS (l)381 3129 MS (l)394 3129 MS (\350)407 3129 MS (l)431 3129 MS (e)444 3129 MS (,)466 3129 MS ( )479 3129 MS (i)493 3129 MS (l)506 3129 MS
+( )518 3129 MS (e)531 3129 MS (s)554 3129 MS (t)573 3129 MS ( )588 3129 MS (n)601 3129 MS (\351)625 3129 MS (c)647 3129 MS (e)669 3129 MS (s)691 3129 MS (s)711 3129 MS (a)730 3129 MS (i)753 3129 MS (r)765 3129 MS (e)782 3129 MS ( )804 3129 MS
+(d)817 3129 MS (e)842 3129 MS ( )864 3129 MS (d)877 3129 MS (\351)902 3129 MS (f)925 3129 MS (i)941 3129 MS (n)954 3129 MS (i)980 3129 MS (r)993 3129 MS ( )1010 3129 MS (u)1023 3129 MS (n)1048 3129 MS ( )1072 3129 MS (a)1085 3129 MS (u)1107 3129 MS
+(t)1132 3129 MS (r)1147 3129 MS (e)1164 3129 MS ( )1186 3129 MS (s)1199 3129 MS (e)1218 3129 MS (r)1240 3129 MS (v)1257 3129 MS (i)1282 3129 MS (c)1295 3129 MS (e)1317 3129 MS ( )1339 3129 MS (i)1353 3129 MS (d)1366 3129 MS (e)1391 3129 MS (n)1414 3129 MS
+(t)1438 3129 MS (i)1454 3129 MS (q)1466 3129 MS (u)1491 3129 MS (e)1516 3129 MS ( )1538 3129 MS (m)1552 3129 MS (a)1589 3129 MS (i)1612 3129 MS (s)1625 3129 MS ( )1644 3129 MS (a)1657 3129 MS (s)1680 3129 MS (y)1700 3129 MS (n)1724 3129 MS (c)1749 3129 MS
+(h)1772 3129 MS (r)1796 3129 MS (o)1813 3129 MS (n)1839 3129 MS (e)1863 3129 MS
+( )1885 3129 MS
+(:)1898 3129 MS ( )1912 3129 MS (g)1925 3129 MS (e)1950 3129 MS (t)1972 3129 MS (_)1987 3129 MS (d)2012 3129 MS (m)2037 3129 MS (a)2074 3129 MS (t)2096 3129 MS (.)2111 3129 MS
+( )2124 3129 MS
+showpage
+%%Page: 22 22
+14.449 827.879 translate 72 300 div dup neg scale
+0 0 transform .25 add round .25 sub exch .25 add round .25 sub exch itransform translate
+1 j
+1 setlinecap
+72 sl
+0.375 g
+n
+494 182 M
+494 155 472 133 445 133 c
+418 133 396 155 396 182 c
+396 209 418 231 445 231 c
+472 231 494 209 494 182 c
+cp
+CM 0.156 0.152 scale
+s
+SM
+71 sl
+n
+660 182 M
+660 155 638 133 611 133 c
+584 133 562 155 562 182 c
+562 209 584 231 611 231 c
+638 231 660 209 660 182 c
+cp
+CM 0.156 0.152 scale
+s
+SM
+n
+120 24 468 152 B
+1 g
+f
+1 sl
+n
+122 26 467 151 B
+cp
+s
+71 sl
+0.375 g
+n
+577 180 M
+577 153 555 131 528 131 c
+501 131 479 153 479 180 c
+479 206 501 228 528 228 c
+555 228 577 206 577 180 c
+cp
+gs
+1 g
+e
+gr
+CM 0.156 0.152 scale
+s
+SM
+n
+480 180 M
+575 180 L
+CM 0.156 0.152 scale
+s
+SM
+n
+34 18 562 187 B
+1 g
+f
+1 sl
+n
+36 20 561 186 B
+cp
+s
+n
+610 173 M
+591 173 L
+554 124 L
+579 126 L
+609 173 L
+610 173 L
+cp
+gs
+e
+gr
+s
+n
+448 170 M
+468 170 L
+504 122 L
+479 123 L
+449 170 L
+448 170 L
+cp
+gs
+e
+gr
+s
+0.375 g
+n
+473 140 M
+473 137 470 135 467 135 c
+464 135 462 137 462 140 c
+462 142 464 145 467 145 c
+470 145 473 142 473 140 c
+cp
+gs
+e
+gr
+s
+n
+593 139 M
+593 136 590 134 588 134 c
+585 134 583 136 583 139 c
+583 141 585 144 588 144 c
+590 144 593 141 593 139 c
+cp
+gs
+e
+gr
+s
+72 sl
+n
+665 137 M
+665 229 L
+CM 0.156 0.152 scale
+s
+SM
+[29 0 0 -29 0 0]/Times-Roman MF
+0 g
+( )676 243 MS
+[50 0 0 -50 0 0]/Times-Roman MF
+(D)400 289 MS (E)436 289 MS (N)467 289 MS ( )503 289 MS ( )516 289 MS (S)529 289 MS (a)557 289 MS (c)579 289 MS (l)601 289 MS (a)613 289 MS (y)636 289 MS
+( )660 289 MS
+( )1297 140 MS
+[38 0 0 -38 0 0]/Times-Roman MF
+(S)1785 129 MS (F)1806 129 MS (M)1827 129 MS (E)1861 129 MS (/)1883 129 MS (L)1894 129 MS (G)1916 129 MS (L)1943 129 MS (S)1965 129 MS (/)1986 129 MS (R)1997 129 MS (T)2022 129 MS (/)2045 129 MS (0)2056 129 MS (2)2075 129 MS
+(-)2094 129 MS
+(0)2106 129 MS (0)2125 129 MS (2)2144 129 MS
+( )2163 129 MS
+(D)1785 173 MS (a)1812 173 MS (t)1829 173 MS (e)1840 173 MS
+( )1856 173 MS
+(:)1866 173 MS
+( )1875 173 MS
+(3)1885 173 MS (0)1904 173 MS (/)1923 173 MS (0)1934 173 MS (5)1952 173 MS (/)1971 173 MS (2)1982 173 MS (0)2000 173 MS (0)2019 173 MS (2)2038 173 MS
+( )2057 173 MS
+n
+5 5 232 89 B
+f
+n
+5 5 232 89 B
+f
+n
+584 5 238 89 B
+f
+n
+5 5 823 89 B
+f
+n
+938 5 829 89 B
+f
+n
+5 5 1768 89 B
+f
+n
+436 5 1774 89 B
+f
+n
+5 5 2211 89 B
+f
+n
+5 5 2211 89 B
+f
+n
+5 256 232 95 B
+f
+n
+2 256 823 95 B
+f
+n
+2 256 1768 95 B
+f
+n
+5 256 2211 95 B
+f
+[50 0 0 -50 0 0]/Times-Roman MF
+(D)322 400 MS (M)358 400 MS (2)402 400 MS (S)427 400 MS (/)455 400 MS (S)469 400 MS (F)497 400 MS (M)524 400 MS (E)568 400 MS (/)599 400 MS (L)613 400 MS (G)643 400 MS (L)680 400 MS (S)710 400 MS
+( )738 400 MS
+[50 0 0 -50 0 0]/Times-Bold MF
+gs
+n
+241 53 1102 367 CB
+(R)1102 413 MS (A)1138 413 MS (P)1174 413 MS (P)1204 413 MS (O)1234 413 MS (R)1273 413 MS (T)1310 413 MS
+gr
+gs
+n
+150 53 1343 367 CB
+( )1343 413 MS (D)1356 413 MS (M)1392 413 MS (2)1440 413 MS (S)1465 413 MS
+gr
+[50 0 0 -50 0 0]/Times-Roman MF
+gs
+n
+24 52 1493 368 CB
+( )1493 413 MS
+gr
+[38 0 0 -38 0 0]/Times-Roman MF
+(P)1785 400 MS (a)1806 400 MS (g)1823 400 MS (e)1841 400 MS ( )1858 400 MS
+[50 0 0 -50 0 0]/Times-Roman MF
+(2)1868 400 MS (2)1893 400 MS
+(/)1918 400 MS
+(3)1932 400 MS (0)1957 400 MS
+[38 0 0 -38 0 0]/Times-Roman MF
+( )1982 400 MS
+n
+5 2 232 352 B
+f
+n
+2 2 823 352 B
+f
+n
+941 2 826 352 B
+f
+n
+2 2 1768 352 B
+f
+n
+5 2 2211 352 B
+f
+n
+5 67 232 355 B
+f
+n
+590 1 232 423 B
+f
+n
+2 67 823 355 B
+f
+n
+1 1 823 423 B
+f
+n
+942 1 825 423 B
+f
+n
+2 67 1768 355 B
+f
+n
+1 1 1768 423 B
+f
+n
+440 1 1770 423 B
+f
+n
+5 67 2211 355 B
+f
+n
+5 1 2211 423 B
+f
+[50 0 0 -50 0 0]/Times-Roman MF
+( )235 470 MS
+[33 0 0 -33 0 0]/Times-Roman MF
+/IsChar{exch/CharStrings get exch known}bd/MapCh{3 -1 roll/Encoding get 3 1\r
+roll put}bd/MapDegree{dup 16#b0 exch/degree IsChar{/degree}{/ring}ifelse MapCh}\r
+bd/MapBB{dup 16#a6 exch/brokenbar IsChar{/brokenbar}{/bar}ifelse MapCh}bd\r
+/reencode{findfont begin currentdict dup length dict begin{1 index/FID ne{def}\r
+{pop pop}ifelse}forall/FontName exch def dup length 0 ne{/Encoding Encoding 256\r
+array copy def 0 exch{dup type/nametype eq{Encoding 2 index 2 index put pop 1\r
+add}{exch pop}ifelse}forall}if pop currentdict dup end end/FontName get exch\r
+definefont dup MapDegree MapBB}bd/LATENC[0/grave/acute/circumflex/tilde/macron\r
+/breve/dotaccent/dieresis/ring/cedilla/hungarumlaut/ogonek/caron/dotlessi/fi/fl\r
+/Lslash/lslash/Zcaron/zcaron/minus/.notdef/.notdef/.notdef/.notdef/.notdef\r
+/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/space/exclam/quotedbl\r
+/numbersign/dollar/percent/ampersand/quotesingle/parenleft/parenright/asterisk\r
+/plus/comma/hyphen/period/slash/zero/one/two/three/four/five/six/seven/eight\r
+/nine/colon/semicolon/less/equal/greater/question/at/A/B/C/D/E/F/G/H/I/J/K/L/M\r
+/N/O/P/Q/R/S/T/U/V/W/X/Y/Z/bracketleft/backslash/bracketright/asciicircum\r
+/underscore/grave/a/b/c/d/e/f/g/h/i/j/k/l/m/n/o/p/q/r/s/t/u/v/w/x/y/z/braceleft\r
+/bar/braceright/asciitilde/.notdef/.notdef/.notdef/quotesinglbase/florin\r
+/quotedblbase/ellipsis/dagger/daggerdbl/circumflex/perthousand/Scaron\r
+/guilsinglleft/OE/.notdef/.notdef/.notdef/.notdef/quoteleft/quoteright\r
+/quotedblleft/quotedblright/bullet/endash/emdash/tilde/trademark/scaron\r
+/guilsinglright/oe/.notdef/.notdef/Ydieresis/.notdef/exclamdown/cent/sterling\r
+/currency/yen/brokenbar/section/dieresis/copyright/ordfeminine/guillemotleft\r
+/logicalnot/hyphen/registered/macron/degree/plusminus/twosuperior/threesuperior\r
+/acute/mu/paragraph/periodcentered/cedilla/onesuperior/ordmasculine\r
+/guillemotright/onequarter/onehalf/threequarters/questiondown/Agrave/Aacute\r
+/Acircumflex/Atilde/Adieresis/Aring/AE/Ccedilla/Egrave/Eacute/Ecircumflex\r
+/Edieresis/Igrave/Iacute/Icircumflex/Idieresis/Eth/Ntilde/Ograve/Oacute\r
+/Ocircumflex/Otilde/Odieresis/multiply/Oslash/Ugrave/Uacute/Ucircumflex\r
+/Udieresis/Yacute/Thorn/germandbls/agrave/aacute/acircumflex/atilde/adieresis\r
+/aring/ae/ccedilla/egrave/eacute/ecircumflex/edieresis/igrave/iacute\r
+/icircumflex/idieresis/eth/ntilde/ograve/oacute/ocircumflex/otilde/odieresis\r
+/divide/oslash/ugrave/uacute/ucircumflex/udieresis/yacute/thorn/ydieresis]def\r
+LATENC /_Times-Roman /Times-Roman reencode
+[33 0 0 -33 0 0]/_Times-Roman MF
+(L)242 3256 MS (e)262 3256 MS (s)277 3256 MS ( )289 3256 MS (i)298 3256 MS (n)307 3256 MS (f)324 3256 MS (o)335 3256 MS (r)351 3256 MS (m)363 3256 MS (a)388 3256 MS (t)403 3256 MS (i)412 3256 MS (o)422 3256 MS (n)439 3256 MS (s)456 3256 MS
+( )468 3256 MS (c)477 3256 MS (o)492 3256 MS (n)508 3256 MS (t)524 3256 MS (e)534 3256 MS (n)549 3256 MS (u)565 3256 MS (e)582 3256 MS (s)597 3256 MS ( )610 3256 MS (d)618 3256 MS (a)634 3256 MS (n)650 3256 MS (s)667 3256 MS ( )679 3256 MS
+(c)688 3256 MS (e)703 3256 MS ( )717 3256 MS (d)726 3256 MS (o)742 3256 MS (c)759 3256 MS (u)773 3256 MS (m)791 3256 MS (e)817 3256 MS (n)831 3256 MS (t)847 3256 MS ( )857 3256 MS (s)866 3256 MS (o)878 3256 MS (n)895 3256 MS (t)911 3256 MS
+( )921 3256 MS (r)929 3256 MS (\351)941 3256 MS (s)956 3256 MS (e)968 3256 MS (r)982 3256 MS (v)994 3256 MS (\351)1011 3256 MS (e)1026 3256 MS (s)1041 3256 MS ( )1053 3256 MS (a)1061 3256 MS (u)1076 3256 MS (x)1093 3256 MS ( )1109 3256 MS (d)1118 3256 MS
+(e)1135 3256 MS (s)1150 3256 MS (t)1162 3256 MS (i)1171 3256 MS (n)1181 3256 MS (a)1197 3256 MS (t)1212 3256 MS (a)1221 3256 MS (i)1236 3256 MS (r)1245 3256 MS (e)1257 3256 MS (s)1272 3256 MS ( )1284 3256 MS (n)1293 3256 MS (o)1309 3256 MS (m)1326 3256 MS
+(m)1352 3256 MS (\351)1378 3256 MS (m)1393 3256 MS (e)1419 3256 MS (n)1433 3256 MS (t)1450 3256 MS ( )1459 3256 MS (d)1468 3256 MS (\351)1484 3256 MS (s)1499 3256 MS (i)1512 3256 MS (g)1521 3256 MS
+(n)1538 3256 MS (\351)1555 3256 MS (s)1570 3256 MS ( )1582 3256 MS (e)1591 3256 MS (t)1605 3256 MS ( )1615 3256 MS (n)1623 3256 MS (e)1640 3256 MS ( )1654 3256 MS (p)1663 3256 MS (e)1680 3256 MS (u)1694 3256 MS (v)1711 3256 MS (e)1728 3256 MS (n)1743 3256 MS
+(t)1759 3256 MS ( )1768 3256 MS (r)1776 3256 MS (e)1788 3256 MS (c)1803 3256 MS (e)1818 3256 MS (v)1832 3256 MS (o)1849 3256 MS (i)1865 3256 MS (r)1874 3256 MS ( )1886 3256 MS (a)1894 3256 MS (u)1909 3256 MS (c)1926 3256 MS (u)1940 3256 MS (n)1957 3256 MS
+(e)1974 3256 MS ( )1988 3256 MS (d)1997 3256 MS (i)2013 3256 MS (f)2023 3256 MS (f)2034 3256 MS (u)2044 3256 MS (s)2062 3256 MS (i)2074 3256 MS (o)2084 3256 MS (n)2101 3256 MS
+( )2117 3256 MS
+(s)928 3294 MS (a)940 3294 MS (n)955 3294 MS (s)972 3294 MS ( )985 3294 MS (l)993 3294 MS (\222)1002 3294 MS (a)1013 3294 MS (u)1028 3294 MS (t)1045 3294 MS (o)1054 3294 MS (r)1071 3294 MS (i)1082 3294 MS (s)1092 3294 MS (a)1104 3294 MS (t)1119 3294 MS
+(i)1128 3294 MS (o)1138 3294 MS (n)1154 3294 MS ( )1171 3294 MS (e)1180 3294 MS (x)1194 3294 MS (p)1211 3294 MS (r)1227 3294 MS (e)1239 3294 MS (s)1254 3294 MS (s)1267 3294 MS (e)1280 3294 MS ( )1294 3294 MS (d)1303 3294 MS (u)1319 3294 MS ( )1336 3294 MS
+(D)1344 3294 MS (M)1368 3294 MS (2)1397 3294 MS (S)1414 3294 MS
+[50 0 0 -50 0 0]/Times-Roman MF
+( )1432 3294 MS
+( )235 527 MS
+[42 0 0 -42 0 0]/Courier MF
+(#)235 575 MS (i)260 575 MS (f)285 575 MS (n)310 575 MS (d)335 575 MS (e)360 575 MS (f)385 575 MS ( )410 575 MS (_)435 575 MS
+(S)460 575 MS (A)485 575 MS (L)510 575 MS (O)535 575 MS (M)560 575 MS (E)585 575 MS (_)610 575 MS (N)635 575 MS (P)660 575 MS (M)685 575 MS (A)710 575 MS (T)735 575 MS (C)760 575 MS (O)785 575 MS (M)810 575 MS (P)835 575 MS
+(O)860 575 MS (N)885 575 MS (E)910 575 MS (N)935 575 MS (T)960 575 MS (_)985 575 MS (I)1010 575 MS (D)1035 575 MS (L)1060 575 MS (_)1085 575 MS
+( )1110 575 MS
+(#)235 622 MS (d)260 622 MS (e)285 622 MS (f)310 622 MS (i)335 622 MS (n)360 622 MS (e)385 622 MS ( )410 622 MS (_)435 622 MS (S)460 622 MS (A)485 622 MS (L)510 622 MS (O)535 622 MS (M)560 622 MS (E)585 622 MS (_)610 622 MS
+(N)635 622 MS (P)660 622 MS (M)685 622 MS (A)710 622 MS (T)735 622 MS (C)760 622 MS (O)785 622 MS (M)810 622 MS (P)835 622 MS (O)860 622 MS (N)885 622 MS (E)910 622 MS (N)935 622 MS (T)960 622 MS (_)985 622 MS (I)1010 622 MS
+(D)1035 622 MS (L)1060 622 MS (_)1085 622 MS
+( )1110 622 MS
+( )235 669 MS
+(#)235 717 MS (i)260 717 MS (n)285 717 MS (c)310 717 MS (l)335 717 MS (u)360 717 MS (d)385 717 MS (e)410 717 MS ( )435 717 MS (")460 717 MS (S)485 717 MS (A)510 717 MS (L)535 717 MS (O)560 717 MS (M)585 717 MS (E)610 717 MS
+(_)635 717 MS (C)660 717 MS (o)685 717 MS (m)710 717 MS (p)735 717 MS (o)760 717 MS (n)785 717 MS (e)810 717 MS (n)835 717 MS (t)860 717 MS (.)885 717 MS (i)910 717 MS (d)935 717 MS (l)960 717 MS (")985 717 MS
+( )1010 717 MS
+(#)235 764 MS (i)260 764 MS (n)285 764 MS (c)310 764 MS (l)335 764 MS (u)360 764 MS (d)385 764 MS (e)410 764 MS ( )435 764 MS (")460 764 MS (T)485 764 MS (y)510 764 MS (p)535 764 MS (e)560 764 MS (D)585 764 MS (a)610 764 MS
+(t)635 764 MS (a)660 764 MS (.)685 764 MS (i)710 764 MS (d)735 764 MS (l)760 764 MS (")785 764 MS
+( )810 764 MS
+(#)235 811 MS (i)260 811 MS (n)285 811 MS (c)310 811 MS (l)335 811 MS (u)360 811 MS (d)385 811 MS (e)410 811 MS ( )435 811 MS (")460 811 MS (M)485 811 MS (P)510 811 MS (I)535 811 MS (O)560 811 MS (b)585 811 MS (j)610 811 MS
+(e)635 811 MS (c)660 811 MS (t)685 811 MS (.)710 811 MS (i)735 811 MS (d)760 811 MS (l)785 811 MS (")810 811 MS
+( )835 811 MS
+( )235 858 MS
+(m)235 905 MS (o)260 905 MS (d)285 905 MS (u)310 905 MS (l)335 905 MS (e)360 905 MS ( )385 905 MS (E)410 905 MS (n)435 905 MS (g)460 905 MS (i)485 905 MS (n)510 905 MS (e)535 905 MS (s)560 905 MS
+( )585 905 MS
+({)235 953 MS
+( )260 953 MS
+( )235 1000 MS ( )260 1000 MS (/)285 1000 MS (/)310 1000 MS ( )335 1000 MS (D)360 1000 MS (e)385 1000 MS (f)410 1000 MS (i)435 1000 MS (n)460 1000 MS (i)485 1000 MS (t)510 1000 MS (i)535 1000 MS (o)560 1000 MS (n)585 1000 MS ( )610 1000 MS
+(d)635 1000 MS (e)660 1000 MS ( )685 1000 MS (l)710 1000 MS (a)735 1000 MS ( )760 1000 MS (d)785 1000 MS (o)810 1000 MS (n)835 1000 MS (n)860 1000 MS (e)885 1000 MS (e)910 1000 MS ( )935 1000 MS (m)960 1000 MS (a)985 1000 MS (t)1010 1000 MS
+(r)1035 1000 MS (i)1060 1000 MS (c)1085 1000 MS (e)1110 1000 MS ( )1135 1000 MS (p)1160 1000 MS (a)1185 1000 MS (r)1210 1000 MS (a)1235 1000 MS (l)1260 1000 MS (l)1285 1000 MS (e)1310 1000 MS (l)1335 1000 MS (e)1360 1000 MS
+( )1385 1000 MS
+( )235 1047 MS ( )260 1047 MS
+(i)285 1047 MS (n)310 1047 MS (t)335 1047 MS (e)360 1047 MS (r)385 1047 MS (f)410 1047 MS (a)435 1047 MS (c)460 1047 MS (e)485 1047 MS ( )510 1047 MS (P)535 1047 MS (C)560 1047 MS (S)585 1047 MS (R)610 1047 MS (M)635 1047 MS (a)660 1047 MS
+(t)685 1047 MS ( )710 1047 MS (:)735 1047 MS ( )760 1047 MS (M)785 1047 MS (P)810 1047 MS (I)835 1047 MS (O)860 1047 MS (b)885 1047 MS (j)910 1047 MS (e)935 1047 MS (c)960 1047 MS (t)985 1047 MS
+( )1010 1047 MS
+( )235 1094 MS ( )260 1094 MS ({)285 1094 MS
+( )310 1094 MS
+( )235 1141 MS ( )260 1141 MS ( )285 1141 MS ( )310 1141 MS (r)335 1141 MS (e)360 1141 MS (a)385 1141 MS (d)410 1141 MS (o)435 1141 MS (n)460 1141 MS
+(l)485 1141 MS (y)510 1141 MS ( )535 1141 MS (a)560 1141 MS (t)585 1141 MS (t)610 1141 MS (r)635 1141 MS (i)660 1141 MS (b)685 1141 MS (u)710 1141 MS (t)735 1141 MS (e)760 1141 MS ( )785 1141 MS (C)810 1141 MS (S)835 1141 MS (R)860 1141 MS
+(M)885 1141 MS (a)910 1141 MS (t)935 1141 MS (S)960 1141 MS (t)985 1141 MS (r)1010 1141 MS (u)1035 1141 MS (c)1060 1141 MS (t)1085 1141 MS ( )1110 1141 MS (c)1135 1141 MS (s)1160 1141 MS (r)1185 1141 MS (m)1210 1141 MS (a)1235 1141 MS (t)1260 1141 MS
+(;)1285 1141 MS
+( )1310 1141 MS
+( )235 1189 MS
+( )235 1236 MS ( )260 1236 MS ( )285 1236 MS ( )310 1236 MS (u)335 1236 MS (n)360 1236 MS (s)385 1236 MS (i)410 1236 MS (g)435 1236 MS (n)460 1236 MS (e)485 1236 MS (d)510 1236 MS ( )535 1236 MS (l)560 1236 MS (o)585 1236 MS (n)610 1236 MS
+(g)635 1236 MS ( )660 1236 MS (N)685 1236 MS (b)710 1236 MS (R)735 1236 MS (o)760 1236 MS (w)785 1236 MS (s)810 1236 MS (\()835 1236 MS (\))860 1236 MS (;)885 1236 MS
+( )910 1236 MS
+( )235 1283 MS ( )260 1283 MS ( )285 1283 MS ( )310 1283 MS (u)335 1283 MS (n)360 1283 MS (s)385 1283 MS (i)410 1283 MS (g)435 1283 MS (n)460 1283 MS (e)485 1283 MS (d)510 1283 MS ( )535 1283 MS (l)560 1283 MS (o)585 1283 MS (n)610 1283 MS
+(g)635 1283 MS ( )660 1283 MS (N)685 1283 MS (b)710 1283 MS (C)735 1283 MS (o)760 1283 MS (l)785 1283 MS (s)810 1283 MS (\()835 1283 MS (\))860 1283 MS (;)885 1283 MS
+( )910 1283 MS
+( )235 1330 MS ( )260 1330 MS ( )285 1330 MS ( )310 1330 MS (v)335 1330 MS (o)360 1330 MS (i)385 1330 MS (d)410 1330 MS ( )435 1330 MS (L)460 1330 MS (M)485 1330 MS (a)510 1330 MS (t)535 1330 MS (\()560 1330 MS (o)585 1330 MS (u)610 1330 MS
+(t)635 1330 MS ( )660 1330 MS (u)685 1330 MS (n)710 1330 MS (s)735 1330 MS (i)760 1330 MS (g)785 1330 MS (n)810 1330 MS (e)835 1330 MS (d)860 1330 MS ( )885 1330 MS (l)910 1330 MS (o)935 1330 MS (n)960 1330 MS (g)985 1330 MS ( )1010 1330 MS
+(s)1035 1330 MS (t)1060 1330 MS (a)1085 1330 MS (r)1110 1330 MS (t)1135 1330 MS (,)1160 1330 MS ( )1185 1330 MS (o)1210 1330 MS (u)1235 1330 MS (t)1260 1330 MS ( )1285 1330 MS (u)1310 1330 MS (n)1335 1330 MS (s)1360 1330 MS (i)1385 1330 MS (g)1410 1330 MS
+(n)1435 1330 MS (e)1460 1330 MS (d)1485 1330 MS ( )1510 1330 MS (l)1535 1330 MS (o)1560 1330 MS (n)1585 1330 MS (g)1610 1330 MS ( )1635 1330 MS (e)1660 1330 MS (n)1685 1330 MS (d)1710 1330 MS (\))1735 1330 MS (;)1760 1330 MS
+( )1785 1330 MS
+( )235 1377 MS ( )260 1377 MS ( )285 1377 MS ( )310 1377 MS (C)335 1377 MS (S)360 1377 MS (R)385 1377 MS (M)410 1377 MS (a)435 1377 MS (t)460 1377 MS (S)485 1377 MS (t)510 1377 MS (r)535 1377 MS (u)560 1377 MS (c)585 1377 MS (t)610 1377 MS
+( )635 1377 MS (n)660 1377 MS (c)685 1377 MS (s)710 1377 MS (r)735 1377 MS (m)760 1377 MS (a)785 1377 MS (t)810 1377 MS (\()835 1377 MS (i)860 1377 MS (n)885 1377 MS ( )910 1377 MS (u)935 1377 MS (n)960 1377 MS (s)985 1377 MS (i)1010 1377 MS
+(g)1035 1377 MS (n)1060 1377 MS (e)1085 1377 MS (d)1110 1377 MS ( )1135 1377 MS (l)1160 1377 MS (o)1185 1377 MS (n)1210 1377 MS (g)1235 1377 MS ( )1260 1377 MS (s)1285 1377 MS (t)1310 1377 MS (a)1335 1377 MS (r)1360 1377 MS (t)1385 1377 MS (,)1410 1377 MS
+( )1435 1377 MS (i)1460 1377 MS (n)1485 1377 MS ( )1510 1377 MS (u)1535 1377 MS (n)1560 1377 MS (s)1585 1377 MS (i)1610 1377 MS (g)1635 1377 MS (n)1660 1377 MS (e)1685 1377 MS (d)1710 1377 MS ( )1735 1377 MS (l)1760 1377 MS (o)1785 1377 MS (n)1810 1377 MS
+(g)1835 1377 MS ( )1860 1377 MS (e)1885 1377 MS (n)1910 1377 MS (d)1935 1377 MS (\))1960 1377 MS (;)1985 1377 MS
+( )2010 1377 MS
+( )235 1425 MS ( )260 1425 MS (})285 1425 MS (;)310 1425 MS
+( )335 1425 MS
+( )235 1472 MS
+( )235 1519 MS ( )260 1519 MS (/)285 1519 MS (/)310 1519 MS ( )335 1519 MS (D)360 1519 MS (e)385 1519 MS (f)410 1519 MS (i)435 1519 MS (n)460 1519 MS (i)485 1519 MS (t)510 1519 MS (i)535 1519 MS (o)560 1519 MS (n)585 1519 MS ( )610 1519 MS
+(d)635 1519 MS (u)660 1519 MS ( )685 1519 MS (c)710 1519 MS (o)735 1519 MS (m)760 1519 MS (p)785 1519 MS (o)810 1519 MS
+(s)835 1519 MS (a)860 1519 MS (n)885 1519 MS (t)910 1519 MS ( )935 1519 MS (m)960 1519 MS (a)985 1519 MS (t)1010 1519 MS (r)1035 1519 MS (i)1060 1519 MS (c)1085 1519 MS (e)1110 1519 MS ( )1135 1519 MS (N)1160 1519 MS (P)1185 1519 MS ( )1210 1519 MS
+(p)1235 1519 MS (a)1260 1519 MS (r)1285 1519 MS (a)1310 1519 MS (l)1335 1519 MS (l)1360 1519 MS (e)1385 1519 MS (l)1410 1519 MS (e)1435 1519 MS
+( )1460 1519 MS
+( )235 1566 MS ( )260 1566 MS
+(i)285 1566 MS (n)310 1566 MS (t)335 1566 MS (e)360 1566 MS (r)385 1566 MS (f)410 1566 MS (a)435 1566 MS (c)460 1566 MS (e)485 1566 MS ( )510 1566 MS (N)535 1566 MS (P)560 1566 MS (M)585 1566 MS (a)610 1566 MS (t)635 1566 MS (C)660 1566 MS
+(o)685 1566 MS (m)710 1566 MS (p)735 1566 MS (o)760 1566 MS (n)785 1566 MS (e)810 1566 MS (n)835 1566 MS (t)860 1566 MS (:)885 1566 MS (C)910 1566 MS (o)935 1566 MS (m)960 1566 MS (p)985 1566 MS (o)1010 1566 MS (n)1035 1566 MS (e)1060 1566 MS
+(n)1085 1566 MS (t)1110 1566 MS (,)1135 1566 MS (M)1160 1566 MS (P)1185 1566 MS (I)1210 1566 MS (O)1235 1566 MS (b)1260 1566 MS (j)1285 1566 MS (e)1310 1566 MS (c)1335 1566 MS (t)1360 1566 MS
+( )1385 1566 MS
+( )235 1613 MS ( )260 1613 MS ({)285 1613 MS
+( )310 1613 MS
+( )235 1661 MS
+( )235 1708 MS ( )260 1708 MS ( )285 1708 MS ( )310 1708 MS (/)335 1708 MS (/)360 1708 MS ( )385 1708 MS (l)410 1708 MS (e)435 1708 MS (c)460 1708 MS (t)485 1708 MS (u)510 1708 MS (r)535 1708 MS (e)560 1708 MS ( )585 1708 MS (d)610 1708 MS
+(e)635 1708 MS ( )660 1708 MS (l)685 1708 MS (a)710 1708 MS ( )735 1708 MS (d)760 1708 MS (o)785 1708 MS (n)810 1708 MS (n)835 1708 MS (e)860 1708 MS (e)885 1708 MS ( )910 1708 MS (m)935 1708 MS (a)960 1708 MS (t)985 1708 MS (r)1010 1708 MS
+(i)1035 1708 MS (c)1060 1708 MS (e)1085 1708 MS ( )1110 1708 MS (p)1135 1708 MS (a)1160 1708 MS (r)1185 1708 MS (a)1210 1708 MS (l)1235 1708 MS (l)1260 1708 MS (e)1285 1708 MS (l)1310 1708 MS (e)1335 1708 MS
+( )1360 1708 MS
+( )235 1755 MS ( )260 1755 MS ( )285 1755 MS ( )310 1755 MS
+(r)335 1755 MS (e)360 1755 MS (a)385 1755 MS (d)410 1755 MS (o)435 1755 MS (n)460 1755 MS (l)485 1755 MS (y)510 1755 MS ( )535 1755 MS (a)560 1755 MS (t)585 1755 MS (t)610 1755 MS (r)635 1755 MS (i)660 1755 MS (b)685 1755 MS (u)710 1755 MS
+(t)735 1755 MS (e)760 1755 MS ( )785 1755 MS (P)810 1755 MS (C)835 1755 MS (S)860 1755 MS (R)885 1755 MS (M)910 1755 MS (a)935 1755 MS (t)960 1755 MS ( )985 1755 MS (d)1010 1755 MS (m)1035 1755 MS (a)1060 1755 MS (t)1085 1755 MS (;)1110 1755 MS
+( )1135 1755 MS
+( )235 1802 MS ( )260 1802 MS ( )285 1802 MS ( )310 1802 MS (/)335 1802 MS (/)360 1802 MS ( )385 1802 MS (v)410 1802 MS (e)435 1802 MS (r)460 1802 MS (s)485 1802 MS (i)510 1802 MS (o)535 1802 MS (n)560 1802 MS ( )585 1802 MS (a)610 1802 MS
+(s)635 1802 MS (y)660 1802 MS (n)685 1802 MS (c)710 1802 MS (h)735 1802 MS (r)760 1802 MS (o)785 1802 MS (n)810 1802 MS (e)835 1802 MS ( )860 1802 MS (d)885 1802 MS (e)910 1802 MS ( )935 1802 MS (l)960 1802 MS (e)985 1802 MS (c)1010 1802 MS
+(t)1035 1802 MS (u)1060 1802 MS (r)1085 1802 MS (e)1110 1802 MS ( )1135 1802 MS (d)1160 1802 MS (e)1185 1802 MS ( )1210 1802 MS (l)1235 1802 MS (a)1260 1802 MS ( )1285 1802 MS (m)1310 1802 MS (a)1335 1802 MS (t)1360 1802 MS (r)1385 1802 MS (i)1410 1802 MS
+(c)1435 1802 MS (e)1460 1802 MS ( )1485 1802 MS (p)1510 1802 MS (a)1535 1802 MS (r)1560 1802 MS (a)1585 1802 MS (l)1610 1802 MS (l)1635 1802 MS (e)1660 1802 MS (l)1685 1802 MS (e)1710 1802 MS
+( )1735 1802 MS
+( )235 1849 MS ( )260 1849 MS ( )285 1849 MS ( )310 1849 MS
+(o)335 1849 MS (n)360 1849 MS (e)385 1849 MS (w)410 1849 MS (a)435 1849 MS (y)460 1849 MS ( )485 1849 MS (v)510 1849 MS (o)535 1849 MS (i)560 1849 MS (d)585 1849 MS ( )610 1849 MS (g)635 1849 MS (e)660 1849 MS (t)685 1849 MS (_)710 1849 MS
+(d)735 1849 MS (m)760 1849 MS (a)785 1849 MS (t)810 1849 MS (\()835 1849 MS (i)860 1849 MS (n)885 1849 MS ( )910 1849 MS (s)935 1849 MS (t)960 1849 MS (r)985 1849 MS (i)1010 1849 MS (n)1035 1849 MS (g)1060 1849 MS
+( )1085 1849 MS (i)1110 1849 MS (d)1135 1849 MS (_)1160 1849 MS (c)1185 1849 MS (a)1210 1849 MS (l)1235 1849 MS (l)1260 1849 MS (b)1285 1849 MS (a)1310 1849 MS (c)1335 1849 MS (k)1360 1849 MS (\))1385 1849 MS (;)1410 1849 MS
+( )1435 1849 MS
+( )235 1897 MS
+( )235 1944 MS ( )260 1944 MS ( )285 1944 MS ( )310 1944 MS (v)335 1944 MS (o)360 1944 MS (i)385 1944 MS (d)410 1944 MS ( )435 1944 MS (S)460 1944 MS (e)485 1944 MS (t)510 1944 MS (F)535 1944 MS (i)560 1944 MS (l)585 1944 MS (e)610 1944 MS
+(N)635 1944 MS (a)660 1944 MS (m)685 1944 MS (e)710 1944 MS (\()735 1944 MS (i)760 1944 MS (n)785 1944 MS ( )810 1944 MS (s)835 1944 MS (t)860 1944 MS (r)885 1944 MS (i)910 1944 MS (n)935 1944 MS (g)960 1944 MS ( )985 1944 MS (f)1010 1944 MS
+(i)1035 1944 MS (l)1060 1944 MS (e)1085 1944 MS (n)1110 1944 MS (a)1135 1944 MS (m)1160 1944 MS (e)1185 1944 MS (\))1210 1944 MS (;)1235 1944 MS
+( )1260 1944 MS
+( )235 1991 MS
+( )235 2038 MS ( )260 2038 MS ( )285 2038 MS ( )310 2038 MS (o)335 2038 MS (n)360 2038 MS (e)385 2038 MS (w)410 2038 MS (a)435 2038 MS (y)460 2038 MS ( )485 2038 MS (v)510 2038 MS (o)535 2038 MS (i)560 2038 MS (d)585 2038 MS ( )610 2038 MS
+(R)635 2038 MS (e)660 2038 MS (a)685 2038 MS (d)710 2038 MS (D)735 2038 MS (a)760 2038 MS (t)785 2038 MS (a)810 2038 MS (F)835 2038 MS (r)860 2038 MS (o)885 2038 MS (m)910 2038 MS (F)935 2038 MS (i)960 2038 MS (l)985 2038 MS (e)1010 2038 MS
+(\()1035 2038 MS (i)1060 2038 MS (n)1085 2038 MS ( )1110 2038 MS (s)1135 2038 MS (t)1160 2038 MS (r)1185 2038 MS (i)1210 2038 MS (n)1235 2038 MS (g)1260 2038 MS ( )1285 2038 MS (i)1310 2038 MS (d)1335 2038 MS (_)1360 2038 MS (c)1385 2038 MS (a)1410 2038 MS
+(l)1435 2038 MS (l)1460 2038 MS (b)1485 2038 MS (a)1510 2038 MS (c)1535 2038 MS (k)1560 2038 MS (\))1585 2038 MS (;)1610 2038 MS
+( )1635 2038 MS
+( )235 2085 MS ( )260 2085 MS ( )285 2085 MS ( )310 2085 MS (o)335 2085 MS (n)360 2085 MS (e)385 2085 MS (w)410 2085 MS (a)435 2085 MS (y)460 2085 MS ( )485 2085 MS (v)510 2085 MS (o)535 2085 MS (i)560 2085 MS (d)585 2085 MS ( )610 2085 MS
+(S)635 2085 MS (a)660 2085 MS (v)685 2085 MS (e)710 2085 MS (D)735 2085 MS (a)760 2085 MS (t)785 2085 MS (a)810 2085 MS (T)835 2085 MS (o)860 2085 MS (F)885 2085 MS (i)910 2085 MS (l)935 2085 MS (e)960 2085 MS (\()985 2085 MS (i)1010 2085 MS
+(n)1035 2085 MS ( )1060 2085 MS (s)1085 2085 MS (t)1110 2085 MS (r)1135 2085 MS (i)1160 2085 MS (n)1185 2085 MS (g)1210 2085 MS ( )1235 2085 MS (i)1260 2085 MS (d)1285 2085 MS (_)1310 2085 MS (c)1335 2085 MS (a)1360 2085 MS (l)1385 2085 MS (l)1410 2085 MS
+(b)1435 2085 MS (a)1460 2085 MS (c)1485 2085 MS (k)1510 2085 MS (\))1535 2085 MS (;)1560 2085 MS
+( )1585 2085 MS
+( )235 2133 MS
+( )235 2180 MS ( )260 2180 MS
+(})285 2180 MS ( )310 2180 MS (;)335 2180 MS
+( )360 2180 MS
+(})235 2227 MS ( )260 2227 MS (;)285 2227 MS
+( )310 2227 MS
+( )235 2274 MS
+(#)235 2321 MS (e)260 2321 MS (n)285 2321 MS (d)310 2321 MS (i)335 2321 MS (f)360 2321 MS
+( )385 2321 MS
+( )235 2369 MS
+( )235 2416 MS
+[50 0 0 -50 0 0]/Times-Roman MF
+( )235 2473 MS
+showpage
+%%Page: 23 23
+14.449 827.879 translate 72 300 div dup neg scale
+0 0 transform .25 add round .25 sub exch .25 add round .25 sub exch itransform translate
+1 j
+1 setlinecap
+72 sl
+0.375 g
+n
+494 182 M
+494 155 472 133 445 133 c
+418 133 396 155 396 182 c
+396 209 418 231 445 231 c
+472 231 494 209 494 182 c
+cp
+CM 0.156 0.152 scale
+s
+SM
+71 sl
+n
+660 182 M
+660 155 638 133 611 133 c
+584 133 562 155 562 182 c
+562 209 584 231 611 231 c
+638 231 660 209 660 182 c
+cp
+CM 0.156 0.152 scale
+s
+SM
+n
+120 24 468 152 B
+1 g
+f
+1 sl
+n
+122 26 467 151 B
+cp
+s
+71 sl
+0.375 g
+n
+577 180 M
+577 153 555 131 528 131 c
+501 131 479 153 479 180 c
+479 206 501 228 528 228 c
+555 228 577 206 577 180 c
+cp
+gs
+1 g
+e
+gr
+CM 0.156 0.152 scale
+s
+SM
+n
+480 180 M
+575 180 L
+CM 0.156 0.152 scale
+s
+SM
+n
+34 18 562 187 B
+1 g
+f
+1 sl
+n
+36 20 561 186 B
+cp
+s
+n
+610 173 M
+591 173 L
+554 124 L
+579 126 L
+609 173 L
+610 173 L
+cp
+gs
+e
+gr
+s
+n
+448 170 M
+468 170 L
+504 122 L
+479 123 L
+449 170 L
+448 170 L
+cp
+gs
+e
+gr
+s
+0.375 g
+n
+473 140 M
+473 137 470 135 467 135 c
+464 135 462 137 462 140 c
+462 142 464 145 467 145 c
+470 145 473 142 473 140 c
+cp
+gs
+e
+gr
+s
+n
+593 139 M
+593 136 590 134 588 134 c
+585 134 583 136 583 139 c
+583 141 585 144 588 144 c
+590 144 593 141 593 139 c
+cp
+gs
+e
+gr
+s
+72 sl
+n
+665 137 M
+665 229 L
+CM 0.156 0.152 scale
+s
+SM
+[29 0 0 -29 0 0]/Times-Roman MF
+0 g
+( )676 243 MS
+[50 0 0 -50 0 0]/Times-Roman MF
+(D)400 289 MS (E)436 289 MS (N)467 289 MS ( )503 289 MS ( )516 289 MS (S)529 289 MS (a)557 289 MS (c)579 289 MS (l)601 289 MS (a)613 289 MS (y)636 289 MS
+( )660 289 MS
+( )1297 140 MS
+[38 0 0 -38 0 0]/Times-Roman MF
+(S)1785 129 MS (F)1806 129 MS (M)1827 129 MS (E)1861 129 MS (/)1883 129 MS (L)1894 129 MS (G)1916 129 MS (L)1943 129 MS (S)1965 129 MS (/)1986 129 MS (R)1997 129 MS (T)2022 129 MS (/)2045 129 MS (0)2056 129 MS (2)2075 129 MS
+(-)2094 129 MS
+(0)2106 129 MS (0)2125 129 MS (2)2144 129 MS
+( )2163 129 MS
+(D)1785 173 MS (a)1812 173 MS (t)1829 173 MS (e)1840 173 MS
+( )1856 173 MS
+(:)1866 173 MS
+( )1875 173 MS
+(3)1885 173 MS (0)1904 173 MS (/)1923 173 MS (0)1934 173 MS (5)1952 173 MS (/)1971 173 MS (2)1982 173 MS (0)2000 173 MS (0)2019 173 MS (2)2038 173 MS
+( )2057 173 MS
+n
+5 5 232 89 B
+f
+n
+5 5 232 89 B
+f
+n
+584 5 238 89 B
+f
+n
+5 5 823 89 B
+f
+n
+938 5 829 89 B
+f
+n
+5 5 1768 89 B
+f
+n
+436 5 1774 89 B
+f
+n
+5 5 2211 89 B
+f
+n
+5 5 2211 89 B
+f
+n
+5 256 232 95 B
+f
+n
+2 256 823 95 B
+f
+n
+2 256 1768 95 B
+f
+n
+5 256 2211 95 B
+f
+[50 0 0 -50 0 0]/Times-Roman MF
+(D)322 400 MS (M)358 400 MS (2)402 400 MS (S)427 400 MS (/)455 400 MS (S)469 400 MS (F)497 400 MS (M)524 400 MS (E)568 400 MS (/)599 400 MS (L)613 400 MS (G)643 400 MS (L)680 400 MS (S)710 400 MS
+( )738 400 MS
+[50 0 0 -50 0 0]/Times-Bold MF
+gs
+n
+241 53 1102 367 CB
+(R)1102 413 MS (A)1138 413 MS (P)1174 413 MS (P)1204 413 MS (O)1234 413 MS (R)1273 413 MS (T)1310 413 MS
+gr
+gs
+n
+150 53 1343 367 CB
+( )1343 413 MS (D)1356 413 MS (M)1392 413 MS (2)1440 413 MS (S)1465 413 MS
+gr
+[50 0 0 -50 0 0]/Times-Roman MF
+gs
+n
+24 52 1493 368 CB
+( )1493 413 MS
+gr
+[38 0 0 -38 0 0]/Times-Roman MF
+(P)1785 400 MS (a)1806 400 MS (g)1823 400 MS (e)1841 400 MS ( )1858 400 MS
+[50 0 0 -50 0 0]/Times-Roman MF
+(2)1868 400 MS (3)1893 400 MS
+(/)1918 400 MS
+(3)1932 400 MS (0)1957 400 MS
+[38 0 0 -38 0 0]/Times-Roman MF
+( )1982 400 MS
+n
+5 2 232 352 B
+f
+n
+2 2 823 352 B
+f
+n
+941 2 826 352 B
+f
+n
+2 2 1768 352 B
+f
+n
+5 2 2211 352 B
+f
+n
+5 67 232 355 B
+f
+n
+590 1 232 423 B
+f
+n
+2 67 823 355 B
+f
+n
+1 1 823 423 B
+f
+n
+942 1 825 423 B
+f
+n
+2 67 1768 355 B
+f
+n
+1 1 1768 423 B
+f
+n
+440 1 1770 423 B
+f
+n
+5 67 2211 355 B
+f
+n
+5 1 2211 423 B
+f
+[50 0 0 -50 0 0]/Times-Roman MF
+( )235 470 MS
+[33 0 0 -33 0 0]/Times-Roman MF
+/IsChar{exch/CharStrings get exch known}bd/MapCh{3 -1 roll/Encoding get 3 1\r
+roll put}bd/MapDegree{dup 16#b0 exch/degree IsChar{/degree}{/ring}ifelse MapCh}\r
+bd/MapBB{dup 16#a6 exch/brokenbar IsChar{/brokenbar}{/bar}ifelse MapCh}bd\r
+/reencode{findfont begin currentdict dup length dict begin{1 index/FID ne{def}\r
+{pop pop}ifelse}forall/FontName exch def dup length 0 ne{/Encoding Encoding 256\r
+array copy def 0 exch{dup type/nametype eq{Encoding 2 index 2 index put pop 1\r
+add}{exch pop}ifelse}forall}if pop currentdict dup end end/FontName get exch\r
+definefont dup MapDegree MapBB}bd/LATENC[0/grave/acute/circumflex/tilde/macron\r
+/breve/dotaccent/dieresis/ring/cedilla/hungarumlaut/ogonek/caron/dotlessi/fi/fl\r
+/Lslash/lslash/Zcaron/zcaron/minus/.notdef/.notdef/.notdef/.notdef/.notdef\r
+/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/space/exclam/quotedbl\r
+/numbersign/dollar/percent/ampersand/quotesingle/parenleft/parenright/asterisk\r
+/plus/comma/hyphen/period/slash/zero/one/two/three/four/five/six/seven/eight\r
+/nine/colon/semicolon/less/equal/greater/question/at/A/B/C/D/E/F/G/H/I/J/K/L/M\r
+/N/O/P/Q/R/S/T/U/V/W/X/Y/Z/bracketleft/backslash/bracketright/asciicircum\r
+/underscore/grave/a/b/c/d/e/f/g/h/i/j/k/l/m/n/o/p/q/r/s/t/u/v/w/x/y/z/braceleft\r
+/bar/braceright/asciitilde/.notdef/.notdef/.notdef/quotesinglbase/florin\r
+/quotedblbase/ellipsis/dagger/daggerdbl/circumflex/perthousand/Scaron\r
+/guilsinglleft/OE/.notdef/.notdef/.notdef/.notdef/quoteleft/quoteright\r
+/quotedblleft/quotedblright/bullet/endash/emdash/tilde/trademark/scaron\r
+/guilsinglright/oe/.notdef/.notdef/Ydieresis/.notdef/exclamdown/cent/sterling\r
+/currency/yen/brokenbar/section/dieresis/copyright/ordfeminine/guillemotleft\r
+/logicalnot/hyphen/registered/macron/degree/plusminus/twosuperior/threesuperior\r
+/acute/mu/paragraph/periodcentered/cedilla/onesuperior/ordmasculine\r
+/guillemotright/onequarter/onehalf/threequarters/questiondown/Agrave/Aacute\r
+/Acircumflex/Atilde/Adieresis/Aring/AE/Ccedilla/Egrave/Eacute/Ecircumflex\r
+/Edieresis/Igrave/Iacute/Icircumflex/Idieresis/Eth/Ntilde/Ograve/Oacute\r
+/Ocircumflex/Otilde/Odieresis/multiply/Oslash/Ugrave/Uacute/Ucircumflex\r
+/Udieresis/Yacute/Thorn/germandbls/agrave/aacute/acircumflex/atilde/adieresis\r
+/aring/ae/ccedilla/egrave/eacute/ecircumflex/edieresis/igrave/iacute\r
+/icircumflex/idieresis/eth/ntilde/ograve/oacute/ocircumflex/otilde/odieresis\r
+/divide/oslash/ugrave/uacute/ucircumflex/udieresis/yacute/thorn/ydieresis]def\r
+LATENC /_Times-Roman /Times-Roman reencode
+[33 0 0 -33 0 0]/_Times-Roman MF
+(L)242 3256 MS (e)262 3256 MS (s)277 3256 MS ( )289 3256 MS (i)298 3256 MS (n)307 3256 MS (f)324 3256 MS (o)335 3256 MS (r)351 3256 MS (m)363 3256 MS (a)388 3256 MS (t)403 3256 MS (i)412 3256 MS (o)422 3256 MS (n)439 3256 MS (s)456 3256 MS
+( )468 3256 MS (c)477 3256 MS (o)492 3256 MS (n)508 3256 MS (t)524 3256 MS (e)534 3256 MS (n)549 3256 MS (u)565 3256 MS (e)582 3256 MS (s)597 3256 MS ( )610 3256 MS (d)618 3256 MS (a)634 3256 MS (n)650 3256 MS (s)667 3256 MS ( )679 3256 MS
+(c)688 3256 MS (e)703 3256 MS ( )717 3256 MS (d)726 3256 MS (o)742 3256 MS (c)759 3256 MS (u)773 3256 MS (m)791 3256 MS (e)817 3256 MS (n)831 3256 MS (t)847 3256 MS ( )857 3256 MS (s)866 3256 MS (o)878 3256 MS (n)895 3256 MS (t)911 3256 MS
+( )921 3256 MS (r)929 3256 MS (\351)941 3256 MS (s)956 3256 MS (e)968 3256 MS (r)982 3256 MS (v)994 3256 MS (\351)1011 3256 MS (e)1026 3256 MS (s)1041 3256 MS ( )1053 3256 MS (a)1061 3256 MS (u)1076 3256 MS (x)1093 3256 MS ( )1109 3256 MS (d)1118 3256 MS
+(e)1135 3256 MS (s)1150 3256 MS (t)1162 3256 MS (i)1171 3256 MS (n)1181 3256 MS (a)1197 3256 MS (t)1212 3256 MS (a)1221 3256 MS (i)1236 3256 MS (r)1245 3256 MS (e)1257 3256 MS (s)1272 3256 MS ( )1284 3256 MS (n)1293 3256 MS (o)1309 3256 MS (m)1326 3256 MS
+(m)1352 3256 MS (\351)1378 3256 MS (m)1393 3256 MS (e)1419 3256 MS (n)1433 3256 MS (t)1450 3256 MS ( )1459 3256 MS (d)1468 3256 MS (\351)1484 3256 MS (s)1499 3256 MS (i)1512 3256 MS (g)1521 3256 MS
+(n)1538 3256 MS (\351)1555 3256 MS (s)1570 3256 MS ( )1582 3256 MS (e)1591 3256 MS (t)1605 3256 MS ( )1615 3256 MS (n)1623 3256 MS (e)1640 3256 MS ( )1654 3256 MS (p)1663 3256 MS (e)1680 3256 MS (u)1694 3256 MS (v)1711 3256 MS (e)1728 3256 MS (n)1743 3256 MS
+(t)1759 3256 MS ( )1768 3256 MS (r)1776 3256 MS (e)1788 3256 MS (c)1803 3256 MS (e)1818 3256 MS (v)1832 3256 MS (o)1849 3256 MS (i)1865 3256 MS (r)1874 3256 MS ( )1886 3256 MS (a)1894 3256 MS (u)1909 3256 MS (c)1926 3256 MS (u)1940 3256 MS (n)1957 3256 MS
+(e)1974 3256 MS ( )1988 3256 MS (d)1997 3256 MS (i)2013 3256 MS (f)2023 3256 MS (f)2034 3256 MS (u)2044 3256 MS (s)2062 3256 MS (i)2074 3256 MS (o)2084 3256 MS (n)2101 3256 MS
+( )2117 3256 MS
+(s)928 3294 MS (a)940 3294 MS (n)955 3294 MS (s)972 3294 MS ( )985 3294 MS (l)993 3294 MS (\222)1002 3294 MS (a)1013 3294 MS (u)1028 3294 MS (t)1045 3294 MS (o)1054 3294 MS (r)1071 3294 MS (i)1082 3294 MS (s)1092 3294 MS (a)1104 3294 MS (t)1119 3294 MS
+(i)1128 3294 MS (o)1138 3294 MS (n)1154 3294 MS ( )1171 3294 MS (e)1180 3294 MS (x)1194 3294 MS (p)1211 3294 MS (r)1227 3294 MS (e)1239 3294 MS (s)1254 3294 MS (s)1267 3294 MS (e)1280 3294 MS ( )1294 3294 MS (d)1303 3294 MS (u)1319 3294 MS ( )1336 3294 MS
+(D)1344 3294 MS (M)1368 3294 MS (2)1397 3294 MS (S)1414 3294 MS
+[50 0 0 -50 0 0]/Times-Roman MF
+( )1432 3294 MS
+[54 0 0 -54 0 0]/Helvetica-Bold MF
+(9)310 580 MS (.)340 580 MS (2)355 580 MS (.)385 580 MS (2)400 580 MS
+( )430 580 MS
+LATENC /_Helvetica-Bold /Helvetica-Bold reencode
+[54 0 0 -54 0 0]/_Helvetica-Bold MF
+(D)460 580 MS (\351)499 580 MS (f)529 580 MS (i)547 580 MS (n)562 580 MS (i)595 580 MS (t)610 580 MS (i)628 580 MS (o)643 580 MS (n)676 580 MS ( )709 580 MS (d)724 580 MS (e)757 580 MS ( )787 580 MS (l)802 580 MS (\222)817 580 MS
+(i)832 580 MS (m)848 580 MS (p)895 580 MS (l)928 580 MS (\351)944 580 MS (m)975 580 MS (e)1022 580 MS (n)1052 580 MS (t)1085 580 MS (a)1103 580 MS (t)1133 580 MS (i)1151 580 MS (o)1166 580 MS (n)1199 580 MS ( )1232 580 MS
+( )1247 580 MS
+[50 0 0 -50 0 0]/Times-Roman MF
+( )235 652 MS
+LATENC /_Times-Roman /Times-Roman reencode
+[50 0 0 -50 0 0]/_Times-Roman MF
+(L)348 710 MS (\222)378 710 MS (i)395 710 MS (m)409 710 MS (p)447 710 MS (l)473 710 MS (\351)486 710 MS (m)509 710 MS (e)547 710 MS (n)570 710 MS (t)594 710 MS (a)609 710 MS (t)631 710 MS (i)646 710 MS (o)658 710 MS (n)684 710 MS
+( )708 710 MS (d)740 710 MS (e)765 710 MS ( )787 710 MS (l)820 710 MS (a)833 710 MS ( )855 710 MS (d)887 710 MS (o)912 710 MS (n)938 710 MS (n)963 710 MS (\351)987 710 MS (e)1009 710 MS
+( )1031 710 MS (m)1064 710 MS (a)1102 710 MS (t)1124 710 MS (r)1139 710 MS (i)1157 710 MS (c)1169 710 MS (e)1191 710 MS ( )1213 710 MS (p)1245 710 MS (a)1271 710 MS (r)1293 710 MS (a)1310 710 MS (l)1333 710 MS (l)1346 710 MS (\350)1360 710 MS
+(l)1383 710 MS (e)1395 710 MS ( )1417 710 MS (d)1449 710 MS (o)1474 710 MS (i)1501 710 MS (t)1513 710 MS ( )1528 710 MS (d)1560 710 MS (o)1585 710 MS (n)1611 710 MS (c)1635 710 MS ( )1657 710 MS (d)1689 710 MS (\351)1714 710 MS (f)1737 710 MS
+(i)1753 710 MS (n)1766 710 MS (i)1792 710 MS (r)1804 710 MS ( )1821 710 MS (u)1853 710 MS (n)1879 710 MS (e)1904 710 MS ( )1926 710 MS (f)1959 710 MS (o)1974 710 MS (n)2000 710 MS (c)2024 710 MS (t)2046 710 MS (i)2062 710 MS (o)2074 710 MS
+(n)2100 710 MS ( )2125 710 MS
+(N)235 767 MS (b)271 767 MS (R)295 767 MS (o)328 767 MS (w)354 767 MS (s)390 767 MS (\()409 767 MS (\))426 767 MS ( )443 767 MS (q)467 767 MS (u)492 767 MS (i)518 767 MS ( )531 767 MS (r)555 767 MS (e)572 767 MS (n)595 767 MS
+(v)620 767 MS (o)644 767 MS (i)671 767 MS (e)683 767 MS ( )705 767 MS (l)730 767 MS (e)743 767 MS ( )766 767 MS (n)791 767 MS (o)815 767 MS (m)842 767 MS (b)880 767 MS (r)904 767 MS (e)921 767 MS ( )943 767 MS ( )967 767 MS
+(t)991 767 MS (o)1006 767 MS (t)1031 767 MS (a)1046 767 MS (l)1068 767 MS ( )1081 767 MS (d)1105 767 MS (e)1130 767 MS ( )1152 767 MS (l)1177 767 MS (i)1191 767 MS (g)1204 767 MS (n)1230 767 MS (e)1255 767 MS (s)1277 767 MS ( )1296 767 MS
+(d)1320 767 MS (e)1345 767 MS ( )1368 767 MS (l)1393 767 MS (a)1406 767 MS ( )1428 767 MS (m)1453 767 MS (a)1491 767 MS (t)1513 767 MS (r)1528 767 MS (i)1546 767 MS (c)1558 767 MS (e)1580 767 MS ( )1602 767 MS (d)1626 767 MS (i)1652 767 MS
+(s)1665 767 MS (t)1684 767 MS (r)1699 767 MS (i)1717 767 MS (b)1730 767 MS (u)1754 767 MS (\351)1779 767 MS (e)1802 767 MS (,)1824 767 MS ( )1837 767 MS (u)1861 767 MS (n)1886 767 MS (e)1911 767 MS ( )1933 767 MS (f)1958 767 MS (o)1973 767 MS
+(n)2000 767 MS (c)2024 767 MS (t)2046 767 MS (i)2062 767 MS (o)2074 767 MS (n)2100 767 MS ( )2125 767 MS
+(N)235 825 MS (b)271 825 MS (C)295 825 MS (o)328 825 MS (l)355 825 MS (s)368 825 MS (\()387 825 MS (\))404 825 MS ( )421 825 MS (q)443 825 MS (u)468 825 MS (i)494 825 MS ( )506 825 MS (r)528 825 MS (e)545 825 MS (n)567 825 MS
+(v)592 825 MS (o)616 825 MS (i)643 825 MS (e)656 825 MS ( )678 825 MS (l)701 825 MS (e)713 825 MS ( )735 825 MS (n)758 825 MS (o)782 825 MS (m)809 825 MS (b)847 825 MS (r)871 825 MS (e)888 825 MS ( )910 825 MS ( )932 825 MS
+(t)954 825 MS (o)969 825 MS (t)994 825 MS (a)1009 825 MS (l)1031 825 MS ( )1043 825 MS (d)1065 825 MS (e)1090 825 MS ( )1112 825 MS (c)1134 825 MS (o)1156 825 MS (l)1182 825 MS (o)1194 825 MS (n)1220 825 MS (n)1245 825 MS (e)1269 825 MS
+(s)1292 825 MS ( )1311 825 MS (d)1333 825 MS (e)1358 825 MS ( )1380 825 MS (l)1403 825 MS (a)1416 825 MS ( )1438 825 MS (m)1461 825 MS (a)1498 825 MS (t)1520 825 MS (r)1535 825 MS (i)1553 825 MS (c)1565 825 MS (e)1587 825 MS ( )1609 825 MS
+(d)1631 825 MS (i)1657 825 MS (s)1670 825 MS (t)1689 825 MS (r)1704 825 MS (i)1722 825 MS (b)1735 825 MS (u)1759 825 MS (\351)1784 825 MS (e)1806 825 MS (,)1828 825 MS ( )1841 825 MS (u)1863 825 MS (n)1889 825 MS (e)1913 825 MS ( )1935 825 MS
+(f)1958 825 MS (o)1973 825 MS (n)1999 825 MS (c)2023 825 MS (t)2045 825 MS (i)2061 825 MS (o)2073 825 MS (n)2100 825 MS ( )2125 825 MS
+(L)235 882 MS (M)265 882 MS (a)309 882 MS (t)331 882 MS (\()346 882 MS (s)363 882 MS (t)382 882 MS (a)397 882 MS (r)419 882 MS (t)435 882 MS (,)449 882 MS (e)462 882 MS (n)484 882 MS (d)508 882 MS (\))533 882 MS ( )550 882 MS
+(q)565 882 MS (u)590 882 MS (i)616 882 MS ( )629 882 MS (r)644 882 MS (e)661 882 MS (n)683 882 MS (v)708 882 MS (o)732 882 MS (i)759 882 MS (e)772 882 MS ( )794 882 MS (l)810 882 MS (a)823 882 MS
+( )845 882 MS (d)860 882 MS (i)886 882 MS (s)899 882 MS (t)918 882 MS (r)933 882 MS (i)951 882 MS (b)964 882 MS (u)988 882 MS (t)1013 882 MS (i)1029 882 MS (o)1041 882 MS (n)1067 882 MS ( )1091 882 MS (l)1107 882 MS (o)1119 882 MS
+(c)1145 882 MS (a)1167 882 MS (l)1190 882 MS (e)1203 882 MS ( )1226 882 MS (\340)1242 882 MS ( )1264 882 MS (u)1279 882 MS (n)1304 882 MS ( )1329 882 MS (p)1344 882 MS (r)1369 882 MS (o)1386 882 MS (c)1412 882 MS (e)1434 882 MS (s)1456 882 MS
+(s)1475 882 MS (e)1494 882 MS (u)1516 882 MS (r)1541 882 MS ( )1558 882 MS (d)1573 882 MS (e)1598 882 MS ( )1620 882 MS (l)1636 882 MS (a)1649 882 MS ( )1672 882 MS (m)1688 882 MS (a)1726 882 MS (t)1748 882 MS (r)1763 882 MS (i)1780 882 MS
+(c)1792 882 MS (e)1815 882 MS ( )1837 882 MS (p)1852 882 MS (a)1877 882 MS (r)1899 882 MS (a)1916 882 MS (l)1939 882 MS (l)1953 882 MS (\350)1966 882 MS (l)1989 882 MS (e)2002 882 MS (,)2024 882 MS ( )2037 882 MS (u)2052 882 MS (n)2078 882 MS
+(e)2102 882 MS ( )2125 882 MS
+(f)235 940 MS (o)250 940 MS (n)277 940 MS (c)301 940 MS (t)323 940 MS (i)339 940 MS (o)351 940 MS (n)377 940 MS ( )401 940 MS (c)415 940 MS (s)437 940 MS (r)456 940 MS (m)474 940 MS (a)512 940 MS (t)534 940 MS (\()549 940 MS
+(\))566 940 MS ( )583 940 MS (q)597 940 MS (u)622 940 MS (i)647 940 MS ( )659 940 MS (r)673 940 MS (e)690 940 MS (n)712 940 MS (v)737 940 MS (o)761 940 MS (i)788 940 MS (e)800 940 MS ( )822 940 MS (l)837 940 MS (e)850 940 MS
+(s)873 940 MS ( )892 940 MS (d)906 940 MS (o)931 940 MS (n)957 940 MS (n)982 940 MS (\351)1006 940 MS (e)1028 940 MS (s)1050 940 MS ( )1069 940 MS (l)1084 940 MS (o)1096 940 MS (c)1122 940 MS (a)1144 940 MS (l)1167 940 MS (e)1180 940 MS
+(s)1203 940 MS ( )1222 940 MS (d)1237 940 MS (e)1262 940 MS ( )1284 940 MS (l)1299 940 MS (a)1311 940 MS ( )1333 940 MS (m)1348 940 MS (a)1386 940 MS (t)1408 940 MS (r)1423 940 MS (i)1440 940 MS (c)1453 940 MS (e)1475 940 MS ( )1497 940 MS
+(\340)1511 940 MS ( )1533 940 MS (u)1547 940 MS (n)1573 940 MS ( )1597 940 MS (p)1611 940 MS (r)1636 940 MS (o)1653 940 MS (c)1679 940 MS (e)1701 940 MS (s)1723 940 MS (s)1742 940 MS (e)1761 940 MS (u)1783 940 MS (r)1808 940 MS (.)1825 940 MS
+( )1838 940 MS (D)1852 940 MS (e)1888 940 MS ( )1910 940 MS (p)1924 940 MS (l)1949 940 MS (u)1961 940 MS (s)1987 940 MS (,)2006 940 MS ( )2019 940 MS (p)2033 940 MS (o)2058 940 MS (u)2084 940 MS (r)2109 940 MS ( )2125 940 MS
+(p)235 997 MS (e)260 997 MS (r)282 997 MS (m)300 997 MS (e)337 997 MS (t)359 997 MS (t)374 997 MS (r)388 997 MS (e)405 997 MS ( )427 997 MS (u)440 997 MS (n)465 997 MS ( )489 997 MS (t)502 997 MS (r)517 997 MS (a)534 997 MS
+(n)556 997 MS (s)580 997 MS (f)600 997 MS (e)615 997 MS (r)637 997 MS (t)654 997 MS ( )669 997 MS (o)682 997 MS (p)708 997 MS (t)732 997 MS (i)747 997 MS (m)760 997 MS (a)798 997 MS (l)821 997 MS ( )834 997 MS (d)847 997 MS
+(e)872 997 MS (s)894 997 MS ( )913 997 MS (d)926 997 MS (o)951 997 MS (n)977 997 MS (n)1002 997 MS (\351)1026 997 MS (e)1049 997 MS (s)1071 997 MS ( )1090 997 MS (p)1103 997 MS (a)1128 997 MS (r)1150 997 MS (a)1167 997 MS (l)1190 997 MS
+(l)1204 997 MS (\350)1217 997 MS (l)1240 997 MS (e)1254 997 MS (s)1276 997 MS ( )1295 997 MS (d)1308 997 MS (\222)1333 997 MS (u)1349 997 MS (n)1375 997 MS ( )1399 997 MS (c)1412 997 MS (o)1434 997 MS (m)1461 997 MS (p)1498 997 MS (o)1523 997 MS
+(s)1549 997 MS (a)1568 997 MS (n)1591 997 MS (t)1615 997 MS ( )1630 997 MS (\340)1643 997 MS ( )1665 997 MS (u)1678 997 MS (n)1703 997 MS ( )1727 997 MS (a)1740 997 MS (u)1762 997 MS (t)1787 997 MS (r)1802 997 MS (e)1819 997 MS ( )1841 997 MS
+(l)1855 997 MS (o)1867 997 MS (r)1893 997 MS (s)1910 997 MS (q)1929 997 MS (u)1954 997 MS (e)1979 997 MS ( )2001 997 MS (c)2014 997 MS (e)2036 997 MS (u)2058 997 MS (x)2083 997 MS
+(-)2107 997 MS
+(c)235 1055 MS (i)258 1055 MS
+( )270 1055 MS (s)287 1055 MS (e)306 1055 MS ( )328 1055 MS (t)345 1055 MS (r)360 1055 MS (o)377 1055 MS (u)403 1055 MS (v)428 1055 MS (e)452 1055 MS (n)474 1055 MS (t)498 1055 MS ( )513 1055 MS (d)530 1055 MS (a)555 1055 MS (n)577 1055 MS
+(s)601 1055 MS ( )620 1055 MS (d)637 1055 MS (e)662 1055 MS (s)684 1055 MS ( )703 1055 MS (c)720 1055 MS (o)742 1055 MS (n)768 1055 MS (t)792 1055 MS (a)807 1055 MS (i)830 1055 MS (n)843 1055 MS (e)867 1055 MS (r)889 1055 MS (s)906 1055 MS
+( )925 1055 MS (d)942 1055 MS (i)968 1055 MS (f)982 1055 MS (f)998 1055 MS (\351)1014 1055 MS (r)1036 1055 MS (e)1053 1055 MS (n)1076 1055 MS (t)1100 1055 MS (s)1115 1055 MS ( )1134 1055 MS (e)1151 1055 MS (t)1173 1055 MS ( )1188 1055 MS (s)1205 1055 MS
+(u)1224 1055 MS (i)1249 1055 MS (v)1262 1055 MS (a)1287 1055 MS (n)1310 1055 MS (t)1334 1055 MS ( )1349 1055 MS (u)1366 1055 MS (n)1391 1055 MS ( )1415 1055 MS (n)1432 1055 MS (o)1456 1055 MS (m)1483 1055 MS (b)1521 1055 MS (r)1545 1055 MS (e)1562 1055 MS
+( )1584 1055 MS (d)1601 1055 MS (e)1626 1055 MS ( )1648 1055 MS (p)1665 1055 MS (r)1690 1055 MS (o)1707 1055 MS (c)1733 1055 MS (e)1755 1055 MS (s)1777 1055 MS (s)1796 1055 MS (u)1815 1055 MS (s)1840 1055 MS ( )1859 1055 MS (d)1876 1055 MS (i)1902 1055 MS
+(f)1915 1055 MS (f)1932 1055 MS (\351)1948 1055 MS (r)1970 1055 MS (e)1987 1055 MS (n)2010 1055 MS (t)2034 1055 MS (s)2049 1055 MS (,)2068 1055 MS ( )2081 1055 MS (i)2098 1055 MS (l)2111 1055 MS ( )2125 1055 MS
+(e)235 1112 MS (s)257 1112 MS (t)276 1112 MS ( )291 1112 MS (n)304 1112 MS (\351)328 1112 MS (c)350 1112 MS (e)372 1112 MS (s)395 1112 MS (s)414 1112 MS (a)433 1112 MS (i)456 1112 MS (r)469 1112 MS (e)486 1112 MS ( )508 1112 MS (d)521 1112 MS
+(\222)547 1112 MS (i)564 1112 MS (m)578 1112 MS (p)616 1112 MS (l)642 1112 MS (\351)655 1112 MS (m)678 1112 MS (e)716 1112 MS (n)739 1112 MS (t)763 1112 MS (e)778 1112 MS (r)800 1112 MS ( )817 1112 MS (u)830 1112 MS (n)855 1112 MS (e)879 1112 MS
+( )901 1112 MS (f)915 1112 MS (o)930 1112 MS (n)956 1112 MS (c)981 1112 MS (t)1003 1112 MS (i)1018 1112 MS (o)1030 1112 MS (n)1056 1112 MS ( )1080 1112 MS (n)1094 1112 MS (c)1119 1112 MS (s)1141 1112 MS (r)1160 1112 MS (m)1178 1112 MS (a)1216 1112 MS
+(t)1238 1112 MS (\()1253 1112 MS (s)1270 1112 MS (t)1289 1112 MS (a)1304 1112 MS (r)1326 1112 MS (t)1342 1112 MS (,)1356 1112 MS (e)1369 1112 MS (n)1391 1112 MS (d)1415 1112 MS (\))1440 1112 MS ( )1457 1112 MS (q)1470 1112 MS (u)1495 1112 MS (i)1521 1112 MS
+( )1533 1112 MS (r)1546 1112 MS (e)1563 1112 MS (n)1586 1112 MS (v)1611 1112 MS (o)1635 1112 MS (i)1662 1112 MS (e)1674 1112 MS ( )1696 1112 MS (u)1709 1112 MS (n)1735 1112 MS (e)1759 1112 MS ( )1781 1112 MS (p)1794 1112 MS (a)1820 1112 MS (r)1842 1112 MS
+(t)1859 1112 MS (i)1874 1112 MS (e)1886 1112 MS ( )1908 1112 MS (s)1922 1112 MS (e)1941 1112 MS (u)1963 1112 MS (l)1989 1112 MS (e)2002 1112 MS (m)2025 1112 MS (e)2063 1112 MS (n)2086 1112 MS (t)2110 1112 MS ( )2125 1112 MS
+(d)235 1170 MS (e)260 1170 MS (s)282 1170 MS ( )301 1170 MS (d)314 1170 MS (o)339 1170 MS (n)365 1170 MS (n)389 1170 MS (\351)413 1170 MS (e)436 1170 MS (s)458 1170 MS ( )477 1170 MS (l)491 1170 MS (o)503 1170 MS (c)529 1170 MS (a)551 1170 MS
+(l)574 1170 MS (e)587 1170 MS (s)609 1170 MS ( )628 1170 MS (d)641 1170 MS (e)666 1170 MS ( )688 1170 MS (l)702 1170 MS (a)715 1170 MS ( )737 1170 MS (m)751 1170 MS (a)788 1170 MS (t)810 1170 MS (r)825 1170 MS (i)843 1170 MS (c)855 1170 MS
+(e)877 1170 MS ( )899 1170 MS (\340)912 1170 MS ( )934 1170 MS (u)947 1170 MS (n)972 1170 MS ( )996 1170 MS (p)1009 1170 MS (r)1034 1170 MS (o)1051 1170 MS (c)1077 1170 MS (e)1099 1170 MS (s)1121 1170 MS (s)1140 1170 MS (e)1159 1170 MS (u)1181 1170 MS
+(r)1206 1170 MS (.)1223 1170 MS
+( )1236 1170 MS
+( )348 1227 MS
+(L)235 1285 MS (\222)265 1285 MS (i)282 1285 MS (m)296 1285 MS (p)334 1285 MS (l)360 1285 MS (\351)373 1285 MS (m)396 1285 MS (e)434 1285 MS (n)457 1285 MS (t)481 1285 MS (a)496 1285 MS (t)518 1285 MS (i)533 1285 MS (o)545 1285 MS (n)571 1285 MS
+( )595 1285 MS
+(d)615 1285 MS (u)640 1285 MS ( )666 1285 MS (c)686 1285 MS (o)708 1285 MS (m)735 1285 MS (p)772 1285 MS (o)797 1285 MS (s)823 1285 MS (a)842 1285 MS (n)865 1285 MS (t)889 1285 MS ( )904 1285 MS (m)925 1285 MS (a)962 1285 MS (t)984 1285 MS
+(r)999 1285 MS (i)1016 1285 MS (c)1029 1285 MS (e)1051 1285 MS ( )1073 1285 MS (N)1093 1285 MS (u)1129 1285 MS (m)1155 1285 MS (e)1193 1285 MS (r)1215 1285 MS (i)1233 1285 MS (c)1247 1285 MS (a)1269 1285 MS (l)1292 1285 MS ( )1305 1285 MS (P)1325 1285 MS
+(l)1354 1285 MS (a)1367 1285 MS (t)1389 1285 MS (o)1403 1285 MS (n)1429 1285 MS ( )1453 1285 MS (e)1473 1285 MS (s)1496 1285 MS (t)1515 1285 MS ( )1530 1285 MS (r)1550 1285 MS (e)1567 1285 MS (p)1589 1285 MS (r)1614 1285 MS (\351)1631 1285 MS (s)1653 1285 MS
+(e)1672 1285 MS (n)1694 1285 MS (t)1718 1285 MS (a)1733 1285 MS (t)1755 1285 MS (i)1770 1285 MS (v)1783 1285 MS (e)1807 1285 MS ( )1830 1285 MS (d)1850 1285 MS (\222)1875 1285 MS (u)1891 1285 MS (n)1917 1285 MS ( )1942 1285 MS (c)1962 1285 MS (o)1984 1285 MS
+(d)2010 1285 MS (e)2035 1285 MS ( )2057 1285 MS (d)2077 1285 MS (e)2102 1285 MS ( )2125 1285 MS
+(c)235 1342 MS (a)257 1342 MS (l)280 1342 MS (c)292 1342 MS (u)314 1342 MS (l)340 1342 MS ( )353 1342 MS (q)375 1342 MS (u)400 1342 MS (i)426 1342 MS ( )439 1342 MS (g)461 1342 MS (\351)487 1342 MS (n)510 1342 MS (\350)534 1342 MS (r)556 1342 MS
+(e)573 1342 MS ( )595 1342 MS (u)617 1342 MS (n)643 1342 MS ( )667 1342 MS (o)689 1342 MS (b)715 1342 MS (j)740 1342 MS (e)753 1342 MS (t)775 1342 MS ( )790 1342 MS (d)812 1342 MS (e)837 1342 MS ( )859 1342 MS (t)881 1342 MS (y)896 1342 MS
+(p)919 1342 MS (e)944 1342 MS ( )966 1342 MS (m)989 1342 MS (a)1027 1342 MS (t)1049 1342 MS (r)1064 1342 MS (i)1082 1342 MS (c)1094 1342 MS (e)1116 1342 MS ( )1138 1342 MS (p)1160 1342 MS (a)1185 1342 MS (r)1207 1342 MS (a)1224 1342 MS (l)1247 1342 MS
+(l)1261 1342 MS (\350)1274 1342 MS (l)1297 1342 MS (e)1310 1342 MS (.)1332 1342 MS ( )1345 1342 MS (I)1367 1342 MS (l)1385 1342 MS ( )1397 1342 MS (d)1419 1342 MS (o)1444 1342 MS (i)1471 1342 MS (t)1483 1342 MS ( )1498 1342 MS (d)1520 1342 MS (o)1545 1342 MS
+(n)1571 1342 MS (c)1595 1342 MS ( )1617 1342 MS (d)1639 1342 MS (\351)1664 1342 MS (f)1687 1342 MS (i)1703 1342 MS (n)1716 1342 MS (i)1742 1342 MS (r)1755 1342 MS ( )1772 1342 MS (u)1794 1342 MS (n)1820 1342 MS (e)1844 1342 MS ( )1866 1342 MS (f)1889 1342 MS
+(o)1904 1342 MS (n)1930 1342 MS (c)1955 1342 MS (t)1977 1342 MS (i)1992 1342 MS (o)2004 1342 MS (n)2030 1342 MS ( )2054 1342 MS (d)2076 1342 MS (e)2102 1342 MS ( )2125 1342 MS
+(l)235 1400 MS (e)248 1400 MS (c)270 1400 MS (t)292 1400 MS (u)307 1400 MS (r)332 1400 MS (e)349 1400 MS ( )371 1400 MS (d)388 1400 MS (\222)413 1400 MS (u)429 1400 MS (n)455 1400 MS (e)479 1400 MS ( )502 1400 MS (m)520 1400 MS (a)558 1400 MS
+(t)580 1400 MS (r)595 1400 MS (i)612 1400 MS (c)624 1400 MS (e)647 1400 MS ( )669 1400 MS (d)686 1400 MS (e)711 1400 MS (p)733 1400 MS (u)758 1400 MS (i)784 1400 MS (s)797 1400 MS ( )817 1400 MS (u)834 1400 MS (n)860 1400 MS ( )884 1400 MS
+(f)902 1400 MS (i)919 1400 MS (c)932 1400 MS (h)955 1400 MS (i)980 1400 MS (e)993 1400 MS (r)1015 1400 MS
+( )1032 1400 MS
+(:)1045 1400 MS ( )1059 1400 MS (R)1076 1400 MS (e)1109 1400 MS (a)1131 1400 MS (d)1153 1400 MS (D)1178 1400 MS (a)1214 1400 MS (t)1236 1400 MS (a)1251 1400 MS (F)1273 1400 MS (r)1300 1400 MS (o)1317 1400 MS (m)1344 1400 MS (F)1381 1400 MS (i)1409 1400 MS
+(l)1423 1400 MS (e)1436 1400 MS (\()1458 1400 MS (\))1475 1400 MS (,)1492 1400 MS ( )1505 1400 MS (d)1522 1400 MS (\222)1547 1400 MS (\351)1563 1400 MS (c)1586 1400 MS (r)1608 1400 MS (i)1626 1400 MS (t)1638 1400 MS (u)1653 1400 MS (r)1678 1400 MS (e)1695 1400 MS
+( )1717 1400 MS (d)1734 1400 MS (\222)1759 1400 MS (u)1775 1400 MS (n)1801 1400 MS (e)1825 1400 MS ( )1847 1400 MS (m)1865 1400 MS (a)1903 1400 MS (t)1925 1400 MS (r)1940 1400 MS (i)1958 1400 MS (c)1970 1400 MS (e)1992 1400 MS ( )2015 1400 MS (d)2032 1400 MS
+(a)2057 1400 MS (n)2080 1400 MS (s)2105 1400 MS ( )2125 1400 MS
+(u)235 1457 MS (n)260 1457 MS ( )284 1457 MS
+(f)303 1457 MS (i)320 1457 MS (c)333 1457 MS (h)356 1457 MS (i)381 1457 MS (e)394 1457 MS (r)416 1457 MS
+( )433 1457 MS
+(:)446 1457 MS ( )460 1457 MS (S)478 1457 MS (a)506 1457 MS (v)528 1457 MS (e)552 1457 MS (D)574 1457 MS (a)611 1457 MS (t)633 1457 MS (a)648 1457 MS (T)670 1457 MS (o)700 1457 MS (F)726 1457 MS (i)754 1457 MS (l)767 1457 MS (e)780 1457 MS
+(\()802 1457 MS (\))819 1457 MS (,)836 1457 MS ( )849 1457 MS (u)867 1457 MS (n)892 1457 MS (e)916 1457 MS ( )938 1457 MS (f)957 1457 MS (o)972 1457 MS (n)999 1457 MS (c)1023 1457 MS (t)1045 1457 MS (i)1061 1457 MS (o)1073 1457 MS (n)1099 1457 MS
+( )1123 1457 MS (q)1141 1457 MS (u)1166 1457 MS (i)1192 1457 MS ( )1205 1457 MS (r)1223 1457 MS (e)1241 1457 MS (n)1263 1457 MS (v)1288 1457 MS (o)1312 1457 MS (i)1339 1457 MS (e)1351 1457 MS ( )1373 1457 MS (u)1391 1457 MS (n)1417 1457 MS (e)1442 1457 MS
+( )1464 1457 MS (r)1482 1457 MS (\351)1499 1457 MS (f)1522 1457 MS (\351)1537 1457 MS (r)1559 1457 MS (e)1576 1457 MS (n)1599 1457 MS (c)1624 1457 MS (e)1646 1457 MS ( )1668 1457 MS (C)1686 1457 MS (O)1719 1457 MS (R)1756 1457 MS (B)1789 1457 MS (A)1823 1457 MS
+( )1858 1457 MS (s)1877 1457 MS (u)1896 1457 MS (r)1921 1457 MS ( )1938 1457 MS (u)1956 1457 MS (n)1982 1457 MS ( )2006 1457 MS (o)2024 1457 MS (b)2050 1457 MS (j)2075 1457 MS (e)2088 1457 MS (t)2110 1457 MS ( )2125 1457 MS
+(m)235 1515 MS (a)273 1515 MS (t)295 1515 MS (r)310 1515 MS (i)328 1515 MS (c)340 1515 MS (e)362 1515 MS ( )384 1515 MS (p)397 1515 MS (a)422 1515 MS (r)444 1515 MS (a)461 1515 MS (l)484 1515 MS (l)497 1515 MS (\350)510 1515 MS (l)533 1515 MS
+(e)546 1515 MS ( )568 1515 MS (d)581 1515 MS (m)607 1515 MS (a)645 1515 MS (t)667 1515 MS (\()682 1515 MS (\))699 1515 MS (,)716 1515 MS ( )728 1515 MS (a)741 1515 MS (i)763 1515 MS (n)776 1515 MS (s)801 1515 MS (i)821 1515 MS ( )833 1515 MS
+(q)846 1515 MS (u)871 1515 MS (e)896 1515 MS ( )918 1515 MS (s)931 1515 MS (o)950 1515 MS (n)976 1515 MS ( )1000 1515 MS (\351)1013 1515 MS (q)1035 1515 MS (u)1060 1515 MS (i)1086 1515 MS (v)1099 1515 MS (a)1124 1515 MS (l)1147 1515 MS (e)1160 1515 MS
+(n)1183 1515 MS (t)1207 1515 MS ( )1222 1515 MS (e)1235 1515 MS (n)1257 1515 MS ( )1281 1515 MS (a)1294 1515 MS (s)1316 1515 MS (y)1336 1515 MS (n)1360 1515 MS (c)1385 1515 MS (h)1408 1515 MS (r)1432 1515 MS (o)1449 1515 MS (n)1475 1515 MS (e)1499 1515 MS
+( )1521 1515 MS
+(:)1534 1515 MS ( )1548 1515 MS (g)1561 1515 MS (e)1586 1515 MS (t)1608 1515 MS (_)1623 1515 MS (d)1648 1515 MS (m)1673 1515 MS (a)1710 1515 MS (t)1732 1515 MS (\()1747 1515 MS (\))1764 1515 MS (.)1781 1515 MS
+( )1794 1515 MS
+[42 0 0 -42 0 0]/Courier MF
+( )235 1562 MS
+(#)235 1609 MS (i)260 1609 MS (f)285 1609 MS (n)310 1609 MS (d)335 1609 MS (e)360 1609 MS (f)385 1609 MS ( )410 1609 MS (_)435 1609 MS (N)460 1609 MS (P)485 1609 MS (M)510 1609 MS (A)535 1609 MS (T)560 1609 MS (C)585 1609 MS (O)610 1609 MS
+(M)635 1609 MS (P)660 1609 MS (O)685 1609 MS (N)710 1609 MS (E)735 1609 MS (N)760 1609 MS (T)785 1609 MS (_)810 1609 MS
+( )835 1609 MS
+(#)235 1657 MS (d)260 1657 MS (e)285 1657 MS (f)310 1657 MS (i)335 1657 MS (n)360 1657 MS (e)385 1657 MS ( )410 1657 MS (_)435 1657 MS (N)460 1657 MS (P)485 1657 MS (M)510 1657 MS (A)535 1657 MS (T)560 1657 MS (C)585 1657 MS (O)610 1657 MS
+(M)635 1657 MS (P)660 1657 MS (O)685 1657 MS (N)710 1657 MS (E)735 1657 MS (N)760 1657 MS (T)785 1657 MS (_)810 1657 MS
+( )835 1657 MS
+( )235 1704 MS
+(#)235 1751 MS (i)260 1751 MS (n)285 1751 MS (c)310 1751 MS (l)335 1751 MS (u)360 1751 MS (d)385 1751 MS (e)410 1751 MS ( )435 1751 MS (")460 1751 MS (S)485 1751 MS (A)510 1751 MS (L)535 1751 MS (O)560 1751 MS (M)585 1751 MS (E)610 1751 MS
+(c)635 1751 MS (o)660 1751 MS (n)685 1751 MS (f)710 1751 MS (i)735 1751 MS (g)760 1751 MS (.)785 1751 MS (h)810 1751 MS (")835 1751 MS
+( )860 1751 MS
+(#)235 1798 MS (i)260 1798 MS (n)285 1798 MS (c)310 1798 MS (l)335 1798 MS (u)360 1798 MS (d)385 1798 MS (e)410 1798 MS ( )435 1798 MS (C)460 1798 MS (O)485 1798 MS (R)510 1798 MS (B)535 1798 MS
+(A)560 1798 MS (_)585 1798 MS (S)610 1798 MS (E)635 1798 MS (R)660 1798 MS (V)685 1798 MS (E)710 1798 MS (R)735 1798 MS (_)760 1798 MS (H)785 1798 MS (E)810 1798 MS (A)835 1798 MS (D)860 1798 MS (E)885 1798 MS (R)910 1798 MS (\()935 1798 MS
+(N)960 1798 MS (P)985 1798 MS (M)1010 1798 MS (a)1035 1798 MS (t)1060 1798 MS (C)1085 1798 MS (o)1110 1798 MS (m)1135 1798 MS (p)1160 1798 MS (o)1185 1798 MS (n)1210 1798 MS (e)1235 1798 MS (n)1260 1798 MS (t)1285 1798 MS (\))1310 1798 MS
+( )1335 1798 MS
+(#)235 1845 MS (i)260 1845 MS (n)285 1845 MS (c)310 1845 MS (l)335 1845 MS (u)360 1845 MS (d)385 1845 MS (e)410 1845 MS ( )435 1845 MS (")460 1845 MS (S)485 1845 MS (A)510 1845 MS (L)535 1845 MS (O)560 1845 MS (M)585 1845 MS (E)610 1845 MS
+(_)635 1845 MS (C)660 1845 MS (o)685 1845 MS (m)710 1845 MS (p)735 1845 MS (o)760 1845 MS (n)785 1845 MS (e)810 1845 MS (n)835 1845 MS (t)860 1845 MS (_)885 1845 MS (i)910 1845 MS (.)935 1845 MS (h)960 1845 MS (x)985 1845 MS (x)1010 1845 MS
+(")1035 1845 MS
+( )1060 1845 MS
+(#)235 1893 MS (i)260 1893 MS (n)285 1893 MS (c)310 1893 MS (l)335 1893 MS (u)360 1893 MS (d)385 1893 MS (e)410 1893 MS ( )435 1893 MS (")460 1893 MS (M)485 1893 MS (P)510 1893 MS (I)535 1893 MS (O)560 1893 MS (b)585 1893 MS (j)610 1893 MS
+(e)635 1893 MS (c)660 1893 MS (t)685 1893 MS (_)710 1893 MS (i)735 1893 MS (.)760 1893 MS (h)785 1893 MS (")810 1893 MS
+( )835 1893 MS
+(#)235 1940 MS (i)260 1940 MS (n)285 1940 MS (c)310 1940 MS (l)335 1940 MS (u)360 1940 MS (d)385 1940 MS (e)410 1940 MS ( )435 1940 MS (")460 1940 MS (n)485 1940 MS (p)510 1940 MS (_)535 1940 MS (m)560 1940 MS (a)585 1940 MS (t)610 1940 MS
+(r)635 1940 MS (i)660 1940 MS (x)685 1940 MS (.)710 1940 MS (h)735 1940 MS (h)760 1940 MS (")785 1940 MS
+( )810 1940 MS
+( )235 1987 MS
+(c)235 2034 MS (l)260 2034 MS (a)285 2034 MS (s)310 2034 MS (s)335 2034 MS ( )360 2034 MS (P)385 2034 MS (C)410 2034 MS (S)435 2034 MS (R)460 2034 MS (M)485 2034 MS (a)510 2034 MS (t)535 2034 MS (_)560 2034 MS (i)585 2034 MS (:)610 2034 MS
+( )635 2034 MS (p)660 2034 MS (u)685 2034 MS (b)710 2034 MS (l)735 2034 MS (i)760 2034 MS (c)785 2034 MS ( )810 2034 MS (P)835 2034 MS (O)860 2034 MS (A)885 2034 MS (_)910 2034 MS (E)935 2034 MS (n)960 2034 MS (g)985 2034 MS (i)1010 2034 MS
+(n)1035 2034 MS (e)1060 2034 MS (s)1085 2034 MS (:)1110 2034 MS (:)1135 2034 MS (P)1160 2034 MS (C)1185 2034 MS (S)1210 2034 MS (R)1235 2034 MS (M)1260 2034 MS (a)1285 2034 MS (t)1310 2034 MS (,)1335 2034 MS ( )1360 2034 MS
+( )1385 2034 MS
+( )235 2081 MS
+( )382 2081 MS
+( )530 2081 MS ( )555 2081 MS (p)580 2081 MS (u)605 2081 MS (b)630 2081 MS (l)655 2081 MS (i)680 2081 MS (c)705 2081 MS ( )730 2081 MS (M)755 2081 MS (P)780 2081 MS (I)805 2081 MS (O)830 2081 MS (b)855 2081 MS (j)880 2081 MS (e)905 2081 MS
+(c)930 2081 MS (t)955 2081 MS (_)980 2081 MS (i)1005 2081 MS
+( )1030 2081 MS
+( )235 2129 MS
+({)235 2176 MS
+( )260 2176 MS
+(p)235 2223 MS (u)260 2223 MS (b)285 2223 MS (l)310 2223 MS (i)335 2223 MS (c)360 2223 MS (:)385 2223 MS
+( )410 2223 MS
+( )235 2270 MS ( )260 2270 MS (/)285 2270 MS (/)310 2270 MS ( )335 2270 MS (C)360 2270 MS (o)385 2270 MS (n)410 2270 MS (s)435 2270 MS (t)460 2270 MS (r)485 2270 MS (u)510 2270 MS (c)535 2270 MS (t)560 2270 MS (o)585 2270 MS (r)610 2270 MS
+(s)635 2270 MS
+( )660 2270 MS
+( )235 2317 MS ( )260 2317 MS (P)285 2317 MS (C)310 2317 MS (S)335 2317 MS (R)360 2317 MS (M)385 2317 MS (a)410 2317 MS (t)435 2317 MS (_)460 2317 MS (i)485 2317 MS (\()510 2317 MS (i)535 2317 MS (n)560 2317 MS (t)585 2317 MS ( )610 2317 MS
+(n)635 2317 MS (b)660 2317 MS (p)685 2317 MS (r)710 2317 MS (o)735 2317 MS (c)760 2317 MS (,)785 2317 MS ( )810 2317 MS (i)835 2317 MS (n)860 2317 MS (t)885 2317 MS ( )910 2317 MS (n)935 2317 MS (u)960 2317 MS (m)985 2317 MS (p)1010 2317 MS
+(r)1035 2317 MS (o)1060 2317 MS (c)1085 2317 MS (,)1110 2317 MS ( )1135 2317 MS (i)1160 2317 MS (n)1185 2317 MS (t)1210 2317 MS ( )1235 2317 MS
+(*)1260 2317 MS (l)1285 2317 MS (i)1310 2317 MS (m)1335 2317 MS (,)1360 2317 MS ( )1385 2317 MS (i)1410 2317 MS (n)1435 2317 MS (t)1460 2317 MS ( )1485 2317 MS (n)1510 2317 MS (b)1535 2317 MS (r)1560 2317 MS (o)1585 2317 MS (w)1610 2317 MS (s)1635 2317 MS
+(,)1660 2317 MS ( )1685 2317 MS (i)1710 2317 MS (n)1735 2317 MS (t)1760 2317 MS ( )1785 2317 MS (n)1810 2317 MS (b)1835 2317 MS (c)1860 2317 MS (o)1885 2317 MS (l)1910 2317 MS (s)1935 2317 MS (,)1960 2317 MS ( )1985 2317 MS
+(N)235 2365 MS (P)260 2365 MS (_)285 2365 MS (c)310 2365 MS (s)335 2365 MS (r)360 2365 MS ( )385 2365 MS (*)410 2365 MS (c)435 2365 MS (s)460 2365 MS (r)485 2365 MS (\))510 2365 MS ( )535 2365 MS (;)560 2365 MS
+( )585 2365 MS
+( )235 2412 MS ( )260 2412 MS (/)285 2412 MS (/)310 2412 MS ( )335 2412 MS (D)360 2412 MS (e)385 2412 MS (s)410 2412 MS (t)435 2412 MS (r)460 2412 MS (u)485 2412 MS (c)510 2412 MS (t)535 2412 MS (o)560 2412 MS (r)585 2412 MS
+( )610 2412 MS
+( )235 2459 MS ( )260 2459 MS (~)285 2459 MS (P)310 2459 MS (C)335 2459 MS (S)360 2459 MS (R)385 2459 MS (M)410 2459 MS (a)435 2459 MS (t)460 2459 MS (_)485 2459 MS (i)510 2459 MS (\()535 2459 MS (\))560 2459 MS ( )585 2459 MS (;)610 2459 MS
+( )635 2459 MS
+( )235 2506 MS ( )260 2506 MS
+( )285 2506 MS
+( )235 2553 MS ( )260 2553 MS (E)285 2553 MS (n)310 2553 MS (g)335 2553 MS (i)360 2553 MS (n)385 2553 MS (e)410 2553 MS (s)435 2553 MS (:)460 2553 MS (:)485 2553 MS (C)510 2553 MS (S)535 2553 MS (R)560 2553 MS (M)585 2553 MS (a)610 2553 MS
+(t)635 2553 MS (S)660 2553 MS (t)685 2553 MS (r)710 2553 MS (u)735 2553 MS (c)760 2553 MS (t)785 2553 MS (*)810 2553 MS ( )835 2553 MS (c)860 2553 MS (s)885 2553 MS (r)910 2553 MS (m)935 2553 MS (a)960 2553 MS (t)985 2553 MS (\()1010 2553 MS
+(\))1035 2553 MS (;)1060 2553 MS
+( )1085 2553 MS
+( )235 2601 MS ( )260 2601 MS (C)285 2601 MS (O)310 2601 MS (R)335 2601 MS (B)360 2601 MS (A)385 2601 MS (:)410 2601 MS (:)435 2601 MS (U)460 2601 MS (L)485 2601 MS (o)510 2601 MS (n)535 2601 MS (g)560 2601 MS ( )585 2601 MS (N)610 2601 MS
+(b)635 2601 MS (R)660 2601 MS (o)685 2601 MS (w)710 2601 MS (s)735 2601 MS (\()760 2601 MS (\))785 2601 MS ( )810 2601 MS ({)835 2601 MS ( )860 2601 MS (r)885 2601 MS (e)910 2601 MS (t)935 2601 MS (u)960 2601 MS (r)985 2601 MS (n)1010 2601 MS
+( )1035 2601 MS (\()1060 2601 MS (C)1085 2601 MS (O)1110 2601 MS (R)1135 2601 MS (B)1160 2601 MS (A)1185 2601 MS (:)1210 2601 MS (:)1235 2601 MS (U)1260 2601 MS (L)1285 2601 MS (o)1310 2601 MS (n)1335 2601 MS (g)1360 2601 MS (\))1385 2601 MS (_)1410 2601 MS
+(n)1435 2601 MS (b)1460 2601 MS (r)1485 2601 MS (o)1510 2601 MS (w)1535 2601 MS (s)1560 2601 MS (;)1585 2601 MS ( )1610 2601 MS (})1635 2601 MS (;)1660 2601 MS
+( )1685 2601 MS
+( )235 2648 MS ( )260 2648 MS (C)285 2648 MS (O)310 2648 MS (R)335 2648 MS (B)360 2648 MS (A)385 2648 MS (:)410 2648 MS (:)435 2648 MS (U)460 2648 MS (L)485 2648 MS (o)510 2648 MS (n)535 2648 MS (g)560 2648 MS ( )585 2648 MS (N)610 2648 MS
+(b)635 2648 MS (C)660 2648 MS (o)685 2648 MS (l)710 2648 MS (s)735 2648 MS (\()760 2648 MS (\))785 2648 MS ( )810 2648 MS ({)835 2648 MS ( )860 2648 MS (r)885 2648 MS (e)910 2648 MS (t)935 2648 MS (u)960 2648 MS (r)985 2648 MS (n)1010 2648 MS
+( )1035 2648 MS (\()1060 2648 MS (C)1085 2648 MS (O)1110 2648 MS (R)1135 2648 MS (B)1160 2648 MS (A)1185 2648 MS (:)1210 2648 MS (:)1235 2648 MS (U)1260 2648 MS (L)1285 2648 MS (o)1310 2648 MS (n)1335 2648 MS (g)1360 2648 MS (\))1385 2648 MS (_)1410 2648 MS
+(n)1435 2648 MS (b)1460 2648 MS (c)1485 2648 MS (o)1510 2648 MS (l)1535 2648 MS (s)1560 2648 MS (;)1585 2648 MS ( )1610 2648 MS (})1635 2648 MS (;)1660 2648 MS
+( )1685 2648 MS
+( )235 2695 MS ( )260 2695 MS (v)285 2695 MS (o)310 2695 MS (i)335 2695 MS (d)360 2695 MS ( )385 2695 MS (L)410 2695 MS (M)435 2695 MS (a)460 2695 MS (t)485 2695 MS (\()510 2695 MS (C)535 2695 MS (O)560 2695 MS (R)585 2695 MS (B)610 2695 MS
+(A)635 2695 MS (:)660 2695 MS (:)685 2695 MS (U)710 2695 MS (L)735 2695 MS (o)760 2695 MS
+(n)785 2695 MS (g)810 2695 MS (&)835 2695 MS ( )860 2695 MS (s)885 2695 MS (t)910 2695 MS (a)935 2695 MS (r)960 2695 MS (t)985 2695 MS (,)1010 2695 MS ( )1035 2695 MS (C)1060 2695 MS (O)1085 2695 MS (R)1110 2695 MS (B)1135 2695 MS (A)1160 2695 MS
+(:)1185 2695 MS (:)1210 2695 MS (U)1235 2695 MS (L)1260 2695 MS (o)1285 2695 MS (n)1310 2695 MS (g)1335 2695 MS (&)1360 2695 MS ( )1385 2695 MS (e)1410 2695 MS (n)1435 2695 MS (d)1460 2695 MS (\))1485 2695 MS ( )1510 2695 MS ({)1535 2695 MS ( )1560 2695 MS
+(s)1585 2695 MS (t)1610 2695 MS (a)1635 2695 MS (r)1660 2695 MS (t)1685 2695 MS ( )1710 2695 MS (=)1735 2695 MS ( )1760 2695 MS (_)1785 2695 MS (l)1810 2695 MS (i)1835 2695 MS (m)1860 2695 MS ([)1885 2695 MS (0)1910 2695 MS (])1935 2695 MS (;)1960 2695 MS
+( )1985 2695 MS
+( )235 2742 MS ( )260 2742 MS ( )285 2742 MS ( )310 2742 MS ( )335 2742 MS ( )360 2742 MS ( )385 2742 MS ( )410 2742 MS ( )435 2742 MS ( )460 2742 MS ( )485 2742 MS ( )510 2742 MS ( )535 2742 MS ( )560 2742 MS ( )585 2742 MS ( )610 2742 MS
+( )635 2742 MS ( )660 2742 MS ( )685 2742 MS ( )710 2742 MS ( )735 2742 MS ( )760 2742 MS ( )785 2742 MS ( )810 2742 MS ( )835 2742 MS ( )860 2742 MS ( )885 2742 MS ( )910 2742 MS ( )935 2742 MS ( )960 2742 MS ( )985 2742 MS ( )1010 2742 MS
+( )1035 2742 MS ( )1060 2742 MS ( )1085 2742 MS ( )1110 2742 MS ( )1135 2742 MS ( )1160 2742 MS ( )1185 2742 MS ( )1210 2742 MS ( )1235 2742 MS ( )1260 2742 MS ( )1285 2742 MS ( )1310 2742 MS ( )1335 2742 MS ( )1360 2742 MS ( )1385 2742 MS ( )1410 2742 MS
+( )1435 2742 MS ( )1460 2742 MS ( )1485 2742 MS ( )1510 2742 MS ( )1535 2742 MS ( )1560 2742 MS (e)1585 2742 MS (n)1610 2742 MS (d)1635 2742 MS ( )1660 2742 MS (=)1685 2742 MS ( )1710 2742 MS (_)1735 2742 MS (l)1760 2742 MS (i)1785 2742 MS (m)1810 2742 MS
+([)1835 2742 MS (1)1860 2742 MS (])1885 2742 MS (;)1910 2742 MS ( )1935 2742 MS (})1960 2742 MS (;)1985 2742 MS
+( )2010 2742 MS
+( )235 2789 MS ( )260 2789 MS (E)285 2789 MS (n)310 2789 MS (g)335 2789 MS (i)360 2789 MS (n)385 2789 MS (e)410 2789 MS (s)435 2789 MS (:)460 2789 MS (:)485 2789 MS (C)510 2789 MS (S)535 2789 MS (R)560 2789 MS (M)585 2789 MS (a)610 2789 MS
+(t)635 2789 MS (S)660 2789 MS (t)685 2789 MS (r)710 2789 MS (u)735 2789 MS (c)760 2789 MS (t)785 2789 MS (*)810 2789 MS ( )835 2789 MS (n)860 2789 MS (c)885 2789 MS (s)910 2789 MS (r)935 2789 MS (m)960 2789 MS (a)985 2789 MS (t)1010 2789 MS
+(\()1035 2789 MS (C)1060 2789 MS (O)1085 2789 MS (R)1110 2789 MS (B)1135 2789 MS (A)1160 2789 MS (:)1185 2789 MS (:)1210 2789 MS (U)1235 2789 MS (L)1260 2789 MS (o)1285 2789 MS (n)1310 2789 MS (g)1335 2789 MS ( )1360 2789 MS (s)1385 2789 MS (t)1410 2789 MS
+(a)1435 2789 MS (r)1460 2789 MS (t)1485 2789 MS (,)1510 2789 MS ( )1535 2789 MS (C)1560 2789 MS (O)1585 2789 MS (R)1610 2789 MS (B)1635 2789 MS (A)1660 2789 MS (:)1685 2789 MS (:)1710 2789 MS (U)1735 2789 MS (L)1760 2789 MS (o)1785 2789 MS (n)1810 2789 MS
+(g)1835 2789 MS ( )1860 2789 MS (e)1885 2789 MS (n)1910 2789 MS (d)1935 2789 MS (\))1960 2789 MS (;)1985 2789 MS
+( )2010 2789 MS
+( )235 2837 MS
+( )235 2884 MS (p)260 2884 MS (r)285 2884 MS (o)310 2884 MS (t)335 2884 MS (e)360 2884 MS (c)385 2884 MS (t)410 2884 MS (e)435 2884 MS (d)460 2884 MS (:)485 2884 MS
+( )510 2884 MS
+( )235 2931 MS ( )260 2931 MS (E)285 2931 MS (n)310 2931 MS (g)335 2931 MS (i)360 2931 MS (n)385 2931 MS (e)410 2931 MS (s)435 2931 MS (:)460 2931 MS (:)485 2931 MS (C)510 2931 MS (S)535 2931 MS (R)560 2931 MS (M)585 2931 MS (a)610 2931 MS
+(t)635 2931 MS (S)660 2931 MS (t)685 2931 MS (r)710 2931 MS (u)735 2931 MS (c)760 2931 MS (t)785 2931 MS (_)810 2931 MS (v)835 2931 MS (a)860 2931 MS (r)885 2931 MS ( )910 2931 MS (_)935 2931 MS (c)960 2931 MS (s)985 2931 MS (r)1010 2931 MS
+(m)1035 2931 MS (a)1060 2931 MS (t)1085 2931 MS (;)1110 2931 MS
+( )1135 2931 MS
+( )235 2978 MS ( )260 2978 MS (i)285 2978 MS (n)310 2978 MS (t)335 2978 MS ( )360 2978 MS (_)385 2978 MS (l)410 2978 MS (i)435 2978 MS (m)460 2978 MS ([)485 2978 MS (2)510 2978 MS (])535 2978 MS
+(;)560 2978 MS
+( )585 2978 MS
+( )235 3025 MS ( )260 3025 MS (i)285 3025 MS (n)310 3025 MS (t)335 3025 MS ( )360 3025 MS (_)385 3025 MS (n)410 3025 MS (b)435 3025 MS (r)460 3025 MS (o)485 3025 MS (w)510 3025 MS (s)535 3025 MS (;)560 3025 MS
+( )585 3025 MS
+( )235 3073 MS ( )260 3073 MS (i)285 3073 MS (n)310 3073 MS (t)335 3073 MS ( )360 3073 MS (_)385 3073 MS (n)410 3073 MS (b)435 3073 MS (c)460 3073 MS (o)485 3073 MS (l)510 3073 MS (s)535 3073 MS (;)560 3073 MS
+( )585 3073 MS
+( )235 3120 MS ( )260 3120 MS (N)285 3120 MS (P)310 3120 MS (_)335 3120 MS (c)360 3120 MS (s)385 3120 MS (r)410 3120 MS ( )435 3120 MS (*)460 3120 MS (_)485 3120 MS (c)510 3120 MS (s)535 3120 MS (r)560 3120 MS (;)585 3120 MS
+( )610 3120 MS
+showpage
+%%Page: 24 24
+14.449 827.879 translate 72 300 div dup neg scale
+0 0 transform .25 add round .25 sub exch .25 add round .25 sub exch itransform translate
+1 j
+1 setlinecap
+72 sl
+0.375 g
+n
+494 182 M
+494 155 472 133 445 133 c
+418 133 396 155 396 182 c
+396 209 418 231 445 231 c
+472 231 494 209 494 182 c
+cp
+CM 0.156 0.152 scale
+s
+SM
+71 sl
+n
+660 182 M
+660 155 638 133 611 133 c
+584 133 562 155 562 182 c
+562 209 584 231 611 231 c
+638 231 660 209 660 182 c
+cp
+CM 0.156 0.152 scale
+s
+SM
+n
+120 24 468 152 B
+1 g
+f
+1 sl
+n
+122 26 467 151 B
+cp
+s
+71 sl
+0.375 g
+n
+577 180 M
+577 153 555 131 528 131 c
+501 131 479 153 479 180 c
+479 206 501 228 528 228 c
+555 228 577 206 577 180 c
+cp
+gs
+1 g
+e
+gr
+CM 0.156 0.152 scale
+s
+SM
+n
+480 180 M
+575 180 L
+CM 0.156 0.152 scale
+s
+SM
+n
+34 18 562 187 B
+1 g
+f
+1 sl
+n
+36 20 561 186 B
+cp
+s
+n
+610 173 M
+591 173 L
+554 124 L
+579 126 L
+609 173 L
+610 173 L
+cp
+gs
+e
+gr
+s
+n
+448 170 M
+468 170 L
+504 122 L
+479 123 L
+449 170 L
+448 170 L
+cp
+gs
+e
+gr
+s
+0.375 g
+n
+473 140 M
+473 137 470 135 467 135 c
+464 135 462 137 462 140 c
+462 142 464 145 467 145 c
+470 145 473 142 473 140 c
+cp
+gs
+e
+gr
+s
+n
+593 139 M
+593 136 590 134 588 134 c
+585 134 583 136 583 139 c
+583 141 585 144 588 144 c
+590 144 593 141 593 139 c
+cp
+gs
+e
+gr
+s
+72 sl
+n
+665 137 M
+665 229 L
+CM 0.156 0.152 scale
+s
+SM
+[29 0 0 -29 0 0]/Times-Roman MF
+0 g
+( )676 243 MS
+[50 0 0 -50 0 0]/Times-Roman MF
+(D)400 289 MS (E)436 289 MS (N)467 289 MS ( )503 289 MS ( )516 289 MS (S)529 289 MS (a)557 289 MS (c)579 289 MS (l)601 289 MS (a)613 289 MS (y)636 289 MS
+( )660 289 MS
+( )1297 140 MS
+[38 0 0 -38 0 0]/Times-Roman MF
+(S)1785 129 MS (F)1806 129 MS (M)1827 129 MS (E)1861 129 MS (/)1883 129 MS (L)1894 129 MS (G)1916 129 MS (L)1943 129 MS (S)1965 129 MS (/)1986 129 MS (R)1997 129 MS (T)2022 129 MS (/)2045 129 MS (0)2056 129 MS (2)2075 129 MS
+(-)2094 129 MS
+(0)2106 129 MS (0)2125 129 MS (2)2144 129 MS
+( )2163 129 MS
+(D)1785 173 MS (a)1812 173 MS (t)1829 173 MS (e)1840 173 MS
+( )1856 173 MS
+(:)1866 173 MS
+( )1875 173 MS
+(3)1885 173 MS (0)1904 173 MS (/)1923 173 MS (0)1934 173 MS (5)1952 173 MS (/)1971 173 MS (2)1982 173 MS (0)2000 173 MS (0)2019 173 MS (2)2038 173 MS
+( )2057 173 MS
+n
+5 5 232 89 B
+f
+n
+5 5 232 89 B
+f
+n
+584 5 238 89 B
+f
+n
+5 5 823 89 B
+f
+n
+938 5 829 89 B
+f
+n
+5 5 1768 89 B
+f
+n
+436 5 1774 89 B
+f
+n
+5 5 2211 89 B
+f
+n
+5 5 2211 89 B
+f
+n
+5 256 232 95 B
+f
+n
+2 256 823 95 B
+f
+n
+2 256 1768 95 B
+f
+n
+5 256 2211 95 B
+f
+[50 0 0 -50 0 0]/Times-Roman MF
+(D)322 400 MS (M)358 400 MS (2)402 400 MS (S)427 400 MS (/)455 400 MS (S)469 400 MS (F)497 400 MS (M)524 400 MS (E)568 400 MS (/)599 400 MS (L)613 400 MS (G)643 400 MS (L)680 400 MS (S)710 400 MS
+( )738 400 MS
+[50 0 0 -50 0 0]/Times-Bold MF
+gs
+n
+241 53 1102 367 CB
+(R)1102 413 MS (A)1138 413 MS (P)1174 413 MS (P)1204 413 MS (O)1234 413 MS (R)1273 413 MS (T)1310 413 MS
+gr
+gs
+n
+150 53 1343 367 CB
+( )1343 413 MS (D)1356 413 MS (M)1392 413 MS (2)1440 413 MS (S)1465 413 MS
+gr
+[50 0 0 -50 0 0]/Times-Roman MF
+gs
+n
+24 52 1493 368 CB
+( )1493 413 MS
+gr
+[38 0 0 -38 0 0]/Times-Roman MF
+(P)1785 400 MS (a)1806 400 MS (g)1823 400 MS (e)1841 400 MS ( )1858 400 MS
+[50 0 0 -50 0 0]/Times-Roman MF
+(2)1868 400 MS (4)1893 400 MS
+(/)1918 400 MS
+(3)1932 400 MS (0)1957 400 MS
+[38 0 0 -38 0 0]/Times-Roman MF
+( )1982 400 MS
+n
+5 2 232 352 B
+f
+n
+2 2 823 352 B
+f
+n
+941 2 826 352 B
+f
+n
+2 2 1768 352 B
+f
+n
+5 2 2211 352 B
+f
+n
+5 67 232 355 B
+f
+n
+590 1 232 423 B
+f
+n
+2 67 823 355 B
+f
+n
+1 1 823 423 B
+f
+n
+942 1 825 423 B
+f
+n
+2 67 1768 355 B
+f
+n
+1 1 1768 423 B
+f
+n
+440 1 1770 423 B
+f
+n
+5 67 2211 355 B
+f
+n
+5 1 2211 423 B
+f
+[50 0 0 -50 0 0]/Times-Roman MF
+( )235 470 MS
+[33 0 0 -33 0 0]/Times-Roman MF
+/IsChar{exch/CharStrings get exch known}bd/MapCh{3 -1 roll/Encoding get 3 1\r
+roll put}bd/MapDegree{dup 16#b0 exch/degree IsChar{/degree}{/ring}ifelse MapCh}\r
+bd/MapBB{dup 16#a6 exch/brokenbar IsChar{/brokenbar}{/bar}ifelse MapCh}bd\r
+/reencode{findfont begin currentdict dup length dict begin{1 index/FID ne{def}\r
+{pop pop}ifelse}forall/FontName exch def dup length 0 ne{/Encoding Encoding 256\r
+array copy def 0 exch{dup type/nametype eq{Encoding 2 index 2 index put pop 1\r
+add}{exch pop}ifelse}forall}if pop currentdict dup end end/FontName get exch\r
+definefont dup MapDegree MapBB}bd/LATENC[0/grave/acute/circumflex/tilde/macron\r
+/breve/dotaccent/dieresis/ring/cedilla/hungarumlaut/ogonek/caron/dotlessi/fi/fl\r
+/Lslash/lslash/Zcaron/zcaron/minus/.notdef/.notdef/.notdef/.notdef/.notdef\r
+/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/space/exclam/quotedbl\r
+/numbersign/dollar/percent/ampersand/quotesingle/parenleft/parenright/asterisk\r
+/plus/comma/hyphen/period/slash/zero/one/two/three/four/five/six/seven/eight\r
+/nine/colon/semicolon/less/equal/greater/question/at/A/B/C/D/E/F/G/H/I/J/K/L/M\r
+/N/O/P/Q/R/S/T/U/V/W/X/Y/Z/bracketleft/backslash/bracketright/asciicircum\r
+/underscore/grave/a/b/c/d/e/f/g/h/i/j/k/l/m/n/o/p/q/r/s/t/u/v/w/x/y/z/braceleft\r
+/bar/braceright/asciitilde/.notdef/.notdef/.notdef/quotesinglbase/florin\r
+/quotedblbase/ellipsis/dagger/daggerdbl/circumflex/perthousand/Scaron\r
+/guilsinglleft/OE/.notdef/.notdef/.notdef/.notdef/quoteleft/quoteright\r
+/quotedblleft/quotedblright/bullet/endash/emdash/tilde/trademark/scaron\r
+/guilsinglright/oe/.notdef/.notdef/Ydieresis/.notdef/exclamdown/cent/sterling\r
+/currency/yen/brokenbar/section/dieresis/copyright/ordfeminine/guillemotleft\r
+/logicalnot/hyphen/registered/macron/degree/plusminus/twosuperior/threesuperior\r
+/acute/mu/paragraph/periodcentered/cedilla/onesuperior/ordmasculine\r
+/guillemotright/onequarter/onehalf/threequarters/questiondown/Agrave/Aacute\r
+/Acircumflex/Atilde/Adieresis/Aring/AE/Ccedilla/Egrave/Eacute/Ecircumflex\r
+/Edieresis/Igrave/Iacute/Icircumflex/Idieresis/Eth/Ntilde/Ograve/Oacute\r
+/Ocircumflex/Otilde/Odieresis/multiply/Oslash/Ugrave/Uacute/Ucircumflex\r
+/Udieresis/Yacute/Thorn/germandbls/agrave/aacute/acircumflex/atilde/adieresis\r
+/aring/ae/ccedilla/egrave/eacute/ecircumflex/edieresis/igrave/iacute\r
+/icircumflex/idieresis/eth/ntilde/ograve/oacute/ocircumflex/otilde/odieresis\r
+/divide/oslash/ugrave/uacute/ucircumflex/udieresis/yacute/thorn/ydieresis]def\r
+LATENC /_Times-Roman /Times-Roman reencode
+[33 0 0 -33 0 0]/_Times-Roman MF
+(L)242 3256 MS (e)262 3256 MS (s)277 3256 MS ( )289 3256 MS (i)298 3256 MS (n)307 3256 MS (f)324 3256 MS (o)335 3256 MS (r)351 3256 MS (m)363 3256 MS (a)388 3256 MS (t)403 3256 MS (i)412 3256 MS (o)422 3256 MS (n)439 3256 MS (s)456 3256 MS
+( )468 3256 MS (c)477 3256 MS (o)492 3256 MS (n)508 3256 MS (t)524 3256 MS (e)534 3256 MS (n)549 3256 MS (u)565 3256 MS (e)582 3256 MS (s)597 3256 MS ( )610 3256 MS (d)618 3256 MS (a)634 3256 MS (n)650 3256 MS (s)667 3256 MS ( )679 3256 MS
+(c)688 3256 MS (e)703 3256 MS ( )717 3256 MS (d)726 3256 MS (o)742 3256 MS (c)759 3256 MS (u)773 3256 MS (m)791 3256 MS (e)817 3256 MS (n)831 3256 MS (t)847 3256 MS ( )857 3256 MS (s)866 3256 MS (o)878 3256 MS (n)895 3256 MS (t)911 3256 MS
+( )921 3256 MS (r)929 3256 MS (\351)941 3256 MS (s)956 3256 MS (e)968 3256 MS (r)982 3256 MS (v)994 3256 MS (\351)1011 3256 MS (e)1026 3256 MS (s)1041 3256 MS ( )1053 3256 MS (a)1061 3256 MS (u)1076 3256 MS (x)1093 3256 MS ( )1109 3256 MS (d)1118 3256 MS
+(e)1135 3256 MS (s)1150 3256 MS (t)1162 3256 MS (i)1171 3256 MS (n)1181 3256 MS (a)1197 3256 MS (t)1212 3256 MS (a)1221 3256 MS (i)1236 3256 MS (r)1245 3256 MS (e)1257 3256 MS (s)1272 3256 MS ( )1284 3256 MS (n)1293 3256 MS (o)1309 3256 MS (m)1326 3256 MS
+(m)1352 3256 MS (\351)1378 3256 MS (m)1393 3256 MS (e)1419 3256 MS (n)1433 3256 MS (t)1450 3256 MS ( )1459 3256 MS (d)1468 3256 MS (\351)1484 3256 MS (s)1499 3256 MS (i)1512 3256 MS (g)1521 3256 MS
+(n)1538 3256 MS (\351)1555 3256 MS (s)1570 3256 MS ( )1582 3256 MS (e)1591 3256 MS (t)1605 3256 MS ( )1615 3256 MS (n)1623 3256 MS (e)1640 3256 MS ( )1654 3256 MS (p)1663 3256 MS (e)1680 3256 MS (u)1694 3256 MS (v)1711 3256 MS (e)1728 3256 MS (n)1743 3256 MS
+(t)1759 3256 MS ( )1768 3256 MS (r)1776 3256 MS (e)1788 3256 MS (c)1803 3256 MS (e)1818 3256 MS (v)1832 3256 MS (o)1849 3256 MS (i)1865 3256 MS (r)1874 3256 MS ( )1886 3256 MS (a)1894 3256 MS (u)1909 3256 MS (c)1926 3256 MS (u)1940 3256 MS (n)1957 3256 MS
+(e)1974 3256 MS ( )1988 3256 MS (d)1997 3256 MS (i)2013 3256 MS (f)2023 3256 MS (f)2034 3256 MS (u)2044 3256 MS (s)2062 3256 MS (i)2074 3256 MS (o)2084 3256 MS (n)2101 3256 MS
+( )2117 3256 MS
+(s)928 3294 MS (a)940 3294 MS (n)955 3294 MS (s)972 3294 MS ( )985 3294 MS (l)993 3294 MS (\222)1002 3294 MS (a)1013 3294 MS (u)1028 3294 MS (t)1045 3294 MS (o)1054 3294 MS (r)1071 3294 MS (i)1082 3294 MS (s)1092 3294 MS (a)1104 3294 MS (t)1119 3294 MS
+(i)1128 3294 MS (o)1138 3294 MS (n)1154 3294 MS ( )1171 3294 MS (e)1180 3294 MS (x)1194 3294 MS (p)1211 3294 MS (r)1227 3294 MS (e)1239 3294 MS (s)1254 3294 MS (s)1267 3294 MS (e)1280 3294 MS ( )1294 3294 MS (d)1303 3294 MS (u)1319 3294 MS ( )1336 3294 MS
+(D)1344 3294 MS (M)1368 3294 MS (2)1397 3294 MS (S)1414 3294 MS
+[50 0 0 -50 0 0]/Times-Roman MF
+( )1432 3294 MS
+[42 0 0 -42 0 0]/Courier MF
+( )235 517 MS
+(})235 565 MS ( )260 565 MS (;)285 565 MS
+( )310 565 MS
+( )235 612 MS
+(c)235 659 MS (l)260 659 MS (a)285 659 MS (s)310 659 MS (s)335 659 MS ( )360 659 MS (N)385 659 MS (P)410 659 MS (M)435 659 MS (a)460 659 MS (t)485 659 MS (C)510 659 MS (o)535 659 MS (m)560 659 MS (p)585 659 MS (o)610 659 MS
+(n)635 659 MS (e)660 659 MS (n)685 659 MS (t)710 659 MS (_)735 659 MS (i)760 659 MS (:)785 659 MS ( )810 659 MS (p)835 659 MS (u)860 659 MS (b)885 659 MS (l)910 659 MS (i)935 659 MS (c)960 659 MS ( )985 659 MS (P)1010 659 MS
+(O)1035 659 MS (A)1060 659 MS (_)1085 659 MS (E)1110 659 MS (n)1135 659 MS (g)1160 659 MS (i)1185 659 MS (n)1210 659 MS (e)1235 659 MS (s)1260 659 MS (:)1285 659 MS (:)1310 659 MS (N)1335 659 MS (P)1360 659 MS (M)1385 659 MS (a)1410 659 MS
+(t)1435 659 MS (C)1460 659 MS (o)1485 659 MS (m)1510 659 MS (p)1535 659 MS (o)1560 659 MS (n)1585 659 MS (e)1610 659 MS (n)1635 659 MS (t)1660 659 MS (,)1685 659 MS
+( )1710 659 MS
+( )235 706 MS
+( )382 706 MS
+( )530 706 MS
+(p)677 706 MS (u)702 706 MS (b)727 706 MS (l)752 706 MS (i)777 706 MS (c)802 706 MS ( )827 706 MS (E)852 706 MS (n)877 706 MS (g)902 706 MS (i)927 706 MS (n)952 706 MS (e)977 706 MS (s)1002 706 MS (_)1027 706 MS (C)1052 706 MS
+(o)1077 706 MS (m)1102 706 MS (p)1127 706 MS (o)1152 706 MS (n)1177 706 MS (e)1202 706 MS (n)1227 706 MS (t)1252 706 MS (_)1277 706 MS (i)1302 706 MS (,)1327 706 MS
+( )1352 706 MS
+( )235 753 MS
+( )382 753 MS
+( )530 753 MS
+(p)677 753 MS (u)702 753 MS (b)727 753 MS (l)752 753 MS (i)777 753 MS (c)802 753 MS ( )827 753 MS (M)852 753 MS (P)877 753 MS (I)902 753 MS (O)927 753 MS (b)952 753 MS (j)977 753 MS (e)1002 753 MS (c)1027 753 MS (t)1052 753 MS
+(_)1077 753 MS (i)1102 753 MS
+( )1127 753 MS
+( )235 801 MS
+({)235 848 MS
+( )260 848 MS
+(p)235 895 MS (u)260 895 MS (b)285 895 MS (l)310 895 MS (i)335 895 MS (c)360 895 MS (:)385 895 MS
+( )410 895 MS
+( )235 942 MS ( )260 942 MS (/)285 942 MS (/)310 942 MS ( )335 942 MS (C)360 942 MS (o)385 942 MS (n)410 942 MS (s)435 942 MS (t)460 942 MS (r)485 942 MS (u)510 942 MS (c)535 942 MS (t)560 942 MS (o)585 942 MS (r)610 942 MS
+(s)635 942 MS
+( )660 942 MS
+( )235 989 MS ( )260 989 MS (N)285 989 MS (P)310 989 MS (M)335 989 MS (a)360 989 MS (t)385 989 MS (C)410 989 MS (o)435 989 MS (m)460 989 MS (p)485 989 MS (o)510 989 MS (n)535 989 MS (e)560 989 MS (n)585 989 MS (t)610 989 MS
+(_)635 989 MS (i)660 989 MS (\()685 989 MS (\))710 989 MS ( )735 989 MS (;)760 989 MS
+( )785 989 MS
+( )235 1037 MS ( )260 1037 MS (N)285 1037 MS (P)310 1037 MS (M)335 1037 MS (a)360 1037 MS (t)385 1037 MS (C)410 1037 MS (o)435 1037 MS (m)460 1037 MS (p)485 1037 MS (o)510 1037 MS (n)535 1037 MS (e)560 1037 MS (n)585 1037 MS (t)610 1037 MS
+(_)635 1037 MS (i)660 1037 MS (\()685 1037 MS ( )710 1037 MS (i)735 1037 MS (n)760 1037 MS (t)785 1037 MS ( )810 1037 MS (n)835 1037 MS (b)860 1037 MS (p)885 1037 MS (r)910 1037 MS (o)935 1037 MS (c)960 1037 MS (,)985 1037 MS ( )1010 1037 MS
+(i)1035 1037 MS (n)1060 1037 MS (t)1085 1037 MS ( )1110 1037 MS (n)1135 1037 MS
+(u)1160 1037 MS (m)1185 1037 MS (p)1210 1037 MS (r)1235 1037 MS (o)1260 1037 MS (c)1285 1037 MS (,)1310 1037 MS
+( )1335 1037 MS
+( )235 1084 MS
+( )382 1084 MS
+( )530 1084 MS ( )555 1084 MS ( )580 1084 MS ( )605 1084 MS (C)630 1084 MS (O)655 1084 MS (R)680 1084 MS (B)705 1084 MS (A)730 1084 MS (:)755 1084 MS (:)780 1084 MS (O)805 1084 MS (R)830 1084 MS (B)855 1084 MS (_)880 1084 MS (p)905 1084 MS
+(t)930 1084 MS (r)955 1084 MS ( )980 1084 MS (o)1005 1084 MS (r)1030 1084 MS (b)1055 1084 MS (,)1080 1084 MS
+( )1105 1084 MS
+( )235 1131 MS
+( )382 1131 MS
+( )530 1131 MS ( )555 1131 MS ( )580 1131 MS ( )605 1131 MS (P)630 1131 MS (o)655 1131 MS (r)680 1131 MS (t)705 1131 MS (a)730 1131 MS (b)755 1131 MS (l)780 1131 MS (e)805 1131 MS (S)830 1131 MS (e)855 1131 MS (r)880 1131 MS (v)905 1131 MS
+(e)930 1131 MS (r)955 1131 MS (:)980 1131 MS (:)1005 1131 MS (P)1030 1131 MS (O)1055 1131 MS (A)1080 1131 MS (_)1105 1131 MS (p)1130 1131 MS (t)1155 1131 MS (r)1180 1131 MS ( )1205 1131 MS (p)1230 1131 MS (o)1255 1131 MS (a)1280 1131 MS (,)1305 1131 MS
+( )1330 1131 MS
+( )1355 1131 MS
+( )235 1178 MS
+( )382 1178 MS
+( )530 1178 MS ( )555 1178 MS ( )580 1178 MS ( )605 1178 MS (P)630 1178 MS (o)655 1178 MS (r)680 1178 MS (t)705 1178 MS (a)730 1178 MS (b)755 1178 MS (l)780 1178 MS (e)805 1178 MS (S)830 1178 MS (e)855 1178 MS (r)880 1178 MS (v)905 1178 MS
+(e)930 1178 MS (r)955 1178 MS (:)980 1178 MS (:)1005 1178 MS (O)1030 1178 MS (b)1055 1178 MS (j)1080 1178 MS (e)1105 1178 MS (c)1130 1178 MS (t)1155 1178 MS (I)1180 1178 MS (d)1205 1178 MS ( )1230 1178 MS (*)1255 1178 MS ( )1280 1178 MS (c)1305 1178 MS
+(o)1330 1178 MS (n)1355 1178 MS (t)1380 1178 MS (I)1405 1178 MS (d)1430 1178 MS (,)1455 1178 MS ( )1480 1178 MS
+( )1505 1178 MS
+( )235 1225 MS
+( )382 1225 MS
+( )530 1225 MS ( )555 1225 MS ( )580 1225 MS ( )605 1225 MS (c)630 1225 MS (o)655 1225 MS (n)680 1225 MS (s)705 1225 MS (t)730 1225 MS ( )755 1225 MS (c)780 1225 MS (h)805 1225 MS (a)830 1225 MS (r)855 1225 MS ( )880 1225 MS (*)905 1225 MS
+(i)930 1225 MS (n)955 1225 MS (s)980 1225 MS (t)1005 1225 MS (a)1030 1225 MS (n)1055 1225 MS (c)1080 1225 MS (e)1105 1225 MS (N)1130 1225 MS (a)1155 1225 MS (m)1180 1225 MS (e)1205 1225 MS (,)1230 1225 MS
+( )1255 1225 MS
+( )235 1273 MS
+( )382 1273 MS
+( )530 1273 MS ( )555 1273 MS ( )580 1273 MS ( )605 1273 MS (c)630 1273 MS (o)655 1273 MS (n)680 1273 MS (s)705 1273 MS (t)730 1273 MS ( )755 1273 MS (c)780 1273 MS (h)805 1273 MS (a)830 1273 MS (r)855 1273 MS ( )880 1273 MS (*)905 1273 MS
+(i)930 1273 MS (n)955 1273 MS (t)980 1273 MS (e)1005 1273 MS (r)1030 1273 MS (f)1055 1273 MS (a)1080 1273 MS (c)1105 1273 MS (e)1130 1273 MS (N)1155 1273 MS (a)1180 1273 MS (m)1205 1273 MS (e)1230 1273 MS (\))1255 1273 MS (;)1280 1273 MS
+( )1305 1273 MS
+( )235 1320 MS ( )260 1320 MS (N)285 1320 MS (P)310 1320 MS (M)335 1320 MS (a)360 1320 MS (t)385 1320 MS (C)410 1320 MS (o)435 1320 MS (m)460 1320 MS (p)485 1320 MS (o)510 1320 MS (n)535 1320 MS (e)560 1320 MS (n)585 1320 MS (t)610 1320 MS
+(_)635 1320 MS (i)660 1320 MS (\()685 1320 MS ( )710 1320 MS (i)735 1320 MS (n)760 1320 MS (t)785 1320 MS ( )810 1320 MS (n)835 1320 MS (b)860 1320 MS (p)885 1320 MS (r)910 1320 MS (o)935 1320 MS (c)960 1320 MS (,)985 1320 MS ( )1010 1320 MS
+(i)1035 1320 MS (n)1060 1320 MS (t)1085 1320 MS ( )1110 1320 MS (n)1135 1320 MS (u)1160 1320 MS (m)1185 1320 MS (p)1210 1320 MS (r)1235 1320 MS (o)1260 1320 MS (c)1285 1320 MS (,)1310 1320 MS
+( )1335 1320 MS
+( )235 1367 MS
+( )382 1367 MS
+( )530 1367 MS ( )555 1367 MS ( )580 1367 MS ( )605 1367 MS (C)630 1367 MS (O)655 1367 MS (R)680 1367 MS (B)705 1367 MS (A)730 1367 MS (:)755 1367 MS (:)780 1367 MS (O)805 1367 MS (R)830 1367 MS (B)855 1367 MS (_)880 1367 MS (p)905 1367 MS
+(t)930 1367 MS (r)955 1367 MS ( )980 1367 MS (o)1005 1367 MS (r)1030 1367 MS (b)1055 1367 MS (,)1080 1367 MS
+( )1105 1367 MS
+( )235 1414 MS
+( )382 1414 MS
+( )530 1414 MS ( )555 1414 MS ( )580 1414 MS ( )605 1414 MS (P)630 1414 MS
+(o)655 1414 MS (r)680 1414 MS (t)705 1414 MS (a)730 1414 MS (b)755 1414 MS (l)780 1414 MS (e)805 1414 MS (S)830 1414 MS (e)855 1414 MS (r)880 1414 MS (v)905 1414 MS (e)930 1414 MS (r)955 1414 MS (:)980 1414 MS (:)1005 1414 MS (P)1030 1414 MS
+(O)1055 1414 MS (A)1080 1414 MS (_)1105 1414 MS (p)1130 1414 MS (t)1155 1414 MS (r)1180 1414 MS ( )1205 1414 MS (p)1230 1414 MS (o)1255 1414 MS (a)1280 1414 MS (,)1305 1414 MS ( )1330 1414 MS
+( )1355 1414 MS
+( )235 1461 MS
+( )382 1461 MS
+( )530 1461 MS ( )555 1461 MS ( )580 1461 MS ( )605 1461 MS (P)630 1461 MS (o)655 1461 MS (r)680 1461 MS (t)705 1461 MS (a)730 1461 MS (b)755 1461 MS (l)780 1461 MS (e)805 1461 MS (S)830 1461 MS (e)855 1461 MS (r)880 1461 MS (v)905 1461 MS
+(e)930 1461 MS (r)955 1461 MS (:)980 1461 MS (:)1005 1461 MS (O)1030 1461 MS (b)1055 1461 MS (j)1080 1461 MS (e)1105 1461 MS (c)1130 1461 MS (t)1155 1461 MS (I)1180 1461 MS (d)1205 1461 MS ( )1230 1461 MS (*)1255 1461 MS ( )1280 1461 MS (c)1305 1461 MS
+(o)1330 1461 MS (n)1355 1461 MS (t)1380 1461 MS (I)1405 1461 MS (d)1430 1461 MS (,)1455 1461 MS ( )1480 1461 MS
+( )1505 1461 MS
+( )235 1509 MS
+( )382 1509 MS
+( )530 1509 MS ( )555 1509 MS ( )580 1509 MS ( )605 1509 MS (c)630 1509 MS (o)655 1509 MS (n)680 1509 MS (s)705 1509 MS (t)730 1509 MS ( )755 1509 MS (c)780 1509 MS (h)805 1509 MS (a)830 1509 MS (r)855 1509 MS ( )880 1509 MS (*)905 1509 MS
+(i)930 1509 MS (n)955 1509 MS (s)980 1509 MS (t)1005 1509 MS (a)1030 1509 MS (n)1055 1509 MS (c)1080 1509 MS (e)1105 1509 MS (N)1130 1509 MS (a)1155 1509 MS (m)1180 1509 MS (e)1205 1509 MS (,)1230 1509 MS
+( )1255 1509 MS
+( )235 1556 MS
+( )382 1556 MS
+( )530 1556 MS ( )555 1556 MS ( )580 1556 MS ( )605 1556 MS (c)630 1556 MS (o)655 1556 MS (n)680 1556 MS (s)705 1556 MS (t)730 1556 MS ( )755 1556 MS (c)780 1556 MS (h)805 1556 MS (a)830 1556 MS (r)855 1556 MS ( )880 1556 MS (*)905 1556 MS
+(i)930 1556 MS (n)955 1556 MS (t)980 1556 MS (e)1005 1556 MS (r)1030 1556 MS (f)1055 1556 MS (a)1080 1556 MS (c)1105 1556 MS (e)1130 1556 MS (N)1155 1556 MS (a)1180 1556 MS (m)1205 1556 MS (e)1230 1556 MS (,)1255 1556 MS
+( )1280 1556 MS
+( )235 1603 MS
+( )382 1603 MS
+( )530 1603 MS ( )555 1603 MS ( )580 1603 MS ( )605 1603 MS (i)630 1603 MS (n)655 1603 MS (t)680 1603 MS ( )705 1603 MS (f)730 1603 MS (l)755 1603 MS (a)780 1603 MS (g)805 1603 MS (\))830 1603 MS (;)855 1603 MS
+( )880 1603 MS
+( )235 1650 MS ( )260 1650 MS (N)285 1650 MS (P)310 1650 MS (M)335 1650 MS (a)360 1650 MS (t)385 1650 MS (C)410 1650 MS (o)435 1650 MS (m)460 1650 MS (p)485 1650 MS (o)510 1650 MS (n)535 1650 MS (e)560 1650 MS (n)585 1650 MS (t)610 1650 MS
+(_)635 1650 MS (i)660 1650 MS (\()685 1650 MS ( )710 1650 MS (i)735 1650 MS (n)760 1650 MS (t)785 1650 MS ( )810 1650 MS (n)835 1650 MS (b)860 1650 MS (p)885 1650 MS (r)910 1650 MS (o)935 1650 MS (c)960 1650 MS (,)985 1650 MS ( )1010 1650 MS
+(i)1035 1650 MS (n)1060 1650 MS (t)1085 1650 MS ( )1110 1650 MS (n)1135 1650 MS (u)1160 1650 MS (m)1185 1650 MS (p)1210 1650 MS (r)1235 1650 MS (o)1260 1650 MS (c)1285 1650 MS (,)1310 1650 MS ( )1335 1650 MS (N)1360 1650 MS (P)1385 1650 MS (m)1410 1650 MS
+(a)1435 1650 MS (t)1460 1650 MS (r)1485 1650 MS (i)1510 1650 MS (x)1535 1650 MS ( )1560 1650 MS (*)1585 1650 MS (m)1610 1650 MS (a)1635 1650 MS (t)1660 1650 MS (,)1685 1650 MS
+( )1710 1650 MS
+( )235 1697 MS
+( )382 1697 MS
+( )530 1697 MS ( )555 1697 MS ( )580 1697 MS ( )605 1697 MS (C)630 1697 MS (O)655 1697 MS (R)680 1697 MS (B)705 1697 MS (A)730 1697 MS (:)755 1697 MS (:)780 1697 MS (O)805 1697 MS (R)830 1697 MS (B)855 1697 MS (_)880 1697 MS (p)905 1697 MS
+(t)930 1697 MS (r)955 1697 MS ( )980 1697 MS (o)1005 1697 MS (r)1030 1697 MS (b)1055 1697 MS (,)1080 1697 MS
+( )1105 1697 MS
+( )235 1745 MS
+( )382 1745 MS
+( )530 1745 MS ( )555 1745 MS ( )580 1745 MS ( )605 1745 MS
+(P)630 1745 MS (o)655 1745 MS (r)680 1745 MS (t)705 1745 MS (a)730 1745 MS (b)755 1745 MS (l)780 1745 MS (e)805 1745 MS (S)830 1745 MS (e)855 1745 MS (r)880 1745 MS
+(v)905 1745 MS (e)930 1745 MS (r)955 1745 MS (:)980 1745 MS (:)1005 1745 MS (P)1030 1745 MS (O)1055 1745 MS (A)1080 1745 MS (_)1105 1745 MS (p)1130 1745 MS (t)1155 1745 MS (r)1180 1745 MS ( )1205 1745 MS (p)1230 1745 MS (o)1255 1745 MS (a)1280 1745 MS
+(,)1305 1745 MS ( )1330 1745 MS
+( )1355 1745 MS
+( )235 1792 MS
+( )382 1792 MS
+( )530 1792 MS ( )555 1792 MS ( )580 1792 MS ( )605 1792 MS (P)630 1792 MS (o)655 1792 MS (r)680 1792 MS (t)705 1792 MS (a)730 1792 MS (b)755 1792 MS (l)780 1792 MS (e)805 1792 MS (S)830 1792 MS (e)855 1792 MS (r)880 1792 MS (v)905 1792 MS
+(e)930 1792 MS (r)955 1792 MS (:)980 1792 MS (:)1005 1792 MS (O)1030 1792 MS (b)1055 1792 MS (j)1080 1792 MS (e)1105 1792 MS (c)1130 1792 MS (t)1155 1792 MS (I)1180 1792 MS (d)1205 1792 MS ( )1230 1792 MS (*)1255 1792 MS ( )1280 1792 MS (c)1305 1792 MS
+(o)1330 1792 MS (n)1355 1792 MS (t)1380 1792 MS (I)1405 1792 MS (d)1430 1792 MS (,)1455 1792 MS ( )1480 1792 MS
+( )1505 1792 MS
+( )235 1839 MS
+( )382 1839 MS
+( )530 1839 MS ( )555 1839 MS ( )580 1839 MS ( )605 1839 MS (c)630 1839 MS (o)655 1839 MS (n)680 1839 MS (s)705 1839 MS (t)730 1839 MS ( )755 1839 MS (c)780 1839 MS (h)805 1839 MS (a)830 1839 MS (r)855 1839 MS ( )880 1839 MS (*)905 1839 MS
+(i)930 1839 MS (n)955 1839 MS (s)980 1839 MS (t)1005 1839 MS (a)1030 1839 MS (n)1055 1839 MS (c)1080 1839 MS (e)1105 1839 MS (N)1130 1839 MS (a)1155 1839 MS (m)1180 1839 MS (e)1205 1839 MS (,)1230 1839 MS
+( )1255 1839 MS
+( )235 1886 MS
+( )382 1886 MS
+( )530 1886 MS ( )555 1886 MS ( )580 1886 MS ( )605 1886 MS (c)630 1886 MS (o)655 1886 MS (n)680 1886 MS (s)705 1886 MS (t)730 1886 MS ( )755 1886 MS (c)780 1886 MS (h)805 1886 MS (a)830 1886 MS (r)855 1886 MS ( )880 1886 MS (*)905 1886 MS
+(i)930 1886 MS (n)955 1886 MS (t)980 1886 MS (e)1005 1886 MS (r)1030 1886 MS (f)1055 1886 MS (a)1080 1886 MS (c)1105 1886 MS (e)1130 1886 MS (N)1155 1886 MS (a)1180 1886 MS (m)1205 1886 MS (e)1230 1886 MS (\))1255 1886 MS (;)1280 1886 MS
+( )1305 1886 MS
+( )235 1933 MS ( )260 1933 MS (/)285 1933 MS (/)310 1933 MS ( )335 1933 MS (D)360 1933 MS (e)385 1933 MS (s)410 1933 MS (t)435 1933 MS (r)460 1933 MS (u)485 1933 MS (c)510 1933 MS (t)535 1933 MS (o)560 1933 MS (r)585 1933 MS
+( )610 1933 MS
+( )235 1981 MS ( )260 1981 MS (~)285 1981 MS (N)310 1981 MS (P)335 1981 MS (M)360 1981 MS (a)385 1981 MS (t)410 1981 MS (C)435 1981 MS (o)460 1981 MS (m)485 1981 MS (p)510 1981 MS (o)535 1981 MS (n)560 1981 MS (e)585 1981 MS (n)610 1981 MS
+(t)635 1981 MS (_)660 1981 MS (i)685 1981 MS (\()710 1981 MS (\))735 1981 MS ( )760 1981 MS (;)785 1981 MS
+( )810 1981 MS
+( )235 2028 MS
+( )235 2075 MS ( )260 2075 MS (v)285 2075 MS (o)310 2075 MS (i)335 2075 MS (d)360 2075 MS ( )385 2075 MS (S)410 2075 MS (e)435 2075 MS (t)460 2075 MS (F)485 2075 MS (i)510 2075 MS (l)535 2075 MS (e)560 2075 MS (N)585 2075 MS (a)610 2075 MS
+(m)635 2075 MS (e)660 2075 MS (\()685 2075 MS (c)710 2075 MS (o)735 2075 MS (n)760 2075 MS (s)785 2075 MS (t)810 2075 MS ( )835 2075 MS (c)860 2075 MS (h)885 2075 MS (a)910 2075 MS (r)935 2075 MS (*)960 2075 MS (f)985 2075 MS (i)1010 2075 MS
+(l)1035 2075 MS (e)1060 2075 MS (N)1085 2075 MS (a)1110 2075 MS (m)1135 2075 MS (e)1160 2075 MS (\))1185 2075 MS (;)1210 2075 MS
+( )1235 2075 MS
+( )235 2122 MS ( )260 2122 MS (v)285 2122 MS (o)310 2122 MS (i)335 2122 MS (d)360 2122 MS ( )385 2122 MS (R)410 2122 MS (e)435 2122 MS (a)460 2122 MS (d)485 2122 MS (D)510 2122 MS (a)535 2122 MS (t)560 2122 MS (a)585 2122 MS (F)610 2122 MS
+(r)635 2122 MS (o)660 2122 MS (m)685 2122 MS (F)710 2122 MS (i)735 2122 MS (l)760 2122 MS (e)785 2122 MS (\()810 2122 MS (c)835 2122 MS (o)860 2122 MS (n)885 2122 MS (s)910 2122 MS (t)935 2122 MS ( )960 2122 MS (c)985 2122 MS (h)1010 2122 MS
+(a)1035 2122 MS (r)1060 2122 MS (*)1085 2122 MS ( )1110 2122 MS (i)1135 2122 MS (d)1160 2122 MS (_)1185 2122 MS (c)1210 2122 MS (a)1235 2122 MS (l)1260 2122 MS (l)1285 2122 MS (b)1310 2122 MS (a)1335 2122 MS (c)1360 2122 MS (k)1385 2122 MS
+(\))1410 2122 MS ( )1435 2122 MS (;)1460 2122 MS
+( )1485 2122 MS
+( )235 2169 MS ( )260 2169 MS ( )285 2169 MS ( )310 2169 MS
+( )335 2169 MS
+( )235 2217 MS ( )260 2217 MS (v)285 2217 MS (o)310 2217 MS (i)335 2217 MS (d)360 2217 MS ( )385 2217 MS (S)410 2217 MS (a)435 2217 MS (v)460 2217 MS (e)485 2217 MS (D)510 2217 MS (a)535 2217 MS (t)560 2217 MS (a)585 2217 MS (T)610 2217 MS
+(o)635 2217 MS (F)660 2217 MS (i)685 2217 MS (l)710 2217 MS (e)735 2217 MS (\()760 2217 MS (c)785 2217 MS (o)810 2217 MS (n)835 2217 MS (s)860 2217 MS (t)885 2217 MS ( )910 2217 MS (c)935 2217 MS (h)960 2217 MS (a)985 2217 MS (r)1010 2217 MS
+(*)1035 2217 MS ( )1060 2217 MS (i)1085 2217 MS (d)1110 2217 MS (_)1135 2217 MS (c)1160 2217 MS (a)1185 2217 MS (l)1210 2217 MS (l)1235 2217 MS (b)1260 2217 MS (a)1285 2217 MS (c)1310 2217 MS (k)1335 2217 MS (\))1360 2217 MS ( )1385 2217 MS (;)1410 2217 MS
+( )1435 2217 MS
+( )235 2264 MS ( )260 2264 MS
+( )285 2264 MS
+( )235 2311 MS ( )260 2311 MS
+(N)285 2311 MS (P)310 2311 MS (m)335 2311 MS (a)360 2311 MS (t)385 2311 MS (r)410 2311 MS (i)435 2311 MS (x)460 2311 MS ( )485 2311 MS (*)510 2311 MS (G)535 2311 MS (e)560 2311 MS (t)585 2311 MS (D)610 2311 MS (a)635 2311 MS (t)660 2311 MS
+(a)685 2311 MS (\()710 2311 MS ( )735 2311 MS (v)760 2311 MS (o)785 2311 MS (i)810 2311 MS (d)835 2311 MS ( )860 2311 MS (\))885 2311 MS (;)910 2311 MS
+( )935 2311 MS
+( )235 2358 MS ( )260 2358 MS (E)285 2358 MS (n)310 2358 MS (g)335 2358 MS (i)360 2358 MS (n)385 2358 MS (e)410 2358 MS (s)435 2358 MS (:)460 2358 MS (:)485 2358 MS (P)510 2358 MS (C)535 2358 MS (S)560 2358 MS (R)585 2358 MS (M)610 2358 MS
+(a)635 2358 MS (t)660 2358 MS (_)685 2358 MS (p)710 2358 MS (t)735 2358 MS (r)760 2358 MS ( )785 2358 MS (d)810 2358 MS (m)835 2358 MS (a)860 2358 MS (t)885 2358 MS (\()910 2358 MS (\))935 2358 MS (;)960 2358 MS
+( )985 2358 MS
+( )235 2405 MS ( )260 2405 MS (v)285 2405 MS (o)310 2405 MS (i)335 2405 MS (d)360 2405 MS ( )385 2405 MS (g)410 2405 MS (e)435 2405 MS (t)460 2405 MS (_)485 2405 MS (d)510 2405 MS (m)535 2405 MS (a)560 2405 MS (t)585 2405 MS (\()610 2405 MS
+(c)635 2405 MS (o)660 2405 MS (n)685 2405 MS (s)710 2405 MS (t)735 2405 MS ( )760 2405 MS (c)785 2405 MS (h)810 2405 MS (a)835 2405 MS (r)860 2405 MS (*)885 2405 MS ( )910 2405 MS (i)935 2405 MS (d)960 2405 MS (_)985 2405 MS (c)1010 2405 MS
+(a)1035 2405 MS (l)1060 2405 MS (l)1085 2405 MS (b)1110 2405 MS (a)1135 2405 MS (c)1160 2405 MS (k)1185 2405 MS (\))1210 2405 MS (;)1235 2405 MS
+( )1260 2405 MS
+( )235 2453 MS
+(p)235 2500 MS (r)260 2500 MS (o)285 2500 MS (t)310 2500 MS (e)335 2500 MS (c)360 2500 MS (t)385 2500 MS (e)410 2500 MS (d)435 2500 MS (:)460 2500 MS
+( )485 2500 MS
+( )235 2547 MS ( )260 2547 MS (/)285 2547 MS (/)310 2547 MS ( )335 2547 MS (f)360 2547 MS (i)385 2547 MS (l)410 2547 MS (e)435 2547 MS (n)460 2547 MS (a)485 2547 MS (m)510 2547 MS (e)535 2547 MS
+( )560 2547 MS
+( )235 2594 MS ( )260 2594 MS (s)285 2594 MS (t)310 2594 MS (r)335 2594 MS (i)360 2594 MS (n)385 2594 MS (g)410 2594 MS ( )435 2594 MS (_)460 2594 MS (f)485 2594 MS (i)510 2594 MS (l)535 2594 MS (e)560 2594 MS (N)585 2594 MS (a)610 2594 MS
+(m)635 2594 MS (e)660 2594 MS (;)685 2594 MS
+( )710 2594 MS
+( )235 2641 MS ( )260 2641 MS
+(/)285 2641 MS (/)310 2641 MS ( )335 2641 MS (N)360 2641 MS (P)385 2641 MS ( )410 2641 MS (m)435 2641 MS (a)460 2641 MS (t)485 2641 MS (r)510 2641 MS (i)535 2641 MS (x)560 2641 MS ( )585 2641 MS (p)610 2641 MS (o)635 2641 MS (i)660 2641 MS
+(n)685 2641 MS (t)710 2641 MS (e)735 2641 MS (r)760 2641 MS
+( )785 2641 MS
+( )235 2689 MS ( )260 2689 MS
+(N)285 2689 MS (P)310 2689 MS (m)335 2689 MS (a)360 2689 MS (t)385 2689 MS (r)410 2689 MS (i)435 2689 MS (x)460 2689 MS ( )485 2689 MS (*)510 2689 MS (_)535 2689 MS (m)560 2689 MS (a)585 2689 MS (t)610 2689 MS (;)635 2689 MS
+( )660 2689 MS
+( )235 2736 MS ( )260 2736 MS (/)285 2736 MS (/)310 2736 MS ( )335 2736 MS (G)360 2736 MS
+(e)385 2736 MS (t)410 2736 MS ( )435 2736 MS (L)460 2736 MS (o)485 2736 MS (c)510 2736 MS (a)535 2736 MS (l)560 2736 MS ( )585 2736 MS (D)610 2736 MS (a)635 2736 MS (t)660 2736 MS (a)685 2736 MS
+( )710 2736 MS
+( )235 2783 MS ( )260 2783 MS (E)285 2783 MS (n)310 2783 MS (g)335 2783 MS (i)360 2783 MS (n)385 2783 MS (e)410 2783 MS (s)435 2783 MS (:)460 2783 MS (:)485 2783 MS (P)510 2783 MS (C)535 2783 MS (S)560 2783 MS (R)585 2783 MS (M)610 2783 MS
+(a)635 2783 MS (t)660 2783 MS (_)685 2783 MS (p)710 2783 MS (t)735 2783 MS (r)760 2783 MS ( )785 2783 MS (G)810 2783 MS (e)835 2783 MS (t)860 2783 MS (L)885 2783 MS (o)910 2783 MS (c)935 2783 MS (a)960 2783 MS (l)985 2783 MS (D)1010 2783 MS
+(a)1035 2783 MS (t)1060 2783 MS (a)1085 2783 MS (\()1110 2783 MS (v)1135 2783 MS (o)1160 2783 MS (i)1185 2783 MS (d)1210 2783 MS (\))1235 2783 MS (;)1260 2783 MS
+( )1285 2783 MS
+(})235 2830 MS ( )260 2830 MS (;)285 2830 MS
+( )310 2830 MS
+( )235 2877 MS
+(#)235 2925 MS (e)260 2925 MS (n)285 2925 MS (d)310 2925 MS (i)335 2925 MS (f)360 2925 MS
+( )385 2925 MS
+( )235 2972 MS
+showpage
+%%Page: 25 25
+14.449 827.879 translate 72 300 div dup neg scale
+0 0 transform .25 add round .25 sub exch .25 add round .25 sub exch itransform translate
+1 j
+1 setlinecap
+72 sl
+0.375 g
+n
+494 182 M
+494 155 472 133 445 133 c
+418 133 396 155 396 182 c
+396 209 418 231 445 231 c
+472 231 494 209 494 182 c
+cp
+CM 0.156 0.152 scale
+s
+SM
+71 sl
+n
+660 182 M
+660 155 638 133 611 133 c
+584 133 562 155 562 182 c
+562 209 584 231 611 231 c
+638 231 660 209 660 182 c
+cp
+CM 0.156 0.152 scale
+s
+SM
+n
+120 24 468 152 B
+1 g
+f
+1 sl
+n
+122 26 467 151 B
+cp
+s
+71 sl
+0.375 g
+n
+577 180 M
+577 153 555 131 528 131 c
+501 131 479 153 479 180 c
+479 206 501 228 528 228 c
+555 228 577 206 577 180 c
+cp
+gs
+1 g
+e
+gr
+CM 0.156 0.152 scale
+s
+SM
+n
+480 180 M
+575 180 L
+CM 0.156 0.152 scale
+s
+SM
+n
+34 18 562 187 B
+1 g
+f
+1 sl
+n
+36 20 561 186 B
+cp
+s
+n
+610 173 M
+591 173 L
+554 124 L
+579 126 L
+609 173 L
+610 173 L
+cp
+gs
+e
+gr
+s
+n
+448 170 M
+468 170 L
+504 122 L
+479 123 L
+449 170 L
+448 170 L
+cp
+gs
+e
+gr
+s
+0.375 g
+n
+473 140 M
+473 137 470 135 467 135 c
+464 135 462 137 462 140 c
+462 142 464 145 467 145 c
+470 145 473 142 473 140 c
+cp
+gs
+e
+gr
+s
+n
+593 139 M
+593 136 590 134 588 134 c
+585 134 583 136 583 139 c
+583 141 585 144 588 144 c
+590 144 593 141 593 139 c
+cp
+gs
+e
+gr
+s
+72 sl
+n
+665 137 M
+665 229 L
+CM 0.156 0.152 scale
+s
+SM
+[29 0 0 -29 0 0]/Times-Roman MF
+0 g
+( )676 243 MS
+[50 0 0 -50 0 0]/Times-Roman MF
+(D)400 289 MS (E)436 289 MS (N)467 289 MS ( )503 289 MS ( )516 289 MS (S)529 289 MS (a)557 289 MS (c)579 289 MS (l)601 289 MS (a)613 289 MS (y)636 289 MS
+( )660 289 MS
+( )1297 140 MS
+[38 0 0 -38 0 0]/Times-Roman MF
+(S)1785 129 MS (F)1806 129 MS (M)1827 129 MS (E)1861 129 MS (/)1883 129 MS (L)1894 129 MS (G)1916 129 MS (L)1943 129 MS (S)1965 129 MS (/)1986 129 MS (R)1997 129 MS (T)2022 129 MS (/)2045 129 MS (0)2056 129 MS (2)2075 129 MS
+(-)2094 129 MS
+(0)2106 129 MS (0)2125 129 MS (2)2144 129 MS
+( )2163 129 MS
+(D)1785 173 MS (a)1812 173 MS (t)1829 173 MS (e)1840 173 MS
+( )1856 173 MS
+(:)1866 173 MS
+( )1875 173 MS
+(3)1885 173 MS (0)1904 173 MS (/)1923 173 MS (0)1934 173 MS (5)1952 173 MS (/)1971 173 MS (2)1982 173 MS (0)2000 173 MS (0)2019 173 MS (2)2038 173 MS
+( )2057 173 MS
+n
+5 5 232 89 B
+f
+n
+5 5 232 89 B
+f
+n
+584 5 238 89 B
+f
+n
+5 5 823 89 B
+f
+n
+938 5 829 89 B
+f
+n
+5 5 1768 89 B
+f
+n
+436 5 1774 89 B
+f
+n
+5 5 2211 89 B
+f
+n
+5 5 2211 89 B
+f
+n
+5 256 232 95 B
+f
+n
+2 256 823 95 B
+f
+n
+2 256 1768 95 B
+f
+n
+5 256 2211 95 B
+f
+[50 0 0 -50 0 0]/Times-Roman MF
+(D)322 400 MS (M)358 400 MS (2)402 400 MS (S)427 400 MS (/)455 400 MS (S)469 400 MS (F)497 400 MS (M)524 400 MS (E)568 400 MS (/)599 400 MS (L)613 400 MS (G)643 400 MS (L)680 400 MS (S)710 400 MS
+( )738 400 MS
+[50 0 0 -50 0 0]/Times-Bold MF
+gs
+n
+241 53 1102 367 CB
+(R)1102 413 MS (A)1138 413 MS (P)1174 413 MS (P)1204 413 MS (O)1234 413 MS (R)1273 413 MS (T)1310 413 MS
+gr
+gs
+n
+150 53 1343 367 CB
+( )1343 413 MS (D)1356 413 MS (M)1392 413 MS (2)1440 413 MS (S)1465 413 MS
+gr
+[50 0 0 -50 0 0]/Times-Roman MF
+gs
+n
+24 52 1493 368 CB
+( )1493 413 MS
+gr
+[38 0 0 -38 0 0]/Times-Roman MF
+(P)1785 400 MS (a)1806 400 MS (g)1823 400 MS (e)1841 400 MS ( )1858 400 MS
+[50 0 0 -50 0 0]/Times-Roman MF
+(2)1868 400 MS (5)1893 400 MS
+(/)1918 400 MS
+(3)1932 400 MS (0)1957 400 MS
+[38 0 0 -38 0 0]/Times-Roman MF
+( )1982 400 MS
+n
+5 2 232 352 B
+f
+n
+2 2 823 352 B
+f
+n
+941 2 826 352 B
+f
+n
+2 2 1768 352 B
+f
+n
+5 2 2211 352 B
+f
+n
+5 67 232 355 B
+f
+n
+590 1 232 423 B
+f
+n
+2 67 823 355 B
+f
+n
+1 1 823 423 B
+f
+n
+942 1 825 423 B
+f
+n
+2 67 1768 355 B
+f
+n
+1 1 1768 423 B
+f
+n
+440 1 1770 423 B
+f
+n
+5 67 2211 355 B
+f
+n
+5 1 2211 423 B
+f
+[50 0 0 -50 0 0]/Times-Roman MF
+( )235 470 MS
+[33 0 0 -33 0 0]/Times-Roman MF
+/IsChar{exch/CharStrings get exch known}bd/MapCh{3 -1 roll/Encoding get 3 1\r
+roll put}bd/MapDegree{dup 16#b0 exch/degree IsChar{/degree}{/ring}ifelse MapCh}\r
+bd/MapBB{dup 16#a6 exch/brokenbar IsChar{/brokenbar}{/bar}ifelse MapCh}bd\r
+/reencode{findfont begin currentdict dup length dict begin{1 index/FID ne{def}\r
+{pop pop}ifelse}forall/FontName exch def dup length 0 ne{/Encoding Encoding 256\r
+array copy def 0 exch{dup type/nametype eq{Encoding 2 index 2 index put pop 1\r
+add}{exch pop}ifelse}forall}if pop currentdict dup end end/FontName get exch\r
+definefont dup MapDegree MapBB}bd/LATENC[0/grave/acute/circumflex/tilde/macron\r
+/breve/dotaccent/dieresis/ring/cedilla/hungarumlaut/ogonek/caron/dotlessi/fi/fl\r
+/Lslash/lslash/Zcaron/zcaron/minus/.notdef/.notdef/.notdef/.notdef/.notdef\r
+/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/space/exclam/quotedbl\r
+/numbersign/dollar/percent/ampersand/quotesingle/parenleft/parenright/asterisk\r
+/plus/comma/hyphen/period/slash/zero/one/two/three/four/five/six/seven/eight\r
+/nine/colon/semicolon/less/equal/greater/question/at/A/B/C/D/E/F/G/H/I/J/K/L/M\r
+/N/O/P/Q/R/S/T/U/V/W/X/Y/Z/bracketleft/backslash/bracketright/asciicircum\r
+/underscore/grave/a/b/c/d/e/f/g/h/i/j/k/l/m/n/o/p/q/r/s/t/u/v/w/x/y/z/braceleft\r
+/bar/braceright/asciitilde/.notdef/.notdef/.notdef/quotesinglbase/florin\r
+/quotedblbase/ellipsis/dagger/daggerdbl/circumflex/perthousand/Scaron\r
+/guilsinglleft/OE/.notdef/.notdef/.notdef/.notdef/quoteleft/quoteright\r
+/quotedblleft/quotedblright/bullet/endash/emdash/tilde/trademark/scaron\r
+/guilsinglright/oe/.notdef/.notdef/Ydieresis/.notdef/exclamdown/cent/sterling\r
+/currency/yen/brokenbar/section/dieresis/copyright/ordfeminine/guillemotleft\r
+/logicalnot/hyphen/registered/macron/degree/plusminus/twosuperior/threesuperior\r
+/acute/mu/paragraph/periodcentered/cedilla/onesuperior/ordmasculine\r
+/guillemotright/onequarter/onehalf/threequarters/questiondown/Agrave/Aacute\r
+/Acircumflex/Atilde/Adieresis/Aring/AE/Ccedilla/Egrave/Eacute/Ecircumflex\r
+/Edieresis/Igrave/Iacute/Icircumflex/Idieresis/Eth/Ntilde/Ograve/Oacute\r
+/Ocircumflex/Otilde/Odieresis/multiply/Oslash/Ugrave/Uacute/Ucircumflex\r
+/Udieresis/Yacute/Thorn/germandbls/agrave/aacute/acircumflex/atilde/adieresis\r
+/aring/ae/ccedilla/egrave/eacute/ecircumflex/edieresis/igrave/iacute\r
+/icircumflex/idieresis/eth/ntilde/ograve/oacute/ocircumflex/otilde/odieresis\r
+/divide/oslash/ugrave/uacute/ucircumflex/udieresis/yacute/thorn/ydieresis]def\r
+LATENC /_Times-Roman /Times-Roman reencode
+[33 0 0 -33 0 0]/_Times-Roman MF
+(L)242 3256 MS (e)262 3256 MS (s)277 3256 MS ( )289 3256 MS (i)298 3256 MS (n)307 3256 MS (f)324 3256 MS (o)335 3256 MS (r)351 3256 MS (m)363 3256 MS (a)388 3256 MS (t)403 3256 MS (i)412 3256 MS (o)422 3256 MS (n)439 3256 MS (s)456 3256 MS
+( )468 3256 MS (c)477 3256 MS (o)492 3256 MS (n)508 3256 MS (t)524 3256 MS (e)534 3256 MS (n)549 3256 MS (u)565 3256 MS (e)582 3256 MS (s)597 3256 MS ( )610 3256 MS (d)618 3256 MS (a)634 3256 MS (n)650 3256 MS (s)667 3256 MS ( )679 3256 MS
+(c)688 3256 MS (e)703 3256 MS ( )717 3256 MS (d)726 3256 MS (o)742 3256 MS (c)759 3256 MS (u)773 3256 MS (m)791 3256 MS (e)817 3256 MS (n)831 3256 MS (t)847 3256 MS ( )857 3256 MS (s)866 3256 MS (o)878 3256 MS (n)895 3256 MS (t)911 3256 MS
+( )921 3256 MS (r)929 3256 MS (\351)941 3256 MS (s)956 3256 MS (e)968 3256 MS (r)982 3256 MS (v)994 3256 MS (\351)1011 3256 MS (e)1026 3256 MS (s)1041 3256 MS ( )1053 3256 MS (a)1061 3256 MS (u)1076 3256 MS (x)1093 3256 MS ( )1109 3256 MS (d)1118 3256 MS
+(e)1135 3256 MS (s)1150 3256 MS (t)1162 3256 MS (i)1171 3256 MS (n)1181 3256 MS (a)1197 3256 MS (t)1212 3256 MS (a)1221 3256 MS (i)1236 3256 MS (r)1245 3256 MS (e)1257 3256 MS (s)1272 3256 MS ( )1284 3256 MS (n)1293 3256 MS (o)1309 3256 MS (m)1326 3256 MS
+(m)1352 3256 MS (\351)1378 3256 MS (m)1393 3256 MS (e)1419 3256 MS (n)1433 3256 MS (t)1450 3256 MS ( )1459 3256 MS (d)1468 3256 MS (\351)1484 3256 MS (s)1499 3256 MS (i)1512 3256 MS (g)1521 3256 MS
+(n)1538 3256 MS (\351)1555 3256 MS (s)1570 3256 MS ( )1582 3256 MS (e)1591 3256 MS (t)1605 3256 MS ( )1615 3256 MS (n)1623 3256 MS (e)1640 3256 MS ( )1654 3256 MS (p)1663 3256 MS (e)1680 3256 MS (u)1694 3256 MS (v)1711 3256 MS (e)1728 3256 MS (n)1743 3256 MS
+(t)1759 3256 MS ( )1768 3256 MS (r)1776 3256 MS (e)1788 3256 MS (c)1803 3256 MS (e)1818 3256 MS (v)1832 3256 MS (o)1849 3256 MS (i)1865 3256 MS (r)1874 3256 MS ( )1886 3256 MS (a)1894 3256 MS (u)1909 3256 MS (c)1926 3256 MS (u)1940 3256 MS (n)1957 3256 MS
+(e)1974 3256 MS ( )1988 3256 MS (d)1997 3256 MS (i)2013 3256 MS (f)2023 3256 MS (f)2034 3256 MS (u)2044 3256 MS (s)2062 3256 MS (i)2074 3256 MS (o)2084 3256 MS (n)2101 3256 MS
+( )2117 3256 MS
+(s)928 3294 MS (a)940 3294 MS (n)955 3294 MS (s)972 3294 MS ( )985 3294 MS (l)993 3294 MS (\222)1002 3294 MS (a)1013 3294 MS (u)1028 3294 MS (t)1045 3294 MS (o)1054 3294 MS (r)1071 3294 MS (i)1082 3294 MS (s)1092 3294 MS (a)1104 3294 MS (t)1119 3294 MS
+(i)1128 3294 MS (o)1138 3294 MS (n)1154 3294 MS ( )1171 3294 MS (e)1180 3294 MS (x)1194 3294 MS (p)1211 3294 MS (r)1227 3294 MS (e)1239 3294 MS (s)1254 3294 MS (s)1267 3294 MS (e)1280 3294 MS ( )1294 3294 MS (d)1303 3294 MS (u)1319 3294 MS ( )1336 3294 MS
+(D)1344 3294 MS (M)1368 3294 MS (2)1397 3294 MS (S)1414 3294 MS
+[50 0 0 -50 0 0]/Times-Roman MF
+( )1432 3294 MS
+[50 0 0 -50 0 0]/Helvetica-BoldOblique MF
+(9)310 577 MS (.)338 577 MS (3)352 577 MS
+( )380 577 MS
+LATENC /_Helvetica-BoldOblique /Helvetica-BoldOblique reencode
+[50 0 0 -50 0 0]/_Helvetica-BoldOblique MF
+(L)430 577 MS (e)461 577 MS ( )489 577 MS (c)503 577 MS (o)531 577 MS (m)562 577 MS (p)606 577 MS (o)636 577 MS (s)667 577 MS (a)695 577 MS (n)722 577 MS (t)753 577 MS ( )770 577 MS (s)784 577 MS (o)811 577 MS (l)842 577 MS
+(v)856 577 MS (e)884 577 MS (u)911 577 MS (r)942 577 MS ( )961 577 MS (e)975 577 MS (t)1003 577 MS ( )1020 577 MS (l)1034 577 MS (a)1048 577 MS ( )1075 577 MS (d)1089 577 MS (o)1119 577 MS (n)1150 577 MS (n)1181 577 MS (\351)1211 577 MS
+(e)1239 577 MS ( )1267 577 MS (v)1281 577 MS (e)1309 577 MS (c)1336 577 MS (t)1364 577 MS (e)1381 577 MS (u)1408 577 MS (r)1438 577 MS ( )1457 577 MS (r)1471 577 MS (\351)1490 577 MS (s)1518 577 MS (u)1546 577 MS (l)1577 577 MS (t)1591 577 MS
+(a)1608 577 MS (t)1636 577 MS ( )1653 577 MS (p)1666 577 MS (a)1697 577 MS (r)1725 577 MS (a)1744 577 MS (l)1772 577 MS (l)1786 577 MS (\350)1800 577 MS (l)1828 577 MS (e)1842 577 MS
+( )1870 577 MS
+[50 0 0 -50 0 0]/Times-Roman MF
+( )235 647 MS
+LATENC /_Times-Roman /Times-Roman reencode
+[50 0 0 -50 0 0]/_Times-Roman MF
+(L)348 705 MS (e)378 705 MS ( )400 705 MS (c)416 705 MS (o)438 705 MS (m)464 705 MS (p)501 705 MS (o)526 705 MS (s)552 705 MS (a)571 705 MS (n)594 705 MS (t)618 705 MS ( )633 705 MS (p)649 705 MS (a)674 705 MS (r)696 705 MS
+(a)713 705 MS (l)736 705 MS (l)749 705 MS (\350)762 705 MS (l)785 705 MS (e)798 705 MS ( )820 705 MS (s)836 705 MS (o)855 705 MS (l)882 705 MS (v)895 705 MS (e)919 705 MS (u)941 705 MS (r)966 705 MS ( )983 705 MS (N)999 705 MS
+(u)1035 705 MS (m)1061 705 MS (e)1099 705 MS (r)1121 705 MS (i)1139 705 MS (c)1151 705 MS (a)1173 705 MS (l)1196 705 MS ( )1209 705 MS (P)1225 705 MS (l)1254 705 MS (a)1267 705 MS (t)1289 705 MS (o)1304 705 MS (n)1330 705 MS ( )1354 705 MS
+(e)1369 705 MS (s)1391 705 MS (t)1410 705 MS ( )1425 705 MS (c)1441 705 MS (e)1463 705 MS (n)1485 705 MS (s)1509 705 MS (\351)1528 705 MS ( )1550 705 MS (\352)1566 705 MS (t)1588 705 MS (r)1603 705 MS (e)1620 705 MS ( )1642 705 MS (r)1658 705 MS
+(e)1675 705 MS (p)1697 705 MS (r)1722 705 MS (\351)1739 705 MS (s)1761 705 MS (e)1780 705 MS (n)1802 705 MS (t)1826 705 MS (a)1841 705 MS (t)1863 705 MS (i)1878 705 MS (f)1891 705 MS ( )1906 705 MS (d)1922 705 MS (\222)1948 705 MS (u)1964 705 MS
+(n)1990 705 MS ( )2014 705 MS (c)2030 705 MS (o)2052 705 MS (d)2078 705 MS (e)2103 705 MS ( )2125 705 MS
+(d)235 762 MS (e)260 762 MS ( )282 762 MS (c)295 762 MS (a)317 762 MS (l)340 762 MS (c)352 762 MS (u)374 762 MS (l)400 762 MS ( )413 762 MS (q)426 762 MS (u)451 762 MS (i)477 762 MS ( )489 762 MS (r)502 762 MS (\351)519 762 MS
+(s)541 762 MS (o)560 762 MS (u)586 762 MS (d)611 762 MS ( )636 762 MS (u)649 762 MS (n)674 762 MS ( )698 762 MS (s)711 762 MS (y)731 762 MS (s)755 762 MS (t)774 762 MS (\350)789 762 MS (m)812 762 MS (e)849 762 MS ( )871 762 MS
+(l)885 762 MS (i)899 762 MS (n)912 762 MS (\351)937 762 MS
+(a)959 762 MS (i)982 762 MS (r)994 762 MS (e)1012 762 MS ( )1034 762 MS (e)1047 762 MS (n)1069 762 MS ( )1093 762 MS (p)1106 762 MS (a)1131 762 MS (r)1153 762 MS (a)1170 762 MS (l)1193 762 MS (l)1207 762 MS (\350)1220 762 MS (l)1243 762 MS
+(e)1257 762 MS (.)1279 762 MS
+( )1292 762 MS
+( )348 820 MS
+[54 0 0 -54 0 0]/Helvetica-Bold MF
+(9)310 930 MS (.)340 930 MS (3)355 930 MS (.)385 930 MS (1)400 930 MS
+( )430 930 MS
+LATENC /_Helvetica-Bold /Helvetica-Bold reencode
+[54 0 0 -54 0 0]/_Helvetica-Bold MF
+(D)460 930 MS (\351)499 930 MS (f)529 930 MS (i)547 930 MS (n)562 930 MS (i)595 930 MS (t)610 930 MS (i)628 930 MS (o)643 930 MS (n)676 930 MS ( )709 930 MS (d)724 930 MS (e)757 930 MS ( )787 930 MS (l)802 930 MS (\222)817 930 MS
+(i)832 930 MS (n)847 930 MS (t)880 930 MS (e)898 930 MS (r)928 930 MS (f)949 930 MS (a)968 930 MS (c)998 930 MS (e)1028 930 MS ( )1058 930 MS (C)1073 930 MS (O)1112 930 MS (R)1154 930 MS (B)1193 930 MS (A)1233 930 MS
+( )1271 930 MS
+[50 0 0 -50 0 0]/Times-Roman MF
+( )235 1002 MS
+LATENC /_Times-Roman /Times-Roman reencode
+[50 0 0 -50 0 0]/_Times-Roman MF
+(C)348 1060 MS (e)381 1060 MS ( )403 1060 MS (c)428 1060 MS (o)450 1060 MS (m)476 1060 MS (p)513 1060 MS (o)538 1060 MS (s)564 1060 MS (a)583 1060 MS (n)606 1060 MS (t)630 1060 MS ( )645 1060 MS (p)670 1060 MS (o)694 1060 MS (s)720 1060 MS
+(s)739 1060 MS (\350)758 1060 MS (d)780 1060 MS (e)805 1060 MS ( )827 1060 MS (u)852 1060 MS (n)877 1060 MS ( )901 1060 MS (s)926 1060 MS (e)945 1060 MS (r)967 1060 MS (v)985 1060 MS (i)1010 1060 MS (c)1023 1060 MS (e)1045 1060 MS ( )1067 1060 MS
+(S)1092 1060 MS (o)1120 1060 MS (l)1146 1060 MS (v)1159 1060 MS (e)1184 1060 MS (\()1206 1060 MS (\))1223 1060 MS ( )1240 1060 MS (q)1265 1060 MS (u)1290 1060 MS (i)1315 1060 MS ( )1327 1060 MS (p)1353 1060 MS (r)1378 1060 MS (e)1395 1060 MS (n)1417 1060 MS
+(d)1441 1060 MS ( )1466 1060 MS (e)1491 1060 MS (n)1514 1060 MS ( )1538 1060 MS (e)1563 1060 MS (n)1585 1060 MS (t)1609 1060 MS (r)1624 1060 MS (\351)1641 1060 MS (e)1663 1060 MS ( )1685 1060 MS (u)1710 1060 MS (n)1735 1060 MS (e)1759 1060 MS ( )1781 1060 MS
+(d)1806 1060 MS (o)1831 1060 MS (n)1857 1060 MS (n)1882 1060 MS (\351)1906 1060 MS (e)1928 1060 MS ( )1950 1060 MS (m)1976 1060 MS (a)2014 1060 MS (t)2036 1060 MS (r)2051 1060 MS (i)2068 1060 MS (c)2080 1060 MS (e)2102 1060 MS ( )2125 1060 MS
+(p)235 1117 MS (a)260 1117 MS (r)282 1117 MS (a)299 1117 MS (l)322 1117 MS (l)335 1117 MS (\350)348 1117 MS (l)371 1117 MS (e)384 1117 MS ( )406 1117 MS (e)419 1117 MS (t)441 1117 MS ( )456 1117 MS (u)469 1117 MS (n)494 1117 MS (e)519 1117 MS
+( )541 1117 MS (d)554 1117 MS (o)579 1117 MS (n)605 1117 MS (n)630 1117 MS (\351)654 1117 MS (e)676 1117 MS ( )698 1117 MS (v)712 1117 MS (e)736 1117 MS (c)758 1117 MS (t)780 1117 MS (e)795 1117 MS (u)817 1117 MS (r)842 1117 MS ( )859 1117 MS
+(p)872 1117 MS (a)897 1117 MS (r)919 1117 MS (a)936 1117 MS (l)959 1117 MS (l)972 1117 MS (\350)985 1117 MS (l)1008 1117 MS (e)1021 1117 MS (.)1043 1117 MS ( )1056 1117 MS (I)1069 1117 MS (l)1087 1117 MS ( )1100 1117 MS (d)1113 1117 MS (o)1138 1117 MS
+(n)1164 1117 MS (n)1189 1117 MS (e)1213 1117 MS ( )1235 1117 MS (e)1249 1117 MS (n)1271 1117 MS ( )1295 1117 MS (s)1309 1117 MS (o)1328 1117 MS (r)1354 1117 MS (t)1370 1117 MS (i)1385 1117 MS (e)1397 1117 MS ( )1419 1117 MS (u)1432 1117 MS (n)1458 1117 MS
+(e)1483 1117 MS ( )1505 1117 MS (d)1518 1117 MS (o)1543 1117 MS (n)1569 1117 MS (n)1594 1117 MS (\351)1618 1117 MS (e)1640 1117 MS ( )1662 1117 MS (v)1676 1117 MS (e)1700 1117 MS (c)1723 1117 MS (t)1745 1117 MS (e)1760 1117 MS (u)1782 1117 MS (r)1807 1117 MS
+( )1824 1117 MS (p)1837 1117 MS (a)1862 1117 MS (r)1884 1117 MS (a)1901 1117 MS (l)1923 1117 MS (l)1936 1117 MS (\350)1949 1117 MS (l)1972 1117 MS (e)1985 1117 MS (.)2007 1117 MS ( )2020 1117 MS (I)2033 1117 MS (l)2051 1117 MS ( )2064 1117 MS (n)2078 1117 MS
+(e)2102 1117 MS ( )2125 1117 MS
+(p)235 1175 MS (e)260 1175 MS (u)282 1175 MS (t)307 1175 MS ( )322 1175 MS (d)346 1175 MS (o)370 1175 MS (n)396 1175 MS (c)420 1175 MS ( )442 1175 MS (p)466 1175 MS (a)491 1175 MS (s)514 1175 MS ( )533 1175 MS (\352)557 1175 MS (t)579 1175 MS
+(r)594 1175 MS (e)611 1175 MS ( )633 1175 MS (a)657 1175 MS (s)679 1175 MS (y)699 1175 MS (n)723 1175 MS (c)748 1175 MS (h)771 1175 MS (r)795 1175 MS
+(o)812 1175 MS (n)838 1175 MS (e)862 1175 MS (.)884 1175 MS ( )897 1175 MS (P)921 1175 MS (o)949 1175 MS (u)975 1175 MS (r)1000 1175 MS ( )1017 1175 MS (q)1041 1175 MS (u)1066 1175 MS (e)1091 1175 MS ( )1113 1175 MS (l)1138 1175 MS (a)1150 1175 MS
+( )1173 1175 MS (r)1197 1175 MS (\351)1214 1175 MS (s)1236 1175 MS (o)1256 1175 MS (l)1282 1175 MS (u)1294 1175 MS (t)1319 1175 MS (i)1335 1175 MS (o)1347 1175 MS (n)1373 1175 MS ( )1397 1175 MS (d)1421 1175 MS (u)1446 1175 MS ( )1471 1175 MS (s)1496 1175 MS
+(y)1516 1175 MS (s)1540 1175 MS (t)1559 1175 MS (\350)1574 1175 MS (m)1597 1175 MS (e)1634 1175 MS ( )1657 1175 MS (l)1682 1175 MS (i)1696 1175 MS (n)1709 1175 MS (\351)1734 1175 MS (a)1756 1175 MS (i)1779 1175 MS (r)1792 1175 MS (e)1809 1175 MS ( )1831 1175 MS
+(s)1856 1175 MS (\222)1875 1175 MS (e)1891 1175 MS (f)1914 1175 MS (f)1931 1175 MS (e)1947 1175 MS (c)1969 1175 MS (t)1991 1175 MS (u)2006 1175 MS (e)2031 1175 MS ( )2053 1175 MS (e)2077 1175 MS (n)2100 1175 MS ( )2125 1175 MS
+(p)235 1232 MS (a)260 1232 MS (r)282 1232 MS (a)299 1232 MS (l)322 1232 MS (l)335 1232 MS (\350)348 1232 MS (l)371 1232 MS (e)384 1232 MS (,)406 1232 MS ( )419 1232 MS (i)435 1232 MS (l)448 1232 MS ( )461 1232 MS (e)476 1232 MS (s)499 1232 MS
+(t)518 1232 MS ( )533 1232 MS (n)548 1232 MS (\351)572 1232 MS (c)594 1232 MS (e)616 1232 MS (s)639 1232 MS (s)658 1232 MS (a)677 1232 MS (i)700 1232 MS (r)713 1232 MS (e)730 1232 MS ( )752 1232 MS (d)767 1232 MS (e)792 1232 MS ( )814 1232 MS
+(d)829 1232 MS (\351)854 1232 MS (f)877 1232 MS (i)894 1232 MS (n)907 1232 MS (i)932 1232 MS (r)945 1232 MS ( )962 1232 MS (u)977 1232 MS (n)1003 1232 MS ( )1027 1232 MS (s)1042 1232 MS (e)1062 1232 MS (c)1084 1232 MS (o)1106 1232 MS (n)1132 1232 MS
+(d)1156 1232 MS ( )1181 1232 MS (s)1196 1232 MS (e)1215 1232 MS (r)1237 1232 MS (v)1255 1232 MS (i)1280 1232 MS (c)1293 1232 MS (e)1315 1232 MS ( )1337 1232 MS (a)1352 1232 MS (s)1375 1232 MS (y)1395 1232 MS (n)1419 1232 MS (c)1444 1232 MS (h)1467 1232 MS
+(r)1491 1232 MS (o)1508 1232 MS (n)1534 1232 MS (e)1558 1232 MS ( )1580 1232 MS (d)1595 1232 MS (e)1620 1232 MS ( )1642 1232 MS (t)1657 1232 MS (y)1673 1232 MS (p)1696 1232 MS (e)1721 1232 MS ( )1743 1232 MS (\253)1759 1232 MS
+( )1783 1232 MS
+(o)1796 1232 MS (n)1822 1232 MS (e)1846 1232 MS (w)1868 1232 MS (a)1904 1232 MS (y)1927 1232 MS
+( )1950 1232 MS
+(\273)1964 1232 MS
+( )1988 1232 MS
+(:)2001 1232 MS ( )2015 1232 MS (c)2030 1232 MS (\222)2052 1232 MS (e)2068 1232 MS (s)2091 1232 MS (t)2110 1232 MS ( )2125 1232 MS
+(l)235 1290 MS (e)248 1290 MS ( )270 1290 MS (s)286 1290 MS (e)305 1290 MS (r)327 1290 MS (v)345 1290 MS (i)370 1290 MS (c)383 1290 MS (e)405 1290 MS ( )427 1290 MS (S)443 1290 MS (P)471 1290 MS (S)499 1290 MS (o)527 1290 MS (l)553 1290 MS
+(v)566 1290 MS (e)590 1290 MS (\()612 1290 MS (\))629 1290 MS (.)646 1290 MS ( )659 1290 MS (L)675 1290 MS (e)705 1290 MS ( )727 1290 MS (c)743 1290 MS (l)766 1290 MS (i)779 1290 MS (e)792 1290 MS (n)815 1290 MS (t)839 1290 MS ( )854 1290 MS
+(q)870 1290 MS (u)895 1290 MS (i)921 1290 MS ( )933 1290 MS (v)950 1290 MS (e)974 1290 MS (u)996 1290 MS (t)1021 1290 MS ( )1036 1290 MS (i)1052 1290 MS (n)1065 1290 MS (v)1090 1290 MS (o)1114 1290 MS (q)1140 1290 MS (u)1165 1290 MS (e)1190 1290 MS
+(r)1212 1290 MS ( )1229 1290 MS (l)1245 1290 MS (e)1258 1290 MS ( )1280 1290 MS (s)1296 1290 MS (e)1315 1290 MS (r)1337 1290 MS (v)1355 1290 MS (i)1380 1290 MS (c)1393 1290 MS (e)1415 1290 MS ( )1437 1290 MS (d)1453 1290 MS (e)1478 1290 MS ( )1500 1290 MS
+(r)1516 1290 MS (\351)1533 1290 MS (s)1555 1290 MS (o)1574 1290 MS (l)1601 1290 MS (u)1613 1290 MS (t)1638 1290 MS (i)1654 1290 MS (o)1666 1290 MS (n)1692 1290 MS ( )1716 1290 MS (d)1732 1290 MS (u)1757 1290 MS ( )1782 1290 MS (s)1798 1290 MS (y)1818 1290 MS
+(s)1842 1290 MS (t)1861 1290 MS (\350)1876 1290 MS (m)1899 1290 MS (e)1936 1290 MS ( )1958 1290 MS (l)1975 1290 MS (i)1989 1290 MS (n)2002 1290 MS (\351)2027 1290 MS (a)2049 1290 MS (i)2072 1290 MS (r)2085 1290 MS (e)2102 1290 MS ( )2125 1290 MS
+(f)235 1347 MS (e)251 1347 MS (r)273 1347 MS
+(a)290 1347 MS ( )312 1347 MS (a)330 1347 MS (p)352 1347 MS (p)377 1347 MS (e)402 1347 MS (l)425 1347 MS ( )437 1347 MS (a)455 1347 MS (u)477 1347 MS ( )502 1347 MS (s)520 1347 MS (e)540 1347 MS (r)562 1347 MS (v)579 1347 MS (i)604 1347 MS
+(c)617 1347 MS (e)640 1347 MS ( )662 1347 MS (S)680 1347 MS (o)708 1347 MS (l)734 1347 MS (v)747 1347 MS (e)771 1347 MS (\()793 1347 MS (\))810 1347 MS ( )827 1347 MS (s)845 1347 MS (u)864 1347 MS (r)889 1347 MS ( )906 1347 MS (l)925 1347 MS
+(e)937 1347 MS ( )959 1347 MS (p)977 1347 MS (r)1002 1347 MS (o)1019 1347 MS (c)1045 1347 MS (e)1067 1347 MS (s)1089 1347 MS (s)1108 1347 MS (u)1127 1347 MS (s)1152 1347 MS ( )1171 1347 MS (0)1189 1347 MS ( )1214 1347 MS (d)1232 1347 MS (u)1257 1347 MS
+( )1282 1347 MS (s)1300 1347 MS (e)1319 1347 MS (r)1341 1347 MS (v)1358 1347 MS (e)1382 1347 MS (u)1404 1347 MS (r)1429 1347 MS ( )1446 1347 MS (q)1464 1347 MS (u)1489 1347 MS (i)1515 1347 MS ( )1527 1347 MS (a)1545 1347 MS (b)1568 1347 MS (r)1592 1347 MS
+(i)1610 1347 MS (t)1622 1347 MS (e)1637 1347 MS ( )1659 1347 MS (l)1678 1347 MS (e)1690 1347 MS ( )1712 1347 MS (c)1730 1347 MS (o)1752 1347 MS (m)1779 1347 MS (p)1816 1347 MS (o)1841 1347 MS (s)1867 1347 MS (a)1886 1347 MS (n)1909 1347 MS (t)1933 1347 MS
+( )1948 1347 MS (s)1966 1347 MS (o)1985 1347 MS (l)2011 1347 MS (v)2023 1347 MS (e)2048 1347 MS (u)2070 1347 MS (r)2095 1347 MS (.)2112 1347 MS ( )2125 1347 MS
+(P)235 1405 MS (u)263 1405 MS (i)289 1405 MS (s)301 1405 MS (,)320 1405 MS ( )333 1405 MS (l)352 1405 MS (e)364 1405 MS ( )386 1405 MS (s)405 1405 MS (e)424 1405 MS (r)446 1405 MS (v)464 1405 MS (i)489 1405 MS (c)502 1405 MS (e)524 1405 MS
+( )546 1405 MS (S)564 1405 MS (o)592 1405 MS (l)618 1405 MS (v)631 1405 MS (e)655 1405 MS (\()677 1405 MS (\))694 1405 MS ( )711 1405 MS (a)729 1405 MS (c)751 1405 MS (t)773 1405 MS (i)789 1405 MS (v)802 1405 MS (e)826 1405 MS (r)848 1405 MS
+(a)865 1405 MS ( )887 1405 MS (l)906 1405 MS (e)919 1405 MS ( )941 1405 MS (s)959 1405 MS (e)978 1405 MS (r)1000 1405 MS (v)1018 1405 MS (i)1043 1405 MS (c)1056 1405 MS (e)1078 1405 MS ( )1100 1405 MS (S)1118 1405 MS (P)1146 1405 MS (S)1174 1405 MS
+(o)1202 1405 MS (l)1228 1405 MS (v)1241 1405 MS (e)1265 1405 MS (\()1287 1405 MS (\))1304 1405 MS ( )1321 1405 MS (s)1339 1405 MS (u)1358 1405 MS (r)1383 1405 MS ( )1400 1405 MS (t)1418 1405 MS (o)1432 1405 MS (u)1458 1405 MS (s)1483 1405 MS ( )1502 1405 MS
+(l)1520 1405 MS (e)1532 1405 MS (s)1555 1405 MS ( )1574 1405 MS (a)1592 1405 MS (u)1614 1405 MS (t)1639 1405 MS (r)1654 1405 MS (e)1671 1405 MS (s)1693 1405 MS ( )1712 1405 MS (p)1730 1405 MS (r)1755 1405 MS (o)1771 1405 MS (c)1797 1405 MS (e)1819 1405 MS
+(s)1841 1405 MS (s)1860 1405 MS (u)1879 1405 MS (s)1904 1405 MS (.)1923 1405 MS ( )1936 1405 MS (D)1954 1405 MS (e)1990 1405 MS ( )2012 1405 MS (c)2030 1405 MS (e)2052 1405 MS (t)2074 1405 MS (t)2089 1405 MS (e)2104 1405 MS ( )2125 1405 MS
+(m)235 1462 MS (a)273 1462 MS (n)296 1462 MS (i)321 1462 MS (\350)334 1462 MS (r)356 1462 MS (e)373 1462 MS ( )395 1462 MS (l)409 1462 MS (a)422 1462 MS ( )444 1462 MS (r)457 1462 MS (\351)474 1462 MS (s)496 1462 MS (o)515 1462 MS (l)541 1462 MS
+(u)553 1462 MS (t)578 1462 MS (i)594 1462 MS (o)606 1462 MS (n)632 1462 MS ( )656 1462 MS (d)669 1462 MS (u)694 1462 MS ( )719 1462 MS (s)732 1462 MS (y)752 1462 MS (s)776 1462 MS (t)795 1462 MS (\350)810 1462 MS (m)833 1462 MS (e)870 1462 MS
+( )892 1462 MS (s)905 1462 MS (e)924 1462 MS (r)946 1462 MS (a)963 1462 MS ( )985 1462 MS (b)999 1462 MS (i)1024 1462 MS (e)1037 1462 MS (n)1060 1462 MS ( )1084 1462 MS (p)1097 1462 MS (a)1122 1462 MS (r)1144 1462 MS (a)1161 1462 MS (l)1184 1462 MS
+(l)1197 1462 MS (\351)1210 1462 MS (l)1233 1462 MS (i)1247 1462 MS (s)1260 1462 MS (\351)1280 1462 MS (e)1302 1462 MS (.)1324 1462 MS
+( )1337 1462 MS
+( )235 1520 MS
+[42 0 0 -42 0 0]/Courier MF
+(#)235 1567 MS (i)260 1567 MS (f)285 1567 MS (n)310 1567 MS (d)335 1567 MS (e)360 1567 MS (f)385 1567 MS ( )410 1567 MS (_)435 1567 MS (S)460 1567 MS (A)485 1567 MS (L)510 1567 MS (O)535 1567 MS
+(M)560 1567 MS (E)585 1567 MS (_)610 1567 MS (N)635 1567 MS (P)660 1567 MS (S)685 1567 MS (O)710 1567 MS (L)735 1567 MS (V)760 1567 MS (E)785 1567 MS (C)810 1567 MS (O)835 1567 MS (M)860 1567 MS (P)885 1567 MS (O)910 1567 MS (N)935 1567 MS
+(E)960 1567 MS (N)985 1567 MS (T)1010 1567 MS (_)1035 1567 MS (I)1060 1567 MS (D)1085 1567 MS (L)1110 1567 MS (_)1135 1567 MS
+( )1160 1567 MS
+(#)235 1614 MS (d)260 1614 MS (e)285 1614 MS (f)310 1614 MS (i)335 1614 MS (n)360 1614 MS (e)385 1614 MS ( )410 1614 MS (_)435 1614 MS (S)460 1614 MS (A)485 1614 MS (L)510 1614 MS (O)535 1614 MS (M)560 1614 MS (E)585 1614 MS (_)610 1614 MS
+(N)635 1614 MS (P)660 1614 MS (S)685 1614 MS (O)710 1614 MS (L)735 1614 MS (V)760 1614 MS (E)785 1614 MS (C)810 1614 MS (O)835 1614 MS (M)860 1614 MS (P)885 1614 MS (O)910 1614 MS (N)935 1614 MS (E)960 1614 MS (N)985 1614 MS (T)1010 1614 MS
+(_)1035 1614 MS (I)1060 1614 MS (D)1085 1614 MS (L)1110 1614 MS (_)1135 1614 MS
+( )1160 1614 MS
+( )235 1662 MS
+(#)235 1709 MS (i)260 1709 MS (n)285 1709 MS (c)310 1709 MS (l)335 1709 MS (u)360 1709 MS (d)385 1709 MS (e)410 1709 MS ( )435 1709 MS (")460 1709 MS (S)485 1709 MS (A)510 1709 MS (L)535 1709 MS (O)560 1709 MS (M)585 1709 MS (E)610 1709 MS
+(_)635 1709 MS (C)660 1709 MS (o)685 1709 MS (m)710 1709 MS (p)735 1709 MS (o)760 1709 MS (n)785 1709 MS (e)810 1709 MS (n)835 1709 MS (t)860 1709 MS (.)885 1709 MS (i)910 1709 MS (d)935 1709 MS (l)960 1709 MS (")985 1709 MS
+( )1010 1709 MS
+(#)235 1756 MS (i)260 1756 MS (n)285 1756 MS (c)310 1756 MS (l)335 1756 MS (u)360 1756 MS (d)385 1756 MS (e)410 1756 MS ( )435 1756 MS (")460 1756 MS (T)485 1756 MS (y)510 1756 MS (p)535 1756 MS (e)560 1756 MS (D)585 1756 MS (a)610 1756 MS
+(t)635 1756 MS (a)660 1756 MS (.)685 1756 MS (i)710 1756 MS (d)735 1756 MS (l)760 1756 MS (")785 1756 MS
+( )810 1756 MS
+(#)235 1803 MS (i)260 1803 MS (n)285 1803 MS (c)310 1803 MS (l)335 1803 MS (u)360 1803 MS (d)385 1803 MS (e)410 1803 MS ( )435 1803 MS (")460 1803 MS (M)485 1803 MS (P)510 1803 MS (I)535 1803 MS (O)560 1803 MS (b)585 1803 MS (j)610 1803 MS
+(e)635 1803 MS (c)660 1803 MS (t)685 1803 MS (.)710 1803 MS (i)735 1803 MS (d)760 1803 MS (l)785 1803 MS (")810 1803 MS
+( )835 1803 MS
+(#)235 1850 MS (i)260 1850 MS (n)285 1850 MS (c)310 1850 MS (l)335 1850 MS (u)360 1850 MS (d)385 1850 MS (e)410 1850 MS ( )435 1850 MS (")460 1850 MS (N)485 1850 MS (P)510 1850 MS (V)535 1850 MS (e)560 1850 MS (c)585 1850 MS (C)610 1850 MS
+(o)635 1850 MS (m)660 1850 MS (p)685 1850 MS (o)710 1850 MS (n)735 1850 MS (e)760 1850 MS (n)785 1850 MS (t)810 1850 MS (.)835 1850 MS (i)860 1850 MS (d)885 1850 MS (l)910 1850 MS (")935 1850 MS
+( )960 1850 MS
+(#)235 1898 MS (i)260 1898 MS (n)285 1898 MS (c)310 1898 MS (l)335 1898 MS (u)360 1898 MS (d)385 1898 MS (e)410 1898 MS ( )435 1898 MS (")460 1898 MS (N)485 1898 MS (P)510 1898 MS (M)535 1898 MS (a)560 1898 MS (t)585 1898 MS (C)610 1898 MS
+(o)635 1898 MS (m)660 1898 MS (p)685 1898 MS (o)710 1898 MS (n)735 1898 MS (e)760 1898 MS (n)785 1898 MS (t)810 1898 MS (.)835 1898 MS (i)860 1898 MS (d)885 1898 MS (l)910 1898 MS (")935 1898 MS
+( )960 1898 MS
+( )235 1945 MS
+(m)235 1992 MS (o)260 1992 MS (d)285 1992 MS (u)310 1992 MS (l)335 1992 MS (e)360 1992 MS ( )385 1992 MS (E)410 1992 MS (n)435 1992 MS (g)460 1992 MS (i)485 1992 MS (n)510 1992 MS (e)535 1992 MS (s)560 1992 MS
+( )585 1992 MS
+({)235 2039 MS
+( )260 2039 MS
+( )235 2086 MS ( )260 2086 MS (i)285 2086 MS (n)310 2086 MS (t)335 2086 MS (e)360 2086 MS (r)385 2086 MS (f)410 2086 MS (a)435 2086 MS (c)460 2086 MS (e)485 2086 MS ( )510 2086 MS (N)535 2086 MS (P)560 2086 MS (S)585 2086 MS (o)610 2086 MS
+(l)635 2086 MS (v)660 2086 MS (e)685 2086 MS (C)710 2086 MS (o)735 2086 MS (m)760 2086 MS (p)785 2086 MS (o)810 2086 MS (n)835 2086 MS (e)860 2086 MS (n)885 2086 MS (t)910 2086 MS (:)935 2086 MS (C)960 2086 MS (o)985 2086 MS (m)1010 2086 MS
+(p)1035 2086 MS
+(o)1060 2086 MS (n)1085 2086 MS (e)1110 2086 MS (n)1135 2086 MS (t)1160 2086 MS (,)1185 2086 MS (M)1210 2086 MS (P)1235 2086 MS (I)1260 2086 MS (O)1285 2086 MS (b)1310 2086 MS (j)1335 2086 MS (e)1360 2086 MS (c)1385 2086 MS (t)1410 2086 MS
+( )1435 2086 MS
+( )235 2134 MS ( )260 2134 MS ({)285 2134 MS
+( )310 2134 MS
+( )235 2181 MS ( )260 2181 MS ( )285 2181 MS ( )310 2181 MS (v)335 2181 MS (o)360 2181 MS (i)385 2181 MS (d)410 2181 MS ( )435 2181 MS (S)460 2181 MS (o)485 2181 MS (l)510 2181 MS (v)535 2181 MS (e)560 2181 MS (\()585 2181 MS ( )610 2181 MS
+(i)635 2181 MS (n)660 2181 MS ( )685 2181 MS (P)710 2181 MS (C)735 2181 MS (S)760 2181 MS (R)785 2181 MS (M)810 2181 MS (a)835 2181 MS (t)860 2181 MS ( )885 2181 MS (A)910 2181 MS (,)935 2181 MS ( )960 2181 MS (i)985 2181 MS (n)1010 2181 MS
+( )1035 2181 MS (P)1060 2181 MS (V)1085 2181 MS (e)1110 2181 MS (c)1135 2181 MS ( )1160 2181 MS (b)1185 2181 MS (,)1210 2181 MS ( )1235 2181 MS (o)1260 2181 MS (u)1285 2181 MS (t)1310 2181 MS ( )1335 2181 MS (P)1360 2181 MS (V)1385 2181 MS (e)1410 2181 MS
+(c)1435 2181 MS ( )1460 2181 MS (x)1485 2181 MS ( )1510 2181 MS (\))1535 2181 MS (;)1560 2181 MS
+( )1585 2181 MS
+( )235 2228 MS ( )260 2228 MS ( )285 2228 MS ( )310 2228 MS (o)335 2228 MS (n)360 2228 MS (e)385 2228 MS (w)410 2228 MS (a)435 2228 MS (y)460 2228 MS ( )485 2228 MS (v)510 2228 MS (o)535 2228 MS (i)560 2228 MS (d)585 2228 MS ( )610 2228 MS
+(S)635 2228 MS (P)660 2228 MS (S)685 2228 MS (o)710 2228 MS (l)735 2228 MS (v)760 2228 MS (e)785 2228 MS (\()810 2228 MS ( )835 2228 MS (i)860 2228 MS (n)885 2228 MS ( )910 2228 MS (P)935 2228 MS (C)960 2228 MS (S)985 2228 MS (R)1010 2228 MS
+(M)1035 2228 MS (a)1060 2228 MS (t)1085 2228 MS ( )1110 2228 MS (A)1135 2228 MS (,)1160 2228 MS ( )1185 2228 MS (i)1210 2228 MS (n)1235 2228 MS ( )1260 2228 MS (P)1285 2228 MS (V)1310 2228 MS (e)1335 2228 MS (c)1360 2228 MS ( )1385 2228 MS (b)1410 2228 MS
+(,)1435 2228 MS ( )1460 2228 MS (i)1485 2228 MS (n)1510 2228 MS ( )1535 2228 MS (s)1560 2228 MS (t)1585 2228 MS (r)1610 2228 MS (i)1635 2228 MS (n)1660 2228 MS (g)1685 2228 MS ( )1710 2228 MS (i)1735 2228 MS (d)1760 2228 MS (_)1785 2228 MS (c)1810 2228 MS
+(a)1835 2228 MS (l)1860 2228 MS (l)1885 2228 MS (b)1910 2228 MS (a)1935 2228 MS (c)1960 2228 MS (k)1985 2228 MS ( )2010 2228 MS (\))2035 2228 MS (;)2060 2228 MS
+( )2085 2228 MS
+( )235 2275 MS ( )260 2275 MS
+(})285 2275 MS ( )310 2275 MS (;)335 2275 MS
+( )360 2275 MS
+(})235 2322 MS ( )260 2322 MS (;)285 2322 MS
+( )310 2322 MS
+( )235 2370 MS
+(#)235 2417 MS (e)260 2417 MS (n)285 2417 MS (d)310 2417 MS (i)335 2417 MS (f)360 2417 MS
+( )385 2417 MS
+( )235 2464 MS
+( )235 2511 MS
+[50 0 0 -50 0 0]/_Times-Roman MF
+( )235 2568 MS
+showpage
+%%Page: 26 26
+14.449 827.879 translate 72 300 div dup neg scale
+0 0 transform .25 add round .25 sub exch .25 add round .25 sub exch itransform translate
+1 j
+1 setlinecap
+72 sl
+0.375 g
+n
+494 182 M
+494 155 472 133 445 133 c
+418 133 396 155 396 182 c
+396 209 418 231 445 231 c
+472 231 494 209 494 182 c
+cp
+CM 0.156 0.152 scale
+s
+SM
+71 sl
+n
+660 182 M
+660 155 638 133 611 133 c
+584 133 562 155 562 182 c
+562 209 584 231 611 231 c
+638 231 660 209 660 182 c
+cp
+CM 0.156 0.152 scale
+s
+SM
+n
+120 24 468 152 B
+1 g
+f
+1 sl
+n
+122 26 467 151 B
+cp
+s
+71 sl
+0.375 g
+n
+577 180 M
+577 153 555 131 528 131 c
+501 131 479 153 479 180 c
+479 206 501 228 528 228 c
+555 228 577 206 577 180 c
+cp
+gs
+1 g
+e
+gr
+CM 0.156 0.152 scale
+s
+SM
+n
+480 180 M
+575 180 L
+CM 0.156 0.152 scale
+s
+SM
+n
+34 18 562 187 B
+1 g
+f
+1 sl
+n
+36 20 561 186 B
+cp
+s
+n
+610 173 M
+591 173 L
+554 124 L
+579 126 L
+609 173 L
+610 173 L
+cp
+gs
+e
+gr
+s
+n
+448 170 M
+468 170 L
+504 122 L
+479 123 L
+449 170 L
+448 170 L
+cp
+gs
+e
+gr
+s
+0.375 g
+n
+473 140 M
+473 137 470 135 467 135 c
+464 135 462 137 462 140 c
+462 142 464 145 467 145 c
+470 145 473 142 473 140 c
+cp
+gs
+e
+gr
+s
+n
+593 139 M
+593 136 590 134 588 134 c
+585 134 583 136 583 139 c
+583 141 585 144 588 144 c
+590 144 593 141 593 139 c
+cp
+gs
+e
+gr
+s
+72 sl
+n
+665 137 M
+665 229 L
+CM 0.156 0.152 scale
+s
+SM
+[29 0 0 -29 0 0]/Times-Roman MF
+0 g
+( )676 243 MS
+[50 0 0 -50 0 0]/Times-Roman MF
+(D)400 289 MS (E)436 289 MS (N)467 289 MS ( )503 289 MS ( )516 289 MS (S)529 289 MS (a)557 289 MS (c)579 289 MS (l)601 289 MS (a)613 289 MS (y)636 289 MS
+( )660 289 MS
+( )1297 140 MS
+[38 0 0 -38 0 0]/Times-Roman MF
+(S)1785 129 MS (F)1806 129 MS (M)1827 129 MS (E)1861 129 MS (/)1883 129 MS (L)1894 129 MS (G)1916 129 MS (L)1943 129 MS (S)1965 129 MS (/)1986 129 MS (R)1997 129 MS (T)2022 129 MS (/)2045 129 MS (0)2056 129 MS (2)2075 129 MS
+(-)2094 129 MS
+(0)2106 129 MS (0)2125 129 MS (2)2144 129 MS
+( )2163 129 MS
+(D)1785 173 MS (a)1812 173 MS (t)1829 173 MS (e)1840 173 MS
+( )1856 173 MS
+(:)1866 173 MS
+( )1875 173 MS
+(3)1885 173 MS (0)1904 173 MS (/)1923 173 MS (0)1934 173 MS (5)1952 173 MS (/)1971 173 MS (2)1982 173 MS (0)2000 173 MS (0)2019 173 MS (2)2038 173 MS
+( )2057 173 MS
+n
+5 5 232 89 B
+f
+n
+5 5 232 89 B
+f
+n
+584 5 238 89 B
+f
+n
+5 5 823 89 B
+f
+n
+938 5 829 89 B
+f
+n
+5 5 1768 89 B
+f
+n
+436 5 1774 89 B
+f
+n
+5 5 2211 89 B
+f
+n
+5 5 2211 89 B
+f
+n
+5 256 232 95 B
+f
+n
+2 256 823 95 B
+f
+n
+2 256 1768 95 B
+f
+n
+5 256 2211 95 B
+f
+[50 0 0 -50 0 0]/Times-Roman MF
+(D)322 400 MS (M)358 400 MS (2)402 400 MS (S)427 400 MS (/)455 400 MS (S)469 400 MS (F)497 400 MS (M)524 400 MS (E)568 400 MS (/)599 400 MS (L)613 400 MS (G)643 400 MS (L)680 400 MS (S)710 400 MS
+( )738 400 MS
+[50 0 0 -50 0 0]/Times-Bold MF
+gs
+n
+241 53 1102 367 CB
+(R)1102 413 MS (A)1138 413 MS (P)1174 413 MS (P)1204 413 MS (O)1234 413 MS (R)1273 413 MS (T)1310 413 MS
+gr
+gs
+n
+150 53 1343 367 CB
+( )1343 413 MS (D)1356 413 MS (M)1392 413 MS (2)1440 413 MS (S)1465 413 MS
+gr
+[50 0 0 -50 0 0]/Times-Roman MF
+gs
+n
+24 52 1493 368 CB
+( )1493 413 MS
+gr
+[38 0 0 -38 0 0]/Times-Roman MF
+(P)1785 400 MS (a)1806 400 MS (g)1823 400 MS (e)1841 400 MS ( )1858 400 MS
+[50 0 0 -50 0 0]/Times-Roman MF
+(2)1868 400 MS (6)1893 400 MS
+(/)1918 400 MS
+(3)1932 400 MS (0)1957 400 MS
+[38 0 0 -38 0 0]/Times-Roman MF
+( )1982 400 MS
+n
+5 2 232 352 B
+f
+n
+2 2 823 352 B
+f
+n
+941 2 826 352 B
+f
+n
+2 2 1768 352 B
+f
+n
+5 2 2211 352 B
+f
+n
+5 67 232 355 B
+f
+n
+590 1 232 423 B
+f
+n
+2 67 823 355 B
+f
+n
+1 1 823 423 B
+f
+n
+942 1 825 423 B
+f
+n
+2 67 1768 355 B
+f
+n
+1 1 1768 423 B
+f
+n
+440 1 1770 423 B
+f
+n
+5 67 2211 355 B
+f
+n
+5 1 2211 423 B
+f
+[50 0 0 -50 0 0]/Times-Roman MF
+( )235 470 MS
+[33 0 0 -33 0 0]/Times-Roman MF
+/IsChar{exch/CharStrings get exch known}bd/MapCh{3 -1 roll/Encoding get 3 1\r
+roll put}bd/MapDegree{dup 16#b0 exch/degree IsChar{/degree}{/ring}ifelse MapCh}\r
+bd/MapBB{dup 16#a6 exch/brokenbar IsChar{/brokenbar}{/bar}ifelse MapCh}bd\r
+/reencode{findfont begin currentdict dup length dict begin{1 index/FID ne{def}\r
+{pop pop}ifelse}forall/FontName exch def dup length 0 ne{/Encoding Encoding 256\r
+array copy def 0 exch{dup type/nametype eq{Encoding 2 index 2 index put pop 1\r
+add}{exch pop}ifelse}forall}if pop currentdict dup end end/FontName get exch\r
+definefont dup MapDegree MapBB}bd/LATENC[0/grave/acute/circumflex/tilde/macron\r
+/breve/dotaccent/dieresis/ring/cedilla/hungarumlaut/ogonek/caron/dotlessi/fi/fl\r
+/Lslash/lslash/Zcaron/zcaron/minus/.notdef/.notdef/.notdef/.notdef/.notdef\r
+/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/space/exclam/quotedbl\r
+/numbersign/dollar/percent/ampersand/quotesingle/parenleft/parenright/asterisk\r
+/plus/comma/hyphen/period/slash/zero/one/two/three/four/five/six/seven/eight\r
+/nine/colon/semicolon/less/equal/greater/question/at/A/B/C/D/E/F/G/H/I/J/K/L/M\r
+/N/O/P/Q/R/S/T/U/V/W/X/Y/Z/bracketleft/backslash/bracketright/asciicircum\r
+/underscore/grave/a/b/c/d/e/f/g/h/i/j/k/l/m/n/o/p/q/r/s/t/u/v/w/x/y/z/braceleft\r
+/bar/braceright/asciitilde/.notdef/.notdef/.notdef/quotesinglbase/florin\r
+/quotedblbase/ellipsis/dagger/daggerdbl/circumflex/perthousand/Scaron\r
+/guilsinglleft/OE/.notdef/.notdef/.notdef/.notdef/quoteleft/quoteright\r
+/quotedblleft/quotedblright/bullet/endash/emdash/tilde/trademark/scaron\r
+/guilsinglright/oe/.notdef/.notdef/Ydieresis/.notdef/exclamdown/cent/sterling\r
+/currency/yen/brokenbar/section/dieresis/copyright/ordfeminine/guillemotleft\r
+/logicalnot/hyphen/registered/macron/degree/plusminus/twosuperior/threesuperior\r
+/acute/mu/paragraph/periodcentered/cedilla/onesuperior/ordmasculine\r
+/guillemotright/onequarter/onehalf/threequarters/questiondown/Agrave/Aacute\r
+/Acircumflex/Atilde/Adieresis/Aring/AE/Ccedilla/Egrave/Eacute/Ecircumflex\r
+/Edieresis/Igrave/Iacute/Icircumflex/Idieresis/Eth/Ntilde/Ograve/Oacute\r
+/Ocircumflex/Otilde/Odieresis/multiply/Oslash/Ugrave/Uacute/Ucircumflex\r
+/Udieresis/Yacute/Thorn/germandbls/agrave/aacute/acircumflex/atilde/adieresis\r
+/aring/ae/ccedilla/egrave/eacute/ecircumflex/edieresis/igrave/iacute\r
+/icircumflex/idieresis/eth/ntilde/ograve/oacute/ocircumflex/otilde/odieresis\r
+/divide/oslash/ugrave/uacute/ucircumflex/udieresis/yacute/thorn/ydieresis]def\r
+LATENC /_Times-Roman /Times-Roman reencode
+[33 0 0 -33 0 0]/_Times-Roman MF
+(L)242 3256 MS (e)262 3256 MS (s)277 3256 MS ( )289 3256 MS (i)298 3256 MS (n)307 3256 MS (f)324 3256 MS (o)335 3256 MS (r)351 3256 MS (m)363 3256 MS (a)388 3256 MS (t)403 3256 MS (i)412 3256 MS (o)422 3256 MS (n)439 3256 MS (s)456 3256 MS
+( )468 3256 MS (c)477 3256 MS (o)492 3256 MS (n)508 3256 MS (t)524 3256 MS (e)534 3256 MS (n)549 3256 MS (u)565 3256 MS (e)582 3256 MS (s)597 3256 MS ( )610 3256 MS (d)618 3256 MS (a)634 3256 MS (n)650 3256 MS (s)667 3256 MS ( )679 3256 MS
+(c)688 3256 MS (e)703 3256 MS ( )717 3256 MS (d)726 3256 MS (o)742 3256 MS (c)759 3256 MS (u)773 3256 MS (m)791 3256 MS (e)817 3256 MS (n)831 3256 MS (t)847 3256 MS ( )857 3256 MS (s)866 3256 MS (o)878 3256 MS (n)895 3256 MS (t)911 3256 MS
+( )921 3256 MS (r)929 3256 MS (\351)941 3256 MS (s)956 3256 MS (e)968 3256 MS (r)982 3256 MS (v)994 3256 MS (\351)1011 3256 MS (e)1026 3256 MS (s)1041 3256 MS ( )1053 3256 MS (a)1061 3256 MS (u)1076 3256 MS (x)1093 3256 MS ( )1109 3256 MS (d)1118 3256 MS
+(e)1135 3256 MS (s)1150 3256 MS (t)1162 3256 MS (i)1171 3256 MS (n)1181 3256 MS (a)1197 3256 MS (t)1212 3256 MS (a)1221 3256 MS (i)1236 3256 MS (r)1245 3256 MS (e)1257 3256 MS (s)1272 3256 MS ( )1284 3256 MS (n)1293 3256 MS (o)1309 3256 MS (m)1326 3256 MS
+(m)1352 3256 MS (\351)1378 3256 MS (m)1393 3256 MS (e)1419 3256 MS (n)1433 3256 MS (t)1450 3256 MS ( )1459 3256 MS (d)1468 3256 MS (\351)1484 3256 MS (s)1499 3256 MS (i)1512 3256 MS (g)1521 3256 MS
+(n)1538 3256 MS (\351)1555 3256 MS (s)1570 3256 MS ( )1582 3256 MS (e)1591 3256 MS (t)1605 3256 MS ( )1615 3256 MS (n)1623 3256 MS (e)1640 3256 MS ( )1654 3256 MS (p)1663 3256 MS (e)1680 3256 MS (u)1694 3256 MS (v)1711 3256 MS (e)1728 3256 MS (n)1743 3256 MS
+(t)1759 3256 MS ( )1768 3256 MS (r)1776 3256 MS (e)1788 3256 MS (c)1803 3256 MS (e)1818 3256 MS (v)1832 3256 MS (o)1849 3256 MS (i)1865 3256 MS (r)1874 3256 MS ( )1886 3256 MS (a)1894 3256 MS (u)1909 3256 MS (c)1926 3256 MS (u)1940 3256 MS (n)1957 3256 MS
+(e)1974 3256 MS ( )1988 3256 MS (d)1997 3256 MS (i)2013 3256 MS (f)2023 3256 MS (f)2034 3256 MS (u)2044 3256 MS (s)2062 3256 MS (i)2074 3256 MS (o)2084 3256 MS (n)2101 3256 MS
+( )2117 3256 MS
+(s)928 3294 MS (a)940 3294 MS (n)955 3294 MS (s)972 3294 MS ( )985 3294 MS (l)993 3294 MS (\222)1002 3294 MS (a)1013 3294 MS (u)1028 3294 MS (t)1045 3294 MS (o)1054 3294 MS (r)1071 3294 MS (i)1082 3294 MS (s)1092 3294 MS (a)1104 3294 MS (t)1119 3294 MS
+(i)1128 3294 MS (o)1138 3294 MS (n)1154 3294 MS ( )1171 3294 MS (e)1180 3294 MS (x)1194 3294 MS (p)1211 3294 MS (r)1227 3294 MS (e)1239 3294 MS (s)1254 3294 MS (s)1267 3294 MS (e)1280 3294 MS ( )1294 3294 MS (d)1303 3294 MS (u)1319 3294 MS ( )1336 3294 MS
+(D)1344 3294 MS (M)1368 3294 MS (2)1397 3294 MS (S)1414 3294 MS
+[50 0 0 -50 0 0]/Times-Roman MF
+( )1432 3294 MS
+[54 0 0 -54 0 0]/Helvetica-Bold MF
+(9)310 580 MS (.)340 580 MS (3)355 580 MS (.)385 580 MS (2)400 580 MS
+( )430 580 MS
+LATENC /_Helvetica-Bold /Helvetica-Bold reencode
+[54 0 0 -54 0 0]/_Helvetica-Bold MF
+(D)460 580 MS (\351)499 580 MS (f)529 580 MS (i)547 580 MS (n)562 580 MS (i)595 580 MS (t)610 580 MS (i)628 580 MS (o)643 580 MS (n)676 580 MS ( )709 580 MS (d)724 580 MS (e)757 580 MS ( )787 580 MS (l)802 580 MS (\222)817 580 MS
+(i)832 580 MS (m)848 580 MS (p)895 580 MS (l)928 580 MS (\351)944 580 MS (m)975 580 MS (e)1022 580 MS (n)1052 580 MS (t)1085 580 MS (a)1103 580 MS (t)1133 580 MS (i)1151 580 MS (o)1166 580 MS (n)1199 580 MS
+( )1232 580 MS
+[50 0 0 -50 0 0]/Times-Roman MF
+( )235 652 MS
+LATENC /_Times-Roman /Times-Roman reencode
+[50 0 0 -50 0 0]/_Times-Roman MF
+(L)348 710 MS (\222)378 710 MS (i)395 710 MS (m)409 710 MS (p)447 710 MS (l)473 710 MS (\351)486 710 MS (m)509 710 MS (e)547 710 MS (n)570 710 MS (t)594 710 MS (a)609 710 MS (t)631 710 MS (i)646 710 MS (o)658 710 MS (n)684 710 MS
+( )708 710 MS (d)721 710 MS (u)746 710 MS ( )771 710 MS (c)784 710 MS (o)806 710 MS (m)833 710 MS (p)870 710 MS (o)895 710 MS (s)921 710 MS (a)940 710 MS (n)962 710 MS (t)986 710 MS ( )1001 710 MS (s)1014 710 MS (o)1033 710 MS
+(l)1059 710 MS (v)1072 710 MS (e)1096 710 MS (u)1118 710 MS (r)1143 710 MS ( )1160 710 MS (p)1173 710 MS (a)1198 710 MS (r)1220 710 MS (a)1237 710 MS (l)1260 710 MS (l)1274 710 MS (\350)1287 710 MS (l)1310 710 MS (e)1323 710 MS ( )1345 710 MS
+(d)1359 710 MS (o)1384 710 MS (i)1410 710 MS (t)1422 710 MS
+( )1437 710 MS (d)1450 710 MS (o)1475 710 MS (n)1501 710 MS (c)1525 710 MS ( )1547 710 MS (d)1560 710 MS (\351)1585 710 MS (f)1607 710 MS (i)1623 710 MS (n)1636 710 MS (i)1662 710 MS (r)1675 710 MS ( )1692 710 MS (l)1706 710 MS (e)1719 710 MS
+(s)1741 710 MS ( )1760 710 MS (m)1774 710 MS (\351)1812 710 MS (t)1834 710 MS (h)1849 710 MS (o)1873 710 MS (d)1899 710 MS (e)1924 710 MS (s)1946 710 MS ( )1965 710 MS (S)1978 710 MS (o)2006 710 MS (l)2032 710 MS (v)2045 710 MS (e)2069 710 MS
+(\()2091 710 MS (\))2108 710 MS ( )2125 710 MS
+(e)235 767 MS (t)257 767 MS ( )272 767 MS (S)288 767 MS (P)315 767 MS (S)343 767 MS (o)370 767 MS (l)396 767 MS (v)409 767 MS (e)433 767 MS (\()455 767 MS (\))472 767 MS (.)489 767 MS ( )502 767 MS (C)518 767 MS (o)551 767 MS
+(m)577 767 MS (m)615 767 MS (e)653 767 MS ( )675 767 MS (e)691 767 MS (l)714 767 MS (l)728 767 MS (e)741 767 MS (s)763 767 MS ( )782 767 MS (s)799 767 MS (o)818 767 MS (n)844 767 MS (t)868 767 MS ( )883 767 MS (q)899 767 MS
+(u)924 767 MS (a)949 767 MS (s)971 767 MS (i)991 767 MS (m)1004 767 MS (e)1042 767 MS (n)1065 767 MS (t)1089 767 MS ( )1104 767 MS (i)1120 767 MS (d)1132 767 MS (e)1157 767 MS (n)1180 767 MS (t)1204 767 MS (i)1220 767 MS (q)1232 767 MS
+(u)1258 767 MS (e)1283 767 MS (s)1305 767 MS (,)1324 767 MS ( )1337 767 MS (l)1354 767 MS (a)1366 767 MS ( )1388 767 MS (r)1404 767 MS (\351)1421 767 MS (s)1443 767 MS (o)1462 767 MS (l)1489 767 MS (u)1501 767 MS (t)1526 767 MS (i)1542 767 MS
+(o)1554 767 MS (n)1580 767 MS ( )1604 767 MS (d)1620 767 MS (u)1645 767 MS ( )1670 767 MS (s)1686 767 MS (y)1706 767 MS (s)1730 767 MS (t)1749 767 MS (\350)1764 767 MS (m)1787 767 MS (e)1824 767 MS ( )1846 767 MS (l)1863 767 MS (i)1877 767 MS
+(n)1890 767 MS (\351)1915 767 MS (a)1937 767 MS (i)1960 767 MS (r)1972 767 MS (e)1990 767 MS ( )2012 767 MS (\340)2028 767 MS ( )2050 767 MS (\351)2066 767 MS (t)2088 767 MS (\351)2103 767 MS ( )2125 767 MS
+(f)235 825 MS (a)251 825 MS (c)273 825 MS (t)295 825 MS (o)310 825 MS (r)336 825 MS (i)353 825 MS (s)365 825 MS (\351)384 825 MS (e)406 825 MS ( )428 825 MS (d)441 825 MS (a)466 825 MS (n)489 825 MS (s)513 825 MS ( )532 825 MS
+(l)546 825 MS (a)559 825 MS ( )581 825 MS (m)595 825 MS (\351)633 825 MS (t)655 825 MS (h)670 825 MS (o)694 825 MS (d)720 825 MS (e)745 825 MS ( )767 825 MS (L)780 825 MS (S)810 825 MS (o)837 825 MS (l)863 825 MS (v)876 825 MS
+(e)901 825 MS (\()923 825 MS (\))940 825 MS (.)957 825 MS
+( )970 825 MS
+( )235 882 MS
+[42 0 0 -42 0 0]/Courier MF
+(#)235 930 MS (i)260 930 MS (f)285 930 MS (n)310 930 MS (d)335 930 MS (e)360 930 MS (f)385 930 MS ( )410 930 MS (_)435 930 MS (_)460 930 MS (N)485 930 MS (P)510 930 MS (S)535 930 MS (O)560 930 MS (L)585 930 MS (V)610 930 MS
+(E)635 930 MS (C)660 930 MS (O)685 930 MS (M)710 930 MS (P)735 930 MS (O)760 930 MS (N)785 930 MS (E)810 930 MS (N)835 930 MS (T)860 930 MS (_)885 930 MS (_)910 930 MS
+( )935 930 MS
+(#)235 977 MS (d)260 977 MS (e)285 977 MS (f)310 977 MS (i)335 977 MS (n)360 977 MS (e)385 977 MS ( )410 977 MS (_)435 977 MS (_)460 977 MS (N)485 977 MS (P)510 977 MS (S)535 977 MS (O)560 977 MS (L)585 977 MS (V)610 977 MS
+(E)635 977 MS (C)660 977 MS (O)685 977 MS (M)710 977 MS (P)735 977 MS (O)760 977 MS (N)785 977 MS (E)810 977 MS (N)835 977 MS (T)860 977 MS (_)885 977 MS (_)910 977 MS
+( )935 977 MS
+( )235 1024 MS
+(#)235 1071 MS (i)260 1071 MS (n)285 1071 MS (c)310 1071 MS (l)335 1071 MS (u)360 1071 MS (d)385 1071 MS (e)410 1071 MS ( )435 1071 MS (")460 1071 MS (S)485 1071 MS (A)510 1071 MS (L)535 1071 MS (O)560 1071 MS (M)585 1071 MS (E)610 1071 MS
+(c)635 1071 MS (o)660 1071 MS (n)685 1071 MS (f)710 1071 MS (i)735 1071 MS (g)760 1071 MS (.)785 1071 MS (h)810 1071 MS (")835 1071 MS
+( )860 1071 MS
+(#)235 1118 MS (i)260 1118 MS (n)285 1118 MS (c)310 1118 MS (l)335 1118 MS
+(u)360 1118 MS (d)385 1118 MS (e)410 1118 MS ( )435 1118 MS (C)460 1118 MS (O)485 1118 MS (R)510 1118 MS (B)535 1118 MS (A)560 1118 MS (_)585 1118 MS (S)610 1118 MS (E)635 1118 MS (R)660 1118 MS (V)685 1118 MS (E)710 1118 MS (R)735 1118 MS
+(_)760 1118 MS (H)785 1118 MS (E)810 1118 MS (A)835 1118 MS (D)860 1118 MS (E)885 1118 MS (R)910 1118 MS (\()935 1118 MS (N)960 1118 MS (P)985 1118 MS (S)1010 1118 MS (o)1035 1118 MS (l)1060 1118 MS (v)1085 1118 MS (e)1110 1118 MS (C)1135 1118 MS
+(o)1160 1118 MS (m)1185 1118 MS (p)1210 1118 MS (o)1235 1118 MS (n)1260 1118 MS (e)1285 1118 MS (n)1310 1118 MS (t)1335 1118 MS (\))1360 1118 MS
+( )1385 1118 MS
+(#)235 1166 MS (i)260 1166 MS (n)285 1166 MS (c)310 1166 MS (l)335 1166 MS (u)360 1166 MS (d)385 1166 MS (e)410 1166 MS ( )435 1166 MS (")460 1166 MS (M)485 1166 MS (P)510 1166 MS (I)535 1166 MS (O)560 1166 MS (b)585 1166 MS (j)610 1166 MS
+(e)635 1166 MS (c)660 1166 MS (t)685 1166 MS (_)710 1166 MS (i)735 1166 MS (.)760 1166 MS (h)785 1166 MS (")810 1166 MS
+( )835 1166 MS
+(#)235 1213 MS (i)260 1213 MS (n)285 1213 MS (c)310 1213 MS (l)335 1213 MS (u)360 1213 MS (d)385 1213 MS (e)410 1213 MS ( )435 1213 MS (")460 1213 MS (S)485 1213 MS (A)510 1213 MS (L)535 1213 MS (O)560 1213 MS (M)585 1213 MS (E)610 1213 MS
+(_)635 1213 MS (C)660 1213 MS (o)685 1213 MS (m)710 1213 MS (p)735 1213 MS (o)760 1213 MS (n)785 1213 MS (e)810 1213 MS (n)835 1213 MS (t)860 1213 MS (_)885 1213 MS (i)910 1213 MS (.)935 1213 MS (h)960 1213 MS (x)985 1213 MS (x)1010 1213 MS
+(")1035 1213 MS
+( )1060 1213 MS
+(#)235 1260 MS (i)260 1260 MS (n)285 1260 MS (c)310 1260 MS (l)335 1260 MS (u)360 1260 MS (d)385 1260 MS (e)410 1260 MS ( )435 1260 MS (")460 1260 MS (n)485 1260 MS (p)510 1260 MS (_)535 1260 MS (v)560 1260 MS (e)585 1260 MS (c)610 1260 MS
+(t)635 1260 MS (o)660 1260 MS (r)685 1260 MS (.)710 1260 MS (h)735 1260 MS (h)760 1260 MS (")785 1260 MS
+( )810 1260 MS
+(#)235 1307 MS (i)260 1307 MS (n)285 1307 MS (c)310 1307 MS (l)335 1307 MS (u)360 1307 MS (d)385 1307 MS (e)410 1307 MS ( )435 1307 MS (")460 1307 MS (n)485 1307 MS (p)510 1307 MS (_)535 1307 MS (m)560 1307 MS (a)585 1307 MS (t)610 1307 MS
+(r)635 1307 MS (i)660 1307 MS (x)685 1307 MS (.)710 1307 MS (h)735 1307 MS (h)760 1307 MS (")785 1307 MS
+( )810 1307 MS
+(#)235 1354 MS (i)260 1354 MS (n)285 1354 MS (c)310 1354 MS (l)335 1354 MS (u)360 1354 MS (d)385 1354 MS (e)410 1354 MS ( )435 1354 MS (")460 1354 MS (n)485 1354 MS (p)510 1354 MS (_)535 1354 MS (p)560 1354 MS (r)585 1354 MS (e)610 1354 MS
+(c)635 1354 MS (o)660 1354 MS (n)685 1354 MS (d)710 1354 MS (.)735 1354 MS (h)760 1354 MS (h)785 1354 MS (")810 1354 MS
+( )835 1354 MS
+(#)235 1402 MS (i)260 1402 MS (n)285 1402 MS (c)310 1402 MS (l)335 1402 MS (u)360 1402 MS (d)385 1402 MS (e)410 1402 MS ( )435 1402 MS (")460 1402 MS (n)485 1402 MS (p)510 1402 MS (_)535 1402 MS (s)560 1402 MS (o)585 1402 MS (l)610 1402 MS
+(v)635 1402 MS (e)660 1402 MS (r)685 1402 MS (.)710 1402 MS (h)735 1402 MS (h)760 1402 MS (")785 1402 MS
+( )810 1402 MS
+( )235 1449 MS
+(c)235 1496 MS (l)260 1496 MS (a)285 1496 MS (s)310 1496 MS (s)335 1496 MS ( )360 1496 MS (N)385 1496 MS (P)410 1496 MS (S)435 1496 MS (o)460 1496 MS (l)485 1496 MS (v)510 1496 MS (e)535 1496 MS (C)560 1496 MS (o)585 1496 MS (m)610 1496 MS
+(p)635 1496 MS (o)660 1496 MS (n)685 1496 MS (e)710 1496 MS (n)735 1496 MS (t)760 1496 MS (_)785 1496 MS (i)810 1496 MS ( )835 1496 MS (:)860 1496 MS ( )885 1496 MS (p)910 1496 MS (u)935 1496 MS (b)960 1496 MS (l)985 1496 MS (i)1010 1496 MS
+(c)1035 1496 MS ( )1060 1496 MS (P)1085 1496 MS (O)1110 1496 MS (A)1135 1496 MS (_)1160 1496 MS (E)1185 1496 MS (n)1210 1496 MS (g)1235 1496 MS (i)1260 1496 MS (n)1285 1496 MS (e)1310 1496 MS (s)1335 1496 MS (:)1360 1496 MS (:)1385 1496 MS (N)1410 1496 MS
+(P)1435 1496 MS (S)1460 1496 MS (o)1485 1496 MS (l)1510 1496 MS (v)1535 1496 MS (e)1560 1496 MS (C)1585 1496 MS (o)1610 1496 MS (m)1635 1496 MS
+(p)1660 1496 MS (o)1685 1496 MS (n)1710 1496 MS (e)1735 1496 MS (n)1760 1496 MS (t)1785 1496 MS (,)1810 1496 MS
+( )1835 1496 MS
+( )235 1543 MS
+( )382 1543 MS
+( )530 1543 MS
+( )677 1543 MS ( )702 1543 MS ( )727 1543 MS (p)752 1543 MS (u)777 1543 MS (b)802 1543 MS (l)827 1543 MS (i)852 1543 MS (c)877 1543 MS ( )902 1543 MS (E)927 1543 MS (n)952 1543 MS (g)977 1543 MS (i)1002 1543 MS (n)1027 1543 MS (e)1052 1543 MS
+(s)1077 1543 MS (_)1102 1543 MS (C)1127 1543 MS (o)1152 1543 MS (m)1177 1543 MS (p)1202 1543 MS (o)1227 1543 MS (n)1252 1543 MS (e)1277 1543 MS (n)1302 1543 MS (t)1327 1543 MS (_)1352 1543 MS (i)1377 1543 MS (,)1402 1543 MS
+( )1427 1543 MS
+( )235 1590 MS
+( )382 1590 MS
+( )530 1590 MS
+( )677 1590 MS ( )702 1590 MS ( )727 1590 MS (p)752 1590 MS (u)777 1590 MS (b)802 1590 MS (l)827 1590 MS (i)852 1590 MS (c)877 1590 MS ( )902 1590 MS (M)927 1590 MS (P)952 1590 MS (I)977 1590 MS (O)1002 1590 MS (b)1027 1590 MS (j)1052 1590 MS
+(e)1077 1590 MS (c)1102 1590 MS (t)1127 1590 MS (_)1152 1590 MS (i)1177 1590 MS
+( )1202 1590 MS
+({)235 1638 MS
+( )260 1638 MS
+( )235 1685 MS
+( )235 1732 MS (p)260 1732 MS (u)285 1732 MS (b)310 1732 MS (l)335 1732 MS (i)360 1732 MS (c)385 1732 MS (:)410 1732 MS
+( )435 1732 MS
+( )235 1779 MS ( )260 1779 MS (/)285 1779 MS (/)310 1779 MS ( )335 1779 MS (C)360 1779 MS (o)385 1779 MS (n)410 1779 MS (s)435 1779 MS (t)460 1779 MS (r)485 1779 MS (u)510 1779 MS (c)535 1779 MS (t)560 1779 MS (o)585 1779 MS (r)610 1779 MS
+( )635 1779 MS
+( )235 1826 MS ( )260 1826 MS (N)285 1826 MS (P)310 1826 MS (S)335 1826 MS (o)360 1826 MS (l)385 1826 MS (v)410 1826 MS (e)435 1826 MS (C)460 1826 MS (o)485 1826 MS (m)510 1826 MS (p)535 1826 MS (o)560 1826 MS (n)585 1826 MS (e)610 1826 MS
+(n)635 1826 MS (t)660 1826 MS (_)685 1826 MS (i)710 1826 MS (\()735 1826 MS (\))760 1826 MS (;)785 1826 MS
+( )810 1826 MS
+( )235 1874 MS ( )260 1874 MS (N)285 1874 MS (P)310 1874 MS (S)335 1874 MS (o)360 1874 MS (l)385 1874 MS (v)410 1874 MS (e)435 1874 MS (C)460 1874 MS (o)485 1874 MS (m)510 1874 MS (p)535 1874 MS (o)560 1874 MS (n)585 1874 MS (e)610 1874 MS
+(n)635 1874 MS (t)660 1874 MS (_)685 1874 MS (i)710 1874 MS (\()735 1874 MS ( )760 1874 MS (i)785 1874 MS (n)810 1874 MS (t)835 1874 MS ( )860 1874 MS (n)885 1874 MS (b)910 1874 MS (p)935 1874 MS (r)960 1874 MS (o)985 1874 MS (c)1010 1874 MS
+(,)1035 1874 MS ( )1060 1874 MS (i)1085 1874 MS (n)1110 1874 MS (t)1135 1874 MS ( )1160 1874 MS (n)1185 1874 MS (u)1210 1874 MS (m)1235 1874 MS (p)1260 1874 MS (r)1285 1874 MS (o)1310 1874 MS (c)1335 1874 MS (,)1360 1874 MS
+( )1385 1874 MS
+( )235 1921 MS
+( )382 1921 MS
+( )530 1921 MS ( )555 1921 MS ( )580 1921 MS ( )605 1921 MS ( )630 1921 MS ( )655 1921 MS (C)680 1921 MS (O)705 1921 MS (R)730 1921 MS (B)755 1921 MS (A)780 1921 MS (:)805 1921 MS (:)830 1921 MS (O)855 1921 MS (R)880 1921 MS (B)905 1921 MS
+(_)930 1921 MS (p)955 1921 MS (t)980 1921 MS (r)1005 1921 MS ( )1030 1921 MS (o)1055 1921 MS (r)1080 1921 MS (b)1105 1921 MS (,)1130 1921 MS
+( )1155 1921 MS
+( )235 1968 MS
+( )382 1968 MS
+( )530 1968 MS ( )555 1968 MS ( )580 1968 MS ( )605 1968 MS ( )630 1968 MS ( )655 1968 MS (P)680 1968 MS (o)705 1968 MS (r)730 1968 MS (t)755 1968 MS (a)780 1968 MS (b)805 1968 MS (l)830 1968 MS (e)855 1968 MS (S)880 1968 MS (e)905 1968 MS
+(r)930 1968 MS (v)955 1968 MS (e)980 1968 MS (r)1005 1968 MS (:)1030 1968 MS (:)1055 1968 MS (P)1080 1968 MS (O)1105 1968 MS (A)1130 1968 MS (_)1155 1968 MS (p)1180 1968 MS (t)1205 1968 MS (r)1230 1968 MS ( )1255 1968 MS (p)1280 1968 MS (o)1305 1968 MS
+(a)1330 1968 MS (,)1355 1968 MS ( )1380 1968 MS
+( )1405 1968 MS
+( )235 2015 MS
+( )382 2015 MS
+( )530 2015 MS ( )555 2015 MS ( )580 2015 MS ( )605 2015 MS ( )630 2015 MS ( )655 2015 MS (P)680 2015 MS (o)705 2015 MS (r)730 2015 MS (t)755 2015 MS (a)780 2015 MS (b)805 2015 MS (l)830 2015 MS (e)855 2015 MS (S)880 2015 MS (e)905 2015 MS
+(r)930 2015 MS (v)955 2015 MS (e)980 2015 MS (r)1005 2015 MS (:)1030 2015 MS
+(:)1055 2015 MS (O)1080 2015 MS (b)1105 2015 MS (j)1130 2015 MS (e)1155 2015 MS (c)1180 2015 MS (t)1205 2015 MS (I)1230 2015 MS (d)1255 2015 MS ( )1280 2015 MS (*)1305 2015 MS ( )1330 2015 MS (c)1355 2015 MS (o)1380 2015 MS (n)1405 2015 MS (t)1430 2015 MS
+(I)1455 2015 MS (d)1480 2015 MS (,)1505 2015 MS ( )1530 2015 MS
+( )1555 2015 MS
+( )235 2062 MS
+( )382 2062 MS
+( )530 2062 MS ( )555 2062 MS ( )580 2062 MS ( )605 2062 MS ( )630 2062 MS ( )655 2062 MS (c)680 2062 MS (o)705 2062 MS (n)730 2062 MS (s)755 2062 MS (t)780 2062 MS ( )805 2062 MS (c)830 2062 MS (h)855 2062 MS (a)880 2062 MS (r)905 2062 MS
+( )930 2062 MS (*)955 2062 MS (i)980 2062 MS (n)1005 2062 MS (s)1030 2062 MS (t)1055 2062 MS (a)1080 2062 MS (n)1105 2062 MS (c)1130 2062 MS (e)1155 2062 MS (N)1180 2062 MS (a)1205 2062 MS (m)1230 2062 MS (e)1255 2062 MS (,)1280 2062 MS
+( )1305 2062 MS
+( )235 2110 MS
+( )382 2110 MS
+( )530 2110 MS ( )555 2110 MS ( )580 2110 MS ( )605 2110 MS ( )630 2110 MS ( )655 2110 MS (c)680 2110 MS (o)705 2110 MS (n)730 2110 MS (s)755 2110 MS (t)780 2110 MS ( )805 2110 MS (c)830 2110 MS (h)855 2110 MS (a)880 2110 MS (r)905 2110 MS
+( )930 2110 MS (*)955 2110 MS (i)980 2110 MS (n)1005 2110 MS (t)1030 2110 MS (e)1055 2110 MS (r)1080 2110 MS (f)1105 2110 MS (a)1130 2110 MS (c)1155 2110 MS (e)1180 2110 MS (N)1205 2110 MS (a)1230 2110 MS (m)1255 2110 MS (e)1280 2110 MS (\))1305 2110 MS
+(;)1330 2110 MS
+( )1355 2110 MS
+( )235 2157 MS ( )260 2157 MS (N)285 2157 MS (P)310 2157 MS (S)335 2157 MS (o)360 2157 MS (l)385 2157 MS (v)410 2157 MS (e)435 2157 MS (C)460 2157 MS (o)485 2157 MS (m)510 2157 MS (p)535 2157 MS (o)560 2157 MS (n)585 2157 MS (e)610 2157 MS
+(n)635 2157 MS (t)660 2157 MS (_)685 2157 MS (i)710 2157 MS (\()735 2157 MS ( )760 2157 MS (i)785 2157 MS (n)810 2157 MS (t)835 2157 MS ( )860 2157 MS (n)885 2157 MS (b)910 2157 MS (p)935 2157 MS (r)960 2157 MS (o)985 2157 MS (c)1010 2157 MS
+(,)1035 2157 MS ( )1060 2157 MS (i)1085 2157 MS (n)1110 2157 MS (t)1135 2157 MS ( )1160 2157 MS (n)1185 2157 MS (u)1210 2157 MS (m)1235 2157 MS (p)1260 2157 MS (r)1285 2157 MS (o)1310 2157 MS (c)1335 2157 MS (,)1360 2157 MS
+( )1385 2157 MS
+( )235 2204 MS
+( )382 2204 MS
+( )530 2204 MS ( )555 2204 MS ( )580 2204 MS ( )605 2204 MS ( )630 2204 MS ( )655 2204 MS (C)680 2204 MS (O)705 2204 MS (R)730 2204 MS (B)755 2204 MS (A)780 2204 MS (:)805 2204 MS (:)830 2204 MS (O)855 2204 MS (R)880 2204 MS (B)905 2204 MS
+(_)930 2204 MS (p)955 2204 MS (t)980 2204 MS (r)1005 2204 MS ( )1030 2204 MS (o)1055 2204 MS (r)1080 2204 MS (b)1105 2204 MS (,)1130 2204 MS
+( )1155 2204 MS
+( )235 2251 MS
+( )382 2251 MS
+( )530 2251 MS ( )555 2251 MS ( )580 2251 MS ( )605 2251 MS ( )630 2251 MS ( )655 2251 MS (P)680 2251 MS (o)705 2251 MS (r)730 2251 MS (t)755 2251 MS (a)780 2251 MS (b)805 2251 MS (l)830 2251 MS (e)855 2251 MS (S)880 2251 MS (e)905 2251 MS
+(r)930 2251 MS (v)955 2251 MS (e)980 2251 MS (r)1005 2251 MS (:)1030 2251 MS (:)1055 2251 MS (P)1080 2251 MS (O)1105 2251 MS (A)1130 2251 MS (_)1155 2251 MS (p)1180 2251 MS (t)1205 2251 MS (r)1230 2251 MS ( )1255 2251 MS (p)1280 2251 MS (o)1305 2251 MS
+(a)1330 2251 MS (,)1355 2251 MS ( )1380 2251 MS
+( )1405 2251 MS
+( )235 2298 MS
+( )382 2298 MS
+( )530 2298 MS ( )555 2298 MS ( )580 2298 MS ( )605 2298 MS ( )630 2298 MS ( )655 2298 MS (P)680 2298 MS (o)705 2298 MS (r)730 2298 MS (t)755 2298 MS (a)780 2298 MS (b)805 2298 MS (l)830 2298 MS (e)855 2298 MS (S)880 2298 MS (e)905 2298 MS
+(r)930 2298 MS (v)955 2298 MS (e)980 2298 MS (r)1005 2298 MS (:)1030 2298 MS (:)1055 2298 MS (O)1080 2298 MS (b)1105 2298 MS (j)1130 2298 MS (e)1155 2298 MS (c)1180 2298 MS (t)1205 2298 MS (I)1230 2298 MS (d)1255 2298 MS ( )1280 2298 MS (*)1305 2298 MS
+( )1330 2298 MS (c)1355 2298 MS (o)1380 2298 MS (n)1405 2298 MS (t)1430 2298 MS (I)1455 2298 MS (d)1480 2298 MS (,)1505 2298 MS ( )1530 2298 MS
+( )1555 2298 MS
+( )235 2346 MS
+( )382 2346 MS
+( )530 2346 MS ( )555 2346 MS ( )580 2346 MS ( )605 2346 MS ( )630 2346 MS ( )655 2346 MS
+(c)680 2346 MS (o)705 2346 MS (n)730 2346 MS (s)755 2346 MS (t)780 2346 MS ( )805 2346 MS (c)830 2346 MS (h)855 2346 MS (a)880 2346 MS (r)905 2346 MS ( )930 2346 MS (*)955 2346 MS (i)980 2346 MS (n)1005 2346 MS (s)1030 2346 MS (t)1055 2346 MS
+(a)1080 2346 MS (n)1105 2346 MS (c)1130 2346 MS (e)1155 2346 MS (N)1180 2346 MS (a)1205 2346 MS (m)1230 2346 MS (e)1255 2346 MS (,)1280 2346 MS
+( )1305 2346 MS
+( )235 2393 MS
+( )382 2393 MS
+( )530 2393 MS ( )555 2393 MS ( )580 2393 MS ( )605 2393 MS ( )630 2393 MS ( )655 2393 MS (c)680 2393 MS (o)705 2393 MS (n)730 2393 MS (s)755 2393 MS (t)780 2393 MS ( )805 2393 MS (c)830 2393 MS (h)855 2393 MS (a)880 2393 MS (r)905 2393 MS
+( )930 2393 MS (*)955 2393 MS (i)980 2393 MS (n)1005 2393 MS (t)1030 2393 MS (e)1055 2393 MS (r)1080 2393 MS (f)1105 2393 MS (a)1130 2393 MS (c)1155 2393 MS (e)1180 2393 MS (N)1205 2393 MS (a)1230 2393 MS (m)1255 2393 MS (e)1280 2393 MS (,)1305 2393 MS
+( )1330 2393 MS
+( )235 2440 MS
+( )382 2440 MS
+( )530 2440 MS ( )555 2440 MS ( )580 2440 MS ( )605 2440 MS ( )630 2440 MS ( )655 2440 MS (i)680 2440 MS (n)705 2440 MS (t)730 2440 MS ( )755 2440 MS (f)780 2440 MS (l)805 2440 MS (a)830 2440 MS (g)855 2440 MS (\))880 2440 MS (;)905 2440 MS
+( )930 2440 MS
+( )235 2487 MS ( )260 2487 MS (/)285 2487 MS (/)310 2487 MS ( )335 2487 MS (D)360 2487 MS (e)385 2487 MS (s)410 2487 MS (t)435 2487 MS (r)460 2487 MS (u)485 2487 MS (c)510 2487 MS (t)535 2487 MS (o)560 2487 MS (r)585 2487 MS
+( )610 2487 MS
+( )235 2534 MS ( )260 2534 MS (~)285 2534 MS (N)310 2534 MS (P)335 2534 MS (S)360 2534 MS (o)385 2534 MS (l)410 2534 MS (v)435 2534 MS (e)460 2534 MS (C)485 2534 MS (o)510 2534 MS (m)535 2534 MS (p)560 2534 MS (o)585 2534 MS (n)610 2534 MS
+(e)635 2534 MS (n)660 2534 MS (t)685 2534 MS (_)710 2534 MS (i)735 2534 MS (\()760 2534 MS (\))785 2534 MS (;)810 2534 MS
+( )835 2534 MS
+( )235 2582 MS
+( )235 2629 MS ( )260 2629 MS (/)285 2629 MS (/)310 2629 MS ( )335 2629 MS (S)360 2629 MS (o)385 2629 MS (l)410 2629 MS (v)435 2629 MS (e)460 2629 MS ( )485 2629 MS (s)510 2629 MS (e)535 2629 MS (r)560 2629 MS (v)585 2629 MS (i)610 2629 MS
+(c)635 2629 MS (e)660 2629 MS
+( )685 2629 MS
+( )235 2676 MS ( )260 2676 MS (v)285 2676 MS (o)310 2676 MS (i)335 2676 MS (d)360 2676 MS ( )385 2676 MS (S)410 2676 MS (o)435 2676 MS (l)460 2676 MS (v)485 2676 MS (e)510 2676 MS (\()535 2676 MS ( )560 2676 MS (E)585 2676 MS (n)610 2676 MS
+(g)635 2676 MS (i)660 2676 MS (n)685 2676 MS (e)710 2676 MS (s)735 2676 MS (:)760 2676 MS (:)785 2676 MS (P)810 2676 MS (C)835 2676 MS (S)860 2676 MS (R)885 2676 MS (M)910 2676 MS (a)935 2676 MS (t)960 2676 MS (_)985 2676 MS (p)1010 2676 MS
+(t)1035 2676 MS (r)1060 2676 MS ( )1085 2676 MS (A)1110 2676 MS (,)1135 2676 MS ( )1160 2676 MS (E)1185 2676 MS (n)1210 2676 MS (g)1235 2676 MS (i)1260 2676 MS (n)1285 2676 MS (e)1310 2676 MS (s)1335 2676 MS (:)1360 2676 MS (:)1385 2676 MS (P)1410 2676 MS
+(V)1435 2676 MS (e)1460 2676 MS (c)1485 2676 MS (_)1510 2676 MS (p)1535 2676 MS (t)1560 2676 MS (r)1585 2676 MS ( )1610 2676 MS (b)1635 2676 MS (,)1660 2676 MS
+( )1685 2676 MS
+( )235 2723 MS
+( )382 2723 MS ( )407 2723 MS ( )432 2723 MS ( )457 2723 MS ( )482 2723 MS ( )507 2723 MS (E)532 2723 MS (n)557 2723 MS (g)582 2723 MS (i)607 2723 MS (n)632 2723 MS (e)657 2723 MS (s)682 2723 MS (:)707 2723 MS (:)732 2723 MS (P)757 2723 MS
+(V)782 2723 MS (e)807 2723 MS (c)832 2723 MS (_)857 2723 MS (o)882 2723 MS (u)907 2723 MS (t)932 2723 MS ( )957 2723 MS (x)982 2723 MS ( )1007 2723 MS (\))1032 2723 MS (;)1057 2723 MS
+( )1082 2723 MS
+( )235 2770 MS ( )260 2770 MS (v)285 2770 MS (o)310 2770 MS (i)335 2770 MS (d)360 2770 MS ( )385 2770 MS (S)410 2770 MS (P)435 2770 MS (S)460 2770 MS (o)485 2770 MS (l)510 2770 MS (v)535 2770 MS (e)560 2770 MS (\()585 2770 MS ( )610 2770 MS
+(E)635 2770 MS (n)660 2770 MS (g)685 2770 MS (i)710 2770 MS (n)735 2770 MS (e)760 2770 MS (s)785 2770 MS (:)810 2770 MS (:)835 2770 MS (P)860 2770 MS
+(C)885 2770 MS (S)910 2770 MS (R)935 2770 MS (M)960 2770 MS (a)985 2770 MS (t)1010 2770 MS (_)1035 2770 MS (p)1060 2770 MS (t)1085 2770 MS (r)1110 2770 MS ( )1135 2770 MS (A)1160 2770 MS (,)1185 2770 MS ( )1210 2770 MS (E)1235 2770 MS (n)1260 2770 MS
+(g)1285 2770 MS (i)1310 2770 MS (n)1335 2770 MS (e)1360 2770 MS (s)1385 2770 MS (:)1410 2770 MS (:)1435 2770 MS (P)1460 2770 MS (V)1485 2770 MS (e)1510 2770 MS (c)1535 2770 MS (_)1560 2770 MS (p)1585 2770 MS (t)1610 2770 MS (r)1635 2770 MS ( )1660 2770 MS
+(b)1685 2770 MS (,)1710 2770 MS
+( )1735 2770 MS
+( )235 2818 MS
+( )382 2818 MS
+(c)530 2818 MS (o)555 2818 MS (n)580 2818 MS (s)605 2818 MS (t)630 2818 MS ( )655 2818 MS (c)680 2818 MS (h)705 2818 MS (a)730 2818 MS (r)755 2818 MS (*)780 2818 MS ( )805 2818 MS (i)830 2818 MS (d)855 2818 MS (_)880 2818 MS (c)905 2818 MS
+(a)930 2818 MS (l)955 2818 MS (l)980 2818 MS (b)1005 2818 MS (a)1030 2818 MS (c)1055 2818 MS (k)1080 2818 MS ( )1105 2818 MS (\))1130 2818 MS (;)1155 2818 MS
+( )1180 2818 MS
+( )235 2865 MS
+( )235 2912 MS ( )260 2912 MS (/)285 2912 MS (/)310 2912 MS ( )335 2912 MS (g)360 2912 MS (e)385 2912 MS (t)410 2912 MS ( )435 2912 MS (N)460 2912 MS (P)485 2912 MS ( )510 2912 MS (v)535 2912 MS (e)560 2912 MS (c)585 2912 MS (t)610 2912 MS
+(o)635 2912 MS (r)660 2912 MS ( )685 2912 MS (P)710 2912 MS (o)735 2912 MS (i)760 2912 MS (n)785 2912 MS (t)810 2912 MS (e)835 2912 MS (r)860 2912 MS
+( )885 2912 MS
+( )235 2959 MS ( )260 2959 MS (N)285 2959 MS (P)310 2959 MS (v)335 2959 MS (e)360 2959 MS (c)385 2959 MS (t)410 2959 MS (o)435 2959 MS (r)460 2959 MS ( )485 2959 MS (*)510 2959 MS (V)535 2959 MS (e)560 2959 MS (c)585 2959 MS (\()610 2959 MS
+(v)635 2959 MS (o)660 2959 MS (i)685 2959 MS (d)710 2959 MS (\))735 2959 MS ( )760 2959 MS ({)785 2959 MS ( )810 2959 MS (r)835 2959 MS (e)860 2959 MS (t)885 2959 MS (u)910 2959 MS (r)935 2959 MS (n)960 2959 MS (\()985 2959 MS (_)1010 2959 MS
+(x)1035 2959 MS (\))1060 2959 MS (;)1085 2959 MS ( )1110 2959 MS (})1135 2959 MS (;)1160 2959 MS
+( )1185 2959 MS
+( )235 3006 MS
+( )235 3054 MS
+(p)260 3054 MS (r)285 3054 MS (i)310 3054 MS (v)335 3054 MS (a)360 3054 MS (t)385 3054 MS (e)410 3054 MS (:)435 3054 MS
+( )460 3054 MS
+( )235 3101 MS ( )260 3101 MS (N)285 3101 MS (P)310 3101 MS (m)335 3101 MS (a)360 3101 MS (t)385 3101 MS (r)410 3101 MS (i)435 3101 MS (x)460 3101 MS ( )485 3101 MS (*)510 3101 MS (_)535 3101 MS (A)560 3101 MS (;)585 3101 MS
+( )610 3101 MS
+showpage
+%%Page: 27 27
+14.449 827.879 translate 72 300 div dup neg scale
+0 0 transform .25 add round .25 sub exch .25 add round .25 sub exch itransform translate
+1 j
+1 setlinecap
+72 sl
+0.375 g
+n
+494 182 M
+494 155 472 133 445 133 c
+418 133 396 155 396 182 c
+396 209 418 231 445 231 c
+472 231 494 209 494 182 c
+cp
+CM 0.156 0.152 scale
+s
+SM
+71 sl
+n
+660 182 M
+660 155 638 133 611 133 c
+584 133 562 155 562 182 c
+562 209 584 231 611 231 c
+638 231 660 209 660 182 c
+cp
+CM 0.156 0.152 scale
+s
+SM
+n
+120 24 468 152 B
+1 g
+f
+1 sl
+n
+122 26 467 151 B
+cp
+s
+71 sl
+0.375 g
+n
+577 180 M
+577 153 555 131 528 131 c
+501 131 479 153 479 180 c
+479 206 501 228 528 228 c
+555 228 577 206 577 180 c
+cp
+gs
+1 g
+e
+gr
+CM 0.156 0.152 scale
+s
+SM
+n
+480 180 M
+575 180 L
+CM 0.156 0.152 scale
+s
+SM
+n
+34 18 562 187 B
+1 g
+f
+1 sl
+n
+36 20 561 186 B
+cp
+s
+n
+610 173 M
+591 173 L
+554 124 L
+579 126 L
+609 173 L
+610 173 L
+cp
+gs
+e
+gr
+s
+n
+448 170 M
+468 170 L
+504 122 L
+479 123 L
+449 170 L
+448 170 L
+cp
+gs
+e
+gr
+s
+0.375 g
+n
+473 140 M
+473 137 470 135 467 135 c
+464 135 462 137 462 140 c
+462 142 464 145 467 145 c
+470 145 473 142 473 140 c
+cp
+gs
+e
+gr
+s
+n
+593 139 M
+593 136 590 134 588 134 c
+585 134 583 136 583 139 c
+583 141 585 144 588 144 c
+590 144 593 141 593 139 c
+cp
+gs
+e
+gr
+s
+72 sl
+n
+665 137 M
+665 229 L
+CM 0.156 0.152 scale
+s
+SM
+[29 0 0 -29 0 0]/Times-Roman MF
+0 g
+( )676 243 MS
+[50 0 0 -50 0 0]/Times-Roman MF
+(D)400 289 MS (E)436 289 MS (N)467 289 MS ( )503 289 MS ( )516 289 MS (S)529 289 MS (a)557 289 MS (c)579 289 MS (l)601 289 MS (a)613 289 MS (y)636 289 MS
+( )660 289 MS
+( )1297 140 MS
+[38 0 0 -38 0 0]/Times-Roman MF
+(S)1785 129 MS (F)1806 129 MS (M)1827 129 MS (E)1861 129 MS (/)1883 129 MS (L)1894 129 MS (G)1916 129 MS (L)1943 129 MS (S)1965 129 MS (/)1986 129 MS (R)1997 129 MS (T)2022 129 MS (/)2045 129 MS (0)2056 129 MS (2)2075 129 MS
+(-)2094 129 MS
+(0)2106 129 MS (0)2125 129 MS (2)2144 129 MS
+( )2163 129 MS
+(D)1785 173 MS (a)1812 173 MS (t)1829 173 MS (e)1840 173 MS
+( )1856 173 MS
+(:)1866 173 MS
+( )1875 173 MS
+(3)1885 173 MS (0)1904 173 MS (/)1923 173 MS (0)1934 173 MS (5)1952 173 MS (/)1971 173 MS (2)1982 173 MS (0)2000 173 MS (0)2019 173 MS (2)2038 173 MS
+( )2057 173 MS
+n
+5 5 232 89 B
+f
+n
+5 5 232 89 B
+f
+n
+584 5 238 89 B
+f
+n
+5 5 823 89 B
+f
+n
+938 5 829 89 B
+f
+n
+5 5 1768 89 B
+f
+n
+436 5 1774 89 B
+f
+n
+5 5 2211 89 B
+f
+n
+5 5 2211 89 B
+f
+n
+5 256 232 95 B
+f
+n
+2 256 823 95 B
+f
+n
+2 256 1768 95 B
+f
+n
+5 256 2211 95 B
+f
+[50 0 0 -50 0 0]/Times-Roman MF
+(D)322 400 MS (M)358 400 MS (2)402 400 MS (S)427 400 MS (/)455 400 MS (S)469 400 MS (F)497 400 MS (M)524 400 MS (E)568 400 MS (/)599 400 MS (L)613 400 MS (G)643 400 MS (L)680 400 MS (S)710 400 MS
+( )738 400 MS
+[50 0 0 -50 0 0]/Times-Bold MF
+gs
+n
+241 53 1102 367 CB
+(R)1102 413 MS (A)1138 413 MS (P)1174 413 MS (P)1204 413 MS (O)1234 413 MS (R)1273 413 MS (T)1310 413 MS
+gr
+gs
+n
+150 53 1343 367 CB
+( )1343 413 MS (D)1356 413 MS (M)1392 413 MS (2)1440 413 MS (S)1465 413 MS
+gr
+[50 0 0 -50 0 0]/Times-Roman MF
+gs
+n
+24 52 1493 368 CB
+( )1493 413 MS
+gr
+[38 0 0 -38 0 0]/Times-Roman MF
+(P)1785 400 MS (a)1806 400 MS (g)1823 400 MS (e)1841 400 MS ( )1858 400 MS
+[50 0 0 -50 0 0]/Times-Roman MF
+(2)1868 400 MS (7)1893 400 MS
+(/)1918 400 MS
+(3)1932 400 MS (0)1957 400 MS
+[38 0 0 -38 0 0]/Times-Roman MF
+( )1982 400 MS
+n
+5 2 232 352 B
+f
+n
+2 2 823 352 B
+f
+n
+941 2 826 352 B
+f
+n
+2 2 1768 352 B
+f
+n
+5 2 2211 352 B
+f
+n
+5 67 232 355 B
+f
+n
+590 1 232 423 B
+f
+n
+2 67 823 355 B
+f
+n
+1 1 823 423 B
+f
+n
+942 1 825 423 B
+f
+n
+2 67 1768 355 B
+f
+n
+1 1 1768 423 B
+f
+n
+440 1 1770 423 B
+f
+n
+5 67 2211 355 B
+f
+n
+5 1 2211 423 B
+f
+[50 0 0 -50 0 0]/Times-Roman MF
+( )235 470 MS
+[33 0 0 -33 0 0]/Times-Roman MF
+/IsChar{exch/CharStrings get exch known}bd/MapCh{3 -1 roll/Encoding get 3 1\r
+roll put}bd/MapDegree{dup 16#b0 exch/degree IsChar{/degree}{/ring}ifelse MapCh}\r
+bd/MapBB{dup 16#a6 exch/brokenbar IsChar{/brokenbar}{/bar}ifelse MapCh}bd\r
+/reencode{findfont begin currentdict dup length dict begin{1 index/FID ne{def}\r
+{pop pop}ifelse}forall/FontName exch def dup length 0 ne{/Encoding Encoding 256\r
+array copy def 0 exch{dup type/nametype eq{Encoding 2 index 2 index put pop 1\r
+add}{exch pop}ifelse}forall}if pop currentdict dup end end/FontName get exch\r
+definefont dup MapDegree MapBB}bd/LATENC[0/grave/acute/circumflex/tilde/macron\r
+/breve/dotaccent/dieresis/ring/cedilla/hungarumlaut/ogonek/caron/dotlessi/fi/fl\r
+/Lslash/lslash/Zcaron/zcaron/minus/.notdef/.notdef/.notdef/.notdef/.notdef\r
+/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/space/exclam/quotedbl\r
+/numbersign/dollar/percent/ampersand/quotesingle/parenleft/parenright/asterisk\r
+/plus/comma/hyphen/period/slash/zero/one/two/three/four/five/six/seven/eight\r
+/nine/colon/semicolon/less/equal/greater/question/at/A/B/C/D/E/F/G/H/I/J/K/L/M\r
+/N/O/P/Q/R/S/T/U/V/W/X/Y/Z/bracketleft/backslash/bracketright/asciicircum\r
+/underscore/grave/a/b/c/d/e/f/g/h/i/j/k/l/m/n/o/p/q/r/s/t/u/v/w/x/y/z/braceleft\r
+/bar/braceright/asciitilde/.notdef/.notdef/.notdef/quotesinglbase/florin\r
+/quotedblbase/ellipsis/dagger/daggerdbl/circumflex/perthousand/Scaron\r
+/guilsinglleft/OE/.notdef/.notdef/.notdef/.notdef/quoteleft/quoteright\r
+/quotedblleft/quotedblright/bullet/endash/emdash/tilde/trademark/scaron\r
+/guilsinglright/oe/.notdef/.notdef/Ydieresis/.notdef/exclamdown/cent/sterling\r
+/currency/yen/brokenbar/section/dieresis/copyright/ordfeminine/guillemotleft\r
+/logicalnot/hyphen/registered/macron/degree/plusminus/twosuperior/threesuperior\r
+/acute/mu/paragraph/periodcentered/cedilla/onesuperior/ordmasculine\r
+/guillemotright/onequarter/onehalf/threequarters/questiondown/Agrave/Aacute\r
+/Acircumflex/Atilde/Adieresis/Aring/AE/Ccedilla/Egrave/Eacute/Ecircumflex\r
+/Edieresis/Igrave/Iacute/Icircumflex/Idieresis/Eth/Ntilde/Ograve/Oacute\r
+/Ocircumflex/Otilde/Odieresis/multiply/Oslash/Ugrave/Uacute/Ucircumflex\r
+/Udieresis/Yacute/Thorn/germandbls/agrave/aacute/acircumflex/atilde/adieresis\r
+/aring/ae/ccedilla/egrave/eacute/ecircumflex/edieresis/igrave/iacute\r
+/icircumflex/idieresis/eth/ntilde/ograve/oacute/ocircumflex/otilde/odieresis\r
+/divide/oslash/ugrave/uacute/ucircumflex/udieresis/yacute/thorn/ydieresis]def\r
+LATENC /_Times-Roman /Times-Roman reencode
+[33 0 0 -33 0 0]/_Times-Roman MF
+(L)242 3256 MS (e)262 3256 MS (s)277 3256 MS ( )289 3256 MS (i)298 3256 MS (n)307 3256 MS (f)324 3256 MS (o)335 3256 MS (r)351 3256 MS (m)363 3256 MS (a)388 3256 MS (t)403 3256 MS (i)412 3256 MS (o)422 3256 MS (n)439 3256 MS (s)456 3256 MS
+( )468 3256 MS (c)477 3256 MS (o)492 3256 MS (n)508 3256 MS (t)524 3256 MS (e)534 3256 MS (n)549 3256 MS (u)565 3256 MS (e)582 3256 MS (s)597 3256 MS ( )610 3256 MS (d)618 3256 MS (a)634 3256 MS (n)650 3256 MS (s)667 3256 MS ( )679 3256 MS
+(c)688 3256 MS (e)703 3256 MS ( )717 3256 MS (d)726 3256 MS (o)742 3256 MS (c)759 3256 MS (u)773 3256 MS (m)791 3256 MS (e)817 3256 MS (n)831 3256 MS (t)847 3256 MS ( )857 3256 MS (s)866 3256 MS (o)878 3256 MS (n)895 3256 MS (t)911 3256 MS
+( )921 3256 MS (r)929 3256 MS (\351)941 3256 MS (s)956 3256 MS (e)968 3256 MS (r)982 3256 MS (v)994 3256 MS (\351)1011 3256 MS (e)1026 3256 MS (s)1041 3256 MS ( )1053 3256 MS (a)1061 3256 MS (u)1076 3256 MS (x)1093 3256 MS ( )1109 3256 MS (d)1118 3256 MS
+(e)1135 3256 MS (s)1150 3256 MS (t)1162 3256 MS (i)1171 3256 MS (n)1181 3256 MS (a)1197 3256 MS (t)1212 3256 MS (a)1221 3256 MS (i)1236 3256 MS (r)1245 3256 MS (e)1257 3256 MS (s)1272 3256 MS ( )1284 3256 MS (n)1293 3256 MS (o)1309 3256 MS (m)1326 3256 MS
+(m)1352 3256 MS (\351)1378 3256 MS (m)1393 3256 MS (e)1419 3256 MS (n)1433 3256 MS (t)1450 3256 MS ( )1459 3256 MS (d)1468 3256 MS (\351)1484 3256 MS (s)1499 3256 MS (i)1512 3256 MS (g)1521 3256 MS
+(n)1538 3256 MS (\351)1555 3256 MS (s)1570 3256 MS ( )1582 3256 MS (e)1591 3256 MS (t)1605 3256 MS ( )1615 3256 MS (n)1623 3256 MS (e)1640 3256 MS ( )1654 3256 MS (p)1663 3256 MS (e)1680 3256 MS (u)1694 3256 MS (v)1711 3256 MS (e)1728 3256 MS (n)1743 3256 MS
+(t)1759 3256 MS ( )1768 3256 MS (r)1776 3256 MS (e)1788 3256 MS (c)1803 3256 MS (e)1818 3256 MS (v)1832 3256 MS (o)1849 3256 MS (i)1865 3256 MS (r)1874 3256 MS ( )1886 3256 MS (a)1894 3256 MS (u)1909 3256 MS (c)1926 3256 MS (u)1940 3256 MS (n)1957 3256 MS
+(e)1974 3256 MS ( )1988 3256 MS (d)1997 3256 MS (i)2013 3256 MS (f)2023 3256 MS (f)2034 3256 MS (u)2044 3256 MS (s)2062 3256 MS (i)2074 3256 MS (o)2084 3256 MS (n)2101 3256 MS
+( )2117 3256 MS
+(s)928 3294 MS (a)940 3294 MS (n)955 3294 MS (s)972 3294 MS ( )985 3294 MS (l)993 3294 MS (\222)1002 3294 MS (a)1013 3294 MS (u)1028 3294 MS (t)1045 3294 MS (o)1054 3294 MS (r)1071 3294 MS (i)1082 3294 MS (s)1092 3294 MS (a)1104 3294 MS (t)1119 3294 MS
+(i)1128 3294 MS (o)1138 3294 MS (n)1154 3294 MS ( )1171 3294 MS (e)1180 3294 MS (x)1194 3294 MS (p)1211 3294 MS (r)1227 3294 MS (e)1239 3294 MS (s)1254 3294 MS (s)1267 3294 MS (e)1280 3294 MS ( )1294 3294 MS (d)1303 3294 MS (u)1319 3294 MS ( )1336 3294 MS
+(D)1344 3294 MS (M)1368 3294 MS (2)1397 3294 MS (S)1414 3294 MS
+[50 0 0 -50 0 0]/Times-Roman MF
+( )1432 3294 MS
+[42 0 0 -42 0 0]/Courier MF
+( )235 517 MS ( )260 517 MS (N)285 517 MS (P)310 517 MS (v)335 517 MS (e)360 517 MS (c)385 517 MS (t)410 517 MS (o)435 517 MS (r)460 517 MS ( )485 517 MS (*)510 517 MS (_)535 517 MS (b)560 517 MS (;)585 517 MS
+( )610 517 MS
+( )235 565 MS ( )260 565 MS (N)285 565 MS (P)310 565 MS (v)335 565 MS (e)360 565 MS (c)385 565 MS (t)410 565 MS (o)435 565 MS (r)460 565 MS ( )485 565 MS (*)510 565 MS (_)535 565 MS (x)560 565 MS (;)585 565 MS
+( )610 565 MS
+( )235 612 MS ( )260 612 MS (i)285 612 MS (n)310 612 MS (t)335 612 MS ( )360 612 MS (_)385 612 MS (l)410 612 MS (i)435 612 MS (m)460 612 MS (x)485 612 MS ([)510 612 MS (2)535 612 MS (])560 612 MS (;)585 612 MS
+( )610 612 MS
+( )235 659 MS ( )260 659 MS (/)285 659 MS (/)310 659 MS ( )335 659 MS (C)360 659 MS (o)385 659 MS (n)410 659 MS (v)435 659 MS (e)460 659 MS (r)485 659 MS (s)510 659 MS (i)535 659 MS (o)560 659 MS (n)585 659 MS ( )610 659 MS
+(d)635 659 MS (e)660 659 MS (s)685 659 MS ( )710 659 MS (e)735 659 MS (n)760 659 MS (t)785 659 MS (r)810 659 MS (e)835 659 MS (e)860 659 MS (s)885 659 MS ( )910 659 MS (d)935 659 MS (e)960 659 MS ( )985 659 MS (l)1010 659 MS
+(a)1035 659 MS ( )1060 659 MS (s)1085 659 MS (t)1110 659 MS (r)1135 659 MS (u)1160 659 MS (c)1185 659 MS (t)1210 659 MS (u)1235 659 MS (r)1260 659 MS (e)1285 659 MS ( )1310 659 MS (C)1335 659 MS (O)1360 659 MS (R)1385 659 MS (B)1410 659 MS
+(A)1435 659 MS ( )1460 659 MS
+( )1485 659 MS
+( )235 706 MS ( )260 706 MS (/)285 706 MS (/)310 706 MS ( )335 706 MS (a)360 706 MS ( )385 706 MS (l)410 706 MS (a)435 706 MS ( )460 706 MS (s)485 706 MS (t)510 706 MS (r)535 706 MS (u)560 706 MS (c)585 706 MS (t)610 706 MS
+(u)635 706 MS (r)660 706 MS (e)685 706 MS ( )710 706 MS (d)735 706 MS (')760 706 MS (i)785 706 MS (m)810 706 MS (p)835 706 MS (l)860 706 MS (e)885 706 MS (m)910 706 MS (e)935 706 MS (n)960 706 MS (t)985 706 MS (a)1010 706 MS
+(t)1035 706 MS (i)1060 706 MS (o)1085 706 MS (n)1110 706 MS
+( )1135 706 MS
+( )235 753 MS ( )260 753 MS (N)285 753 MS (P)310 753 MS (m)335 753 MS (a)360 753 MS (t)385 753 MS (r)410 753 MS (i)435 753 MS (x)460 753 MS ( )485 753 MS (*)510 753 MS (R)535 753 MS (e)560 753 MS (a)585 753 MS (d)610 753 MS
+(N)635 753 MS (P)660 753 MS (M)685 753 MS (a)710 753 MS (t)735 753 MS (r)760 753 MS (i)785 753 MS (x)810 753 MS (\()835 753 MS (E)860 753 MS (n)885 753 MS (g)910 753 MS (i)935 753 MS (n)960 753 MS (e)985 753 MS (s)1010 753 MS
+(:)1035 753 MS (:)1060 753 MS (P)1085 753 MS (C)1110 753 MS (S)1135 753 MS (R)1160 753 MS (M)1185 753 MS (a)1210 753 MS (t)1235 753 MS (_)1260 753 MS (p)1285 753 MS (t)1310 753 MS (r)1335 753 MS ( )1360 753 MS (m)1385 753 MS (a)1410 753 MS
+(t)1435 753 MS (\))1460 753 MS (;)1485 753 MS
+( )1510 753 MS
+( )235 801 MS ( )260 801 MS (N)285 801 MS (P)310 801 MS (v)335 801 MS (e)360 801 MS (c)385 801 MS (t)410 801 MS (o)435 801 MS (r)460 801 MS ( )485 801 MS (*)510 801 MS (R)535 801 MS (e)560 801 MS (a)585 801 MS (d)610 801 MS
+(N)635 801 MS (P)660 801 MS (V)685 801 MS (e)710 801 MS (c)735 801 MS (t)760 801 MS (o)785 801 MS (r)810 801 MS (\()835 801 MS (E)860 801 MS (n)885 801 MS (g)910 801 MS (i)935 801 MS (n)960 801 MS (e)985 801 MS (s)1010 801 MS
+(:)1035 801 MS (:)1060 801 MS (P)1085 801 MS (V)1110 801 MS (e)1135 801 MS (c)1160 801 MS (_)1185 801 MS (p)1210 801 MS (t)1235 801 MS (r)1260 801 MS ( )1285 801 MS (v)1310 801 MS (e)1335 801 MS (c)1360 801 MS (\))1385 801 MS (;)1410 801 MS
+( )1435 801 MS
+( )235 848 MS ( )260 848 MS (/)285 848 MS (/)310 848 MS ( )335 848 MS (C)360 848 MS (o)385 848 MS (n)410 848 MS (v)435 848 MS (e)460 848 MS (r)485 848 MS (s)510 848 MS (i)535 848 MS (o)560 848 MS (n)585 848 MS ( )610 848 MS
+(d)635 848 MS (e)660 848 MS ( )685 848 MS (l)710 848 MS (a)735 848 MS ( )760 848 MS (s)785 848 MS (o)810 848 MS (r)835 848 MS (t)860 848 MS (i)885 848 MS (e)910 848 MS ( )935 848 MS (d)960 848 MS (e)985 848 MS ( )1010 848 MS
+(l)1035 848 MS (a)1060 848 MS ( )1085 848 MS (s)1110 848 MS (t)1135 848 MS (r)1160 848 MS (u)1185 848 MS (c)1210 848 MS (t)1235 848 MS (u)1260 848 MS (r)1285 848 MS (e)1310 848 MS ( )1335 848 MS (d)1360 848 MS (')1385 848 MS (i)1410 848 MS
+(m)1435 848 MS (p)1460 848 MS (l)1485 848 MS (e)1510 848 MS (m)1535 848 MS (e)1560 848 MS (n)1585 848 MS (t)1610 848 MS (a)1635 848 MS (t)1660 848 MS (i)1685 848 MS (o)1710 848 MS (n)1735 848 MS ( )1760 848 MS
+( )1785 848 MS
+( )235 895 MS ( )260 895 MS (/)285 895 MS (/)310 895 MS ( )335 895 MS (a)360 895 MS ( )385 895 MS (l)410 895 MS (a)435 895 MS ( )460 895 MS (s)485 895 MS (t)510 895 MS (r)535 895 MS (u)560 895 MS (c)585 895 MS (t)610 895 MS
+(u)635 895 MS (r)660 895 MS (e)685 895 MS ( )710 895 MS (C)735 895 MS (O)760 895 MS (R)785 895 MS (B)810 895 MS (A)835 895 MS
+( )860 895 MS
+( )235 942 MS ( )260 942 MS
+(P)285 942 MS (V)310 942 MS (e)335 942 MS (c)360 942 MS (_)385 942 MS (i)410 942 MS ( )435 942 MS (*)460 942 MS (W)485 942 MS (r)510 942 MS (i)535 942 MS (t)560 942 MS (e)585 942 MS (O)610 942 MS (u)635 942 MS (t)660 942 MS
+(p)685 942 MS (u)710 942 MS (t)735 942 MS (\()760 942 MS (v)785 942 MS (o)810 942 MS (i)835 942 MS (d)860 942 MS (\))885 942 MS (;)910 942 MS
+( )935 942 MS
+( )235 989 MS ( )260 989 MS
+(/)285 989 MS (/)310 989 MS ( )335 989 MS (A)360 989 MS (f)385 989 MS (f)410 989 MS (i)435 989 MS (c)460 989 MS (h)485 989 MS (a)510 989 MS (g)535 989 MS (e)560 989 MS ( )585 989 MS (d)610 989 MS (u)635 989 MS ( )660 989 MS
+(r)685 989 MS (e)710 989 MS (s)735 989 MS (u)760 989 MS (l)785 989 MS (t)810 989 MS (a)835 989 MS (t)860 989 MS ( )885 989 MS (d)910 989 MS (e)935 989 MS ( )960 989 MS (l)985 989 MS (a)1010 989 MS ( )1035 989 MS (r)1060 989 MS
+(e)1085 989 MS (s)1110 989 MS (o)1135 989 MS (l)1160 989 MS (u)1185 989 MS (t)1210 989 MS (i)1235 989 MS (o)1260 989 MS (n)1285 989 MS ( )1310 989 MS (d)1335 989 MS (u)1360 989 MS ( )1385 989 MS (s)1410 989 MS (y)1435 989 MS (s)1460 989 MS
+(t)1485 989 MS (e)1510 989 MS (m)1535 989 MS (e)1560 989 MS
+( )1585 989 MS
+( )235 1037 MS ( )260 1037 MS (v)285 1037 MS (o)310 1037 MS (i)335 1037 MS (d)360 1037 MS ( )385 1037 MS (P)410 1037 MS (r)435 1037 MS (i)460 1037 MS (n)485 1037 MS (t)510 1037 MS (R)535 1037 MS (e)560 1037 MS (s)585 1037 MS (u)610 1037 MS
+(l)635 1037 MS (t)660 1037 MS (\()685 1037 MS ( )710 1037 MS (N)735 1037 MS (P)760 1037 MS (s)785 1037 MS (o)810 1037 MS (l)835 1037 MS (v)860 1037 MS (e)885 1037 MS (r)910 1037 MS ( )935 1037 MS (*)960 1037 MS (s)985 1037 MS (o)1010 1037 MS
+(l)1035 1037 MS ( )1060 1037 MS (\))1085 1037 MS (;)1110 1037 MS
+( )1135 1037 MS
+( )235 1084 MS ( )260 1084 MS (/)285 1084 MS (/)310 1084 MS ( )335 1084 MS (R)360 1084 MS (e)385 1084 MS (s)410 1084 MS (o)435 1084 MS (l)460 1084 MS (u)485 1084 MS (t)510 1084 MS (i)535 1084 MS (o)560 1084 MS (n)585 1084 MS ( )610 1084 MS
+(d)635 1084 MS (u)660 1084 MS ( )685 1084 MS (s)710 1084 MS (y)735 1084 MS (s)760 1084 MS (t)785 1084 MS (e)810 1084 MS (m)835 1084 MS (e)860 1084 MS
+( )885 1084 MS
+( )235 1131 MS ( )260 1131 MS (E)285 1131 MS (n)310 1131 MS (g)335 1131 MS (i)360 1131 MS (n)385 1131 MS (e)410 1131 MS (s)435 1131 MS (:)460 1131 MS (:)485 1131 MS (P)510 1131 MS (V)535 1131 MS (e)560 1131 MS (c)585 1131 MS (_)610 1131 MS
+(p)635 1131 MS (t)660 1131 MS (r)685 1131 MS ( )710 1131 MS (L)735 1131 MS (S)760 1131 MS (o)785 1131 MS (l)810 1131 MS (v)835 1131 MS (e)860 1131 MS (\()885 1131 MS (E)910 1131 MS (n)935 1131 MS (g)960 1131 MS (i)985 1131 MS (n)1010 1131 MS
+(e)1035 1131 MS (s)1060 1131 MS (:)1085 1131 MS (:)1110 1131 MS (P)1135 1131 MS (C)1160 1131 MS (S)1185 1131 MS (R)1210 1131 MS (M)1235 1131 MS (a)1260 1131 MS (t)1285 1131 MS (_)1310 1131 MS (p)1335 1131 MS (t)1360 1131 MS (r)1385 1131 MS ( )1410 1131 MS
+(A)1435 1131 MS (,)1460 1131 MS ( )1485 1131 MS (E)1510 1131 MS (n)1535 1131 MS (g)1560 1131 MS (i)1585 1131 MS (n)1610 1131 MS (e)1635 1131 MS (s)1660 1131 MS (:)1685 1131 MS (:)1710 1131 MS (P)1735 1131 MS (V)1760 1131 MS (e)1785 1131 MS (c)1810 1131 MS
+(_)1835 1131 MS (p)1860 1131 MS (t)1885 1131 MS (r)1910 1131 MS ( )1935 1131 MS (b)1960 1131 MS (\))1985 1131 MS (;)2010 1131 MS
+( )2035 1131 MS
+( )235 1178 MS
+(})235 1225 MS (;)260 1225 MS
+( )285 1225 MS
+(#)235 1273 MS (e)260 1273 MS (n)285 1273 MS (d)310 1273 MS (i)335 1273 MS (f)360 1273 MS
+( )385 1273 MS
+( )235 1320 MS
+[50 0 0 -50 0 0]/Times-Roman MF
+( )235 1377 MS
+( )235 1435 MS
+showpage
+%%Page: 28 28
+14.449 827.879 translate 72 300 div dup neg scale
+0 0 transform .25 add round .25 sub exch .25 add round .25 sub exch itransform translate
+1 j
+1 setlinecap
+72 sl
+0.375 g
+n
+494 182 M
+494 155 472 133 445 133 c
+418 133 396 155 396 182 c
+396 209 418 231 445 231 c
+472 231 494 209 494 182 c
+cp
+CM 0.156 0.152 scale
+s
+SM
+71 sl
+n
+660 182 M
+660 155 638 133 611 133 c
+584 133 562 155 562 182 c
+562 209 584 231 611 231 c
+638 231 660 209 660 182 c
+cp
+CM 0.156 0.152 scale
+s
+SM
+n
+120 24 468 152 B
+1 g
+f
+1 sl
+n
+122 26 467 151 B
+cp
+s
+71 sl
+0.375 g
+n
+577 180 M
+577 153 555 131 528 131 c
+501 131 479 153 479 180 c
+479 206 501 228 528 228 c
+555 228 577 206 577 180 c
+cp
+gs
+1 g
+e
+gr
+CM 0.156 0.152 scale
+s
+SM
+n
+480 180 M
+575 180 L
+CM 0.156 0.152 scale
+s
+SM
+n
+34 18 562 187 B
+1 g
+f
+1 sl
+n
+36 20 561 186 B
+cp
+s
+n
+610 173 M
+591 173 L
+554 124 L
+579 126 L
+609 173 L
+610 173 L
+cp
+gs
+e
+gr
+s
+n
+448 170 M
+468 170 L
+504 122 L
+479 123 L
+449 170 L
+448 170 L
+cp
+gs
+e
+gr
+s
+0.375 g
+n
+473 140 M
+473 137 470 135 467 135 c
+464 135 462 137 462 140 c
+462 142 464 145 467 145 c
+470 145 473 142 473 140 c
+cp
+gs
+e
+gr
+s
+n
+593 139 M
+593 136 590 134 588 134 c
+585 134 583 136 583 139 c
+583 141 585 144 588 144 c
+590 144 593 141 593 139 c
+cp
+gs
+e
+gr
+s
+72 sl
+n
+665 137 M
+665 229 L
+CM 0.156 0.152 scale
+s
+SM
+[29 0 0 -29 0 0]/Times-Roman MF
+0 g
+( )676 243 MS
+[50 0 0 -50 0 0]/Times-Roman MF
+(D)400 289 MS (E)436 289 MS (N)467 289 MS ( )503 289 MS ( )516 289 MS (S)529 289 MS (a)557 289 MS (c)579 289 MS (l)601 289 MS (a)613 289 MS (y)636 289 MS
+( )660 289 MS
+( )1297 140 MS
+[38 0 0 -38 0 0]/Times-Roman MF
+(S)1785 129 MS (F)1806 129 MS (M)1827 129 MS (E)1861 129 MS (/)1883 129 MS (L)1894 129 MS (G)1916 129 MS (L)1943 129 MS (S)1965 129 MS (/)1986 129 MS (R)1997 129 MS (T)2022 129 MS (/)2045 129 MS (0)2056 129 MS (2)2075 129 MS
+(-)2094 129 MS
+(0)2106 129 MS (0)2125 129 MS (2)2144 129 MS
+( )2163 129 MS
+(D)1785 173 MS (a)1812 173 MS (t)1829 173 MS (e)1840 173 MS
+( )1856 173 MS
+(:)1866 173 MS
+( )1875 173 MS
+(3)1885 173 MS (0)1904 173 MS (/)1923 173 MS (0)1934 173 MS (5)1952 173 MS (/)1971 173 MS (2)1982 173 MS (0)2000 173 MS (0)2019 173 MS (2)2038 173 MS
+( )2057 173 MS
+n
+5 5 232 89 B
+f
+n
+5 5 232 89 B
+f
+n
+584 5 238 89 B
+f
+n
+5 5 823 89 B
+f
+n
+938 5 829 89 B
+f
+n
+5 5 1768 89 B
+f
+n
+436 5 1774 89 B
+f
+n
+5 5 2211 89 B
+f
+n
+5 5 2211 89 B
+f
+n
+5 256 232 95 B
+f
+n
+2 256 823 95 B
+f
+n
+2 256 1768 95 B
+f
+n
+5 256 2211 95 B
+f
+[50 0 0 -50 0 0]/Times-Roman MF
+(D)322 400 MS (M)358 400 MS (2)402 400 MS (S)427 400 MS (/)455 400 MS (S)469 400 MS (F)497 400 MS (M)524 400 MS (E)568 400 MS (/)599 400 MS (L)613 400 MS (G)643 400 MS (L)680 400 MS (S)710 400 MS
+( )738 400 MS
+[50 0 0 -50 0 0]/Times-Bold MF
+gs
+n
+241 53 1102 367 CB
+(R)1102 413 MS (A)1138 413 MS (P)1174 413 MS (P)1204 413 MS (O)1234 413 MS (R)1273 413 MS (T)1310 413 MS
+gr
+gs
+n
+150 53 1343 367 CB
+( )1343 413 MS (D)1356 413 MS (M)1392 413 MS (2)1440 413 MS (S)1465 413 MS
+gr
+[50 0 0 -50 0 0]/Times-Roman MF
+gs
+n
+24 52 1493 368 CB
+( )1493 413 MS
+gr
+[38 0 0 -38 0 0]/Times-Roman MF
+(P)1785 400 MS (a)1806 400 MS (g)1823 400 MS (e)1841 400 MS ( )1858 400 MS
+[50 0 0 -50 0 0]/Times-Roman MF
+(2)1868 400 MS (8)1893 400 MS
+(/)1918 400 MS
+(3)1932 400 MS (0)1957 400 MS
+[38 0 0 -38 0 0]/Times-Roman MF
+( )1982 400 MS
+n
+5 2 232 352 B
+f
+n
+2 2 823 352 B
+f
+n
+941 2 826 352 B
+f
+n
+2 2 1768 352 B
+f
+n
+5 2 2211 352 B
+f
+n
+5 67 232 355 B
+f
+n
+590 1 232 423 B
+f
+n
+2 67 823 355 B
+f
+n
+1 1 823 423 B
+f
+n
+942 1 825 423 B
+f
+n
+2 67 1768 355 B
+f
+n
+1 1 1768 423 B
+f
+n
+440 1 1770 423 B
+f
+n
+5 67 2211 355 B
+f
+n
+5 1 2211 423 B
+f
+[50 0 0 -50 0 0]/Times-Roman MF
+( )235 470 MS
+[33 0 0 -33 0 0]/Times-Roman MF
+/IsChar{exch/CharStrings get exch known}bd/MapCh{3 -1 roll/Encoding get 3 1\r
+roll put}bd/MapDegree{dup 16#b0 exch/degree IsChar{/degree}{/ring}ifelse MapCh}\r
+bd/MapBB{dup 16#a6 exch/brokenbar IsChar{/brokenbar}{/bar}ifelse MapCh}bd\r
+/reencode{findfont begin currentdict dup length dict begin{1 index/FID ne{def}\r
+{pop pop}ifelse}forall/FontName exch def dup length 0 ne{/Encoding Encoding 256\r
+array copy def 0 exch{dup type/nametype eq{Encoding 2 index 2 index put pop 1\r
+add}{exch pop}ifelse}forall}if pop currentdict dup end end/FontName get exch\r
+definefont dup MapDegree MapBB}bd/LATENC[0/grave/acute/circumflex/tilde/macron\r
+/breve/dotaccent/dieresis/ring/cedilla/hungarumlaut/ogonek/caron/dotlessi/fi/fl\r
+/Lslash/lslash/Zcaron/zcaron/minus/.notdef/.notdef/.notdef/.notdef/.notdef\r
+/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/space/exclam/quotedbl\r
+/numbersign/dollar/percent/ampersand/quotesingle/parenleft/parenright/asterisk\r
+/plus/comma/hyphen/period/slash/zero/one/two/three/four/five/six/seven/eight\r
+/nine/colon/semicolon/less/equal/greater/question/at/A/B/C/D/E/F/G/H/I/J/K/L/M\r
+/N/O/P/Q/R/S/T/U/V/W/X/Y/Z/bracketleft/backslash/bracketright/asciicircum\r
+/underscore/grave/a/b/c/d/e/f/g/h/i/j/k/l/m/n/o/p/q/r/s/t/u/v/w/x/y/z/braceleft\r
+/bar/braceright/asciitilde/.notdef/.notdef/.notdef/quotesinglbase/florin\r
+/quotedblbase/ellipsis/dagger/daggerdbl/circumflex/perthousand/Scaron\r
+/guilsinglleft/OE/.notdef/.notdef/.notdef/.notdef/quoteleft/quoteright\r
+/quotedblleft/quotedblright/bullet/endash/emdash/tilde/trademark/scaron\r
+/guilsinglright/oe/.notdef/.notdef/Ydieresis/.notdef/exclamdown/cent/sterling\r
+/currency/yen/brokenbar/section/dieresis/copyright/ordfeminine/guillemotleft\r
+/logicalnot/hyphen/registered/macron/degree/plusminus/twosuperior/threesuperior\r
+/acute/mu/paragraph/periodcentered/cedilla/onesuperior/ordmasculine\r
+/guillemotright/onequarter/onehalf/threequarters/questiondown/Agrave/Aacute\r
+/Acircumflex/Atilde/Adieresis/Aring/AE/Ccedilla/Egrave/Eacute/Ecircumflex\r
+/Edieresis/Igrave/Iacute/Icircumflex/Idieresis/Eth/Ntilde/Ograve/Oacute\r
+/Ocircumflex/Otilde/Odieresis/multiply/Oslash/Ugrave/Uacute/Ucircumflex\r
+/Udieresis/Yacute/Thorn/germandbls/agrave/aacute/acircumflex/atilde/adieresis\r
+/aring/ae/ccedilla/egrave/eacute/ecircumflex/edieresis/igrave/iacute\r
+/icircumflex/idieresis/eth/ntilde/ograve/oacute/ocircumflex/otilde/odieresis\r
+/divide/oslash/ugrave/uacute/ucircumflex/udieresis/yacute/thorn/ydieresis]def\r
+LATENC /_Times-Roman /Times-Roman reencode
+[33 0 0 -33 0 0]/_Times-Roman MF
+(L)242 3256 MS (e)262 3256 MS (s)277 3256 MS ( )289 3256 MS (i)298 3256 MS (n)307 3256 MS (f)324 3256 MS (o)335 3256 MS (r)351 3256 MS (m)363 3256 MS (a)388 3256 MS (t)403 3256 MS (i)412 3256 MS (o)422 3256 MS (n)439 3256 MS (s)456 3256 MS
+( )468 3256 MS (c)477 3256 MS (o)492 3256 MS (n)508 3256 MS (t)524 3256 MS (e)534 3256 MS (n)549 3256 MS (u)565 3256 MS (e)582 3256 MS (s)597 3256 MS ( )610 3256 MS (d)618 3256 MS (a)634 3256 MS (n)650 3256 MS (s)667 3256 MS ( )679 3256 MS
+(c)688 3256 MS (e)703 3256 MS ( )717 3256 MS (d)726 3256 MS (o)742 3256 MS (c)759 3256 MS (u)773 3256 MS (m)791 3256 MS (e)817 3256 MS (n)831 3256 MS (t)847 3256 MS ( )857 3256 MS (s)866 3256 MS (o)878 3256 MS (n)895 3256 MS (t)911 3256 MS
+( )921 3256 MS (r)929 3256 MS (\351)941 3256 MS (s)956 3256 MS (e)968 3256 MS (r)982 3256 MS (v)994 3256 MS (\351)1011 3256 MS (e)1026 3256 MS (s)1041 3256 MS ( )1053 3256 MS (a)1061 3256 MS (u)1076 3256 MS (x)1093 3256 MS ( )1109 3256 MS (d)1118 3256 MS
+(e)1135 3256 MS (s)1150 3256 MS (t)1162 3256 MS (i)1171 3256 MS (n)1181 3256 MS (a)1197 3256 MS (t)1212 3256 MS (a)1221 3256 MS (i)1236 3256 MS (r)1245 3256 MS (e)1257 3256 MS (s)1272 3256 MS ( )1284 3256 MS (n)1293 3256 MS (o)1309 3256 MS (m)1326 3256 MS
+(m)1352 3256 MS (\351)1378 3256 MS (m)1393 3256 MS (e)1419 3256 MS (n)1433 3256 MS (t)1450 3256 MS ( )1459 3256 MS (d)1468 3256 MS (\351)1484 3256 MS (s)1499 3256 MS (i)1512 3256 MS (g)1521 3256 MS
+(n)1538 3256 MS (\351)1555 3256 MS (s)1570 3256 MS ( )1582 3256 MS (e)1591 3256 MS (t)1605 3256 MS ( )1615 3256 MS (n)1623 3256 MS (e)1640 3256 MS ( )1654 3256 MS (p)1663 3256 MS (e)1680 3256 MS (u)1694 3256 MS (v)1711 3256 MS (e)1728 3256 MS (n)1743 3256 MS
+(t)1759 3256 MS ( )1768 3256 MS (r)1776 3256 MS (e)1788 3256 MS (c)1803 3256 MS (e)1818 3256 MS (v)1832 3256 MS (o)1849 3256 MS (i)1865 3256 MS (r)1874 3256 MS ( )1886 3256 MS (a)1894 3256 MS (u)1909 3256 MS (c)1926 3256 MS (u)1940 3256 MS (n)1957 3256 MS
+(e)1974 3256 MS ( )1988 3256 MS (d)1997 3256 MS (i)2013 3256 MS (f)2023 3256 MS (f)2034 3256 MS (u)2044 3256 MS (s)2062 3256 MS (i)2074 3256 MS (o)2084 3256 MS (n)2101 3256 MS
+( )2117 3256 MS
+(s)928 3294 MS (a)940 3294 MS (n)955 3294 MS (s)972 3294 MS ( )985 3294 MS (l)993 3294 MS (\222)1002 3294 MS (a)1013 3294 MS (u)1028 3294 MS (t)1045 3294 MS (o)1054 3294 MS (r)1071 3294 MS (i)1082 3294 MS (s)1092 3294 MS (a)1104 3294 MS (t)1119 3294 MS
+(i)1128 3294 MS (o)1138 3294 MS (n)1154 3294 MS ( )1171 3294 MS (e)1180 3294 MS (x)1194 3294 MS (p)1211 3294 MS (r)1227 3294 MS (e)1239 3294 MS (s)1254 3294 MS (s)1267 3294 MS (e)1280 3294 MS ( )1294 3294 MS (d)1303 3294 MS (u)1319 3294 MS ( )1336 3294 MS
+(D)1344 3294 MS (M)1368 3294 MS (2)1397 3294 MS (S)1414 3294 MS
+[50 0 0 -50 0 0]/Times-Roman MF
+( )1432 3294 MS
+[50 0 0 -50 0 0]/Helvetica-BoldOblique MF
+(9)310 577 MS (.)338 577 MS (4)352 577 MS
+( )380 577 MS
+(C)430 577 MS (a)466 577 MS (s)494 577 MS ( )522 577 MS (t)536 577 MS (e)553 577 MS (s)581 577 MS (t)609 577 MS
+( )625 577 MS
+[50 0 0 -50 0 0]/Times-Roman MF
+( )235 647 MS
+LATENC /_Times-Roman /Times-Roman reencode
+[50 0 0 -50 0 0]/_Times-Roman MF
+(O)348 705 MS (n)384 705 MS ( )408 705 MS (i)428 705 MS (n)441 705 MS (i)467 705 MS (t)479 705 MS (i)495 705 MS (a)508 705 MS (l)531 705 MS (i)545 705 MS (s)558 705 MS (e)577 705 MS ( )599 705 MS (l)619 705 MS (\222)632 705 MS
+(e)649 705 MS (n)672 705 MS (v)697 705 MS (i)722 705 MS (r)735 705 MS (o)752 705 MS (n)778 705 MS (n)803 705 MS (e)827 705 MS (m)850 705 MS (e)888 705 MS (n)911 705 MS (t)935 705 MS ( )950 705 MS (S)969 705 MS (A)997 705 MS
+(L)1032 705 MS (O)1062 705 MS (M)1099 705 MS (E)1143 705 MS ( )1174 705 MS (a)1193 705 MS
+(v)1215 705 MS (e)1240 705 MS (c)1262 705 MS ( )1284 705 MS (l)1304 705 MS (a)1317 705 MS ( )1339 705 MS (c)1359 705 MS (o)1381 705 MS (m)1407 705 MS (m)1445 705 MS (a)1483 705 MS (n)1506 705 MS (d)1530 705 MS (e)1555 705 MS ( )1577 705 MS
+(r)1596 705 MS (u)1613 705 MS (n)1639 705 MS (S)1663 705 MS (e)1691 705 MS (s)1713 705 MS (s)1733 705 MS (i)1753 705 MS (o)1765 705 MS (n)1792 705 MS (.)1816 705 MS ( )1829 705 MS (P)1848 705 MS (u)1876 705 MS (i)1902 705 MS (s)1914 705 MS
+( )1933 705 MS (l)1953 705 MS (e)1966 705 MS (s)1989 705 MS ( )2008 705 MS (d)2027 705 MS (e)2052 705 MS (u)2074 705 MS (x)2100 705 MS ( )2125 705 MS
+(c)235 762 MS (o)257 762 MS (n)283 762 MS (t)307 762 MS (a)322 762 MS (i)344 762 MS (n)357 762 MS (e)381 762 MS (r)403 762 MS ( )420 762 MS (p)435 762 MS (a)460 762 MS (r)482 762 MS (a)499 762 MS (l)522 762 MS (l)536 762 MS
+(\350)549 762 MS (l)572 762 MS (e)585 762 MS (s)607 762 MS ( )626 762 MS (s)641 762 MS (o)660 762 MS (n)686 762 MS (t)710 762 MS ( )725 762 MS (l)741 762 MS (a)753 762 MS (n)776 762 MS (c)800 762 MS (\351)823 762 MS (s)845 762 MS
+( )864 762 MS (s)879 762 MS (u)898 762 MS (r)923 762 MS ( )940 762 MS (2)955 762 MS ( )980 762 MS (e)995 762 MS (t)1017 762 MS ( )1032 762 MS (3)1047 762 MS ( )1072 762 MS (m)1087 762 MS (a)1124 762 MS (c)1146 762 MS (h)1169 762 MS
+(i)1194 762 MS (n)1207 762 MS (e)1232 762 MS (s)1255 762 MS ( )1274 762 MS (d)1289 762 MS (e)1314 762 MS ( )1336 762 MS (t)1351 762 MS (y)1366 762 MS (p)1389 762 MS (e)1414 762 MS ( )1436 762 MS (P)1451 762 MS (C)1479 762 MS (/)1512 762 MS
+(l)1527 762 MS (i)1541 762 MS (n)1554 762 MS (u)1579 762 MS (x)1605 762 MS ( )1629 762 MS (r)1644 762 MS (e)1661 762 MS (s)1683 762 MS (p)1702 762 MS (e)1727 762 MS (c)1749 762 MS (t)1771 762 MS (i)1787 762 MS (v)1800 762 MS (e)1824 762 MS
+(m)1847 762 MS (e)1885 762 MS (n)1908 762 MS (t)1932 762 MS (.)1947 762 MS ( )1960 762 MS (E)1975 762 MS (n)2006 762 MS (s)2030 762 MS (u)2049 762 MS (i)2075 762 MS (t)2087 762 MS (e)2102 762 MS ( )2125 762 MS
+(o)235 820 MS (n)261 820 MS ( )285 820 MS (a)300 820 MS (c)322 820 MS (t)344 820 MS (i)359 820 MS (v)372 820 MS (e)396 820 MS ( )418 820 MS (l)434 820 MS (\222)447 820 MS (I)463 820 MS (n)481 820 MS (t)505 820 MS (e)520 820 MS
+(r)542 820 MS (f)560 820 MS (a)575 820 MS (c)597 820 MS (e)619 820 MS ( )641 820 MS (H)656 820 MS (o)692 820 MS (m)719 820 MS (m)757 820 MS (e)795 820 MS (/)817 820 MS (M)832 820 MS (a)876 820 MS (c)898 820 MS (h)921 820 MS
+(i)946 820 MS (n)959 820 MS (e)984 820 MS ( )1006 820 MS (d)1021 820 MS (e)1046 820 MS ( )1068 820 MS (S)1083 820 MS (A)1112 820 MS (L)1148 820 MS (O)1178 820 MS (M)1215 820 MS (E)1259 820 MS ( )1290 820 MS (a)1305 820 MS (v)1327 820 MS
+(e)1351 820 MS (c)1373 820 MS ( )1395 820 MS (l)1411 820 MS (a)1424 820 MS ( )1446 820 MS (c)1462 820 MS (o)1484 820 MS (m)1511 820 MS (m)1549 820 MS (a)1587 820 MS (n)1610 820 MS (d)1634 820 MS (e)1659 820 MS ( )1681 820 MS (r)1696 820 MS
+(u)1713 820 MS (n)1738 820 MS (L)1763 820 MS (o)1793 820 MS (a)1819 820 MS (d)1841 820 MS (e)1866 820 MS (r)1888 820 MS (.)1905 820 MS ( )1918 820 MS (D)1933 820 MS (e)1969 820 MS (p)1991 820 MS (u)2016 820 MS (i)2042 820 MS (s)2054 820 MS
+( )2073 820 MS (l)2089 820 MS (a)2102 820 MS ( )2125 820 MS
+(f)235 877 MS (e)251 877 MS (n)274 877 MS (\352)298 877 MS (t)320 877 MS (r)335 877 MS (e)352 877 MS ( )374 877 MS (d)398 877 MS (e)423 877 MS ( )445 877 MS (l)470 877 MS (\222)483 877 MS (i)500 877 MS (n)513 877 MS (t)537 877 MS
+(e)552 877 MS (r)574 877 MS (p)591 877 MS (r)616 877 MS (\351)633 877 MS (t)655 877 MS (e)670 877 MS (u)692 877 MS (r)717 877 MS ( )734 877 MS (d)758 877 MS (e)783 877 MS ( )805 877 MS (c)829 877 MS (o)851 877 MS (m)877 877 MS
+(m)915 877 MS (a)953 877 MS (n)976 877 MS (d)1000 877 MS
+(e)1025 877 MS (s)1048 877 MS ( )1067 877 MS (p)1091 877 MS (y)1117 877 MS (t)1140 877 MS (h)1156 877 MS (o)1180 877 MS (n)1206 877 MS ( )1230 877 MS (\()1255 877 MS (T)1272 877 MS (U)1303 877 MS (I)1339 877 MS (\))1356 877 MS (,)1372 877 MS
+( )1385 877 MS (o)1408 877 MS (n)1434 877 MS ( )1458 877 MS (d)1482 877 MS (e)1507 877 MS (m)1530 877 MS (a)1568 877 MS (n)1591 877 MS (d)1615 877 MS (e)1640 877 MS ( )1662 877 MS (a)1687 877 MS (u)1709 877 MS ( )1734 877 MS (p)1758 877 MS
+(r)1783 877 MS (e)1800 877 MS (m)1823 877 MS (i)1861 877 MS (e)1874 877 MS (r)1896 877 MS ( )1914 877 MS (c)1938 877 MS (o)1960 877 MS (n)1986 877 MS (t)2010 877 MS (a)2025 877 MS (i)2048 877 MS (n)2061 877 MS (e)2085 877 MS (r)2107 877 MS
+( )2125 877 MS
+(d)235 935 MS (\222)260 935 MS (i)277 935 MS (n)290 935 MS (s)315 935 MS (t)334 935 MS (a)349 935 MS (n)371 935 MS (c)395 935 MS (i)418 935 MS (e)431 935 MS (r)453 935 MS ( )470 935 MS (u)493 935 MS (n)519 935 MS ( )543 935 MS
+(c)566 935 MS (o)588 935 MS (m)615 935 MS (p)652 935 MS (o)677 935 MS (s)703 935 MS (a)722 935 MS (n)745 935 MS (t)769 935 MS ( )784 935 MS (m)807 935 MS (a)845 935 MS (t)867 935 MS (r)882 935 MS (i)899 935 MS (c)911 935 MS
+(e)933 935 MS ( )955 935 MS (e)979 935 MS (t)1001 935 MS ( )1016 935 MS (d)1039 935 MS (e)1064 935 MS (u)1086 935 MS (x)1111 935 MS ( )1135 935 MS (c)1158 935 MS (o)1180 935 MS (m)1207 935 MS (p)1245 935 MS (o)1270 935 MS (s)1296 935 MS
+(a)1315 935 MS (n)1337 935 MS (t)1361 935 MS (s)1376 935 MS ( )1395 935 MS (v)1418 935 MS (e)1442 935 MS (c)1464 935 MS (t)1486 935 MS (e)1501 935 MS (u)1523 935 MS (r)1548 935 MS (,)1565 935 MS ( )1578 935 MS (p)1601 935 MS (u)1626 935 MS
+(i)1651 935 MS (s)1664 935 MS ( )1683 935 MS (a)1706 935 MS (u)1728 935 MS ( )1753 935 MS (s)1777 935 MS (e)1796 935 MS (c)1818 935 MS (o)1840 935 MS (n)1866 935 MS (d)1890 935 MS ( )1915 935 MS (c)1938 935 MS (o)1960 935 MS (n)1986 935 MS
+(t)2010 935 MS (a)2025 935 MS (i)2048 935 MS (n)2061 935 MS (e)2085 935 MS (r)2107 935 MS ( )2125 935 MS
+(d)235 992 MS (\222)260 992 MS (i)277 992 MS (n)290 992 MS (s)315 992 MS (t)334 992 MS (a)349 992 MS (n)371 992 MS (c)395 992 MS (i)418 992 MS (e)431 992 MS (r)453 992 MS ( )470 992 MS (u)491 992 MS (n)517 992 MS ( )541 992 MS
+(c)562 992 MS (o)584 992 MS (m)611 992 MS (p)648 992 MS (o)673 992 MS (s)699 992 MS (a)718 992 MS (n)740 992 MS (t)764 992 MS ( )779 992 MS (s)800 992 MS (o)819 992 MS (l)845 992 MS (v)858 992 MS (e)883 992 MS (u)905 992 MS
+(r)930 992 MS (.)947 992 MS ( )960 992 MS (O)981 992 MS (n)1017 992 MS ( )1041 992 MS (r)1062 992 MS (\351)1079 992 MS (c)1101 992 MS (u)1123 992 MS (p)1148 992 MS (\350)1173 992 MS (r)1195 992 MS (e)1212 992 MS ( )1234 992 MS (a)1256 992 MS
+(i)1279 992 MS (n)1292 992 MS (s)1317 992 MS (i)1337 992 MS ( )1349 992 MS (l)1371 992 MS (a)1384 992 MS ( )1406 992 MS (r)1427 992 MS (\351)1444 992 MS (f)1467 992 MS (\351)1483 992 MS (r)1505 992 MS (e)1522 992 MS (n)1545 992 MS (c)1569 992 MS
+(e)1591 992 MS ( )1613 992 MS (C)1634 992 MS (O)1667 992 MS (R)1704 992 MS (B)1737 992 MS (A)1771 992 MS ( )1806 992 MS (d)1827 992 MS (e)1852 992 MS ( )1874 992 MS (c)1895 992 MS (h)1918 992 MS (a)1942 992 MS (c)1965 992 MS (u)1987 992 MS
+(n)2013 992 MS ( )2037 992 MS (d)2058 992 MS (e)2083 992 MS (s)2105 992 MS ( )2125 992 MS
+(c)235 1050 MS (o)257 1050 MS (m)283 1050 MS (p)320 1050 MS (o)345 1050 MS (s)371 1050 MS (a)390 1050 MS (n)413 1050 MS (t)437 1050 MS (s)452 1050 MS ( )471 1050 MS (p)484 1050 MS (a)509 1050 MS (r)531 1050 MS (a)548 1050 MS (l)570 1050 MS
+(l)583 1050 MS (\350)596 1050 MS (l)619 1050 MS (e)632 1050 MS (s)655 1050 MS (.)674 1050 MS ( )687 1050 MS (O)700 1050 MS (n)736 1050 MS ( )760 1050 MS (d)773 1050 MS (e)798 1050 MS (m)821 1050 MS (a)859 1050 MS (n)882 1050 MS (d)906 1050 MS
+(e)931 1050 MS ( )953 1050 MS
+(a)966 1050 MS (u)988 1050 MS ( )1013 1050 MS (c)1026 1050 MS (o)1048 1050 MS (m)1075 1050 MS (p)1112 1050 MS (o)1137 1050 MS (s)1163 1050 MS (a)1182 1050 MS (n)1204 1050 MS (t)1228 1050 MS ( )1243 1050 MS (m)1256 1050 MS (a)1294 1050 MS (t)1316 1050 MS
+(r)1331 1050 MS (i)1349 1050 MS (c)1361 1050 MS (e)1383 1050 MS ( )1405 1050 MS (d)1418 1050 MS (e)1443 1050 MS ( )1465 1050 MS (c)1478 1050 MS (h)1500 1050 MS (a)1525 1050 MS (r)1547 1050 MS (g)1564 1050 MS (e)1589 1050 MS (r)1611 1050 MS ( )1628 1050 MS
+(e)1641 1050 MS (n)1663 1050 MS ( )1687 1050 MS (m)1701 1050 MS (\351)1738 1050 MS (m)1761 1050 MS (o)1798 1050 MS (i)1825 1050 MS (r)1838 1050 MS (e)1855 1050 MS ( )1877 1050 MS (u)1890 1050 MS (n)1915 1050 MS (e)1940 1050 MS ( )1962 1050 MS (m)1976 1050 MS
+(a)2013 1050 MS (t)2035 1050 MS (r)2050 1050 MS (i)2068 1050 MS (c)2080 1050 MS (e)2102 1050 MS ( )2125 1050 MS
+(d)235 1107 MS (i)261 1107 MS (s)273 1107 MS (t)292 1107 MS (r)307 1107 MS (i)325 1107 MS (b)338 1107 MS (u)362 1107 MS (\351)387 1107 MS (e)409 1107 MS ( )431 1107 MS (d)445 1107 MS (e)470 1107 MS (p)492 1107 MS (u)517 1107 MS (i)543 1107 MS
+(s)556 1107 MS ( )576 1107 MS (u)590 1107 MS (n)616 1107 MS ( )640 1107 MS (f)655 1107 MS (i)672 1107 MS (c)685 1107 MS (h)708 1107 MS (i)733 1107 MS (e)746 1107 MS (r)768 1107 MS (,)785 1107 MS ( )798 1107 MS (a)812 1107 MS (u)834 1107 MS
+( )859 1107 MS (p)873 1107 MS (r)898 1107 MS (e)915 1107 MS (m)938 1107 MS (i)976 1107 MS (e)989 1107 MS (r)1011 1107 MS ( )1028 1107 MS (c)1042 1107 MS (o)1064 1107 MS (m)1091 1107 MS (p)1128 1107 MS (o)1153 1107 MS (s)1179 1107 MS (a)1198 1107 MS
+(n)1221 1107 MS (t)1246 1107 MS ( )1261 1107 MS (v)1275 1107 MS (e)1299 1107 MS (c)1321 1107 MS (t)1343 1107 MS (e)1358 1107 MS (u)1380 1107 MS (r)1405 1107 MS ( )1422 1107 MS (d)1436 1107 MS (e)1461 1107 MS ( )1483 1107 MS (c)1497 1107 MS (h)1519 1107 MS
+(a)1543 1107 MS (r)1565 1107 MS (g)1582 1107 MS (e)1607 1107 MS (r)1629 1107 MS ( )1646 1107 MS (e)1660 1107 MS (n)1683 1107 MS ( )1707 1107 MS (m)1722 1107 MS (\351)1760 1107 MS (m)1783 1107 MS (o)1820 1107 MS (i)1847 1107 MS (r)1859 1107 MS (e)1877 1107 MS
+( )1899 1107 MS (u)1913 1107 MS (n)1939 1107 MS ( )1963 1107 MS (v)1978 1107 MS (e)2002 1107 MS (c)2024 1107 MS (t)2046 1107 MS (e)2061 1107 MS (u)2083 1107 MS (r)2108 1107 MS ( )2125 1107 MS
+(d)235 1165 MS (i)261 1165 MS (s)273 1165 MS (t)292 1165 MS (r)307 1165 MS (i)325 1165 MS (b)338 1165 MS (u)362 1165 MS (\351)387 1165 MS ( )409 1165 MS (d)435 1165 MS (e)460 1165 MS (p)482 1165 MS (u)507 1165 MS (i)533 1165 MS (s)546 1165 MS
+( )566 1165 MS (u)592 1165 MS (n)618 1165 MS ( )642 1165 MS (f)669 1165 MS (i)686 1165 MS (c)699 1165 MS (h)722 1165 MS (i)747 1165 MS (e)760 1165 MS (r)782 1165 MS (.)799 1165 MS ( )812 1165 MS (O)838 1165 MS (n)875 1165 MS ( )899 1165 MS
+(r)925 1165 MS (\351)942 1165 MS (c)964 1165 MS (u)986 1165 MS (p)1011 1165 MS (\350)1036 1165 MS (r)1058 1165 MS (e)1075 1165 MS ( )1097 1165 MS (a)1124 1165 MS (i)1147 1165 MS (n)1160 1165 MS (s)1185 1165 MS (i)1205 1165 MS ( )1218 1165 MS (l)1245 1165 MS
+(a)1258 1165 MS ( )1280 1165 MS (r)1306 1165 MS (\351)1323 1165 MS (f)1346 1165 MS (\351)1362 1165 MS (r)1384 1165 MS (e)1401 1165 MS (n)1424 1165 MS (c)1448 1165 MS (e)1470 1165 MS ( )1493 1165 MS (C)1519 1165 MS (O)1552 1165 MS (R)1588 1165 MS (B)1622 1165 MS
+(A)1656 1165 MS ( )1691 1165 MS (d)1717 1165 MS (e)1742 1165 MS ( )1765 1165 MS (c)1791 1165 MS (e)1813 1165 MS (s)1835 1165 MS ( )1855 1165 MS (d)1881 1165 MS (e)1906 1165 MS (u)1928 1165 MS (x)1954 1165 MS ( )1978 1165 MS (o)2004 1165 MS (b)2030 1165 MS
+(j)2055 1165 MS (e)2068 1165 MS (t)2090 1165 MS (s)2105 1165 MS ( )2125 1165 MS
+(p)235 1222 MS (a)260 1222 MS (r)282 1222 MS (a)299 1222 MS (l)322 1222 MS (l)335 1222 MS (\350)348 1222 MS (l)371 1222 MS (e)384 1222 MS (s)407 1222 MS (.)426 1222 MS ( )439 1222 MS (O)456 1222 MS (n)492 1222 MS ( )516 1222 MS (p)533 1222 MS
+(e)558 1222 MS (u)580 1222 MS (t)605 1222 MS ( )620 1222 MS (a)637 1222 MS (l)660 1222 MS (o)672 1222 MS (r)698 1222 MS
+(s)715 1222 MS ( )734 1222 MS (a)751 1222 MS (c)773 1222 MS (t)795 1222 MS (i)810 1222 MS (v)823 1222 MS (e)847 1222 MS (r)869 1222 MS ( )886 1222 MS (l)904 1222 MS (e)917 1222 MS ( )939 1222 MS (s)956 1222 MS (e)975 1222 MS (r)997 1222 MS
+(v)1015 1222 MS (i)1040 1222 MS (c)1053 1222 MS (e)1075 1222 MS ( )1097 1222 MS (S)1114 1222 MS (o)1142 1222 MS (l)1169 1222 MS (v)1182 1222 MS (e)1206 1222 MS (\()1228 1222 MS (\))1246 1222 MS ( )1263 1222 MS (d)1280 1222 MS (u)1305 1222 MS ( )1330 1222 MS
+(c)1347 1222 MS (o)1369 1222 MS (m)1395 1222 MS (p)1432 1222 MS (o)1457 1222 MS (s)1483 1222 MS (a)1502 1222 MS (n)1524 1222 MS (t)1548 1222 MS ( )1563 1222 MS (s)1580 1222 MS (o)1599 1222 MS (l)1625 1222 MS (v)1638 1222 MS (e)1662 1222 MS (u)1684 1222 MS
+(r)1709 1222 MS ( )1726 1222 MS (s)1743 1222 MS (i)1763 1222 MS (t)1775 1222 MS (u)1790 1222 MS (\351)1815 1222 MS ( )1837 1222 MS (s)1855 1222 MS (u)1874 1222 MS (r)1899 1222 MS ( )1916 1222 MS (l)1934 1222 MS (e)1946 1222 MS ( )1968 1222 MS (s)1986 1222 MS
+(e)2005 1222 MS (c)2027 1222 MS (o)2049 1222 MS (n)2075 1222 MS (d)2099 1222 MS ( )2125 1222 MS
+(c)235 1280 MS (o)257 1280 MS (n)283 1280 MS (t)307 1280 MS (a)322 1280 MS (i)344 1280 MS (n)357 1280 MS (e)381 1280 MS (r)403 1280 MS ( )420 1280 MS (p)433 1280 MS (a)458 1280 MS (r)480 1280 MS (a)497 1280 MS (l)520 1280 MS (l)533 1280 MS
+(\350)546 1280 MS (l)570 1280 MS (e)583 1280 MS ( )605 1280 MS (e)618 1280 MS (n)641 1280 MS ( )665 1280 MS (l)679 1280 MS (u)691 1280 MS (i)717 1280 MS ( )730 1280 MS (f)744 1280 MS (o)759 1280 MS (u)785 1280 MS (r)810 1280 MS (n)827 1280 MS
+(i)852 1280 MS (s)865 1280 MS (s)885 1280 MS (a)904 1280 MS (n)927 1280 MS (t)951 1280 MS ( )966 1280 MS (l)979 1280 MS (e)991 1280 MS (s)1014 1280 MS ( )1033 1280 MS (r)1046 1280 MS (\351)1063 1280 MS (f)1086 1280 MS (\351)1101 1280 MS (r)1123 1280 MS
+(e)1140 1280 MS (n)1163 1280 MS (c)1187 1280 MS (e)1209 1280 MS (s)1232 1280 MS ( )1252 1280 MS (C)1265 1280 MS (O)1298 1280 MS (R)1334 1280 MS (B)1367 1280 MS (A)1401 1280 MS ( )1436 1280 MS (d)1449 1280 MS (e)1474 1280 MS (s)1496 1280 MS ( )1515 1280 MS
+(d)1528 1280 MS (e)1553 1280 MS (u)1575 1280 MS (x)1601 1280 MS ( )1625 1280 MS (o)1638 1280 MS (b)1664 1280 MS (j)1689 1280 MS (e)1702 1280 MS (t)1724 1280 MS (s)1739 1280 MS ( )1758 1280 MS (p)1771 1280 MS (a)1796 1280 MS (r)1818 1280 MS (a)1835 1280 MS
+(l)1858 1280 MS (l)1871 1280 MS (\350)1884 1280 MS (l)1907 1280 MS (e)1920 1280 MS (s)1942 1280 MS ( )1961 1280 MS (m)1975 1280 MS (a)2013 1280 MS (t)2035 1280 MS (r)2050 1280 MS (i)2067 1280 MS (c)2080 1280 MS (e)2102 1280 MS ( )2125 1280 MS
+(A)235 1337 MS ( )270 1337 MS (e)284 1337 MS (t)306 1337 MS ( )321 1337 MS (v)335 1337 MS (e)359 1337 MS (c)381 1337 MS (t)403 1337 MS (e)418 1337 MS (u)440 1337 MS (r)465 1337 MS ( )482 1337 MS (s)496 1337 MS (e)515 1337 MS (c)537 1337 MS
+(o)559 1337 MS (n)585 1337 MS (d)609 1337 MS ( )634 1337 MS (m)648 1337 MS (e)685 1337 MS (m)708 1337 MS (b)746 1337 MS (r)771 1337 MS (e)788 1337 MS ( )810 1337 MS (b)825 1337 MS (.)849 1337 MS ( )862 1337 MS (L)876 1337 MS (e)906 1337 MS
+(s)928 1337 MS ( )947 1337 MS (d)961 1337 MS (o)986 1337 MS (n)1012 1337 MS (n)1036 1337 MS (\351)1061 1337 MS (e)1083 1337 MS (s)1105 1337 MS ( )1124 1337 MS (t)1138 1337 MS (r)1153 1337 MS (a)1170 1337 MS (n)1192 1337 MS (s)1216 1337 MS (i)1236 1337 MS
+(t)1250 1337 MS (e)1265 1337 MS (n)1287 1337 MS (t)1311 1337 MS ( )1326 1337 MS (a)1340 1337 MS (l)1362 1337 MS (o)1374 1337 MS (r)1400 1337 MS (s)1417 1337 MS ( )1436 1337 MS (v)1450 1337 MS (i)1475 1337 MS (a)1487 1337 MS ( )1509 1337 MS (l)1524 1337 MS
+(e)1537 1337 MS ( )1559 1337 MS (r)1573 1337 MS (\351)1590 1337 MS (s)1612 1337 MS (e)1631 1337 MS (a)1653 1337 MS (u)1675 1337 MS ( )1700 1337 MS (d)1714 1337 MS (e)1739 1337 MS ( )1761 1337 MS (m)1776 1337 MS (a)1813 1337 MS (n)1836 1337 MS (i)1861 1337 MS
+(\350)1874 1337 MS (r)1896 1337 MS (e)1913 1337 MS ( )1935 1337 MS (o)1949 1337 MS (p)1975 1337 MS (t)2000 1337 MS (i)2015 1337 MS (m)2028 1337 MS (a)2066 1337 MS (l)2089 1337 MS
+(e)2102 1337 MS ( )2125 1337 MS
+(t)235 1395 MS (o)249 1395 MS (u)275 1395 MS (t)299 1395 MS ( )314 1395 MS (e)329 1395 MS (n)351 1395 MS ( )375 1395 MS (s)390 1395 MS (e)409 1395 MS ( )432 1395 MS (r)447 1395 MS (e)464 1395 MS (d)486 1395 MS (i)512 1395 MS (s)525 1395 MS
+(t)544 1395 MS (r)559 1395 MS (i)576 1395 MS (b)589 1395 MS (u)613 1395 MS (a)639 1395 MS (n)662 1395 MS (t)686 1395 MS ( )701 1395 MS (d)716 1395 MS (e)741 1395 MS (p)763 1395 MS (u)788 1395 MS (i)814 1395 MS (s)826 1395 MS ( )846 1395 MS
+(d)861 1395 MS (e)886 1395 MS (u)908 1395 MS (x)934 1395 MS ( )958 1395 MS (p)973 1395 MS (r)998 1395 MS (o)1015 1395 MS (c)1041 1395 MS (e)1063 1395 MS (s)1085 1395 MS (s)1104 1395 MS (e)1123 1395 MS (u)1145 1395 MS (r)1170 1395 MS (s)1188 1395 MS
+( )1207 1395 MS (v)1223 1395 MS (e)1248 1395 MS (r)1270 1395 MS (s)1287 1395 MS ( )1306 1395 MS (t)1321 1395 MS (r)1336 1395 MS (o)1352 1395 MS (i)1378 1395 MS (s)1391 1395 MS ( )1410 1395 MS (p)1425 1395 MS (r)1450 1395 MS (o)1467 1395 MS (c)1493 1395 MS
+(e)1515 1395 MS (s)1537 1395 MS (s)1556 1395 MS (e)1575 1395 MS (u)1597 1395 MS (r)1622 1395 MS (s)1639 1395 MS (.)1658 1395 MS ( )1671 1395 MS (L)1687 1395 MS (e)1717 1395 MS ( )1739 1395 MS (s)1755 1395 MS (y)1775 1395 MS (s)1799 1395 MS (t)1818 1395 MS
+(\350)1833 1395 MS (m)1856 1395 MS (e)1893 1395 MS ( )1916 1395 MS (e)1931 1395 MS (s)1953 1395 MS (t)1972 1395 MS ( )1987 1395 MS (r)2002 1395 MS (\351)2019 1395 MS (s)2041 1395 MS (o)2060 1395 MS (l)2087 1395 MS (u)2099 1395 MS ( )2125 1395 MS
+(e)235 1452 MS (n)257 1452 MS ( )281 1452 MS (p)302 1452 MS (a)328 1452 MS (r)350 1452 MS (a)367 1452 MS (l)390 1452 MS (l)403 1452 MS (\350)416 1452 MS (l)439 1452 MS (e)452 1452 MS (.)474 1452 MS ( )487 1452 MS (O)508 1452 MS (n)545 1452 MS
+( )570 1452 MS (r)591 1452 MS (\351)608 1452 MS (c)630 1452 MS (u)652 1452 MS (p)677 1452 MS (\350)702 1452 MS (r)724 1452 MS (e)741 1452 MS ( )763 1452 MS (l)785 1452 MS (a)798 1452 MS ( )820 1452 MS (r)841 1452 MS (\351)858 1452 MS (f)881 1452 MS
+(\351)897 1452 MS (r)919 1452 MS (e)936 1452 MS (n)959 1452 MS (c)983 1452 MS (e)1005 1452 MS ( )1027 1452 MS (C)1049 1452 MS (O)1082 1452 MS (R)1118 1452 MS (B)1151 1452 MS (A)1185 1452 MS ( )1221 1452 MS (d)1243 1452 MS (e)1268 1452 MS ( )1290 1452 MS
+(l)1312 1452 MS (\222)1325 1452 MS (o)1341 1452 MS (b)1367 1452 MS (j)1392 1452 MS (e)1405 1452 MS (t)1427 1452 MS ( )1442 1452 MS (v)1463 1452 MS (e)1487 1452 MS (c)1509 1452 MS (t)1531 1452 MS (e)1546 1452 MS (u)1568 1452 MS (r)1593 1452 MS ( )1610 1452 MS
+(s)1631 1452 MS (o)1650 1452 MS (l)1677 1452 MS (u)1689 1452 MS (t)1714 1452 MS (i)1730 1452 MS (o)1742 1452 MS (n)1768 1452 MS ( )1792 1452 MS (p)1813 1452 MS (a)1838 1452 MS (r)1860 1452 MS (a)1877 1452 MS (l)1900 1452 MS (l)1914 1452 MS (\350)1927 1452 MS
+(l)1950 1452 MS (e)1963 1452 MS (.)1985 1452 MS ( )1998 1452 MS (C)2019 1452 MS (e)2052 1452 MS (t)2074 1452 MS (t)2089 1452 MS (e)2104 1452 MS ( )2125 1452 MS
+(r)235 1510 MS (\351)252 1510 MS (f)274 1510 MS (\351)290 1510 MS (r)312 1510 MS (e)329 1510 MS (n)352 1510 MS (c)376 1510 MS (e)398 1510 MS ( )420 1510 MS (C)435 1510 MS (O)468 1510 MS (R)505 1510 MS (B)538 1510 MS (A)572 1510 MS ( )607 1510 MS
+(e)622 1510 MS (s)645 1510 MS (t)664 1510 MS ( )679 1510 MS (f)695 1510 MS (o)710 1510 MS (u)736 1510 MS (r)761 1510 MS (n)778 1510 MS (i)803 1510 MS (e)815 1510 MS ( )837 1510 MS (a)853 1510 MS (u)875 1510 MS ( )900 1510 MS (s)915 1510 MS
+(e)934 1510 MS (c)956 1510 MS (o)978 1510 MS (n)1004 1510 MS (d)1028 1510 MS ( )1054 1510 MS (c)1069 1510 MS (o)1091 1510 MS (m)1118 1510 MS (p)1155 1510 MS (o)1180 1510 MS (s)1206 1510 MS (a)1225 1510 MS (n)1247 1510 MS (t)1271 1510 MS ( )1286 1510 MS
+(v)1301 1510 MS (e)1325 1510 MS (c)1347 1510 MS (t)1369 1510 MS (e)1384 1510 MS (u)1406 1510 MS (r)1431 1510 MS ( )1448 1510 MS (d)1463 1510 MS (u)1488 1510 MS ( )1513 1510 MS (p)1528 1510 MS (r)1553 1510 MS (e)1570 1510 MS (m)1593 1510 MS (i)1631 1510 MS
+(e)1644 1510 MS (r)1666 1510 MS ( )1683 1510 MS (c)1698 1510 MS (o)1720 1510 MS
+(n)1746 1510 MS (t)1770 1510 MS (a)1785 1510 MS (i)1808 1510 MS (n)1821 1510 MS (e)1845 1510 MS (r)1867 1510 MS (.)1884 1510 MS ( )1897 1510 MS (L)1912 1510 MS (a)1942 1510 MS ( )1964 1510 MS (d)1979 1510 MS (o)2004 1510 MS (n)2030 1510 MS (n)2055 1510 MS
+(\351)2079 1510 MS (e)2102 1510 MS ( )2125 1510 MS
+(v)235 1567 MS (e)259 1567 MS (c)281 1567 MS (t)303 1567 MS (e)318 1567 MS (u)340 1567 MS (r)365 1567 MS ( )382 1567 MS (p)411 1567 MS (a)436 1567 MS (r)458 1567 MS (a)475 1567 MS (l)498 1567 MS (l)511 1567 MS (\350)524 1567 MS (l)547 1567 MS
+(e)560 1567 MS ( )582 1567 MS (e)612 1567 MS (s)634 1567 MS (t)653 1567 MS ( )668 1567 MS (d)697 1567 MS (o)722 1567 MS (n)748 1567 MS (c)772 1567 MS ( )794 1567 MS (t)823 1567 MS (r)838 1567 MS (a)855 1567 MS (n)877 1567 MS (s)901 1567 MS
+(f)921 1567 MS (\351)936 1567 MS (r)958 1567 MS (\351)975 1567 MS (e)997 1567 MS ( )1019 1567 MS (v)1049 1567 MS (i)1074 1567 MS (a)1087 1567 MS ( )1110 1567 MS (l)1140 1567 MS (e)1153 1567 MS ( )1175 1567 MS (r)1204 1567 MS (\351)1221 1567 MS (s)1244 1567 MS
+(e)1263 1567 MS (a)1285 1567 MS (u)1307 1567 MS ( )1332 1567 MS (d)1361 1567 MS (e)1386 1567 MS ( )1408 1567 MS (m)1438 1567 MS (a)1476 1567 MS (n)1499 1567 MS (i)1524 1567 MS (\350)1537 1567 MS (r)1559 1567 MS (e)1576 1567 MS ( )1598 1567 MS (o)1627 1567 MS
+(p)1653 1567 MS (t)1678 1567 MS (i)1693 1567 MS (m)1706 1567 MS (a)1744 1567 MS (l)1767 1567 MS (e)1780 1567 MS (,)1802 1567 MS ( )1815 1567 MS (t)1844 1567 MS (o)1859 1567 MS (u)1885 1567 MS (t)1909 1567 MS ( )1924 1567 MS (e)1953 1567 MS (n)1975 1567 MS
+( )1999 1567 MS (\351)2028 1567 MS (t)2050 1567 MS (a)2065 1567 MS (n)2087 1567 MS (t)2111 1567 MS ( )2125 1567 MS
+(r)235 1625 MS (e)252 1625 MS (d)274 1625 MS (i)300 1625 MS (s)312 1625 MS (t)331 1625 MS (r)346 1625 MS (i)364 1625 MS (b)377 1625 MS (u)401 1625 MS (\351)426 1625 MS (e)448 1625 MS ( )470 1625 MS (d)485 1625 MS (e)510 1625 MS (p)532 1625 MS
+(u)557 1625 MS (i)583 1625 MS (s)596 1625 MS ( )616 1625 MS (t)631 1625 MS (r)646 1625 MS (o)662 1625 MS (i)688 1625 MS (s)701 1625 MS ( )720 1625 MS (p)735 1625 MS (r)760 1625 MS (o)777 1625 MS (c)803 1625 MS (e)825 1625 MS (s)847 1625 MS
+(s)866 1625 MS (e)885 1625 MS (u)907 1625 MS (r)932 1625 MS (s)949 1625 MS ( )968 1625 MS (v)984 1625 MS (e)1008 1625 MS (r)1030 1625 MS (s)1048 1625 MS ( )1067 1625 MS (d)1082 1625 MS (e)1107 1625 MS (u)1129 1625 MS (x)1155 1625 MS ( )1179 1625 MS
+(p)1194 1625 MS (r)1219 1625 MS (o)1237 1625 MS (c)1263 1625 MS (e)1285 1625 MS (s)1307 1625 MS (s)1326 1625 MS (e)1345 1625 MS (u)1367 1625 MS (r)1392 1625 MS (s)1409 1625 MS (.)1428 1625 MS ( )1441 1625 MS (O)1456 1625 MS (n)1492 1625 MS ( )1517 1625 MS
+(d)1532 1625 MS (e)1557 1625 MS (m)1580 1625 MS (a)1618 1625 MS (n)1641 1625 MS (d)1665 1625 MS (e)1690 1625 MS ( )1712 1625 MS (e)1727 1625 MS (n)1750 1625 MS (f)1775 1625 MS (i)1792 1625 MS (n)1805 1625 MS ( )1830 1625 MS (a)1845 1625 MS (u)1867 1625 MS
+( )1892 1625 MS (c)1908 1625 MS (o)1930 1625 MS (m)1956 1625 MS (p)1993 1625 MS (o)2018 1625 MS (s)2044 1625 MS (a)2063 1625 MS (n)2086 1625 MS (t)2110 1625 MS ( )2125 1625 MS
+(v)235 1682 MS (e)259 1682 MS (c)281 1682 MS (t)303 1682 MS (e)318 1682 MS (u)340 1682 MS (r)365 1682 MS ( )382 1682 MS (d)395 1682 MS (e)420 1682 MS ( )442 1682 MS (s)455 1682 MS (t)474 1682 MS (o)488 1682 MS (c)514 1682 MS (k)536 1682 MS
+(e)561 1682 MS (r)583 1682 MS ( )599 1682 MS (l)612 1682 MS (a)624 1682 MS ( )646 1682 MS (s)659 1682 MS (o)678 1682 MS (l)705 1682 MS (u)717 1682 MS (t)742 1682 MS (i)758 1682 MS (o)770 1682 MS (n)796 1682 MS ( )820 1682 MS (d)833 1682 MS
+(a)858 1682 MS (n)881 1682 MS (s)905 1682 MS ( )924 1682 MS (u)937 1682 MS (n)962 1682 MS ( )986 1682 MS (f)1000 1682 MS (i)1016 1682 MS (c)1029 1682 MS (h)1052 1682 MS (i)1078 1682 MS (e)1091 1682 MS (r)1113 1682 MS (.)1130 1682 MS
+( )1143 1682 MS
+( )348 1740 MS
+[42 0 0 -42 0 0]/Courier MF
+( )235 1787 MS
+(i)235 1835 MS (m)260 1835 MS (p)285 1835 MS (o)310 1835 MS (r)335 1835 MS (t)360 1835 MS ( )385 1835 MS (s)410 1835 MS (a)435 1835 MS
+(l)460 1835 MS (o)485 1835 MS (m)510 1835 MS (e)535 1835 MS
+( )560 1835 MS
+(i)235 1882 MS (m)260 1882 MS (p)285 1882 MS (o)310 1882 MS (r)335 1882 MS (t)360 1882 MS ( )385 1882 MS (S)410 1882 MS (A)435 1882 MS (L)460 1882 MS (O)485 1882 MS (M)510 1882 MS (E)535 1882 MS (D)560 1882 MS (S)585 1882 MS
+( )610 1882 MS
+( )235 1929 MS
+(A)235 1976 MS (=)260 1976 MS (s)285 1976 MS (a)310 1976 MS (l)335 1976 MS (o)360 1976 MS (m)385 1976 MS (e)410 1976 MS (.)435 1976 MS (l)460 1976 MS (c)485 1976 MS (c)510 1976 MS (.)535 1976 MS (F)560 1976 MS (i)585 1976 MS (n)610 1976 MS
+(d)635 1976 MS (O)660 1976 MS (r)685 1976 MS (L)710 1976 MS (o)735 1976 MS (a)760 1976 MS (d)785 1976 MS (C)810 1976 MS (o)835 1976 MS (m)860 1976 MS (p)885 1976 MS (o)910 1976 MS (n)935 1976 MS (e)960 1976 MS (n)985 1976 MS (t)1010 1976 MS
+(\()1035 1976 MS (")1060 1976 MS (d)1085 1976 MS (a)1110 1976 MS (t)1135 1976 MS (a)1160 1976 MS (")1185 1976 MS (,)1210 1976 MS (")1235 1976 MS (N)1260 1976 MS (P)1285 1976 MS (M)1310 1976 MS (a)1335 1976 MS (t)1360 1976 MS (C)1385 1976 MS (o)1410 1976 MS
+(m)1435 1976 MS (p)1460 1976 MS (o)1485 1976 MS (n)1510 1976 MS (e)1535 1976 MS (n)1560 1976 MS (t)1585 1976 MS (")1610 1976 MS (\))1635 1976 MS
+( )1660 1976 MS
+(A)235 2023 MS (.)260 2023 MS (S)285 2023 MS (e)310 2023 MS (t)335 2023 MS (F)360 2023 MS (i)385 2023 MS (l)410 2023 MS (e)435 2023 MS (N)460 2023 MS (a)485 2023 MS (m)510 2023 MS (e)535 2023 MS (\()560 2023 MS (")585 2023 MS (/)610 2023 MS
+(h)635 2023 MS (o)660 2023 MS (m)685 2023 MS (e)710 2023 MS (/)735 2023 MS (s)760 2023 MS (e)785 2023 MS (c)810 2023 MS (h)835 2023 MS (e)860 2023 MS (r)885 2023 MS (/)910 2023 MS (d)935 2023 MS (a)960 2023 MS (t)985 2023 MS (a)1010 2023 MS
+(/)1035 2023 MS (M)1060 2023 MS (a)1085 2023 MS (t)1110 2023 MS (r)1135 2023 MS (i)1160 2023 MS (c)1185 2023 MS (e)1210 2023 MS (1)1235 2023 MS (0)1260 2023 MS (0)1285 2023 MS (.)1310 2023 MS (x)1335 2023 MS (d)1360 2023 MS (r)1385 2023 MS (")1410 2023 MS
+(\))1435 2023 MS
+( )1460 2023 MS
+(A)235 2071 MS (.)260 2071 MS (R)285 2071 MS (e)310 2071 MS (a)335 2071 MS (d)360 2071 MS (D)385 2071 MS (a)410 2071 MS (t)435 2071 MS (a)460 2071 MS (F)485 2071 MS (r)510 2071 MS (o)535 2071 MS (m)560 2071 MS (F)585 2071 MS (i)610 2071 MS
+(l)635 2071 MS (e)660 2071 MS (\()685 2071 MS (")710 2071 MS (c)735 2071 MS (a)760 2071 MS (l)785 2071 MS (l)810 2071 MS (b)835 2071 MS (a)860 2071 MS (c)885 2071 MS (k)910 2071 MS (")935 2071 MS (\))960 2071 MS
+( )985 2071 MS
+( )235 2118 MS
+(b)235 2165 MS (=)260 2165 MS (s)285 2165 MS (a)310 2165 MS (l)335 2165 MS (o)360 2165 MS (m)385 2165 MS (e)410 2165 MS (.)435 2165 MS (l)460 2165 MS (c)485 2165 MS (c)510 2165 MS (.)535 2165 MS (F)560 2165 MS (i)585 2165 MS (n)610 2165 MS
+(d)635 2165 MS (O)660 2165 MS (r)685 2165 MS (L)710 2165 MS (o)735 2165 MS (a)760 2165 MS (d)785 2165 MS (C)810 2165 MS (o)835 2165 MS (m)860 2165 MS (p)885 2165 MS (o)910 2165 MS (n)935 2165 MS (e)960 2165 MS (n)985 2165 MS (t)1010 2165 MS
+(\()1035 2165 MS (")1060 2165 MS (d)1085 2165 MS (a)1110 2165 MS (t)1135 2165 MS (a)1160 2165 MS (")1185 2165 MS (,)1210 2165 MS (")1235 2165 MS (N)1260 2165 MS (P)1285 2165 MS (V)1310 2165 MS (e)1335 2165 MS (c)1360 2165 MS (C)1385 2165 MS (o)1410 2165 MS
+(m)1435 2165 MS (p)1460 2165 MS (o)1485 2165 MS (n)1510 2165 MS (e)1535 2165 MS (n)1560 2165 MS (t)1585 2165 MS (")1610 2165 MS (\))1635 2165 MS
+( )1660 2165 MS
+(b)235 2212 MS (.)260 2212 MS (S)285 2212 MS (e)310 2212 MS (t)335 2212 MS (F)360 2212 MS (i)385 2212 MS (l)410 2212 MS (e)435 2212 MS (N)460 2212 MS (a)485 2212 MS (m)510 2212 MS (e)535 2212 MS (\()560 2212 MS (")585 2212 MS (/)610 2212 MS
+(h)635 2212 MS (o)660 2212 MS (m)685 2212 MS (e)710 2212 MS (/)735 2212 MS (s)760 2212 MS (e)785 2212 MS (c)810 2212 MS (h)835 2212 MS (e)860 2212 MS (r)885 2212 MS (/)910 2212 MS (d)935 2212 MS (a)960 2212 MS (t)985 2212 MS (a)1010 2212 MS
+(/)1035 2212 MS (S)1060 2212 MS (c)1085 2212 MS (d)1110 2212 MS
+(M)1135 2212 MS (e)1160 2212 MS (m)1185 2212 MS (b)1210 2212 MS (r)1235 2212 MS (e)1260 2212 MS (1)1285 2212 MS (0)1310 2212 MS (0)1335 2212 MS (.)1360 2212 MS (x)1385 2212 MS (d)1410 2212 MS (r)1435 2212 MS (")1460 2212 MS (\))1485 2212 MS
+( )1510 2212 MS
+(b)235 2259 MS (.)260 2259 MS (R)285 2259 MS (e)310 2259 MS (a)335 2259 MS (d)360 2259 MS (D)385 2259 MS (a)410 2259 MS (t)435 2259 MS (a)460 2259 MS (F)485 2259 MS (r)510 2259 MS (o)535 2259 MS (m)560 2259 MS (F)585 2259 MS (i)610 2259 MS
+(l)635 2259 MS (e)660 2259 MS (\()685 2259 MS (")710 2259 MS (c)735 2259 MS (a)760 2259 MS (l)785 2259 MS (l)810 2259 MS (b)835 2259 MS (a)860 2259 MS (c)885 2259 MS (k)910 2259 MS (")935 2259 MS (\))960 2259 MS
+( )985 2259 MS
+( )235 2307 MS
+(x)235 2354 MS (=)260 2354 MS (s)285 2354 MS (a)310 2354 MS (l)335 2354 MS (o)360 2354 MS (m)385 2354 MS (e)410 2354 MS (.)435 2354 MS (l)460 2354 MS (c)485 2354 MS (c)510 2354 MS (.)535 2354 MS (F)560 2354 MS (i)585 2354 MS (n)610 2354 MS
+(d)635 2354 MS (O)660 2354 MS (r)685 2354 MS (L)710 2354 MS (o)735 2354 MS (a)760 2354 MS (d)785 2354 MS (C)810 2354 MS (o)835 2354 MS (m)860 2354 MS (p)885 2354 MS (o)910 2354 MS (n)935 2354 MS (e)960 2354 MS (n)985 2354 MS (t)1010 2354 MS
+(\()1035 2354 MS (")1060 2354 MS (d)1085 2354 MS (a)1110 2354 MS (t)1135 2354 MS (a)1160 2354 MS (")1185 2354 MS (,)1210 2354 MS (")1235 2354 MS (N)1260 2354 MS (P)1285 2354 MS (V)1310 2354 MS (e)1335 2354 MS (c)1360 2354 MS (C)1385 2354 MS (o)1410 2354 MS
+(m)1435 2354 MS (p)1460 2354 MS (o)1485 2354 MS (n)1510 2354 MS (e)1535 2354 MS (n)1560 2354 MS (t)1585 2354 MS (")1610 2354 MS (\))1635 2354 MS
+( )1660 2354 MS
+(x)235 2401 MS (.)260 2401 MS (S)285 2401 MS (e)310 2401 MS (t)335 2401 MS (F)360 2401 MS (i)385 2401 MS (l)410 2401 MS (e)435 2401 MS (N)460 2401 MS (a)485 2401 MS (m)510 2401 MS (e)535 2401 MS (\()560 2401 MS (")585 2401 MS (/)610 2401 MS
+(h)635 2401 MS (o)660 2401 MS (m)685 2401 MS (e)710 2401 MS (/)735 2401 MS (s)760 2401 MS (e)785 2401 MS (c)810 2401 MS (h)835 2401 MS (e)860 2401 MS (r)885 2401 MS (/)910 2401 MS (d)935 2401 MS (a)960 2401 MS (t)985 2401 MS (a)1010 2401 MS
+(/)1035 2401 MS (S)1060 2401 MS (o)1085 2401 MS (l)1110 2401 MS (u)1135 2401 MS (t)1160 2401 MS (i)1185 2401 MS (o)1210 2401 MS (n)1235 2401 MS (1)1260 2401 MS (0)1285 2401 MS (0)1310 2401 MS (.)1335 2401 MS (x)1360 2401 MS (d)1385 2401 MS (r)1410 2401 MS
+(")1435 2401 MS (\))1460 2401 MS
+( )1485 2401 MS
+( )235 2448 MS
+(s)235 2495 MS (=)260 2495 MS (s)285 2495 MS (a)310 2495 MS (l)335 2495 MS (o)360 2495 MS (m)385 2495 MS (e)410 2495 MS (.)435 2495 MS (l)460 2495 MS (c)485 2495 MS (c)510 2495 MS (.)535 2495 MS (F)560 2495 MS (i)585 2495 MS (n)610 2495 MS
+(d)635 2495 MS (O)660 2495 MS (r)685 2495 MS (L)710 2495 MS (o)735 2495 MS (a)760 2495 MS (d)785 2495 MS (C)810 2495 MS (o)835 2495 MS (m)860 2495 MS (p)885 2495 MS (o)910 2495 MS (n)935 2495 MS (e)960 2495 MS (n)985 2495 MS (t)1010 2495 MS
+(\()1035 2495 MS (")1060 2495 MS (s)1085 2495 MS (o)1110 2495 MS (l)1135 2495 MS (v)1160 2495 MS (e)1185 2495 MS (_)1210 2495 MS (s)1235 2495 MS (y)1260 2495 MS (s)1285 2495 MS (t)1310 2495 MS (e)1335 2495 MS (m)1360 2495 MS (")1385 2495 MS (,)1410 2495 MS
+(")1435 2495 MS (N)1460 2495 MS (P)1485 2495 MS (S)1510 2495 MS (o)1535 2495 MS (l)1560 2495 MS (v)1585 2495 MS (e)1610 2495 MS (C)1635 2495 MS (o)1660 2495 MS (m)1685 2495 MS (p)1710 2495 MS (o)1735 2495 MS (n)1760 2495 MS (e)1785 2495 MS (n)1810 2495 MS
+(t)1835 2495 MS (")1860 2495 MS (\))1885 2495 MS
+( )1910 2495 MS
+(x)235 2543 MS (v)260 2543 MS (=)285 2543 MS (s)310 2543 MS (.)335 2543 MS (S)360 2543 MS (o)385 2543 MS (l)410 2543 MS (v)435 2543 MS (e)460 2543 MS (\()485 2543 MS (A)510 2543 MS (.)535 2543 MS (_)560 2543 MS (g)585 2543 MS (e)610 2543 MS
+(t)635 2543 MS (_)660 2543 MS (d)685 2543 MS (m)710 2543 MS (a)735 2543 MS (t)760 2543 MS (\()785 2543 MS (\))810 2543 MS (,)835 2543 MS (b)860 2543 MS (.)885 2543 MS (_)910 2543 MS (g)935 2543 MS (e)960 2543 MS
+(t)985 2543 MS (_)1010 2543 MS (d)1035 2543 MS (v)1060 2543 MS (e)1085 2543 MS (c)1110 2543 MS (\()1135 2543 MS (\))1160 2543 MS (\))1185 2543 MS
+( )1210 2543 MS
+( )235 2590 MS
+(x)235 2637 MS (.)260 2637 MS (_)285 2637 MS (s)310 2637 MS (e)335 2637 MS (t)360 2637 MS (_)385 2637 MS (d)410 2637 MS (v)435 2637 MS (e)460 2637 MS (c)485 2637 MS (\()510 2637 MS (x)535 2637 MS (v)560 2637 MS (\))585 2637 MS
+( )610 2637 MS
+(x)235 2684 MS (.)260 2684 MS (S)285 2684 MS (a)310 2684 MS (v)335 2684 MS (e)360 2684 MS (D)385 2684 MS (a)410 2684 MS (t)435 2684 MS (a)460 2684 MS (T)485 2684 MS (o)510 2684 MS (F)535 2684 MS (i)560 2684 MS (l)585 2684 MS (e)610 2684 MS
+(\()635 2684 MS (")660 2684 MS (c)685 2684 MS (a)710 2684 MS (l)735 2684 MS (l)760 2684 MS (b)785 2684 MS (a)810 2684 MS (c)835 2684 MS (k)860 2684 MS (")885 2684 MS (\))910 2684 MS
+( )935 2684 MS
+( )235 2731 MS
+[50 0 0 -50 0 0]/_Times-Roman MF
+( )348 2789 MS
+( )235 2846 MS
+showpage
+%%Page: 29 29
+14.449 827.879 translate 72 300 div dup neg scale
+0 0 transform .25 add round .25 sub exch .25 add round .25 sub exch itransform translate
+1 j
+1 setlinecap
+72 sl
+0.375 g
+n
+494 182 M
+494 155 472 133 445 133 c
+418 133 396 155 396 182 c
+396 209 418 231 445 231 c
+472 231 494 209 494 182 c
+cp
+CM 0.156 0.152 scale
+s
+SM
+71 sl
+n
+660 182 M
+660 155 638 133 611 133 c
+584 133 562 155 562 182 c
+562 209 584 231 611 231 c
+638 231 660 209 660 182 c
+cp
+CM 0.156 0.152 scale
+s
+SM
+n
+120 24 468 152 B
+1 g
+f
+1 sl
+n
+122 26 467 151 B
+cp
+s
+71 sl
+0.375 g
+n
+577 180 M
+577 153 555 131 528 131 c
+501 131 479 153 479 180 c
+479 206 501 228 528 228 c
+555 228 577 206 577 180 c
+cp
+gs
+1 g
+e
+gr
+CM 0.156 0.152 scale
+s
+SM
+n
+480 180 M
+575 180 L
+CM 0.156 0.152 scale
+s
+SM
+n
+34 18 562 187 B
+1 g
+f
+1 sl
+n
+36 20 561 186 B
+cp
+s
+n
+610 173 M
+591 173 L
+554 124 L
+579 126 L
+609 173 L
+610 173 L
+cp
+gs
+e
+gr
+s
+n
+448 170 M
+468 170 L
+504 122 L
+479 123 L
+449 170 L
+448 170 L
+cp
+gs
+e
+gr
+s
+0.375 g
+n
+473 140 M
+473 137 470 135 467 135 c
+464 135 462 137 462 140 c
+462 142 464 145 467 145 c
+470 145 473 142 473 140 c
+cp
+gs
+e
+gr
+s
+n
+593 139 M
+593 136 590 134 588 134 c
+585 134 583 136 583 139 c
+583 141 585 144 588 144 c
+590 144 593 141 593 139 c
+cp
+gs
+e
+gr
+s
+72 sl
+n
+665 137 M
+665 229 L
+CM 0.156 0.152 scale
+s
+SM
+[29 0 0 -29 0 0]/Times-Roman MF
+0 g
+( )676 243 MS
+[50 0 0 -50 0 0]/Times-Roman MF
+(D)400 289 MS (E)436 289 MS (N)467 289 MS ( )503 289 MS ( )516 289 MS (S)529 289 MS (a)557 289 MS (c)579 289 MS (l)601 289 MS (a)613 289 MS (y)636 289 MS
+( )660 289 MS
+( )1297 140 MS
+[38 0 0 -38 0 0]/Times-Roman MF
+(S)1785 129 MS (F)1806 129 MS (M)1827 129 MS (E)1861 129 MS (/)1883 129 MS (L)1894 129 MS (G)1916 129 MS (L)1943 129 MS (S)1965 129 MS (/)1986 129 MS (R)1997 129 MS (T)2022 129 MS (/)2045 129 MS (0)2056 129 MS (2)2075 129 MS
+(-)2094 129 MS
+(0)2106 129 MS (0)2125 129 MS (2)2144 129 MS
+( )2163 129 MS
+(D)1785 173 MS (a)1812 173 MS (t)1829 173 MS (e)1840 173 MS
+( )1856 173 MS
+(:)1866 173 MS
+( )1875 173 MS
+(3)1885 173 MS (0)1904 173 MS (/)1923 173 MS (0)1934 173 MS (5)1952 173 MS (/)1971 173 MS (2)1982 173 MS (0)2000 173 MS (0)2019 173 MS (2)2038 173 MS
+( )2057 173 MS
+n
+5 5 232 89 B
+f
+n
+5 5 232 89 B
+f
+n
+584 5 238 89 B
+f
+n
+5 5 823 89 B
+f
+n
+938 5 829 89 B
+f
+n
+5 5 1768 89 B
+f
+n
+436 5 1774 89 B
+f
+n
+5 5 2211 89 B
+f
+n
+5 5 2211 89 B
+f
+n
+5 256 232 95 B
+f
+n
+2 256 823 95 B
+f
+n
+2 256 1768 95 B
+f
+n
+5 256 2211 95 B
+f
+[50 0 0 -50 0 0]/Times-Roman MF
+(D)322 400 MS (M)358 400 MS (2)402 400 MS (S)427 400 MS (/)455 400 MS (S)469 400 MS (F)497 400 MS (M)524 400 MS (E)568 400 MS (/)599 400 MS (L)613 400 MS (G)643 400 MS (L)680 400 MS (S)710 400 MS
+( )738 400 MS
+[50 0 0 -50 0 0]/Times-Bold MF
+gs
+n
+241 53 1102 367 CB
+(R)1102 413 MS (A)1138 413 MS (P)1174 413 MS (P)1204 413 MS (O)1234 413 MS (R)1273 413 MS (T)1310 413 MS
+gr
+gs
+n
+150 53 1343 367 CB
+( )1343 413 MS (D)1356 413 MS (M)1392 413 MS (2)1440 413 MS (S)1465 413 MS
+gr
+[50 0 0 -50 0 0]/Times-Roman MF
+gs
+n
+24 52 1493 368 CB
+( )1493 413 MS
+gr
+[38 0 0 -38 0 0]/Times-Roman MF
+(P)1785 400 MS (a)1806 400 MS (g)1823 400 MS (e)1841 400 MS ( )1858 400 MS
+[50 0 0 -50 0 0]/Times-Roman MF
+(2)1868 400 MS (9)1893 400 MS
+(/)1918 400 MS
+(3)1932 400 MS (0)1957 400 MS
+[38 0 0 -38 0 0]/Times-Roman MF
+( )1982 400 MS
+n
+5 2 232 352 B
+f
+n
+2 2 823 352 B
+f
+n
+941 2 826 352 B
+f
+n
+2 2 1768 352 B
+f
+n
+5 2 2211 352 B
+f
+n
+5 67 232 355 B
+f
+n
+590 1 232 423 B
+f
+n
+2 67 823 355 B
+f
+n
+1 1 823 423 B
+f
+n
+942 1 825 423 B
+f
+n
+2 67 1768 355 B
+f
+n
+1 1 1768 423 B
+f
+n
+440 1 1770 423 B
+f
+n
+5 67 2211 355 B
+f
+n
+5 1 2211 423 B
+f
+[50 0 0 -50 0 0]/Times-Roman MF
+( )235 470 MS
+[33 0 0 -33 0 0]/Times-Roman MF
+/IsChar{exch/CharStrings get exch known}bd/MapCh{3 -1 roll/Encoding get 3 1\r
+roll put}bd/MapDegree{dup 16#b0 exch/degree IsChar{/degree}{/ring}ifelse MapCh}\r
+bd/MapBB{dup 16#a6 exch/brokenbar IsChar{/brokenbar}{/bar}ifelse MapCh}bd\r
+/reencode{findfont begin currentdict dup length dict begin{1 index/FID ne{def}\r
+{pop pop}ifelse}forall/FontName exch def dup length 0 ne{/Encoding Encoding 256\r
+array copy def 0 exch{dup type/nametype eq{Encoding 2 index 2 index put pop 1\r
+add}{exch pop}ifelse}forall}if pop currentdict dup end end/FontName get exch\r
+definefont dup MapDegree MapBB}bd/LATENC[0/grave/acute/circumflex/tilde/macron\r
+/breve/dotaccent/dieresis/ring/cedilla/hungarumlaut/ogonek/caron/dotlessi/fi/fl\r
+/Lslash/lslash/Zcaron/zcaron/minus/.notdef/.notdef/.notdef/.notdef/.notdef\r
+/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/space/exclam/quotedbl\r
+/numbersign/dollar/percent/ampersand/quotesingle/parenleft/parenright/asterisk\r
+/plus/comma/hyphen/period/slash/zero/one/two/three/four/five/six/seven/eight\r
+/nine/colon/semicolon/less/equal/greater/question/at/A/B/C/D/E/F/G/H/I/J/K/L/M\r
+/N/O/P/Q/R/S/T/U/V/W/X/Y/Z/bracketleft/backslash/bracketright/asciicircum\r
+/underscore/grave/a/b/c/d/e/f/g/h/i/j/k/l/m/n/o/p/q/r/s/t/u/v/w/x/y/z/braceleft\r
+/bar/braceright/asciitilde/.notdef/.notdef/.notdef/quotesinglbase/florin\r
+/quotedblbase/ellipsis/dagger/daggerdbl/circumflex/perthousand/Scaron\r
+/guilsinglleft/OE/.notdef/.notdef/.notdef/.notdef/quoteleft/quoteright\r
+/quotedblleft/quotedblright/bullet/endash/emdash/tilde/trademark/scaron\r
+/guilsinglright/oe/.notdef/.notdef/Ydieresis/.notdef/exclamdown/cent/sterling\r
+/currency/yen/brokenbar/section/dieresis/copyright/ordfeminine/guillemotleft\r
+/logicalnot/hyphen/registered/macron/degree/plusminus/twosuperior/threesuperior\r
+/acute/mu/paragraph/periodcentered/cedilla/onesuperior/ordmasculine\r
+/guillemotright/onequarter/onehalf/threequarters/questiondown/Agrave/Aacute\r
+/Acircumflex/Atilde/Adieresis/Aring/AE/Ccedilla/Egrave/Eacute/Ecircumflex\r
+/Edieresis/Igrave/Iacute/Icircumflex/Idieresis/Eth/Ntilde/Ograve/Oacute\r
+/Ocircumflex/Otilde/Odieresis/multiply/Oslash/Ugrave/Uacute/Ucircumflex\r
+/Udieresis/Yacute/Thorn/germandbls/agrave/aacute/acircumflex/atilde/adieresis\r
+/aring/ae/ccedilla/egrave/eacute/ecircumflex/edieresis/igrave/iacute\r
+/icircumflex/idieresis/eth/ntilde/ograve/oacute/ocircumflex/otilde/odieresis\r
+/divide/oslash/ugrave/uacute/ucircumflex/udieresis/yacute/thorn/ydieresis]def\r
+LATENC /_Times-Roman /Times-Roman reencode
+[33 0 0 -33 0 0]/_Times-Roman MF
+(L)242 3256 MS (e)262 3256 MS (s)277 3256 MS ( )289 3256 MS (i)298 3256 MS (n)307 3256 MS (f)324 3256 MS (o)335 3256 MS (r)351 3256 MS (m)363 3256 MS (a)388 3256 MS (t)403 3256 MS (i)412 3256 MS (o)422 3256 MS (n)439 3256 MS (s)456 3256 MS
+( )468 3256 MS (c)477 3256 MS (o)492 3256 MS (n)508 3256 MS (t)524 3256 MS (e)534 3256 MS (n)549 3256 MS (u)565 3256 MS (e)582 3256 MS (s)597 3256 MS ( )610 3256 MS (d)618 3256 MS (a)634 3256 MS (n)650 3256 MS (s)667 3256 MS ( )679 3256 MS
+(c)688 3256 MS (e)703 3256 MS ( )717 3256 MS (d)726 3256 MS (o)742 3256 MS (c)759 3256 MS (u)773 3256 MS (m)791 3256 MS (e)817 3256 MS (n)831 3256 MS (t)847 3256 MS ( )857 3256 MS (s)866 3256 MS (o)878 3256 MS (n)895 3256 MS (t)911 3256 MS
+( )921 3256 MS (r)929 3256 MS (\351)941 3256 MS (s)956 3256 MS (e)968 3256 MS (r)982 3256 MS (v)994 3256 MS (\351)1011 3256 MS (e)1026 3256 MS (s)1041 3256 MS ( )1053 3256 MS (a)1061 3256 MS (u)1076 3256 MS (x)1093 3256 MS ( )1109 3256 MS (d)1118 3256 MS
+(e)1135 3256 MS (s)1150 3256 MS (t)1162 3256 MS (i)1171 3256 MS (n)1181 3256 MS (a)1197 3256 MS (t)1212 3256 MS (a)1221 3256 MS (i)1236 3256 MS (r)1245 3256 MS (e)1257 3256 MS (s)1272 3256 MS ( )1284 3256 MS (n)1293 3256 MS (o)1309 3256 MS (m)1326 3256 MS
+(m)1352 3256 MS (\351)1378 3256 MS (m)1393 3256 MS (e)1419 3256 MS (n)1433 3256 MS (t)1450 3256 MS ( )1459 3256 MS (d)1468 3256 MS (\351)1484 3256 MS (s)1499 3256 MS (i)1512 3256 MS (g)1521 3256 MS
+(n)1538 3256 MS (\351)1555 3256 MS (s)1570 3256 MS ( )1582 3256 MS (e)1591 3256 MS (t)1605 3256 MS ( )1615 3256 MS (n)1623 3256 MS (e)1640 3256 MS ( )1654 3256 MS (p)1663 3256 MS (e)1680 3256 MS (u)1694 3256 MS (v)1711 3256 MS (e)1728 3256 MS (n)1743 3256 MS
+(t)1759 3256 MS ( )1768 3256 MS (r)1776 3256 MS (e)1788 3256 MS (c)1803 3256 MS (e)1818 3256 MS (v)1832 3256 MS (o)1849 3256 MS (i)1865 3256 MS (r)1874 3256 MS ( )1886 3256 MS (a)1894 3256 MS (u)1909 3256 MS (c)1926 3256 MS (u)1940 3256 MS (n)1957 3256 MS
+(e)1974 3256 MS ( )1988 3256 MS (d)1997 3256 MS (i)2013 3256 MS (f)2023 3256 MS (f)2034 3256 MS (u)2044 3256 MS (s)2062 3256 MS (i)2074 3256 MS (o)2084 3256 MS (n)2101 3256 MS
+( )2117 3256 MS
+(s)928 3294 MS (a)940 3294 MS (n)955 3294 MS (s)972 3294 MS ( )985 3294 MS (l)993 3294 MS (\222)1002 3294 MS (a)1013 3294 MS (u)1028 3294 MS (t)1045 3294 MS (o)1054 3294 MS (r)1071 3294 MS (i)1082 3294 MS (s)1092 3294 MS (a)1104 3294 MS (t)1119 3294 MS
+(i)1128 3294 MS (o)1138 3294 MS (n)1154 3294 MS ( )1171 3294 MS (e)1180 3294 MS (x)1194 3294 MS (p)1211 3294 MS (r)1227 3294 MS (e)1239 3294 MS (s)1254 3294 MS (s)1267 3294 MS (e)1280 3294 MS ( )1294 3294 MS (d)1303 3294 MS (u)1319 3294 MS ( )1336 3294 MS
+(D)1344 3294 MS (M)1368 3294 MS (2)1397 3294 MS (S)1414 3294 MS
+[50 0 0 -50 0 0]/Times-Roman MF
+( )1432 3294 MS
+[67 0 0 -67 0 0]/Helvetica-Bold MF
+(1)310 592 MS (0)347 592 MS
+( )384 592 MS
+( )400 592 MS (C)419 592 MS (o)467 592 MS (n)508 592 MS (c)549 592 MS (l)586 592 MS (u)604 592 MS (s)645 592 MS (i)682 592 MS (o)701 592 MS (n)741 592 MS
+( )782 592 MS
+[50 0 0 -50 0 0]/Times-Roman MF
+( )235 667 MS
+LATENC /_Times-Roman /Times-Roman reencode
+[50 0 0 -50 0 0]/_Times-Roman MF
+(L)348 724 MS (a)378 724 MS ( )400 724 MS (m)433 724 MS (\351)471 724 MS (t)493 724 MS (h)508 724 MS (o)532 724 MS (d)558 724 MS (e)583 724 MS ( )605 724 MS (i)638 724 MS (d)650 724 MS (\351)676 724 MS (a)698 724 MS (l)721 724 MS
+(e)734 724 MS ( )756 724 MS (p)788 724 MS (o)813 724 MS (u)839 724 MS (r)864 724 MS ( )881 724 MS (c)913 724 MS (o)935 724 MS (u)961 724 MS (p)986 724 MS (l)1011 724 MS (e)1023 724 MS (r)1045 724 MS ( )1062 724 MS (d)1094 724 MS
+(e)1120 724 MS (s)1142 724 MS ( )1161 724 MS (c)1194 724 MS (o)1216 724 MS (d)1242 724 MS (e)1267 724 MS (s)1289 724 MS ( )1308 724 MS (p)1340 724 MS (a)1366 724 MS (r)1388 724 MS (a)1405 724 MS (l)1428 724 MS (l)1441 724 MS (\350)1454 724 MS
+(l)1477 724 MS (e)1490 724 MS (s)1513 724 MS ( )1532 724 MS (d)1564 724 MS (a)1589 724 MS (n)1612 724 MS (s)1637 724 MS ( )1656 724 MS (u)1688 724 MS (n)1714 724 MS ( )1738 724 MS (e)1770 724 MS (n)1793 724 MS (v)1818 724 MS (i)1843 724 MS
+(r)1856 724 MS (o)1873 724 MS (n)1899 724 MS (n)1924 724 MS (e)1948 724 MS (m)1971 724 MS (e)2009 724 MS (n)2032 724 MS (t)2056 724 MS ( )2071 724 MS (\340)2103 724 MS ( )2125 724 MS
+(a)235 782 MS (r)257 782 MS (c)274 782 MS (h)296 782 MS (i)321 782 MS (t)333 782 MS (e)348 782 MS (c)370 782 MS (t)392 782 MS (u)407 782 MS (r)432 782 MS (e)449 782 MS ( )471 782 MS (r)484 782 MS (\351)501 782 MS (p)523 782 MS
+(a)548 782 MS (r)570 782 MS (t)586 782 MS (i)601 782 MS (e)614 782 MS ( )636 782 MS (c)649 782 MS (o)671 782 MS (n)697 782 MS (s)721 782 MS (i)741 782 MS (s)754 782 MS (t)773 782 MS (e)788 782 MS (r)810 782 MS (a)827 782 MS
+( )849 782 MS (\340)862 782 MS ( )884 782 MS (u)897 782 MS (t)922 782 MS (i)937 782 MS (l)950 782 MS (i)964 782 MS (s)977 782 MS (e)997 782 MS (r)1019 782 MS ( )1036 782 MS (u)1049 782 MS (n)1074 782 MS ( )1098 782 MS (O)1112 782 MS
+(R)1148 782 MS (B)1181 782 MS ( )1214 782 MS (p)1227 782 MS (a)1253 782 MS (r)1275 782 MS (a)1292 782 MS (l)1315 782 MS (l)1328 782 MS (\350)1341 782 MS (l)1364 782 MS (e)1377 782 MS (.)1399 782 MS ( )1412 782 MS (O)1425 782 MS (n)1462 782 MS
+( )1486 782 MS (a)1499 782 MS (u)1521 782 MS (r)1546 782 MS (a)1563 782 MS ( )1585 782 MS (a)1598 782 MS (i)1621 782 MS (n)1634 782 MS (s)1659 782 MS (i)1679 782 MS ( )1692 782 MS (\340)1705 782 MS ( )1727 782 MS (l)1741 782 MS (a)1754 782 MS
+( )1776 782 MS (f)1790 782 MS (o)1805 782 MS (i)1832 782 MS (s)1845 782 MS ( )1864 782 MS (l)1878 782 MS (a)1891 782 MS ( )1913 782 MS (s)1927 782 MS (i)1947 782 MS (m)1961 782 MS (p)1999 782 MS (l)2025 782 MS (i)2038 782 MS (c)2051 782 MS
+(i)2074 782 MS (t)2086 782 MS (\351)2102 782 MS ( )2125 782 MS
+(d)235 839 MS (\222)260 839 MS (i)277 839 MS (n)290 839 MS (t)314 839 MS (\351)329 839 MS (g)351 839 MS
+(r)376 839 MS (a)393 839 MS (t)415 839 MS (i)430 839 MS (o)442 839 MS (n)468 839 MS ( )492 839 MS (d)505 839 MS (e)530 839 MS (s)552 839 MS ( )571 839 MS (c)584 839 MS (o)606 839 MS (m)633 839 MS (p)670 839 MS (o)695 839 MS
+(s)721 839 MS (a)740 839 MS (n)763 839 MS (t)787 839 MS (s)802 839 MS ( )821 839 MS (d)834 839 MS (a)859 839 MS (n)881 839 MS (s)905 839 MS ( )924 839 MS (l)938 839 MS (a)951 839 MS ( )973 839 MS (p)986 839 MS (l)1012 839 MS
+(a)1025 839 MS (t)1047 839 MS (e)1062 839 MS
+(-)1084 839 MS
+(f)1101 839 MS (o)1116 839 MS (r)1142 839 MS (m)1160 839 MS (e)1197 839 MS ( )1219 839 MS (S)1233 839 MS (A)1261 839 MS (L)1296 839 MS (O)1327 839 MS (M)1363 839 MS (E)1407 839 MS ( )1438 839 MS (e)1451 839 MS (t)1473 839 MS ( )1488 839 MS
+(u)1501 839 MS (n)1526 839 MS (e)1550 839 MS ( )1572 839 MS (b)1585 839 MS (o)1609 839 MS (n)1635 839 MS (n)1660 839 MS (e)1684 839 MS ( )1706 839 MS (p)1719 839 MS (e)1744 839 MS (r)1766 839 MS (f)1784 839 MS (o)1799 839 MS (r)1825 839 MS
+(m)1843 839 MS (a)1880 839 MS (n)1903 839 MS (c)1927 839 MS (e)1949 839 MS ( )1971 839 MS (d)1984 839 MS (a)2009 839 MS (n)2032 839 MS (s)2056 839 MS ( )2075 839 MS (l)2089 839 MS (e)2102 839 MS ( )2125 839 MS
+(t)235 897 MS (r)250 897 MS (a)267 897 MS (i)289 897 MS (t)301 897 MS (e)316 897 MS (m)339 897 MS (e)376 897 MS (n)399 897 MS (t)423 897 MS ( )438 897 MS (d)465 897 MS (e)490 897 MS (s)512 897 MS ( )531 897 MS (a)558 897 MS
+(l)581 897 MS (g)594 897 MS (o)619 897 MS (r)645 897 MS (i)663 897 MS (t)675 897 MS (h)690 897 MS (m)715 897 MS (e)753 897 MS (s)775 897 MS ( )794 897 MS (e)822 897 MS (t)844 897 MS ( )859 897 MS (l)887 897 MS (e)899 897 MS
+(s)921 897 MS ( )941 897 MS (\351)968 897 MS (c)990 897 MS (h)1013 897 MS (a)1037 897 MS (n)1060 897 MS (g)1084 897 MS (e)1110 897 MS (s)1132 897 MS ( )1151 897 MS (d)1178 897 MS (e)1204 897 MS ( )1226 897 MS (d)1254 897 MS (o)1279 897 MS
+(n)1305 897 MS (n)1329 897 MS (\351)1353 897 MS (e)1375 897 MS (s)1398 897 MS (.)1417 897 MS ( )1430 897 MS (M)1457 897 MS (a)1501 897 MS (l)1524 897 MS (h)1537 897 MS (e)1562 897 MS (u)1584 897 MS (r)1609 897 MS (e)1626 897 MS (u)1648 897 MS
+(s)1674 897 MS (e)1693 897 MS (m)1716 897 MS (e)1754 897 MS (n)1777 897 MS (t)1801 897 MS (,)1816 897 MS ( )1829 897 MS (c)1856 897 MS (o)1878 897 MS (m)1904 897 MS (m)1942 897 MS (e)1980 897 MS ( )2002 897 MS (n)2030 897 MS (o)2054 897 MS
+(u)2080 897 MS (s)2105 897 MS ( )2125 897 MS
+(l)235 954 MS (\222)248 954 MS (a)265 954 MS (v)288 954 MS (o)312 954 MS (n)338 954 MS (s)362 954 MS ( )381 954 MS (d)395 954 MS (i)421 954 MS (t)433 954 MS ( )448 954 MS (a)463 954 MS (u)485 954 MS ( )510 954 MS (d)524 954 MS
+(\351)549 954 MS (b)572 954 MS (u)596 954 MS (t)621 954 MS ( )636 954 MS (d)650 954 MS (e)675 954 MS ( )697 954 MS (c)711 954 MS (e)733 954 MS ( )755 954 MS (d)769 954 MS (o)794 954 MS (c)820 954 MS (u)842 954 MS (m)868 954 MS
+(e)905 954 MS (n)928 954 MS (t)952 954 MS (,)967 954 MS ( )980 954 MS (l)995 954 MS (\222)1007 954 MS (O)1023 954 MS (R)1060 954 MS (B)1093 954 MS ( )1126 954 MS (p)1140 954 MS (a)1165 954 MS (r)1187 954 MS (a)1204 954 MS (l)1227 954 MS
+(l)1241 954 MS (\350)1255 954 MS (l)1278 954 MS (e)1290 954 MS ( )1312 954 MS (n)1327 954 MS (\222)1352 954 MS (e)1368 954 MS (n)1391 954 MS ( )1415 954 MS (e)1430 954 MS (s)1452 954 MS (t)1471 954 MS ( )1486 954 MS (q)1500 954 MS (u)1525 954 MS
+(\222)1550 954 MS (\340)1566 954 MS ( )1588 954 MS (l)1603 954 MS (\222)1616 954 MS (\351)1633 954 MS (t)1655 954 MS (a)1670 954 MS (t)1692 954 MS ( )1707 954 MS (d)1721 954 MS (e)1746 954 MS ( )1768 954 MS (r)1782 954 MS (e)1799 954 MS (c)1821 954 MS
+(h)1843 954 MS (e)1867 954 MS (r)1889 954 MS (c)1906 954 MS (h)1929 954 MS (e)1953 954 MS (,)1975 954 MS ( )1988 954 MS (m)2003 954 MS (\352)2041 954 MS (m)2064 954 MS
+(e)2102 954 MS ( )2125 954 MS
+(s)235 1012 MS (i)255 1012 MS ( )267 1012 MS (l)286 1012 MS (\222)299 1012 MS (O)316 1012 MS (M)352 1012 MS (G)396 1012 MS ( )432 1012 MS (a)450 1012 MS ( )472 1012 MS (d)490 1012 MS (\351)515 1012 MS (c)537 1012 MS (i)560 1012 MS (d)573 1012 MS
+(\351)598 1012 MS ( )620 1012 MS (s)638 1012 MS (o)657 1012 MS (n)683 1012 MS ( )707 1012 MS (i)726 1012 MS (n)739 1012 MS (t)763 1012 MS (r)778 1012 MS (o)795 1012 MS (d)821 1012 MS (u)846 1012 MS (c)871 1012 MS (t)892 1012 MS (i)907 1012 MS
+(o)919 1012 MS (n)945 1012 MS ( )969 1012 MS (d)987 1012 MS (a)1012 1012 MS (n)1035 1012 MS (s)1059 1012 MS ( )1078 1012 MS (l)1097 1012 MS (a)1110 1012 MS ( )1132 1012 MS (n)1150 1012 MS (o)1174 1012 MS (r)1200 1012 MS (m)1218 1012 MS (e)1256 1012 MS
+( )1278 1012 MS (C)1296 1012 MS (O)1329 1012 MS (R)1365 1012 MS (B)1398 1012 MS (A)1432 1012 MS (,)1467 1012 MS ( )1480 1012 MS (e)1498 1012 MS (t)1520 1012 MS ( )1535 1012 MS (d)1553 1012 MS (\351)1578 1012 MS (f)1600 1012 MS (i)1616 1012 MS (n)1629 1012 MS
+(i)1654 1012 MS ( )1667 1012 MS (u)1685 1012 MS (n)1711 1012 MS ( )1735 1012 MS (c)1753 1012 MS (e)1775 1012 MS (r)1797 1012 MS (t)1814 1012 MS (a)1829 1012 MS (i)1852 1012 MS (n)1865 1012 MS ( )1889 1012 MS (n)1907 1012 MS (o)1931 1012 MS (m)1958 1012 MS
+(b)1996 1012 MS (r)2020 1012 MS (e)2037 1012 MS ( )2059 1012 MS (d)2077 1012 MS (e)2102 1012 MS ( )2125 1012 MS
+(s)235 1069 MS (p)254 1069 MS (\351)279 1069 MS (c)301 1069 MS (i)324 1069 MS (f)337 1069 MS (i)354 1069 MS (c)367 1069 MS (a)390 1069 MS (t)412 1069 MS (i)427 1069 MS (o)439 1069 MS (n)465 1069 MS (s)490 1069 MS ( )509 1069 MS ([)522 1069 MS
+(9)539 1069 MS (])564 1069 MS (.)581 1069 MS
+( )594 1069 MS
+(U)348 1127 MS (n)384 1127 MS (e)408 1127 MS ( )430 1127 MS (a)445 1127 MS (p)467 1127 MS (p)492 1127 MS (r)517 1127 MS (o)534 1127 MS (c)560 1127 MS (h)582 1127 MS (e)606 1127 MS ( )628 1127 MS (s)643 1127 MS (i)663 1127 MS (m)677 1127 MS
+(p)715 1127 MS (l)741 1127 MS (e)754 1127 MS ( )776 1127 MS (c)791 1127 MS (o)813 1127 MS (n)839 1127 MS (s)863 1127 MS (i)883 1127 MS (s)896 1127 MS (t)915 1127 MS (e)930 1127 MS (r)952 1127 MS (a)969 1127 MS (i)992 1127 MS (t)1004 1127 MS
+( )1019 1127 MS (\340)1034 1127 MS ( )1056 1127 MS (d)1071 1127 MS (\351)1096 1127 MS (l)1119 1127 MS (\351)1131 1127 MS (g)1153 1127 MS (u)1178 1127 MS (e)1204 1127 MS (r)1226 1127 MS ( )1243 1127 MS (a)1258 1127 MS (u)1280 1127 MS ( )1305 1127 MS (p)1320 1127 MS
+(r)1345 1127 MS (o)1361 1127 MS (c)1387 1127 MS (e)1409 1127 MS (s)1431 1127 MS (s)1450 1127 MS (u)1469 1127 MS (s)1494 1127 MS ( )1513 1127 MS (m)1529 1127 MS (a)1566 1127 MS (\356)1589 1127 MS (t)1601 1127 MS (r)1616 1127 MS (e)1633 1127 MS ( )1655 1127 MS
+(l)1671 1127 MS (\222)1684 1127 MS (\351)1701 1127 MS (c)1723 1127 MS (h)1746 1127 MS (a)1770 1127 MS (n)1793 1127 MS (g)1817 1127 MS (e)1842 1127 MS ( )1864 1127 MS (d)1879 1127 MS (e)1904 1127 MS (s)1926 1127 MS ( )1945 1127 MS (d)1960 1127 MS (o)1985 1127 MS
+(n)2011 1127 MS (n)2036 1127 MS (\351)2060 1127 MS (e)2082 1127 MS (s)2105 1127 MS ( )2125 1127 MS
+(p)235 1184 MS (a)260 1184 MS (r)282 1184 MS (a)299 1184 MS (l)322 1184 MS (l)335 1184 MS (\350)348 1184 MS (l)371 1184 MS (e)384 1184 MS (s)407 1184 MS (.)426 1184 MS ( )439 1184 MS (L)452 1184 MS (\222)482 1184 MS (i)499 1184 MS (n)512 1184 MS
+(t)536 1184 MS (\351)551 1184 MS (g)573 1184 MS (r)598 1184 MS (a)615 1184 MS (t)637 1184 MS (i)653 1184 MS (o)665 1184 MS (n)691 1184 MS ( )715 1184 MS (d)728 1184 MS (\222)753 1184 MS (u)769 1184 MS (n)795 1184 MS ( )819 1184 MS (c)832 1184 MS
+(o)854 1184 MS (m)881 1184 MS (p)918 1184 MS (o)943 1184 MS (s)969 1184 MS (a)988 1184 MS (n)1011 1184 MS (t)1035 1184 MS ( )1050 1184 MS (p)1063 1184 MS (a)1088 1184 MS (r)1110 1184 MS (a)1127 1184 MS (l)1149 1184 MS (l)1162 1184 MS (\350)1175 1184 MS
+(l)1198 1184 MS (e)1211 1184 MS ( )1233 1184 MS (d)1247 1184 MS (a)1272 1184 MS (n)1294 1184 MS (s)1319 1184 MS ( )1338 1184 MS (l)1352 1184 MS (\222)1365 1184 MS (e)1381 1184 MS (n)1404 1184 MS (v)1429 1184 MS
+(i)1454 1184 MS (r)1467 1184 MS (o)1484 1184 MS (n)1510 1184 MS (n)1535 1184 MS (e)1559 1184 MS (m)1582 1184 MS (e)1620 1184 MS (n)1643 1184 MS (t)1667 1184 MS ( )1682 1184 MS (S)1695 1184 MS (A)1723 1184 MS (L)1758 1184 MS (O)1788 1184 MS (M)1825 1184 MS
+(E)1869 1184 MS ( )1900 1184 MS (s)1913 1184 MS (e)1932 1184 MS (r)1954 1184 MS (a)1971 1184 MS (i)1994 1184 MS (t)2006 1184 MS ( )2021 1184 MS (a)2034 1184 MS (i)2057 1184 MS (s)2070 1184 MS (\351)2089 1184 MS (.)2111 1184 MS ( )2125 1184 MS
+(P)235 1242 MS (a)263 1242 MS (r)285 1242 MS ( )302 1242 MS (c)315 1242 MS (o)337 1242 MS (n)363 1242 MS (t)386 1242 MS (r)401 1242 MS (e)418 1242 MS (,)440 1242 MS ( )453 1242 MS (i)466 1242 MS (l)479 1242 MS ( )491 1242 MS (y)505 1242 MS
+( )529 1242 MS (a)542 1242 MS (u)564 1242 MS (r)589 1242 MS (a)606 1242 MS (i)629 1242 MS (t)641 1242 MS ( )656 1242 MS (u)669 1242 MS (n)694 1242 MS ( )718 1242 MS (p)731 1242 MS (r)756 1242 MS (o)773 1242 MS (b)799 1242 MS (l)824 1242 MS
+(\350)837 1242 MS (m)860 1242 MS (e)898 1242 MS ( )920 1242 MS (d)933 1242 MS (e)958 1242 MS ( )980 1242 MS (p)993 1242 MS (e)1018 1242 MS (r)1040 1242 MS (f)1058 1242 MS (o)1073 1242 MS (r)1099 1242 MS (m)1116 1242 MS (a)1154 1242 MS (n)1177 1242 MS
+(c)1201 1242 MS (e)1223 1242 MS ( )1246 1242 MS (n)1259 1242 MS (o)1283 1242 MS (n)1309 1242 MS ( )1333 1242 MS (n)1346 1242 MS (\351)1371 1242 MS (g)1393 1242 MS (l)1419 1242 MS (i)1432 1242 MS (g)1445 1242 MS (e)1471 1242 MS (a)1493 1242 MS (b)1516 1242 MS
+(l)1541 1242 MS (e)1554 1242 MS ( )1576 1242 MS (d)1589 1242 MS (a)1614 1242 MS (n)1637 1242 MS (s)1661 1242 MS ( )1680 1242 MS (l)1694 1242 MS (\222)1707 1242 MS (\351)1724 1242 MS (c)1746 1242 MS (h)1769 1242 MS (a)1793 1242 MS (n)1816 1242 MS (g)1840 1242 MS
+(e)1865 1242 MS ( )1887 1242 MS (d)1900 1242 MS (e)1925 1242 MS ( )1947 1242 MS (d)1960 1242 MS (o)1985 1242 MS (n)2011 1242 MS (n)2036 1242 MS (\351)2060 1242 MS (e)2082 1242 MS (s)2105 1242 MS ( )2125 1242 MS
+(d)235 1299 MS (i)261 1299 MS (s)273 1299 MS (t)292 1299 MS (r)307 1299 MS (i)325 1299 MS (b)338 1299 MS (u)362 1299 MS (\351)387 1299 MS (e)409 1299 MS (s)432 1299 MS (.)451 1299 MS
+( )464 1299 MS
+( )348 1357 MS
+(L)348 1414 MS (a)378 1414 MS ( )400 1414 MS (m)414 1414 MS (\351)451 1414 MS (t)473 1414 MS (h)488 1414 MS (o)512 1414 MS (d)538 1414 MS (e)563 1414 MS ( )585 1414 MS (p)598 1414 MS (r)623 1414 MS (o)640 1414 MS (p)666 1414 MS (o)690 1414 MS
+(s)716 1414 MS (\351)735 1414 MS (e)757 1414 MS ( )779 1414 MS (d)792 1414 MS (a)817 1414 MS (n)839 1414 MS (s)863 1414 MS ( )882 1414 MS (c)895 1414 MS (e)917 1414 MS ( )939 1414 MS (d)952 1414 MS (o)977 1414 MS (c)1003 1414 MS (u)1025 1414 MS
+(m)1050 1414 MS (e)1087 1414 MS (n)1110 1414 MS (t)1134 1414 MS ( )1149 1414 MS (p)1162 1414 MS (o)1187 1414 MS (u)1213 1414 MS (r)1237 1414 MS ( )1254 1414 MS (i)1267 1414 MS (n)1280 1414 MS (t)1304 1414 MS (r)1319 1414 MS (o)1335 1414 MS (d)1360 1414 MS
+(u)1385 1414 MS (i)1411 1414 MS (r)1423 1414 MS (e)1440 1414 MS ( )1462 1414 MS (l)1476 1414 MS (a)1488 1414 MS ( )1510 1414 MS (n)1524 1414 MS (o)1548 1414 MS (t)1574 1414 MS (i)1589 1414 MS (o)1601 1414 MS (n)1627 1414 MS ( )1651 1414 MS (d)1664 1414 MS
+(e)1689 1414 MS ( )1711 1414 MS (c)1724 1414 MS (o)1746 1414 MS (m)1772 1414 MS (p)1809 1414 MS (o)1834 1414 MS (s)1860 1414 MS (a)1879 1414 MS (n)1902 1414 MS (t)1926 1414 MS ( )1941 1414 MS (p)1954 1414 MS (a)1979 1414 MS (r)2001 1414 MS (a)2018 1414 MS
+(l)2040 1414 MS (l)2053 1414 MS (\350)2066 1414 MS (l)2089 1414 MS (e)2102 1414 MS ( )2125 1414 MS
+(d)235 1472 MS (a)260 1472 MS (n)282 1472 MS (s)307 1472 MS ( )326 1472 MS (l)349 1472 MS (a)362 1472 MS ( )384 1472 MS (p)406 1472 MS (l)432 1472 MS (a)445 1472 MS (t)467 1472 MS (e)482 1472 MS
+(-)504 1472 MS
+(f)521 1472 MS (o)536 1472 MS (r)562 1472 MS (m)579 1472 MS (e)617 1472 MS ( )639 1472 MS (S)661 1472 MS (A)689 1472 MS (L)725 1472 MS (O)755 1472 MS (M)792 1472 MS (E)836 1472 MS ( )867 1472 MS (e)889 1472 MS (s)911 1472 MS (t)930 1472 MS
+( )945 1472 MS (s)967 1472 MS
+(u)986 1472 MS (f)1012 1472 MS (f)1028 1472 MS (i)1044 1472 MS (s)1057 1472 MS (a)1077 1472 MS (m)1100 1472 MS (m)1139 1472 MS (e)1177 1472 MS (n)1200 1472 MS (t)1224 1472 MS ( )1239 1472 MS (g)1261 1472 MS (\351)1286 1472 MS (n)1308 1472 MS (\351)1332 1472 MS
+(r)1354 1472 MS (a)1371 1472 MS (l)1394 1472 MS (e)1407 1472 MS ( )1429 1472 MS (p)1451 1472 MS (o)1476 1472 MS (u)1502 1472 MS (r)1527 1472 MS ( )1544 1472 MS (p)1566 1472 MS (e)1591 1472 MS (r)1613 1472 MS (m)1630 1472 MS (e)1668 1472 MS (t)1690 1472 MS
+(t)1704 1472 MS (r)1719 1472 MS (e)1736 1472 MS ( )1758 1472 MS (\340)1780 1472 MS ( )1802 1472 MS (d)1824 1472 MS (e)1849 1472 MS (u)1871 1472 MS (x)1896 1472 MS ( )1920 1472 MS (c)1942 1472 MS (o)1964 1472 MS (d)1990 1472 MS (e)2015 1472 MS (s)2037 1472 MS
+( )2056 1472 MS (d)2078 1472 MS (e)2103 1472 MS ( )2125 1472 MS
+(c)235 1529 MS (a)257 1529 MS (l)280 1529 MS (c)292 1529 MS (u)314 1529 MS (l)340 1529 MS (s)353 1529 MS ( )373 1529 MS (p)392 1529 MS (a)417 1529 MS (r)439 1529 MS (a)456 1529 MS (l)479 1529 MS (l)493 1529 MS (\350)506 1529 MS (l)529 1529 MS
+(e)542 1529 MS (s)564 1529 MS ( )583 1529 MS (c)602 1529 MS (h)625 1529 MS (a)650 1529 MS (r)672 1529 MS (g)689 1529 MS (\351)714 1529 MS (s)736 1529 MS ( )755 1529 MS (s)774 1529 MS (u)793 1529 MS (r)818 1529 MS ( )835 1529 MS (d)854 1529 MS
+(e)879 1529 MS (u)901 1529 MS (x)927 1529 MS ( )951 1529 MS (m)971 1529 MS (a)1009 1529 MS (c)1031 1529 MS (h)1054 1529 MS (i)1079 1529 MS (n)1092 1529 MS (e)1117 1529 MS (s)1140 1529 MS ( )1159 1529 MS (d)1178 1529 MS (i)1204 1529 MS (f)1217 1529 MS
+(f)1234 1529 MS (\351)1251 1529 MS (r)1273 1529 MS (e)1290 1529 MS (n)1312 1529 MS (t)1336 1529 MS (e)1351 1529 MS (s)1373 1529 MS (,)1392 1529 MS ( )1405 1529 MS (d)1424 1529 MS (\222)1449 1529 MS (\351)1465 1529 MS (c)1487 1529 MS (h)1510 1529 MS (a)1534 1529 MS
+(n)1557 1529 MS (g)1581 1529 MS (e)1606 1529 MS (r)1628 1529 MS ( )1645 1529 MS (d)1664 1529 MS (e)1689 1529 MS (s)1712 1529 MS ( )1731 1529 MS (d)1750 1529 MS (o)1775 1529 MS (n)1801 1529 MS (n)1826 1529 MS (\351)1850 1529 MS (e)1872 1529 MS (s)1894 1529 MS
+( )1913 1529 MS (p)1932 1529 MS (a)1957 1529 MS (r)1979 1529 MS (a)1996 1529 MS (l)2019 1529 MS (l)2033 1529 MS (\350)2046 1529 MS (l)2069 1529 MS (e)2082 1529 MS (s)2105 1529 MS ( )2125 1529 MS
+(t)235 1586 MS (o)249 1586 MS (u)275 1586 MS (t)299 1586 MS ( )313 1586 MS (e)331 1586 MS (n)353 1586 MS ( )377 1586 MS (o)395 1586 MS (p)421 1586 MS (t)445 1586 MS (i)460 1586 MS (m)473 1586 MS (i)512 1586 MS (s)525 1586 MS (a)544 1586 MS
+(n)567 1586 MS (t)591 1586 MS ( )606 1586 MS (l)625 1586 MS (e)637 1586 MS (u)659 1586 MS (r)684 1586 MS ( )701 1586 MS (t)719 1586 MS (r)734 1586 MS (a)751 1586 MS (n)773 1586 MS (s)797 1586 MS (f)817 1586 MS (e)832 1586 MS (r)854 1586 MS
+(t)871 1586 MS ( )886 1586 MS (s)904 1586 MS (u)923 1586 MS (r)948 1586 MS ( )965 1586 MS (l)983 1586 MS (e)996 1586 MS ( )1018 1586 MS (r)1036 1586 MS (\351)1053 1586 MS (s)1075 1586 MS (e)1094 1586 MS (a)1116 1586 MS (u)1138 1586 MS (,)1163 1586 MS
+( )1176 1586 MS (\340)1194 1586 MS ( )1216 1586 MS (c)1234 1586 MS (o)1256 1586 MS (n)1282 1586 MS (d)1306 1586 MS (i)1332 1586 MS (t)1344 1586 MS (i)1360 1586 MS (o)1372 1586 MS (n)1398 1586 MS ( )1422 1586 MS (q)1440 1586 MS (u)1465 1586 MS (e)1490 1586 MS
+( )1512 1586 MS (l)1531 1586 MS (a)1543 1586 MS ( )1565 1586 MS (d)1583 1586 MS (i)1609 1586 MS (s)1622 1586 MS (c)1641 1586 MS (r)1663 1586 MS (\351)1680 1586 MS (t)1702 1586 MS (i)1718 1586 MS (s)1731 1586 MS (a)1750 1586 MS (t)1772 1586 MS (i)1787 1586 MS
+(o)1799 1586 MS (n)1825 1586 MS ( )1849 1586 MS (d)1867 1586 MS (u)1892 1586 MS ( )1917 1586 MS (p)1935 1586 MS (r)1960 1586 MS (o)1977 1586 MS (b)2003 1586 MS (l)2028 1586 MS (\350)2041 1586 MS (m)2064 1586 MS (e)2102 1586 MS ( )2125 1586 MS
+(t)235 1644 MS (r)250 1644 MS (a)267 1644 MS (i)289 1644 MS (t)301 1644 MS (\351)316 1644 MS ( )338 1644 MS (s)352 1644 MS (o)371 1644 MS (i)397 1644 MS (t)409 1644 MS ( )424 1644 MS (i)439 1644 MS (d)451 1644 MS (e)476 1644 MS (n)499 1644 MS
+(t)523 1644 MS
+(i)539 1644 MS (q)551 1644 MS (u)576 1644 MS (e)601 1644 MS ( )623 1644 MS (d)637 1644 MS (a)662 1644 MS (n)685 1644 MS (s)709 1644 MS ( )728 1644 MS (c)742 1644 MS (e)765 1644 MS (s)787 1644 MS ( )806 1644 MS (d)820 1644 MS (e)845 1644 MS
+(u)867 1644 MS (x)893 1644 MS ( )917 1644 MS (p)931 1644 MS (r)956 1644 MS (o)973 1644 MS (g)999 1644 MS (r)1024 1644 MS (a)1041 1644 MS (m)1063 1644 MS (m)1101 1644 MS (e)1139 1644 MS (s)1162 1644 MS (.)1181 1644 MS ( )1194 1644 MS (L)1208 1644 MS
+(\222)1239 1644 MS (i)1256 1644 MS (n)1269 1644 MS (c)1294 1644 MS (o)1316 1644 MS (n)1342 1644 MS (v)1367 1644 MS (\351)1391 1644 MS (n)1414 1644 MS (i)1439 1644 MS (e)1452 1644 MS (n)1475 1644 MS (t)1499 1644 MS ( )1514 1644 MS (d)1528 1644 MS (e)1553 1644 MS
+( )1575 1644 MS (l)1590 1644 MS (a)1602 1644 MS ( )1624 1644 MS (m)1639 1644 MS (\351)1677 1644 MS (t)1699 1644 MS (h)1714 1644 MS (o)1738 1644 MS (d)1764 1644 MS (e)1789 1644 MS ( )1811 1644 MS (e)1825 1644 MS (x)1847 1644 MS (p)1871 1644 MS (l)1897 1644 MS
+(i)1911 1644 MS (q)1924 1644 MS (u)1949 1644 MS (\351)1974 1644 MS (e)1997 1644 MS ( )2019 1644 MS (d)2033 1644 MS (a)2058 1644 MS (n)2081 1644 MS (s)2105 1644 MS ( )2125 1644 MS
+(c)235 1701 MS (e)257 1701 MS ( )279 1701 MS (d)297 1701 MS (o)322 1701 MS (c)348 1701 MS (u)370 1701 MS (m)396 1701 MS (e)433 1701 MS (n)456 1701 MS (t)480 1701 MS ( )495 1701 MS (p)513 1701 MS (o)538 1701 MS (u)564 1701 MS (r)588 1701 MS
+( )605 1701 MS (i)623 1701 MS (n)636 1701 MS (t)660 1701 MS (r)675 1701 MS (o)692 1701 MS (d)718 1701 MS (u)743 1701 MS (i)768 1701 MS (r)780 1701 MS (e)797 1701 MS ( )819 1701 MS (l)838 1701 MS (a)851 1701 MS ( )873 1701 MS (n)892 1701 MS
+(o)916 1701 MS (t)942 1701 MS (i)957 1701 MS (o)969 1701 MS (n)995 1701 MS ( )1019 1701 MS (d)1037 1701 MS (e)1062 1701 MS ( )1084 1701 MS (c)1102 1701 MS (o)1124 1701 MS (m)1151 1701 MS (p)1188 1701 MS (o)1213 1701 MS (s)1239 1701 MS (a)1258 1701 MS
+(n)1280 1701 MS (t)1304 1701 MS ( )1319 1701 MS (p)1337 1701 MS (a)1362 1701 MS (r)1384 1701 MS (a)1401 1701 MS (l)1424 1701 MS (l)1437 1701 MS (\350)1450 1701 MS (l)1473 1701 MS (e)1486 1701 MS ( )1508 1701 MS (d)1526 1701 MS (a)1551 1701 MS (n)1574 1701 MS
+(s)1599 1701 MS ( )1618 1701 MS (S)1636 1701 MS (A)1665 1701 MS (L)1700 1701 MS (O)1731 1701 MS (M)1767 1701 MS (E)1811 1701 MS ( )1842 1701 MS (\340)1860 1701 MS ( )1882 1701 MS (l)1901 1701 MS (\222)1914 1701 MS (a)1931 1701 MS (i)1954 1701 MS (d)1966 1701 MS
+(e)1992 1701 MS ( )2014 1701 MS (d)2032 1701 MS (\222)2057 1701 MS (u)2073 1701 MS (n)2100 1701 MS ( )2125 1701 MS
+(O)235 1759 MS (R)271 1759 MS (B)304 1759 MS ( )337 1759 MS (s)357 1759 MS (\351)376 1759 MS (q)398 1759 MS (u)423 1759 MS (e)449 1759 MS (n)472 1759 MS (t)496 1759 MS (i)511 1759 MS (e)524 1759 MS (l)547 1759 MS (,)559 1759 MS ( )572 1759 MS
+(e)592 1759 MS (s)615 1759 MS (t)634 1759 MS ( )649 1759 MS (q)669 1759 MS (u)694 1759 MS (e)719 1759 MS ( )741 1759 MS (t)761 1759 MS (o)775 1759 MS (u)801 1759 MS (t)825 1759 MS (e)840 1759 MS ( )862 1759 MS (l)882 1759 MS (a)894 1759 MS
+( )916 1759 MS (m)937 1759 MS (\351)975 1759 MS (c)997 1759 MS (a)1019 1759 MS (n)1042 1759 MS (i)1067 1759 MS (q)1080 1759 MS (u)1105 1759 MS (e)1131 1759 MS ( )1153 1759 MS (d)1173 1759 MS (e)1198 1759 MS ( )1220 1759 MS (g)1241 1759 MS (e)1266 1759 MS
+(s)1288 1759 MS (t)1307 1759 MS (i)1322 1759 MS (o)1334 1759 MS (n)1360 1759 MS ( )1384 1759 MS (d)1404 1759 MS (u)1429 1759 MS ( )1455 1759 MS (p)1475 1759 MS (a)1500 1759 MS (r)1522 1759 MS (a)1539 1759 MS (l)1562 1759 MS (l)1575 1759 MS (\351)1588 1759 MS
+(l)1611 1759 MS (i)1625 1759 MS (s)1638 1759 MS (m)1659 1759 MS (e)1697 1759 MS ( )1719 1759 MS (e)1739 1759 MS (s)1762 1759 MS (t)1781 1759 MS ( )1796 1759 MS (i)1816 1759 MS (n)1829 1759 MS (c)1854 1759 MS (l)1877 1759 MS (u)1889 1759 MS (s)1915 1759 MS
+(e)1934 1759 MS ( )1956 1759 MS (d)1976 1759 MS (a)2001 1759 MS (n)2024 1759 MS (s)2049 1759 MS ( )2068 1759 MS (l)2089 1759 MS (e)2102 1759 MS ( )2125 1759 MS
+(c)235 1816 MS (o)257 1816 MS (m)283 1816 MS (p)320 1816 MS
+(o)345 1816 MS (s)371 1816 MS (a)390 1816 MS (n)413 1816 MS (t)437 1816 MS ( )452 1816 MS (p)468 1816 MS (a)493 1816 MS (r)515 1816 MS (a)532 1816 MS (l)555 1816 MS (l)568 1816 MS (\350)581 1816 MS (l)604 1816 MS (e)617 1816 MS (.)639 1816 MS
+( )652 1816 MS (E)668 1816 MS (l)700 1816 MS (l)713 1816 MS (e)726 1816 MS ( )748 1816 MS (e)765 1816 MS (s)787 1816 MS (t)806 1816 MS ( )821 1816 MS (d)837 1816 MS (o)862 1816 MS (n)888 1816 MS (c)912 1816 MS ( )934 1816 MS (e)950 1816 MS
+(n)973 1816 MS (t)997 1816 MS (i)1013 1816 MS (\350)1025 1816 MS (r)1047 1816 MS (e)1064 1816 MS (m)1087 1816 MS (e)1125 1816 MS (n)1148 1816 MS (t)1172 1816 MS ( )1187 1816 MS (\340)1203 1816 MS ( )1225 1816 MS (l)1242 1816 MS (a)1255 1816 MS ( )1277 1816 MS
+(c)1293 1816 MS (h)1316 1816 MS (a)1340 1816 MS (r)1362 1816 MS (g)1379 1816 MS (e)1404 1816 MS ( )1426 1816 MS (d)1442 1816 MS (e)1467 1816 MS ( )1489 1816 MS (l)1506 1816 MS (\222)1519 1816 MS (u)1536 1816 MS (t)1561 1816 MS (i)1577 1816 MS (l)1590 1816 MS
+(i)1603 1816 MS (s)1616 1816 MS (a)1636 1816 MS (t)1658 1816 MS (e)1673 1816 MS (u)1695 1816 MS (r)1720 1816 MS ( )1737 1816 MS (q)1753 1816 MS (u)1778 1816 MS (i)1804 1816 MS ( )1816 1816 MS (d)1832 1816 MS (\351)1857 1816 MS (s)1880 1816 MS (i)1900 1816 MS
+(r)1912 1816 MS (e)1930 1816 MS ( )1952 1816 MS (i)1969 1816 MS (n)1982 1816 MS (t)2006 1816 MS (\351)2021 1816 MS (g)2043 1816 MS (r)2068 1816 MS (e)2085 1816 MS (r)2107 1816 MS ( )2125 1816 MS
+(s)235 1874 MS (o)254 1874 MS (n)280 1874 MS ( )304 1874 MS (c)317 1874 MS (o)339 1874 MS (d)365 1874 MS (e)390 1874 MS ( )412 1874 MS (d)425 1874 MS (a)450 1874 MS (n)473 1874 MS (s)497 1874 MS ( )517 1874 MS (l)531 1874 MS (a)544 1874 MS
+( )566 1874 MS (p)579 1874 MS (l)605 1874 MS (a)618 1874 MS (t)640 1874 MS (e)655 1874 MS
+(-)677 1874 MS
+(f)695 1874 MS (o)710 1874 MS (r)736 1874 MS (m)753 1874 MS (e)790 1874 MS ( )813 1874 MS (S)826 1874 MS (A)855 1874 MS (L)890 1874 MS (O)920 1874 MS (M)957 1874 MS (E)1001 1874 MS (,)1032 1874 MS ( )1045 1874 MS (m)1059 1874 MS (\352)1096 1874 MS
+(m)1119 1874 MS (e)1157 1874 MS ( )1180 1874 MS (s)1193 1874 MS (i)1213 1874 MS ( )1226 1874 MS (c)1241 1874 MS (e)1263 1874 MS (r)1285 1874 MS (t)1302 1874 MS (a)1317 1874 MS (i)1339 1874 MS (n)1352 1874 MS (e)1376 1874 MS (s)1399 1874 MS ( )1418 1874 MS
+(f)1432 1874 MS (o)1447 1874 MS (n)1474 1874 MS (c)1498 1874 MS (t)1520 1874 MS (i)1536 1874 MS (o)1548 1874 MS (n)1574 1874 MS (n)1599 1874 MS (a)1623 1874 MS (l)1646 1874 MS (i)1660 1874 MS (t)1672 1874 MS (\351)1687 1874 MS (s)1709 1874 MS ( )1729 1874 MS
+(s)1742 1874 MS (o)1761 1874 MS (n)1787 1874 MS (t)1811 1874 MS ( )1826 1874 MS (i)1840 1874 MS (n)1853 1874 MS (t)1877 1874 MS (\351)1892 1874 MS (g)1914 1874 MS (r)1939 1874 MS (\351)1956 1874 MS (e)1978 1874 MS (s)2000 1874 MS ( )2019 1874 MS (d)2032 1874 MS
+(a)2057 1874 MS (n)2080 1874 MS (s)2105 1874 MS ( )2125 1874 MS
+(l)235 1931 MS (\222)248 1931 MS (o)264 1931 MS (b)291 1931 MS (j)316 1931 MS (e)329 1931 MS (t)351 1931 MS ( )366 1931 MS (p)380 1931 MS (a)405 1931 MS (r)427 1931 MS (a)444 1931 MS (l)466 1931 MS (l)479 1931 MS (\350)492 1931 MS (l)515 1931 MS
+(e)528 1931 MS ( )550 1931 MS (g)564 1931 MS (\351)589 1931 MS (n)612 1931 MS (\351)636 1931 MS (r)658 1931 MS (i)676 1931 MS (q)689 1931 MS (u)714 1931 MS (e)739 1931 MS (.)761 1931 MS ( )774 1931 MS (E)788 1931 MS (n)819 1931 MS (f)844 1931 MS
+(i)860 1931 MS (n)873 1931 MS ( )897 1931 MS (l)912 1931 MS (e)925 1931 MS ( )947 1931 MS ( )961 1931 MS (t)975 1931 MS (r)990 1931 MS (a)1007 1931 MS (i)1029 1931 MS (t)1041 1931 MS (e)1056 1931 MS (m)1079 1931 MS (e)1116 1931 MS (n)1139 1931 MS
+(t)1163 1931 MS ( )1178 1931 MS (d)1192 1931 MS (e)1217 1931 MS (s)1239 1931 MS ( )1258 1931 MS (e)1272 1931 MS (x)1294 1931 MS (c)1318 1931 MS (e)1340 1931 MS (p)1362 1931 MS (t)1387 1931 MS (i)1403 1931 MS (o)1415 1931 MS (n)1441 1931 MS (s)1465 1931 MS
+( )1484 1931 MS (n)1499 1931 MS (\222)1524 1931 MS (a)1540 1931 MS ( )1562 1931 MS (p)1576 1931 MS (a)1601 1931 MS (s)1623 1931 MS ( )1642 1931 MS
+(\351)1656 1931 MS (t)1678 1931 MS (\351)1693 1931 MS ( )1715 1931 MS (d)1729 1931 MS (u)1754 1931 MS ( )1779 1931 MS (t)1792 1931 MS (o)1806 1931 MS (u)1832 1931 MS (t)1856 1931 MS ( )1870 1931 MS (a)1884 1931 MS (b)1906 1931 MS (o)1930 1931 MS (r)1956 1931 MS
+(d)1973 1931 MS (\351)1998 1931 MS ( )2020 1931 MS (d)2034 1931 MS (a)2059 1931 MS (n)2081 1931 MS (s)2105 1931 MS ( )2125 1931 MS
+(c)235 1989 MS (e)257 1989 MS (t)279 1989 MS (t)293 1989 MS (e)308 1989 MS ( )330 1989 MS (\351)365 1989 MS (t)386 1989 MS (u)401 1989 MS (d)426 1989 MS (e)451 1989 MS (,)473 1989 MS ( )485 1989 MS (e)520 1989 MS (t)541 1989 MS ( )556 1989 MS
+(d)591 1989 MS (e)616 1989 MS (m)638 1989 MS (a)675 1989 MS (n)698 1989 MS (d)722 1989 MS (e)748 1989 MS ( )770 1989 MS (\340)805 1989 MS ( )827 1989 MS (\352)862 1989 MS (t)884 1989 MS (r)899 1989 MS (e)916 1989 MS ( )938 1989 MS (r)972 1989 MS
+(e)989 1989 MS (g)1011 1989 MS (a)1036 1989 MS (r)1058 1989 MS (d)1075 1989 MS (\351)1100 1989 MS ( )1122 1989 MS (\()1157 1989 MS (n)1174 1989 MS (o)1198 1989 MS (t)1223 1989 MS (a)1237 1989 MS (m)1260 1989 MS (m)1298 1989 MS (e)1336 1989 MS (n)1359 1989 MS
+(t)1383 1989 MS ( )1398 1989 MS (a)1433 1989 MS (v)1455 1989 MS (e)1479 1989 MS (c)1501 1989 MS ( )1523 1989 MS (l)1559 1989 MS (\222)1572 1989 MS (u)1588 1989 MS (t)1613 1989 MS (i)1629 1989 MS (l)1642 1989 MS (i)1656 1989 MS (s)1669 1989 MS (a)1689 1989 MS
+(t)1711 1989 MS (i)1726 1989 MS (o)1738 1989 MS (n)1764 1989 MS ( )1788 1989 MS (d)1823 1989 MS (e)1848 1989 MS ( )1870 1989 MS (p)1905 1989 MS (r)1930 1989 MS (o)1947 1989 MS (c)1973 1989 MS (\351)1995 1989 MS (d)2017 1989 MS (u)2042 1989 MS (r)2067 1989 MS
+(e)2084 1989 MS (s)2106 1989 MS ( )2125 1989 MS
+(a)235 2046 MS (s)257 2046 MS (y)277 2046 MS (n)301 2046 MS (c)326 2046 MS (h)349 2046 MS (r)373 2046 MS (o)390 2046 MS (n)416 2046 MS (e)440 2046 MS (s)462 2046 MS ( )481 2046 MS (d)494 2046 MS (e)519 2046 MS ( )541 2046 MS (t)554 2046 MS
+(y)569 2046 MS (p)592 2046 MS (e)617 2046 MS ( )639 2046 MS (o)652 2046 MS (n)678 2046 MS (e)702 2046 MS (w)724 2046 MS (a)760 2046 MS (y)783 2046 MS ( )807 2046 MS (p)820 2046 MS (o)845 2046 MS (u)871 2046 MS (r)896 2046 MS ( )913 2046 MS
+(m)926 2046 MS (e)963 2046 MS (t)985 2046 MS (t)1000 2046 MS (r)1014 2046 MS (e)1031 2046 MS ( )1053 2046 MS (e)1066 2046 MS (n)1088 2046 MS ( )1112 2046 MS (\234)1125 2046 MS (u)1161 2046 MS (v)1186 2046 MS (r)1210 2046 MS (e)1227 2046 MS ( )1250 2046 MS
+(l)1263 2046 MS (e)1276 2046 MS ( )1298 2046 MS (p)1311 2046 MS (a)1336 2046 MS (r)1358 2046 MS (a)1375 2046 MS (l)1398 2046 MS (l)1411 2046 MS (\351)1424 2046 MS (l)1447 2046 MS (i)1461 2046 MS (s)1474 2046 MS (m)1494 2046 MS (e)1532 2046 MS (\))1554 2046 MS
+(.)1571 2046 MS
+( )1584 2046 MS
+( )235 2104 MS
+(L)348 2161 MS (a)378 2161 MS ( )400 2161 MS (p)413 2161 MS (h)438 2161 MS (a)462 2161 MS (s)485 2161 MS (e)504 2161 MS ( )526 2161 MS (s)539 2161 MS (u)558 2161 MS (i)584 2161 MS (v)597 2161 MS (a)622 2161 MS (n)645 2161 MS (t)669 2161 MS
+(e)684 2161 MS ( )706 2161 MS (c)719 2161 MS (o)741 2161 MS (n)767 2161 MS (s)791 2161 MS (i)811 2161 MS (s)824 2161 MS (t)843 2161 MS (e)858 2161 MS (r)880 2161 MS (a)897 2161 MS ( )919 2161 MS (\340)932 2161 MS ( )954 2161 MS (t)966 2161 MS
+(r)980 2161 MS (a)997 2161 MS (i)1019 2161 MS (t)1031 2161 MS (e)1046 2161 MS (r)1068 2161 MS ( )1085 2161 MS (u)1098 2161 MS (n)1123 2161 MS ( )1147 2161 MS (c)1160 2161 MS (a)1182 2161 MS (s)1204 2161 MS ( )1223 2161 MS (r)1236 2161 MS (\351)1253 2161 MS
+(a)1275 2161 MS (l)1298 2161 MS (i)1311 2161 MS (s)1324 2161 MS (t)1343 2161 MS (e)1359 2161 MS ( )1381 2161 MS (p)1394 2161 MS (o)1419 2161 MS (u)1445 2161 MS (r)1469 2161 MS ( )1486 2161 MS (l)1499 2161 MS (a)1511 2161 MS ( )1533 2161 MS (D)1546 2161 MS
+(E)1582 2161 MS (N)1613 2161 MS (,)1649 2161 MS ( )1662 2161 MS (d)1675 2161 MS (e)1700 2161 MS ( )1722 2161 MS (c)1735 2161 MS (o)1756 2161 MS (u)1782 2161 MS (p)1807 2161 MS (l)1832 2161 MS (a)1844 2161 MS (g)1866 2161 MS (e)1891 2161 MS ( )1913 2161 MS
+(d)1926 2161 MS (e)1951 2161 MS
+( )1973 2161 MS (c)1986 2161 MS (o)2008 2161 MS (d)2034 2161 MS (e)2059 2161 MS (s)2081 2161 MS ( )2100 2161 MS
+(p)235 2219 MS (a)260 2219 MS (r)282 2219 MS (a)299 2219 MS (l)322 2219 MS (l)335 2219 MS (\350)348 2219 MS (l)371 2219 MS (e)384 2219 MS (s)407 2219 MS ( )426 2219 MS (q)439 2219 MS (u)464 2219 MS (i)490 2219 MS ( )502 2219 MS (\351)515 2219 MS
+(c)537 2219 MS (h)560 2219 MS (a)584 2219 MS (n)607 2219 MS (g)631 2219 MS (e)656 2219 MS (r)678 2219 MS (o)695 2219 MS (n)721 2219 MS (t)745 2219 MS ( )760 2219 MS (d)773 2219 MS (e)798 2219 MS (s)820 2219 MS ( )839 2219 MS (m)852 2219 MS
+(a)889 2219 MS (i)912 2219 MS (l)926 2219 MS (l)940 2219 MS (a)953 2219 MS (g)975 2219 MS (e)1000 2219 MS (s)1023 2219 MS ( )1042 2219 MS (e)1055 2219 MS (t)1077 2219 MS ( )1092 2219 MS (d)1105 2219 MS (e)1130 2219 MS (s)1152 2219 MS ( )1171 2219 MS
+(c)1184 2219 MS (h)1206 2219 MS (a)1230 2219 MS (m)1252 2219 MS (p)1290 2219 MS (s)1315 2219 MS ( )1334 2219 MS (d)1347 2219 MS (i)1373 2219 MS (s)1386 2219 MS (t)1405 2219 MS (r)1420 2219 MS (i)1438 2219 MS (b)1451 2219 MS (u)1475 2219 MS (\351)1500 2219 MS
+(s)1522 2219 MS ( )1541 2219 MS (s)1554 2219 MS (u)1573 2219 MS (r)1598 2219 MS ( )1615 2219 MS (d)1628 2219 MS (i)1654 2219 MS (f)1667 2219 MS (f)1684 2219 MS (\351)1700 2219 MS (r)1722 2219 MS (e)1739 2219 MS (n)1762 2219 MS (t)1786 2219 MS (s)1801 2219 MS
+( )1820 2219 MS (p)1833 2219 MS (r)1858 2219 MS (o)1874 2219 MS (c)1900 2219 MS (e)1922 2219 MS (s)1944 2219 MS (s)1963 2219 MS (e)1982 2219 MS (u)2004 2219 MS (r)2029 2219 MS (s)2046 2219 MS (.)2065 2219 MS
+( )2078 2219 MS
+showpage
+%%Page: 30 30
+14.449 827.879 translate 72 300 div dup neg scale
+0 0 transform .25 add round .25 sub exch .25 add round .25 sub exch itransform translate
+1 j
+1 setlinecap
+72 sl
+0.375 g
+n
+494 182 M
+494 155 472 133 445 133 c
+418 133 396 155 396 182 c
+396 209 418 231 445 231 c
+472 231 494 209 494 182 c
+cp
+CM 0.156 0.152 scale
+s
+SM
+71 sl
+n
+660 182 M
+660 155 638 133 611 133 c
+584 133 562 155 562 182 c
+562 209 584 231 611 231 c
+638 231 660 209 660 182 c
+cp
+CM 0.156 0.152 scale
+s
+SM
+n
+120 24 468 152 B
+1 g
+f
+1 sl
+n
+122 26 467 151 B
+cp
+s
+71 sl
+0.375 g
+n
+577 180 M
+577 153 555 131 528 131 c
+501 131 479 153 479 180 c
+479 206 501 228 528 228 c
+555 228 577 206 577 180 c
+cp
+gs
+1 g
+e
+gr
+CM 0.156 0.152 scale
+s
+SM
+n
+480 180 M
+575 180 L
+CM 0.156 0.152 scale
+s
+SM
+n
+34 18 562 187 B
+1 g
+f
+1 sl
+n
+36 20 561 186 B
+cp
+s
+n
+610 173 M
+591 173 L
+554 124 L
+579 126 L
+609 173 L
+610 173 L
+cp
+gs
+e
+gr
+s
+n
+448 170 M
+468 170 L
+504 122 L
+479 123 L
+449 170 L
+448 170 L
+cp
+gs
+e
+gr
+s
+0.375 g
+n
+473 140 M
+473 137 470 135 467 135 c
+464 135 462 137 462 140 c
+462 142 464 145 467 145 c
+470 145 473 142 473 140 c
+cp
+gs
+e
+gr
+s
+n
+593 139 M
+593 136 590 134 588 134 c
+585 134 583 136 583 139 c
+583 141 585 144 588 144 c
+590 144 593 141 593 139 c
+cp
+gs
+e
+gr
+s
+72 sl
+n
+665 137 M
+665 229 L
+CM 0.156 0.152 scale
+s
+SM
+[29 0 0 -29 0 0]/Times-Roman MF
+0 g
+( )676 243 MS
+[50 0 0 -50 0 0]/Times-Roman MF
+(D)400 289 MS (E)436 289 MS (N)467 289 MS ( )503 289 MS ( )516 289 MS (S)529 289 MS (a)557 289 MS (c)579 289 MS (l)601 289 MS (a)613 289 MS (y)636 289 MS
+( )660 289 MS
+( )1297 140 MS
+[38 0 0 -38 0 0]/Times-Roman MF
+(S)1785 129 MS (F)1806 129 MS (M)1827 129 MS (E)1861 129 MS (/)1883 129 MS (L)1894 129 MS (G)1916 129 MS (L)1943 129 MS (S)1965 129 MS (/)1986 129 MS (R)1997 129 MS (T)2022 129 MS (/)2045 129 MS (0)2056 129 MS (2)2075 129 MS
+(-)2094 129 MS
+(0)2106 129 MS (0)2125 129 MS (2)2144 129 MS
+( )2163 129 MS
+(D)1785 173 MS (a)1812 173 MS (t)1829 173 MS (e)1840 173 MS
+( )1856 173 MS
+(:)1866 173 MS
+( )1875 173 MS
+(3)1885 173 MS (0)1904 173 MS (/)1923 173 MS (0)1934 173 MS (5)1952 173 MS (/)1971 173 MS (2)1982 173 MS (0)2000 173 MS (0)2019 173 MS (2)2038 173 MS
+( )2057 173 MS
+n
+5 5 232 89 B
+f
+n
+5 5 232 89 B
+f
+n
+584 5 238 89 B
+f
+n
+5 5 823 89 B
+f
+n
+938 5 829 89 B
+f
+n
+5 5 1768 89 B
+f
+n
+436 5 1774 89 B
+f
+n
+5 5 2211 89 B
+f
+n
+5 5 2211 89 B
+f
+n
+5 256 232 95 B
+f
+n
+2 256 823 95 B
+f
+n
+2 256 1768 95 B
+f
+n
+5 256 2211 95 B
+f
+[50 0 0 -50 0 0]/Times-Roman MF
+(D)322 400 MS (M)358 400 MS (2)402 400 MS (S)427 400 MS (/)455 400 MS (S)469 400 MS (F)497 400 MS (M)524 400 MS (E)568 400 MS (/)599 400 MS (L)613 400 MS (G)643 400 MS (L)680 400 MS (S)710 400 MS
+( )738 400 MS
+[50 0 0 -50 0 0]/Times-Bold MF
+gs
+n
+241 53 1102 367 CB
+(R)1102 413 MS (A)1138 413 MS (P)1174 413 MS (P)1204 413 MS (O)1234 413 MS (R)1273 413 MS (T)1310 413 MS
+gr
+gs
+n
+150 53 1343 367 CB
+( )1343 413 MS (D)1356 413 MS (M)1392 413 MS (2)1440 413 MS (S)1465 413 MS
+gr
+[50 0 0 -50 0 0]/Times-Roman MF
+gs
+n
+24 52 1493 368 CB
+( )1493 413 MS
+gr
+[38 0 0 -38 0 0]/Times-Roman MF
+(P)1785 400 MS (a)1806 400 MS (g)1823 400 MS (e)1841 400 MS ( )1858 400 MS
+[50 0 0 -50 0 0]/Times-Roman MF
+(3)1868 400 MS (0)1893 400 MS
+(/)1918 400 MS
+(3)1932 400 MS (0)1957 400 MS
+[38 0 0 -38 0 0]/Times-Roman MF
+( )1982 400 MS
+n
+5 2 232 352 B
+f
+n
+2 2 823 352 B
+f
+n
+941 2 826 352 B
+f
+n
+2 2 1768 352 B
+f
+n
+5 2 2211 352 B
+f
+n
+5 67 232 355 B
+f
+n
+590 1 232 423 B
+f
+n
+2 67 823 355 B
+f
+n
+1 1 823 423 B
+f
+n
+942 1 825 423 B
+f
+n
+2 67 1768 355 B
+f
+n
+1 1 1768 423 B
+f
+n
+440 1 1770 423 B
+f
+n
+5 67 2211 355 B
+f
+n
+5 1 2211 423 B
+f
+[50 0 0 -50 0 0]/Times-Roman MF
+( )235 470 MS
+[33 0 0 -33 0 0]/Times-Roman MF
+/IsChar{exch/CharStrings get exch known}bd/MapCh{3 -1 roll/Encoding get 3 1\r
+roll put}bd/MapDegree{dup 16#b0 exch/degree IsChar{/degree}{/ring}ifelse MapCh}\r
+bd/MapBB{dup 16#a6 exch/brokenbar IsChar{/brokenbar}{/bar}ifelse MapCh}bd\r
+/reencode{findfont begin currentdict dup length dict begin{1 index/FID ne{def}\r
+{pop pop}ifelse}forall/FontName exch def dup length 0 ne{/Encoding Encoding 256\r
+array copy def 0 exch{dup type/nametype eq{Encoding 2 index 2 index put pop 1\r
+add}{exch pop}ifelse}forall}if pop currentdict dup end end/FontName get exch\r
+definefont dup MapDegree MapBB}bd/LATENC[0/grave/acute/circumflex/tilde/macron\r
+/breve/dotaccent/dieresis/ring/cedilla/hungarumlaut/ogonek/caron/dotlessi/fi/fl\r
+/Lslash/lslash/Zcaron/zcaron/minus/.notdef/.notdef/.notdef/.notdef/.notdef\r
+/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/space/exclam/quotedbl\r
+/numbersign/dollar/percent/ampersand/quotesingle/parenleft/parenright/asterisk\r
+/plus/comma/hyphen/period/slash/zero/one/two/three/four/five/six/seven/eight\r
+/nine/colon/semicolon/less/equal/greater/question/at/A/B/C/D/E/F/G/H/I/J/K/L/M\r
+/N/O/P/Q/R/S/T/U/V/W/X/Y/Z/bracketleft/backslash/bracketright/asciicircum\r
+/underscore/grave/a/b/c/d/e/f/g/h/i/j/k/l/m/n/o/p/q/r/s/t/u/v/w/x/y/z/braceleft\r
+/bar/braceright/asciitilde/.notdef/.notdef/.notdef/quotesinglbase/florin\r
+/quotedblbase/ellipsis/dagger/daggerdbl/circumflex/perthousand/Scaron\r
+/guilsinglleft/OE/.notdef/.notdef/.notdef/.notdef/quoteleft/quoteright\r
+/quotedblleft/quotedblright/bullet/endash/emdash/tilde/trademark/scaron\r
+/guilsinglright/oe/.notdef/.notdef/Ydieresis/.notdef/exclamdown/cent/sterling\r
+/currency/yen/brokenbar/section/dieresis/copyright/ordfeminine/guillemotleft\r
+/logicalnot/hyphen/registered/macron/degree/plusminus/twosuperior/threesuperior\r
+/acute/mu/paragraph/periodcentered/cedilla/onesuperior/ordmasculine\r
+/guillemotright/onequarter/onehalf/threequarters/questiondown/Agrave/Aacute\r
+/Acircumflex/Atilde/Adieresis/Aring/AE/Ccedilla/Egrave/Eacute/Ecircumflex\r
+/Edieresis/Igrave/Iacute/Icircumflex/Idieresis/Eth/Ntilde/Ograve/Oacute\r
+/Ocircumflex/Otilde/Odieresis/multiply/Oslash/Ugrave/Uacute/Ucircumflex\r
+/Udieresis/Yacute/Thorn/germandbls/agrave/aacute/acircumflex/atilde/adieresis\r
+/aring/ae/ccedilla/egrave/eacute/ecircumflex/edieresis/igrave/iacute\r
+/icircumflex/idieresis/eth/ntilde/ograve/oacute/ocircumflex/otilde/odieresis\r
+/divide/oslash/ugrave/uacute/ucircumflex/udieresis/yacute/thorn/ydieresis]def\r
+LATENC /_Times-Roman /Times-Roman reencode
+[33 0 0 -33 0 0]/_Times-Roman MF
+(L)242 3256 MS (e)262 3256 MS (s)277 3256 MS ( )289 3256 MS (i)298 3256 MS (n)307 3256 MS (f)324 3256 MS (o)335 3256 MS (r)351 3256 MS (m)363 3256 MS (a)388 3256 MS (t)403 3256 MS (i)412 3256 MS (o)422 3256 MS (n)439 3256 MS (s)456 3256 MS
+( )468 3256 MS (c)477 3256 MS (o)492 3256 MS (n)508 3256 MS (t)524 3256 MS (e)534 3256 MS (n)549 3256 MS (u)565 3256 MS (e)582 3256 MS (s)597 3256 MS ( )610 3256 MS (d)618 3256 MS (a)634 3256 MS (n)650 3256 MS (s)667 3256 MS ( )679 3256 MS
+(c)688 3256 MS (e)703 3256 MS ( )717 3256 MS (d)726 3256 MS (o)742 3256 MS (c)759 3256 MS (u)773 3256 MS (m)791 3256 MS (e)817 3256 MS (n)831 3256 MS (t)847 3256 MS ( )857 3256 MS (s)866 3256 MS (o)878 3256 MS (n)895 3256 MS (t)911 3256 MS
+( )921 3256 MS (r)929 3256 MS (\351)941 3256 MS (s)956 3256 MS (e)968 3256 MS (r)982 3256 MS (v)994 3256 MS (\351)1011 3256 MS (e)1026 3256 MS (s)1041 3256 MS ( )1053 3256 MS (a)1061 3256 MS (u)1076 3256 MS (x)1093 3256 MS ( )1109 3256 MS (d)1118 3256 MS
+(e)1135 3256 MS (s)1150 3256 MS (t)1162 3256 MS (i)1171 3256 MS (n)1181 3256 MS (a)1197 3256 MS (t)1212 3256 MS (a)1221 3256 MS (i)1236 3256 MS (r)1245 3256 MS (e)1257 3256 MS (s)1272 3256 MS ( )1284 3256 MS (n)1293 3256 MS (o)1309 3256 MS (m)1326 3256 MS
+(m)1352 3256 MS (\351)1378 3256 MS (m)1393 3256 MS (e)1419 3256 MS (n)1433 3256 MS (t)1450 3256 MS ( )1459 3256 MS (d)1468 3256 MS (\351)1484 3256 MS (s)1499 3256 MS (i)1512 3256 MS (g)1521 3256 MS
+(n)1538 3256 MS (\351)1555 3256 MS (s)1570 3256 MS ( )1582 3256 MS (e)1591 3256 MS (t)1605 3256 MS ( )1615 3256 MS (n)1623 3256 MS (e)1640 3256 MS ( )1654 3256 MS (p)1663 3256 MS (e)1680 3256 MS (u)1694 3256 MS (v)1711 3256 MS (e)1728 3256 MS (n)1743 3256 MS
+(t)1759 3256 MS ( )1768 3256 MS (r)1776 3256 MS (e)1788 3256 MS (c)1803 3256 MS (e)1818 3256 MS (v)1832 3256 MS (o)1849 3256 MS (i)1865 3256 MS (r)1874 3256 MS ( )1886 3256 MS (a)1894 3256 MS (u)1909 3256 MS (c)1926 3256 MS (u)1940 3256 MS (n)1957 3256 MS
+(e)1974 3256 MS ( )1988 3256 MS (d)1997 3256 MS (i)2013 3256 MS (f)2023 3256 MS (f)2034 3256 MS (u)2044 3256 MS (s)2062 3256 MS (i)2074 3256 MS (o)2084 3256 MS (n)2101 3256 MS
+( )2117 3256 MS
+(s)928 3294 MS (a)940 3294 MS (n)955 3294 MS (s)972 3294 MS ( )985 3294 MS (l)993 3294 MS (\222)1002 3294 MS (a)1013 3294 MS (u)1028 3294 MS (t)1045 3294 MS (o)1054 3294 MS (r)1071 3294 MS (i)1082 3294 MS (s)1092 3294 MS (a)1104 3294 MS (t)1119 3294 MS
+(i)1128 3294 MS (o)1138 3294 MS (n)1154 3294 MS ( )1171 3294 MS (e)1180 3294 MS (x)1194 3294 MS (p)1211 3294 MS (r)1227 3294 MS (e)1239 3294 MS (s)1254 3294 MS (s)1267 3294 MS (e)1280 3294 MS ( )1294 3294 MS (d)1303 3294 MS (u)1319 3294 MS ( )1336 3294 MS
+(D)1344 3294 MS (M)1368 3294 MS (2)1397 3294 MS (S)1414 3294 MS
+[50 0 0 -50 0 0]/Times-Roman MF
+( )1432 3294 MS
+[67 0 0 -67 0 0]/Helvetica-Bold MF
+(1)310 592 MS (1)347 592 MS
+( )384 592 MS
+LATENC /_Helvetica-Bold /Helvetica-Bold reencode
+[67 0 0 -67 0 0]/_Helvetica-Bold MF
+(R)400 592 MS (\351)448 592 MS (f)485 592 MS (\351)507 592 MS (r)544 592 MS (e)570 592 MS (n)607 592 MS (c)648 592 MS (e)685 592 MS (s)722 592 MS
+( )759 592 MS
+[50 0 0 -50 0 0]/Times-Roman MF
+( )235 667 MS
+( )235 724 MS
+( )235 782 MS
+([)235 839 MS (1)252 839 MS (])277 839 MS ( )294 839 MS
+0 0 1 r
+(h)307 839 MS (t)331 839 MS (t)345 839 MS (p)360 839 MS (:)384 839 MS (/)398 839 MS (/)412 839 MS (w)426 839 MS (w)462 839 MS (w)498 839 MS (.)534 839 MS (o)546 839 MS (p)572 839 MS (e)597 839 MS (n)619 839 MS (c)643 839 MS
+(a)665 839 MS (s)687 839 MS (c)706 839 MS (a)728 839 MS (d)750 839 MS (e)776 839 MS (.)798 839 MS (o)811 839 MS (r)837 839 MS (g)854 839 MS (/)879 839 MS (S)892 839 MS (A)920 839 MS (L)955 839 MS (O)985 839 MS (M)1022 839 MS
+(E)1066 839 MS (/)1097 839 MS (D)1111 839 MS (o)1147 839 MS (c)1173 839 MS (s)1195 839 MS (/)1214 839 MS (I)1228 839 MS (n)1244 839 MS (d)1268 839 MS (e)1293 839 MS (x)1316 839 MS (2)1340 839 MS (.)1365 839 MS (h)1379 839 MS (t)1403 839 MS
+(m)1418 839 MS (l)1456 839 MS
+n
+1161 1 307 844 B
+f
+0 g
+( )1469 839 MS
+([)235 897 MS (2)252 897 MS (])277 897 MS ( )294 897 MS
+0 0 1 r
+(h)307 897 MS (t)331 897 MS (t)345 897 MS (p)360 897 MS (:)384 897 MS (/)398 897 MS (/)412 897 MS (w)426 897 MS (w)462 897 MS (w)498 897 MS (.)534 897 MS (c)547 897 MS (o)568 897 MS (r)594 897 MS (b)611 897 MS (a)635 897 MS
+(.)657 897 MS (o)670 897 MS (r)695 897 MS (g)712 897 MS
+n
+429 1 307 902 B
+f
+0 g
+( )737 897 MS
+LATENC /_Times-Roman /Times-Roman reencode
+[50 0 0 -50 0 0]/_Times-Roman MF
+([)235 954 MS (3)252 954 MS (])277 954 MS ( )294 954 MS (\253)307 954 MS
+( )331 954 MS
+(C)344 954 MS (O)377 954 MS (R)413 954 MS (B)446 954 MS (A)480 954 MS ( )515 954 MS (D)528 954 MS (e)564 954 MS (s)586 954 MS ( )605 954 MS (c)618 954 MS (o)640 954 MS (n)666 954 MS (c)690 954 MS (e)712 954 MS (p)734 954 MS
+(t)759 954 MS (s)774 954 MS ( )793 954 MS (\340)806 954 MS ( )828 954 MS (l)841 954 MS (a)853 954 MS ( )875 954 MS (p)888 954 MS (r)913 954 MS (a)930 954 MS (t)952 954 MS (i)968 954 MS (q)980 954 MS (u)1005 954 MS (e)1030 954 MS
+( )1052 954 MS
+(\273)1065 954 MS ( )1089 954 MS
+(-)1102 954 MS
+( )1119 954 MS (J)1132 954 MS (M)1151 954 MS (.)1195 954 MS ( )1208 954 MS
+(G)1221 954 MS (e)1257 954 MS (i)1280 954 MS (b)1293 954 MS (,)1317 954 MS ( )1330 954 MS (C)1343 954 MS (h)1376 954 MS (.)1400 954 MS ( )1413 954 MS
+(G)1426 954 MS (r)1462 954 MS (a)1479 954 MS (n)1501 954 MS (s)1526 954 MS (a)1545 954 MS (r)1567 954 MS (t)1584 954 MS ( )1599 954 MS (e)1612 954 MS (t)1633 954 MS ( )1648 954 MS (P)1660 954 MS (h)1688 954 MS (.)1712 954 MS ( )1725 954 MS
+(M)1738 954 MS (e)1782 954 MS (r)1804 954 MS (l)1822 954 MS (e)1834 954 MS (,)1856 954 MS ( )1869 954 MS (D)1882 954 MS (U)1918 954 MS (N)1954 954 MS (O)1990 954 MS (D)2026 954 MS ( )2062 954 MS
+(\226)2075 954 MS
+( )2100 954 MS
+(1)235 1012 MS (9)260 1012 MS (9)285 1012 MS (9)310 1012 MS
+( )335 1012 MS
+([)235 1069 MS (4)252 1069 MS (])277 1069 MS ( )294 1069 MS
+0 0 1 r
+(h)307 1069 MS (t)331 1069 MS (t)345 1069 MS (p)360 1069 MS (:)384 1069 MS (/)398 1069 MS (/)412 1069 MS (w)426 1069 MS (w)462 1069 MS (w)498 1069 MS (.)534 1069 MS (o)546 1069 MS (m)572 1069 MS (g)609 1069 MS (.)634 1069 MS (o)647 1069 MS
+(r)673 1069 MS (g)690 1069 MS (/)715 1069 MS
+(t)728 1069 MS (e)743 1069 MS (c)765 1069 MS (h)787 1069 MS (p)811 1069 MS (r)836 1069 MS (o)853 1069 MS (c)879 1069 MS (e)901 1069 MS (s)923 1069 MS (s)942 1069 MS (/)961 1069 MS (m)976 1069 MS (e)1013 1069 MS (e)1035 1069 MS (t)1057 1069 MS
+(i)1073 1069 MS (n)1086 1069 MS (g)1110 1069 MS (s)1136 1069 MS (/)1155 1069 MS (s)1169 1069 MS (c)1188 1069 MS (h)1211 1069 MS (e)1235 1069 MS (d)1258 1069 MS (u)1283 1069 MS (l)1309 1069 MS (e)1321 1069 MS (/)1343 1069 MS (P)1357 1069 MS (a)1385 1069 MS
+(r)1407 1069 MS (a)1424 1069 MS (l)1447 1069 MS (l)1461 1069 MS (e)1474 1069 MS (l)1497 1069 MS (_)1510 1069 MS (P)1535 1069 MS (r)1563 1069 MS (o)1580 1069 MS (c)1606 1069 MS (e)1628 1069 MS (s)1650 1069 MS (s)1669 1069 MS (i)1689 1069 MS (n)1702 1069 MS
+(g)1726 1069 MS (_)1751 1069 MS (R)1777 1069 MS (F)1810 1069 MS (P)1837 1069 MS (.)1865 1069 MS (h)1879 1069 MS (t)1903 1069 MS (m)1918 1069 MS (l)1956 1069 MS
+n
+1661 1 307 1074 B
+f
+0 g
+( )1969 1069 MS
+([)235 1127 MS (5)252 1127 MS (])277 1127 MS ( )294 1127 MS
+0 0 1 r
+(h)307 1127 MS (t)331 1127 MS (t)345 1127 MS (p)360 1127 MS (:)384 1127 MS (/)398 1127 MS (/)412 1127 MS (w)426 1127 MS (w)462 1127 MS (w)498 1127 MS (.)534 1127 MS (i)547 1127 MS (r)559 1127 MS (i)577 1127 MS (s)590 1127 MS (a)609 1127 MS
+(.)631 1127 MS (f)645 1127 MS (r)660 1127 MS (/)677 1127 MS (p)691 1127 MS (a)716 1127 MS (r)738 1127 MS (i)756 1127 MS (s)769 1127 MS (/)788 1127 MS (n)803 1127 MS (a)827 1127 MS (n)850 1127 MS (g)874 1127 MS (l)900 1127 MS (a)913 1127 MS
+(i)936 1127 MS (s)949 1127 MS (/)968 1127 MS (p)982 1127 MS (a)1008 1127 MS (c)1030 1127 MS (o)1052 1127 MS (.)1078 1127 MS (h)1091 1127 MS (t)1115 1127 MS (m)1130 1127 MS
+n
+859 1 307 1132 B
+f
+0 g
+( )1167 1127 MS
+([)235 1184 MS (6)252 1184 MS (])277 1184 MS ( )294 1184 MS
+0 0 1 r
+(h)307 1184 MS (t)331 1184 MS (t)345 1184 MS (p)360 1184 MS (:)384 1184 MS (/)398 1184 MS (/)412 1184 MS (w)426 1184 MS (w)462 1184 MS (w)498 1184 MS (.)534 1184 MS (c)547 1184 MS (s)569 1184 MS
+(.)588 1184 MS (i)601 1184 MS (n)614 1184 MS (d)638 1184 MS (i)664 1184 MS (a)677 1184 MS (n)700 1184 MS (a)724 1184 MS (.)746 1184 MS (e)759 1184 MS (d)781 1184 MS (u)806 1184 MS (/)831 1184 MS (h)846 1184 MS (y)871 1184 MS (p)895 1184 MS
+(l)921 1184 MS (a)934 1184 MS (n)957 1184 MS (/)981 1184 MS (k)995 1184 MS (k)1020 1184 MS (s)1045 1184 MS (i)1065 1184 MS (a)1078 1184 MS (z)1101 1184 MS (e)1123 1184 MS (k)1145 1184 MS (/)1170 1184 MS (p)1184 1184 MS (a)1209 1184 MS (r)1231 1184 MS
+(d)1248 1184 MS (i)1274 1184 MS (s)1286 1184 MS (.)1305 1184 MS (h)1319 1184 MS (t)1343 1184 MS (m)1359 1184 MS (l)1397 1184 MS
+n
+1101 1 307 1189 B
+f
+0 g
+( )1409 1184 MS
+([)235 1242 MS (7)252 1242 MS (])277 1242 MS ( )294 1242 MS
+0 0 1 r
+(h)307 1242 MS (t)331 1242 MS (t)345 1242 MS (p)360 1242 MS (:)384 1242 MS (/)398 1242 MS (/)412 1242 MS (w)426 1242 MS (w)462 1242 MS (w)498 1242 MS (.)534 1242 MS (c)547 1242 MS (e)569 1242 MS (t)590 1242 MS (u)605 1242 MS (s)630 1242 MS
+(-)649 1242 MS
+(l)666 1242 MS (i)679 1242 MS (n)692 1242 MS (k)717 1242 MS (s)743 1242 MS (.)762 1242 MS (o)775 1242 MS (r)801 1242 MS (g)818 1242 MS
+n
+535 1 307 1247 B
+f
+0 g
+( )843 1242 MS
+([)235 1299 MS (8)252 1299 MS (])277 1299 MS ( )294 1299 MS (\253)307 1299 MS (N)331 1299 MS (u)367 1299 MS (m)393 1299 MS (e)430 1299 MS (r)452 1299 MS (i)470 1299 MS (c)483 1299 MS (a)505 1299 MS (l)528 1299 MS ( )540 1299 MS (P)553 1299 MS
+(l)582 1299 MS (a)595 1299 MS (t)617 1299 MS (o)632 1299 MS (n)658 1299 MS ( )682 1299 MS (u)695 1299 MS (s)720 1299 MS (e)739 1299 MS (r)761 1299 MS (s)778 1299 MS ( )797 1299 MS (g)810 1299 MS (u)835 1299 MS (i)861 1299 MS (d)873 1299 MS
+(e)898 1299 MS ( )920 1299 MS (a)933 1299 MS (n)956 1299 MS (d)980 1299 MS ( )1005 1299 MS (r)1018 1299 MS (e)1035 1299 MS (f)1057 1299 MS (e)1073 1299 MS (r)1095 1299 MS (e)1112 1299 MS (n)1135 1299 MS (c)1159 1299 MS (e)1181 1299 MS ( )1203 1299 MS
+(m)1217 1299 MS (a)1255 1299 MS (n)1277 1299 MS (u)1301 1299 MS (a)1326 1299 MS (l)1349 1299 MS (\273)1362 1299 MS ( )1387 1299 MS
+(-)1400 1299 MS
+( )1417 1299 MS (L)1430 1299 MS (.)1460 1299 MS ( )1473 1299 MS (C)1486 1299 MS (o)1519 1299 MS (l)1545 1299 MS (o)1557 1299 MS (m)1584 1299 MS (b)1622 1299 MS (e)1646 1299 MS (t)1668 1299 MS ( )1683 1299 MS (e)1696 1299 MS (t)1717 1299 MS ( )1732 1299 MS
+(B)1745 1299 MS (.)1778 1299 MS ( )1790 1299 MS (S)1803 1299 MS (\351)1831 1299 MS (c)1853 1299 MS (h)1875 1299 MS (e)1899 1299 MS (r)1921 1299 MS ( )1938 1299 MS
+(C)235 1357 MS (E)268 1357 MS (A)299 1357 MS (/)334 1357 MS (D)348 1357 MS (E)384 1357 MS (N)415 1357 MS (/)451 1357 MS (D)465 1357 MS (M)501 1357 MS (2)545 1357 MS (S)570 1357 MS (/)598 1357 MS (S)612 1357 MS (F)640 1357 MS (M)668 1357 MS
+(E)712 1357 MS (/)743 1357 MS (L)757 1357 MS (G)787 1357 MS (L)823 1357 MS (S)853 1357 MS (/)881 1357 MS (R)895 1357 MS (T)928 1357 MS (/)959 1357 MS (0)973 1357 MS (1)998 1357 MS
+(-)1023 1357 MS
+(0)1040 1357 MS (0)1065 1357 MS (1)1090 1357 MS ( )1115 1357 MS (d)1128 1357 MS (u)1153 1357 MS ( )1178 1357 MS (9)1191 1357 MS ( )1216 1357 MS (m)1228 1357 MS (a)1266 1357 MS (r)1288 1357 MS (s)1305 1357 MS ( )1324 1357 MS (2)1337 1357 MS (0)1362 1357 MS
+(0)1387 1357 MS (1)1412 1357 MS
+( )1437 1357 MS
+([)235 1414 MS (9)252 1414 MS (])277 1414 MS ( )294 1414 MS
+0 0 1 r
+(h)307 1414 MS (t)331 1414 MS (t)345 1414 MS (p)360 1414 MS (:)384 1414 MS (/)398 1414 MS (/)412 1414 MS (c)426 1414 MS (g)448 1414 MS (i)473 1414 MS (.)485 1414 MS (o)498 1414 MS (m)525 1414 MS (g)562 1414 MS (.)587 1414 MS (o)600 1414 MS
+(r)626 1414 MS (g)643 1414 MS (/)668 1414 MS (c)682 1414 MS (g)704 1414 MS (i)729 1414 MS
+(-)741 1414 MS
+(b)758 1414 MS (i)783 1414 MS (n)796 1414 MS (/)821 1414 MS (d)835 1414 MS (o)860 1414 MS (c)886 1414 MS (?)909 1414 MS (o)930 1414 MS (r)956 1414 MS (b)973 1414 MS (o)997 1414 MS (s)1023 1414 MS (/)1042 1414 MS (0)1056 1414 MS (0)1081 1414 MS
+(-)1106 1414 MS
+(0)1123 1414 MS (8)1148 1414 MS
+(-)1173 1414 MS
+(1)1190 1414 MS (1)1215 1414 MS
+n
+931 1 307 1419 B
+f
+0 g
+( )1239 1414 MS
+([)235 1472 MS (1)252 1472 MS (0)277 1472 MS (])302 1472 MS ( )319 1472 MS
+0 0 1 r
+(h)332 1472 MS (t)356 1472 MS (t)370 1472 MS (p)385 1472 MS (:)409 1472 MS (/)423 1472 MS (/)437 1472 MS
+(l)451 1472 MS (i)464 1472 MS (f)478 1472 MS (c)494 1472 MS (.)516 1472 MS (u)529 1472 MS (n)554 1472 MS (i)579 1472 MS (v)592 1472 MS
+(-)617 1472 MS
+(f)635 1472 MS (c)651 1472 MS (o)673 1472 MS (m)700 1472 MS (t)737 1472 MS (e)752 1472 MS (.)774 1472 MS (f)787 1472 MS (r)802 1472 MS (/)819 1472 MS (~)833 1472 MS (p)860 1472 MS (h)885 1472 MS (i)910 1472 MS (l)924 1472 MS (i)938 1472 MS
+(p)951 1472 MS (p)976 1472 MS (e)1001 1472 MS (/)1023 1472 MS (c)1037 1472 MS (o)1059 1472 MS (m)1086 1472 MS (p)1123 1472 MS (o)1148 1472 MS (s)1174 1472 MS (a)1193 1472 MS (n)1216 1472 MS (t)1240 1472 MS (s)1255 1472 MS (/)1274 1472 MS (p)1288 1472 MS
+(a)1313 1472 MS
+(p)1335 1472 MS (i)1361 1472 MS (e)1374 1472 MS (r)1396 1472 MS (s)1413 1472 MS (/)1432 1472 MS (J)1446 1472 MS (C)1465 1472 MS (2)1498 1472 MS (0)1523 1472 MS (0)1548 1472 MS (1)1573 1472 MS (_)1598 1472 MS (a)1624 1472 MS (r)1646 1472 MS (t)1663 1472 MS
+(i)1678 1472 MS (c)1690 1472 MS (l)1713 1472 MS (e)1726 1472 MS (_)1748 1472 MS (P)1773 1472 MS (e)1801 1472 MS (r)1823 1472 MS (e)1840 1472 MS (z)1862 1472 MS (.)1884 1472 MS (p)1897 1472 MS (s)1922 1472 MS
+n
+1608 1 332 1477 B
+f
+0 g
+( )1941 1472 MS
+([)235 1529 MS (1)252 1529 MS (1)277 1529 MS (])302 1529 MS ( )319 1529 MS
+0 0 1 r
+(h)332 1529 MS (t)356 1529 MS (t)370 1529 MS (p)385 1529 MS (:)409 1529 MS (/)423 1529 MS (/)437 1529 MS (w)451 1529 MS (w)487 1529 MS (w)523 1529 MS (.)559 1529 MS (i)572 1529 MS (r)584 1529 MS (i)602 1529 MS (s)615 1529 MS (a)634 1529 MS
+(.)656 1529 MS (f)670 1529 MS (r)685 1529 MS (/)702 1529 MS (p)716 1529 MS (a)741 1529 MS (r)763 1529 MS (i)781 1529 MS (s)794 1529 MS (/)813 1529 MS (n)828 1529 MS (a)852 1529 MS (n)875 1529 MS (g)899 1529 MS (l)925 1529 MS (a)938 1529 MS
+(i)961 1529 MS (s)974 1529 MS (/)993 1529 MS (p)1007 1529 MS (a)1033 1529 MS (d)1055 1529 MS (i)1081 1529 MS (c)1094 1529 MS (o)1116 1529 MS (.)1142 1529 MS (h)1155 1529 MS (t)1179 1529 MS (m)1194 1529 MS
+n
+898 1 332 1534 B
+f
+0 g
+( )1231 1529 MS
+([)235 1586 MS (1)252 1586 MS (2)277 1586 MS (])302 1586 MS ( )319 1586 MS (C)332 1586 MS (o)364 1586 MS (m)390 1586 MS (p)427 1586 MS (t)452 1586 MS (e)467 1586 MS ( )489 1586 MS (r)502 1586 MS (e)519 1586 MS (n)541 1586 MS (d)565 1586 MS
+(u)590 1586 MS ( )615 1586 MS (d)628 1586 MS (e)653 1586 MS ( )675 1586 MS (r)688 1586 MS (\351)705 1586 MS (u)727 1586 MS (n)752 1586 MS (i)777 1586 MS (o)789 1586 MS (n)815 1586 MS ( )839 1586 MS (d)852 1586 MS (u)877 1586 MS ( )902 1586 MS
+(2)915 1586 MS (0)940 1586 MS ( )965 1586 MS (m)979 1586 MS (a)1016 1586 MS (r)1038 1586 MS (s)1055 1586 MS ( )1074 1586 MS (2)1087 1586 MS (0)1112 1586 MS (0)1137 1586 MS (2)1162 1586 MS (:)1187 1586 MS ( )1201 1586 MS (C)1214 1586 MS (E)1247 1586 MS
+(A)1278 1586 MS (/)1313 1586 MS (D)1327 1586 MS (E)1363 1586 MS (N)1394 1586 MS (/)1430 1586 MS (C)1444 1586 MS (A)1478 1586 MS (D)1513 1586 MS (/)1549 1586 MS (D)1563 1586 MS (T)1599 1586 MS (P)1630 1586 MS (/)1658 1586 MS (S)1672 1586 MS (M)1700 1586 MS
+(T)1744 1586 MS (H)1775 1586 MS (/)1811 1586 MS (L)1825 1586 MS (D)1855 1586 MS (T)1891 1586 MS (A)1922 1586 MS (/)1957 1586 MS (D)1971 1586 MS (O)2007 1586 MS (/)2043 1586 MS (7)2057 1586 MS (7)2082 1586 MS ( )2107 1586 MS
+(d)235 1644 MS (u)260 1644 MS ( )285 1644 MS (6)298 1644 MS ( )323 1644 MS (m)336 1644 MS (a)373 1644 MS (i)396 1644 MS ( )408 1644 MS (2)421 1644 MS (0)446 1644 MS (0)471 1644 MS (2)496 1644 MS
+( )521 1644 MS
+( )235 1701 MS
+[42 0 0 -42 0 0]/Courier MF
+( )235 1749 MS
+[50 0 0 -50 0 0]/_Times-Roman MF
+( )235 1806 MS
+showpage
+PageSV restore
+%%Trailer
+%%DocumentNeededFonts:
+%%+ Courier
+%%+ Helvetica-Bold
+%%+ Helvetica-BoldOblique
+%%+ Palatino-Bold
+%%+ Palatino-Roman
+%%+ Times-Bold
+%%+ Times-Italic
+%%+ Times-Roman
+%%DocumentSuppliedFonts:
+end
+%%Pages: 30
+%%EOF
+\ 4
\ No newline at end of file
diff --git a/doc/salome/ResourcesManagerManual.pdf b/doc/salome/ResourcesManagerManual.pdf
new file mode 100644 (file)
index 0000000..12a9a57
Binary files /dev/null and b/doc/salome/ResourcesManagerManual.pdf differ
index af163f8e1fdf0708a15161930150e5c0b4acc405..81b659adc82bae4e07a948ffe80b68093b05044d 100755 (executable)
@@ -1,9 +1,9 @@
 <html>\r
 <head>\r
-<title>SALOME reference manual</title>\r
-<meta http-equiv="content-type" content="text/html; charset=iso-8859-1">\r
+<title>KERNEL</title>\r
+\r
 <meta name="generator" content="RoboHelp by eHelp Corporation   www.ehelp.com">\r
-<meta name "description" content="WebHelp 2002">\r
+<meta name="description" content="WebHelp 5.50">\r
 </head>\r
 <body>\r
 <script language="JavaScript">\r
@@ -165,9 +165,15 @@ function FindTopicByTopicNum(nTopicNum)
        return false;\r
 }\r
 \r
+var oldPrefix = "HelpIdFromHTMLHelp_"\r
 //Find topic by topic id (alias id defined in ali file)\r
 function GetTopicNumberById(strTopicId)\r
 {\r
+   if (strTopicId.indexOf(oldPrefix) == 0)\r
+   {\r
+               strTopicId = strTopicId.substring(oldPrefix.length);\r
+   }\r
+\r
    var i = 0;\r
    var iEnd = gArrayCsh.length;\r
    for (i=0; i<iEnd; i++)\r
index 3f10e0346d0948c7728be2719a358b704d2169b4..c99390b6b0780846d22ad519569ab715976acac5 100755 (executable)
@@ -1,9 +1,9 @@
 <html>\r
 <head>\r
-<title>SALOME reference manual</title>\r
-<meta http-equiv="content-type" content="text/html; charset=iso-8859-1">\r
+<title>KERNEL</title>\r
+\r
 <meta name="generator" content="RoboHelp by eHelp Corporation   www.ehelp.com">\r
-<meta name "description" content="WebHelp 2002">\r
+<meta name="description" content="WebHelp 5.50">\r
 </head>\r
 <body>\r
 <script language="JavaScript">\r
index d2d425ac0cebc41e5c204b6439cb25a13798abdc..de2e5d955068e5135152a18b39282a1280ef05e5 100755 (executable)
-/*=(===============================================================)*/\r
-\r
-/*=(===============================================================)*/\r
-/*=(Created with RoboEditor.)=======================================*/\r
-/*=(===============================================================)*/\r
-\r
-BODY {\r
-       background-color: #ffffff;\r
-       font-family: "Times New Roman", serif;\r
-}\r
-\r
-H1 {\r
-       font-weight: bold;\r
-       font-size: 24.0pt;\r
-}\r
-\r
-/*=(Generated Code)=================================================*/\r
-/*=(WARNING: DO NOT EDIT OR DELETE THIS SECTION!)===================*/\r
-/*begin!kadov{{=====================================================*/ \r
-LI.kadov-H1 {\r
-       font-weight: bold;\r
-       font-size: 24.0pt;\r
-}\r
-/*}}end!kadov=======================================================*/ \r
-\r
-\r
-\r
-H2 {\r
-       font-weight: bold;\r
-       font-size: 18.0pt;\r
-}\r
-\r
-/*=(Generated Code)=================================================*/\r
-/*=(WARNING: DO NOT EDIT OR DELETE THIS SECTION!)===================*/\r
-/*begin!kadov{{=====================================================*/ \r
-LI.kadov-H2 {\r
-       font-weight: bold;\r
-       font-size: 18.0pt;\r
-}\r
-/*}}end!kadov=======================================================*/ \r
-\r
-\r
-\r
-H3 {\r
-       font-weight: bold;\r
-       font-size: 14.0pt;\r
-}\r
-\r
-/*=(Generated Code)=================================================*/\r
-/*=(WARNING: DO NOT EDIT OR DELETE THIS SECTION!)===================*/\r
-/*begin!kadov{{=====================================================*/ \r
-LI.kadov-H3 {\r
-       font-weight: bold;\r
-       font-size: 14.0pt;\r
-}\r
-/*}}end!kadov=======================================================*/ \r
-\r
-\r
-\r
-H4 {\r
-       font-weight: bold;\r
-       font-size: 12.0pt;\r
-}\r
-\r
-/*=(Generated Code)=================================================*/\r
-/*=(WARNING: DO NOT EDIT OR DELETE THIS SECTION!)===================*/\r
-/*begin!kadov{{=====================================================*/ \r
-LI.kadov-H4 {\r
-       font-weight: bold;\r
-       font-size: 12.0pt;\r
-}\r
-/*}}end!kadov=======================================================*/ \r
-\r
-\r
-\r
-H5 {\r
-       font-weight: bold;\r
-       font-size: 10.0pt;\r
-}\r
-\r
-/*=(Generated Code)=================================================*/\r
-/*=(WARNING: DO NOT EDIT OR DELETE THIS SECTION!)===================*/\r
-/*begin!kadov{{=====================================================*/ \r
-LI.kadov-H5 {\r
-       font-weight: bold;\r
-       font-size: 10.0pt;\r
-}\r
-/*}}end!kadov=======================================================*/ \r
-\r
-\r
-\r
-H6 {\r
-       font-weight: bold;\r
-       font-size: 8.0pt;\r
-}\r
-\r
-/*=(Generated Code)=================================================*/\r
-/*=(WARNING: DO NOT EDIT OR DELETE THIS SECTION!)===================*/\r
-/*begin!kadov{{=====================================================*/ \r
-LI.kadov-H6 {\r
-       font-weight: bold;\r
-       font-size: 8.0pt;\r
-}\r
-/*}}end!kadov=======================================================*/ \r
-\r
-\r
-\r
-P {\r
-       font-size: 12.0pt;\r
-       margin-top: 0pt;\r
-       margin-bottom: 0pt;\r
-}\r
-\r
-/*=(Generated Code)=================================================*/\r
-/*=(WARNING: DO NOT EDIT OR DELETE THIS SECTION!)===================*/\r
-/*begin!kadov{{=====================================================*/ \r
-LI.kadov-P {\r
-       font-size: 12.0pt;\r
-}\r
-/*}}end!kadov=======================================================*/ \r
-\r
-\r
-\r
-A.expandspot {\r
-       color: #008000;\r
-       cursor: hand;\r
-       font-style: italic;\r
-       x-text-underline: off;\r
-       x-text-overline: off;\r
-       x-text-line-through: off;\r
-       /*begin!kadov{{*/ text-decoration: none none none; /*}}end!kadov*/ \r
-}\r
-\r
-SPAN.expandtext {\r
-       font-style: italic;\r
-       font-weight: normal;\r
-       color: #ff0000;\r
-}\r
-\r
-A.dropspot {\r
-       cursor: hand;\r
-       color: #008000;\r
-       font-style: italic;\r
-       x-text-underline: off;\r
-       x-text-overline: off;\r
-       x-text-line-through: off;\r
-       /*begin!kadov{{*/ text-decoration: none none none; /*}}end!kadov*/ \r
-}\r
-\r
-A.glossterm {\r
-       color: #800000;\r
-       cursor: hand;\r
-       font-style: italic;\r
-       x-text-underline: off;\r
-       x-text-overline: off;\r
-       x-text-line-through: off;\r
-       /*begin!kadov{{*/ text-decoration: none none none; /*}}end!kadov*/ \r
-}\r
-\r
-SPAN.glosstext {\r
-       font-style: italic;\r
-       font-weight: normal;\r
-       color: #0000ff;\r
-}\r
-\r
-OL,\r
-UL {\r
-       margin-top: 0px;\r
-       margin-bottom: 0px;\r
-}\r
-\r
-A:active {\r
-}\r
-\r
-A:hover {\r
-       x-text-underline: Off;\r
-       /*begin!kadov{{*/ text-decoration: none; /*}}end!kadov*/ \r
-}\r
-\r
-A:link {\r
-       x-text-underline: Off;\r
-       /*begin!kadov{{*/ text-decoration: none; /*}}end!kadov*/ \r
-}\r
-\r
-A:visited {\r
-       x-text-underline: Off;\r
-       /*begin!kadov{{*/ text-decoration: none; /*}}end!kadov*/ \r
-}\r
-\r
-P.TODO {\r
-       font-weight: normal;\r
-       font-style: italic;\r
-       font-family: "Arial Black", sans-serif;\r
-}\r
-\r
-/*=(Generated Code)=================================================*/\r
-/*=(WARNING: DO NOT EDIT OR DELETE THIS SECTION!)===================*/\r
-/*begin!kadov{{=====================================================*/ \r
-LI.kadov-P-CTODO {\r
-       font-weight: normal;\r
-       font-style: italic;\r
-       font-family: "Arial Black", sans-serif;\r
-}\r
-/*}}end!kadov=======================================================*/ \r
-\r
-\r
-\r
-\r
-/*=(===============================================================)*/\r
+BODY { \r
+      background-color:#ffffff; \r
+      font-family:"Times New Roman" , serif;  }\r
+H1 { \r
+    font-weight:bold; \r
+    font-size:24.0pt;  }\r
+LI.kadov-H1 { \r
+             font-weight:bold; \r
+             font-size:24.0pt;  }\r
+H2 { \r
+    font-weight:bold; \r
+    font-size:18.0pt;  }\r
+LI.kadov-H2 { \r
+             font-weight:bold; \r
+             font-size:18.0pt;  }\r
+H3 { \r
+    font-weight:bold; \r
+    font-size:14.0pt;  }\r
+LI.kadov-H3 { \r
+             font-weight:bold; \r
+             font-size:14.0pt;  }\r
+H4 { \r
+    font-weight:bold; \r
+    font-size:12.0pt;  }\r
+LI.kadov-H4 { \r
+             font-weight:bold; \r
+             font-size:12.0pt;  }\r
+H5 { \r
+    font-weight:bold; \r
+    font-size:10.0pt;  }\r
+LI.kadov-H5 { \r
+             font-weight:bold; \r
+             font-size:10.0pt;  }\r
+H6 { \r
+    font-weight:bold; \r
+    font-size:8.0pt;  }\r
+LI.kadov-H6 { \r
+             font-weight:bold; \r
+             font-size:8.0pt;  }\r
+P { \r
+   font-size:12.0pt; \r
+   margin-top:0pt; \r
+   margin-bottom:0pt;  }\r
+LI.kadov-P { \r
+            font-size:12.0pt;  }\r
+A.expandspot { \r
+              color:#008000; \r
+              cursor:hand; \r
+              font-style:italic; \r
+              x-text-underline:off; \r
+              x-text-overline:off; \r
+              x-text-line-through:off; \r
+              text-decoration:none none none;  }\r
+SPAN.expandtext { \r
+                 font-style:italic; \r
+                 font-weight:normal; \r
+                 color:#ff0000;  }\r
+A.dropspot { \r
+            cursor:hand; \r
+            color:#008000; \r
+            font-style:italic; \r
+            x-text-underline:off; \r
+            x-text-overline:off; \r
+            x-text-line-through:off; \r
+            text-decoration:none none none;  }\r
+A.glossterm { \r
+             color:#800000; \r
+             cursor:hand; \r
+             font-style:italic; \r
+             x-text-underline:off; \r
+             x-text-overline:off; \r
+             x-text-line-through:off; \r
+             text-decoration:none none none;  }\r
+SPAN.glosstext { \r
+                font-style:italic; \r
+                font-weight:normal; \r
+                color:#0000ff;  }\r
+OL { \r
+    margin-top:0px; \r
+    margin-bottom:0px;  }\r
+UL { \r
+    margin-top:0px; \r
+    margin-bottom:0px;  }\r
+A:active {  }\r
+A:hover { \r
+         x-text-underline:Off; \r
+         text-decoration:none;  }\r
+A:link { \r
+        x-text-underline:Off; \r
+        text-decoration:none;  }\r
+A:visited { \r
+           x-text-underline:Off; \r
+           text-decoration:none;  }\r
+P.TODO { \r
+        font-weight:normal; \r
+        font-style:italic; \r
+        font-family:"Arial Black" , sans-serif;  }\r
+LI.kadov-P-CTODO { \r
+                  font-weight:normal; \r
+                  font-style:italic; \r
+                  font-family:"Arial Black" , sans-serif;  }\r
index 020a671110cfa42637e5f29a1cc0a9529d50f3ef..3eeb3c49656ad0f0c62497bfb3ac18e8e7a00177 100755 (executable)
@@ -1,53 +1,53 @@
 BODY { \r
       background-color:#ffffff; \r
-      font-family:"Times New Roman" , serif;  }\r
+      font-family:"Times New Roman"  , serif;  }\r
 H1 { \r
     font-weight:bold; \r
     font-size:24.0pt; \r
-    font-family:"Times New Roman" , serif;  }\r
+    font-family:"Times New Roman"  , serif;  }\r
 LI.kadov-H1 { \r
              font-weight:bold; \r
              font-size:24.0pt;  }\r
 H2 { \r
     font-weight:bold; \r
     font-size:18.0pt; \r
-    font-family:"Times New Roman" , serif;  }\r
+    font-family:"Times New Roman"  , serif;  }\r
 LI.kadov-H2 { \r
              font-weight:bold; \r
              font-size:18.0pt;  }\r
 H3 { \r
     font-weight:bold; \r
     font-size:14.0pt; \r
-    font-family:"Times New Roman" , serif;  }\r
+    font-family:"Times New Roman"  , serif;  }\r
 LI.kadov-H3 { \r
              font-weight:bold; \r
              font-size:14.0pt;  }\r
 H4 { \r
     font-weight:bold; \r
     font-size:12.0pt; \r
-    font-family:"Times New Roman" , serif;  }\r
+    font-family:"Times New Roman"  , serif;  }\r
 LI.kadov-H4 { \r
              font-weight:bold; \r
              font-size:12.0pt;  }\r
 H5 { \r
     font-weight:bold; \r
     font-size:10.0pt; \r
-    font-family:"Times New Roman" , serif;  }\r
+    font-family:"Times New Roman"  , serif;  }\r
 LI.kadov-H5 { \r
              font-weight:bold; \r
              font-size:10.0pt;  }\r
 H6 { \r
     font-weight:bold; \r
     font-size:8.0pt; \r
-    font-family:"Times New Roman" , serif;  }\r
+    font-family:"Times New Roman"  , serif;  }\r
 LI.kadov-H6 { \r
              font-weight:bold; \r
              font-size:8.0pt;  }\r
 P { \r
    font-size:12.0pt; \r
-   margin-top:1; \r
-   margin-bottom:1; \r
-   font-family:"Times New Roman" , serif;  }\r
+   margin-top:1pt\r
+   margin-bottom:1pt\r
+   font-family:"Times New Roman"  , serif;  }\r
 LI.kadov-P { \r
             font-size:12.0pt;  }\r
 A.expandspot { \r
@@ -85,11 +85,11 @@ SPAN.glosstext {
 OL { \r
     margin-top:0px; \r
     margin-bottom:0px; \r
-    font-family:"Times New Roman" , serif;  }\r
+    font-family:"Times New Roman"  , serif;  }\r
 UL { \r
     margin-top:0px; \r
     margin-bottom:0px; \r
-    font-family:"Times New Roman" , serif;  }\r
+    font-family:"Times New Roman"  , serif;  }\r
 A:active {  }\r
 A:hover { \r
          x-text-underline:Off; \r
@@ -103,20 +103,16 @@ A:visited {
 P.TODO { \r
         font-weight:normal; \r
         font-style:italic; \r
-        font-family:"Arial Black" , sans-serif;  }\r
+        font-family:"Arial Black"  , sans-serif;  }\r
 LI.kadov-P-CTODO { \r
                   font-weight:normal; \r
                   font-style:italic; \r
-                  font-family:"Arial Black" , sans-serif;  }\r
+                  font-family:"Arial Black"  , sans-serif;  }\r
 ol ol { \r
-       margin-top:1; \r
-       margin-bottom:1;  }\r
+       margin-top:1px;  }\r
 ol ul { \r
-       margin-top:1; \r
-       margin-bottom:1;  }\r
+       margin-top:1px;  }\r
 ul ul { \r
-       margin-top:1; \r
-       margin-bottom:1;  }\r
+       margin-top:1px;  }\r
 ul ol { \r
-       margin-top:1; \r
-       margin-bottom:1;  }\r
+       margin-top:1px;  }\r
diff --git a/doc/salome/gui/KERNEL/ehelp.xml b/doc/salome/gui/KERNEL/ehelp.xml
new file mode 100755 (executable)
index 0000000..9884c42
--- /dev/null
@@ -0,0 +1,10 @@
+<?xml version="1.0"?>\r
+<!DOCTYPE SYSTEM "ehelpopt.dtd">\r
+<FILE-OPTIONS FILE-VERSION="2" FILE-KEY="28977072_6eb4_11d8_af12_000102ad571a">\r
+</FILE-OPTIONS>\r
+<EHELP-OPTIONS FORMAT-VERSION="1.0">\r
+ <OPTIONS ENABLED="NO" EMBEDDED="YES" MAIN-WINDOW-ONLY="NO" COMMUNITY-NOTIFY="NO" FIRST-PAGE="NOT-SET">\r
+ </OPTIONS>\r
+ <BUTTON-LABEL>WebSearch\r
+ </BUTTON-LABEL>\r
+</EHELP-OPTIONS>
\ No newline at end of file
index 86d26ea96c2464e3f5976e99e618fae0e3a5aa07..6cfd2e4635ab4c1d1c212bcbecc78145599fd148 100755 (executable)
@@ -1,6 +1,6 @@
 // eHelp® Corporation Dynamic HTML JavaScript \r
-// Copyright© 1998-2001 eHelp® Corporation.All rights reserved.\r
-// Version=4.57\r
+// Copyright© 1998-2003 eHelp® Corporation.All rights reserved.\r
+// Version=4.82\r
 \r
 // Warning:Do not modify this file.It is generated by RoboHELP® and changes will be overwritten.\r
 \r
@@ -22,9 +22,15 @@ var HH_ActiveX = false;
 var gstrBsAgent        = navigator.userAgent.toLowerCase();\r
 var gnBsVer                    = parseInt(navigator.appVersion);\r
 \r
-var gbBsIE             = (gstrBsAgent.indexOf('msie') != -1);\r
-var gbBsNS             = (gstrBsAgent.indexOf('mozilla') != -1) && ((gstrBsAgent.indexOf('spoofer') == -1) && (gstrBsAgent.indexOf('compatible') == -1));\r
 var gbBsOpera          = (gstrBsAgent.indexOf('opera') != -1);\r
+var gbBsKonqueror      = (gstrBsAgent.indexOf('konqueror') != -1);\r
+var gbBsSafari         = (gstrBsAgent.indexOf('safari') != -1);\r
+var gbBsIE             = (gstrBsAgent.indexOf('msie') != -1) && !gbBsOpera && !gbBsKonqueror && !gbBsSafari;\r
+var gbBsNS             = (gstrBsAgent.indexOf('mozilla') != -1) && ((gstrBsAgent.indexOf('spoofer') == -1) && (gstrBsAgent.indexOf('compatible') == -1)) && !gbBsOpera && !gbBsKonqueror && !gbBsSafari;\r
+\r
+var gbBsMac                    = (gstrBsAgent.indexOf('mac') != -1);\r
+var gbBsWindows                = ((gstrBsAgent.indexOf('win') != -1) || (gstrBsAgent.indexOf('16bit') != -1));\r
+var gbBsSunOS          = (gstrBsAgent.indexOf("sunos") != -1);\r
 \r
 var gbBsIE3Before      = ((gbBsIE) && (gnBsVer <= 2));\r
 var gbBsNS3Before      = ((gbBsNS) && (gnBsVer <= 3));\r
@@ -36,30 +42,108 @@ var gbBsIE302              = ((gbBsIE) && (gnBsVer == 2) && (gstrBsAgent.indexOf("3.02") !=
 \r
 var gbBsNS4                    = ((gbBsNS) && (gnBsVer >= 4));\r
 var gbBsNS6                    = ((gbBsNS) && (gnBsVer >= 5));\r
+var    gbBsNS7                 = false;\r
 \r
 var gbBsIE4                    = ((gbBsIE) && (gnBsVer >= 4));\r
 var gbBsIE5                    = false;\r
 var gbBsIE55           = false;\r
 \r
-gbBsIE = (navigator.appName.indexOf("Microsoft") != -1);\r
+var gbBsOpera6         = false;\r
+var gbBsOpera7         = false;\r
 \r
-if (parseInt(navigator.appVersion) >= 4) {\r
-       gbBsIE4 = (navigator.appName.indexOf("Microsoft") != -1);\r
+var gbBsKonqueror3     = false;\r
 \r
-       if (gbBsIE4) {\r
-               var nPos = gstrBsAgent.indexOf("msie");\r
-               var strIEversion = gstrBsAgent.substring(nPos + 5);\r
-               var nVersion =  parseFloat(strIEversion);\r
-               if (nVersion >= 5)\r
-                       gbBsIE5 = true;\r
-               if (nVersion >= 5.5)\r
-                       gbBsIE55 = true;\r
+\r
+\r
+gbBsIE = (navigator.appName.indexOf("Microsoft") != -1) && !gbBsOpera && !gbBsKonqueror && !gbBsSafari;;\r
+if (gbBsIE)\r
+{\r
+       if (parseInt(navigator.appVersion) >= 4) {\r
+               gbBsIE4 = true;\r
+               if (gbBsIE4) {\r
+                       var nPos = gstrBsAgent.indexOf("msie");\r
+                       var strIEversion = gstrBsAgent.substring(nPos + 5);\r
+                       var nVersion =  parseFloat(strIEversion);\r
+                       if (nVersion >= 5)\r
+                               gbBsIE5 = true;\r
+                       if (nVersion >= 5.5)\r
+                               gbBsIE55 = true;\r
+               }\r
+       }\r
+}\r
+if (gbBsNS6)\r
+{\r
+       var nPos=gstrBsAgent.indexOf("gecko");\r
+       if(nPos!=-1)\r
+       {\r
+               var nPos2=gstrBsAgent.indexOf("/", nPos);\r
+               if(nPos2!=-1)\r
+               {\r
+                       var nVersion=parseFloat(gstrBsAgent.substring(nPos2+1));\r
+                       if (nVersion>=20020823)\r
+                               gbBsNS7=true;\r
+               }\r
+       }       \r
+}\r
+if (gbBsOpera)\r
+{\r
+       var nPos = gstrBsAgent.indexOf("opera");\r
+       if(nPos!=-1)\r
+       {\r
+               var nVersion = parseFloat(gstrBsAgent.substring(nPos+6));\r
+               if (nVersion >= 6)\r
+               {\r
+                       gbBsOpera6=true;\r
+                       if (nVersion >=7)\r
+                               gbBsOpera7=true;        \r
+               }\r
+       }\r
+}\r
+if (gbBsKonqueror)\r
+{\r
+       var nPos = gstrBsAgent.indexOf("konqueror");\r
+       if(nPos!=-1)\r
+       {\r
+               var nVersion = parseFloat(gstrBsAgent.substring(nPos+10));\r
+               if (nVersion >= 3)\r
+               {\r
+                       gbBsKonqueror3=true;\r
+               }\r
        }\r
 }\r
 \r
-var gbBsMac                    = (gstrBsAgent.indexOf('mac') != -1);\r
-var gbBsWindows                = ((gstrBsAgent.indexOf('win') != -1) || (gstrBsAgent.indexOf('16bit') != -1));\r
-var gbBsOp3                    = (gstrBsAgent.indexOf('opera') != -1);\r
+function insertAdjacentHTML(obj, where, htmlStr)\r
+{\r
+       if (gbBsIE || gbBsOpera7)\r
+       {\r
+               obj.insertAdjacentHTML(where, htmlStr);\r
+       }\r
+       else if (gbBsNS6 || gbBsSafari)\r
+       {\r
+               var r = obj.ownerDocument.createRange();\r
+               r.setStartBefore(obj);\r
+               var     parsedHTML = r.createContextualFragment(htmlStr);\r
+               \r
+               switch (where){\r
+               case 'beforeBegin':\r
+                       obj.parentNode.insertBefore(parsedHTML,obj);\r
+                       break;\r
+               case 'afterBegin':\r
+                       obj.insertBefore(parsedHTML,obj.firstChild);\r
+                       break;\r
+               case 'beforeEnd':\r
+                       obj.appendChild(parsedHTML);\r
+                       break;\r
+               case 'afterEnd':\r
+                       if (obj.nextSibling){\r
+                       obj.parentNode.insertBefore(parsedHTML,obj.nextSibling);\r
+                       } else {\r
+                       obj.parentNode.appendChild(parsedHTML);\r
+                       }\r
+                       break;\r
+               }\r
+       }\r
+}\r
 \r
 // Utilities functions.\r
 function BsscHasExtJs()\r
@@ -108,7 +192,6 @@ function BsscRegisterOnMouseOut(funcHandler)
        gBsOnMouseOuts[nLength] = funcHandler;\r
 }\r
 \r
-\r
 function BsGeneralOnLoad()\r
 {\r
        if (!gbBsIE4 && !gbBsNS4)\r
@@ -153,18 +236,14 @@ function BSSCOnUnload()
 {\r
        if (!BsscHasExtJs()) return;\r
        for (var nElement = gBsOnUnLoads.length - 1; nElement >= 0; nElement--)\r
-       {\r
                gBsOnUnLoads[nElement]();\r
-       }\r
 }\r
 \r
 function BSSCOnMouseOver()\r
 {\r
        if (!BsscHasExtJs()) return;\r
        for (var nElement = gBsOnMouseOvers.length - 1; nElement >= 0; nElement--)\r
-       {\r
                gBsOnMouseOvers[nElement]();\r
-       }\r
 }\r
 \r
 function BSSCOnMouseOut()\r
@@ -177,7 +256,6 @@ function BSSCOnMouseOut()
 }\r
 // End of invocation of the event handle functions.\r
 \r
-\r
 // Add the GereralOnLoad to the onload array.\r
 if (typeof(BsscRegisterOnLoad) != "undefined")\r
 {\r
@@ -195,10 +273,10 @@ function BsHHActivateComponents()
 {\r
        if( HH_ActiveX && (HH_ChmFilename != "") && ((self == top) || (self == top.frames[0])))\r
        {\r
-               var objBody = document.all.tags("BODY")[0];\r
+               var objBody = getElementsByTag(document,"BODY")[0];\r
                if( typeof(objBody) == "object" )\r
                {\r
-                       objBody.insertAdjacentHTML("beforeEnd", '<OBJECT ID="HHComponentActivator" CLASSID="CLSID:399CB6C4-7312-11D2-B4D9-00105A0422DF" width=0 height=0></OBJECT>');\r
+                       insertAdjacentHTML(objBody, "beforeEnd", '<OBJECT ID="HHComponentActivator" CLASSID="CLSID:399CB6C4-7312-11D2-B4D9-00105A0422DF" width=0 height=0></OBJECT>');\r
                        if (HHComponentActivator.object)\r
                                HHComponentActivator.Activate(HH_ChmFilename, HH_WindowName, HH_GlossaryFont, HH_Glossary, HH_Avenue);\r
                }\r
@@ -235,17 +313,14 @@ function _WritePopupMenuLayer()
 {\r
        if (!g_bIsPopupMenuInit)\r
         {\r
-         if (gbBsNS4) {\r
+         if (gbBsNS4&&!gbBsNS6) {\r
 //Do not try to write ininle styles for NS!  NS can not handle it and will not stop downloading the html page...\r
-          if (gbBsNS6)\r
-               document.write("<DIV ID='PopupMenu' STYLE='position:absolute; left:0px; top:0px; z-index:4; visibility:hidden;'></DIV>");\r
-          else\r
                document.write("<DIV CLASS='WebHelpPopupMenu' ID='PopupMenu'></DIV>");\r
          } else{\r
          document.write("<DIV ID='PopupMenu' STYLE='position:absolute; left:0px; top:0px; z-index:4; visibility:hidden;'></DIV>");\r
-         if (gbBsIE4) {\r
+         if (!(gbBsNS4&&!gbBsNS6)) {\r
                document.write("<STYLE TYPE='text/css'>");\r
-               if (gbBsMac) {\r
+               if (gbBsMac&&gbBsIE4) {\r
                        document.write(".PopupOver {font-family:'Arial'; color:white; background:navy; font-size:10pt; font-style:normal;font-weight:normal;text-decoration:none;}");\r
                        document.write(".PopupNotOver {font-family:'Arial'; color:black; background:#c0c0c0; font-size:10pt; font-style:normal;font-weight:normal;text-decoration:none;}");\r
                } else {\r
@@ -259,23 +334,6 @@ function _WritePopupMenuLayer()
        }\r
 }\r
 \r
-//Define variable arguments as: strTitle, strUrl\r
-function MTE() \r
-{\r
-       this.strTitle = MTE.arguments[0];\r
-       if (MTE.arguments.length > 1)\r
-               this.strURL = MTE.arguments[1];\r
-       else\r
-               this.strURL = this.strTitle;\r
-}\r
-\r
-// If the topic list is set, it is an array of TopicEntry objects (defined in WebHelp3.js)\r
-function PopupMenu_SetTopicList(aPopupTopicArray)\r
-{\r
-       gbPopupMenuTopicList = aPopupTopicArray;\r
-}\r
-\r
-\r
 //Seek for the bsscright frame \r
 function _SeekFrameByName( cRoot, strName )\r
 {\r
@@ -304,8 +362,27 @@ function _GetFrameByName( cRoot, strName )
                return null;\r
 }\r
 \r
+var gfn_arguments = null;\r
 function _PopupMenu_Invoke(fn_arguments)\r
 {\r
+       gfn_arguments = fn_arguments;\r
+       if (gbBsOpera6&&gbBsMac)\r
+       {\r
+               var wndOldPopupLinks= window.open(document.location.href, "popuplinks");\r
+               wndOldPopupLinks.close();\r
+               setTimeout("_PopupMenu_Invoke_2();",100);\r
+       }\r
+       else\r
+       {\r
+               _PopupMenu_Invoke_2();\r
+       }\r
+}\r
+\r
+function _PopupMenu_Invoke_2()\r
+{\r
+       var fn_arguments = gfn_arguments;\r
+       gfn_arguments = null;\r
+       \r
        // Make sure we have reasonable arguments\r
        var argLen = fn_arguments.length;\r
        if (argLen < 3) {\r
@@ -328,7 +405,7 @@ function _PopupMenu_Invoke(fn_arguments)
                strTarget = "TARGET='" + fn_arguments[1] + "'";\r
        }\r
 \r
-       if ((!gbBsIE4 && !gbBsNS4) || ((gbBsMac) && (gbBsIE4) && (window.event.srcElement.tagName == "AREA"))) {\r
+       if ((!gbBsIE4 && !gbBsNS4 && !gbBsOpera7 && !gbBsKonqueror3 &&!gbBsSafari) || ((gbBsMac) && (gbBsIE4) && (window.event.srcElement.tagName == "AREA"))) {\r
        \r
                var argLen      = fn_arguments.length;\r
 \r
@@ -339,18 +416,28 @@ function _PopupMenu_Invoke(fn_arguments)
                strParam += ",height=" + nHeight + ",width=200";\r
                strParam += ",resizable";\r
 \r
+               var wndTemp=null;\r
                // Create a temporary window first to ensure the real popup comes up on top\r
-               var wndTemp = window.open("", "temp", strParam);\r
+               if (!gbBsOpera)\r
+                       wndTemp = window.open("", "temp", strParam);\r
 \r
                // Create the real popup window\r
-               var wndPopupLinks = window.open("", "popuplinks", strParam);\r
+               var wndPopupLinks=null;\r
+               if (gbBsOpera&&gbBsMac)\r
+               {\r
+                       wndTemp = window.open(document.location.href, "temp", strParam);\r
+                       wndPopupLinks= window.open(document.location.href, "popuplinks", strParam);\r
+               }\r
+               else\r
+                       wndPopupLinks= window.open("", "popuplinks", strParam);\r
+               wndPopupLinks.document.open("text/html");\r
 \r
                // Close the temporary\r
-               wndTemp.close();\r
+               if (wndTemp)\r
+                       wndTemp.close();\r
 \r
-               wndPopupLinks.document.open("text/html");\r
-               wndPopupLinks.document.write("<html><head></head>");\r
-               wndPopupLinks.document.write("<body onBlur=\'self.focus();\'>");\r
+               var sHTML="<html><head></head>";\r
+               sHTML+="<body onBlur=\'self.focus();\'>";\r
                var strParaLine = "";\r
                for (var i = 0; i < (argLen - 2) / 2; i++) {\r
                        strParaLine = "";\r
@@ -367,19 +454,18 @@ function _PopupMenu_Invoke(fn_arguments)
                        strParaLine += fn_arguments[2 * i + 2];\r
                        strParaLine += "</a>";\r
                        strParaLine += "<br>";\r
-                       wndPopupLinks.document.write(strParaLine);\r
+                       sHTML+=strParaLine;\r
                }\r
-               wndPopupLinks.document.write("</body></html>");\r
+               sHTML+="</body></html>";\r
+               wndPopupLinks.document.write(sHTML);\r
                wndPopupLinks.document.close();\r
                window.gbInPopupMenu = true;\r
                if (!gbBsIE) {\r
                        wndPopupLinks.focus();\r
                }\r
-\r
                return false;\r
        }\r
 \r
-\r
        if (((argLen < 5) && ((isNaN(fn_arguments[2])) || (gbPopupMenuTopicList == null))) ||\r
                ((argLen < 4) && ((!isNaN(fn_arguments[2])) && (gbPopupMenuTopicList != null)))) {\r
                // Get the place that we will be putting the topic into\r
@@ -405,7 +491,7 @@ function _PopupMenu_Invoke(fn_arguments)
        }\r
        \r
        var strMenu = "";\r
-       if (gbBsNS4) {\r
+       if (gbBsNS4&&!gbBsNS6) {\r
                strMenu = '<TABLE BORDER="1" CELLSPACING=0 CELLPADDING=3 BGCOLOR="#c0c0c0">';\r
        } else {\r
                strMenu = '<TABLE STYLE="border:2px outset white;" CELLSPACING=0';\r
@@ -455,9 +541,9 @@ function _PopupMenu_Invoke(fn_arguments)
        var nEventX = 0;\r
        var nEventY = 0;\r
        var nWindowWidth = 0;\r
-       if (gbBsIE4) {\r
+       if (gbBsIE4 || gbBsOpera7) {\r
 \r
-               layerPopup = document.all["PopupMenu"];\r
+               layerPopup = getElement("PopupMenu");\r
                layerPopup.innerHTML = strMenu;\r
                stylePopup = layerPopup.style;\r
 \r
@@ -493,13 +579,21 @@ function _PopupMenu_Invoke(fn_arguments)
                        gOlddocumentClick = document.onclick;\r
                document.onclick = PopupMenu_HandleClick;\r
 \r
-       } else if (gbBsNS6) {\r
-               layerPopup = document.getElementById("PopupMenu");\r
+       } else if (gbBsNS6 || gbBsKonqueror3||gbBsSafari) {\r
+               layerPopup = getElement("PopupMenu");\r
                layerPopup.style.visibility = "hidden";\r
        \r
-               var e = fn_arguments[0];\r
-               nEventX = e.pageX;\r
-               nEventY = e.pageY;\r
+               if (gbBsNS6)\r
+               {\r
+                       var e = fn_arguments[0];\r
+                       nEventX = e.pageX;\r
+                       nEventY = e.pageY;\r
+               }\r
+               else\r
+               {\r
+                       nEventX = window.event.clientX;\r
+                       nEventY = window.event.clientY;\r
+               }\r
                _BSPSGetClientSize();\r
                layerPopup.innerHTML = strMenu;\r
 \r
@@ -571,7 +665,6 @@ function _PopupMenu_Invoke(fn_arguments)
        return false;\r
 }\r
 \r
-\r
 function PopupMenu_Timeout()\r
 {\r
        window.gbPopupMenuTimeoutExpired = true;\r
@@ -579,48 +672,37 @@ function PopupMenu_Timeout()
 \r
 function PopupMenu_Over(e)\r
 {\r
-    if (gbBsIE4) {\r
+    if (gbBsIE4||gbBsOpera7)\r
                e.srcElement.className = "PopupOver";\r
-    } else if (gbBsNS4) {\r
-//             this.bgColor = "red";\r
-//        e.target.document.className = "PopupOver";\r
-    }\r
+    else if (gbBsNS6)\r
+               e.target.parentNode.className = "PopupOver";\r
        return;\r
 }\r
 \r
 function PopupMenu_Out(e)\r
 {\r
-    if (gbBsIE4) {\r
+    if (gbBsIE4||gbBsOpera7)\r
                e.srcElement.className = "PopupNotOver";\r
-    } else if (gbBsNS4) {\r
-        this.bgColor = "#f0f0f0";\r
-    }\r
+    else if (gbBsNS6)\r
+               e.target.parentNode.className = "PopupNotOver";\r
        return;\r
 }\r
 \r
-\r
 function PopupMenu_HandleClick(e)\r
 {\r
        if (window.gbPopupMenuTimeoutExpired) {\r
-\r
                window.gbInPopupMenu = false;\r
-\r
                if (gbBsNS4 && !gbBsNS6) {\r
                        window.releaseEvents(Event.MOUSEDOWN);\r
                }\r
 \r
                var layerPopup = null;\r
-               var stylePopup = null;\r
-               if (gbBsIE4) {\r
-                       layerPopup = document.all["PopupMenu"];\r
-                       stylePopup = layerPopup.style;\r
-                       stylePopup.visibility = "hidden";\r
-               } else if (gbBsNS6) {\r
-                       layerPopup = document.getElementById("PopupMenu");\r
-                       layerPopup.style.visibility = "hidden";\r
-               } else if (gbBsNS4) {\r
+               if (gbBsNS4&&!gbBsNS6) {\r
                        layerPopup = document.layers.PopupMenu;\r
                        layerPopup.visibility = "hide";\r
+               } else {\r
+                       layerPopup = getElement("PopupMenu");\r
+                       layerPopup.style.visibility = "hidden";\r
                }\r
        \r
                if (gOlddocumentClick)\r
@@ -634,16 +716,9 @@ function PopupMenu_HandleClick(e)
        return;\r
 }\r
 \r
-// This function should be deleted when all old projects are cleaned up\r
-function BSPSWritePopupFrameForIE4()\r
-{\r
-       return false;\r
-}\r
-\r
-/////////////////////////////////////////////////////////////////////\r
 function BSSCPopup_ClickMac()\r
 {\r
-       if ((!DHTMLPopupSupport()) && (gbBsIE4))\r
+       if ((!DHTMLPopupSupport()) && (gbBsIE4 || gbBsOpera7))\r
        {       \r
                var bClickOnAnchor = false;\r
                var el;\r
@@ -660,7 +735,7 @@ function BSSCPopup_ClickMac()
                                if (el.tagName == "BODY") {\r
                                        break;\r
                                }\r
-                               el = el.parentElement;\r
+                               el = getParentNode(el);\r
                        }\r
                }\r
                if (BSSCPopup_IsPopup())\r
@@ -688,13 +763,11 @@ function BSSCPopup_ClickMac()
                        }\r
                }\r
        }\r
- }\r
-\r
-//////////////////////////////////////////////////////////////////////\r
+}\r
 \r
 function BsPopupOnClick()\r
 {\r
-       if (!gbBsIE4)\r
+       if (!gbBsIE4 && !gbBsOpera7)\r
                return;\r
 \r
        BSSCPopup_ClickMac();\r
@@ -709,26 +782,16 @@ function _BSSCOnError(message)
 \r
 //End to support previous relative topics\r
 \r
-\r
 /// Section End - General and relative topics (JavaScript 1.0)\r
 \r
 /// Section Begin  - Popup (JavaScript 1.0)\r
-\r
 //Begin to support previous popup functions\r
-//////////////////////////////////////////////////////////////////////////////////////////////\r
-//\r
-//     Begin DHTML Popup Functions\r
-//\r
-//////////////////////////////////////////////////////////////////////////////////////////////\r
+\r
 //variables used to isolate the browser type\r
-var gBsDoc                     = null;                 \r
-var gBsSty                     = null;\r
-var gBsHtm                     = null;\r
 var gBsStyVisShow      = null;\r
 var gBsStyVisHide      = null;\r
 var gBsClientWidth     = 640;\r
 var gBsClientHeight = 480;\r
-var gBsBrowser         = null;\r
 \r
 // here is the varible for judge popup windows size. these parameter is for IE5.0, it may need adjust for others.\r
 var gBRateH_W          = 0.618; // 1.618 Golden cut.\r
@@ -792,35 +855,36 @@ function getPopupIFrameName(nIndex)
 \r
 function getPopupTopicStyle(nIndex)\r
 {\r
-       return eval("document.all['" + getPopupTopicID(nIndex) + "']").style;\r
+       return getElement(getPopupTopicID(nIndex)).style;\r
 }\r
 \r
 function getPopupShadowStyle(nIndex)\r
 {\r
-       return eval("document.all['" + getPopupShadowID(nIndex) + "']").style;\r
+       return getElement(getPopupShadowID(nIndex)).style;\r
 }\r
 \r
 function getPopupIFrame(nIndex)\r
 {\r
-\r
-       return eval("document.frames['" + getPopupIFrameName(nIndex) + "']");\r
+       if (gbBsNS6)\r
+               return eval("window.frames['" + getPopupIFrameName(nIndex) + "']");\r
+       else\r
+               return eval("document.frames['" + getPopupIFrameName(nIndex) + "']");\r
 }\r
 \r
 function getPopupDivStyle(nIndex)\r
 {\r
-       return eval("document.all['" + getPopupID(nIndex) + "']").style;\r
+       return getElement(getPopupID(nIndex)).style;\r
 }\r
 \r
 function getPopupIFrameStyle(nIndex)\r
 {\r
-       return eval("document.all['" + getPopupIFrameName(nIndex) + "'].style");\r
+       return getElement(getPopupIFrameID(nIndex)).style;\r
 }\r
 \r
 \r
 function findDiv(strURL)\r
 {\r
-       var i = 0;\r
-       for (i = 0; i < arrayPopupURL.length; i ++ ) {\r
+       for (var i = 0; i < arrayPopupURL.length; i ++ ) {\r
                if (arrayPopupURL[i] == strURL) {\r
                        return i;\r
                }\r
@@ -843,8 +907,7 @@ function IsValidToken(nToken)
 \r
 function addDiv(strURL)\r
 {\r
-       var i = 0; \r
-       for (i = 0; i < arrayPopupURL.length; i ++) {\r
+       for (var i = 0; i < arrayPopupURL.length; i ++) {\r
                if (arrayPopupURL[i] == null) {\r
                        arrayPopupURL[i] = strURL;\r
                        return i;\r
@@ -857,8 +920,7 @@ function addDiv(strURL)
 \r
 function setDirty()\r
 {\r
-       var i = 0;\r
-       for (i = 0; i < arrayPopupURL.length; i ++ )\r
+       for (var i = 0; i < arrayPopupURL.length; i ++ )\r
                arrayDirty[i] = true;\r
 }\r
 \r
@@ -875,15 +937,16 @@ function IsDirty(nIndex)
 \r
 function hideAll()\r
 {\r
-       var i = 0; \r
-       for (i = 0; i < arrayPopupURL.length; i ++ )\r
+       for (var i = 0; i < arrayPopupURL.length; i ++ )\r
+       {\r
                getPopupDivStyle(i).visibility = gBsStyVisHide;\r
+               getPopupIFrameStyle(i).visibility = gBsStyVisHide;\r
+       }\r
 }\r
 \r
 function getCurrentPopupIFrame()\r
 {\r
-       var i = 0;\r
-       for (i = 0; i < arrayPopupURL.length; i ++)\r
+       for (var i = 0; i < arrayPopupURL.length; i ++)\r
                if (getPopupDivStyle(i).visibility == gBsStyVisShow)\r
                        return getPopupIFrame(i);\r
        return null;\r
@@ -909,69 +972,40 @@ function _BSSCCreatePopupDiv(strURL)
                }\r
        }\r
        return nIndex;\r
-\r
 }\r
 \r
-//the browser information itself\r
-function _BSPSBrowserItself()\r
+//Here is the browser type \r
+function _BSPSGetBrowserInfo()\r
 {\r
-       var agent  = navigator.userAgent.toLowerCase();\r
-       this.major = parseInt(navigator.appVersion);\r
-       this.minor = parseFloat(navigator.appVersion);\r
-       this.ns    = ((agent.indexOf('mozilla') != -1) && ((agent.indexOf('spoofer') == -1) && (agent.indexOf('compatible') == -1)));\r
-       this.ns2   = ((this.ns) && (this.major == 2));\r
-       this.ns3   = ((this.ns) && (this.major == 3));\r
-       this.ns4   = ((this.ns) && (this.major >= 4));\r
-       this.ns6   = ((this.ns) && (this.major >= 5));\r
-       this.ie    = (agent.indexOf("msie") != -1);\r
-       this.ie3   = ((this.ie) && (this.major == 2));\r
-       this.ie4   = ((this.ie) && (this.major >= 4));\r
-       this.op3   = (agent.indexOf("opera") != -1);\r
-\r
-       if (this.ns4)\r
+       if (gbBsNS4&&!gbBsNS6)\r
        {\r
-               gBsDoc          = "document";\r
-               gBsSty          = "";\r
-               gBsHtm          = ".document";\r
                gBsStyVisShow   = "show";\r
                gBsStyVisHide   = "hide";\r
-\r
        }\r
-       else if (this.ie4)\r
+       else\r
        {\r
-               gBsDoc           = "document.all";\r
-               gBsSty          = ".style";\r
-               gBsHtm          = "";\r
                gBsStyVisShow   = "visible";\r
                gBsStyVisHide   = "hidden";\r
        }\r
 }\r
 \r
-//Here is the browser type \r
-function _BSPSGetBrowserInfo()\r
-{\r
-       gBsBrowser      = new _BSPSBrowserItself();\r
-}\r
-\r
 _BSPSGetBrowserInfo();\r
 \r
 //Get client size info\r
 function _BSPSGetClientSize()\r
 {\r
-       if (gBsBrowser.ns4)\r
+       if (gbBsNS4||gbBsKonqueror3||gbBsSafari)\r
        {\r
                gBsClientWidth  = innerWidth;\r
                gBsClientHeight = innerHeight;\r
-\r
        }\r
-       else if (gBsBrowser.ie4)\r
+       else if (gbBsIE4 || gbBsOpera7)\r
        {\r
                gBsClientWidth  = document.body.clientWidth;\r
                gBsClientHeight = document.body.clientHeight;\r
        }\r
 }\r
 \r
-\r
 var gstrPopupID = 'BSSCPopup';\r
 var gstrPopupShadowID = 'BSSCPopupShadow';\r
 var gstrPopupTopicID = 'BSSCPopupTopic';\r
@@ -989,33 +1023,29 @@ var gnPopupScreenClickY = 0;
 \r
 var gbPopupTimeoutExpired = false;\r
 \r
-\r
 function DHTMLPopupSupport()\r
 {\r
-       if ((gbBsIE4) && (!gbBsMac)) {\r
+       if (((gbBsIE4) && (!gbBsMac))||gbBsOpera7|| gbBsNS7) {\r
                return true;\r
        }\r
        return false;\r
 }\r
 \r
-\r
-\r
 function BSSCPopup_IsPopup()\r
 {\r
        if (DHTMLPopupSupport() && (this.name.indexOf(gstrPopupIFrameName) != -1)) {\r
                return true;\r
-       } else if ((gbBsNS4 || gbBsIE4) && (this.name.indexOf(gstrPopupID) != -1)) {\r
+       } else if ((gbBsNS4 || gbBsIE4 || gbBsOpera7) && (this.name.indexOf(gstrPopupID) != -1)) {\r
                return true;\r
        } else {\r
                return false;\r
        }\r
 }\r
 \r
-\r
 // If there is a hyperlink in a popup window, display the hyperlink in\r
-// the original window.\r
-if (BSSCPopup_IsPopup() && !gbBsIE4) {\r
-       document.write("<base target=\"_parent\">");\r
+// the original window. (bsscright)\r
+if (BSSCPopup_IsPopup() && !gbBsIE4 && !gbBsOpera7) {\r
+       document.write("<base target=\"bsscright\">");\r
 }\r
 \r
 // Local functions.\r
@@ -1030,61 +1060,82 @@ function BsPopup_CreateDiv(nIndex)
        strPopupDiv += "<IFRAME title=\"Popup Window\" ID='" + getPopupIFrameID(nIndex) + "' name='" + getPopupIFrameName(nIndex) + "' src = '" + getPopupURL(nIndex) + "' frameborder=0 scrolling=auto></IFRAME>";\r
        strPopupDiv += "</DIV></DIV>";\r
 \r
-       var objBody = document.all.tags("BODY")[0];\r
+       var objBody = getElementsByTag(document, "BODY")[0];\r
        if( typeof(objBody) != "object" )\r
                return;\r
 \r
-       objBody.insertAdjacentHTML("beforeEnd", strPopupDiv);\r
+       insertAdjacentHTML(objBody, "beforeEnd", strPopupDiv);\r
 }\r
 \r
-function BSSCPopup_Timeout(nIndex, nToken)\r
+function handleLoadNS()\r
 {\r
-    if (!IsValidToken(nToken)) return;\r
+       if (this.id)\r
+       {\r
+               var nIndex = parseInt(this.id.substring(gstrPopupIFrameID.length));\r
+               BSSCPopup_PostWork(nIndex);\r
+       }\r
+}\r
 \r
-       if ((getPopupIFrame(nIndex).document.readyState == "complete") &&\r
-               (getPopupIFrame(nIndex).document.body != null)) {\r
-               window.getPopupDivStyle(nIndex).visibility = gBsStyVisShow;\r
-               setClear(nIndex);\r
-               window.gbPopupTimeoutExpired = true;\r
+function BSSCPopup_PostWork(nIndex)\r
+{\r
+       getPopupDivStyle(nIndex).visibility = gBsStyVisShow;\r
+       getPopupIFrameStyle(nIndex).visibility =gBsStyVisShow;\r
 \r
-               BSSCPopup_ChangeTargettoParent(getPopupIFrame(nIndex).document);\r
+       setClear(nIndex);\r
+       window.gbPopupTimeoutExpired = true;\r
+\r
+       BSSCPopup_ChangeTargettoParent(getPopupIFrame(nIndex).document);\r
+       if (gbBsNS6)\r
+               getPopupIFrame(nIndex).document.body.addEventListener("click",BSSCPopupClicked,false);\r
+       else\r
                getPopupIFrame(nIndex).document.body.onclick = BSSCPopupClicked;\r
 \r
-               if (!gbOrignalOnMouseDown && document.onmousedown)\r
-                       gbOrignalOnMouseDown = document.onmousedown;\r
+       if (!gbOrignalOnMouseDown && document.onmousedown)\r
+               gbOrignalOnMouseDown = document.onmousedown;\r
 \r
+       if (gbBsNS6)\r
+               document.addEventListener("mousedown", BSSCPopupParentClicked,false);\r
+       else\r
                document.onmousedown = BSSCPopupParentClicked;\r
+}\r
+\r
+function BSSCPopup_Timeout(nIndex, nToken)\r
+{\r
+    if (!IsValidToken(nToken)) return;\r
 \r
+       if (gbBsNS6||((getPopupIFrame(nIndex).document.readyState == "complete") &&\r
+               (getPopupIFrame(nIndex).document.body != null))) {\r
+               BSSCPopup_PostWork(nIndex);\r
        } else {\r
                setTimeout("BSSCPopup_Timeout(" + nIndex + "," + nToken + ")", 100);\r
        }\r
 }\r
 \r
-\r
 // VH 08/10/00 \r
 // do not change target to parent if the href is using javascript\r
 function BSSCPopup_ChangeTargettoParent(tagsObject)\r
 {\r
-       var collA = tagsObject.all.tags("A");\r
+       var collA = getElementsByTag(tagsObject, "A");\r
        BSSCPopup_ChangeTargettoParent2(collA);\r
 \r
-       var collIMG = tagsObject.all.tags("IMG");\r
+       var collIMG = getElementsByTag(tagsObject,"IMG");\r
        BSSCPopup_ChangeTargettoParent2(collIMG);\r
 }\r
 \r
 function BSSCPopup_ChangeTargettoParent2(colls)\r
 {\r
-       var j = 0;\r
        if (colls != null)  {\r
-               for (j = 0; j < colls.length; j ++ )\r
+               for (var j = 0; j < colls.length; j ++ )\r
                {\r
                        var strtemp = colls[j].href;\r
-                       strtemp = strtemp.toLowerCase();\r
-                       if (strtemp.indexOf("javascript:") == -1)\r
-                       if (colls[j].target == "")\r
-                               colls[j].target = "_parent";\r
+                       if (strtemp)\r
+                       {\r
+                               strtemp = strtemp.toLowerCase();\r
+                               if (strtemp.indexOf("javascript:") == -1)\r
+                               if (colls[j].target == "")\r
+                                       colls[j].target = "_parent";\r
+                       }\r
                }\r
-\r
        }\r
 }\r
 \r
@@ -1104,33 +1155,26 @@ function _BSSCPopup(strURL, width, height)
        }\r
        \r
        if (DHTMLPopupSupport()) {\r
-               // If we are already in a popup, replace the contents\r
-       //      if (BSSCPopup_IsPopup()) {\r
-       //              parent._BSSCPopup(strURL, cuswidth, cusheight);\r
-       //      } else {\r
-                       var nToken = takeToken(); // take  token first.\r
-                       var nIndex = _BSSCCreatePopupDiv(strURL);\r
-                       window.gbPopupTimeoutExpired = false;\r
-                       var ntWidth = gBsClientWidth;\r
-                       var ntHeight = gBsClientHeight;\r
-                       _BSPSGetClientSize();\r
-                       if (ntWidth != gBsClientWidth || ntHeight != gBsClientHeight) {\r
-                               setDirty();\r
-                       }\r
-\r
+               var nToken = takeToken(); // take  token first.\r
+               var nIndex = _BSSCCreatePopupDiv(strURL);\r
+               window.gbPopupTimeoutExpired = false;\r
+               var ntWidth = gBsClientWidth;\r
+               var ntHeight = gBsClientHeight;\r
+               _BSPSGetClientSize();\r
+               if (ntWidth != gBsClientWidth || ntHeight != gBsClientHeight) {\r
+                       setDirty();\r
+               }\r
 \r
-                       if (IsDirty(nIndex)) {\r
-                               if (gbBsMac) {\r
-                                       setTimeout("BSSCPopup_AfterLoad(" + nIndex + "," + nToken + "," + cuswidth + "," + cusheight  +")", 400);\r
-                               } else {\r
-                                       setTimeout("BSSCPopup_AfterLoad(" + nIndex + "," + nToken + "," + cuswidth + "," + cusheight + ")", 100);\r
-                               }\r
-                       }\r
-                       else {\r
-                               MoveDivAndShow(nIndex ,nToken, cuswidth, cusheight);\r
+               if (IsDirty(nIndex)) {\r
+                       if (gbBsMac) {\r
+                               setTimeout("BSSCPopup_AfterLoad(" + nIndex + "," + nToken + "," + cuswidth + "," + cusheight  +")", 400);\r
+                       } else {\r
+                               setTimeout("BSSCPopup_AfterLoad(" + nIndex + "," + nToken + "," + cuswidth + "," + cusheight + ")", 100);\r
                        }\r
-       //      }\r
-\r
+               }\r
+               else {\r
+                       MoveDivAndShow(nIndex ,nToken, cuswidth, cusheight);\r
+               }\r
        } else {\r
                _BSSCPopup2(strURL, cuswidth, cusheight);\r
        }\r
@@ -1140,24 +1184,40 @@ function _BSSCPopup(strURL, width, height)
 if (gbBsIE55)\r
 {\r
        var ehlpdhtm_fOldBefureUnload = window.onbeforeunload;\r
+       var gnBsUnload=0;\r
        window.onbeforeunload = window_BUnload;\r
 }\r
        \r
 function window_BUnload()\r
 {\r
+       gnBsUnload++;\r
+       if (gnBsUnload>1)\r
+               return;\r
        for (var i = 0; i < arrayPopupURL.length; i ++)\r
-               document.all(getPopupID(i)).outerHTML = "";\r
+               removeThis(document.all(getPopupID(i)));\r
        arrayPopupURL.length = 0;       \r
        if (ehlpdhtm_fOldBefureUnload)\r
                ehlpdhtm_fOldBefureUnload();\r
 }\r
 \r
 function _BSSCPopup2(strURL, width, height)\r
+{\r
+       if (gbBsOpera6&&gbBsMac)\r
+       {\r
+               var wmTemp = window.open(document.location.href, gstrPopupSecondWindowName);\r
+               wmTemp.close();\r
+               setTimeout("_BSSCPopup3(\""+strURL+"\","+width+","+height+");",100);\r
+       }\r
+       else\r
+               _BSSCPopup3(strURL, width, height);\r
+}\r
+               \r
+function _BSSCPopup3(strURL, width, height)\r
 {\r
        if (window.name == gstrPopupSecondWindowName) {\r
                window.location = strURL;\r
        } else {\r
-               if (!gbBsMac || !gBsBrowser.ns4) {\r
+               if (!gbBsMac || !gbBsNS4) {\r
                        BSSCHidePopupWindow();\r
                }\r
                var nX = 0;\r
@@ -1179,12 +1239,14 @@ function _BSSCPopup2(strURL, width, height)
                if (nX + nWidth + 40 > screen.availWidth) {\r
                        nX = screen.availWidth - nWidth - 40;\r
                }\r
+\r
                // Launch a separate window\r
-               var strParam = "titlebar=no,toolbar=no,status=no,location=no,menubar=no,resizable=yes,scrollbars=yes";\r
-               if (gBsBrowser.ns) {\r
-                       if (gBsBrowser.ns6) {\r
+               var strParam="titlebar=no,toolbar=no,status=no,location=no,menubar=no,resizable=yes,scrollbars=yes";\r
+               if (gbBsNS) {\r
+                       if (gbBsNS6) {\r
                                strParam += ",Height=" + nHeight + ",Width=" + nWidth;\r
                                strParam += ",screenX=" + nX + ",screenY=" + nY;\r
+                               strParam += ",dependent=yes";\r
                        }\r
                        else {\r
                                strParam += ",OuterHeight=" + nHeight + ",OuterWidth=" + nWidth;\r
@@ -1196,21 +1258,50 @@ function _BSSCPopup2(strURL, width, height)
                        strParam += ",height=" + nHeight + ",width=" + nWidth;\r
                        strParam += ",left=" + nX + ",top=" + nY;\r
                }\r
-               window.gPopupWindow = window.open(strURL, gstrPopupSecondWindowName, strParam);\r
-\r
-               if (gBsBrowser.ns4) {\r
-                       window.gPopupWindow.captureEvents(Event.CLICK | Event.BLUE);\r
-                       window.gPopupWindow.onclick = NonIEPopup_HandleClick;\r
-                       window.gPopupWindow.onblur = NonIEPopup_HandleBlur;\r
-               }\r
-               else if (gBsBrowser.ie4)\r
+               if (gbBsSafari)\r
                {\r
-                       setTimeout("setPopupFocus();", 100);\r
+                       if (window.gPopupWindow)\r
+                               window.gPopupWindow.close();            \r
+                       window.gPopupWindow = window.open(strURL, "", strParam);\r
+                       window.gPopupWindow.name = gstrPopupSecondWindowName;\r
+                       window.gPopupWindow.moveTo(nX, nY);\r
+                       widnow.gPopupWindow.document.location.reload();\r
+               }       \r
+               else\r
+               {\r
+                       var wmTemp=null;\r
+                       if (gbBsKonqueror3)\r
+                       {\r
+                               if (window.gPopupWindow)\r
+                                       window.gPopupWindow.close();\r
+                       }\r
+                       if (gbBsOpera&&gbBsMac)\r
+                       {\r
+                               wmTemp= window.open(document.location.href, "Temp", strParam);\r
+                       }\r
+                       window.gPopupWindow = window.open(strURL, gstrPopupSecondWindowName, strParam);\r
+                       if (!gbBsIE)\r
+                               window.gPopupWindow.focus();\r
+                               \r
+                       if (wmTemp)\r
+                               wmTemp.close();\r
                }\r
+\r
+               if (gbBsNS4)\r
+                       setEventHandle();\r
+               else if (gbBsIE4 || gbBsOpera7||gbBsKonqueror3)\r
+                       setTimeout("setPopupFocus();", 100);\r
        }\r
        return;\r
 }\r
 \r
+function setEventHandle()\r
+{\r
+       window.gPopupWindow.captureEvents(Event.CLICK | Event.BLUR);\r
+       window.gPopupWindow.onclick = NonIEPopup_HandleClick;\r
+       window.gPopupWindow.onblur = NonIEPopup_HandleBlur;\r
+}\r
+\r
 function setPopupFocus()\r
 {\r
        window.gPopupWindow.focus();\r
@@ -1235,30 +1326,38 @@ function NonIEPopup_HandleClick(e)
        }\r
 \r
        // Close the popup window\r
-       if (e.target.href) {\r
-               if (e.target.target == "")\r
-                       window.location.href = e.target.href;\r
-               else\r
-                       window.open(e.target.href, e.target.target);\r
-                       \r
-               if (e.target.href.indexOf("javascript:void(0)") == -1 && e.target.href.indexOf("javascript:null") == -1 && e.target.href.indexOf("BsscPopup") == -1) {\r
+       if(e.target.href)\r
+       {\r
+               if(e.target.href.indexOf("javascript:")==-1) \r
+               {\r
+                       if (e.target.target=="")\r
+                               window.location.href = e.target.href;\r
+                       else\r
+                               window.open(e.target.href, e.target.target);\r
                        this.close();\r
                }\r
-       } else {\r
+       } \r
+       else\r
                this.close();\r
-       }\r
        return false;\r
-\r
 }\r
 \r
 function BSSCPopup_AfterLoad(nIndex, nToken, cuswidth, cusheight)\r
 {      \r
-       if (typeof(window.getPopupIFrame(nIndex).document) == "unknown") {\r
+       if (!window.getPopupIFrame(nIndex).document) {\r
                _BSSCPopup2(getPopupURL(nIndex), cuswidth, cusheight);\r
                return;\r
        }\r
+       \r
     if (!IsValidToken(nToken)) return;\r
 \r
+       if (gbBsNS6)\r
+       {\r
+               setAbsPopupURL(nIndex, window.getPopupIFrame(nIndex).document.location.href); // change URL to abs url.\r
+               BSSCPopup_ResizeAfterLoad(nIndex, nToken, cuswidth, cusheight);\r
+               return;\r
+       }\r
+       \r
        if ((window.getPopupIFrame(nIndex).document.readyState == "complete") &&\r
                (window.getPopupIFrame(nIndex).document.body != null)) {\r
                        if (window.getPopupIFrame(nIndex).document.location.href.indexOf("about:blank") != -1) { // add this check. IE will use about:blank" as the default vaule for Iframe.\r
@@ -1275,7 +1374,6 @@ function BSSCPopup_AfterLoad(nIndex, nToken, cuswidth, cusheight)
        }\r
 }\r
 \r
-\r
 function BSSCPopup_ResizeAfterLoad(nIndex, nToken, cuswidth, cusheight)\r
 {\r
        if (window.gbPopupTimeoutExpired) return;\r
@@ -1283,15 +1381,11 @@ function BSSCPopup_ResizeAfterLoad(nIndex, nToken, cuswidth, cusheight)
     if (!IsValidToken(nToken)) return;\r
 \r
        getPopupDivStyle(nIndex).visibility = gBsStyVisHide;\r
+       getPopupIFrameStyle(nIndex).visibility = gBsStyVisHide;\r
 \r
        // Determine the width and height for the window\r
-       //var size = new BSSCSize(0, 0);\r
-       //BSSCGetContentSize(window.getPopupIFrame(nIndex), size);\r
-       //var nWidth = size.x;\r
-       //var nHeight = size.y;\r
-\r
        _BSPSGetClientSize();\r
-       \r
+\r
        var size = new BSSCSize(0, 0);\r
 \r
        if (cuswidth <= 0 || cusheight <= 0)\r
@@ -1308,38 +1402,60 @@ function BSSCPopup_ResizeAfterLoad(nIndex, nToken, cuswidth, cusheight)
        // for small popup size, we should allow any size.\r
        // The popup size should be ok if bigger than 0\r
        if (nWidth < 0 || nHeight < 0) return;  // there must be something terribly wrong.              \r
-       //      if (nWidth < 40 || nHeight < 40) return;  // there must be something terribly wrong.\r
 \r
-       window.getPopupDivStyle(nIndex).pixelWidth = nWidth;\r
-       window.getPopupDivStyle(nIndex).pixelHeight = nHeight;\r
+       getPopupDivStyle(nIndex).width = nWidth;\r
+       getPopupDivStyle(nIndex).height = nHeight;\r
 \r
-       window.getPopupShadowStyle(nIndex).pixelWidth = nWidth;\r
-       window.getPopupShadowStyle(nIndex).pixelHeight = nHeight;\r
-       window.getPopupTopicStyle(nIndex).pixelWidth = nWidth;\r
-       window.getPopupTopicStyle(nIndex).pixelHeight = nHeight;\r
+       getPopupShadowStyle(nIndex).width = nWidth;\r
+       getPopupShadowStyle(nIndex).height = nHeight;\r
+       getPopupTopicStyle(nIndex).width = nWidth;\r
+       getPopupTopicStyle(nIndex).height = nHeight;\r
        if (gbBsIE55)\r
        {\r
-               window.getPopupShadowStyle(nIndex).pixelWidth = nWidth + 2;\r
-               window.getPopupShadowStyle(nIndex).pixelHeight = nHeight + 2;\r
-               window.getPopupTopicStyle(nIndex).pixelWidth = nWidth + 2;\r
-               window.getPopupTopicStyle(nIndex).pixelHeight = nHeight + 2;\r
+               getPopupShadowStyle(nIndex).width = nWidth + 2;\r
+               getPopupShadowStyle(nIndex).height = nHeight + 2;\r
+               getPopupTopicStyle(nIndex).width = nWidth + 2;\r
+               getPopupTopicStyle(nIndex).height = nHeight + 2;\r
        }\r
 \r
-       window.getPopupIFrameStyle(nIndex).pixelWidth = nWidth;\r
-       window.getPopupIFrameStyle(nIndex).pixelHeight = nHeight;\r
-       if (gbBsIE55)\r
+       getPopupIFrameStyle(nIndex).width = nWidth;\r
+       getPopupIFrameStyle(nIndex).height = nHeight;\r
+       if (gbBsIE55 || gbBsNS6)\r
        {\r
-               window.getPopupIFrameStyle(nIndex).top = 0;\r
-               window.getPopupIFrameStyle(nIndex).left = 0;\r
+               getPopupIFrameStyle(nIndex).top = 0;\r
+               getPopupIFrameStyle(nIndex).left = 0;\r
        }\r
        \r
        var strURL = getPopupURL(nIndex);\r
-       if (strURL.indexOf("#") != -1)\r
+       if (strURL.indexOf("#") != -1&&gbBsNS6)\r
+               getPopupIFrame(nIndex).location.reload();\r
+       else if (strURL.indexOf("#") != -1||gbBsNS6)\r
                getPopupIFrame(nIndex).location.href = strURL;  // reload again, this will fix the bookmark misunderstand in IE5.\r
                \r
        MoveDivAndShow(nIndex, nToken, cuswidth, cusheight);\r
 }\r
 \r
+function getScrollLeft()\r
+{\r
+       if (document.body.scrollLeft)\r
+               return document.body.scrollLeft;\r
+       else if (window.pageXOffset)\r
+               return window.pageXOffset;\r
+       else\r
+               return 0;\r
+}\r
+\r
+function getScrollTop()\r
+{\r
+       if (document.body.scrollTop)\r
+               return document.body.scrollTop;\r
+       else if (window.pageYOffset)\r
+               return window.pageYOffset;\r
+       else\r
+               return 0;\r
+}\r
+\r
+\r
 function MoveDivAndShow(nIndex, nToken, cuswidth, cusheight)\r
 {\r
        if (window.getPopupIFrame(nIndex).document.location.href != getAbsPopupURL(nIndex)) { // if redirect, reload again.\r
@@ -1354,46 +1470,47 @@ function MoveDivAndShow(nIndex, nToken, cuswidth, cusheight)
        var nTop = 0;\r
        var nLeft = 0;\r
 \r
-       var nWidth = window.getPopupDivStyle(nIndex).pixelWidth;\r
-       var nHeight = window.getPopupDivStyle(nIndex).pixelHeight;\r
+       var nWidth = parseInt(getPopupDivStyle(nIndex).width);\r
+       var nHeight = parseInt(getPopupDivStyle(nIndex).height);\r
 \r
-       if (nClickY + nHeight + 20 < gBsClientHeight + document.body.scrollTop) {\r
+       if (nClickY + nHeight + 20 < gBsClientHeight + getScrollTop()) {\r
                nTop = nClickY + 10;\r
        } else {\r
-               nTop = (document.body.scrollTop + gBsClientHeight) - nHeight - 20;\r
+               nTop = (getScrollTop() + gBsClientHeight) - nHeight - 20;\r
        }\r
-       if (nClickX + nWidth < gBsClientWidth + document.body.scrollLeft) {\r
+       if (nClickX + nWidth < gBsClientWidth + getScrollLeft()) {\r
                nLeft = nClickX;\r
        } else {\r
-               nLeft = (document.body.scrollLeft + gBsClientWidth) - nWidth - 8;\r
+               nLeft = (getScrollLeft() + gBsClientWidth) - nWidth - 8;\r
        }\r
-       \r
-       if (nTop < document.body.scrollTop ) nTop  = document.body.scrollTop + 1;\r
-       if (nLeft< document.body.scrollLeft) nLeft = document.body.scrollLeft + 1;\r
 \r
+       if (nTop < getScrollTop()) nTop  = getScrollTop() + 1;\r
+       if (nLeft< getScrollLeft())  nLeft = getScrollLeft() + 1;\r
 \r
-       window.getPopupDivStyle(nIndex).left = nLeft;\r
-       window.getPopupDivStyle(nIndex).top = nTop;\r
+       getPopupDivStyle(nIndex).left = nLeft;\r
+       getPopupDivStyle(nIndex).top = nTop;\r
 \r
        // Set the location of the background blocks\r
-       window.getPopupShadowStyle(nIndex).left = 6;\r
-       window.getPopupShadowStyle(nIndex).top = 6;\r
+       getPopupShadowStyle(nIndex).left = 6;\r
+       getPopupShadowStyle(nIndex).top = 6;\r
        if (gbBsIE55)\r
        {\r
-               window.getPopupShadowStyle(nIndex).left = 4;\r
-               window.getPopupShadowStyle(nIndex).top = 4;\r
+               getPopupShadowStyle(nIndex).left = 4;\r
+               getPopupShadowStyle(nIndex).top = 4;\r
        }\r
 \r
-       if (gbBsMac) {\r
+       if (gbBsMac&&gbBsIE4) {\r
                // Total hack on the iMac to get the IFrame to position properly\r
-               window.getPopupIFrameStyle(nIndex).pixelLeft = 100;\r
-               window.getPopupIFrameStyle(nIndex).pixelLeft = 0;\r
+               getPopupIFrameStyle(nIndex).pixelLeft = 100;\r
+               getPopupIFrameStyle(nIndex).pixelLeft = 0;\r
                // Explicitly call BSSCOnLoad because the Mac doesn't seem to do it\r
-               window.getPopupIFrame(nIndex).window.BSSCOnLoad();\r
+               getPopupIFrame(nIndex).window.BSSCOnLoad();\r
        }\r
 \r
-       BSSCPopup_Timeout(nIndex , nToken );\r
-       \r
+       if (gbBsNS6&&IsDirty(nIndex))\r
+               getElement(getPopupIFrameID(nIndex)).addEventListener("load", handleLoadNS, false);\r
+       else\r
+               BSSCPopup_Timeout(nIndex , nToken );\r
        return;\r
 }\r
 \r
@@ -1405,12 +1522,12 @@ function        BSSCSize(x, y)
 \r
 function BSSCGetContentSize(thisWindow, size)\r
 {\r
-       if (!((gBsBrowser.ie4) || (gBsBrowser.ns4)))\r
+       if (!gbBsIE4 && !gbBsOpera7 && !gbBsNS4)\r
                return;\r
 \r
-       if (gbBsMac) {\r
-               size.x = 300;\r
-               size.y = 300;\r
+       if ((gbBsMac&&gbBsIE4)||gbBsNS4||gbBsOpera7) {\r
+               size.x = 320;\r
+               size.y = 180;\r
                return;\r
        }\r
 \r
@@ -1421,6 +1538,7 @@ function BSSCGetContentSize(thisWindow, size)
 \r
        var ClientRate = gBsClientHeight / gBsClientWidth;\r
 \r
+       \r
        var GoldenSize = new BSSCSize(0,0);\r
        GoldenSize.x = gBsClientWidth * gBMaxXOfParent;\r
        GoldenSize.y = gBsClientHeight *gBMaxYOfParent ;\r
@@ -1440,6 +1558,7 @@ function BSSCGetContentSize(thisWindow, size)
        // This double resize causes the document to re-render (and we need it to)\r
        if (!gbBsIE5)\r
                thisWindow.moveTo(10000,10000); // this is used to fix the flash on IE4.\r
+               \r
        thisWindow.resizeTo(1, 1);\r
        thisWindow.resizeTo(1, 1);\r
        thisWindow.resizeTo(maxgoldx, thisWindow.document.body.scrollHeight + gBscrollHeight);\r
@@ -1486,11 +1605,6 @@ function BSSCGetContentSize(thisWindow, size)
                        size.x = thisWindow.document.body.scrollWidth; //+ gBscrollWidth;\r
                        size.y = thisWindow.document.body.scrollHeight;// + gBscrollHeight;     \r
                        thisWindow.document.body.scroll = 'no';\r
-                       \r
-               // Handle absurd cases just in case IE flakes\r
-       //              if (size.y < 100) {\r
-       //                      size.y = 100;\r
-       //              }\r
                }\r
        }\r
        else {\r
@@ -1503,7 +1617,6 @@ function BSSCGetContentSize(thisWindow, size)
                        //  downsize from maxgoldx , now I try to using binary divide.\r
                        x = maxgoldx;\r
                        deltax = -maxgoldx/2;\r
-                       //i = 0;\r
                        while (true) {\r
                                x = x + deltax;\r
                                thisWindow.resizeTo(x, miny);\r
@@ -1518,10 +1631,7 @@ function BSSCGetContentSize(thisWindow, size)
                                        break;\r
                                if (Math.abs(deltax) < gBpermitXDelta) // the next change is too slight and it can be ignore.\r
                                        break;\r
-                               //i ++;\r
-                               \r
                        }\r
-                       //size.x = x - gBscrollWidth;\r
                        size.x = thisWindow.document.body.scrollWidth; //+ gBscrollWidth;\r
                        size.y = thisWindow.document.body.scrollHeight ;\r
                        thisWindow.document.body.scroll = 'no'; // At this time we do not want to show scroll any more. so it will looks better a little.\r
@@ -1536,17 +1646,11 @@ function BSSCGetContentSize(thisWindow, size)
                        }\r
                }\r
        }\r
-       \r
-       // no reload no scrollbar.\r
-       //size.x = size.x + 16;  //reserve a width for scrollbar (IE 4.0 only)\r
-\r
        thisWindow.resizeTo(size.x, size.y);\r
        thisWindow.resizeTo(size.x, size.y);\r
        return;\r
 }\r
 \r
-\r
-\r
 function BSSCPopupParentClicked()\r
 {\r
        if (!window.gbPopupTimeoutExpired) {\r
@@ -1563,50 +1667,65 @@ function BSSCPopupParentClicked()
        return true;\r
 }\r
 \r
+function isInsideHyperLink(obj)\r
+{\r
+       if (obj&&obj!=getParentNode(obj))\r
+       {\r
+               if (obj.tagName=="A"||obj.tagName=="IMG")\r
+                       return true;\r
+               else\r
+                       return isInsideHyperLink(getParentNode(obj));\r
+       }\r
+       else\r
+               return false;\r
+}\r
 \r
-function BSSCPopupClicked()\r
+function BSSCPopupClicked(e)\r
 {\r
        if (!window.gbPopupTimeoutExpired) {\r
                return false;\r
        }\r
 \r
-\r
        var popupIFrame = getCurrentPopupIFrame();\r
        if (popupIFrame == null) {\r
                return true;\r
        }\r
 \r
-/*\r
-       if ("undefined" != typeof(popupIFrame.gbInPopupMenu) &&\r
-               popupIFrame.gbInPopupMenu) {\r
-               return true;\r
-       }*/\r
-\r
-       if (!((popupIFrame.window.event != null) &&\r
-           (popupIFrame.window.event.srcElement != null) &&\r
-           ((popupIFrame.window.event.srcElement.tagName == "A") ||\r
-           (popupIFrame.window.event.srcElement.tagName == "IMG")))) {\r
+       if (gbBsIE4 && (!((popupIFrame.window.event != null) &&\r
+               (popupIFrame.window.event.srcElement != null) &&\r
+               isInsideHyperLink(popupIFrame.window.event.srcElement)))) {\r
                document.onmousedown = gbOrignalOnMouseDown;\r
-\r
-       // Simply hide the popup\r
+               \r
+               // Simply hide the popup\r
                hideAll();\r
-\r
                window.gbPopupTimeoutExpired = false;\r
-\r
                return true;\r
        }\r
+       else if (gbBsNS6 && (!((e != null) &&\r
+                       (e.target!= null) && isInsideHyperLink(e.target))))\r
+       {\r
+               document.addEventListener("mousedown", gbOrignalOnMouseDown,false);\r
+               // Simply hide the popup\r
+               hideAll();\r
+               window.gbPopupTimeoutExpired = false;\r
+               return true;            \r
+       }\r
 }\r
 \r
-\r
 //trace the mouse over's position for hotspot\r
 function  BSPSPopupOnMouseOver(event)\r
 {\r
-       if (gBsBrowser.ie4) {\r
-               window.gnPopupClickX = event.clientX + document.body.scrollLeft;\r
-               window.gnPopupClickY = event.clientY + document.body.scrollTop;\r
+       if (gbBsIE4 || gbBsOpera7||gbBsKonqueror3) {\r
+               window.gnPopupClickX = event.clientX + getScrollLeft();\r
+               window.gnPopupClickY = event.clientY + getScrollTop();\r
                window.gnPopupScreenClickX = event.screenX;\r
                window.gnPopupScreenClickY = event.screenY;\r
-       } else if (gBsBrowser.ns4) {\r
+       } else if (gbBsSafari) {\r
+               window.gnPopupClickX = event.clientX + getScrollLeft();\r
+               window.gnPopupClickY = event.clientY + getScrollTop();\r
+               window.gnPopupScreenClickX = event.screenX + window.screenX;\r
+               window.gnPopupScreenClickY = event.screenY + window.screenY;\r
+       } else if (gbBsNS4) {\r
                window.gnPopupClickX = event.pageX - window.pageXOffset;\r
                window.gnPopupClickY = event.pageY - window.pageYOffset;\r
                window.gnPopupScreenClickX = event.screenX - window.pageXOffset;\r
@@ -1614,18 +1733,16 @@ function  BSPSPopupOnMouseOver(event)
        }\r
 }\r
 \r
-\r
 function BSSCHidePopupWindow()\r
 {\r
        if (window.gPopupWindow != null) {\r
-               if (gBsBrowser.ns4) {\r
+               if (gbBsNS4) {\r
                        if ((typeof window.gPopupWindow != "undefined") && (!window.gPopupWindow.closed)) {\r
                                window.gPopupWindow.close();\r
                                window.gPopupWindow = null;\r
                        }\r
                }\r
        }\r
-\r
        return;\r
 }\r
 \r
@@ -1640,56 +1757,33 @@ if (typeof(BsscRegisterOnClick) != "undefined")
 \r
 /// Section Begin - Embedded Stub (JavaScript 1.0)\r
 \r
-var s_strAgent = navigator.userAgent.toLowerCase();\r
-var s_nVer        = parseInt(navigator.appVersion);\r
-\r
-var s_bIE  = (s_strAgent.indexOf('msie') != -1);\r
-var s_bNS  = (s_strAgent.indexOf('mozilla') != -1) && ((s_strAgent.indexOf('spoofer') == -1) && (s_strAgent.indexOf('compatible') == -1));\r
-var s_bOpera   = (s_strAgent.indexOf('opera') != -1);\r
-\r
-var s_bIE3Before = ((s_bIE) && (s_nVer <= 2));\r
-var s_bNS3Before = ((s_bNS) && (s_nVer <= 3));\r
-\r
-var s_bNS2             = ((s_bNS) && (s_nVer <= 2));\r
-var s_bNS3             = ((s_bNS) && (s_nVer == 3));\r
-var s_bIE300301        = ((s_bIE) && (s_nVer == 2) && ((s_strAgent.indexOf("3.00") != -1)||(s_strAgent.indexOf("3.0a") != -1)||(s_strAgent.indexOf("3.0b")!=-1)||(s_strAgent.indexOf("3.01")!=-1)));\r
-var s_bIE302   = ((s_bIE) && (s_nVer == 2) && (s_strAgent.indexOf("3.02") != -1));\r
-\r
-\r
-function HasExtJs()\r
-{\r
-       if (s_bIE3Before) { return false;}\r
-       if (s_bNS3Before) {     return false;}\r
-       if (typeof (BsGeneralOnLoad) == "undefined"){ return false; }\r
-       return true;\r
-}\r
-\r
-\r
 function BSSCCreatePopupDiv()\r
 {\r
        return;\r
 }\r
 \r
-\r
 function WritePopupMenuLayer()\r
 {\r
-       if (HasExtJs()) {_WritePopupMenuLayer();}\r
+       if (BsscHasExtJs()) {_WritePopupMenuLayer();}\r
 }\r
 \r
 function BSSCPopup(strURL, width, height)\r
 {\r
-       if (HasExtJs()) { \r
+       var re = new RegExp("'", 'g');\r
+       strURL = strURL.replace(re, "%27");\r
+\r
+       if (BsscHasExtJs())     { \r
                _BSSCPopup(strURL, width, height);\r
        }else{\r
                //Create a temporary window first to ensure the real popup comes up on top\r
                var wndTemp = null;\r
-               if (!s_bNS3) {\r
+               if (!gbBsNS3) {\r
                        wndTemp = window.open("", "temp", "titlebar=no,toolbar=no,status=no,location=no,menubar=no,resizable=yes,scrollbars=yes,height=3,width=4");\r
                }\r
                // Create the real popup window\r
                var wndPopup = window.open(strURL, "BSSCPopup", "titlebar=no,toolbar=no,status=no,location=no,menubar=no,resizable=yes,scrollbars=yes,height=300,width=400");\r
                // Close the temporary\r
-               if (!s_bNS3) {\r
+               if (!gbBsNS3) {\r
                        wndTemp.close();\r
                } else {\r
                        wndPopup.focus();\r
@@ -1702,10 +1796,17 @@ var gbstrParaTotal = "";
 \r
 function PopupMenu_Invoke()\r
 {\r
-       if (HasExtJs()) {\r
+       if (typeof(wfRelatedTopic) == 'function' && typeof(IsFlashSupported) == 'function')\r
+       {\r
+               if (Number(gsSkinVersion) > 2 && IsFlashSupported())\r
+               {\r
+                       return wfRelatedTopic(PopupMenu_Invoke.arguments);\r
+               }\r
+       }\r
+       if (BsscHasExtJs()) {\r
                return _PopupMenu_Invoke(PopupMenu_Invoke.arguments);\r
        }\r
-       if (s_bNS3Before || s_bIE3Before )      {\r
+       if (gbBsNS3Before || gbBsIE3Before )    {\r
                var argLen      = PopupMenu_Invoke.arguments.length;\r
                if (argLen < 5) {\r
                        window.document.location.href = PopupMenu_Invoke.arguments[3];\r
@@ -1716,7 +1817,7 @@ function PopupMenu_Invoke()
                gbstrParaTotal = "";\r
                for (var i = 0; i < (argLen - 2) / 2; i++) {\r
                        var strParaLine = "";\r
-                       if (s_bNS2 || s_bOpera){\r
+                       if (gbBsNS2){\r
                                strParaLine += "<a href=\"";\r
                                strParaLine += PopupMenu_Invoke.arguments[2 * i + 3];\r
                                strParaLine += "\">"\r
@@ -1744,7 +1845,7 @@ function PopupMenu_Invoke()
                \r
                //Create a temporary window first to ensure the real popup comes up on top\r
                //var wndTemp = null;\r
-               if (!s_bNS3) {\r
+               if (!gbBsNS3) {\r
                        gbWndTemp = window.open("", "temp", "titlebar=no,toolbar=no,status=no,location=no,menubar=no,resizable=yes,scrollbars=yes,height=3,width=4");\r
                } \r
                gbWndPopupLinks = window.open("", "popuplinks", strParam);\r
@@ -1763,13 +1864,12 @@ function Wait_PopupMenuReady()
                setTimeout("Wait_PopupMenuReady()", 100);\r
 }\r
 \r
-\r
 function PopupMenu_InvokeReady()\r
 {\r
        if (gbWndPopupLinks != null) {\r
                gbWndPopupLinks.document.open("text/html");\r
                gbWndPopupLinks.document.write("<html><head>");\r
-               if (s_bNS2 || s_bOpera) {\r
+               if (gbBsNS2) {\r
                        gbWndPopupLinks.document.write("<base href=\"" + location +"\">");\r
                } else {\r
                        //YJ: IE301,302 and NS3.x works fine\r
@@ -1785,7 +1885,7 @@ function PopupMenu_InvokeReady()
                gbWndPopupLinks.document.close();\r
 \r
                // Close the temporary\r
-               if (!s_bNS3 && gbWndTemp != null) {\r
+               if (!gbBsNS3 && gbWndTemp != null) {\r
                        gbWndTemp.close();\r
                }else {\r
                        gbWndPopupLinks.focus();\r
@@ -1811,18 +1911,21 @@ function kadovIsParagraph(el)
 \r
 function kadovInitEachChild(el)\r
 {      \r
-       for(var i=0; i<el.children.length; i++)\r
+       for(var i=0; i<getChildNodes(el).length; i++)\r
        {\r
-               var child = el.children[i];\r
+               var child = getChildNodes(el)[i];\r
                if( child.tagName == "SCRIPT" || child.tagName == "!" )\r
                        continue;\r
 \r
                if( child.id != "" )\r
                {\r
                        // to wipe out the onload effects\r
-                       var onLoadEffect = child.style.getAttribute( "x-on-pageload" );\r
-                       if( (onLoadEffect != null) && (onLoadEffect > "") )\r
-                               child.style.setAttribute( "x-on-pageload", "" );\r
+                       if (gbBsIE4&&!gbBsMac)\r
+                       {\r
+                               var onLoadEffect = child.style.getAttribute( "x-on-pageload" );\r
+                               if( (onLoadEffect != null) && (onLoadEffect > "") )\r
+                                       child.style.setAttribute( "x-on-pageload", "" );\r
+                       }\r
                        \r
                        var href = child.getAttribute("href")\r
                        if( href != null && href > "" && href.indexOf( "BSSCPopup" ) >= 0 )\r
@@ -1861,8 +1964,8 @@ function kadovRetrieveTextInner(el)
        }\r
        else\r
        {\r
-               for(var i=0; i<el.children.length; i++)\r
-                       x += kadovRetrieveTextInner( el.children[i] );\r
+               for(var i=0; i<getChildNodes(el).length; i++)\r
+                       x += kadovRetrieveTextInner( getChildNodes(el)[i] );\r
        }\r
        return x;\r
 }\r
@@ -1914,12 +2017,16 @@ function kadovAdjustObjectTag(strRawHTML, nStartPos)
                return strRawHTML;\r
        \r
        // does the commented object tag contain a items parameters             \r
-       var strRTItemsOpen = '<param name=Items value="';\r
+       var strRTItemsOpen = '<param name="Items" value="';\r
        var strRTItemsClose = '$$**$$" >';\r
+       var strRTItemsClose2 = '$$**$$">';\r
+\r
        var nRTItemsOpen = strRawHTML.indexOf(strRTItemsOpen, nDTCTagOpen);\r
        if( nRTItemsOpen < nDTCTagOpen )\r
                return strRawHTML;\r
        var nRTItemsClose = strRawHTML.indexOf(strRTItemsClose, nRTItemsOpen);\r
+       if (nRTItemsClose == -1)\r
+               nRTItemsClose = strRawHTML.indexOf(strRTItemsClose2, nRTItemsOpen);\r
        if( nRTItemsClose < nRTItemsOpen )\r
                return strRawHTML;\r
                \r
@@ -1948,90 +2055,184 @@ function kadovAdjustObjectTag(strRawHTML, nStartPos)
 \r
 function kadovTextPopupOnLoad( el )\r
 {\r
-       if( !CCSSP.bIsWinOS && !CCSSP.bIsSunOS)\r
-               return 0;\r
-\r
        if( typeof(el) == "string" )\r
-               el = document.all.item(el);\r
+               el = getElement(el);\r
 \r
        var src = el.getAttribute( "x-use-popup" );\r
+       var bNeedMove=true;\r
+       if(!src&&el.id)\r
+       {\r
+               for (var i=0;i<gPopupData.length;i++)\r
+                       if (gPopupData[i].el==el.id)\r
+                       {\r
+                               src=gPopupData[i].popupId;\r
+                               bNeedMove=false;\r
+                               break;\r
+                       }\r
+       }\r
        if(!src)\r
+               src = el.style.getAttribute( "x-use-popup" );   \r
+       if (!src)       \r
                return 0;\r
 \r
        var name = src;\r
        if( src.substr(0,1) == "#" ) \r
                name = src.substr(1, src.length-1);\r
-       var srcDiv = document.all.item(name);\r
+       var srcDiv = getElement(name);\r
        if( !srcDiv )\r
                return 1;\r
 \r
-       var type = el.getAttribute( "x-popup-type" );\r
-       var setup = el.getAttribute( "x-tmp-setup" );\r
-       var newId = name;\r
-       if( newId.indexOf( "_tmp") <= 0 )\r
-               newId += "_tmp";\r
-\r
-       if( !setup )\r
+       if (bNeedMove)\r
        {\r
-               el.setAttribute( "x-tmp-setup", 1 );\r
-       \r
-               if( type == "pulldown"  )\r
+               var type = el.getAttribute( "x-popup-type" );\r
+               if (!type)\r
+                       type = el.style.getAttribute("x-popup-type");\r
+               if (!type)              \r
+                       return 1;               \r
+               var setup = el.getAttribute( "x-tmp-setup" );\r
+               var newId = name;\r
+               if( newId.indexOf( "_tmp") <= 0 )\r
+                       newId += "_tmp";\r
+\r
+               if( !setup)\r
                {\r
-                       var strAdjust = kadovAdjustObjectTag(srcDiv.innerHTML,0);\r
-                       var strCleanHTML = kadovRetrieveCleanHTML(strAdjust, "<!--", "-->");\r
-                       strCleanHTML = kadovRetrieveCleanHTML(strCleanHTML, "<SCRIPT", "/SCRIPT>");\r
+                       el.setAttribute( "x-tmp-setup", 1 );\r
 \r
-                       //work around the bug in HH.exe that highlight the phrases when use Search tab\r
-                       //this approach is just removing the <FONT...> tag inserted by Microsoft in the runtime\r
-                       strCleanHTML = kadovRetrieveCleanHTML(strCleanHTML, "<FONT color=#", "\">", 52);\r
-                       \r
-                       var strStyle = " style='display:none; position:relative;";\r
-                       var newDiv = "<div class=droptext id=" + newId + strStyle + "'>" + strCleanHTML + "</div>";\r
+                       if( type == "pulldown"  )\r
+                       {\r
+                               var strAdjust = kadovAdjustObjectTag(srcDiv.innerHTML,0);\r
+                               var strCleanHTML = kadovRetrieveCleanHTML(strAdjust, "<!--", "-->");\r
+                               strCleanHTML = kadovRetrieveCleanHTML(strCleanHTML, "<SCRIPT", "/SCRIPT>");\r
+                               \r
+                               //work around the bug in HH.exe that highlight the phrases when use Search tab\r
+                               //this approach is just removing the <FONT...> tag inserted by Microsoft in the runtime\r
+                               strCleanHTML = kadovRetrieveCleanHTML(strCleanHTML, "<FONT color=#", "\">", 52);\r
+                               \r
+                               var strStyle = " style='display:none; position:relative;";\r
+                               var newDiv = "<div class=droptext id=" + newId + strStyle + "'>" + strCleanHTML + "</div>";\r
 \r
-                       srcDiv.outerHTML = ""; // empty the original DIV tag\r
-                       var elParentPra = kadovFindParentParagraph(el);\r
-                       if( elParentPra )\r
-                               elParentPra.insertAdjacentHTML( "AfterEnd", newDiv );\r
+                               removeThis(srcDiv); // empty the original DIV tag\r
+                               var elParentPra = kadovFindParentParagraph(el);\r
+                               if( elParentPra )\r
+                                       insertAdjacentHTML(elParentPra, "afterEnd", newDiv );\r
+                       }\r
+                       else if( type == "expanding"  )\r
+                       {\r
+                               var inner = kadovRetrieveTextInner(srcDiv);\r
+                               if( inner == "" )\r
+                                       inner = srcDiv.innerHTML;\r
+                               var strAdjust = kadovAdjustObjectTag(inner,0);\r
+                               var strCleanHTML = kadovRetrieveCleanHTML(strAdjust, "<!--", "-->");\r
+                               strCleanHTML = kadovRetrieveCleanHTML(strCleanHTML, "<SCRIPT", "/SCRIPT>");\r
+                               var strClassName = (el.className == "glossterm") ? "glosstext" : "expandtext";\r
+                               var newSpan = "<span class=" + strClassName + " style='display: none;' id=" + newId + ">&nbsp;" + strCleanHTML + "</span>";\r
+                               removeThis(srcDiv); // empty the original DIV tag\r
+                               insertAdjacentHTML(el, "afterEnd", newSpan );\r
+                       }\r
                }\r
-               else if( type == "expanding"  )\r
+       }\r
+       else\r
+       {\r
+               srcDiv.style.display = "none";\r
+       }\r
+       return 0;\r
+}\r
+\r
+function getElementsByTag(obj,sTagName)\r
+{\r
+       if(obj.getElementsByTagName)\r
+               return obj.getElementsByTagName(sTagName);\r
+       else if(obj.all)\r
+               return obj.all.tags(sTagName);\r
+       return null;\r
+}\r
+\r
+function getElement(sID)\r
+{\r
+       if(document.getElementById)\r
+               return document.getElementById(sID);\r
+       else if(document.all)\r
+               return document.all(sID);\r
+       return null;\r
+}\r
+\r
+function getParentNode(obj)\r
+{\r
+       if(obj.parentNode)\r
+               return obj.parentNode;\r
+       else if(obj.parentElement)\r
+               return obj.parentElement;\r
+       return null;\r
+}\r
+\r
+function getChildNodes(obj)\r
+{\r
+       if(obj.childNodes)\r
+       {\r
+               var children = new Array();\r
+               for (var i = 0; i < obj.childNodes.length; i++)\r
                {\r
-                       var inner = kadovRetrieveTextInner(srcDiv);\r
-                       if( inner == "" )\r
-                               inner = srcDiv.innerHTML;\r
-                       var strAdjust = kadovAdjustObjectTag(inner,0);\r
-                       var strCleanHTML = kadovRetrieveCleanHTML(strAdjust, "<!--", "-->");\r
-                       strCleanHTML = kadovRetrieveCleanHTML(strCleanHTML, "<SCRIPT", "/SCRIPT>");\r
-                       var strClassName = (el.className == "glossterm") ? "glosstext" : "expandtext";\r
-                       var newSpan = "<span class=" + strClassName + " style='display: none;' id=" + newId + ">&nbsp;" + strCleanHTML + "</span>";\r
-                       srcDiv.outerHTML = ""; // empty the original DIV tag\r
-                       el.insertAdjacentHTML( "AfterEnd", newSpan );\r
+                       if (obj.childNodes[i].nodeType == 1)\r
+                               children[children.length] = obj.childNodes[i];\r
                }\r
+               return children;\r
        }\r
-       return 0;\r
+       else if(obj.children)\r
+               return obj.children;\r
+       return null;    \r
+}\r
+\r
+function removeThis(obj)\r
+{\r
+       if(obj.parentNode)\r
+               obj.parentNode.removeChild(obj);\r
+       else\r
+               obj.outerHTML="";\r
 }\r
 \r
 function kadovTextPopup( el )\r
 {\r
-       if( (!CCSSP.bIsWinOS && !CCSSP.bIsSunOS) || (window.event == null) )\r
+       if (!gbBsIE4 && !gbBsOpera7 && !gbBsSafari && !gbBsNS6 && !gbBsKonqueror3 )\r
                return;\r
-       window.event.cancelBubble = true;\r
+\r
+       var bNeedMove=true;\r
+       \r
+       if (window.event)\r
+               window.event.cancelBubble = true;\r
 \r
        if( typeof(el) == "string" )\r
-               el = document.all.item(el);\r
+               el = getElement(el);\r
 \r
+       if (!el||el==window)\r
+               return;\r
+       \r
        var src = el.getAttribute( "x-use-popup" );\r
+       if(!src&&el.id)\r
+       {\r
+               for (var i=0;i<gPopupData.length;i++)\r
+                       if (gPopupData[i].el==el.id)\r
+                       {\r
+                               src=gPopupData[i].popupId;\r
+                               bNeedMove=false;\r
+                               break;\r
+                       }\r
+       }\r
+       if(!src)\r
+               src = el.style.getAttribute( "x-use-popup" );   \r
        if(!src)\r
                return;\r
-\r
+               \r
        var name = src;\r
        if( src.substr(0,1) == "#" ) \r
+       if (bNeedMove)\r
                name = src.substr(1, src.length-1) + "_tmp";\r
-       var srcDiv = document.all.item(name);\r
+       else\r
+               name = src.substr(1, src.length-1);\r
+\r
+       var srcDiv = getElement(name);\r
        if( !srcDiv )\r
                return;\r
 \r
-       var type = el.getAttribute( "x-popup-type" );\r
-       var setup = el.getAttribute( "x-tmp-setup" );\r
        if( srcDiv )\r
        {\r
                if( srcDiv.style.display == "" )\r
@@ -2047,19 +2248,21 @@ function kadovTextPopup( el )
                        }\r
                }\r
        }\r
+       if(gbBsIE4)\r
+               event.returnValue=false;\r
        return;\r
 }\r
 \r
 function kadovFindParentParagraph( el )\r
 {\r
        if( typeof(el) == "string" )\r
-               el = document.all.item(el);\r
+               el = getElement(el);\r
        if( (!el) || el.tagName == "BODY" )\r
                return null;\r
-       if( kadovIsParagraph(el.parentElement) )\r
-               return el.parentElement;\r
+       if( kadovIsParagraph(getParentNode(el)) )\r
+               return getParentNode(el);\r
        else\r
-               return kadovFindParentParagraph( el.parentElement );\r
+               return kadovFindParentParagraph( getParentNode(el) );\r
 }\r
 \r
 //Begin HTML code invoked function\r
@@ -2070,17 +2273,32 @@ function kadovRegisterEventHandler( obj, strEvent, strEventHandler )
        CCSSP.RegisterEventHandler( obj, strEvent, strEventHandler );\r
 }\r
 \r
-function kadovTextPopupInit( el )\r
+function textPopupData(el, popupId)\r
+{\r
+       this.el = el;\r
+       this.popupId = "#"+popupId;\r
+}\r
+\r
+var gPopupData = new Array();\r
+\r
+function kadovTextPopupInit( el, popupId)\r
 {\r
-       if( (!gbBsIE4) || (!CCSSP.bIsWinOS && !CCSSP.bIsSunOS))\r
+       if (!gbBsIE4 && !gbBsOpera7 && !gbBsSafari && !gbBsNS6 && !gbBsKonqueror3)\r
                return;\r
                \r
        if( typeof(el) == "string" )\r
-               el = document.all.item(el);\r
+       {\r
+               if (popupId)\r
+               {\r
+                       gPopupData[gPopupData.length]=new textPopupData(el, popupId);\r
+               }\r
+               el = getElement(el);\r
+       }\r
+               \r
        if( el != null )\r
        {\r
-               CCSSP.RegisterEventHandler( el, "onclick", "kadovTextPopup(" + el.id +");" );\r
-               CCSSP.RegisterEventHandler( window, "onload", "kadovTextPopupOnLoad(" + el.id +");" );\r
+               CCSSP.RegisterEventHandler( el, "onclick", "kadovTextPopup(\"" + el.id +"\");" );\r
+               CCSSP.RegisterEventHandler( window, "onload", "kadovTextPopupOnLoad(\"" + el.id +"\");" );\r
        }\r
 }\r
 //End HTML code invoked function\r
@@ -2101,10 +2319,8 @@ function kadovInitTriggersInHead( )
 //Begin HTML code invoked function\r
 function kadovFilePopupInit( el )\r
 {\r
-       if( !gbBsIE4 )\r
-               return;\r
        if( typeof(el) == "string" )\r
-               el = document.all.item(el);\r
+               el = getElement(el);\r
 \r
        if( el != null )\r
                CCSSP.RegisterEventHandler( el, "onmouseover", "BSPSPopupOnMouseOver(event);" );\r
@@ -2117,7 +2333,7 @@ function kadovInitTrigger( element )
        var srcElement = element;\r
        if( typeof(srcElement) == "string" )\r
        {\r
-               srcElement = document.all.item(element,0);\r
+               srcElement = getElement(element,0);\r
                if(srcElement == null)\r
                        return;\r
        }\r
@@ -2126,6 +2342,10 @@ function kadovInitTrigger( element )
                return;\r
 \r
        var targets = srcElement.getAttribute( "x-targets" );\r
+       if (!targets)\r
+               targets = srcElement.style.getAttribute("x-targets");\r
+       if (!targets)\r
+               return; \r
        var arrOneTarget = targets.split( "," );\r
        for( var i = 0; i < arrOneTarget.length; i ++ )\r
                bsscFXInit( element, arrOneTarget[i], null, null, null, null );\r
@@ -2134,13 +2354,13 @@ function kadovInitTrigger( element )
 function kadovIsParentVisible( el )\r
 {\r
        if( typeof(el) == "string" )\r
-               el = document.all.item(el);\r
+               el = getElement(el);\r
        if( (!el) || el.tagName == "BODY" )\r
                return true;\r
        if( el.style.display == 'none' ) //el.visibility == 'hidden' || \r
                return false;\r
        else\r
-               return kadovIsParentVisible( el.parentElement );\r
+               return kadovIsParentVisible( getParentNode(el) );\r
 }\r
 \r
 function kadovInitEffects( element )\r
@@ -2150,7 +2370,7 @@ function kadovInitEffects( element )
        var srcElement = element;\r
        if( typeof(srcElement) == "string" )\r
        {\r
-               srcElement = document.all.item(element,0);\r
+               srcElement = getElement(element,0);\r
                if(srcElement == null)\r
                        return;\r
        }\r
@@ -2247,7 +2467,7 @@ function kadovTranslateProp( prop )
 function bsscFXInit( trigger_ID, target_ID, event_type, \r
        action_type, action_setting, event_addional )\r
 {\r
-       if( (!CCSSP.bIsWinOS && !CCSSP.bIsSunOS ) || typeof(target_ID) != "string" )//MUST have a target_ID\r
+       if( (!gbBsWindows && !gbBsSunOS  && !(gbBsMac&&gbBsIE5)) || typeof(target_ID) != "string" )//MUST have a target_ID\r
                return; // we don't support Navigator yet\r
        \r
        if( typeof(event_type) == "string" )\r
@@ -2271,40 +2491,23 @@ function bsscFXInit( trigger_ID, target_ID, event_type,
 }      \r
 //End the definition of one entry to DHTML effects\r
 \r
-\r
 /// Section End  - kadov DHTM (JavaScript 1.2)\r
 \r
-\r
 /// Section Begin  - CCSSP DHTM (JavaScript 1.2)\r
 \r
 //Begin JavaScript libary for cross-platform positioning object.\r
 function CCSSP(){} // constructor of CCSSP class\r
 \r
-CCSSP.strAgent = navigator.userAgent.toLowerCase(); \r
-CCSSP.nAppVersion = parseInt(navigator.appVersion);\r
-\r
-CCSSP.bIsWinOS = ((CCSSP.strAgent.indexOf("win") >= 0) || (CCSSP.strAgent.indexOf("16bit") >= 0));\r
-CCSSP.bIsMacOS = (CCSSP.strAgent.indexOf("mac") >= 0);\r
-CCSSP.bIsSunOS = (CCSSP.strAgent.indexOf("sunos") != -1);\r
-\r
-CCSSP.bIsIE = (navigator.appName.indexOf("Microsoft") >= 0);\r
-CCSSP.bIsIE4 = (CCSSP.bIsIE && (CCSSP.nAppVersion >= 4));\r
-CCSSP.bIsIE5 = (CCSSP.bIsIE4 && (CCSSP.strAgent.indexOf("msie 5") != -1) )\r
-\r
-CCSSP.bIsNav = (navigator.appName.indexOf("Netscape") >= 0);\r
-CCSSP.bIsNav4 = (CCSSP.bIsNav && (CCSSP.nAppVersion >= 4));\r
-CCSSP.bIsNav6 = (CCSSP.bIsNav && (CCSSP.nAppVersion >= 5));\r
-\r
 CCSSP.GetObject = function( obj )\r
 {//convert object name string or reference into a valid object reference\r
        if( typeof(obj) == "object" )\r
                return obj;\r
        else if( typeof(obj) == "string" && obj != "")\r
        {\r
-               if( CCSSP.bIsNav4 )\r
+               if( gbBsNS4 )\r
                        return eval("document." + obj);\r
                else\r
-                       return eval("document.all." + obj);\r
+                       return eval("document.all(\"" + obj + "\")");\r
        }\r
        else\r
                return null;\r
@@ -2312,7 +2515,7 @@ CCSSP.GetObject = function( obj )
 \r
 CCSSP.MoveObjectTo = function(obj, x, y)\r
 {//positioning an object at a specific pixel coordinate\r
-       if( CCSSP.bIsNav4 )\r
+       if( gbBsNS4 )\r
                obj.moveTo(x,y);\r
        else\r
        {\r
@@ -2323,7 +2526,7 @@ CCSSP.MoveObjectTo = function(obj, x, y)
 \r
 CCSSP.MoveObjectBy = function(obj, dx, dy)\r
 {//moveing a object by x and/or y pixel\r
-       if( CCSSP.bIsNav4 )\r
+       if( gbBsNS4 )\r
                obj.moveBy(dx,dy);\r
        else\r
        {\r
@@ -2334,7 +2537,7 @@ CCSSP.MoveObjectBy = function(obj, dx, dy)
 \r
 CCSSP.SetObjectBGColor = function(obj, color)\r
 {//set the background color of an object\r
-       if( CCSSP.bIsNav4 )\r
+       if( gbBsNS4 )\r
                obj.bgColor = color;\r
        else\r
                obj.style.backgroundColor = color;\r
@@ -2342,7 +2545,7 @@ CCSSP.SetObjectBGColor = function(obj, color)
 \r
 CCSSP.ShowObject = function(obj, bShow)\r
 {// set the object to be visible or invisible\r
-       if( CCSSP.bIsNav4 )\r
+       if( gbBsNS4 )\r
                obj.visibility = (bShow == true) ? 'show' : 'hide';\r
        else\r
                obj.style.visibility = (bShow == true) ? 'visible' : 'hidden';// when hidden, it still occupy some space.\r
@@ -2350,7 +2553,7 @@ CCSSP.ShowObject = function(obj, bShow)
 \r
 CCSSP.GetObjectLeft = function(obj)\r
 {// retrieve the x coordinate of a posionable object\r
-       if( CCSSP.bIsNav4 )\r
+       if( gbBsNS4 )\r
                return obj.left;\r
        else\r
                return obj.style.pixelLeft;\r
@@ -2358,7 +2561,7 @@ CCSSP.GetObjectLeft = function(obj)
 \r
 CCSSP.GetObjectTop = function(obj)\r
 {// retrieve the y coordinate of a posionable object\r
-       if( CCSSP.bIsNav4 )\r
+       if( gbBsNS4 )\r
                return obj.top;\r
        else\r
                return obj.style.pixelTop;\r
@@ -2366,7 +2569,7 @@ CCSSP.GetObjectTop = function(obj)
 \r
 CCSSP.GetObjectContainLeft = function(obj)\r
 {// retrieve the x coordinate of a posionable object relative to it's parent element\r
-       if( CCSSP.bIsNav4 )\r
+       if( gbBsNS4 )\r
                return obj.pageX;\r
        else\r
        {\r
@@ -2379,7 +2582,7 @@ CCSSP.GetObjectContainLeft = function(obj)
 \r
 CCSSP.GetObjectWindowLeft = function(obj)\r
 {// retrieve the x coordinate of a posionable object relative to browser window\r
-       if( CCSSP.bIsNav4 )\r
+       if( gbBsNS4 )\r
                return obj.pageX;\r
        else\r
        {\r
@@ -2392,7 +2595,7 @@ CCSSP.GetObjectWindowLeft = function(obj)
 \r
 CCSSP.GetObjectContainTop = function(obj)\r
 {// retrieve the y coordinate of a posionable object relative to it's parent element\r
-       if( CCSSP.bIsNav4 )\r
+       if( gbBsNS4 )\r
                return obj.pageY;\r
        else\r
        {\r
@@ -2405,7 +2608,7 @@ CCSSP.GetObjectContainTop = function(obj)
 \r
 CCSSP.GetObjectWindowTop = function(obj)\r
 {// retrieve the y coordinate of a posionable object relative to browser window\r
-       if( CCSSP.bIsNav4 )\r
+       if( gbBsNS4 )\r
                return obj.pageY;\r
        else\r
        {\r
@@ -2418,7 +2621,7 @@ CCSSP.GetObjectWindowTop = function(obj)
 \r
 CCSSP.GetObjectHeight = function(obj)\r
 {// retrieve the height of a posionable object\r
-       if( CCSSP.bIsNav4 )\r
+       if( gbBsNS4 )\r
                return obj.clip.height;\r
        else\r
                return obj.offsetHeight;\r
@@ -2426,7 +2629,7 @@ CCSSP.GetObjectHeight = function(obj)
 \r
 CCSSP.GetObjectWidth = function(obj)\r
 {// retrieve the width of a posionable object\r
-       if( CCSSP.bIsNav4 )\r
+       if( gbBsNS4 )\r
                return obj.clip.width;\r
        else\r
                return obj.offsetWidth;\r
@@ -2434,10 +2637,12 @@ CCSSP.GetObjectWidth = function(obj)
 \r
 CCSSP.RegisterEventHandler = function( srcObj, rawEventName, funcHandler )\r
 { // to add the "funcHandler" as the "rawEventName" 's handler to the "srcObj" object,the original event handler will be combined\r
-       if (CCSSP.bIsNav4 && !CCSSP.bIsNav6)\r
+       if (gbBsNS4 && !gbBsNS6)\r
                return ;\r
+               \r
        var oldHandler = "";\r
-       if (CCSSP.bIsMacOS && CCSSP.bIsIE4)\r
+\r
+       if (gbBsMac &&gbBsIE4&&!gbBsIE5)\r
        {\r
                if (typeof(srcObj[rawEventName.toLowerCase()])=="unknown")\r
                { //search for <SCRIPT> tag which define the event handler\r
@@ -2463,7 +2668,7 @@ CCSSP.RegisterEventHandler = function( srcObj, rawEventName, funcHandler )
                        if( bodyStart > 0 || bodyEnd > bodyStart )\r
                                oldHandler = functionDefinition.substr( bodyStart + 1, bodyEnd - bodyStart - 2 );\r
                }\r
-               else if( CCSSP.bIsIE4 )\r
+               else if( gbBsIE4 )\r
                { //search for <SCRIPT> tag which define the event handler\r
                        for( var i = 0; i < document.scripts.length; i++ ) \r
                        {\r
@@ -2475,29 +2680,31 @@ CCSSP.RegisterEventHandler = function( srcObj, rawEventName, funcHandler )
                                }\r
                        }\r
                }\r
-       }       \r
+       }\r
        if( oldHandler.indexOf(funcHandler) >= 0 )\r
                return;// to prevent register the funtion twice.\r
 \r
-       if( CCSSP.bIsNav4 ) // only "onload, onresize, onfocus" apply to window\r
+       if( gbBsNS4 ) // only "onload, onresize, onfocus" apply to window\r
        {// other raw events will apply to layer\r
                var noOn = rawEventName.substring(2, rawEventName.length);\r
                if( typeof(noOn) == "string" && noOn.length > 3 ) {\r
-                       srcObj.captureEvents( Event[noOn.toUpperCase()] );\r
+                       if (srcObj.captureEvents)\r
+                               srcObj.captureEvents( Event[noOn.toUpperCase()] );\r
                }\r
        }\r
-\r
+       \r
        var newHandler = oldHandler;\r
        if( newHandler.length == 0 )\r
                newHandler = funcHandler;\r
        else\r
                newHandler += "; " + funcHandler;\r
+       \r
        srcObj[rawEventName.toLowerCase()] = new Function( newHandler );\r
 }\r
 \r
 CCSSP.GetWindowHeight = function()\r
 {// retrieve the height of available content in browser window\r
-       if( CCSSP.bIsNav4 )\r
+       if( gbBsNS4 )\r
                return window.innerHeight;\r
        else\r
                return document.body.clientHeight;\r
@@ -2505,7 +2712,7 @@ CCSSP.GetWindowHeight = function()
 \r
 CCSSP.GetWindowBottom = function()\r
 {// retrieve the bottom postion of browser window\r
-       if( CCSSP.bIsNav4 )\r
+       if( gbBsNS4 )\r
                return window.outerHeight + window.pageYOffset;\r
        else\r
                return document.body.clientHeight + document.body.scrollTop;\r
@@ -2513,7 +2720,7 @@ CCSSP.GetWindowBottom = function()
 \r
 CCSSP.GetWindowWidth = function()\r
 {// retrieve the width of available content in browser window\r
-       if( CCSSP.bIsNav4 )\r
+       if( gbBsNS4 )\r
                return window.innerWidth;\r
        else\r
                return document.body.clientWidth;\r
@@ -2521,7 +2728,7 @@ CCSSP.GetWindowWidth = function()
 \r
 CCSSP.GetWindowRight = function()\r
 {// retrieve the right postion of browser window\r
-       if( CCSSP.bIsNav4 )\r
+       if( gbBsNS4 )\r
                return window.outerWidth + window.pageXOffset;\r
        else\r
                return document.body.clientWidth + document.body.scrollLeft;\r
@@ -2556,8 +2763,8 @@ CCSSP.TrimSpace = function( objString )
 \r
 CCSSP.GetEventElement = function( navEventObject )\r
 {// to get the element who fired the current event\r
-       if(CCSSP.bIsNav4 \r
-               if (CCSSP.bIsNav6)\r
+       if(gbBsNS4\r
+               if (gbBsNS6)\r
                        return null;\r
                else\r
                         navEventObject.target;\r
@@ -2581,10 +2788,10 @@ CCSSP.IsDescendant = function( progenitor, progeny )
                return true; \r
        else if( progeny.id == progenitor.id ) \r
                return true; \r
-       else if( progeny.parentElement == progenitor.parentElement )\r
+       else if( getParentNode(progeny) == getParentNode(progenitor))\r
                return false;\r
        else\r
-               return CCSSP.IsDescendant( progenitor, progeny.parentElement );\r
+               return CCSSP.IsDescendant( progenitor, getParentNode(progeny));\r
 }\r
 \r
 CCSSP.IsTextTag = function( Obj )\r
@@ -2670,33 +2877,33 @@ CTarget.prototype.GetAgencyObject = function(str_action_type,action_setting )
                return new CAgencyElastic(this.eleTarget, action_setting);\r
                \r
     case "fadein" : \r
-       return (CCSSP.bIsIE4)? new CAgencyAlpha(this.eleTarget, action_setting, true) : null;\r
+       return (gbBsIE4)? new CAgencyAlpha(this.eleTarget, action_setting, true) : null;\r
     case "fadeout" :\r
-       return (CCSSP.bIsIE4)? new CAgencyAlpha(this.eleTarget, action_setting, false) : null;\r
+       return (gbBsIE4)? new CAgencyAlpha(this.eleTarget, action_setting, false) : null;\r
     case "rockrollstatic" :\r
     case "rockroll" :\r
-       return (CCSSP.bIsIE4)? new CAgencyWave(this.eleTarget, action_setting, false) : null;\r
+       return (gbBsIE4)? new CAgencyWave(this.eleTarget, action_setting, false) : null;\r
  \r
     case "glow":\r
-       return (CCSSP.bIsIE4)? new CAgencyGlow(this.eleTarget,action_setting) : null;\r
+       return (gbBsIE4)? new CAgencyGlow(this.eleTarget,action_setting) : null;\r
     case "dropshadow":\r
-       return (CCSSP.bIsIE4)? new CAgencyDropShadow(this.eleTarget,action_setting) : null;\r
+       return (gbBsIE4)? new CAgencyDropShadow(this.eleTarget,action_setting) : null;\r
     case "transition" :\r
-       return (CCSSP.bIsIE4)? new CAgencyRevealTrans(this.eleTarget,action_setting) : null;\r
+       return (gbBsIE4)? new CAgencyRevealTrans(this.eleTarget,action_setting) : null;\r
     case "blur" :\r
-       return (CCSSP.bIsIE4)? new CAgencyBlur(this.eleTarget,action_setting) : null;\r
+       return (gbBsIE4)? new CAgencyBlur(this.eleTarget,action_setting) : null;\r
 \r
     case "fliph" : // all these 4 do NOT need any parameters\r
     case "flipv" :\r
     case "invert":\r
     case "gray" :\r
-       return (CCSSP.bIsIE4)? new CAgencyChangeFilter(this.eleTarget, str_action_type) : null;\r
+       return (gbBsIE4)? new CAgencyChangeFilter(this.eleTarget, str_action_type) : null;\r
     \r
     case "fontchange": // the effects below change the style on the fly, so won't work in Navigator\r
-       return (CCSSP.bIsIE4)? new CAgencyFontChange(this.eleTarget,action_setting) : null;\r
+       return (gbBsIE4)? new CAgencyFontChange(this.eleTarget,action_setting) : null;\r
     case "boderchange": \r
     case "stylechange":\r
-       return (CCSSP.bIsIE4)? new CAgencyChangeStyle(this.eleTarget,action_setting) : null;\r
+       return (gbBsIE4)? new CAgencyChangeStyle(this.eleTarget,action_setting) : null;\r
 \r
        default: return null;\r
        }\r
@@ -3071,7 +3278,7 @@ function CAgencyFly( element, settings, bIsIn )
                }\r
        }\r
                \r
-       if( CCSSP.bIsIE5 && this.ele.style.position != "absolute" )\r
+       if( gbBsIE5 && this.ele.style.position != "absolute" )\r
                this.ele.style.position = "relative";\r
        this.timer = null;\r
        this.aniIndex = CEngine.arrAnimation.length;\r
@@ -3203,7 +3410,7 @@ function CAgencySpiral( element, settings, bIsIn )
                }\r
        }\r
 \r
-       if( CCSSP.bIsIE5 && this.ele.style.position != "absolute" )\r
+       if( gbBsIE5 && this.ele.style.position != "absolute" )\r
                this.ele.style.position = "relative";\r
        this.timer = null;\r
        this.aniIndex = CEngine.arrAnimation.length;\r
@@ -3287,7 +3494,7 @@ function CAgencyElastic( element, settings)
                }\r
        }\r
                \r
-       if( CCSSP.bIsIE5 && this.ele.style.position != "absolute" )\r
+       if( gbBsIE5 && this.ele.style.position != "absolute" )\r
                this.ele.style.position = "relative";\r
        this.timer = null;\r
        this.aniIndex = CEngine.arrAnimation.length;\r
@@ -3463,7 +3670,7 @@ CAgencyZoom.prototype.ResetParameters = function()
 CAgencyZoom.prototype.ResetParametersAllChildren = function( child )\r
 {\r
        CCSSP.ShowObject(child, true );\r
-       if( (child.tagName == "DIV") && (child.parentElement.tagName == "TD") )\r
+       if( (child.tagName == "DIV") && (getParentNode(child).tagName == "TD") )\r
                child.width = "100%";// if the div is inside a cell of table, we need the this hack\r
        \r
        if( CCSSP.IsTextTag(child) )\r
@@ -4027,7 +4234,6 @@ CCSSP.RegisterEventHandler( document, "onmouseout", "CEngine.OnMouseOver();BSSCO
 CCSSP.RegisterEventHandler( window, "onunload", "BSSCOnUnload();");\r
 //End to collaborate with other event handler settings\r
 \r
-\r
 /// Section End  - CCSSP DHTM 2 (JavaScript 1.2)\r
 \r
-//// Segment End -- (JavaScript 1.2)\r
+//// Segment End -- (JavaScript 1.2)
\ No newline at end of file
diff --git a/doc/salome/gui/KERNEL/image57.gif b/doc/salome/gui/KERNEL/image57.gif
new file mode 100755 (executable)
index 0000000..03b56bd
Binary files /dev/null and b/doc/salome/gui/KERNEL/image57.gif differ
diff --git a/doc/salome/gui/KERNEL/image58.gif b/doc/salome/gui/KERNEL/image58.gif
new file mode 100755 (executable)
index 0000000..402a3ef
Binary files /dev/null and b/doc/salome/gui/KERNEL/image58.gif differ
diff --git a/doc/salome/gui/KERNEL/image59.gif b/doc/salome/gui/KERNEL/image59.gif
new file mode 100755 (executable)
index 0000000..b0b0a3d
Binary files /dev/null and b/doc/salome/gui/KERNEL/image59.gif differ
diff --git a/doc/salome/gui/KERNEL/image60.gif b/doc/salome/gui/KERNEL/image60.gif
new file mode 100755 (executable)
index 0000000..3bfb8ca
Binary files /dev/null and b/doc/salome/gui/KERNEL/image60.gif differ
diff --git a/doc/salome/gui/KERNEL/image61.gif b/doc/salome/gui/KERNEL/image61.gif
new file mode 100755 (executable)
index 0000000..4b33a30
Binary files /dev/null and b/doc/salome/gui/KERNEL/image61.gif differ
diff --git a/doc/salome/gui/KERNEL/kernel.htm b/doc/salome/gui/KERNEL/kernel.htm
new file mode 100755 (executable)
index 0000000..de0283a
--- /dev/null
@@ -0,0 +1,139 @@
+\r
+<html>\r
+<head><script language="javascript">\r
+<!--\r
+var sIcon="whstart.ico";\r
+var sPath=document.location.href;\r
+if (sPath.indexOf("http")!= -1)\r
+       document.write("<link REL=\"SHORTCUT ICON\" href=\""+ sIcon +"\">");\r
+//-->\r
+</script>\r
+ <title>KERNEL</title>\r
+ <meta name="generator" content="RoboHelp by eHelp Corporation   www.ehelp.com">\r
+ <meta name="description" content="WebHelp 5.50">\r
+</head>\r
+<script type="text/javascript" language="javascript" src="whver.js"></script>\r
+<script type="text/javascript" language="javascript" src="whutils.js"></script>\r
+<script type="text/javascript" language="javascript" src="whmsg.js"></script>\r
+<script type="text/javascript" language="javascript" >\r
+<!--\r
+if (!window.gbWhVer||!window.gbWhUtil||!window.gbWhMsg)\r
+       document.location.reload();\r
+//-->\r
+</script>\r
+\r
+<script type="text/javascript" language="javascript" src="whstub.js"></script>\r
+<script language="javascript">\r
+<!--\r
+var nWebhelpNavPaneMode = 1;                   //1: DHTML 2:Applet 3:PureHTML 4:NoframeAt all\r
+var strPaneDHTML  = "whskin_pdhtml.htm";               //whd_nvp10.htm  if tab enabled, whnframe.htm if tab disabled.\r
+var strPaneApplet = "whskin_papplet.htm";\r
+var strPaneList   = "whskin_plist.htm";\r
+var bNoApplet  = false;\r
+\r
+var strPane = "";\r
+\r
+var nViewFrameType = -1;\r
+\r
+if (!window.gAgent)\r
+{\r
+       // low end browser, we don't even try to determine it.\r
+       document.location = "whnjs.htm";\r
+}\r
+else\r
+{\r
+       if (!gbNav4&&!gbIE4&&!gbOpera7&&!gbSafari)                              \r
+               document.location = "whnjs.htm";\r
+       else if (gbNav4 && !gbNav6 && ((gnVerMinor <= 4.06)))\r
+               document.location = "whnjs.htm";\r
+       else if (gbMac && gbIE4 && !gbIE5)              \r
+               document.location = "whnjs.htm";\r
+       //figure out which mode is the best\r
+       else\r
+       {\r
+               nViewFrameType=nWebhelpNavPaneMode;\r
+               if (nWebhelpNavPaneMode==1||nWebhelpNavPaneMode == 2)\r
+               {\r
+                       var gbDHTML=(nWebhelpNavPaneMode==1);\r
+                       if (gbNav4)                                                                             nViewFrameType = 2;\r
+                       if (gbNav4&&(gnVerMinor < 4.1))                                         nViewFrameType = 3;\r
+                       if (gbNav4&&(gnVerMinor == 4.6))                                        nViewFrameType = 3;\r
+                       if (gbIE4&&gbDHTML)                                                                     nViewFrameType = 1;\r
+                       if (gbIE4&&gbSunOS&&nWebhelpNavPaneMode==2)                     nViewFrameType = 3;\r
+                       if (gbNav4&&gbSunOS&&nViewFrameType==2)                 nViewFrameType = 3;\r
+                       if (gbNav6&&gbDHTML)                                                            nViewFrameType = 1;\r
+                       if (gbNav6&&!gbNav61&&nWebhelpNavPaneMode == 2)         nViewFrameType = 3;\r
+                       if (gbMac)                                                                                      nViewFrameType = 3;\r
+                       if (gbOpera7&&nViewFrameType == 2)                                      nViewFrameType = 3;\r
+                       if ((bNoApplet)&&(nViewFrameType == 2))                         nViewFrameType = 3;\r
+               }\r
+       }\r
+}\r
+\r
+if (nViewFrameType!=-1)\r
+{\r
+       var gbWindows = ((gAgent.indexOf("win") != -1) || (gAgent.indexOf("16bit") != -1));\r
+       //The colordepth of the 16 color on Windows is 1. \r
+       if ((gbWindows) && (gbNav4) && (window.screen) && (window.screen.colorDepth <= 4))\r
+       {\r
+          alert("WebHelp has detected that your display is set to 16 colors. For full WebHelp support, please set your display to use 256 or more colors.");\r
+          nViewFrameType = 3;\r
+       }\r
+\r
+       //figure out which one is navpane\r
+       // ReplaceMark:nViewFrameType = 1\r
+       if (nViewFrameType == 1)\r
+       {\r
+               if (gbNav4 && !gbNav6)\r
+                       strPane = strPaneList;\r
+               else\r
+                       strPane = strPaneDHTML;\r
+       }\r
+       else if (nViewFrameType == 2)\r
+               strPane = strPaneApplet;\r
+       else\r
+               strPane = strPaneList;\r
+}\r
+//-->\r
+</script>\r
+<script type="text/javascript" language="javascript" src="whstart.js"></script>\r
+<script type="text/javascript" language="javascript">\r
+<!--\r
+if (!gbIE4&&!gbNav4&&!gbOpera7&&!gbSafari)\r
+       document.location = "whnjs.htm";\r
+\r
+function CMRAgent( strID, strURL, strLabel, strFrameAttr )\r
+{\r
+  this.m_strID = strID;\r
+  this.m_strURL = strURL;\r
+  this.m_strLabel = strLabel;\r
+  this.m_strFrameAttr = strFrameAttr;\r
+}\r
+\r
+function CMRServer()\r
+{\r
+  this.m_cAgents = new Array;\r
+}\r
+var cMRServer = new CMRServer;\r
+// GetServerInfo\r
+// Registry the agent array handled by webhelp\r
+// ReplaceMark:MRServer.strServerData\r
+//-->\r
+</script>\r
+\r
+<script type="text/javascript" language="javascript">\r
+<!--\r
+if (nViewFrameType!=-1)\r
+{\r
+       var strHTML = "<frameset rows=\"32,*\" hostof=\"parent:toolbar!startpage:yes\" frameborder=\"0\" border=\"0\"><frame src=\"whskin_tbars.htm\" id=\"toolbar\" frameborder=\"0\" border=\"0\" scrolling=\"no\" noresize marginheight=\"0\" marginwidth=\"0\" title=\"Toolbar\"></frame><frame src=\"whskin_frmset01.htm\"  frameborder=\"1\" border=\"1\" scrolling=\"auto\" marginheight=\"0\" marginwidth=\"0\"></frame></frameset>";\r
+       document.write(strHTML);\r
+}\r
+//-->\r
+</script>\r
+\r
+<frameset cols="100%,*" frameborder=no border=0>\r
+  <frame src="whnjs.htm">\r
+  <frame src="whskin_blank.htm" noresize>\r
+</frameset>\r
+\r
+</html>
\ No newline at end of file
diff --git a/doc/salome/gui/KERNEL/kernel.log b/doc/salome/gui/KERNEL/kernel.log
new file mode 100755 (executable)
index 0000000..c766a70
--- /dev/null
@@ -0,0 +1,272 @@
+|SourceProjectName:KERNEL.hpr\r
+|DestinationProjectName:kernel.htm\r
+whhost.js\r
+whmsg.js\r
+whmozemu.js\r
+whproxy.js\r
+whstub.js\r
+whutils.js\r
+whver.js\r
+whform.js\r
+whphost.js\r
+whstart.js\r
+whtopic.js\r
+whframes.js\r
+whlang.js\r
+whskin_info.htm\r
+whskin_blank.htm\r
+whskin_pickup.htm\r
+whskin_homepage.htm\r
+whskin_tw.htm\r
+whnjs.htm\r
+whthost.js\r
+whtdhtml.htm\r
+whihost.js\r
+whibody.htm\r
+whiform.htm\r
+whfhost.js\r
+whfbody.htm\r
+whfform.htm\r
+whghost.js\r
+whgbody.htm\r
+whgdhtml.htm\r
+whgdef.htm\r
+whproj.js\r
+whproj.xml\r
+whproj.htm\r
+whxdata\whtoc.xml\r
+whxdata\whidx.xml\r
+whxdata\whfts.xml\r
+whxdata\whglo.xml\r
+whdata\whtoc.js\r
+whdata\whtoc.htm\r
+whdata\whtdata.js\r
+whdata\whidx.js\r
+whdata\whidx.htm\r
+whdata\whidata.js\r
+whdata\whfts.js\r
+whdata\whfts.htm\r
+whdata\whglo.js\r
+whdata\whglo.htm\r
+whdata\whgdata.js\r
+whdata\whftdata.js\r
+whdata\whfwdata.js\r
+whres.xml\r
+webhelp.jar\r
+webhelp.cab\r
+whgdata\whnvp30.htm\r
+whgdata\whnvp31.htm\r
+whgdata\whnvp32.htm\r
+whgdata\whnvp33.htm\r
+whgdata\whnvt30.htm\r
+whgdata\whnvt31.htm\r
+whgdata\whnvt32.htm\r
+whgdata\whnvt33.htm\r
+whgdata\whnvf30.htm\r
+whgdata\whnvf31.htm\r
+whgdata\whnvf32.htm\r
+whgdata\whnvf33.htm\r
+whgdata\whnvl31.htm\r
+whgdata\whnvl32.htm\r
+whgdata\whnvl33.htm\r
+whgdata\whexpbar.gif\r
+cshdat_webhelp.htm\r
+whcsh_home.htm\r
+whcshdata.htm\r
+cshdat_robohelp.htm\r
+wht_tab0.gif\r
+wht_tab1.gif\r
+wht_tab2.gif\r
+wht_tab3.gif\r
+wht_tab4.gif\r
+wht_tab5.gif\r
+wht_tab6.gif\r
+wht_tab7.gif\r
+wht_tab8.gif\r
+wht_glo_h.gif\r
+wht_glo_n.gif\r
+wht_fts_h.gif\r
+wht_fts_n.gif\r
+wht_idx_h.gif\r
+wht_idx_n.gif\r
+wht_toc_h.gif\r
+wht_toc_n.gif\r
+wht_ws.gif\r
+wht_ws_g.gif\r
+wht_logo1.gif\r
+wht_logo2.gif\r
+wht_abgw.jpg\r
+wht_abgi.jpg\r
+wht_abge.jpg\r
+wht_abtw.jpg\r
+wht_abte.jpg\r
+wht_abti.jpg\r
+wht_spac.gif\r
+wht_next.gif\r
+wht_next_g.gif\r
+wht_prev.gif\r
+wht_prev_g.gif\r
+wht_sync.gif\r
+wht_hide.gif\r
+wht_go.gif\r
+whstart.ico\r
+whestart.ico\r
+whrstart.ico\r
+whidhtml.htm\r
+whfdhtml.htm\r
+whskin_banner.htm\r
+whtbar.js\r
+whskin_pdhtml.htm\r
+whskin_papplet.htm\r
+whskin_plist.htm\r
+whskin_tbars.htm\r
+whskin_mbars.htm\r
+wht_toc4.gif\r
+wht_toc1.gif\r
+wht_toc2.gif\r
+wht_toc3.gif\r
+whskin_frmset010.htm\r
+whst_topics.xml\r
+whskin_frmset01.htm\r
+kernel_hha.hhk\r
+kernel.hhc\r
+kernel.hhk\r
+kernel\about_salome_pro_architecture.htm\r
+kernel\about_salome_pro_help_system.htm\r
+kernel\copyright_notice.htm\r
+kernel\creating_a_new_study.htm\r
+kernel\displaying_hiding_toolbars.htm\r
+kernel\displaying_studies.htm\r
+kernel\editing_studies.htm\r
+kernel\getting_properties_of_the_study.htm\r
+kernel\getting_started2.htm\r
+kernel\introduction.htm\r
+kernel\introduction_to_iapp.htm\r
+kernel\introduction_to_salome_pro.htm\r
+kernel\navigating_topics.htm\r
+kernel\opening_studies.htm\r
+kernel\readme.html\r
+kernel\running_salome_pro.htm\r
+kernel\salome_pro_desktop.htm\r
+kernel\saving_a_study.htm\r
+kernel\setting_preferences.htm\r
+kernel\using_catalog_generator.htm\r
+kernel\using_left-hand_tabs.htm\r
+kernel\using_object_browser.htm\r
+kernel\using_registry.htm\r
+kernel\using_usecase_browser.htm\r
+ehelp.xml\r
+robohhre.lng\r
+texture_horiz_ltbluebubbles.jpg\r
+kernel.glo\r
+default.css\r
+image59.gif\r
+pics\frontv.jpg\r
+pics\fitall.jpg\r
+pics\desktop3.jpg\r
+pics\removeobj.jpg\r
+pics\registy1.jpg\r
+pics\sheme1.jpg\r
+pics\open.jpg\r
+pics\bottomv.jpg\r
+pics\clear.jpg\r
+pics\sheme2.jpg\r
+occ.jpg\r
+pics\globalpanning.jpg\r
+pics\usecasebrsr.jpg\r
+image2.jpg\r
+pics\readmepage.png\r
+tip1.gif\r
+pics\rightv.jpg\r
+pics\objbrowser2.jpg\r
+pics\newobj.jpg\r
+pics\save.jpg\r
+pics\panning.jpg\r
+pics\zoom.jpg\r
+pics\trihedron.jpg\r
+pics\newsticn.jpg\r
+pics\fitrect.jpg\r
+pics\usecasebr.jpg\r
+image60.gif\r
+pics\rotate.jpg\r
+image61.gif\r
+pics\copy-paste.jpg\r
+image4.gif\r
+pics\exemple.gif\r
+pics\setcurrent.jpg\r
+pics\tile.jpg\r
+pics\topv.jpg\r
+pics\close.jpg\r
+pics\application-splash.jpg\r
+i_blue.jpg\r
+image7.gif\r
+pics\productpage.png\r
+pics\cascade.jpg\r
+pics\undo-redo.jpg\r
+note1.gif\r
+pics\progresspage.png\r
+image57.gif\r
+pics\leftv.jpg\r
+pics\backv.jpg\r
+pics\addobj.jpg\r
+image58.gif\r
+pics\choicepage.png\r
+pics\reset.jpg\r
+pics\dump.jpg\r
+kernel.ppf\r
+ehlpdhtm.js\r
+ss_btn_related_topics.gif\r
+default_ns.css\r
+whxdata\whtdata0.xml\r
+whxdata\whftdata0.xml\r
+whxdata\whfwdata0.xml\r
+whxdata\whgdata0.xml\r
+whdata\whtdata0.htm\r
+whdata\whftdata0.htm\r
+whdata\whfwdata0.htm\r
+whdata\whgdata0.htm\r
+whgdata\whlstt0.htm\r
+whgdata\whlstt1.htm\r
+whgdata\whlstt2.htm\r
+whgdata\whlstt3.htm\r
+whgdata\whlstt4.htm\r
+whgdata\whlsti0.htm\r
+whgdata\whlstfl0.htm\r
+whgdata\whlstfl1.htm\r
+whgdata\whlstfl2.htm\r
+whgdata\whlstfl3.htm\r
+whgdata\whlstfl4.htm\r
+whgdata\whlstfl5.htm\r
+whgdata\whlstfl6.htm\r
+whgdata\whlstfl7.htm\r
+whgdata\whlstfl8.htm\r
+whgdata\whlstfl9.htm\r
+whgdata\whlstfl10.htm\r
+whgdata\whlstfl11.htm\r
+whgdata\whlstfl12.htm\r
+whgdata\whlstfl13.htm\r
+whgdata\whlstfl14.htm\r
+whgdata\whlstfl15.htm\r
+whgdata\whlstfl16.htm\r
+whgdata\whlstfl17.htm\r
+whgdata\whlstfl18.htm\r
+whgdata\whlstfl19.htm\r
+whgdata\whlstfl20.htm\r
+whgdata\whlstfl21.htm\r
+whgdata\whlstfl22.htm\r
+whgdata\whlstfl23.htm\r
+whgdata\whlstfl24.htm\r
+whgdata\whlstfl25.htm\r
+whgdata\whlstf0.htm\r
+whgdata\whlstf1.htm\r
+whgdata\whlstf2.htm\r
+whgdata\whlstf3.htm\r
+whgdata\whlstf4.htm\r
+whgdata\whlstf5.htm\r
+whgdata\whlstf6.htm\r
+whgdata\whlstf7.htm\r
+whgdata\whlstf8.htm\r
+whgdata\whlstg0.htm\r
+kernel.htm\r
+kernel_csh.htm\r
+kernel_rhc.htm\r
diff --git a/doc/salome/gui/KERNEL/kernel_csh.htm b/doc/salome/gui/KERNEL/kernel_csh.htm
new file mode 100755 (executable)
index 0000000..23afeaa
--- /dev/null
@@ -0,0 +1,106 @@
+<html>\r
+<head>\r
+<title>KERNEL</title>\r
+\r
+<meta name="generator" content="RoboHelp by eHelp Corporation   www.ehelp.com">\r
+<meta name="description" content="WebHelp 5.50">\r
+<script language="javascript" src="whutils.js"></script>\r
+<script language="javascript">\r
+<!--\r
+var gCSHFileName   = "whc_data.htm";\r
+var gCSHSuffixName1 = "_csh.html";\r
+var gCSHSuffixName2 = "_csh.htm";\r
+//-->\r
+</script>\r
+<script language="javascript">\r
+<!--\r
+gCSHFileName="cshdat_webhelp.htm";\r
+//-->\r
+</script>\r
+<script language="javascript">\r
+<!--\r
+var gasProj = new Array();\r
+gasProj[0] = _getPath(document.location.href);\r
+var gCurrent = 0;\r
+\r
+function addProject(strProj)\r
+{\r
+       var len  = gasProj.length;\r
+       if (strProj)\r
+       {\r
+               strProj = _replaceSlash(strProj);\r
+               if (strProj.lastIndexOf("/") != strProj.length - 1)\r
+                       strProj += "/";\r
+               var strPPath = _getFullPath(_getPath(document.location.href), strProj);\r
+               var bFound = false;\r
+               for (var i = 0; i < len; i ++)\r
+               {\r
+                       if (isSamePath(gasProj[i], strPPath))\r
+                       {\r
+                               bFound = true;\r
+                               break;\r
+                       }\r
+               }\r
+               if (!bFound)\r
+                       gasProj[len] = strPPath;\r
+       }\r
+}\r
+\r
+function isSamePath(strPath1, strPath2)\r
+{\r
+       return strPath1.toLowerCase() == strPath2.toLowerCase();\r
+}\r
+\r
+function goNext()\r
+{\r
+       gCurrent ++;\r
+       var len = gasProj.length;\r
+       if (gCurrent >= len)\r
+               return getHomePage()\r
+       else\r
+               frames["csh"].location = gasProj[gCurrent] + gCSHFileName;\r
+       return "";\r
+}\r
+\r
+function getRelHomePage(strLocation)\r
+{\r
+       var strCurPPath = _getPath(strLocation);\r
+       var strOriPPath = _getPath(getHomePage());\r
+       var strRelPath = _getRelativeFileName(strOriPPath, strCurPPath);\r
+       var strURL = getHomePage() + "#" + strRelPath;\r
+       return strURL;\r
+}\r
+\r
+function getHomePage()\r
+{\r
+       var strHomePage;\r
+       var strTmp = location.toString();\r
+       var nPos = strTmp.indexOf("#");\r
+       if (nPos != -1)\r
+       {\r
+          strHomePage = strTmp.substring(0, nPos);\r
+       }\r
+       else\r
+       {\r
+          strHomePage = strTmp;\r
+       }\r
+       var nPos1 = strHomePage.indexOf(gCSHSuffixName1);\r
+       var nPos = strHomePage.indexOf(gCSHSuffixName2);\r
+       if (nPos != -1)\r
+       {\r
+          strHomePage = strHomePage.substring(0,nPos);\r
+          if (nPos1 != -1)\r
+            strHomePage += ".html";\r
+          else\r
+            strHomePage += ".htm";\r
+       }\r
+       return strHomePage;\r
+}\r
+//-->\r
+</script>\r
+</head>\r
+<frameset rows="1,*">\r
+<frame name="dumb" src="about:blank"></frame>\r
+<frame name="csh" src="cshdat_webhelp.htm"></frame>            \r
+</frameset>\r
+</html>
\ No newline at end of file
diff --git a/doc/salome/gui/KERNEL/kernel_rhc.htm b/doc/salome/gui/KERNEL/kernel_rhc.htm
new file mode 100755 (executable)
index 0000000..65674f4
--- /dev/null
@@ -0,0 +1,106 @@
+<html>\r
+<head>\r
+<title>KERNEL</title>\r
+\r
+<meta name="generator" content="RoboHelp by eHelp Corporation   www.ehelp.com">\r
+<meta name="description" content="WebHelp 5.50">\r
+<script language="javascript" src="whutils.js"></script>\r
+<script language="javascript">\r
+<!--\r
+var gCSHFileName   = "whc_data.htm";\r
+var gCSHSuffixName1 = "_rhc.html";\r
+var gCSHSuffixName2 = "_rhc.htm";\r
+//-->\r
+</script>\r
+<script language="javascript">\r
+<!--\r
+gCSHFileName="cshdat_robohelp.htm";\r
+//-->\r
+</script>\r
+<script language="javascript">\r
+<!--\r
+var gasProj = new Array();\r
+gasProj[0] = _getPath(document.location.href);\r
+var gCurrent = 0;\r
+\r
+function addProject(strProj)\r
+{\r
+       var len  = gasProj.length;\r
+       if (strProj)\r
+       {\r
+               strProj = _replaceSlash(strProj);\r
+               if (strProj.lastIndexOf("/") != strProj.length - 1)\r
+                       strProj += "/";\r
+               var strPPath = _getFullPath(_getPath(document.location.href), strProj);\r
+               var bFound = false;\r
+               for (var i = 0; i < len; i ++)\r
+               {\r
+                       if (isSamePath(gasProj[i], strPPath))\r
+                       {\r
+                               bFound = true;\r
+                               break;\r
+                       }\r
+               }\r
+               if (!bFound)\r
+                       gasProj[len] = strPPath;\r
+       }\r
+}\r
+\r
+function isSamePath(strPath1, strPath2)\r
+{\r
+       return strPath1.toLowerCase() == strPath2.toLowerCase();\r
+}\r
+\r
+function goNext()\r
+{\r
+       gCurrent ++;\r
+       var len = gasProj.length;\r
+       if (gCurrent >= len)\r
+               return getHomePage()\r
+       else\r
+               frames["csh"].location = gasProj[gCurrent] + gCSHFileName;\r
+       return "";\r
+}\r
+\r
+function getRelHomePage(strLocation)\r
+{\r
+       var strCurPPath = _getPath(strLocation);\r
+       var strOriPPath = _getPath(getHomePage());\r
+       var strRelPath = _getRelativeFileName(strOriPPath, strCurPPath);\r
+       var strURL = getHomePage() + "#" + strRelPath;\r
+       return strURL;\r
+}\r
+\r
+function getHomePage()\r
+{\r
+       var strHomePage;\r
+       var strTmp = location.toString();\r
+       var nPos = strTmp.indexOf("#");\r
+       if (nPos != -1)\r
+       {\r
+          strHomePage = strTmp.substring(0, nPos);\r
+       }\r
+       else\r
+       {\r
+          strHomePage = strTmp;\r
+       }\r
+       var nPos1 = strHomePage.indexOf(gCSHSuffixName1);\r
+       var nPos = strHomePage.indexOf(gCSHSuffixName2);\r
+       if (nPos != -1)\r
+       {\r
+          strHomePage = strHomePage.substring(0,nPos);\r
+          if (nPos1 != -1)\r
+            strHomePage += ".html";\r
+          else\r
+            strHomePage += ".htm";\r
+       }\r
+       return strHomePage;\r
+}\r
+//-->\r
+</script>\r
+</head>\r
+<frameset rows="1,*">\r
+<frame name="dumb" src="about:blank"></frame>\r
+<frame name="csh" src="cshdat_robohelp.htm"></frame>           \r
+</frameset>\r
+</html>
\ No newline at end of file
diff --git a/doc/salome/gui/KERNEL/robohhre.lng b/doc/salome/gui/KERNEL/robohhre.lng
new file mode 100755 (executable)
index 0000000..297538b
--- /dev/null
@@ -0,0 +1,101 @@
+[GlossaryTab]\r
+TabCaption=&Glossary\r
+TermCaption=&Term\r
+DefinitionCaption=&Definition For:\r
+\r
+[BrowseSequence]\r
+PreCaption=Previous\r
+PreTooltip=Previous Topic\r
+NextCaption=Next\r
+NextTooltip=Next Topic\r
+BlockTooltip=Select Block\r
+\r
+[Common]\r
+Contents=Contents\r
+Index=Index\r
+Search=Search\r
+Glossary=Glossary\r
+Logo/Author=Powered By\r
+Show=Show\r
+Hide=Hide\r
+SyncToc=SyncToc\r
+Prev=<<\r
+Next=>>\r
+Disabled Prev=<<\r
+Disabled Next=>>\r
+Seperate = |\r
+\r
+[WebHelp]\r
+Cancel=Cancel\r
+CantOpenURLorFile=Can't open URL or file\r
+CompletingContents=Completing Contents...\r
+Display=Display\r
+Term=Term:\r
+Definition=Definition:\r
+Done=Done\r
+Find=Find\r
+IndexInputPrompt=Type in the keyword to find:\r
+RelateTopicListPrompt=Click a topic, then click Display.\r
+LoadingData=Loading data, please wait...\r
+LoadingContents=Loading contents, please wait...\r
+LoadingContentsData=Loading, click here to cancel...\r
+LoadingFTS=Reading Search Data...\r
+LoadingIndex=Loading Index...\r
+LoadingTOCItem=Loading Table of Contents:\r
+Searching=Searching...\r
+FtsInputPrompt=Type in the word(s) to search for:\r
+TopicsFound=Topics Found\r
+BrowserLimitedMessage=Your browser does not support frames. We recommend that you update your browser to a version that supports frames.\r
+SuggestViewNoFrameMessage=To view the Help system without frames click on this\r
+SuggestViewNoFrameMsg2=hyperlink.\r
+TopicsNotFound=No Topics Found.\r
+CantSearch=Cannot search for that phrase.\r
+JS_alert_appletNotLoad = Unable to load applet. If you are using an old version of Netscape, the prefs.js file needs to be edited.\r
+JS_alert_colorlimitation=WebHelp has detected that your display is set to 16 colors. For full WebHelp support, please set your display to use 256 or more colors.\r
+Blank_topic_text=This topic was created by WinHelp Project Conversion Wizard, and is the destination of a missing topic or broken hyperlink.\r
+JS_alert_ProjectLoadingFail=Could not load correctly, please click Refresh.\r
+JS_alert_cantLoadProject=Can't load project:\r
+JS_alert_ErrorInLoading=Error in Loading navigation component. Please regenerate WebHelp.\r
+IndexBtnText=Go\r
+FtsBtnText=Go\r
+ToolBarSearchBtnText=Go\r
+InTopicSearchBtnText=Go\r
+SearchLabel=Search\r
+SearchPrompt=- Search -\r
+PreTooltip=Previous Topic\r
+NextTooltip=Next Topic\r
+WebSearch=WebSearch\r
+SyncTocTooltip=Sync TOC\r
+Book=Book\r
+Page=Page\r
+Remote_Page=Remote Page\r
+Show_Navigation_Component=Show Navigation Component\r
+Hide_Navigation_Component=Hide Navigation Component\r
+nls_edit_label=Type in your question:\r
+nls_button_go_hint=Go Search\r
+nls_button_go_text=Go\r
+nls_body_instruction=Enter your question in the text box above, then click GO.\r
+nls_body_empty=Sorry, we were unable to find a good answer for your question.\r
+IndexSelectTopicTitle=Select a Topic\r
+IndexSelectTopicLabel=Select a topic, then click Display\r
+IndexSelectTopicError=Please select a topic.\r
+IndexAlphabetBookmarks=ABCDEFGHIJKLMNOPQRSTUVWXYZ\r
+MergeError1=The merged Help system\r
+MergeError2=is using a different language from the master Help system, which will cause the index and full-text search functionality to be disabled in the merged Help system.\r
+PoweredBy=Powered by\r
+GeneratedBy=Generated by\r
+Author=Author\r
+About=About\r
+Print=Print\r
+\r
+[PrintedDoc]\r
+TableOfContents=Table Of Contents\r
+TitlePage=Title Page\r
+ChapterFileNamePrefix=Chapter_\r
+TitlePageFileName=Chapter__Title_Page.doc\r
+CrossReferencePrefix=See\r
+GlossaryHeadingStyleName=Glossary Heading\r
+GlossaryTermStyleName=Glossary Term\r
+GlossaryDefinitionStyleName=Glossary Definition\r
+TitlePageTitleStyleName=Title Page Title\r
+TocPageTitleStyleName=Table of Contents Page Title\r
index 145860899b4e387d1c84e76394629020f5633918..b942f642f9b003eeb7959f3378d4681fd302ed68 100755 (executable)
Binary files a/doc/salome/gui/KERNEL/webhelp.cab and b/doc/salome/gui/KERNEL/webhelp.cab differ
index d985cac1c80aa364a76793cc16b9bfb692e4b1df..53b2666365f925aa3d03937608babf0aef95f661 100755 (executable)
Binary files a/doc/salome/gui/KERNEL/webhelp.jar and b/doc/salome/gui/KERNEL/webhelp.jar differ
diff --git a/doc/salome/gui/KERNEL/whcsh_home.htm b/doc/salome/gui/KERNEL/whcsh_home.htm
new file mode 100755 (executable)
index 0000000..daece5e
--- /dev/null
@@ -0,0 +1,600 @@
+<html>\r
+<script language="javascript1.2" src="whver.js"></script>\r
+<script language="javascript1.2" src="whmozemu.js"></script>\r
+<script language="javascript1.2" src="whutils.js"></script>\r
+<script language="javascript1.2">\r
+<!--\r
+if(gbIE4||gbNav61)\r
+{\r
+       document.write("<body></body>");\r
+}\r
+else\r
+{\r
+       document.write("<frameset rows=\"100%,*\"><frame name=\"data_frm\" src=\"about:blank\"><frame name=\"dumb_frm\" src=\"about:blank\"></frameset>");\r
+}\r
+var gCSHFileName="whcshdata.htm";\r
+\r
+var gHomePage="kernel.htm";\r
+var gaProj=new Array();\r
+gaProj[0]=new Object();\r
+gaProj[0].sProjPath=_replaceSlash(_getPath(document.location.href));\r
+gaProj[0].nLoadState=0;\r
+var gCurrent=0;\r
+\r
+var gsTopicURL="";\r
+var gnCurProj=0;\r
+var gnCommand=-1;\r
+var CMD_SHOWTOC=1;\r
+var CMD_SHOWINDEX=2;\r
+var CMD_SHOWSEARCH=3;\r
+var CMD_SHOWGLOSSARY=4;\r
+var CMD_SHOWNONE=0;\r
+\r
+var RHWO_LOCATION=0x01;                /*need location bar?*/\r
+var RHWO_MENUBAR=0x02;         /*need menubar?*/               \r
+var RHWO_RESIZABLE=0x04;       /*resizable window?*/\r
+var RHWO_TOOLBAR=0x08;         /*need toolbar?*/\r
+var RHWO_STATUS=0x10;          /*need statusbar?*/\r
+var RHWO_SCROLLBARS=0x20;      /*need scrollbars?*/\r
+\r
+var gsStr="";\r
+var gnId=-1;\r
+var gsWindow="";\r
+var gsJava="false";\r
+var gbUseStr=false;\r
+var gbURLReady=false;\r
+var goWnd=new Object();\r
+goWnd.sName="whCshDefault";\r
+goWnd.nBOptions=RHWO_RESIZABLE|RHWO_SCROLLBARS;\r
+goWnd.sBLeft="49%";\r
+goWnd.sBTop="0";\r
+goWnd.sBWidth="49%";\r
+goWnd.sBHeight="49%";\r
+goWnd.nPanes=1;\r
+var goFullWnd=new Object();\r
+goFullWnd.sName="whDefault";\r
+goFullWnd.nBOptions=RHWO_RESIZABLE|RHWO_SCROLLBARS;\r
+goFullWnd.sBLeft="20%";\r
+goFullWnd.sBTop="0";\r
+goFullWnd.sBWidth="79%";\r
+goFullWnd.sBHeight="79%";\r
+goFullWnd.nPanes=2;\r
+\r
+var goNewWnd=null;\r
+var gbLoadWnd=false;\r
+var gsURL="";\r
+\r
+function showCSH(sParam)\r
+{\r
+       //id=\r
+       //str=\r
+       //url=\r
+       //cmd=\r
+       //with the format #<a=xxx>>b=xxx>>c=xxx...\r
+       parseParam(sParam);\r
+       SwitchURL();\r
+}\r
+\r
+function IsWndReady()\r
+{\r
+       if(gaProj[0].nLoadState==0)\r
+       {\r
+               var sCshFile=_getFullPath(gaProj[0].sProjPath,gCSHFileName);\r
+               gaProj[0].nLoadState=1;\r
+               setTimeout("loadFail("+0+");",3000);\r
+               loadDataCsh(sCshFile);\r
+               gbLoadWnd=true;\r
+               return false;\r
+       }\r
+       else\r
+               return true;\r
+}\r
+\r
+function SwitchURL()\r
+{\r
+       if(gbURLReady)\r
+       {\r
+               var sURL="";\r
+               var oWnd=null;\r
+               if(gsTopicURL)\r
+               {\r
+                       sURL=_getPath(document.location.href)+gHomePage+"#"+gsTopicURL;\r
+                       oWnd=goWnd;\r
+               }\r
+               else\r
+               {\r
+                       if(gnCommand!=-1)\r
+                               sURL=_getPath(document.location.href)+gHomePage+"#>>cmd="+gnCommand;\r
+                       else\r
+                               sURL=_getPath(document.location.href)+gHomePage;\r
+                       oWnd=goFullWnd;\r
+               }\r
+               if(gsWindow)\r
+               {\r
+                       if(!IsWndReady())\r
+                               return false;\r
+                       if(gaProj[gnCurProj].aWnd)\r
+                       {\r
+                               var aWnd=gaProj[gnCurProj].aWnd;\r
+                               var bFound=false;\r
+                               for(var i=0;i<aWnd.length;i++)\r
+                               {\r
+                                       if(aWnd[i].sName.toLowerCase()==gsWindow.toLowerCase())\r
+                                       {\r
+                                               oWnd=aWnd[i];\r
+                                               bFound=true;\r
+                                               break;\r
+                                       }\r
+                               }\r
+                               if(!bFound&&gnCurProj!=0)\r
+                               {\r
+                                       var aWnd=gaProj[0].aWnd;\r
+                                       for(var j=0;j<aWnd.length;j++)\r
+                                       {\r
+                                               if(aWnd[j].sName.toLowerCase()==gsWindow.toLowerCase())\r
+                                               {\r
+                                                       oWnd=aWnd[j];\r
+                                                       break;\r
+                                               }\r
+                                       }\r
+                               }\r
+                       }\r
+               }\r
+\r
+               if(sURL&&oWnd)\r
+               {\r
+                       strURLOpt="";\r
+                       if(oWnd.sCaption)\r
+                               strURLOpt+=">>cap="+oWnd.sCaption;\r
+                       if(oWnd.nPanes==1)\r
+                               strURLOpt+=">>pan="+oWnd.nPanes;\r
+                       else if(oWnd.nPanes==2)\r
+                       {\r
+                               strURLOpt+=">>pan="+oWnd.nPanes;\r
+                               if(oWnd.nPOptions)\r
+                                       strURLOpt+=">>pot="+oWnd.nPOptions;\r
+                               if(oWnd.sPButtons)\r
+                                       strURLOpt+=">>pbs="+oWnd.sPButtons;\r
+                               if(oWnd.sPDefBtn)\r
+                                       strURLOpt+=">>pdb="+oWnd.sPDefBtn;\r
+                       }\r
+                       if(strURLOpt)\r
+                       {\r
+                               if(sURL.indexOf("#")==-1)\r
+                                       sURL+="#";\r
+                               sURL+=strURLOpt;\r
+                       }\r
+                       if(gsJava=="false")\r
+                       {\r
+                               var strOpt=getBrowserOptionString(oWnd);\r
+                               var sNewName=convertWindowName(oWnd.sName);\r
+                               if(gbNav4)\r
+                               {\r
+                                       if (gbNav6)\r
+                                       {\r
+                                               gsURL = sURL;\r
+                                               goNewWnd=window.open("about:blank",sNewName,strOpt);\r
+                                               setTimeout("postWindowNSOpen();",100);\r
+                                       }\r
+                                       else\r
+                                       {\r
+                                               window.open("about:blank",sNewName,strOpt);\r
+                                               var oNewWnd=window.open(sURL,sNewName);\r
+                                               window.close();\r
+                                               oNewWnd.focus();\r
+                                       }\r
+                               }\r
+                               else\r
+                               {\r
+                                       if(gbIE5)\r
+                                       {\r
+                                               window.open("about:blank",sNewName,strOpt);\r
+                                               goNewWnd=window.open(sURL,sNewName);\r
+                                       }\r
+                                       else\r
+                                       {\r
+                                               gsURL = sURL; // IE4 had hard time to handle bookmark.\r
+                                               goNewWnd=window.open("about:blank",sNewName,strOpt);\r
+                                       }\r
+                                       setTimeout("postWindowOpen();",100);\r
+                               }\r
+                       }\r
+                       else\r
+                               document.location=sURL;\r
+               }\r
+       }\r
+}\r
+\r
+function convertWindowName(strName)\r
+{\r
+       var strNewName = strName;\r
+       var strResultName = "";\r
+       var re=new RegExp("_","g");\r
+       strNewName = strName.replace(re,"__");\r
+       for (var i=0;i<strNewName.length;i++)\r
+               if (!(strNewName[i] == '_' ||\r
+                       (strNewName[i] <= '9' && strNewName[i] >= '0') ||\r
+                       (strNewName[i] <= 'z' && strNewName[i] >= 'a') ||\r
+                       (strNewName[i] <= 'Z' && strNewName[i] >= 'A')))\r
+               {\r
+                       strResultName += "_" + strNewName.charCodeAt(i);\r
+               }\r
+               else\r
+                       strResultName += strNewName[i];\r
+       return strResultName;\r
+}\r
+\r
+function postWindowNSOpen()\r
+{\r
+       if(goNewWnd)\r
+       {\r
+               if (gsURL)\r
+                       goNewWnd.document.location.href=gsURL;\r
+               window.close();\r
+               goNewWnd.focus();\r
+       }\r
+}\r
+\r
+function postWindowOpen()\r
+{\r
+       if(goNewWnd)\r
+       {\r
+               if (gsURL&&!gbIE5&&gbIE4)\r
+                       goNewWnd.document.location.href=gsURL;\r
+               goNewWnd.focus();\r
+       }\r
+}\r
+\r
+function parseParam(sParam)\r
+{\r
+       if(sParam)\r
+       {\r
+               var nBPos=0;\r
+               do\r
+               {\r
+                       var nPos=sParam.indexOf(">>",nBPos);\r
+                       if(nPos!=-1)\r
+                       {\r
+                               if(nPos>0)\r
+                               {\r
+                                       var sPart=sParam.substring(nBPos,nPos);\r
+                                       parsePart(sPart);\r
+                               }\r
+                               nBPos=nPos+2;\r
+                       }\r
+                       else\r
+                       {\r
+                               var sPart=sParam.substring(nBPos);\r
+                               parsePart(sPart);\r
+                               break;\r
+                       }\r
+               }while(nBPos<sParam.length);\r
+       }\r
+}\r
+\r
+function parsePart(sPart)\r
+{\r
+       if(sPart.toLowerCase().indexOf("id=")==0)\r
+       {\r
+               fetchURLById(sPart.substring(3));\r
+               gbURLReady=false;\r
+       }\r
+       else if(sPart.toLowerCase().indexOf("str=")==0)\r
+       {\r
+               fetchURLByStr(sPart.substring(4));\r
+               gbURLReady=false;\r
+       }\r
+       else if(sPart.toLowerCase().indexOf("url=")==0)\r
+       {\r
+               gsTopicURL=sPart.substring(4);\r
+               gbURLReady=true;\r
+       }\r
+       else if(sPart.toLowerCase().indexOf("cmd=")==0)\r
+       {\r
+               var sCmd=sPart.substring(4);\r
+               if(sCmd.toLowerCase()=="toc")\r
+               {\r
+                       gnCommand=CMD_SHOWTOC;\r
+               }\r
+               else if(sCmd.toLowerCase()=="idx")\r
+               {\r
+                       gnCommand=CMD_SHOWINDEX;\r
+               }\r
+               else if(sCmd.toLowerCase()=="fts")\r
+               {\r
+                       gnCommand=CMD_SHOWSEARCH;\r
+               }\r
+               else if(sCmd.toLowerCase()=="glo")\r
+               {\r
+                       gnCommand=CMD_SHOWGLOSSARY;\r
+               }\r
+               else if(sCmd.toLowerCase()=="none")\r
+               {\r
+                       gnCommand=CMD_SHOWNONE;\r
+               }\r
+               gbURLReady=true;\r
+       }\r
+       else if(sPart.toLowerCase().indexOf("wnd=")==0)\r
+       {\r
+               gsWindow=_browserStringToText(sPart.substring(4));\r
+       }\r
+       else if(sPart.toLowerCase().indexOf("java=")==0)\r
+       {\r
+               gsJava=sPart.substring(5);\r
+       }\r
+}\r
+\r
+function fetchURLById(sId)\r
+{\r
+       var nId=parseInt(sId);\r
+       gsTopicURL="";\r
+       fetchURL("",nId,false);\r
+}\r
+\r
+function fetchURLByStr(sStr)\r
+{\r
+       gsTopicURL="";\r
+       fetchURL(sStr,0,true);\r
+}\r
+\r
+function fetchURL(sStr,nId,bUseStr)\r
+{\r
+       var bNeedLoad=false;\r
+       var bFound=false;\r
+       for(var i=0;i<gaProj.length;i++)\r
+       {\r
+               if(gaProj[i].nLoadState==3)\r
+               {\r
+                       if(gaProj[i].aCsh)\r
+                       {\r
+                               for(var j=0;j<gaProj[i].aCsh.length;j++)\r
+                               {\r
+                                       var sTopicURL="";\r
+                                       if(bUseStr)\r
+                                       {\r
+                                               if(gaProj[i].aCsh[j].strAliasId.toLowerCase()==sStr.toLowerCase())\r
+                                                       sTopicURL=gaProj[i].aCsh[j].strUrl;\r
+                                       }\r
+                                       else\r
+                                       {\r
+                                               if(gaProj[i].aCsh[j].nTopicNum==nId)\r
+                                                       sTopicURL=gaProj[i].aCsh[j].strUrl;\r
+                                       }\r
+                                       if(sTopicURL)\r
+                                       {\r
+                                               if(i!=0)\r
+                                               {\r
+                                                       gnCurProj=i;\r
+                                                       if(gaProj[i].sProjPath.indexOf(gaProj[0].sProjPath)==0)\r
+                                                       {\r
+                                                               var sRelPath=gaProj[i].sProjPath.substring(gaProj[0].sProjPath.length);\r
+                                                               gsTopicURL=sRelPath+sTopicURL;\r
+                                                       }\r
+                                                       else\r
+                                                               gsTopicURL=gaProj[i].sProjPath+sTopicURL;\r
+                                               }\r
+                                               else\r
+                                                       gsTopicURL=sTopicURL;\r
+                                               bFound=true;\r
+                                               break;\r
+                                       }\r
+                               }\r
+                       }\r
+                       \r
+               }\r
+               else if(gaProj[i].nLoadState==0)\r
+               {\r
+                       gsStr=sStr;\r
+                       gnId=nId;\r
+                       gbUseStr=bUseStr;\r
+                       var sCshFile=_getFullPath(gaProj[i].sProjPath,gCSHFileName);\r
+                       gaProj[i].nLoadState=1;\r
+                       setTimeout("loadFail("+i+");",3000);\r
+                       loadDataCsh(sCshFile);\r
+                       bNeedLoad=true;\r
+               }\r
+               if(bFound||bNeedLoad)\r
+                       break;\r
+       }\r
+       if(!bNeedLoad)\r
+       {\r
+               gbURLReady=true;\r
+               SwitchURL();\r
+       }\r
+}\r
+\r
+function loadDataCsh(sFile)\r
+{\r
+       if(gbIE4||gbNav61)\r
+               loadData(sFile);\r
+       else\r
+       {\r
+               window.frames[0].location=sFile;\r
+       }\r
+}\r
+\r
+function loadFail(nProj)\r
+{\r
+       if(gaProj[nProj].nLoadState==1)\r
+       {\r
+               gaProj[nProj].nLoadState=2;\r
+               if(!gbLoadWnd)\r
+                       fetchURL(gsStr,gnId,gbUseStr);\r
+               else\r
+                       SwitchURL();\r
+       }\r
+}\r
+\r
+function putCshData(strProj,aCsh,aWnd,aRmtProj)\r
+{\r
+       if(strProj)\r
+       {\r
+               strProj=_replaceSlash(strProj);\r
+               if(strProj.lastIndexOf("/")!=strProj.length-1)\r
+                       strProj+="/";\r
+               for(var i=0;i<gaProj.length;i++)\r
+               {\r
+                       if(gaProj[i].sProjPath)\r
+                       {\r
+                               if(isSamePath(gaProj[i].sProjPath,strProj))\r
+                               {\r
+                                       gaProj[i].nLoadState=3;\r
+                                       gaProj[i].aCsh=aCsh;\r
+                                       gaProj[i].aWnd=aWnd;\r
+                                       break;\r
+                               }\r
+                       }\r
+               }\r
+               if(aRmtProj&&aRmtProj.length)\r
+               {\r
+                       for(var j=0;j<aRmtProj.length;j++)\r
+                       {\r
+                               var strRPath=_getFullPath(strProj,aRmtProj[j]);\r
+                               var bFound=false;\r
+                               for (var k=0;k<gaProj.length;k++)\r
+                               {\r
+                                       if(gaProj[k].sProjPath)\r
+                                       {\r
+                                               if(isSamePath(gaProj[k].sProjPath,strRPath))\r
+                                               {\r
+                                                       bFound=true;\r
+                                                       break;\r
+                                               }\r
+                                       }\r
+                               }\r
+                               if(!bFound)\r
+                               {\r
+                                       var len=gaProj.length;\r
+                                       gaProj[len]=new Object();\r
+                                       gaProj[len].sProjPath=strRPath;\r
+                                       gaProj[len].nLoadState=0;\r
+                               }\r
+                       }\r
+               }\r
+               if(!gbLoadWnd)\r
+                       fetchURL(gsStr,gnId,gbUseStr);\r
+               else\r
+                       SwitchURL();\r
+                       \r
+       }\r
+}\r
+\r
+function isSamePath(strPath1,strPath2)\r
+{\r
+       return strPath1.toLowerCase()==strPath2.toLowerCase();\r
+}\r
+\r
+function getRelHomePage(strLocation)\r
+{\r
+       var strCurPPath=_getPath(strLocation);\r
+       var strOriPPath=_getPath(getHomePage());\r
+       var strRelPath=_getRelativeFileName(strOriPPath,strCurPPath);\r
+       var strURL=getHomePage()+"#"+strRelPath;\r
+       return strURL;\r
+}\r
+\r
+function getHomePage()\r
+{\r
+       var strHomePage;\r
+       var strTmp=location.toString();\r
+       var nPos=strTmp.indexOf("#");\r
+       if(nPos!=-1)\r
+       {\r
+               strHomePage=strTmp.substring(0,nPos);\r
+       }\r
+       else\r
+       {\r
+               strHomePage=strTmp;\r
+       }\r
+       return strHomePage;\r
+}\r
+\r
+function getBrowserOptionString(oWnd)\r
+{\r
+       var strOpts="";\r
+       if(oWnd.bUseDefault)\r
+               return strOpts;\r
+       if(oWnd.nBOptions&RHWO_LOCATION)\r
+               strOpts+="location=yes";\r
+       else\r
+               strOpts+="location=no";\r
+       if(oWnd.nBOptions&RHWO_TOOLBAR)\r
+               strOpts+=",toolbar=yes";                \r
+       else\r
+               strOpts+=",toolbar=no";         \r
+       if(oWnd.nBOptions&RHWO_MENUBAR)\r
+               strOpts+=",menubar=yes";                \r
+       else\r
+               strOpts+=",menubar=no";\r
+       if(oWnd.nBOptions&RHWO_STATUS)\r
+               strOpts+=",status=yes";         \r
+       else\r
+               strOpts+=",status=no";          \r
+       if(oWnd.nBOptions&RHWO_SCROLLBARS)\r
+               strOpts+=",scrollbars=yes";\r
+       else\r
+               strOpts+=",scrollbars=no";      \r
+       if(oWnd.nBOptions&RHWO_RESIZABLE)\r
+               strOpts+=",resizable=yes";\r
+       else\r
+               strOpts+=",resizable=no";\r
+       if(oWnd.sBTop)\r
+       {\r
+               var nTop=getSValue(oWnd.sBTop,screen.height);\r
+               strOpts+=",top="+nTop;\r
+               strOpts+=",screenY="+nTop;\r
+       }\r
+       if(oWnd.sBLeft)\r
+       {\r
+               var nLeft=getSValue(oWnd.sBLeft,screen.width);\r
+               strOpts+=",left="+nLeft;\r
+               strOpts+=",screenX="+nLeft;\r
+       }\r
+       if(oWnd.sBWidth)\r
+       {\r
+               var nWidth=getSValue(oWnd.sBWidth,screen.width);\r
+               strOpts+=",width="+nWidth;\r
+               strOpts+=",outerWidth="+nWidth;\r
+       }\r
+       if(oWnd.sBHeight)\r
+       {\r
+               var nHeight=getSValue(oWnd.sBHeight,screen.height);\r
+               strOpts+=",height="+nHeight;\r
+               strOpts+=",outerHeight="+nHeight;\r
+       }\r
+       return strOpts;\r
+}\r
+\r
+function getSValue(sValue,nLength)\r
+{\r
+       var nValue=0;\r
+       var nPos=sValue.indexOf("%");\r
+       if(nPos!=-1)\r
+       {\r
+               if(nPos>0)\r
+               {\r
+                       var nPart=parseInt(sValue.substring(0,nPos));\r
+                       nValue=nLength*nPart/100;\r
+               }\r
+       }\r
+       else\r
+               nValue=parseInt(sValue);\r
+       return nValue;\r
+}\r
+\r
+\r
+window.onload=window_OnLoad;\r
+\r
+function window_OnLoad()\r
+{\r
+       if(document.location.hash.length>0)\r
+       {\r
+               showCSH(document.location.hash.substring(1));\r
+       }\r
+\r
+       if(gsJava=="false")\r
+               window.moveTo(screen.width,screen.height);\r
+}\r
+//-->\r
+</script>\r
+</html>
\ No newline at end of file
diff --git a/doc/salome/gui/KERNEL/whcshdata.htm b/doc/salome/gui/KERNEL/whcshdata.htm
new file mode 100755 (executable)
index 0000000..0e04124
--- /dev/null
@@ -0,0 +1,87 @@
+<html>\r
+<head>\r
+<title>KERNEL</title>\r
+\r
+<meta name="generator" content="RoboHelp by eHelp Corporation   www.ehelp.com">\r
+<meta name="description" content="WebHelp 5.50">\r
+</head>\r
+<body>\r
+<script language="javascript1.2" src="whver.js"></script>\r
+<script language="javascript1.2" src="whutils.js"></script>\r
+<script language="JavaScript">\r
+<!--\r
+var gaCsh=new Array();\r
+\r
+var gaWindow=new Array();\r
+\r
+var gaRmtProj=new Array();\r
+\r
+var gsProjPath=_getPath(document.location.href);\r
+\r
+function CshEntityItem(strAliasId,nTopicNum,strUrl)\r
+{\r
+       this.strAliasId=strAliasId;\r
+       this.nTopicNum=nTopicNum;\r
+       this.strUrl=strUrl;\r
+}\r
+\r
+function CshWindow(sWName,bBUseDefault,nWBOptions,sWBLeft,sWBTop,sWBWidth,sWBHeight,sWCaption,nWPanes,nWPOptions,sWPButtons,sWPDefBtn)\r
+{\r
+       this.sName=sWName;\r
+       this.bUseDefault=bBUseDefault;\r
+       if(!this.bUseDefault)\r
+       {\r
+               this.nBOptions=nWBOptions;\r
+               this.sBLeft=sWBLeft;\r
+               this.sBTop=sWBTop;\r
+               this.sBWidth=sWBWidth;\r
+               this.sBHeight=sWBHeight;\r
+       }\r
+       this.sCaption=sWCaption;\r
+       this.nPanes=nWPanes;\r
+       if(this.nPanes==2)\r
+       {\r
+               this.nPOptions=nWPOptions;\r
+               this.sPButtons=sWPButtons;\r
+               this.sPDefBtn=sWPDefBtn;\r
+       }\r
+}\r
+\r
+function addRemoteProject(sPath)\r
+{\r
+       if(sPath.length!=0)\r
+       {\r
+               if(sPath.lastIndexOf("/")!=sPath.length-1)\r
+                       sPath+="/";\r
+               gaRmtProj[gaRmtProj.length]=sPath;      \r
+       }\r
+}\r
+\r
+//Set Context-sensitive help entity...\r
+function SetCsh(n,strAliasId,nTopicNum,strUrl)\r
+{\r
+       gaCsh[n]=new CshEntityItem(strAliasId,nTopicNum,strUrl);\r
+}\r
+\r
+function addWindow(sWName,bBUseDefault,nWBOptions,sWBLeft,sWBTop,sWBWidth,sWBHeight,sWCaption,nWPanes,nWPOptions,sWPButtons,sWPDefBtn)\r
+{\r
+       gaWindow[gaWindow.length]=new CshWindow(sWName,bBUseDefault,nWBOptions,sWBLeft,sWBTop,sWBWidth,sWBHeight,sWCaption,nWPanes,nWPOptions,sWPButtons,sWPDefBtn);\r
+}\r
+\r
+\r
+\r
+\r
+\r
+window.onload=window_OnLoad;\r
+\r
+function window_OnLoad()\r
+{\r
+       if(parent&&parent!=this&&parent.putCshData)\r
+       {\r
+               parent.putCshData(gsProjPath,gaCsh,gaWindow,gaRmtProj);\r
+       }\r
+}\r
+//-->\r
+</script>\r
+</body>\r
+</html>\r
index 9e3b6abd00f3c8e8b8ede06dc66d8886b5f5d25e..071ae6fc7e549e5e6662a61bb743f2341b1190c3 100755 (executable)
@@ -1,3 +1,4 @@
+//     WebHelp 5.10.001\r
 var gTEA = new Array();\r
 function aTE(sTopicTitle, sTopicURL)\r
 {\r
index 3156a4403d390e12cb6559aea5f222e4d8ca0140..f48525808e1d482d07b4545c35a61672d4252862 100755 (executable)
@@ -1,6 +1,8 @@
 <html>\r
 <head>\r
-<META HTTP-EQUIV="content-type" CONTENT="text/html; charset=iso-8859-1">\r
+\r
+<meta name="generator" content="RoboHelp by eHelp Corporation   www.ehelp.com">\r
+<meta name="description" content="WebHelp 5.50">\r
 </head>\r
 <body>\r
 <script language="javascript" src="whftdata.js"></script>\r
 </script>\r
 <script language="javascript">\r
 <!--\r
-aTE("About SALOME architecture","files/about_salome_pro_architecture.htm");\r
-aTE("About SALOME help system","files/about_salome_pro_help_system.htm");\r
-aTE("Copyright notice","files/copyright_notice.htm");\r
-aTE("Creating a new study","files/creating_a_new_study.htm");\r
-aTE("Displaying/hiding toolbars","files/displaying_hiding_toolbars.htm");\r
-aTE("Displaying studies","files/displaying_studies.htm");\r
-aTE("Editing studies","files/editing_studies.htm");\r
-aTE("Getting properties of the study","files/getting_properties_of_the_study.htm");\r
-aTE("Getting started2","files/getting_started2.htm");\r
-aTE("Installing SALOME","files/installing_salome_pro.htm");\r
-aTE("Introduction","files/introduction.htm");\r
-aTE("Introduction to IAPP","files/introduction_to_iapp.htm");\r
-aTE("Introduction to SALOME","files/introduction_to_salome_pro.htm");\r
-aTE("Navigating topics","files/navigating_topics.htm");\r
-aTE("Opening studies","files/opening_studies.htm");\r
-aTE("Installing SALOME","files/readme.html");\r
-aTE("Running SALOME","files/running_salome_pro.htm");\r
-aTE("SALOME desktop","files/salome_pro_desktop.htm");\r
-aTE("Saving a study","files/saving_a_study.htm");\r
-aTE("Setting preferences","files/setting_preferences.htm");\r
-aTE("Using Catalog Generator","files/using_catalog_generator.htm");\r
-aTE("Using left-hand tabs","files/using_left-hand_tabs.htm");\r
-aTE("Using Object Browser","files/using_object_browser.htm");\r
-aTE("Using Registry tool","files/using_registry.htm");\r
-aTE("Using UseCase Browser","files/using_usecase_browser.htm");\r
+aTE("About SALOME architecture","kernel/about_salome_pro_architecture.htm");\r
+aTE("About SALOME help system","kernel/about_salome_pro_help_system.htm");\r
+aTE("Copyright notice","kernel/copyright_notice.htm");\r
+aTE("Creating a new study","kernel/creating_a_new_study.htm");\r
+aTE("Displaying/hiding toolbars","kernel/displaying_hiding_toolbars.htm");\r
+aTE("Displaying studies","kernel/displaying_studies.htm");\r
+aTE("Editing studies","kernel/editing_studies.htm");\r
+aTE("Getting properties of the study","kernel/getting_properties_of_the_study.htm");\r
+aTE("Getting started2","kernel/getting_started2.htm");\r
+aTE("Introduction","kernel/introduction.htm");\r
+aTE("Introduction to IAPP","kernel/introduction_to_iapp.htm");\r
+aTE("Introduction to SALOME","kernel/introduction_to_salome_pro.htm");\r
+aTE("Navigating topics","kernel/navigating_topics.htm");\r
+aTE("Opening studies","kernel/opening_studies.htm");\r
+aTE("Installation Wizard","kernel/readme.html");\r
+aTE("Running SALOME","kernel/running_salome_pro.htm");\r
+aTE("SALOME desktop","kernel/salome_pro_desktop.htm");\r
+aTE("Saving a study","kernel/saving_a_study.htm");\r
+aTE("Setting preferences","kernel/setting_preferences.htm");\r
+aTE("Using Catalog Generator","kernel/using_catalog_generator.htm");\r
+aTE("Using left-hand tabs","kernel/using_left-hand_tabs.htm");\r
+aTE("Using Object Browser","kernel/using_object_browser.htm");\r
+aTE("Using Registry tool","kernel/using_registry.htm");\r
+aTE("Using UseCase Browser","kernel/using_usecase_browser.htm");\r
 \r
 //-->\r
 </script>\r
-</script>\r
+</html>\r
index 8375a4d9386545d7620ea0380f4ac198bb856b0b..e2b0579847111a92251a15f666b5d5b4bd35d684 100755 (executable)
@@ -1,6 +1,8 @@
 <html>\r
 <head>\r
-<META HTTP-EQUIV="content-type" CONTENT="text/html; charset=iso-8859-1">\r
+\r
+<meta name="generator" content="RoboHelp by eHelp Corporation   www.ehelp.com">\r
+<meta name="description" content="WebHelp 5.50">\r
 </head>\r
 <body>\r
 <script language="javascript" src="whfts.js"></script>\r
@@ -8,9 +10,9 @@
 <!--\r
 iWM("_numpy","zoom","whfwdata0.htm");\r
 \r
-iTM(0,24,"whftdata0.htm");\r
+iTM(0,23,"whftdata0.htm");\r
 \r
--->\r
+//-->\r
 </script>\r
 </body>\r
 </html>
\ No newline at end of file
index 2041512fe95a49db5ae4d151eab9efb2e30e6677..2b6678690b7a693c0c61e06aba0adc9019bcc22e 100755 (executable)
@@ -1,3 +1,4 @@
+//     WebHelp 5.10.001\r
 var gaFileMapping = new Array();\r
 var gaFileTopicMapping = new Array();\r
 \r
index 463bfb00dd9737046b92be980bd71123e541f028..e9e8bc6c16ab72dcc99c44244a617054c73ba1ba 100755 (executable)
@@ -1,3 +1,4 @@
+//     WebHelp 5.10.001\r
 var gWEA = new Array();\r
 function aWE()\r
 {\r
index 81d8b19cf30d4753ca2268c9450f382df56c6a9f..d6dc00c3630a042fceeb12f1f5111911921347ab 100755 (executable)
@@ -1,6 +1,8 @@
 <html>\r
 <head>\r
-<META HTTP-EQUIV="content-type" CONTENT="text/html; charset=iso-8859-1">\r
+\r
+<meta name="generator" content="RoboHelp by eHelp Corporation   www.ehelp.com">\r
+<meta name="description" content="WebHelp 5.50">\r
 </head>\r
 <body>\r
 <script language="javascript" src="whfwdata.js"></script>\r
 </script>\r
 <script language="javascript">\r
 <!--\r
-aWE("_numpy",9,15);\r
-aWE("_omnipymodul",9,15);\r
-aWE("0",9,15);\r
-aWE("0_glibc2",9,15);\r
-aWE("030402",9,15);\r
-aWE("1",3,9,15,16);\r
-aWE("11",9,15);\r
-aWE("13",9,15);\r
-aWE("17",9,15);\r
-aWE("2",3,9,15,16);\r
+aWE("_numpy",14);\r
+aWE("_omnipymodul",14);\r
+aWE("0",14);\r
+aWE("0_glibc2",14);\r
+aWE("030402",14);\r
+aWE("1",3,14,15);\r
+aWE("11",14);\r
+aWE("13",14);\r
+aWE("17",14);\r
+aWE("2",3,14,15);\r
 aWE("2003",2);\r
-aWE("22",9,15);\r
-aWE("2c",15);\r
-aWE("3",9,15,16);\r
-aWE("3d",12,17);\r
-aWE("4",2,9,15);\r
-aWE("5",9,15);\r
-aWE("6",9,15);\r
-aWE("7",15);\r
-aWE("8",9,15);\r
-aWE("9",9,15);\r
+aWE("22",14);\r
+aWE("3",14,15);\r
+aWE("30",14);\r
+aWE("3d",11,16);\r
+aWE("4",2,14);\r
+aWE("5",14);\r
+aWE("6",14);\r
+aWE("8",14);\r
+aWE("9",14);\r
 aWE("91400",2);\r
-aWE("abl",0,9,15);\r
-aWE("abort",9,15);\r
-aWE("abov",7,9,15);\r
-aWE("absolut",9);\r
-aWE("acces",0,17,22,24);\r
-aWE("accidental",9,15);\r
-aWE("accord",9,15,17,21,22);\r
+aWE("abl",0,14);\r
+aWE("abort",14);\r
+aWE("abov",7,14);\r
+aWE("acces",0,16,21,23);\r
+aWE("accidental",14);\r
+aWE("accord",14,15,16,20,21);\r
 aWE("accordanc",2);\r
-aWE("account",9,15);\r
+aWE("account",14);\r
 aWE("achiev",0);\r
 aWE("acquaint",1);\r
-aWE("action",19);\r
+aWE("action",18);\r
 aWE("activ",3);\r
 aWE("activat",3,5);\r
 aWE("activation",5);\r
-aWE("actual",9);\r
-aWE("ad",9,15,20,24);\r
+aWE("ad",14,19,23);\r
 aWE("adapt",0);\r
-aWE("add",4,9,15,16,20,24);\r
+aWE("add",4,14,15,19,23);\r
 aWE("addition",3);\r
-aWE("additional",0,4,6,9,15,11,22);\r
-aWE("advanc",15,20);\r
+aWE("additional",0,4,6,14,10,21);\r
+aWE("advanc",14,19);\r
 aWE("affect",0);\r
-aWE("again",9,15,13,18);\r
-aWE("algorithm",0,9,15,12);\r
-aWE("allow",0,5,6,9,15,12,16,17,18,19,20,23,24);\r
-aWE("along",12);\r
-aWE("alongsid",20);\r
-aWE("already",9,15);\r
-aWE("alway",9);\r
-aWE("amount",9,15);\r
-aWE("annoy",9,15);\r
-aWE("anoth",0,9,15,18,24);\r
-aWE("answ",9,15);\r
-aWE("any",0,1,2,4,7,9,15,13,16,24);\r
-aWE("anyth",9,15);\r
-aWE("ap",22);\r
-aWE("appear",2,7,8,15,19,20,23);\r
+aWE("again",14,12,17);\r
+aWE("algorithm",0,14,11);\r
+aWE("allow",0,5,6,14,11,15,16,17,18,19,22,23);\r
+aWE("along",11);\r
+aWE("alongsid",19);\r
+aWE("already",14);\r
+aWE("amount",14);\r
+aWE("annoy",14);\r
+aWE("anoth",0,14,17,23);\r
+aWE("answ",14);\r
+aWE("any",0,1,2,4,7,14,12,15,23);\r
+aWE("anyth",14);\r
+aWE("ap",21);\r
+aWE("appear",2,7,8,14,18,19,22);\r
 aWE("applet",1);\r
-aWE("application",0,4,8,10,11,12,16,17,18,19,20,22);\r
-aWE("applicativ",11,19);\r
-aWE("approach",9,15,12);\r
-aWE("appropriat",15);\r
-aWE("approximat",9,15);\r
-aWE("ar",15);\r
+aWE("application",0,4,8,9,10,11,15,16,17,18,19,21);\r
+aWE("applicativ",10,18);\r
+aWE("approach",14,11);\r
+aWE("appropriat",14);\r
+aWE("approximat",14);\r
+aWE("ar",14);\r
 aWE("architectur",0);\r
-aWE("archiv",9);\r
-aWE("area",17);\r
-aWE("argument",15);\r
+aWE("area",16);\r
+aWE("argument",14);\r
 aWE("arian",2);\r
-aWE("arrow",22);\r
-aWE("ascend",22);\r
-aWE("ascii",18,19);\r
-aWE("ask",9,15);\r
-aWE("associat",14,21,22,24);\r
-aWE("attribut",22);\r
-aWE("author",7,20);\r
-aWE("auto",9,15,19);\r
-aWE("automatical",4,9,15,14,16,18,19,24);\r
-aWE("autosiz",19);\r
-aWE("availabl",0,9,15);\r
-aWE("avoid",9,15);\r
-aWE("awk",9,15);\r
-aWE("b",9,15);\r
-aWE("back",9,15,17);\r
-aWE("background",19);\r
-aWE("bas",0,10,18);\r
-aWE("bash",15);\r
-aWE("basic",15,17);\r
-aWE("batch",0,15,16);\r
-aWE("bear",2,9);\r
-aWE("befor",9,15);\r
-aWE("begin",9,23);\r
+aWE("arrow",21);\r
+aWE("ascend",21);\r
+aWE("ascii",17,18);\r
+aWE("ask",14);\r
+aWE("associat",13,20,21,23);\r
+aWE("attribut",21);\r
+aWE("author",7,19);\r
+aWE("auto",14,18);\r
+aWE("automatical",4,14,13,15,17,18,23);\r
+aWE("autosiz",18);\r
+aWE("availabl",0,14);\r
+aWE("avoid",14);\r
+aWE("awk",14);\r
+aWE("b",14);\r
+aWE("back",14,16);\r
+aWE("background",18);\r
+aWE("bas",0,9,17);\r
+aWE("bash",14);\r
+aWE("basic",14,16);\r
+aWE("batch",0,14,15);\r
+aWE("bear",2);\r
+aWE("befor",14);\r
+aWE("begin",22);\r
 aWE("behav",0);\r
-aWE("behavior",10);\r
-aWE("behaviour",9);\r
-aWE("below",9,15,13);\r
-aWE("besid",24);\r
-aWE("bin",9,15,16,20);\r
-aWE("binari",9,15);\r
-aWE("blu",15);\r
+aWE("behavior",9);\r
+aWE("below",14,12);\r
+aWE("besid",23);\r
+aWE("bin",14,15,19);\r
+aWE("binari",14);\r
+aWE("blu",14);\r
 aWE("blur",0);\r
-aWE("bmp",17);\r
-aWE("bold",15);\r
-aWE("bonu",9);\r
-aWE("book",21);\r
-aWE("bottom",17,24);\r
-aWE("box",7,9,15,14,18,20,23);\r
-aWE("bracket",15);\r
+aWE("bmp",16);\r
+aWE("bold",14);\r
+aWE("book",20);\r
+aWE("boost",14);\r
+aWE("boost_version",14);\r
+aWE("boostdir",14);\r
+aWE("bottom",16,23);\r
+aWE("box",7,14,13,17,19,22);\r
+aWE("bracket",14);\r
 aWE("brand",2);\r
-aWE("brief",9,15,13);\r
-aWE("brows",1,9,15,11,14,17,19,22,24);\r
-aWE("bug",9,15);\r
-aWE("build",9,15,12,20);\r
-aWE("built",9,15,12);\r
-aWE("button",9,15,13,14,18,23);\r
-aWE("c",16);\r
-aWE("ca",2,9);\r
-aWE("cad",2,10);\r
-aWE("cal",0,15);\r
-aWE("calculation",8,12);\r
-aWE("call",18,20,23);\r
-aWE("camera",17);\r
-aWE("cancel",9,15);\r
-aWE("capability",20);\r
-aWE("caption",15);\r
-aWE("car",9,15,10);\r
-aWE("careful",9,15);\r
-aWE("cas",0,7,9,15,18,24);\r
-aWE("cascad",2,5,9,15);\r
-aWE("casroot",9,15);\r
-aWE("cat",9,15);\r
-aWE("catalog",20);\r
-aWE("catalogmodulegeneral",20);\r
-aWE("catalogmodulepersonnel",20);\r
-aWE("catalogu",11,16);\r
-aWE("categori",21);\r
-aWE("chang",0,2,7,9,15,18);\r
+aWE("brief",14,12);\r
+aWE("brows",1,14,10,13,16,18,21,23);\r
+aWE("bug",14);\r
+aWE("build",14,11,19);\r
+aWE("built",14,11);\r
+aWE("button",14,12,13,17,22);\r
+aWE("c",15);\r
+aWE("ca",2);\r
+aWE("cad",2,9);\r
+aWE("cal",0,14);\r
+aWE("calculation",8,11);\r
+aWE("call",14,17,19,22);\r
+aWE("camera",16);\r
+aWE("cancel",14);\r
+aWE("capability",19);\r
+aWE("caption",14);\r
+aWE("car",14,9);\r
+aWE("careful",14);\r
+aWE("cas",0,7,14,17,23);\r
+aWE("cascad",2,5,14);\r
+aWE("casroot",14);\r
+aWE("cat",14);\r
+aWE("catalog",19);\r
+aWE("catalogmodulegeneral",19);\r
+aWE("catalogmodulepersonnel",19);\r
+aWE("catalogu",10,15);\r
+aWE("categori",20);\r
+aWE("chang",0,2,7,14,17);\r
 aWE("chapter",1);\r
-aWE("charg",15);\r
-aWE("check",9,15);\r
-aWE("check_version",15);\r
-aWE("checkbox",9,15);\r
-aWE("child",24);\r
-aWE("choic",9,15);\r
-aWE("choos",3,5,4,6,7,9,15,14,20,23);\r
-aWE("chosen",20);\r
-aWE("chronological",19);\r
-aWE("clear",9,15,24);\r
-aWE("clearall",17);\r
-aWE("click",3,6,7,9,15,13,14,17,18,21,22,23,24);\r
-aWE("clickabl",13);\r
+aWE("charg",14);\r
+aWE("check",14);\r
+aWE("check_version",14);\r
+aWE("checkbox",14);\r
+aWE("child",23);\r
+aWE("choic",14);\r
+aWE("choos",3,5,4,6,7,14,13,19,22);\r
+aWE("chosen",19);\r
+aWE("chronological",18);\r
+aWE("clear",14,23);\r
+aWE("clearall",16);\r
+aWE("click",3,6,7,14,12,13,16,17,20,21,22,23);\r
+aWE("clickabl",12);\r
 aWE("client",0);\r
-aWE("clos",9,15,13,18,21);\r
+aWE("clos",14,12,17,20);\r
 aWE("cluster",0);\r
-aWE("cod",0,15,10);\r
-aWE("coincid",9);\r
-aWE("collect",9,15);\r
-aWE("collision",9);\r
-aWE("color",19,22);\r
-aWE("column",19,22,23);\r
-aWE("combin",12);\r
-aWE("combination",17);\r
-aWE("comfort",9,15);\r
-aWE("comma",15);\r
-aWE("command",0,9,15,16);\r
+aWE("cod",0,14,9);\r
+aWE("collect",14);\r
+aWE("color",18,21);\r
+aWE("column",18,21,22);\r
+aWE("combin",11);\r
+aWE("combination",16);\r
+aWE("comfort",14);\r
+aWE("comma",14);\r
+aWE("command",0,14,15);\r
 aWE("commitment",2);\r
-aWE("common",15,11,18);\r
+aWE("common",14,10,17);\r
 aWE("compar",0);\r
-aWE("comparison",24);\r
-aWE("compil",9,15);\r
-aWE("complet",7,9,15,21,23);\r
-aWE("complex",0,10);\r
-aWE("component",0,1,4,6,11,12,13,14,17,18,19,20,22,23,24);\r
-aWE("comput",9,15);\r
-aWE("computation",0,10);\r
-aWE("concept",0,13);\r
-aWE("concern",9,15,10);\r
+aWE("comparison",23);\r
+aWE("compil",14);\r
+aWE("complet",7,14,20,22);\r
+aWE("complex",0,9);\r
+aWE("component",0,1,4,6,10,11,12,13,16,17,18,19,21,22,23);\r
+aWE("comput",14);\r
+aWE("computation",0,9);\r
+aWE("concept",0,12);\r
+aWE("concern",14,9);\r
 aWE("conclusion",0);\r
-aWE("config",15);\r
-aWE("config_fil",15);\r
-aWE("config_redhat8_0",15);\r
-aWE("configur",9,15);\r
-aWE("configurabl",12);\r
-aWE("configuration",15);\r
-aWE("confirm",9,15);\r
+aWE("config",14);\r
+aWE("config_fil",14);\r
+aWE("config_redhat8_0",14);\r
+aWE("configur",14);\r
+aWE("configurabl",11);\r
+aWE("configuration",14);\r
+aWE("confirm",14);\r
 aWE("connect",8);\r
 aWE("connection",2);\r
-aWE("consist",17);\r
-aWE("consol",16,17,19);\r
-aWE("constant",0);\r
+aWE("consist",16);\r
+aWE("consol",15,16,18);\r
+aWE("constant",0,15);\r
 aWE("constru",2);\r
-aWE("construction",12);\r
-aWE("contain",1,2,7,9,15,14,16,17,19,20,21,22,23);\r
-aWE("container",16);\r
-aWE("content",15,21);\r
-aWE("context",4,17,22,24);\r
-aWE("continu",9,15);\r
-aWE("contribut",10);\r
-aWE("control",3,9,15);\r
-aWE("convenienc",17);\r
-aWE("convenient",9);\r
-aWE("cooperat",12);\r
-aWE("copi",2,24);\r
-aWE("copy",6,15,17,18);\r
-aWE("copyright",2,15);\r
+aWE("construction",11);\r
+aWE("contain",1,2,7,14,13,15,16,18,19,20,21,22);\r
+aWE("container",15);\r
+aWE("content",14,20);\r
+aWE("context",4,16,21,23);\r
+aWE("continu",14);\r
+aWE("contribut",9);\r
+aWE("control",3,14);\r
+aWE("convenienc",16);\r
+aWE("cooperat",11);\r
+aWE("copi",2,23);\r
+aWE("copy",6,14,16,17);\r
+aWE("copyright",2,14);\r
 aWE("corba",0);\r
-aWE("corn",18);\r
-aWE("correct",17);\r
-aWE("correspond",9,15,14,16,21);\r
-aWE("corrupt",9);\r
-aWE("cost",10);\r
-aWE("coupl",0,10);\r
-aWE("cpp",16);\r
-aWE("creat",0,1,3,8,9,15,11,14,16,17,18,19,20,22,24);\r
-aWE("creation",0,9,15,10,11);\r
-aWE("critical",10);\r
-aWE("cros",13,18);\r
-aWE("csh",9,15,16);\r
-aWE("cshell",16);\r
-aWE("current",6,7,9,15,13,16,18,19,22,23,24);\r
-aWE("custom",10,19,20,24);\r
-aWE("cut",9,15);\r
-aWE("d",9,15);\r
-aWE("dat",7,23);\r
-aWE("data",0,8,9,15,11,12,18,19);\r
+aWE("corn",17);\r
+aWE("correct",16);\r
+aWE("correspond",14,13,15,20);\r
+aWE("cost",9);\r
+aWE("coupl",0,9);\r
+aWE("cpp",15);\r
+aWE("creat",0,1,3,8,14,10,13,15,16,17,18,19,21,23);\r
+aWE("creation",0,14,9,10);\r
+aWE("critical",9);\r
+aWE("cros",12,17);\r
+aWE("csh",14,15);\r
+aWE("cshell",15);\r
+aWE("current",6,7,14,12,15,17,18,21,22,23);\r
+aWE("custom",9,18,19,23);\r
+aWE("cut",14);\r
+aWE("d",14);\r
+aWE("dat",7,22);\r
+aWE("data",0,8,14,10,11,17,18);\r
 aWE("databas",0);\r
 aWE("de",2);\r
-aWE("debug",22);\r
-aWE("decreas",9);\r
-aWE("default",3,4,9,15,16,18,19,22,24);\r
-aWE("defin",15,19,24);\r
-aWE("definit",0,3,4,6,9,16,18,19,22,23,24);\r
-aWE("definition",0,21);\r
-aWE("demand",10);\r
-aWE("depend",15,19,22,24);\r
-aWE("dependanci",15);\r
-aWE("dependenci",15);\r
-aWE("deriv",0,10);\r
-aWE("descend",22);\r
-aWE("describ",0,1,2,9,15,20);\r
-aWE("description",9,15,16,20);\r
-aWE("design",10);\r
-aWE("desir",20);\r
-aWE("desktop",5,4,8,15,11,17,18);\r
-aWE("destin",8,17,22,23,24);\r
-aWE("destination",13);\r
-aWE("detail",9,15);\r
+aWE("debug",21);\r
+aWE("default",3,4,14,15,17,18,21,23);\r
+aWE("defin",14,18,23);\r
+aWE("definit",0,3,4,6,15,17,18,21,22,23);\r
+aWE("definition",0,20);\r
+aWE("demand",9);\r
+aWE("depend",14,18,21,23);\r
+aWE("dependanci",14);\r
+aWE("dependenci",14);\r
+aWE("deriv",0,9);\r
+aWE("descend",21);\r
+aWE("describ",0,1,2,14,19);\r
+aWE("description",14,15,19);\r
+aWE("design",9);\r
+aWE("desir",19);\r
+aWE("desktop",5,4,8,14,10,16,17);\r
+aWE("destin",8,16,21,22,23);\r
+aWE("destination",12);\r
+aWE("detail",14);\r
 aWE("develop",0);\r
-aWE("development",0,10);\r
-aWE("dialog",7,9,15,14,18,20,21,23);\r
-aWE("dif",9,15);\r
-aWE("different",0,1,3,5,8,9,15,14,17,22,24);\r
-aWE("digital",10);\r
-aWE("dir",15);\r
-aWE("direct",9,21);\r
-aWE("directori",9,15,19);\r
-aWE("directory",9,15,16,18,19,20);\r
-aWE("disabl",9,15,19);\r
-aWE("disable_flag",15);\r
-aWE("disk",9,15,16);\r
-aWE("display",5,4,9,15,13,16,17,19,21,22,23,24);\r
+aWE("development",0,9);\r
+aWE("dialog",7,14,13,17,19,20,22);\r
+aWE("dif",14);\r
+aWE("different",0,1,3,5,8,14,13,15,16,21,23);\r
+aWE("digital",9);\r
+aWE("dir",14);\r
+aWE("direct",20);\r
+aWE("directori",14,18);\r
+aWE("directory",14,15,17,18,19);\r
+aWE("disabl",14,18);\r
+aWE("disable_flag",14);\r
+aWE("disk",14,15);\r
+aWE("display",5,4,14,12,15,16,18,20,21,22,23);\r
 aWE("distinction",0);\r
 aWE("distribut",0);\r
-aWE("divid",1,23);\r
-aWE("do",9,15);\r
-aWE("doc",9);\r
-aWE("document",2,8,15,17);\r
-aWE("doesn",9);\r
-aWE("domain",0,2,10,12);\r
-aWE("don",9,15,20);\r
-aWE("dot",9,15);\r
-aWE("doubl",23);\r
-aWE("down",7,13,22);\r
-aWE("doxygen",9,15);\r
-aWE("doxysearch",9,15);\r
-aWE("doxytag",9,15);\r
-aWE("doxywizard",9,15);\r
-aWE("drag",4,24);\r
+aWE("divid",1,22);\r
+aWE("do",14);\r
+aWE("document",2,8,14,16);\r
+aWE("domain",0,2,9,11);\r
+aWE("don",14,19);\r
+aWE("dot",14);\r
+aWE("doubl",22);\r
+aWE("down",7,12,21);\r
+aWE("doxygen",14);\r
+aWE("doxysearch",14);\r
+aWE("doxytag",14);\r
+aWE("doxywizard",14);\r
+aWE("drag",4,23);\r
 aWE("dramatical",0);\r
-aWE("driv",9,15);\r
-aWE("driver",9,15);\r
-aWE("drop",4,13,24);\r
-aWE("dump",17);\r
-aWE("dynamical",12);\r
-aWE("e",9,15);\r
-aWE("eas",10);\r
+aWE("driv",14);\r
+aWE("driver",14);\r
+aWE("drop",4,12,23);\r
+aWE("dump",16);\r
+aWE("dynamical",11);\r
+aWE("e",14);\r
+aWE("eas",9);\r
 aWE("easi",0);\r
 aWE("easy",0);\r
-aWE("echo",9,15);\r
+aWE("echo",14);\r
 aWE("economical",0);\r
-aWE("edit",6,7,9,15,11);\r
-aWE("efficient",10);\r
-aWE("eith",20);\r
-aWE("electrical",10);\r
-aWE("electronic",2,10);\r
-aWE("els",9);\r
-aWE("empty",9,15);\r
-aWE("enabl",9,12,19,21);\r
-aWE("encapsulat",12);\r
+aWE("edit",6,7,14,10,15);\r
+aWE("efficient",9);\r
+aWE("egrep",14);\r
+aWE("eith",19);\r
+aWE("electrical",9);\r
+aWE("electronic",2,9);\r
+aWE("empty",14);\r
+aWE("enabl",11,18,20);\r
+aWE("encapsulat",11);\r
 aWE("encourag",0);\r
-aWE("end",9,15,19);\r
+aWE("end",14,18);\r
 aWE("enforc",0);\r
-aWE("eng",11);\r
-aWE("enough",9,15);\r
-aWE("ensur",0,10);\r
-aWE("ent",7,9,15,16,18);\r
-aWE("enter",9,15);\r
-aWE("entry",9,15,19,22);\r
-aWE("env",16);\r
-aWE("env_",15);\r
-aWE("env_product",15);\r
-aWE("env_vtk",15);\r
-aWE("environment",0,8,9,15,10,11,16);\r
-aWE("equal",9,15);\r
-aWE("equipment",10);\r
-aWE("error",2,9,15);\r
-aWE("etc",0,4,15);\r
-aWE("ev",23);\r
-aWE("even",0,9);\r
-aWE("every",10,12,21);\r
-aWE("everyth",9,15);\r
-aWE("evolution",10);\r
+aWE("eng",10);\r
+aWE("enough",14);\r
+aWE("ensur",0,9);\r
+aWE("ent",7,14,15,17);\r
+aWE("enter",14);\r
+aWE("entry",14,18,21);\r
+aWE("env",14,15);\r
+aWE("env_",14);\r
+aWE("env_product",14);\r
+aWE("env_vtk",14);\r
+aWE("environment",0,8,14,9,10,15);\r
+aWE("equal",14);\r
+aWE("equipment",9);\r
+aWE("error",2,14);\r
+aWE("etc",0,4,14);\r
+aWE("ev",22);\r
+aWE("even",0);\r
+aWE("every",9,11,20);\r
+aWE("everyth",14);\r
+aWE("evolution",9);\r
 aWE("evolv",0);\r
-aWE("ex",16);\r
-aWE("exact",9,15);\r
-aWE("examl",15);\r
-aWE("exampl",9,15,10,20);\r
-aWE("except",9);\r
+aWE("ex",15);\r
+aWE("exact",14);\r
+aWE("exampl",14,9,19);\r
 aWE("exchang",0);\r
-aWE("execution",12);\r
-aWE("exist",0,9,15,12,14,18,20);\r
-aWE("existanc",9);\r
-aWE("existenc",9,15);\r
-aWE("existens",9);\r
-aWE("existent",9);\r
-aWE("expand",13);\r
+aWE("execution",11);\r
+aWE("exist",0,14,11,13,17,19);\r
+aWE("existenc",14);\r
+aWE("expand",12);\r
 aWE("expandability",0);\r
-aWE("expectation",10);\r
+aWE("expectation",9);\r
 aWE("exploit",0);\r
 aWE("explor",1);\r
 aWE("expos",0);\r
-aWE("extension",18);\r
-aWE("external",19);\r
-aWE("extract",9,15);\r
-aWE("extreme",10);\r
-aWE("f",9,15);\r
+aWE("extension",17);\r
+aWE("external",18);\r
+aWE("extract",14);\r
+aWE("extreme",9);\r
+aWE("f",14);\r
 aWE("facilitat",0);\r
-aWE("factory",20);\r
-aWE("fail",9,15);\r
-aWE("featur",1,6,9,15);\r
-aWE("field",7,9,15);\r
-aWE("fig",9,15);\r
-aWE("figur",9,15);\r
-aWE("fil",3,7,9,15,14,16,17,18,19,20);\r
-aWE("find",9,15,21);\r
+aWE("factory",19);\r
+aWE("fail",14);\r
+aWE("fals",14);\r
+aWE("featur",1,6,14);\r
+aWE("field",7,14);\r
+aWE("fig",14);\r
+aWE("figur",14);\r
+aWE("fil",3,7,14,13,15,16,17,18,19);\r
+aWE("find",14,20);\r
+aWE("find_in_path",14);\r
 aWE("fine",0);\r
-aWE("finish",9,15,13);\r
-aWE("first",9,15,22);\r
-aWE("fit",17);\r
-aWE("flag",15);\r
+aWE("finish",14,12);\r
+aWE("first",14,21);\r
+aWE("fit",16);\r
+aWE("flag",14);\r
 aWE("flexibility",0);\r
-aWE("flexibl",15);\r
-aWE("focu",13);\r
-aWE("fold",9,15,19,22,24);\r
-aWE("folder",9);\r
-aWE("follow",0,5,7,8,9,15,12,13,14,16,17,18,19,20,21,23,24);\r
-aWE("font",19);\r
-aWE("forc",9);\r
-aWE("forget",20);\r
-aWE("format",1,15,14,19);\r
-aWE("four",11);\r
-aWE("fr",11);\r
-aWE("fram",9,15);\r
-aWE("framework",11,22);\r
+aWE("flexibl",14);\r
+aWE("focu",12);\r
+aWE("fold",14,18,21,23);\r
+aWE("follow",0,5,7,8,14,11,12,13,15,16,17,18,19,20,22,23);\r
+aWE("font",18);\r
+aWE("forget",19);\r
+aWE("format",1,14,13,18);\r
+aWE("four",10);\r
+aWE("fr",10);\r
+aWE("fram",14);\r
+aWE("framework",10,21);\r
 aWE("franc",2);\r
-aWE("friend",10);\r
-aWE("front",17);\r
-aWE("full",21);\r
-aWE("function",15,12,17,18);\r
-aWE("function_nam",15);\r
-aWE("functional",17);\r
-aWE("functionality",0,1,6,8,17,20);\r
+aWE("friend",9);\r
+aWE("front",16);\r
+aWE("full",20);\r
+aWE("function",14,11,16,17);\r
+aWE("function_nam",14);\r
+aWE("functional",16);\r
+aWE("functionality",0,1,6,8,16,19);\r
 aWE("fundamental",0);\r
 aWE("furnish",2);\r
-aWE("furth",9,15);\r
-aWE("g",9,15,16);\r
-aWE("gcc",9,15);\r
-aWE("gcc3",9);\r
-aWE("general",8,15,17);\r
-aWE("generat",15,20);\r
-aWE("generation",12);\r
-aWE("generator",11,20);\r
-aWE("generic",10,12);\r
-aWE("geom",0,4,6,12);\r
-aWE("get",1,7,8,9,10,22,24);\r
-aWE("giv",7,15,17);\r
-aWE("given",15,12);\r
-aWE("global",17);\r
-aWE("glossary",21);\r
-aWE("gnu",9);\r
-aWE("go",9,15,13);\r
-aWE("graph",12);\r
-aWE("graphviz",9,15);\r
-aWE("grep",9,15);\r
-aWE("gui",0,9,15,16);\r
-aWE("h",9,16);\r
-aWE("hand",0,13,21);\r
-aWE("handl",9,15,10,11);\r
-aWE("happydoc",9,15);\r
-aWE("hard",9,15,16);\r
-aWE("hasn",18);\r
-aWE("hat",9,15);\r
-aWE("hav",13,22);\r
-aWE("hdf",9,15,14,18,19);\r
-aWE("hdf5",9,15);\r
-aWE("hdf5hom",9,15);\r
-aWE("head",9);\r
-aWE("hello",23);\r
-aWE("help",0,1,9,15,13,14,16,21,22,23);\r
-aWE("her",9,15,19);\r
-aWE("hid",4,17,19,22);\r
-aWE("high",10);\r
-aWE("highlight",15,22);\r
-aWE("hint",15);\r
-aWE("history",23);\r
+aWE("furth",14);\r
+aWE("g",14,15);\r
+aWE("gcc",14);\r
+aWE("general",8,14,16);\r
+aWE("generat",14,19);\r
+aWE("generation",11);\r
+aWE("generator",10,19);\r
+aWE("generic",9,11);\r
+aWE("geom",0,4,6,14,11);\r
+aWE("get",1,7,8,9,21,23);\r
+aWE("giv",7,14,16);\r
+aWE("given",14,11);\r
+aWE("global",16);\r
+aWE("glossary",20);\r
+aWE("go",14,12);\r
+aWE("graph",11);\r
+aWE("graphviz",14);\r
+aWE("grep",14);\r
+aWE("gui",0,14,15);\r
+aWE("h",14,15);\r
+aWE("hand",0,12,20);\r
+aWE("handl",14,9,10);\r
+aWE("happydoc",14);\r
+aWE("hard",14,15);\r
+aWE("hasn",17);\r
+aWE("hat",14);\r
+aWE("hav",12,21);\r
+aWE("hdf",14,13,17,18);\r
+aWE("hdf5",14);\r
+aWE("hdf5hom",14);\r
+aWE("hello",22);\r
+aWE("help",0,1,14,12,13,15,20,21,22);\r
+aWE("her",14,18);\r
+aWE("hid",4,16,18,21);\r
+aWE("high",9);\r
+aWE("highlight",14,21);\r
+aWE("hint",14);\r
+aWE("history",22);\r
 aWE("holder",2);\r
-aWE("hom",16);\r
+aWE("hom",15);\r
 aWE("host",0);\r
-aWE("hotspot",13);\r
-aWE("how",0,9,15);\r
-aWE("html",1,21);\r
-aWE("i586_linux_2",9,15);\r
-aWE("iapp",0,11,12);\r
-aWE("icon",3,6,17,20);\r
-aWE("identification",22,23);\r
-aWE("identify",9,15);\r
-aWE("idl",0,20);\r
-aWE("ie",19);\r
-aWE("if",3,9,15,14,16,18,19,20,21,22,24);\r
-aWE("imag",17);\r
-aWE("immediate",13);\r
+aWE("hotspot",12);\r
+aWE("how",0,14);\r
+aWE("hpp",14);\r
+aWE("html",1,20);\r
+aWE("i586_linux_2",14);\r
+aWE("iapp",0,10,11);\r
+aWE("icon",3,6,16,19);\r
+aWE("identification",21,22);\r
+aWE("identify",14);\r
+aWE("idl",0,19);\r
+aWE("ie",18);\r
+aWE("if",3,14,13,15,17,18,19,20,21,23);\r
+aWE("imag",16);\r
+aWE("immediate",12);\r
 aWE("immeubl",2);\r
-aWE("implement",0,15);\r
-aWE("implementation",0,20);\r
-aWE("impli",15);\r
-aWE("import",11,17);\r
-aWE("important",15);\r
-aWE("impossibility",9);\r
-aWE("includ",2,9,15,13,21);\r
+aWE("implement",0,14);\r
+aWE("implementation",0,19);\r
+aWE("impli",14);\r
+aWE("import",10,16);\r
+aWE("important",14);\r
+aWE("impossibl",14);\r
+aWE("includ",2,14,12,20);\r
 aWE("inclusiv",0);\r
-aWE("increas",10);\r
+aWE("increas",9);\r
 aWE("incremental",0);\r
 aWE("independenc",0);\r
 aWE("independent",0);\r
-aWE("index",21,22);\r
-aWE("industry",10);\r
-aWE("information",0,2,7,9,15,13,18,21,23);\r
-aWE("initial",8,17);\r
-aWE("input",20);\r
-aWE("insert",15);\r
-aWE("insid",13,20);\r
-aWE("inspect",9,15);\r
-aWE("instal",9,15,20);\r
-aWE("install",9,15,16);\r
-aWE("install_binary",15);\r
-aWE("install_disk_spac",15);\r
-aWE("install_sourc",15);\r
-aWE("install_wizard_caption",15);\r
-aWE("install_wizard_copyright",15);\r
-aWE("install_wizard_license_info",15);\r
-aWE("install_wizard_root_directory",15);\r
-aWE("install_wizard_version",15);\r
-aWE("installation",9,15,16);\r
-aWE("installation_mod",15);\r
-aWE("installation_script_nam",15);\r
-aWE("installdiskspac",15);\r
-aWE("installwizard_root_directory",15);\r
+aWE("index",20,21);\r
+aWE("industry",9);\r
+aWE("information",0,2,7,14,12,17,20,22);\r
+aWE("initial",8,16);\r
+aWE("input",19);\r
+aWE("insert",14);\r
+aWE("insid",12,19);\r
+aWE("inspect",14);\r
+aWE("instal",14,19);\r
+aWE("instalation",14);\r
+aWE("install",14,15);\r
+aWE("install_binary",14);\r
+aWE("install_disk_spac",14);\r
+aWE("install_sourc",14);\r
+aWE("install_wizard_caption",14);\r
+aWE("install_wizard_copyright",14);\r
+aWE("install_wizard_license_info",14);\r
+aWE("install_wizard_root_directory",14);\r
+aWE("install_wizard_version",14);\r
+aWE("installation",14,15);\r
+aWE("installation_mod",14);\r
+aWE("installation_script_nam",14);\r
+aWE("installdiskspac",14);\r
+aWE("installwizard_root_directory",14);\r
 aWE("instrumental",0);\r
-aWE("int",10);\r
-aWE("integ",15);\r
-aWE("integrat",0,11,12,17);\r
-aWE("integration",0,10,11,20);\r
-aWE("intend",21);\r
-aWE("interfac",0,10,11,12,19,20);\r
-aWE("internal",15,10);\r
+aWE("int",9);\r
+aWE("integ",14);\r
+aWE("integrat",0,10,11,16);\r
+aWE("integration",0,9,10,19);\r
+aWE("intend",20);\r
+aWE("interfac",0,9,10,11,18,19);\r
+aWE("internal",14,9);\r
 aWE("internet",1);\r
-aWE("interoperabl",22);\r
-aWE("interpret",11,17);\r
-aWE("interval",23);\r
-aWE("introduction",9,15,10,11,12);\r
-aWE("invalid",18);\r
-aWE("invok",9,15,17);\r
-aWE("ior",19,22);\r
-aWE("ispython",9,15);\r
-aWE("isswig",9,15);\r
-aWE("item",7,9,19);\r
-aWE("itself",9,15);\r
+aWE("interoperabl",21);\r
+aWE("interpret",10,16);\r
+aWE("interval",22);\r
+aWE("introduction",14,9,10,11);\r
+aWE("invalid",17);\r
+aWE("invok",14,16);\r
+aWE("ior",18,21);\r
+aWE("ispython",14);\r
+aWE("isswig",14);\r
+aWE("item",7,18);\r
+aWE("itself",14);\r
 aWE("java",1);\r
-aWE("jpeg",17);\r
-aWE("jpg",17);\r
-aWE("just",9,15);\r
-aWE("k",16);\r
-aWE("kbyt",15);\r
-aWE("kernel",12,16);\r
-aWE("key",9,15);\r
-aWE("keyword",21);\r
-aWE("kill",16);\r
-aWE("killall",16);\r
-aWE("kind",7,13);\r
-aWE("know",9,20);\r
-aWE("known",9);\r
-aWE("l",16);\r
+aWE("jpeg",16);\r
+aWE("jpg",16);\r
+aWE("just",14);\r
+aWE("k",15);\r
+aWE("kbyt",14);\r
+aWE("kernel",14,11,15);\r
+aWE("key",14);\r
+aWE("keyword",20);\r
+aWE("kill",15);\r
+aWE("killall",15);\r
+aWE("kind",7,12);\r
+aWE("know",19);\r
+aWE("l",15);\r
 aWE("languag",0);\r
-aWE("last",9,18,23);\r
-aWE("launch",1,9,15,14,16,19,20,23);\r
-aWE("ld_library_path",9,15);\r
-aWE("lead",9,18);\r
-aWE("learn",15);\r
-aWE("left",9,15,17,21);\r
-aWE("level",19,21,24);\r
-aWE("lib",9,15);\r
-aWE("libcosnotify3",9,15);\r
-aWE("libgl",9,15);\r
-aWE("libhdf5",9,15);\r
-aWE("libm",9,15);\r
-aWE("libomniorb3",9,15);\r
-aWE("libqt",9,15);\r
-aWE("libqtxmlcmodul",9,15);\r
-aWE("libqwt",9,15);\r
-aWE("library",9,15);\r
-aWE("libsip",9,15);\r
-aWE("libtcl8",9,15);\r
-aWE("libtclx8",9,15);\r
-aWE("libtk8",9,15);\r
-aWE("libtkx8",9,15);\r
-aWE("libvtkcommon",9,15);\r
-aWE("licens",2,15);\r
-aWE("lik",0,5,4,9,15,13,17,18,20,22,24);\r
-aWE("limitation",9);\r
-aWE("lin",1,9,15,16);\r
-aWE("link",0,9,10,13);\r
-aWE("linu",9);\r
-aWE("linux",1,9,15);\r
-aWE("linuxredhat",15);\r
-aWE("list",7,9,15,13,16,19,21,23);\r
-aWE("list_of_prerequisit",15);\r
-aWE("load",11,14,16,17,19,22,24);\r
-aWE("local",9,15);\r
-aWE("locat",4,16,21,22);\r
-aWE("location",20);\r
+aWE("last",17,22);\r
+aWE("launch",1,14,13,15,18,19,22);\r
+aWE("ld_library_path",14);\r
+aWE("lead",17);\r
+aWE("learn",14);\r
+aWE("left",14,16,20);\r
+aWE("level",18,20,23);\r
+aWE("lib",14);\r
+aWE("libcosnotify3",14);\r
+aWE("libgl",14);\r
+aWE("libhdf5",14);\r
+aWE("libm",14);\r
+aWE("libomniorb3",14);\r
+aWE("libqt",14);\r
+aWE("libqtxmlcmodul",14);\r
+aWE("libqwt",14);\r
+aWE("library",14);\r
+aWE("libsip",14);\r
+aWE("libtcl8",14);\r
+aWE("libtclx8",14);\r
+aWE("libtk8",14);\r
+aWE("libtkx8",14);\r
+aWE("libvtkcommon",14);\r
+aWE("licens",2,14);\r
+aWE("lik",0,5,4,14,12,16,17,19,21,23);\r
+aWE("lin",1,14,15);\r
+aWE("link",0,9,12);\r
+aWE("linux",1,14);\r
+aWE("list",7,14,12,15,18,20,22);\r
+aWE("list_of_prerequisit",14);\r
+aWE("load",10,13,15,16,18,21,23);\r
+aWE("local",14);\r
+aWE("locat",4,15,20,21);\r
+aWE("location",19);\r
 aWE("lock",7);\r
-aWE("log",16);\r
+aWE("log",15);\r
 aWE("long",0);\r
-aWE("look",5,9,15,20,21);\r
-aWE("lost",18);\r
-aWE("lot",9);\r
-aWE("low",9,15,21);\r
-aWE("m",16);\r
-aWE("machin",0,9,18,23);\r
+aWE("look",5,14,19,20);\r
+aWE("lost",17);\r
+aWE("low",14,20);\r
+aWE("m",15);\r
+aWE("machin",0,17,22);\r
 aWE("macintosh",1);\r
 aWE("macro",0);\r
-aWE("main",3,5,4,6,7,15,14,17,18,19,20,23);\r
-aWE("mak",3,5,9,15);\r
-aWE("management",11,17);\r
-aWE("manual",1,9,15,19);\r
+aWE("main",3,5,4,6,7,14,13,16,17,18,19,22);\r
+aWE("mak",3,5,14);\r
+aWE("make_dir",14);\r
+aWE("make_env",14);\r
+aWE("management",10,16);\r
+aWE("manual",1,14,18);\r
 aWE("map",0);\r
-aWE("mark",4,9,15,19);\r
-aWE("market",10);\r
+aWE("mark",4,14,18);\r
+aWE("market",9);\r
 aWE("massive",0);\r
-aWE("mast",15);\r
-aWE("match",21);\r
+aWE("mast",14);\r
+aWE("match",20);\r
 aWE("material",2);\r
-aWE("maximiz",3,5,17);\r
-aWE("mean",2,8,9,15);\r
+aWE("maximiz",3,5,16);\r
+aWE("mean",2,8,14);\r
 aWE("mechanical",2);\r
-aWE("med2hom",9,15);\r
-aWE("meet",10);\r
-aWE("mention",9);\r
-aWE("menu",3,5,4,6,7,11,13,14,17,18,19,20,22,23,24);\r
-aWE("mesa",9,15);\r
-aWE("mesa_hom",9,15);\r
-aWE("mesh",12);\r
-aWE("messag",7,9,15,11,16,17,19,23);\r
-aWE("middl",9,15);\r
-aWE("mind",9);\r
-aWE("minimiz",3,17);\r
-aWE("mis",15);\r
-aWE("mistak",17);\r
-aWE("mod",0,9,15,16);\r
-aWE("model",0,10,12);\r
-aWE("modern",10);\r
+aWE("med2hom",14);\r
+aWE("meet",9);\r
+aWE("menu",3,5,4,6,7,10,12,13,16,17,18,19,21,22,23);\r
+aWE("mesa",14);\r
+aWE("mesa_hom",14);\r
+aWE("mesh",11);\r
+aWE("messag",7,14,10,15,16,18,22);\r
+aWE("middl",14);\r
+aWE("minimiz",3,16);\r
+aWE("mis",14);\r
+aWE("mistak",16);\r
+aWE("mod",0,14,15);\r
+aWE("model",0,9,11);\r
+aWE("modern",9);\r
 aWE("modification",0,7);\r
-aWE("modify",15,24);\r
-aWE("modul",1,12,16,20);\r
-aWE("module1",16);\r
-aWE("module2",16);\r
-aWE("moment",15);\r
+aWE("modify",14,23);\r
+aWE("modul",1,14,11,15,19);\r
+aWE("module_root_dir",14);\r
+aWE("module_src",14);\r
+aWE("module_src_dir",14);\r
+aWE("module1",15);\r
+aWE("module2",15);\r
+aWE("moment",14);\r
 aWE("mous",4);\r
-aWE("mozilla",19);\r
-aWE("mt",9,15);\r
-aWE("much",9,15);\r
-aWE("multi",8,11,20,21);\r
-aWE("multifil",18,19);\r
-aWE("multipl",18);\r
+aWE("mozilla",18);\r
+aWE("mt",14);\r
+aWE("much",14);\r
+aWE("multi",8,10,19,20);\r
+aWE("multifil",17,18);\r
+aWE("multipl",17);\r
 aWE("multiti",0);\r
-aWE("must",0,9,10,12);\r
-aWE("n",9,15);\r
-aWE("nam",2,3,5,7,9,15,18,19,20,22,23,24);\r
-aWE("nativ",9,15);\r
+aWE("must",0,9,11);\r
+aWE("n",14);\r
+aWE("nam",2,3,5,7,14,17,18,19,21,22,23);\r
+aWE("nativ",14);\r
 aWE("natural",0);\r
-aWE("navigat",9,15,13);\r
-aWE("navigation",1,13);\r
+aWE("navigat",14,12);\r
+aWE("navigation",1,12);\r
 aWE("navigator",1);\r
-aWE("ne",9,15,13);\r
-aWE("necessary",9,15,16);\r
-aWE("need",9);\r
-aWE("netscap",1,19);\r
-aWE("new",0,3,7,8,9,15,18,19,20,24);\r
-aWE("next",7,9,15,19,20);\r
-aWE("nod",20);\r
-aWE("not",9,15);\r
+aWE("ne",14,12);\r
+aWE("necessary",14,15);\r
+aWE("netgen",14);\r
+aWE("netgenroot",14);\r
+aWE("netscap",1,18);\r
+aWE("new",0,3,7,8,14,17,18,19,23);\r
+aWE("next",7,14,15,18,19);\r
+aWE("nod",19);\r
+aWE("not",14);\r
 aWE("notic",2);\r
 aWE("noticeab",0);\r
-aWE("notifd",9,15);\r
+aWE("notifd",14);\r
 aWE("notion",8);\r
-aWE("numb",9,15,19,23);\r
-aWE("numeric",9,15,10,12);\r
+aWE("numb",14,18,22);\r
+aWE("numeric",14,9,11);\r
 aWE("numerical",0,8);\r
-aWE("object",0,6,11,14,17,19,22,24);\r
+aWE("numerou",15);\r
+aWE("object",0,6,10,13,16,18,21,23);\r
 aWE("objectiv",0);\r
-aWE("obligatory",9,15);\r
-aWE("occ",3,11,17,19);\r
-aWE("occupi",15);\r
-aWE("off",9,15);\r
+aWE("obligatory",14);\r
+aWE("occ",3,10,16,18);\r
+aWE("occupi",14);\r
+aWE("off",14);\r
 aWE("offer",0);\r
-aWE("often",10);\r
-aWE("ok",9,15,14);\r
+aWE("often",9);\r
+aWE("ok",14,13);\r
 aWE("omg",0);\r
-aWE("omit",15);\r
-aWE("omni",9,15);\r
-aWE("omninotify",9,15);\r
-aWE("omniorb",9,15);\r
-aWE("omniorbdir",9,15);\r
-aWE("omniorbpy",9,15);\r
-aWE("on",0,6,9,15,11,13,14,16,18,19,20,21,22,24);\r
-aWE("onc",9);\r
-aWE("onlin",21);\r
-aWE("onto",9);\r
-aWE("open",2,8,12,13,14,16,18,19,20,21);\r
-aWE("opengl",9,15);\r
-aWE("operability",10);\r
-aWE("operation",6,8,17,18,24);\r
-aWE("optimiz",10);\r
-aWE("option",5,6,7,9,15,14,16,17,18,19,22,24);\r
-aWE("optional",9,15);\r
-aWE("ord",9,15);\r
+aWE("omit",14);\r
+aWE("omni",14);\r
+aWE("omninotify",14);\r
+aWE("omniorb",14);\r
+aWE("omniorbdir",14);\r
+aWE("omniorbpy",14);\r
+aWE("on",0,6,14,10,12,13,15,17,18,19,20,21,23);\r
+aWE("onlin",20);\r
+aWE("open",2,8,11,12,13,15,17,18,19,20);\r
+aWE("opengl",14);\r
+aWE("operability",9);\r
+aWE("operation",6,8,16,17,23);\r
+aWE("optimiz",9);\r
+aWE("option",5,6,7,14,13,15,16,17,18,21,23);\r
+aWE("optional",14);\r
+aWE("ord",14);\r
 aWE("org",0);\r
-aWE("originality",12);\r
-aWE("os",15);\r
-aWE("os_version",15);\r
+aWE("originality",11);\r
+aWE("os",14);\r
+aWE("os_version",14);\r
 aWE("other",1);\r
-aWE("otherwis",2,9,15,18);\r
-aWE("outlin",17);\r
-aWE("output",9,15,11,17,19);\r
-aWE("overload",15);\r
-aWE("own",15,12,19,24);\r
-aWE("p",16);\r
-aWE("packag",9,15,16,20);\r
-aWE("pag",9,15,21);\r
-aWE("pan",13,17,21);\r
+aWE("otherwis",2,14,17);\r
+aWE("outlin",16);\r
+aWE("output",14,10,16,18);\r
+aWE("overload",14);\r
+aWE("own",14,11,18,23);\r
+aWE("p",15);\r
+aWE("packag",14,15,19);\r
+aWE("pag",14,20);\r
+aWE("pan",12,16,20);\r
 aWE("parallel",0);\r
-aWE("paramet",9,15,20);\r
-aWE("parameter",0,9,20);\r
-aWE("part",2,9,15,17);\r
-aWE("particular",10,18);\r
-aWE("pas",9,15);\r
-aWE("past",6,17);\r
-aWE("path",9,15);\r
+aWE("paramet",14,19);\r
+aWE("parameter",0,19);\r
+aWE("part",2,14,16);\r
+aWE("particular",9,17);\r
+aWE("pas",14);\r
+aWE("past",6,16);\r
+aWE("path",14);\r
 aWE("pc",0);\r
-aWE("performanc",0,8,10,17);\r
-aWE("permission",2,9,15);\r
-aWE("perpetuity",10);\r
+aWE("perform",14);\r
+aWE("performanc",0,8,9,16);\r
+aWE("permission",2,14);\r
+aWE("perpetuity",9);\r
 aWE("phenomena",0);\r
 aWE("photocopy",2);\r
-aWE("phras",21);\r
-aWE("physical",0,10,12);\r
-aWE("pick",9,15);\r
-aWE("pictur",7,24);\r
-aWE("pid",23);\r
+aWE("phras",20);\r
+aWE("physical",0,9,11);\r
+aWE("pick",14);\r
+aWE("pickup",14);\r
+aWE("pickup_env_flag",14);\r
+aWE("pickupenv",14);\r
+aWE("pictur",7,23);\r
+aWE("pid",22);\r
 aWE("piec",0);\r
-aWE("plac",4,15);\r
-aWE("platform",0,1,8,9,15,10,11,12,16,17,18,20,23);\r
-aWE("pleas",9,15);\r
-aWE("plot2d",3,11,17,19);\r
-aWE("png",17);\r
-aWE("point",9);\r
-aWE("pop",13,14,17,22,24);\r
-aWE("popup",13);\r
-aWE("port",16);\r
-aWE("portion",10);\r
-aWE("portkill",16);\r
-aWE("position",17);\r
-aWE("possibility",0,9,15,16,20);\r
-aWE("possibl",15,22,24);\r
-aWE("post",10,12);\r
-aWE("pr",10,12);\r
-aWE("precompil",9,15);\r
+aWE("plac",4,14);\r
+aWE("platform",0,1,8,14,9,10,11,15,16,17,19,22);\r
+aWE("pleas",14);\r
+aWE("plot2d",3,10,16,18);\r
+aWE("png",16);\r
+aWE("point",14);\r
+aWE("pop",12,13,16,21,23);\r
+aWE("popup",12);\r
+aWE("port",15);\r
+aWE("portion",9);\r
+aWE("portkill",15);\r
+aWE("position",16);\r
+aWE("possibility",0,14,15,19);\r
+aWE("possibl",14,21,23);\r
+aWE("post",9,11);\r
+aWE("pr",9,11);\r
+aWE("precompil",14);\r
 aWE("predefin",0);\r
-aWE("pref",9);\r
-aWE("preferabl",16);\r
-aWE("preferenc",19,22);\r
-aWE("prefix",9,15);\r
-aWE("preinstal",9,15);\r
-aWE("preliminary",9,15);\r
-aWE("prerequisit",9,15);\r
-aWE("pres",9,15);\r
-aWE("presentation",17);\r
-aWE("previou",9,15,14);\r
-aWE("previous",9,15,14,18);\r
-aWE("print",9,15,16);\r
-aWE("print_env",15);\r
-aWE("problem",9,15,10);\r
-aWE("proce",8,9,15);\r
-aWE("procedur",9,15,16);\r
-aWE("proces",9,15,10,12,23);\r
-aWE("processor",0,10);\r
-aWE("produc",17);\r
-aWE("product",2,9,15,10,16);\r
-aWE("product_nam",15);\r
-aWE("product_script_nam",15);\r
-aWE("product_version",15);\r
+aWE("preferabl",15);\r
+aWE("preferenc",18,21);\r
+aWE("prefix",14);\r
+aWE("preinstal",14);\r
+aWE("preliminary",14);\r
+aWE("prerequisit",14);\r
+aWE("pres",14);\r
+aWE("presentation",16);\r
+aWE("previou",14,13);\r
+aWE("previous",14,13,17);\r
+aWE("print",14,15);\r
+aWE("print_env",14);\r
+aWE("problem",14,9);\r
+aWE("proce",8,14);\r
+aWE("procedur",14,15);\r
+aWE("proces",14,9,11,22);\r
+aWE("processor",0,9);\r
+aWE("produc",16);\r
+aWE("product",2,14,9,15);\r
+aWE("product_description",14);\r
+aWE("product_nam",14);\r
+aWE("product_script_nam",14);\r
+aWE("product_version",14);\r
 aWE("productivity",0);\r
-aWE("products_directory",15);\r
-aWE("profil",9,16);\r
-aWE("program",0,9,15);\r
-aWE("progres",9,15);\r
-aWE("prompt",9,15,16);\r
-aWE("prop",9,15);\r
-aWE("proper",15);\r
-aWE("properti",7,12);\r
-aWE("propos",9,15);\r
+aWE("products_directory",14);\r
+aWE("profil",15);\r
+aWE("program",0,14);\r
+aWE("progres",14);\r
+aWE("prompt",14,15);\r
+aWE("prop",14);\r
+aWE("proper",14);\r
+aWE("properti",7,11);\r
+aWE("propos",14);\r
 aWE("proprietary",2);\r
-aWE("provid",0,15,10,11,16,20,21,23);\r
-aWE("purpos",8,9,22);\r
-aWE("py",15,16);\r
-aWE("pyqt",9,15);\r
-aWE("pyqtdir",9,15);\r
-aWE("python",0,9,15,11,16,17,19);\r
-aWE("python2",9,15);\r
-aWE("pythonhom",9,15);\r
-aWE("qt",9,15);\r
-aWE("qtdir",9,15);\r
-aWE("quality",10);\r
-aWE("question",9,15);\r
-aWE("quick",15,19,22,24);\r
-aWE("quit",9,15,18);\r
-aWE("quot",15);\r
-aWE("qwt",9,15);\r
-aWE("qwthom",9,15);\r
-aWE("radiobutton",9,15);\r
-aWE("rais",9,15);\r
+aWE("provid",0,14,9,10,15,19,20,22);\r
+aWE("purpos",8,21);\r
+aWE("py",14,15);\r
+aWE("pyqt",14);\r
+aWE("pyqtdir",14);\r
+aWE("python",0,14,10,15,16,18);\r
+aWE("python2",14);\r
+aWE("pythonhom",14);\r
+aWE("qt",14);\r
+aWE("qtdir",14);\r
+aWE("quality",9);\r
+aWE("question",14);\r
+aWE("quick",14,18,21,23);\r
+aWE("quit",14,17);\r
+aWE("quot",14);\r
+aWE("qwt",14);\r
+aWE("qwthom",14);\r
+aWE("radiobutton",14);\r
+aWE("rais",14);\r
 aWE("rapid",0);\r
 aWE("razel",2);\r
-aWE("rc2",9,15);\r
-aWE("re",13);\r
-aWE("reactivity",10);\r
-aWE("read",9,15,13);\r
-aWE("readm",15);\r
+aWE("rc2",14);\r
+aWE("re",12);\r
+aWE("reactivity",9);\r
+aWE("read",14,12);\r
+aWE("readm",14);\r
 aWE("realiz",8);\r
-aWE("recommend",9,15);\r
+aWE("recommend",14);\r
 aWE("record",2,7);\r
-aWE("rectangl",17);\r
-aWE("red",9,15,22);\r
-aWE("redhat",9,15);\r
-aWE("redhat8",15);\r
-aWE("redirection",16);\r
+aWE("rectangl",16);\r
+aWE("red",14,21);\r
+aWE("redhat",14);\r
+aWE("redhat8",14);\r
+aWE("redirection",15);\r
 aWE("redo",6);\r
-aWE("reduc",10);\r
-aWE("reduction",10);\r
-aWE("referenc",1,13,19,22);\r
-aWE("refin",10);\r
-aWE("refresh",23);\r
-aWE("refreshment",23);\r
+aWE("reduc",9);\r
+aWE("reduction",9);\r
+aWE("referenc",1,12,18,21);\r
+aWE("refin",9);\r
+aWE("refresh",22);\r
+aWE("refreshment",22);\r
 aWE("register",2);\r
-aWE("registry",11,23);\r
-aWE("reinstal",9,15);\r
-aWE("reinstall",9,15);\r
-aWE("reinstallation",15);\r
-aWE("relat",9,15,13,21);\r
-aWE("relativ",15);\r
-aWE("relevant",13);\r
-aWE("reliability",10);\r
-aWE("reload",18);\r
+aWE("registry",10,22);\r
+aWE("reinstal",14);\r
+aWE("reinstall",14);\r
+aWE("reinstallation",14);\r
+aWE("relat",14,12,20);\r
+aWE("relativ",14);\r
+aWE("relevant",12);\r
+aWE("reliability",9);\r
+aWE("reload",17);\r
 aWE("relocat",4);\r
 aWE("remain",0);\r
-aWE("remov",9,15,24);\r
-aWE("renam",24);\r
+aWE("remov",14,23);\r
+aWE("renam",23);\r
 aWE("rené",2);\r
-aWE("repeat",9);\r
-aWE("represent",0,8,9,10,11,12,21);\r
+aWE("represent",0,8,9,10,11,20);\r
 aWE("representation",5);\r
 aWE("reproduc",2);\r
-aWE("requir",9,15,10,14,18);\r
-aWE("requirement",0,10);\r
+aWE("requir",14,9,13,17);\r
+aWE("requirement",0,9,15);\r
 aWE("reserv",2);\r
-aWE("reset",9,15,17);\r
-aWE("resiz",17,19);\r
+aWE("reset",14,16);\r
+aWE("resiz",16,18);\r
 aWE("respectiv",2);\r
 aWE("respond",0);\r
 aWE("responsibility",2);\r
-aWE("responsibl",15);\r
-aWE("restor",19);\r
-aWE("result",8,18);\r
+aWE("responsibl",14);\r
+aWE("restor",18);\r
+aWE("result",8,17);\r
 aWE("retrieval",2);\r
-aWE("reus",0,10);\r
-aWE("reusabl",12);\r
-aWE("right",2,9,15,13,14,17,18,21,22,24);\r
-aWE("risk",10);\r
-aWE("robustnes",10);\r
+aWE("reus",0,9);\r
+aWE("reusabl",11);\r
+aWE("right",2,14,12,13,16,17,20,21,23);\r
+aWE("risk",9);\r
+aWE("robustnes",9);\r
 aWE("rol",0);\r
-aWE("root",9,15,24);\r
-aWE("rotation",17);\r
+aWE("root",14,23);\r
+aWE("rotation",16);\r
 aWE("ru",2);\r
-aWE("rul",15);\r
-aWE("run",0,9,15,16,20,23);\r
-aWE("runinstall",9,15);\r
-aWE("runsalom",16,20);\r
-aWE("runsalomewithport",20);\r
-aWE("s",0,2,9,15,13,17);\r
+aWE("rul",14);\r
+aWE("run",0,14,15,19,22);\r
+aWE("runinstall",14);\r
+aWE("runsalom",15,19);\r
+aWE("runsalomewithport",19);\r
+aWE("s",0,2,14,12,16);\r
 aWE("saclay",2);\r
-aWE("salom",0,1,3,5,4,6,8,9,15,10,11,12,13,14,16,17,18,19,20,21,22,23,24);\r
-aWE("salome_modulecatalog_serv",20);\r
-aWE("salome_root_dir",9,15);\r
-aWE("salome_src",15);\r
-aWE("salomebin",9);\r
-aWE("salomecsh",9);\r
-aWE("salomedoc",9);\r
-aWE("salomepro_src",9);\r
-aWE("salomesh",9);\r
-aWE("salomesourc",9);\r
-aWE("sam",13,18,20,23,24);\r
-aWE("sav",9,15,11,17,18,19);\r
-aWE("say",9,15);\r
+aWE("salom",0,1,3,5,4,6,8,14,9,10,11,12,13,15,16,17,18,19,20,21,22,23);\r
+aWE("salome_modulecatalog_serv",19);\r
+aWE("sam",12,17,19,22,23);\r
+aWE("sav",14,10,16,17,18);\r
+aWE("say",14);\r
 aWE("scal",0);\r
-aWE("schem",0,15);\r
+aWE("schem",0,14);\r
 aWE("scientific",0);\r
-aWE("script",0,9,15,16,20);\r
+aWE("script",0,14,15,19);\r
 aWE("scroll",7);\r
-aWE("se",7,9,15,14,18,20,22,24);\r
-aWE("search",1,9,15,14,18,21);\r
-aWE("second",9,15,24);\r
-aWE("section",9,15,17);\r
-aWE("select",3,5,7,9,15,14,18,19,21,24);\r
-aWE("selectall",17);\r
-aWE("send",9,15);\r
-aWE("sensitiv",4,17,22,24);\r
-aWE("separat",15);\r
-aWE("serv",0,20);\r
-aWE("server",0,16);\r
-aWE("servic",0,9,15,20);\r
-aWE("session",14,18,19,22,23,24);\r
-aWE("set",1,9,15,16,17,18,19,22,23,24);\r
-aWE("setting",9,15);\r
-aWE("sever",10);\r
-aWE("sh",9,15);\r
-aWE("shar",10);\r
-aWE("shell",9,15,11,16);\r
-aWE("shin",15);\r
-aWE("short",21);\r
-aWE("should",2,8,9,15,18,20);\r
-aWE("show",9,15,17,19,22);\r
+aWE("se",7,14,13,17,19,21,23);\r
+aWE("search",1,14,13,17,20);\r
+aWE("second",14,23);\r
+aWE("section",14,16);\r
+aWE("sed",14);\r
+aWE("select",3,5,7,14,13,17,18,20,23);\r
+aWE("selectall",16);\r
+aWE("send",14);\r
+aWE("sensitiv",4,16,21,23);\r
+aWE("separat",14);\r
+aWE("serv",0,19);\r
+aWE("server",0,15);\r
+aWE("servic",0,14,19);\r
+aWE("session",13,17,18,21,22,23);\r
+aWE("set",1,7,14,15,16,17,18,21,22,23);\r
+aWE("setting",14);\r
+aWE("sever",9);\r
+aWE("sh",14);\r
+aWE("shar",9);\r
+aWE("shell",14,10,15);\r
+aWE("short",14,20);\r
+aWE("should",2,8,14,17,19);\r
+aWE("show",14,16,18,21);\r
 aWE("shown",7);\r
-aWE("sid",15);\r
-aWE("signal",9,15);\r
-aWE("signatur",15);\r
-aWE("sigterm",9,15);\r
+aWE("sid",14);\r
+aWE("signal",14);\r
+aWE("signatur",14);\r
+aWE("sigterm",14);\r
 aWE("simpl",0);\r
-aWE("simplify",15);\r
+aWE("simplify",14);\r
 aWE("simulat",0);\r
-aWE("simulation",10,12);\r
+aWE("simulation",9,11);\r
 aWE("simultaneous",8);\r
-aWE("singl",15);\r
-aWE("sip",9,15);\r
-aWE("sipdir",9,15);\r
-aWE("sit",9,15);\r
+aWE("singl",14);\r
+aWE("sip",14);\r
+aWE("sipdir",14);\r
+aWE("sit",14);\r
 aWE("situation",0);\r
-aWE("siz",17,19);\r
-aWE("skip",9,15);\r
-aWE("small",18);\r
-aWE("smesh",0,4,12);\r
-aWE("so",0,9,15,19,21,22,24);\r
-aWE("softwar",0,2,9,10,12);\r
-aWE("solution",10);\r
-aWE("solver",12);\r
-aWE("somewher",9);\r
-aWE("sort",19,22);\r
-aWE("sourc",9,15,12,16);\r
-aWE("spac",9,15,17);\r
-aWE("special",9,15,14,16,18);\r
+aWE("siz",16,18);\r
+aWE("skip",14);\r
+aWE("small",17);\r
+aWE("smesh",0,4,11);\r
+aWE("so",0,14,15,18,20,21,23);\r
+aWE("softwar",0,2,9,11);\r
+aWE("solution",9);\r
+aWE("solver",11);\r
+aWE("sort",18,21);\r
+aWE("sort_path",14);\r
+aWE("sourc",14,11,15);\r
+aWE("spac",14,16);\r
+aWE("special",14,13,15,17);\r
 aWE("specifi",0);\r
-aWE("specific",0,4,10,12,21);\r
-aWE("specifical",10);\r
-aWE("specification",12);\r
-aWE("specify",18,20);\r
-aWE("spent",10);\r
-aWE("src",9,15);\r
-aWE("standard",3,9,15,11,14,17,18,20);\r
-aWE("start",8,9,15,20,23);\r
-aWE("stat",9,15);\r
+aWE("specific",0,4,9,11,15,20);\r
+aWE("specifical",9);\r
+aWE("specification",11);\r
+aWE("specify",17,19);\r
+aWE("spent",9);\r
+aWE("src",14);\r
+aWE("standard",3,14,10,13,16,17,19);\r
+aWE("start",8,14,19,22);\r
+aWE("stat",14);\r
 aWE("station",0);\r
-aWE("statu",9,15);\r
-aWE("step",9,15);\r
-aWE("still",9,15);\r
-aWE("stor",0,9,15,14,18,20);\r
+aWE("statu",14);\r
+aWE("step",14);\r
+aWE("still",14);\r
+aWE("stor",0,14,13,17,19);\r
 aWE("storag",2);\r
-aWE("str",15);\r
-aWE("strict",9);\r
-aWE("strong",9,15);\r
-aWE("structur",10,14,22,24);\r
-aWE("structural",10);\r
-aWE("studi",3,5,6,8,11,14,17,18);\r
-aWE("study",0,3,5,6,7,8,11,12,14,17,18,19,20,22,23,24);\r
+aWE("str",14);\r
+aWE("strong",14);\r
+aWE("structur",9,13,21,23);\r
+aWE("structural",9);\r
+aWE("studi",3,5,6,8,10,13,16,17);\r
+aWE("study",0,3,5,6,7,8,10,11,13,16,17,18,19,21,22,23);\r
 aWE("study1",3);\r
-aWE("sub",15,21);\r
+aWE("sub",14,20);\r
 aWE("subject",2);\r
-aWE("submenu",3,4,19);\r
-aWE("successful",9,15);\r
-aWE("sufficient",9);\r
-aWE("summariz",9,15);\r
-aWE("superstructur",9);\r
-aWE("superv",16);\r
-aWE("supervision",11,12,16,20);\r
-aWE("supplementary",22,23);\r
-aWE("suppli",9,15);\r
-aWE("support",9,15,20);\r
-aWE("supported_installation_mod",15);\r
-aWE("suppos",15);\r
-aWE("sur",9,15);\r
-aWE("swig",9,15);\r
-aWE("switch",5,9,15,11);\r
-aWE("symbolic",9);\r
-aWE("system",0,1,2,9,15,13,21);\r
-aWE("t",9,15,16,18,20);\r
-aWE("tab",21,23,24);\r
-aWE("tabl",9,15);\r
-aWE("tag",15);\r
-aWE("tak",0,9,15);\r
-aWE("taken",9,15,16);\r
-aWE("target",9,15);\r
-aWE("target_directory",15);\r
-aWE("target_paltform",15);\r
-aWE("targetdir",15);\r
-aWE("tcl",9,15);\r
-aWE("tclhom",9,15);\r
-aWE("tclsh8",9,15);\r
+aWE("submenu",3,4,18);\r
+aWE("successful",14);\r
+aWE("summariz",14);\r
+aWE("superv",15);\r
+aWE("supervision",10,11,15,19);\r
+aWE("supplementary",21,22);\r
+aWE("suppli",14);\r
+aWE("support",14,19);\r
+aWE("supported_installation_mod",14);\r
+aWE("suppos",14);\r
+aWE("sur",14);\r
+aWE("swig",14);\r
+aWE("switch",5,14,10);\r
+aWE("system",0,1,2,14,12,20);\r
+aWE("t",14,15,17,19);\r
+aWE("tab",20,22,23);\r
+aWE("tabl",14);\r
+aWE("tag",14);\r
+aWE("tak",0,14);\r
+aWE("taken",14,15);\r
+aWE("target",14);\r
+aWE("target_directory",14);\r
+aWE("target_paltform",14);\r
+aWE("targetdir",14);\r
+aWE("tcl",14);\r
+aWE("tclhom",14);\r
+aWE("tclsh8",14);\r
 aWE("technologi",0);\r
-aWE("technological",10);\r
+aWE("technological",9);\r
 aWE("technologiqu",2);\r
 aWE("technology",0);\r
-aWE("temp",9,15);\r
-aWE("temp_directory",15);\r
-aWE("temp_fold",15);\r
-aWE("tempdir",15);\r
-aWE("temporary",9,15);\r
-aWE("temporarydiskspac",15);\r
-aWE("term",2,10,13,21);\r
-aWE("terminal",9,16);\r
-aWE("test",0,15,20);\r
-aWE("text",9,15,13,21);\r
-aWE("them",0,9,15,12,16,23);\r
-aWE("therefor",9,15);\r
-aWE("this_is_",9,15);\r
-aWE("this_is_omninotify_1_2",9,15);\r
-aWE("this_is_omniorb_3_0_5",9,15);\r
-aWE("this_is_omniorbpy_1_5",9,15);\r
-aWE("thos",9,15,21);\r
-aWE("thre",9);\r
+aWE("temp",14);\r
+aWE("temp_directory",14);\r
+aWE("temp_fold",14);\r
+aWE("tempdir",14);\r
+aWE("temporary",14);\r
+aWE("temporarydiskspac",14);\r
+aWE("term",2,9,12,20);\r
+aWE("terminal",15);\r
+aWE("test",0,14,19);\r
+aWE("text",14,12,20);\r
+aWE("them",0,14,11,15,22);\r
+aWE("therefor",14);\r
+aWE("this_is_",14);\r
+aWE("this_is_omninotify_1_2",14);\r
+aWE("this_is_omniorb_3_0_5",14);\r
+aWE("this_is_omniorbpy_1_5",14);\r
+aWE("thos",14,20);\r
 aWE("thu",0);\r
 aWE("til",5);\r
-aWE("tim",0,7,9,15,10,19,20,23);\r
-aWE("titl",15);\r
-aWE("tmp",9,15);\r
-aWE("tmp_disk_spac",15);\r
-aWE("togeth",9,15);\r
-aWE("too",9);\r
-aWE("tool",0,11,17,20,23);\r
-aWE("toolbar",3,4,6,11,14,17,18);\r
-aWE("top",3,4,15,17);\r
-aWE("topic",1,13,21);\r
-aWE("topmost",9,15);\r
-aWE("total",9,15);\r
+aWE("tim",0,7,14,9,15,18,19,22);\r
+aWE("titl",14);\r
+aWE("tmp",14);\r
+aWE("tmp_disk_spac",14);\r
+aWE("togeth",14);\r
+aWE("tool",0,10,16,19,22);\r
+aWE("toolbar",3,4,6,10,13,16,17);\r
+aWE("top",3,4,14,16);\r
+aWE("topic",1,12,20);\r
+aWE("topmost",14);\r
+aWE("total",14);\r
 aWE("totality",0);\r
-aWE("tr",9,15);\r
+aWE("tr",14);\r
 aWE("trademark",2);\r
-aWE("train",10);\r
+aWE("train",9);\r
 aWE("transmit",2);\r
-aWE("tre",15,22,24);\r
-aWE("tri",9,15);\r
-aWE("trihedron",17,19);\r
-aWE("troubl",9);\r
-aWE("tru",15);\r
-aWE("try",7,9,15,18,20);\r
-aWE("try_nativ",15);\r
-aWE("try_preinstal",15);\r
-aWE("two",9,15,13,18,20);\r
-aWE("typ",9,15,20);\r
-aWE("typical",20);\r
+aWE("tre",14,21,23);\r
+aWE("tri",14);\r
+aWE("trihedron",16,18);\r
+aWE("tru",14);\r
+aWE("try",7,14,17,19);\r
+aWE("try_exist",14);\r
+aWE("try_nativ",14);\r
+aWE("try_preinstal",14);\r
+aWE("two",14,12,17,19);\r
+aWE("typ",14,19);\r
+aWE("typical",19);\r
 aWE("ultimat",0);\r
-aWE("understand",10);\r
-aWE("undo",6,19);\r
-aWE("undon",19);\r
-aWE("unfortunate",9,15);\r
+aWE("understand",9);\r
+aWE("undo",6,18);\r
+aWE("undon",18);\r
+aWE("unfortunare",14);\r
+aWE("unfortunate",14);\r
 aWE("unix",1);\r
-aWE("unload",14,18);\r
+aWE("unload",13,17);\r
 aWE("unmark",4);\r
-aWE("unnecessary",15);\r
-aWE("unselect",9,15);\r
-aWE("up",9,15,13,14,17,18,22,24);\r
-aWE("updat",9,17,18,20);\r
-aWE("upload",4,11,17);\r
-aWE("us",0,2,6,7,8,9,15,10,16,18,19,20,21,22,23,24);\r
-aWE("usag",15);\r
-aWE("usecas",11,17,19,24);\r
-aWE("user",7,20);\r
-aWE("usr",9,15);\r
+aWE("unnecessary",14);\r
+aWE("unselect",14);\r
+aWE("up",14,12,13,16,17,21,23);\r
+aWE("updat",16,17,19);\r
+aWE("upload",4,10,16);\r
+aWE("us",0,2,6,7,8,14,9,15,17,18,19,20,21,22,23);\r
+aWE("usag",14);\r
+aWE("usecas",10,16,18,23);\r
+aWE("user",7,19);\r
+aWE("usr",14);\r
 aWE("utiliti",1);\r
-aWE("v",9,15);\r
-aWE("valid",19);\r
+aWE("v",14);\r
+aWE("valid",18);\r
 aWE("validation",0);\r
-aWE("valu",15,19,22);\r
-aWE("variabl",9,15,16);\r
-aWE("variety",1,13);\r
-aWE("variou",15,12);\r
-aWE("ve",9,15);\r
-aWE("ver",9,15);\r
-aWE("version",9,15,20);\r
-aWE("very",9,15,10);\r
-aWE("view",3,4,7,9,15,11,13,17,19,21,23,24);\r
-aWE("viewer",3,11,17);\r
-aWE("visu",0,4,6,12);\r
-aWE("visualization",8,11,12,17);\r
-aWE("vtk",3,9,15,11,17,19);\r
-aWE("vtkhom",9,15);\r
-aWE("wait",9,15);\r
-aWE("want",9,15,13);\r
-aWE("warn",7,9,15);\r
-aWE("way",5,9,15,12,20,21);\r
-aWE("welcom",1,10);\r
-aWE("well",17);\r
-aWE("what",0,9,15,13,22,24);\r
-aWE("whichpython",15);\r
-aWE("whichswig",15);\r
+aWE("valu",14,18,21);\r
+aWE("variabl",14,15);\r
+aWE("varibl",14);\r
+aWE("variety",1,12);\r
+aWE("variou",14,11);\r
+aWE("ve",14);\r
+aWE("ver",14);\r
+aWE("version",14,19);\r
+aWE("very",14,9);\r
+aWE("view",3,4,7,14,10,12,16,18,20,22,23);\r
+aWE("viewer",3,10,16);\r
+aWE("visu",0,4,6,11);\r
+aWE("visualization",8,10,11,16);\r
+aWE("vtk",3,14,10,16,18);\r
+aWE("vtkhom",14);\r
+aWE("wait",14);\r
+aWE("want",14,12);\r
+aWE("warn",7,14);\r
+aWE("way",5,14,11,19,20);\r
+aWE("welcom",1,9);\r
+aWE("well",16);\r
+aWE("what",0,14,12,21,23);\r
 aWE("whil",0);\r
-aWE("whol",17,18,19);\r
+aWE("whol",16,17,18);\r
 aWE("wid",1);\r
-aWE("will",1,3,5,4,7,8,9,15,14,16,17,18,19,20,22,23,24);\r
-aWE("window",1,3,5,4,8,9,15,11,13,16,17,18,19,23,24);\r
-aWE("wish8",9,15);\r
-aWE("within",0,6,17,19,23);\r
-aWE("without",0,2,9,15,16,24);\r
-aWE("wizard",9,15);\r
-aWE("won",9,15);\r
-aWE("word",21);\r
-aWE("work",0,8,9,15,18,21);\r
-aWE("would",4,9,15,18,20,24);\r
-aWE("writ",2,18);\r
-aWE("written",18);\r
-aWE("wrong",9,15);\r
+aWE("will",1,3,5,4,7,8,14,13,15,16,17,18,19,21,22,23);\r
+aWE("window",1,3,5,4,8,14,10,12,15,16,17,18,22,23);\r
+aWE("wish8",14);\r
+aWE("within",0,6,16,18,22);\r
+aWE("without",0,2,14,15,23);\r
+aWE("wizard",14);\r
+aWE("won",14,15);\r
+aWE("word",20);\r
+aWE("work",0,8,14,17,20);\r
+aWE("would",4,14,17,19,23);\r
+aWE("writ",2,17);\r
+aWE("written",17);\r
+aWE("wrong",14);\r
 aWE("www",0);\r
-aWE("x",16);\r
-aWE("xml",15,16,20);\r
-aWE("xterm",16);\r
-aWE("y",9,15);\r
-aWE("year",10);\r
+aWE("x",14,15);\r
+aWE("xml",14,15,19);\r
+aWE("xterm",15);\r
+aWE("y",14);\r
+aWE("year",9);\r
 aWE("yes",7);\r
-aWE("yet",9,15);\r
-aWE("your",3,5,6,7,9,15,12,16,17,18,20,21,24);\r
+aWE("yet",14);\r
+aWE("your",3,5,6,7,14,11,15,16,17,19,20,23);\r
 aWE("zon",3);\r
-aWE("zoom",17);\r
+aWE("zoom",16);\r
 \r
 //-->\r
 </script>\r
-</script>\r
+</html>\r
index 7293273238487fdd1c8010495bbf3611114e54cd..77e0107f3ac8482101e3293c7d2433b92f707a89 100755 (executable)
@@ -1,3 +1,4 @@
+//     WebHelp 5.10.001\r
 var gIEA = new Array();\r
 function aGE(sName, sDef)\r
 {\r
index 9fbefcb8f67858808ea2d97b5458387e6a931039..9d256b1a86a862d0df36aee9e3077d953f65827a 100755 (executable)
@@ -1,6 +1,8 @@
 <html>\r
 <head>\r
-<META HTTP-EQUIV="content-type" CONTENT="text/html; charset=iso-8859-1">\r
+\r
+<meta name="generator" content="RoboHelp by eHelp Corporation   www.ehelp.com">\r
+<meta name="description" content="WebHelp 5.50">\r
 </head>\r
 <body>\r
 <script language="javascript" src="whgdata.js"></script>\r
index d00c260638e4c0e9cd62acd18f64e1e48bc12b72..dc5a67786450d8e50199605d2c9286a51f5e06c5 100755 (executable)
@@ -1,6 +1,8 @@
 <html>\r
 <head>\r
-<META HTTP-EQUIV="content-type" CONTENT="text/html; charset=iso-8859-1">\r
+\r
+<meta name="generator" content="RoboHelp by eHelp Corporation   www.ehelp.com">\r
+<meta name="description" content="WebHelp 5.50">\r
 </head>\r
 <body>\r
 <script language="javascript" src="whglo.js"></script>\r
index ded3d57918621b4006b612a47c7c9a329c25f829..e0519afcb8137a50ff418f9f806e8ec5dda207e9 100755 (executable)
@@ -1,3 +1,4 @@
+//     WebHelp 5.10.001\r
 var gaFileMapping = new Array();\r
 function fileMapping(sBK, sEK, sFileName, nNum)\r
 {\r
index c8c2a05fda490f4e98b6a571b4eaa2298cfc0d15..9f0eb15edc13f4fcc606d23e7fe41ff9a66d2ac6 100755 (executable)
@@ -1,3 +1,4 @@
+//     WebHelp 5.10.001\r
 // const strings\r
 var gIEA = new Array();\r
 function aIE()\r
index c0aa1758e75515f960bf7b6b418c1129556e7eae..0a0deedd094e90290616665493c3eba1ab41fbbb 100755 (executable)
@@ -1,13 +1,15 @@
 <html>\r
 <head>\r
-<META HTTP-EQUIV="content-type" CONTENT="text/html; charset=iso-8859-1">\r
+\r
+<meta name="generator" content="RoboHelp by eHelp Corporation   www.ehelp.com">\r
+<meta name="description" content="WebHelp 5.50">\r
 </head>\r
 <body>\r
 <script language="javascript" src="whidx.js"></script>\r
 <script language="javascript">\r
 <!--\r
 \r
--->\r
+//-->\r
 </script>\r
 </body>\r
-</html
\ No newline at end of file
+</html>
\ No newline at end of file
index ded3d57918621b4006b612a47c7c9a329c25f829..e0519afcb8137a50ff418f9f806e8ec5dda207e9 100755 (executable)
@@ -1,3 +1,4 @@
+//     WebHelp 5.10.001\r
 var gaFileMapping = new Array();\r
 function fileMapping(sBK, sEK, sFileName, nNum)\r
 {\r
index 64bcff9209a053b30977cadab613fdd15e64be77..d5428a7de68aad1a6d9235d19f04530e4bbd8956 100755 (executable)
@@ -1,3 +1,4 @@
+//     WebHelp 5.10.001\r
 var gTEA = new Array();\r
 function aTE()\r
 {\r
@@ -34,6 +35,11 @@ function tocEntry(fn_arguments)
                if (fn_arguments.length > 3)\r
                {\r
                        this.sRefURL = fn_arguments[3];\r
+                       if (this.nType == 4)\r
+                       {\r
+                               if(this.sRefURL.lastIndexOf("/")!=this.sRefURL.length-1)\r
+                                       this.sRefURL+="/";\r
+                       }\r
                        if (fn_arguments.length > 4)\r
                        {\r
                                this.sItemURL = fn_arguments[4];\r
index a03503327a6dc13e58986f750ae5f5df0b8d125d..d89a6fafd1a5529dfeafb062fe7a2a941ab4108d 100755 (executable)
@@ -1,38 +1,40 @@
 <html>\r
 <head>\r
-<META HTTP-EQUIV="content-type" CONTENT="text/html; charset=iso-8859-1">\r
+\r
+<meta name="generator" content="RoboHelp by eHelp Corporation   www.ehelp.com">\r
+<meta name="description" content="WebHelp 5.50">\r
 </head>\r
 <body>\r
-<script LANGUAGE="JavaScript" SRC="whtdata.js"></script>\r
+<script language="javascript" src="whtdata.js"></script>\r
 <script language="javascript">\r
 <!--\r
- aTE(2,0,"Welcome to SALOME","files/introduction.htm");\r
+ aTE(2,0,"Welcome to SALOME","kernel/introduction.htm");\r
  aTE(1,3,"Using this reference manual");\r
-   aTE(2,0,"About SALOME help system","files/about_salome_pro_help_system.htm");\r
-   aTE(2,0,"Navigating topics","files/navigating_topics.htm");\r
-   aTE(2,0,"Using left-hand tabs","files/using_left-hand_tabs.htm");\r
+   aTE(2,0,"About SALOME help system","kernel/about_salome_pro_help_system.htm");\r
+   aTE(2,0,"Navigating topics","kernel/navigating_topics.htm");\r
+   aTE(2,0,"Using left-hand tabs","kernel/using_left-hand_tabs.htm");\r
  aTE(1,4,"About SALOME");\r
-   aTE(2,0,"Introduction to SALOME","files/introduction_to_salome_pro.htm");\r
-   aTE(2,0,"About SALOME architecture","files/about_salome_pro_architecture.htm");\r
-   aTE(2,0,"Installing SALOME","files/readme.html");\r
-   aTE(2,0,"Running SALOME","files/running_salome_pro.htm");\r
+   aTE(2,0,"Introduction to SALOME","kernel/introduction_to_salome_pro.htm");\r
+   aTE(2,0,"About SALOME architecture","kernel/about_salome_pro_architecture.htm");\r
+   aTE(2,0,"Installing SALOME","kernel/readme.html");\r
+   aTE(2,0,"Running SALOME","kernel/running_salome_pro.htm");\r
  aTE(1,16,"IAPP module");\r
-   aTE(2,0,"Introduction to IAPP","files/introduction_to_iapp.htm");\r
-   aTE(2,0,"Getting started","files/getting_started2.htm");\r
-   aTE(2,0,"SALOME desktop","files/salome_pro_desktop.htm");\r
-   aTE(2,0,"Displaying/hiding toolbars","files/displaying_hiding_toolbars.htm");\r
+   aTE(2,0,"Introduction to IAPP","kernel/introduction_to_iapp.htm");\r
+   aTE(2,0,"Getting started","kernel/getting_started2.htm");\r
+   aTE(2,0,"SALOME desktop","kernel/salome_pro_desktop.htm");\r
+   aTE(2,0,"Displaying/hiding toolbars","kernel/displaying_hiding_toolbars.htm");\r
    aTE(1,6,"Study management");\r
-     aTE(2,0,"Creating a new study","files/creating_a_new_study.htm");\r
-     aTE(2,0,"Opening studies","files/opening_studies.htm");\r
-     aTE(2,0,"Saving and closing studies","files/saving_a_study.htm");\r
-     aTE(2,0,"Editing studies","files/editing_studies.htm");\r
-     aTE(2,0,"Displaying studies","files/displaying_studies.htm");\r
-     aTE(2,0,"Getting and setting study properties","files/getting_properties_of_the_study.htm");\r
-   aTE(2,0,"Using Object Browser","files/using_object_browser.htm");\r
-   aTE(2,0,"Using UseCase Browser","files/using_usecase_browser.htm");\r
-   aTE(2,0,"Using Registry tool","files/using_registry.htm");\r
-   aTE(2,0,"Using Catalog Generator","files/using_catalog_generator.htm");\r
-   aTE(2,0,"Setting preferences","files/setting_preferences.htm");\r
+     aTE(2,0,"Creating a new study","kernel/creating_a_new_study.htm");\r
+     aTE(2,0,"Opening studies","kernel/opening_studies.htm");\r
+     aTE(2,0,"Saving and closing studies","kernel/saving_a_study.htm");\r
+     aTE(2,0,"Editing studies","kernel/editing_studies.htm");\r
+     aTE(2,0,"Displaying studies","kernel/displaying_studies.htm");\r
+     aTE(2,0,"Getting and setting study properties","kernel/getting_properties_of_the_study.htm");\r
+   aTE(2,0,"Using Object Browser","kernel/using_object_browser.htm");\r
+   aTE(2,0,"Using UseCase Browser","kernel/using_usecase_browser.htm");\r
+   aTE(2,0,"Using Registry tool","kernel/using_registry.htm");\r
+   aTE(2,0,"Using Catalog Generator","kernel/using_catalog_generator.htm");\r
+   aTE(2,0,"Setting preferences","kernel/setting_preferences.htm");\r
 \r
 //-->\r
 </script>\r
index 5f8c14e004ac6930baff8548df51be4a274c80c0..54e0cbf2675c3d503ef1423f7b68ba90a78fbf87 100755 (executable)
@@ -1,9 +1,11 @@
 <html>\r
 <head>\r
-<META HTTP-EQUIV="content-type" CONTENT="text/html; charset=iso-8859-1">\r
+\r
+<meta name="generator" content="RoboHelp by eHelp Corporation   www.ehelp.com">\r
+<meta name="description" content="WebHelp 5.50">\r
 </head>\r
 <body>\r
-<script LANGUAGE="JavaScript" SRC="whtoc.js"></script>\r
+<script language="javascript" src="whtoc.js"></script>\r
 <script language="javascript">\r
 <!--\r
   setRoot("whtdata0.htm");\r
index 145605087d8416bf13814811a80bac4cdb5e88c7..163d8cc9fccffe102f3668437deb61debc84f163 100755 (executable)
@@ -1,3 +1,4 @@
+//     WebHelp 5.10.001\r
 // const strings\r
 var gaProj = new Array();\r
 var gsRoot = "";\r
@@ -14,6 +15,8 @@ function aPE(sProjPath, sRootPath)
 \r
 function tocProjEntry(sProjPath, sRootPath) \r
 {\r
+       if(sProjPath.lastIndexOf("/")!=sProjPath.length-1)\r
+               sProjPath+="/"; \r
        this.sPPath = sProjPath;\r
        this.sRPath = sRootPath;\r
 }\r
index 300d23be812dd825ec58dd486fff1d5069526bb3..86d8e63dbafe7e5d038dc7b66ab0930a12c8706f 100755 (executable)
@@ -1,9 +1,9 @@
 <html>\r
 <head>\r
 <title>Search Result</title>\r
-<meta http-equiv="content-type" content="text/html; charset=iso-8859-1">\r
+\r
 <meta name="generator" content="RoboHelp by eHelp Corporation   www.ehelp.com">\r
-<meta name "description" content="WebHelp 2002">\r
+<meta name="description" content="WebHelp 5.50">\r
 <base target="bsscright">\r
 <script language="javascript" src="whver.js"></script>\r
 <script language="javascript1.2" src="whmozemu.js"></script>\r
index ec6c521f9fe427364a9fdcd7c1de031ddc3a3e8a..236beec73745da25df5bf9aa542ef7f3eb13f00f 100755 (executable)
@@ -1,9 +1,9 @@
 <html>\r
 <head>\r
 <title>Search Frame</TITLE>\r
-<meta http-equiv="content-type" content="text/html; charset=iso-8859-1">\r
+\r
 <meta name="generator" content="RoboHelp by eHelp Corporation   www.ehelp.com">\r
-<meta name "description" content="WebHelp 2002">\r
+<meta name="description" content="WebHelp 5.50">\r
 </head>\r
 <script language="javascript" src="whver.js"></script>\r
 <script language="javascript1.2" src="whproxy.js"></script>\r
index e40b10b1f0d8a01462dc58bd1b39e65fe351ee17..f592a738df1874adf8ea78fbe08266987935ea4d 100755 (executable)
@@ -1,9 +1,9 @@
 <html>\r
 <head>\r
 <title>Search Form</title>\r
-<meta http-equiv="content-type" content="text/html; charset=iso-8859-1">\r
+\r
 <meta name="generator" content="RoboHelp by eHelp Corporation   www.ehelp.com">\r
-<meta name "description" content="WebHelp 2002">\r
+<meta name="description" content="WebHelp 5.50">\r
 </head>\r
 <style>\r
 <!--\r
index a30564d416176817fee8cf833f37df86e7a9749b..167acc45915b05c012cd31f07c821f7b6471945f 100755 (executable)
@@ -1,3 +1,4 @@
+//     WebHelp 5.10.003\r
 var gsSK2=null;\r
 var gsSK=null;\r
 var gsFtsBreakChars="\t\r\n\"\\ .,!@#$%^&*()~'`:;<>?/{}[]|+-=\x85\x92\x93\x94\x95\x96\x97\x99\xA9\xAE\xB7";\r
@@ -35,6 +36,7 @@ var goErrFont=null;
 var goHoverFont=null;\r
 var gsABgColor="#cccccc";\r
 var gbWhFHost=false;\r
+var gbFirst=false;\r
 \r
 function setBackground(sBgImage)\r
 {\r
@@ -90,6 +92,26 @@ function addFtsInfo(sPPath,sDPath,sFtsFile)
        gaData[gaData.length]=new ftsInfo(sPPath,sDPath,sFtsFile);\r
 }\r
 \r
+function onLoadXMLError()\r
+{\r
+       if(gnLoadFts==1)\r
+       {\r
+               var aFCD=new Array();\r
+               var aFTCD=new Array();\r
+               ftsReady(aFCD,aFTCD);\r
+       }\r
+       else if(gnLoadFts==3)\r
+       {\r
+               var aTopics=new Array();\r
+               putFtsTData(aTopics);\r
+       }\r
+       else if(gnLoadFts==2)\r
+       {\r
+               putFtsWData(aFtsContents);\r
+               var aFtsContents=new Array();\r
+       }\r
+}\r
+\r
 function putDataXML(xmlDoc,sDocPath)\r
 {\r
        if(gnLoadFts==1)\r
@@ -267,7 +289,7 @@ function loadFts()
                                var sLangId=aProj[0].sLangId;\r
                                for(var i=0;i<aProj.length;i++)\r
                                {\r
-                                       if(aProj[i].sFts!=null&&aProj[i].sFts!=""&&aProj[i].sLangId==sLangId)\r
+                                       if(aProj[i].sFts&&aProj[i].sLangId==sLangId)\r
                                        {\r
                                                addFtsInfo(aProj[i].sPPath,aProj[i].sDPath,aProj[i].sFts);\r
                                        }\r
@@ -312,11 +334,14 @@ function loadData2(sFile)
 function findFTSKey()\r
 {\r
        gaTI=new Array();\r
-       gnCurrentOp=0;\r
+       gnCurrentOp=1;\r
        gbNot=false;\r
        displayMsg(gsSearchMsg);\r
        if(gsSK!="")\r
+       {\r
+               gbFirst=true;\r
                findOneKey();\r
+       }\r
 }\r
 \r
 function findOneKey()\r
@@ -360,7 +385,6 @@ function findOneKey()
                        return;\r
                }\r
                findOneKey();\r
-               return;\r
        }\r
        else{\r
                displayTopics();\r
@@ -370,6 +394,8 @@ function findOneKey()
 \r
 function checkAgain()\r
 {\r
+       gsCheckKey = "";\r
+       gnIndexNum = 0;\r
        gsSK=gsSK2;\r
        gsSK2=null;\r
        if(gsSK!=null)\r
@@ -381,7 +407,7 @@ function displayTopics()
        var sHTML="";\r
        var sLine="";\r
        for(var i=0;i<gaTI.length;i++){\r
-               sLine+="<dt><nobr><a href='"+_textToHtml(gaTI[i].sTopicURL)+"'>"+_textToHtml(gaTI[i].sTopicTitle)+"</a></nobr></dt>";\r
+               sLine+="<dt><nobr><a href='"+gaTI[i].sTopicURL+"'>"+_textToHtml(gaTI[i].sTopicTitle)+"</a></nobr></dt>";\r
                if(i>>4<<4==i)\r
                {\r
                        sHTML+=sLine;\r
@@ -472,7 +498,10 @@ function ftsFindKeyword()
                                aTI=mergeTopics(aTI,aTIPart);\r
                }\r
                if(mergewithPreviousResult(aTI))\r
+               {\r
+                       gbFirst=false;\r
                        findOneKey();\r
+               }\r
                else\r
                        checkAgain();\r
        }\r
@@ -483,7 +512,7 @@ function mergewithPreviousResult(aTI)
        if(aTI!=null&&aTI.length!=0)\r
        {\r
                var nNumTopics=aTI.length;\r
-               if(gnCurrentOp==0){\r
+               if(gnCurrentOp==0||gbFirst){\r
                        if(gbNot){\r
                                displayMsg(gsHelpCannotSearch);\r
                                return false;\r
@@ -836,7 +865,7 @@ function GetStem(szWord)
        var csStem="";\r
        for(var iStem=0;iStem<aStems.length;iStem++){\r
 \r
-               if(aStems[iStem].length>=szWord.length-1)       break;\r
+               if(aStems[iStem].length>=szWord.length-1)       continue;\r
                nStemPos=szWord.lastIndexOf(aStems[iStem]);\r
                if(nStemPos>0){\r
                        var cssub=szWord.substring(nStemPos);\r
index 075311ef45907a36a63dd028fbef8c2bdc0a34b9..323fe8e91bf33c105ab281fe476935f42e0b1a85 100755 (executable)
@@ -1,3 +1,4 @@
+//     WebHelp 5.10.001\r
 var gfunLookUp;\r
 var gbInputEnable;\r
 var gfunInit;\r
index 0576afcb82c625fd45e5eda0d8e53c5ad9de7509..2040f336f4858d299ffced5d6c649c59c8f80320 100755 (executable)
@@ -1,3 +1,4 @@
+//     WebHelp 5.10.001\r
 // this value should be identical to the value used in whproxy.js\r
 window.whname = "wh_stub";\r
 \r
index 8d30b1f23a3fda046ac97f9a5ea26aa719793b6a..476ec2d66c9b55b8d99db7a9a3aeb08ee0351b91 100755 (executable)
@@ -1,9 +1,9 @@
 <html>\r
 <head>\r
 <title>Glossary Term</title>\r
-<meta http-equiv="content-type" content="text/html; charset=iso-8859-1">\r
+\r
 <meta name="generator" content="RoboHelp by eHelp Corporation   www.ehelp.com">\r
-<meta name "description" content="WebHelp 2002">\r
+<meta name="description" content="WebHelp 5.50">\r
 <script language="javascript" src="whver.js"></script>\r
 <script language="javascript1.2" src="whmozemu.js"></script>\r
 <script language="javascript1.2" src="whutils.js"></script>\r
index 0bd086401bfd6730600f14d71e3985c0b7b634bf..c697333e27cccd25b068db42635e30f04c4cd280 100755 (executable)
@@ -1,9 +1,9 @@
 <html>\r
 <head>\r
 <title>Search Words List</title>\r
-<meta http-equiv="content-type" content="text/html; charset=iso-8859-1">\r
+\r
 <meta name="generator" content="RoboHelp by eHelp Corporation   www.ehelp.com">\r
-<meta name "description" content="WebHelp 2002">\r
+<meta name="description" content="WebHelp 5.50">\r
 <base target="bsscright">\r
 <style>\r
 <!--\r
@@ -30,17 +30,17 @@ A:hover {color:Navy; } A:hover {font-family:Tahoma; } A:hover {font-size:8pt; }
 -->\r
 </style>\r
 </head>\r
-<body marginheight="0"  marginwidth="0">\r
-<p class="ftsbody">\r
+<body marginheight="0"  marginwidth="0" bgproperties="fixed">\r
+<p class="ftsbody" >\r
 \r
 \r
-<nobr><a name="bm_{"></a><a name="subkey_{N"></a>_numpy <a href="../files/readme.html"><b>1</b></a> <a href="../files/installing_salome_pro.htm"><b>2</b></a> </nobr><br><nobr>_omnipymodule <a href="../files/readme.html"><b>1</b></a> <a href="../files/installing_salome_pro.htm"><b>2</b></a> </nobr><br><nobr>0_glibc2 <a href="../files/readme.html"><b>1</b></a> <a href="../files/installing_salome_pro.htm"><b>2</b></a> </nobr><br><a href="../files/readme.html"><b>2c</b></a> <br><nobr>3d <a href="../files/introduction_to_salome_pro.htm"><b>1</b></a> <a href="../files/salome_pro_desktop.htm"><b>2</b></a> </nobr><br>\r
+<a name="bm_{"></a><a name="subkey_{N"></a><a href="../kernel/readme.html"><b>_numpy</b></a> <br><a name="bms_{O"></a><a name="subkey_{O"></a><a href="../kernel/readme.html"><b>_omnipymodule</b></a> <br><a name="bms_{{"></a><a name="subkey_{{"></a><a href="../kernel/readme.html"><b>0_glibc2</b></a> <br><nobr><a name="bms_{D"></a><a name="subkey_{D"></a>3d <a href="../kernel/introduction_to_salome_pro.htm"><b>1</b></a> <a href="../kernel/salome_pro_desktop.htm"><b>2</b></a> </nobr><br>\r
 <br><br>\r
-<nobr><a name="bm_A"></a><a name="subkey_AB"></a>able <a href="../files/readme.html"><b>1</b></a> <a href="../files/installing_salome_pro.htm"><b>2</b></a> <a href="../files/about_salome_pro_architecture.htm"><b>3</b></a> </nobr><br><nobr>abort <a href="../files/readme.html"><b>1</b></a> <a href="../files/installing_salome_pro.htm"><b>2</b></a> </nobr><br><nobr>above <a href="../files/readme.html"><b>1</b></a> <a href="../files/installing_salome_pro.htm"><b>2</b></a> <a href="../files/getting_properties_of_the_study.htm"><b>3</b></a> </nobr><br><a href="../files/installing_salome_pro.htm"><b>absolute</b></a> <br><nobr><a name="bms_AC"></a><a name="subkey_AC"></a>access <a href="../files/about_salome_pro_architecture.htm"><b>1</b></a> <a href="../files/using_usecase_browser.htm"><b>2</b></a> <a href="../files/using_object_browser.htm"><b>3</b></a> <a href="../files/salome_pro_desktop.htm"><b>4</b></a> </nobr><br><nobr>accidentally <a href="../files/readme.html"><b>1</b></a> <a href="../files/installing_salome_pro.htm"><b>2</b></a> </nobr><br><a href="../files/copyright_notice.htm"><b>accordance</b></a> <br><nobr>according <a href="../files/readme.html"><b>1</b></a> <a href="../files/installing_salome_pro.htm"><b>2</b></a> <a href="../files/using_object_browser.htm"><b>3</b></a> <a href="../files/using_left-hand_tabs.htm"><b>4</b></a> <a href="../files/salome_pro_desktop.htm"><b>5</b></a> </nobr><br><nobr>accordingly <a href="../files/readme.html"><b>1</b></a> <a href="../files/installing_salome_pro.htm"><b>2</b></a> </nobr><br><nobr>account <a href="../files/readme.html"><b>1</b></a> <a href="../files/installing_salome_pro.htm"><b>2</b></a> </nobr><br><a href="../files/about_salome_pro_architecture.htm"><b>achieved</b></a> <br><a href="../files/about_salome_pro_architecture.htm"><b>achieves</b></a> <br><a href="../files/about_salome_pro_help_system.htm"><b>acquainted</b></a> <br><a href="../files/setting_preferences.htm"><b>actions</b></a> <br><nobr>activated <a href="../files/displaying_studies.htm"><b>1</b></a> <a href="../files/creating_a_new_study.htm"><b>2</b></a> </nobr><br><a href="../files/displaying_studies.htm"><b>activation</b></a> <br><a href="../files/creating_a_new_study.htm"><b>active</b></a> <br><a href="../files/installing_salome_pro.htm"><b>actually</b></a> <br><a name="bms_AD"></a><a name="subkey_AD"></a><a href="../files/about_salome_pro_architecture.htm"><b>adapted</b></a> <br><nobr>add <a href="../files/readme.html"><b>1</b></a> <a href="../files/installing_salome_pro.htm"><b>2</b></a> <a href="../files/displaying_hiding_toolbars.htm"><b>3</b></a> <a href="../files/using_usecase_browser.htm"><b>4</b></a> <a href="../files/using_catalog_generator.htm"><b>5</b></a> <a href="../files/running_salome_pro.htm"><b>6</b></a> </nobr><br><nobr>added <a href="../files/readme.html"><b>1</b></a> <a href="../files/installing_salome_pro.htm"><b>2</b></a> </nobr><br><a href="../files/using_catalog_generator.htm"><b>adding</b></a> <br><a href="../files/creating_a_new_study.htm"><b>addition</b></a> <br><nobr>additional <a href="../files/readme.html"><b>1</b></a> <a href="../files/introduction_to_iapp.htm"><b>2</b></a> <a href="../files/installing_salome_pro.htm"><b>3</b></a> <a href="../files/editing_studies.htm"><b>4</b></a> <a href="../files/displaying_hiding_toolbars.htm"><b>5</b></a> <a href="../files/about_salome_pro_architecture.htm"><b>6</b></a> <a href="../files/using_object_browser.htm"><b>7</b></a> </nobr><br><a href="../files/using_usecase_browser.htm"><b>adds</b></a> <br><nobr>advanced <a href="../files/readme.html"><b>1</b></a> <a href="../files/using_catalog_generator.htm"><b>2</b></a> </nobr><br><a name="bms_AF"></a><a name="subkey_AF"></a><a href="../files/about_salome_pro_architecture.htm"><b>affecting</b></a> <br><nobr><a name="bms_AG"></a><a name="subkey_AG"></a>again <a href="../files/readme.html"><b>1</b></a> <a href="../files/navigating_topics.htm"><b>2</b></a> <a href="../files/installing_salome_pro.htm"><b>3</b></a> <a href="../files/saving_a_study.htm"><b>4</b></a> </nobr><br><nobr><a name="bms_AL"></a><a name="subkey_AL"></a>algorithm <a href="../files/readme.html"><b>1</b></a> <a href="../files/installing_salome_pro.htm"><b>2</b></a> </nobr><br><nobr>algorithms <a href="../files/introduction_to_salome_pro.htm"><b>1</b></a> <a href="../files/about_salome_pro_architecture.htm"><b>2</b></a> </nobr><br><nobr>allowing <a href="../files/editing_studies.htm"><b>1</b></a> <a href="../files/displaying_studies.htm"><b>2</b></a> <a href="../files/using_usecase_browser.htm"><b>3</b></a> <a href="../files/setting_preferences.htm"><b>4</b></a> <a href="../files/salome_pro_desktop.htm"><b>5</b></a> <a href="../files/running_salome_pro.htm"><b>6</b></a> </nobr><br><nobr>allows <a href="../files/readme.html"><b>1</b></a> <a href="../files/introduction_to_salome_pro.htm"><b>2</b></a> <a href="../files/installing_salome_pro.htm"><b>3</b></a> <a href="../files/about_salome_pro_architecture.htm"><b>4</b></a> <a href="../files/using_registry.htm"><b>5</b></a> <a href="../files/using_catalog_generator.htm"><b>6</b></a> <a href="../files/setting_preferences.htm"><b>7</b></a> <a href="../files/saving_a_study.htm"><b>8</b></a> </nobr><br><a href="../files/introduction_to_salome_pro.htm"><b>along</b></a> <br><a href="../files/using_catalog_generator.htm"><b>alongside</b></a> <br><nobr>already <a href="../files/readme.html"><b>1</b></a> <a href="../files/installing_salome_pro.htm"><b>2</b></a> </nobr><br><a href="../files/installing_salome_pro.htm"><b>always</b></a> <br><nobr><a name="bms_AM"></a><a name="subkey_AM"></a>amount <a href="../files/readme.html"><b>1</b></a> <a href="../files/installing_salome_pro.htm"><b>2</b></a> </nobr><br><nobr><a name="bms_AN"></a><a name="subkey_AN"></a>annoying <a href="../files/readme.html"><b>1</b></a> <a href="../files/installing_salome_pro.htm"><b>2</b></a> </nobr><br><nobr>another <a href="../files/readme.html"><b>1</b></a> <a href="../files/installing_salome_pro.htm"><b>2</b></a> <a href="../files/about_salome_pro_architecture.htm"><b>3</b></a> <a href="../files/using_usecase_browser.htm"><b>4</b></a> <a href="../files/saving_a_study.htm"><b>5</b></a> </nobr><br><nobr>answer <a href="../files/readme.html"><b>1</b></a> <a href="../files/installing_salome_pro.htm"><b>2</b></a> </nobr><br><nobr>any <a href="../files/readme.html"><b>1</b></a> <a href="../files/navigating_topics.htm"><b>2</b></a> <a href="../files/installing_salome_pro.htm"><b>3</b></a> <a href="../files/getting_properties_of_the_study.htm"><b>4</b></a> <a href="../files/displaying_hiding_toolbars.htm"><b>5</b></a> <a href="../files/copyright_notice.htm"><b>6</b></a> <a href="../files/about_salome_pro_help_system.htm"><b>7</b></a> <a href="../files/about_salome_pro_architecture.htm"><b>8</b></a> <a href="../files/using_usecase_browser.htm"><b>9</b></a> <a href="../files/running_salome_pro.htm"><b>10</b></a> </nobr><br><nobr>anything <a href="../files/readme.html"><b>1</b></a> <a href="../files/installing_salome_pro.htm"><b>2</b></a> </nobr><br><nobr><a name="bms_AP"></a><a name="subkey_AP"></a>appear <a href="../files/readme.html"><b>1</b></a> <a href="../files/getting_started2.htm"><b>2</b></a> <a href="../files/getting_properties_of_the_study.htm"><b>3</b></a> <a href="../files/copyright_notice.htm"><b>4</b></a> <a href="../files/using_registry.htm"><b>5</b></a> <a href="../files/using_catalog_generator.htm"><b>6</b></a> <a href="../files/setting_preferences.htm"><b>7</b></a> </nobr><br><a href="../files/readme.html"><b>appears</b></a> <br><a href="../files/about_salome_pro_help_system.htm"><b>applets</b></a> <br><nobr>application <a href="../files/introduction_to_iapp.htm"><b>1</b></a> <a href="../files/introduction.htm"><b>2</b></a> <a href="../files/getting_started2.htm"><b>3</b></a> <a href="../files/displaying_hiding_toolbars.htm"><b>4</b></a> <a href="../files/about_salome_pro_architecture.htm"><b>5</b></a> <a href="../files/using_object_browser.htm"><b>6</b></a> <a href="../files/using_catalog_generator.htm"><b>7</b></a> <a href="../files/setting_preferences.htm"><b>8</b></a> <a href="../files/saving_a_study.htm"><b>9</b></a> <a href="../files/salome_pro_desktop.htm"><b>10</b></a> <a href="../files/running_salome_pro.htm"><b>11</b></a> </nobr><br><nobr>applications <a href="../files/introduction_to_salome_pro.htm"><b>1</b></a> <a href="../files/about_salome_pro_architecture.htm"><b>2</b></a> <a href="../files/running_salome_pro.htm"><b>3</b></a> </nobr><br><nobr>applicative <a href="../files/introduction_to_iapp.htm"><b>1</b></a> <a href="../files/setting_preferences.htm"><b>2</b></a> </nobr><br><a href="../files/using_object_browser.htm"><b>apply</b></a> <br><nobr>approach <a href="../files/readme.html"><b>1</b></a> <a href="../files/introduction_to_salome_pro.htm"><b>2</b></a> <a href="../files/installing_salome_pro.htm"><b>3</b></a> </nobr><br><a href="../files/readme.html"><b>appropriate</b></a> <br><nobr>approximate <a href="../files/readme.html"><b>1</b></a> <a href="../files/installing_salome_pro.htm"><b>2</b></a> </nobr><br><a name="bms_AR"></a><a name="subkey_AR"></a><a href="../files/readme.html"><b>ar</b></a> <br><a href="../files/about_salome_pro_architecture.htm"><b>architecture</b></a> <br><a href="../files/about_salome_pro_architecture.htm"><b>architectures</b></a> <br><a href="../files/installing_salome_pro.htm"><b>archives</b></a> <br><a href="../files/salome_pro_desktop.htm"><b>area</b></a> <br><a href="../files/readme.html"><b>argument</b></a> <br><a href="../files/readme.html"><b>arguments</b></a> <br><a href="../files/copyright_notice.htm"><b>ariane</b></a> <br><a href="../files/using_object_browser.htm"><b>arrow</b></a> <br><a name="bms_AS"></a><a name="subkey_AS"></a><a href="../files/using_object_browser.htm"><b>ascending</b></a> <br><nobr>ascii <a href="../files/setting_preferences.htm"><b>1</b></a> <a href="../files/saving_a_study.htm"><b>2</b></a> </nobr><br><nobr>ask <a href="../files/readme.html"><b>1</b></a> <a href="../files/installing_salome_pro.htm"><b>2</b></a> </nobr><br><nobr>associated <a href="../files/opening_studies.htm"><b>1</b></a> <a href="../files/using_usecase_browser.htm"><b>2</b></a> <a href="../files/using_object_browser.htm"><b>3</b></a> <a href="../files/using_left-hand_tabs.htm"><b>4</b></a> </nobr><br><a name="bms_AT"></a><a name="subkey_AT"></a><a href="../files/using_object_browser.htm"><b>attribute</b></a> <br><a href="../files/using_object_browser.htm"><b>attributes</b></a> <br><nobr><a name="bms_AU"></a><a name="subkey_AU"></a>author <a href="../files/getting_properties_of_the_study.htm"><b>1</b></a> <a href="../files/using_catalog_generator.htm"><b>2</b></a> </nobr><br><nobr>auto <a href="../files/readme.html"><b>1</b></a> <a href="../files/installing_salome_pro.htm"><b>2</b></a> <a href="../files/setting_preferences.htm"><b>3</b></a> </nobr><br><nobr>automatically <a href="../files/readme.html"><b>1</b></a> <a href="../files/opening_studies.htm"><b>2</b></a> <a href="../files/installing_salome_pro.htm"><b>3</b></a> <a href="../files/displaying_hiding_toolbars.htm"><b>4</b></a> <a href="../files/using_usecase_browser.htm"><b>5</b></a> <a href="../files/setting_preferences.htm"><b>6</b></a> <a href="../files/saving_a_study.htm"><b>7</b></a> <a href="../files/running_salome_pro.htm"><b>8</b></a> </nobr><br><a href="../files/setting_preferences.htm"><b>autosize</b></a> <br><nobr><a name="bms_AV"></a><a name="subkey_AV"></a>available <a href="../files/readme.html"><b>1</b></a> <a href="../files/installing_salome_pro.htm"><b>2</b></a> <a href="../files/about_salome_pro_architecture.htm"><b>3</b></a> </nobr><br><nobr>avoid <a href="../files/readme.html"><b>1</b></a> <a href="../files/installing_salome_pro.htm"><b>2</b></a> </nobr><br><a href="../files/installing_salome_pro.htm"><b>avoiding</b></a> <br><nobr><a name="bms_AW"></a><a name="subkey_AW"></a>awk <a href="../files/readme.html"><b>1</b></a> <a href="../files/installing_salome_pro.htm"><b>2</b></a> </nobr><br>\r
+<nobr><a name="bm_A"></a><a name="subkey_AB"></a>able <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/about_salome_pro_architecture.htm"><b>2</b></a> </nobr><br><a href="../kernel/readme.html"><b>abort</b></a> <br><nobr>above <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/getting_properties_of_the_study.htm"><b>2</b></a> </nobr><br><nobr><a name="bms_AC"></a><a name="subkey_AC"></a>access <a href="../kernel/about_salome_pro_architecture.htm"><b>1</b></a> <a href="../kernel/using_usecase_browser.htm"><b>2</b></a> <a href="../kernel/using_object_browser.htm"><b>3</b></a> <a href="../kernel/salome_pro_desktop.htm"><b>4</b></a> </nobr><br><a href="../kernel/readme.html"><b>accidentally</b></a> <br><a href="../kernel/copyright_notice.htm"><b>accordance</b></a> <br><nobr>according <a href="../kernel/running_salome_pro.htm"><b>1</b></a> <a href="../kernel/readme.html"><b>2</b></a> <a href="../kernel/using_object_browser.htm"><b>3</b></a> <a href="../kernel/using_left-hand_tabs.htm"><b>4</b></a> <a href="../kernel/salome_pro_desktop.htm"><b>5</b></a> </nobr><br><a href="../kernel/readme.html"><b>accordingly</b></a> <br><a href="../kernel/readme.html"><b>account</b></a> <br><a href="../kernel/about_salome_pro_architecture.htm"><b>achieved</b></a> <br><a href="../kernel/about_salome_pro_architecture.htm"><b>achieves</b></a> <br><a href="../kernel/about_salome_pro_help_system.htm"><b>acquainted</b></a> <br><a href="../kernel/setting_preferences.htm"><b>actions</b></a> <br><nobr>activated <a href="../kernel/displaying_studies.htm"><b>1</b></a> <a href="../kernel/creating_a_new_study.htm"><b>2</b></a> </nobr><br><a href="../kernel/displaying_studies.htm"><b>activation</b></a> <br><a href="../kernel/creating_a_new_study.htm"><b>active</b></a> <br><a name="bms_AD"></a><a name="subkey_AD"></a><a href="../kernel/about_salome_pro_architecture.htm"><b>adapted</b></a> <br><nobr>add <a href="../kernel/running_salome_pro.htm"><b>1</b></a> <a href="../kernel/readme.html"><b>2</b></a> <a href="../kernel/displaying_hiding_toolbars.htm"><b>3</b></a> <a href="../kernel/using_usecase_browser.htm"><b>4</b></a> <a href="../kernel/using_catalog_generator.htm"><b>5</b></a> </nobr><br><a href="../kernel/readme.html"><b>added</b></a> <br><a href="../kernel/using_catalog_generator.htm"><b>adding</b></a> <br><a href="../kernel/creating_a_new_study.htm"><b>addition</b></a> <br><nobr>additional <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/introduction_to_iapp.htm"><b>2</b></a> <a href="../kernel/editing_studies.htm"><b>3</b></a> <a href="../kernel/displaying_hiding_toolbars.htm"><b>4</b></a> <a href="../kernel/about_salome_pro_architecture.htm"><b>5</b></a> <a href="../kernel/using_object_browser.htm"><b>6</b></a> </nobr><br><a href="../kernel/using_usecase_browser.htm"><b>adds</b></a> <br><nobr>advanced <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/using_catalog_generator.htm"><b>2</b></a> </nobr><br><a name="bms_AF"></a><a name="subkey_AF"></a><a href="../kernel/about_salome_pro_architecture.htm"><b>affecting</b></a> <br><nobr><a name="bms_AG"></a><a name="subkey_AG"></a>again <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/navigating_topics.htm"><b>2</b></a> <a href="../kernel/saving_a_study.htm"><b>3</b></a> </nobr><br><a name="bms_AL"></a><a name="subkey_AL"></a><a href="../kernel/readme.html"><b>algorithm</b></a> <br><nobr>algorithms <a href="../kernel/introduction_to_salome_pro.htm"><b>1</b></a> <a href="../kernel/about_salome_pro_architecture.htm"><b>2</b></a> </nobr><br><nobr>allowing <a href="../kernel/running_salome_pro.htm"><b>1</b></a> <a href="../kernel/editing_studies.htm"><b>2</b></a> <a href="../kernel/displaying_studies.htm"><b>3</b></a> <a href="../kernel/using_usecase_browser.htm"><b>4</b></a> <a href="../kernel/setting_preferences.htm"><b>5</b></a> <a href="../kernel/salome_pro_desktop.htm"><b>6</b></a> </nobr><br><nobr>allows <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/introduction_to_salome_pro.htm"><b>2</b></a> <a href="../kernel/about_salome_pro_architecture.htm"><b>3</b></a> <a href="../kernel/using_registry.htm"><b>4</b></a> <a href="../kernel/using_catalog_generator.htm"><b>5</b></a> <a href="../kernel/setting_preferences.htm"><b>6</b></a> <a href="../kernel/saving_a_study.htm"><b>7</b></a> </nobr><br><a href="../kernel/introduction_to_salome_pro.htm"><b>along</b></a> <br><a href="../kernel/using_catalog_generator.htm"><b>alongside</b></a> <br><a href="../kernel/readme.html"><b>already</b></a> <br><a name="bms_AM"></a><a name="subkey_AM"></a><a href="../kernel/readme.html"><b>amount</b></a> <br><a name="bms_AN"></a><a name="subkey_AN"></a><a href="../kernel/readme.html"><b>annoying</b></a> <br><nobr>another <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/about_salome_pro_architecture.htm"><b>2</b></a> <a href="../kernel/using_usecase_browser.htm"><b>3</b></a> <a href="../kernel/saving_a_study.htm"><b>4</b></a> </nobr><br><a href="../kernel/readme.html"><b>answer</b></a> <br><nobr>any <a href="../kernel/running_salome_pro.htm"><b>1</b></a> <a href="../kernel/readme.html"><b>2</b></a> <a href="../kernel/navigating_topics.htm"><b>3</b></a> <a href="../kernel/getting_properties_of_the_study.htm"><b>4</b></a> <a href="../kernel/displaying_hiding_toolbars.htm"><b>5</b></a> <a href="../kernel/copyright_notice.htm"><b>6</b></a> <a href="../kernel/about_salome_pro_help_system.htm"><b>7</b></a> <a href="../kernel/about_salome_pro_architecture.htm"><b>8</b></a> <a href="../kernel/using_usecase_browser.htm"><b>9</b></a> </nobr><br><a href="../kernel/readme.html"><b>anything</b></a> <br><nobr><a name="bms_AP"></a><a name="subkey_AP"></a>appear <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/getting_started2.htm"><b>2</b></a> <a href="../kernel/getting_properties_of_the_study.htm"><b>3</b></a> <a href="../kernel/copyright_notice.htm"><b>4</b></a> <a href="../kernel/using_registry.htm"><b>5</b></a> <a href="../kernel/using_catalog_generator.htm"><b>6</b></a> <a href="../kernel/setting_preferences.htm"><b>7</b></a> </nobr><br><a href="../kernel/readme.html"><b>appears</b></a> <br><a href="../kernel/about_salome_pro_help_system.htm"><b>applets</b></a> <br><nobr>application <a href="../kernel/running_salome_pro.htm"><b>1</b></a> <a href="../kernel/introduction_to_iapp.htm"><b>2</b></a> <a href="../kernel/introduction.htm"><b>3</b></a> <a href="../kernel/getting_started2.htm"><b>4</b></a> <a href="../kernel/displaying_hiding_toolbars.htm"><b>5</b></a> <a href="../kernel/about_salome_pro_architecture.htm"><b>6</b></a> <a href="../kernel/using_object_browser.htm"><b>7</b></a> <a href="../kernel/using_catalog_generator.htm"><b>8</b></a> <a href="../kernel/setting_preferences.htm"><b>9</b></a> <a href="../kernel/saving_a_study.htm"><b>10</b></a> <a href="../kernel/salome_pro_desktop.htm"><b>11</b></a> </nobr><br><nobr>applications <a href="../kernel/running_salome_pro.htm"><b>1</b></a> <a href="../kernel/introduction_to_salome_pro.htm"><b>2</b></a> <a href="../kernel/about_salome_pro_architecture.htm"><b>3</b></a> </nobr><br><nobr>applicative <a href="../kernel/introduction_to_iapp.htm"><b>1</b></a> <a href="../kernel/setting_preferences.htm"><b>2</b></a> </nobr><br><a href="../kernel/using_object_browser.htm"><b>apply</b></a> <br><nobr>approach <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/introduction_to_salome_pro.htm"><b>2</b></a> </nobr><br><a href="../kernel/readme.html"><b>appropriate</b></a> <br><a href="../kernel/readme.html"><b>approximate</b></a> <br><a name="bms_AR"></a><a name="subkey_AR"></a><a href="../kernel/readme.html"><b>ar</b></a> <br><a href="../kernel/about_salome_pro_architecture.htm"><b>architecture</b></a> <br><a href="../kernel/about_salome_pro_architecture.htm"><b>architectures</b></a> <br><a href="../kernel/salome_pro_desktop.htm"><b>area</b></a> <br><a href="../kernel/readme.html"><b>argument</b></a> <br><a href="../kernel/readme.html"><b>arguments</b></a> <br><a href="../kernel/copyright_notice.htm"><b>ariane</b></a> <br><a href="../kernel/using_object_browser.htm"><b>arrow</b></a> <br><a name="bms_AS"></a><a name="subkey_AS"></a><a href="../kernel/using_object_browser.htm"><b>ascending</b></a> <br><nobr>ascii <a href="../kernel/setting_preferences.htm"><b>1</b></a> <a href="../kernel/saving_a_study.htm"><b>2</b></a> </nobr><br><a href="../kernel/readme.html"><b>ask</b></a> <br><nobr>associated <a href="../kernel/opening_studies.htm"><b>1</b></a> <a href="../kernel/using_usecase_browser.htm"><b>2</b></a> <a href="../kernel/using_object_browser.htm"><b>3</b></a> <a href="../kernel/using_left-hand_tabs.htm"><b>4</b></a> </nobr><br><a name="bms_AT"></a><a name="subkey_AT"></a><a href="../kernel/using_object_browser.htm"><b>attribute</b></a> <br><a href="../kernel/using_object_browser.htm"><b>attributes</b></a> <br><nobr><a name="bms_AU"></a><a name="subkey_AU"></a>author <a href="../kernel/getting_properties_of_the_study.htm"><b>1</b></a> <a href="../kernel/using_catalog_generator.htm"><b>2</b></a> </nobr><br><nobr>auto <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/setting_preferences.htm"><b>2</b></a> </nobr><br><nobr>automatically <a href="../kernel/running_salome_pro.htm"><b>1</b></a> <a href="../kernel/readme.html"><b>2</b></a> <a href="../kernel/opening_studies.htm"><b>3</b></a> <a href="../kernel/displaying_hiding_toolbars.htm"><b>4</b></a> <a href="../kernel/using_usecase_browser.htm"><b>5</b></a> <a href="../kernel/setting_preferences.htm"><b>6</b></a> <a href="../kernel/saving_a_study.htm"><b>7</b></a> </nobr><br><a href="../kernel/setting_preferences.htm"><b>autosize</b></a> <br><nobr><a name="bms_AV"></a><a name="subkey_AV"></a>available <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/about_salome_pro_architecture.htm"><b>2</b></a> </nobr><br><a href="../kernel/readme.html"><b>avoid</b></a> <br><a name="bms_AW"></a><a name="subkey_AW"></a><a href="../kernel/readme.html"><b>awk</b></a> <br>\r
 <br><br>\r
-<nobr><a name="bm_B"></a><a name="subkey_B{"></a>b <a href="../files/readme.html"><b>1</b></a> <a href="../files/installing_salome_pro.htm"><b>2</b></a> </nobr><br><nobr><a name="bms_BA"></a><a name="subkey_BA"></a>back <a href="../files/readme.html"><b>1</b></a> <a href="../files/installing_salome_pro.htm"><b>2</b></a> <a href="../files/salome_pro_desktop.htm"><b>3</b></a> </nobr><br><a href="../files/setting_preferences.htm"><b>background</b></a> <br><a href="../files/saving_a_study.htm"><b>base</b></a> <br><nobr>based <a href="../files/introduction.htm"><b>1</b></a> <a href="../files/about_salome_pro_architecture.htm"><b>2</b></a> </nobr><br><a href="../files/readme.html"><b>bash</b></a> <br><nobr>basic <a href="../files/readme.html"><b>1</b></a> <a href="../files/salome_pro_desktop.htm"><b>2</b></a> </nobr><br><nobr>batch <a href="../files/readme.html"><b>1</b></a> <a href="../files/about_salome_pro_architecture.htm"><b>2</b></a> <a href="../files/running_salome_pro.htm"><b>3</b></a> </nobr><br><a name="bms_BE"></a><a name="subkey_BE"></a><a href="../files/installing_salome_pro.htm"><b>bear</b></a> <br><a href="../files/copyright_notice.htm"><b>bears</b></a> <br><nobr>before <a href="../files/readme.html"><b>1</b></a> <a href="../files/installing_salome_pro.htm"><b>2</b></a> </nobr><br><a href="../files/installing_salome_pro.htm"><b>beginning</b></a> <br><a href="../files/using_registry.htm"><b>begins</b></a> <br><a href="../files/about_salome_pro_architecture.htm"><b>behave</b></a> <br><a href="../files/introduction.htm"><b>behavior</b></a> <br><a href="../files/installing_salome_pro.htm"><b>behaviour</b></a> <br><nobr>below <a href="../files/readme.html"><b>1</b></a> <a href="../files/navigating_topics.htm"><b>2</b></a> <a href="../files/installing_salome_pro.htm"><b>3</b></a> </nobr><br><a href="../files/using_usecase_browser.htm"><b>besides</b></a> <br><nobr><a name="bms_BI"></a><a name="subkey_BI"></a>bin <a href="../files/readme.html"><b>1</b></a> <a href="../files/installing_salome_pro.htm"><b>2</b></a> <a href="../files/using_catalog_generator.htm"><b>3</b></a> <a href="../files/running_salome_pro.htm"><b>4</b></a> </nobr><br><nobr>binaries <a href="../files/readme.html"><b>1</b></a> <a href="../files/installing_salome_pro.htm"><b>2</b></a> </nobr><br><a name="bms_BL"></a><a name="subkey_BL"></a><a href="../files/readme.html"><b>blue</b></a> <br><a href="../files/about_salome_pro_architecture.htm"><b>blur</b></a> <br><a name="bms_BM"></a><a name="subkey_BM"></a><a href="../files/salome_pro_desktop.htm"><b>bmp</b></a> <br><a name="bms_BO"></a><a name="subkey_BO"></a><a href="../files/readme.html"><b>bold</b></a> <br><a href="../files/installing_salome_pro.htm"><b>bonus</b></a> <br><a href="../files/using_left-hand_tabs.htm"><b>book</b></a> <br><a href="../files/using_left-hand_tabs.htm"><b>books</b></a> <br><nobr>bottom <a href="../files/using_usecase_browser.htm"><b>1</b></a> <a href="../files/salome_pro_desktop.htm"><b>2</b></a> </nobr><br><nobr>box <a href="../files/readme.html"><b>1</b></a> <a href="../files/opening_studies.htm"><b>2</b></a> <a href="../files/installing_salome_pro.htm"><b>3</b></a> <a href="../files/getting_properties_of_the_study.htm"><b>4</b></a> <a href="../files/using_registry.htm"><b>5</b></a> <a href="../files/using_catalog_generator.htm"><b>6</b></a> <a href="../files/saving_a_study.htm"><b>7</b></a> </nobr><br><a name="bms_BR"></a><a name="subkey_BR"></a><a href="../files/readme.html"><b>brackets</b></a> <br><a href="../files/copyright_notice.htm"><b>brand</b></a> <br><nobr>brief <a href="../files/readme.html"><b>1</b></a> <a href="../files/navigating_topics.htm"><b>2</b></a> <a href="../files/installing_salome_pro.htm"><b>3</b></a> </nobr><br><nobr>browse <a href="../files/readme.html"><b>1</b></a> <a href="../files/installing_salome_pro.htm"><b>2</b></a> </nobr><br><nobr>browser <a href="../files/opening_studies.htm"><b>1</b></a> <a href="../files/introduction_to_iapp.htm"><b>2</b></a> <a href="../files/about_salome_pro_help_system.htm"><b>3</b></a> <a href="../files/using_usecase_browser.htm"><b>4</b></a> <a href="../files/using_object_browser.htm"><b>5</b></a> <a href="../files/setting_preferences.htm"><b>6</b></a> <a href="../files/salome_pro_desktop.htm"><b>7</b></a> </nobr><br><nobr><a name="bms_BU"></a><a name="subkey_BU"></a>bug <a href="../files/readme.html"><b>1</b></a> <a href="../files/installing_salome_pro.htm"><b>2</b></a> </nobr><br><nobr>build <a href="../files/readme.html"><b>1</b></a> <a href="../files/introduction_to_salome_pro.htm"><b>2</b></a> <a href="../files/installing_salome_pro.htm"><b>3</b></a> <a href="../files/using_catalog_generator.htm"><b>4</b></a> </nobr><br><a href="../files/readme.html"><b>building</b></a> <br><nobr>built <a href="../files/readme.html"><b>1</b></a> <a href="../files/introduction_to_salome_pro.htm"><b>2</b></a> <a href="../files/installing_salome_pro.htm"><b>3</b></a> </nobr><br><nobr>button <a href="../files/readme.html"><b>1</b></a> <a href="../files/opening_studies.htm"><b>2</b></a> <a href="../files/navigating_topics.htm"><b>3</b></a> <a href="../files/installing_salome_pro.htm"><b>4</b></a> <a href="../files/using_registry.htm"><b>5</b></a> <a href="../files/saving_a_study.htm"><b>6</b></a> </nobr><br><nobr>buttons <a href="../files/readme.html"><b>1</b></a> <a href="../files/navigating_topics.htm"><b>2</b></a> <a href="../files/installing_salome_pro.htm"><b>3</b></a> </nobr><br>\r
+<a name="bm_B"></a><a name="subkey_B{"></a><a href="../kernel/readme.html"><b>b</b></a> <br><nobr><a name="bms_BA"></a><a name="subkey_BA"></a>back <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/salome_pro_desktop.htm"><b>2</b></a> </nobr><br><a href="../kernel/setting_preferences.htm"><b>background</b></a> <br><a href="../kernel/saving_a_study.htm"><b>base</b></a> <br><nobr>based <a href="../kernel/introduction.htm"><b>1</b></a> <a href="../kernel/about_salome_pro_architecture.htm"><b>2</b></a> </nobr><br><a href="../kernel/readme.html"><b>bash</b></a> <br><nobr>basic <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/salome_pro_desktop.htm"><b>2</b></a> </nobr><br><nobr>batch <a href="../kernel/running_salome_pro.htm"><b>1</b></a> <a href="../kernel/readme.html"><b>2</b></a> <a href="../kernel/about_salome_pro_architecture.htm"><b>3</b></a> </nobr><br><a name="bms_BE"></a><a name="subkey_BE"></a><a href="../kernel/copyright_notice.htm"><b>bears</b></a> <br><a href="../kernel/readme.html"><b>before</b></a> <br><a href="../kernel/using_registry.htm"><b>begins</b></a> <br><a href="../kernel/about_salome_pro_architecture.htm"><b>behave</b></a> <br><a href="../kernel/introduction.htm"><b>behavior</b></a> <br><nobr>below <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/navigating_topics.htm"><b>2</b></a> </nobr><br><a href="../kernel/using_usecase_browser.htm"><b>besides</b></a> <br><nobr><a name="bms_BI"></a><a name="subkey_BI"></a>bin <a href="../kernel/running_salome_pro.htm"><b>1</b></a> <a href="../kernel/readme.html"><b>2</b></a> <a href="../kernel/using_catalog_generator.htm"><b>3</b></a> </nobr><br><a href="../kernel/readme.html"><b>binaries</b></a> <br><a name="bms_BL"></a><a name="subkey_BL"></a><a href="../kernel/readme.html"><b>blue</b></a> <br><a href="../kernel/about_salome_pro_architecture.htm"><b>blur</b></a> <br><a name="bms_BM"></a><a name="subkey_BM"></a><a href="../kernel/salome_pro_desktop.htm"><b>bmp</b></a> <br><a name="bms_BO"></a><a name="subkey_BO"></a><a href="../kernel/readme.html"><b>bold</b></a> <br><a href="../kernel/using_left-hand_tabs.htm"><b>book</b></a> <br><a href="../kernel/using_left-hand_tabs.htm"><b>books</b></a> <br><a href="../kernel/readme.html"><b>boost</b></a> <br><a href="../kernel/readme.html"><b>boost_version</b></a> <br><a href="../kernel/readme.html"><b>boostdir</b></a> <br><nobr>bottom <a href="../kernel/using_usecase_browser.htm"><b>1</b></a> <a href="../kernel/salome_pro_desktop.htm"><b>2</b></a> </nobr><br><nobr>box <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/opening_studies.htm"><b>2</b></a> <a href="../kernel/getting_properties_of_the_study.htm"><b>3</b></a> <a href="../kernel/using_registry.htm"><b>4</b></a> <a href="../kernel/using_catalog_generator.htm"><b>5</b></a> <a href="../kernel/saving_a_study.htm"><b>6</b></a> </nobr><br><a name="bms_BR"></a><a name="subkey_BR"></a><a href="../kernel/readme.html"><b>brackets</b></a> <br><a href="../kernel/copyright_notice.htm"><b>brand</b></a> <br><nobr>brief <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/navigating_topics.htm"><b>2</b></a> </nobr><br><a href="../kernel/readme.html"><b>browse</b></a> <br><nobr>browser <a href="../kernel/opening_studies.htm"><b>1</b></a> <a href="../kernel/introduction_to_iapp.htm"><b>2</b></a> <a href="../kernel/about_salome_pro_help_system.htm"><b>3</b></a> <a href="../kernel/using_usecase_browser.htm"><b>4</b></a> <a href="../kernel/using_object_browser.htm"><b>5</b></a> <a href="../kernel/setting_preferences.htm"><b>6</b></a> <a href="../kernel/salome_pro_desktop.htm"><b>7</b></a> </nobr><br><a name="bms_BU"></a><a name="subkey_BU"></a><a href="../kernel/readme.html"><b>bug</b></a> <br><nobr>build <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/introduction_to_salome_pro.htm"><b>2</b></a> <a href="../kernel/using_catalog_generator.htm"><b>3</b></a> </nobr><br><a href="../kernel/readme.html"><b>building</b></a> <br><nobr>built <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/introduction_to_salome_pro.htm"><b>2</b></a> </nobr><br><nobr>button <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/opening_studies.htm"><b>2</b></a> <a href="../kernel/navigating_topics.htm"><b>3</b></a> <a href="../kernel/using_registry.htm"><b>4</b></a> <a href="../kernel/saving_a_study.htm"><b>5</b></a> </nobr><br><nobr>buttons <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/navigating_topics.htm"><b>2</b></a> </nobr><br>\r
 <br><br>\r
-<a name="bm_C"></a><a name="subkey_C{"></a><a href="../files/running_salome_pro.htm"><b>c</b></a> <br><a name="bms_CA"></a><a name="subkey_CA"></a><a href="../files/introduction.htm"><b>cad</b></a> <br><a href="../files/copyright_notice.htm"><b>cade</b></a> <br><nobr>calculations <a href="../files/introduction_to_salome_pro.htm"><b>1</b></a> <a href="../files/getting_started2.htm"><b>2</b></a> </nobr><br><nobr>call <a href="../files/using_registry.htm"><b>1</b></a> <a href="../files/using_catalog_generator.htm"><b>2</b></a> <a href="../files/saving_a_study.htm"><b>3</b></a> </nobr><br><nobr>called <a href="../files/readme.html"><b>1</b></a> <a href="../files/about_salome_pro_architecture.htm"><b>2</b></a> </nobr><br><a href="../files/readme.html"><b>calling</b></a> <br><a href="../files/salome_pro_desktop.htm"><b>camera</b></a> <br><nobr>cancel <a href="../files/readme.html"><b>1</b></a> <a href="../files/installing_salome_pro.htm"><b>2</b></a> </nobr><br><a href="../files/using_catalog_generator.htm"><b>capability</b></a> <br><a href="../files/readme.html"><b>caption</b></a> <br><nobr>care <a href="../files/readme.html"><b>1</b></a> <a href="../files/installing_salome_pro.htm"><b>2</b></a> </nobr><br><nobr>carefully <a href="../files/readme.html"><b>1</b></a> <a href="../files/installing_salome_pro.htm"><b>2</b></a> </nobr><br><a href="../files/introduction.htm"><b>cars</b></a> <br><nobr>cas <a href="../files/installing_salome_pro.htm"><b>1</b></a> <a href="../files/copyright_notice.htm"><b>2</b></a> </nobr><br><nobr>cascade <a href="../files/readme.html"><b>1</b></a> <a href="../files/installing_salome_pro.htm"><b>2</b></a> <a href="../files/displaying_studies.htm"><b>3</b></a> <a href="../files/copyright_notice.htm"><b>4</b></a> </nobr><br><nobr>case <a href="../files/readme.html"><b>1</b></a> <a href="../files/installing_salome_pro.htm"><b>2</b></a> <a href="../files/getting_properties_of_the_study.htm"><b>3</b></a> <a href="../files/about_salome_pro_architecture.htm"><b>4</b></a> <a href="../files/using_usecase_browser.htm"><b>5</b></a> <a href="../files/saving_a_study.htm"><b>6</b></a> </nobr><br><nobr>cases <a href="../files/installing_salome_pro.htm"><b>1</b></a> <a href="../files/using_usecase_browser.htm"><b>2</b></a> </nobr><br><nobr>casroot <a href="../files/readme.html"><b>1</b></a> <a href="../files/installing_salome_pro.htm"><b>2</b></a> </nobr><br><nobr>cat <a href="../files/readme.html"><b>1</b></a> <a href="../files/installing_salome_pro.htm"><b>2</b></a> </nobr><br><a href="../files/using_catalog_generator.htm"><b>catalog</b></a> <br><a href="../files/using_catalog_generator.htm"><b>catalogmodulegeneral</b></a> <br><a href="../files/using_catalog_generator.htm"><b>catalogmodulepersonnel</b></a> <br><nobr>catalogue <a href="../files/introduction_to_iapp.htm"><b>1</b></a> <a href="../files/running_salome_pro.htm"><b>2</b></a> </nobr><br><a href="../files/using_left-hand_tabs.htm"><b>categories</b></a> <br><br><br></p><p class="ftsbody" align="center"><a href="whlstf1.htm" target="_self" title="previous search group"><b>&gt;&gt;</b></a>\r
+<a name="bm_C"></a><a name="subkey_C{"></a><a href="../kernel/running_salome_pro.htm"><b>c</b></a> <br><a name="bms_CA"></a><a name="subkey_CA"></a><a href="../kernel/introduction.htm"><b>cad</b></a> <br><a href="../kernel/copyright_notice.htm"><b>cade</b></a> <br><nobr>calculations <a href="../kernel/introduction_to_salome_pro.htm"><b>1</b></a> <a href="../kernel/getting_started2.htm"><b>2</b></a> </nobr><br><nobr>call <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/using_registry.htm"><b>2</b></a> <a href="../kernel/using_catalog_generator.htm"><b>3</b></a> <a href="../kernel/saving_a_study.htm"><b>4</b></a> </nobr><br><nobr>called <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/about_salome_pro_architecture.htm"><b>2</b></a> </nobr><br><a href="../kernel/readme.html"><b>calling</b></a> <br><a href="../kernel/salome_pro_desktop.htm"><b>camera</b></a> <br><a href="../kernel/readme.html"><b>cancel</b></a> <br><a href="../kernel/using_catalog_generator.htm"><b>capability</b></a> <br><a href="../kernel/readme.html"><b>caption</b></a> <br><a href="../kernel/readme.html"><b>care</b></a> <br><a href="../kernel/readme.html"><b>carefully</b></a> <br><a href="../kernel/introduction.htm"><b>cars</b></a> <br><a href="../kernel/copyright_notice.htm"><b>cas</b></a> <br><nobr>cascade <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/displaying_studies.htm"><b>2</b></a> <a href="../kernel/copyright_notice.htm"><b>3</b></a> </nobr><br><nobr>case <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/getting_properties_of_the_study.htm"><b>2</b></a> <a href="../kernel/about_salome_pro_architecture.htm"><b>3</b></a> <a href="../kernel/using_usecase_browser.htm"><b>4</b></a> <a href="../kernel/saving_a_study.htm"><b>5</b></a> </nobr><br><a href="../kernel/using_usecase_browser.htm"><b>cases</b></a> <br><a href="../kernel/readme.html"><b>casroot</b></a> <br><a href="../kernel/readme.html"><b>cat</b></a> <br><a href="../kernel/using_catalog_generator.htm"><b>catalog</b></a> <br><a href="../kernel/using_catalog_generator.htm"><b>catalogmodulegeneral</b></a> <br><a href="../kernel/using_catalog_generator.htm"><b>catalogmodulepersonnel</b></a> <br><nobr>catalogue <a href="../kernel/running_salome_pro.htm"><b>1</b></a> <a href="../kernel/introduction_to_iapp.htm"><b>2</b></a> </nobr><br><a href="../kernel/using_left-hand_tabs.htm"><b>categories</b></a> <br><nobr><a name="bms_CH"></a><a name="subkey_CH"></a>change <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/getting_properties_of_the_study.htm"><b>2</b></a> <a href="../kernel/copyright_notice.htm"><b>3</b></a> <a href="../kernel/about_salome_pro_architecture.htm"><b>4</b></a> </nobr><br><nobr>changes <a href="../kernel/getting_properties_of_the_study.htm"><b>1</b></a> <a href="../kernel/saving_a_study.htm"><b>2</b></a> </nobr><br><a href="../kernel/readme.html"><b>changing</b></a> <br><a href="../kernel/about_salome_pro_help_system.htm"><b>chapters</b></a> <br><a href="../kernel/readme.html"><b>charge</b></a> <br><a href="../kernel/readme.html"><b>check</b></a> <br><a href="../kernel/readme.html"><b>check_version</b></a> <br><a href="../kernel/readme.html"><b>checkbox</b></a> <br><a href="../kernel/readme.html"><b>checking</b></a> <br><a href="../kernel/readme.html"><b>checks</b></a> <br><a href="../kernel/using_usecase_browser.htm"><b>child</b></a> <br><a href="../kernel/readme.html"><b>choice</b></a> <br><nobr>choose <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/opening_studies.htm"><b>2</b></a> <a href="../kernel/getting_properties_of_the_study.htm"><b>3</b></a> <a href="../kernel/editing_studies.htm"><b>4</b></a> <a href="../kernel/displaying_studies.htm"><b>5</b></a> <a href="../kernel/displaying_hiding_toolbars.htm"><b>6</b></a> <a href="../kernel/creating_a_new_study.htm"><b>7</b></a> <a href="../kernel/using_registry.htm"><b>8</b></a> <a href="../kernel/using_catalog_generator.htm"><b>9</b></a> </nobr><br><a href="../kernel/using_catalog_generator.htm"><b>chosen</b></a> <br><a href="../kernel/setting_preferences.htm"><b>chronological</b></a> <br><br><br></p><p class="ftsbody" align="center"><a href="whlstf1.htm" target="_self" title="previous search group"><b>&gt;&gt;</b></a>\r
 \r
 </body>\r
 \r
index 6f31b754c5cb09adf27488ec1568c074aa97b47f..e1650465920039bc030dddb63b2c616b26df7aab 100755 (executable)
@@ -1,9 +1,9 @@
 <html>\r
 <head>\r
 <title>Search Words List</title>\r
-<meta http-equiv="content-type" content="text/html; charset=iso-8859-1">\r
+\r
 <meta name="generator" content="RoboHelp by eHelp Corporation   www.ehelp.com">\r
-<meta name "description" content="WebHelp 2002">\r
+<meta name="description" content="WebHelp 5.50">\r
 <base target="bsscright">\r
 <style>\r
 <!--\r
@@ -30,12 +30,12 @@ A:hover {color:Navy; } A:hover {font-family:Tahoma; } A:hover {font-size:8pt; }
 -->\r
 </style>\r
 </head>\r
-<body marginheight="0"  marginwidth="0">\r
+<body marginheight="0"  marginwidth="0" bgproperties="fixed">\r
 <p class="ftsbody" align="center"><a href="whlstf0.htm" target="_self" title="previous search group"><b>&lt;&lt;</b></a><br><br></p>\r
-<p class="ftsbody">\r
-<nobr><a name="bms_CH"></a><a name="subkey_CH"></a>change <a href="../files/readme.html"><b>1</b></a> <a href="../files/installing_salome_pro.htm"><b>2</b></a> <a href="../files/getting_properties_of_the_study.htm"><b>3</b></a> <a href="../files/copyright_notice.htm"><b>4</b></a> <a href="../files/about_salome_pro_architecture.htm"><b>5</b></a> </nobr><br><nobr>changes <a href="../files/getting_properties_of_the_study.htm"><b>1</b></a> <a href="../files/saving_a_study.htm"><b>2</b></a> </nobr><br><a href="../files/readme.html"><b>changing</b></a> <br><a href="../files/about_salome_pro_help_system.htm"><b>chapters</b></a> <br><a href="../files/readme.html"><b>charge</b></a> <br><nobr>check <a href="../files/readme.html"><b>1</b></a> <a href="../files/installing_salome_pro.htm"><b>2</b></a> </nobr><br><a href="../files/readme.html"><b>check_version</b></a> <br><nobr>checkbox <a href="../files/readme.html"><b>1</b></a> <a href="../files/installing_salome_pro.htm"><b>2</b></a> </nobr><br><a href="../files/installing_salome_pro.htm"><b>checkboxes</b></a> <br><nobr>checking <a href="../files/readme.html"><b>1</b></a> <a href="../files/installing_salome_pro.htm"><b>2</b></a> </nobr><br><nobr>checks <a href="../files/readme.html"><b>1</b></a> <a href="../files/installing_salome_pro.htm"><b>2</b></a> </nobr><br><a href="../files/using_usecase_browser.htm"><b>child</b></a> <br><nobr>choice <a href="../files/readme.html"><b>1</b></a> <a href="../files/installing_salome_pro.htm"><b>2</b></a> </nobr><br><nobr>choose <a href="../files/readme.html"><b>1</b></a> <a href="../files/opening_studies.htm"><b>2</b></a> <a href="../files/installing_salome_pro.htm"><b>3</b></a> <a href="../files/getting_properties_of_the_study.htm"><b>4</b></a> <a href="../files/editing_studies.htm"><b>5</b></a> <a href="../files/displaying_studies.htm"><b>6</b></a> <a href="../files/displaying_hiding_toolbars.htm"><b>7</b></a> <a href="../files/creating_a_new_study.htm"><b>8</b></a> <a href="../files/using_registry.htm"><b>9</b></a> <a href="../files/using_catalog_generator.htm"><b>10</b></a> </nobr><br><a href="../files/using_catalog_generator.htm"><b>chosen</b></a> <br><a href="../files/setting_preferences.htm"><b>chronological</b></a> <br><nobr><a name="bms_CL"></a><a name="subkey_CL"></a>clear <a href="../files/readme.html"><b>1</b></a> <a href="../files/installing_salome_pro.htm"><b>2</b></a> </nobr><br><a href="../files/salome_pro_desktop.htm"><b>clearall</b></a> <br><a href="../files/using_usecase_browser.htm"><b>clears</b></a> <br><nobr>click <a href="../files/readme.html"><b>1</b></a> <a href="../files/opening_studies.htm"><b>2</b></a> <a href="../files/navigating_topics.htm"><b>3</b></a> <a href="../files/installing_salome_pro.htm"><b>4</b></a> <a href="../files/getting_properties_of_the_study.htm"><b>5</b></a> <a href="../files/editing_studies.htm"><b>6</b></a> <a href="../files/creating_a_new_study.htm"><b>7</b></a> <a href="../files/using_usecase_browser.htm"><b>8</b></a> <a href="../files/using_registry.htm"><b>9</b></a> <a href="../files/using_object_browser.htm"><b>10</b></a> <a href="../files/using_left-hand_tabs.htm"><b>11</b></a> <a href="../files/saving_a_study.htm"><b>12</b></a> <a href="../files/salome_pro_desktop.htm"><b>13</b></a> </nobr><br><a href="../files/navigating_topics.htm"><b>clickable</b></a> <br><a href="../files/navigating_topics.htm"><b>clicked</b></a> <br><nobr>clicking <a href="../files/readme.html"><b>1</b></a> <a href="../files/installing_salome_pro.htm"><b>2</b></a> </nobr><br><a href="../files/about_salome_pro_architecture.htm"><b>client</b></a> <br><nobr>close <a href="../files/readme.html"><b>1</b></a> <a href="../files/navigating_topics.htm"><b>2</b></a> <a href="../files/installing_salome_pro.htm"><b>3</b></a> <a href="../files/saving_a_study.htm"><b>4</b></a> </nobr><br><a href="../files/using_left-hand_tabs.htm"><b>closed</b></a> <br><nobr>closes <a href="../files/readme.html"><b>1</b></a> <a href="../files/installing_salome_pro.htm"><b>2</b></a> <a href="../files/using_left-hand_tabs.htm"><b>3</b></a> </nobr><br><nobr>closing <a href="../files/readme.html"><b>1</b></a> <a href="../files/installing_salome_pro.htm"><b>2</b></a> <a href="../files/saving_a_study.htm"><b>3</b></a> </nobr><br><a href="../files/about_salome_pro_architecture.htm"><b>clusters</b></a> <br><nobr><a name="bms_CO"></a><a name="subkey_CO"></a>code <a href="../files/readme.html"><b>1</b></a> <a href="../files/introduction.htm"><b>2</b></a> <a href="../files/about_salome_pro_architecture.htm"><b>3</b></a> </nobr><br><a href="../files/introduction.htm"><b>codes</b></a> <br><a href="../files/installing_salome_pro.htm"><b>coincide</b></a> <br><nobr>collect <a href="../files/readme.html"><b>1</b></a> <a href="../files/installing_salome_pro.htm"><b>2</b></a> </nobr><br><a href="../files/readme.html"><b>collected</b></a> <br><nobr>collects <a href="../files/readme.html"><b>1</b></a> <a href="../files/installing_salome_pro.htm"><b>2</b></a> </nobr><br><a href="../files/installing_salome_pro.htm"><b>collisions</b></a> <br><nobr>color <a href="../files/using_object_browser.htm"><b>1</b></a> <a href="../files/setting_preferences.htm"><b>2</b></a> </nobr><br><nobr>column <a href="../files/using_object_browser.htm"><b>1</b></a> <a href="../files/setting_preferences.htm"><b>2</b></a> </nobr><br><nobr>columns <a href="../files/using_registry.htm"><b>1</b></a> <a href="../files/using_object_browser.htm"><b>2</b></a> <a href="../files/setting_preferences.htm"><b>3</b></a> </nobr><br><a href="../files/salome_pro_desktop.htm"><b>combination</b></a> <br><a href="../files/introduction_to_salome_pro.htm"><b>combines</b></a> <br><nobr>comfort <a href="../files/readme.html"><b>1</b></a> <a href="../files/installing_salome_pro.htm"><b>2</b></a> </nobr><br><a href="../files/readme.html"><b>comma</b></a> <br><nobr>command <a href="../files/readme.html"><b>1</b></a> <a href="../files/installing_salome_pro.htm"><b>2</b></a> <a href="../files/running_salome_pro.htm"><b>3</b></a> </nobr><br><a href="../files/about_salome_pro_architecture.htm"><b>commands</b></a> <br><a href="../files/copyright_notice.htm"><b>commitment</b></a> <br><nobr>common <a href="../files/readme.html"><b>1</b></a> <a href="../files/introduction_to_iapp.htm"><b>2</b></a> <a href="../files/saving_a_study.htm"><b>3</b></a> </nobr><br><a href="../files/about_salome_pro_architecture.htm"><b>compared</b></a> <br><a href="../files/using_usecase_browser.htm"><b>comparison</b></a> <br><nobr>compiled <a href="../files/readme.html"><b>1</b></a> <a href="../files/installing_salome_pro.htm"><b>2</b></a> </nobr><br><nobr>compiling <a href="../files/readme.html"><b>1</b></a> <a href="../files/installing_salome_pro.htm"><b>2</b></a> </nobr><br><nobr>complete <a href="../files/getting_properties_of_the_study.htm"><b>1</b></a> <a href="../files/using_registry.htm"><b>2</b></a> </nobr><br><nobr>completed <a href="../files/readme.html"><b>1</b></a> <a href="../files/installing_salome_pro.htm"><b>2</b></a> <a href="../files/using_left-hand_tabs.htm"><b>3</b></a> </nobr><br><nobr>complex <a href="../files/introduction.htm"><b>1</b></a> <a href="../files/about_salome_pro_architecture.htm"><b>2</b></a> </nobr><br><nobr>component <a href="../files/opening_studies.htm"><b>1</b></a> <a href="../files/introduction_to_salome_pro.htm"><b>2</b></a> <a href="../files/introduction_to_iapp.htm"><b>3</b></a> <a href="../files/editing_studies.htm"><b>4</b></a> <a href="../files/displaying_hiding_toolbars.htm"><b>5</b></a> <a href="../files/about_salome_pro_architecture.htm"><b>6</b></a> <a href="../files/using_usecase_browser.htm"><b>7</b></a> <a href="../files/using_registry.htm"><b>8</b></a> <a href="../files/using_object_browser.htm"><b>9</b></a> <a href="../files/using_catalog_generator.htm"><b>10</b></a> <a href="../files/setting_preferences.htm"><b>11</b></a> <a href="../files/saving_a_study.htm"><b>12</b></a> <a href="../files/salome_pro_desktop.htm"><b>13</b></a> </nobr><br><nobr>components <a href="../files/opening_studies.htm"><b>1</b></a> <a href="../files/navigating_topics.htm"><b>2</b></a> <a href="../files/introduction_to_salome_pro.htm"><b>3</b></a> <a href="../files/introduction_to_iapp.htm"><b>4</b></a> <a href="../files/about_salome_pro_help_system.htm"><b>5</b></a> <a href="../files/about_salome_pro_architecture.htm"><b>6</b></a> <a href="../files/using_registry.htm"><b>7</b></a> <a href="../files/using_object_browser.htm"><b>8</b></a> <a href="../files/using_catalog_generator.htm"><b>9</b></a> <a href="../files/saving_a_study.htm"><b>10</b></a> <a href="../files/salome_pro_desktop.htm"><b>11</b></a> </nobr><br><nobr>computation <a href="../files/introduction.htm"><b>1</b></a> <a href="../files/about_salome_pro_architecture.htm"><b>2</b></a> </nobr><br><nobr>computer <a href="../files/readme.html"><b>1</b></a> <a href="../files/installing_salome_pro.htm"><b>2</b></a> </nobr><br><nobr>concept <a href="../files/navigating_topics.htm"><b>1</b></a> <a href="../files/about_salome_pro_architecture.htm"><b>2</b></a> </nobr><br><nobr>concerning <a href="../files/introduction.htm"><b>1</b></a> <a href="../files/installing_salome_pro.htm"><b>2</b></a> </nobr><br><nobr>concerns <a href="../files/readme.html"><b>1</b></a> <a href="../files/installing_salome_pro.htm"><b>2</b></a> </nobr><br><a href="../files/about_salome_pro_architecture.htm"><b>conclusion</b></a> <br><a href="../files/readme.html"><b>config</b></a> <br><a href="../files/readme.html"><b>config_files</b></a> <br><a href="../files/readme.html"><b>config_redhat8_0</b></a> <br><a href="../files/introduction_to_salome_pro.htm"><b>configurable</b></a> <br><a href="../files/readme.html"><b>configuration</b></a> <br><nobr>configure <a href="../files/readme.html"><b>1</b></a> <a href="../files/installing_salome_pro.htm"><b>2</b></a> </nobr><br><nobr>confirm <a href="../files/readme.html"><b>1</b></a> <a href="../files/installing_salome_pro.htm"><b>2</b></a> </nobr><br><a href="../files/getting_started2.htm"><b>connected</b></a> <br><a href="../files/copyright_notice.htm"><b>connection</b></a> <br><a href="../files/salome_pro_desktop.htm"><b>consists</b></a> <br><nobr>console <a href="../files/setting_preferences.htm"><b>1</b></a> <a href="../files/salome_pro_desktop.htm"><b>2</b></a> <a href="../files/running_salome_pro.htm"><b>3</b></a> </nobr><br><a href="../files/about_salome_pro_architecture.htm"><b>constant</b></a> <br><a href="../files/introduction_to_salome_pro.htm"><b>construction</b></a> <br><a href="../files/copyright_notice.htm"><b>construed</b></a> <br><nobr>contain <a href="../files/readme.html"><b>1</b></a> <a href="../files/opening_studies.htm"><b>2</b></a> <a href="../files/installing_salome_pro.htm"><b>3</b></a> <a href="../files/using_object_browser.htm"><b>4</b></a> <a href="../files/setting_preferences.htm"><b>5</b></a> <a href="../files/salome_pro_desktop.htm"><b>6</b></a> </nobr><br><a href="../files/copyright_notice.htm"><b>contained</b></a> <br><a href="../files/running_salome_pro.htm"><b>containers</b></a> <br><nobr>containing <a href="../files/readme.html"><b>1</b></a> <a href="../files/installing_salome_pro.htm"><b>2</b></a> <a href="../files/using_left-hand_tabs.htm"><b>3</b></a> <a href="../files/using_catalog_generator.htm"><b>4</b></a> <a href="../files/setting_preferences.htm"><b>5</b></a> </nobr><br><nobr>contains <a href="../files/readme.html"><b>1</b></a> <a href="../files/installing_salome_pro.htm"><b>2</b></a> <a href="../files/getting_properties_of_the_study.htm"><b>3</b></a> <a href="../files/about_salome_pro_help_system.htm"><b>4</b></a> <a href="../files/using_registry.htm"><b>5</b></a> <a href="../files/using_object_browser.htm"><b>6</b></a> <a href="../files/salome_pro_desktop.htm"><b>7</b></a> <a href="../files/running_salome_pro.htm"><b>8</b></a> </nobr><br><a href="../files/using_left-hand_tabs.htm"><b>content</b></a> <br><nobr>contents <a href="../files/readme.html"><b>1</b></a> <a href="../files/using_left-hand_tabs.htm"><b>2</b></a> </nobr><br><nobr>context <a href="../files/displaying_hiding_toolbars.htm"><b>1</b></a> <a href="../files/using_usecase_browser.htm"><b>2</b></a> <a href="../files/using_object_browser.htm"><b>3</b></a> <a href="../files/salome_pro_desktop.htm"><b>4</b></a> </nobr><br><nobr>continue <a href="../files/readme.html"><b>1</b></a> <a href="../files/installing_salome_pro.htm"><b>2</b></a> </nobr><br><a href="../files/introduction.htm"><b>contributes</b></a> <br><nobr>control <a href="../files/readme.html"><b>1</b></a> <a href="../files/installing_salome_pro.htm"><b>2</b></a> <a href="../files/creating_a_new_study.htm"><b>3</b></a> </nobr><br><a href="../files/salome_pro_desktop.htm"><b>convenience</b></a> <br><a href="../files/installing_salome_pro.htm"><b>convenient</b></a> <br><a href="../files/introduction_to_salome_pro.htm"><b>cooperate</b></a> <br><nobr>copied <a href="../files/copyright_notice.htm"><b>1</b></a> <a href="../files/using_usecase_browser.htm"><b>2</b></a> </nobr><br><nobr>copy <a href="../files/readme.html"><b>1</b></a> <a href="../files/editing_studies.htm"><b>2</b></a> <a href="../files/saving_a_study.htm"><b>3</b></a> <a href="../files/salome_pro_desktop.htm"><b>4</b></a> </nobr><br><a href="../files/salome_pro_desktop.htm"><b>copying</b></a> <br><nobr>copyright <a href="../files/readme.html"><b>1</b></a> <a href="../files/copyright_notice.htm"><b>2</b></a> </nobr><br><a href="../files/about_salome_pro_architecture.htm"><b>corba</b></a> <br><a href="../files/saving_a_study.htm"><b>corner</b></a> <br><a href="../files/salome_pro_desktop.htm"><b>correcting</b></a> <br><nobr>corresponding <a href="../files/readme.html"><b>1</b></a> <a href="../files/opening_studies.htm"><b>2</b></a> <a href="../files/installing_salome_pro.htm"><b>3</b></a> <a href="../files/using_left-hand_tabs.htm"><b>4</b></a> <a href="../files/running_salome_pro.htm"><b>5</b></a> </nobr><br><nobr>correspondingly <a href="../files/readme.html"><b>1</b></a> <a href="../files/installing_salome_pro.htm"><b>2</b></a> </nobr><br><a href="../files/installing_salome_pro.htm"><b>corrupted</b></a> <br><a href="../files/introduction.htm"><b>cost</b></a> <br><a href="../files/introduction.htm"><b>costs</b></a> <br><nobr>coupling <a href="../files/introduction.htm"><b>1</b></a> <a href="../files/about_salome_pro_architecture.htm"><b>2</b></a> </nobr><br><a name="bms_CP"></a><a name="subkey_CP"></a><a href="../files/running_salome_pro.htm"><b>cpp</b></a> <br><nobr><a name="bms_CR"></a><a name="subkey_CR"></a>create <a href="../files/readme.html"><b>1</b></a> <a href="../files/getting_started2.htm"><b>2</b></a> <a href="../files/creating_a_new_study.htm"><b>3</b></a> <a href="../files/about_salome_pro_architecture.htm"><b>4</b></a> <a href="../files/using_usecase_browser.htm"><b>5</b></a> <a href="../files/using_catalog_generator.htm"><b>6</b></a> <a href="../files/setting_preferences.htm"><b>7</b></a> <a href="../files/saving_a_study.htm"><b>8</b></a> <a href="../files/running_salome_pro.htm"><b>9</b></a> </nobr><br><nobr>created <a href="../files/readme.html"><b>1</b></a> <a href="../files/opening_studies.htm"><b>2</b></a> <a href="../files/introduction_to_iapp.htm"><b>3</b></a> <a href="../files/creating_a_new_study.htm"><b>4</b></a> <a href="../files/about_salome_pro_help_system.htm"><b>5</b></a> <a href="../files/about_salome_pro_architecture.htm"><b>6</b></a> <a href="../files/using_usecase_browser.htm"><b>7</b></a> <a href="../files/using_object_browser.htm"><b>8</b></a> <a href="../files/setting_preferences.htm"><b>9</b></a> <a href="../files/salome_pro_desktop.htm"><b>10</b></a> <a href="../files/running_salome_pro.htm"><b>11</b></a> </nobr><br><nobr>creates <a href="../files/readme.html"><b>1</b></a> <a href="../files/installing_salome_pro.htm"><b>2</b></a> <a href="../files/using_usecase_browser.htm"><b>3</b></a> </nobr><br><nobr>creating <a href="../files/creating_a_new_study.htm"><b>1</b></a> <a href="../files/salome_pro_desktop.htm"><b>2</b></a> </nobr><br><nobr>creation <a href="../files/readme.html"><b>1</b></a> <a href="../files/introduction_to_iapp.htm"><b>2</b></a> <a href="../files/introduction.htm"><b>3</b></a> <a href="../files/installing_salome_pro.htm"><b>4</b></a> <a href="../files/about_salome_pro_architecture.htm"><b>5</b></a> </nobr><br><a href="../files/introduction.htm"><b>critical</b></a> <br><nobr>cross <a href="../files/navigating_topics.htm"><b>1</b></a> <a href="../files/saving_a_study.htm"><b>2</b></a> </nobr><br><nobr><a name="bms_CS"></a><a name="subkey_CS"></a>csh <a href="../files/readme.html"><b>1</b></a> <a href="../files/installing_salome_pro.htm"><b>2</b></a> <a href="../files/running_salome_pro.htm"><b>3</b></a> </nobr><br><a href="../files/running_salome_pro.htm"><b>cshell</b></a> <br><nobr><a name="bms_CU"></a><a name="subkey_CU"></a>current <a href="../files/getting_properties_of_the_study.htm"><b>1</b></a> <a href="../files/using_usecase_browser.htm"><b>2</b></a> <a href="../files/using_registry.htm"><b>3</b></a> <a href="../files/using_object_browser.htm"><b>4</b></a> <a href="../files/setting_preferences.htm"><b>5</b></a> <a href="../files/saving_a_study.htm"><b>6</b></a> <a href="../files/running_salome_pro.htm"><b>7</b></a> </nobr><br><nobr>currently <a href="../files/readme.html"><b>1</b></a> <a href="../files/navigating_topics.htm"><b>2</b></a> <a href="../files/installing_salome_pro.htm"><b>3</b></a> <a href="../files/editing_studies.htm"><b>4</b></a> <a href="../files/using_usecase_browser.htm"><b>5</b></a> <a href="../files/using_registry.htm"><b>6</b></a> <a href="../files/using_object_browser.htm"><b>7</b></a> <a href="../files/setting_preferences.htm"><b>8</b></a> </nobr><br><nobr>custom <a href="../files/using_usecase_browser.htm"><b>1</b></a> <a href="../files/using_catalog_generator.htm"><b>2</b></a> <a href="../files/setting_preferences.htm"><b>3</b></a> </nobr><br><a href="../files/introduction.htm"><b>customer</b></a> <br><nobr>cut <a href="../files/readme.html"><b>1</b></a> <a href="../files/installing_salome_pro.htm"><b>2</b></a> </nobr><br>\r
+<p class="ftsbody" >\r
+<a name="bms_CL"></a><a name="subkey_CL"></a><a href="../kernel/readme.html"><b>clear</b></a> <br><a href="../kernel/salome_pro_desktop.htm"><b>clearall</b></a> <br><a href="../kernel/using_usecase_browser.htm"><b>clears</b></a> <br><nobr>click <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/opening_studies.htm"><b>2</b></a> <a href="../kernel/navigating_topics.htm"><b>3</b></a> <a href="../kernel/getting_properties_of_the_study.htm"><b>4</b></a> <a href="../kernel/editing_studies.htm"><b>5</b></a> <a href="../kernel/creating_a_new_study.htm"><b>6</b></a> <a href="../kernel/using_usecase_browser.htm"><b>7</b></a> <a href="../kernel/using_registry.htm"><b>8</b></a> <a href="../kernel/using_object_browser.htm"><b>9</b></a> <a href="../kernel/using_left-hand_tabs.htm"><b>10</b></a> <a href="../kernel/saving_a_study.htm"><b>11</b></a> <a href="../kernel/salome_pro_desktop.htm"><b>12</b></a> </nobr><br><a href="../kernel/navigating_topics.htm"><b>clickable</b></a> <br><a href="../kernel/navigating_topics.htm"><b>clicked</b></a> <br><a href="../kernel/readme.html"><b>clicking</b></a> <br><a href="../kernel/about_salome_pro_architecture.htm"><b>client</b></a> <br><nobr>close <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/navigating_topics.htm"><b>2</b></a> <a href="../kernel/saving_a_study.htm"><b>3</b></a> </nobr><br><a href="../kernel/using_left-hand_tabs.htm"><b>closed</b></a> <br><nobr>closes <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/using_left-hand_tabs.htm"><b>2</b></a> </nobr><br><nobr>closing <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/saving_a_study.htm"><b>2</b></a> </nobr><br><a href="../kernel/about_salome_pro_architecture.htm"><b>clusters</b></a> <br><nobr><a name="bms_CO"></a><a name="subkey_CO"></a>code <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/introduction.htm"><b>2</b></a> <a href="../kernel/about_salome_pro_architecture.htm"><b>3</b></a> </nobr><br><a href="../kernel/introduction.htm"><b>codes</b></a> <br><a href="../kernel/readme.html"><b>collect</b></a> <br><a href="../kernel/readme.html"><b>collected</b></a> <br><a href="../kernel/readme.html"><b>collects</b></a> <br><nobr>color <a href="../kernel/using_object_browser.htm"><b>1</b></a> <a href="../kernel/setting_preferences.htm"><b>2</b></a> </nobr><br><nobr>column <a href="../kernel/using_object_browser.htm"><b>1</b></a> <a href="../kernel/setting_preferences.htm"><b>2</b></a> </nobr><br><nobr>columns <a href="../kernel/using_registry.htm"><b>1</b></a> <a href="../kernel/using_object_browser.htm"><b>2</b></a> <a href="../kernel/setting_preferences.htm"><b>3</b></a> </nobr><br><a href="../kernel/salome_pro_desktop.htm"><b>combination</b></a> <br><a href="../kernel/introduction_to_salome_pro.htm"><b>combines</b></a> <br><a href="../kernel/readme.html"><b>comfort</b></a> <br><a href="../kernel/readme.html"><b>comma</b></a> <br><nobr>command <a href="../kernel/running_salome_pro.htm"><b>1</b></a> <a href="../kernel/readme.html"><b>2</b></a> </nobr><br><a href="../kernel/about_salome_pro_architecture.htm"><b>commands</b></a> <br><a href="../kernel/copyright_notice.htm"><b>commitment</b></a> <br><nobr>common <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/introduction_to_iapp.htm"><b>2</b></a> <a href="../kernel/saving_a_study.htm"><b>3</b></a> </nobr><br><a href="../kernel/about_salome_pro_architecture.htm"><b>compared</b></a> <br><a href="../kernel/using_usecase_browser.htm"><b>comparison</b></a> <br><a href="../kernel/readme.html"><b>compiled</b></a> <br><a href="../kernel/readme.html"><b>compiling</b></a> <br><nobr>complete <a href="../kernel/getting_properties_of_the_study.htm"><b>1</b></a> <a href="../kernel/using_registry.htm"><b>2</b></a> </nobr><br><nobr>completed <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/using_left-hand_tabs.htm"><b>2</b></a> </nobr><br><nobr>complex <a href="../kernel/introduction.htm"><b>1</b></a> <a href="../kernel/about_salome_pro_architecture.htm"><b>2</b></a> </nobr><br><nobr>component <a href="../kernel/opening_studies.htm"><b>1</b></a> <a href="../kernel/introduction_to_salome_pro.htm"><b>2</b></a> <a href="../kernel/introduction_to_iapp.htm"><b>3</b></a> <a href="../kernel/editing_studies.htm"><b>4</b></a> <a href="../kernel/displaying_hiding_toolbars.htm"><b>5</b></a> <a href="../kernel/about_salome_pro_architecture.htm"><b>6</b></a> <a href="../kernel/using_usecase_browser.htm"><b>7</b></a> <a href="../kernel/using_registry.htm"><b>8</b></a> <a href="../kernel/using_object_browser.htm"><b>9</b></a> <a href="../kernel/using_catalog_generator.htm"><b>10</b></a> <a href="../kernel/setting_preferences.htm"><b>11</b></a> <a href="../kernel/saving_a_study.htm"><b>12</b></a> <a href="../kernel/salome_pro_desktop.htm"><b>13</b></a> </nobr><br><nobr>components <a href="../kernel/opening_studies.htm"><b>1</b></a> <a href="../kernel/navigating_topics.htm"><b>2</b></a> <a href="../kernel/introduction_to_salome_pro.htm"><b>3</b></a> <a href="../kernel/introduction_to_iapp.htm"><b>4</b></a> <a href="../kernel/about_salome_pro_help_system.htm"><b>5</b></a> <a href="../kernel/about_salome_pro_architecture.htm"><b>6</b></a> <a href="../kernel/using_registry.htm"><b>7</b></a> <a href="../kernel/using_object_browser.htm"><b>8</b></a> <a href="../kernel/using_catalog_generator.htm"><b>9</b></a> <a href="../kernel/saving_a_study.htm"><b>10</b></a> <a href="../kernel/salome_pro_desktop.htm"><b>11</b></a> </nobr><br><nobr>computation <a href="../kernel/introduction.htm"><b>1</b></a> <a href="../kernel/about_salome_pro_architecture.htm"><b>2</b></a> </nobr><br><a href="../kernel/readme.html"><b>computer</b></a> <br><nobr>concept <a href="../kernel/navigating_topics.htm"><b>1</b></a> <a href="../kernel/about_salome_pro_architecture.htm"><b>2</b></a> </nobr><br><a href="../kernel/introduction.htm"><b>concerning</b></a> <br><a href="../kernel/readme.html"><b>concerns</b></a> <br><a href="../kernel/about_salome_pro_architecture.htm"><b>conclusion</b></a> <br><a href="../kernel/readme.html"><b>config</b></a> <br><a href="../kernel/readme.html"><b>config_files</b></a> <br><a href="../kernel/readme.html"><b>config_redhat8_0</b></a> <br><a href="../kernel/introduction_to_salome_pro.htm"><b>configurable</b></a> <br><a href="../kernel/readme.html"><b>configuration</b></a> <br><a href="../kernel/readme.html"><b>configure</b></a> <br><a href="../kernel/readme.html"><b>confirm</b></a> <br><a href="../kernel/getting_started2.htm"><b>connected</b></a> <br><a href="../kernel/copyright_notice.htm"><b>connection</b></a> <br><a href="../kernel/salome_pro_desktop.htm"><b>consists</b></a> <br><nobr>console <a href="../kernel/running_salome_pro.htm"><b>1</b></a> <a href="../kernel/setting_preferences.htm"><b>2</b></a> <a href="../kernel/salome_pro_desktop.htm"><b>3</b></a> </nobr><br><a href="../kernel/about_salome_pro_architecture.htm"><b>constant</b></a> <br><a href="../kernel/running_salome_pro.htm"><b>constantly</b></a> <br><a href="../kernel/introduction_to_salome_pro.htm"><b>construction</b></a> <br><a href="../kernel/copyright_notice.htm"><b>construed</b></a> <br><nobr>contain <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/opening_studies.htm"><b>2</b></a> <a href="../kernel/using_object_browser.htm"><b>3</b></a> <a href="../kernel/setting_preferences.htm"><b>4</b></a> <a href="../kernel/salome_pro_desktop.htm"><b>5</b></a> </nobr><br><a href="../kernel/copyright_notice.htm"><b>contained</b></a> <br><a href="../kernel/running_salome_pro.htm"><b>containers</b></a> <br><nobr>containing <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/using_left-hand_tabs.htm"><b>2</b></a> <a href="../kernel/using_catalog_generator.htm"><b>3</b></a> <a href="../kernel/setting_preferences.htm"><b>4</b></a> </nobr><br><nobr>contains <a href="../kernel/running_salome_pro.htm"><b>1</b></a> <a href="../kernel/readme.html"><b>2</b></a> <a href="../kernel/getting_properties_of_the_study.htm"><b>3</b></a> <a href="../kernel/about_salome_pro_help_system.htm"><b>4</b></a> <a href="../kernel/using_registry.htm"><b>5</b></a> <a href="../kernel/using_object_browser.htm"><b>6</b></a> <a href="../kernel/salome_pro_desktop.htm"><b>7</b></a> </nobr><br><a href="../kernel/using_left-hand_tabs.htm"><b>content</b></a> <br><nobr>contents <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/using_left-hand_tabs.htm"><b>2</b></a> </nobr><br><nobr>context <a href="../kernel/displaying_hiding_toolbars.htm"><b>1</b></a> <a href="../kernel/using_usecase_browser.htm"><b>2</b></a> <a href="../kernel/using_object_browser.htm"><b>3</b></a> <a href="../kernel/salome_pro_desktop.htm"><b>4</b></a> </nobr><br><a href="../kernel/readme.html"><b>continue</b></a> <br><a href="../kernel/introduction.htm"><b>contributes</b></a> <br><nobr>control <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/creating_a_new_study.htm"><b>2</b></a> </nobr><br><a href="../kernel/salome_pro_desktop.htm"><b>convenience</b></a> <br><a href="../kernel/introduction_to_salome_pro.htm"><b>cooperate</b></a> <br><nobr>copied <a href="../kernel/copyright_notice.htm"><b>1</b></a> <a href="../kernel/using_usecase_browser.htm"><b>2</b></a> </nobr><br><nobr>copy <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/editing_studies.htm"><b>2</b></a> <a href="../kernel/saving_a_study.htm"><b>3</b></a> <a href="../kernel/salome_pro_desktop.htm"><b>4</b></a> </nobr><br><a href="../kernel/salome_pro_desktop.htm"><b>copying</b></a> <br><nobr>copyright <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/copyright_notice.htm"><b>2</b></a> </nobr><br><a href="../kernel/about_salome_pro_architecture.htm"><b>corba</b></a> <br><a href="../kernel/saving_a_study.htm"><b>corner</b></a> <br><a href="../kernel/salome_pro_desktop.htm"><b>correcting</b></a> <br><nobr>corresponding <a href="../kernel/running_salome_pro.htm"><b>1</b></a> <a href="../kernel/readme.html"><b>2</b></a> <a href="../kernel/opening_studies.htm"><b>3</b></a> <a href="../kernel/using_left-hand_tabs.htm"><b>4</b></a> </nobr><br><a href="../kernel/readme.html"><b>correspondingly</b></a> <br><a href="../kernel/readme.html"><b>corresponds</b></a> <br><a href="../kernel/introduction.htm"><b>cost</b></a> <br><a href="../kernel/introduction.htm"><b>costs</b></a> <br><nobr>coupling <a href="../kernel/introduction.htm"><b>1</b></a> <a href="../kernel/about_salome_pro_architecture.htm"><b>2</b></a> </nobr><br><a name="bms_CP"></a><a name="subkey_CP"></a><a href="../kernel/running_salome_pro.htm"><b>cpp</b></a> <br><nobr><a name="bms_CR"></a><a name="subkey_CR"></a>create <a href="../kernel/running_salome_pro.htm"><b>1</b></a> <a href="../kernel/readme.html"><b>2</b></a> <a href="../kernel/getting_started2.htm"><b>3</b></a> <a href="../kernel/creating_a_new_study.htm"><b>4</b></a> <a href="../kernel/about_salome_pro_architecture.htm"><b>5</b></a> <a href="../kernel/using_usecase_browser.htm"><b>6</b></a> <a href="../kernel/using_catalog_generator.htm"><b>7</b></a> <a href="../kernel/setting_preferences.htm"><b>8</b></a> <a href="../kernel/saving_a_study.htm"><b>9</b></a> </nobr><br><nobr>created <a href="../kernel/running_salome_pro.htm"><b>1</b></a> <a href="../kernel/readme.html"><b>2</b></a> <a href="../kernel/opening_studies.htm"><b>3</b></a> <a href="../kernel/introduction_to_iapp.htm"><b>4</b></a> <a href="../kernel/creating_a_new_study.htm"><b>5</b></a> <a href="../kernel/about_salome_pro_help_system.htm"><b>6</b></a> <a href="../kernel/about_salome_pro_architecture.htm"><b>7</b></a> <a href="../kernel/using_usecase_browser.htm"><b>8</b></a> <a href="../kernel/using_object_browser.htm"><b>9</b></a> <a href="../kernel/setting_preferences.htm"><b>10</b></a> <a href="../kernel/salome_pro_desktop.htm"><b>11</b></a> </nobr><br><nobr>creates <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/using_usecase_browser.htm"><b>2</b></a> </nobr><br><nobr>creating <a href="../kernel/creating_a_new_study.htm"><b>1</b></a> <a href="../kernel/salome_pro_desktop.htm"><b>2</b></a> </nobr><br><nobr>creation <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/introduction_to_iapp.htm"><b>2</b></a> <a href="../kernel/introduction.htm"><b>3</b></a> <a href="../kernel/about_salome_pro_architecture.htm"><b>4</b></a> </nobr><br><a href="../kernel/introduction.htm"><b>critical</b></a> <br><nobr>cross <a href="../kernel/navigating_topics.htm"><b>1</b></a> <a href="../kernel/saving_a_study.htm"><b>2</b></a> </nobr><br><nobr><a name="bms_CS"></a><a name="subkey_CS"></a>csh <a href="../kernel/running_salome_pro.htm"><b>1</b></a> <a href="../kernel/readme.html"><b>2</b></a> </nobr><br><a href="../kernel/running_salome_pro.htm"><b>cshell</b></a> <br><nobr><a name="bms_CU"></a><a name="subkey_CU"></a>current <a href="../kernel/running_salome_pro.htm"><b>1</b></a> <a href="../kernel/getting_properties_of_the_study.htm"><b>2</b></a> <a href="../kernel/using_usecase_browser.htm"><b>3</b></a> <a href="../kernel/using_registry.htm"><b>4</b></a> <a href="../kernel/using_object_browser.htm"><b>5</b></a> <a href="../kernel/setting_preferences.htm"><b>6</b></a> <a href="../kernel/saving_a_study.htm"><b>7</b></a> </nobr><br><nobr>currently <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/navigating_topics.htm"><b>2</b></a> <a href="../kernel/editing_studies.htm"><b>3</b></a> <a href="../kernel/using_usecase_browser.htm"><b>4</b></a> <a href="../kernel/using_registry.htm"><b>5</b></a> <a href="../kernel/using_object_browser.htm"><b>6</b></a> <a href="../kernel/setting_preferences.htm"><b>7</b></a> </nobr><br><nobr>custom <a href="../kernel/using_usecase_browser.htm"><b>1</b></a> <a href="../kernel/using_catalog_generator.htm"><b>2</b></a> <a href="../kernel/setting_preferences.htm"><b>3</b></a> </nobr><br><a href="../kernel/introduction.htm"><b>customer</b></a> <br><a href="../kernel/readme.html"><b>cut</b></a> <br>\r
 <br><br>\r
-<nobr><a name="bm_D"></a><a name="subkey_D{"></a>d <a href="../files/readme.html"><b>1</b></a> <a href="../files/installing_salome_pro.htm"><b>2</b></a> </nobr><br><nobr><a name="bms_DA"></a><a name="subkey_DA"></a>data <a href="../files/readme.html"><b>1</b></a> <a href="../files/introduction_to_salome_pro.htm"><b>2</b></a> <a href="../files/introduction_to_iapp.htm"><b>3</b></a> <a href="../files/installing_salome_pro.htm"><b>4</b></a> <a href="../files/getting_started2.htm"><b>5</b></a> <a href="../files/about_salome_pro_architecture.htm"><b>6</b></a> <a href="../files/setting_preferences.htm"><b>7</b></a> <a href="../files/saving_a_study.htm"><b>8</b></a> </nobr><br><a href="../files/about_salome_pro_architecture.htm"><b>database</b></a> <br><nobr>date <a href="../files/getting_properties_of_the_study.htm"><b>1</b></a> <a href="../files/using_registry.htm"><b>2</b></a> </nobr><br><a name="bms_DE"></a><a name="subkey_DE"></a><a href="../files/copyright_notice.htm"><b>de</b></a> <br><a href="../files/using_object_browser.htm"><b>debugging</b></a> <br><a href="../files/installing_salome_pro.htm"><b>decrease</b></a> <br><nobr>default <a href="../files/readme.html"><b>1</b></a> <a href="../files/installing_salome_pro.htm"><b>2</b></a> <a href="../files/displaying_hiding_toolbars.htm"><b>3</b></a> <a href="../files/creating_a_new_study.htm"><b>4</b></a> <a href="../files/using_usecase_browser.htm"><b>5</b></a> <a href="../files/using_object_browser.htm"><b>6</b></a> <a href="../files/setting_preferences.htm"><b>7</b></a> <a href="../files/saving_a_study.htm"><b>8</b></a> <a href="../files/running_salome_pro.htm"><b>9</b></a> </nobr><br><nobr>define <a href="../files/readme.html"><b>1</b></a> <a href="../files/setting_preferences.htm"><b>2</b></a> </nobr><br><a href="../files/using_usecase_browser.htm"><b>defined</b></a> <br><nobr>definite <a href="../files/installing_salome_pro.htm"><b>1</b></a> <a href="../files/editing_studies.htm"><b>2</b></a> <a href="../files/displaying_hiding_toolbars.htm"><b>3</b></a> <a href="../files/creating_a_new_study.htm"><b>4</b></a> <a href="../files/about_salome_pro_architecture.htm"><b>5</b></a> <a href="../files/using_usecase_browser.htm"><b>6</b></a> <a href="../files/using_registry.htm"><b>7</b></a> <a href="../files/using_object_browser.htm"><b>8</b></a> <a href="../files/setting_preferences.htm"><b>9</b></a> <a href="../files/saving_a_study.htm"><b>10</b></a> <a href="../files/running_salome_pro.htm"><b>11</b></a> </nobr><br><nobr>definition <a href="../files/about_salome_pro_architecture.htm"><b>1</b></a> <a href="../files/using_left-hand_tabs.htm"><b>2</b></a> </nobr><br><a href="../files/using_left-hand_tabs.htm"><b>definitions</b></a> <br><a href="../files/introduction.htm"><b>demands</b></a> <br><a href="../files/readme.html"><b>dependancies</b></a> <br><a href="../files/readme.html"><b>dependencies</b></a> <br><nobr>depending <a href="../files/readme.html"><b>1</b></a> <a href="../files/setting_preferences.htm"><b>2</b></a> </nobr><br><nobr>depends <a href="../files/using_usecase_browser.htm"><b>1</b></a> <a href="../files/using_object_browser.htm"><b>2</b></a> </nobr><br><nobr>derived <a href="../files/introduction.htm"><b>1</b></a> <a href="../files/about_salome_pro_architecture.htm"><b>2</b></a> </nobr><br><a href="../files/using_object_browser.htm"><b>descending</b></a> <br><nobr>described <a href="../files/readme.html"><b>1</b></a> <a href="../files/installing_salome_pro.htm"><b>2</b></a> <a href="../files/copyright_notice.htm"><b>3</b></a> <a href="../files/about_salome_pro_architecture.htm"><b>4</b></a> </nobr><br><nobr>describes <a href="../files/readme.html"><b>1</b></a> <a href="../files/installing_salome_pro.htm"><b>2</b></a> </nobr><br><nobr>describing <a href="../files/about_salome_pro_help_system.htm"><b>1</b></a> <a href="../files/using_catalog_generator.htm"><b>2</b></a> </nobr><br><nobr>description <a href="../files/readme.html"><b>1</b></a> <a href="../files/installing_salome_pro.htm"><b>2</b></a> <a href="../files/using_catalog_generator.htm"><b>3</b></a> <a href="../files/running_salome_pro.htm"><b>4</b></a> </nobr><br><nobr>descriptions <a href="../files/readme.html"><b>1</b></a> <a href="../files/installing_salome_pro.htm"><b>2</b></a> <a href="../files/using_catalog_generator.htm"><b>3</b></a> </nobr><br><a href="../files/introduction.htm"><b>design</b></a> <br><a href="../files/using_catalog_generator.htm"><b>desired</b></a> <br><nobr>desktop <a href="../files/readme.html"><b>1</b></a> <a href="../files/introduction_to_iapp.htm"><b>2</b></a> <a href="../files/getting_started2.htm"><b>3</b></a> <a href="../files/displaying_studies.htm"><b>4</b></a> <a href="../files/displaying_hiding_toolbars.htm"><b>5</b></a> <a href="../files/saving_a_study.htm"><b>6</b></a> <a href="../files/salome_pro_desktop.htm"><b>7</b></a> </nobr><br><a href="../files/navigating_topics.htm"><b>destination</b></a> <br><nobr>destined <a href="../files/getting_started2.htm"><b>1</b></a> <a href="../files/using_usecase_browser.htm"><b>2</b></a> <a href="../files/using_registry.htm"><b>3</b></a> <a href="../files/using_object_browser.htm"><b>4</b></a> <a href="../files/salome_pro_desktop.htm"><b>5</b></a> </nobr><br><a href="../files/installing_salome_pro.htm"><b>detail</b></a> <br><a href="../files/installing_salome_pro.htm"><b>detailed</b></a> <br><a href="../files/readme.html"><b>details</b></a> <br><a href="../files/about_salome_pro_architecture.htm"><b>developer</b></a> <br><nobr>development <a href="../files/introduction.htm"><b>1</b></a> <a href="../files/about_salome_pro_architecture.htm"><b>2</b></a> </nobr><br><nobr>developments <a href="../files/introduction.htm"><b>1</b></a> <a href="../files/about_salome_pro_architecture.htm"><b>2</b></a> </nobr><br><br><br></p><p class="ftsbody" align="center"><a href="whlstf2.htm" target="_self" title="previous search group"><b>&gt;&gt;</b></a>\r
+<a name="bm_D"></a><a name="subkey_D{"></a><a href="../kernel/readme.html"><b>d</b></a> <br><nobr><a name="bms_DA"></a><a name="subkey_DA"></a>data <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/introduction_to_salome_pro.htm"><b>2</b></a> <a href="../kernel/introduction_to_iapp.htm"><b>3</b></a> <a href="../kernel/getting_started2.htm"><b>4</b></a> <a href="../kernel/about_salome_pro_architecture.htm"><b>5</b></a> <a href="../kernel/setting_preferences.htm"><b>6</b></a> <a href="../kernel/saving_a_study.htm"><b>7</b></a> </nobr><br><a href="../kernel/about_salome_pro_architecture.htm"><b>database</b></a> <br><nobr>date <a href="../kernel/getting_properties_of_the_study.htm"><b>1</b></a> <a href="../kernel/using_registry.htm"><b>2</b></a> </nobr><br><a name="bms_DE"></a><a name="subkey_DE"></a><a href="../kernel/copyright_notice.htm"><b>de</b></a> <br><a href="../kernel/using_object_browser.htm"><b>debugging</b></a> <br><nobr>default <a href="../kernel/running_salome_pro.htm"><b>1</b></a> <a href="../kernel/readme.html"><b>2</b></a> <a href="../kernel/displaying_hiding_toolbars.htm"><b>3</b></a> <a href="../kernel/creating_a_new_study.htm"><b>4</b></a> <a href="../kernel/using_usecase_browser.htm"><b>5</b></a> <a href="../kernel/using_object_browser.htm"><b>6</b></a> <a href="../kernel/setting_preferences.htm"><b>7</b></a> <a href="../kernel/saving_a_study.htm"><b>8</b></a> </nobr><br><nobr>define <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/setting_preferences.htm"><b>2</b></a> </nobr><br><a href="../kernel/using_usecase_browser.htm"><b>defined</b></a> <br><nobr>definite <a href="../kernel/running_salome_pro.htm"><b>1</b></a> <a href="../kernel/editing_studies.htm"><b>2</b></a> <a href="../kernel/displaying_hiding_toolbars.htm"><b>3</b></a> <a href="../kernel/creating_a_new_study.htm"><b>4</b></a> <a href="../kernel/about_salome_pro_architecture.htm"><b>5</b></a> <a href="../kernel/using_usecase_browser.htm"><b>6</b></a> <a href="../kernel/using_registry.htm"><b>7</b></a> <a href="../kernel/using_object_browser.htm"><b>8</b></a> <a href="../kernel/setting_preferences.htm"><b>9</b></a> <a href="../kernel/saving_a_study.htm"><b>10</b></a> </nobr><br><nobr>definition <a href="../kernel/about_salome_pro_architecture.htm"><b>1</b></a> <a href="../kernel/using_left-hand_tabs.htm"><b>2</b></a> </nobr><br><a href="../kernel/using_left-hand_tabs.htm"><b>definitions</b></a> <br><a href="../kernel/introduction.htm"><b>demands</b></a> <br><a href="../kernel/readme.html"><b>dependancies</b></a> <br><a href="../kernel/readme.html"><b>dependencies</b></a> <br><nobr>depending <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/setting_preferences.htm"><b>2</b></a> </nobr><br><nobr>depends <a href="../kernel/using_usecase_browser.htm"><b>1</b></a> <a href="../kernel/using_object_browser.htm"><b>2</b></a> </nobr><br><nobr>derived <a href="../kernel/introduction.htm"><b>1</b></a> <a href="../kernel/about_salome_pro_architecture.htm"><b>2</b></a> </nobr><br><a href="../kernel/using_object_browser.htm"><b>descending</b></a> <br><nobr>described <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/copyright_notice.htm"><b>2</b></a> <a href="../kernel/about_salome_pro_architecture.htm"><b>3</b></a> </nobr><br><a href="../kernel/readme.html"><b>describes</b></a> <br><nobr>describing <a href="../kernel/about_salome_pro_help_system.htm"><b>1</b></a> <a href="../kernel/using_catalog_generator.htm"><b>2</b></a> </nobr><br><nobr>description <a href="../kernel/running_salome_pro.htm"><b>1</b></a> <a href="../kernel/readme.html"><b>2</b></a> <a href="../kernel/using_catalog_generator.htm"><b>3</b></a> </nobr><br><nobr>descriptions <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/using_catalog_generator.htm"><b>2</b></a> </nobr><br><a href="../kernel/introduction.htm"><b>design</b></a> <br><a href="../kernel/using_catalog_generator.htm"><b>desired</b></a> <br><nobr>desktop <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/introduction_to_iapp.htm"><b>2</b></a> <a href="../kernel/getting_started2.htm"><b>3</b></a> <a href="../kernel/displaying_studies.htm"><b>4</b></a> <a href="../kernel/displaying_hiding_toolbars.htm"><b>5</b></a> <a href="../kernel/saving_a_study.htm"><b>6</b></a> <a href="../kernel/salome_pro_desktop.htm"><b>7</b></a> </nobr><br><a href="../kernel/navigating_topics.htm"><b>destination</b></a> <br><nobr>destined <a href="../kernel/getting_started2.htm"><b>1</b></a> <a href="../kernel/using_usecase_browser.htm"><b>2</b></a> <a href="../kernel/using_registry.htm"><b>3</b></a> <a href="../kernel/using_object_browser.htm"><b>4</b></a> <a href="../kernel/salome_pro_desktop.htm"><b>5</b></a> </nobr><br><a href="../kernel/readme.html"><b>details</b></a> <br><a href="../kernel/about_salome_pro_architecture.htm"><b>developer</b></a> <br><nobr>development <a href="../kernel/introduction.htm"><b>1</b></a> <a href="../kernel/about_salome_pro_architecture.htm"><b>2</b></a> </nobr><br><nobr>developments <a href="../kernel/introduction.htm"><b>1</b></a> <a href="../kernel/about_salome_pro_architecture.htm"><b>2</b></a> </nobr><br><br><br></p><p class="ftsbody" align="center"><a href="whlstf2.htm" target="_self" title="previous search group"><b>&gt;&gt;</b></a>\r
 \r
 </body>\r
 \r
index 14f1a821b75a481783662bbfe8eaccd6353ab969..bdde8853b73253692d632bcdfb824ffe75b7605a 100755 (executable)
@@ -1,9 +1,9 @@
 <html>\r
 <head>\r
 <title>Search Words List</title>\r
-<meta http-equiv="content-type" content="text/html; charset=iso-8859-1">\r
+\r
 <meta name="generator" content="RoboHelp by eHelp Corporation   www.ehelp.com">\r
-<meta name "description" content="WebHelp 2002">\r
+<meta name="description" content="WebHelp 5.50">\r
 <base target="bsscright">\r
 <style>\r
 <!--\r
@@ -30,14 +30,14 @@ A:hover {color:Navy; } A:hover {font-family:Tahoma; } A:hover {font-size:8pt; }
 -->\r
 </style>\r
 </head>\r
-<body marginheight="0"  marginwidth="0">\r
+<body marginheight="0"  marginwidth="0" bgproperties="fixed">\r
 <p class="ftsbody" align="center"><a href="whlstf1.htm" target="_self" title="previous search group"><b>&lt;&lt;</b></a><br><br></p>\r
-<p class="ftsbody">\r
-<nobr><a name="bms_DI"></a><a name="subkey_DI"></a>dialog <a href="../files/readme.html"><b>1</b></a> <a href="../files/opening_studies.htm"><b>2</b></a> <a href="../files/installing_salome_pro.htm"><b>3</b></a> <a href="../files/getting_properties_of_the_study.htm"><b>4</b></a> <a href="../files/using_registry.htm"><b>5</b></a> <a href="../files/using_left-hand_tabs.htm"><b>6</b></a> <a href="../files/using_catalog_generator.htm"><b>7</b></a> <a href="../files/saving_a_study.htm"><b>8</b></a> </nobr><br><nobr>differ <a href="../files/readme.html"><b>1</b></a> <a href="../files/installing_salome_pro.htm"><b>2</b></a> </nobr><br><nobr>different <a href="../files/readme.html"><b>1</b></a> <a href="../files/opening_studies.htm"><b>2</b></a> <a href="../files/installing_salome_pro.htm"><b>3</b></a> <a href="../files/getting_started2.htm"><b>4</b></a> <a href="../files/displaying_studies.htm"><b>5</b></a> <a href="../files/creating_a_new_study.htm"><b>6</b></a> <a href="../files/about_salome_pro_help_system.htm"><b>7</b></a> <a href="../files/about_salome_pro_architecture.htm"><b>8</b></a> <a href="../files/using_usecase_browser.htm"><b>9</b></a> <a href="../files/using_object_browser.htm"><b>10</b></a> <a href="../files/salome_pro_desktop.htm"><b>11</b></a> </nobr><br><a href="../files/introduction.htm"><b>digital</b></a> <br><a href="../files/readme.html"><b>dir</b></a> <br><a href="../files/using_left-hand_tabs.htm"><b>direct</b></a> <br><a href="../files/installing_salome_pro.htm"><b>directly</b></a> <br><nobr>directories <a href="../files/readme.html"><b>1</b></a> <a href="../files/installing_salome_pro.htm"><b>2</b></a> <a href="../files/setting_preferences.htm"><b>3</b></a> </nobr><br><nobr>directory <a href="../files/readme.html"><b>1</b></a> <a href="../files/installing_salome_pro.htm"><b>2</b></a> <a href="../files/using_catalog_generator.htm"><b>3</b></a> <a href="../files/setting_preferences.htm"><b>4</b></a> <a href="../files/saving_a_study.htm"><b>5</b></a> <a href="../files/running_salome_pro.htm"><b>6</b></a> </nobr><br><nobr>disable <a href="../files/readme.html"><b>1</b></a> <a href="../files/setting_preferences.htm"><b>2</b></a> </nobr><br><a href="../files/readme.html"><b>disable_flag</b></a> <br><a href="../files/installing_salome_pro.htm"><b>disabled</b></a> <br><nobr>disk <a href="../files/readme.html"><b>1</b></a> <a href="../files/installing_salome_pro.htm"><b>2</b></a> <a href="../files/running_salome_pro.htm"><b>3</b></a> </nobr><br><nobr>display <a href="../files/displaying_studies.htm"><b>1</b></a> <a href="../files/displaying_hiding_toolbars.htm"><b>2</b></a> <a href="../files/using_registry.htm"><b>3</b></a> <a href="../files/using_left-hand_tabs.htm"><b>4</b></a> </nobr><br><nobr>displayed <a href="../files/readme.html"><b>1</b></a> <a href="../files/installing_salome_pro.htm"><b>2</b></a> <a href="../files/displaying_studies.htm"><b>3</b></a> <a href="../files/using_usecase_browser.htm"><b>4</b></a> <a href="../files/using_object_browser.htm"><b>5</b></a> <a href="../files/using_left-hand_tabs.htm"><b>6</b></a> <a href="../files/setting_preferences.htm"><b>7</b></a> <a href="../files/salome_pro_desktop.htm"><b>8</b></a> <a href="../files/running_salome_pro.htm"><b>9</b></a> </nobr><br><nobr>displaying <a href="../files/displaying_studies.htm"><b>1</b></a> <a href="../files/displaying_hiding_toolbars.htm"><b>2</b></a> <a href="../files/using_usecase_browser.htm"><b>3</b></a> <a href="../files/using_object_browser.htm"><b>4</b></a> </nobr><br><nobr>displays <a href="../files/readme.html"><b>1</b></a> <a href="../files/navigating_topics.htm"><b>2</b></a> <a href="../files/installing_salome_pro.htm"><b>3</b></a> <a href="../files/using_registry.htm"><b>4</b></a> <a href="../files/using_object_browser.htm"><b>5</b></a> <a href="../files/using_left-hand_tabs.htm"><b>6</b></a> <a href="../files/setting_preferences.htm"><b>7</b></a> <a href="../files/salome_pro_desktop.htm"><b>8</b></a> </nobr><br><a href="../files/about_salome_pro_architecture.htm"><b>distinction</b></a> <br><a href="../files/about_salome_pro_architecture.htm"><b>distributed</b></a> <br><nobr>divided <a href="../files/about_salome_pro_help_system.htm"><b>1</b></a> <a href="../files/using_registry.htm"><b>2</b></a> </nobr><br><a name="bms_DO"></a><a name="subkey_DO"></a><a href="../files/installing_salome_pro.htm"><b>docs</b></a> <br><nobr>document <a href="../files/readme.html"><b>1</b></a> <a href="../files/getting_started2.htm"><b>2</b></a> <a href="../files/copyright_notice.htm"><b>3</b></a> <a href="../files/salome_pro_desktop.htm"><b>4</b></a> </nobr><br><nobr>does <a href="../files/readme.html"><b>1</b></a> <a href="../files/installing_salome_pro.htm"><b>2</b></a> </nobr><br><a href="../files/installing_salome_pro.htm"><b>doesn</b></a> <br><nobr>domain <a href="../files/introduction_to_salome_pro.htm"><b>1</b></a> <a href="../files/introduction.htm"><b>2</b></a> <a href="../files/about_salome_pro_architecture.htm"><b>3</b></a> </nobr><br><a href="../files/copyright_notice.htm"><b>domaine</b></a> <br><a href="../files/using_catalog_generator.htm"><b>don</b></a> <br><nobr>done <a href="../files/readme.html"><b>1</b></a> <a href="../files/installing_salome_pro.htm"><b>2</b></a> </nobr><br><nobr>dot <a href="../files/readme.html"><b>1</b></a> <a href="../files/installing_salome_pro.htm"><b>2</b></a> </nobr><br><a href="../files/using_registry.htm"><b>double</b></a> <br><nobr>down <a href="../files/navigating_topics.htm"><b>1</b></a> <a href="../files/getting_properties_of_the_study.htm"><b>2</b></a> <a href="../files/using_object_browser.htm"><b>3</b></a> </nobr><br><nobr>doxygen <a href="../files/readme.html"><b>1</b></a> <a href="../files/installing_salome_pro.htm"><b>2</b></a> </nobr><br><nobr>doxysearch <a href="../files/readme.html"><b>1</b></a> <a href="../files/installing_salome_pro.htm"><b>2</b></a> </nobr><br><nobr>doxytag <a href="../files/readme.html"><b>1</b></a> <a href="../files/installing_salome_pro.htm"><b>2</b></a> </nobr><br><nobr>doxywizard <a href="../files/readme.html"><b>1</b></a> <a href="../files/installing_salome_pro.htm"><b>2</b></a> </nobr><br><a name="bms_DR"></a><a name="subkey_DR"></a><a href="../files/using_usecase_browser.htm"><b>drag</b></a> <br><a href="../files/displaying_hiding_toolbars.htm"><b>dragging</b></a> <br><a href="../files/about_salome_pro_architecture.htm"><b>dramatically</b></a> <br><nobr>drive <a href="../files/readme.html"><b>1</b></a> <a href="../files/installing_salome_pro.htm"><b>2</b></a> </nobr><br><nobr>driver <a href="../files/readme.html"><b>1</b></a> <a href="../files/installing_salome_pro.htm"><b>2</b></a> </nobr><br><nobr>drivers <a href="../files/readme.html"><b>1</b></a> <a href="../files/installing_salome_pro.htm"><b>2</b></a> </nobr><br><nobr>drop <a href="../files/navigating_topics.htm"><b>1</b></a> <a href="../files/using_usecase_browser.htm"><b>2</b></a> </nobr><br><a href="../files/displaying_hiding_toolbars.htm"><b>dropping</b></a> <br><a name="bms_DU"></a><a name="subkey_DU"></a><a href="../files/salome_pro_desktop.htm"><b>dump</b></a> <br><a name="bms_DY"></a><a name="subkey_DY"></a><a href="../files/introduction_to_salome_pro.htm"><b>dynamically</b></a> <br>\r
+<p class="ftsbody" >\r
+<nobr><a name="bms_DI"></a><a name="subkey_DI"></a>dialog <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/opening_studies.htm"><b>2</b></a> <a href="../kernel/getting_properties_of_the_study.htm"><b>3</b></a> <a href="../kernel/using_registry.htm"><b>4</b></a> <a href="../kernel/using_left-hand_tabs.htm"><b>5</b></a> <a href="../kernel/using_catalog_generator.htm"><b>6</b></a> <a href="../kernel/saving_a_study.htm"><b>7</b></a> </nobr><br><a href="../kernel/readme.html"><b>differ</b></a> <br><nobr>different <a href="../kernel/running_salome_pro.htm"><b>1</b></a> <a href="../kernel/readme.html"><b>2</b></a> <a href="../kernel/opening_studies.htm"><b>3</b></a> <a href="../kernel/getting_started2.htm"><b>4</b></a> <a href="../kernel/displaying_studies.htm"><b>5</b></a> <a href="../kernel/creating_a_new_study.htm"><b>6</b></a> <a href="../kernel/about_salome_pro_help_system.htm"><b>7</b></a> <a href="../kernel/about_salome_pro_architecture.htm"><b>8</b></a> <a href="../kernel/using_usecase_browser.htm"><b>9</b></a> <a href="../kernel/using_object_browser.htm"><b>10</b></a> <a href="../kernel/salome_pro_desktop.htm"><b>11</b></a> </nobr><br><a href="../kernel/introduction.htm"><b>digital</b></a> <br><a href="../kernel/readme.html"><b>dir</b></a> <br><a href="../kernel/using_left-hand_tabs.htm"><b>direct</b></a> <br><nobr>directories <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/setting_preferences.htm"><b>2</b></a> </nobr><br><nobr>directory <a href="../kernel/running_salome_pro.htm"><b>1</b></a> <a href="../kernel/readme.html"><b>2</b></a> <a href="../kernel/using_catalog_generator.htm"><b>3</b></a> <a href="../kernel/setting_preferences.htm"><b>4</b></a> <a href="../kernel/saving_a_study.htm"><b>5</b></a> </nobr><br><nobr>disable <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/setting_preferences.htm"><b>2</b></a> </nobr><br><a href="../kernel/readme.html"><b>disable_flag</b></a> <br><nobr>disk <a href="../kernel/running_salome_pro.htm"><b>1</b></a> <a href="../kernel/readme.html"><b>2</b></a> </nobr><br><nobr>display <a href="../kernel/displaying_studies.htm"><b>1</b></a> <a href="../kernel/displaying_hiding_toolbars.htm"><b>2</b></a> <a href="../kernel/using_registry.htm"><b>3</b></a> <a href="../kernel/using_left-hand_tabs.htm"><b>4</b></a> </nobr><br><nobr>displayed <a href="../kernel/running_salome_pro.htm"><b>1</b></a> <a href="../kernel/readme.html"><b>2</b></a> <a href="../kernel/displaying_studies.htm"><b>3</b></a> <a href="../kernel/using_usecase_browser.htm"><b>4</b></a> <a href="../kernel/using_object_browser.htm"><b>5</b></a> <a href="../kernel/using_left-hand_tabs.htm"><b>6</b></a> <a href="../kernel/setting_preferences.htm"><b>7</b></a> <a href="../kernel/salome_pro_desktop.htm"><b>8</b></a> </nobr><br><nobr>displaying <a href="../kernel/displaying_studies.htm"><b>1</b></a> <a href="../kernel/displaying_hiding_toolbars.htm"><b>2</b></a> <a href="../kernel/using_usecase_browser.htm"><b>3</b></a> <a href="../kernel/using_object_browser.htm"><b>4</b></a> </nobr><br><nobr>displays <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/navigating_topics.htm"><b>2</b></a> <a href="../kernel/using_registry.htm"><b>3</b></a> <a href="../kernel/using_object_browser.htm"><b>4</b></a> <a href="../kernel/using_left-hand_tabs.htm"><b>5</b></a> <a href="../kernel/setting_preferences.htm"><b>6</b></a> <a href="../kernel/salome_pro_desktop.htm"><b>7</b></a> </nobr><br><a href="../kernel/about_salome_pro_architecture.htm"><b>distinction</b></a> <br><a href="../kernel/about_salome_pro_architecture.htm"><b>distributed</b></a> <br><nobr>divided <a href="../kernel/about_salome_pro_help_system.htm"><b>1</b></a> <a href="../kernel/using_registry.htm"><b>2</b></a> </nobr><br><nobr><a name="bms_DO"></a><a name="subkey_DO"></a>document <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/getting_started2.htm"><b>2</b></a> <a href="../kernel/copyright_notice.htm"><b>3</b></a> <a href="../kernel/salome_pro_desktop.htm"><b>4</b></a> </nobr><br><a href="../kernel/readme.html"><b>does</b></a> <br><nobr>domain <a href="../kernel/introduction_to_salome_pro.htm"><b>1</b></a> <a href="../kernel/introduction.htm"><b>2</b></a> <a href="../kernel/about_salome_pro_architecture.htm"><b>3</b></a> </nobr><br><a href="../kernel/copyright_notice.htm"><b>domaine</b></a> <br><a href="../kernel/using_catalog_generator.htm"><b>don</b></a> <br><a href="../kernel/readme.html"><b>done</b></a> <br><a href="../kernel/readme.html"><b>dot</b></a> <br><a href="../kernel/using_registry.htm"><b>double</b></a> <br><nobr>down <a href="../kernel/navigating_topics.htm"><b>1</b></a> <a href="../kernel/getting_properties_of_the_study.htm"><b>2</b></a> <a href="../kernel/using_object_browser.htm"><b>3</b></a> </nobr><br><a href="../kernel/readme.html"><b>doxygen</b></a> <br><a href="../kernel/readme.html"><b>doxysearch</b></a> <br><a href="../kernel/readme.html"><b>doxytag</b></a> <br><a href="../kernel/readme.html"><b>doxywizard</b></a> <br><a name="bms_DR"></a><a name="subkey_DR"></a><a href="../kernel/using_usecase_browser.htm"><b>drag</b></a> <br><a href="../kernel/displaying_hiding_toolbars.htm"><b>dragging</b></a> <br><a href="../kernel/about_salome_pro_architecture.htm"><b>dramatically</b></a> <br><a href="../kernel/readme.html"><b>drive</b></a> <br><a href="../kernel/readme.html"><b>driver</b></a> <br><a href="../kernel/readme.html"><b>drivers</b></a> <br><nobr>drop <a href="../kernel/navigating_topics.htm"><b>1</b></a> <a href="../kernel/using_usecase_browser.htm"><b>2</b></a> </nobr><br><a href="../kernel/displaying_hiding_toolbars.htm"><b>dropping</b></a> <br><a name="bms_DU"></a><a name="subkey_DU"></a><a href="../kernel/salome_pro_desktop.htm"><b>dump</b></a> <br><a name="bms_DY"></a><a name="subkey_DY"></a><a href="../kernel/introduction_to_salome_pro.htm"><b>dynamically</b></a> <br>\r
 <br><br>\r
-<nobr><a name="bm_E"></a><a name="subkey_E{"></a>e <a href="../files/readme.html"><b>1</b></a> <a href="../files/installing_salome_pro.htm"><b>2</b></a> </nobr><br><a name="bms_EA"></a><a name="subkey_EA"></a><a href="../files/introduction.htm"><b>eases</b></a> <br><a href="../files/about_salome_pro_architecture.htm"><b>easily</b></a> <br><a href="../files/about_salome_pro_architecture.htm"><b>easy</b></a> <br><nobr><a name="bms_EC"></a><a name="subkey_EC"></a>echo <a href="../files/readme.html"><b>1</b></a> <a href="../files/installing_salome_pro.htm"><b>2</b></a> </nobr><br><a href="../files/about_salome_pro_architecture.htm"><b>economically</b></a> <br><nobr><a name="bms_ED"></a><a name="subkey_ED"></a>edit <a href="../files/readme.html"><b>1</b></a> <a href="../files/installing_salome_pro.htm"><b>2</b></a> <a href="../files/getting_properties_of_the_study.htm"><b>3</b></a> <a href="../files/editing_studies.htm"><b>4</b></a> </nobr><br><nobr>editing <a href="../files/introduction_to_iapp.htm"><b>1</b></a> <a href="../files/editing_studies.htm"><b>2</b></a> </nobr><br><a name="bms_EF"></a><a name="subkey_EF"></a><a href="../files/introduction.htm"><b>efficient</b></a> <br><a name="bms_EI"></a><a name="subkey_EI"></a><a href="../files/using_catalog_generator.htm"><b>either</b></a> <br><a name="bms_EL"></a><a name="subkey_EL"></a><a href="../files/introduction.htm"><b>electrical</b></a> <br><nobr>electronic <a href="../files/introduction.htm"><b>1</b></a> <a href="../files/copyright_notice.htm"><b>2</b></a> </nobr><br><a href="../files/installing_salome_pro.htm"><b>else</b></a> <br><nobr><a name="bms_EM"></a><a name="subkey_EM"></a>empty <a href="../files/readme.html"><b>1</b></a> <a href="../files/installing_salome_pro.htm"><b>2</b></a> </nobr><br><a name="bms_EN"></a><a name="subkey_EN"></a><a href="../files/setting_preferences.htm"><b>enable</b></a> <br><a href="../files/installing_salome_pro.htm"><b>enabled</b></a> <br><a href="../files/using_left-hand_tabs.htm"><b>enables</b></a> <br><a href="../files/introduction_to_salome_pro.htm"><b>enabling</b></a> <br><a href="../files/introduction_to_salome_pro.htm"><b>encapsulates</b></a> <br><a href="../files/about_salome_pro_architecture.htm"><b>encouraging</b></a> <br><nobr>end <a href="../files/readme.html"><b>1</b></a> <a href="../files/installing_salome_pro.htm"><b>2</b></a> <a href="../files/setting_preferences.htm"><b>3</b></a> </nobr><br><a href="../files/about_salome_pro_architecture.htm"><b>enforcing</b></a> <br><a href="../files/introduction_to_iapp.htm"><b>eng</b></a> <br><nobr>enough <a href="../files/readme.html"><b>1</b></a> <a href="../files/installing_salome_pro.htm"><b>2</b></a> </nobr><br><a href="../files/introduction.htm"><b>ensure</b></a> <br><a href="../files/about_salome_pro_architecture.htm"><b>ensuring</b></a> <br><nobr>enter <a href="../files/readme.html"><b>1</b></a> <a href="../files/installing_salome_pro.htm"><b>2</b></a> <a href="../files/getting_properties_of_the_study.htm"><b>3</b></a> <a href="../files/saving_a_study.htm"><b>4</b></a> <a href="../files/running_salome_pro.htm"><b>5</b></a> </nobr><br><nobr>entered <a href="../files/readme.html"><b>1</b></a> <a href="../files/installing_salome_pro.htm"><b>2</b></a> </nobr><br><nobr>entry <a href="../files/readme.html"><b>1</b></a> <a href="../files/installing_salome_pro.htm"><b>2</b></a> <a href="../files/using_object_browser.htm"><b>3</b></a> <a href="../files/setting_preferences.htm"><b>4</b></a> </nobr><br><a href="../files/running_salome_pro.htm"><b>env</b></a> <br><a href="../files/readme.html"><b>env_</b></a> <br><a href="../files/readme.html"><b>env_products</b></a> <br><a href="../files/readme.html"><b>env_vtk</b></a> <br><nobr>environment <a href="../files/readme.html"><b>1</b></a> <a href="../files/introduction_to_iapp.htm"><b>2</b></a> <a href="../files/introduction.htm"><b>3</b></a> <a href="../files/installing_salome_pro.htm"><b>4</b></a> <a href="../files/getting_started2.htm"><b>5</b></a> <a href="../files/running_salome_pro.htm"><b>6</b></a> </nobr><br><nobr>environments <a href="../files/introduction.htm"><b>1</b></a> <a href="../files/about_salome_pro_architecture.htm"><b>2</b></a> </nobr><br><nobr><a name="bms_EQ"></a><a name="subkey_EQ"></a>equal <a href="../files/readme.html"><b>1</b></a> <a href="../files/installing_salome_pro.htm"><b>2</b></a> </nobr><br><a href="../files/introduction.htm"><b>equipment</b></a> <br><nobr><a name="bms_ER"></a><a name="subkey_ER"></a>error <a href="../files/readme.html"><b>1</b></a> <a href="../files/installing_salome_pro.htm"><b>2</b></a> </nobr><br><a href="../files/copyright_notice.htm"><b>errors</b></a> <br><nobr><a name="bms_ET"></a><a name="subkey_ET"></a>etc <a href="../files/readme.html"><b>1</b></a> <a href="../files/displaying_hiding_toolbars.htm"><b>2</b></a> <a href="../files/about_salome_pro_architecture.htm"><b>3</b></a> </nobr><br><nobr><a name="bms_EV"></a><a name="subkey_EV"></a>even <a href="../files/installing_salome_pro.htm"><b>1</b></a> <a href="../files/about_salome_pro_architecture.htm"><b>2</b></a> </nobr><br><a href="../files/using_registry.htm"><b>ever</b></a> <br><nobr>every <a href="../files/introduction_to_salome_pro.htm"><b>1</b></a> <a href="../files/introduction.htm"><b>2</b></a> <a href="../files/using_left-hand_tabs.htm"><b>3</b></a> </nobr><br><nobr>everything <a href="../files/readme.html"><b>1</b></a> <a href="../files/installing_salome_pro.htm"><b>2</b></a> </nobr><br><a href="../files/introduction.htm"><b>evolutions</b></a> <br><a href="../files/about_salome_pro_architecture.htm"><b>evolve</b></a> <br><a name="bms_EX"></a><a name="subkey_EX"></a><a href="../files/running_salome_pro.htm"><b>ex</b></a> <br><nobr>exact <a href="../files/readme.html"><b>1</b></a> <a href="../files/installing_salome_pro.htm"><b>2</b></a> </nobr><br><nobr>exactly <a href="../files/readme.html"><b>1</b></a> <a href="../files/installing_salome_pro.htm"><b>2</b></a> </nobr><br><a href="../files/readme.html"><b>examle</b></a> <br><nobr>example <a href="../files/readme.html"><b>1</b></a> <a href="../files/introduction.htm"><b>2</b></a> <a href="../files/installing_salome_pro.htm"><b>3</b></a> <a href="../files/using_catalog_generator.htm"><b>4</b></a> </nobr><br><a href="../files/installing_salome_pro.htm"><b>except</b></a> <br><a href="../files/about_salome_pro_architecture.htm"><b>exchanges</b></a> <br><a href="../files/introduction_to_salome_pro.htm"><b>execution</b></a> <br><nobr>exist <a href="../files/readme.html"><b>1</b></a> <a href="../files/installing_salome_pro.htm"><b>2</b></a> </nobr><br><a href="../files/installing_salome_pro.htm"><b>existance</b></a> <br><nobr>existence <a href="../files/readme.html"><b>1</b></a> <a href="../files/installing_salome_pro.htm"><b>2</b></a> </nobr><br><a href="../files/installing_salome_pro.htm"><b>existense</b></a> <br><a href="../files/installing_salome_pro.htm"><b>existent</b></a> <br><nobr>existing <a href="../files/opening_studies.htm"><b>1</b></a> <a href="../files/introduction_to_salome_pro.htm"><b>2</b></a> <a href="../files/about_salome_pro_architecture.htm"><b>3</b></a> <a href="../files/using_catalog_generator.htm"><b>4</b></a> <a href="../files/saving_a_study.htm"><b>5</b></a> </nobr><br><a href="../files/about_salome_pro_architecture.htm"><b>expandability</b></a> <br><a href="../files/navigating_topics.htm"><b>expanding</b></a> <br><a href="../files/introduction.htm"><b>expectations</b></a> <br><a href="../files/about_salome_pro_architecture.htm"><b>exploits</b></a> <br><a href="../files/about_salome_pro_help_system.htm"><b>explorer</b></a> <br><a href="../files/about_salome_pro_architecture.htm"><b>exposes</b></a> <br><a href="../files/saving_a_study.htm"><b>extensions</b></a> <br><a href="../files/setting_preferences.htm"><b>external</b></a> <br><a href="../files/installing_salome_pro.htm"><b>extracted</b></a> <br><nobr>extracting <a href="../files/readme.html"><b>1</b></a> <a href="../files/installing_salome_pro.htm"><b>2</b></a> </nobr><br><a href="../files/introduction.htm"><b>extremely</b></a> <br>\r
+<a name="bm_E"></a><a name="subkey_E{"></a><a href="../kernel/readme.html"><b>e</b></a> <br><a name="bms_EA"></a><a name="subkey_EA"></a><a href="../kernel/introduction.htm"><b>eases</b></a> <br><a href="../kernel/about_salome_pro_architecture.htm"><b>easily</b></a> <br><a href="../kernel/about_salome_pro_architecture.htm"><b>easy</b></a> <br><a name="bms_EC"></a><a name="subkey_EC"></a><a href="../kernel/readme.html"><b>echo</b></a> <br><a href="../kernel/about_salome_pro_architecture.htm"><b>economically</b></a> <br><nobr><a name="bms_ED"></a><a name="subkey_ED"></a>edit <a href="../kernel/running_salome_pro.htm"><b>1</b></a> <a href="../kernel/readme.html"><b>2</b></a> <a href="../kernel/getting_properties_of_the_study.htm"><b>3</b></a> <a href="../kernel/editing_studies.htm"><b>4</b></a> </nobr><br><nobr>editing <a href="../kernel/introduction_to_iapp.htm"><b>1</b></a> <a href="../kernel/editing_studies.htm"><b>2</b></a> </nobr><br><a name="bms_EF"></a><a name="subkey_EF"></a><a href="../kernel/introduction.htm"><b>efficient</b></a> <br><a name="bms_EG"></a><a name="subkey_EG"></a><a href="../kernel/readme.html"><b>egrep</b></a> <br><a name="bms_EI"></a><a name="subkey_EI"></a><a href="../kernel/using_catalog_generator.htm"><b>either</b></a> <br><a name="bms_EL"></a><a name="subkey_EL"></a><a href="../kernel/introduction.htm"><b>electrical</b></a> <br><nobr>electronic <a href="../kernel/introduction.htm"><b>1</b></a> <a href="../kernel/copyright_notice.htm"><b>2</b></a> </nobr><br><a name="bms_EM"></a><a name="subkey_EM"></a><a href="../kernel/readme.html"><b>empty</b></a> <br><a name="bms_EN"></a><a name="subkey_EN"></a><a href="../kernel/setting_preferences.htm"><b>enable</b></a> <br><a href="../kernel/using_left-hand_tabs.htm"><b>enables</b></a> <br><a href="../kernel/introduction_to_salome_pro.htm"><b>enabling</b></a> <br><a href="../kernel/introduction_to_salome_pro.htm"><b>encapsulates</b></a> <br><a href="../kernel/about_salome_pro_architecture.htm"><b>encouraging</b></a> <br><nobr>end <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/setting_preferences.htm"><b>2</b></a> </nobr><br><a href="../kernel/about_salome_pro_architecture.htm"><b>enforcing</b></a> <br><a href="../kernel/introduction_to_iapp.htm"><b>eng</b></a> <br><a href="../kernel/readme.html"><b>enough</b></a> <br><a href="../kernel/introduction.htm"><b>ensure</b></a> <br><a href="../kernel/about_salome_pro_architecture.htm"><b>ensuring</b></a> <br><nobr>enter <a href="../kernel/running_salome_pro.htm"><b>1</b></a> <a href="../kernel/readme.html"><b>2</b></a> <a href="../kernel/getting_properties_of_the_study.htm"><b>3</b></a> <a href="../kernel/saving_a_study.htm"><b>4</b></a> </nobr><br><a href="../kernel/readme.html"><b>entered</b></a> <br><nobr>entry <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/using_object_browser.htm"><b>2</b></a> <a href="../kernel/setting_preferences.htm"><b>3</b></a> </nobr><br><nobr>env <a href="../kernel/running_salome_pro.htm"><b>1</b></a> <a href="../kernel/readme.html"><b>2</b></a> </nobr><br><a href="../kernel/readme.html"><b>env_</b></a> <br><a href="../kernel/readme.html"><b>env_products</b></a> <br><a href="../kernel/readme.html"><b>env_vtk</b></a> <br><nobr>environment <a href="../kernel/running_salome_pro.htm"><b>1</b></a> <a href="../kernel/readme.html"><b>2</b></a> <a href="../kernel/introduction_to_iapp.htm"><b>3</b></a> <a href="../kernel/introduction.htm"><b>4</b></a> <a href="../kernel/getting_started2.htm"><b>5</b></a> </nobr><br><nobr>environments <a href="../kernel/introduction.htm"><b>1</b></a> <a href="../kernel/about_salome_pro_architecture.htm"><b>2</b></a> </nobr><br><a name="bms_EQ"></a><a name="subkey_EQ"></a><a href="../kernel/readme.html"><b>equal</b></a> <br><a href="../kernel/introduction.htm"><b>equipment</b></a> <br><a name="bms_ER"></a><a name="subkey_ER"></a><a href="../kernel/readme.html"><b>error</b></a> <br><a href="../kernel/copyright_notice.htm"><b>errors</b></a> <br><nobr><a name="bms_ET"></a><a name="subkey_ET"></a>etc <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/displaying_hiding_toolbars.htm"><b>2</b></a> <a href="../kernel/about_salome_pro_architecture.htm"><b>3</b></a> </nobr><br><a name="bms_EV"></a><a name="subkey_EV"></a><a href="../kernel/about_salome_pro_architecture.htm"><b>even</b></a> <br><a href="../kernel/using_registry.htm"><b>ever</b></a> <br><nobr>every <a href="../kernel/introduction_to_salome_pro.htm"><b>1</b></a> <a href="../kernel/introduction.htm"><b>2</b></a> <a href="../kernel/using_left-hand_tabs.htm"><b>3</b></a> </nobr><br><a href="../kernel/readme.html"><b>everything</b></a> <br><a href="../kernel/introduction.htm"><b>evolutions</b></a> <br><a href="../kernel/about_salome_pro_architecture.htm"><b>evolve</b></a> <br><a name="bms_EX"></a><a name="subkey_EX"></a><a href="../kernel/running_salome_pro.htm"><b>ex</b></a> <br><a href="../kernel/readme.html"><b>exact</b></a> <br><a href="../kernel/readme.html"><b>exactly</b></a> <br><nobr>example <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/introduction.htm"><b>2</b></a> <a href="../kernel/using_catalog_generator.htm"><b>3</b></a> </nobr><br><a href="../kernel/about_salome_pro_architecture.htm"><b>exchanges</b></a> <br><a href="../kernel/introduction_to_salome_pro.htm"><b>execution</b></a> <br><a href="../kernel/readme.html"><b>exist</b></a> <br><a href="../kernel/readme.html"><b>existence</b></a> <br><nobr>existing <a href="../kernel/opening_studies.htm"><b>1</b></a> <a href="../kernel/introduction_to_salome_pro.htm"><b>2</b></a> <a href="../kernel/about_salome_pro_architecture.htm"><b>3</b></a> <a href="../kernel/using_catalog_generator.htm"><b>4</b></a> <a href="../kernel/saving_a_study.htm"><b>5</b></a> </nobr><br><a href="../kernel/about_salome_pro_architecture.htm"><b>expandability</b></a> <br><a href="../kernel/navigating_topics.htm"><b>expanding</b></a> <br><a href="../kernel/introduction.htm"><b>expectations</b></a> <br><a href="../kernel/about_salome_pro_architecture.htm"><b>exploits</b></a> <br><a href="../kernel/about_salome_pro_help_system.htm"><b>explorer</b></a> <br><a href="../kernel/about_salome_pro_architecture.htm"><b>exposes</b></a> <br><a href="../kernel/saving_a_study.htm"><b>extensions</b></a> <br><a href="../kernel/setting_preferences.htm"><b>external</b></a> <br><a href="../kernel/readme.html"><b>extracting</b></a> <br><a href="../kernel/introduction.htm"><b>extremely</b></a> <br>\r
 <br><br>\r
-<nobr><a name="bm_F"></a><a name="subkey_F{"></a>f <a href="../files/readme.html"><b>1</b></a> <a href="../files/installing_salome_pro.htm"><b>2</b></a> </nobr><br><a name="bms_FA"></a><a name="subkey_FA"></a><a href="../files/about_salome_pro_architecture.htm"><b>facilitated</b></a> <br><a href="../files/using_catalog_generator.htm"><b>factory</b></a> <br><nobr>fail <a href="../files/readme.html"><b>1</b></a> <a href="../files/installing_salome_pro.htm"><b>2</b></a> </nobr><br><nobr>fails <a href="../files/readme.html"><b>1</b></a> <a href="../files/installing_salome_pro.htm"><b>2</b></a> </nobr><br><nobr><a name="bms_FE"></a><a name="subkey_FE"></a>feature <a href="../files/readme.html"><b>1</b></a> <a href="../files/installing_salome_pro.htm"><b>2</b></a> </nobr><br><nobr>features <a href="../files/editing_studies.htm"><b>1</b></a> <a href="../files/about_salome_pro_help_system.htm"><b>2</b></a> </nobr><br><nobr><a name="bms_FI"></a><a name="subkey_FI"></a>field <a href="../files/readme.html"><b>1</b></a> <a href="../files/installing_salome_pro.htm"><b>2</b></a> <a href="../files/getting_properties_of_the_study.htm"><b>3</b></a> </nobr><br><nobr>fig <a href="../files/readme.html"><b>1</b></a> <a href="../files/installing_salome_pro.htm"><b>2</b></a> </nobr><br><nobr>figure <a href="../files/readme.html"><b>1</b></a> <a href="../files/installing_salome_pro.htm"><b>2</b></a> </nobr><br><nobr>file <a href="../files/readme.html"><b>1</b></a> <a href="../files/opening_studies.htm"><b>2</b></a> <a href="../files/installing_salome_pro.htm"><b>3</b></a> <a href="../files/getting_properties_of_the_study.htm"><b>4</b></a> <a href="../files/creating_a_new_study.htm"><b>5</b></a> <a href="../files/using_catalog_generator.htm"><b>6</b></a> <a href="../files/setting_preferences.htm"><b>7</b></a> <a href="../files/saving_a_study.htm"><b>8</b></a> <a href="../files/running_salome_pro.htm"><b>9</b></a> </nobr><br><nobr>files <a href="../files/readme.html"><b>1</b></a> <a href="../files/installing_salome_pro.htm"><b>2</b></a> <a href="../files/using_catalog_generator.htm"><b>3</b></a> <a href="../files/setting_preferences.htm"><b>4</b></a> <a href="../files/saving_a_study.htm"><b>5</b></a> <a href="../files/salome_pro_desktop.htm"><b>6</b></a> </nobr><br><nobr>find <a href="../files/readme.html"><b>1</b></a> <a href="../files/installing_salome_pro.htm"><b>2</b></a> <a href="../files/using_left-hand_tabs.htm"><b>3</b></a> </nobr><br><a href="../files/installing_salome_pro.htm"><b>finds</b></a> <br><a href="../files/about_salome_pro_architecture.htm"><b>finely</b></a> <br><nobr>finish <a href="../files/readme.html"><b>1</b></a> <a href="../files/navigating_topics.htm"><b>2</b></a> <a href="../files/installing_salome_pro.htm"><b>3</b></a> </nobr><br><nobr>finishes <a href="../files/readme.html"><b>1</b></a> <a href="../files/installing_salome_pro.htm"><b>2</b></a> </nobr><br><nobr>first <a href="../files/readme.html"><b>1</b></a> <a href="../files/installing_salome_pro.htm"><b>2</b></a> <a href="../files/using_object_browser.htm"><b>3</b></a> </nobr><br><a href="../files/salome_pro_desktop.htm"><b>fits</b></a> <br><a name="bms_FL"></a><a name="subkey_FL"></a><a href="../files/readme.html"><b>flag</b></a> <br><a href="../files/about_salome_pro_architecture.htm"><b>flexibility</b></a> <br><a href="../files/readme.html"><b>flexible</b></a> <br><a name="bms_FO"></a><a name="subkey_FO"></a><a href="../files/navigating_topics.htm"><b>focus</b></a> <br><nobr>folder <a href="../files/readme.html"><b>1</b></a> <a href="../files/installing_salome_pro.htm"><b>2</b></a> <a href="../files/using_usecase_browser.htm"><b>3</b></a> <a href="../files/using_object_browser.htm"><b>4</b></a> <a href="../files/setting_preferences.htm"><b>5</b></a> </nobr><br><a href="../files/installing_salome_pro.htm"><b>folders</b></a> <br><nobr>follow <a href="../files/readme.html"><b>1</b></a> <a href="../files/installing_salome_pro.htm"><b>2</b></a> <a href="../files/about_salome_pro_architecture.htm"><b>3</b></a> </nobr><br><nobr>following <a href="../files/readme.html"><b>1</b></a> <a href="../files/opening_studies.htm"><b>2</b></a> <a href="../files/navigating_topics.htm"><b>3</b></a> <a href="../files/introduction_to_salome_pro.htm"><b>4</b></a> <a href="../files/installing_salome_pro.htm"><b>5</b></a> <a href="../files/getting_started2.htm"><b>6</b></a> <a href="../files/getting_properties_of_the_study.htm"><b>7</b></a> <a href="../files/about_salome_pro_architecture.htm"><b>8</b></a> <a href="../files/using_usecase_browser.htm"><b>9</b></a> <a href="../files/using_registry.htm"><b>10</b></a> <a href="../files/using_left-hand_tabs.htm"><b>11</b></a> <a href="../files/using_catalog_generator.htm"><b>12</b></a> <a href="../files/setting_preferences.htm"><b>13</b></a> <a href="../files/saving_a_study.htm"><b>14</b></a> <a href="../files/salome_pro_desktop.htm"><b>15</b></a> <a href="../files/running_salome_pro.htm"><b>16</b></a> </nobr><br><a href="../files/displaying_studies.htm"><b>follows</b></a> <br><a href="../files/setting_preferences.htm"><b>font</b></a> <br><a href="../files/installing_salome_pro.htm"><b>forces</b></a> <br><a href="../files/using_catalog_generator.htm"><b>forget</b></a> <br><nobr>format <a href="../files/readme.html"><b>1</b></a> <a href="../files/opening_studies.htm"><b>2</b></a> <a href="../files/about_salome_pro_help_system.htm"><b>3</b></a> <a href="../files/setting_preferences.htm"><b>4</b></a> </nobr><br><a href="../files/introduction_to_iapp.htm"><b>four</b></a> <br><br><br></p><p class="ftsbody" align="center"><a href="whlstf3.htm" target="_self" title="previous search group"><b>&gt;&gt;</b></a>\r
+<a name="bm_F"></a><a name="subkey_F{"></a><a href="../kernel/readme.html"><b>f</b></a> <br><a name="bms_FA"></a><a name="subkey_FA"></a><a href="../kernel/about_salome_pro_architecture.htm"><b>facilitated</b></a> <br><a href="../kernel/using_catalog_generator.htm"><b>factory</b></a> <br><a href="../kernel/readme.html"><b>fail</b></a> <br><a href="../kernel/readme.html"><b>fails</b></a> <br><a href="../kernel/readme.html"><b>false</b></a> <br><a name="bms_FE"></a><a name="subkey_FE"></a><a href="../kernel/readme.html"><b>feature</b></a> <br><nobr>features <a href="../kernel/editing_studies.htm"><b>1</b></a> <a href="../kernel/about_salome_pro_help_system.htm"><b>2</b></a> </nobr><br><nobr><a name="bms_FI"></a><a name="subkey_FI"></a>field <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/getting_properties_of_the_study.htm"><b>2</b></a> </nobr><br><a href="../kernel/readme.html"><b>fig</b></a> <br><a href="../kernel/readme.html"><b>figure</b></a> <br><nobr>file <a href="../kernel/running_salome_pro.htm"><b>1</b></a> <a href="../kernel/readme.html"><b>2</b></a> <a href="../kernel/opening_studies.htm"><b>3</b></a> <a href="../kernel/getting_properties_of_the_study.htm"><b>4</b></a> <a href="../kernel/creating_a_new_study.htm"><b>5</b></a> <a href="../kernel/using_catalog_generator.htm"><b>6</b></a> <a href="../kernel/setting_preferences.htm"><b>7</b></a> <a href="../kernel/saving_a_study.htm"><b>8</b></a> </nobr><br><nobr>files <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/using_catalog_generator.htm"><b>2</b></a> <a href="../kernel/setting_preferences.htm"><b>3</b></a> <a href="../kernel/saving_a_study.htm"><b>4</b></a> <a href="../kernel/salome_pro_desktop.htm"><b>5</b></a> </nobr><br><nobr>find <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/using_left-hand_tabs.htm"><b>2</b></a> </nobr><br><a href="../kernel/readme.html"><b>find_in_path</b></a> <br><a href="../kernel/about_salome_pro_architecture.htm"><b>finely</b></a> <br><nobr>finish <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/navigating_topics.htm"><b>2</b></a> </nobr><br><a href="../kernel/readme.html"><b>finishes</b></a> <br><nobr>first <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/using_object_browser.htm"><b>2</b></a> </nobr><br><a href="../kernel/salome_pro_desktop.htm"><b>fits</b></a> <br><a name="bms_FL"></a><a name="subkey_FL"></a><a href="../kernel/readme.html"><b>flag</b></a> <br><a href="../kernel/about_salome_pro_architecture.htm"><b>flexibility</b></a> <br><a href="../kernel/readme.html"><b>flexible</b></a> <br><a name="bms_FO"></a><a name="subkey_FO"></a><a href="../kernel/navigating_topics.htm"><b>focus</b></a> <br><nobr>folder <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/using_usecase_browser.htm"><b>2</b></a> <a href="../kernel/using_object_browser.htm"><b>3</b></a> <a href="../kernel/setting_preferences.htm"><b>4</b></a> </nobr><br><nobr>follow <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/about_salome_pro_architecture.htm"><b>2</b></a> </nobr><br><nobr>following <a href="../kernel/running_salome_pro.htm"><b>1</b></a> <a href="../kernel/readme.html"><b>2</b></a> <a href="../kernel/opening_studies.htm"><b>3</b></a> <a href="../kernel/navigating_topics.htm"><b>4</b></a> <a href="../kernel/introduction_to_salome_pro.htm"><b>5</b></a> <a href="../kernel/getting_started2.htm"><b>6</b></a> <a href="../kernel/getting_properties_of_the_study.htm"><b>7</b></a> <a href="../kernel/about_salome_pro_architecture.htm"><b>8</b></a> <a href="../kernel/using_usecase_browser.htm"><b>9</b></a> <a href="../kernel/using_registry.htm"><b>10</b></a> <a href="../kernel/using_left-hand_tabs.htm"><b>11</b></a> <a href="../kernel/using_catalog_generator.htm"><b>12</b></a> <a href="../kernel/setting_preferences.htm"><b>13</b></a> <a href="../kernel/saving_a_study.htm"><b>14</b></a> <a href="../kernel/salome_pro_desktop.htm"><b>15</b></a> </nobr><br><a href="../kernel/displaying_studies.htm"><b>follows</b></a> <br><a href="../kernel/setting_preferences.htm"><b>font</b></a> <br><a href="../kernel/using_catalog_generator.htm"><b>forget</b></a> <br><nobr>format <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/opening_studies.htm"><b>2</b></a> <a href="../kernel/about_salome_pro_help_system.htm"><b>3</b></a> <a href="../kernel/setting_preferences.htm"><b>4</b></a> </nobr><br><a href="../kernel/introduction_to_iapp.htm"><b>four</b></a> <br><a name="bms_FR"></a><a name="subkey_FR"></a><a href="../kernel/introduction_to_iapp.htm"><b>fr</b></a> <br><a href="../kernel/readme.html"><b>frame</b></a> <br><nobr>framework <a href="../kernel/introduction_to_iapp.htm"><b>1</b></a> <a href="../kernel/using_object_browser.htm"><b>2</b></a> </nobr><br><a href="../kernel/copyright_notice.htm"><b>france</b></a> <br><a href="../kernel/introduction.htm"><b>friendly</b></a> <br><a href="../kernel/salome_pro_desktop.htm"><b>front</b></a> <br><a name="bms_FU"></a><a name="subkey_FU"></a><a href="../kernel/using_left-hand_tabs.htm"><b>full</b></a> <br><nobr>function <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/introduction_to_salome_pro.htm"><b>2</b></a> </nobr><br><a href="../kernel/readme.html"><b>function_name</b></a> <br><a href="../kernel/salome_pro_desktop.htm"><b>functional</b></a> <br><nobr>functionality <a href="../kernel/getting_started2.htm"><b>1</b></a> <a href="../kernel/editing_studies.htm"><b>2</b></a> <a href="../kernel/about_salome_pro_help_system.htm"><b>3</b></a> <a href="../kernel/about_salome_pro_architecture.htm"><b>4</b></a> <a href="../kernel/using_catalog_generator.htm"><b>5</b></a> <a href="../kernel/salome_pro_desktop.htm"><b>6</b></a> </nobr><br><a href="../kernel/saving_a_study.htm"><b>functioning</b></a> <br><nobr>functions <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/salome_pro_desktop.htm"><b>2</b></a> </nobr><br><a href="../kernel/about_salome_pro_architecture.htm"><b>fundamental</b></a> <br><a href="../kernel/copyright_notice.htm"><b>furnished</b></a> <br><a href="../kernel/readme.html"><b>further</b></a> <br><br><br></p><p class="ftsbody" align="center"><a href="whlstf3.htm" target="_self" title="previous search group"><b>&gt;&gt;</b></a>\r
 \r
 </body>\r
 \r
index 3233ea54fd09743041503b0e3d59df3e2ea8cd65..9f525b4e3cba03f30229c62779ea71cdccf3ee84 100755 (executable)
@@ -1,9 +1,9 @@
 <html>\r
 <head>\r
 <title>Search Words List</title>\r
-<meta http-equiv="content-type" content="text/html; charset=iso-8859-1">\r
+\r
 <meta name="generator" content="RoboHelp by eHelp Corporation   www.ehelp.com">\r
-<meta name "description" content="WebHelp 2002">\r
+<meta name="description" content="WebHelp 5.50">\r
 <base target="bsscright">\r
 <style>\r
 <!--\r
@@ -30,16 +30,22 @@ A:hover {color:Navy; } A:hover {font-family:Tahoma; } A:hover {font-size:8pt; }
 -->\r
 </style>\r
 </head>\r
-<body marginheight="0"  marginwidth="0">\r
+<body marginheight="0"  marginwidth="0" bgproperties="fixed">\r
 <p class="ftsbody" align="center"><a href="whlstf2.htm" target="_self" title="previous search group"><b>&lt;&lt;</b></a><br><br></p>\r
-<p class="ftsbody">\r
-<a name="bms_FR"></a><a name="subkey_FR"></a><a href="../files/introduction_to_iapp.htm"><b>fr</b></a> <br><nobr>frame <a href="../files/readme.html"><b>1</b></a> <a href="../files/installing_salome_pro.htm"><b>2</b></a> </nobr><br><nobr>framework <a href="../files/introduction_to_iapp.htm"><b>1</b></a> <a href="../files/using_object_browser.htm"><b>2</b></a> </nobr><br><a href="../files/copyright_notice.htm"><b>france</b></a> <br><a href="../files/introduction.htm"><b>friendly</b></a> <br><a href="../files/salome_pro_desktop.htm"><b>front</b></a> <br><a name="bms_FU"></a><a name="subkey_FU"></a><a href="../files/using_left-hand_tabs.htm"><b>full</b></a> <br><nobr>function <a href="../files/readme.html"><b>1</b></a> <a href="../files/introduction_to_salome_pro.htm"><b>2</b></a> </nobr><br><a href="../files/readme.html"><b>function_name</b></a> <br><a href="../files/salome_pro_desktop.htm"><b>functional</b></a> <br><nobr>functionality <a href="../files/getting_started2.htm"><b>1</b></a> <a href="../files/editing_studies.htm"><b>2</b></a> <a href="../files/about_salome_pro_help_system.htm"><b>3</b></a> <a href="../files/about_salome_pro_architecture.htm"><b>4</b></a> <a href="../files/using_catalog_generator.htm"><b>5</b></a> <a href="../files/salome_pro_desktop.htm"><b>6</b></a> </nobr><br><a href="../files/saving_a_study.htm"><b>functioning</b></a> <br><nobr>functions <a href="../files/readme.html"><b>1</b></a> <a href="../files/salome_pro_desktop.htm"><b>2</b></a> </nobr><br><a href="../files/about_salome_pro_architecture.htm"><b>fundamental</b></a> <br><a href="../files/copyright_notice.htm"><b>furnished</b></a> <br><nobr>further <a href="../files/readme.html"><b>1</b></a> <a href="../files/installing_salome_pro.htm"><b>2</b></a> </nobr><br>\r
+<p class="ftsbody" >\r
+\r
+\r
+<nobr><a name="bm_G"></a><a name="subkey_G{"></a>g <a href="../kernel/running_salome_pro.htm"><b>1</b></a> <a href="../kernel/readme.html"><b>2</b></a> </nobr><br><a name="bms_GC"></a><a name="subkey_GC"></a><a href="../kernel/readme.html"><b>gcc</b></a> <br><nobr><a name="bms_GE"></a><a name="subkey_GE"></a>general <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/getting_started2.htm"><b>2</b></a> <a href="../kernel/salome_pro_desktop.htm"><b>3</b></a> </nobr><br><nobr>generate <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/using_catalog_generator.htm"><b>2</b></a> </nobr><br><nobr>generated <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/using_catalog_generator.htm"><b>2</b></a> </nobr><br><a href="../kernel/introduction_to_salome_pro.htm"><b>generation</b></a> <br><nobr>generator <a href="../kernel/introduction_to_iapp.htm"><b>1</b></a> <a href="../kernel/using_catalog_generator.htm"><b>2</b></a> </nobr><br><nobr>generic <a href="../kernel/introduction_to_salome_pro.htm"><b>1</b></a> <a href="../kernel/introduction.htm"><b>2</b></a> </nobr><br><nobr>geom <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/introduction_to_salome_pro.htm"><b>2</b></a> <a href="../kernel/editing_studies.htm"><b>3</b></a> <a href="../kernel/displaying_hiding_toolbars.htm"><b>4</b></a> <a href="../kernel/about_salome_pro_architecture.htm"><b>5</b></a> </nobr><br><a href="../kernel/about_salome_pro_help_system.htm"><b>get</b></a> <br><nobr>getting <a href="../kernel/introduction.htm"><b>1</b></a> <a href="../kernel/getting_started2.htm"><b>2</b></a> <a href="../kernel/getting_properties_of_the_study.htm"><b>3</b></a> <a href="../kernel/using_usecase_browser.htm"><b>4</b></a> <a href="../kernel/using_object_browser.htm"><b>5</b></a> </nobr><br><nobr><a name="bms_GI"></a><a name="subkey_GI"></a>given <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/introduction_to_salome_pro.htm"><b>2</b></a> </nobr><br><nobr>gives <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/getting_properties_of_the_study.htm"><b>2</b></a> <a href="../kernel/salome_pro_desktop.htm"><b>3</b></a> </nobr><br><a name="bms_GL"></a><a name="subkey_GL"></a><a href="../kernel/salome_pro_desktop.htm"><b>global</b></a> <br><a href="../kernel/using_left-hand_tabs.htm"><b>glossary</b></a> <br><nobr><a name="bms_GO"></a><a name="subkey_GO"></a>go <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/navigating_topics.htm"><b>2</b></a> </nobr><br><a name="bms_GR"></a><a name="subkey_GR"></a><a href="../kernel/introduction_to_salome_pro.htm"><b>graphs</b></a> <br><a href="../kernel/readme.html"><b>graphviz</b></a> <br><a href="../kernel/readme.html"><b>grep</b></a> <br><nobr><a name="bms_GU"></a><a name="subkey_GU"></a>gui <a href="../kernel/running_salome_pro.htm"><b>1</b></a> <a href="../kernel/readme.html"><b>2</b></a> <a href="../kernel/about_salome_pro_architecture.htm"><b>3</b></a> </nobr><br>\r
+<br><br>\r
+<nobr><a name="bm_H"></a><a name="subkey_H{"></a>h <a href="../kernel/running_salome_pro.htm"><b>1</b></a> <a href="../kernel/readme.html"><b>2</b></a> </nobr><br><nobr><a name="bms_HA"></a><a name="subkey_HA"></a>hand <a href="../kernel/navigating_topics.htm"><b>1</b></a> <a href="../kernel/about_salome_pro_architecture.htm"><b>2</b></a> <a href="../kernel/using_left-hand_tabs.htm"><b>3</b></a> </nobr><br><a href="../kernel/introduction.htm"><b>handled</b></a> <br><a href="../kernel/readme.html"><b>handler</b></a> <br><a href="../kernel/introduction_to_iapp.htm"><b>handling</b></a> <br><a href="../kernel/readme.html"><b>happydoc</b></a> <br><nobr>hard <a href="../kernel/running_salome_pro.htm"><b>1</b></a> <a href="../kernel/readme.html"><b>2</b></a> </nobr><br><a href="../kernel/saving_a_study.htm"><b>hasn</b></a> <br><a href="../kernel/readme.html"><b>hat</b></a> <br><nobr>having <a href="../kernel/navigating_topics.htm"><b>1</b></a> <a href="../kernel/using_object_browser.htm"><b>2</b></a> </nobr><br><nobr><a name="bms_HD"></a><a name="subkey_HD"></a>hdf <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/opening_studies.htm"><b>2</b></a> <a href="../kernel/setting_preferences.htm"><b>3</b></a> <a href="../kernel/saving_a_study.htm"><b>4</b></a> </nobr><br><a href="../kernel/readme.html"><b>hdf5</b></a> <br><a href="../kernel/readme.html"><b>hdf5home</b></a> <br><a name="bms_HE"></a><a name="subkey_HE"></a><a href="../kernel/using_registry.htm"><b>hello</b></a> <br><nobr>help <a href="../kernel/running_salome_pro.htm"><b>1</b></a> <a href="../kernel/readme.html"><b>2</b></a> <a href="../kernel/opening_studies.htm"><b>3</b></a> <a href="../kernel/navigating_topics.htm"><b>4</b></a> <a href="../kernel/about_salome_pro_help_system.htm"><b>5</b></a> <a href="../kernel/about_salome_pro_architecture.htm"><b>6</b></a> <a href="../kernel/using_registry.htm"><b>7</b></a> <a href="../kernel/using_object_browser.htm"><b>8</b></a> <a href="../kernel/using_left-hand_tabs.htm"><b>9</b></a> </nobr><br><a href="../kernel/readme.html"><b>helps</b></a> <br><nobr>here <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/setting_preferences.htm"><b>2</b></a> </nobr><br><a name="bms_HI"></a><a name="subkey_HI"></a><a href="../kernel/displaying_hiding_toolbars.htm"><b>hide</b></a> <br><nobr>hides <a href="../kernel/setting_preferences.htm"><b>1</b></a> <a href="../kernel/salome_pro_desktop.htm"><b>2</b></a> </nobr><br><nobr>hiding <a href="../kernel/displaying_hiding_toolbars.htm"><b>1</b></a> <a href="../kernel/using_object_browser.htm"><b>2</b></a> </nobr><br><a href="../kernel/introduction.htm"><b>high</b></a> <br><nobr>highlighted <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/using_object_browser.htm"><b>2</b></a> </nobr><br><a href="../kernel/readme.html"><b>hints</b></a> <br><a href="../kernel/using_registry.htm"><b>history</b></a> <br><a name="bms_HO"></a><a name="subkey_HO"></a><a href="../kernel/copyright_notice.htm"><b>holders</b></a> <br><a href="../kernel/running_salome_pro.htm"><b>home</b></a> <br><a href="../kernel/about_salome_pro_architecture.htm"><b>host</b></a> <br><a href="../kernel/navigating_topics.htm"><b>hotspot</b></a> <br><a href="../kernel/navigating_topics.htm"><b>hotspots</b></a> <br><nobr>how <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/about_salome_pro_architecture.htm"><b>2</b></a> </nobr><br><a name="bms_HP"></a><a name="subkey_HP"></a><a href="../kernel/readme.html"><b>hpp</b></a> <br><nobr><a name="bms_HT"></a><a name="subkey_HT"></a>html <a href="../kernel/about_salome_pro_help_system.htm"><b>1</b></a> <a href="../kernel/using_left-hand_tabs.htm"><b>2</b></a> </nobr><br>\r
+<br><br>\r
+<a name="bm_I"></a><a name="subkey_I{"></a><a href="../kernel/readme.html"><b>i586_linux_2</b></a> <br><nobr><a name="bms_IA"></a><a name="subkey_IA"></a>iapp <a href="../kernel/introduction_to_salome_pro.htm"><b>1</b></a> <a href="../kernel/introduction_to_iapp.htm"><b>2</b></a> <a href="../kernel/about_salome_pro_architecture.htm"><b>3</b></a> </nobr><br><nobr><a name="bms_IC"></a><a name="subkey_IC"></a>icon <a href="../kernel/creating_a_new_study.htm"><b>1</b></a> <a href="../kernel/using_catalog_generator.htm"><b>2</b></a> </nobr><br><nobr>icons <a href="../kernel/editing_studies.htm"><b>1</b></a> <a href="../kernel/salome_pro_desktop.htm"><b>2</b></a> </nobr><br><nobr><a name="bms_ID"></a><a name="subkey_ID"></a>identification <a href="../kernel/using_registry.htm"><b>1</b></a> <a href="../kernel/using_object_browser.htm"><b>2</b></a> </nobr><br><a href="../kernel/readme.html"><b>identify</b></a> <br><nobr>idl <a href="../kernel/about_salome_pro_architecture.htm"><b>1</b></a> <a href="../kernel/using_catalog_generator.htm"><b>2</b></a> </nobr><br><a name="bms_IE"></a><a name="subkey_IE"></a><a href="../kernel/setting_preferences.htm"><b>ie</b></a> <br><nobr><a name="bms_IF"></a><a name="subkey_IF"></a>if <a href="../kernel/running_salome_pro.htm"><b>1</b></a> <a href="../kernel/readme.html"><b>2</b></a> <a href="../kernel/opening_studies.htm"><b>3</b></a> <a href="../kernel/creating_a_new_study.htm"><b>4</b></a> <a href="../kernel/using_usecase_browser.htm"><b>5</b></a> <a href="../kernel/using_object_browser.htm"><b>6</b></a> <a href="../kernel/using_left-hand_tabs.htm"><b>7</b></a> <a href="../kernel/using_catalog_generator.htm"><b>8</b></a> <a href="../kernel/setting_preferences.htm"><b>9</b></a> <a href="../kernel/saving_a_study.htm"><b>10</b></a> </nobr><br><a name="bms_IM"></a><a name="subkey_IM"></a><a href="../kernel/salome_pro_desktop.htm"><b>images</b></a> <br><a href="../kernel/navigating_topics.htm"><b>immediately</b></a> <br><a href="../kernel/copyright_notice.htm"><b>immeuble</b></a> <br><nobr>implement <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/about_salome_pro_architecture.htm"><b>2</b></a> </nobr><br><nobr>implementation <a href="../kernel/about_salome_pro_architecture.htm"><b>1</b></a> <a href="../kernel/using_catalog_generator.htm"><b>2</b></a> </nobr><br><a href="../kernel/readme.html"><b>implementing</b></a> <br><a href="../kernel/readme.html"><b>implied</b></a> <br><a href="../kernel/readme.html"><b>important</b></a> <br><nobr>imported <a href="../kernel/introduction_to_iapp.htm"><b>1</b></a> <a href="../kernel/salome_pro_desktop.htm"><b>2</b></a> </nobr><br><a href="../kernel/readme.html"><b>impossible</b></a> <br><nobr><a name="bms_IN"></a><a name="subkey_IN"></a>includes <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/using_left-hand_tabs.htm"><b>2</b></a> </nobr><br><nobr>including <a href="../kernel/navigating_topics.htm"><b>1</b></a> <a href="../kernel/copyright_notice.htm"><b>2</b></a> </nobr><br><a href="../kernel/about_salome_pro_architecture.htm"><b>inclusive</b></a> <br><a href="../kernel/introduction.htm"><b>increasingly</b></a> <br><a href="../kernel/about_salome_pro_architecture.htm"><b>incrementally</b></a> <br><a href="../kernel/about_salome_pro_architecture.htm"><b>independence</b></a> <br><a href="../kernel/about_salome_pro_architecture.htm"><b>independent</b></a> <br><nobr>index <a href="../kernel/using_object_browser.htm"><b>1</b></a> <a href="../kernel/using_left-hand_tabs.htm"><b>2</b></a> </nobr><br><a href="../kernel/introduction.htm"><b>industry</b></a> <br><nobr>information <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/navigating_topics.htm"><b>2</b></a> <a href="../kernel/getting_properties_of_the_study.htm"><b>3</b></a> <a href="../kernel/copyright_notice.htm"><b>4</b></a> <a href="../kernel/about_salome_pro_architecture.htm"><b>5</b></a> <a href="../kernel/using_registry.htm"><b>6</b></a> <a href="../kernel/using_left-hand_tabs.htm"><b>7</b></a> <a href="../kernel/saving_a_study.htm"><b>8</b></a> </nobr><br><nobr>initial <a href="../kernel/getting_started2.htm"><b>1</b></a> <a href="../kernel/salome_pro_desktop.htm"><b>2</b></a> </nobr><br><a href="../kernel/using_catalog_generator.htm"><b>input</b></a> <br><a href="../kernel/readme.html"><b>insert</b></a> <br><nobr>inside <a href="../kernel/navigating_topics.htm"><b>1</b></a> <a href="../kernel/using_catalog_generator.htm"><b>2</b></a> </nobr><br><a href="../kernel/readme.html"><b>inspect</b></a> <br><a href="../kernel/readme.html"><b>instal</b></a> <br><a href="../kernel/readme.html"><b>instalation</b></a> <br><nobr>install <a href="../kernel/running_salome_pro.htm"><b>1</b></a> <a href="../kernel/readme.html"><b>2</b></a> </nobr><br><a href="../kernel/readme.html"><b>install_binary</b></a> <br><a href="../kernel/readme.html"><b>install_disk_space</b></a> <br><a href="../kernel/readme.html"><b>install_source</b></a> <br><a href="../kernel/readme.html"><b>install_wizard_caption</b></a> <br><a href="../kernel/readme.html"><b>install_wizard_copyright</b></a> <br><a href="../kernel/readme.html"><b>install_wizard_license_info</b></a> <br><a href="../kernel/readme.html"><b>install_wizard_root_directory</b></a> <br><a href="../kernel/readme.html"><b>install_wizard_version</b></a> <br><nobr>installation <a href="../kernel/running_salome_pro.htm"><b>1</b></a> <a href="../kernel/readme.html"><b>2</b></a> </nobr><br><a href="../kernel/readme.html"><b>installation_mode</b></a> <br><a href="../kernel/readme.html"><b>installation_script_name</b></a> <br><a href="../kernel/readme.html"><b>installdiskspace</b></a> <br><nobr>installed <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/using_catalog_generator.htm"><b>2</b></a> </nobr><br><a href="../kernel/readme.html"><b>installing</b></a> <br><a href="../kernel/readme.html"><b>installwizard_root_directory</b></a> <br><a href="../kernel/about_salome_pro_architecture.htm"><b>instrumental</b></a> <br><a href="../kernel/readme.html"><b>integer</b></a> <br><a href="../kernel/introduction_to_salome_pro.htm"><b>integrate</b></a> <br><nobr>integrated <a href="../kernel/introduction_to_iapp.htm"><b>1</b></a> <a href="../kernel/about_salome_pro_architecture.htm"><b>2</b></a> <a href="../kernel/salome_pro_desktop.htm"><b>3</b></a> </nobr><br><nobr>integration <a href="../kernel/introduction_to_iapp.htm"><b>1</b></a> <a href="../kernel/introduction.htm"><b>2</b></a> <a href="../kernel/about_salome_pro_architecture.htm"><b>3</b></a> <a href="../kernel/using_catalog_generator.htm"><b>4</b></a> </nobr><br><a href="../kernel/using_left-hand_tabs.htm"><b>intended</b></a> <br><a href="../kernel/introduction.htm"><b>inter</b></a> <br><nobr>interface <a href="../kernel/introduction_to_salome_pro.htm"><b>1</b></a> <a href="../kernel/introduction_to_iapp.htm"><b>2</b></a> <a href="../kernel/introduction.htm"><b>3</b></a> <a href="../kernel/about_salome_pro_architecture.htm"><b>4</b></a> <a href="../kernel/using_catalog_generator.htm"><b>5</b></a> <a href="../kernel/setting_preferences.htm"><b>6</b></a> </nobr><br><nobr>interfaces <a href="../kernel/about_salome_pro_architecture.htm"><b>1</b></a> <a href="../kernel/using_catalog_generator.htm"><b>2</b></a> </nobr><br><nobr>internal <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/introduction.htm"><b>2</b></a> </nobr><br><a href="../kernel/about_salome_pro_help_system.htm"><b>internet</b></a> <br><a href="../kernel/using_object_browser.htm"><b>interoperable</b></a> <br><nobr>interpreter <a href="../kernel/introduction_to_iapp.htm"><b>1</b></a> <a href="../kernel/salome_pro_desktop.htm"><b>2</b></a> </nobr><br><a href="../kernel/using_registry.htm"><b>interval</b></a> <br><nobr>introduction <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/introduction_to_salome_pro.htm"><b>2</b></a> <a href="../kernel/introduction_to_iapp.htm"><b>3</b></a> <a href="../kernel/introduction.htm"><b>4</b></a> </nobr><br><a href="../kernel/saving_a_study.htm"><b>invalid</b></a> <br><a href="../kernel/readme.html"><b>invoke</b></a> <br><a href="../kernel/salome_pro_desktop.htm"><b>invoked</b></a> <br><nobr><a name="bms_IO"></a><a name="subkey_IO"></a>ior <a href="../kernel/using_object_browser.htm"><b>1</b></a> <a href="../kernel/setting_preferences.htm"><b>2</b></a> </nobr><br><a name="bms_IS"></a><a name="subkey_IS"></a><a href="../kernel/readme.html"><b>ispython</b></a> <br><a href="../kernel/readme.html"><b>isswig</b></a> <br><nobr><a name="bms_IT"></a><a name="subkey_IT"></a>item <a href="../kernel/getting_properties_of_the_study.htm"><b>1</b></a> <a href="../kernel/setting_preferences.htm"><b>2</b></a> </nobr><br><a href="../kernel/readme.html"><b>itself</b></a> <br>\r
 <br><br>\r
-<nobr><a name="bm_G"></a><a name="subkey_G{"></a>g <a href="../files/readme.html"><b>1</b></a> <a href="../files/installing_salome_pro.htm"><b>2</b></a> <a href="../files/running_salome_pro.htm"><b>3</b></a> </nobr><br><nobr><a name="bms_GC"></a><a name="subkey_GC"></a>gcc <a href="../files/readme.html"><b>1</b></a> <a href="../files/installing_salome_pro.htm"><b>2</b></a> </nobr><br><a href="../files/installing_salome_pro.htm"><b>gcc3</b></a> <br><nobr><a name="bms_GE"></a><a name="subkey_GE"></a>general <a href="../files/readme.html"><b>1</b></a> <a href="../files/getting_started2.htm"><b>2</b></a> <a href="../files/salome_pro_desktop.htm"><b>3</b></a> </nobr><br><nobr>generate <a href="../files/readme.html"><b>1</b></a> <a href="../files/using_catalog_generator.htm"><b>2</b></a> </nobr><br><nobr>generated <a href="../files/readme.html"><b>1</b></a> <a href="../files/using_catalog_generator.htm"><b>2</b></a> </nobr><br><a href="../files/introduction_to_salome_pro.htm"><b>generation</b></a> <br><nobr>generator <a href="../files/introduction_to_iapp.htm"><b>1</b></a> <a href="../files/using_catalog_generator.htm"><b>2</b></a> </nobr><br><nobr>generic <a href="../files/introduction_to_salome_pro.htm"><b>1</b></a> <a href="../files/introduction.htm"><b>2</b></a> </nobr><br><nobr>geom <a href="../files/introduction_to_salome_pro.htm"><b>1</b></a> <a href="../files/editing_studies.htm"><b>2</b></a> <a href="../files/displaying_hiding_toolbars.htm"><b>3</b></a> <a href="../files/about_salome_pro_architecture.htm"><b>4</b></a> </nobr><br><nobr>get <a href="../files/installing_salome_pro.htm"><b>1</b></a> <a href="../files/about_salome_pro_help_system.htm"><b>2</b></a> </nobr><br><nobr>getting <a href="../files/introduction.htm"><b>1</b></a> <a href="../files/getting_started2.htm"><b>2</b></a> <a href="../files/getting_properties_of_the_study.htm"><b>3</b></a> <a href="../files/using_usecase_browser.htm"><b>4</b></a> <a href="../files/using_object_browser.htm"><b>5</b></a> </nobr><br><nobr><a name="bms_GI"></a><a name="subkey_GI"></a>given <a href="../files/readme.html"><b>1</b></a> <a href="../files/introduction_to_salome_pro.htm"><b>2</b></a> </nobr><br><nobr>gives <a href="../files/readme.html"><b>1</b></a> <a href="../files/getting_properties_of_the_study.htm"><b>2</b></a> <a href="../files/salome_pro_desktop.htm"><b>3</b></a> </nobr><br><a name="bms_GL"></a><a name="subkey_GL"></a><a href="../files/salome_pro_desktop.htm"><b>global</b></a> <br><a href="../files/using_left-hand_tabs.htm"><b>glossary</b></a> <br><a name="bms_GN"></a><a name="subkey_GN"></a><a href="../files/installing_salome_pro.htm"><b>gnu</b></a> <br><nobr><a name="bms_GO"></a><a name="subkey_GO"></a>go <a href="../files/readme.html"><b>1</b></a> <a href="../files/navigating_topics.htm"><b>2</b></a> <a href="../files/installing_salome_pro.htm"><b>3</b></a> </nobr><br><a name="bms_GR"></a><a name="subkey_GR"></a><a href="../files/introduction_to_salome_pro.htm"><b>graphs</b></a> <br><nobr>graphviz <a href="../files/readme.html"><b>1</b></a> <a href="../files/installing_salome_pro.htm"><b>2</b></a> </nobr><br><nobr>grep <a href="../files/readme.html"><b>1</b></a> <a href="../files/installing_salome_pro.htm"><b>2</b></a> </nobr><br><nobr><a name="bms_GU"></a><a name="subkey_GU"></a>gui <a href="../files/readme.html"><b>1</b></a> <a href="../files/installing_salome_pro.htm"><b>2</b></a> <a href="../files/about_salome_pro_architecture.htm"><b>3</b></a> <a href="../files/running_salome_pro.htm"><b>4</b></a> </nobr><br>\r
+<a name="bm_J"></a><a name="subkey_JA"></a><a href="../kernel/about_salome_pro_help_system.htm"><b>java</b></a> <br><a name="bms_JP"></a><a name="subkey_JP"></a><a href="../kernel/salome_pro_desktop.htm"><b>jpeg</b></a> <br><a href="../kernel/salome_pro_desktop.htm"><b>jpg</b></a> <br><a name="bms_JU"></a><a name="subkey_JU"></a><a href="../kernel/readme.html"><b>just</b></a> <br>\r
 <br><br>\r
-<nobr><a name="bm_H"></a><a name="subkey_H{"></a>h <a href="../files/installing_salome_pro.htm"><b>1</b></a> <a href="../files/running_salome_pro.htm"><b>2</b></a> </nobr><br><nobr><a name="bms_HA"></a><a name="subkey_HA"></a>hand <a href="../files/navigating_topics.htm"><b>1</b></a> <a href="../files/about_salome_pro_architecture.htm"><b>2</b></a> <a href="../files/using_left-hand_tabs.htm"><b>3</b></a> </nobr><br><a href="../files/introduction.htm"><b>handled</b></a> <br><nobr>handler <a href="../files/readme.html"><b>1</b></a> <a href="../files/installing_salome_pro.htm"><b>2</b></a> </nobr><br><a href="../files/introduction_to_iapp.htm"><b>handling</b></a> <br><nobr>happydoc <a href="../files/readme.html"><b>1</b></a> <a href="../files/installing_salome_pro.htm"><b>2</b></a> </nobr><br><nobr>hard <a href="../files/readme.html"><b>1</b></a> <a href="../files/installing_salome_pro.htm"><b>2</b></a> <a href="../files/running_salome_pro.htm"><b>3</b></a> </nobr><br><a href="../files/saving_a_study.htm"><b>hasn</b></a> <br><nobr>hat <a href="../files/readme.html"><b>1</b></a> <a href="../files/installing_salome_pro.htm"><b>2</b></a> </nobr><br><nobr>having <a href="../files/navigating_topics.htm"><b>1</b></a> <a href="../files/using_object_browser.htm"><b>2</b></a> </nobr><br><nobr><a name="bms_HD"></a><a name="subkey_HD"></a>hdf <a href="../files/readme.html"><b>1</b></a> <a href="../files/opening_studies.htm"><b>2</b></a> <a href="../files/installing_salome_pro.htm"><b>3</b></a> <a href="../files/setting_preferences.htm"><b>4</b></a> <a href="../files/saving_a_study.htm"><b>5</b></a> </nobr><br><nobr>hdf5 <a href="../files/readme.html"><b>1</b></a> <a href="../files/installing_salome_pro.htm"><b>2</b></a> </nobr><br><nobr>hdf5home <a href="../files/readme.html"><b>1</b></a> <a href="../files/installing_salome_pro.htm"><b>2</b></a> </nobr><br><a name="bms_HE"></a><a name="subkey_HE"></a><a href="../files/installing_salome_pro.htm"><b>header</b></a> <br><a href="../files/using_registry.htm"><b>hello</b></a> <br><nobr>help <a href="../files/readme.html"><b>1</b></a> <a href="../files/opening_studies.htm"><b>2</b></a> <a href="../files/navigating_topics.htm"><b>3</b></a> <a href="../files/installing_salome_pro.htm"><b>4</b></a> <a href="../files/about_salome_pro_help_system.htm"><b>5</b></a> <a href="../files/about_salome_pro_architecture.htm"><b>6</b></a> <a href="../files/using_registry.htm"><b>7</b></a> <a href="../files/using_object_browser.htm"><b>8</b></a> <a href="../files/using_left-hand_tabs.htm"><b>9</b></a> <a href="../files/running_salome_pro.htm"><b>10</b></a> </nobr><br><nobr>helps <a href="../files/readme.html"><b>1</b></a> <a href="../files/installing_salome_pro.htm"><b>2</b></a> </nobr><br><nobr>here <a href="../files/readme.html"><b>1</b></a> <a href="../files/installing_salome_pro.htm"><b>2</b></a> <a href="../files/setting_preferences.htm"><b>3</b></a> </nobr><br><a name="bms_HI"></a><a name="subkey_HI"></a><a href="../files/displaying_hiding_toolbars.htm"><b>hide</b></a> <br><nobr>hides <a href="../files/setting_preferences.htm"><b>1</b></a> <a href="../files/salome_pro_desktop.htm"><b>2</b></a> </nobr><br><nobr>hiding <a href="../files/displaying_hiding_toolbars.htm"><b>1</b></a> <a href="../files/using_object_browser.htm"><b>2</b></a> </nobr><br><a href="../files/introduction.htm"><b>high</b></a> <br><nobr>highlighted <a href="../files/readme.html"><b>1</b></a> <a href="../files/using_object_browser.htm"><b>2</b></a> </nobr><br><a href="../files/readme.html"><b>hints</b></a> <br><a href="../files/using_registry.htm"><b>history</b></a> <br><a name="bms_HO"></a><a name="subkey_HO"></a><a href="../files/copyright_notice.htm"><b>holders</b></a> <br><a href="../files/running_salome_pro.htm"><b>home</b></a> <br><a href="../files/about_salome_pro_architecture.htm"><b>host</b></a> <br><a href="../files/navigating_topics.htm"><b>hotspot</b></a> <br><a href="../files/navigating_topics.htm"><b>hotspots</b></a> <br><nobr>how <a href="../files/readme.html"><b>1</b></a> <a href="../files/installing_salome_pro.htm"><b>2</b></a> <a href="../files/about_salome_pro_architecture.htm"><b>3</b></a> </nobr><br><nobr><a name="bms_HT"></a><a name="subkey_HT"></a>html <a href="../files/about_salome_pro_help_system.htm"><b>1</b></a> <a href="../files/using_left-hand_tabs.htm"><b>2</b></a> </nobr><br>\r
+<a name="bm_K"></a><a name="subkey_K{"></a><a href="../kernel/running_salome_pro.htm"><b>k</b></a> <br><a name="bms_KB"></a><a name="subkey_KB"></a><a href="../kernel/readme.html"><b>kbytes</b></a> <br><nobr><a name="bms_KE"></a><a name="subkey_KE"></a>kernel <a href="../kernel/running_salome_pro.htm"><b>1</b></a> <a href="../kernel/readme.html"><b>2</b></a> <a href="../kernel/introduction_to_salome_pro.htm"><b>3</b></a> </nobr><br><a href="../kernel/readme.html"><b>key</b></a> <br><a href="../kernel/using_left-hand_tabs.htm"><b>keyword</b></a> <br><a href="../kernel/using_left-hand_tabs.htm"><b>keywords</b></a> <br><a name="bms_KI"></a><a name="subkey_KI"></a><a href="../kernel/running_salome_pro.htm"><b>kill</b></a> <br><a href="../kernel/running_salome_pro.htm"><b>killall</b></a> <br><nobr>kind <a href="../kernel/navigating_topics.htm"><b>1</b></a> <a href="../kernel/getting_properties_of_the_study.htm"><b>2</b></a> </nobr><br><a name="bms_KN"></a><a name="subkey_KN"></a><a href="../kernel/using_catalog_generator.htm"><b>know</b></a> <br>\r
 <br><br>\r
-<nobr><a name="bm_I"></a><a name="subkey_I{"></a>i586_linux_2 <a href="../files/readme.html"><b>1</b></a> <a href="../files/installing_salome_pro.htm"><b>2</b></a> </nobr><br><nobr><a name="bms_IA"></a><a name="subkey_IA"></a>iapp <a href="../files/introduction_to_salome_pro.htm"><b>1</b></a> <a href="../files/introduction_to_iapp.htm"><b>2</b></a> <a href="../files/about_salome_pro_architecture.htm"><b>3</b></a> </nobr><br><nobr><a name="bms_IC"></a><a name="subkey_IC"></a>icon <a href="../files/creating_a_new_study.htm"><b>1</b></a> <a href="../files/using_catalog_generator.htm"><b>2</b></a> </nobr><br><nobr>icons <a href="../files/editing_studies.htm"><b>1</b></a> <a href="../files/salome_pro_desktop.htm"><b>2</b></a> </nobr><br><nobr><a name="bms_ID"></a><a name="subkey_ID"></a>identification <a href="../files/using_registry.htm"><b>1</b></a> <a href="../files/using_object_browser.htm"><b>2</b></a> </nobr><br><nobr>identify <a href="../files/readme.html"><b>1</b></a> <a href="../files/installing_salome_pro.htm"><b>2</b></a> </nobr><br><nobr>idl <a href="../files/about_salome_pro_architecture.htm"><b>1</b></a> <a href="../files/using_catalog_generator.htm"><b>2</b></a> </nobr><br><a name="bms_IE"></a><a name="subkey_IE"></a><a href="../files/setting_preferences.htm"><b>ie</b></a> <br><nobr><a name="bms_IF"></a><a name="subkey_IF"></a>if <a href="../files/readme.html"><b>1</b></a> <a href="../files/opening_studies.htm"><b>2</b></a> <a href="../files/installing_salome_pro.htm"><b>3</b></a> <a href="../files/creating_a_new_study.htm"><b>4</b></a> <a href="../files/using_usecase_browser.htm"><b>5</b></a> <a href="../files/using_object_browser.htm"><b>6</b></a> <a href="../files/using_left-hand_tabs.htm"><b>7</b></a> <a href="../files/using_catalog_generator.htm"><b>8</b></a> <a href="../files/setting_preferences.htm"><b>9</b></a> <a href="../files/saving_a_study.htm"><b>10</b></a> <a href="../files/running_salome_pro.htm"><b>11</b></a> </nobr><br><a name="bms_IM"></a><a name="subkey_IM"></a><a href="../files/salome_pro_desktop.htm"><b>images</b></a> <br><a href="../files/navigating_topics.htm"><b>immediately</b></a> <br><a href="../files/copyright_notice.htm"><b>immeuble</b></a> <br><nobr>implement <a href="../files/readme.html"><b>1</b></a> <a href="../files/about_salome_pro_architecture.htm"><b>2</b></a> </nobr><br><nobr>implementation <a href="../files/about_salome_pro_architecture.htm"><b>1</b></a> <a href="../files/using_catalog_generator.htm"><b>2</b></a> </nobr><br><a href="../files/readme.html"><b>implementing</b></a> <br><a href="../files/readme.html"><b>implied</b></a> <br><a href="../files/readme.html"><b>important</b></a> <br><nobr>imported <a href="../files/introduction_to_iapp.htm"><b>1</b></a> <a href="../files/salome_pro_desktop.htm"><b>2</b></a> </nobr><br><a href="../files/installing_salome_pro.htm"><b>impossibility</b></a> <br><nobr><a name="bms_IN"></a><a name="subkey_IN"></a>includes <a href="../files/readme.html"><b>1</b></a> <a href="../files/installing_salome_pro.htm"><b>2</b></a> <a href="../files/using_left-hand_tabs.htm"><b>3</b></a> </nobr><br><nobr>including <a href="../files/navigating_topics.htm"><b>1</b></a> <a href="../files/copyright_notice.htm"><b>2</b></a> </nobr><br><a href="../files/about_salome_pro_architecture.htm"><b>inclusive</b></a> <br><a href="../files/introduction.htm"><b>increasingly</b></a> <br><a href="../files/about_salome_pro_architecture.htm"><b>incrementally</b></a> <br><a href="../files/about_salome_pro_architecture.htm"><b>independence</b></a> <br><a href="../files/about_salome_pro_architecture.htm"><b>independent</b></a> <br><nobr>index <a href="../files/using_object_browser.htm"><b>1</b></a> <a href="../files/using_left-hand_tabs.htm"><b>2</b></a> </nobr><br><a href="../files/introduction.htm"><b>industry</b></a> <br><nobr>information <a href="../files/readme.html"><b>1</b></a> <a href="../files/navigating_topics.htm"><b>2</b></a> <a href="../files/installing_salome_pro.htm"><b>3</b></a> <a href="../files/getting_properties_of_the_study.htm"><b>4</b></a> <a href="../files/copyright_notice.htm"><b>5</b></a> <a href="../files/about_salome_pro_architecture.htm"><b>6</b></a> <a href="../files/using_registry.htm"><b>7</b></a> <a href="../files/using_left-hand_tabs.htm"><b>8</b></a> <a href="../files/saving_a_study.htm"><b>9</b></a> </nobr><br><nobr>initial <a href="../files/getting_started2.htm"><b>1</b></a> <a href="../files/salome_pro_desktop.htm"><b>2</b></a> </nobr><br><a href="../files/using_catalog_generator.htm"><b>input</b></a> <br><a href="../files/readme.html"><b>insert</b></a> <br><nobr>inside <a href="../files/navigating_topics.htm"><b>1</b></a> <a href="../files/using_catalog_generator.htm"><b>2</b></a> </nobr><br><a href="../files/readme.html"><b>inspect</b></a> <br><a href="../files/installing_salome_pro.htm"><b>inspects</b></a> <br><nobr>instal <a href="../files/readme.html"><b>1</b></a> <a href="../files/installing_salome_pro.htm"><b>2</b></a> </nobr><br><nobr>install <a href="../files/readme.html"><b>1</b></a> <a href="../files/installing_salome_pro.htm"><b>2</b></a> <a href="../files/running_salome_pro.htm"><b>3</b></a> </nobr><br><a href="../files/readme.html"><b>install_binary</b></a> <br><a href="../files/readme.html"><b>install_disk_space</b></a> <br><a href="../files/readme.html"><b>install_source</b></a> <br><a href="../files/readme.html"><b>install_wizard_caption</b></a> <br><a href="../files/readme.html"><b>install_wizard_copyright</b></a> <br><a href="../files/readme.html"><b>install_wizard_license_info</b></a> <br><a href="../files/readme.html"><b>install_wizard_root_directory</b></a> <br><a href="../files/readme.html"><b>install_wizard_version</b></a> <br><nobr>installation <a href="../files/readme.html"><b>1</b></a> <a href="../files/installing_salome_pro.htm"><b>2</b></a> <a href="../files/running_salome_pro.htm"><b>3</b></a> </nobr><br><a href="../files/readme.html"><b>installation_mode</b></a> <br><a href="../files/readme.html"><b>installation_script_name</b></a> <br><a href="../files/readme.html"><b>installdiskspace</b></a> <br><nobr>installed <a href="../files/readme.html"><b>1</b></a> <a href="../files/installing_salome_pro.htm"><b>2</b></a> <a href="../files/using_catalog_generator.htm"><b>3</b></a> </nobr><br><nobr>installing <a href="../files/readme.html"><b>1</b></a> <a href="../files/installing_salome_pro.htm"><b>2</b></a> </nobr><br><a href="../files/readme.html"><b>installwizard_root_directory</b></a> <br><a href="../files/about_salome_pro_architecture.htm"><b>instrumental</b></a> <br><a href="../files/readme.html"><b>integer</b></a> <br><a href="../files/introduction_to_salome_pro.htm"><b>integrate</b></a> <br><nobr>integrated <a href="../files/introduction_to_iapp.htm"><b>1</b></a> <a href="../files/about_salome_pro_architecture.htm"><b>2</b></a> <a href="../files/salome_pro_desktop.htm"><b>3</b></a> </nobr><br><nobr>integration <a href="../files/introduction_to_iapp.htm"><b>1</b></a> <a href="../files/introduction.htm"><b>2</b></a> <a href="../files/about_salome_pro_architecture.htm"><b>3</b></a> <a href="../files/using_catalog_generator.htm"><b>4</b></a> </nobr><br><a href="../files/using_left-hand_tabs.htm"><b>intended</b></a> <br><a href="../files/introduction.htm"><b>inter</b></a> <br><nobr>interface <a href="../files/introduction_to_salome_pro.htm"><b>1</b></a> <a href="../files/introduction_to_iapp.htm"><b>2</b></a> <a href="../files/introduction.htm"><b>3</b></a> <a href="../files/about_salome_pro_architecture.htm"><b>4</b></a> <a href="../files/using_catalog_generator.htm"><b>5</b></a> <a href="../files/setting_preferences.htm"><b>6</b></a> </nobr><br><nobr>interfaces <a href="../files/about_salome_pro_architecture.htm"><b>1</b></a> <a href="../files/using_catalog_generator.htm"><b>2</b></a> </nobr><br><nobr>internal <a href="../files/readme.html"><b>1</b></a> <a href="../files/introduction.htm"><b>2</b></a> </nobr><br><a href="../files/about_salome_pro_help_system.htm"><b>internet</b></a> <br><a href="../files/using_object_browser.htm"><b>interoperable</b></a> <br><nobr>interpreter <a href="../files/introduction_to_iapp.htm"><b>1</b></a> <a href="../files/salome_pro_desktop.htm"><b>2</b></a> </nobr><br><a href="../files/using_registry.htm"><b>interval</b></a> <br><nobr>introduction <a href="../files/readme.html"><b>1</b></a> <a href="../files/introduction_to_salome_pro.htm"><b>2</b></a> <a href="../files/introduction_to_iapp.htm"><b>3</b></a> <a href="../files/introduction.htm"><b>4</b></a> <a href="../files/installing_salome_pro.htm"><b>5</b></a> </nobr><br><a href="../files/saving_a_study.htm"><b>invalid</b></a> <br><nobr>invoke <a href="../files/readme.html"><b>1</b></a> <a href="../files/installing_salome_pro.htm"><b>2</b></a> </nobr><br><a href="../files/salome_pro_desktop.htm"><b>invoked</b></a> <br><nobr><a name="bms_IO"></a><a name="subkey_IO"></a>ior <a href="../files/using_object_browser.htm"><b>1</b></a> <a href="../files/setting_preferences.htm"><b>2</b></a> </nobr><br><br><br></p><p class="ftsbody" align="center"><a href="whlstf4.htm" target="_self" title="previous search group"><b>&gt;&gt;</b></a>\r
+<a name="bm_L"></a><a name="subkey_L{"></a><a href="../kernel/running_salome_pro.htm"><b>l</b></a> <br><a name="bms_LA"></a><a name="subkey_LA"></a><a href="../kernel/about_salome_pro_architecture.htm"><b>language</b></a> <br><nobr>last <a href="../kernel/using_registry.htm"><b>1</b></a> <a href="../kernel/saving_a_study.htm"><b>2</b></a> </nobr><br><nobr>launch <a href="../kernel/running_salome_pro.htm"><b>1</b></a> <a href="../kernel/readme.html"><b>2</b></a> <a href="../kernel/opening_studies.htm"><b>3</b></a> <a href="../kernel/using_catalog_generator.htm"><b>4</b></a> <a href="../kernel/setting_preferences.htm"><b>5</b></a> </nobr><br><nobr>launched <a href="../kernel/running_salome_pro.htm"><b>1</b></a> <a href="../kernel/about_salome_pro_help_system.htm"><b>2</b></a> <a href="../kernel/using_registry.htm"><b>3</b></a> </nobr><br><a href="../kernel/readme.html"><b>launches</b></a> <br><nobr>launching <a href="../kernel/running_salome_pro.htm"><b>1</b></a> <a href="../kernel/readme.html"><b>2</b></a> <a href="../kernel/using_registry.htm"><b>3</b></a> <a href="../kernel/using_catalog_generator.htm"><b>4</b></a> </nobr><br><a name="bms_LD"></a><a name="subkey_LD"></a><a href="../kernel/readme.html"><b>ld_library_path</b></a> <br><a name="bms_LE"></a><a name="subkey_LE"></a><a href="../kernel/saving_a_study.htm"><b>lead</b></a> <br><a href="../kernel/readme.html"><b>learn</b></a> <br><nobr>left <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/using_left-hand_tabs.htm"><b>2</b></a> <a href="../kernel/salome_pro_desktop.htm"><b>3</b></a> </nobr><br><nobr>level <a href="../kernel/using_usecase_browser.htm"><b>1</b></a> <a href="../kernel/using_left-hand_tabs.htm"><b>2</b></a> <a href="../kernel/setting_preferences.htm"><b>3</b></a> </nobr><br><br><br></p><p class="ftsbody" align="center"><a href="whlstf4.htm" target="_self" title="previous search group"><b>&gt;&gt;</b></a>\r
 \r
 </body>\r
 \r
index 05f11df821ce84d49c89c6fc80efba0840661b4e..6cf4619632c9ccd3ccf45bc14f633e41193299bb 100755 (executable)
@@ -1,9 +1,9 @@
 <html>\r
 <head>\r
 <title>Search Words List</title>\r
-<meta http-equiv="content-type" content="text/html; charset=iso-8859-1">\r
+\r
 <meta name="generator" content="RoboHelp by eHelp Corporation   www.ehelp.com">\r
-<meta name "description" content="WebHelp 2002">\r
+<meta name="description" content="WebHelp 5.50">\r
 <base target="bsscright">\r
 <style>\r
 <!--\r
@@ -30,18 +30,16 @@ A:hover {color:Navy; } A:hover {font-family:Tahoma; } A:hover {font-size:8pt; }
 -->\r
 </style>\r
 </head>\r
-<body marginheight="0"  marginwidth="0">\r
+<body marginheight="0"  marginwidth="0" bgproperties="fixed">\r
 <p class="ftsbody" align="center"><a href="whlstf3.htm" target="_self" title="previous search group"><b>&lt;&lt;</b></a><br><br></p>\r
-<p class="ftsbody">\r
-<nobr><a name="bms_IS"></a><a name="subkey_IS"></a>ispython <a href="../files/readme.html"><b>1</b></a> <a href="../files/installing_salome_pro.htm"><b>2</b></a> </nobr><br><nobr>isswig <a href="../files/readme.html"><b>1</b></a> <a href="../files/installing_salome_pro.htm"><b>2</b></a> </nobr><br><nobr><a name="bms_IT"></a><a name="subkey_IT"></a>item <a href="../files/getting_properties_of_the_study.htm"><b>1</b></a> <a href="../files/setting_preferences.htm"><b>2</b></a> </nobr><br><a href="../files/installing_salome_pro.htm"><b>items</b></a> <br><nobr>itself <a href="../files/readme.html"><b>1</b></a> <a href="../files/installing_salome_pro.htm"><b>2</b></a> </nobr><br>\r
-<br><br>\r
-<a name="bm_J"></a><a name="subkey_JA"></a><a href="../files/about_salome_pro_help_system.htm"><b>java</b></a> <br><a name="bms_JP"></a><a name="subkey_JP"></a><a href="../files/salome_pro_desktop.htm"><b>jpeg</b></a> <br><a href="../files/salome_pro_desktop.htm"><b>jpg</b></a> <br><nobr><a name="bms_JU"></a><a name="subkey_JU"></a>just <a href="../files/readme.html"><b>1</b></a> <a href="../files/installing_salome_pro.htm"><b>2</b></a> </nobr><br>\r
+<p class="ftsbody" >\r
+<a name="bms_LI"></a><a name="subkey_LI"></a><a href="../kernel/readme.html"><b>lib</b></a> <br><a href="../kernel/readme.html"><b>libcosnotify3</b></a> <br><a href="../kernel/readme.html"><b>libgl</b></a> <br><a href="../kernel/readme.html"><b>libhdf5</b></a> <br><a href="../kernel/readme.html"><b>libmed</b></a> <br><a href="../kernel/readme.html"><b>libomniorb3</b></a> <br><a href="../kernel/readme.html"><b>libqt</b></a> <br><a href="../kernel/readme.html"><b>libqtxmlcmodule</b></a> <br><a href="../kernel/readme.html"><b>libqwt</b></a> <br><a href="../kernel/readme.html"><b>library</b></a> <br><a href="../kernel/readme.html"><b>libs</b></a> <br><a href="../kernel/readme.html"><b>libsip</b></a> <br><a href="../kernel/readme.html"><b>libtcl8</b></a> <br><a href="../kernel/readme.html"><b>libtclx8</b></a> <br><a href="../kernel/readme.html"><b>libtk8</b></a> <br><a href="../kernel/readme.html"><b>libtkx8</b></a> <br><a href="../kernel/readme.html"><b>libvtkcommon</b></a> <br><nobr>license <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/copyright_notice.htm"><b>2</b></a> </nobr><br><nobr>like <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/navigating_topics.htm"><b>2</b></a> <a href="../kernel/displaying_studies.htm"><b>3</b></a> <a href="../kernel/displaying_hiding_toolbars.htm"><b>4</b></a> <a href="../kernel/about_salome_pro_architecture.htm"><b>5</b></a> <a href="../kernel/using_usecase_browser.htm"><b>6</b></a> <a href="../kernel/using_object_browser.htm"><b>7</b></a> <a href="../kernel/using_catalog_generator.htm"><b>8</b></a> <a href="../kernel/saving_a_study.htm"><b>9</b></a> <a href="../kernel/salome_pro_desktop.htm"><b>10</b></a> </nobr><br><nobr>line <a href="../kernel/running_salome_pro.htm"><b>1</b></a> <a href="../kernel/readme.html"><b>2</b></a> <a href="../kernel/about_salome_pro_help_system.htm"><b>3</b></a> </nobr><br><nobr>link <a href="../kernel/navigating_topics.htm"><b>1</b></a> <a href="../kernel/introduction.htm"><b>2</b></a> </nobr><br><nobr>links <a href="../kernel/navigating_topics.htm"><b>1</b></a> <a href="../kernel/about_salome_pro_architecture.htm"><b>2</b></a> </nobr><br><nobr>linux <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/about_salome_pro_help_system.htm"><b>2</b></a> </nobr><br><nobr>list <a href="../kernel/running_salome_pro.htm"><b>1</b></a> <a href="../kernel/readme.html"><b>2</b></a> <a href="../kernel/navigating_topics.htm"><b>3</b></a> <a href="../kernel/getting_properties_of_the_study.htm"><b>4</b></a> <a href="../kernel/using_registry.htm"><b>5</b></a> <a href="../kernel/using_left-hand_tabs.htm"><b>6</b></a> <a href="../kernel/setting_preferences.htm"><b>7</b></a> </nobr><br><a href="../kernel/readme.html"><b>list_of_prerequisites</b></a> <br><a name="bms_LO"></a><a name="subkey_LO"></a><a href="../kernel/opening_studies.htm"><b>load</b></a> <br><nobr>loaded <a href="../kernel/running_salome_pro.htm"><b>1</b></a> <a href="../kernel/using_usecase_browser.htm"><b>2</b></a> <a href="../kernel/using_object_browser.htm"><b>3</b></a> <a href="../kernel/setting_preferences.htm"><b>4</b></a> <a href="../kernel/salome_pro_desktop.htm"><b>5</b></a> </nobr><br><a href="../kernel/introduction_to_iapp.htm"><b>loading</b></a> <br><a href="../kernel/readme.html"><b>locally</b></a> <br><a href="../kernel/using_left-hand_tabs.htm"><b>locate</b></a> <br><nobr>located <a href="../kernel/running_salome_pro.htm"><b>1</b></a> <a href="../kernel/displaying_hiding_toolbars.htm"><b>2</b></a> <a href="../kernel/using_object_browser.htm"><b>3</b></a> </nobr><br><a href="../kernel/using_catalog_generator.htm"><b>location</b></a> <br><a href="../kernel/getting_properties_of_the_study.htm"><b>lock</b></a> <br><a href="../kernel/getting_properties_of_the_study.htm"><b>locked</b></a> <br><a href="../kernel/running_salome_pro.htm"><b>log</b></a> <br><a href="../kernel/running_salome_pro.htm"><b>logger</b></a> <br><a href="../kernel/about_salome_pro_architecture.htm"><b>long</b></a> <br><nobr>look <a href="../kernel/displaying_studies.htm"><b>1</b></a> <a href="../kernel/using_catalog_generator.htm"><b>2</b></a> </nobr><br><nobr>looks <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/using_left-hand_tabs.htm"><b>2</b></a> </nobr><br><a href="../kernel/saving_a_study.htm"><b>lost</b></a> <br><nobr>lower <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/using_left-hand_tabs.htm"><b>2</b></a> </nobr><br>\r
 <br><br>\r
-<a name="bm_K"></a><a name="subkey_K{"></a><a href="../files/running_salome_pro.htm"><b>k</b></a> <br><a name="bms_KB"></a><a name="subkey_KB"></a><a href="../files/readme.html"><b>kbytes</b></a> <br><nobr><a name="bms_KE"></a><a name="subkey_KE"></a>kernel <a href="../files/introduction_to_salome_pro.htm"><b>1</b></a> <a href="../files/running_salome_pro.htm"><b>2</b></a> </nobr><br><nobr>key <a href="../files/readme.html"><b>1</b></a> <a href="../files/installing_salome_pro.htm"><b>2</b></a> </nobr><br><a href="../files/using_left-hand_tabs.htm"><b>keyword</b></a> <br><a href="../files/using_left-hand_tabs.htm"><b>keywords</b></a> <br><a name="bms_KI"></a><a name="subkey_KI"></a><a href="../files/running_salome_pro.htm"><b>kill</b></a> <br><a href="../files/running_salome_pro.htm"><b>killall</b></a> <br><nobr>kind <a href="../files/navigating_topics.htm"><b>1</b></a> <a href="../files/getting_properties_of_the_study.htm"><b>2</b></a> </nobr><br><nobr><a name="bms_KN"></a><a name="subkey_KN"></a>know <a href="../files/installing_salome_pro.htm"><b>1</b></a> <a href="../files/using_catalog_generator.htm"><b>2</b></a> </nobr><br><a href="../files/installing_salome_pro.htm"><b>known</b></a> <br>\r
+<a name="bm_M"></a><a name="subkey_M{"></a><a href="../kernel/running_salome_pro.htm"><b>m</b></a> <br><nobr><a name="bms_MA"></a><a name="subkey_MA"></a>machine <a href="../kernel/using_registry.htm"><b>1</b></a> <a href="../kernel/saving_a_study.htm"><b>2</b></a> </nobr><br><a href="../kernel/about_salome_pro_architecture.htm"><b>machines</b></a> <br><a href="../kernel/about_salome_pro_help_system.htm"><b>macintosh</b></a> <br><a href="../kernel/about_salome_pro_architecture.htm"><b>macro</b></a> <br><nobr>main <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/opening_studies.htm"><b>2</b></a> <a href="../kernel/getting_properties_of_the_study.htm"><b>3</b></a> <a href="../kernel/editing_studies.htm"><b>4</b></a> <a href="../kernel/displaying_studies.htm"><b>5</b></a> <a href="../kernel/displaying_hiding_toolbars.htm"><b>6</b></a> <a href="../kernel/creating_a_new_study.htm"><b>7</b></a> <a href="../kernel/using_registry.htm"><b>8</b></a> <a href="../kernel/using_catalog_generator.htm"><b>9</b></a> <a href="../kernel/setting_preferences.htm"><b>10</b></a> <a href="../kernel/saving_a_study.htm"><b>11</b></a> <a href="../kernel/salome_pro_desktop.htm"><b>12</b></a> </nobr><br><nobr>make <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/displaying_studies.htm"><b>2</b></a> <a href="../kernel/creating_a_new_study.htm"><b>3</b></a> </nobr><br><a href="../kernel/readme.html"><b>make_dir</b></a> <br><a href="../kernel/readme.html"><b>make_env</b></a> <br><nobr>management <a href="../kernel/introduction_to_iapp.htm"><b>1</b></a> <a href="../kernel/salome_pro_desktop.htm"><b>2</b></a> </nobr><br><a href="../kernel/about_salome_pro_help_system.htm"><b>manual</b></a> <br><a href="../kernel/readme.html"><b>manually</b></a> <br><a href="../kernel/setting_preferences.htm"><b>manuals</b></a> <br><a href="../kernel/about_salome_pro_architecture.htm"><b>mapped</b></a> <br><nobr>mark <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/displaying_hiding_toolbars.htm"><b>2</b></a> </nobr><br><nobr>marked <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/setting_preferences.htm"><b>2</b></a> </nobr><br><a href="../kernel/introduction.htm"><b>market</b></a> <br><a href="../kernel/about_salome_pro_architecture.htm"><b>massively</b></a> <br><a href="../kernel/readme.html"><b>master</b></a> <br><a href="../kernel/using_left-hand_tabs.htm"><b>matches</b></a> <br><a href="../kernel/copyright_notice.htm"><b>material</b></a> <br><a href="../kernel/creating_a_new_study.htm"><b>maximize</b></a> <br><nobr>maximized <a href="../kernel/displaying_studies.htm"><b>1</b></a> <a href="../kernel/salome_pro_desktop.htm"><b>2</b></a> </nobr><br><nobr><a name="bms_ME"></a><a name="subkey_ME"></a>means <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/getting_started2.htm"><b>2</b></a> <a href="../kernel/copyright_notice.htm"><b>3</b></a> </nobr><br><a href="../kernel/copyright_notice.htm"><b>mechanical</b></a> <br><a href="../kernel/readme.html"><b>med2home</b></a> <br><a href="../kernel/introduction.htm"><b>meet</b></a> <br><nobr>menu <a href="../kernel/opening_studies.htm"><b>1</b></a> <a href="../kernel/navigating_topics.htm"><b>2</b></a> <a href="../kernel/getting_properties_of_the_study.htm"><b>3</b></a> <a href="../kernel/editing_studies.htm"><b>4</b></a> <a href="../kernel/displaying_studies.htm"><b>5</b></a> <a href="../kernel/displaying_hiding_toolbars.htm"><b>6</b></a> <a href="../kernel/creating_a_new_study.htm"><b>7</b></a> <a href="../kernel/using_usecase_browser.htm"><b>8</b></a> <a href="../kernel/using_registry.htm"><b>9</b></a> <a href="../kernel/using_object_browser.htm"><b>10</b></a> <a href="../kernel/using_catalog_generator.htm"><b>11</b></a> <a href="../kernel/setting_preferences.htm"><b>12</b></a> <a href="../kernel/saving_a_study.htm"><b>13</b></a> <a href="../kernel/salome_pro_desktop.htm"><b>14</b></a> </nobr><br><nobr>menus <a href="../kernel/introduction_to_iapp.htm"><b>1</b></a> <a href="../kernel/salome_pro_desktop.htm"><b>2</b></a> </nobr><br><a href="../kernel/readme.html"><b>mesa</b></a> <br><a href="../kernel/readme.html"><b>mesa_home</b></a> <br><a href="../kernel/introduction_to_salome_pro.htm"><b>meshes</b></a> <br><a href="../kernel/introduction_to_salome_pro.htm"><b>meshing</b></a> <br><nobr>message <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/getting_properties_of_the_study.htm"><b>2</b></a> <a href="../kernel/using_registry.htm"><b>3</b></a> </nobr><br><nobr>messages <a href="../kernel/running_salome_pro.htm"><b>1</b></a> <a href="../kernel/introduction_to_iapp.htm"><b>2</b></a> <a href="../kernel/setting_preferences.htm"><b>3</b></a> <a href="../kernel/salome_pro_desktop.htm"><b>4</b></a> </nobr><br><a name="bms_MI"></a><a name="subkey_MI"></a><a href="../kernel/readme.html"><b>middle</b></a> <br><nobr>minimized <a href="../kernel/creating_a_new_study.htm"><b>1</b></a> <a href="../kernel/salome_pro_desktop.htm"><b>2</b></a> </nobr><br><a href="../kernel/readme.html"><b>missed</b></a> <br><a href="../kernel/salome_pro_desktop.htm"><b>mistakes</b></a> <br><nobr><a name="bms_MO"></a><a name="subkey_MO"></a>mode <a href="../kernel/running_salome_pro.htm"><b>1</b></a> <a href="../kernel/readme.html"><b>2</b></a> <a href="../kernel/about_salome_pro_architecture.htm"><b>3</b></a> </nobr><br><a href="../kernel/about_salome_pro_architecture.htm"><b>model</b></a> <br><nobr>modeling <a href="../kernel/introduction_to_salome_pro.htm"><b>1</b></a> <a href="../kernel/introduction.htm"><b>2</b></a> <a href="../kernel/about_salome_pro_architecture.htm"><b>3</b></a> </nobr><br><a href="../kernel/introduction.htm"><b>modern</b></a> <br><a href="../kernel/readme.html"><b>modes</b></a> <br><nobr>modification <a href="../kernel/getting_properties_of_the_study.htm"><b>1</b></a> <a href="../kernel/about_salome_pro_architecture.htm"><b>2</b></a> </nobr><br><a href="../kernel/getting_properties_of_the_study.htm"><b>modifications</b></a> <br><nobr>modify <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/using_usecase_browser.htm"><b>2</b></a> </nobr><br><a href="../kernel/readme.html"><b>modifying</b></a> <br><nobr>module <a href="../kernel/running_salome_pro.htm"><b>1</b></a> <a href="../kernel/readme.html"><b>2</b></a> <a href="../kernel/introduction_to_salome_pro.htm"><b>3</b></a> <a href="../kernel/using_catalog_generator.htm"><b>4</b></a> </nobr><br><a href="../kernel/readme.html"><b>module_root_dir</b></a> <br><a href="../kernel/readme.html"><b>module_src</b></a> <br><a href="../kernel/readme.html"><b>module_src_dir</b></a> <br><a href="../kernel/running_salome_pro.htm"><b>module1</b></a> <br><a href="../kernel/running_salome_pro.htm"><b>module2</b></a> <br><nobr>modules <a href="../kernel/running_salome_pro.htm"><b>1</b></a> <a href="../kernel/introduction_to_salome_pro.htm"><b>2</b></a> <a href="../kernel/about_salome_pro_help_system.htm"><b>3</b></a> <a href="../kernel/using_catalog_generator.htm"><b>4</b></a> </nobr><br><a href="../kernel/readme.html"><b>moment</b></a> <br><a href="../kernel/displaying_hiding_toolbars.htm"><b>mouse</b></a> <br><a href="../kernel/setting_preferences.htm"><b>mozilla</b></a> <br><a name="bms_MT"></a><a name="subkey_MT"></a><a href="../kernel/readme.html"><b>mt</b></a> <br><a name="bms_MU"></a><a name="subkey_MU"></a><a href="../kernel/readme.html"><b>much</b></a> <br><nobr>multi <a href="../kernel/introduction_to_iapp.htm"><b>1</b></a> <a href="../kernel/getting_started2.htm"><b>2</b></a> <a href="../kernel/using_left-hand_tabs.htm"><b>3</b></a> <a href="../kernel/using_catalog_generator.htm"><b>4</b></a> </nobr><br><nobr>multifile <a href="../kernel/setting_preferences.htm"><b>1</b></a> <a href="../kernel/saving_a_study.htm"><b>2</b></a> </nobr><br><a href="../kernel/saving_a_study.htm"><b>multiple</b></a> <br><a href="../kernel/about_salome_pro_architecture.htm"><b>multitier</b></a> <br><nobr>must <a href="../kernel/introduction_to_salome_pro.htm"><b>1</b></a> <a href="../kernel/introduction.htm"><b>2</b></a> <a href="../kernel/about_salome_pro_architecture.htm"><b>3</b></a> </nobr><br>\r
 <br><br>\r
-<a name="bm_L"></a><a name="subkey_L{"></a><a href="../files/running_salome_pro.htm"><b>l</b></a> <br><a name="bms_LA"></a><a name="subkey_LA"></a><a href="../files/about_salome_pro_architecture.htm"><b>language</b></a> <br><nobr>last <a href="../files/installing_salome_pro.htm"><b>1</b></a> <a href="../files/using_registry.htm"><b>2</b></a> <a href="../files/saving_a_study.htm"><b>3</b></a> </nobr><br><nobr>launch <a href="../files/readme.html"><b>1</b></a> <a href="../files/opening_studies.htm"><b>2</b></a> <a href="../files/installing_salome_pro.htm"><b>3</b></a> <a href="../files/using_catalog_generator.htm"><b>4</b></a> <a href="../files/setting_preferences.htm"><b>5</b></a> <a href="../files/running_salome_pro.htm"><b>6</b></a> </nobr><br><nobr>launched <a href="../files/about_salome_pro_help_system.htm"><b>1</b></a> <a href="../files/using_registry.htm"><b>2</b></a> <a href="../files/running_salome_pro.htm"><b>3</b></a> </nobr><br><nobr>launches <a href="../files/readme.html"><b>1</b></a> <a href="../files/installing_salome_pro.htm"><b>2</b></a> </nobr><br><nobr>launching <a href="../files/readme.html"><b>1</b></a> <a href="../files/installing_salome_pro.htm"><b>2</b></a> <a href="../files/using_registry.htm"><b>3</b></a> <a href="../files/using_catalog_generator.htm"><b>4</b></a> <a href="../files/running_salome_pro.htm"><b>5</b></a> </nobr><br><nobr><a name="bms_LD"></a><a name="subkey_LD"></a>ld_library_path <a href="../files/readme.html"><b>1</b></a> <a href="../files/installing_salome_pro.htm"><b>2</b></a> </nobr><br><nobr><a name="bms_LE"></a><a name="subkey_LE"></a>lead <a href="../files/installing_salome_pro.htm"><b>1</b></a> <a href="../files/saving_a_study.htm"><b>2</b></a> </nobr><br><a href="../files/readme.html"><b>learn</b></a> <br><nobr>left <a href="../files/readme.html"><b>1</b></a> <a href="../files/installing_salome_pro.htm"><b>2</b></a> <a href="../files/using_left-hand_tabs.htm"><b>3</b></a> <a href="../files/salome_pro_desktop.htm"><b>4</b></a> </nobr><br><nobr>level <a href="../files/using_usecase_browser.htm"><b>1</b></a> <a href="../files/using_left-hand_tabs.htm"><b>2</b></a> <a href="../files/setting_preferences.htm"><b>3</b></a> </nobr><br><nobr><a name="bms_LI"></a><a name="subkey_LI"></a>lib <a href="../files/readme.html"><b>1</b></a> <a href="../files/installing_salome_pro.htm"><b>2</b></a> </nobr><br><nobr>libcosnotify3 <a href="../files/readme.html"><b>1</b></a> <a href="../files/installing_salome_pro.htm"><b>2</b></a> </nobr><br><nobr>libgl <a href="../files/readme.html"><b>1</b></a> <a href="../files/installing_salome_pro.htm"><b>2</b></a> </nobr><br><nobr>libhdf5 <a href="../files/readme.html"><b>1</b></a> <a href="../files/installing_salome_pro.htm"><b>2</b></a> </nobr><br><nobr>libmed <a href="../files/readme.html"><b>1</b></a> <a href="../files/installing_salome_pro.htm"><b>2</b></a> </nobr><br><nobr>libomniorb3 <a href="../files/readme.html"><b>1</b></a> <a href="../files/installing_salome_pro.htm"><b>2</b></a> </nobr><br><nobr>libqt <a href="../files/readme.html"><b>1</b></a> <a href="../files/installing_salome_pro.htm"><b>2</b></a> </nobr><br><nobr>libqtxmlcmodule <a href="../files/readme.html"><b>1</b></a> <a href="../files/installing_salome_pro.htm"><b>2</b></a> </nobr><br><nobr>libqwt <a href="../files/readme.html"><b>1</b></a> <a href="../files/installing_salome_pro.htm"><b>2</b></a> </nobr><br><nobr>library <a href="../files/readme.html"><b>1</b></a> <a href="../files/installing_salome_pro.htm"><b>2</b></a> </nobr><br><nobr>libs <a href="../files/readme.html"><b>1</b></a> <a href="../files/installing_salome_pro.htm"><b>2</b></a> </nobr><br><nobr>libsip <a href="../files/readme.html"><b>1</b></a> <a href="../files/installing_salome_pro.htm"><b>2</b></a> </nobr><br><nobr>libtcl8 <a href="../files/readme.html"><b>1</b></a> <a href="../files/installing_salome_pro.htm"><b>2</b></a> </nobr><br><nobr>libtclx8 <a href="../files/readme.html"><b>1</b></a> <a href="../files/installing_salome_pro.htm"><b>2</b></a> </nobr><br><nobr>libtk8 <a href="../files/readme.html"><b>1</b></a> <a href="../files/installing_salome_pro.htm"><b>2</b></a> </nobr><br><nobr>libtkx8 <a href="../files/readme.html"><b>1</b></a> <a href="../files/installing_salome_pro.htm"><b>2</b></a> </nobr><br><nobr>libvtkcommon <a href="../files/readme.html"><b>1</b></a> <a href="../files/installing_salome_pro.htm"><b>2</b></a> </nobr><br><nobr>license <a href="../files/readme.html"><b>1</b></a> <a href="../files/copyright_notice.htm"><b>2</b></a> </nobr><br><nobr>like <a href="../files/readme.html"><b>1</b></a> <a href="../files/navigating_topics.htm"><b>2</b></a> <a href="../files/installing_salome_pro.htm"><b>3</b></a> <a href="../files/displaying_studies.htm"><b>4</b></a> <a href="../files/displaying_hiding_toolbars.htm"><b>5</b></a> <a href="../files/about_salome_pro_architecture.htm"><b>6</b></a> <a href="../files/using_usecase_browser.htm"><b>7</b></a> <a href="../files/using_object_browser.htm"><b>8</b></a> <a href="../files/using_catalog_generator.htm"><b>9</b></a> <a href="../files/saving_a_study.htm"><b>10</b></a> <a href="../files/salome_pro_desktop.htm"><b>11</b></a> </nobr><br><a href="../files/installing_salome_pro.htm"><b>limitation</b></a> <br><nobr>line <a href="../files/readme.html"><b>1</b></a> <a href="../files/installing_salome_pro.htm"><b>2</b></a> <a href="../files/about_salome_pro_help_system.htm"><b>3</b></a> <a href="../files/running_salome_pro.htm"><b>4</b></a> </nobr><br><nobr>link <a href="../files/navigating_topics.htm"><b>1</b></a> <a href="../files/introduction.htm"><b>2</b></a> </nobr><br><a href="../files/installing_salome_pro.htm"><b>linked</b></a> <br><a href="../files/installing_salome_pro.htm"><b>linking</b></a> <br><nobr>links <a href="../files/navigating_topics.htm"><b>1</b></a> <a href="../files/about_salome_pro_architecture.htm"><b>2</b></a> </nobr><br><a href="../files/installing_salome_pro.htm"><b>linus</b></a> <br><nobr>linux <a href="../files/readme.html"><b>1</b></a> <a href="../files/installing_salome_pro.htm"><b>2</b></a> <a href="../files/about_salome_pro_help_system.htm"><b>3</b></a> </nobr><br><a href="../files/readme.html"><b>linuxredhat</b></a> <br><nobr>list <a href="../files/readme.html"><b>1</b></a> <a href="../files/navigating_topics.htm"><b>2</b></a> <a href="../files/installing_salome_pro.htm"><b>3</b></a> <a href="../files/getting_properties_of_the_study.htm"><b>4</b></a> <a href="../files/using_registry.htm"><b>5</b></a> <a href="../files/using_left-hand_tabs.htm"><b>6</b></a> <a href="../files/setting_preferences.htm"><b>7</b></a> <a href="../files/running_salome_pro.htm"><b>8</b></a> </nobr><br><a href="../files/readme.html"><b>list_of_prerequisites</b></a> <br><a name="bms_LO"></a><a name="subkey_LO"></a><a href="../files/opening_studies.htm"><b>load</b></a> <br><nobr>loaded <a href="../files/using_usecase_browser.htm"><b>1</b></a> <a href="../files/using_object_browser.htm"><b>2</b></a> <a href="../files/setting_preferences.htm"><b>3</b></a> <a href="../files/salome_pro_desktop.htm"><b>4</b></a> <a href="../files/running_salome_pro.htm"><b>5</b></a> </nobr><br><a href="../files/introduction_to_iapp.htm"><b>loading</b></a> <br><nobr>locally <a href="../files/readme.html"><b>1</b></a> <a href="../files/installing_salome_pro.htm"><b>2</b></a> </nobr><br><a href="../files/using_left-hand_tabs.htm"><b>locate</b></a> <br><nobr>located <a href="../files/displaying_hiding_toolbars.htm"><b>1</b></a> <a href="../files/using_object_browser.htm"><b>2</b></a> <a href="../files/running_salome_pro.htm"><b>3</b></a> </nobr><br><a href="../files/using_catalog_generator.htm"><b>location</b></a> <br><a href="../files/getting_properties_of_the_study.htm"><b>lock</b></a> <br><a href="../files/getting_properties_of_the_study.htm"><b>locked</b></a> <br><a href="../files/running_salome_pro.htm"><b>log</b></a> <br><a href="../files/running_salome_pro.htm"><b>logger</b></a> <br><a href="../files/about_salome_pro_architecture.htm"><b>long</b></a> <br><nobr>look <a href="../files/displaying_studies.htm"><b>1</b></a> <a href="../files/using_catalog_generator.htm"><b>2</b></a> </nobr><br><nobr>looks <a href="../files/readme.html"><b>1</b></a> <a href="../files/installing_salome_pro.htm"><b>2</b></a> <a href="../files/using_left-hand_tabs.htm"><b>3</b></a> </nobr><br><a href="../files/saving_a_study.htm"><b>lost</b></a> <br><a href="../files/installing_salome_pro.htm"><b>lot</b></a> <br><nobr>lower <a href="../files/readme.html"><b>1</b></a> <a href="../files/installing_salome_pro.htm"><b>2</b></a> <a href="../files/using_left-hand_tabs.htm"><b>3</b></a> </nobr><br>\r
+<a name="bm_N"></a><a name="subkey_N{"></a><a href="../kernel/readme.html"><b>n</b></a> <br><nobr><a name="bms_NA"></a><a name="subkey_NA"></a>name <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/getting_properties_of_the_study.htm"><b>2</b></a> <a href="../kernel/displaying_studies.htm"><b>3</b></a> <a href="../kernel/creating_a_new_study.htm"><b>4</b></a> <a href="../kernel/using_usecase_browser.htm"><b>5</b></a> <a href="../kernel/using_registry.htm"><b>6</b></a> <a href="../kernel/using_object_browser.htm"><b>7</b></a> <a href="../kernel/using_catalog_generator.htm"><b>8</b></a> <a href="../kernel/setting_preferences.htm"><b>9</b></a> <a href="../kernel/saving_a_study.htm"><b>10</b></a> </nobr><br><nobr>names <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/copyright_notice.htm"><b>2</b></a> </nobr><br><a href="../kernel/readme.html"><b>native</b></a> <br><a href="../kernel/about_salome_pro_architecture.htm"><b>natural</b></a> <br><nobr>navigate <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/navigating_topics.htm"><b>2</b></a> </nobr><br><a href="../kernel/navigating_topics.htm"><b>navigating</b></a> <br><nobr>navigation <a href="../kernel/navigating_topics.htm"><b>1</b></a> <a href="../kernel/about_salome_pro_help_system.htm"><b>2</b></a> </nobr><br><a href="../kernel/about_salome_pro_help_system.htm"><b>navigator</b></a> <br><nobr><a name="bms_NE"></a><a name="subkey_NE"></a>necessary <a href="../kernel/running_salome_pro.htm"><b>1</b></a> <a href="../kernel/readme.html"><b>2</b></a> </nobr><br><nobr>need <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/navigating_topics.htm"><b>2</b></a> </nobr><br><a href="../kernel/readme.html"><b>netgen</b></a> <br><a href="../kernel/readme.html"><b>netgenroot</b></a> <br><nobr>netscape <a href="../kernel/about_salome_pro_help_system.htm"><b>1</b></a> <a href="../kernel/setting_preferences.htm"><b>2</b></a> </nobr><br><nobr>new <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/getting_started2.htm"><b>2</b></a> <a href="../kernel/getting_properties_of_the_study.htm"><b>3</b></a> <a href="../kernel/creating_a_new_study.htm"><b>4</b></a> <a href="../kernel/about_salome_pro_architecture.htm"><b>5</b></a> <a href="../kernel/using_usecase_browser.htm"><b>6</b></a> <a href="../kernel/using_catalog_generator.htm"><b>7</b></a> <a href="../kernel/setting_preferences.htm"><b>8</b></a> <a href="../kernel/saving_a_study.htm"><b>9</b></a> </nobr><br><nobr>next <a href="../kernel/running_salome_pro.htm"><b>1</b></a> <a href="../kernel/readme.html"><b>2</b></a> <a href="../kernel/getting_properties_of_the_study.htm"><b>3</b></a> <a href="../kernel/using_catalog_generator.htm"><b>4</b></a> <a href="../kernel/setting_preferences.htm"><b>5</b></a> </nobr><br><a name="bms_NO"></a><a name="subkey_NO"></a><a href="../kernel/using_catalog_generator.htm"><b>nodes</b></a> <br><a href="../kernel/readme.html"><b>note</b></a> <br><a href="../kernel/readme.html"><b>notes</b></a> <br><a href="../kernel/copyright_notice.htm"><b>notice</b></a> <br><a href="../kernel/about_salome_pro_architecture.htm"><b>noticeably</b></a> <br><a href="../kernel/readme.html"><b>notifd</b></a> <br><a href="../kernel/getting_started2.htm"><b>notion</b></a> <br><nobr><a name="bms_NU"></a><a name="subkey_NU"></a>number <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/using_registry.htm"><b>2</b></a> <a href="../kernel/setting_preferences.htm"><b>3</b></a> </nobr><br><nobr>numeric <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/introduction_to_salome_pro.htm"><b>2</b></a> <a href="../kernel/introduction.htm"><b>3</b></a> </nobr><br><nobr>numerical <a href="../kernel/getting_started2.htm"><b>1</b></a> <a href="../kernel/about_salome_pro_architecture.htm"><b>2</b></a> </nobr><br><a href="../kernel/running_salome_pro.htm"><b>numerous</b></a> <br>\r
 <br><br>\r
-<a name="bm_M"></a><a name="subkey_M{"></a><a href="../files/running_salome_pro.htm"><b>m</b></a> <br><nobr><a name="bms_MA"></a><a name="subkey_MA"></a>machine <a href="../files/installing_salome_pro.htm"><b>1</b></a> <a href="../files/using_registry.htm"><b>2</b></a> <a href="../files/saving_a_study.htm"><b>3</b></a> </nobr><br><a href="../files/about_salome_pro_architecture.htm"><b>machines</b></a> <br><a href="../files/about_salome_pro_help_system.htm"><b>macintosh</b></a> <br><a href="../files/about_salome_pro_architecture.htm"><b>macro</b></a> <br><nobr>main <a href="../files/readme.html"><b>1</b></a> <a href="../files/opening_studies.htm"><b>2</b></a> <a href="../files/getting_properties_of_the_study.htm"><b>3</b></a> <a href="../files/editing_studies.htm"><b>4</b></a> <a href="../files/displaying_studies.htm"><b>5</b></a> <a href="../files/displaying_hiding_toolbars.htm"><b>6</b></a> <a href="../files/creating_a_new_study.htm"><b>7</b></a> <a href="../files/using_registry.htm"><b>8</b></a> <a href="../files/using_catalog_generator.htm"><b>9</b></a> <a href="../files/setting_preferences.htm"><b>10</b></a> <a href="../files/saving_a_study.htm"><b>11</b></a> <a href="../files/salome_pro_desktop.htm"><b>12</b></a> </nobr><br><nobr>make <a href="../files/readme.html"><b>1</b></a> <a href="../files/installing_salome_pro.htm"><b>2</b></a> <a href="../files/displaying_studies.htm"><b>3</b></a> <a href="../files/creating_a_new_study.htm"><b>4</b></a> </nobr><br><nobr>management <a href="../files/introduction_to_iapp.htm"><b>1</b></a> <a href="../files/salome_pro_desktop.htm"><b>2</b></a> </nobr><br><a href="../files/about_salome_pro_help_system.htm"><b>manual</b></a> <br><nobr>manually <a href="../files/readme.html"><b>1</b></a> <a href="../files/installing_salome_pro.htm"><b>2</b></a> </nobr><br><a href="../files/setting_preferences.htm"><b>manuals</b></a> <br><a href="../files/about_salome_pro_architecture.htm"><b>mapped</b></a> <br><nobr>mark <a href="../files/readme.html"><b>1</b></a> <a href="../files/installing_salome_pro.htm"><b>2</b></a> <a href="../files/displaying_hiding_toolbars.htm"><b>3</b></a> </nobr><br><nobr>marked <a href="../files/readme.html"><b>1</b></a> <a href="../files/installing_salome_pro.htm"><b>2</b></a> <a href="../files/setting_preferences.htm"><b>3</b></a> </nobr><br><a href="../files/introduction.htm"><b>market</b></a> <br><a href="../files/about_salome_pro_architecture.htm"><b>massively</b></a> <br><a href="../files/readme.html"><b>master</b></a> <br><a href="../files/using_left-hand_tabs.htm"><b>matches</b></a> <br><a href="../files/copyright_notice.htm"><b>material</b></a> <br><a href="../files/creating_a_new_study.htm"><b>maximize</b></a> <br><nobr>maximized <a href="../files/displaying_studies.htm"><b>1</b></a> <a href="../files/salome_pro_desktop.htm"><b>2</b></a> </nobr><br><nobr><a name="bms_ME"></a><a name="subkey_ME"></a>means <a href="../files/readme.html"><b>1</b></a> <a href="../files/installing_salome_pro.htm"><b>2</b></a> <a href="../files/getting_started2.htm"><b>3</b></a> <a href="../files/copyright_notice.htm"><b>4</b></a> </nobr><br><a href="../files/copyright_notice.htm"><b>mechanical</b></a> <br><nobr>med2home <a href="../files/readme.html"><b>1</b></a> <a href="../files/installing_salome_pro.htm"><b>2</b></a> </nobr><br><a href="../files/introduction.htm"><b>meet</b></a> <br><a href="../files/installing_salome_pro.htm"><b>mentioned</b></a> <br><nobr>menu <a href="../files/opening_studies.htm"><b>1</b></a> <a href="../files/navigating_topics.htm"><b>2</b></a> <a href="../files/getting_properties_of_the_study.htm"><b>3</b></a> <a href="../files/editing_studies.htm"><b>4</b></a> <a href="../files/displaying_studies.htm"><b>5</b></a> <a href="../files/displaying_hiding_toolbars.htm"><b>6</b></a> <a href="../files/creating_a_new_study.htm"><b>7</b></a> <a href="../files/using_usecase_browser.htm"><b>8</b></a> <a href="../files/using_registry.htm"><b>9</b></a> <a href="../files/using_object_browser.htm"><b>10</b></a> <a href="../files/using_catalog_generator.htm"><b>11</b></a> <a href="../files/setting_preferences.htm"><b>12</b></a> <a href="../files/saving_a_study.htm"><b>13</b></a> <a href="../files/salome_pro_desktop.htm"><b>14</b></a> </nobr><br><nobr>menus <a href="../files/introduction_to_iapp.htm"><b>1</b></a> <a href="../files/salome_pro_desktop.htm"><b>2</b></a> </nobr><br><nobr>mesa <a href="../files/readme.html"><b>1</b></a> <a href="../files/installing_salome_pro.htm"><b>2</b></a> </nobr><br><nobr>mesa_home <a href="../files/readme.html"><b>1</b></a> <a href="../files/installing_salome_pro.htm"><b>2</b></a> </nobr><br><a href="../files/introduction_to_salome_pro.htm"><b>meshes</b></a> <br><a href="../files/introduction_to_salome_pro.htm"><b>meshing</b></a> <br><nobr>message <a href="../files/readme.html"><b>1</b></a> <a href="../files/installing_salome_pro.htm"><b>2</b></a> <a href="../files/getting_properties_of_the_study.htm"><b>3</b></a> <a href="../files/using_registry.htm"><b>4</b></a> </nobr><br><nobr>messages <a href="../files/introduction_to_iapp.htm"><b>1</b></a> <a href="../files/setting_preferences.htm"><b>2</b></a> <a href="../files/salome_pro_desktop.htm"><b>3</b></a> <a href="../files/running_salome_pro.htm"><b>4</b></a> </nobr><br><nobr><a name="bms_MI"></a><a name="subkey_MI"></a>middle <a href="../files/readme.html"><b>1</b></a> <a href="../files/installing_salome_pro.htm"><b>2</b></a> </nobr><br><a href="../files/installing_salome_pro.htm"><b>mind</b></a> <br><nobr>minimized <a href="../files/creating_a_new_study.htm"><b>1</b></a> <a href="../files/salome_pro_desktop.htm"><b>2</b></a> </nobr><br><a href="../files/readme.html"><b>missed</b></a> <br><a href="../files/salome_pro_desktop.htm"><b>mistakes</b></a> <br><nobr><a name="bms_MO"></a><a name="subkey_MO"></a>mode <a href="../files/readme.html"><b>1</b></a> <a href="../files/installing_salome_pro.htm"><b>2</b></a> <a href="../files/about_salome_pro_architecture.htm"><b>3</b></a> <a href="../files/running_salome_pro.htm"><b>4</b></a> </nobr><br><a href="../files/about_salome_pro_architecture.htm"><b>model</b></a> <br><nobr>modeling <a href="../files/introduction_to_salome_pro.htm"><b>1</b></a> <a href="../files/introduction.htm"><b>2</b></a> <a href="../files/about_salome_pro_architecture.htm"><b>3</b></a> </nobr><br><a href="../files/introduction.htm"><b>modern</b></a> <br><a href="../files/readme.html"><b>modes</b></a> <br><nobr>modification <a href="../files/getting_properties_of_the_study.htm"><b>1</b></a> <a href="../files/about_salome_pro_architecture.htm"><b>2</b></a> </nobr><br><a href="../files/getting_properties_of_the_study.htm"><b>modifications</b></a> <br><nobr>modify <a href="../files/readme.html"><b>1</b></a> <a href="../files/using_usecase_browser.htm"><b>2</b></a> </nobr><br><a href="../files/readme.html"><b>modifying</b></a> <br><nobr>module <a href="../files/introduction_to_salome_pro.htm"><b>1</b></a> <a href="../files/using_catalog_generator.htm"><b>2</b></a> <a href="../files/running_salome_pro.htm"><b>3</b></a> </nobr><br><a href="../files/running_salome_pro.htm"><b>module1</b></a> <br><a href="../files/running_salome_pro.htm"><b>module2</b></a> <br><nobr>modules <a href="../files/introduction_to_salome_pro.htm"><b>1</b></a> <a href="../files/about_salome_pro_help_system.htm"><b>2</b></a> <a href="../files/using_catalog_generator.htm"><b>3</b></a> <a href="../files/running_salome_pro.htm"><b>4</b></a> </nobr><br><a href="../files/readme.html"><b>moment</b></a> <br><a href="../files/displaying_hiding_toolbars.htm"><b>mouse</b></a> <br><a href="../files/setting_preferences.htm"><b>mozilla</b></a> <br><nobr><a name="bms_MT"></a><a name="subkey_MT"></a>mt <a href="../files/readme.html"><b>1</b></a> <a href="../files/installing_salome_pro.htm"><b>2</b></a> </nobr><br><nobr><a name="bms_MU"></a><a name="subkey_MU"></a>much <a href="../files/readme.html"><b>1</b></a> <a href="../files/installing_salome_pro.htm"><b>2</b></a> </nobr><br><nobr>multi <a href="../files/introduction_to_iapp.htm"><b>1</b></a> <a href="../files/getting_started2.htm"><b>2</b></a> <a href="../files/using_left-hand_tabs.htm"><b>3</b></a> <a href="../files/using_catalog_generator.htm"><b>4</b></a> </nobr><br><nobr>multifile <a href="../files/setting_preferences.htm"><b>1</b></a> <a href="../files/saving_a_study.htm"><b>2</b></a> </nobr><br><a href="../files/saving_a_study.htm"><b>multiple</b></a> <br><a href="../files/about_salome_pro_architecture.htm"><b>multitier</b></a> <br><nobr>must <a href="../files/introduction_to_salome_pro.htm"><b>1</b></a> <a href="../files/introduction.htm"><b>2</b></a> <a href="../files/installing_salome_pro.htm"><b>3</b></a> <a href="../files/about_salome_pro_architecture.htm"><b>4</b></a> </nobr><br><br><br></p><p class="ftsbody" align="center"><a href="whlstf5.htm" target="_self" title="previous search group"><b>&gt;&gt;</b></a>\r
+<nobr><a name="bm_O"></a><a name="subkey_OB"></a>object <a href="../kernel/opening_studies.htm"><b>1</b></a> <a href="../kernel/introduction_to_iapp.htm"><b>2</b></a> <a href="../kernel/editing_studies.htm"><b>3</b></a> <a href="../kernel/using_usecase_browser.htm"><b>4</b></a> <a href="../kernel/using_object_browser.htm"><b>5</b></a> <a href="../kernel/setting_preferences.htm"><b>6</b></a> <a href="../kernel/salome_pro_desktop.htm"><b>7</b></a> </nobr><br><a href="../kernel/about_salome_pro_architecture.htm"><b>objectives</b></a> <br><nobr>objects <a href="../kernel/opening_studies.htm"><b>1</b></a> <a href="../kernel/introduction_to_iapp.htm"><b>2</b></a> <a href="../kernel/about_salome_pro_architecture.htm"><b>3</b></a> <a href="../kernel/using_usecase_browser.htm"><b>4</b></a> <a href="../kernel/using_object_browser.htm"><b>5</b></a> <a href="../kernel/setting_preferences.htm"><b>6</b></a> <a href="../kernel/salome_pro_desktop.htm"><b>7</b></a> </nobr><br><a href="../kernel/readme.html"><b>obligatory</b></a> <br><nobr><a name="bms_OC"></a><a name="subkey_OC"></a>occ <a href="../kernel/introduction_to_iapp.htm"><b>1</b></a> <a href="../kernel/creating_a_new_study.htm"><b>2</b></a> <a href="../kernel/setting_preferences.htm"><b>3</b></a> <a href="../kernel/salome_pro_desktop.htm"><b>4</b></a> </nobr><br><a href="../kernel/readme.html"><b>occupies</b></a> <br><a name="bms_OF"></a><a name="subkey_OF"></a><a href="../kernel/readme.html"><b>off</b></a> <br><a href="../kernel/about_salome_pro_architecture.htm"><b>offered</b></a> <br><a href="../kernel/introduction.htm"><b>often</b></a> <br><br><br></p><p class="ftsbody" align="center"><a href="whlstf5.htm" target="_self" title="previous search group"><b>&gt;&gt;</b></a>\r
 \r
 </body>\r
 \r
index a5c64dcb396fba51e4165d9beb826cfdb720a518..68c88a15558129c9e4cfa0a62cd31c91fd9c774d 100755 (executable)
@@ -1,9 +1,9 @@
 <html>\r
 <head>\r
 <title>Search Words List</title>\r
-<meta http-equiv="content-type" content="text/html; charset=iso-8859-1">\r
+\r
 <meta name="generator" content="RoboHelp by eHelp Corporation   www.ehelp.com">\r
-<meta name "description" content="WebHelp 2002">\r
+<meta name="description" content="WebHelp 5.50">\r
 <base target="bsscright">\r
 <style>\r
 <!--\r
@@ -30,16 +30,14 @@ A:hover {color:Navy; } A:hover {font-family:Tahoma; } A:hover {font-size:8pt; }
 -->\r
 </style>\r
 </head>\r
-<body marginheight="0"  marginwidth="0">\r
+<body marginheight="0"  marginwidth="0" bgproperties="fixed">\r
 <p class="ftsbody" align="center"><a href="whlstf4.htm" target="_self" title="previous search group"><b>&lt;&lt;</b></a><br><br></p>\r
-<p class="ftsbody">\r
-\r
-\r
-<nobr><a name="bm_N"></a><a name="subkey_N{"></a>n <a href="../files/readme.html"><b>1</b></a> <a href="../files/installing_salome_pro.htm"><b>2</b></a> </nobr><br><nobr><a name="bms_NA"></a><a name="subkey_NA"></a>name <a href="../files/readme.html"><b>1</b></a> <a href="../files/installing_salome_pro.htm"><b>2</b></a> <a href="../files/getting_properties_of_the_study.htm"><b>3</b></a> <a href="../files/displaying_studies.htm"><b>4</b></a> <a href="../files/creating_a_new_study.htm"><b>5</b></a> <a href="../files/using_usecase_browser.htm"><b>6</b></a> <a href="../files/using_registry.htm"><b>7</b></a> <a href="../files/using_object_browser.htm"><b>8</b></a> <a href="../files/using_catalog_generator.htm"><b>9</b></a> <a href="../files/setting_preferences.htm"><b>10</b></a> <a href="../files/saving_a_study.htm"><b>11</b></a> </nobr><br><nobr>names <a href="../files/readme.html"><b>1</b></a> <a href="../files/installing_salome_pro.htm"><b>2</b></a> <a href="../files/copyright_notice.htm"><b>3</b></a> </nobr><br><nobr>native <a href="../files/readme.html"><b>1</b></a> <a href="../files/installing_salome_pro.htm"><b>2</b></a> </nobr><br><a href="../files/about_salome_pro_architecture.htm"><b>natural</b></a> <br><nobr>navigate <a href="../files/readme.html"><b>1</b></a> <a href="../files/navigating_topics.htm"><b>2</b></a> <a href="../files/installing_salome_pro.htm"><b>3</b></a> </nobr><br><a href="../files/navigating_topics.htm"><b>navigating</b></a> <br><nobr>navigation <a href="../files/navigating_topics.htm"><b>1</b></a> <a href="../files/about_salome_pro_help_system.htm"><b>2</b></a> </nobr><br><a href="../files/about_salome_pro_help_system.htm"><b>navigator</b></a> <br><nobr><a name="bms_NE"></a><a name="subkey_NE"></a>necessary <a href="../files/readme.html"><b>1</b></a> <a href="../files/installing_salome_pro.htm"><b>2</b></a> <a href="../files/running_salome_pro.htm"><b>3</b></a> </nobr><br><nobr>need <a href="../files/readme.html"><b>1</b></a> <a href="../files/navigating_topics.htm"><b>2</b></a> <a href="../files/installing_salome_pro.htm"><b>3</b></a> </nobr><br><a href="../files/installing_salome_pro.htm"><b>needed</b></a> <br><nobr>netscape <a href="../files/about_salome_pro_help_system.htm"><b>1</b></a> <a href="../files/setting_preferences.htm"><b>2</b></a> </nobr><br><nobr>new <a href="../files/readme.html"><b>1</b></a> <a href="../files/installing_salome_pro.htm"><b>2</b></a> <a href="../files/getting_started2.htm"><b>3</b></a> <a href="../files/getting_properties_of_the_study.htm"><b>4</b></a> <a href="../files/creating_a_new_study.htm"><b>5</b></a> <a href="../files/about_salome_pro_architecture.htm"><b>6</b></a> <a href="../files/using_usecase_browser.htm"><b>7</b></a> <a href="../files/using_catalog_generator.htm"><b>8</b></a> <a href="../files/setting_preferences.htm"><b>9</b></a> <a href="../files/saving_a_study.htm"><b>10</b></a> </nobr><br><a href="../files/installing_salome_pro.htm"><b>newly</b></a> <br><nobr>next <a href="../files/readme.html"><b>1</b></a> <a href="../files/installing_salome_pro.htm"><b>2</b></a> <a href="../files/getting_properties_of_the_study.htm"><b>3</b></a> <a href="../files/using_catalog_generator.htm"><b>4</b></a> <a href="../files/setting_preferences.htm"><b>5</b></a> </nobr><br><a name="bms_NO"></a><a name="subkey_NO"></a><a href="../files/using_catalog_generator.htm"><b>nodes</b></a> <br><nobr>note <a href="../files/readme.html"><b>1</b></a> <a href="../files/installing_salome_pro.htm"><b>2</b></a> </nobr><br><nobr>notes <a href="../files/readme.html"><b>1</b></a> <a href="../files/installing_salome_pro.htm"><b>2</b></a> </nobr><br><a href="../files/copyright_notice.htm"><b>notice</b></a> <br><a href="../files/about_salome_pro_architecture.htm"><b>noticeably</b></a> <br><nobr>notifd <a href="../files/readme.html"><b>1</b></a> <a href="../files/installing_salome_pro.htm"><b>2</b></a> </nobr><br><a href="../files/getting_started2.htm"><b>notion</b></a> <br><nobr><a name="bms_NU"></a><a name="subkey_NU"></a>number <a href="../files/readme.html"><b>1</b></a> <a href="../files/installing_salome_pro.htm"><b>2</b></a> <a href="../files/using_registry.htm"><b>3</b></a> <a href="../files/setting_preferences.htm"><b>4</b></a> </nobr><br><nobr>numeric <a href="../files/readme.html"><b>1</b></a> <a href="../files/introduction_to_salome_pro.htm"><b>2</b></a> <a href="../files/introduction.htm"><b>3</b></a> <a href="../files/installing_salome_pro.htm"><b>4</b></a> </nobr><br><nobr>numerical <a href="../files/getting_started2.htm"><b>1</b></a> <a href="../files/about_salome_pro_architecture.htm"><b>2</b></a> </nobr><br>\r
+<p class="ftsbody" >\r
+<nobr><a name="bms_OK"></a><a name="subkey_OK"></a>ok <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/opening_studies.htm"><b>2</b></a> </nobr><br><a name="bms_OM"></a><a name="subkey_OM"></a><a href="../kernel/about_salome_pro_architecture.htm"><b>omg</b></a> <br><a href="../kernel/readme.html"><b>omit</b></a> <br><a href="../kernel/readme.html"><b>omni</b></a> <br><a href="../kernel/readme.html"><b>omninotify</b></a> <br><a href="../kernel/readme.html"><b>omniorb</b></a> <br><a href="../kernel/readme.html"><b>omniorbdir</b></a> <br><a href="../kernel/readme.html"><b>omniorbpy</b></a> <br><nobr><a name="bms_ON"></a><a name="subkey_ON"></a>one <a href="../kernel/running_salome_pro.htm"><b>1</b></a> <a href="../kernel/readme.html"><b>2</b></a> <a href="../kernel/opening_studies.htm"><b>3</b></a> <a href="../kernel/navigating_topics.htm"><b>4</b></a> <a href="../kernel/introduction_to_iapp.htm"><b>5</b></a> <a href="../kernel/editing_studies.htm"><b>6</b></a> <a href="../kernel/about_salome_pro_architecture.htm"><b>7</b></a> <a href="../kernel/using_usecase_browser.htm"><b>8</b></a> <a href="../kernel/using_object_browser.htm"><b>9</b></a> <a href="../kernel/using_left-hand_tabs.htm"><b>10</b></a> <a href="../kernel/using_catalog_generator.htm"><b>11</b></a> <a href="../kernel/setting_preferences.htm"><b>12</b></a> <a href="../kernel/saving_a_study.htm"><b>13</b></a> </nobr><br><a href="../kernel/running_salome_pro.htm"><b>ones</b></a> <br><a href="../kernel/using_left-hand_tabs.htm"><b>online</b></a> <br><nobr><a name="bms_OP"></a><a name="subkey_OP"></a>open <a href="../kernel/running_salome_pro.htm"><b>1</b></a> <a href="../kernel/opening_studies.htm"><b>2</b></a> <a href="../kernel/navigating_topics.htm"><b>3</b></a> <a href="../kernel/introduction_to_salome_pro.htm"><b>4</b></a> <a href="../kernel/getting_started2.htm"><b>5</b></a> <a href="../kernel/copyright_notice.htm"><b>6</b></a> <a href="../kernel/using_left-hand_tabs.htm"><b>7</b></a> <a href="../kernel/using_catalog_generator.htm"><b>8</b></a> <a href="../kernel/setting_preferences.htm"><b>9</b></a> <a href="../kernel/saving_a_study.htm"><b>10</b></a> </nobr><br><a href="../kernel/readme.html"><b>opengl</b></a> <br><nobr>opening <a href="../kernel/opening_studies.htm"><b>1</b></a> <a href="../kernel/saving_a_study.htm"><b>2</b></a> </nobr><br><nobr>opens <a href="../kernel/navigating_topics.htm"><b>1</b></a> <a href="../kernel/using_left-hand_tabs.htm"><b>2</b></a> </nobr><br><a href="../kernel/introduction.htm"><b>operability</b></a> <br><nobr>operation <a href="../kernel/editing_studies.htm"><b>1</b></a> <a href="../kernel/using_usecase_browser.htm"><b>2</b></a> <a href="../kernel/saving_a_study.htm"><b>3</b></a> </nobr><br><nobr>operations <a href="../kernel/getting_started2.htm"><b>1</b></a> <a href="../kernel/salome_pro_desktop.htm"><b>2</b></a> </nobr><br><a href="../kernel/introduction.htm"><b>optimize</b></a> <br><nobr>option <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/opening_studies.htm"><b>2</b></a> <a href="../kernel/getting_properties_of_the_study.htm"><b>3</b></a> <a href="../kernel/editing_studies.htm"><b>4</b></a> <a href="../kernel/setting_preferences.htm"><b>5</b></a> <a href="../kernel/saving_a_study.htm"><b>6</b></a> </nobr><br><a href="../kernel/readme.html"><b>optional</b></a> <br><nobr>options <a href="../kernel/running_salome_pro.htm"><b>1</b></a> <a href="../kernel/readme.html"><b>2</b></a> <a href="../kernel/displaying_studies.htm"><b>3</b></a> <a href="../kernel/using_usecase_browser.htm"><b>4</b></a> <a href="../kernel/using_object_browser.htm"><b>5</b></a> <a href="../kernel/saving_a_study.htm"><b>6</b></a> <a href="../kernel/salome_pro_desktop.htm"><b>7</b></a> </nobr><br><a name="bms_OR"></a><a name="subkey_OR"></a><a href="../kernel/readme.html"><b>order</b></a> <br><a href="../kernel/about_salome_pro_architecture.htm"><b>org</b></a> <br><a href="../kernel/introduction_to_salome_pro.htm"><b>originality</b></a> <br><a name="bms_OS"></a><a name="subkey_OS"></a><a href="../kernel/readme.html"><b>os</b></a> <br><a href="../kernel/readme.html"><b>os_version</b></a> <br><a name="bms_OT"></a><a name="subkey_OT"></a><a href="../kernel/about_salome_pro_help_system.htm"><b>others</b></a> <br><nobr>otherwise <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/copyright_notice.htm"><b>2</b></a> <a href="../kernel/saving_a_study.htm"><b>3</b></a> </nobr><br><a name="bms_OU"></a><a name="subkey_OU"></a><a href="../kernel/salome_pro_desktop.htm"><b>outlined</b></a> <br><nobr>output <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/introduction_to_iapp.htm"><b>2</b></a> <a href="../kernel/setting_preferences.htm"><b>3</b></a> <a href="../kernel/salome_pro_desktop.htm"><b>4</b></a> </nobr><br><a name="bms_OV"></a><a name="subkey_OV"></a><a href="../kernel/readme.html"><b>overloads</b></a> <br><nobr><a name="bms_OW"></a><a name="subkey_OW"></a>own <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/introduction_to_salome_pro.htm"><b>2</b></a> <a href="../kernel/using_usecase_browser.htm"><b>3</b></a> <a href="../kernel/setting_preferences.htm"><b>4</b></a> </nobr><br>\r
 <br><br>\r
-<nobr><a name="bm_O"></a><a name="subkey_OB"></a>object <a href="../files/opening_studies.htm"><b>1</b></a> <a href="../files/introduction_to_iapp.htm"><b>2</b></a> <a href="../files/editing_studies.htm"><b>3</b></a> <a href="../files/using_usecase_browser.htm"><b>4</b></a> <a href="../files/using_object_browser.htm"><b>5</b></a> <a href="../files/setting_preferences.htm"><b>6</b></a> <a href="../files/salome_pro_desktop.htm"><b>7</b></a> </nobr><br><a href="../files/about_salome_pro_architecture.htm"><b>objectives</b></a> <br><nobr>objects <a href="../files/opening_studies.htm"><b>1</b></a> <a href="../files/introduction_to_iapp.htm"><b>2</b></a> <a href="../files/about_salome_pro_architecture.htm"><b>3</b></a> <a href="../files/using_usecase_browser.htm"><b>4</b></a> <a href="../files/using_object_browser.htm"><b>5</b></a> <a href="../files/setting_preferences.htm"><b>6</b></a> <a href="../files/salome_pro_desktop.htm"><b>7</b></a> </nobr><br><nobr>obligatory <a href="../files/readme.html"><b>1</b></a> <a href="../files/installing_salome_pro.htm"><b>2</b></a> </nobr><br><nobr><a name="bms_OC"></a><a name="subkey_OC"></a>occ <a href="../files/introduction_to_iapp.htm"><b>1</b></a> <a href="../files/creating_a_new_study.htm"><b>2</b></a> <a href="../files/setting_preferences.htm"><b>3</b></a> <a href="../files/salome_pro_desktop.htm"><b>4</b></a> </nobr><br><a href="../files/readme.html"><b>occupies</b></a> <br><nobr><a name="bms_OF"></a><a name="subkey_OF"></a>off <a href="../files/readme.html"><b>1</b></a> <a href="../files/installing_salome_pro.htm"><b>2</b></a> </nobr><br><a href="../files/about_salome_pro_architecture.htm"><b>offered</b></a> <br><a href="../files/introduction.htm"><b>often</b></a> <br><nobr><a name="bms_OK"></a><a name="subkey_OK"></a>ok <a href="../files/readme.html"><b>1</b></a> <a href="../files/opening_studies.htm"><b>2</b></a> <a href="../files/installing_salome_pro.htm"><b>3</b></a> </nobr><br><a name="bms_OM"></a><a name="subkey_OM"></a><a href="../files/about_salome_pro_architecture.htm"><b>omg</b></a> <br><a href="../files/readme.html"><b>omit</b></a> <br><nobr>omni <a href="../files/readme.html"><b>1</b></a> <a href="../files/installing_salome_pro.htm"><b>2</b></a> </nobr><br><nobr>omninotify <a href="../files/readme.html"><b>1</b></a> <a href="../files/installing_salome_pro.htm"><b>2</b></a> </nobr><br><nobr>omniorb <a href="../files/readme.html"><b>1</b></a> <a href="../files/installing_salome_pro.htm"><b>2</b></a> </nobr><br><nobr>omniorbdir <a href="../files/readme.html"><b>1</b></a> <a href="../files/installing_salome_pro.htm"><b>2</b></a> </nobr><br><nobr>omniorbpy <a href="../files/readme.html"><b>1</b></a> <a href="../files/installing_salome_pro.htm"><b>2</b></a> </nobr><br><a name="bms_ON"></a><a name="subkey_ON"></a><a href="../files/installing_salome_pro.htm"><b>once</b></a> <br><nobr>one <a href="../files/readme.html"><b>1</b></a> <a href="../files/opening_studies.htm"><b>2</b></a> <a href="../files/navigating_topics.htm"><b>3</b></a> <a href="../files/introduction_to_iapp.htm"><b>4</b></a> <a href="../files/installing_salome_pro.htm"><b>5</b></a> <a href="../files/editing_studies.htm"><b>6</b></a> <a href="../files/about_salome_pro_architecture.htm"><b>7</b></a> <a href="../files/using_usecase_browser.htm"><b>8</b></a> <a href="../files/using_object_browser.htm"><b>9</b></a> <a href="../files/using_left-hand_tabs.htm"><b>10</b></a> <a href="../files/using_catalog_generator.htm"><b>11</b></a> <a href="../files/setting_preferences.htm"><b>12</b></a> <a href="../files/saving_a_study.htm"><b>13</b></a> <a href="../files/running_salome_pro.htm"><b>14</b></a> </nobr><br><a href="../files/using_left-hand_tabs.htm"><b>online</b></a> <br><a href="../files/installing_salome_pro.htm"><b>onto</b></a> <br><nobr><a name="bms_OP"></a><a name="subkey_OP"></a>open <a href="../files/opening_studies.htm"><b>1</b></a> <a href="../files/navigating_topics.htm"><b>2</b></a> <a href="../files/introduction_to_salome_pro.htm"><b>3</b></a> <a href="../files/getting_started2.htm"><b>4</b></a> <a href="../files/copyright_notice.htm"><b>5</b></a> <a href="../files/using_left-hand_tabs.htm"><b>6</b></a> <a href="../files/using_catalog_generator.htm"><b>7</b></a> <a href="../files/setting_preferences.htm"><b>8</b></a> <a href="../files/saving_a_study.htm"><b>9</b></a> <a href="../files/running_salome_pro.htm"><b>10</b></a> </nobr><br><nobr>opengl <a href="../files/readme.html"><b>1</b></a> <a href="../files/installing_salome_pro.htm"><b>2</b></a> </nobr><br><nobr>opening <a href="../files/opening_studies.htm"><b>1</b></a> <a href="../files/saving_a_study.htm"><b>2</b></a> </nobr><br><nobr>opens <a href="../files/navigating_topics.htm"><b>1</b></a> <a href="../files/using_left-hand_tabs.htm"><b>2</b></a> </nobr><br><a href="../files/introduction.htm"><b>operability</b></a> <br><nobr>operation <a href="../files/editing_studies.htm"><b>1</b></a> <a href="../files/using_usecase_browser.htm"><b>2</b></a> <a href="../files/saving_a_study.htm"><b>3</b></a> </nobr><br><nobr>operations <a href="../files/getting_started2.htm"><b>1</b></a> <a href="../files/salome_pro_desktop.htm"><b>2</b></a> </nobr><br><a href="../files/introduction.htm"><b>optimize</b></a> <br><nobr>option <a href="../files/readme.html"><b>1</b></a> <a href="../files/opening_studies.htm"><b>2</b></a> <a href="../files/installing_salome_pro.htm"><b>3</b></a> <a href="../files/getting_properties_of_the_study.htm"><b>4</b></a> <a href="../files/editing_studies.htm"><b>5</b></a> <a href="../files/setting_preferences.htm"><b>6</b></a> <a href="../files/saving_a_study.htm"><b>7</b></a> </nobr><br><nobr>optional <a href="../files/readme.html"><b>1</b></a> <a href="../files/installing_salome_pro.htm"><b>2</b></a> </nobr><br><nobr>options <a href="../files/readme.html"><b>1</b></a> <a href="../files/installing_salome_pro.htm"><b>2</b></a> <a href="../files/displaying_studies.htm"><b>3</b></a> <a href="../files/using_usecase_browser.htm"><b>4</b></a> <a href="../files/using_object_browser.htm"><b>5</b></a> <a href="../files/saving_a_study.htm"><b>6</b></a> <a href="../files/salome_pro_desktop.htm"><b>7</b></a> <a href="../files/running_salome_pro.htm"><b>8</b></a> </nobr><br><nobr><a name="bms_OR"></a><a name="subkey_OR"></a>order <a href="../files/readme.html"><b>1</b></a> <a href="../files/installing_salome_pro.htm"><b>2</b></a> </nobr><br><a href="../files/about_salome_pro_architecture.htm"><b>org</b></a> <br><a href="../files/introduction_to_salome_pro.htm"><b>originality</b></a> <br><a name="bms_OS"></a><a name="subkey_OS"></a><a href="../files/readme.html"><b>os</b></a> <br><a href="../files/readme.html"><b>os_version</b></a> <br><a name="bms_OT"></a><a name="subkey_OT"></a><a href="../files/about_salome_pro_help_system.htm"><b>others</b></a> <br><nobr>otherwise <a href="../files/readme.html"><b>1</b></a> <a href="../files/installing_salome_pro.htm"><b>2</b></a> <a href="../files/copyright_notice.htm"><b>3</b></a> <a href="../files/saving_a_study.htm"><b>4</b></a> </nobr><br><a name="bms_OU"></a><a name="subkey_OU"></a><a href="../files/salome_pro_desktop.htm"><b>outlined</b></a> <br><nobr>output <a href="../files/readme.html"><b>1</b></a> <a href="../files/introduction_to_iapp.htm"><b>2</b></a> <a href="../files/installing_salome_pro.htm"><b>3</b></a> <a href="../files/setting_preferences.htm"><b>4</b></a> <a href="../files/salome_pro_desktop.htm"><b>5</b></a> </nobr><br><a name="bms_OV"></a><a name="subkey_OV"></a><a href="../files/readme.html"><b>overloads</b></a> <br><nobr><a name="bms_OW"></a><a name="subkey_OW"></a>own <a href="../files/readme.html"><b>1</b></a> <a href="../files/introduction_to_salome_pro.htm"><b>2</b></a> <a href="../files/using_usecase_browser.htm"><b>3</b></a> <a href="../files/setting_preferences.htm"><b>4</b></a> </nobr><br>\r
+<a name="bm_P"></a><a name="subkey_P{"></a><a href="../kernel/running_salome_pro.htm"><b>p</b></a> <br><nobr><a name="bms_PA"></a><a name="subkey_PA"></a>package <a href="../kernel/running_salome_pro.htm"><b>1</b></a> <a href="../kernel/readme.html"><b>2</b></a> <a href="../kernel/using_catalog_generator.htm"><b>3</b></a> </nobr><br><a href="../kernel/readme.html"><b>packages</b></a> <br><a href="../kernel/readme.html"><b>page</b></a> <br><nobr>pages <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/using_left-hand_tabs.htm"><b>2</b></a> </nobr><br><nobr>pane <a href="../kernel/navigating_topics.htm"><b>1</b></a> <a href="../kernel/using_left-hand_tabs.htm"><b>2</b></a> </nobr><br><a href="../kernel/salome_pro_desktop.htm"><b>panning</b></a> <br><a href="../kernel/about_salome_pro_architecture.htm"><b>parallel</b></a> <br><nobr>parameter <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/using_catalog_generator.htm"><b>2</b></a> </nobr><br><nobr>parameters <a href="../kernel/about_salome_pro_architecture.htm"><b>1</b></a> <a href="../kernel/using_catalog_generator.htm"><b>2</b></a> </nobr><br><nobr>part <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/copyright_notice.htm"><b>2</b></a> </nobr><br><a href="../kernel/saving_a_study.htm"><b>particular</b></a> <br><a href="../kernel/introduction.htm"><b>particularly</b></a> <br><a href="../kernel/salome_pro_desktop.htm"><b>parts</b></a> <br><a href="../kernel/readme.html"><b>pass</b></a> <br><nobr>paste <a href="../kernel/editing_studies.htm"><b>1</b></a> <a href="../kernel/salome_pro_desktop.htm"><b>2</b></a> </nobr><br><a href="../kernel/salome_pro_desktop.htm"><b>pasting</b></a> <br><a href="../kernel/readme.html"><b>path</b></a> <br><a name="bms_PC"></a><a name="subkey_PC"></a><a href="../kernel/about_salome_pro_architecture.htm"><b>pc</b></a> <br><a name="bms_PE"></a><a name="subkey_PE"></a><a href="../kernel/readme.html"><b>perform</b></a> <br><nobr>performance <a href="../kernel/introduction.htm"><b>1</b></a> <a href="../kernel/getting_started2.htm"><b>2</b></a> <a href="../kernel/about_salome_pro_architecture.htm"><b>3</b></a> <a href="../kernel/salome_pro_desktop.htm"><b>4</b></a> </nobr><br><a href="../kernel/readme.html"><b>performed</b></a> <br><nobr>permission <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/copyright_notice.htm"><b>2</b></a> </nobr><br><a href="../kernel/introduction.htm"><b>perpetuity</b></a> <br><a name="bms_PH"></a><a name="subkey_PH"></a><a href="../kernel/about_salome_pro_architecture.htm"><b>phenomena</b></a> <br><a href="../kernel/copyright_notice.htm"><b>photocopying</b></a> <br><a href="../kernel/using_left-hand_tabs.htm"><b>phrases</b></a> <br><nobr>physical <a href="../kernel/introduction_to_salome_pro.htm"><b>1</b></a> <a href="../kernel/introduction.htm"><b>2</b></a> <a href="../kernel/about_salome_pro_architecture.htm"><b>3</b></a> </nobr><br><a name="bms_PI"></a><a name="subkey_PI"></a><a href="../kernel/readme.html"><b>pick</b></a> <br><a href="../kernel/readme.html"><b>picks</b></a> <br><a href="../kernel/readme.html"><b>pickup</b></a> <br><a href="../kernel/readme.html"><b>pickup_env_flag</b></a> <br><a href="../kernel/readme.html"><b>pickupenv</b></a> <br><nobr>picture <a href="../kernel/getting_properties_of_the_study.htm"><b>1</b></a> <a href="../kernel/using_usecase_browser.htm"><b>2</b></a> </nobr><br><a href="../kernel/using_registry.htm"><b>pid</b></a> <br><a href="../kernel/about_salome_pro_architecture.htm"><b>piece</b></a> <br><nobr><a name="bms_PL"></a><a name="subkey_PL"></a>place <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/displaying_hiding_toolbars.htm"><b>2</b></a> </nobr><br><nobr>platform <a href="../kernel/running_salome_pro.htm"><b>1</b></a> <a href="../kernel/readme.html"><b>2</b></a> <a href="../kernel/introduction_to_salome_pro.htm"><b>3</b></a> <a href="../kernel/introduction_to_iapp.htm"><b>4</b></a> <a href="../kernel/introduction.htm"><b>5</b></a> <a href="../kernel/getting_started2.htm"><b>6</b></a> <a href="../kernel/about_salome_pro_help_system.htm"><b>7</b></a> <a href="../kernel/about_salome_pro_architecture.htm"><b>8</b></a> <a href="../kernel/using_registry.htm"><b>9</b></a> <a href="../kernel/using_catalog_generator.htm"><b>10</b></a> <a href="../kernel/saving_a_study.htm"><b>11</b></a> <a href="../kernel/salome_pro_desktop.htm"><b>12</b></a> </nobr><br><a href="../kernel/readme.html"><b>platforms</b></a> <br><a href="../kernel/readme.html"><b>please</b></a> <br><nobr>plot2d <a href="../kernel/introduction_to_iapp.htm"><b>1</b></a> <a href="../kernel/creating_a_new_study.htm"><b>2</b></a> <a href="../kernel/setting_preferences.htm"><b>3</b></a> <a href="../kernel/salome_pro_desktop.htm"><b>4</b></a> </nobr><br><a name="bms_PN"></a><a name="subkey_PN"></a><a href="../kernel/salome_pro_desktop.htm"><b>png</b></a> <br><a name="bms_PO"></a><a name="subkey_PO"></a><a href="../kernel/readme.html"><b>points</b></a> <br><nobr>pop <a href="../kernel/opening_studies.htm"><b>1</b></a> <a href="../kernel/navigating_topics.htm"><b>2</b></a> <a href="../kernel/using_usecase_browser.htm"><b>3</b></a> <a href="../kernel/using_object_browser.htm"><b>4</b></a> <a href="../kernel/salome_pro_desktop.htm"><b>5</b></a> </nobr><br><a href="../kernel/navigating_topics.htm"><b>popup</b></a> <br><a href="../kernel/navigating_topics.htm"><b>popups</b></a> <br><a href="../kernel/running_salome_pro.htm"><b>port</b></a> <br><a href="../kernel/introduction.htm"><b>portions</b></a> <br><a href="../kernel/running_salome_pro.htm"><b>portkill</b></a> <br><a href="../kernel/salome_pro_desktop.htm"><b>position</b></a> <br><nobr>possibility <a href="../kernel/running_salome_pro.htm"><b>1</b></a> <a href="../kernel/readme.html"><b>2</b></a> <a href="../kernel/about_salome_pro_architecture.htm"><b>3</b></a> <a href="../kernel/using_catalog_generator.htm"><b>4</b></a> </nobr><br><nobr>possible <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/using_usecase_browser.htm"><b>2</b></a> <a href="../kernel/using_object_browser.htm"><b>3</b></a> </nobr><br><nobr>post <a href="../kernel/introduction_to_salome_pro.htm"><b>1</b></a> <a href="../kernel/introduction.htm"><b>2</b></a> </nobr><br><nobr><a name="bms_PR"></a><a name="subkey_PR"></a>pre <a href="../kernel/introduction_to_salome_pro.htm"><b>1</b></a> <a href="../kernel/introduction.htm"><b>2</b></a> </nobr><br><a href="../kernel/readme.html"><b>precompiled</b></a> <br><a href="../kernel/about_salome_pro_architecture.htm"><b>predefined</b></a> <br><a href="../kernel/running_salome_pro.htm"><b>preferable</b></a> <br><nobr>preferences <a href="../kernel/using_object_browser.htm"><b>1</b></a> <a href="../kernel/setting_preferences.htm"><b>2</b></a> </nobr><br><a href="../kernel/readme.html"><b>prefix</b></a> <br><a href="../kernel/readme.html"><b>preinstalled</b></a> <br><a href="../kernel/readme.html"><b>preliminary</b></a> <br><a href="../kernel/readme.html"><b>prerequisite</b></a> <br><a href="../kernel/readme.html"><b>prerequisites</b></a> <br><a href="../kernel/salome_pro_desktop.htm"><b>presentation</b></a> <br><a href="../kernel/salome_pro_desktop.htm"><b>presentations</b></a> <br><a href="../kernel/readme.html"><b>press</b></a> <br><a href="../kernel/readme.html"><b>pressing</b></a> <br><nobr>previous <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/opening_studies.htm"><b>2</b></a> </nobr><br><nobr>previously <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/opening_studies.htm"><b>2</b></a> <a href="../kernel/saving_a_study.htm"><b>3</b></a> </nobr><br><nobr>print <a href="../kernel/running_salome_pro.htm"><b>1</b></a> <a href="../kernel/readme.html"><b>2</b></a> </nobr><br><a href="../kernel/readme.html"><b>print_env</b></a> <br><a href="../kernel/readme.html"><b>prints</b></a> <br><nobr>problem <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/introduction.htm"><b>2</b></a> </nobr><br><a href="../kernel/readme.html"><b>problems</b></a> <br><nobr>procedure <a href="../kernel/running_salome_pro.htm"><b>1</b></a> <a href="../kernel/readme.html"><b>2</b></a> </nobr><br><nobr>proceed <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/getting_started2.htm"><b>2</b></a> </nobr><br><nobr>process <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/introduction.htm"><b>2</b></a> <a href="../kernel/using_registry.htm"><b>3</b></a> </nobr><br><a href="../kernel/using_registry.htm"><b>processes</b></a> <br><nobr>processing <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/introduction_to_salome_pro.htm"><b>2</b></a> </nobr><br><nobr>processors <a href="../kernel/introduction.htm"><b>1</b></a> <a href="../kernel/about_salome_pro_architecture.htm"><b>2</b></a> </nobr><br><a href="../kernel/salome_pro_desktop.htm"><b>produced</b></a> <br><nobr>product <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/copyright_notice.htm"><b>2</b></a> </nobr><br><a href="../kernel/readme.html"><b>product_description</b></a> <br><a href="../kernel/readme.html"><b>product_name</b></a> <br><a href="../kernel/readme.html"><b>product_script_name</b></a> <br><a href="../kernel/readme.html"><b>product_version</b></a> <br><a href="../kernel/about_salome_pro_architecture.htm"><b>productivity</b></a> <br><nobr>products <a href="../kernel/running_salome_pro.htm"><b>1</b></a> <a href="../kernel/readme.html"><b>2</b></a> <a href="../kernel/introduction.htm"><b>3</b></a> </nobr><br><a href="../kernel/readme.html"><b>products_directory</b></a> <br><a href="../kernel/running_salome_pro.htm"><b>profile</b></a> <br><a href="../kernel/readme.html"><b>program</b></a> <br><a href="../kernel/about_salome_pro_architecture.htm"><b>programming</b></a> <br><a href="../kernel/readme.html"><b>progress</b></a> <br><a href="../kernel/readme.html"><b>prompted</b></a> <br><a href="../kernel/running_salome_pro.htm"><b>prompting</b></a> <br><a href="../kernel/readme.html"><b>proper</b></a> <br><a href="../kernel/readme.html"><b>properly</b></a> <br><nobr>properties <a href="../kernel/introduction_to_salome_pro.htm"><b>1</b></a> <a href="../kernel/getting_properties_of_the_study.htm"><b>2</b></a> </nobr><br><a href="../kernel/readme.html"><b>proposed</b></a> <br><a href="../kernel/copyright_notice.htm"><b>proprietary</b></a> <br><a href="../kernel/readme.html"><b>provide</b></a> <br><nobr>provided <a href="../kernel/running_salome_pro.htm"><b>1</b></a> <a href="../kernel/readme.html"><b>2</b></a> <a href="../kernel/about_salome_pro_architecture.htm"><b>3</b></a> <a href="../kernel/using_catalog_generator.htm"><b>4</b></a> </nobr><br><nobr>provides <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/introduction_to_iapp.htm"><b>2</b></a> <a href="../kernel/introduction.htm"><b>3</b></a> <a href="../kernel/about_salome_pro_architecture.htm"><b>4</b></a> <a href="../kernel/using_catalog_generator.htm"><b>5</b></a> </nobr><br><nobr>providing <a href="../kernel/using_registry.htm"><b>1</b></a> <a href="../kernel/using_left-hand_tabs.htm"><b>2</b></a> </nobr><br><a name="bms_PU"></a><a name="subkey_PU"></a><a href="../kernel/getting_started2.htm"><b>purpose</b></a> <br><a href="../kernel/using_object_browser.htm"><b>purposes</b></a> <br><nobr><a name="bms_PY"></a><a name="subkey_PY"></a>py <a href="../kernel/running_salome_pro.htm"><b>1</b></a> <a href="../kernel/readme.html"><b>2</b></a> </nobr><br><a href="../kernel/readme.html"><b>pyqt</b></a> <br><a href="../kernel/readme.html"><b>pyqtdir</b></a> <br><nobr>python <a href="../kernel/running_salome_pro.htm"><b>1</b></a> <a href="../kernel/readme.html"><b>2</b></a> <a href="../kernel/introduction_to_iapp.htm"><b>3</b></a> <a href="../kernel/about_salome_pro_architecture.htm"><b>4</b></a> <a href="../kernel/setting_preferences.htm"><b>5</b></a> <a href="../kernel/salome_pro_desktop.htm"><b>6</b></a> </nobr><br><a href="../kernel/readme.html"><b>python2</b></a> <br><a href="../kernel/readme.html"><b>pythonhome</b></a> <br>\r
 <br><br>\r
-<a name="bm_P"></a><a name="subkey_P{"></a><a href="../files/running_salome_pro.htm"><b>p</b></a> <br><nobr><a name="bms_PA"></a><a name="subkey_PA"></a>package <a href="../files/readme.html"><b>1</b></a> <a href="../files/installing_salome_pro.htm"><b>2</b></a> <a href="../files/using_catalog_generator.htm"><b>3</b></a> <a href="../files/running_salome_pro.htm"><b>4</b></a> </nobr><br><nobr>packages <a href="../files/readme.html"><b>1</b></a> <a href="../files/installing_salome_pro.htm"><b>2</b></a> </nobr><br><nobr>page <a href="../files/readme.html"><b>1</b></a> <a href="../files/installing_salome_pro.htm"><b>2</b></a> </nobr><br><nobr>pages <a href="../files/readme.html"><b>1</b></a> <a href="../files/installing_salome_pro.htm"><b>2</b></a> <a href="../files/using_left-hand_tabs.htm"><b>3</b></a> </nobr><br><nobr>pane <a href="../files/navigating_topics.htm"><b>1</b></a> <a href="../files/using_left-hand_tabs.htm"><b>2</b></a> </nobr><br><a href="../files/salome_pro_desktop.htm"><b>panning</b></a> <br><a href="../files/about_salome_pro_architecture.htm"><b>parallel</b></a> <br><nobr>parameter <a href="../files/readme.html"><b>1</b></a> <a href="../files/installing_salome_pro.htm"><b>2</b></a> <a href="../files/using_catalog_generator.htm"><b>3</b></a> </nobr><br><nobr>parameters <a href="../files/installing_salome_pro.htm"><b>1</b></a> <a href="../files/about_salome_pro_architecture.htm"><b>2</b></a> <a href="../files/using_catalog_generator.htm"><b>3</b></a> </nobr><br><nobr>part <a href="../files/readme.html"><b>1</b></a> <a href="../files/installing_salome_pro.htm"><b>2</b></a> <a href="../files/copyright_notice.htm"><b>3</b></a> </nobr><br><a href="../files/saving_a_study.htm"><b>particular</b></a> <br><a href="../files/introduction.htm"><b>particularly</b></a> <br><a href="../files/salome_pro_desktop.htm"><b>parts</b></a> <br><nobr>pass <a href="../files/readme.html"><b>1</b></a> <a href="../files/installing_salome_pro.htm"><b>2</b></a> </nobr><br><nobr>paste <a href="../files/editing_studies.htm"><b>1</b></a> <a href="../files/salome_pro_desktop.htm"><b>2</b></a> </nobr><br><a href="../files/salome_pro_desktop.htm"><b>pasting</b></a> <br><nobr>path <a href="../files/readme.html"><b>1</b></a> <a href="../files/installing_salome_pro.htm"><b>2</b></a> </nobr><br><a name="bms_PC"></a><a name="subkey_PC"></a><a href="../files/about_salome_pro_architecture.htm"><b>pc</b></a> <br><nobr><a name="bms_PE"></a><a name="subkey_PE"></a>performance <a href="../files/introduction.htm"><b>1</b></a> <a href="../files/getting_started2.htm"><b>2</b></a> <a href="../files/about_salome_pro_architecture.htm"><b>3</b></a> <a href="../files/salome_pro_desktop.htm"><b>4</b></a> </nobr><br><nobr>permission <a href="../files/readme.html"><b>1</b></a> <a href="../files/installing_salome_pro.htm"><b>2</b></a> <a href="../files/copyright_notice.htm"><b>3</b></a> </nobr><br><a href="../files/introduction.htm"><b>perpetuity</b></a> <br><a name="bms_PH"></a><a name="subkey_PH"></a><a href="../files/about_salome_pro_architecture.htm"><b>phenomena</b></a> <br><a href="../files/copyright_notice.htm"><b>photocopying</b></a> <br><a href="../files/using_left-hand_tabs.htm"><b>phrases</b></a> <br><nobr>physical <a href="../files/introduction_to_salome_pro.htm"><b>1</b></a> <a href="../files/introduction.htm"><b>2</b></a> <a href="../files/about_salome_pro_architecture.htm"><b>3</b></a> </nobr><br><nobr><a name="bms_PI"></a><a name="subkey_PI"></a>pick <a href="../files/readme.html"><b>1</b></a> <a href="../files/installing_salome_pro.htm"><b>2</b></a> </nobr><br><a href="../files/installing_salome_pro.htm"><b>picking</b></a> <br><nobr>picks <a href="../files/readme.html"><b>1</b></a> <a href="../files/installing_salome_pro.htm"><b>2</b></a> </nobr><br><nobr>picture <a href="../files/getting_properties_of_the_study.htm"><b>1</b></a> <a href="../files/using_usecase_browser.htm"><b>2</b></a> </nobr><br><a href="../files/using_registry.htm"><b>pid</b></a> <br><a href="../files/about_salome_pro_architecture.htm"><b>piece</b></a> <br><nobr><a name="bms_PL"></a><a name="subkey_PL"></a>place <a href="../files/readme.html"><b>1</b></a> <a href="../files/displaying_hiding_toolbars.htm"><b>2</b></a> </nobr><br><nobr>platform <a href="../files/readme.html"><b>1</b></a> <a href="../files/introduction_to_salome_pro.htm"><b>2</b></a> <a href="../files/introduction_to_iapp.htm"><b>3</b></a> <a href="../files/introduction.htm"><b>4</b></a> <a href="../files/installing_salome_pro.htm"><b>5</b></a> <a href="../files/getting_started2.htm"><b>6</b></a> <a href="../files/about_salome_pro_help_system.htm"><b>7</b></a> <a href="../files/about_salome_pro_architecture.htm"><b>8</b></a> <a href="../files/using_registry.htm"><b>9</b></a> <a href="../files/using_catalog_generator.htm"><b>10</b></a> <a href="../files/saving_a_study.htm"><b>11</b></a> <a href="../files/salome_pro_desktop.htm"><b>12</b></a> <a href="../files/running_salome_pro.htm"><b>13</b></a> </nobr><br><a href="../files/readme.html"><b>platforms</b></a> <br><nobr>please <a href="../files/readme.html"><b>1</b></a> <a href="../files/installing_salome_pro.htm"><b>2</b></a> </nobr><br><nobr>plot2d <a href="../files/introduction_to_iapp.htm"><b>1</b></a> <a href="../files/creating_a_new_study.htm"><b>2</b></a> <a href="../files/setting_preferences.htm"><b>3</b></a> <a href="../files/salome_pro_desktop.htm"><b>4</b></a> </nobr><br><a name="bms_PN"></a><a name="subkey_PN"></a><a href="../files/salome_pro_desktop.htm"><b>png</b></a> <br><a name="bms_PO"></a><a name="subkey_PO"></a><a href="../files/installing_salome_pro.htm"><b>point</b></a> <br><nobr>pop <a href="../files/opening_studies.htm"><b>1</b></a> <a href="../files/navigating_topics.htm"><b>2</b></a> <a href="../files/using_usecase_browser.htm"><b>3</b></a> <a href="../files/using_object_browser.htm"><b>4</b></a> <a href="../files/salome_pro_desktop.htm"><b>5</b></a> </nobr><br><a href="../files/navigating_topics.htm"><b>popup</b></a> <br><a href="../files/navigating_topics.htm"><b>popups</b></a> <br><a href="../files/running_salome_pro.htm"><b>port</b></a> <br><a href="../files/introduction.htm"><b>portions</b></a> <br><a href="../files/running_salome_pro.htm"><b>portkill</b></a> <br><a href="../files/salome_pro_desktop.htm"><b>position</b></a> <br><nobr>possibility <a href="../files/readme.html"><b>1</b></a> <a href="../files/installing_salome_pro.htm"><b>2</b></a> <a href="../files/about_salome_pro_architecture.htm"><b>3</b></a> <a href="../files/using_catalog_generator.htm"><b>4</b></a> <a href="../files/running_salome_pro.htm"><b>5</b></a> </nobr><br><nobr>possible <a href="../files/readme.html"><b>1</b></a> <a href="../files/using_usecase_browser.htm"><b>2</b></a> <a href="../files/using_object_browser.htm"><b>3</b></a> </nobr><br><nobr>post <a href="../files/introduction_to_salome_pro.htm"><b>1</b></a> <a href="../files/introduction.htm"><b>2</b></a> </nobr><br><nobr><a name="bms_PR"></a><a name="subkey_PR"></a>pre <a href="../files/introduction_to_salome_pro.htm"><b>1</b></a> <a href="../files/introduction.htm"><b>2</b></a> </nobr><br><nobr>precompiled <a href="../files/readme.html"><b>1</b></a> <a href="../files/installing_salome_pro.htm"><b>2</b></a> </nobr><br><a href="../files/about_salome_pro_architecture.htm"><b>predefined</b></a> <br><a href="../files/installing_salome_pro.htm"><b>prefer</b></a> <br><a href="../files/running_salome_pro.htm"><b>preferable</b></a> <br><nobr>preferences <a href="../files/using_object_browser.htm"><b>1</b></a> <a href="../files/setting_preferences.htm"><b>2</b></a> </nobr><br><nobr>prefix <a href="../files/readme.html"><b>1</b></a> <a href="../files/installing_salome_pro.htm"><b>2</b></a> </nobr><br><nobr>preinstalled <a href="../files/readme.html"><b>1</b></a> <a href="../files/installing_salome_pro.htm"><b>2</b></a> </nobr><br><nobr>preliminary <a href="../files/readme.html"><b>1</b></a> <a href="../files/installing_salome_pro.htm"><b>2</b></a> </nobr><br><nobr>prerequisite <a href="../files/readme.html"><b>1</b></a> <a href="../files/installing_salome_pro.htm"><b>2</b></a> </nobr><br><nobr>prerequisites <a href="../files/readme.html"><b>1</b></a> <a href="../files/installing_salome_pro.htm"><b>2</b></a> </nobr><br><a href="../files/salome_pro_desktop.htm"><b>presentation</b></a> <br><a href="../files/salome_pro_desktop.htm"><b>presentations</b></a> <br><nobr>press <a href="../files/readme.html"><b>1</b></a> <a href="../files/installing_salome_pro.htm"><b>2</b></a> </nobr><br><nobr>pressing <a href="../files/readme.html"><b>1</b></a> <a href="../files/installing_salome_pro.htm"><b>2</b></a> </nobr><br><nobr>previous <a href="../files/readme.html"><b>1</b></a> <a href="../files/opening_studies.htm"><b>2</b></a> <a href="../files/installing_salome_pro.htm"><b>3</b></a> </nobr><br><nobr>previously <a href="../files/readme.html"><b>1</b></a> <a href="../files/opening_studies.htm"><b>2</b></a> <a href="../files/installing_salome_pro.htm"><b>3</b></a> <a href="../files/saving_a_study.htm"><b>4</b></a> </nobr><br><nobr>print <a href="../files/readme.html"><b>1</b></a> <a href="../files/installing_salome_pro.htm"><b>2</b></a> <a href="../files/running_salome_pro.htm"><b>3</b></a> </nobr><br><a href="../files/readme.html"><b>print_env</b></a> <br><nobr>problem <a href="../files/readme.html"><b>1</b></a> <a href="../files/introduction.htm"><b>2</b></a> <a href="../files/installing_salome_pro.htm"><b>3</b></a> </nobr><br><nobr>problems <a href="../files/readme.html"><b>1</b></a> <a href="../files/installing_salome_pro.htm"><b>2</b></a> </nobr><br><nobr>procedure <a href="../files/readme.html"><b>1</b></a> <a href="../files/installing_salome_pro.htm"><b>2</b></a> <a href="../files/running_salome_pro.htm"><b>3</b></a> </nobr><br><nobr>proceed <a href="../files/readme.html"><b>1</b></a> <a href="../files/installing_salome_pro.htm"><b>2</b></a> <a href="../files/getting_started2.htm"><b>3</b></a> </nobr><br><nobr>process <a href="../files/readme.html"><b>1</b></a> <a href="../files/introduction.htm"><b>2</b></a> <a href="../files/installing_salome_pro.htm"><b>3</b></a> <a href="../files/using_registry.htm"><b>4</b></a> </nobr><br><a href="../files/using_registry.htm"><b>processes</b></a> <br><nobr>processing <a href="../files/readme.html"><b>1</b></a> <a href="../files/introduction_to_salome_pro.htm"><b>2</b></a> <a href="../files/installing_salome_pro.htm"><b>3</b></a> </nobr><br><nobr>processors <a href="../files/introduction.htm"><b>1</b></a> <a href="../files/about_salome_pro_architecture.htm"><b>2</b></a> </nobr><br><a href="../files/salome_pro_desktop.htm"><b>produced</b></a> <br><nobr>product <a href="../files/readme.html"><b>1</b></a> <a href="../files/installing_salome_pro.htm"><b>2</b></a> <a href="../files/copyright_notice.htm"><b>3</b></a> </nobr><br><a href="../files/readme.html"><b>product_name</b></a> <br><a href="../files/readme.html"><b>product_script_name</b></a> <br><a href="../files/readme.html"><b>product_version</b></a> <br><a href="../files/about_salome_pro_architecture.htm"><b>productivity</b></a> <br><nobr>products <a href="../files/readme.html"><b>1</b></a> <a href="../files/introduction.htm"><b>2</b></a> <a href="../files/installing_salome_pro.htm"><b>3</b></a> <a href="../files/running_salome_pro.htm"><b>4</b></a> </nobr><br><a href="../files/readme.html"><b>products_directory</b></a> <br><nobr>profile <a href="../files/installing_salome_pro.htm"><b>1</b></a> <a href="../files/running_salome_pro.htm"><b>2</b></a> </nobr><br><nobr>program <a href="../files/readme.html"><b>1</b></a> <a href="../files/installing_salome_pro.htm"><b>2</b></a> </nobr><br><a href="../files/about_salome_pro_architecture.htm"><b>programming</b></a> <br><nobr>progress <a href="../files/readme.html"><b>1</b></a> <a href="../files/installing_salome_pro.htm"><b>2</b></a> </nobr><br><nobr>prompted <a href="../files/readme.html"><b>1</b></a> <a href="../files/installing_salome_pro.htm"><b>2</b></a> </nobr><br><a href="../files/running_salome_pro.htm"><b>prompting</b></a> <br><nobr>proper <a href="../files/readme.html"><b>1</b></a> <a href="../files/installing_salome_pro.htm"><b>2</b></a> </nobr><br><a href="../files/readme.html"><b>properly</b></a> <br><nobr>properties <a href="../files/introduction_to_salome_pro.htm"><b>1</b></a> <a href="../files/getting_properties_of_the_study.htm"><b>2</b></a> </nobr><br><nobr>proposed <a href="../files/readme.html"><b>1</b></a> <a href="../files/installing_salome_pro.htm"><b>2</b></a> </nobr><br><a href="../files/copyright_notice.htm"><b>proprietary</b></a> <br><a href="../files/readme.html"><b>provide</b></a> <br><nobr>provided <a href="../files/readme.html"><b>1</b></a> <a href="../files/about_salome_pro_architecture.htm"><b>2</b></a> <a href="../files/using_catalog_generator.htm"><b>3</b></a> <a href="../files/running_salome_pro.htm"><b>4</b></a> </nobr><br><nobr>provides <a href="../files/readme.html"><b>1</b></a> <a href="../files/introduction_to_iapp.htm"><b>2</b></a> <a href="../files/introduction.htm"><b>3</b></a> <a href="../files/about_salome_pro_architecture.htm"><b>4</b></a> <a href="../files/using_catalog_generator.htm"><b>5</b></a> </nobr><br><nobr>providing <a href="../files/using_registry.htm"><b>1</b></a> <a href="../files/using_left-hand_tabs.htm"><b>2</b></a> </nobr><br><br><br></p><p class="ftsbody" align="center"><a href="whlstf6.htm" target="_self" title="previous search group"><b>&gt;&gt;</b></a>\r
+<a name="bm_Q"></a><a name="subkey_QT"></a><a href="../kernel/readme.html"><b>qt</b></a> <br><a href="../kernel/readme.html"><b>qtdir</b></a> <br><a name="bms_QU"></a><a name="subkey_QU"></a><a href="../kernel/introduction.htm"><b>quality</b></a> <br><a href="../kernel/readme.html"><b>question</b></a> <br><nobr>quick <a href="../kernel/using_usecase_browser.htm"><b>1</b></a> <a href="../kernel/using_object_browser.htm"><b>2</b></a> <a href="../kernel/setting_preferences.htm"><b>3</b></a> </nobr><br><a href="../kernel/readme.html"><b>quickly</b></a> <br><a href="../kernel/saving_a_study.htm"><b>quit</b></a> <br><a href="../kernel/readme.html"><b>quits</b></a> <br><a href="../kernel/readme.html"><b>quoted</b></a> <br><br><br></p><p class="ftsbody" align="center"><a href="whlstf6.htm" target="_self" title="previous search group"><b>&gt;&gt;</b></a>\r
 \r
 </body>\r
 \r
index 8ebe14095282fb98aa42a48b7a96565dafdbfb4c..c961cc0e5785775340fbd82621446366ae46a36f 100755 (executable)
@@ -1,9 +1,9 @@
 <html>\r
 <head>\r
 <title>Search Words List</title>\r
-<meta http-equiv="content-type" content="text/html; charset=iso-8859-1">\r
+\r
 <meta name="generator" content="RoboHelp by eHelp Corporation   www.ehelp.com">\r
-<meta name "description" content="WebHelp 2002">\r
+<meta name="description" content="WebHelp 5.50">\r
 <base target="bsscright">\r
 <style>\r
 <!--\r
@@ -30,16 +30,14 @@ A:hover {color:Navy; } A:hover {font-family:Tahoma; } A:hover {font-size:8pt; }
 -->\r
 </style>\r
 </head>\r
-<body marginheight="0"  marginwidth="0">\r
+<body marginheight="0"  marginwidth="0" bgproperties="fixed">\r
 <p class="ftsbody" align="center"><a href="whlstf5.htm" target="_self" title="previous search group"><b>&lt;&lt;</b></a><br><br></p>\r
-<p class="ftsbody">\r
-<nobr><a name="bms_PU"></a><a name="subkey_PU"></a>purpose <a href="../files/installing_salome_pro.htm"><b>1</b></a> <a href="../files/getting_started2.htm"><b>2</b></a> </nobr><br><a href="../files/using_object_browser.htm"><b>purposes</b></a> <br><nobr><a name="bms_PY"></a><a name="subkey_PY"></a>py <a href="../files/readme.html"><b>1</b></a> <a href="../files/running_salome_pro.htm"><b>2</b></a> </nobr><br><nobr>pyqt <a href="../files/readme.html"><b>1</b></a> <a href="../files/installing_salome_pro.htm"><b>2</b></a> </nobr><br><nobr>pyqtdir <a href="../files/readme.html"><b>1</b></a> <a href="../files/installing_salome_pro.htm"><b>2</b></a> </nobr><br><nobr>python <a href="../files/readme.html"><b>1</b></a> <a href="../files/introduction_to_iapp.htm"><b>2</b></a> <a href="../files/installing_salome_pro.htm"><b>3</b></a> <a href="../files/about_salome_pro_architecture.htm"><b>4</b></a> <a href="../files/setting_preferences.htm"><b>5</b></a> <a href="../files/salome_pro_desktop.htm"><b>6</b></a> <a href="../files/running_salome_pro.htm"><b>7</b></a> </nobr><br><nobr>python2 <a href="../files/readme.html"><b>1</b></a> <a href="../files/installing_salome_pro.htm"><b>2</b></a> </nobr><br><nobr>pythonhome <a href="../files/readme.html"><b>1</b></a> <a href="../files/installing_salome_pro.htm"><b>2</b></a> </nobr><br>\r
-<br><br>\r
-<nobr><a name="bm_Q"></a><a name="subkey_QT"></a>qt <a href="../files/readme.html"><b>1</b></a> <a href="../files/installing_salome_pro.htm"><b>2</b></a> </nobr><br><nobr>qtdir <a href="../files/readme.html"><b>1</b></a> <a href="../files/installing_salome_pro.htm"><b>2</b></a> </nobr><br><a name="bms_QU"></a><a name="subkey_QU"></a><a href="../files/introduction.htm"><b>quality</b></a> <br><nobr>question <a href="../files/readme.html"><b>1</b></a> <a href="../files/installing_salome_pro.htm"><b>2</b></a> </nobr><br><nobr>quick <a href="../files/using_usecase_browser.htm"><b>1</b></a> <a href="../files/using_object_browser.htm"><b>2</b></a> <a href="../files/setting_preferences.htm"><b>3</b></a> </nobr><br><a href="../files/readme.html"><b>quickly</b></a> <br><a href="../files/saving_a_study.htm"><b>quit</b></a> <br><nobr>quits <a href="../files/readme.html"><b>1</b></a> <a href="../files/installing_salome_pro.htm"><b>2</b></a> </nobr><br><a href="../files/readme.html"><b>quoted</b></a> <br><nobr><a name="bms_QW"></a><a name="subkey_QW"></a>qwt <a href="../files/readme.html"><b>1</b></a> <a href="../files/installing_salome_pro.htm"><b>2</b></a> </nobr><br><nobr>qwthome <a href="../files/readme.html"><b>1</b></a> <a href="../files/installing_salome_pro.htm"><b>2</b></a> </nobr><br>\r
+<p class="ftsbody" >\r
+<a name="bms_QW"></a><a name="subkey_QW"></a><a href="../kernel/readme.html"><b>qwt</b></a> <br><a href="../kernel/readme.html"><b>qwthome</b></a> <br>\r
 <br><br>\r
-<nobr><a name="bm_R"></a><a name="subkey_RA"></a>radiobuttons <a href="../files/readme.html"><b>1</b></a> <a href="../files/installing_salome_pro.htm"><b>2</b></a> </nobr><br><nobr>raise <a href="../files/readme.html"><b>1</b></a> <a href="../files/installing_salome_pro.htm"><b>2</b></a> </nobr><br><a href="../files/about_salome_pro_architecture.htm"><b>rapidly</b></a> <br><a href="../files/copyright_notice.htm"><b>razel</b></a> <br><nobr><a name="bms_RC"></a><a name="subkey_RC"></a>rc2 <a href="../files/readme.html"><b>1</b></a> <a href="../files/installing_salome_pro.htm"><b>2</b></a> </nobr><br><a name="bms_RE"></a><a name="subkey_RE"></a><a href="../files/navigating_topics.htm"><b>re</b></a> <br><a href="../files/introduction.htm"><b>reactivity</b></a> <br><nobr>read <a href="../files/readme.html"><b>1</b></a> <a href="../files/navigating_topics.htm"><b>2</b></a> <a href="../files/installing_salome_pro.htm"><b>3</b></a> </nobr><br><a href="../files/navigating_topics.htm"><b>reading</b></a> <br><a href="../files/readme.html"><b>readme</b></a> <br><a href="../files/getting_started2.htm"><b>realize</b></a> <br><nobr>recommended <a href="../files/readme.html"><b>1</b></a> <a href="../files/installing_salome_pro.htm"><b>2</b></a> </nobr><br><a href="../files/getting_properties_of_the_study.htm"><b>record</b></a> <br><a href="../files/copyright_notice.htm"><b>recording</b></a> <br><a href="../files/salome_pro_desktop.htm"><b>rectangle</b></a> <br><nobr>red <a href="../files/readme.html"><b>1</b></a> <a href="../files/installing_salome_pro.htm"><b>2</b></a> <a href="../files/using_object_browser.htm"><b>3</b></a> </nobr><br><nobr>redhat <a href="../files/readme.html"><b>1</b></a> <a href="../files/installing_salome_pro.htm"><b>2</b></a> </nobr><br><a href="../files/readme.html"><b>redhat8</b></a> <br><a href="../files/running_salome_pro.htm"><b>redirection</b></a> <br><a href="../files/editing_studies.htm"><b>redo</b></a> <br><a href="../files/introduction.htm"><b>reduce</b></a> <br><a href="../files/introduction.htm"><b>reduces</b></a> <br><a href="../files/introduction.htm"><b>reduction</b></a> <br><nobr>reference <a href="../files/navigating_topics.htm"><b>1</b></a> <a href="../files/about_salome_pro_help_system.htm"><b>2</b></a> <a href="../files/using_object_browser.htm"><b>3</b></a> <a href="../files/setting_preferences.htm"><b>4</b></a> </nobr><br><a href="../files/using_object_browser.htm"><b>references</b></a> <br><a href="../files/introduction.htm"><b>refined</b></a> <br><a href="../files/using_registry.htm"><b>refresh</b></a> <br><a href="../files/using_registry.htm"><b>refreshment</b></a> <br><a href="../files/copyright_notice.htm"><b>registered</b></a> <br><nobr>registry <a href="../files/introduction_to_iapp.htm"><b>1</b></a> <a href="../files/using_registry.htm"><b>2</b></a> </nobr><br><nobr>reinstall <a href="../files/readme.html"><b>1</b></a> <a href="../files/installing_salome_pro.htm"><b>2</b></a> </nobr><br><a href="../files/readme.html"><b>reinstallation</b></a> <br><nobr>reinstalling <a href="../files/readme.html"><b>1</b></a> <a href="../files/installing_salome_pro.htm"><b>2</b></a> </nobr><br><nobr>related <a href="../files/navigating_topics.htm"><b>1</b></a> <a href="../files/using_left-hand_tabs.htm"><b>2</b></a> </nobr><br><nobr>relating <a href="../files/readme.html"><b>1</b></a> <a href="../files/installing_salome_pro.htm"><b>2</b></a> </nobr><br><a href="../files/readme.html"><b>relative</b></a> <br><a href="../files/navigating_topics.htm"><b>relevant</b></a> <br><a href="../files/introduction.htm"><b>reliability</b></a> <br><a href="../files/saving_a_study.htm"><b>reload</b></a> <br><a href="../files/displaying_hiding_toolbars.htm"><b>relocate</b></a> <br><a href="../files/about_salome_pro_architecture.htm"><b>remains</b></a> <br><nobr>removed <a href="../files/readme.html"><b>1</b></a> <a href="../files/installing_salome_pro.htm"><b>2</b></a> </nobr><br><a href="../files/using_usecase_browser.htm"><b>removes</b></a> <br><nobr>removing <a href="../files/readme.html"><b>1</b></a> <a href="../files/installing_salome_pro.htm"><b>2</b></a> </nobr><br><a href="../files/using_usecase_browser.htm"><b>rename</b></a> <br><a href="../files/using_usecase_browser.htm"><b>renamed</b></a> <br><a href="../files/copyright_notice.htm"><b>rené</b></a> <br><a href="../files/installing_salome_pro.htm"><b>repeated</b></a> <br><nobr>represent <a href="../files/about_salome_pro_architecture.htm"><b>1</b></a> <a href="../files/using_left-hand_tabs.htm"><b>2</b></a> </nobr><br><a href="../files/displaying_studies.htm"><b>representation</b></a> <br><nobr>represents <a href="../files/introduction_to_salome_pro.htm"><b>1</b></a> <a href="../files/introduction_to_iapp.htm"><b>2</b></a> <a href="../files/introduction.htm"><b>3</b></a> <a href="../files/installing_salome_pro.htm"><b>4</b></a> <a href="../files/getting_started2.htm"><b>5</b></a> </nobr><br><a href="../files/copyright_notice.htm"><b>reproduced</b></a> <br><nobr>required <a href="../files/readme.html"><b>1</b></a> <a href="../files/opening_studies.htm"><b>2</b></a> <a href="../files/installing_salome_pro.htm"><b>3</b></a> </nobr><br><nobr>requirements <a href="../files/introduction.htm"><b>1</b></a> <a href="../files/about_salome_pro_architecture.htm"><b>2</b></a> </nobr><br><nobr>requires <a href="../files/introduction.htm"><b>1</b></a> <a href="../files/saving_a_study.htm"><b>2</b></a> </nobr><br><a href="../files/copyright_notice.htm"><b>reserved</b></a> <br><a href="../files/readme.html"><b>reset</b></a> <br><nobr>resets <a href="../files/installing_salome_pro.htm"><b>1</b></a> <a href="../files/salome_pro_desktop.htm"><b>2</b></a> </nobr><br><a href="../files/salome_pro_desktop.htm"><b>resized</b></a> <br><a href="../files/setting_preferences.htm"><b>resizing</b></a> <br><a href="../files/copyright_notice.htm"><b>respective</b></a> <br><a href="../files/about_salome_pro_architecture.htm"><b>responds</b></a> <br><a href="../files/copyright_notice.htm"><b>responsibility</b></a> <br><a href="../files/readme.html"><b>responsible</b></a> <br><a href="../files/setting_preferences.htm"><b>restored</b></a> <br><a href="../files/saving_a_study.htm"><b>result</b></a> <br><a href="../files/getting_started2.htm"><b>resulting</b></a> <br><a href="../files/copyright_notice.htm"><b>retrieval</b></a> <br><a href="../files/introduction_to_salome_pro.htm"><b>reusable</b></a> <br><nobr>reuse <a href="../files/introduction.htm"><b>1</b></a> <a href="../files/about_salome_pro_architecture.htm"><b>2</b></a> </nobr><br><nobr><a name="bms_RI"></a><a name="subkey_RI"></a>right <a href="../files/readme.html"><b>1</b></a> <a href="../files/opening_studies.htm"><b>2</b></a> <a href="../files/navigating_topics.htm"><b>3</b></a> <a href="../files/installing_salome_pro.htm"><b>4</b></a> <a href="../files/using_usecase_browser.htm"><b>5</b></a> <a href="../files/using_object_browser.htm"><b>6</b></a> <a href="../files/using_left-hand_tabs.htm"><b>7</b></a> <a href="../files/saving_a_study.htm"><b>8</b></a> <a href="../files/salome_pro_desktop.htm"><b>9</b></a> </nobr><br><a href="../files/copyright_notice.htm"><b>rights</b></a> <br><a href="../files/introduction.htm"><b>risks</b></a> <br><a name="bms_RO"></a><a name="subkey_RO"></a><a href="../files/introduction.htm"><b>robustness</b></a> <br><a href="../files/about_salome_pro_architecture.htm"><b>roles</b></a> <br><nobr>root <a href="../files/readme.html"><b>1</b></a> <a href="../files/installing_salome_pro.htm"><b>2</b></a> <a href="../files/using_usecase_browser.htm"><b>3</b></a> </nobr><br><a href="../files/salome_pro_desktop.htm"><b>rotation</b></a> <br><a name="bms_RU"></a><a name="subkey_RU"></a><a href="../files/copyright_notice.htm"><b>rue</b></a> <br><a href="../files/readme.html"><b>rules</b></a> <br><nobr>run <a href="../files/readme.html"><b>1</b></a> <a href="../files/installing_salome_pro.htm"><b>2</b></a> <a href="../files/about_salome_pro_architecture.htm"><b>3</b></a> </nobr><br><nobr>runinstall <a href="../files/readme.html"><b>1</b></a> <a href="../files/installing_salome_pro.htm"><b>2</b></a> </nobr><br><nobr>running <a href="../files/using_registry.htm"><b>1</b></a> <a href="../files/using_catalog_generator.htm"><b>2</b></a> <a href="../files/running_salome_pro.htm"><b>3</b></a> </nobr><br><a href="../files/readme.html"><b>runs</b></a> <br><nobr>runsalome <a href="../files/using_catalog_generator.htm"><b>1</b></a> <a href="../files/running_salome_pro.htm"><b>2</b></a> </nobr><br><a href="../files/using_catalog_generator.htm"><b>runsalomewithport</b></a> <br>\r
+<a name="bm_R"></a><a name="subkey_RA"></a><a href="../kernel/readme.html"><b>radiobuttons</b></a> <br><a href="../kernel/readme.html"><b>raise</b></a> <br><a href="../kernel/about_salome_pro_architecture.htm"><b>rapidly</b></a> <br><a href="../kernel/copyright_notice.htm"><b>razel</b></a> <br><a name="bms_RC"></a><a name="subkey_RC"></a><a href="../kernel/readme.html"><b>rc2</b></a> <br><a name="bms_RE"></a><a name="subkey_RE"></a><a href="../kernel/navigating_topics.htm"><b>re</b></a> <br><a href="../kernel/introduction.htm"><b>reactivity</b></a> <br><nobr>read <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/navigating_topics.htm"><b>2</b></a> </nobr><br><a href="../kernel/navigating_topics.htm"><b>reading</b></a> <br><a href="../kernel/readme.html"><b>readme</b></a> <br><a href="../kernel/getting_started2.htm"><b>realize</b></a> <br><a href="../kernel/readme.html"><b>recommended</b></a> <br><a href="../kernel/getting_properties_of_the_study.htm"><b>record</b></a> <br><a href="../kernel/copyright_notice.htm"><b>recording</b></a> <br><a href="../kernel/salome_pro_desktop.htm"><b>rectangle</b></a> <br><nobr>red <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/using_object_browser.htm"><b>2</b></a> </nobr><br><a href="../kernel/readme.html"><b>redhat</b></a> <br><a href="../kernel/readme.html"><b>redhat8</b></a> <br><a href="../kernel/running_salome_pro.htm"><b>redirection</b></a> <br><a href="../kernel/editing_studies.htm"><b>redo</b></a> <br><a href="../kernel/introduction.htm"><b>reduce</b></a> <br><a href="../kernel/introduction.htm"><b>reduces</b></a> <br><a href="../kernel/introduction.htm"><b>reduction</b></a> <br><nobr>reference <a href="../kernel/navigating_topics.htm"><b>1</b></a> <a href="../kernel/about_salome_pro_help_system.htm"><b>2</b></a> <a href="../kernel/using_object_browser.htm"><b>3</b></a> <a href="../kernel/setting_preferences.htm"><b>4</b></a> </nobr><br><a href="../kernel/using_object_browser.htm"><b>references</b></a> <br><a href="../kernel/introduction.htm"><b>refined</b></a> <br><a href="../kernel/using_registry.htm"><b>refresh</b></a> <br><a href="../kernel/using_registry.htm"><b>refreshment</b></a> <br><a href="../kernel/copyright_notice.htm"><b>registered</b></a> <br><nobr>registry <a href="../kernel/introduction_to_iapp.htm"><b>1</b></a> <a href="../kernel/using_registry.htm"><b>2</b></a> </nobr><br><a href="../kernel/readme.html"><b>reinstall</b></a> <br><a href="../kernel/readme.html"><b>reinstallation</b></a> <br><a href="../kernel/readme.html"><b>reinstalling</b></a> <br><nobr>related <a href="../kernel/navigating_topics.htm"><b>1</b></a> <a href="../kernel/using_left-hand_tabs.htm"><b>2</b></a> </nobr><br><a href="../kernel/readme.html"><b>relating</b></a> <br><a href="../kernel/readme.html"><b>relative</b></a> <br><a href="../kernel/navigating_topics.htm"><b>relevant</b></a> <br><a href="../kernel/introduction.htm"><b>reliability</b></a> <br><a href="../kernel/saving_a_study.htm"><b>reload</b></a> <br><a href="../kernel/displaying_hiding_toolbars.htm"><b>relocate</b></a> <br><a href="../kernel/about_salome_pro_architecture.htm"><b>remains</b></a> <br><a href="../kernel/readme.html"><b>removed</b></a> <br><a href="../kernel/using_usecase_browser.htm"><b>removes</b></a> <br><a href="../kernel/readme.html"><b>removing</b></a> <br><a href="../kernel/using_usecase_browser.htm"><b>rename</b></a> <br><a href="../kernel/using_usecase_browser.htm"><b>renamed</b></a> <br><a href="../kernel/copyright_notice.htm"><b>rené</b></a> <br><nobr>represent <a href="../kernel/about_salome_pro_architecture.htm"><b>1</b></a> <a href="../kernel/using_left-hand_tabs.htm"><b>2</b></a> </nobr><br><a href="../kernel/displaying_studies.htm"><b>representation</b></a> <br><nobr>represents <a href="../kernel/introduction_to_salome_pro.htm"><b>1</b></a> <a href="../kernel/introduction_to_iapp.htm"><b>2</b></a> <a href="../kernel/introduction.htm"><b>3</b></a> <a href="../kernel/getting_started2.htm"><b>4</b></a> </nobr><br><a href="../kernel/copyright_notice.htm"><b>reproduced</b></a> <br><nobr>required <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/opening_studies.htm"><b>2</b></a> </nobr><br><nobr>requirements <a href="../kernel/running_salome_pro.htm"><b>1</b></a> <a href="../kernel/introduction.htm"><b>2</b></a> <a href="../kernel/about_salome_pro_architecture.htm"><b>3</b></a> </nobr><br><nobr>requires <a href="../kernel/introduction.htm"><b>1</b></a> <a href="../kernel/saving_a_study.htm"><b>2</b></a> </nobr><br><a href="../kernel/copyright_notice.htm"><b>reserved</b></a> <br><a href="../kernel/readme.html"><b>reset</b></a> <br><a href="../kernel/salome_pro_desktop.htm"><b>resets</b></a> <br><a href="../kernel/salome_pro_desktop.htm"><b>resized</b></a> <br><a href="../kernel/setting_preferences.htm"><b>resizing</b></a> <br><a href="../kernel/copyright_notice.htm"><b>respective</b></a> <br><a href="../kernel/about_salome_pro_architecture.htm"><b>responds</b></a> <br><a href="../kernel/copyright_notice.htm"><b>responsibility</b></a> <br><a href="../kernel/readme.html"><b>responsible</b></a> <br><a href="../kernel/setting_preferences.htm"><b>restored</b></a> <br><a href="../kernel/saving_a_study.htm"><b>result</b></a> <br><a href="../kernel/getting_started2.htm"><b>resulting</b></a> <br><a href="../kernel/copyright_notice.htm"><b>retrieval</b></a> <br><a href="../kernel/introduction_to_salome_pro.htm"><b>reusable</b></a> <br><nobr>reuse <a href="../kernel/introduction.htm"><b>1</b></a> <a href="../kernel/about_salome_pro_architecture.htm"><b>2</b></a> </nobr><br><nobr><a name="bms_RI"></a><a name="subkey_RI"></a>right <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/opening_studies.htm"><b>2</b></a> <a href="../kernel/navigating_topics.htm"><b>3</b></a> <a href="../kernel/using_usecase_browser.htm"><b>4</b></a> <a href="../kernel/using_object_browser.htm"><b>5</b></a> <a href="../kernel/using_left-hand_tabs.htm"><b>6</b></a> <a href="../kernel/saving_a_study.htm"><b>7</b></a> <a href="../kernel/salome_pro_desktop.htm"><b>8</b></a> </nobr><br><a href="../kernel/copyright_notice.htm"><b>rights</b></a> <br><a href="../kernel/introduction.htm"><b>risks</b></a> <br><a name="bms_RO"></a><a name="subkey_RO"></a><a href="../kernel/introduction.htm"><b>robustness</b></a> <br><a href="../kernel/about_salome_pro_architecture.htm"><b>roles</b></a> <br><nobr>root <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/using_usecase_browser.htm"><b>2</b></a> </nobr><br><a href="../kernel/salome_pro_desktop.htm"><b>rotation</b></a> <br><a name="bms_RU"></a><a name="subkey_RU"></a><a href="../kernel/copyright_notice.htm"><b>rue</b></a> <br><a href="../kernel/readme.html"><b>rules</b></a> <br><nobr>run <a href="../kernel/running_salome_pro.htm"><b>1</b></a> <a href="../kernel/readme.html"><b>2</b></a> <a href="../kernel/about_salome_pro_architecture.htm"><b>3</b></a> </nobr><br><a href="../kernel/readme.html"><b>runinstall</b></a> <br><nobr>running <a href="../kernel/running_salome_pro.htm"><b>1</b></a> <a href="../kernel/using_registry.htm"><b>2</b></a> <a href="../kernel/using_catalog_generator.htm"><b>3</b></a> </nobr><br><a href="../kernel/readme.html"><b>runs</b></a> <br><nobr>runsalome <a href="../kernel/running_salome_pro.htm"><b>1</b></a> <a href="../kernel/using_catalog_generator.htm"><b>2</b></a> </nobr><br><a href="../kernel/using_catalog_generator.htm"><b>runsalomewithport</b></a> <br>\r
 <br><br>\r
-<nobr><a name="bm_S"></a><a name="subkey_S{"></a>s <a href="../files/readme.html"><b>1</b></a> <a href="../files/navigating_topics.htm"><b>2</b></a> <a href="../files/installing_salome_pro.htm"><b>3</b></a> <a href="../files/copyright_notice.htm"><b>4</b></a> <a href="../files/about_salome_pro_architecture.htm"><b>5</b></a> <a href="../files/salome_pro_desktop.htm"><b>6</b></a> </nobr><br><a name="bms_SA"></a><a name="subkey_SA"></a><a href="../files/copyright_notice.htm"><b>saclay</b></a> <br><nobr>salome <a href="../files/readme.html"><b>1</b></a> <a href="../files/opening_studies.htm"><b>2</b></a> <a href="../files/navigating_topics.htm"><b>3</b></a> <a href="../files/introduction_to_salome_pro.htm"><b>4</b></a> <a href="../files/introduction_to_iapp.htm"><b>5</b></a> <a href="../files/introduction.htm"><b>6</b></a> <a href="../files/installing_salome_pro.htm"><b>7</b></a> <a href="../files/getting_started2.htm"><b>8</b></a> <a href="../files/editing_studies.htm"><b>9</b></a> <a href="../files/displaying_studies.htm"><b>10</b></a> <a href="../files/displaying_hiding_toolbars.htm"><b>11</b></a> <a href="../files/creating_a_new_study.htm"><b>12</b></a> <a href="../files/about_salome_pro_help_system.htm"><b>13</b></a> <a href="../files/about_salome_pro_architecture.htm"><b>14</b></a> <a href="../files/using_usecase_browser.htm"><b>15</b></a> <a href="../files/using_registry.htm"><b>16</b></a> <a href="../files/using_object_browser.htm"><b>17</b></a> <a href="../files/using_left-hand_tabs.htm"><b>18</b></a> <a href="../files/using_catalog_generator.htm"><b>19</b></a> <a href="../files/setting_preferences.htm"><b>20</b></a> <a href="../files/saving_a_study.htm"><b>21</b></a> <a href="../files/salome_pro_desktop.htm"><b>22</b></a> <a href="../files/running_salome_pro.htm"><b>23</b></a> </nobr><br><a href="../files/using_catalog_generator.htm"><b>salome_modulecatalog_server</b></a> <br><nobr>salome_root_dir <a href="../files/readme.html"><b>1</b></a> <a href="../files/installing_salome_pro.htm"><b>2</b></a> </nobr><br><a href="../files/readme.html"><b>salome_src</b></a> <br><a href="../files/installing_salome_pro.htm"><b>salomebin</b></a> <br><a href="../files/installing_salome_pro.htm"><b>salomecsh</b></a> <br><a href="../files/installing_salome_pro.htm"><b>salomedoc</b></a> <br><a href="../files/installing_salome_pro.htm"><b>salomepro_src</b></a> <br><a href="../files/installing_salome_pro.htm"><b>salomesh</b></a> <br><a href="../files/installing_salome_pro.htm"><b>salomesources</b></a> <br><nobr>same <a href="../files/navigating_topics.htm"><b>1</b></a> <a href="../files/using_usecase_browser.htm"><b>2</b></a> <a href="../files/using_registry.htm"><b>3</b></a> <a href="../files/using_catalog_generator.htm"><b>4</b></a> <a href="../files/saving_a_study.htm"><b>5</b></a> </nobr><br><nobr>save <a href="../files/readme.html"><b>1</b></a> <a href="../files/installing_salome_pro.htm"><b>2</b></a> <a href="../files/setting_preferences.htm"><b>3</b></a> <a href="../files/saving_a_study.htm"><b>4</b></a> </nobr><br><nobr>saved <a href="../files/setting_preferences.htm"><b>1</b></a> <a href="../files/saving_a_study.htm"><b>2</b></a> </nobr><br><nobr>saves <a href="../files/setting_preferences.htm"><b>1</b></a> <a href="../files/salome_pro_desktop.htm"><b>2</b></a> </nobr><br><nobr>saving <a href="../files/introduction_to_iapp.htm"><b>1</b></a> <a href="../files/saving_a_study.htm"><b>2</b></a> <a href="../files/salome_pro_desktop.htm"><b>3</b></a> </nobr><br><nobr>say <a href="../files/readme.html"><b>1</b></a> <a href="../files/installing_salome_pro.htm"><b>2</b></a> </nobr><br><a name="bms_SC"></a><a name="subkey_SC"></a><a href="../files/about_salome_pro_architecture.htm"><b>scale</b></a> <br><a href="../files/readme.html"><b>scheme</b></a> <br><a href="../files/about_salome_pro_architecture.htm"><b>schemes</b></a> <br><a href="../files/about_salome_pro_architecture.htm"><b>scientific</b></a> <br><nobr>script <a href="../files/readme.html"><b>1</b></a> <a href="../files/installing_salome_pro.htm"><b>2</b></a> <a href="../files/using_catalog_generator.htm"><b>3</b></a> <a href="../files/running_salome_pro.htm"><b>4</b></a> </nobr><br><nobr>scripts <a href="../files/readme.html"><b>1</b></a> <a href="../files/installing_salome_pro.htm"><b>2</b></a> <a href="../files/about_salome_pro_architecture.htm"><b>3</b></a> <a href="../files/using_catalog_generator.htm"><b>4</b></a> </nobr><br><a href="../files/getting_properties_of_the_study.htm"><b>scroll</b></a> <br><nobr><a name="bms_SE"></a><a name="subkey_SE"></a>search <a href="../files/readme.html"><b>1</b></a> <a href="../files/opening_studies.htm"><b>2</b></a> <a href="../files/about_salome_pro_help_system.htm"><b>3</b></a> <a href="../files/using_left-hand_tabs.htm"><b>4</b></a> <a href="../files/saving_a_study.htm"><b>5</b></a> </nobr><br><nobr>searching <a href="../files/readme.html"><b>1</b></a> <a href="../files/installing_salome_pro.htm"><b>2</b></a> <a href="../files/using_left-hand_tabs.htm"><b>3</b></a> </nobr><br><nobr>second <a href="../files/readme.html"><b>1</b></a> <a href="../files/installing_salome_pro.htm"><b>2</b></a> <a href="../files/using_usecase_browser.htm"><b>3</b></a> </nobr><br><nobr>seconds <a href="../files/readme.html"><b>1</b></a> <a href="../files/installing_salome_pro.htm"><b>2</b></a> </nobr><br><nobr>section <a href="../files/readme.html"><b>1</b></a> <a href="../files/installing_salome_pro.htm"><b>2</b></a> </nobr><br><nobr>sections <a href="../files/readme.html"><b>1</b></a> <a href="../files/salome_pro_desktop.htm"><b>2</b></a> </nobr><br><nobr>see <a href="../files/readme.html"><b>1</b></a> <a href="../files/opening_studies.htm"><b>2</b></a> <a href="../files/installing_salome_pro.htm"><b>3</b></a> <a href="../files/getting_properties_of_the_study.htm"><b>4</b></a> <a href="../files/using_usecase_browser.htm"><b>5</b></a> <a href="../files/using_object_browser.htm"><b>6</b></a> <a href="../files/using_catalog_generator.htm"><b>7</b></a> <a href="../files/saving_a_study.htm"><b>8</b></a> </nobr><br><nobr>select <a href="../files/readme.html"><b>1</b></a> <a href="../files/opening_studies.htm"><b>2</b></a> <a href="../files/installing_salome_pro.htm"><b>3</b></a> <a href="../files/getting_properties_of_the_study.htm"><b>4</b></a> <a href="../files/displaying_studies.htm"><b>5</b></a> <a href="../files/creating_a_new_study.htm"><b>6</b></a> <a href="../files/using_usecase_browser.htm"><b>7</b></a> <a href="../files/using_left-hand_tabs.htm"><b>8</b></a> <a href="../files/setting_preferences.htm"><b>9</b></a> <a href="../files/saving_a_study.htm"><b>10</b></a> </nobr><br><a href="../files/salome_pro_desktop.htm"><b>selectall</b></a> <br><nobr>selected <a href="../files/readme.html"><b>1</b></a> <a href="../files/installing_salome_pro.htm"><b>2</b></a> <a href="../files/using_usecase_browser.htm"><b>3</b></a> </nobr><br><nobr>sends <a href="../files/readme.html"><b>1</b></a> <a href="../files/installing_salome_pro.htm"><b>2</b></a> </nobr><br><nobr>sensitive <a href="../files/displaying_hiding_toolbars.htm"><b>1</b></a> <a href="../files/using_usecase_browser.htm"><b>2</b></a> <a href="../files/using_object_browser.htm"><b>3</b></a> <a href="../files/salome_pro_desktop.htm"><b>4</b></a> </nobr><br><a href="../files/readme.html"><b>separated</b></a> <br><a href="../files/about_salome_pro_architecture.htm"><b>server</b></a> <br><nobr>servers <a href="../files/about_salome_pro_architecture.htm"><b>1</b></a> <a href="../files/running_salome_pro.htm"><b>2</b></a> </nobr><br><a href="../files/using_catalog_generator.htm"><b>serves</b></a> <br><a href="../files/readme.html"><b>service</b></a> <br><nobr>services <a href="../files/readme.html"><b>1</b></a> <a href="../files/installing_salome_pro.htm"><b>2</b></a> <a href="../files/about_salome_pro_architecture.htm"><b>3</b></a> <a href="../files/using_catalog_generator.htm"><b>4</b></a> </nobr><br><nobr>session <a href="../files/opening_studies.htm"><b>1</b></a> <a href="../files/using_usecase_browser.htm"><b>2</b></a> <a href="../files/using_registry.htm"><b>3</b></a> <a href="../files/using_object_browser.htm"><b>4</b></a> <a href="../files/setting_preferences.htm"><b>5</b></a> <a href="../files/saving_a_study.htm"><b>6</b></a> </nobr><br><nobr>set <a href="../files/readme.html"><b>1</b></a> <a href="../files/installing_salome_pro.htm"><b>2</b></a> <a href="../files/about_salome_pro_help_system.htm"><b>3</b></a> <a href="../files/using_usecase_browser.htm"><b>4</b></a> <a href="../files/using_registry.htm"><b>5</b></a> <a href="../files/setting_preferences.htm"><b>6</b></a> <a href="../files/salome_pro_desktop.htm"><b>7</b></a> <a href="../files/running_salome_pro.htm"><b>8</b></a> </nobr><br><nobr>sets <a href="../files/readme.html"><b>1</b></a> <a href="../files/installing_salome_pro.htm"><b>2</b></a> </nobr><br><nobr>setting <a href="../files/readme.html"><b>1</b></a> <a href="../files/installing_salome_pro.htm"><b>2</b></a> <a href="../files/using_object_browser.htm"><b>3</b></a> <a href="../files/setting_preferences.htm"><b>4</b></a> <a href="../files/saving_a_study.htm"><b>5</b></a> </nobr><br><nobr>settings <a href="../files/readme.html"><b>1</b></a> <a href="../files/installing_salome_pro.htm"><b>2</b></a> </nobr><br><a href="../files/introduction.htm"><b>severe</b></a> <br><br><br></p><p class="ftsbody" align="center"><a href="whlstf7.htm" target="_self" title="previous search group"><b>&gt;&gt;</b></a>\r
+<nobr><a name="bm_S"></a><a name="subkey_S{"></a>s <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/navigating_topics.htm"><b>2</b></a> <a href="../kernel/copyright_notice.htm"><b>3</b></a> <a href="../kernel/about_salome_pro_architecture.htm"><b>4</b></a> <a href="../kernel/salome_pro_desktop.htm"><b>5</b></a> </nobr><br><a name="bms_SA"></a><a name="subkey_SA"></a><a href="../kernel/copyright_notice.htm"><b>saclay</b></a> <br><nobr>salome <a href="../kernel/running_salome_pro.htm"><b>1</b></a> <a href="../kernel/readme.html"><b>2</b></a> <a href="../kernel/opening_studies.htm"><b>3</b></a> <a href="../kernel/navigating_topics.htm"><b>4</b></a> <a href="../kernel/introduction_to_salome_pro.htm"><b>5</b></a> <a href="../kernel/introduction_to_iapp.htm"><b>6</b></a> <a href="../kernel/introduction.htm"><b>7</b></a> <a href="../kernel/getting_started2.htm"><b>8</b></a> <a href="../kernel/editing_studies.htm"><b>9</b></a> <a href="../kernel/displaying_studies.htm"><b>10</b></a> <a href="../kernel/displaying_hiding_toolbars.htm"><b>11</b></a> <a href="../kernel/creating_a_new_study.htm"><b>12</b></a> <a href="../kernel/about_salome_pro_help_system.htm"><b>13</b></a> <a href="../kernel/about_salome_pro_architecture.htm"><b>14</b></a> <a href="../kernel/using_usecase_browser.htm"><b>15</b></a> <a href="../kernel/using_registry.htm"><b>16</b></a> <a href="../kernel/using_object_browser.htm"><b>17</b></a> <a href="../kernel/using_left-hand_tabs.htm"><b>18</b></a> <a href="../kernel/using_catalog_generator.htm"><b>19</b></a> <a href="../kernel/setting_preferences.htm"><b>20</b></a> <a href="../kernel/saving_a_study.htm"><b>21</b></a> <a href="../kernel/salome_pro_desktop.htm"><b>22</b></a> </nobr><br><a href="../kernel/using_catalog_generator.htm"><b>salome_modulecatalog_server</b></a> <br><nobr>same <a href="../kernel/navigating_topics.htm"><b>1</b></a> <a href="../kernel/using_usecase_browser.htm"><b>2</b></a> <a href="../kernel/using_registry.htm"><b>3</b></a> <a href="../kernel/using_catalog_generator.htm"><b>4</b></a> <a href="../kernel/saving_a_study.htm"><b>5</b></a> </nobr><br><nobr>save <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/setting_preferences.htm"><b>2</b></a> <a href="../kernel/saving_a_study.htm"><b>3</b></a> </nobr><br><nobr>saved <a href="../kernel/setting_preferences.htm"><b>1</b></a> <a href="../kernel/saving_a_study.htm"><b>2</b></a> </nobr><br><nobr>saves <a href="../kernel/setting_preferences.htm"><b>1</b></a> <a href="../kernel/salome_pro_desktop.htm"><b>2</b></a> </nobr><br><nobr>saving <a href="../kernel/introduction_to_iapp.htm"><b>1</b></a> <a href="../kernel/saving_a_study.htm"><b>2</b></a> <a href="../kernel/salome_pro_desktop.htm"><b>3</b></a> </nobr><br><a href="../kernel/readme.html"><b>say</b></a> <br><a name="bms_SC"></a><a name="subkey_SC"></a><a href="../kernel/about_salome_pro_architecture.htm"><b>scale</b></a> <br><a href="../kernel/readme.html"><b>scheme</b></a> <br><a href="../kernel/about_salome_pro_architecture.htm"><b>schemes</b></a> <br><a href="../kernel/about_salome_pro_architecture.htm"><b>scientific</b></a> <br><nobr>script <a href="../kernel/running_salome_pro.htm"><b>1</b></a> <a href="../kernel/readme.html"><b>2</b></a> <a href="../kernel/using_catalog_generator.htm"><b>3</b></a> </nobr><br><nobr>scripts <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/about_salome_pro_architecture.htm"><b>2</b></a> <a href="../kernel/using_catalog_generator.htm"><b>3</b></a> </nobr><br><a href="../kernel/getting_properties_of_the_study.htm"><b>scroll</b></a> <br><nobr><a name="bms_SE"></a><a name="subkey_SE"></a>search <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/opening_studies.htm"><b>2</b></a> <a href="../kernel/about_salome_pro_help_system.htm"><b>3</b></a> <a href="../kernel/using_left-hand_tabs.htm"><b>4</b></a> <a href="../kernel/saving_a_study.htm"><b>5</b></a> </nobr><br><nobr>searching <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/using_left-hand_tabs.htm"><b>2</b></a> </nobr><br><nobr>second <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/using_usecase_browser.htm"><b>2</b></a> </nobr><br><a href="../kernel/readme.html"><b>seconds</b></a> <br><a href="../kernel/readme.html"><b>section</b></a> <br><nobr>sections <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/salome_pro_desktop.htm"><b>2</b></a> </nobr><br><a href="../kernel/readme.html"><b>sed</b></a> <br><nobr>see <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/opening_studies.htm"><b>2</b></a> <a href="../kernel/getting_properties_of_the_study.htm"><b>3</b></a> <a href="../kernel/using_usecase_browser.htm"><b>4</b></a> <a href="../kernel/using_object_browser.htm"><b>5</b></a> <a href="../kernel/using_catalog_generator.htm"><b>6</b></a> <a href="../kernel/saving_a_study.htm"><b>7</b></a> </nobr><br><nobr>select <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/opening_studies.htm"><b>2</b></a> <a href="../kernel/getting_properties_of_the_study.htm"><b>3</b></a> <a href="../kernel/displaying_studies.htm"><b>4</b></a> <a href="../kernel/creating_a_new_study.htm"><b>5</b></a> <a href="../kernel/using_usecase_browser.htm"><b>6</b></a> <a href="../kernel/using_left-hand_tabs.htm"><b>7</b></a> <a href="../kernel/setting_preferences.htm"><b>8</b></a> <a href="../kernel/saving_a_study.htm"><b>9</b></a> </nobr><br><a href="../kernel/salome_pro_desktop.htm"><b>selectall</b></a> <br><nobr>selected <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/using_usecase_browser.htm"><b>2</b></a> </nobr><br><a href="../kernel/readme.html"><b>sends</b></a> <br><nobr>sensitive <a href="../kernel/displaying_hiding_toolbars.htm"><b>1</b></a> <a href="../kernel/using_usecase_browser.htm"><b>2</b></a> <a href="../kernel/using_object_browser.htm"><b>3</b></a> <a href="../kernel/salome_pro_desktop.htm"><b>4</b></a> </nobr><br><a href="../kernel/readme.html"><b>separated</b></a> <br><a href="../kernel/about_salome_pro_architecture.htm"><b>server</b></a> <br><nobr>servers <a href="../kernel/running_salome_pro.htm"><b>1</b></a> <a href="../kernel/about_salome_pro_architecture.htm"><b>2</b></a> </nobr><br><a href="../kernel/using_catalog_generator.htm"><b>serves</b></a> <br><a href="../kernel/readme.html"><b>service</b></a> <br><nobr>services <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/about_salome_pro_architecture.htm"><b>2</b></a> <a href="../kernel/using_catalog_generator.htm"><b>3</b></a> </nobr><br><nobr>session <a href="../kernel/opening_studies.htm"><b>1</b></a> <a href="../kernel/using_usecase_browser.htm"><b>2</b></a> <a href="../kernel/using_registry.htm"><b>3</b></a> <a href="../kernel/using_object_browser.htm"><b>4</b></a> <a href="../kernel/setting_preferences.htm"><b>5</b></a> <a href="../kernel/saving_a_study.htm"><b>6</b></a> </nobr><br><nobr>set <a href="../kernel/running_salome_pro.htm"><b>1</b></a> <a href="../kernel/readme.html"><b>2</b></a> <a href="../kernel/about_salome_pro_help_system.htm"><b>3</b></a> <a href="../kernel/using_usecase_browser.htm"><b>4</b></a> <a href="../kernel/using_registry.htm"><b>5</b></a> <a href="../kernel/setting_preferences.htm"><b>6</b></a> <a href="../kernel/salome_pro_desktop.htm"><b>7</b></a> </nobr><br><a href="../kernel/readme.html"><b>sets</b></a> <br><nobr>setting <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/getting_properties_of_the_study.htm"><b>2</b></a> <a href="../kernel/using_object_browser.htm"><b>3</b></a> <a href="../kernel/setting_preferences.htm"><b>4</b></a> <a href="../kernel/saving_a_study.htm"><b>5</b></a> </nobr><br><a href="../kernel/readme.html"><b>settings</b></a> <br><a href="../kernel/introduction.htm"><b>severe</b></a> <br><a name="bms_SH"></a><a name="subkey_SH"></a><a href="../kernel/readme.html"><b>sh</b></a> <br><a href="../kernel/introduction.htm"><b>shares</b></a> <br><nobr>shell <a href="../kernel/running_salome_pro.htm"><b>1</b></a> <a href="../kernel/readme.html"><b>2</b></a> <a href="../kernel/introduction_to_iapp.htm"><b>3</b></a> </nobr><br><nobr>short <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/using_left-hand_tabs.htm"><b>2</b></a> </nobr><br><nobr>should <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/getting_started2.htm"><b>2</b></a> <a href="../kernel/copyright_notice.htm"><b>3</b></a> <a href="../kernel/using_catalog_generator.htm"><b>4</b></a> <a href="../kernel/saving_a_study.htm"><b>5</b></a> </nobr><br><a href="../kernel/setting_preferences.htm"><b>show</b></a> <br><a href="../kernel/getting_properties_of_the_study.htm"><b>shown</b></a> <br><nobr>shows <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/using_object_browser.htm"><b>2</b></a> <a href="../kernel/salome_pro_desktop.htm"><b>3</b></a> </nobr><br><a name="bms_SI"></a><a name="subkey_SI"></a><a href="../kernel/readme.html"><b>side</b></a> <br><a href="../kernel/readme.html"><b>signal</b></a> <br><a href="../kernel/readme.html"><b>signature</b></a> <br><a href="../kernel/readme.html"><b>sigterm</b></a> <br><a href="../kernel/about_salome_pro_architecture.htm"><b>simple</b></a> <br><a href="../kernel/readme.html"><b>simplify</b></a> <br><a href="../kernel/about_salome_pro_architecture.htm"><b>simulate</b></a> <br><a href="../kernel/introduction.htm"><b>simulation</b></a> <br><nobr>simulations <a href="../kernel/introduction_to_salome_pro.htm"><b>1</b></a> <a href="../kernel/introduction.htm"><b>2</b></a> </nobr><br><a href="../kernel/getting_started2.htm"><b>simultaneously</b></a> <br><a href="../kernel/readme.html"><b>single</b></a> <br><a href="../kernel/readme.html"><b>sip</b></a> <br><a href="../kernel/readme.html"><b>sipdir</b></a> <br><a href="../kernel/readme.html"><b>site</b></a> <br><a href="../kernel/about_salome_pro_architecture.htm"><b>situations</b></a> <br><nobr>size <a href="../kernel/setting_preferences.htm"><b>1</b></a> <a href="../kernel/salome_pro_desktop.htm"><b>2</b></a> </nobr><br><br><br></p><p class="ftsbody" align="center"><a href="whlstf7.htm" target="_self" title="previous search group"><b>&gt;&gt;</b></a>\r
 \r
 </body>\r
 \r
index 93508107b5c6175a3d832738bb7acde75f47b713..339a6b5a3142cdd6eb7f01993ebab56cf1b3ca20 100755 (executable)
@@ -1,9 +1,9 @@
 <html>\r
 <head>\r
 <title>Search Words List</title>\r
-<meta http-equiv="content-type" content="text/html; charset=iso-8859-1">\r
+\r
 <meta name="generator" content="RoboHelp by eHelp Corporation   www.ehelp.com">\r
-<meta name "description" content="WebHelp 2002">\r
+<meta name="description" content="WebHelp 5.50">\r
 <base target="bsscright">\r
 <style>\r
 <!--\r
@@ -30,12 +30,14 @@ A:hover {color:Navy; } A:hover {font-family:Tahoma; } A:hover {font-size:8pt; }
 -->\r
 </style>\r
 </head>\r
-<body marginheight="0"  marginwidth="0">\r
+<body marginheight="0"  marginwidth="0" bgproperties="fixed">\r
 <p class="ftsbody" align="center"><a href="whlstf6.htm" target="_self" title="previous search group"><b>&lt;&lt;</b></a><br><br></p>\r
-<p class="ftsbody">\r
-<nobr><a name="bms_SH"></a><a name="subkey_SH"></a>sh <a href="../files/readme.html"><b>1</b></a> <a href="../files/installing_salome_pro.htm"><b>2</b></a> </nobr><br><a href="../files/introduction.htm"><b>shares</b></a> <br><nobr>shell <a href="../files/readme.html"><b>1</b></a> <a href="../files/introduction_to_iapp.htm"><b>2</b></a> <a href="../files/installing_salome_pro.htm"><b>3</b></a> <a href="../files/running_salome_pro.htm"><b>4</b></a> </nobr><br><a href="../files/readme.html"><b>shin</b></a> <br><a href="../files/using_left-hand_tabs.htm"><b>short</b></a> <br><nobr>should <a href="../files/readme.html"><b>1</b></a> <a href="../files/installing_salome_pro.htm"><b>2</b></a> <a href="../files/getting_started2.htm"><b>3</b></a> <a href="../files/copyright_notice.htm"><b>4</b></a> <a href="../files/using_catalog_generator.htm"><b>5</b></a> <a href="../files/saving_a_study.htm"><b>6</b></a> </nobr><br><a href="../files/setting_preferences.htm"><b>show</b></a> <br><a href="../files/getting_properties_of_the_study.htm"><b>shown</b></a> <br><nobr>shows <a href="../files/readme.html"><b>1</b></a> <a href="../files/installing_salome_pro.htm"><b>2</b></a> <a href="../files/using_object_browser.htm"><b>3</b></a> <a href="../files/salome_pro_desktop.htm"><b>4</b></a> </nobr><br><a name="bms_SI"></a><a name="subkey_SI"></a><a href="../files/readme.html"><b>side</b></a> <br><nobr>signal <a href="../files/readme.html"><b>1</b></a> <a href="../files/installing_salome_pro.htm"><b>2</b></a> </nobr><br><a href="../files/readme.html"><b>signature</b></a> <br><nobr>sigterm <a href="../files/readme.html"><b>1</b></a> <a href="../files/installing_salome_pro.htm"><b>2</b></a> </nobr><br><a href="../files/about_salome_pro_architecture.htm"><b>simple</b></a> <br><a href="../files/readme.html"><b>simplify</b></a> <br><a href="../files/about_salome_pro_architecture.htm"><b>simulate</b></a> <br><a href="../files/introduction.htm"><b>simulation</b></a> <br><nobr>simulations <a href="../files/introduction_to_salome_pro.htm"><b>1</b></a> <a href="../files/introduction.htm"><b>2</b></a> </nobr><br><a href="../files/getting_started2.htm"><b>simultaneously</b></a> <br><a href="../files/readme.html"><b>single</b></a> <br><nobr>sip <a href="../files/readme.html"><b>1</b></a> <a href="../files/installing_salome_pro.htm"><b>2</b></a> </nobr><br><nobr>sipdir <a href="../files/readme.html"><b>1</b></a> <a href="../files/installing_salome_pro.htm"><b>2</b></a> </nobr><br><nobr>site <a href="../files/readme.html"><b>1</b></a> <a href="../files/installing_salome_pro.htm"><b>2</b></a> </nobr><br><a href="../files/about_salome_pro_architecture.htm"><b>situations</b></a> <br><nobr>size <a href="../files/setting_preferences.htm"><b>1</b></a> <a href="../files/salome_pro_desktop.htm"><b>2</b></a> </nobr><br><nobr><a name="bms_SK"></a><a name="subkey_SK"></a>skip <a href="../files/readme.html"><b>1</b></a> <a href="../files/installing_salome_pro.htm"><b>2</b></a> </nobr><br><nobr>skipped <a href="../files/readme.html"><b>1</b></a> <a href="../files/installing_salome_pro.htm"><b>2</b></a> </nobr><br><a name="bms_SM"></a><a name="subkey_SM"></a><a href="../files/saving_a_study.htm"><b>small</b></a> <br><nobr>smesh <a href="../files/introduction_to_salome_pro.htm"><b>1</b></a> <a href="../files/displaying_hiding_toolbars.htm"><b>2</b></a> <a href="../files/about_salome_pro_architecture.htm"><b>3</b></a> </nobr><br><nobr><a name="bms_SO"></a><a name="subkey_SO"></a>so <a href="../files/readme.html"><b>1</b></a> <a href="../files/installing_salome_pro.htm"><b>2</b></a> <a href="../files/about_salome_pro_architecture.htm"><b>3</b></a> <a href="../files/using_usecase_browser.htm"><b>4</b></a> <a href="../files/using_object_browser.htm"><b>5</b></a> <a href="../files/using_left-hand_tabs.htm"><b>6</b></a> <a href="../files/setting_preferences.htm"><b>7</b></a> </nobr><br><nobr>software <a href="../files/introduction_to_salome_pro.htm"><b>1</b></a> <a href="../files/introduction.htm"><b>2</b></a> <a href="../files/installing_salome_pro.htm"><b>3</b></a> <a href="../files/copyright_notice.htm"><b>4</b></a> <a href="../files/about_salome_pro_architecture.htm"><b>5</b></a> </nobr><br><a href="../files/introduction.htm"><b>solution</b></a> <br><a href="../files/introduction.htm"><b>solutions</b></a> <br><a href="../files/introduction_to_salome_pro.htm"><b>solvers</b></a> <br><a href="../files/installing_salome_pro.htm"><b>somewhere</b></a> <br><nobr>sort <a href="../files/using_object_browser.htm"><b>1</b></a> <a href="../files/setting_preferences.htm"><b>2</b></a> </nobr><br><a href="../files/using_object_browser.htm"><b>sorting</b></a> <br><nobr>source <a href="../files/readme.html"><b>1</b></a> <a href="../files/introduction_to_salome_pro.htm"><b>2</b></a> <a href="../files/running_salome_pro.htm"><b>3</b></a> </nobr><br><nobr>sources <a href="../files/readme.html"><b>1</b></a> <a href="../files/installing_salome_pro.htm"><b>2</b></a> </nobr><br><nobr><a name="bms_SP"></a><a name="subkey_SP"></a>space <a href="../files/readme.html"><b>1</b></a> <a href="../files/installing_salome_pro.htm"><b>2</b></a> <a href="../files/salome_pro_desktop.htm"><b>3</b></a> </nobr><br><nobr>spaces <a href="../files/readme.html"><b>1</b></a> <a href="../files/installing_salome_pro.htm"><b>2</b></a> </nobr><br><nobr>special <a href="../files/readme.html"><b>1</b></a> <a href="../files/opening_studies.htm"><b>2</b></a> <a href="../files/installing_salome_pro.htm"><b>3</b></a> <a href="../files/saving_a_study.htm"><b>4</b></a> <a href="../files/running_salome_pro.htm"><b>5</b></a> </nobr><br><nobr>specific <a href="../files/introduction_to_salome_pro.htm"><b>1</b></a> <a href="../files/introduction.htm"><b>2</b></a> <a href="../files/displaying_hiding_toolbars.htm"><b>3</b></a> <a href="../files/about_salome_pro_architecture.htm"><b>4</b></a> <a href="../files/using_left-hand_tabs.htm"><b>5</b></a> </nobr><br><a href="../files/introduction.htm"><b>specifically</b></a> <br><a href="../files/introduction_to_salome_pro.htm"><b>specification</b></a> <br><a href="../files/about_salome_pro_architecture.htm"><b>specifies</b></a> <br><nobr>specify <a href="../files/using_catalog_generator.htm"><b>1</b></a> <a href="../files/saving_a_study.htm"><b>2</b></a> </nobr><br><a href="../files/introduction.htm"><b>spent</b></a> <br><nobr><a name="bms_SR"></a><a name="subkey_SR"></a>src <a href="../files/readme.html"><b>1</b></a> <a href="../files/installing_salome_pro.htm"><b>2</b></a> </nobr><br><nobr><a name="bms_ST"></a><a name="subkey_ST"></a>standard <a href="../files/readme.html"><b>1</b></a> <a href="../files/opening_studies.htm"><b>2</b></a> <a href="../files/introduction_to_iapp.htm"><b>3</b></a> <a href="../files/installing_salome_pro.htm"><b>4</b></a> <a href="../files/creating_a_new_study.htm"><b>5</b></a> <a href="../files/using_catalog_generator.htm"><b>6</b></a> <a href="../files/saving_a_study.htm"><b>7</b></a> <a href="../files/salome_pro_desktop.htm"><b>8</b></a> </nobr><br><nobr>start <a href="../files/readme.html"><b>1</b></a> <a href="../files/installing_salome_pro.htm"><b>2</b></a> <a href="../files/getting_started2.htm"><b>3</b></a> </nobr><br><nobr>started <a href="../files/readme.html"><b>1</b></a> <a href="../files/installing_salome_pro.htm"><b>2</b></a> <a href="../files/getting_started2.htm"><b>3</b></a> <a href="../files/using_registry.htm"><b>4</b></a> <a href="../files/using_catalog_generator.htm"><b>5</b></a> </nobr><br><nobr>starting <a href="../files/readme.html"><b>1</b></a> <a href="../files/using_registry.htm"><b>2</b></a> </nobr><br><nobr>state <a href="../files/readme.html"><b>1</b></a> <a href="../files/installing_salome_pro.htm"><b>2</b></a> </nobr><br><a href="../files/installing_salome_pro.htm"><b>states</b></a> <br><a href="../files/about_salome_pro_architecture.htm"><b>stations</b></a> <br><nobr>status <a href="../files/readme.html"><b>1</b></a> <a href="../files/installing_salome_pro.htm"><b>2</b></a> </nobr><br><nobr>steps <a href="../files/readme.html"><b>1</b></a> <a href="../files/installing_salome_pro.htm"><b>2</b></a> </nobr><br><nobr>still <a href="../files/readme.html"><b>1</b></a> <a href="../files/installing_salome_pro.htm"><b>2</b></a> </nobr><br><a href="../files/copyright_notice.htm"><b>storage</b></a> <br><nobr>store <a href="../files/readme.html"><b>1</b></a> <a href="../files/using_catalog_generator.htm"><b>2</b></a> <a href="../files/saving_a_study.htm"><b>3</b></a> </nobr><br><nobr>stored <a href="../files/opening_studies.htm"><b>1</b></a> <a href="../files/about_salome_pro_architecture.htm"><b>2</b></a> <a href="../files/using_catalog_generator.htm"><b>3</b></a> <a href="../files/saving_a_study.htm"><b>4</b></a> </nobr><br><nobr>storing <a href="../files/installing_salome_pro.htm"><b>1</b></a> <a href="../files/saving_a_study.htm"><b>2</b></a> </nobr><br><a href="../files/installing_salome_pro.htm"><b>strictly</b></a> <br><a href="../files/readme.html"><b>string</b></a> <br><nobr>strongly <a href="../files/readme.html"><b>1</b></a> <a href="../files/installing_salome_pro.htm"><b>2</b></a> </nobr><br><a href="../files/introduction.htm"><b>structural</b></a> <br><nobr>structure <a href="../files/opening_studies.htm"><b>1</b></a> <a href="../files/using_usecase_browser.htm"><b>2</b></a> <a href="../files/using_object_browser.htm"><b>3</b></a> </nobr><br><a href="../files/introduction.htm"><b>structures</b></a> <br><nobr>studies <a href="../files/opening_studies.htm"><b>1</b></a> <a href="../files/introduction_to_iapp.htm"><b>2</b></a> <a href="../files/getting_started2.htm"><b>3</b></a> <a href="../files/editing_studies.htm"><b>4</b></a> <a href="../files/displaying_studies.htm"><b>5</b></a> <a href="../files/creating_a_new_study.htm"><b>6</b></a> <a href="../files/saving_a_study.htm"><b>7</b></a> <a href="../files/salome_pro_desktop.htm"><b>8</b></a> </nobr><br><nobr>study <a href="../files/opening_studies.htm"><b>1</b></a> <a href="../files/introduction_to_salome_pro.htm"><b>2</b></a> <a href="../files/introduction_to_iapp.htm"><b>3</b></a> <a href="../files/getting_started2.htm"><b>4</b></a> <a href="../files/getting_properties_of_the_study.htm"><b>5</b></a> <a href="../files/editing_studies.htm"><b>6</b></a> <a href="../files/displaying_studies.htm"><b>7</b></a> <a href="../files/creating_a_new_study.htm"><b>8</b></a> <a href="../files/about_salome_pro_architecture.htm"><b>9</b></a> <a href="../files/using_usecase_browser.htm"><b>10</b></a> <a href="../files/using_registry.htm"><b>11</b></a> <a href="../files/using_object_browser.htm"><b>12</b></a> <a href="../files/using_catalog_generator.htm"><b>13</b></a> <a href="../files/setting_preferences.htm"><b>14</b></a> <a href="../files/saving_a_study.htm"><b>15</b></a> <a href="../files/salome_pro_desktop.htm"><b>16</b></a> </nobr><br><a href="../files/creating_a_new_study.htm"><b>study1</b></a> <br><nobr><a name="bms_SU"></a><a name="subkey_SU"></a>sub <a href="../files/readme.html"><b>1</b></a> <a href="../files/using_left-hand_tabs.htm"><b>2</b></a> </nobr><br><a href="../files/copyright_notice.htm"><b>subject</b></a> <br><nobr>submenu <a href="../files/displaying_hiding_toolbars.htm"><b>1</b></a> <a href="../files/creating_a_new_study.htm"><b>2</b></a> <a href="../files/setting_preferences.htm"><b>3</b></a> </nobr><br><nobr>successfully <a href="../files/readme.html"><b>1</b></a> <a href="../files/installing_salome_pro.htm"><b>2</b></a> </nobr><br><a href="../files/installing_salome_pro.htm"><b>sufficient</b></a> <br><nobr>summarizes <a href="../files/readme.html"><b>1</b></a> <a href="../files/installing_salome_pro.htm"><b>2</b></a> </nobr><br><a href="../files/installing_salome_pro.htm"><b>superstructure</b></a> <br><a href="../files/running_salome_pro.htm"><b>superv</b></a> <br><nobr>supervision <a href="../files/introduction_to_salome_pro.htm"><b>1</b></a> <a href="../files/introduction_to_iapp.htm"><b>2</b></a> <a href="../files/using_catalog_generator.htm"><b>3</b></a> <a href="../files/running_salome_pro.htm"><b>4</b></a> </nobr><br><nobr>supplementary <a href="../files/using_registry.htm"><b>1</b></a> <a href="../files/using_object_browser.htm"><b>2</b></a> </nobr><br><nobr>supplied <a href="../files/readme.html"><b>1</b></a> <a href="../files/installing_salome_pro.htm"><b>2</b></a> </nobr><br><nobr>support <a href="../files/readme.html"><b>1</b></a> <a href="../files/installing_salome_pro.htm"><b>2</b></a> <a href="../files/using_catalog_generator.htm"><b>3</b></a> </nobr><br><a href="../files/readme.html"><b>supported</b></a> <br><a href="../files/readme.html"><b>supported_installation_modes</b></a> <br><a href="../files/readme.html"><b>supposed</b></a> <br><nobr>sure <a href="../files/readme.html"><b>1</b></a> <a href="../files/installing_salome_pro.htm"><b>2</b></a> </nobr><br><nobr><a name="bms_SW"></a><a name="subkey_SW"></a>swig <a href="../files/readme.html"><b>1</b></a> <a href="../files/installing_salome_pro.htm"><b>2</b></a> </nobr><br><nobr>switch <a href="../files/installing_salome_pro.htm"><b>1</b></a> <a href="../files/displaying_studies.htm"><b>2</b></a> </nobr><br><nobr>switched <a href="../files/readme.html"><b>1</b></a> <a href="../files/installing_salome_pro.htm"><b>2</b></a> </nobr><br><a href="../files/introduction_to_iapp.htm"><b>switching</b></a> <br><a name="bms_SY"></a><a name="subkey_SY"></a><a href="../files/installing_salome_pro.htm"><b>symbolic</b></a> <br><nobr>system <a href="../files/readme.html"><b>1</b></a> <a href="../files/navigating_topics.htm"><b>2</b></a> <a href="../files/installing_salome_pro.htm"><b>3</b></a> <a href="../files/copyright_notice.htm"><b>4</b></a> <a href="../files/about_salome_pro_help_system.htm"><b>5</b></a> <a href="../files/about_salome_pro_architecture.htm"><b>6</b></a> <a href="../files/using_left-hand_tabs.htm"><b>7</b></a> </nobr><br><a href="../files/about_salome_pro_architecture.htm"><b>systems</b></a> <br>\r
+<p class="ftsbody" >\r
+<a name="bms_SK"></a><a name="subkey_SK"></a><a href="../kernel/readme.html"><b>skip</b></a> <br><a href="../kernel/readme.html"><b>skipped</b></a> <br><a name="bms_SM"></a><a name="subkey_SM"></a><a href="../kernel/saving_a_study.htm"><b>small</b></a> <br><nobr>smesh <a href="../kernel/introduction_to_salome_pro.htm"><b>1</b></a> <a href="../kernel/displaying_hiding_toolbars.htm"><b>2</b></a> <a href="../kernel/about_salome_pro_architecture.htm"><b>3</b></a> </nobr><br><nobr><a name="bms_SO"></a><a name="subkey_SO"></a>so <a href="../kernel/running_salome_pro.htm"><b>1</b></a> <a href="../kernel/readme.html"><b>2</b></a> <a href="../kernel/about_salome_pro_architecture.htm"><b>3</b></a> <a href="../kernel/using_usecase_browser.htm"><b>4</b></a> <a href="../kernel/using_object_browser.htm"><b>5</b></a> <a href="../kernel/using_left-hand_tabs.htm"><b>6</b></a> <a href="../kernel/setting_preferences.htm"><b>7</b></a> </nobr><br><nobr>software <a href="../kernel/introduction_to_salome_pro.htm"><b>1</b></a> <a href="../kernel/introduction.htm"><b>2</b></a> <a href="../kernel/copyright_notice.htm"><b>3</b></a> <a href="../kernel/about_salome_pro_architecture.htm"><b>4</b></a> </nobr><br><a href="../kernel/introduction.htm"><b>solution</b></a> <br><a href="../kernel/introduction.htm"><b>solutions</b></a> <br><a href="../kernel/introduction_to_salome_pro.htm"><b>solvers</b></a> <br><nobr>sort <a href="../kernel/using_object_browser.htm"><b>1</b></a> <a href="../kernel/setting_preferences.htm"><b>2</b></a> </nobr><br><a href="../kernel/readme.html"><b>sort_path</b></a> <br><a href="../kernel/using_object_browser.htm"><b>sorting</b></a> <br><nobr>source <a href="../kernel/running_salome_pro.htm"><b>1</b></a> <a href="../kernel/readme.html"><b>2</b></a> <a href="../kernel/introduction_to_salome_pro.htm"><b>3</b></a> </nobr><br><a href="../kernel/readme.html"><b>sources</b></a> <br><nobr><a name="bms_SP"></a><a name="subkey_SP"></a>space <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/salome_pro_desktop.htm"><b>2</b></a> </nobr><br><a href="../kernel/readme.html"><b>spaces</b></a> <br><nobr>special <a href="../kernel/running_salome_pro.htm"><b>1</b></a> <a href="../kernel/readme.html"><b>2</b></a> <a href="../kernel/opening_studies.htm"><b>3</b></a> <a href="../kernel/saving_a_study.htm"><b>4</b></a> </nobr><br><nobr>specific <a href="../kernel/running_salome_pro.htm"><b>1</b></a> <a href="../kernel/introduction_to_salome_pro.htm"><b>2</b></a> <a href="../kernel/introduction.htm"><b>3</b></a> <a href="../kernel/displaying_hiding_toolbars.htm"><b>4</b></a> <a href="../kernel/about_salome_pro_architecture.htm"><b>5</b></a> <a href="../kernel/using_left-hand_tabs.htm"><b>6</b></a> </nobr><br><a href="../kernel/introduction.htm"><b>specifically</b></a> <br><a href="../kernel/introduction_to_salome_pro.htm"><b>specification</b></a> <br><a href="../kernel/about_salome_pro_architecture.htm"><b>specifies</b></a> <br><nobr>specify <a href="../kernel/using_catalog_generator.htm"><b>1</b></a> <a href="../kernel/saving_a_study.htm"><b>2</b></a> </nobr><br><a href="../kernel/introduction.htm"><b>spent</b></a> <br><a name="bms_SR"></a><a name="subkey_SR"></a><a href="../kernel/readme.html"><b>src</b></a> <br><nobr><a name="bms_ST"></a><a name="subkey_ST"></a>standard <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/opening_studies.htm"><b>2</b></a> <a href="../kernel/introduction_to_iapp.htm"><b>3</b></a> <a href="../kernel/creating_a_new_study.htm"><b>4</b></a> <a href="../kernel/using_catalog_generator.htm"><b>5</b></a> <a href="../kernel/saving_a_study.htm"><b>6</b></a> <a href="../kernel/salome_pro_desktop.htm"><b>7</b></a> </nobr><br><nobr>start <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/getting_started2.htm"><b>2</b></a> </nobr><br><nobr>started <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/getting_started2.htm"><b>2</b></a> <a href="../kernel/using_registry.htm"><b>3</b></a> <a href="../kernel/using_catalog_generator.htm"><b>4</b></a> </nobr><br><nobr>starting <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/using_registry.htm"><b>2</b></a> </nobr><br><a href="../kernel/readme.html"><b>state</b></a> <br><a href="../kernel/about_salome_pro_architecture.htm"><b>stations</b></a> <br><a href="../kernel/readme.html"><b>status</b></a> <br><a href="../kernel/readme.html"><b>steps</b></a> <br><a href="../kernel/readme.html"><b>still</b></a> <br><a href="../kernel/copyright_notice.htm"><b>storage</b></a> <br><nobr>store <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/using_catalog_generator.htm"><b>2</b></a> <a href="../kernel/saving_a_study.htm"><b>3</b></a> </nobr><br><nobr>stored <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/opening_studies.htm"><b>2</b></a> <a href="../kernel/about_salome_pro_architecture.htm"><b>3</b></a> <a href="../kernel/using_catalog_generator.htm"><b>4</b></a> <a href="../kernel/saving_a_study.htm"><b>5</b></a> </nobr><br><a href="../kernel/saving_a_study.htm"><b>storing</b></a> <br><a href="../kernel/readme.html"><b>string</b></a> <br><a href="../kernel/readme.html"><b>strongly</b></a> <br><a href="../kernel/introduction.htm"><b>structural</b></a> <br><nobr>structure <a href="../kernel/opening_studies.htm"><b>1</b></a> <a href="../kernel/using_usecase_browser.htm"><b>2</b></a> <a href="../kernel/using_object_browser.htm"><b>3</b></a> </nobr><br><a href="../kernel/introduction.htm"><b>structures</b></a> <br><nobr>studies <a href="../kernel/opening_studies.htm"><b>1</b></a> <a href="../kernel/introduction_to_iapp.htm"><b>2</b></a> <a href="../kernel/getting_started2.htm"><b>3</b></a> <a href="../kernel/editing_studies.htm"><b>4</b></a> <a href="../kernel/displaying_studies.htm"><b>5</b></a> <a href="../kernel/creating_a_new_study.htm"><b>6</b></a> <a href="../kernel/saving_a_study.htm"><b>7</b></a> <a href="../kernel/salome_pro_desktop.htm"><b>8</b></a> </nobr><br><nobr>study <a href="../kernel/opening_studies.htm"><b>1</b></a> <a href="../kernel/introduction_to_salome_pro.htm"><b>2</b></a> <a href="../kernel/introduction_to_iapp.htm"><b>3</b></a> <a href="../kernel/getting_started2.htm"><b>4</b></a> <a href="../kernel/getting_properties_of_the_study.htm"><b>5</b></a> <a href="../kernel/editing_studies.htm"><b>6</b></a> <a href="../kernel/displaying_studies.htm"><b>7</b></a> <a href="../kernel/creating_a_new_study.htm"><b>8</b></a> <a href="../kernel/about_salome_pro_architecture.htm"><b>9</b></a> <a href="../kernel/using_usecase_browser.htm"><b>10</b></a> <a href="../kernel/using_registry.htm"><b>11</b></a> <a href="../kernel/using_object_browser.htm"><b>12</b></a> <a href="../kernel/using_catalog_generator.htm"><b>13</b></a> <a href="../kernel/setting_preferences.htm"><b>14</b></a> <a href="../kernel/saving_a_study.htm"><b>15</b></a> <a href="../kernel/salome_pro_desktop.htm"><b>16</b></a> </nobr><br><a href="../kernel/creating_a_new_study.htm"><b>study1</b></a> <br><nobr><a name="bms_SU"></a><a name="subkey_SU"></a>sub <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/using_left-hand_tabs.htm"><b>2</b></a> </nobr><br><a href="../kernel/copyright_notice.htm"><b>subject</b></a> <br><nobr>submenu <a href="../kernel/displaying_hiding_toolbars.htm"><b>1</b></a> <a href="../kernel/creating_a_new_study.htm"><b>2</b></a> <a href="../kernel/setting_preferences.htm"><b>3</b></a> </nobr><br><a href="../kernel/readme.html"><b>successfully</b></a> <br><a href="../kernel/readme.html"><b>summarizes</b></a> <br><a href="../kernel/running_salome_pro.htm"><b>superv</b></a> <br><nobr>supervision <a href="../kernel/running_salome_pro.htm"><b>1</b></a> <a href="../kernel/introduction_to_salome_pro.htm"><b>2</b></a> <a href="../kernel/introduction_to_iapp.htm"><b>3</b></a> <a href="../kernel/using_catalog_generator.htm"><b>4</b></a> </nobr><br><nobr>supplementary <a href="../kernel/using_registry.htm"><b>1</b></a> <a href="../kernel/using_object_browser.htm"><b>2</b></a> </nobr><br><a href="../kernel/readme.html"><b>supplied</b></a> <br><nobr>support <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/using_catalog_generator.htm"><b>2</b></a> </nobr><br><a href="../kernel/readme.html"><b>supported</b></a> <br><a href="../kernel/readme.html"><b>supported_installation_modes</b></a> <br><a href="../kernel/readme.html"><b>supposed</b></a> <br><a href="../kernel/readme.html"><b>sure</b></a> <br><a name="bms_SW"></a><a name="subkey_SW"></a><a href="../kernel/readme.html"><b>swig</b></a> <br><a href="../kernel/displaying_studies.htm"><b>switch</b></a> <br><a href="../kernel/readme.html"><b>switched</b></a> <br><a href="../kernel/introduction_to_iapp.htm"><b>switching</b></a> <br><nobr><a name="bms_SY"></a><a name="subkey_SY"></a>system <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/navigating_topics.htm"><b>2</b></a> <a href="../kernel/copyright_notice.htm"><b>3</b></a> <a href="../kernel/about_salome_pro_help_system.htm"><b>4</b></a> <a href="../kernel/about_salome_pro_architecture.htm"><b>5</b></a> <a href="../kernel/using_left-hand_tabs.htm"><b>6</b></a> </nobr><br><a href="../kernel/about_salome_pro_architecture.htm"><b>systems</b></a> <br>\r
+<br><br>\r
+<nobr><a name="bm_T"></a><a name="subkey_T{"></a>t <a href="../kernel/running_salome_pro.htm"><b>1</b></a> <a href="../kernel/readme.html"><b>2</b></a> <a href="../kernel/using_catalog_generator.htm"><b>3</b></a> <a href="../kernel/saving_a_study.htm"><b>4</b></a> </nobr><br><nobr><a name="bms_TA"></a><a name="subkey_TA"></a>tab <a href="../kernel/using_usecase_browser.htm"><b>1</b></a> <a href="../kernel/using_registry.htm"><b>2</b></a> <a href="../kernel/using_left-hand_tabs.htm"><b>3</b></a> </nobr><br><a href="../kernel/readme.html"><b>table</b></a> <br><a href="../kernel/using_left-hand_tabs.htm"><b>tabs</b></a> <br><a href="../kernel/readme.html"><b>tag</b></a> <br><a href="../kernel/readme.html"><b>tags</b></a> <br><a href="../kernel/readme.html"><b>take</b></a> <br><nobr>taken <a href="../kernel/running_salome_pro.htm"><b>1</b></a> <a href="../kernel/readme.html"><b>2</b></a> </nobr><br><a href="../kernel/about_salome_pro_architecture.htm"><b>takes</b></a> <br><a href="../kernel/readme.html"><b>target</b></a> <br><a href="../kernel/readme.html"><b>target_directory</b></a> <br><a href="../kernel/readme.html"><b>target_paltform</b></a> <br><a href="../kernel/readme.html"><b>targetdir</b></a> <br><a name="bms_TC"></a><a name="subkey_TC"></a><a href="../kernel/readme.html"><b>tcl</b></a> <br><a href="../kernel/readme.html"><b>tclhome</b></a> <br><a href="../kernel/readme.html"><b>tclsh8</b></a> <br><a name="bms_TE"></a><a name="subkey_TE"></a><a href="../kernel/introduction.htm"><b>technological</b></a> <br><a href="../kernel/about_salome_pro_architecture.htm"><b>technologies</b></a> <br><a href="../kernel/copyright_notice.htm"><b>technologique</b></a> <br><a href="../kernel/about_salome_pro_architecture.htm"><b>technology</b></a> <br><a href="../kernel/readme.html"><b>temp</b></a> <br><a href="../kernel/readme.html"><b>temp_directory</b></a> <br><a href="../kernel/readme.html"><b>temp_folder</b></a> <br><a href="../kernel/readme.html"><b>tempdir</b></a> <br><a href="../kernel/readme.html"><b>temporary</b></a> <br><a href="../kernel/readme.html"><b>temporarydiskspace</b></a> <br><nobr>term <a href="../kernel/navigating_topics.htm"><b>1</b></a> <a href="../kernel/using_left-hand_tabs.htm"><b>2</b></a> </nobr><br><a href="../kernel/running_salome_pro.htm"><b>terminal</b></a> <br><nobr>terms <a href="../kernel/introduction.htm"><b>1</b></a> <a href="../kernel/copyright_notice.htm"><b>2</b></a> <a href="../kernel/using_left-hand_tabs.htm"><b>3</b></a> </nobr><br><nobr>test <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/about_salome_pro_architecture.htm"><b>2</b></a> <a href="../kernel/using_catalog_generator.htm"><b>3</b></a> </nobr><br><a href="../kernel/readme.html"><b>tests</b></a> <br><nobr>text <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/navigating_topics.htm"><b>2</b></a> <a href="../kernel/using_left-hand_tabs.htm"><b>3</b></a> </nobr><br><nobr><a name="bms_TH"></a><a name="subkey_TH"></a>them <a href="../kernel/running_salome_pro.htm"><b>1</b></a> <a href="../kernel/readme.html"><b>2</b></a> <a href="../kernel/introduction_to_salome_pro.htm"><b>3</b></a> <a href="../kernel/about_salome_pro_architecture.htm"><b>4</b></a> <a href="../kernel/using_registry.htm"><b>5</b></a> </nobr><br><a href="../kernel/readme.html"><b>therefore</b></a> <br><a href="../kernel/readme.html"><b>this_is_</b></a> <br><a href="../kernel/readme.html"><b>this_is_omninotify_1_2</b></a> <br><a href="../kernel/readme.html"><b>this_is_omniorb_3_0_5</b></a> <br><a href="../kernel/readme.html"><b>this_is_omniorbpy_1_5</b></a> <br><nobr>those <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/using_left-hand_tabs.htm"><b>2</b></a> </nobr><br><a href="../kernel/about_salome_pro_architecture.htm"><b>thus</b></a> <br><a name="bms_TI"></a><a name="subkey_TI"></a><a href="../kernel/displaying_studies.htm"><b>tile</b></a> <br><a href="../kernel/displaying_studies.htm"><b>tiling</b></a> <br><nobr>time <a href="../kernel/running_salome_pro.htm"><b>1</b></a> <a href="../kernel/readme.html"><b>2</b></a> <a href="../kernel/introduction.htm"><b>3</b></a> <a href="../kernel/getting_properties_of_the_study.htm"><b>4</b></a> <a href="../kernel/about_salome_pro_architecture.htm"><b>5</b></a> <a href="../kernel/using_registry.htm"><b>6</b></a> <a href="../kernel/using_catalog_generator.htm"><b>7</b></a> <a href="../kernel/setting_preferences.htm"><b>8</b></a> </nobr><br><a href="../kernel/readme.html"><b>title</b></a> <br><a name="bms_TM"></a><a name="subkey_TM"></a><a href="../kernel/readme.html"><b>tmp</b></a> <br><a href="../kernel/readme.html"><b>tmp_disk_space</b></a> <br><a name="bms_TO"></a><a name="subkey_TO"></a><a href="../kernel/readme.html"><b>together</b></a> <br><nobr>tool <a href="../kernel/introduction_to_iapp.htm"><b>1</b></a> <a href="../kernel/using_registry.htm"><b>2</b></a> <a href="../kernel/using_catalog_generator.htm"><b>3</b></a> </nobr><br><nobr>toolbar <a href="../kernel/opening_studies.htm"><b>1</b></a> <a href="../kernel/editing_studies.htm"><b>2</b></a> <a href="../kernel/displaying_hiding_toolbars.htm"><b>3</b></a> <a href="../kernel/creating_a_new_study.htm"><b>4</b></a> <a href="../kernel/saving_a_study.htm"><b>5</b></a> <a href="../kernel/salome_pro_desktop.htm"><b>6</b></a> </nobr><br><nobr>toolbars <a href="../kernel/introduction_to_iapp.htm"><b>1</b></a> <a href="../kernel/displaying_hiding_toolbars.htm"><b>2</b></a> <a href="../kernel/salome_pro_desktop.htm"><b>3</b></a> </nobr><br><nobr>tools <a href="../kernel/introduction_to_iapp.htm"><b>1</b></a> <a href="../kernel/about_salome_pro_architecture.htm"><b>2</b></a> <a href="../kernel/using_registry.htm"><b>3</b></a> <a href="../kernel/using_catalog_generator.htm"><b>4</b></a> <a href="../kernel/salome_pro_desktop.htm"><b>5</b></a> </nobr><br><nobr>top <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/displaying_hiding_toolbars.htm"><b>2</b></a> <a href="../kernel/creating_a_new_study.htm"><b>3</b></a> <a href="../kernel/salome_pro_desktop.htm"><b>4</b></a> </nobr><br><nobr>topic <a href="../kernel/navigating_topics.htm"><b>1</b></a> <a href="../kernel/using_left-hand_tabs.htm"><b>2</b></a> </nobr><br><nobr>topics <a href="../kernel/navigating_topics.htm"><b>1</b></a> <a href="../kernel/about_salome_pro_help_system.htm"><b>2</b></a> <a href="../kernel/using_left-hand_tabs.htm"><b>3</b></a> </nobr><br><a href="../kernel/readme.html"><b>topmost</b></a> <br><a href="../kernel/readme.html"><b>total</b></a> <br><a href="../kernel/about_salome_pro_architecture.htm"><b>totality</b></a> <br><a name="bms_TR"></a><a name="subkey_TR"></a><a href="../kernel/readme.html"><b>tr</b></a> <br><a href="../kernel/copyright_notice.htm"><b>trademarks</b></a> <br><a href="../kernel/introduction.htm"><b>training</b></a> <br><a href="../kernel/copyright_notice.htm"><b>transmitted</b></a> <br><nobr>tree <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/using_usecase_browser.htm"><b>2</b></a> <a href="../kernel/using_object_browser.htm"><b>3</b></a> </nobr><br><a href="../kernel/readme.html"><b>tries</b></a> <br><nobr>trihedron <a href="../kernel/setting_preferences.htm"><b>1</b></a> <a href="../kernel/salome_pro_desktop.htm"><b>2</b></a> </nobr><br><a href="../kernel/readme.html"><b>true</b></a> <br><nobr>try <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/getting_properties_of_the_study.htm"><b>2</b></a> <a href="../kernel/using_catalog_generator.htm"><b>3</b></a> <a href="../kernel/saving_a_study.htm"><b>4</b></a> </nobr><br><a href="../kernel/readme.html"><b>try_existing</b></a> <br><a href="../kernel/readme.html"><b>try_native</b></a> <br><a href="../kernel/readme.html"><b>try_preinstalled</b></a> <br><nobr><a name="bms_TW"></a><a name="subkey_TW"></a>two <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/navigating_topics.htm"><b>2</b></a> <a href="../kernel/using_catalog_generator.htm"><b>3</b></a> <a href="../kernel/saving_a_study.htm"><b>4</b></a> </nobr><br><nobr><a name="bms_TY"></a><a name="subkey_TY"></a>type <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/using_catalog_generator.htm"><b>2</b></a> </nobr><br><a href="../kernel/using_catalog_generator.htm"><b>typical</b></a> <br><a href="../kernel/readme.html"><b>typing</b></a> <br>\r
 <br><br>\r
-<nobr><a name="bm_T"></a><a name="subkey_T{"></a>t <a href="../files/readme.html"><b>1</b></a> <a href="../files/installing_salome_pro.htm"><b>2</b></a> <a href="../files/using_catalog_generator.htm"><b>3</b></a> <a href="../files/saving_a_study.htm"><b>4</b></a> <a href="../files/running_salome_pro.htm"><b>5</b></a> </nobr><br><nobr><a name="bms_TA"></a><a name="subkey_TA"></a>tab <a href="../files/using_usecase_browser.htm"><b>1</b></a> <a href="../files/using_registry.htm"><b>2</b></a> <a href="../files/using_left-hand_tabs.htm"><b>3</b></a> </nobr><br><nobr>table <a href="../files/readme.html"><b>1</b></a> <a href="../files/installing_salome_pro.htm"><b>2</b></a> </nobr><br><a href="../files/using_left-hand_tabs.htm"><b>tabs</b></a> <br><a href="../files/readme.html"><b>tag</b></a> <br><a href="../files/readme.html"><b>tags</b></a> <br><nobr>take <a href="../files/readme.html"><b>1</b></a> <a href="../files/installing_salome_pro.htm"><b>2</b></a> </nobr><br><nobr>taken <a href="../files/readme.html"><b>1</b></a> <a href="../files/installing_salome_pro.htm"><b>2</b></a> <a href="../files/running_salome_pro.htm"><b>3</b></a> </nobr><br><a href="../files/about_salome_pro_architecture.htm"><b>takes</b></a> <br><nobr>target <a href="../files/readme.html"><b>1</b></a> <a href="../files/installing_salome_pro.htm"><b>2</b></a> </nobr><br><a href="../files/readme.html"><b>target_directory</b></a> <br><a href="../files/readme.html"><b>target_paltform</b></a> <br><a href="../files/readme.html"><b>targetdir</b></a> <br><nobr><a name="bms_TC"></a><a name="subkey_TC"></a>tcl <a href="../files/readme.html"><b>1</b></a> <a href="../files/installing_salome_pro.htm"><b>2</b></a> </nobr><br><nobr>tclhome <a href="../files/readme.html"><b>1</b></a> <a href="../files/installing_salome_pro.htm"><b>2</b></a> </nobr><br><nobr>tclsh8 <a href="../files/readme.html"><b>1</b></a> <a href="../files/installing_salome_pro.htm"><b>2</b></a> </nobr><br><a name="bms_TE"></a><a name="subkey_TE"></a><a href="../files/introduction.htm"><b>technological</b></a> <br><a href="../files/about_salome_pro_architecture.htm"><b>technologies</b></a> <br><a href="../files/copyright_notice.htm"><b>technologique</b></a> <br><a href="../files/about_salome_pro_architecture.htm"><b>technology</b></a> <br><nobr>temp <a href="../files/readme.html"><b>1</b></a> <a href="../files/installing_salome_pro.htm"><b>2</b></a> </nobr><br><a href="../files/readme.html"><b>temp_directory</b></a> <br><a href="../files/readme.html"><b>temp_folder</b></a> <br><a href="../files/readme.html"><b>tempdir</b></a> <br><nobr>temporary <a href="../files/readme.html"><b>1</b></a> <a href="../files/installing_salome_pro.htm"><b>2</b></a> </nobr><br><a href="../files/readme.html"><b>temporarydiskspace</b></a> <br><nobr>term <a href="../files/navigating_topics.htm"><b>1</b></a> <a href="../files/using_left-hand_tabs.htm"><b>2</b></a> </nobr><br><nobr>terminal <a href="../files/installing_salome_pro.htm"><b>1</b></a> <a href="../files/running_salome_pro.htm"><b>2</b></a> </nobr><br><nobr>terms <a href="../files/introduction.htm"><b>1</b></a> <a href="../files/copyright_notice.htm"><b>2</b></a> <a href="../files/using_left-hand_tabs.htm"><b>3</b></a> </nobr><br><nobr>test <a href="../files/readme.html"><b>1</b></a> <a href="../files/about_salome_pro_architecture.htm"><b>2</b></a> <a href="../files/using_catalog_generator.htm"><b>3</b></a> </nobr><br><a href="../files/readme.html"><b>tests</b></a> <br><nobr>text <a href="../files/readme.html"><b>1</b></a> <a href="../files/navigating_topics.htm"><b>2</b></a> <a href="../files/installing_salome_pro.htm"><b>3</b></a> <a href="../files/using_left-hand_tabs.htm"><b>4</b></a> </nobr><br><nobr><a name="bms_TH"></a><a name="subkey_TH"></a>them <a href="../files/readme.html"><b>1</b></a> <a href="../files/introduction_to_salome_pro.htm"><b>2</b></a> <a href="../files/installing_salome_pro.htm"><b>3</b></a> <a href="../files/about_salome_pro_architecture.htm"><b>4</b></a> <a href="../files/using_registry.htm"><b>5</b></a> <a href="../files/running_salome_pro.htm"><b>6</b></a> </nobr><br><nobr>therefore <a href="../files/readme.html"><b>1</b></a> <a href="../files/installing_salome_pro.htm"><b>2</b></a> </nobr><br><nobr>this_is_ <a href="../files/readme.html"><b>1</b></a> <a href="../files/installing_salome_pro.htm"><b>2</b></a> </nobr><br><nobr>this_is_omninotify_1_2 <a href="../files/readme.html"><b>1</b></a> <a href="../files/installing_salome_pro.htm"><b>2</b></a> </nobr><br><nobr>this_is_omniorb_3_0_5 <a href="../files/readme.html"><b>1</b></a> <a href="../files/installing_salome_pro.htm"><b>2</b></a> </nobr><br><nobr>this_is_omniorbpy_1_5 <a href="../files/readme.html"><b>1</b></a> <a href="../files/installing_salome_pro.htm"><b>2</b></a> </nobr><br><nobr>those <a href="../files/readme.html"><b>1</b></a> <a href="../files/installing_salome_pro.htm"><b>2</b></a> <a href="../files/using_left-hand_tabs.htm"><b>3</b></a> </nobr><br><a href="../files/installing_salome_pro.htm"><b>three</b></a> <br><a href="../files/about_salome_pro_architecture.htm"><b>thus</b></a> <br><br><br></p><p class="ftsbody" align="center"><a href="whlstf8.htm" target="_self" title="previous search group"><b>&gt;&gt;</b></a>\r
+<a name="bm_U"></a><a name="subkey_UL"></a><a href="../kernel/about_salome_pro_architecture.htm"><b>ultimate</b></a> <br><a name="bms_UN"></a><a name="subkey_UN"></a><a href="../kernel/introduction.htm"><b>understanding</b></a> <br><nobr>undo <a href="../kernel/editing_studies.htm"><b>1</b></a> <a href="../kernel/setting_preferences.htm"><b>2</b></a> </nobr><br><a href="../kernel/setting_preferences.htm"><b>undone</b></a> <br><a href="../kernel/readme.html"><b>unfortunarely</b></a> <br><a href="../kernel/readme.html"><b>unfortunately</b></a> <br><a href="../kernel/about_salome_pro_help_system.htm"><b>unix</b></a> <br><a href="../kernel/saving_a_study.htm"><b>unload</b></a> <br><nobr>unloaded <a href="../kernel/opening_studies.htm"><b>1</b></a> <a href="../kernel/saving_a_study.htm"><b>2</b></a> </nobr><br><a href="../kernel/displaying_hiding_toolbars.htm"><b>unmark</b></a> <br><a href="../kernel/readme.html"><b>unnecessary</b></a> <br><a href="../kernel/readme.html"><b>unselect</b></a> <br><br><br></p><p class="ftsbody" align="center"><a href="whlstf8.htm" target="_self" title="previous search group"><b>&gt;&gt;</b></a>\r
 \r
 </body>\r
 \r
index 0ae2a118cf5656f0bc934e25e55a167340ee8ba1..becffe7bc16ed5d3764eb4850201f4a41ec65c61 100755 (executable)
@@ -1,9 +1,9 @@
 <html>\r
 <head>\r
 <title>Search Words List</title>\r
-<meta http-equiv="content-type" content="text/html; charset=iso-8859-1">\r
+\r
 <meta name="generator" content="RoboHelp by eHelp Corporation   www.ehelp.com">\r
-<meta name "description" content="WebHelp 2002">\r
+<meta name="description" content="WebHelp 5.50">\r
 <base target="bsscright">\r
 <style>\r
 <!--\r
@@ -30,19 +30,20 @@ A:hover {color:Navy; } A:hover {font-family:Tahoma; } A:hover {font-size:8pt; }
 -->\r
 </style>\r
 </head>\r
-<body marginheight="0"  marginwidth="0">\r
+<body marginheight="0"  marginwidth="0" bgproperties="fixed">\r
 <p class="ftsbody" align="center"><a href="whlstf7.htm" target="_self" title="previous search group"><b>&lt;&lt;</b></a><br><br></p>\r
-<p class="ftsbody">\r
-<a name="bms_TI"></a><a name="subkey_TI"></a><a href="../files/displaying_studies.htm"><b>tiling</b></a> <br><nobr>time <a href="../files/readme.html"><b>1</b></a> <a href="../files/introduction.htm"><b>2</b></a> <a href="../files/installing_salome_pro.htm"><b>3</b></a> <a href="../files/getting_properties_of_the_study.htm"><b>4</b></a> <a href="../files/about_salome_pro_architecture.htm"><b>5</b></a> <a href="../files/using_registry.htm"><b>6</b></a> <a href="../files/using_catalog_generator.htm"><b>7</b></a> <a href="../files/setting_preferences.htm"><b>8</b></a> </nobr><br><a href="../files/readme.html"><b>title</b></a> <br><nobr><a name="bms_TM"></a><a name="subkey_TM"></a>tmp <a href="../files/readme.html"><b>1</b></a> <a href="../files/installing_salome_pro.htm"><b>2</b></a> </nobr><br><a href="../files/readme.html"><b>tmp_disk_space</b></a> <br><nobr><a name="bms_TO"></a><a name="subkey_TO"></a>together <a href="../files/readme.html"><b>1</b></a> <a href="../files/installing_salome_pro.htm"><b>2</b></a> </nobr><br><a href="../files/installing_salome_pro.htm"><b>too</b></a> <br><nobr>tool <a href="../files/introduction_to_iapp.htm"><b>1</b></a> <a href="../files/using_registry.htm"><b>2</b></a> <a href="../files/using_catalog_generator.htm"><b>3</b></a> </nobr><br><nobr>toolbar <a href="../files/opening_studies.htm"><b>1</b></a> <a href="../files/editing_studies.htm"><b>2</b></a> <a href="../files/displaying_hiding_toolbars.htm"><b>3</b></a> <a href="../files/creating_a_new_study.htm"><b>4</b></a> <a href="../files/saving_a_study.htm"><b>5</b></a> <a href="../files/salome_pro_desktop.htm"><b>6</b></a> </nobr><br><nobr>toolbars <a href="../files/introduction_to_iapp.htm"><b>1</b></a> <a href="../files/displaying_hiding_toolbars.htm"><b>2</b></a> <a href="../files/salome_pro_desktop.htm"><b>3</b></a> </nobr><br><nobr>tools <a href="../files/introduction_to_iapp.htm"><b>1</b></a> <a href="../files/about_salome_pro_architecture.htm"><b>2</b></a> <a href="../files/using_registry.htm"><b>3</b></a> <a href="../files/using_catalog_generator.htm"><b>4</b></a> <a href="../files/salome_pro_desktop.htm"><b>5</b></a> </nobr><br><nobr>top <a href="../files/readme.html"><b>1</b></a> <a href="../files/displaying_hiding_toolbars.htm"><b>2</b></a> <a href="../files/creating_a_new_study.htm"><b>3</b></a> <a href="../files/salome_pro_desktop.htm"><b>4</b></a> </nobr><br><nobr>topic <a href="../files/navigating_topics.htm"><b>1</b></a> <a href="../files/using_left-hand_tabs.htm"><b>2</b></a> </nobr><br><nobr>topics <a href="../files/navigating_topics.htm"><b>1</b></a> <a href="../files/about_salome_pro_help_system.htm"><b>2</b></a> <a href="../files/using_left-hand_tabs.htm"><b>3</b></a> </nobr><br><nobr>topmost <a href="../files/readme.html"><b>1</b></a> <a href="../files/installing_salome_pro.htm"><b>2</b></a> </nobr><br><nobr>total <a href="../files/readme.html"><b>1</b></a> <a href="../files/installing_salome_pro.htm"><b>2</b></a> </nobr><br><a href="../files/about_salome_pro_architecture.htm"><b>totality</b></a> <br><nobr><a name="bms_TR"></a><a name="subkey_TR"></a>tr <a href="../files/readme.html"><b>1</b></a> <a href="../files/installing_salome_pro.htm"><b>2</b></a> </nobr><br><a href="../files/copyright_notice.htm"><b>trademarks</b></a> <br><a href="../files/introduction.htm"><b>training</b></a> <br><a href="../files/copyright_notice.htm"><b>transmitted</b></a> <br><nobr>tree <a href="../files/readme.html"><b>1</b></a> <a href="../files/using_usecase_browser.htm"><b>2</b></a> <a href="../files/using_object_browser.htm"><b>3</b></a> </nobr><br><nobr>tries <a href="../files/readme.html"><b>1</b></a> <a href="../files/installing_salome_pro.htm"><b>2</b></a> </nobr><br><nobr>trihedron <a href="../files/setting_preferences.htm"><b>1</b></a> <a href="../files/salome_pro_desktop.htm"><b>2</b></a> </nobr><br><a href="../files/installing_salome_pro.htm"><b>troubles</b></a> <br><a href="../files/readme.html"><b>true</b></a> <br><nobr>try <a href="../files/readme.html"><b>1</b></a> <a href="../files/installing_salome_pro.htm"><b>2</b></a> <a href="../files/getting_properties_of_the_study.htm"><b>3</b></a> <a href="../files/using_catalog_generator.htm"><b>4</b></a> <a href="../files/saving_a_study.htm"><b>5</b></a> </nobr><br><a href="../files/readme.html"><b>try_native</b></a> <br><a href="../files/readme.html"><b>try_preinstalled</b></a> <br><nobr><a name="bms_TW"></a><a name="subkey_TW"></a>two <a href="../files/readme.html"><b>1</b></a> <a href="../files/navigating_topics.htm"><b>2</b></a> <a href="../files/installing_salome_pro.htm"><b>3</b></a> <a href="../files/using_catalog_generator.htm"><b>4</b></a> <a href="../files/saving_a_study.htm"><b>5</b></a> </nobr><br><nobr><a name="bms_TY"></a><a name="subkey_TY"></a>type <a href="../files/readme.html"><b>1</b></a> <a href="../files/installing_salome_pro.htm"><b>2</b></a> <a href="../files/using_catalog_generator.htm"><b>3</b></a> </nobr><br><a href="../files/using_catalog_generator.htm"><b>typical</b></a> <br><nobr>typing <a href="../files/readme.html"><b>1</b></a> <a href="../files/installing_salome_pro.htm"><b>2</b></a> </nobr><br>\r
+<p class="ftsbody" >\r
+<nobr><a name="bms_UP"></a><a name="subkey_UP"></a>up <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/opening_studies.htm"><b>2</b></a> <a href="../kernel/navigating_topics.htm"><b>3</b></a> <a href="../kernel/using_usecase_browser.htm"><b>4</b></a> <a href="../kernel/using_object_browser.htm"><b>5</b></a> <a href="../kernel/salome_pro_desktop.htm"><b>6</b></a> </nobr><br><a href="../kernel/using_catalog_generator.htm"><b>update</b></a> <br><nobr>updated <a href="../kernel/using_catalog_generator.htm"><b>1</b></a> <a href="../kernel/saving_a_study.htm"><b>2</b></a> <a href="../kernel/salome_pro_desktop.htm"><b>3</b></a> </nobr><br><nobr>uploading <a href="../kernel/introduction_to_iapp.htm"><b>1</b></a> <a href="../kernel/displaying_hiding_toolbars.htm"><b>2</b></a> <a href="../kernel/salome_pro_desktop.htm"><b>3</b></a> </nobr><br><a href="../kernel/saving_a_study.htm"><b>upper</b></a> <br><a name="bms_US"></a><a name="subkey_US"></a><a href="../kernel/readme.html"><b>usage</b></a> <br><nobr>usecase <a href="../kernel/introduction_to_iapp.htm"><b>1</b></a> <a href="../kernel/using_usecase_browser.htm"><b>2</b></a> <a href="../kernel/setting_preferences.htm"><b>3</b></a> <a href="../kernel/salome_pro_desktop.htm"><b>4</b></a> </nobr><br><nobr>used <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/getting_started2.htm"><b>2</b></a> <a href="../kernel/editing_studies.htm"><b>3</b></a> <a href="../kernel/copyright_notice.htm"><b>4</b></a> <a href="../kernel/about_salome_pro_architecture.htm"><b>5</b></a> <a href="../kernel/using_left-hand_tabs.htm"><b>6</b></a> <a href="../kernel/using_catalog_generator.htm"><b>7</b></a> <a href="../kernel/setting_preferences.htm"><b>8</b></a> <a href="../kernel/saving_a_study.htm"><b>9</b></a> </nobr><br><nobr>user <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/introduction.htm"><b>2</b></a> <a href="../kernel/getting_properties_of_the_study.htm"><b>3</b></a> <a href="../kernel/about_salome_pro_architecture.htm"><b>4</b></a> <a href="../kernel/using_usecase_browser.htm"><b>5</b></a> <a href="../kernel/using_registry.htm"><b>6</b></a> </nobr><br><nobr>users <a href="../kernel/getting_properties_of_the_study.htm"><b>1</b></a> <a href="../kernel/using_catalog_generator.htm"><b>2</b></a> </nobr><br><a href="../kernel/readme.html"><b>uses</b></a> <br><nobr>using <a href="../kernel/running_salome_pro.htm"><b>1</b></a> <a href="../kernel/readme.html"><b>2</b></a> <a href="../kernel/about_salome_pro_architecture.htm"><b>3</b></a> <a href="../kernel/using_usecase_browser.htm"><b>4</b></a> <a href="../kernel/using_registry.htm"><b>5</b></a> <a href="../kernel/using_object_browser.htm"><b>6</b></a> <a href="../kernel/using_left-hand_tabs.htm"><b>7</b></a> <a href="../kernel/using_catalog_generator.htm"><b>8</b></a> </nobr><br><a href="../kernel/readme.html"><b>usr</b></a> <br><a name="bms_UT"></a><a name="subkey_UT"></a><a href="../kernel/about_salome_pro_help_system.htm"><b>utilities</b></a> <br>\r
 <br><br>\r
-<a name="bm_U"></a><a name="subkey_UL"></a><a href="../files/about_salome_pro_architecture.htm"><b>ultimate</b></a> <br><a name="bms_UN"></a><a name="subkey_UN"></a><a href="../files/introduction.htm"><b>understanding</b></a> <br><nobr>undo <a href="../files/editing_studies.htm"><b>1</b></a> <a href="../files/setting_preferences.htm"><b>2</b></a> </nobr><br><a href="../files/setting_preferences.htm"><b>undone</b></a> <br><nobr>unfortunately <a href="../files/readme.html"><b>1</b></a> <a href="../files/installing_salome_pro.htm"><b>2</b></a> </nobr><br><a href="../files/about_salome_pro_help_system.htm"><b>unix</b></a> <br><a href="../files/saving_a_study.htm"><b>unload</b></a> <br><nobr>unloaded <a href="../files/opening_studies.htm"><b>1</b></a> <a href="../files/saving_a_study.htm"><b>2</b></a> </nobr><br><a href="../files/displaying_hiding_toolbars.htm"><b>unmark</b></a> <br><a href="../files/readme.html"><b>unnecessary</b></a> <br><nobr>unselect <a href="../files/readme.html"><b>1</b></a> <a href="../files/installing_salome_pro.htm"><b>2</b></a> </nobr><br><nobr><a name="bms_UP"></a><a name="subkey_UP"></a>up <a href="../files/readme.html"><b>1</b></a> <a href="../files/opening_studies.htm"><b>2</b></a> <a href="../files/navigating_topics.htm"><b>3</b></a> <a href="../files/installing_salome_pro.htm"><b>4</b></a> <a href="../files/using_usecase_browser.htm"><b>5</b></a> <a href="../files/using_object_browser.htm"><b>6</b></a> <a href="../files/salome_pro_desktop.htm"><b>7</b></a> </nobr><br><nobr>update <a href="../files/installing_salome_pro.htm"><b>1</b></a> <a href="../files/using_catalog_generator.htm"><b>2</b></a> </nobr><br><nobr>updated <a href="../files/installing_salome_pro.htm"><b>1</b></a> <a href="../files/using_catalog_generator.htm"><b>2</b></a> <a href="../files/saving_a_study.htm"><b>3</b></a> <a href="../files/salome_pro_desktop.htm"><b>4</b></a> </nobr><br><nobr>uploading <a href="../files/introduction_to_iapp.htm"><b>1</b></a> <a href="../files/displaying_hiding_toolbars.htm"><b>2</b></a> <a href="../files/salome_pro_desktop.htm"><b>3</b></a> </nobr><br><a href="../files/saving_a_study.htm"><b>upper</b></a> <br><a name="bms_US"></a><a name="subkey_US"></a><a href="../files/readme.html"><b>usage</b></a> <br><nobr>usecase <a href="../files/introduction_to_iapp.htm"><b>1</b></a> <a href="../files/using_usecase_browser.htm"><b>2</b></a> <a href="../files/setting_preferences.htm"><b>3</b></a> <a href="../files/salome_pro_desktop.htm"><b>4</b></a> </nobr><br><nobr>used <a href="../files/readme.html"><b>1</b></a> <a href="../files/installing_salome_pro.htm"><b>2</b></a> <a href="../files/getting_started2.htm"><b>3</b></a> <a href="../files/editing_studies.htm"><b>4</b></a> <a href="../files/copyright_notice.htm"><b>5</b></a> <a href="../files/about_salome_pro_architecture.htm"><b>6</b></a> <a href="../files/using_left-hand_tabs.htm"><b>7</b></a> <a href="../files/using_catalog_generator.htm"><b>8</b></a> <a href="../files/setting_preferences.htm"><b>9</b></a> <a href="../files/saving_a_study.htm"><b>10</b></a> </nobr><br><nobr>user <a href="../files/readme.html"><b>1</b></a> <a href="../files/introduction.htm"><b>2</b></a> <a href="../files/getting_properties_of_the_study.htm"><b>3</b></a> <a href="../files/about_salome_pro_architecture.htm"><b>4</b></a> <a href="../files/using_usecase_browser.htm"><b>5</b></a> <a href="../files/using_registry.htm"><b>6</b></a> </nobr><br><nobr>users <a href="../files/getting_properties_of_the_study.htm"><b>1</b></a> <a href="../files/using_catalog_generator.htm"><b>2</b></a> </nobr><br><nobr>uses <a href="../files/readme.html"><b>1</b></a> <a href="../files/installing_salome_pro.htm"><b>2</b></a> </nobr><br><nobr>using <a href="../files/readme.html"><b>1</b></a> <a href="../files/installing_salome_pro.htm"><b>2</b></a> <a href="../files/about_salome_pro_architecture.htm"><b>3</b></a> <a href="../files/using_usecase_browser.htm"><b>4</b></a> <a href="../files/using_registry.htm"><b>5</b></a> <a href="../files/using_object_browser.htm"><b>6</b></a> <a href="../files/using_left-hand_tabs.htm"><b>7</b></a> <a href="../files/using_catalog_generator.htm"><b>8</b></a> <a href="../files/running_salome_pro.htm"><b>9</b></a> </nobr><br><nobr>usr <a href="../files/readme.html"><b>1</b></a> <a href="../files/installing_salome_pro.htm"><b>2</b></a> </nobr><br><a name="bms_UT"></a><a name="subkey_UT"></a><a href="../files/about_salome_pro_help_system.htm"><b>utilities</b></a> <br>\r
+<a name="bm_V"></a><a name="subkey_V{"></a><a href="../kernel/readme.html"><b>v</b></a> <br><a name="bms_VA"></a><a name="subkey_VA"></a><a href="../kernel/setting_preferences.htm"><b>valid</b></a> <br><a href="../kernel/about_salome_pro_architecture.htm"><b>validation</b></a> <br><nobr>value <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/using_object_browser.htm"><b>2</b></a> <a href="../kernel/setting_preferences.htm"><b>3</b></a> </nobr><br><a href="../kernel/readme.html"><b>variable</b></a> <br><nobr>variables <a href="../kernel/running_salome_pro.htm"><b>1</b></a> <a href="../kernel/readme.html"><b>2</b></a> </nobr><br><a href="../kernel/readme.html"><b>varible</b></a> <br><nobr>variety <a href="../kernel/navigating_topics.htm"><b>1</b></a> <a href="../kernel/about_salome_pro_help_system.htm"><b>2</b></a> </nobr><br><nobr>various <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/introduction_to_salome_pro.htm"><b>2</b></a> </nobr><br><a name="bms_VE"></a><a name="subkey_VE"></a><a href="../kernel/readme.html"><b>ve</b></a> <br><a href="../kernel/readme.html"><b>ver</b></a> <br><nobr>version <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/using_catalog_generator.htm"><b>2</b></a> </nobr><br><nobr>very <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/introduction.htm"><b>2</b></a> </nobr><br><nobr><a name="bms_VI"></a><a name="subkey_VI"></a>view <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/navigating_topics.htm"><b>2</b></a> <a href="../kernel/getting_properties_of_the_study.htm"><b>3</b></a> <a href="../kernel/displaying_hiding_toolbars.htm"><b>4</b></a> <a href="../kernel/using_usecase_browser.htm"><b>5</b></a> <a href="../kernel/using_registry.htm"><b>6</b></a> <a href="../kernel/using_left-hand_tabs.htm"><b>7</b></a> <a href="../kernel/salome_pro_desktop.htm"><b>8</b></a> </nobr><br><nobr>viewer <a href="../kernel/introduction_to_iapp.htm"><b>1</b></a> <a href="../kernel/creating_a_new_study.htm"><b>2</b></a> <a href="../kernel/using_left-hand_tabs.htm"><b>3</b></a> <a href="../kernel/setting_preferences.htm"><b>4</b></a> <a href="../kernel/salome_pro_desktop.htm"><b>5</b></a> </nobr><br><nobr>viewers <a href="../kernel/introduction_to_iapp.htm"><b>1</b></a> <a href="../kernel/creating_a_new_study.htm"><b>2</b></a> <a href="../kernel/salome_pro_desktop.htm"><b>3</b></a> </nobr><br><nobr>viewing <a href="../kernel/navigating_topics.htm"><b>1</b></a> <a href="../kernel/setting_preferences.htm"><b>2</b></a> </nobr><br><nobr>visu <a href="../kernel/introduction_to_salome_pro.htm"><b>1</b></a> <a href="../kernel/editing_studies.htm"><b>2</b></a> <a href="../kernel/displaying_hiding_toolbars.htm"><b>3</b></a> <a href="../kernel/about_salome_pro_architecture.htm"><b>4</b></a> </nobr><br><nobr>visualization <a href="../kernel/introduction_to_salome_pro.htm"><b>1</b></a> <a href="../kernel/introduction_to_iapp.htm"><b>2</b></a> <a href="../kernel/getting_started2.htm"><b>3</b></a> <a href="../kernel/salome_pro_desktop.htm"><b>4</b></a> </nobr><br><nobr><a name="bms_VT"></a><a name="subkey_VT"></a>vtk <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/introduction_to_iapp.htm"><b>2</b></a> <a href="../kernel/creating_a_new_study.htm"><b>3</b></a> <a href="../kernel/setting_preferences.htm"><b>4</b></a> <a href="../kernel/salome_pro_desktop.htm"><b>5</b></a> </nobr><br><a href="../kernel/readme.html"><b>vtkhome</b></a> <br>\r
 <br><br>\r
-<nobr><a name="bm_V"></a><a name="subkey_V{"></a>v <a href="../files/readme.html"><b>1</b></a> <a href="../files/installing_salome_pro.htm"><b>2</b></a> </nobr><br><a name="bms_VA"></a><a name="subkey_VA"></a><a href="../files/setting_preferences.htm"><b>valid</b></a> <br><a href="../files/about_salome_pro_architecture.htm"><b>validation</b></a> <br><nobr>value <a href="../files/readme.html"><b>1</b></a> <a href="../files/using_object_browser.htm"><b>2</b></a> <a href="../files/setting_preferences.htm"><b>3</b></a> </nobr><br><nobr>variable <a href="../files/readme.html"><b>1</b></a> <a href="../files/installing_salome_pro.htm"><b>2</b></a> </nobr><br><nobr>variables <a href="../files/readme.html"><b>1</b></a> <a href="../files/installing_salome_pro.htm"><b>2</b></a> <a href="../files/running_salome_pro.htm"><b>3</b></a> </nobr><br><nobr>variety <a href="../files/navigating_topics.htm"><b>1</b></a> <a href="../files/about_salome_pro_help_system.htm"><b>2</b></a> </nobr><br><nobr>various <a href="../files/readme.html"><b>1</b></a> <a href="../files/introduction_to_salome_pro.htm"><b>2</b></a> </nobr><br><nobr><a name="bms_VE"></a><a name="subkey_VE"></a>ve <a href="../files/readme.html"><b>1</b></a> <a href="../files/installing_salome_pro.htm"><b>2</b></a> </nobr><br><nobr>ver <a href="../files/readme.html"><b>1</b></a> <a href="../files/installing_salome_pro.htm"><b>2</b></a> </nobr><br><nobr>version <a href="../files/readme.html"><b>1</b></a> <a href="../files/installing_salome_pro.htm"><b>2</b></a> <a href="../files/using_catalog_generator.htm"><b>3</b></a> </nobr><br><nobr>very <a href="../files/readme.html"><b>1</b></a> <a href="../files/introduction.htm"><b>2</b></a> <a href="../files/installing_salome_pro.htm"><b>3</b></a> </nobr><br><nobr><a name="bms_VI"></a><a name="subkey_VI"></a>view <a href="../files/readme.html"><b>1</b></a> <a href="../files/navigating_topics.htm"><b>2</b></a> <a href="../files/installing_salome_pro.htm"><b>3</b></a> <a href="../files/getting_properties_of_the_study.htm"><b>4</b></a> <a href="../files/displaying_hiding_toolbars.htm"><b>5</b></a> <a href="../files/using_usecase_browser.htm"><b>6</b></a> <a href="../files/using_registry.htm"><b>7</b></a> <a href="../files/using_left-hand_tabs.htm"><b>8</b></a> <a href="../files/salome_pro_desktop.htm"><b>9</b></a> </nobr><br><nobr>viewer <a href="../files/introduction_to_iapp.htm"><b>1</b></a> <a href="../files/creating_a_new_study.htm"><b>2</b></a> <a href="../files/using_left-hand_tabs.htm"><b>3</b></a> <a href="../files/setting_preferences.htm"><b>4</b></a> <a href="../files/salome_pro_desktop.htm"><b>5</b></a> </nobr><br><nobr>viewers <a href="../files/introduction_to_iapp.htm"><b>1</b></a> <a href="../files/creating_a_new_study.htm"><b>2</b></a> <a href="../files/salome_pro_desktop.htm"><b>3</b></a> </nobr><br><nobr>viewing <a href="../files/navigating_topics.htm"><b>1</b></a> <a href="../files/setting_preferences.htm"><b>2</b></a> </nobr><br><nobr>visu <a href="../files/introduction_to_salome_pro.htm"><b>1</b></a> <a href="../files/editing_studies.htm"><b>2</b></a> <a href="../files/displaying_hiding_toolbars.htm"><b>3</b></a> <a href="../files/about_salome_pro_architecture.htm"><b>4</b></a> </nobr><br><nobr>visualization <a href="../files/introduction_to_salome_pro.htm"><b>1</b></a> <a href="../files/introduction_to_iapp.htm"><b>2</b></a> <a href="../files/getting_started2.htm"><b>3</b></a> <a href="../files/salome_pro_desktop.htm"><b>4</b></a> </nobr><br><nobr><a name="bms_VT"></a><a name="subkey_VT"></a>vtk <a href="../files/readme.html"><b>1</b></a> <a href="../files/introduction_to_iapp.htm"><b>2</b></a> <a href="../files/installing_salome_pro.htm"><b>3</b></a> <a href="../files/creating_a_new_study.htm"><b>4</b></a> <a href="../files/setting_preferences.htm"><b>5</b></a> <a href="../files/salome_pro_desktop.htm"><b>6</b></a> </nobr><br><nobr>vtkhome <a href="../files/readme.html"><b>1</b></a> <a href="../files/installing_salome_pro.htm"><b>2</b></a> </nobr><br>\r
+<a name="bm_W"></a><a name="subkey_WA"></a><a href="../kernel/readme.html"><b>wait</b></a> <br><a href="../kernel/readme.html"><b>waiting</b></a> <br><nobr>want <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/navigating_topics.htm"><b>2</b></a> </nobr><br><nobr>warning <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/getting_properties_of_the_study.htm"><b>2</b></a> </nobr><br><nobr>way <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/introduction_to_salome_pro.htm"><b>2</b></a> <a href="../kernel/using_left-hand_tabs.htm"><b>3</b></a> <a href="../kernel/using_catalog_generator.htm"><b>4</b></a> </nobr><br><a href="../kernel/displaying_studies.htm"><b>ways</b></a> <br><nobr><a name="bms_WE"></a><a name="subkey_WE"></a>welcome <a href="../kernel/introduction.htm"><b>1</b></a> <a href="../kernel/about_salome_pro_help_system.htm"><b>2</b></a> </nobr><br><a href="../kernel/salome_pro_desktop.htm"><b>well</b></a> <br><nobr><a name="bms_WH"></a><a name="subkey_WH"></a>what <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/navigating_topics.htm"><b>2</b></a> <a href="../kernel/about_salome_pro_architecture.htm"><b>3</b></a> <a href="../kernel/using_usecase_browser.htm"><b>4</b></a> <a href="../kernel/using_object_browser.htm"><b>5</b></a> </nobr><br><a href="../kernel/about_salome_pro_architecture.htm"><b>while</b></a> <br><nobr>whole <a href="../kernel/setting_preferences.htm"><b>1</b></a> <a href="../kernel/saving_a_study.htm"><b>2</b></a> <a href="../kernel/salome_pro_desktop.htm"><b>3</b></a> </nobr><br><a name="bms_WI"></a><a name="subkey_WI"></a><a href="../kernel/about_salome_pro_help_system.htm"><b>wide</b></a> <br><nobr>will <a href="../kernel/running_salome_pro.htm"><b>1</b></a> <a href="../kernel/readme.html"><b>2</b></a> <a href="../kernel/opening_studies.htm"><b>3</b></a> <a href="../kernel/getting_started2.htm"><b>4</b></a> <a href="../kernel/getting_properties_of_the_study.htm"><b>5</b></a> <a href="../kernel/displaying_studies.htm"><b>6</b></a> <a href="../kernel/displaying_hiding_toolbars.htm"><b>7</b></a> <a href="../kernel/creating_a_new_study.htm"><b>8</b></a> <a href="../kernel/about_salome_pro_help_system.htm"><b>9</b></a> <a href="../kernel/using_usecase_browser.htm"><b>10</b></a> <a href="../kernel/using_registry.htm"><b>11</b></a> <a href="../kernel/using_object_browser.htm"><b>12</b></a> <a href="../kernel/using_catalog_generator.htm"><b>13</b></a> <a href="../kernel/setting_preferences.htm"><b>14</b></a> <a href="../kernel/saving_a_study.htm"><b>15</b></a> <a href="../kernel/salome_pro_desktop.htm"><b>16</b></a> </nobr><br><nobr>window <a href="../kernel/running_salome_pro.htm"><b>1</b></a> <a href="../kernel/readme.html"><b>2</b></a> <a href="../kernel/navigating_topics.htm"><b>3</b></a> <a href="../kernel/introduction_to_iapp.htm"><b>4</b></a> <a href="../kernel/getting_started2.htm"><b>5</b></a> <a href="../kernel/displaying_studies.htm"><b>6</b></a> <a href="../kernel/displaying_hiding_toolbars.htm"><b>7</b></a> <a href="../kernel/creating_a_new_study.htm"><b>8</b></a> <a href="../kernel/using_usecase_browser.htm"><b>9</b></a> <a href="../kernel/using_registry.htm"><b>10</b></a> <a href="../kernel/setting_preferences.htm"><b>11</b></a> <a href="../kernel/saving_a_study.htm"><b>12</b></a> <a href="../kernel/salome_pro_desktop.htm"><b>13</b></a> </nobr><br><nobr>windows <a href="../kernel/navigating_topics.htm"><b>1</b></a> <a href="../kernel/displaying_studies.htm"><b>2</b></a> <a href="../kernel/creating_a_new_study.htm"><b>3</b></a> <a href="../kernel/about_salome_pro_help_system.htm"><b>4</b></a> <a href="../kernel/setting_preferences.htm"><b>5</b></a> </nobr><br><a href="../kernel/readme.html"><b>wish8</b></a> <br><nobr>within <a href="../kernel/editing_studies.htm"><b>1</b></a> <a href="../kernel/about_salome_pro_architecture.htm"><b>2</b></a> <a href="../kernel/using_registry.htm"><b>3</b></a> <a href="../kernel/setting_preferences.htm"><b>4</b></a> <a href="../kernel/salome_pro_desktop.htm"><b>5</b></a> </nobr><br><nobr>without <a href="../kernel/running_salome_pro.htm"><b>1</b></a> <a href="../kernel/readme.html"><b>2</b></a> <a href="../kernel/copyright_notice.htm"><b>3</b></a> <a href="../kernel/about_salome_pro_architecture.htm"><b>4</b></a> <a href="../kernel/using_usecase_browser.htm"><b>5</b></a> </nobr><br><a href="../kernel/readme.html"><b>wizard</b></a> <br><nobr><a name="bms_WO"></a><a name="subkey_WO"></a>won <a href="../kernel/running_salome_pro.htm"><b>1</b></a> <a href="../kernel/readme.html"><b>2</b></a> </nobr><br><a href="../kernel/using_left-hand_tabs.htm"><b>word</b></a> <br><a href="../kernel/using_left-hand_tabs.htm"><b>words</b></a> <br><nobr>work <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/getting_started2.htm"><b>2</b></a> <a href="../kernel/about_salome_pro_architecture.htm"><b>3</b></a> </nobr><br><nobr>working <a href="../kernel/getting_started2.htm"><b>1</b></a> <a href="../kernel/using_left-hand_tabs.htm"><b>2</b></a> <a href="../kernel/saving_a_study.htm"><b>3</b></a> </nobr><br><nobr>would <a href="../kernel/readme.html"><b>1</b></a> <a href="../kernel/displaying_hiding_toolbars.htm"><b>2</b></a> <a href="../kernel/using_usecase_browser.htm"><b>3</b></a> <a href="../kernel/using_catalog_generator.htm"><b>4</b></a> <a href="../kernel/saving_a_study.htm"><b>5</b></a> </nobr><br><a name="bms_WR"></a><a name="subkey_WR"></a><a href="../kernel/saving_a_study.htm"><b>write</b></a> <br><a href="../kernel/copyright_notice.htm"><b>writing</b></a> <br><a href="../kernel/saving_a_study.htm"><b>written</b></a> <br><a href="../kernel/readme.html"><b>wrong</b></a> <br><a name="bms_WW"></a><a name="subkey_WW"></a><a href="../kernel/about_salome_pro_architecture.htm"><b>www</b></a> <br>\r
 <br><br>\r
-<nobr><a name="bm_W"></a><a name="subkey_WA"></a>wait <a href="../files/readme.html"><b>1</b></a> <a href="../files/installing_salome_pro.htm"><b>2</b></a> </nobr><br><nobr>waiting <a href="../files/readme.html"><b>1</b></a> <a href="../files/installing_salome_pro.htm"><b>2</b></a> </nobr><br><nobr>want <a href="../files/readme.html"><b>1</b></a> <a href="../files/navigating_topics.htm"><b>2</b></a> <a href="../files/installing_salome_pro.htm"><b>3</b></a> </nobr><br><nobr>warning <a href="../files/readme.html"><b>1</b></a> <a href="../files/installing_salome_pro.htm"><b>2</b></a> <a href="../files/getting_properties_of_the_study.htm"><b>3</b></a> </nobr><br><nobr>way <a href="../files/readme.html"><b>1</b></a> <a href="../files/introduction_to_salome_pro.htm"><b>2</b></a> <a href="../files/installing_salome_pro.htm"><b>3</b></a> <a href="../files/using_left-hand_tabs.htm"><b>4</b></a> <a href="../files/using_catalog_generator.htm"><b>5</b></a> </nobr><br><a href="../files/displaying_studies.htm"><b>ways</b></a> <br><nobr><a name="bms_WE"></a><a name="subkey_WE"></a>welcome <a href="../files/introduction.htm"><b>1</b></a> <a href="../files/about_salome_pro_help_system.htm"><b>2</b></a> </nobr><br><a href="../files/salome_pro_desktop.htm"><b>well</b></a> <br><nobr><a name="bms_WH"></a><a name="subkey_WH"></a>what <a href="../files/readme.html"><b>1</b></a> <a href="../files/navigating_topics.htm"><b>2</b></a> <a href="../files/installing_salome_pro.htm"><b>3</b></a> <a href="../files/about_salome_pro_architecture.htm"><b>4</b></a> <a href="../files/using_usecase_browser.htm"><b>5</b></a> <a href="../files/using_object_browser.htm"><b>6</b></a> </nobr><br><a href="../files/readme.html"><b>whichpython</b></a> <br><a href="../files/readme.html"><b>whichswig</b></a> <br><a href="../files/about_salome_pro_architecture.htm"><b>while</b></a> <br><nobr>whole <a href="../files/setting_preferences.htm"><b>1</b></a> <a href="../files/saving_a_study.htm"><b>2</b></a> <a href="../files/salome_pro_desktop.htm"><b>3</b></a> </nobr><br><a name="bms_WI"></a><a name="subkey_WI"></a><a href="../files/about_salome_pro_help_system.htm"><b>wide</b></a> <br><nobr>will <a href="../files/readme.html"><b>1</b></a> <a href="../files/opening_studies.htm"><b>2</b></a> <a href="../files/installing_salome_pro.htm"><b>3</b></a> <a href="../files/getting_started2.htm"><b>4</b></a> <a href="../files/getting_properties_of_the_study.htm"><b>5</b></a> <a href="../files/displaying_studies.htm"><b>6</b></a> <a href="../files/displaying_hiding_toolbars.htm"><b>7</b></a> <a href="../files/creating_a_new_study.htm"><b>8</b></a> <a href="../files/about_salome_pro_help_system.htm"><b>9</b></a> <a href="../files/using_usecase_browser.htm"><b>10</b></a> <a href="../files/using_registry.htm"><b>11</b></a> <a href="../files/using_object_browser.htm"><b>12</b></a> <a href="../files/using_catalog_generator.htm"><b>13</b></a> <a href="../files/setting_preferences.htm"><b>14</b></a> <a href="../files/saving_a_study.htm"><b>15</b></a> <a href="../files/salome_pro_desktop.htm"><b>16</b></a> <a href="../files/running_salome_pro.htm"><b>17</b></a> </nobr><br><nobr>window <a href="../files/readme.html"><b>1</b></a> <a href="../files/navigating_topics.htm"><b>2</b></a> <a href="../files/introduction_to_iapp.htm"><b>3</b></a> <a href="../files/installing_salome_pro.htm"><b>4</b></a> <a href="../files/getting_started2.htm"><b>5</b></a> <a href="../files/displaying_studies.htm"><b>6</b></a> <a href="../files/displaying_hiding_toolbars.htm"><b>7</b></a> <a href="../files/creating_a_new_study.htm"><b>8</b></a> <a href="../files/using_usecase_browser.htm"><b>9</b></a> <a href="../files/using_registry.htm"><b>10</b></a> <a href="../files/setting_preferences.htm"><b>11</b></a> <a href="../files/saving_a_study.htm"><b>12</b></a> <a href="../files/salome_pro_desktop.htm"><b>13</b></a> <a href="../files/running_salome_pro.htm"><b>14</b></a> </nobr><br><nobr>windows <a href="../files/navigating_topics.htm"><b>1</b></a> <a href="../files/displaying_studies.htm"><b>2</b></a> <a href="../files/creating_a_new_study.htm"><b>3</b></a> <a href="../files/about_salome_pro_help_system.htm"><b>4</b></a> <a href="../files/setting_preferences.htm"><b>5</b></a> </nobr><br><nobr>wish8 <a href="../files/readme.html"><b>1</b></a> <a href="../files/installing_salome_pro.htm"><b>2</b></a> </nobr><br><nobr>within <a href="../files/editing_studies.htm"><b>1</b></a> <a href="../files/about_salome_pro_architecture.htm"><b>2</b></a> <a href="../files/using_registry.htm"><b>3</b></a> <a href="../files/setting_preferences.htm"><b>4</b></a> <a href="../files/salome_pro_desktop.htm"><b>5</b></a> </nobr><br><nobr>without <a href="../files/readme.html"><b>1</b></a> <a href="../files/installing_salome_pro.htm"><b>2</b></a> <a href="../files/copyright_notice.htm"><b>3</b></a> <a href="../files/about_salome_pro_architecture.htm"><b>4</b></a> <a href="../files/using_usecase_browser.htm"><b>5</b></a> <a href="../files/running_salome_pro.htm"><b>6</b></a> </nobr><br><nobr>wizard <a href="../files/readme.html"><b>1</b></a> <a href="../files/installing_salome_pro.htm"><b>2</b></a> </nobr><br><nobr><a name="bms_WO"></a><a name="subkey_WO"></a>won <a href="../files/readme.html"><b>1</b></a> <a href="../files/installing_salome_pro.htm"><b>2</b></a> </nobr><br><a href="../files/using_left-hand_tabs.htm"><b>word</b></a> <br><a href="../files/using_left-hand_tabs.htm"><b>words</b></a> <br><nobr>work <a href="../files/readme.html"><b>1</b></a> <a href="../files/installing_salome_pro.htm"><b>2</b></a> <a href="../files/getting_started2.htm"><b>3</b></a> <a href="../files/about_salome_pro_architecture.htm"><b>4</b></a> </nobr><br><nobr>working <a href="../files/getting_started2.htm"><b>1</b></a> <a href="../files/using_left-hand_tabs.htm"><b>2</b></a> <a href="../files/saving_a_study.htm"><b>3</b></a> </nobr><br><nobr>would <a href="../files/readme.html"><b>1</b></a> <a href="../files/installing_salome_pro.htm"><b>2</b></a> <a href="../files/displaying_hiding_toolbars.htm"><b>3</b></a> <a href="../files/using_usecase_browser.htm"><b>4</b></a> <a href="../files/using_catalog_generator.htm"><b>5</b></a> <a href="../files/saving_a_study.htm"><b>6</b></a> </nobr><br><a name="bms_WR"></a><a name="subkey_WR"></a><a href="../files/saving_a_study.htm"><b>write</b></a> <br><a href="../files/copyright_notice.htm"><b>writing</b></a> <br><a href="../files/saving_a_study.htm"><b>written</b></a> <br><nobr>wrong <a href="../files/readme.html"><b>1</b></a> <a href="../files/installing_salome_pro.htm"><b>2</b></a> </nobr><br><a name="bms_WW"></a><a name="subkey_WW"></a><a href="../files/about_salome_pro_architecture.htm"><b>www</b></a> <br>\r
+<nobr><a name="bm_X"></a><a name="subkey_X{"></a>x <a href="../kernel/running_salome_pro.htm"><b>1</b></a> <a href="../kernel/readme.html"><b>2</b></a> </nobr><br><nobr><a name="bms_XM"></a><a name="subkey_XM"></a>xml <a href="../kernel/running_salome_pro.htm"><b>1</b></a> <a href="../kernel/readme.html"><b>2</b></a> <a href="../kernel/using_catalog_generator.htm"><b>3</b></a> </nobr><br><a name="bms_XT"></a><a name="subkey_XT"></a><a href="../kernel/running_salome_pro.htm"><b>xterm</b></a> <br>\r
 <br><br>\r
-<a name="bm_X"></a><a name="subkey_X{"></a><a href="../files/running_salome_pro.htm"><b>x</b></a> <br><nobr><a name="bms_XM"></a><a name="subkey_XM"></a>xml <a href="../files/readme.html"><b>1</b></a> <a href="../files/using_catalog_generator.htm"><b>2</b></a> <a href="../files/running_salome_pro.htm"><b>3</b></a> </nobr><br><br><br></p><p class="ftsbody" align="center"><a href="whlstf9.htm" target="_self" title="previous search group"><b>&gt;&gt;</b></a>\r
-\r
+<a name="bm_Y"></a><a name="subkey_Y{"></a><a href="../kernel/readme.html"><b>y</b></a> <br><a name="bms_YE"></a><a name="subkey_YE"></a><a href="../kernel/introduction.htm"><b>year</b></a> <br><a href="../kernel/getting_properties_of_the_study.htm"><b>yes</b></a> <br><a href="../kernel/readme.html"><b>yet</b></a> <br><nobr><a name="bms_YO"></a><a name="subkey_YO"></a>your <a href="../kernel/running_salome_pro.htm"><b>1</b></a> <a href="../kernel/readme.html"><b>2</b></a> <a href="../kernel/introduction_to_salome_pro.htm"><b>3</b></a> <a href="../kernel/getting_properties_of_the_study.htm"><b>4</b></a> <a href="../kernel/editing_studies.htm"><b>5</b></a> <a href="../kernel/displaying_studies.htm"><b>6</b></a> <a href="../kernel/creating_a_new_study.htm"><b>7</b></a> <a href="../kernel/using_usecase_browser.htm"><b>8</b></a> <a href="../kernel/using_left-hand_tabs.htm"><b>9</b></a> <a href="../kernel/using_catalog_generator.htm"><b>10</b></a> <a href="../kernel/saving_a_study.htm"><b>11</b></a> <a href="../kernel/salome_pro_desktop.htm"><b>12</b></a> </nobr><br>\r
+<br><br>\r
+<a name="bm_Z"></a><a name="subkey_ZO"></a><a href="../kernel/creating_a_new_study.htm"><b>zone</b></a> <br><a href="../kernel/salome_pro_desktop.htm"><b>zooming</b></a> <br><br><br></p>\r
 </body>\r
 \r
 </html>\r
index b0eb88a5ce29d26b2822657eef163aa87fee748d..6f124d4267bb1b890c2435f4887c9dbf52d7ad85 100755 (executable)
@@ -1,9 +1,9 @@
 <html>\r
 <head>\r
 <title>Search Words letter</title>\r
-<meta http-equiv="content-type" content="text/html; charset=iso-8859-1">\r
+\r
 <meta name="generator" content="RoboHelp by eHelp Corporation   www.ehelp.com">\r
-<meta name "description" content="WebHelp 2002">\r
+<meta name="description" content="WebHelp 5.50">\r
 <base target="bsscright">\r
 <style>\r
 <!--\r
@@ -35,9 +35,9 @@ body {background-color:White; }
 -->\r
 </style>\r
 </head>\r
-<body marginheight="0"  marginwidth="0">\r
+<body marginheight="0"  marginwidth="0" bgproperties="fixed">\r
 \r
-<p class="ftsheader"><a name="subkey_A"></a> <a href="whnvl32.htm#home" target="_self" title="back to top level"><b>^</b></a> <a href="whlstf0.htm#bm_A" target="ftslist" title="search letter AB"><b>AB</b></a> <a href="whlstf0.htm#bms_AC" target="ftslist" title="search letter AC"><b>AC</b></a> <a href="whlstf0.htm#bms_AD" target="ftslist" title="search letter AD"><b>AD</b></a> <a href="whlstf0.htm#bms_AF" target="ftslist" title="search letter AF"><b>AF</b></a> <a href="whlstf0.htm#bms_AG" target="ftslist" title="search letter AG"><b>AG</b></a> <a href="whlstf0.htm#bms_AL" target="ftslist" title="search letter AL"><b>AL</b></a> <a href="whlstf0.htm#bms_AM" target="ftslist" title="search letter AM"><b>AM</b></a> <a href="whlstf0.htm#bms_AN" target="ftslist" title="search letter AN"><b>AN</b></a> <a href="whlstf0.htm#bms_AP" target="ftslist" title="search letter AP"><b>AP</b></a> <a href="whlstf0.htm#bms_AR" target="ftslist" title="search letter AR"><b>AR</b></a> <a href="whlstf0.htm#bms_AS" target="ftslist" title="search letter AS"><b>AS</b></a> <a href="whlstf0.htm#bms_AT" target="ftslist" title="search letter AT"><b>AT</b></a> <a href="whlstf0.htm#bms_AU" target="ftslist" title="search letter AU"><b>AU</b></a> <a href="whlstf0.htm#bms_AV" target="ftslist" title="search letter AV"><b>AV</b></a> <a href="whlstf0.htm#bms_AW" target="ftslist" title="search letter AW"><b>AW</b></a>  <a href="whnvl32.htm#home" target="_self" title="back to top level"><b>^</b></a></p>\r
+<p class="ftsheader"><a name="subkey_{"></a> <a href="whnvl32.htm#home" target="_self" title="back to top level"><b>^</b></a> <a href="whlstf0.htm#bm_{" target="ftslist" title="search letter {N"><b>{N</b></a> <a href="whlstf0.htm#bms_{O" target="ftslist" title="search letter {O"><b>{O</b></a> <a href="whlstf0.htm#bms_{{" target="ftslist" title="search letter { "><b>{ </b></a> <a href="whlstf0.htm#bms_{D" target="ftslist" title="search letter {D"><b>{D</b></a>  <a href="whnvl32.htm#home" target="_self" title="back to top level"><b>^</b></a></p>\r
 \r
 </body>\r
 \r
index 3fde91aae1b71ab9ab6dcf3abfb32cda5adf742c..f0fd4ba06b0022144307f9260c06f128546f57e5 100755 (executable)
@@ -1,9 +1,9 @@
 <html>\r
 <head>\r
 <title>Search Words letter</title>\r
-<meta http-equiv="content-type" content="text/html; charset=iso-8859-1">\r
+\r
 <meta name="generator" content="RoboHelp by eHelp Corporation   www.ehelp.com">\r
-<meta name "description" content="WebHelp 2002">\r
+<meta name="description" content="WebHelp 5.50">\r
 <base target="bsscright">\r
 <style>\r
 <!--\r
@@ -35,9 +35,9 @@ body {background-color:White; }
 -->\r
 </style>\r
 </head>\r
-<body marginheight="0"  marginwidth="0">\r
+<body marginheight="0"  marginwidth="0" bgproperties="fixed">\r
 \r
-<p class="ftsheader"><a name="subkey_B"></a> <a href="whnvl32.htm#home" target="_self" title="back to top level"><b>^</b></a> <a href="whlstf0.htm#bm_B" target="ftslist" title="search letter B "><b>B </b></a> <a href="whlstf0.htm#bms_BA" target="ftslist" title="search letter BA"><b>BA</b></a> <a href="whlstf0.htm#bms_BE" target="ftslist" title="search letter BE"><b>BE</b></a> <a href="whlstf0.htm#bms_BI" target="ftslist" title="search letter BI"><b>BI</b></a> <a href="whlstf0.htm#bms_BL" target="ftslist" title="search letter BL"><b>BL</b></a> <a href="whlstf0.htm#bms_BM" target="ftslist" title="search letter BM"><b>BM</b></a> <a href="whlstf0.htm#bms_BO" target="ftslist" title="search letter BO"><b>BO</b></a> <a href="whlstf0.htm#bms_BR" target="ftslist" title="search letter BR"><b>BR</b></a> <a href="whlstf0.htm#bms_BU" target="ftslist" title="search letter BU"><b>BU</b></a>  <a href="whnvl32.htm#home" target="_self" title="back to top level"><b>^</b></a></p>\r
+<p class="ftsheader"><a name="subkey_A"></a> <a href="whnvl32.htm#home" target="_self" title="back to top level"><b>^</b></a> <a href="whlstf0.htm#bm_A" target="ftslist" title="search letter AB"><b>AB</b></a> <a href="whlstf0.htm#bms_AC" target="ftslist" title="search letter AC"><b>AC</b></a> <a href="whlstf0.htm#bms_AD" target="ftslist" title="search letter AD"><b>AD</b></a> <a href="whlstf0.htm#bms_AF" target="ftslist" title="search letter AF"><b>AF</b></a> <a href="whlstf0.htm#bms_AG" target="ftslist" title="search letter AG"><b>AG</b></a> <a href="whlstf0.htm#bms_AL" target="ftslist" title="search letter AL"><b>AL</b></a> <a href="whlstf0.htm#bms_AM" target="ftslist" title="search letter AM"><b>AM</b></a> <a href="whlstf0.htm#bms_AN" target="ftslist" title="search letter AN"><b>AN</b></a> <a href="whlstf0.htm#bms_AP" target="ftslist" title="search letter AP"><b>AP</b></a> <a href="whlstf0.htm#bms_AR" target="ftslist" title="search letter AR"><b>AR</b></a> <a href="whlstf0.htm#bms_AS" target="ftslist" title="search letter AS"><b>AS</b></a> <a href="whlstf0.htm#bms_AT" target="ftslist" title="search letter AT"><b>AT</b></a> <a href="whlstf0.htm#bms_AU" target="ftslist" title="search letter AU"><b>AU</b></a> <a href="whlstf0.htm#bms_AV" target="ftslist" title="search letter AV"><b>AV</b></a> <a href="whlstf0.htm#bms_AW" target="ftslist" title="search letter AW"><b>AW</b></a>  <a href="whnvl32.htm#home" target="_self" title="back to top level"><b>^</b></a></p>\r
 \r
 </body>\r
 \r
index a60db1c658c5a91a24af9776e69261758178b8bc..cfeab6545b29a48ab78c7a5b71e187e5088aedd4 100755 (executable)
@@ -1,9 +1,9 @@
 <html>\r
 <head>\r
 <title>Search Words letter</title>\r
-<meta http-equiv="content-type" content="text/html; charset=iso-8859-1">\r
+\r
 <meta name="generator" content="RoboHelp by eHelp Corporation   www.ehelp.com">\r
-<meta name "description" content="WebHelp 2002">\r
+<meta name="description" content="WebHelp 5.50">\r
 <base target="bsscright">\r
 <style>\r
 <!--\r
@@ -35,9 +35,9 @@ body {background-color:White; }
 -->\r
 </style>\r
 </head>\r
-<body marginheight="0"  marginwidth="0">\r
+<body marginheight="0"  marginwidth="0" bgproperties="fixed">\r
 \r
-<p class="ftsheader"><a name="subkey_K"></a> <a href="whnvl32.htm#home" target="_self" title="back to top level"><b>^</b></a> <a href="whlstf4.htm#bm_K" target="ftslist" title="search letter K "><b>K </b></a> <a href="whlstf4.htm#bms_KB" target="ftslist" title="search letter KB"><b>KB</b></a> <a href="whlstf4.htm#bms_KE" target="ftslist" title="search letter KE"><b>KE</b></a> <a href="whlstf4.htm#bms_KI" target="ftslist" title="search letter KI"><b>KI</b></a> <a href="whlstf4.htm#bms_KN" target="ftslist" title="search letter KN"><b>KN</b></a>  <a href="whnvl32.htm#home" target="_self" title="back to top level"><b>^</b></a></p>\r
+<p class="ftsheader"><a name="subkey_J"></a> <a href="whnvl32.htm#home" target="_self" title="back to top level"><b>^</b></a> <a href="whlstf3.htm#bm_J" target="ftslist" title="search letter JA"><b>JA</b></a> <a href="whlstf3.htm#bms_JP" target="ftslist" title="search letter JP"><b>JP</b></a> <a href="whlstf3.htm#bms_JU" target="ftslist" title="search letter JU"><b>JU</b></a>  <a href="whnvl32.htm#home" target="_self" title="back to top level"><b>^</b></a></p>\r
 \r
 </body>\r
 \r
index 4807946e23278917f174bf685f63633af6a77af8..dfd3496a119ba0ac25b5b2433f1f8d450953726f 100755 (executable)
@@ -1,9 +1,9 @@
 <html>\r
 <head>\r
 <title>Search Words letter</title>\r
-<meta http-equiv="content-type" content="text/html; charset=iso-8859-1">\r
+\r
 <meta name="generator" content="RoboHelp by eHelp Corporation   www.ehelp.com">\r
-<meta name "description" content="WebHelp 2002">\r
+<meta name="description" content="WebHelp 5.50">\r
 <base target="bsscright">\r
 <style>\r
 <!--\r
@@ -35,9 +35,9 @@ body {background-color:White; }
 -->\r
 </style>\r
 </head>\r
-<body marginheight="0"  marginwidth="0">\r
+<body marginheight="0"  marginwidth="0" bgproperties="fixed">\r
 \r
-<p class="ftsheader"><a name="subkey_L"></a> <a href="whnvl32.htm#home" target="_self" title="back to top level"><b>^</b></a> <a href="whlstf4.htm#bm_L" target="ftslist" title="search letter L "><b>L </b></a> <a href="whlstf4.htm#bms_LA" target="ftslist" title="search letter LA"><b>LA</b></a> <a href="whlstf4.htm#bms_LD" target="ftslist" title="search letter LD"><b>LD</b></a> <a href="whlstf4.htm#bms_LE" target="ftslist" title="search letter LE"><b>LE</b></a> <a href="whlstf4.htm#bms_LI" target="ftslist" title="search letter LI"><b>LI</b></a> <a href="whlstf4.htm#bms_LO" target="ftslist" title="search letter LO"><b>LO</b></a>  <a href="whnvl32.htm#home" target="_self" title="back to top level"><b>^</b></a></p>\r
+<p class="ftsheader"><a name="subkey_K"></a> <a href="whnvl32.htm#home" target="_self" title="back to top level"><b>^</b></a> <a href="whlstf3.htm#bm_K" target="ftslist" title="search letter K "><b>K </b></a> <a href="whlstf3.htm#bms_KB" target="ftslist" title="search letter KB"><b>KB</b></a> <a href="whlstf3.htm#bms_KE" target="ftslist" title="search letter KE"><b>KE</b></a> <a href="whlstf3.htm#bms_KI" target="ftslist" title="search letter KI"><b>KI</b></a> <a href="whlstf3.htm#bms_KN" target="ftslist" title="search letter KN"><b>KN</b></a>  <a href="whnvl32.htm#home" target="_self" title="back to top level"><b>^</b></a></p>\r
 \r
 </body>\r
 \r
index b7ecfb28e496570fd523472e697a8fac06d79f05..09f3a845a3fec2faba91e7667e57051570ad33a4 100755 (executable)
@@ -1,9 +1,9 @@
 <html>\r
 <head>\r
 <title>Search Words letter</title>\r
-<meta http-equiv="content-type" content="text/html; charset=iso-8859-1">\r
+\r
 <meta name="generator" content="RoboHelp by eHelp Corporation   www.ehelp.com">\r
-<meta name "description" content="WebHelp 2002">\r
+<meta name="description" content="WebHelp 5.50">\r
 <base target="bsscright">\r
 <style>\r
 <!--\r
@@ -35,9 +35,9 @@ body {background-color:White; }
 -->\r
 </style>\r
 </head>\r
-<body marginheight="0"  marginwidth="0">\r
+<body marginheight="0"  marginwidth="0" bgproperties="fixed">\r
 \r
-<p class="ftsheader"><a name="subkey_M"></a> <a href="whnvl32.htm#home" target="_self" title="back to top level"><b>^</b></a> <a href="whlstf4.htm#bm_M" target="ftslist" title="search letter M "><b>M </b></a> <a href="whlstf4.htm#bms_MA" target="ftslist" title="search letter MA"><b>MA</b></a> <a href="whlstf4.htm#bms_ME" target="ftslist" title="search letter ME"><b>ME</b></a> <a href="whlstf4.htm#bms_MI" target="ftslist" title="search letter MI"><b>MI</b></a> <a href="whlstf4.htm#bms_MO" target="ftslist" title="search letter MO"><b>MO</b></a> <a href="whlstf4.htm#bms_MT" target="ftslist" title="search letter MT"><b>MT</b></a> <a href="whlstf4.htm#bms_MU" target="ftslist" title="search letter MU"><b>MU</b></a>  <a href="whnvl32.htm#home" target="_self" title="back to top level"><b>^</b></a></p>\r
+<p class="ftsheader"><a name="subkey_L"></a> <a href="whnvl32.htm#home" target="_self" title="back to top level"><b>^</b></a> <a href="whlstf3.htm#bm_L" target="ftslist" title="search letter L "><b>L </b></a> <a href="whlstf3.htm#bms_LA" target="ftslist" title="search letter LA"><b>LA</b></a> <a href="whlstf3.htm#bms_LD" target="ftslist" title="search letter LD"><b>LD</b></a> <a href="whlstf3.htm#bms_LE" target="ftslist" title="search letter LE"><b>LE</b></a> <a href="whlstf4.htm#bms_LI" target="ftslist" title="search letter LI"><b>LI</b></a> <a href="whlstf4.htm#bms_LO" target="ftslist" title="search letter LO"><b>LO</b></a>  <a href="whnvl32.htm#home" target="_self" title="back to top level"><b>^</b></a></p>\r
 \r
 </body>\r
 \r
index 281f4af30c9278dfe5388d516da572e591b212af..a2b41feaf3a9a4b65561aa62324bbb524533e7d5 100755 (executable)
@@ -1,9 +1,9 @@
 <html>\r
 <head>\r
 <title>Search Words letter</title>\r
-<meta http-equiv="content-type" content="text/html; charset=iso-8859-1">\r
+\r
 <meta name="generator" content="RoboHelp by eHelp Corporation   www.ehelp.com">\r
-<meta name "description" content="WebHelp 2002">\r
+<meta name="description" content="WebHelp 5.50">\r
 <base target="bsscright">\r
 <style>\r
 <!--\r
@@ -35,9 +35,9 @@ body {background-color:White; }
 -->\r
 </style>\r
 </head>\r
-<body marginheight="0"  marginwidth="0">\r
+<body marginheight="0"  marginwidth="0" bgproperties="fixed">\r
 \r
-<p class="ftsheader"><a name="subkey_N"></a> <a href="whnvl32.htm#home" target="_self" title="back to top level"><b>^</b></a> <a href="whlstf5.htm#bm_N" target="ftslist" title="search letter N "><b>N </b></a> <a href="whlstf5.htm#bms_NA" target="ftslist" title="search letter NA"><b>NA</b></a> <a href="whlstf5.htm#bms_NE" target="ftslist" title="search letter NE"><b>NE</b></a> <a href="whlstf5.htm#bms_NO" target="ftslist" title="search letter NO"><b>NO</b></a> <a href="whlstf5.htm#bms_NU" target="ftslist" title="search letter NU"><b>NU</b></a>  <a href="whnvl32.htm#home" target="_self" title="back to top level"><b>^</b></a></p>\r
+<p class="ftsheader"><a name="subkey_M"></a> <a href="whnvl32.htm#home" target="_self" title="back to top level"><b>^</b></a> <a href="whlstf4.htm#bm_M" target="ftslist" title="search letter M "><b>M </b></a> <a href="whlstf4.htm#bms_MA" target="ftslist" title="search letter MA"><b>MA</b></a> <a href="whlstf4.htm#bms_ME" target="ftslist" title="search letter ME"><b>ME</b></a> <a href="whlstf4.htm#bms_MI" target="ftslist" title="search letter MI"><b>MI</b></a> <a href="whlstf4.htm#bms_MO" target="ftslist" title="search letter MO"><b>MO</b></a> <a href="whlstf4.htm#bms_MT" target="ftslist" title="search letter MT"><b>MT</b></a> <a href="whlstf4.htm#bms_MU" target="ftslist" title="search letter MU"><b>MU</b></a>  <a href="whnvl32.htm#home" target="_self" title="back to top level"><b>^</b></a></p>\r
 \r
 </body>\r
 \r
index af188aaf8716421e227011cfe2e5a080361fa906..57579bfc6e28f0ada13ee951f2f01002d972c001 100755 (executable)
@@ -1,9 +1,9 @@
 <html>\r
 <head>\r
 <title>Search Words letter</title>\r
-<meta http-equiv="content-type" content="text/html; charset=iso-8859-1">\r
+\r
 <meta name="generator" content="RoboHelp by eHelp Corporation   www.ehelp.com">\r
-<meta name "description" content="WebHelp 2002">\r
+<meta name="description" content="WebHelp 5.50">\r
 <base target="bsscright">\r
 <style>\r
 <!--\r
@@ -35,9 +35,9 @@ body {background-color:White; }
 -->\r
 </style>\r
 </head>\r
-<body marginheight="0"  marginwidth="0">\r
+<body marginheight="0"  marginwidth="0" bgproperties="fixed">\r
 \r
-<p class="ftsheader"><a name="subkey_O"></a> <a href="whnvl32.htm#home" target="_self" title="back to top level"><b>^</b></a> <a href="whlstf5.htm#bm_O" target="ftslist" title="search letter OB"><b>OB</b></a> <a href="whlstf5.htm#bms_OC" target="ftslist" title="search letter OC"><b>OC</b></a> <a href="whlstf5.htm#bms_OF" target="ftslist" title="search letter OF"><b>OF</b></a> <a href="whlstf5.htm#bms_OK" target="ftslist" title="search letter OK"><b>OK</b></a> <a href="whlstf5.htm#bms_OM" target="ftslist" title="search letter OM"><b>OM</b></a> <a href="whlstf5.htm#bms_ON" target="ftslist" title="search letter ON"><b>ON</b></a> <a href="whlstf5.htm#bms_OP" target="ftslist" title="search letter OP"><b>OP</b></a> <a href="whlstf5.htm#bms_OR" target="ftslist" title="search letter OR"><b>OR</b></a> <a href="whlstf5.htm#bms_OS" target="ftslist" title="search letter OS"><b>OS</b></a> <a href="whlstf5.htm#bms_OT" target="ftslist" title="search letter OT"><b>OT</b></a> <a href="whlstf5.htm#bms_OU" target="ftslist" title="search letter OU"><b>OU</b></a> <a href="whlstf5.htm#bms_OV" target="ftslist" title="search letter OV"><b>OV</b></a> <a href="whlstf5.htm#bms_OW" target="ftslist" title="search letter OW"><b>OW</b></a>  <a href="whnvl32.htm#home" target="_self" title="back to top level"><b>^</b></a></p>\r
+<p class="ftsheader"><a name="subkey_N"></a> <a href="whnvl32.htm#home" target="_self" title="back to top level"><b>^</b></a> <a href="whlstf4.htm#bm_N" target="ftslist" title="search letter N "><b>N </b></a> <a href="whlstf4.htm#bms_NA" target="ftslist" title="search letter NA"><b>NA</b></a> <a href="whlstf4.htm#bms_NE" target="ftslist" title="search letter NE"><b>NE</b></a> <a href="whlstf4.htm#bms_NO" target="ftslist" title="search letter NO"><b>NO</b></a> <a href="whlstf4.htm#bms_NU" target="ftslist" title="search letter NU"><b>NU</b></a>  <a href="whnvl32.htm#home" target="_self" title="back to top level"><b>^</b></a></p>\r
 \r
 </body>\r
 \r
index cb387380409fb061fe8155fb28a3435230e8d98d..15a85d41c04bb749901357bdfe1284562ec79b01 100755 (executable)
@@ -1,9 +1,9 @@
 <html>\r
 <head>\r
 <title>Search Words letter</title>\r
-<meta http-equiv="content-type" content="text/html; charset=iso-8859-1">\r
+\r
 <meta name="generator" content="RoboHelp by eHelp Corporation   www.ehelp.com">\r
-<meta name "description" content="WebHelp 2002">\r
+<meta name="description" content="WebHelp 5.50">\r
 <base target="bsscright">\r
 <style>\r
 <!--\r
@@ -35,9 +35,9 @@ body {background-color:White; }
 -->\r
 </style>\r
 </head>\r
-<body marginheight="0"  marginwidth="0">\r
+<body marginheight="0"  marginwidth="0" bgproperties="fixed">\r
 \r
-<p class="ftsheader"><a name="subkey_P"></a> <a href="whnvl32.htm#home" target="_self" title="back to top level"><b>^</b></a> <a href="whlstf5.htm#bm_P" target="ftslist" title="search letter P "><b>P </b></a> <a href="whlstf5.htm#bms_PA" target="ftslist" title="search letter PA"><b>PA</b></a> <a href="whlstf5.htm#bms_PC" target="ftslist" title="search letter PC"><b>PC</b></a> <a href="whlstf5.htm#bms_PE" target="ftslist" title="search letter PE"><b>PE</b></a> <a href="whlstf5.htm#bms_PH" target="ftslist" title="search letter PH"><b>PH</b></a> <a href="whlstf5.htm#bms_PI" target="ftslist" title="search letter PI"><b>PI</b></a> <a href="whlstf5.htm#bms_PL" target="ftslist" title="search letter PL"><b>PL</b></a> <a href="whlstf5.htm#bms_PN" target="ftslist" title="search letter PN"><b>PN</b></a> <a href="whlstf5.htm#bms_PO" target="ftslist" title="search letter PO"><b>PO</b></a> <a href="whlstf5.htm#bms_PR" target="ftslist" title="search letter PR"><b>PR</b></a> <a href="whlstf6.htm#bms_PU" target="ftslist" title="search letter PU"><b>PU</b></a> <a href="whlstf6.htm#bms_PY" target="ftslist" title="search letter PY"><b>PY</b></a>  <a href="whnvl32.htm#home" target="_self" title="back to top level"><b>^</b></a></p>\r
+<p class="ftsheader"><a name="subkey_O"></a> <a href="whnvl32.htm#home" target="_self" title="back to top level"><b>^</b></a> <a href="whlstf4.htm#bm_O" target="ftslist" title="search letter OB"><b>OB</b></a> <a href="whlstf4.htm#bms_OC" target="ftslist" title="search letter OC"><b>OC</b></a> <a href="whlstf4.htm#bms_OF" target="ftslist" title="search letter OF"><b>OF</b></a> <a href="whlstf5.htm#bms_OK" target="ftslist" title="search letter OK"><b>OK</b></a> <a href="whlstf5.htm#bms_OM" target="ftslist" title="search letter OM"><b>OM</b></a> <a href="whlstf5.htm#bms_ON" target="ftslist" title="search letter ON"><b>ON</b></a> <a href="whlstf5.htm#bms_OP" target="ftslist" title="search letter OP"><b>OP</b></a> <a href="whlstf5.htm#bms_OR" target="ftslist" title="search letter OR"><b>OR</b></a> <a href="whlstf5.htm#bms_OS" target="ftslist" title="search letter OS"><b>OS</b></a> <a href="whlstf5.htm#bms_OT" target="ftslist" title="search letter OT"><b>OT</b></a> <a href="whlstf5.htm#bms_OU" target="ftslist" title="search letter OU"><b>OU</b></a> <a href="whlstf5.htm#bms_OV" target="ftslist" title="search letter OV"><b>OV</b></a> <a href="whlstf5.htm#bms_OW" target="ftslist" title="search letter OW"><b>OW</b></a>  <a href="whnvl32.htm#home" target="_self" title="back to top level"><b>^</b></a></p>\r
 \r
 </body>\r
 \r
index 745d1cbb79688cbf372461cf7216fe14cb891d00..c39735a3bffb739d9c392e9745f728d876e4401a 100755 (executable)
@@ -1,9 +1,9 @@
 <html>\r
 <head>\r
 <title>Search Words letter</title>\r
-<meta http-equiv="content-type" content="text/html; charset=iso-8859-1">\r
+\r
 <meta name="generator" content="RoboHelp by eHelp Corporation   www.ehelp.com">\r
-<meta name "description" content="WebHelp 2002">\r
+<meta name="description" content="WebHelp 5.50">\r
 <base target="bsscright">\r
 <style>\r
 <!--\r
@@ -35,9 +35,9 @@ body {background-color:White; }
 -->\r
 </style>\r
 </head>\r
-<body marginheight="0"  marginwidth="0">\r
+<body marginheight="0"  marginwidth="0" bgproperties="fixed">\r
 \r
-<p class="ftsheader"><a name="subkey_Q"></a> <a href="whnvl32.htm#home" target="_self" title="back to top level"><b>^</b></a> <a href="whlstf6.htm#bm_Q" target="ftslist" title="search letter QT"><b>QT</b></a> <a href="whlstf6.htm#bms_QU" target="ftslist" title="search letter QU"><b>QU</b></a> <a href="whlstf6.htm#bms_QW" target="ftslist" title="search letter QW"><b>QW</b></a>  <a href="whnvl32.htm#home" target="_self" title="back to top level"><b>^</b></a></p>\r
+<p class="ftsheader"><a name="subkey_P"></a> <a href="whnvl32.htm#home" target="_self" title="back to top level"><b>^</b></a> <a href="whlstf5.htm#bm_P" target="ftslist" title="search letter P "><b>P </b></a> <a href="whlstf5.htm#bms_PA" target="ftslist" title="search letter PA"><b>PA</b></a> <a href="whlstf5.htm#bms_PC" target="ftslist" title="search letter PC"><b>PC</b></a> <a href="whlstf5.htm#bms_PE" target="ftslist" title="search letter PE"><b>PE</b></a> <a href="whlstf5.htm#bms_PH" target="ftslist" title="search letter PH"><b>PH</b></a> <a href="whlstf5.htm#bms_PI" target="ftslist" title="search letter PI"><b>PI</b></a> <a href="whlstf5.htm#bms_PL" target="ftslist" title="search letter PL"><b>PL</b></a> <a href="whlstf5.htm#bms_PN" target="ftslist" title="search letter PN"><b>PN</b></a> <a href="whlstf5.htm#bms_PO" target="ftslist" title="search letter PO"><b>PO</b></a> <a href="whlstf5.htm#bms_PR" target="ftslist" title="search letter PR"><b>PR</b></a> <a href="whlstf5.htm#bms_PU" target="ftslist" title="search letter PU"><b>PU</b></a> <a href="whlstf5.htm#bms_PY" target="ftslist" title="search letter PY"><b>PY</b></a>  <a href="whnvl32.htm#home" target="_self" title="back to top level"><b>^</b></a></p>\r
 \r
 </body>\r
 \r
index 2735720815f5b9391724958b8149b4dc21911028..08695d97a8dc88cddb4c2d1f600605a2b411c01e 100755 (executable)
@@ -1,9 +1,9 @@
 <html>\r
 <head>\r
 <title>Search Words letter</title>\r
-<meta http-equiv="content-type" content="text/html; charset=iso-8859-1">\r
+\r
 <meta name="generator" content="RoboHelp by eHelp Corporation   www.ehelp.com">\r
-<meta name "description" content="WebHelp 2002">\r
+<meta name="description" content="WebHelp 5.50">\r
 <base target="bsscright">\r
 <style>\r
 <!--\r
@@ -35,9 +35,9 @@ body {background-color:White; }
 -->\r
 </style>\r
 </head>\r
-<body marginheight="0"  marginwidth="0">\r
+<body marginheight="0"  marginwidth="0" bgproperties="fixed">\r
 \r
-<p class="ftsheader"><a name="subkey_R"></a> <a href="whnvl32.htm#home" target="_self" title="back to top level"><b>^</b></a> <a href="whlstf6.htm#bm_R" target="ftslist" title="search letter RA"><b>RA</b></a> <a href="whlstf6.htm#bms_RC" target="ftslist" title="search letter RC"><b>RC</b></a> <a href="whlstf6.htm#bms_RE" target="ftslist" title="search letter RE"><b>RE</b></a> <a href="whlstf6.htm#bms_RI" target="ftslist" title="search letter RI"><b>RI</b></a> <a href="whlstf6.htm#bms_RO" target="ftslist" title="search letter RO"><b>RO</b></a> <a href="whlstf6.htm#bms_RU" target="ftslist" title="search letter RU"><b>RU</b></a>  <a href="whnvl32.htm#home" target="_self" title="back to top level"><b>^</b></a></p>\r
+<p class="ftsheader"><a name="subkey_Q"></a> <a href="whnvl32.htm#home" target="_self" title="back to top level"><b>^</b></a> <a href="whlstf5.htm#bm_Q" target="ftslist" title="search letter QT"><b>QT</b></a> <a href="whlstf5.htm#bms_QU" target="ftslist" title="search letter QU"><b>QU</b></a> <a href="whlstf6.htm#bms_QW" target="ftslist" title="search letter QW"><b>QW</b></a>  <a href="whnvl32.htm#home" target="_self" title="back to top level"><b>^</b></a></p>\r
 \r
 </body>\r
 \r
index 98128923e79538dd6e20d1ff675acbf813fe9cfd..d37ec3dbbde463eafb625a7d5a16089f77fc47f3 100755 (executable)
@@ -1,9 +1,9 @@
 <html>\r
 <head>\r
 <title>Search Words letter</title>\r
-<meta http-equiv="content-type" content="text/html; charset=iso-8859-1">\r
+\r
 <meta name="generator" content="RoboHelp by eHelp Corporation   www.ehelp.com">\r
-<meta name "description" content="WebHelp 2002">\r
+<meta name="description" content="WebHelp 5.50">\r
 <base target="bsscright">\r
 <style>\r
 <!--\r
@@ -35,9 +35,9 @@ body {background-color:White; }
 -->\r
 </style>\r
 </head>\r
-<body marginheight="0"  marginwidth="0">\r
+<body marginheight="0"  marginwidth="0" bgproperties="fixed">\r
 \r
-<p class="ftsheader"><a name="subkey_S"></a> <a href="whnvl32.htm#home" target="_self" title="back to top level"><b>^</b></a> <a href="whlstf6.htm#bm_S" target="ftslist" title="search letter S "><b>S </b></a> <a href="whlstf6.htm#bms_SA" target="ftslist" title="search letter SA"><b>SA</b></a> <a href="whlstf6.htm#bms_SC" target="ftslist" title="search letter SC"><b>SC</b></a> <a href="whlstf6.htm#bms_SE" target="ftslist" title="search letter SE"><b>SE</b></a> <a href="whlstf7.htm#bms_SH" target="ftslist" title="search letter SH"><b>SH</b></a> <a href="whlstf7.htm#bms_SI" target="ftslist" title="search letter SI"><b>SI</b></a> <a href="whlstf7.htm#bms_SK" target="ftslist" title="search letter SK"><b>SK</b></a> <a href="whlstf7.htm#bms_SM" target="ftslist" title="search letter SM"><b>SM</b></a> <a href="whlstf7.htm#bms_SO" target="ftslist" title="search letter SO"><b>SO</b></a> <a href="whlstf7.htm#bms_SP" target="ftslist" title="search letter SP"><b>SP</b></a> <a href="whlstf7.htm#bms_SR" target="ftslist" title="search letter SR"><b>SR</b></a> <a href="whlstf7.htm#bms_ST" target="ftslist" title="search letter ST"><b>ST</b></a> <a href="whlstf7.htm#bms_SU" target="ftslist" title="search letter SU"><b>SU</b></a> <a href="whlstf7.htm#bms_SW" target="ftslist" title="search letter SW"><b>SW</b></a> <a href="whlstf7.htm#bms_SY" target="ftslist" title="search letter SY"><b>SY</b></a>  <a href="whnvl32.htm#home" target="_self" title="back to top level"><b>^</b></a></p>\r
+<p class="ftsheader"><a name="subkey_R"></a> <a href="whnvl32.htm#home" target="_self" title="back to top level"><b>^</b></a> <a href="whlstf6.htm#bm_R" target="ftslist" title="search letter RA"><b>RA</b></a> <a href="whlstf6.htm#bms_RC" target="ftslist" title="search letter RC"><b>RC</b></a> <a href="whlstf6.htm#bms_RE" target="ftslist" title="search letter RE"><b>RE</b></a> <a href="whlstf6.htm#bms_RI" target="ftslist" title="search letter RI"><b>RI</b></a> <a href="whlstf6.htm#bms_RO" target="ftslist" title="search letter RO"><b>RO</b></a> <a href="whlstf6.htm#bms_RU" target="ftslist" title="search letter RU"><b>RU</b></a>  <a href="whnvl32.htm#home" target="_self" title="back to top level"><b>^</b></a></p>\r
 \r
 </body>\r
 \r
index 8bc2085078aeeee06d9911d78482819403f9a106..fb4a1b14d13ce0e397185b2d010aa431c74a52d1 100755 (executable)
@@ -1,9 +1,9 @@
 <html>\r
 <head>\r
 <title>Search Words letter</title>\r
-<meta http-equiv="content-type" content="text/html; charset=iso-8859-1">\r
+\r
 <meta name="generator" content="RoboHelp by eHelp Corporation   www.ehelp.com">\r
-<meta name "description" content="WebHelp 2002">\r
+<meta name="description" content="WebHelp 5.50">\r
 <base target="bsscright">\r
 <style>\r
 <!--\r
@@ -35,9 +35,9 @@ body {background-color:White; }
 -->\r
 </style>\r
 </head>\r
-<body marginheight="0"  marginwidth="0">\r
+<body marginheight="0"  marginwidth="0" bgproperties="fixed">\r
 \r
-<p class="ftsheader"><a name="subkey_T"></a> <a href="whnvl32.htm#home" target="_self" title="back to top level"><b>^</b></a> <a href="whlstf7.htm#bm_T" target="ftslist" title="search letter T "><b>T </b></a> <a href="whlstf7.htm#bms_TA" target="ftslist" title="search letter TA"><b>TA</b></a> <a href="whlstf7.htm#bms_TC" target="ftslist" title="search letter TC"><b>TC</b></a> <a href="whlstf7.htm#bms_TE" target="ftslist" title="search letter TE"><b>TE</b></a> <a href="whlstf7.htm#bms_TH" target="ftslist" title="search letter TH"><b>TH</b></a> <a href="whlstf8.htm#bms_TI" target="ftslist" title="search letter TI"><b>TI</b></a> <a href="whlstf8.htm#bms_TM" target="ftslist" title="search letter TM"><b>TM</b></a> <a href="whlstf8.htm#bms_TO" target="ftslist" title="search letter TO"><b>TO</b></a> <a href="whlstf8.htm#bms_TR" target="ftslist" title="search letter TR"><b>TR</b></a> <a href="whlstf8.htm#bms_TW" target="ftslist" title="search letter TW"><b>TW</b></a> <a href="whlstf8.htm#bms_TY" target="ftslist" title="search letter TY"><b>TY</b></a>  <a href="whnvl32.htm#home" target="_self" title="back to top level"><b>^</b></a></p>\r
+<p class="ftsheader"><a name="subkey_S"></a> <a href="whnvl32.htm#home" target="_self" title="back to top level"><b>^</b></a> <a href="whlstf6.htm#bm_S" target="ftslist" title="search letter S "><b>S </b></a> <a href="whlstf6.htm#bms_SA" target="ftslist" title="search letter SA"><b>SA</b></a> <a href="whlstf6.htm#bms_SC" target="ftslist" title="search letter SC"><b>SC</b></a> <a href="whlstf6.htm#bms_SE" target="ftslist" title="search letter SE"><b>SE</b></a> <a href="whlstf6.htm#bms_SH" target="ftslist" title="search letter SH"><b>SH</b></a> <a href="whlstf6.htm#bms_SI" target="ftslist" title="search letter SI"><b>SI</b></a> <a href="whlstf7.htm#bms_SK" target="ftslist" title="search letter SK"><b>SK</b></a> <a href="whlstf7.htm#bms_SM" target="ftslist" title="search letter SM"><b>SM</b></a> <a href="whlstf7.htm#bms_SO" target="ftslist" title="search letter SO"><b>SO</b></a> <a href="whlstf7.htm#bms_SP" target="ftslist" title="search letter SP"><b>SP</b></a> <a href="whlstf7.htm#bms_SR" target="ftslist" title="search letter SR"><b>SR</b></a> <a href="whlstf7.htm#bms_ST" target="ftslist" title="search letter ST"><b>ST</b></a> <a href="whlstf7.htm#bms_SU" target="ftslist" title="search letter SU"><b>SU</b></a> <a href="whlstf7.htm#bms_SW" target="ftslist" title="search letter SW"><b>SW</b></a> <a href="whlstf7.htm#bms_SY" target="ftslist" title="search letter SY"><b>SY</b></a>  <a href="whnvl32.htm#home" target="_self" title="back to top level"><b>^</b></a></p>\r
 \r
 </body>\r
 \r
index 62172d16783c12071734be70d7056cce1d5fbfe8..c83dd9bd09aa3e99311f3983183a81bad50340ff 100755 (executable)
@@ -1,9 +1,9 @@
 <html>\r
 <head>\r
 <title>Search Words letter</title>\r
-<meta http-equiv="content-type" content="text/html; charset=iso-8859-1">\r
+\r
 <meta name="generator" content="RoboHelp by eHelp Corporation   www.ehelp.com">\r
-<meta name "description" content="WebHelp 2002">\r
+<meta name="description" content="WebHelp 5.50">\r
 <base target="bsscright">\r
 <style>\r
 <!--\r
@@ -35,9 +35,9 @@ body {background-color:White; }
 -->\r
 </style>\r
 </head>\r
-<body marginheight="0"  marginwidth="0">\r
+<body marginheight="0"  marginwidth="0" bgproperties="fixed">\r
 \r
-<p class="ftsheader"><a name="subkey_C"></a> <a href="whnvl32.htm#home" target="_self" title="back to top level"><b>^</b></a> <a href="whlstf0.htm#bm_C" target="ftslist" title="search letter C "><b>C </b></a> <a href="whlstf0.htm#bms_CA" target="ftslist" title="search letter CA"><b>CA</b></a> <a href="whlstf1.htm#bms_CH" target="ftslist" title="search letter CH"><b>CH</b></a> <a href="whlstf1.htm#bms_CL" target="ftslist" title="search letter CL"><b>CL</b></a> <a href="whlstf1.htm#bms_CO" target="ftslist" title="search letter CO"><b>CO</b></a> <a href="whlstf1.htm#bms_CP" target="ftslist" title="search letter CP"><b>CP</b></a> <a href="whlstf1.htm#bms_CR" target="ftslist" title="search letter CR"><b>CR</b></a> <a href="whlstf1.htm#bms_CS" target="ftslist" title="search letter CS"><b>CS</b></a> <a href="whlstf1.htm#bms_CU" target="ftslist" title="search letter CU"><b>CU</b></a>  <a href="whnvl32.htm#home" target="_self" title="back to top level"><b>^</b></a></p>\r
+<p class="ftsheader"><a name="subkey_B"></a> <a href="whnvl32.htm#home" target="_self" title="back to top level"><b>^</b></a> <a href="whlstf0.htm#bm_B" target="ftslist" title="search letter B "><b>B </b></a> <a href="whlstf0.htm#bms_BA" target="ftslist" title="search letter BA"><b>BA</b></a> <a href="whlstf0.htm#bms_BE" target="ftslist" title="search letter BE"><b>BE</b></a> <a href="whlstf0.htm#bms_BI" target="ftslist" title="search letter BI"><b>BI</b></a> <a href="whlstf0.htm#bms_BL" target="ftslist" title="search letter BL"><b>BL</b></a> <a href="whlstf0.htm#bms_BM" target="ftslist" title="search letter BM"><b>BM</b></a> <a href="whlstf0.htm#bms_BO" target="ftslist" title="search letter BO"><b>BO</b></a> <a href="whlstf0.htm#bms_BR" target="ftslist" title="search letter BR"><b>BR</b></a> <a href="whlstf0.htm#bms_BU" target="ftslist" title="search letter BU"><b>BU</b></a>  <a href="whnvl32.htm#home" target="_self" title="back to top level"><b>^</b></a></p>\r
 \r
 </body>\r
 \r
index f6e35c65a134404030cf078cfb6edf88d19b4f21..3e80d5ef54471151018712f263e4a8cdad79e4aa 100755 (executable)
@@ -1,9 +1,9 @@
 <html>\r
 <head>\r
 <title>Search Words letter</title>\r
-<meta http-equiv="content-type" content="text/html; charset=iso-8859-1">\r
+\r
 <meta name="generator" content="RoboHelp by eHelp Corporation   www.ehelp.com">\r
-<meta name "description" content="WebHelp 2002">\r
+<meta name="description" content="WebHelp 5.50">\r
 <base target="bsscright">\r
 <style>\r
 <!--\r
@@ -35,9 +35,9 @@ body {background-color:White; }
 -->\r
 </style>\r
 </head>\r
-<body marginheight="0"  marginwidth="0">\r
+<body marginheight="0"  marginwidth="0" bgproperties="fixed">\r
 \r
-<p class="ftsheader"><a name="subkey_U"></a> <a href="whnvl32.htm#home" target="_self" title="back to top level"><b>^</b></a> <a href="whlstf8.htm#bm_U" target="ftslist" title="search letter UL"><b>UL</b></a> <a href="whlstf8.htm#bms_UN" target="ftslist" title="search letter UN"><b>UN</b></a> <a href="whlstf8.htm#bms_UP" target="ftslist" title="search letter UP"><b>UP</b></a> <a href="whlstf8.htm#bms_US" target="ftslist" title="search letter US"><b>US</b></a> <a href="whlstf8.htm#bms_UT" target="ftslist" title="search letter UT"><b>UT</b></a>  <a href="whnvl32.htm#home" target="_self" title="back to top level"><b>^</b></a></p>\r
+<p class="ftsheader"><a name="subkey_T"></a> <a href="whnvl32.htm#home" target="_self" title="back to top level"><b>^</b></a> <a href="whlstf7.htm#bm_T" target="ftslist" title="search letter T "><b>T </b></a> <a href="whlstf7.htm#bms_TA" target="ftslist" title="search letter TA"><b>TA</b></a> <a href="whlstf7.htm#bms_TC" target="ftslist" title="search letter TC"><b>TC</b></a> <a href="whlstf7.htm#bms_TE" target="ftslist" title="search letter TE"><b>TE</b></a> <a href="whlstf7.htm#bms_TH" target="ftslist" title="search letter TH"><b>TH</b></a> <a href="whlstf7.htm#bms_TI" target="ftslist" title="search letter TI"><b>TI</b></a> <a href="whlstf7.htm#bms_TM" target="ftslist" title="search letter TM"><b>TM</b></a> <a href="whlstf7.htm#bms_TO" target="ftslist" title="search letter TO"><b>TO</b></a> <a href="whlstf7.htm#bms_TR" target="ftslist" title="search letter TR"><b>TR</b></a> <a href="whlstf7.htm#bms_TW" target="ftslist" title="search letter TW"><b>TW</b></a> <a href="whlstf7.htm#bms_TY" target="ftslist" title="search letter TY"><b>TY</b></a>  <a href="whnvl32.htm#home" target="_self" title="back to top level"><b>^</b></a></p>\r
 \r
 </body>\r
 \r
index ce544acdfbfbebe4eaa7be583a72912c8f188864..80e66da85e64de06ca742de81e61ce3bac1dff43 100755 (executable)
@@ -1,9 +1,9 @@
 <html>\r
 <head>\r
 <title>Search Words letter</title>\r
-<meta http-equiv="content-type" content="text/html; charset=iso-8859-1">\r
+\r
 <meta name="generator" content="RoboHelp by eHelp Corporation   www.ehelp.com">\r
-<meta name "description" content="WebHelp 2002">\r
+<meta name="description" content="WebHelp 5.50">\r
 <base target="bsscright">\r
 <style>\r
 <!--\r
@@ -35,9 +35,9 @@ body {background-color:White; }
 -->\r
 </style>\r
 </head>\r
-<body marginheight="0"  marginwidth="0">\r
+<body marginheight="0"  marginwidth="0" bgproperties="fixed">\r
 \r
-<p class="ftsheader"><a name="subkey_V"></a> <a href="whnvl32.htm#home" target="_self" title="back to top level"><b>^</b></a> <a href="whlstf8.htm#bm_V" target="ftslist" title="search letter V "><b>V </b></a> <a href="whlstf8.htm#bms_VA" target="ftslist" title="search letter VA"><b>VA</b></a> <a href="whlstf8.htm#bms_VE" target="ftslist" title="search letter VE"><b>VE</b></a> <a href="whlstf8.htm#bms_VI" target="ftslist" title="search letter VI"><b>VI</b></a> <a href="whlstf8.htm#bms_VT" target="ftslist" title="search letter VT"><b>VT</b></a>  <a href="whnvl32.htm#home" target="_self" title="back to top level"><b>^</b></a></p>\r
+<p class="ftsheader"><a name="subkey_U"></a> <a href="whnvl32.htm#home" target="_self" title="back to top level"><b>^</b></a> <a href="whlstf7.htm#bm_U" target="ftslist" title="search letter UL"><b>UL</b></a> <a href="whlstf7.htm#bms_UN" target="ftslist" title="search letter UN"><b>UN</b></a> <a href="whlstf8.htm#bms_UP" target="ftslist" title="search letter UP"><b>UP</b></a> <a href="whlstf8.htm#bms_US" target="ftslist" title="search letter US"><b>US</b></a> <a href="whlstf8.htm#bms_UT" target="ftslist" title="search letter UT"><b>UT</b></a>  <a href="whnvl32.htm#home" target="_self" title="back to top level"><b>^</b></a></p>\r
 \r
 </body>\r
 \r
index 794db768597aa4a200f2af89116397ac36d469b1..7445f3e03d3512a6917c0820522b4412ac5817aa 100755 (executable)
@@ -1,9 +1,9 @@
 <html>\r
 <head>\r
 <title>Search Words letter</title>\r
-<meta http-equiv="content-type" content="text/html; charset=iso-8859-1">\r
+\r
 <meta name="generator" content="RoboHelp by eHelp Corporation   www.ehelp.com">\r
-<meta name "description" content="WebHelp 2002">\r
+<meta name="description" content="WebHelp 5.50">\r
 <base target="bsscright">\r
 <style>\r
 <!--\r
@@ -35,9 +35,9 @@ body {background-color:White; }
 -->\r
 </style>\r
 </head>\r
-<body marginheight="0"  marginwidth="0">\r
+<body marginheight="0"  marginwidth="0" bgproperties="fixed">\r
 \r
-<p class="ftsheader"><a name="subkey_W"></a> <a href="whnvl32.htm#home" target="_self" title="back to top level"><b>^</b></a> <a href="whlstf8.htm#bm_W" target="ftslist" title="search letter WA"><b>WA</b></a> <a href="whlstf8.htm#bms_WE" target="ftslist" title="search letter WE"><b>WE</b></a> <a href="whlstf8.htm#bms_WH" target="ftslist" title="search letter WH"><b>WH</b></a> <a href="whlstf8.htm#bms_WI" target="ftslist" title="search letter WI"><b>WI</b></a> <a href="whlstf8.htm#bms_WO" target="ftslist" title="search letter WO"><b>WO</b></a> <a href="whlstf8.htm#bms_WR" target="ftslist" title="search letter WR"><b>WR</b></a> <a href="whlstf8.htm#bms_WW" target="ftslist" title="search letter WW"><b>WW</b></a>  <a href="whnvl32.htm#home" target="_self" title="back to top level"><b>^</b></a></p>\r
+<p class="ftsheader"><a name="subkey_V"></a> <a href="whnvl32.htm#home" target="_self" title="back to top level"><b>^</b></a> <a href="whlstf8.htm#bm_V" target="ftslist" title="search letter V "><b>V </b></a> <a href="whlstf8.htm#bms_VA" target="ftslist" title="search letter VA"><b>VA</b></a> <a href="whlstf8.htm#bms_VE" target="ftslist" title="search letter VE"><b>VE</b></a> <a href="whlstf8.htm#bms_VI" target="ftslist" title="search letter VI"><b>VI</b></a> <a href="whlstf8.htm#bms_VT" target="ftslist" title="search letter VT"><b>VT</b></a>  <a href="whnvl32.htm#home" target="_self" title="back to top level"><b>^</b></a></p>\r
 \r
 </body>\r
 \r
index c4dca80abc5e5e1fe1c7aec74b9c4999448097d7..fe90cdf4269df492b27638adc1fa2925498a696b 100755 (executable)
@@ -1,9 +1,9 @@
 <html>\r
 <head>\r
 <title>Search Words letter</title>\r
-<meta http-equiv="content-type" content="text/html; charset=iso-8859-1">\r
+\r
 <meta name="generator" content="RoboHelp by eHelp Corporation   www.ehelp.com">\r
-<meta name "description" content="WebHelp 2002">\r
+<meta name="description" content="WebHelp 5.50">\r
 <base target="bsscright">\r
 <style>\r
 <!--\r
@@ -35,9 +35,9 @@ body {background-color:White; }
 -->\r
 </style>\r
 </head>\r
-<body marginheight="0"  marginwidth="0">\r
+<body marginheight="0"  marginwidth="0" bgproperties="fixed">\r
 \r
-<p class="ftsheader"><a name="subkey_X"></a> <a href="whnvl32.htm#home" target="_self" title="back to top level"><b>^</b></a> <a href="whlstf8.htm#bm_X" target="ftslist" title="search letter X "><b>X </b></a> <a href="whlstf8.htm#bms_XM" target="ftslist" title="search letter XM"><b>XM</b></a> <a href="whlstf9.htm#bms_XT" target="ftslist" title="search letter XT"><b>XT</b></a>  <a href="whnvl32.htm#home" target="_self" title="back to top level"><b>^</b></a></p>\r
+<p class="ftsheader"><a name="subkey_W"></a> <a href="whnvl32.htm#home" target="_self" title="back to top level"><b>^</b></a> <a href="whlstf8.htm#bm_W" target="ftslist" title="search letter WA"><b>WA</b></a> <a href="whlstf8.htm#bms_WE" target="ftslist" title="search letter WE"><b>WE</b></a> <a href="whlstf8.htm#bms_WH" target="ftslist" title="search letter WH"><b>WH</b></a> <a href="whlstf8.htm#bms_WI" target="ftslist" title="search letter WI"><b>WI</b></a> <a href="whlstf8.htm#bms_WO" target="ftslist" title="search letter WO"><b>WO</b></a> <a href="whlstf8.htm#bms_WR" target="ftslist" title="search letter WR"><b>WR</b></a> <a href="whlstf8.htm#bms_WW" target="ftslist" title="search letter WW"><b>WW</b></a>  <a href="whnvl32.htm#home" target="_self" title="back to top level"><b>^</b></a></p>\r
 \r
 </body>\r
 \r
index ca7300540d5c0343a393a647961618a052dbb19f..1991f2778c43187cfacfa334a401079c48f3c6dd 100755 (executable)
@@ -1,9 +1,9 @@
 <html>\r
 <head>\r
 <title>Search Words letter</title>\r
-<meta http-equiv="content-type" content="text/html; charset=iso-8859-1">\r
+\r
 <meta name="generator" content="RoboHelp by eHelp Corporation   www.ehelp.com">\r
-<meta name "description" content="WebHelp 2002">\r
+<meta name="description" content="WebHelp 5.50">\r
 <base target="bsscright">\r
 <style>\r
 <!--\r
@@ -35,9 +35,9 @@ body {background-color:White; }
 -->\r
 </style>\r
 </head>\r
-<body marginheight="0"  marginwidth="0">\r
+<body marginheight="0"  marginwidth="0" bgproperties="fixed">\r
 \r
-<p class="ftsheader"><a name="subkey_Y"></a> <a href="whnvl32.htm#home" target="_self" title="back to top level"><b>^</b></a> <a href="whlstf9.htm#bm_Y" target="ftslist" title="search letter Y "><b>Y </b></a> <a href="whlstf9.htm#bms_YE" target="ftslist" title="search letter YE"><b>YE</b></a> <a href="whlstf9.htm#bms_YO" target="ftslist" title="search letter YO"><b>YO</b></a>  <a href="whnvl32.htm#home" target="_self" title="back to top level"><b>^</b></a></p>\r
+<p class="ftsheader"><a name="subkey_X"></a> <a href="whnvl32.htm#home" target="_self" title="back to top level"><b>^</b></a> <a href="whlstf8.htm#bm_X" target="ftslist" title="search letter X "><b>X </b></a> <a href="whlstf8.htm#bms_XM" target="ftslist" title="search letter XM"><b>XM</b></a> <a href="whlstf8.htm#bms_XT" target="ftslist" title="search letter XT"><b>XT</b></a>  <a href="whnvl32.htm#home" target="_self" title="back to top level"><b>^</b></a></p>\r
 \r
 </body>\r
 \r
diff --git a/doc/salome/gui/KERNEL/whgdata/whlstfl25.htm b/doc/salome/gui/KERNEL/whgdata/whlstfl25.htm
new file mode 100755 (executable)
index 0000000..b75673f
--- /dev/null
@@ -0,0 +1,45 @@
+<html>\r
+<head>\r
+<title>Search Words letter</title>\r
+\r
+<meta name="generator" content="RoboHelp by eHelp Corporation   www.ehelp.com">\r
+<meta name="description" content="WebHelp 5.50">\r
+<base target="bsscright">\r
+<style>\r
+<!--\r
+body {margin-left:1pt; margin-top:1pt; margin-right:1pt;font-family:Arial; font-size:9pt;}\r
+\r
+A:link {font-family:Arial; font-size:9pt; color:#000000;  font-style:normal;  text-decoration:none; }\r
+A:visited {font-family:Arial; font-size:9pt; color:#000000; font-style:normal;  text-decoration:none; }\r
+A:active {background-color:#cccccc;}\r
+A:hover {font-family:Arial; font-size:9pt; color:#007f00; font-style:normal;  text-decoration:underline; }\r
+\r
+.tabs {background-color:#c0c0c0;}\r
+.ftsheader {margin-left:10pt; margin-top:0pt;}\r
+.ftsbody {margin-left:10pt; margin-top:0pt;}\r
+.inactive {color:#666666;}\r
+.ftsheader {background-color:White; } \r
+\r
+body {background-color:White; } \r
+p {color:Black; } p {font-family:Tahoma; } p {font-size:8pt; } p {font-style:Normal; } p {text-decoration:none; } \r
+A:link {color:Black; } A:link {font-family:Tahoma; } A:link {font-size:8pt; } A:link {font-style:Normal; } A:link {text-decoration:none; } \r
+A:visited {color:Black; } A:visited {font-family:Tahoma; } A:visited {font-size:8pt; } A:visited {font-style:Normal; } A:visited {text-decoration:none; } \r
+A:active {background-color:Silver; } \r
+A:hover {color:Navy; } A:hover {font-family:Tahoma; } A:hover {font-size:8pt; } A:hover {font-style:Normal; } A:hover {text-decoration:underline; } \r
+\r
+-->\r
+</style>\r
+<style>\r
+<!--\r
+body {background-color:White; } \r
+-->\r
+</style>\r
+</head>\r
+<body marginheight="0"  marginwidth="0" bgproperties="fixed">\r
+\r
+<p class="ftsheader"><a name="subkey_Y"></a> <a href="whnvl32.htm#home" target="_self" title="back to top level"><b>^</b></a> <a href="whlstf8.htm#bm_Y" target="ftslist" title="search letter Y "><b>Y </b></a> <a href="whlstf8.htm#bms_YE" target="ftslist" title="search letter YE"><b>YE</b></a> <a href="whlstf8.htm#bms_YO" target="ftslist" title="search letter YO"><b>YO</b></a>  <a href="whnvl32.htm#home" target="_self" title="back to top level"><b>^</b></a></p>\r
+\r
+</body>\r
+\r
+</html>\r
+\r
index c0ba75eaa2b14abc61f85338df8f8eaabdb63ec5..3d781b64b10274807bccdbfe0b27683f2dd66394 100755 (executable)
@@ -1,9 +1,9 @@
 <html>\r
 <head>\r
 <title>Search Words letter</title>\r
-<meta http-equiv="content-type" content="text/html; charset=iso-8859-1">\r
+\r
 <meta name="generator" content="RoboHelp by eHelp Corporation   www.ehelp.com">\r
-<meta name "description" content="WebHelp 2002">\r
+<meta name="description" content="WebHelp 5.50">\r
 <base target="bsscright">\r
 <style>\r
 <!--\r
@@ -35,9 +35,9 @@ body {background-color:White; }
 -->\r
 </style>\r
 </head>\r
-<body marginheight="0"  marginwidth="0">\r
+<body marginheight="0"  marginwidth="0" bgproperties="fixed">\r
 \r
-<p class="ftsheader"><a name="subkey_D"></a> <a href="whnvl32.htm#home" target="_self" title="back to top level"><b>^</b></a> <a href="whlstf1.htm#bm_D" target="ftslist" title="search letter D "><b>D </b></a> <a href="whlstf1.htm#bms_DA" target="ftslist" title="search letter DA"><b>DA</b></a> <a href="whlstf1.htm#bms_DE" target="ftslist" title="search letter DE"><b>DE</b></a> <a href="whlstf2.htm#bms_DI" target="ftslist" title="search letter DI"><b>DI</b></a> <a href="whlstf2.htm#bms_DO" target="ftslist" title="search letter DO"><b>DO</b></a> <a href="whlstf2.htm#bms_DR" target="ftslist" title="search letter DR"><b>DR</b></a> <a href="whlstf2.htm#bms_DU" target="ftslist" title="search letter DU"><b>DU</b></a> <a href="whlstf2.htm#bms_DY" target="ftslist" title="search letter DY"><b>DY</b></a>  <a href="whnvl32.htm#home" target="_self" title="back to top level"><b>^</b></a></p>\r
+<p class="ftsheader"><a name="subkey_C"></a> <a href="whnvl32.htm#home" target="_self" title="back to top level"><b>^</b></a> <a href="whlstf0.htm#bm_C" target="ftslist" title="search letter C "><b>C </b></a> <a href="whlstf0.htm#bms_CA" target="ftslist" title="search letter CA"><b>CA</b></a> <a href="whlstf0.htm#bms_CH" target="ftslist" title="search letter CH"><b>CH</b></a> <a href="whlstf1.htm#bms_CL" target="ftslist" title="search letter CL"><b>CL</b></a> <a href="whlstf1.htm#bms_CO" target="ftslist" title="search letter CO"><b>CO</b></a> <a href="whlstf1.htm#bms_CP" target="ftslist" title="search letter CP"><b>CP</b></a> <a href="whlstf1.htm#bms_CR" target="ftslist" title="search letter CR"><b>CR</b></a> <a href="whlstf1.htm#bms_CS" target="ftslist" title="search letter CS"><b>CS</b></a> <a href="whlstf1.htm#bms_CU" target="ftslist" title="search letter CU"><b>CU</b></a>  <a href="whnvl32.htm#home" target="_self" title="back to top level"><b>^</b></a></p>\r
 \r
 </body>\r
 \r
index 0c53e49cedb202a770e4d5192e568ad3be312a7a..b3e94b0fb435dbd0559a4d91b2ac1ed5a5fa38be 100755 (executable)
@@ -1,9 +1,9 @@
 <html>\r
 <head>\r
 <title>Search Words letter</title>\r
-<meta http-equiv="content-type" content="text/html; charset=iso-8859-1">\r
+\r
 <meta name="generator" content="RoboHelp by eHelp Corporation   www.ehelp.com">\r
-<meta name "description" content="WebHelp 2002">\r
+<meta name="description" content="WebHelp 5.50">\r
 <base target="bsscright">\r
 <style>\r
 <!--\r
@@ -35,9 +35,9 @@ body {background-color:White; }
 -->\r
 </style>\r
 </head>\r
-<body marginheight="0"  marginwidth="0">\r
+<body marginheight="0"  marginwidth="0" bgproperties="fixed">\r
 \r
-<p class="ftsheader"><a name="subkey_E"></a> <a href="whnvl32.htm#home" target="_self" title="back to top level"><b>^</b></a> <a href="whlstf2.htm#bm_E" target="ftslist" title="search letter E "><b>E </b></a> <a href="whlstf2.htm#bms_EA" target="ftslist" title="search letter EA"><b>EA</b></a> <a href="whlstf2.htm#bms_EC" target="ftslist" title="search letter EC"><b>EC</b></a> <a href="whlstf2.htm#bms_ED" target="ftslist" title="search letter ED"><b>ED</b></a> <a href="whlstf2.htm#bms_EF" target="ftslist" title="search letter EF"><b>EF</b></a> <a href="whlstf2.htm#bms_EI" target="ftslist" title="search letter EI"><b>EI</b></a> <a href="whlstf2.htm#bms_EL" target="ftslist" title="search letter EL"><b>EL</b></a> <a href="whlstf2.htm#bms_EM" target="ftslist" title="search letter EM"><b>EM</b></a> <a href="whlstf2.htm#bms_EN" target="ftslist" title="search letter EN"><b>EN</b></a> <a href="whlstf2.htm#bms_EQ" target="ftslist" title="search letter EQ"><b>EQ</b></a> <a href="whlstf2.htm#bms_ER" target="ftslist" title="search letter ER"><b>ER</b></a> <a href="whlstf2.htm#bms_ET" target="ftslist" title="search letter ET"><b>ET</b></a> <a href="whlstf2.htm#bms_EV" target="ftslist" title="search letter EV"><b>EV</b></a> <a href="whlstf2.htm#bms_EX" target="ftslist" title="search letter EX"><b>EX</b></a>  <a href="whnvl32.htm#home" target="_self" title="back to top level"><b>^</b></a></p>\r
+<p class="ftsheader"><a name="subkey_D"></a> <a href="whnvl32.htm#home" target="_self" title="back to top level"><b>^</b></a> <a href="whlstf1.htm#bm_D" target="ftslist" title="search letter D "><b>D </b></a> <a href="whlstf1.htm#bms_DA" target="ftslist" title="search letter DA"><b>DA</b></a> <a href="whlstf1.htm#bms_DE" target="ftslist" title="search letter DE"><b>DE</b></a> <a href="whlstf2.htm#bms_DI" target="ftslist" title="search letter DI"><b>DI</b></a> <a href="whlstf2.htm#bms_DO" target="ftslist" title="search letter DO"><b>DO</b></a> <a href="whlstf2.htm#bms_DR" target="ftslist" title="search letter DR"><b>DR</b></a> <a href="whlstf2.htm#bms_DU" target="ftslist" title="search letter DU"><b>DU</b></a> <a href="whlstf2.htm#bms_DY" target="ftslist" title="search letter DY"><b>DY</b></a>  <a href="whnvl32.htm#home" target="_self" title="back to top level"><b>^</b></a></p>\r
 \r
 </body>\r
 \r
index d723c34dfb3a1db1460caaaa944aee1c5534af42..1bafa4511ba64adfedff35434e5f8e0338132837 100755 (executable)
@@ -1,9 +1,9 @@
 <html>\r
 <head>\r
 <title>Search Words letter</title>\r
-<meta http-equiv="content-type" content="text/html; charset=iso-8859-1">\r
+\r
 <meta name="generator" content="RoboHelp by eHelp Corporation   www.ehelp.com">\r
-<meta name "description" content="WebHelp 2002">\r
+<meta name="description" content="WebHelp 5.50">\r
 <base target="bsscright">\r
 <style>\r
 <!--\r
@@ -35,9 +35,9 @@ body {background-color:White; }
 -->\r
 </style>\r
 </head>\r
-<body marginheight="0"  marginwidth="0">\r
+<body marginheight="0"  marginwidth="0" bgproperties="fixed">\r
 \r
-<p class="ftsheader"><a name="subkey_F"></a> <a href="whnvl32.htm#home" target="_self" title="back to top level"><b>^</b></a> <a href="whlstf2.htm#bm_F" target="ftslist" title="search letter F "><b>F </b></a> <a href="whlstf2.htm#bms_FA" target="ftslist" title="search letter FA"><b>FA</b></a> <a href="whlstf2.htm#bms_FE" target="ftslist" title="search letter FE"><b>FE</b></a> <a href="whlstf2.htm#bms_FI" target="ftslist" title="search letter FI"><b>FI</b></a> <a href="whlstf2.htm#bms_FL" target="ftslist" title="search letter FL"><b>FL</b></a> <a href="whlstf2.htm#bms_FO" target="ftslist" title="search letter FO"><b>FO</b></a> <a href="whlstf3.htm#bms_FR" target="ftslist" title="search letter FR"><b>FR</b></a> <a href="whlstf3.htm#bms_FU" target="ftslist" title="search letter FU"><b>FU</b></a>  <a href="whnvl32.htm#home" target="_self" title="back to top level"><b>^</b></a></p>\r
+<p class="ftsheader"><a name="subkey_E"></a> <a href="whnvl32.htm#home" target="_self" title="back to top level"><b>^</b></a> <a href="whlstf2.htm#bm_E" target="ftslist" title="search letter E "><b>E </b></a> <a href="whlstf2.htm#bms_EA" target="ftslist" title="search letter EA"><b>EA</b></a> <a href="whlstf2.htm#bms_EC" target="ftslist" title="search letter EC"><b>EC</b></a> <a href="whlstf2.htm#bms_ED" target="ftslist" title="search letter ED"><b>ED</b></a> <a href="whlstf2.htm#bms_EF" target="ftslist" title="search letter EF"><b>EF</b></a> <a href="whlstf2.htm#bms_EG" target="ftslist" title="search letter EG"><b>EG</b></a> <a href="whlstf2.htm#bms_EI" target="ftslist" title="search letter EI"><b>EI</b></a> <a href="whlstf2.htm#bms_EL" target="ftslist" title="search letter EL"><b>EL</b></a> <a href="whlstf2.htm#bms_EM" target="ftslist" title="search letter EM"><b>EM</b></a> <a href="whlstf2.htm#bms_EN" target="ftslist" title="search letter EN"><b>EN</b></a> <a href="whlstf2.htm#bms_EQ" target="ftslist" title="search letter EQ"><b>EQ</b></a> <a href="whlstf2.htm#bms_ER" target="ftslist" title="search letter ER"><b>ER</b></a> <a href="whlstf2.htm#bms_ET" target="ftslist" title="search letter ET"><b>ET</b></a> <a href="whlstf2.htm#bms_EV" target="ftslist" title="search letter EV"><b>EV</b></a> <a href="whlstf2.htm#bms_EX" target="ftslist" title="search letter EX"><b>EX</b></a>  <a href="whnvl32.htm#home" target="_self" title="back to top level"><b>^</b></a></p>\r
 \r
 </body>\r
 \r
index 968f93eb55b19f19b073ad51a54ef22965f94632..055c5cab07d1e9d25341db20ed59aab0ab6e884d 100755 (executable)
@@ -1,9 +1,9 @@
 <html>\r
 <head>\r
 <title>Search Words letter</title>\r
-<meta http-equiv="content-type" content="text/html; charset=iso-8859-1">\r
+\r
 <meta name="generator" content="RoboHelp by eHelp Corporation   www.ehelp.com">\r
-<meta name "description" content="WebHelp 2002">\r
+<meta name="description" content="WebHelp 5.50">\r
 <base target="bsscright">\r
 <style>\r
 <!--\r
@@ -35,9 +35,9 @@ body {background-color:White; }
 -->\r
 </style>\r
 </head>\r
-<body marginheight="0"  marginwidth="0">\r
+<body marginheight="0"  marginwidth="0" bgproperties="fixed">\r
 \r
-<p class="ftsheader"><a name="subkey_G"></a> <a href="whnvl32.htm#home" target="_self" title="back to top level"><b>^</b></a> <a href="whlstf3.htm#bm_G" target="ftslist" title="search letter G "><b>G </b></a> <a href="whlstf3.htm#bms_GC" target="ftslist" title="search letter GC"><b>GC</b></a> <a href="whlstf3.htm#bms_GE" target="ftslist" title="search letter GE"><b>GE</b></a> <a href="whlstf3.htm#bms_GI" target="ftslist" title="search letter GI"><b>GI</b></a> <a href="whlstf3.htm#bms_GL" target="ftslist" title="search letter GL"><b>GL</b></a> <a href="whlstf3.htm#bms_GN" target="ftslist" title="search letter GN"><b>GN</b></a> <a href="whlstf3.htm#bms_GO" target="ftslist" title="search letter GO"><b>GO</b></a> <a href="whlstf3.htm#bms_GR" target="ftslist" title="search letter GR"><b>GR</b></a> <a href="whlstf3.htm#bms_GU" target="ftslist" title="search letter GU"><b>GU</b></a>  <a href="whnvl32.htm#home" target="_self" title="back to top level"><b>^</b></a></p>\r
+<p class="ftsheader"><a name="subkey_F"></a> <a href="whnvl32.htm#home" target="_self" title="back to top level"><b>^</b></a> <a href="whlstf2.htm#bm_F" target="ftslist" title="search letter F "><b>F </b></a> <a href="whlstf2.htm#bms_FA" target="ftslist" title="search letter FA"><b>FA</b></a> <a href="whlstf2.htm#bms_FE" target="ftslist" title="search letter FE"><b>FE</b></a> <a href="whlstf2.htm#bms_FI" target="ftslist" title="search letter FI"><b>FI</b></a> <a href="whlstf2.htm#bms_FL" target="ftslist" title="search letter FL"><b>FL</b></a> <a href="whlstf2.htm#bms_FO" target="ftslist" title="search letter FO"><b>FO</b></a> <a href="whlstf2.htm#bms_FR" target="ftslist" title="search letter FR"><b>FR</b></a> <a href="whlstf2.htm#bms_FU" target="ftslist" title="search letter FU"><b>FU</b></a>  <a href="whnvl32.htm#home" target="_self" title="back to top level"><b>^</b></a></p>\r
 \r
 </body>\r
 \r
index d81606b71f9e0936e0f6817803b3495b0a188a47..7f7712e432f65589cc284c0bb12538150c80ca73 100755 (executable)
@@ -1,9 +1,9 @@
 <html>\r
 <head>\r
 <title>Search Words letter</title>\r
-<meta http-equiv="content-type" content="text/html; charset=iso-8859-1">\r
+\r
 <meta name="generator" content="RoboHelp by eHelp Corporation   www.ehelp.com">\r
-<meta name "description" content="WebHelp 2002">\r
+<meta name="description" content="WebHelp 5.50">\r
 <base target="bsscright">\r
 <style>\r
 <!--\r
@@ -35,9 +35,9 @@ body {background-color:White; }
 -->\r
 </style>\r
 </head>\r
-<body marginheight="0"  marginwidth="0">\r
+<body marginheight="0"  marginwidth="0" bgproperties="fixed">\r
 \r
-<p class="ftsheader"><a name="subkey_H"></a> <a href="whnvl32.htm#home" target="_self" title="back to top level"><b>^</b></a> <a href="whlstf3.htm#bm_H" target="ftslist" title="search letter H "><b>H </b></a> <a href="whlstf3.htm#bms_HA" target="ftslist" title="search letter HA"><b>HA</b></a> <a href="whlstf3.htm#bms_HD" target="ftslist" title="search letter HD"><b>HD</b></a> <a href="whlstf3.htm#bms_HE" target="ftslist" title="search letter HE"><b>HE</b></a> <a href="whlstf3.htm#bms_HI" target="ftslist" title="search letter HI"><b>HI</b></a> <a href="whlstf3.htm#bms_HO" target="ftslist" title="search letter HO"><b>HO</b></a> <a href="whlstf3.htm#bms_HT" target="ftslist" title="search letter HT"><b>HT</b></a>  <a href="whnvl32.htm#home" target="_self" title="back to top level"><b>^</b></a></p>\r
+<p class="ftsheader"><a name="subkey_G"></a> <a href="whnvl32.htm#home" target="_self" title="back to top level"><b>^</b></a> <a href="whlstf3.htm#bm_G" target="ftslist" title="search letter G "><b>G </b></a> <a href="whlstf3.htm#bms_GC" target="ftslist" title="search letter GC"><b>GC</b></a> <a href="whlstf3.htm#bms_GE" target="ftslist" title="search letter GE"><b>GE</b></a> <a href="whlstf3.htm#bms_GI" target="ftslist" title="search letter GI"><b>GI</b></a> <a href="whlstf3.htm#bms_GL" target="ftslist" title="search letter GL"><b>GL</b></a> <a href="whlstf3.htm#bms_GO" target="ftslist" title="search letter GO"><b>GO</b></a> <a href="whlstf3.htm#bms_GR" target="ftslist" title="search letter GR"><b>GR</b></a> <a href="whlstf3.htm#bms_GU" target="ftslist" title="search letter GU"><b>GU</b></a>  <a href="whnvl32.htm#home" target="_self" title="back to top level"><b>^</b></a></p>\r
 \r
 </body>\r
 \r
index 7281028e24d2aa6bc141e78db6ff421498ac8963..75af6502eb15bcaaa81ab14fe1b7e3b797082542 100755 (executable)
@@ -1,9 +1,9 @@
 <html>\r
 <head>\r
 <title>Search Words letter</title>\r
-<meta http-equiv="content-type" content="text/html; charset=iso-8859-1">\r
+\r
 <meta name="generator" content="RoboHelp by eHelp Corporation   www.ehelp.com">\r
-<meta name "description" content="WebHelp 2002">\r
+<meta name="description" content="WebHelp 5.50">\r
 <base target="bsscright">\r
 <style>\r
 <!--\r
@@ -35,9 +35,9 @@ body {background-color:White; }
 -->\r
 </style>\r
 </head>\r
-<body marginheight="0"  marginwidth="0">\r
+<body marginheight="0"  marginwidth="0" bgproperties="fixed">\r
 \r
-<p class="ftsheader"><a name="subkey_I"></a> <a href="whnvl32.htm#home" target="_self" title="back to top level"><b>^</b></a> <a href="whlstf3.htm#bm_I" target="ftslist" title="search letter I "><b>I </b></a> <a href="whlstf3.htm#bms_IA" target="ftslist" title="search letter IA"><b>IA</b></a> <a href="whlstf3.htm#bms_IC" target="ftslist" title="search letter IC"><b>IC</b></a> <a href="whlstf3.htm#bms_ID" target="ftslist" title="search letter ID"><b>ID</b></a> <a href="whlstf3.htm#bms_IE" target="ftslist" title="search letter IE"><b>IE</b></a> <a href="whlstf3.htm#bms_IF" target="ftslist" title="search letter IF"><b>IF</b></a> <a href="whlstf3.htm#bms_IM" target="ftslist" title="search letter IM"><b>IM</b></a> <a href="whlstf3.htm#bms_IN" target="ftslist" title="search letter IN"><b>IN</b></a> <a href="whlstf3.htm#bms_IO" target="ftslist" title="search letter IO"><b>IO</b></a> <a href="whlstf4.htm#bms_IS" target="ftslist" title="search letter IS"><b>IS</b></a> <a href="whlstf4.htm#bms_IT" target="ftslist" title="search letter IT"><b>IT</b></a>  <a href="whnvl32.htm#home" target="_self" title="back to top level"><b>^</b></a></p>\r
+<p class="ftsheader"><a name="subkey_H"></a> <a href="whnvl32.htm#home" target="_self" title="back to top level"><b>^</b></a> <a href="whlstf3.htm#bm_H" target="ftslist" title="search letter H "><b>H </b></a> <a href="whlstf3.htm#bms_HA" target="ftslist" title="search letter HA"><b>HA</b></a> <a href="whlstf3.htm#bms_HD" target="ftslist" title="search letter HD"><b>HD</b></a> <a href="whlstf3.htm#bms_HE" target="ftslist" title="search letter HE"><b>HE</b></a> <a href="whlstf3.htm#bms_HI" target="ftslist" title="search letter HI"><b>HI</b></a> <a href="whlstf3.htm#bms_HO" target="ftslist" title="search letter HO"><b>HO</b></a> <a href="whlstf3.htm#bms_HP" target="ftslist" title="search letter HP"><b>HP</b></a> <a href="whlstf3.htm#bms_HT" target="ftslist" title="search letter HT"><b>HT</b></a>  <a href="whnvl32.htm#home" target="_self" title="back to top level"><b>^</b></a></p>\r
 \r
 </body>\r
 \r
index 1eea41b9e92a1c20e302a8060316974969acf6f6..54f7c768f7fcdafd7b48e07ef9df5cca21a9f277 100755 (executable)
@@ -1,9 +1,9 @@
 <html>\r
 <head>\r
 <title>Search Words letter</title>\r
-<meta http-equiv="content-type" content="text/html; charset=iso-8859-1">\r
+\r
 <meta name="generator" content="RoboHelp by eHelp Corporation   www.ehelp.com">\r
-<meta name "description" content="WebHelp 2002">\r
+<meta name="description" content="WebHelp 5.50">\r
 <base target="bsscright">\r
 <style>\r
 <!--\r
@@ -35,9 +35,9 @@ body {background-color:White; }
 -->\r
 </style>\r
 </head>\r
-<body marginheight="0"  marginwidth="0">\r
+<body marginheight="0"  marginwidth="0" bgproperties="fixed">\r
 \r
-<p class="ftsheader"><a name="subkey_J"></a> <a href="whnvl32.htm#home" target="_self" title="back to top level"><b>^</b></a> <a href="whlstf4.htm#bm_J" target="ftslist" title="search letter JA"><b>JA</b></a> <a href="whlstf4.htm#bms_JP" target="ftslist" title="search letter JP"><b>JP</b></a> <a href="whlstf4.htm#bms_JU" target="ftslist" title="search letter JU"><b>JU</b></a>  <a href="whnvl32.htm#home" target="_self" title="back to top level"><b>^</b></a></p>\r
+<p class="ftsheader"><a name="subkey_I"></a> <a href="whnvl32.htm#home" target="_self" title="back to top level"><b>^</b></a> <a href="whlstf3.htm#bm_I" target="ftslist" title="search letter I "><b>I </b></a> <a href="whlstf3.htm#bms_IA" target="ftslist" title="search letter IA"><b>IA</b></a> <a href="whlstf3.htm#bms_IC" target="ftslist" title="search letter IC"><b>IC</b></a> <a href="whlstf3.htm#bms_ID" target="ftslist" title="search letter ID"><b>ID</b></a> <a href="whlstf3.htm#bms_IE" target="ftslist" title="search letter IE"><b>IE</b></a> <a href="whlstf3.htm#bms_IF" target="ftslist" title="search letter IF"><b>IF</b></a> <a href="whlstf3.htm#bms_IM" target="ftslist" title="search letter IM"><b>IM</b></a> <a href="whlstf3.htm#bms_IN" target="ftslist" title="search letter IN"><b>IN</b></a> <a href="whlstf3.htm#bms_IO" target="ftslist" title="search letter IO"><b>IO</b></a> <a href="whlstf3.htm#bms_IS" target="ftslist" title="search letter IS"><b>IS</b></a> <a href="whlstf3.htm#bms_IT" target="ftslist" title="search letter IT"><b>IT</b></a>  <a href="whnvl32.htm#home" target="_self" title="back to top level"><b>^</b></a></p>\r
 \r
 </body>\r
 \r
index e4212415e5bf97c55ebbbc957e117248672a7d8c..a9d3f26ba068e08ee72680a3b019bbb615337c8a 100755 (executable)
@@ -1,9 +1,9 @@
 <html>\r
 <head>\r
 <title>Glossary words list</title>\r
-<meta http-equiv="content-type" content="text/html; charset=iso-8859-1">\r
+\r
 <meta name="generator" content="RoboHelp by eHelp Corporation   www.ehelp.com">\r
-<meta name "description" content="WebHelp 2002">\r
+<meta name="description" content="WebHelp 5.50">\r
 <base target="bsscright">\r
 <style>\r
 <!--\r
@@ -30,81 +30,44 @@ A:hover {color:Navy; } A:hover {font-family:Tahoma; } A:hover {font-size:8pt; }
 -->\r
 </style>\r
 </head>\r
-<body marginheight="0"  marginwidth="0">\r
-<p class="glsbody">\r
-\r
-<br><a name="bm_C"></a>\r
-<nobr><b>Cell</b></nobr><br>\r
-Element of a mesh. Cells are determined by their connectivity. They can have 0,1,2 or 3 dimension.<br>\r
-\r
-<br><a name=""></a>\r
-<nobr><b>Component</b></nobr><br>\r
-One integer or real value can correspond to each component of a field and to each entity of a mesh<br>\r
-\r
-<br><a name="bm_D"></a>\r
-<nobr><b>Descendant connectivity</b></nobr><br>\r
-It is a description of the entities of the mesh with dimension N. This description is made by an ordered list of geometrical entities (nodes, edges, or faces) with dimension N-1.<br>\r
-\r
-<br><a name="bm_E"></a>\r
-<nobr><b>Edge</b></nobr><br>\r
-An edge of a volumetric or surface mesh. It is composed of 2 or 3 nodes (2 vertex nodes and optionally one middle node).<br>\r
-\r
-<br><a name=""></a>\r
-<nobr><b>Entity of a mesh</b></nobr><br>\r
-Geometrical component of the mesh: node, cell, face and edge. Faces and edges are only intermediate entities allowing to define the cells in descendant connectivity.<br>\r
-\r
-<br><a name=""></a>\r
-<nobr><b>Equivalence</b></nobr><br>\r
-Equivalence represents a list of correspondance 2 by 2 of the entities of the same dimension.<br>\r
-\r
-<br><a name="bm_F"></a>\r
-<nobr><b>Face</b></nobr><br>\r
-Face of a volumetrical cell (triangle, quadrangle).<br>\r
-\r
-<br><a name=""></a>\r
-<nobr><b>Family</b></nobr><br>\r
-Entities of a mesh are described by a certain number&nbsp;  of characteristics (boundary conditions, groups membership). Families represent classes equivalent to these characteristics (two entities of a mesh can belong to the same family if they have the same characteristics). Every family is determined by a set of attributes and a list of groups membership.<br>\r
-\r
-<br><a name=""></a>\r
-<nobr><b>Field</b></nobr><br>\r
-Field consists of one or several scalar components. One definite type is associated to the given field and the values corresponding to different components are all of the same type.<br>\r
-\r
-<br><a name=""></a>\r
-<nobr><b>Field profile</b></nobr><br>\r
-Fields can be defined only on one part of the mesh. Profile&nbsp;  of the field or profile of the component of a field indicates which entities of the mesh contain values.<br>\r
-\r
-<br><a name="bm_G"></a>\r
-<nobr><b>Group</b></nobr><br>\r
-Unordered set of entities of a mesh. One entity can belong to&nbsp;  several groups.<br>\r
-\r
-<br><a name="bm_M"></a>\r
-<nobr><b>Mesh</b></nobr><br>\r
-Mesh is described by its geometry: list of nodes and list of cells which constitute this mesh. Supplementary information is added with the help of families (initial, boundary conditions).<br>\r
-\r
-<br><a name="bm_N"></a>\r
-<nobr><b>Nodal connectivity</b></nobr><br>\r
-It is a description of an entity of the mesh by an ordered list of nodes constituting this entity.<br>\r
-\r
-<br><a name=""></a>\r
-<nobr><b>Node</b></nobr><br>\r
-Node can be an isolated node of a mesh, a vertex or middle node of an edge. A node is associated to a point.<br>\r
-\r
-<br><a name="bm_P"></a>\r
-<nobr><b>Point</b></nobr><br>\r
-Geometrical entity determined by its coordinates in the space.<br>\r
-\r
-<br><a name="bm_R"></a>\r
-<nobr><b>Reference connectivity</b></nobr><br>\r
-For each type of entity of a mesh, reference connectivity define the topology of an entity.<br>\r
-\r
-<br><a name=""></a>\r
-<nobr><b>Result</b></nobr><br>\r
-List of fields referring to one mesh.<br>\r
-\r
-<br><a name="bm_S"></a>\r
-<nobr><b>Study</b></nobr><br>\r
-Study represents a chain of sequences of calculations.<br>\r
-<br><br></p>\r
+<body marginheight="0"  marginwidth="0" bgproperties="fixed">\r
+<p class="glsbody" style="margin-bottom:1pt;"><a name="bm_C"></a><nobr><b>Cell</b></nobr></p>\r
+<p class="glsbody" style="margin-top:1pt;">Element of a mesh. Cells are determined by their connectivity. They can have 0,1,2 or 3 dimension.<p>\r
+<p class="glsbody" style="margin-bottom:1pt;"><nobr><b>Component</b></nobr></p>\r
+<p class="glsbody" style="margin-top:1pt;">One integer or real value can correspond to each component of a field and to each entity of a mesh<p>\r
+<p class="glsbody" style="margin-bottom:1pt;"><a name="bm_D"></a><nobr><b>Descendant connectivity</b></nobr></p>\r
+<p class="glsbody" style="margin-top:1pt;">It is a description of the entities of the mesh with dimension N. This description is made by an ordered list of geometrical entities (nodes, edges, or faces) with dimension N-1.<p>\r
+<p class="glsbody" style="margin-bottom:1pt;"><a name="bm_E"></a><nobr><b>Edge</b></nobr></p>\r
+<p class="glsbody" style="margin-top:1pt;">An edge of a volumetric or surface mesh. It is composed of 2 or 3 nodes (2 vertex nodes and optionally one middle node).<p>\r
+<p class="glsbody" style="margin-bottom:1pt;"><nobr><b>Entity of a mesh</b></nobr></p>\r
+<p class="glsbody" style="margin-top:1pt;">Geometrical component of the mesh: node, cell, face and edge. Faces and edges are only intermediate entities allowing to define the cells in descendant connectivity.<p>\r
+<p class="glsbody" style="margin-bottom:1pt;"><nobr><b>Equivalence</b></nobr></p>\r
+<p class="glsbody" style="margin-top:1pt;">Equivalence represents a list of correspondance 2 by 2 of the entities of the same dimension.<p>\r
+<p class="glsbody" style="margin-bottom:1pt;"><a name="bm_F"></a><nobr><b>Face</b></nobr></p>\r
+<p class="glsbody" style="margin-top:1pt;">Face of a volumetrical cell (triangle, quadrangle).<p>\r
+<p class="glsbody" style="margin-bottom:1pt;"><nobr><b>Family</b></nobr></p>\r
+<p class="glsbody" style="margin-top:1pt;">Entities of a mesh are described by a certain number&nbsp;  of characteristics (boundary conditions, groups membership). Families represent classes equivalent to these characteristics (two entities of a mesh can belong to the same family if they have the same characteristics). Every family is determined by a set of attributes and a list of groups membership.<p>\r
+<p class="glsbody" style="margin-bottom:1pt;"><nobr><b>Field</b></nobr></p>\r
+<p class="glsbody" style="margin-top:1pt;">Field consists of one or several scalar components. One definite type is associated to the given field and the values corresponding to different components are all of the same type.<p>\r
+<p class="glsbody" style="margin-bottom:1pt;"><nobr><b>Field profile</b></nobr></p>\r
+<p class="glsbody" style="margin-top:1pt;">Fields can be defined only on one part of the mesh. Profile&nbsp;  of the field or profile of the component of a field indicates which entities of the mesh contain values.<p>\r
+<p class="glsbody" style="margin-bottom:1pt;"><a name="bm_G"></a><nobr><b>Group</b></nobr></p>\r
+<p class="glsbody" style="margin-top:1pt;">Unordered set of entities of a mesh. One entity can belong to&nbsp;  several groups.<p>\r
+<p class="glsbody" style="margin-bottom:1pt;"><a name="bm_M"></a><nobr><b>Mesh</b></nobr></p>\r
+<p class="glsbody" style="margin-top:1pt;">Mesh is described by its geometry: list of nodes and list of cells which constitute this mesh. Supplementary information is added with the help of families (initial, boundary conditions).<p>\r
+<p class="glsbody" style="margin-bottom:1pt;"><a name="bm_N"></a><nobr><b>Nodal connectivity</b></nobr></p>\r
+<p class="glsbody" style="margin-top:1pt;">It is a description of an entity of the mesh by an ordered list of nodes constituting this entity.<p>\r
+<p class="glsbody" style="margin-bottom:1pt;"><nobr><b>Node</b></nobr></p>\r
+<p class="glsbody" style="margin-top:1pt;">Node can be an isolated node of a mesh, a vertex or middle node of an edge. A node is associated to a point.<p>\r
+<p class="glsbody" style="margin-bottom:1pt;"><a name="bm_P"></a><nobr><b>Point</b></nobr></p>\r
+<p class="glsbody" style="margin-top:1pt;">Geometrical entity determined by its coordinates in the space.<p>\r
+<p class="glsbody" style="margin-bottom:1pt;"><a name="bm_R"></a><nobr><b>Reference connectivity</b></nobr></p>\r
+<p class="glsbody" style="margin-top:1pt;">For each type of entity of a mesh, reference connectivity define the topology of an entity.<p>\r
+<p class="glsbody" style="margin-bottom:1pt;"><nobr><b>Result</b></nobr></p>\r
+<p class="glsbody" style="margin-top:1pt;">List of fields referring to one mesh.<p>\r
+<p class="glsbody" style="margin-bottom:1pt;"><a name="bm_S"></a><nobr><b>Study</b></nobr></p>\r
+<p class="glsbody" style="margin-top:1pt;">Study represents a chain of sequences of calculations.<p>\r
+<p class="glsbody"><br><br></p>\r
 \r
 </body>\r
 \r
index 2c881badcefba9eccb379b656d2dc12895b4de05..a3aec907a691fe8e4f8a24bdd3e2ed6081f04e08 100755 (executable)
@@ -1,10 +1,11 @@
 <html>\r
 <head>\r
-<!-- WebHelp version 2002 -->\r
+<!-- WebHelp version 5.10 -->\r
 <title>Index words list</title>\r
 <base target="bsscright">\r
-<meta name="generator" content="RoboHELP by eHelp Corporation www.ehelp.com">\r
-<meta http-equiv="content-type" content="text/html; charset=iso-8859-1">\r
+\r
+<meta name="generator" content="RoboHelp by eHelp Corporation   www.ehelp.com">\r
+<meta name="description" content="WebHelp 5.50">\r
 <style>\r
 <!--\r
 body {margin-left:1pt; margin-top:1pt; margin-right:1pt;font-family:Arial; font-size:9pt;}\r
@@ -30,7 +31,7 @@ A:hover {color:Navy; } A:hover {font-family:Tahoma; } A:hover {font-size:8pt; }
 -->\r
 </style>\r
 </head>\r
-<body marginheight="0"  marginwidth="0">\r
+<body marginheight="0"  marginwidth="0" bgproperties="fixed">\r
 \r
 </body>\r
 \r
index bd5356e4759023ebe230b4ad4ed64756b37d87e4..c91574fa89a16529aad84b67f5a50e64bcdd5c46 100755 (executable)
@@ -1,10 +1,11 @@
 <html>\r
 <head>\r
-<!-- WebHelp version 2002 -->\r
+<!-- WebHelp version 5.10 -->\r
 <title>Content</title>\r
 <base target="bsscright">\r
-<meta name="generator" content="RoboHELP by eHelp Corporation www.ehelp.com">\r
-<meta http-equiv="content-type" content="text/html; charset=iso-8859-1">\r
+\r
+<meta name="generator" content="RoboHelp by eHelp Corporation   www.ehelp.com">\r
+<meta name="description" content="WebHelp 5.50">\r
 <style>\r
 <!--\r
 body {margin-left:1pt; margin-top:1pt; margin-right:1pt;font-family:Arial; font-size:9pt;}\r
@@ -28,15 +29,15 @@ A:link {color:Black; } A:link {font-family:Tahoma; } A:link {font-size:8pt; } A:
 A:visited {color:Black; } A:visited {font-family:Tahoma; } A:visited {font-size:8pt; } A:visited {font-style:Normal; } A:visited {text-decoration:none; } \r
 A:active {background-color:Silver; } \r
 A:hover {color:Navy; } A:hover {font-family:Tahoma; } A:hover {font-size:8pt; } A:hover {font-style:Normal; } A:hover {text-decoration:underline; } \r
-\r
+img {vertial-align:middle;}\r
 -->\r
 </style>\r
 </head>\r
-<body marginheight="0"  marginwidth="0">\r
+<body marginheight="0"  marginwidth="0" bgproperties="fixed">\r
 <table border=0>\r
 <tr><td>\r
 <p class="tocbody">\r
-<nobr><a href="../files/introduction.htm"><img src="../wht_toc3.gif" border="0" align="absmiddle"> Welcome to SALOME</a></nobr><br>\r
+<nobr><a href="../kernel/introduction.htm"><img src="../wht_toc3.gif" border="0" align="absmiddle"> Welcome to SALOME</a></nobr><br>\r
 <nobr><a name="1"></a><a href="whlstt1.htm#1" target="_self" title="closed book"><img src="../wht_toc1.gif" border="0" align="absmiddle"> Using this reference manual</a></nobr><br>\r
 <nobr><a name="2"></a><a href="whlstt2.htm#2" target="_self" title="closed book"><img src="../wht_toc1.gif" border="0" align="absmiddle"> About SALOME</a></nobr><br>\r
 <nobr><a name="3"></a><a href="whlstt3.htm#3" target="_self" title="closed book"><img src="../wht_toc1.gif" border="0" align="absmiddle"> IAPP module</a></nobr><br>\r
index 51e8c76a3925cf03e9c70cec795d2e4b5fbca256..8bcdb9cb885e9b84e818af7c2478484a1ff62ed7 100755 (executable)
@@ -1,10 +1,11 @@
 <html>\r
 <head>\r
-<!-- WebHelp version 2002 -->\r
+<!-- WebHelp version 5.10 -->\r
 <title>Content</title>\r
 <base target="bsscright">\r
-<meta name="generator" content="RoboHELP by eHelp Corporation www.ehelp.com">\r
-<meta http-equiv="content-type" content="text/html; charset=iso-8859-1">\r
+\r
+<meta name="generator" content="RoboHelp by eHelp Corporation   www.ehelp.com">\r
+<meta name="description" content="WebHelp 5.50">\r
 <style>\r
 <!--\r
 body {margin-left:1pt; margin-top:1pt; margin-right:1pt;font-family:Arial; font-size:9pt;}\r
@@ -28,19 +29,19 @@ A:link {color:Black; } A:link {font-family:Tahoma; } A:link {font-size:8pt; } A:
 A:visited {color:Black; } A:visited {font-family:Tahoma; } A:visited {font-size:8pt; } A:visited {font-style:Normal; } A:visited {text-decoration:none; } \r
 A:active {background-color:Silver; } \r
 A:hover {color:Navy; } A:hover {font-family:Tahoma; } A:hover {font-size:8pt; } A:hover {font-style:Normal; } A:hover {text-decoration:underline; } \r
-\r
+img {vertial-align:middle;}\r
 -->\r
 </style>\r
 </head>\r
-<body marginheight="0"  marginwidth="0">\r
+<body marginheight="0"  marginwidth="0" bgproperties="fixed">\r
 <table border=0>\r
 <tr><td>\r
 <p class="tocbody">\r
-<nobr><a href="../files/introduction.htm"><img src="../wht_toc3.gif" border="0" align="absmiddle"> Welcome to SALOME</a></nobr><br>\r
+<nobr><a href="../kernel/introduction.htm"><img src="../wht_toc3.gif" border="0" align="absmiddle"> Welcome to SALOME</a></nobr><br>\r
 <nobr><a name="1"></a><a href="whlstt0.htm#1" target="_self"><img src="../wht_toc2.gif" border="0" align="absmiddle"> Using this reference manual</a></nobr><br>\r
-&nbsp;&nbsp;&nbsp;<nobr><a href="../files/about_salome_pro_help_system.htm"><img src="../wht_toc3.gif" border="0" align="absmiddle"> About SALOME help system</a></nobr><br>\r
-&nbsp;&nbsp;&nbsp;<nobr><a href="../files/navigating_topics.htm"><img src="../wht_toc3.gif" border="0" align="absmiddle"> Navigating topics</a></nobr><br>\r
-&nbsp;&nbsp;&nbsp;<nobr><a href="../files/using_left-hand_tabs.htm"><img src="../wht_toc3.gif" border="0" align="absmiddle"> Using left-hand tabs</a></nobr><br>\r
+&nbsp;&nbsp;&nbsp;<nobr><a href="../kernel/about_salome_pro_help_system.htm"><img src="../wht_toc3.gif" border="0" align="absmiddle"> About SALOME help system</a></nobr><br>\r
+&nbsp;&nbsp;&nbsp;<nobr><a href="../kernel/navigating_topics.htm"><img src="../wht_toc3.gif" border="0" align="absmiddle"> Navigating topics</a></nobr><br>\r
+&nbsp;&nbsp;&nbsp;<nobr><a href="../kernel/using_left-hand_tabs.htm"><img src="../wht_toc3.gif" border="0" align="absmiddle"> Using left-hand tabs</a></nobr><br>\r
 <nobr><a name="2"></a><a href="whlstt2.htm#2" target="_self" title="closed book"><img src="../wht_toc1.gif" border="0" align="absmiddle"> About SALOME</a></nobr><br>\r
 <nobr><a name="3"></a><a href="whlstt3.htm#3" target="_self" title="closed book"><img src="../wht_toc1.gif" border="0" align="absmiddle"> IAPP module</a></nobr><br>\r
 </p>\r
index 3415d8ce505de3f1779cc39a74440270dedacf73..4f2b02d60dff2cacfb33113fbf2c4ecae52fe831 100755 (executable)
@@ -1,10 +1,11 @@
 <html>\r
 <head>\r
-<!-- WebHelp version 2002 -->\r
+<!-- WebHelp version 5.10 -->\r
 <title>Content</title>\r
 <base target="bsscright">\r
-<meta name="generator" content="RoboHELP by eHelp Corporation www.ehelp.com">\r
-<meta http-equiv="content-type" content="text/html; charset=iso-8859-1">\r
+\r
+<meta name="generator" content="RoboHelp by eHelp Corporation   www.ehelp.com">\r
+<meta name="description" content="WebHelp 5.50">\r
 <style>\r
 <!--\r
 body {margin-left:1pt; margin-top:1pt; margin-right:1pt;font-family:Arial; font-size:9pt;}\r
@@ -28,21 +29,21 @@ A:link {color:Black; } A:link {font-family:Tahoma; } A:link {font-size:8pt; } A:
 A:visited {color:Black; } A:visited {font-family:Tahoma; } A:visited {font-size:8pt; } A:visited {font-style:Normal; } A:visited {text-decoration:none; } \r
 A:active {background-color:Silver; } \r
 A:hover {color:Navy; } A:hover {font-family:Tahoma; } A:hover {font-size:8pt; } A:hover {font-style:Normal; } A:hover {text-decoration:underline; } \r
-\r
+img {vertial-align:middle;}\r
 -->\r
 </style>\r
 </head>\r
-<body marginheight="0"  marginwidth="0">\r
+<body marginheight="0"  marginwidth="0" bgproperties="fixed">\r
 <table border=0>\r
 <tr><td>\r
 <p class="tocbody">\r
-<nobr><a href="../files/introduction.htm"><img src="../wht_toc3.gif" border="0" align="absmiddle"> Welcome to SALOME</a></nobr><br>\r
+<nobr><a href="../kernel/introduction.htm"><img src="../wht_toc3.gif" border="0" align="absmiddle"> Welcome to SALOME</a></nobr><br>\r
 <nobr><a name="1"></a><a href="whlstt1.htm#1" target="_self" title="closed book"><img src="../wht_toc1.gif" border="0" align="absmiddle"> Using this reference manual</a></nobr><br>\r
 <nobr><a name="2"></a><a href="whlstt0.htm#2" target="_self"><img src="../wht_toc2.gif" border="0" align="absmiddle"> About SALOME</a></nobr><br>\r
-&nbsp;&nbsp;&nbsp;<nobr><a href="../files/introduction_to_salome_pro.htm"><img src="../wht_toc3.gif" border="0" align="absmiddle"> Introduction to SALOME</a></nobr><br>\r
-&nbsp;&nbsp;&nbsp;<nobr><a href="../files/about_salome_pro_architecture.htm"><img src="../wht_toc3.gif" border="0" align="absmiddle"> About SALOME architecture</a></nobr><br>\r
-&nbsp;&nbsp;&nbsp;<nobr><a href="../files/readme.html"><img src="../wht_toc3.gif" border="0" align="absmiddle"> Installing SALOME</a></nobr><br>\r
-&nbsp;&nbsp;&nbsp;<nobr><a href="../files/running_salome_pro.htm"><img src="../wht_toc3.gif" border="0" align="absmiddle"> Running SALOME</a></nobr><br>\r
+&nbsp;&nbsp;&nbsp;<nobr><a href="../kernel/introduction_to_salome_pro.htm"><img src="../wht_toc3.gif" border="0" align="absmiddle"> Introduction to SALOME</a></nobr><br>\r
+&nbsp;&nbsp;&nbsp;<nobr><a href="../kernel/about_salome_pro_architecture.htm"><img src="../wht_toc3.gif" border="0" align="absmiddle"> About SALOME architecture</a></nobr><br>\r
+&nbsp;&nbsp;&nbsp;<nobr><a href="../kernel/readme.html"><img src="../wht_toc3.gif" border="0" align="absmiddle"> Installing SALOME</a></nobr><br>\r
+&nbsp;&nbsp;&nbsp;<nobr><a href="../kernel/running_salome_pro.htm"><img src="../wht_toc3.gif" border="0" align="absmiddle"> Running SALOME</a></nobr><br>\r
 <nobr><a name="3"></a><a href="whlstt3.htm#3" target="_self" title="closed book"><img src="../wht_toc1.gif" border="0" align="absmiddle"> IAPP module</a></nobr><br>\r
 </p>\r
 \r
index f4036d5319d7686247fd7814e94821dfb6add15a..4543777005dc1b37058a5dc55cb467a719d80c30 100755 (executable)
@@ -1,10 +1,11 @@
 <html>\r
 <head>\r
-<!-- WebHelp version 2002 -->\r
+<!-- WebHelp version 5.10 -->\r
 <title>Content</title>\r
 <base target="bsscright">\r
-<meta name="generator" content="RoboHELP by eHelp Corporation www.ehelp.com">\r
-<meta http-equiv="content-type" content="text/html; charset=iso-8859-1">\r
+\r
+<meta name="generator" content="RoboHelp by eHelp Corporation   www.ehelp.com">\r
+<meta name="description" content="WebHelp 5.50">\r
 <style>\r
 <!--\r
 body {margin-left:1pt; margin-top:1pt; margin-right:1pt;font-family:Arial; font-size:9pt;}\r
@@ -28,28 +29,28 @@ A:link {color:Black; } A:link {font-family:Tahoma; } A:link {font-size:8pt; } A:
 A:visited {color:Black; } A:visited {font-family:Tahoma; } A:visited {font-size:8pt; } A:visited {font-style:Normal; } A:visited {text-decoration:none; } \r
 A:active {background-color:Silver; } \r
 A:hover {color:Navy; } A:hover {font-family:Tahoma; } A:hover {font-size:8pt; } A:hover {font-style:Normal; } A:hover {text-decoration:underline; } \r
-\r
+img {vertial-align:middle;}\r
 -->\r
 </style>\r
 </head>\r
-<body marginheight="0"  marginwidth="0">\r
+<body marginheight="0"  marginwidth="0" bgproperties="fixed">\r
 <table border=0>\r
 <tr><td>\r
 <p class="tocbody">\r
-<nobr><a href="../files/introduction.htm"><img src="../wht_toc3.gif" border="0" align="absmiddle"> Welcome to SALOME</a></nobr><br>\r
+<nobr><a href="../kernel/introduction.htm"><img src="../wht_toc3.gif" border="0" align="absmiddle"> Welcome to SALOME</a></nobr><br>\r
 <nobr><a name="1"></a><a href="whlstt1.htm#1" target="_self" title="closed book"><img src="../wht_toc1.gif" border="0" align="absmiddle"> Using this reference manual</a></nobr><br>\r
 <nobr><a name="2"></a><a href="whlstt2.htm#2" target="_self" title="closed book"><img src="../wht_toc1.gif" border="0" align="absmiddle"> About SALOME</a></nobr><br>\r
 <nobr><a name="3"></a><a href="whlstt0.htm#3" target="_self"><img src="../wht_toc2.gif" border="0" align="absmiddle"> IAPP module</a></nobr><br>\r
-&nbsp;&nbsp;&nbsp;<nobr><a href="../files/introduction_to_iapp.htm"><img src="../wht_toc3.gif" border="0" align="absmiddle"> Introduction to IAPP</a></nobr><br>\r
-&nbsp;&nbsp;&nbsp;<nobr><a href="../files/getting_started2.htm"><img src="../wht_toc3.gif" border="0" align="absmiddle"> Getting started</a></nobr><br>\r
-&nbsp;&nbsp;&nbsp;<nobr><a href="../files/salome_pro_desktop.htm"><img src="../wht_toc3.gif" border="0" align="absmiddle"> SALOME desktop</a></nobr><br>\r
-&nbsp;&nbsp;&nbsp;<nobr><a href="../files/displaying_hiding_toolbars.htm"><img src="../wht_toc3.gif" border="0" align="absmiddle"> Displaying/hiding toolbars</a></nobr><br>\r
+&nbsp;&nbsp;&nbsp;<nobr><a href="../kernel/introduction_to_iapp.htm"><img src="../wht_toc3.gif" border="0" align="absmiddle"> Introduction to IAPP</a></nobr><br>\r
+&nbsp;&nbsp;&nbsp;<nobr><a href="../kernel/getting_started2.htm"><img src="../wht_toc3.gif" border="0" align="absmiddle"> Getting started</a></nobr><br>\r
+&nbsp;&nbsp;&nbsp;<nobr><a href="../kernel/salome_pro_desktop.htm"><img src="../wht_toc3.gif" border="0" align="absmiddle"> SALOME desktop</a></nobr><br>\r
+&nbsp;&nbsp;&nbsp;<nobr><a href="../kernel/displaying_hiding_toolbars.htm"><img src="../wht_toc3.gif" border="0" align="absmiddle"> Displaying/hiding toolbars</a></nobr><br>\r
 &nbsp;&nbsp;&nbsp;<nobr><a name="4"></a><a href="whlstt4.htm#4" target="_self" title="closed book"><img src="../wht_toc1.gif" border="0" align="absmiddle"> Study management</a></nobr><br>\r
-&nbsp;&nbsp;&nbsp;<nobr><a href="../files/using_object_browser.htm"><img src="../wht_toc3.gif" border="0" align="absmiddle"> Using Object Browser</a></nobr><br>\r
-&nbsp;&nbsp;&nbsp;<nobr><a href="../files/using_usecase_browser.htm"><img src="../wht_toc3.gif" border="0" align="absmiddle"> Using UseCase Browser</a></nobr><br>\r
-&nbsp;&nbsp;&nbsp;<nobr><a href="../files/using_registry.htm"><img src="../wht_toc3.gif" border="0" align="absmiddle"> Using Registry tool</a></nobr><br>\r
-&nbsp;&nbsp;&nbsp;<nobr><a href="../files/using_catalog_generator.htm"><img src="../wht_toc3.gif" border="0" align="absmiddle"> Using Catalog Generator</a></nobr><br>\r
-&nbsp;&nbsp;&nbsp;<nobr><a href="../files/setting_preferences.htm"><img src="../wht_toc3.gif" border="0" align="absmiddle"> Setting preferences</a></nobr><br>\r
+&nbsp;&nbsp;&nbsp;<nobr><a href="../kernel/using_object_browser.htm"><img src="../wht_toc3.gif" border="0" align="absmiddle"> Using Object Browser</a></nobr><br>\r
+&nbsp;&nbsp;&nbsp;<nobr><a href="../kernel/using_usecase_browser.htm"><img src="../wht_toc3.gif" border="0" align="absmiddle"> Using UseCase Browser</a></nobr><br>\r
+&nbsp;&nbsp;&nbsp;<nobr><a href="../kernel/using_registry.htm"><img src="../wht_toc3.gif" border="0" align="absmiddle"> Using Registry tool</a></nobr><br>\r
+&nbsp;&nbsp;&nbsp;<nobr><a href="../kernel/using_catalog_generator.htm"><img src="../wht_toc3.gif" border="0" align="absmiddle"> Using Catalog Generator</a></nobr><br>\r
+&nbsp;&nbsp;&nbsp;<nobr><a href="../kernel/setting_preferences.htm"><img src="../wht_toc3.gif" border="0" align="absmiddle"> Setting preferences</a></nobr><br>\r
 </p>\r
 \r
 </td></tr>\r
index d6d9a807a10237c508c6f6aed7fea1aacc6fc288..56e0d8e0bfae02a1c3e140d89c926e9f147e3f78 100755 (executable)
@@ -1,10 +1,11 @@
 <html>\r
 <head>\r
-<!-- WebHelp version 2002 -->\r
+<!-- WebHelp version 5.10 -->\r
 <title>Content</title>\r
 <base target="bsscright">\r
-<meta name="generator" content="RoboHELP by eHelp Corporation www.ehelp.com">\r
-<meta http-equiv="content-type" content="text/html; charset=iso-8859-1">\r
+\r
+<meta name="generator" content="RoboHelp by eHelp Corporation   www.ehelp.com">\r
+<meta name="description" content="WebHelp 5.50">\r
 <style>\r
 <!--\r
 body {margin-left:1pt; margin-top:1pt; margin-right:1pt;font-family:Arial; font-size:9pt;}\r
@@ -28,34 +29,34 @@ A:link {color:Black; } A:link {font-family:Tahoma; } A:link {font-size:8pt; } A:
 A:visited {color:Black; } A:visited {font-family:Tahoma; } A:visited {font-size:8pt; } A:visited {font-style:Normal; } A:visited {text-decoration:none; } \r
 A:active {background-color:Silver; } \r
 A:hover {color:Navy; } A:hover {font-family:Tahoma; } A:hover {font-size:8pt; } A:hover {font-style:Normal; } A:hover {text-decoration:underline; } \r
-\r
+img {vertial-align:middle;}\r
 -->\r
 </style>\r
 </head>\r
-<body marginheight="0"  marginwidth="0">\r
+<body marginheight="0"  marginwidth="0" bgproperties="fixed">\r
 <table border=0>\r
 <tr><td>\r
 <p class="tocbody">\r
-<nobr><a href="../files/introduction.htm"><img src="../wht_toc3.gif" border="0" align="absmiddle"> Welcome to SALOME</a></nobr><br>\r
+<nobr><a href="../kernel/introduction.htm"><img src="../wht_toc3.gif" border="0" align="absmiddle"> Welcome to SALOME</a></nobr><br>\r
 <nobr><a name="1"></a><a href="whlstt1.htm#1" target="_self" title="closed book"><img src="../wht_toc1.gif" border="0" align="absmiddle"> Using this reference manual</a></nobr><br>\r
 <nobr><a name="2"></a><a href="whlstt2.htm#2" target="_self" title="closed book"><img src="../wht_toc1.gif" border="0" align="absmiddle"> About SALOME</a></nobr><br>\r
 <nobr><a name="3"></a><a href="whlstt0.htm#3" target="_self"><img src="../wht_toc2.gif" border="0" align="absmiddle"> IAPP module</a></nobr><br>\r
-&nbsp;&nbsp;&nbsp;<nobr><a href="../files/introduction_to_iapp.htm"><img src="../wht_toc3.gif" border="0" align="absmiddle"> Introduction to IAPP</a></nobr><br>\r
-&nbsp;&nbsp;&nbsp;<nobr><a href="../files/getting_started2.htm"><img src="../wht_toc3.gif" border="0" align="absmiddle"> Getting started</a></nobr><br>\r
-&nbsp;&nbsp;&nbsp;<nobr><a href="../files/salome_pro_desktop.htm"><img src="../wht_toc3.gif" border="0" align="absmiddle"> SALOME desktop</a></nobr><br>\r
-&nbsp;&nbsp;&nbsp;<nobr><a href="../files/displaying_hiding_toolbars.htm"><img src="../wht_toc3.gif" border="0" align="absmiddle"> Displaying/hiding toolbars</a></nobr><br>\r
+&nbsp;&nbsp;&nbsp;<nobr><a href="../kernel/introduction_to_iapp.htm"><img src="../wht_toc3.gif" border="0" align="absmiddle"> Introduction to IAPP</a></nobr><br>\r
+&nbsp;&nbsp;&nbsp;<nobr><a href="../kernel/getting_started2.htm"><img src="../wht_toc3.gif" border="0" align="absmiddle"> Getting started</a></nobr><br>\r
+&nbsp;&nbsp;&nbsp;<nobr><a href="../kernel/salome_pro_desktop.htm"><img src="../wht_toc3.gif" border="0" align="absmiddle"> SALOME desktop</a></nobr><br>\r
+&nbsp;&nbsp;&nbsp;<nobr><a href="../kernel/displaying_hiding_toolbars.htm"><img src="../wht_toc3.gif" border="0" align="absmiddle"> Displaying/hiding toolbars</a></nobr><br>\r
 &nbsp;&nbsp;&nbsp;<nobr><a name="4"></a><a href="whlstt3.htm#4" target="_self"><img src="../wht_toc2.gif" border="0" align="absmiddle"> Study management</a></nobr><br>\r
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<nobr><a href="../files/creating_a_new_study.htm"><img src="../wht_toc3.gif" border="0" align="absmiddle"> Creating a new study</a></nobr><br>\r
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<nobr><a href="../files/opening_studies.htm"><img src="../wht_toc3.gif" border="0" align="absmiddle"> Opening studies</a></nobr><br>\r
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<nobr><a href="../files/saving_a_study.htm"><img src="../wht_toc3.gif" border="0" align="absmiddle"> Saving and closing studies</a></nobr><br>\r
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<nobr><a href="../files/editing_studies.htm"><img src="../wht_toc3.gif" border="0" align="absmiddle"> Editing studies</a></nobr><br>\r
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<nobr><a href="../files/displaying_studies.htm"><img src="../wht_toc3.gif" border="0" align="absmiddle"> Displaying studies</a></nobr><br>\r
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<nobr><a href="../files/getting_properties_of_the_study.htm"><img src="../wht_toc3.gif" border="0" align="absmiddle"> Getting and setting study properties</a></nobr><br>\r
-&nbsp;&nbsp;&nbsp;<nobr><a href="../files/using_object_browser.htm"><img src="../wht_toc3.gif" border="0" align="absmiddle"> Using Object Browser</a></nobr><br>\r
-&nbsp;&nbsp;&nbsp;<nobr><a href="../files/using_usecase_browser.htm"><img src="../wht_toc3.gif" border="0" align="absmiddle"> Using UseCase Browser</a></nobr><br>\r
-&nbsp;&nbsp;&nbsp;<nobr><a href="../files/using_registry.htm"><img src="../wht_toc3.gif" border="0" align="absmiddle"> Using Registry tool</a></nobr><br>\r
-&nbsp;&nbsp;&nbsp;<nobr><a href="../files/using_catalog_generator.htm"><img src="../wht_toc3.gif" border="0" align="absmiddle"> Using Catalog Generator</a></nobr><br>\r
-&nbsp;&nbsp;&nbsp;<nobr><a href="../files/setting_preferences.htm"><img src="../wht_toc3.gif" border="0" align="absmiddle"> Setting preferences</a></nobr><br>\r
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<nobr><a href="../kernel/creating_a_new_study.htm"><img src="../wht_toc3.gif" border="0" align="absmiddle"> Creating a new study</a></nobr><br>\r
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<nobr><a href="../kernel/opening_studies.htm"><img src="../wht_toc3.gif" border="0" align="absmiddle"> Opening studies</a></nobr><br>\r
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<nobr><a href="../kernel/saving_a_study.htm"><img src="../wht_toc3.gif" border="0" align="absmiddle"> Saving and closing studies</a></nobr><br>\r
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<nobr><a href="../kernel/editing_studies.htm"><img src="../wht_toc3.gif" border="0" align="absmiddle"> Editing studies</a></nobr><br>\r
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<nobr><a href="../kernel/displaying_studies.htm"><img src="../wht_toc3.gif" border="0" align="absmiddle"> Displaying studies</a></nobr><br>\r
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<nobr><a href="../kernel/getting_properties_of_the_study.htm"><img src="../wht_toc3.gif" border="0" align="absmiddle"> Getting and setting study properties</a></nobr><br>\r
+&nbsp;&nbsp;&nbsp;<nobr><a href="../kernel/using_object_browser.htm"><img src="../wht_toc3.gif" border="0" align="absmiddle"> Using Object Browser</a></nobr><br>\r
+&nbsp;&nbsp;&nbsp;<nobr><a href="../kernel/using_usecase_browser.htm"><img src="../wht_toc3.gif" border="0" align="absmiddle"> Using UseCase Browser</a></nobr><br>\r
+&nbsp;&nbsp;&nbsp;<nobr><a href="../kernel/using_registry.htm"><img src="../wht_toc3.gif" border="0" align="absmiddle"> Using Registry tool</a></nobr><br>\r
+&nbsp;&nbsp;&nbsp;<nobr><a href="../kernel/using_catalog_generator.htm"><img src="../wht_toc3.gif" border="0" align="absmiddle"> Using Catalog Generator</a></nobr><br>\r
+&nbsp;&nbsp;&nbsp;<nobr><a href="../kernel/setting_preferences.htm"><img src="../wht_toc3.gif" border="0" align="absmiddle"> Setting preferences</a></nobr><br>\r
 </p>\r
 \r
 </td></tr>\r
index 7daf4a57d63a882d782815af4df1924f4d50c9c0..33dae3be22f99e0fe9ed184ccfd8f23981f968ea 100755 (executable)
@@ -1,9 +1,10 @@
 <html>\r
 <head>\r
-<!-- WebHelp version 2002 -->\r
+<!-- WebHelp version 5.10 -->\r
 <title>toc frame</title>\r
-<meta name="generator" content="RoboHELP by eHelp Corporation www.ehelp.com">\r
-<meta http-equiv="content-type" content="text/html; charset=iso-8859-1">\r
+\r
+<meta name="generator" content="RoboHelp by eHelp Corporation   www.ehelp.com">\r
+<meta name="description" content="WebHelp 5.50">\r
 </head>\r
 <frameset rows="100%, *" border="0" frameborder="0">\r
        <frame name="toctree" title="toc tree frame" src="whlstt0.htm"></frame>\r
index abe728280817df205e02a269d51eaad12160a9ff..a9128b80377d99e39434a8c741fc58ab13171109 100755 (executable)
@@ -1,10 +1,11 @@
 <html>\r
 <head>\r
-<!-- WebHelp version 2002 -->\r
+<!-- WebHelp version 5.10 -->\r
 <title>Index frame</title>\r
 <base target="bsscright">\r
-<meta name="generator" content="RoboHELP by eHelp Corporation www.ehelp.com">\r
-<meta http-equiv="content-type" content="text/html; charset=iso-8859-1">\r
+\r
+<meta name="generator" content="RoboHelp by eHelp Corporation   www.ehelp.com">\r
+<meta name="description" content="WebHelp 5.50">\r
 </head>\r
 <frameset rows="40, *" border="0" frameborder="0">\r
        <frame name="ndxletter" title="index letter frame" src="whnvl31.htm" noresize frameborder="1" scrolling="no" border="0" marginheight="0" marginwidth="0" ></frame>\r
index afdcde913d9d61c5e826ec504f92211d0bec3626..ae872731a298380203cede175c09e86b660899fb 100755 (executable)
@@ -1,10 +1,11 @@
 <html>\r
 <head>\r
-<!-- WebHelp version 2002 -->\r
+<!-- WebHelp version 5.10 -->\r
 <title>search frame</title>\r
 <base target="bsscright">\r
-<meta name="generator" content="RoboHELP by eHelp Corporation www.ehelp.com">\r
-<meta http-equiv="content-type" content="text/html; charset=iso-8859-1">\r
+\r
+<meta name="generator" content="RoboHelp by eHelp Corporation   www.ehelp.com">\r
+<meta name="description" content="WebHelp 5.50">\r
 </head>\r
 <frameset rows="40, *" border="0" frameborder="0">\r
        <frame name="ftsletter" title="search letter frame" src="whnvl32.htm" noresize frameborder="1" scrolling="no" border="0" marginheight="0" marginwidth="0" ></frame>\r
index 0e897d8179ca05051bca41c2cbdee60f4455c205..9af2824d153bb52a9102d4041a7f273e7b92bc38 100755 (executable)
@@ -1,10 +1,11 @@
 <html>\r
 <head>\r
-<!-- WebHelp version 2002 -->\r
+<!-- WebHelp version 5.10 -->\r
 <title>Glossary frame</title>\r
 <base target="bsscright">\r
-<meta name="generator" content="RoboHELP by eHelp Corporation www.ehelp.com">\r
-<meta http-equiv="content-type" content="text/html; charset=iso-8859-1">\r
+\r
+<meta name="generator" content="RoboHelp by eHelp Corporation   www.ehelp.com">\r
+<meta name="description" content="WebHelp 5.50">\r
 </head>\r
 <frameset rows="40, *" border="0" frameborder="0">\r
        <frame name="glsletter" title="glossary letter frame" src="whnvl33.htm" noresize frameborder="1" scrolling="no" border="0" marginheight="0" marginwidth="0" ></frame>\r
index bd342a1ed2a884dc0ffac661efd6f1431e192ced..870e98ef4c9e2541d99d0063f96c0ab19464c980 100755 (executable)
@@ -1,10 +1,11 @@
 <html>\r
 <head>\r
-<!-- WebHelp version 2002 -->\r
+<!-- WebHelp version 5.10 -->\r
 <title>Index Letters</title>\r
 <base target="bsscright">\r
-<meta name="generator" content="RoboHELP by eHelp Corporation www.ehelp.com">\r
-<meta http-equiv="content-type" content="text/html; charset=iso-8859-1">\r
+\r
+<meta name="generator" content="RoboHelp by eHelp Corporation   www.ehelp.com">\r
+<meta name="description" content="WebHelp 5.50">\r
 <style>\r
 <!--\r
 body {margin-left:1pt; margin-top:1pt; margin-right:1pt;font-family:Arial; font-size:9pt;}\r
@@ -35,7 +36,7 @@ body {background-color:White; }
 -->\r
 </style>\r
 </head>\r
-<body marginheight="0"  marginwidth="0">\r
+<body marginheight="0"  marginwidth="0" bgproperties="fixed">\r
 \r
 <body>\r
 </html>\r
index 45537ec75a27fb5ecb42f900df54eb9fb579283b..d1588cd868705fc1982bd5f07e8f8c252fbc7306 100755 (executable)
@@ -1,10 +1,11 @@
 <html>\r
 <head>\r
-<!-- WebHelp version 2002 -->\r
+<!-- WebHelp version 5.10 -->\r
 <title>Search Letters</title>\r
 <base target="bsscright">\r
-<meta name="generator" content="RoboHELP by eHelp Corporation www.ehelp.com">\r
-<meta http-equiv="content-type" content="text/html; charset=iso-8859-1">\r
+\r
+<meta name="generator" content="RoboHelp by eHelp Corporation   www.ehelp.com">\r
+<meta name="description" content="WebHelp 5.50">\r
 <style>\r
 <!--\r
 body {margin-left:1pt; margin-top:1pt; margin-right:1pt;font-family:Arial; font-size:9pt;}\r
@@ -35,35 +36,35 @@ body {background-color:White; }
 -->\r
 </style>\r
 </head>\r
-<body marginheight="0"  marginwidth="0">\r
+<body marginheight="0"  marginwidth="0" bgproperties="fixed">\r
 <p class="ftsheader">\r
-<a name="home"></a> <a href="whlstf0.htm#bm_{" target="ftslist"title="search non-alphabet letter" ><b>#</b></a> \r
- <a href="whlstfl0.htm#subkey_A" target="_self"title="search letter A"><b>A</b></a> \r
- <a href="whlstfl1.htm#subkey_B" target="_self"title="search letter B"><b>B</b></a> \r
- <a href="whlstfl2.htm#subkey_C" target="_self"title="search letter C"><b>C</b></a> \r
- <a href="whlstfl3.htm#subkey_D" target="_self"title="search letter D"><b>D</b></a> \r
- <a href="whlstfl4.htm#subkey_E" target="_self"title="search letter E"><b>E</b></a> \r
- <a href="whlstfl5.htm#subkey_F" target="_self"title="search letter F"><b>F</b></a> \r
- <a href="whlstfl6.htm#subkey_G" target="_self"title="search letter G"><b>G</b></a> \r
- <a href="whlstfl7.htm#subkey_H" target="_self"title="search letter H"><b>H</b></a> \r
- <a href="whlstfl8.htm#subkey_I" target="_self"title="search letter I"><b>I</b></a> \r
- <a href="whlstfl9.htm#subkey_J" target="_self"title="search letter J"><b>J</b></a> \r
- <a href="whlstfl10.htm#subkey_K" target="_self"title="search letter K"><b>K</b></a> \r
- <a href="whlstfl11.htm#subkey_L" target="_self"title="search letter L"><b>L</b></a> \r
- <a href="whlstfl12.htm#subkey_M" target="_self"title="search letter M"><b>M</b></a> \r
- <a href="whlstfl13.htm#subkey_N" target="_self"title="search letter N"><b>N</b></a> \r
- <a href="whlstfl14.htm#subkey_O" target="_self"title="search letter O"><b>O</b></a> \r
- <a href="whlstfl15.htm#subkey_P" target="_self"title="search letter P"><b>P</b></a> \r
- <a href="whlstfl16.htm#subkey_Q" target="_self"title="search letter Q"><b>Q</b></a> \r
- <a href="whlstfl17.htm#subkey_R" target="_self"title="search letter R"><b>R</b></a> \r
- <a href="whlstfl18.htm#subkey_S" target="_self"title="search letter S"><b>S</b></a> \r
- <a href="whlstfl19.htm#subkey_T" target="_self"title="search letter T"><b>T</b></a> \r
- <a href="whlstfl20.htm#subkey_U" target="_self"title="search letter U"><b>U</b></a> \r
- <a href="whlstfl21.htm#subkey_V" target="_self"title="search letter V"><b>V</b></a> \r
- <a href="whlstfl22.htm#subkey_W" target="_self"title="search letter W"><b>W</b></a> \r
- <a href="whlstfl23.htm#subkey_X" target="_self"title="search letter X"><b>X</b></a> \r
- <a href="whlstfl24.htm#subkey_Y" target="_self"title="search letter Y"><b>Y</b></a> \r
- <a href="whlstf9.htm#bm_Z" target="ftslist"title="search letter Z" ><b>Z</b></a> \r
+<a name="home"></a> <a href="whlstfl0.htm#subkey_{" target="_self"title="search non-alphabet letter"><b>#</b></a> \r
+ <a href="whlstfl1.htm#subkey_A" target="_self"title="search letter A"><b>A</b></a> \r
+ <a href="whlstfl2.htm#subkey_B" target="_self"title="search letter B"><b>B</b></a> \r
+ <a href="whlstfl3.htm#subkey_C" target="_self"title="search letter C"><b>C</b></a> \r
+ <a href="whlstfl4.htm#subkey_D" target="_self"title="search letter D"><b>D</b></a> \r
+ <a href="whlstfl5.htm#subkey_E" target="_self"title="search letter E"><b>E</b></a> \r
+ <a href="whlstfl6.htm#subkey_F" target="_self"title="search letter F"><b>F</b></a> \r
+ <a href="whlstfl7.htm#subkey_G" target="_self"title="search letter G"><b>G</b></a> \r
+ <a href="whlstfl8.htm#subkey_H" target="_self"title="search letter H"><b>H</b></a> \r
+ <a href="whlstfl9.htm#subkey_I" target="_self"title="search letter I"><b>I</b></a> \r
+ <a href="whlstfl10.htm#subkey_J" target="_self"title="search letter J"><b>J</b></a> \r
+ <a href="whlstfl11.htm#subkey_K" target="_self"title="search letter K"><b>K</b></a> \r
+ <a href="whlstfl12.htm#subkey_L" target="_self"title="search letter L"><b>L</b></a> \r
+ <a href="whlstfl13.htm#subkey_M" target="_self"title="search letter M"><b>M</b></a> \r
+ <a href="whlstfl14.htm#subkey_N" target="_self"title="search letter N"><b>N</b></a> \r
+ <a href="whlstfl15.htm#subkey_O" target="_self"title="search letter O"><b>O</b></a> \r
+ <a href="whlstfl16.htm#subkey_P" target="_self"title="search letter P"><b>P</b></a> \r
+ <a href="whlstfl17.htm#subkey_Q" target="_self"title="search letter Q"><b>Q</b></a> \r
+ <a href="whlstfl18.htm#subkey_R" target="_self"title="search letter R"><b>R</b></a> \r
+ <a href="whlstfl19.htm#subkey_S" target="_self"title="search letter S"><b>S</b></a> \r
+ <a href="whlstfl20.htm#subkey_T" target="_self"title="search letter T"><b>T</b></a> \r
+ <a href="whlstfl21.htm#subkey_U" target="_self"title="search letter U"><b>U</b></a> \r
+ <a href="whlstfl22.htm#subkey_V" target="_self"title="search letter V"><b>V</b></a> \r
+ <a href="whlstfl23.htm#subkey_W" target="_self"title="search letter W"><b>W</b></a> \r
+ <a href="whlstfl24.htm#subkey_X" target="_self"title="search letter X"><b>X</b></a> \r
+ <a href="whlstfl25.htm#subkey_Y" target="_self"title="search letter Y"><b>Y</b></a> \r
+ <a href="whlstf8.htm#bm_Z" target="ftslist"title="search letter Z" ><b>Z</b></a> \r
 </p>\r
 \r
 <body>\r
index d181711bacabfe37be40af2d6686bc20503dec39..f3659d1c468aff997ac90394282fbc20fafa5249 100755 (executable)
@@ -1,10 +1,11 @@
 <html>\r
 <head>\r
-<!-- WebHelp version 2002 -->\r
+<!-- WebHelp version 5.10 -->\r
 <title>Glossary Letters</title>\r
 <base target="bsscright">\r
-<meta name="generator" content="RoboHELP by eHelp Corporation www.ehelp.com">\r
-<meta http-equiv="content-type" content="text/html; charset=iso-8859-1">\r
+\r
+<meta name="generator" content="RoboHelp by eHelp Corporation   www.ehelp.com">\r
+<meta name="description" content="WebHelp 5.50">\r
 <style>\r
 <!--\r
 body {margin-left:1pt; margin-top:1pt; margin-right:1pt;font-family:Arial; font-size:9pt;}\r
@@ -35,7 +36,7 @@ body {background-color:White; }
 -->\r
 </style>\r
 </head>\r
-<body marginheight="0"  marginwidth="0">\r
+<body marginheight="0"  marginwidth="0" bgproperties="fixed">\r
 <p class="glsheader">\r
  <font class="inactive">#</font> \r
  <font class="inactive">A</font> \r
index cc65c8f2f99cdbc5b1fffba036124afdd6dffbe7..1a8036de8a20cee4a0f4b8c9842f8bb6cd220565 100755 (executable)
@@ -1,8 +1,10 @@
-<!-- WebHelp version 2002 -->\r
+<!-- WebHelp version 5.10 -->\r
 <html>\r
 <head>\r
 <title> Content Navigation Pane </title>\r
-<META HTTP-EQUIV="content-type" CONTENT="text/html; charset=iso-8859-1">\r
+\r
+<meta name="generator" content="RoboHelp by eHelp Corporation   www.ehelp.com">\r
+<meta name="description" content="WebHelp 5.50">\r
 <style>\r
 \r
 </style>\r
index dfca9caef7519be120698bbb0f8e9266bedd74fc..fa146f1f842aebfaa27c92a826017424b9f7eeeb 100755 (executable)
@@ -1,8 +1,10 @@
-<!-- WebHelp version 2002 -->\r
+<!-- WebHelp version 5.10 -->\r
 <html>\r
 <head>\r
 <title> Index Navigation Pane </title>\r
-<META HTTP-EQUIV="content-type" CONTENT="text/html; charset=iso-8859-1">\r
+\r
+<meta name="generator" content="RoboHelp by eHelp Corporation   www.ehelp.com">\r
+<meta name="description" content="WebHelp 5.50">\r
 <style>\r
 \r
 </style>\r
index c0b6f6dc08c7883d34b0ced212b708b16923a90f..c334807b14131f47a1eed7c944afa6b1d6a2f5e4 100755 (executable)
@@ -1,12 +1,13 @@
-<!-- WebHelp version 2002 -->\r
+<!-- WebHelp version 5.10 -->\r
 <html>\r
 <head>\r
 <title> Search Navigation Pane </title>\r
-<META HTTP-EQUIV="content-type" CONTENT="text/html; charset=iso-8859-1">\r
+\r
+<meta name="generator" content="RoboHelp by eHelp Corporation   www.ehelp.com">\r
+<meta name="description" content="WebHelp 5.50">\r
 <style>\r
 \r
 </style>\r
-<META HTTP-EQUIV="content-type" CONTENT="text/html; charset=iso-8859-1">\r
 </head>\r
 <frameset rows="36, *" border="0" frameborder="0">\r
        <frame name="ftstabs" title="tab selection frame" src="whnvt32.htm" noresize frameborder="no" scrolling="no" border="0" marginheight="0" marginwidth="0" ></frame>\r
index 498126572309cae3769c9e3ab09ea8cc95e8cda8..8fb4636f0d25b1a03dcf1042cc6c8854ee12ceb6 100755 (executable)
@@ -1,8 +1,10 @@
-<!-- WebHelp version 2002 -->\r
+<!-- WebHelp version 5.10 -->\r
 <html>\r
 <head>\r
 <title> Glossary Navigation Pane </title>\r
-<META HTTP-EQUIV="content-type" CONTENT="text/html; charset=iso-8859-1">\r
+\r
+<meta name="generator" content="RoboHelp by eHelp Corporation   www.ehelp.com">\r
+<meta name="description" content="WebHelp 5.50">\r
 <style>\r
 \r
 </style>\r
index 706e7bdb95b4fb47d160841bf5c8162910af770f..35e6ef5b8af6ea051be4bde1b345d04a661e3c92 100755 (executable)
@@ -1,10 +1,11 @@
 <html>\r
 <head>\r
-<!-- WebHelp version 2002 -->\r
+<!-- WebHelp version 5.10 -->\r
 <title>Content Navigation Tab</title>\r
 <base target="bsscright">\r
-<meta name="generator" content="RoboHELP by eHelp Corporation www.ehelp.com">\r
-<meta http-equiv="content-type" content="text/html; charset=iso-8859-1">\r
+\r
+<meta name="generator" content="RoboHelp by eHelp Corporation   www.ehelp.com">\r
+<meta name="description" content="WebHelp 5.50">\r
 <style>\r
 <!--\r
 body {margin-left:1pt; margin-top:1pt; margin-right:1pt;font-family:Arial; font-size:9pt;}\r
@@ -28,15 +29,15 @@ A:link {color:Black; } A:link {font-family:Tahoma; } A:link {font-size:8pt; } A:
 A:visited {color:Black; } A:visited {font-family:Tahoma; } A:visited {font-size:8pt; } A:visited {font-style:Normal; } A:visited {text-decoration:none; } \r
 A:active {background-color:Silver; } \r
 A:hover {color:Navy; } A:hover {font-family:Tahoma; } A:hover {font-size:8pt; } A:hover {font-style:Normal; } A:hover {text-decoration:underline; } \r
-\r
+img {vertial-align:middle;}\r
 -->\r
 </style>\r
 </head>\r
-<body class="tabs" marginheight="0"  marginwidth="0">\r
+<body class="tabs" marginheight="0"  marginwidth="0" bgproperties="fixed">\r
 <table class="tabs" width="100%">\r
  <tr> \r
    <td class="tabs">\r
-   <nobr><a href="javascript:void(0)"><img src="../wht_tab1.gif" border="0"></a><a href="whnvp32.htm" target="_parent"><img src="../wht_tab6.gif" border="0"></a><a href="whnvp33.htm" target="_parent"><img src="../wht_tab8.gif" border="0"></a></nobr>\r
+   <nobr><a href="javascript:void(0)" title="Contents"><img src="../wht_tab1.gif" border="0"></a><a href="whnvp32.htm" target="_parent" title="Search"><img src="../wht_tab6.gif" border="0"></a><a href="whnvp33.htm" target="_parent" title="Glossary"><img src="../wht_tab8.gif" border="0"></a></nobr>\r
    </td>\r
  </tr>\r
 </table>\r
index ebfdb88facb5a6110e7f03a27995522baa25580f..53dd7e91cb685ac0a66fd68830e2a0138703dba8 100755 (executable)
@@ -1,10 +1,11 @@
 <html>\r
 <head>\r
-<!-- WebHelp version 2002 -->\r
+<!-- WebHelp version 5.10 -->\r
 <title>Index Navigation Tab</title>\r
 <base target="bsscright">\r
-<meta name="generator" content="RoboHELP by eHelp Corporation www.ehelp.com">\r
-<meta http-equiv="content-type" content="text/html; charset=iso-8859-1">\r
+\r
+<meta name="generator" content="RoboHelp by eHelp Corporation   www.ehelp.com">\r
+<meta name="description" content="WebHelp 5.50">\r
 <style>\r
 <!--\r
 body {margin-left:1pt; margin-top:1pt; margin-right:1pt;font-family:Arial; font-size:9pt;}\r
@@ -30,11 +31,11 @@ A:hover {color:Navy; } A:hover {font-family:Tahoma; } A:hover {font-size:8pt; }
 -->\r
 </style>\r
 </head>\r
-<body class="tabs" marginheight="0"  marginwidth="0">\r
+<body class="tabs" marginheight="0"  marginwidth="0" bgproperties="fixed">\r
 <table class="tabs" width="100%">\r
  <tr> \r
    <td class="tabs">\r
-   <nobr><a href="whnvp30.htm" target="_parent"><img src="../wht_tab2.gif" border="0"></a><a href="whnvp32.htm" target="_parent"><img src="../wht_tab6.gif" border="0"></a><a href="whnvp33.htm" target="_parent"><img src="../wht_tab8.gif" border="0"></a></nobr>\r
+   <nobr><a href="whnvp30.htm" target="_parent" title="Contents"><img src="../wht_tab2.gif" border="0"></a><a href="whnvp32.htm" target="_parent" title="Search"><img src="../wht_tab6.gif" border="0"></a><a href="whnvp33.htm" target="_parent" title="Glossary"><img src="../wht_tab8.gif" border="0"></a></nobr>\r
    </td>\r
  </tr>\r
 </table>\r
index 93c54b3f5eaf3439af8e41d8dd39ce6a07daf07c..464a4cc4adc3c394852bba7a1f63e84205e6bf83 100755 (executable)
@@ -1,10 +1,11 @@
 <html>\r
 <head>\r
-<!-- WebHelp version 2002 -->\r
+<!-- WebHelp version 5.10 -->\r
 <title>Search Navigation Tab</title>\r
 <base target="bsscright">\r
-<meta name="generator" content="RoboHELP by eHelp Corporation www.ehelp.com">\r
-<meta http-equiv="content-type" content="text/html; charset=iso-8859-1">\r
+\r
+<meta name="generator" content="RoboHelp by eHelp Corporation   www.ehelp.com">\r
+<meta name="description" content="WebHelp 5.50">\r
 <style>\r
 <!--\r
 body {margin-left:1pt; margin-top:1pt; margin-right:1pt;font-family:Arial; font-size:9pt;}\r
@@ -30,11 +31,11 @@ A:hover {color:Navy; } A:hover {font-family:Tahoma; } A:hover {font-size:8pt; }
 -->\r
 </style>\r
 </head>\r
-<body class="tabs" marginheight="0"  marginwidth="0">\r
+<body class="tabs" marginheight="0"  marginwidth="0" bgproperties="fixed">\r
 <table class="tabs" width="100%">\r
  <tr> \r
    <td class="tabs">\r
-   <nobr><a href="whnvp30.htm" target="_parent"><img src="../wht_tab2.gif" border="0"></a><a href="javascript:void(0)"><img src="../wht_tab5.gif" border="0"></a><a href="whnvp33.htm" target="_parent"><img src="../wht_tab8.gif" border="0"></a></nobr>\r
+   <nobr><a href="whnvp30.htm" target="_parent" title="Contents"><img src="../wht_tab2.gif" border="0"></a><a href="javascript:void(0)" title="Search"><img src="../wht_tab5.gif" border="0"></a><a href="whnvp33.htm" target="_parent" title="Glossary"><img src="../wht_tab8.gif" border="0"></a></nobr>\r
    </td>\r
  </tr>\r
 </table>\r
index 9219c27137179ab96ee8dbb8dab73bf2905462fb..eb46f192b44a955650c435c913e498972f643697 100755 (executable)
@@ -1,10 +1,11 @@
 <html>\r
 <head>\r
-<!-- WebHelp version 2002 -->\r
+<!-- WebHelp version 5.10 -->\r
 <title>Glossary Navigation Tab</title>\r
 <base target="bsscright">\r
-<meta name="generator" content="RoboHELP by eHelp Corporation www.ehelp.com">\r
-<meta http-equiv="content-type" content="text/html; charset=iso-8859-1">\r
+\r
+<meta name="generator" content="RoboHelp by eHelp Corporation   www.ehelp.com">\r
+<meta name="description" content="WebHelp 5.50">\r
 <style>\r
 <!--\r
 body {margin-left:1pt; margin-top:1pt; margin-right:1pt;font-family:Arial; font-size:9pt;}\r
@@ -30,11 +31,11 @@ A:hover {color:Navy; } A:hover {font-family:Tahoma; } A:hover {font-size:8pt; }
 -->\r
 </style>\r
 </head>\r
-<body class="tabs" marginheight="0"  marginwidth="0">\r
+<body class="tabs" marginheight="0"  marginwidth="0" bgproperties="fixed">\r
 <table class="tabs" width="100%">\r
  <tr> \r
    <td class="tabs">\r
-   <nobr><a href="whnvp30.htm" target="_parent"><img src="../wht_tab2.gif" border="0"></a><a href="whnvp32.htm" target="_parent"><img src="../wht_tab6.gif" border="0"></a><a href="javascript:void(0)"><img src="../wht_tab7.gif" border="0"></a></nobr>\r
+   <nobr><a href="whnvp30.htm" target="_parent" title="Contents"><img src="../wht_tab2.gif" border="0"></a><a href="whnvp32.htm" target="_parent" title="Search"><img src="../wht_tab6.gif" border="0"></a><a href="javascript:void(0)" title="Glossary"><img src="../wht_tab7.gif" border="0"></a></nobr>\r
    </td>\r
  </tr>\r
 </table>\r
index 3c5dfae2644bf6ebd5fc28b669be35404c95a246..ae435749c2b2a7646f0d644214e9b791fb623cd3 100755 (executable)
@@ -1,9 +1,9 @@
 <html>\r
 <head>\r
 <title>Glossary Definition</title>\r
-<meta http-equiv="content-type" content="text/html; charset=iso-8859-1">\r
+\r
 <meta name="generator" content="RoboHelp by eHelp Corporation   www.ehelp.com">\r
-<meta name "description" content="WebHelp 2002">\r
+<meta name="description" content="WebHelp 5.50">\r
 <script language="javascript" src="whver.js"></script>\r
 <script language="javascript1.2" src="whmsg.js"></script>\r
 <script language="javascript1.2" src="whproxy.js"></script>\r
index 01b669216d4d89cec238105cf65262f00f44320b..6ffb2947a30f9e4b6907ca0dd6153f66b963a502 100755 (executable)
@@ -1,9 +1,9 @@
 <html>\r
 <head>\r
 <title>Glossary</title>\r
-<meta http-equiv="content-type" content="text/html; charset=iso-8859-1">\r
+\r
 <meta name="generator" content="RoboHelp by eHelp Corporation   www.ehelp.com">\r
-<meta name "description" content="WebHelp 2002">\r
+<meta name="description" content="WebHelp 5.50">\r
 </head>\r
 <body bgcolor=#c0c0c0 scroll=no RIGHTMARGIN=0 BOTTOMMARGIN=0 TOPMARGIN=0 LEFTMARGIN=0>\r
 <script language="javascript" src="whver.js"></script>\r
index 77751a19e3b7507b2cded50efb66856aaf775a0e..56e1d5659d8dd675977ab9353d0dfaec0d76add6 100755 (executable)
@@ -1,3 +1,4 @@
+//     WebHelp 5.10.004\r
 var gbXML=false;\r
 var gaDef=new Array();\r
 var gsBgColor="#ffffff";\r
@@ -8,6 +9,8 @@ var gsMargin="2pt";
 var gsIndent="2pt";\r
 var gsActiveBgColor="#cccccc";\r
 var gbWhGHost=false;\r
+var gbShowDef=true;\r
+var gsGloId="Glo_"\r
 \r
 function setBackground(sBgImage)\r
 {\r
@@ -43,22 +46,6 @@ function setIndent(sIndent)
        gsIndent=sIndent;\r
 }\r
 \r
-function writeOneItem(oHTML,bDown,aDataCon,aCurIdxSet,n,aPos,nLevel)\r
-{\r
-\r
-       var sHTML="";\r
-       var nIdxSet=aCurIdxSet[n];\r
-       var nIIdx=aPos[nIdxSet];\r
-       var sRawKName = getItemName(aDataCon,nIdxSet,nIIdx);\r
-       var sKName=_textToHtml(sRawKName);\r
-       var nIndex=insertDef(sKName,_textToHtml_nonbsp(getDef(aDataCon,nIdxSet,nIIdx)));\r
-       if(nLevel==1){\r
-               sHTML+="<p><nobr><a alt=\"" + sKName+"\" href=\"javascript:void(0);\" onclick=\"showDef("+nIndex;\r
-               sHTML+=");return false;\">"+sKName+"</a></nobr></p>";\r
-       }\r
-       oHTML.addHTML(sHTML,1,bDown,true,sRawKName);\r
-}\r
-\r
 function insertDef(sKName,sDef)\r
 {\r
        var nLength=gaDef.length\r
@@ -71,6 +58,7 @@ function showDef(nDef)
 {\r
        if(nDef<gaDef.length)\r
        {       \r
+               HighLight(nDef);\r
                var oParam=gaDef[nDef];\r
                var oMsg=new whMessage(WH_MSG_SHOWGLODEF,this,1,oParam);\r
                SendMessage(oMsg);\r
@@ -85,8 +73,50 @@ function nameDefPair(sName,sDef)
 \r
 function mergeItems(oHTML,bDown,aDataCon,aCurIdxSet,nLength,aPos,nLevel)\r
 {\r
-       for(var i=0;i<nLength;i++)\r
-               writeOneItem(oHTML,bDown,aDataCon,aCurIdxSet,i,aPos,nLevel);\r
+       var sHTML="";\r
+       var nIdxSet=aCurIdxSet[0];\r
+       var nIIdx=aPos[nIdxSet];\r
+       var sRawKName = getItemName(aDataCon,nIdxSet,nIIdx);\r
+       var sKName=_textToHtml(sRawKName);\r
+       var sDText=_textToHtml_nonbsp(getDef(aDataCon,nIdxSet,nIIdx));\r
+       var sDef=sDText;\r
+       for(var i=1;i<nLength;i++)\r
+       {\r
+               var nIdxSeti=aCurIdxSet[i];\r
+               var nIIdxi=aPos[nIdxSeti];\r
+               var sRawKNamei = getItemName(aDataCon,nIdxSeti,nIIdxi);\r
+               var sKNamei=_textToHtml(sRawKNamei);\r
+               var sDTexti=_textToHtml_nonbsp(getDef(aDataCon,nIdxSeti,nIIdxi));\r
+               if (compare(sKNamei,sKName)==0)\r
+               {\r
+                       if (sDText!=sDTexti)\r
+                               sDef+="<br>"+sDTexti;\r
+               }\r
+       }\r
+       var nIndex=insertDef(sKName,sDef);\r
+       if(nLevel==1)\r
+       {\r
+               sHTML+="<p><nobr id=\""+getGloId(nIndex)+"\">";\r
+               sHTML+="<a alt=\""+sKName+"\" href=\"javascript:void(0);\" onfocus=\"HighLight("+nIndex+");\" onclick=\"showDef("+nIndex+");return false;\">"+sKName+"</a></nobr></p>";\r
+               oHTML.addHTML(sHTML,nLength,bDown,true,sRawKName);\r
+               if(gbShowDef)\r
+               {\r
+                       setTimeout("showDef(0);",100);\r
+                       gbShowDef = false;\r
+               }\r
+       }\r
+}\r
+\r
+function HighLight(nIndex)\r
+{\r
+       var oObj=getElement(getGloId(nIndex));\r
+       if(oObj)\r
+               HighLightElement(oObj,gsActiveBgColor,"transparent");\r
+}\r
+\r
+function getGloId(nIndex)\r
+{\r
+       return gsGloId+nIndex;\r
 }\r
 \r
 function adjustPosition(bDown,aDataCon,aCurIdxSet,nLength,aPos)\r
@@ -146,7 +176,7 @@ function loadGlo()
                                var sLangId=aProj[0].sLangId;\r
                                for(var i=0;i<aProj.length;i++)\r
                                {\r
-                                       if(aProj[i].sGlo!=null&&aProj[i].sGlo!=""&&aProj[i].sLangId==sLangId)\r
+                                       if(aProj[i].sGlo&&aProj[i].sLangId==sLangId)\r
                                                addProjInfo(aProj[i].sPPath,aProj[i].sDPath,aProj[i].sGlo);\r
                                }\r
                        }\r
index 664120f3abbc41463ab6c76d039c815eeaa5c566..5a02374adbb8824deb56dc11d9cd8163f09fda19 100755 (executable)
@@ -1,3 +1,4 @@
+//     WebHelp 5.10.002\r
 var gaChunks=new Array();\r
 var gaFakes=new Array();\r
 var gaDataCon=null;\r
@@ -35,6 +36,20 @@ var gsSKB=null;
 \r
 var gbLoadInfo=false;\r
 \r
+function onLoadXMLError()\r
+{\r
+       if(gbLoadInfo)\r
+       {\r
+               var aChunk=new Array();\r
+               projReady(aChunk);\r
+       }\r
+       else\r
+       {\r
+               var aData=new Array();\r
+               putData(aData);\r
+       }\r
+}\r
+\r
 function putDataXML(xmlDoc,sDocPath)\r
 {\r
        if(gbLoadInfo)\r
@@ -683,7 +698,7 @@ function writeItems(oHTML,aDataCon,aPos,aMinPos,aMaxPos,bDown,nLevel)
                                        p=0;\r
                                        aCurIdxSet[p++]=i;\r
                                }\r
-                               else if(sCurrentK==aDataCon[i].aKs[aPos[i]].sName){\r
+                               else if(compare(sCurrentK,aDataCon[i].aKs[aPos[i]].sName)==0){\r
                                        aCurIdxSet[p++]=i;\r
                                }\r
                        }\r
index 62cbf7af946d5adf4349596957e515ae50477a2c..a279fa88835a79199e37fa2cabb66d3a31a163d1 100755 (executable)
@@ -1,9 +1,9 @@
 <html>\r
 <head>\r
 <title>Index content</title>\r
-<meta http-equiv="content-type" content="text/html; charset=iso-8859-1">\r
+\r
 <meta name="generator" content="RoboHelp by eHelp Corporation   www.ehelp.com">\r
-<meta name "description" content="WebHelp 2002">\r
+<meta name="description" content="WebHelp 5.50">\r
 <base target="bsscright">\r
 <script language="javascript" src="whver.js"></script>\r
 <script language="javascript1.2" src="whmozemu.js"></script>\r
 <script language="javascript1.2" src="whihost.js"></script>\r
 <script language="javascript1.2">\r
 <!--\r
-var gnPageWidth = 0;\r
-var gnPageHeight = 0;\r
 var goPopup = null;\r
-var gITE = new Array();\r
-var gIndexLetterArray = new Array();\r
 var gbPopupMenuTimeoutExpired=false;\r
 var gBsClientWidth=640;\r
 var gBsClientHeight=480;\r
@@ -89,7 +85,7 @@ function PopupMenu_Invoke()
                while (i <= argLen - 1) {\r
                        strMenu += '<TR><TD><NOBR>'\r
                        strMenu += '<DIV STYLE="padding-left:3pt; padding-right:3pt;"><A ';\r
-                       strMenu += ' onclick="parent.PopupMenu_2HandleClick(\'' + fn_arguments[i + 1] + '\', \'' + fn_arguments[1] + '\');"';\r
+                       strMenu += ' onclick="parent.PopupMenu_2HandleClick(\'' + excapeSingleQuotandSlash(fn_arguments[i + 1]) + '\', \'' + fn_arguments[1] + '\');"';\r
                        strMenu += ' onmouseover="parent.PopupMenu_Over(event);"';\r
                        strMenu += ' onmouseout="parent.PopupMenu_Out(event);"';\r
                        strMenu += '>';\r
@@ -108,7 +104,7 @@ function PopupMenu_Invoke()
                        strMenu += ' onmouseover="PopupMenu_Over(event);"';\r
                        strMenu += ' onmouseout="PopupMenu_Out(event);"';\r
                        strMenu += '>';\r
-                       strMenu += '<SPAN CLASS="PopupNotOver">' + fn_arguments[i] + '</SPAN>';\r
+                       strMenu += '<SPAN CLASS="PopupNotOver">' + excapeSingleQuotandSlash(fn_arguments[i]) + '</SPAN>';\r
                        strMenu += '</A></DIV></NOBR></TD></TR>';\r
                        i += 2;\r
                }\r
@@ -125,7 +121,7 @@ function PopupMenu_Invoke()
        var nEventX = 0;\r
        var nEventY = 0;\r
        var nWindowWidth = 0;\r
-       if (gbIE4)\r
+       if (gbIE4||gbOpera7)\r
        {\r
                layerPopup = document.all["PopupMenu"];\r
                layerPopup.innerHTML = strMenu;\r
@@ -221,7 +217,7 @@ function PopupMenu_Timeout()
 \r
 function PopupMenu_Over(e)\r
 {\r
-       if (gbIE4)\r
+       if (gbIE4||gbOpera7)\r
                e.srcElement.className = "PopupOver";\r
        else if (gbNav6)\r
                e.target.parentNode.className = "PopupOver";\r
@@ -229,7 +225,7 @@ function PopupMenu_Over(e)
 \r
 function PopupMenu_Out(e)\r
 {\r
-       if (gbIE4)\r
+       if (gbIE4||gbOpera7)\r
                e.srcElement.className = "PopupNotOver";\r
        else if (gbNav6)\r
                e.target.parentNode.className = "PopupNotOver";\r
index 8a420e4b5af52574a963c099f3d50dcf1a89de44..945fdc8f00900237175dfa0d4574e1cfbdf1ae25 100755 (executable)
@@ -1,9 +1,9 @@
 <html>\r
 <head>\r
 <title>Index</title>\r
-<meta http-equiv="content-type" content="text/html; charset=iso-8859-1">\r
+\r
 <meta name="generator" content="RoboHelp by eHelp Corporation   www.ehelp.com">\r
-<meta name "description" content="WebHelp 2002">\r
+<meta name="description" content="WebHelp 5.50">\r
 </head>\r
 <script language="javascript" src="whver.js"></script>\r
 <script language="javascript1.2" src="whproxy.js"></script>\r
index 1f2835db8bb384632e308ab4e58c03ae81a9fed0..76674d78dcf73bdabddd977e5f2dca0fab9eddae 100755 (executable)
@@ -1,9 +1,9 @@
 <html>\r
 <head>\r
 <title>Index form</title>\r
-<meta http-equiv="content-type" content="text/html; charset=iso-8859-1">\r
+\r
 <meta name="generator" content="RoboHelp by eHelp Corporation   www.ehelp.com">\r
-<meta name "description" content="WebHelp 2002">\r
+<meta name="description" content="WebHelp 5.50">\r
 </head>\r
 <style>\r
 <!--\r
index 7e2ab32d51199ca52e71db20af6bd6369c753ab9..9aaf13a6a58483b1e15effca8b7f79775caccbba 100755 (executable)
@@ -1,3 +1,4 @@
+//     WebHelp 5.10.002\r
 var gsDefaultTarget="bsscright";\r
 var gsBgColor="#ffffff";\r
 var gsBgImage="";\r
@@ -76,7 +77,7 @@ function writeOneItem(oHTML,bDown,aDataCon,aCurIdxSet,nLength,aPos,nLevel)
                        for(var i=0;i<nLength;i++)\r
                                sTopics+=getIdxTopics(aDataCon,aCurIdxSet[i],aPos[aCurIdxSet[i]]);\r
                        sHTML+="<p style=\"margin-left:"+gsIdxIndent+"\"><nobr>";\r
-                       sHTML+="<a alt=\"" + sKName + "\" href=\"javascript:void(0);\" onfocus=\"clearHighLight();\" onclick=\"PopupMenu_Invoke(event,'"+getTargetName(aDataCon,nIdxSet,nIIdx)+"'";\r
+                       sHTML+="<a alt=\"" + sKName + "\" href=\"javascript:void(0);\" onfocus=\"clearHighLight();\" onclick=\"PopupMenu_Invoke(event,'"+excapeSingleQuotandSlash(getTargetName(aDataCon,nIdxSet,nIIdx))+"'";\r
                        if(sTopics.length>0)\r
                                sHTML+=sTopics+");return false;\">"+sKName+"</a></nobr></p>";\r
                        else\r
@@ -91,7 +92,7 @@ function writeOneItem(oHTML,bDown,aDataCon,aCurIdxSet,nLength,aPos,nLevel)
                        sHTML+="<h6 class=\"firstsub\" style=\"margin-left:"+nIndent+"pt\"><nobr>";\r
                else\r
                        sHTML+="<h6 style=\"margin-left:"+nIndent+"pt\"><nobr>";\r
-               sHTML+="<a alt=\"" + sKName + "\" href=\"javascript:void(0);\" onfocus=\"clearHighLight();\" onclick=\"PopupMenu_Invoke(event,'"+getTargetName(aDataCon,nIdxSet,nIIdx)+"'";\r
+               sHTML+="<a alt=\"" + sKName + "\" href=\"javascript:void(0);\" onfocus=\"clearHighLight();\" onclick=\"PopupMenu_Invoke(event,'"+excapeSingleQuotandSlash(getTargetName(aDataCon,nIdxSet,nIIdx))+"'";\r
                if(sTopics.length>0)\r
                        sHTML+=sTopics+");return false;\">"+sKName+"</a></nobr></h6>";\r
                else\r
@@ -217,7 +218,7 @@ function loadIdx()
                                var sLangId=aProj[0].sLangId;\r
                                for(var i=0;i<aProj.length;i++)\r
                                {\r
-                                       if(aProj[i].sIdx!=null&&aProj[i].sIdx!=""&&aProj[i].sLangId==sLangId)\r
+                                       if(aProj[i].sIdx&&aProj[i].sLangId==sLangId)\r
                                        {\r
                                                addProjInfo(aProj[i].sPPath,aProj[i].sDPath,aProj[i].sIdx);\r
                                        }\r
@@ -243,22 +244,13 @@ function getIdxTopics(aDataCon,nIdxSet,nIIdx)
                        {\r
                                var sURL=aDataCon[nIdxSet].aKs[nIIdx].aTopics[i].sURL;\r
                                var sFullPath=_getFullPath(sPath,sURL);\r
-                               sTopics+=",'"+excapeSingleQuot(_textToHtml(aDataCon[nIdxSet].aKs[nIIdx].aTopics[i].sName))+"','"+_textToHtml_nonbsp(sFullPath)+"'";\r
+                               sTopics+=",'"+excapeSingleQuotandSlash(_textToHtml(aDataCon[nIdxSet].aKs[nIIdx].aTopics[i].sName))+"','"+excapeSingleQuotandSlash(_textToHtml_nonbsp(sFullPath))+"'";\r
                        }\r
                }\r
        }\r
        return sTopics;         \r
 }\r
 \r
-function excapeSingleQuot(str)\r
-{\r
-       if(str==null) return null;\r
-       var sRes=str;\r
-       var re=new RegExp("'","g");\r
-       sRes=sRes.replace(re,"\\'");\r
-       return sRes;\r
-}\r
-\r
 function findCKInDom()\r
 {\r
        if(gsCK!=null)\r
index 055b5b80e7655a6cd246a629a2d92ba863c00ea1..870be0e1797d103cd99157099909f76c3e6ce6ef 100755 (executable)
@@ -1,3 +1,4 @@
+//     WebHelp 5.10.001\r
 var garrSortChar=new Array();\r
 var gaFtsStop=new Array();\r
 var gaFtsStem=new Array();\r
@@ -349,14 +350,14 @@ gaFtsStop[85] = "who";
 gaFtsStop[86] = "with";\r
 gaFtsStop[87] = "you";\r
 \r
-gaFtsStem[0] = "s";\r
-gaFtsStem[1] = "e";\r
-gaFtsStem[2] = "ed";\r
-gaFtsStem[3] = "es";\r
-gaFtsStem[4] = "er";\r
-gaFtsStem[5] = "ly";\r
+gaFtsStem[0] = "ed";\r
+gaFtsStem[1] = "es";\r
+gaFtsStem[2] = "er";\r
+gaFtsStem[3] = "e";\r
+gaFtsStem[4] = "s";\r
+gaFtsStem[5] = "ingly";\r
 gaFtsStem[6] = "ing";\r
-gaFtsStem[7] = "ingly";\r
+gaFtsStem[7] = "ly";\r
 \r
 \r
 // as javascript 1.3 support unicode instead of ISO-Latin-1\r
index 699779f3cfbefd065e7cf653676ea26a9801d1f5..84c6de1ed099d2dd70ad4d305042e2d12071cf96 100755 (executable)
@@ -1,10 +1,11 @@
+//     WebHelp 5.10.002\r
 if (! window.gbIE4 && window.gbNav6 && !document.childNodes[0].insertAdjacentHTML){\r
 \r
 HTMLElement.prototype.insertAdjacentElement = function(where,parsedNode)\r
 {\r
        switch (where){\r
        case 'beforeBegin':\r
-               this.parentNode.insertBefore(parsedNode,this)\r
+               this.parentNode.insertBefore(parsedNode,this);\r
                break;\r
        case 'afterBegin':\r
                this.insertBefore(parsedNode,this.firstChild);\r
@@ -14,10 +15,9 @@ HTMLElement.prototype.insertAdjacentElement = function(where,parsedNode)
                break;\r
        case 'afterEnd':\r
                if (this.nextSibling){\r
-               this.parentNode.insertBefore\r
-(parsedNode,this.nextSibling);\r
+               this.parentNode.insertBefore(parsedNode,this.nextSibling);\r
                } else {\r
-               this.parentNode.appendChild(parsedNode)\r
+               this.parentNode.appendChild(parsedNode);\r
                }\r
                break;\r
        }\r
@@ -28,41 +28,40 @@ HTMLElement.prototype.insertAdjacentHTML = function(where,htmlStr){
        var r = this.ownerDocument.createRange();\r
        r.setStartBefore(this);\r
        var parsedHTML = r.createContextualFragment(htmlStr);\r
-       this.insertAdjacentElement(where,parsedHTML)\r
+       this.insertAdjacentElement(where,parsedHTML);\r
 }\r
 \r
 \r
 HTMLElement.prototype.insertAdjacentText = function(where,txtStr){\r
 \r
-       var parsedText = document.createTextNode(txtStr)\r
-       this.insertAdjacentElement(where,parsedText)\r
+       var parsedText = document.createTextNode(txtStr);\r
+       this.insertAdjacentElement(where,parsedText);\r
 }\r
 }\r
 \r
 function testScroll() {\r
        // Initialize scrollbar cache if necessary\r
        if (window._pageXOffset==null) {\r
-               window._pageXOffset = window.pageXOffset\r
-               window._pageYOffset = window.pageYOffset\r
+               window._pageXOffset = window.pageXOffset;\r
+               window._pageYOffset = window.pageYOffset;\r
        }\r
        // Expose Internet Explorer compatible object model\r
-       document.body.scrollTop = window.pageYOffset\r
-       document.body.scrollLeft = window.pageXOffset\r
-       window.document.body.scrollHeight = document.height\r
-       window.document.body.scrollWidth = document.width\r
-       window.document.body.clientWidth = window.innerWidth;\r
-       window.document.body.clientHeight = window.innerHeight;\r
+       document.scrollTop = window.pageYOffset;\r
+       document.scrollLeft = window.pageXOffset;\r
+       window.document.scrollHeight = document.height;\r
+       window.document.scrollWidth = document.width;\r
+       window.document.clientWidth = window.innerWidth;\r
+       window.document.clientHeight = window.innerHeight;\r
 \r
        // If cache!=current values, call the onscroll event\r
-       if (((window.pageXOffset!=window._pageXOffset) || \r
-                       (window.pageYOffset!=window._pageYOffset)) && (window.onscroll)) \r
-               window.onscroll()\r
+       if (((window.pageXOffset!=window._pageXOffset) || (window.pageYOffset!=window._pageYOffset)) && (window.onscroll)) \r
+               window.onscroll();\r
        // Cache new values\r
-       window._pageXOffset = window.pageXOffset\r
-       window._pageYOffset = window.pageYOffset\r
+       window._pageXOffset = window.pageXOffset;\r
+       window._pageYOffset = window.pageYOffset;\r
        }\r
 \r
 // Create compatibility layer for Netscape\r
-if (window.gbNav6) {\r
+if (window.gbNav6 && !window.gbNav7) {\r
        setInterval("testScroll()",50)\r
 }
\ No newline at end of file
index e08cc08ac7aebce8eefd0c41e3ccfd6c354b7a72..52ffcd2434bf2df36d626d1ff365e71655d0a330 100755 (executable)
@@ -1,11 +1,12 @@
+//     WebHelp 5.10.002\r
 var WH_MSG_RESIZEPANE          =0x0100;\r
 var WH_MSG_SHOWPANE                    =0x0101;\r
 var WH_MSG_HIDEPANE                    =0x0102;\r
 var WH_MSG_SYNCTOC                     =0x0103;\r
 var WH_MSG_NEXT                                =0x0104;\r
 var WH_MSG_PREV                                =0x0105;\r
-var WH_MSG_ENABLEPREV          =0x0106;\r
-var WH_MSG_ENABLESYNC          =0x0107;\r
+var WH_MSG_NOSEARCHINPUT       =0x0106;\r
+var WH_MSG_NOSYNC                      =0x0107;\r
 var WH_MSG_ENABLEWEBSEARCH     =0x0108;\r
 \r
 var WH_MSG_ISPANEVISIBLE       =0x0109;\r
@@ -54,6 +55,10 @@ var WH_MSG_INITSEARCHSTRING =0x0a07;
 var WH_MSG_RELOADNS6           =0x0a08;\r
 var WH_MSG_ISAVENUESUPPORT     =0x0a09;\r
 \r
+var WH_MSG_GETCMD                      =0x0b00;\r
+var    WH_MSG_GETPANE                  =0x0b01;\r
+var WH_MSG_GETDEFPANE          =0x0b02;\r
+\r
 function whMessage(nMessageId,wSender,nVersion,oParam)\r
 {\r
        this.nMessageId=nMessageId;\r
index da1e23a8f2004f3fd3f497b0133c1f3327fecd2b..9c283ed8d02ab861e4fdea71a0b49de030d72235 100755 (executable)
@@ -1,15 +1,25 @@
 <html>\r
 <head>\r
-<title>SALOME reference manual</title>\r
-<meta http-equiv="content-type" content="text/html; charset=iso-8859-1">\r
+<title>KERNEL</title>\r
+\r
 <meta name="generator" content="RoboHelp by eHelp Corporation   www.ehelp.com">\r
-<meta name "description" content="WebHelp 2002">\r
+<meta name="description" content="WebHelp 5.50">\r
 <script language="javascript1.2" src="whutils.js"></script>\r
 <script language="javascript1.2" src="whmsg.js"></script>\r
 <script language="javascript1.2" src="whstub.js"></script>\r
 <script language="javascript" src="whver.js"></script>\r
 <script language="javascript1.2" src="whstart.js"></script>\r
+<script language="javascript1.2">\r
+<!--\r
+function window_Onload()\r
+{\r
+       if (window.gsTopic)\r
+               frames["bsscright"].document.location = window.gsTopic;\r
+}\r
+window.onload=window_Onload;\r
+//-->\r
+</script>\r
 </head>\r
 \r
-<frameset id="whPfset" cols="260,*"><noframes><p>Your browser does not support frames. We recommend that you update your browser to a version that supports frames.</p><p>To view the Help system without frames click on this<a href="whgdata/whnvp30.htm">hyperlink.</a></p></noframes><frame src="whgdata/whnvp30.htm" title="navigation pane" name="navigation pane" scrolling="no"><frame src="files/introduction.htm" title="topic pane" name="bsscright" scrolling="yes"></frameset>\r
+<frameset id="whPfset" cols="260,*"><noframes><p>Your browser does not support frames. We recommend that you update your browser to a version that supports frames.</p><p>To view the Help system without frames click on this<a href="whgdata/whnvp30.htm">hyperlink.</a></p></noframes><frame src="whgdata/whnvp30.htm" title="navigation pane" name="navigation pane" scrolling="no"><frame src="kernel/introduction.htm" title="topic pane" name="bsscright" scrolling="yes"></frameset>\r
 </html>
\ No newline at end of file
index d4c80bbb93a45278ad6097bc7f2d64537424881a..9c91b49c89d9256b8a7f9800e800f12ebf0435df 100755 (executable)
@@ -1,3 +1,4 @@
+//     WebHelp 5.10.005\r
 var gaProj=new Array();\r
 var gnChecked=0;\r
 var gsProjName="";\r
@@ -87,7 +88,7 @@ function whCom(sName,sComFile)
                                var strFile= _getFullPath(getPath(), this.msComFile);\r
                                var oDiv=getElement(this.msDivId);\r
                                if(oDiv){\r
-                                       if(gbIE4){\r
+                                       if(gbIE4||gbOpera7){\r
                                                var nIFrameHeight=oDiv.style.pixelHeight;\r
                                                var nIFrameWidth=oDiv.style.pixelWidth;\r
                                                var sHTML="<IFRAME ID="+this.msIFrameId+" title=\"" + this.msName + "\" SRC=\""+strFile+"\" BORDER=0 FRAMEBORDER=no STYLE=\"width:";\r
@@ -98,8 +99,7 @@ function whCom(sName,sComFile)
                                                }\r
                                                oDiv.innerHTML=sHTML;\r
                                        }else if(gbNav6){\r
-                                               gsHTML="<IFRAME ID="+this.msIFrameId+" title=\"" + this.msName + "\" SRC=\""+strFile+"\" BORDER=0 FRAMEBORDER=no STYLE=\"width:100%;border:0;height:";\r
-                                               gsHTML+="100%;\"></IFRAME>";\r
+                                               gsHTML="<IFRAME ID="+this.msIFrameId+" title=\"" + this.msName + "\" SRC=\""+strFile+"\" BORDER=0 FRAMEBORDER=no STYLE=\"width:100%;border:0;height:100%;\"></IFRAME>";\r
                                                goDiv = oDiv;\r
                                                setTimeout("delayLoad()", 100);\r
                                        }\r
@@ -119,11 +119,12 @@ function whCom(sName,sComFile)
                var sHTML="";\r
                if(gbMac&&gbIE4)\r
                        sHTML+="<DIV ID="+this.msDivId+" ALIGN=left STYLE=\"position:absolute;z-index:1;left:0;top:0;width:100%;height:100%;margin:0;padding:0;border:0;\">";\r
+               else if(gbIE5)\r
+                       sHTML+="<DIV ID="+this.msDivId+" ALIGN=left STYLE=\"position:absolute;z-index:1;left:0;top:0;width:100%;height:100%;\">";\r
+               else if(gbIE4||gbWindows)\r
+                       sHTML+="<DIV ID="+this.msDivId+" ALIGN=left STYLE=\"position:absolute;z-index:1;left:0;top:0;width:100%;height:100%;visibility:hidden\">";\r
                else\r
-                       if (gbIE5)\r
-                               sHTML+="<DIV ID="+this.msDivId+" ALIGN=left STYLE=\"position:absolute;z-index:1;left:0;top:0;width:100%;height:100%;\">";\r
-                       else\r
-                               sHTML+="<DIV ID="+this.msDivId+" ALIGN=left STYLE=\"position:absolute;z-index:1;left:0;top:0;width:100%;height:100%;visibility:hidden\">";\r
+                       sHTML+="<DIV ID="+this.msDivId+" ALIGN=left STYLE=\"position:absolute;z-index:1;left:0;top:0;width:100%;height:"+parent.height+";visibility:hidden\">";\r
                sHTML+="</DIV>";\r
                return sHTML;\r
        }\r
@@ -203,29 +204,68 @@ function getPath()
 goMan=new whComMan();\r
 function addPane(sName,sFileName)\r
 {\r
-       goMan.addCom(sName,sFileName);  \r
+       var oParam=new Object();\r
+       oParam.sName=sName;\r
+       var oMsg=new whMessage(WH_MSG_GETPANE, this, 1, oParam);\r
+       if (SendMessage(oMsg))\r
+       {\r
+               if (oMsg.oParam.bEnable)\r
+                       goMan.addCom(sName,sFileName);\r
+       }\r
+       else\r
+               goMan.addCom(sName,sFileName);  \r
 }\r
 \r
 function setShowPane(sName, bForce)\r
 {\r
        if ((gsFirstPane == "") || bForce)\r
-               gsFirstPane=sName;\r
+       {\r
+               var oMsg=new whMessage(WH_MSG_GETDEFPANE, this, 1, null);\r
+               if (SendMessage(oMsg))\r
+               {\r
+                       if (oMsg.oParam)\r
+                               gsFirstPane = oMsg.oParam;\r
+                       else\r
+                               gsFirstPane=sName;\r
+               }\r
+               else\r
+                       gsFirstPane=sName;\r
+       }\r
 }\r
 \r
 function window_OnLoad()\r
 {\r
-       if(gsProjName!="")\r
+       var oMsg=new whMessage(WH_MSG_GETCMD,this,1,null);\r
+       var bHidePane=false;\r
+       if (SendMessage(oMsg))\r
        {\r
-               goMan.init();\r
-               if(gsFirstPane!="")\r
-                       goMan.show(gsFirstPane);\r
-               else\r
-                       goMan.showById(0);\r
-               loadData2(gsProjName);\r
+               if(oMsg.oParam>0)\r
+               {\r
+                       if(oMsg.oParam==1)\r
+                               gsFirstPane="toc";\r
+                       else if(oMsg.oParam==2)\r
+                               gsFirstPane="idx";\r
+                       else if(oMsg.oParam==3)\r
+                               gsFirstPane="fts";\r
+                       else if(oMsg.oParam==4)\r
+                               gsFirstPane="glo";\r
+               }\r
+               else if(oMsg.oParam==0)\r
+               {\r
+                       bHidePane=true;\r
+               }\r
        }\r
-       else if (gServerEnabled)\r
+       goMan.init();\r
+       if(gsProjName!="")                      \r
+               loadData2(gsProjName);  \r
+       if (bHidePane)\r
+       {\r
+               gsFirstPane="";\r
+               var oMsg1=new whMessage(WH_MSG_HIDEPANE, this, 1, null)\r
+               SendMessage(oMsg1);\r
+       }\r
+       else\r
        {\r
-               goMan.init();\r
                if(gsFirstPane!="")\r
                        goMan.show(gsFirstPane);\r
                else\r
@@ -249,7 +289,7 @@ function loadData2(strFile)
 function addProject(bPreferXML,sXMLName,sHTMLName)\r
 {\r
        var bLoadXML=bPreferXML;\r
-       if(!gbIE4&&!gbNav6)\r
+       if(!gbIE4&&!gbNav6&&!gbOpera7)\r
                return;\r
        if(gbIE4&&!gbIE5)\r
                bLoadXML=false;\r
@@ -257,6 +297,8 @@ function addProject(bPreferXML,sXMLName,sHTMLName)
                bLoadXML=true;\r
        if(gbIE55||gbNav6)\r
                bLoadXML=true;\r
+       if(gbOpera7)\r
+               bLoadXML=false;         \r
        if(bLoadXML)\r
                addProjectXML(sXMLName);\r
        else\r
@@ -316,6 +358,8 @@ function putDataXML(xmlDoc,sdocPath)
                                var sURL=RmtProject[i].getAttribute("url");\r
                                if(sURL)\r
                                {\r
+                                       if(sURL.lastIndexOf("/")!=sURL.length-1)\r
+                                               sURL+="/";\r
                                        aRProj[nCount]=new Object();\r
                                        aRProj[nCount++].sPPath=_getFullPath(aRProj[0].sPPath,sURL);\r
                                }\r
@@ -326,11 +370,23 @@ function putDataXML(xmlDoc,sdocPath)
                {\r
                        // on Netscape 6.0 under some situation the xml file cannot be loaded.\r
                        // so we use pure html instead.\r
-                       setTimeout("redirectToList();",100);\r
+                       if (gnChecked == 0)\r
+                               setTimeout("redirectToList();",100);\r
+                       else\r
+                       {\r
+                               gnChecked++;\r
+                               setTimeout("checkRemoteProject();", 1);\r
+                       }\r
                }\r
        }\r
 }\r
 \r
+function onLoadXMLError()\r
+{\r
+       gnChecked++;\r
+       setTimeout("checkRemoteProject();", 1);\r
+}\r
+\r
 function redirectToList()\r
 {\r
        if(gbReDirectThis)\r
@@ -346,7 +402,7 @@ function putProjectInfo(aRProj)
                if(gnChecked!=0)\r
                {\r
                        if(aRProj[0].sLangId!=gaProj[0].sLangId)\r
-                               alert("The project: "+aRProj[0].sPPath+" is using a different language to the main project, which will cause the index and full text search functionality to be disabled for this remote project.");\r
+                               alert("The merged Help system "+aRProj[0].sPPath+" is using a different language from the master Help system, which will cause the index and full-text search functionality to be disabled in the merged Help system.");\r
                }\r
                gaProj[gnChecked]=aRProj[0];\r
                for(var i=1;i<aRProj.length;i++)\r
@@ -366,7 +422,7 @@ function putProjectInfo(aRProj)
                        }\r
                }\r
                gnChecked++;\r
-               checkRemoteProject();\r
+               setTimeout("checkRemoteProject();", 1);\r
        }\r
        else\r
                alert("Could not load correctly, please click Refresh.");\r
@@ -395,9 +451,8 @@ function cancelProj(i)
 {\r
        if(i==gnChecked)\r
        {\r
-               alert("Can't load project::"+gaProj[i].sPPath);\r
                gnChecked++;\r
-               checkRemoteProject();\r
+               setTimeout("checkRemoteProject();", 1);\r
        }       \r
 }\r
 \r
@@ -508,7 +563,7 @@ if(window.gbWhUtil&&window.gbWhMsg&&window.gbWhVer&&window.gbWhProxy)
        RegisterListener2(this,WH_MSG_SHOWGLO);\r
        RegisterListener2(this,WH_MSG_GETPANEINFO);\r
 \r
-       if((gbMac&&gbIE4)||(gbSunOS&&gbIE5))\r
+       if((gbMac&&gbIE4)||(gbSunOS&&gbIE5)||gbOpera7)\r
        {\r
                window.onresize=window_resize;\r
        }\r
index 455bec74de414ffae7a1ef3f245a71e196c68bb9..821daea24a7554f5eea4995753952abc6cb74270 100755 (executable)
@@ -1,9 +1,9 @@
 <html>\r
 <head>\r
 <title>project description</title>\r
-<meta http-equiv="content-type" content="text/html; charset=iso-8859-1">\r
+\r
 <meta name="generator" content="RoboHelp by eHelp Corporation   www.ehelp.com">\r
-<meta name "description" content="WebHelp 2002">\r
+<meta name="description" content="WebHelp 5.50">\r
 </head>\r
 <body>\r
 <script language="javascript" src="whver.js"></script>\r
index 0e235159bc1f08cc86190a8fde488d5e84406050..ae38fa9947f526527404eab3f5c59744078dfd13 100755 (executable)
@@ -1,3 +1,4 @@
+//     WebHelp 5.10.001\r
 var gaProj=new Array();\r
 \r
 gaProj[0]=new project("");\r
@@ -41,6 +42,8 @@ function addGlo(sFile)
 \r
 function addRemoteProject(sProjRelPath)\r
 {\r
+       if(sProjRelPath.lastIndexOf("/")!=sProjRelPath.length-1)\r
+               sProjRelPath+="/";\r
        gaProj[gaProj.length]=new project(sProjRelPath);\r
 }\r
 \r
index d16f189af20987f06974bd30c9786de80c9a3572..4bd4a8de71ff01411c1c7bc32c798c1009003317 100755 (executable)
@@ -1,3 +1,3 @@
-<?xml version='1.0' encoding='ISO-8859-1' ?>\r
-<project langid="1033" datapath="whdata" toc="whtoc.xml" fts="whfts.xml" glossary="whglo.xml" >\r
+<?xml version='1.0' encoding='windows-1252' ?>\r
+<project langid="1033" datapath="whxdata" toc="whtoc.xml" fts="whfts.xml" glossary="whglo.xml" >\r
 </project>\r
index 222927a0aa0cfff4c3571f9eaa4db50841ba6d69..d0ee29813dc5e31f7f977f7ac1e69f025cde9657 100755 (executable)
@@ -1,3 +1,4 @@
+//     WebHelp 5.10.001\r
 var gbInited=false;\r
 var gWndStubPage=null;\r
 function getStubPage()\r
@@ -60,4 +61,14 @@ function SendMessage(oMessage)
                return false;\r
 }\r
 \r
-var gbWhProxy=true;
\ No newline at end of file
+var gbWhProxy=true;\r
+\r
+var gbPreview=false;\r
+gbPreview=false; \r
+if (gbPreview)\r
+       document.oncontextmenu=contextMenu;\r
+\r
+function contextMenu()\r
+{\r
+       return false;\r
+}\r
index 9634684e9f72331d0b500ec6eaddd7a90a0e3bef..f3f010a3f6c823d1a7403791d26e248df4d8043d 100755 (executable)
@@ -1,4 +1,4 @@
-<?xml version='1.0' encoding='ISO-8859-1' ?>\r
+<?xml version='1.0' encoding='windows-1252' ?>\r
 <resource>\r
 <item name="Prev" value="&lt;&lt;" />\r
 <item name="Hide" value="Hide" />\r
@@ -6,9 +6,13 @@
 <item name="InTopicSearchBtnText" value="Go" />\r
 <item name="FtsInputPrompt" value="Type in the word(s) to search for:" />\r
 <item name="Done" value="Done" />\r
+<item name="Logo/Author" value="Powered By" />\r
+<item name="MergeError1" value="The merged Help system" />\r
 <item name="JS_alert_cantLoadProject" value="Can't load project:" />\r
 <item name="Next" value="&gt;&gt;" />\r
 <item name="SyncToc" value="SyncToc" />\r
+<item name="MergeError2" value="is using a different language from the master Help system, which will cause the index and full-text search functionality to be disabled in the merged Help system." />\r
+<item name="nls_body_instruction" value="Enter your question in the text box above, then click GO." />\r
 <item name="ToolBarSearchBtnText" value="Go" />\r
 <item name="SuggestViewNoFrameMessage" value="To view the Help system without frames click on this" />\r
 <item name="Hide_Navigation_Component" value="Hide Navigation Component" />\r
 <item name="Definition" value="Definition:" />\r
 <item name="CompletingContents" value="Completing Contents..." />\r
 <item name="Seperate" value="|" />\r
+<item name="GeneratedBy" value="Generated by" />\r
+<item name="PoweredBy" value="Powered by" />\r
+<item name="IndexAlphabetBookmarks" value="ABCDEFGHIJKLMNOPQRSTUVWXYZ" />\r
 <item name="Contents" value="Contents" />\r
+<item name="IndexSelectTopicLabel" value="Select a topic, then click Display" />\r
 <item name="Disabled Prev" value="&lt;&lt;" />\r
 <item name="Glossary" value="Glossary" />\r
 <item name="Search" value="Search" />\r
 <item name="Show_Navigation_Component" value="Show Navigation Component" />\r
 <item name="Book" value="Book" />\r
 <item name="Disabled Next" value="&gt;&gt;" />\r
+<item name="nls_body_empty" value="Sorry, we were unable to find a good answer for your question." />\r
+<item name="nls_button_go_hint" value="Go Search" />\r
 <item name="Find" value="Find" />\r
 <item name="CantOpenURLorFile" value="Can't open URL or file" />\r
+<item name="Print" value="Print" />\r
+<item name="About" value="About" />\r
+<item name="Author" value="Author" />\r
+<item name="IndexSelectTopicTitle" value="Select a Topic" />\r
 <item name="Blank_topic_text" value="This topic was created by WinHelp Project Conversion Wizard, and is the destination of a missing topic or broken hyperlink." />\r
 <item name="BrowserLimitedMessage" value="Your browser does not support frames. We recommend that you update your browser to a version that supports frames." />\r
 <item name="LoadingTOCItem" value="Loading Table of Contents:" />\r
 <item name="Display" value="Display" />\r
 <item name="Cancel" value="Cancel" />\r
+<item name="IndexSelectTopicError" value="Please select a topic." />\r
+<item name="nls_edit_label" value="Type in your question:" />\r
 <item name="SearchLabel" value="Search" />\r
 <item name="RelateTopicListPrompt" value="Click a topic, then click Display." />\r
 <item name="NextTooltip" value="Next Topic" />\r
@@ -57,6 +73,7 @@
 <item name="IndexInputPrompt" value="Type in the keyword to find:" />\r
 <item name="Page" value="Page" />\r
 <item name="SuggestViewNoFrameMsg2" value="hyperlink." />\r
+<item name="nls_button_go_text" value="Go" />\r
 <item name="Searching" value="Searching..." />\r
 \r
   <item name="English"   value="" />\r
   </stopwords>\r
 \r
   <stems>\r
-    <stem name="s" />\r
-    <stem name="e" />\r
     <stem name="ed" />\r
     <stem name="es" />\r
     <stem name="er" />\r
-    <stem name="ly" />\r
-    <stem name="ing" />\r
+    <stem name="e" />\r
+    <stem name="s" />\r
     <stem name="ingly" />\r
+    <stem name="ing" />\r
+    <stem name="ly" />\r
   </stems>\r
 \r
        <paneskin>\r
index afe2d3f06b3fc9cba8d7a9735659f6d39c5e6354..39ed797e67aaa7414a03e0aa497570f64f2c33e9 100755 (executable)
@@ -1,13 +1,14 @@
 <html>\r
 <head>\r
 <title>About WebHelp&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</title>\r
-<meta http-equiv="content-type" content="text/html; charset=iso-8859-1">\r
+\r
 <meta name="generator" content="RoboHelp by eHelp Corporation   www.ehelp.com">\r
-<meta name "description" content="WebHelp 2002">\r
+<meta name="description" content="WebHelp 5.50">\r
 </head>\r
 <style type="text/css">\r
 <!--\r
-P {margin-left:10pt;font-size:8pt;font-family:Verdana,sans-serif;}\r
+P {margin-left:5pt;margin-top:2pt;margin-bottom:2pt;font-size:8pt;font-family:Verdana,sans-serif;}\r
+P.disp {margin-left:5pt; margin-top:0pt;margin-bottom:10pt;font-size:7pt;font-family:Verdana,sans-serif;}\r
 //-->\r
 </style>\r
 <script>\r
@@ -23,18 +24,25 @@ P {margin-left:10pt;font-size:8pt;font-family:Verdana,sans-serif;}
    <td><img src="wht_spac.gif" width="1" height="1" border="0"></td>\r
   </tr>\r
   <tr>\r
-   <td rowspan="2"><img src="wht_abgw.jpg" width="99" height="190" border="0"></td>\r
-   <td><img src="wht_abtw.jpg" width="211" height="86" border="0"></td>\r
-   <td><img src="wht_spac.gif" width="1" height="86" border="0"></td>\r
+   <td width="99" height="190" rowspan="3" valign="top"><img src="wht_abgw.jpg" border="0"></td>\r
+   <td width="211" height="60" valign="top"><img src="wht_abtw.jpg" border="0"></td>\r
+   <td><img src="wht_spac.gif" width="1" height="65" border="0"></td>\r
   </tr>\r
   <tr>\r
    <td valign="top">\r
+               <p><a href="http://www.ehelp.com" target="_blank">Macromedia</a></p>\r
+               <p><nobr>Copyright © 1992 - 2004, eHelp Corporation</nobr></p>\r
                <p>Author:&nbsp;eHelp Corporation</p>\r
-               <p>Powered by:&nbsp;WebHelp 5.00\r
-               <br>Generated by:&nbsp;RoboHelp 2002</p>\r
-               <p><a class="tail" href="http://www.ehelp.com/webhelp1" target="_blank">www.ehelp.com</a></p>\r
    </td>\r
-   <td><img src="wht_spac.gif" width="1" height="104" border="0"></td>\r
+   <td><img src="wht_spac.gif" width="1" height="50" border="0"></td>\r
+  </tr>\r
+  <tr>\r
+   <td valign="top">\r
+               <p>Powered by:&nbsp;WebHelp 5.50\r
+               <br>Generated by:&nbsp;RoboHelp X5\r
+               <br><a class="tail" href="http://www.ehelp.com/webhelp1" target="_blank">www.ehelp.com</a></p>\r
+   </td>\r
+   <td><img src="wht_spac.gif" width="1" height="50" border="0"></td>\r
   </tr>\r
 </table>\r
 </body>\r
index 5b506c2cbbd2ca2cd65972b8cc29114378b421ee..43439a8c7ffd2fea7964a4a6d475dd92d67e2d5f 100755 (executable)
@@ -1,9 +1,9 @@
 <html>\r
 <head>\r
 <title>Blank Page</title>\r
-<meta http-equiv="content-type" content="text/html; charset=iso-8859-1">\r
+\r
 <meta name="generator" content="RoboHelp by eHelp Corporation   www.ehelp.com">\r
-<meta name "description" content="WebHelp 2002">\r
+<meta name="description" content="WebHelp 5.50">\r
 </head>\r
 <body>\r
 </body>\r
index 6916dee973c1062ecb8604bcaa2b615aeb0c69df..3b8d56ad38fb40c455fd4a863e6b61d090fe94df 100755 (executable)
@@ -49,7 +49,7 @@ if (gnType == 4)
        strHTML += "</frameset>";\r
 }\r
 else\r
-       strHTML += "<frameset cols=\"220,*\" hostof=\"parent:minibar_navpane|topic!startpage:no\" frameborder=\"yes\" id=\"whPfset\"><frame src=\"whskin_frmset010.htm\" id=\"minibar_navpane\" frameborder=\"no\" border=\"0\" scrolling=\"auto\" marginheight=\"0\" marginwidth=\"0\"></frame><frame src=\""+strDefaultTopic+"\" id=\"topic\" frameborder=\"yes\" border=\"1\" scrolling=\"auto\" title=\"Topic\" name=\"bsscright\"></frame></frameset>";\r
+       strHTML += "<frameset cols=\"220,*\" hostof=\"parent:minibar_navpane|topic!startpage:no\" frameborder=\"1\" id=\"whPfset\"><frame src=\"whskin_frmset010.htm\" id=\"minibar_navpane\" frameborder=\"0\" border=\"0\" scrolling=\"auto\" marginheight=\"0\" marginwidth=\"0\"></frame><frame src=\""+strDefaultTopic+"\" id=\"topic\" frameborder=\"1\" border=\"1\" scrolling=\"auto\" title=\"Topic\" name=\"bsscright\"></frame></frameset>";\r
 document.write(strHTML);\r
 // handle show pane, hide pane and query pane status message.\r
 RegisterListener2(this, WH_MSG_RESIZEPANE);\r
index 357fc8224c46a76d547f3ee4692ba0dcc30307f6..8a02235c81103f234dcf5c6c27fcfd29dacacd4b 100755 (executable)
@@ -37,12 +37,12 @@ if (gnType == 4)
 {\r
        //no navipane at all\r
        strHTML += "<frameset border=\"0\" cols=\"100%,*\">";\r
-       strHTML += "<frame src='whskin_mbars.htm' id='minibar' frameborder='no' border='0' scrolling='no' marginheight='0' title='Mini Toolbar'></frame>";\r
+       strHTML += "<frame src='whskin_mbars.htm' id='minibar' frameborder='0' border='0' scrolling='no' marginheight='0' title='Mini Toolbar'></frame>";\r
        strHTML += "<frame src=\"whskin_blank.htm\" noresize>";\r
        strHTML += "</frameset>";\r
 }\r
 else\r
-       strHTML += "<frameset rows=\"24,*\" hostof=\"parent:minibar|navpane!startpage:no\" frameborder=\"no\" border=\"0\"><frame src=\"whskin_mbars.htm\" id=\"minibar\" frameborder=\"no\" border=\"0\" scrolling=\"no\" marginheight=\"0\" title=\"Mini Toolbar\"></frame><frame src=\""+gsPane+"\" id=\"navpane\" frameborder=\"no\" border=\"0\" scrolling=\"no\" marginheight=\"0\" marginwidth=\"0\" title=\"Navigator Pane\"></frame></frameset>";\r
+       strHTML += "<frameset rows=\"24,*\" hostof=\"parent:minibar|navpane!startpage:no\" frameborder=\"0\" border=\"0\"><frame src=\"whskin_mbars.htm\" id=\"minibar\" frameborder=\"0\" border=\"0\" scrolling=\"no\" marginheight=\"0\" title=\"Mini Toolbar\"></frame><frame src=\""+gsPane+"\" id=\"navpane\" frameborder=\"0\" border=\"0\" scrolling=\"no\" marginheight=\"0\" marginwidth=\"0\" title=\"Navigator Pane\"></frame></frameset>";\r
 \r
 document.write(strHTML);\r
 //-->\r
diff --git a/doc/salome/gui/KERNEL/whskin_homepage.htm b/doc/salome/gui/KERNEL/whskin_homepage.htm
new file mode 100755 (executable)
index 0000000..de0283a
--- /dev/null
@@ -0,0 +1,139 @@
+\r
+<html>\r
+<head><script language="javascript">\r
+<!--\r
+var sIcon="whstart.ico";\r
+var sPath=document.location.href;\r
+if (sPath.indexOf("http")!= -1)\r
+       document.write("<link REL=\"SHORTCUT ICON\" href=\""+ sIcon +"\">");\r
+//-->\r
+</script>\r
+ <title>KERNEL</title>\r
+ <meta name="generator" content="RoboHelp by eHelp Corporation   www.ehelp.com">\r
+ <meta name="description" content="WebHelp 5.50">\r
+</head>\r
+<script type="text/javascript" language="javascript" src="whver.js"></script>\r
+<script type="text/javascript" language="javascript" src="whutils.js"></script>\r
+<script type="text/javascript" language="javascript" src="whmsg.js"></script>\r
+<script type="text/javascript" language="javascript" >\r
+<!--\r
+if (!window.gbWhVer||!window.gbWhUtil||!window.gbWhMsg)\r
+       document.location.reload();\r
+//-->\r
+</script>\r
+\r
+<script type="text/javascript" language="javascript" src="whstub.js"></script>\r
+<script language="javascript">\r
+<!--\r
+var nWebhelpNavPaneMode = 1;                   //1: DHTML 2:Applet 3:PureHTML 4:NoframeAt all\r
+var strPaneDHTML  = "whskin_pdhtml.htm";               //whd_nvp10.htm  if tab enabled, whnframe.htm if tab disabled.\r
+var strPaneApplet = "whskin_papplet.htm";\r
+var strPaneList   = "whskin_plist.htm";\r
+var bNoApplet  = false;\r
+\r
+var strPane = "";\r
+\r
+var nViewFrameType = -1;\r
+\r
+if (!window.gAgent)\r
+{\r
+       // low end browser, we don't even try to determine it.\r
+       document.location = "whnjs.htm";\r
+}\r
+else\r
+{\r
+       if (!gbNav4&&!gbIE4&&!gbOpera7&&!gbSafari)                              \r
+               document.location = "whnjs.htm";\r
+       else if (gbNav4 && !gbNav6 && ((gnVerMinor <= 4.06)))\r
+               document.location = "whnjs.htm";\r
+       else if (gbMac && gbIE4 && !gbIE5)              \r
+               document.location = "whnjs.htm";\r
+       //figure out which mode is the best\r
+       else\r
+       {\r
+               nViewFrameType=nWebhelpNavPaneMode;\r
+               if (nWebhelpNavPaneMode==1||nWebhelpNavPaneMode == 2)\r
+               {\r
+                       var gbDHTML=(nWebhelpNavPaneMode==1);\r
+                       if (gbNav4)                                                                             nViewFrameType = 2;\r
+                       if (gbNav4&&(gnVerMinor < 4.1))                                         nViewFrameType = 3;\r
+                       if (gbNav4&&(gnVerMinor == 4.6))                                        nViewFrameType = 3;\r
+                       if (gbIE4&&gbDHTML)                                                                     nViewFrameType = 1;\r
+                       if (gbIE4&&gbSunOS&&nWebhelpNavPaneMode==2)                     nViewFrameType = 3;\r
+                       if (gbNav4&&gbSunOS&&nViewFrameType==2)                 nViewFrameType = 3;\r
+                       if (gbNav6&&gbDHTML)                                                            nViewFrameType = 1;\r
+                       if (gbNav6&&!gbNav61&&nWebhelpNavPaneMode == 2)         nViewFrameType = 3;\r
+                       if (gbMac)                                                                                      nViewFrameType = 3;\r
+                       if (gbOpera7&&nViewFrameType == 2)                                      nViewFrameType = 3;\r
+                       if ((bNoApplet)&&(nViewFrameType == 2))                         nViewFrameType = 3;\r
+               }\r
+       }\r
+}\r
+\r
+if (nViewFrameType!=-1)\r
+{\r
+       var gbWindows = ((gAgent.indexOf("win") != -1) || (gAgent.indexOf("16bit") != -1));\r
+       //The colordepth of the 16 color on Windows is 1. \r
+       if ((gbWindows) && (gbNav4) && (window.screen) && (window.screen.colorDepth <= 4))\r
+       {\r
+          alert("WebHelp has detected that your display is set to 16 colors. For full WebHelp support, please set your display to use 256 or more colors.");\r
+          nViewFrameType = 3;\r
+       }\r
+\r
+       //figure out which one is navpane\r
+       // ReplaceMark:nViewFrameType = 1\r
+       if (nViewFrameType == 1)\r
+       {\r
+               if (gbNav4 && !gbNav6)\r
+                       strPane = strPaneList;\r
+               else\r
+                       strPane = strPaneDHTML;\r
+       }\r
+       else if (nViewFrameType == 2)\r
+               strPane = strPaneApplet;\r
+       else\r
+               strPane = strPaneList;\r
+}\r
+//-->\r
+</script>\r
+<script type="text/javascript" language="javascript" src="whstart.js"></script>\r
+<script type="text/javascript" language="javascript">\r
+<!--\r
+if (!gbIE4&&!gbNav4&&!gbOpera7&&!gbSafari)\r
+       document.location = "whnjs.htm";\r
+\r
+function CMRAgent( strID, strURL, strLabel, strFrameAttr )\r
+{\r
+  this.m_strID = strID;\r
+  this.m_strURL = strURL;\r
+  this.m_strLabel = strLabel;\r
+  this.m_strFrameAttr = strFrameAttr;\r
+}\r
+\r
+function CMRServer()\r
+{\r
+  this.m_cAgents = new Array;\r
+}\r
+var cMRServer = new CMRServer;\r
+// GetServerInfo\r
+// Registry the agent array handled by webhelp\r
+// ReplaceMark:MRServer.strServerData\r
+//-->\r
+</script>\r
+\r
+<script type="text/javascript" language="javascript">\r
+<!--\r
+if (nViewFrameType!=-1)\r
+{\r
+       var strHTML = "<frameset rows=\"32,*\" hostof=\"parent:toolbar!startpage:yes\" frameborder=\"0\" border=\"0\"><frame src=\"whskin_tbars.htm\" id=\"toolbar\" frameborder=\"0\" border=\"0\" scrolling=\"no\" noresize marginheight=\"0\" marginwidth=\"0\" title=\"Toolbar\"></frame><frame src=\"whskin_frmset01.htm\"  frameborder=\"1\" border=\"1\" scrolling=\"auto\" marginheight=\"0\" marginwidth=\"0\"></frame></frameset>";\r
+       document.write(strHTML);\r
+}\r
+//-->\r
+</script>\r
+\r
+<frameset cols="100%,*" frameborder=no border=0>\r
+  <frame src="whnjs.htm">\r
+  <frame src="whskin_blank.htm" noresize>\r
+</frameset>\r
+\r
+</html>
\ No newline at end of file
index a68fcd5ce7b02dd1abd243b42af9206702dbb53e..3092cac5d09551d3f015ce6374f07138397f7359 100755 (executable)
@@ -1,20 +1,20 @@
 <html>\r
 <head>\r
-<title>WebHelp 5.00 </title>\r
+<title>WebHelp 5.50 </title>\r
 <meta name="description" content="output from robohelp">\r
-<meta name="keywords" content="robohelp,webhelp,webhelp 2002,webhelp enterprise,webehelp enterprise 2002,roboinfo,roboinfo 2002">\r
+<meta name="keywords" content="robohelp,webhelp,webhelp enterprise,roboinfo">\r
 </head>\r
 <body>\r
-<h1> WebHelp 5.00 System  Info </h1>\r
+<h1> WebHelp 5.50 System  Info </h1>\r
 <table>\r
-<tr><td> Start Page </td><td>kernel.html</td></tr>\r
+<tr><td> Start Page </td><td>kernel.htm</td></tr>\r
 <tr><td> Skin Name </td><td>Default</td></tr>\r
-<tr><td> Generating Time </td><td>14:23 03/03/2004</td></tr>\r
+<tr><td> Generating Time </td><td>13:17 03/01/2005</td></tr>\r
 <tr><td> Language ID </td><td>1033</td></tr>\r
 <tr><td> Compile Script </td><td>webhelp5_compile_script.xml</td></tr>\r
-<tr><td> Compile Build Version </td><td>10.00.949</td></tr>\r
-<tr><td> Product Name </td><td>WebHelp 5.00</td></tr>\r
-<tr><td> Authoring Tool Name </td><td>RoboHelp 2002</td></tr>\r
+<tr><td> Compile Build Version </td><td>13.10.606</td></tr>\r
+<tr><td> Product Name </td><td>WebHelp 5.50</td></tr>\r
+<tr><td> Authoring Tool Name </td><td>RoboHelp X5</td></tr>\r
 <table>\r
 </body>\r
 </html>
\ No newline at end of file
index 66e8c53291cda7cb72da7bca7b416a6d803fbcf8..c4fa48af828f80839683c65fef14b6162470e96f 100755 (executable)
@@ -1,6 +1,9 @@
 <html>\r
 <head>\r
-<META HTTP-EQUIV="content-type" CONTENT="text/html; charset=iso-8859-1">\r
+<title> WebHelp Navigation Mini-bar </title>\r
+\r
+<meta name="generator" content="RoboHelp by eHelp Corporation   www.ehelp.com">\r
+<meta name="description" content="WebHelp 5.50">\r
 </head>\r
 <style>\r
 <!--\r
index aab44ddea6f53f3dc56d2dec191d475a2b88009d..5f8296ad64ae5154d7979c87df82b0d338098291 100755 (executable)
@@ -1,10 +1,9 @@
 <html>\r
 <head>\r
 <title>Navigation Pane</title>\r
-<meta http-equiv="content-type" content="text/html; charset=iso-8859-1">\r
+\r
 <meta name="generator" content="RoboHelp by eHelp Corporation   www.ehelp.com">\r
-<meta name "description" content="WebHelp 2002">\r
-<SCRIPT LANGUAGE="JavaScript1.2" ARCHIVE="nsdnsfix.jar" ID="ChangeProfileScriptinNavPane2"> var sd_strAgent    = navigator.userAgent.toLowerCase();    var sd_strVersion  = navigator.appVersion.toLowerCase();  var sd_nVerMajor      = parseInt(sd_strVersion);  var sd_nVerMinor    = parseFloat(sd_strVersion); var        sd_bNS      = ((sd_strAgent.indexOf("mozilla") != -1) && ((sd_strAgent.indexOf('spoofer') == -1) && (sd_strAgent.indexOf('compatible') == -1))); var    sd_bNS4                 = ((sd_bNS) && (sd_nVerMajor >= 4)); if (sd_nVerMinor == 4.60)  {  netscape.security.PrivilegeManager.enablePrivilege("UniversalPreferencesRead");  var sd_prefValue = navigator.preference("security.lower_java_network_security_by_trusting_proxies"); if (!sd_prefValue) { alert("There are some limitations in Netscape 4.6. Please download and install the latest version of Netscape. Your current Netscape profile needs to be modified. Select 'Remember this decision' and click 'Grant' when prompted to allow the modifications. Click OK to proceed."); netscape.security.PrivilegeManager.enablePrivilege("UniversalPreferencesWrite"); navigator.preference("security.lower_java_network_security_by_trusting_proxies", true); alert("Please restart Netscape"); window.close(); } } </SCRIPT>\r
+<meta name="description" content="WebHelp 5.50">\r
 <script language="javascript" src="whver.js"></script>\r
 <script language="javascript1.2" src="whmsg.js"></script>\r
 <script language="javascript1.2" src="whproxy.js"></script>\r
@@ -58,24 +57,49 @@ function window_unload()
 \r
 function window_OnLoad()\r
 {\r
-       if (gsInitPane == "toc")\r
+       var bHidePane=false;\r
+       var oMsg=new whMessage(WH_MSG_GETCMD,this,1,null);\r
+       if (SendMessage(oMsg))\r
+       {\r
+               if(oMsg.oParam>0)\r
+               {\r
+                       if(oMsg.oParam==1)\r
+                               gsInitPane="toc";\r
+                       else if(oMsg.oParam==2)\r
+                               gsInitPane="idx";\r
+                       else if(oMsg.oParam==3)\r
+                               gsInitPane="fts";\r
+                       else if(oMsg.oParam==4)\r
+                               gsInitPane="glo";\r
+               }\r
+               else if(oMsg.oParam==0)\r
+               {\r
+                       bHidePane=true;\r
+               }\r
+       }\r
+       if (bHidePane)\r
        {\r
-               var oMsg=new whMessage(WH_MSG_SHOWTOC,this,1,null)\r
+               oMsg=new whMessage(WH_MSG_HIDEPANE,this,1,null)\r
+               SendMessage(oMsg);\r
+       }\r
+       else if (gsInitPane == "toc")\r
+       {\r
+               oMsg=new whMessage(WH_MSG_SHOWTOC,this,1,null)\r
                SendMessage(oMsg);      \r
        }\r
        else if (gsInitPane=="idx")\r
        {\r
-               var oMsg=new whMessage(WH_MSG_SHOWIDX,this,1,null)\r
+               oMsg=new whMessage(WH_MSG_SHOWIDX,this,1,null)\r
                SendMessage(oMsg);      \r
        }\r
        else if (gsInitPane=="fts")\r
        {\r
-               var oMsg=new whMessage(WH_MSG_SHOWFTS,this,1,null)\r
+               oMsg=new whMessage(WH_MSG_SHOWFTS,this,1,null)\r
                SendMessage(oMsg);      \r
        }\r
        else if (gsInitPane=="glo")\r
        {\r
-               var oMsg=new whMessage(WH_MSG_SHOWGLO,this,1,null)\r
+               oMsg=new whMessage(WH_MSG_SHOWGLO,this,1,null)\r
                SendMessage(oMsg);      \r
        }\r
        \r
@@ -83,13 +107,14 @@ function window_OnLoad()
 \r
 function onResize()\r
 {\r
+       var oMsg=null;\r
        if (gbIE4)\r
        {\r
                if(document.body)\r
                {\r
                        if(document.body.clientWidth > 1 && document.body.clientHeight>1)\r
                        {\r
-                               var oMsg = new whMessage(WH_MSG_RESIZEPANE, this, 1, null);\r
+                               oMsg = new whMessage(WH_MSG_RESIZEPANE,this,1,null);\r
                                SendMessage(oMsg);\r
                        }\r
                }\r
@@ -98,7 +123,7 @@ function onResize()
        {\r
                if (window.innerWidth != 0 && window.innerHeight != 0)\r
                {\r
-                       var oMsg = new whMessage(WH_MSG_RESIZEPANE, this, 1, null);\r
+                       oMsg = new whMessage(WH_MSG_RESIZEPANE,this,1,null);\r
                        SendMessage(oMsg);\r
                }\r
        }\r
@@ -137,11 +162,7 @@ function CheckLoadingPhase2()
                                setTimeout("CheckLoadingPhase2()", 1000);\r
                        else {\r
                                if (gnVerMinor != 4.60) {\r
-                                       if (gnVerMinor >= 4.06)\r
-                                               document.location.href = "nsdnsfix.htm"\r
-                                       else {\r
-                                               alert("Unable to load applet. If you are using an old version of Netscape, the prefs.js file needs to be edited.");\r
-                                       }\r
+                                       alert("Unable to load applet. If you are using an old version of Netscape, the prefs.js file needs to be edited.");\r
                                }\r
                        }       \r
                }\r
@@ -193,102 +214,78 @@ function onSendMessage(oMsg)
                else\r
                        WebHelpApplet = window.WebHelp;\r
 \r
-               if (nMsgId == WH_MSG_SHOWTOC)\r
+               if(nMsgId==WH_MSG_GETPANEINFO)\r
                {\r
-                       gsCurrentPane="toc";\r
-                       WebHelpApplet.Command("Contents",null);\r
-                       var onMsg=new whMessage(WH_MSG_PANEINFO,this,1,"toc");\r
-                       SendMessage(onMsg);\r
-                       onMsg=new whMessage(WH_MSG_SHOWPANE,this,1,null);\r
-                       SendMessage(onMsg);\r
-               }\r
-               else if(nMsgId==WH_MSG_SHOWIDX)\r
-               {\r
-                       gsCurrentPane="idx";\r
-                       WebHelpApplet.Command("Index",null);\r
-                       var onMsg=new whMessage(WH_MSG_PANEINFO,this,1,"idx");\r
-                       SendMessage(onMsg);\r
-                       onMsg=new whMessage(WH_MSG_SHOWPANE,this,1,null);\r
-                       SendMessage(onMsg);\r
-               }\r
-               else if(nMsgId==WH_MSG_SHOWFTS)\r
-               {\r
-                       gsCurrentPane="fts";\r
-                       WebHelpApplet.Command("Search",null);\r
-                       var onMsg=new whMessage(WH_MSG_PANEINFO,this,1,"fts");\r
-                       SendMessage(onMsg);\r
-                       onMsg=new whMessage(WH_MSG_SHOWPANE,this,1,null);\r
-                       SendMessage(onMsg);\r
-               }\r
-               else if(nMsgId==WH_MSG_SHOWGLO)\r
-               {\r
-                       gsCurrentPane="glo";\r
-                       WebHelpApplet.Command("Glossary",null);\r
-                       var onMsg=new whMessage(WH_MSG_PANEINFO,this,1,"glo");\r
-                       SendMessage(onMsg);\r
-                       onMsg=new whMessage(WH_MSG_SHOWPANE,this,1,null);\r
-                       SendMessage(onMsg);\r
+                       oMsg.oParam=gsCurrentPane;\r
+                       return false;\r
                }\r
-               else if(nMsgId==WH_MSG_SYNCTOC)\r
+               else if(gbLoading!="unknown" || gbNav6)\r
                {\r
-                       gsCurrentPane="toc";\r
-                       var oTopicParam=oMsg.oParam;\r
-                       if(oTopicParam&&oTopicParam.aPaths&&oTopicParam.aPaths.length>0&&oTopicParam.sPPath)\r
+                       if (nMsgId == WH_MSG_SHOWTOC)\r
+                       {\r
+                               gsCurrentPane="toc";\r
+                               WebHelpApplet.Command("Contents",null);\r
+                               var onMsg=new whMessage(WH_MSG_PANEINFO,this,1,"toc");\r
+                               SendMessage(onMsg);\r
+                               onMsg=new whMessage(WH_MSG_SHOWPANE,this,1,null);\r
+                               SendMessage(onMsg);\r
+                       }\r
+                       else if(nMsgId==WH_MSG_SHOWIDX)\r
+                       {\r
+                               gsCurrentPane="idx";\r
+                               WebHelpApplet.Command("Index",null);\r
+                               var onMsg=new whMessage(WH_MSG_PANEINFO,this,1,"idx");\r
+                               SendMessage(onMsg);\r
+                               onMsg=new whMessage(WH_MSG_SHOWPANE,this,1,null);\r
+                               SendMessage(onMsg);\r
+                       }\r
+                       else if(nMsgId==WH_MSG_SHOWFTS)\r
                        {\r
-                               var sPPath=_browserURLToAppletURL(oTopicParam.sPPath);\r
-                               var sParam="";\r
-                               for(var i=0;i<oTopicParam.aPaths.length;i++)\r
+                               gsCurrentPane="fts";\r
+                               WebHelpApplet.Command("Search",null);\r
+                               var onMsg=new whMessage(WH_MSG_PANEINFO,this,1,"fts");\r
+                               SendMessage(onMsg);\r
+                               onMsg=new whMessage(WH_MSG_SHOWPANE,this,1,null);\r
+                               SendMessage(onMsg);\r
+                       }\r
+                       else if(nMsgId==WH_MSG_SHOWGLO)\r
+                       {\r
+                               gsCurrentPane="glo";\r
+                               WebHelpApplet.Command("Glossary",null);\r
+                               var onMsg=new whMessage(WH_MSG_PANEINFO,this,1,"glo");\r
+                               SendMessage(onMsg);\r
+                               onMsg=new whMessage(WH_MSG_SHOWPANE,this,1,null);\r
+                               SendMessage(onMsg);\r
+                       }\r
+                       else if(nMsgId==WH_MSG_SYNCTOC)\r
+                       {\r
+                               gsCurrentPane="toc";\r
+                               var oTopicParam=oMsg.oParam;\r
+                               if(oTopicParam&&oTopicParam.aPaths&&oTopicParam.aPaths.length>0&&oTopicParam.sPPath)\r
                                {\r
-                                       sParam+=oTopicParam.aPaths[i]+"\r\r";\r
-                               }\r
-                               if(gbLoading!="unknown")\r
+                                       var sPPath=_browserStringToText(oTopicParam.sPPath);\r
+                                       var sParam="";\r
+                                       for(var i=0;i<oTopicParam.aPaths.length;i++)\r
+                                       {\r
+                                               sParam+=oTopicParam.aPaths[i]+"\r\r";\r
+                                       }\r
                                        WebHelpApplet.Command("SyncToc",sPPath,sParam);\r
+                               }\r
+                       }\r
+                       else if(nMsgId==WH_MSG_SEARCHTHIS)\r
+                       {\r
+                               gsCurrentPane="fts";\r
+                               WebHelpApplet.Command("Search",oMsg.oParam);\r
+                               var onMsg=new whMessage(WH_MSG_PANEINFO,this,1,"fts");\r
+                               SendMessage(onMsg);\r
+                               onMsg=new whMessage(WH_MSG_SHOWPANE,this,1,null);\r
+                               SendMessage(onMsg);\r
                        }\r
-               }\r
-               else if(nMsgId==WH_MSG_SEARCHTHIS)\r
-               {\r
-                       gsCurrentPane="fts";\r
-                       WebHelpApplet.Command("Search",oMsg.oParam);\r
-                       var onMsg=new whMessage(WH_MSG_PANEINFO,this,1,"fts");\r
-                       SendMessage(onMsg);\r
-                       onMsg=new whMessage(WH_MSG_SHOWPANE,this,1,null);\r
-                       SendMessage(onMsg);\r
-               }\r
-               else if(nMsgId==WH_MSG_GETPANEINFO)\r
-               {\r
-                       oMsg.oParam=gsCurrentPane;\r
-                       return false;\r
                }\r
        }\r
        return true;\r
 }\r
 \r
-function _browserURLToAppletURL(sBURL)\r
-{\r
-       var sAURL="";\r
-       var nPos=sBURL.indexOf('%');\r
-       while(nPos!=-1)\r
-       {\r
-               sAURL+=sBURL.substring(0,nPos);\r
-               sBURL=sBURL.substring(nPos+1);\r
-               var sNum="";\r
-               var i=0;\r
-               while(sBURL.charAt(i)>='0'&&sBURL.charAt(i)<='9')\r
-               {\r
-                       sNum+=sBURL.charAt(i++);        \r
-               }\r
-               if(sNum!="")\r
-               {\r
-                       var nNum=parseInt(sNum,16);\r
-                       sAURL+=String.fromCharCode(nNum);\r
-                       sBURL=sBURL.substring(i);\r
-               }\r
-               nPos=sBURL.indexOf('%');\r
-       }\r
-       sAURL+=sBURL;\r
-       return sAURL;\r
-}\r
-\r
 function getInitTocInfo()\r
 {\r
        var oParam=new Object();\r
@@ -299,7 +296,7 @@ function getInitTocInfo()
                var oTopicParam=oMsg.oParam.oTocInfo;\r
                if(oTopicParam&&oTopicParam.aPaths&&oTopicParam.aPaths.length>0&&oTopicParam.sPPath)\r
                {\r
-                       var sPPath=_browserURLToAppletURL(oTopicParam.sPPath);\r
+                       var sPPath=_browserStringToText(oTopicParam.sPPath);\r
                        var sParam="";\r
                        for(var i=0;i<oTopicParam.aPaths.length;i++)\r
                        {\r
@@ -343,6 +340,12 @@ if(window.gbWhUtil&&window.gbWhMsg&&window.gbWhVer&&window.gbWhProxy)
 }\r
 else\r
        document.location.reload();\r
+\r
+if (window.gbNav6)\r
+{\r
+       var oMsg=new whMessage(WH_MSG_RELOADNS6,this, 1,null);\r
+       SendMessage(oMsg);\r
+}\r
 //-->\r
 </script>\r
 </head>\r
index ffb2439692d4d6c5b677fd712158e7ca82340828..763aa1429bf6e5ad0863008c91b53dd702cefd97 100755 (executable)
@@ -1,9 +1,9 @@
 <html>\r
 <head>\r
 <title> Navigation Pane </title>\r
-<meta http-equiv="content-type" content="text/html; charset=iso-8859-1">\r
+\r
 <meta name="generator" content="RoboHelp by eHelp Corporation   www.ehelp.com">\r
-<meta name "description" content="WebHelp 2002">\r
+<meta name="description" content="WebHelp 5.50">\r
 </head>\r
 <body border=0 topmargin=0 bottommargin=0 rightmargin=0 leftmargin=0 scroll=no>\r
 <script language="javascript" src="whver.js"></script>\r
@@ -39,6 +39,13 @@ if (window.gbWhPHost)
 else\r
        document.location.reload();\r
 \r
+if (window.gbNav6)\r
+{\r
+       var oMsg=new whMessage(WH_MSG_RELOADNS6,this, 1,null);\r
+       SendMessage(oMsg);\r
+}\r
+\r
+\r
 function writeWebHelpPane()\r
 {\r
   var bPreferXML             = false;\r
diff --git a/doc/salome/gui/KERNEL/whskin_pickup.htm b/doc/salome/gui/KERNEL/whskin_pickup.htm
new file mode 100755 (executable)
index 0000000..1f1af7f
--- /dev/null
@@ -0,0 +1,229 @@
+<html>\r
+<head>\r
+<title>Select a Topic&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</title>\r
+<script language="javascript" src="whver.js"></script>\r
+<script language="javascript1.2" src="whutils.js"></script>\r
+<script language="javascript">\r
+<!--\r
+var gsBgColor = "#c0c0c0";\r
+var gsBgImage = "";\r
+var gsListBgColor = "white";\r
+var gsListBgImage = "";\r
+var gsMargin="0pt";\r
+var gsIndent="0pt";\r
+var gSelectedItem = -1;\r
+\r
+\r
+var goFont=null;\r
+var goHoverFont=null;\r
+var goTableFont=null;\r
+var gsABgColor="#cccccc";\r
+\r
+function setListBackground(sBgImage)\r
+{\r
+       if (sBgImage != null && sBgImage.length > 0)\r
+               gsListBgImage = sBgImage;\r
+}\r
+\r
+function setListBackgroundcolor(sBgColor)\r
+{\r
+       if (sBgColor != null && sBgColor.length > 0)\r
+               gsListBgColor = sBgColor;\r
+}\r
+\r
+function setBackground(sBgImage)\r
+{\r
+       if (sBgImage != null && sBgImage.length > 0)\r
+               gsBgImage = sBgImage;\r
+}\r
+\r
+function setBackgroundcolor(sBgColor)\r
+{\r
+       if (sBgColor != null && sBgColor.length > 0)\r
+               gsBgColor = sBgColor;\r
+}\r
+\r
+function setActiveBgColor(sBgColor)\r
+{\r
+       gsABgColor=sBgColor;\r
+}\r
+\r
+function setFont(sType, sFontName,sFontSize,sFontColor,sFontStyle,sFontWeight,sFontDecoration)\r
+{\r
+       var vFont=new whFont(sFontName,sFontSize,sFontColor,sFontStyle,sFontWeight,sFontDecoration);\r
+       if (sType == "Normal")\r
+               goFont=vFont;\r
+       if (sType == "Hover")\r
+               goHoverFont=vFont;\r
+       else if (sType == "Table")\r
+               goTableFont=vFont;\r
+}\r
+\r
+function fnOnload()\r
+{\r
+       if( window.dialogArguments != null )\r
+               fnLoadOptions( window.dialogArguments );\r
+       var items = getElementsByTag(document, "a");\r
+       if (items.length > 0)\r
+               items[0].focus();\r
+}\r
+\r
+var gaOpts = new Array();\r
+\r
+function selectOption(index)\r
+{\r
+       gSelectedItem = index;\r
+}\r
+\r
+function displayOption(index)\r
+{\r
+       if (index < gaOpts.length)\r
+       {\r
+               returnValue = new Object();\r
+               returnValue.m_url = gaOpts[index];\r
+       }\r
+       else\r
+               returnValue = null;\r
+\r
+       window.close();\r
+}\r
+\r
+function fnLoadOptions( cList )\r
+{\r
+       var sHTML = "<dl>";\r
+       for( var i=0;i <cList.length; i++)\r
+       {\r
+               sHTML += "<dt><nobr><a href=\"javascript:void(0);\" onclick=\"return false;\" onfocus=\"selectOption(";\r
+               sHTML += gaOpts.length + ");return false;\" ondblclick=\"displayOption(" + gaOpts.length;\r
+               sHTML += ");return false;\">"+ _textToHtml(cList[i].m_sName) + "</a></nobr></dt>";\r
+               gaOpts[gaOpts.length] = cList[i].m_sURL;\r
+       }\r
+       sHTML += "</dl>";\r
+       var oDivCon=getElement("divlist");\r
+       if(oDivCon)\r
+               oDivCon.innerHTML=sHTML;\r
+       return true;\r
+}\r
+\r
+function fnOK()\r
+{\r
+       displayOption(gSelectedItem);\r
+}\r
+\r
+function fnCancel()\r
+{\r
+       returnValue = null;             window.close();\r
+}\r
+\r
+function fnOnKeypress()\r
+{\r
+       switch( event.keyCode )\r
+       {\r
+       case 13:        // enter key\r
+               fnOK();\r
+               break;\r
+       case 27:        // escape key\r
+               fnCancel();\r
+               break;\r
+       }\r
+}\r
+\r
+function writeStyle(bMiniBar)\r
+{\r
+       var sStyle="";\r
+       sStyle+="<style type='text/css'>\n";\r
+       sStyle+="<!--\n";\r
+       sStyle+="body.clsbody\n";\r
+       sStyle+="{\n";\r
+       sStyle+="margin: 4px;\n";\r
+       sStyle+=getFontStyle(goTableFont);\r
+       sStyle+="background-attachment: fixed;\n";\r
+       sStyle+="};\n";\r
+       sStyle+="P.clsNDXTD\n";\r
+       sStyle+="{\n";\r
+       sStyle+="margin:0;\n";\r
+       sStyle+=getFontStyle(goTableFont);\r
+       sStyle+="};\n";\r
+       sStyle+="div.clslist\n";\r
+       sStyle+="{\n";\r
+       if (gsListBgImage)\r
+               sStyle+="background-image:url("+gsListBgImage+");\n";\r
+       else if (gsListBgColor)\r
+               sStyle+="background-color:"+gsListBgColor+";\n";\r
+       sStyle+=getFontStyle(goFont);\r
+       sStyle+="};\n";\r
+       sStyle+="BUTTON.clsNDXButton\n";\r
+       sStyle+="{\n";\r
+       sStyle+=getFontStyle(goTableFont);\r
+       sStyle+="background-color: transparent;\n";\r
+       sStyle+="};\n";\r
+       sStyle+="dl {"+getFontStyle(goFont)+"margin-left:"+gsIndent+";margin-top:"+gsMargin+";}\n";\r
+       sStyle+="A:link {"+getFontStyle(goFont)+"}\n";\r
+       sStyle+="A:visited {"+getFontStyle(goFont)+"}\n";\r
+       sStyle+="A:active {background-color:"+gsABgColor+";}\n";\r
+       sStyle+="A:hover {"+getFontStyle(goHoverFont)+"}\n";\r
+       sStyle+="</style>\n";\r
+       document.write(sStyle);\r
+}\r
+\r
+function window_OnLoad()\r
+{\r
+       if(document.body)\r
+       {\r
+               if(gsBgImage&&gsBgImage.length>0)\r
+               {\r
+                       document.body.background=gsBgImage;\r
+               }\r
+               if(gsBgColor&&gsBgColor.length>0)\r
+               {\r
+                       document.body.bgColor=gsBgColor;\r
+               }\r
+       }\r
+       fnOnload();\r
+       window_onResize();\r
+}\r
+\r
+function window_onResize()\r
+{\r
+       var oDiv = getElement("divlist");\r
+       var oTitle = getElement("p_title");\r
+       var oButton = getElement("tb_button");\r
+       if (oDiv && oTitle && oButton)\r
+       {\r
+               oDiv.style.height = document.body.offsetHeight - oTitle.offsetHeight - oButton.offsetHeight - 8;\r
+       }\r
+}\r
+goTableFont=new whFont("Verdana","8pt","#000000","normal","normal","none");\r
+goFont=new whFont("Verdana","8pt","#000000","normal","normal","none");\r
+goHoverFont=new whFont("Verdana","8pt","#666666","normal","normal","none");\r
+\r
+\r
+setBackgroundcolor("White");\r
+\r
+setFont("Table", "Tahoma","8pt","Navy","Normal","Normal","none");\r
+setListBackgroundcolor("White");\r
+\r
+setFont("Normal", "Tahoma","8pt","Black","Normal","Normal","none");\r
+setFont("Hover", "Tahoma","8pt","Navy","Normal","Normal","underline");\r
+setActiveBgColor("Silver");\r
+\r
+window.onload=window_OnLoad;\r
+window.onresize = window_onResize;\r
+writeStyle();\r
+//-->\r
+</script>\r
+</head>\r
+\r
+<body class="clsbody" scroll="no" onkeypress="fnOnKeypress()">\r
+<p id="p_title" class="clsNDXTD"><nobr>Select a topic, then click Display</nobr></p>\r
+<div id="divlist" class="clslist" style="margin:2px;position: relative;overflow:auto;width:100%;border-style:inset;border-width:2">\r
+</div>\r
+<table id="tb_button" width="100%">\r
+  <tr>\r
+    <td width="100%" align="center"><button class="clsNDXButton" name="btnOK" onclick="fnOK()">Display</button>&#32;&#32;&#32;<button class="clsNDXButton" name="btnCancel" onclick="fnCancel()">Cancel</button></td>\r
+  </tr>\r
+</table>\r
+\r
+</body>\r
+\r
+</html>
\ No newline at end of file
index 35f0155b882e287a59d518a5c5c62a9fe3b0a3af..f7cf6d1d5ef78a2662cb41851b3e5fcd3b0e6d39 100755 (executable)
@@ -1,47 +1,38 @@
 <html>\r
 <head>\r
 <title> Navigation Pane </title>\r
-<meta http-equiv="content-type" content="text/html; charset=iso-8859-1">\r
+\r
 <meta name="generator" content="RoboHelp by eHelp Corporation   www.ehelp.com">\r
-<meta name "description" content="WebHelp 2002">\r
+<meta name="description" content="WebHelp 5.50">\r
 <script language="javascript" src="whver.js"></script>\r
 <script language="javascript1.2" src="whmsg.js"></script>\r
 <script language="javascript1.2" src="whproxy.js"></script>\r
 </head>\r
 <script language="javascript">\r
 <!--\r
-var strFrmToc = "";\r
-var strFrmNdx = "";\r
-var strFrmFts = "";\r
-var strFrmGls = "";\r
-var strFrmDft = "";\r
-var gstrName = "";\r
+var strFrmToc="";\r
+var strFrmNdx="";\r
+var strFrmFts="";\r
+var strFrmGls="";\r
+var strFrmDft="";\r
+var gstrName="";\r
 \r
 //set overwrite here\r
 function setListFrames(strToc,strNdx,strFts,strGls,strDefault)\r
 {\r
-       strFrmToc = strToc;\r
-       strFrmNdx = strNdx;\r
-       strFrmFts = strFts;\r
-       strFrmGls = strGls;\r
-       strFrmDft = strDefault;\r
-       if (strFrmDft == strFrmToc)\r
-       {\r
-               gstrName = "toc";\r
-       }\r
-       else if (strFrmDft == strFrmNdx) \r
-       {\r
-               gstrName = "idx";\r
-\r
-       }\r
-       else if (strFrmDft == strFrmFts) \r
-       {\r
-               gstrName = "fts";\r
-       }\r
-       else if (strFrmDft == strFrmGls) \r
-       {\r
-               gstrName = "glo";\r
-       }\r
+       strFrmToc=strToc;\r
+       strFrmNdx=strNdx;\r
+       strFrmFts=strFts;\r
+       strFrmGls=strGls;\r
+       strFrmDft=strDefault;\r
+       if(strFrmDft==strFrmToc)\r
+               gstrName="toc";\r
+       else if(strFrmDft==strFrmNdx)\r
+               gstrName="idx";\r
+       else if(strFrmDft==strFrmFts)\r
+               gstrName="fts";\r
+       else if(strFrmDft==strFrmGls)\r
+               gstrName="glo";\r
 }\r
 \r
 function setWebHelpPane()\r
@@ -51,77 +42,111 @@ function setWebHelpPane()
 \r
 function window_unload()\r
 {\r
-       if (!gbNav4 || gbNav6) // resize will call unload, but the register code will never be called on Netscape 4.\r
+       if(!gbNav4||gbNav6) // resize will call unload, but the register code will never be called on Netscape 4.\r
        {\r
                UnRegisterListener2(this,WH_MSG_SHOWTOC);\r
                UnRegisterListener2(this,WH_MSG_SHOWIDX);\r
                UnRegisterListener2(this,WH_MSG_SHOWFTS);\r
                UnRegisterListener2(this,WH_MSG_SHOWGLO);\r
-               UnRegisterListener2(this, WH_MSG_GETPANEINFO);\r
+               UnRegisterListener2(this,WH_MSG_GETPANEINFO);\r
        }\r
 }\r
 \r
 function window_onload()\r
 {\r
-       if (gstrName)\r
+       var bHidePane=false;\r
+       var oMsg=new whMessage(WH_MSG_GETCMD,this,1,null);\r
+       if(SendMessage(oMsg))\r
        {\r
-               var onMsg=new whMessage(WH_MSG_PANEINFO, this, 1, gstrName);\r
-               SendMessage(onMsg);\r
+               if(oMsg.oParam>0)\r
+               {\r
+                       if(oMsg.oParam==1)\r
+                               gstrName="toc";\r
+                       else if(oMsg.oParam==2)\r
+                               gstrName="idx";\r
+                       else if(oMsg.oParam==3)\r
+                               gstrName="fts";\r
+                       else if(oMsg.oParam==4)\r
+                               gstrName="glo";\r
+                       switchNvp(gstrName);\r
+               }\r
+               else if(oMsg.oParam==0)\r
+               {\r
+                       bHidePane=true;\r
+               }\r
+               else if(gstrName)\r
+                       switchNvp(gstrName);\r
+       }\r
+       if(bHidePane)\r
+       {\r
+               oMsg=new whMessage(WH_MSG_HIDEPANE,this,1,null)\r
+               SendMessage(oMsg);\r
        }\r
+       else if(gstrName)\r
+       {\r
+               oMsg=new whMessage(WH_MSG_PANEINFO,this,1,gstrName);\r
+               SendMessage(oMsg);\r
+       }\r
+       oMsg=new whMessage(WH_MSG_NOSYNC,this,1,null);\r
+       SendMessage(oMsg);\r
+       oMsg=new whMessage(WH_MSG_NOSEARCHINPUT,this,1,null);\r
+       SendMessage(oMsg);\r
+\r
 }\r
 \r
 function switchNvp(strName)\r
 {\r
-       var strFile = "";\r
-       if (strName == "toc")           strFile = strFrmToc;\r
-       else if (strName == "idx")      strFile = strFrmNdx;\r
-       else if (strName == "fts")      strFile = strFrmFts;\r
-       else if (strName == "glo")      strFile = strFrmGls;\r
-\r
-       gstrName = strName;\r
-       frames[0].location = strFile;   \r
+       var strFile="";\r
+       if(strName=="toc")              strFile=strFrmToc;\r
+       else if(strName=="idx") strFile=strFrmNdx;\r
+       else if(strName=="fts") strFile=strFrmFts;\r
+       else if(strName=="glo") strFile=strFrmGls;\r
+\r
+       gstrName=strName;\r
+       frames[0].location=strFile;     \r
 }\r
 \r
 function onSendMessage(oMsg)\r
 {\r
        if(oMsg)\r
        {\r
+               var onMsg=null;\r
                var nMsgId=oMsg.nMessageId;\r
-               if (nMsgId==WH_MSG_SHOWTOC)\r
+               if(nMsgId==WH_MSG_SHOWTOC)\r
                {\r
                        switchNvp("toc");\r
-                       var onMsg=new whMessage(WH_MSG_PANEINFO, this, 1, "toc");\r
+                       onMsg=new whMessage(WH_MSG_PANEINFO,this,1,"toc");\r
                        SendMessage(onMsg);\r
-                       onMsg = new whMessage(WH_MSG_SHOWPANE, this, 1, null);\r
+                       onMsg=new whMessage(WH_MSG_SHOWPANE,this,1,null);\r
                        SendMessage(onMsg);\r
                }\r
                else if(nMsgId==WH_MSG_SHOWIDX)\r
                {\r
                        switchNvp("idx");\r
-                       var onMsg=new whMessage(WH_MSG_PANEINFO, this, 1, "idx");\r
+                       onMsg=new whMessage(WH_MSG_PANEINFO,this,1,"idx");\r
                        SendMessage(onMsg);\r
-                       onMsg = new whMessage(WH_MSG_SHOWPANE, this, 1, null);\r
+                       onMsg=new whMessage(WH_MSG_SHOWPANE,this,1,null);\r
                        SendMessage(onMsg);\r
                }\r
                else if(nMsgId==WH_MSG_SHOWFTS)\r
                {\r
                        switchNvp("fts");\r
-                       var onMsg=new whMessage(WH_MSG_PANEINFO, this, 1, "fts");\r
+                       onMsg=new whMessage(WH_MSG_PANEINFO,this,1,"fts");\r
                        SendMessage(onMsg);\r
-                       onMsg = new whMessage(WH_MSG_SHOWPANE, this, 1, null);\r
+                       onMsg=new whMessage(WH_MSG_SHOWPANE,this,1,null);\r
                        SendMessage(onMsg);\r
                }\r
                else if(nMsgId==WH_MSG_SHOWGLO)\r
                {\r
                        switchNvp("glo");\r
-                       var onMsg=new whMessage(WH_MSG_PANEINFO, this, 1, "glo");\r
+                       onMsg=new whMessage(WH_MSG_PANEINFO,this,1,"glo");\r
                        SendMessage(onMsg);\r
-                       onMsg = new whMessage(WH_MSG_SHOWPANE, this, 1, null);\r
+                       onMsg=new whMessage(WH_MSG_SHOWPANE,this,1,null);\r
                        SendMessage(onMsg);\r
                }\r
-               else if (nMsgId==WH_MSG_GETPANEINFO)\r
+               else if(nMsgId==WH_MSG_GETPANEINFO)\r
                {\r
-                       oMsg.oParam = gstrName;\r
+                       oMsg.oParam=gstrName;\r
                        return false;\r
                }\r
        }\r
@@ -130,47 +155,48 @@ function onSendMessage(oMsg)
 \r
 function onResize()\r
 {\r
-       if (gbIE4)\r
+       var oMsg=null;\r
+       if(gbIE4)\r
        {\r
                if(document.body)\r
                {\r
-                       if(document.body.clientWidth > 1 && document.body.clientHeight>1)\r
+                       if(document.body.clientWidth>1&&document.body.clientHeight>1)\r
                        {\r
-                               var oMsg = new whMessage(WH_MSG_RESIZEPANE, this, 1, null);\r
+                               oMsg=new whMessage(WH_MSG_RESIZEPANE,this,1,null);\r
                                SendMessage(oMsg);\r
                        }\r
                }\r
        }\r
-       else \r
+       else\r
        {\r
-               if (window.innerWidth != 0 && window.innerHeight != 0)\r
+               if(window.innerWidth!=0&&window.innerHeight!=0)\r
                {\r
-                       var oMsg = new whMessage(WH_MSG_RESIZEPANE, this, 1, null);\r
+                       oMsg=new whMessage(WH_MSG_RESIZEPANE,this,1,null);\r
                        SendMessage(oMsg);\r
                }\r
        }\r
 }\r
 \r
-if (window.gbWhMsg&&window.gbWhVer&&window.gbWhProxy)\r
+if(window.gbWhMsg&&window.gbWhVer&&window.gbWhProxy)\r
 {\r
-       var oMsg = new whMessage(WH_MSG_GETPANES, this, 1, null);\r
-       if (SendMessage(oMsg))\r
+       var oMsg=new whMessage(WH_MSG_GETPANES,this,1,null);\r
+       if(SendMessage(oMsg))\r
        {\r
-               if (oMsg.oParam)\r
+               if(oMsg.oParam)\r
                {\r
-                       for (var i=0;i<oMsg.oParam.aPanes.length;i++)\r
+                       for(var i=0;i<oMsg.oParam.aPanes.length;i++)\r
                        {\r
-                               if (oMsg.oParam.aPanes[i].sPaneName == "toc")\r
-                                       strFrmToc = oMsg.oParam.aPanes[i].sPaneURL;\r
-                               else if (oMsg.oParam.aPanes[i].sPaneName == "idx")\r
-                                       strFrmNdx = oMsg.oParam.aPanes[i].sPaneURL;\r
-                               else if (oMsg.oParam.aPanes[i].sPaneName == "fts")\r
-                                       strFrmFts = oMsg.oParam.aPanes[i].sPaneURL;\r
-                               else if (oMsg.oParam.aPanes[i].sPaneName == "glo")\r
-                                       strFrmGls = oMsg.oParam.aPanes[i].sPaneURL;\r
-                               if (oMsg.oParam.sDefault == oMsg.oParam.aPanes[i].sPaneName)\r
+                               if(oMsg.oParam.aPanes[i].sPaneName=="toc")\r
+                                       strFrmToc=oMsg.oParam.aPanes[i].sPaneURL;\r
+                               else if(oMsg.oParam.aPanes[i].sPaneName=="idx")\r
+                                       strFrmNdx=oMsg.oParam.aPanes[i].sPaneURL;\r
+                               else if(oMsg.oParam.aPanes[i].sPaneName=="fts")\r
+                                       strFrmFts=oMsg.oParam.aPanes[i].sPaneURL;\r
+                               else if(oMsg.oParam.aPanes[i].sPaneName=="glo")\r
+                                       strFrmGls=oMsg.oParam.aPanes[i].sPaneURL;\r
+                               if(oMsg.oParam.sDefault==oMsg.oParam.aPanes[i].sPaneName)\r
                                {\r
-                                       strFrmDft = oMsg.oParam.aPanes[i].sPaneURL;\r
+                                       strFrmDft=oMsg.oParam.aPanes[i].sPaneURL;\r
                                }\r
                        }\r
                }\r
@@ -184,21 +210,29 @@ if (window.gbWhMsg&&window.gbWhVer&&window.gbWhProxy)
        RegisterListener2(this,WH_MSG_SHOWIDX);\r
        RegisterListener2(this,WH_MSG_SHOWFTS);\r
        RegisterListener2(this,WH_MSG_SHOWGLO);\r
-       RegisterListener2(this, WH_MSG_GETPANEINFO);\r
+       RegisterListener2(this,WH_MSG_GETPANEINFO);\r
+\r
+       if(gbIE55)\r
+               window.onresize=onResize;\r
 \r
-       window.onresize=onResize;\r
        window.onunload=window_unload;\r
        window.onload=window_onload;\r
 \r
-       var strHtml = "";\r
-       strHtml += "<frameset rows=\'100%,*\'>";\r
-       strHtml += "<frame name=\'nvplist\' title=\'navpane frame\' src=\'" + strFrmDft +"\'></frame>";\r
-       strHtml += "<frame src=\'whskin_blank.htm\' noresize></frame>";\r
-       strHtml += "</frameset>";\r
+       var strHtml="";\r
+       strHtml+="<frameset rows=\'100%,*\'>";\r
+       strHtml+="<frame name=\'nvplist\' title=\'navpane frame\' src=\'" + strFrmDft +"\'></frame>";\r
+       strHtml+="<frame src=\'whskin_blank.htm\' noresize></frame>";\r
+       strHtml+="</frameset>";\r
        document.write(strHtml);\r
 }\r
 else\r
        document.location.reload();\r
+\r
+if(window.gbNav6)\r
+{\r
+       var oMsg=new whMessage(WH_MSG_RELOADNS6,this,1,null);\r
+       SendMessage(oMsg);\r
+}\r
 //-->\r
 </script>\r
 </html>
\ No newline at end of file
index 8b705444cfda6cbb483b0648a37dac5ca1bab0fe..6cb490239502a3bd14eefd6dfb9b1c3a7ed93972 100755 (executable)
@@ -1,6 +1,9 @@
 <html>\r
 <head>\r
-<META HTTP-EQUIV="content-type" CONTENT="text/html; charset=iso-8859-1">\r
+<title> WebHelp Navigation Toolbar </title>\r
+\r
+<meta name="generator" content="RoboHelp by eHelp Corporation   www.ehelp.com">\r
+<meta name="description" content="WebHelp 5.50">\r
 </head>\r
 <style>\r
 <!--\r
@@ -83,7 +86,7 @@ setButtonBgColor("banner","", true);
 addButton("fts",BTN_TEXT|BTN_IMG,"Search","","","","",0,0,"","","","","","");\r
 addButton("glo",BTN_TEXT|BTN_IMG,"Glossary","","","","",0,0,"","","","","","");\r
 addButton("searchform",BTN_TEXT,"","","","","",0,0,"","","","","","");\r
-addButton("banner",BTN_IMG,"eHelp Corporation","","","","",0,0,"","","","","","");\r
+addButton("banner",BTN_IMG,"","","","","",0,0,"","","","","","");\r
 \r
        addButton("blankblock");\r
        writeStyle(false);\r
diff --git a/doc/salome/gui/KERNEL/whskin_tw.htm b/doc/salome/gui/KERNEL/whskin_tw.htm
new file mode 100755 (executable)
index 0000000..69737fa
--- /dev/null
@@ -0,0 +1,63 @@
+<html>\r
+<script language="javascript1.2" src="whutils.js"></script>\r
+<script language="javascript1.2">\r
+<!--\r
+var gsTopic="";\r
+\r
+if (location.hash.length > 1)\r
+{\r
+       var nPos = location.hash.indexOf(">>");\r
+       if (nPos>1)\r
+       {\r
+               gsTopic = location.hash.substring(1, nPos);\r
+               parseParam(location.hash.substring(nPos+2));\r
+       }\r
+       else\r
+               gsTopic = location.hash.substring(1);\r
+}\r
+\r
+\r
+       var strHtml="";\r
+       strHtml+="<frameset rows=\'100%,*\'>";\r
+       strHtml+="<frame name=\'topicwindow\' src=\'" + gsTopic +"\'></frame>";\r
+       strHtml+="<frame src=\'whskin_blank.htm\' noresize></frame>";\r
+       strHtml+="</frameset>";\r
+       document.write(strHtml);\r
+\r
+function parseParam(sParam)\r
+{\r
+       if (sParam)\r
+       {\r
+               var nBPos=0;\r
+               do \r
+               {\r
+                       var nPos=sParam.indexOf(">>", nBPos);\r
+                       if (nPos!=-1)\r
+                       {\r
+                               if (nPos>0)\r
+                               {\r
+                                       var sPart=sParam.substring(nBPos, nPos);\r
+                                       parsePart(sPart);\r
+                               }\r
+                               nBPos = nPos + 2;\r
+                       }\r
+                       else\r
+                       {\r
+                               var sPart=sParam.substring(nBPos);\r
+                               parsePart(sPart);\r
+                               break;\r
+                       }\r
+               } while(nBPos < sParam.length);\r
+       }       \r
+}\r
+\r
+function parsePart(sPart)\r
+{\r
+       if(sPart.toLowerCase().indexOf("cap=")==0)\r
+       {\r
+               document.title=_browserStringToText(sPart.substring(4));\r
+       }\r
+}\r
+//-->\r
+</script>\r
+</html>
\ No newline at end of file
index 2a61402a925e6ea61e4942b36880a8f0e4d8d1f3..6dce998677a30524c88918db0363d2346d5a6046 100755 (executable)
@@ -40,7 +40,8 @@ if (window.gbWhTopic)
        }\r
 }\r
 else\r
-       document.location.reload();\r
+       if (window.gbIE4)\r
+               document.location.reload();\r
 //-->\r
 </script>"]]>  \r
   </add>\r
index 7e64e4a6653825e91a76dfa69a42fbc6b69a0a2c..60a381971f5243079819e0aa912a008a08e879e2 100755 (executable)
@@ -1,3 +1,4 @@
+//     WebHelp 5.10.003\r
 RegisterListener2(this, WH_MSG_GETSTARTFRAME);\r
 RegisterListener2(this, WH_MSG_GETDEFAULTTOPIC);\r
 RegisterListener2(this, WH_MSG_MINIBARORDER);\r
@@ -8,6 +9,9 @@ RegisterListener2(this, WH_MSG_ISAVENUESUPPORT);
 RegisterListener2(this, WH_MSG_GETPANETYPE);\r
 RegisterListener2(this, WH_MSG_GETPANES);\r
 RegisterListener2(this, WH_MSG_RELOADNS6);\r
+RegisterListener2(this, WH_MSG_GETCMD);\r
+RegisterListener2(this, WH_MSG_GETPANE);\r
+RegisterListener2(this, WH_MSG_GETDEFPANE);\r
 \r
 if (gbNav6)\r
 {\r
@@ -17,20 +21,128 @@ if (gbNav6)
 \r
 function delayReload()\r
 {\r
-       if(!gnReload)\r
+       if (!(this.cMRServer && cMRServer.m_strVersion))\r
        {\r
-               if(nViewFrameType&&nViewFrameType==1)\r
-                       document.location=document.location;\r
+               if(gnReload!=2)\r
+               {\r
+                       if(nViewFrameType&&nViewFrameType==1)\r
+                               document.location=document.location;\r
+               }\r
        }\r
 }\r
 \r
-var gsToolbarOrder = "toc|fts|glo|blankblock|banner";\r
+var gsToolbarOrder = "toc|fts|glo|blankblock|searchform|banner";\r
 var gsMinibarOrder = "blankblock|hide2|";\r
 \r
-var gsTopic = "files/introduction.htm";\r
+var gsTopic = "kernel/introduction.htm";\r
+var PANE_OPT_SEARCH = 1;\r
+var PANE_OPT_BROWSESEQ = 2;\r
+var gnOpts=-1;\r
+var gnCmd=-1;\r
+var gnPans=2;\r
+var gsBtns="invalid";\r
+var gsDefaultBtn="invalid";\r
+var gbHasTitle=false;\r
 \r
 if (location.hash.length > 1)\r
-       gsTopic = location.hash.substring(1);\r
+{\r
+       var sParam = location.hash;\r
+       if (sParam.indexOf("#<") == 0)\r
+       {\r
+               document.location = "whcsh_home.htm#" + sParam.substring(2);\r
+       }\r
+       else if (sParam.indexOf("#>>") == 0)\r
+       {\r
+               parseParam(sParam.substring(3));\r
+               sParam = "#" + gsTopic + sParam.substring(1);\r
+       }\r
+       else\r
+       {\r
+               var nPos = sParam.indexOf(">>");\r
+               if (nPos>1)\r
+               {\r
+                       gsTopic = sParam.substring(1, nPos);\r
+                       parseParam(sParam.substring(nPos+2));\r
+               }\r
+               else\r
+                       gsTopic = sParam.substring(1);\r
+       }\r
+       if (gnPans == 1 && gsTopic)\r
+       {\r
+               var strURL=location.href;\r
+               if (location.hash)\r
+               {\r
+                       var nPos=location.href.indexOf(location.hash);\r
+                       strURL=strURL.substring(0, nPos);\r
+               }\r
+               if (gbHasTitle)\r
+                       document.location=_getPath(strURL)+ "whskin_tw.htm" + sParam;\r
+               else\r
+                       document.location=_getPath(strURL)+ gsTopic;\r
+       }\r
+}\r
+\r
+function parseParam(sParam)\r
+{\r
+       if (sParam)\r
+       {\r
+               var nBPos=0;\r
+               do \r
+               {\r
+                       var nPos=sParam.indexOf(">>", nBPos);\r
+                       if (nPos!=-1)\r
+                       {\r
+                               if (nPos>0)\r
+                               {\r
+                                       var sPart=sParam.substring(nBPos, nPos);\r
+                                       parsePart(sPart);\r
+                               }\r
+                               nBPos = nPos + 2;\r
+                       }\r
+                       else\r
+                       {\r
+                               var sPart=sParam.substring(nBPos);\r
+                               parsePart(sPart);\r
+                               break;\r
+                       }\r
+               } while(nBPos < sParam.length);\r
+       }       \r
+}\r
+\r
+function parsePart(sPart)\r
+{\r
+       if(sPart.toLowerCase().indexOf("cmd=")==0)\r
+       {\r
+               gnCmd=parseInt(sPart.substring(4));\r
+       }\r
+       else if(sPart.toLowerCase().indexOf("cap=")==0)\r
+       {\r
+               document.title=_browserStringToText(sPart.substring(4));\r
+               gbHasTitle=true;\r
+       }\r
+       else if(sPart.toLowerCase().indexOf("pan=")==0)\r
+       {\r
+               gnPans=parseInt(sPart.substring(4));\r
+       }\r
+       else if(sPart.toLowerCase().indexOf("pot=")==0)\r
+       {\r
+               gnOpts=parseInt(sPart.substring(4));\r
+       }\r
+       else if(sPart.toLowerCase().indexOf("pbs=")==0)\r
+       {\r
+               var sRawBtns = sPart.substring(4);\r
+               var aBtns = sRawBtns.split("|");\r
+               for (var i=0;i<aBtns.length;i++)\r
+               {\r
+                       aBtns[i] = transferAgentNameToPaneName(aBtns[i]);\r
+               }\r
+               gsRawBtns = aBtns.join("|");\r
+       }\r
+       else if(sPart.toLowerCase().indexOf("pdb=")==0)\r
+       {\r
+               gsDefaultBtn=transferAgentNameToPaneName(sPart.substring(4));\r
+       }\r
+}\r
 \r
 function setToolbarOrder(sOrder)\r
 {\r
@@ -108,12 +220,62 @@ function onSendMessageX(oMsg)
                                }\r
                        }\r
                }\r
-               oMsg.oParam = gsToolbarOrder;\r
+               var sParam="";\r
+               if (gsBtns!="invalid")\r
+                       sParam=gsBtns+"|blankblock|banner";\r
+               else\r
+                       sParam = gsToolbarOrder;\r
+\r
+               if (gnOpts!=-1)\r
+               {\r
+                       var nPosForm=sParam.indexOf("|searchform|");\r
+                       if (gnOpts&PANE_OPT_SEARCH)\r
+                       {\r
+                               if (nPosForm == -1 && sParam.indexOf("|fts|") != -1)\r
+                               {\r
+                                       var nPos=sParam.indexOf("banner");\r
+                                       if (nPos!=-1)\r
+                                       {\r
+                                               sParam=sParam.substring(0, nPos) + "searchform|" + sParam.substring(nPos);\r
+                                       }\r
+                               }\r
+                       }\r
+                       else\r
+                       {\r
+                               if (nPosForm!=-1)\r
+                               {\r
+                                       sParam=sParam.substring(0,nPosForm) + sParam.substring(nPosForm+11);\r
+                               }\r
+                       }\r
+               }\r
+               oMsg.oParam=sParam;\r
                return false;\r
        }\r
        else if (nMsgId == WH_MSG_MINIBARORDER)\r
        {\r
-               oMsg.oParam = gsMinibarOrder;\r
+               var sMinParam=gsMinibarOrder;\r
+               if (gnOpts!=-1)\r
+               {\r
+                       var nPosBro=gsMinibarOrder.indexOf("avprev|avnext");\r
+                       if (gnOpts&PANE_OPT_BROWSESEQ)\r
+                       {\r
+                               if (nPosBro==-1)\r
+                               {\r
+                                       sMinParam ="avprev|avnext|" + gsMinibarOrder;\r
+                               }\r
+                       }\r
+                       else\r
+                       {\r
+                               if (nPosBro!=-1)\r
+                               {\r
+                                       if (nPosBro!=0)\r
+                                               sMinParam=gsMinibarOrder.substring(0, nPosBro) + gsMinibarOrder.substring(nPosBro+14);\r
+                                       else\r
+                                               sMinParam=gsMinibarOrder.substring(14);\r
+                               }\r
+                       }\r
+               }\r
+               oMsg.oParam = sMinParam;\r
                return false;\r
        }\r
        else if (nMsgId == WH_MSG_ISSYNCSSUPPORT)\r
@@ -128,7 +290,7 @@ function onSendMessageX(oMsg)
                }\r
                else\r
                {\r
-                       if(nViewFrameType)\r
+                       if(typeof(nViewFrameType)!="undefined")\r
                        {\r
                                oMsg.oParam= (nViewFrameType < 3);\r
                                return false;\r
@@ -152,7 +314,7 @@ function onSendMessageX(oMsg)
        }\r
        else if (nMsgId == WH_MSG_ISSEARCHSUPPORT)\r
        {\r
-               if(nViewFrameType)\r
+               if(typeof(nViewFrameType)!="undefined")\r
                {\r
                        oMsg.oParam= (nViewFrameType < 3);\r
                        return false;\r
@@ -160,7 +322,7 @@ function onSendMessageX(oMsg)
        }\r
        else if (nMsgId == WH_MSG_GETPANETYPE)\r
        {\r
-               if(nViewFrameType)\r
+               if(typeof(nViewFrameType)!="undefined")\r
                {\r
                        var oPaneInfo = new Object();\r
                        oPaneInfo.nType = nViewFrameType;\r
@@ -199,7 +361,33 @@ function onSendMessageX(oMsg)
        else if(nMsgId==WH_MSG_RELOADNS6)\r
        {\r
                if(gbNav6)\r
-                       gnReload=1;\r
+                       gnReload++;\r
+               return false;\r
+       }\r
+       else if(nMsgId==WH_MSG_GETCMD)\r
+       {\r
+               oMsg.oParam=gnCmd;\r
+               return false;\r
+       }\r
+       else if(nMsgId==WH_MSG_GETPANE)\r
+       {\r
+               if (gsBtns!="invalid" && oMsg.oParam.sName)\r
+               {\r
+                       if(gsBtns.indexOf(oMsg.oParam.sName) != -1)\r
+                               oMsg.oParam.bEnable=true;\r
+                       else\r
+                               oMsg.oParam.bEnable=false;\r
+               }\r
+               else\r
+                       oMsg.oParam.bEnable=true;\r
+               return false;\r
+       }\r
+       else if(nMsgId==WH_MSG_GETDEFPANE)\r
+       {\r
+               if (gsDefaultBtn!="invalid")\r
+               {\r
+                       oMsg.oParam=gsDefaultBtn;\r
+               }\r
                return false;\r
        }\r
        return true;\r
@@ -213,7 +401,7 @@ function transferANToPN2(sAN)
                return "idx";\r
        else if (sAN =="nls")\r
                return "fts";\r
-       else if (sAN =="Glossary")\r
+       else if (sAN =="gls")\r
                return "glo";\r
        else if (sAN =="WebSearch")\r
                return "websearch";\r
index 7a676913e56ecb06a199ca8c4a4f3788ca0ffdfe..a43c6e1c43f9ee6acd4ef60b4d3e43f9307f120c 100755 (executable)
@@ -1,3 +1,4 @@
+//     WebHelp 5.10.002\r
 window.whname="wh_stub";\r
 function getframehandle(frames,framename)\r
 {\r
@@ -9,10 +10,12 @@ function getframehandle(frames,framename)
                {\r
                        if(frames[i].name==framename)\r
                                return frames[i];\r
-                       if(frames[i].frames.length>0)\r
-                               frame=getframehandle(frames[i].frames,framename);\r
-                               if(null!=frame)\r
-                                       return frame;\r
+               }\r
+               if(frames[i].frames.length>0)\r
+               {\r
+                       frame=getframehandle(frames[i].frames,framename);\r
+                       if(null!=frame)\r
+                               return frame;\r
                }\r
        }\r
        return frame;\r
index bfab6523e0124f1be288f0e9464ec9415ff371b4..5e816c942d4b231a746569507acc41a29786ff41 100755 (executable)
Binary files a/doc/salome/gui/KERNEL/wht_abge.jpg and b/doc/salome/gui/KERNEL/wht_abge.jpg differ
index f0729b7e5b4c7c54063069ca80a3c4194e8c972a..bfedc68d849cb3c315cd060e6a39d10fb14fa6b6 100755 (executable)
Binary files a/doc/salome/gui/KERNEL/wht_abgi.jpg and b/doc/salome/gui/KERNEL/wht_abgi.jpg differ
index 74de750c656930519ea1f3f2ca4d813df65f2606..95af21f830df9656ae625944a31041c475df39d7 100755 (executable)
Binary files a/doc/salome/gui/KERNEL/wht_abgw.jpg and b/doc/salome/gui/KERNEL/wht_abgw.jpg differ
index 78fabbbad481aa5d5da0b50bc17fb1bcc6ec2418..a5638fabfa1ffb439302d7055d404f22fa78e942 100755 (executable)
Binary files a/doc/salome/gui/KERNEL/wht_abte.jpg and b/doc/salome/gui/KERNEL/wht_abte.jpg differ
index 92c2d68ee27624e3a56016b432caf9ba0560c3ee..14ac68cae4358e4c8b347e2e0a9124cc8e6e0b58 100755 (executable)
Binary files a/doc/salome/gui/KERNEL/wht_abti.jpg and b/doc/salome/gui/KERNEL/wht_abti.jpg differ
index 1fdd1a8dc9acc6b6fb3681debe1ada91041ff355..46e68b157ccecfa240c34e110710157800dd65d8 100755 (executable)
Binary files a/doc/salome/gui/KERNEL/wht_abtw.jpg and b/doc/salome/gui/KERNEL/wht_abtw.jpg differ
index a183c980fccc1c57fa55aff44d3c0e69dddbec85..08b19e5e865047a5bd1141dc9f32964096689d58 100755 (executable)
@@ -1,3 +1,4 @@
+//     WebHelp 5.10.006\r
 var gaButtons=new Array();\r
 var    gaTypes=new Array();\r
 var gaBtnBgColor=new Array();\r
@@ -166,6 +167,25 @@ function writeStyle(bMiniBar)
        sStyle+="font-size:"+gsTBFontSize+";\n";\r
        sStyle+="color:"+gsTBFontColor+";}\n";\r
 \r
+       sStyle+=".clsBtnDisable {\n";\r
+       if(!(gbNav4&&!gbNav6))\r
+               if (bMiniBar)\r
+                       sStyle+="padding:2px;\n";\r
+               else\r
+                       sStyle+="padding:5px;\n";\r
+       sStyle+="cursor:default;\n";\r
+       sStyle+="font-family:"+gsTBFontFamily+";\n";\r
+       sStyle+="font-size:"+gsTBFontSize+";\n";\r
+       sStyle+="color:"+gsTBFontColor+";}\n";\r
+\r
+       sStyle+=".clsNoBDisable {\n";\r
+       sStyle+="padding-left:2px;padding-right:2px;\n";\r
+       sStyle+="cursor:default;\n";\r
+       sStyle+="font-family:"+gsTBFontFamily+";\n";\r
+       sStyle+="font-size:"+gsTBFontSize+";\n";\r
+       sStyle+="color:"+gsTBFontColor+";}\n";\r
+\r
+\r
        sStyle+=".clsNotBtn {\n";\r
        if(!(gbNav4&&!gbNav6))\r
                if (bMiniBar)\r
@@ -266,7 +286,7 @@ function getImage(oImage,sTitle)
                        sI+=" width="+oImage.nWidth;\r
                if(oImage.nHeight>0)\r
                        sI+=" height="+oImage.nHeight;\r
-               sI+=" border=no align=\"absmiddle\">";\r
+               sI+=" border=0 align=\"absmiddle\">";\r
                return sI;\r
        }\r
        return "";\r
@@ -300,7 +320,7 @@ function updateWebSearch(bEnable)
 \r
 function setState(oEL,sState)\r
 {\r
-       if(gbNav6)\r
+       if(gbNav6||gbOpera)\r
                oEL.setAttribute("state",sState);\r
        else\r
                oEL.state=sState;       \r
@@ -368,7 +388,12 @@ function disableButton(oEl,oBtn)
 {\r
        setState(oEl,"disable");\r
        var sPF=oEl.className.substring(0,6);\r
-       oEl.className=sPF+"Normal";\r
+       oEl.className=sPF+"Disable";\r
+       var oAs = getElementsByTag(oEl,"a");\r
+       if (oAs.length>0)\r
+       {\r
+               oAs[0].style.cursor="default";\r
+       }\r
        var oIs=getElementsByTag(oEl,"img");\r
        if(oIs.length>0&&oBtn&&oBtn.aIs&&oBtn.aIs.length>3)\r
        {\r
@@ -387,6 +412,11 @@ function enableButton(oEl,oBtn)
                var sPF=oEl.className.substring(0,6);\r
                oEl.className=sPF+"Up";\r
        }\r
+       var oAs = getElementsByTag(oEl,"a");\r
+       if (oAs.length>0)\r
+       {\r
+               oAs[0].style.cursor="hand";\r
+       }\r
        var oIs=getElementsByTag(oEl,"img");\r
        if(oIs.length>0&&oBtn&&oBtn.aIs&&oBtn.aIs.length>0)\r
        {\r
@@ -526,9 +556,9 @@ function addSearchForm()
 \r
        if(gsSearchFormTitle)\r
                sPropmptString="";\r
-       var sButton="<table CELLSPACING=0 CELLPADDING=1><tr><td valign=\"middle\" NOWRAP class=\"clsNotBtn\"><span class=\"btnsearchform\">"+_textToHtml(gsSearchFormTitle)+"</span></td><td NOWRAP valign=\"middle\"><input class=\"inputsearchform\" type=\"text\" onfocus=\"highLightIfNeeded();\" name=\"searchString\" value=\""+sPropmptString+"\" size=\""+nWidth+"\"></td>";\r
+       var sButton="<table id=\"searchInput\" CELLSPACING=0 CELLPADDING=1><tr><td valign=\"middle\" NOWRAP class=\"clsNotBtn\"><span class=\"btnsearchform\">"+_textToHtml(gsSearchFormTitle)+"</span></td><td NOWRAP valign=\"middle\"><input class=\"inputsearchform\" type=\"text\" onfocus=\"highLightIfNeeded();\" name=\"searchString\" value=\""+sPropmptString+"\" size=\""+nWidth+"\"></td>";\r
        if(gbNav6)\r
-               sButton="<form name=\"searchForm\" method=\"POST\" action=\"javascript:searchB()\">"+sButton;\r
+               sButton="<form id=\"searchInput\" name=\"searchForm\" method=\"POST\" action=\"javascript:searchB()\">"+sButton;\r
        if("image"=="text")\r
        {\r
                sButton+="<td NOWRAP valign=\"middle\"><a class=\"searchbtn\" href=\"javascript:void(0);\" onclick=\"searchForm.submit(); return false;\"></a></td>";\r
@@ -579,7 +609,7 @@ function addBanner(sImage)
        if(sImage)\r
        {\r
                var nBtn=gaButtons.length;\r
-               gaButtons[nBtn]="<td NOWRAP align=\"center\" valign=\"middle\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href=\"javascript:void(0);\" onclick=\"showBanner();return false;\"><img alt=\"About WebHelp\"src=\""+sImage+"\" border=no align=\"absmiddle\"></a></td>";\r
+               gaButtons[nBtn]="<td NOWRAP align=\"center\" valign=\"middle\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href=\"javascript:void(0);\" onclick=\"showBanner();return false;\"><img alt=\"About WebHelp\"src=\""+sImage+"\" border=0 align=\"absmiddle\"></a></td>";\r
                gaTypes[nBtn]="banner";\r
        }\r
 }\r
@@ -588,8 +618,8 @@ function showBanner()
 {\r
        if (!gbPreview)\r
        {\r
-               var nWidth=360;\r
-               var nHeight=240;\r
+               var nWidth=390;\r
+               var nHeight=204;\r
                var     nScreenWidth=screen.width;\r
                var     nScreenHeight=screen.height;\r
                var nLeft=(nScreenWidth-nWidth)/2;\r
@@ -654,7 +684,7 @@ function addButton(sType,nStyle,sTitle,sHref,sOnClick,sOnMouseOver,sOnLoad,nWidt
                sButton+="</a>";\r
                bState=true;\r
        }\r
-       else if(sType=="hide2"&&(!gbNav4))\r
+       else if(sType=="hide2"&&(!gbNav4)&&(!gbOpera))\r
        {\r
                var svTitle="Hide Navigation Component";\r
                sButton="<a title=\""+svTitle+"\" id=\"btnhide\" class=\"btnhide\" href=\"javascript:void(0);\" onclick=\"showHidePane();return false;\">";\r
@@ -1255,7 +1285,7 @@ function onBtnMouseUp(e,nBtn)
 function getState(oEl)\r
 {\r
        var sState="";\r
-       if(gbNav6)\r
+       if(gbNav6||gbOpera)\r
                sState=oEl.getAttribute("state");\r
        else\r
                if(oEl.state)\r
@@ -1502,12 +1532,14 @@ function window_Unload()
                UnRegisterListener2(this,WH_MSG_GETCURRENTAVENUE);\r
                UnRegisterListener2(this,WH_MSG_ENABLEWEBSEARCH);\r
                UnRegisterListener2(this,WH_MSG_INITSEARCHSTRING);\r
+               UnRegisterListener2(this,WH_MSG_NOSEARCHINPUT);\r
+               UnRegisterListener2(this,WH_MSG_NOSYNC);\r
        }\r
 }\r
 \r
 function window_OnLoad()\r
 {\r
-       if(document.body)\r
+       if(!gbOpera7&&document.body)\r
        {\r
                if(gsBgImage&&gsBgImage.length>0)\r
                {\r
@@ -1607,6 +1639,24 @@ function onSendMessage(oMsg)
                        return false;\r
                }\r
        }\r
+       else if(nMsgId==WH_MSG_NOSEARCHINPUT)\r
+       {\r
+               var oSearchInput = getElement("searchInput");\r
+               if (oSearchInput)\r
+               {\r
+                       oSearchInput.style.visibility = "hidden";\r
+                       return false;\r
+               }\r
+       }\r
+       else if(nMsgId==WH_MSG_NOSYNC)\r
+       {\r
+               var oSync = getElement("btnsynctoc");\r
+               if (oSync)\r
+               {\r
+                       oSync.style.visibility = "hidden";\r
+                       return false;\r
+               }\r
+       }\r
        return true;\r
 }\r
 \r
@@ -1978,6 +2028,9 @@ if(window.gbWhUtil&&window.gbWhMsg&&window.gbWhVer&&window.gbWhProxy)
        RegisterListener2(this,WH_MSG_GETCURRENTAVENUE);\r
        RegisterListener2(this,WH_MSG_ENABLEWEBSEARCH);\r
        RegisterListener2(this,WH_MSG_INITSEARCHSTRING);\r
+       RegisterListener2(this,WH_MSG_NOSEARCHINPUT);\r
+       RegisterListener2(this,WH_MSG_NOSYNC);\r
+\r
        window.onload=window_OnLoad;\r
        window.onunload=window_Unload;\r
        window.onresize=window_onResize;\r
index 00ca4e3db2bb92f4993cb9afd3a3e391bd3cdc0b..c3eeecbdc637955d1dc64d4a1a49b76e1f52dfed 100755 (executable)
@@ -1,9 +1,9 @@
 <html>\r
 <head>\r
 <title>Table of contents</title>\r
-<meta http-equiv="content-type" content="text/html; charset=iso-8859-1">\r
+\r
 <meta name="generator" content="RoboHelp by eHelp Corporation   www.ehelp.com">\r
-<meta name "description" content="WebHelp 2002">\r
+<meta name="description" content="WebHelp 5.50">\r
 <base target="bsscright">\r
 </head>\r
 <script language="javascript" src="whver.js"></script>\r
index 80806d7c72807d53523b7668fdf4d965e6bbc21a..54ddc9aacf72aa8b858677bb56a2074f645ae4e0 100755 (executable)
@@ -1,3 +1,4 @@
+//     WebHelp 5.10.007\r
 var gaHSLoad=new Array();\r
 var gnMinIdx=0;\r
 var gnInsIdx=-1;\r
@@ -7,7 +8,7 @@ var gaProj=null;
 var gaTocs=new Array();\r
 var goChunk=null;\r
 var gbReady=false;\r
-var gbLoadToc=false;\r
+var gbToc=false;\r
 var gbXML=false;\r
 var gaRoot=new Array();\r
 var gnCC=-1;\r
@@ -42,6 +43,42 @@ var gaTocsNs61Fix=null;
 var gbWhTHost=false;\r
 var gBookItems=new Array();\r
 var gInSync=false;\r
+var gbLData=false;\r
+var gbNeedFillStub=false;\r
+var gbLoadToc=false;\r
+\r
+function chunkInfoQueue()\r
+{\r
+       this.aContent=new Array();\r
+       this.inQueue=function(cInfo)\r
+       {\r
+               this.aContent[this.aContent.length]=cInfo;\r
+       }\r
+       this.deQueue=function()\r
+       {\r
+               var cInfo=null;\r
+               if(this.aContent.length>0)\r
+               {\r
+                       cInfo=this.aContent[0];\r
+                       for(var i=1;i<this.aContent.length;i++)\r
+                               this.aContent[i-1]=this.aContent[i];\r
+                       this.aContent.length--;\r
+               }\r
+               return cInfo;\r
+       }\r
+       this.length=function()\r
+       {\r
+               return this.aContent.length;\r
+       }\r
+}\r
+\r
+var gchunkRequestQueue=new chunkInfoQueue();\r
+\r
+function chunkInfo(nIdx, bLocal)\r
+{\r
+       this.nIdx=nIdx;\r
+       this.bLocal=bLocal;\r
+}\r
 \r
 function setBackground(sBgImage)\r
 {\r
@@ -86,18 +123,18 @@ function setIcon(sType,sURL)
                giNewURLItem=sURL;              \r
 }\r
 \r
-function bookItem(sTarget, sURL)\r
+function bookItem(sTarget,sURL)\r
 {\r
-       if (sTarget)\r
+       if(sTarget)\r
                this.sTarget=sTarget;\r
        else\r
                this.sTarget="bsscright";\r
        this.sURL=sURL;\r
 }\r
 \r
-function addBookItem(sBookId, sTarget, sURL)\r
+function addBookItem(sBookId,sTarget,sURL)\r
 {\r
-       gBookItems[sBookId] = new bookItem(sTarget, sURL);              \r
+       gBookItems[sBookId]=new bookItem(sTarget,sURL);         \r
 }\r
 \r
 function tocChunk(sPPath,sDPath)\r
@@ -117,10 +154,9 @@ function addTocChunk(sPPath,sDPath)
 \r
 function isHSLoad(nIdx)\r
 {\r
-       for(var i=0;i<gaHSLoad.length;i++){\r
+       for(var i=0;i<gaHSLoad.length;i++)\r
                if(gaHSLoad[i]==nIdx)\r
                        return true;\r
-       }\r
        return false;\r
 }\r
 \r
@@ -129,13 +165,12 @@ function setHSLoad(nIdx)
        if(!isHSLoad(nIdx))\r
        {\r
                var len=gaHSLoad.length;\r
-               for(var i=0;i<len;i++){\r
+               for(var i=0;i<len;i++)\r
                        if(gaHSLoad[i]==-1)\r
                        {\r
                                gaHSLoad[i]=nIdx;\r
                                return;\r
                        }\r
-               }\r
                gaHSLoad[len]=nIdx;\r
        }\r
 }\r
@@ -144,44 +179,20 @@ function setHSUnLoad(nIdx)
 {\r
        if(isHSLoad(nIdx))\r
        {\r
-               for(var i=0;i<gaHSLoad.length;i++){\r
+               for(var i=0;i<gaHSLoad.length;i++)\r
                        if(gaHSLoad[i]==nIdx)\r
                        {\r
                                gaHSLoad[i]=-1;\r
                                return;\r
                        }\r
-               }\r
        }\r
 }\r
 \r
-function cancelLoading(nIdx)\r
-{\r
-       var oObj=getElement(getCBId(nIdx));\r
-       if(oObj)\r
-       {\r
-               oObj.innerHTML="";\r
-               setHSUnLoad(nIdx)\r
-               ExpandIt(nIdx);\r
-       }\r
-}\r
-\r
-function cancelAll()\r
-{\r
-       var eLoadingDivs=getElement(gsLoadingDivID);\r
-       if(eLoadingDivs)\r
-               cancelHSLoading(eLoadingDivs);\r
-}\r
-\r
-function cancelHSLoading(eLoadingDiv)\r
+function removeLoadingDiv()\r
 {\r
-       var eParent=eLoadingDiv.parentElement;\r
-       if(eParent){\r
-               var sId=eParent.id;\r
-               sId=sId.substring(5);\r
-               var nIdx=parseInt(sId);\r
-               if(!isNaN(nIdx))\r
-                       cancelLoading(nIdx)\r
-       }\r
+       var eLoadingDiv=getElement(gsLoadingDivID);\r
+       if(eLoadingDiv)\r
+               removeThis(eLoadingDiv);\r
 }\r
 \r
 function checkBookItem(nIdx)\r
@@ -212,27 +223,112 @@ function insertBookItems(nIdx,num)
        ExpandIt(nIdx);\r
 }\r
 \r
-function writeBook(nIdx,bLocal)\r
+function isBookEmpty(nIdx)\r
+{\r
+       var num=getItemContentsNum(nIdx);\r
+       if (num>0)\r
+       {\r
+               var nCIdx=0;\r
+               do {\r
+                       nCIdx++;\r
+                       var i=nIdx+nCIdx;\r
+                       var nItemType=getItemType(i);\r
+                       if(nItemType==1){\r
+                               if (!isBookEmpty(i))\r
+                                       return false;\r
+                       }\r
+                       else if(nItemType==4){\r
+                               var     sSrc=getRefURL(i);\r
+                               var nProj=getProject(sSrc);\r
+                               if(nProj!=-1){\r
+                                       sSrc=gaRoot[nProj].sToc;\r
+                                       if(sSrc)\r
+                                               return false;\r
+                               }\r
+                       }\r
+                       else if(nItemType==2||nItemType==16||nItemType==8)\r
+                               return false;\r
+               } while(nCIdx<num);\r
+       }\r
+       return true;\r
+}\r
+\r
+function writeBook(nIdx)\r
 {\r
        var sIcon=getBookImage(nIdx,true);\r
        var sName=_textToHtml(getItemName(nIdx));\r
        sIcon=_textToHtml_nonbsp(sIcon);\r
        \r
-       var sHTML="<div id=\""+getPBId(nIdx)+"\" class=parent>";\r
-       sHTML+="<p><nobr><a id=\""+getBookId(nIdx)+"\" href=\"javascript:void(0);\" onfocus=\"markBook("+nIdx+");\" onclick=\"";\r
-\r
-       if(getItemType(nIdx)==1)\r
-               sHTML+="insertBookItems("+nIdx+", "+getItemContentsNum(nIdx);\r
+       var nType=getItemType(nIdx);\r
+       var bLocal=(nType==1);\r
+       var bLocalProject=(nType!=4);\r
+       \r
+       var sHTML="<div id=\""+getPBId(nIdx)+"\" class=";\r
+       if(bLocal)\r
+       {\r
+               if (!isBookEmpty(nIdx))\r
+               {\r
+                       sHTML+="parent><p><nobr><a id=\""+getBookId(nIdx)+"\" href=\"javascript:void(0);\" onfocus=\"markBook("+nIdx+");\" onclick=\"";\r
+                       sHTML+="insertBookItems("+nIdx+", "+getItemContentsNum(nIdx);\r
+                       sHTML+=");return false;\" title=\""+sName+"\"><img alt=\"Book\" name=\""+getBId(nIdx)+"\" src=\""+sIcon+"\" border=0 align=\"absmiddle\">";\r
+                       sHTML+="&nbsp;"+sName+"</a></nobr></p></div>";\r
+                       var sURL=_textToHtml_nonbsp(getItemURL(nIdx));\r
+                       if(sURL!="")\r
+                               addBookItem(getBookId(nIdx),_textToHtml_nonbsp(getTopicTarget(nIdx)),sURL);\r
+                       sHTML+="<div id=\""+getCBId(nIdx)+"\" class=child></div>";\r
+               }\r
+               else\r
+                       sHTML="";\r
+       }\r
        else\r
-               sHTML+="tocExpandHelpSet("+nIdx+","+bLocal;\r
-       sHTML+=");return false;\" title=\""+sName+"\"><img alt=\"Book\" name=\""+getBId(nIdx)+"\" src=\""+sIcon+"\" border=0 align=\"absmiddle\">";\r
-       var sURL=_textToHtml_nonbsp(getItemURL(nIdx));\r
-       if(sURL!="")\r
-               addBookItem(getBookId(nIdx),_textToHtml_nonbsp(getTopicTarget(nIdx)),sURL);\r
-       sHTML+="&nbsp;"+sName+"</a></nobr></p></div><div id=\""+getCBId(nIdx)+"\" class=child></div>";\r
+       {\r
+               sHTML+="stub></div>";\r
+               gbNeedFillStub=true;\r
+               setTimeout("fillStub("+nIdx+","+bLocalProject+");",100);\r
+       }\r
        return sHTML;\r
 }\r
 \r
+function checkFillStub()\r
+{\r
+       if(!gbLData)\r
+       {\r
+               if(gchunkRequestQueue.length()>0)\r
+               {\r
+                       var cInfo=gchunkRequestQueue.deQueue();\r
+                       if(cInfo)\r
+                       {\r
+                               fillStub(cInfo.nIdx,cInfo.bLocal);\r
+                               return;\r
+                       }\r
+               }\r
+       }\r
+       if(gbNeedFillStub)\r
+       {\r
+               gbNeedFillStub=false;\r
+               setTimeout("syncInit()",1);\r
+       }\r
+}\r
+\r
+function fillStub(nIdx,bLocalProject)\r
+{\r
+       if(!gbLData)\r
+       {\r
+               gbLData=true;\r
+               var sObj=getElement(getPBId(nIdx));\r
+               if(sObj!=null)\r
+               {\r
+                       tocExpandHelpSet(nIdx,bLocalProject);\r
+                       gbNeedFillStub=false;\r
+                       setTimeout("syncInit()",1);\r
+               }\r
+               else\r
+                       setTimeout("fillStub("+nIdx+","+bLocalProject+");",100);\r
+       }\r
+       else\r
+               gchunkRequestQueue.inQueue(new chunkInfo(nIdx,bLocalProject));\r
+}\r
+\r
 function getBookId(nIdx){return "B_"+nIdx;}\r
 \r
 function getItemId(nIdx){return "I_"+nIdx;}\r
@@ -285,7 +381,7 @@ function markItem(nIdx)
 \r
 function calTocPath(obj)\r
 {\r
-       var sPath=getInnerText(obj).substring(1);\r
+       var sPath=getInnerText2(obj);\r
        var pObj=getParentNode(obj);\r
        do\r
        {\r
@@ -299,11 +395,10 @@ function calTocPath(obj)
                                var objs=getItemsByBook(sObj);\r
                                for(var i=0;i<objs.length;i++)\r
                                {\r
-                                       var sText=getInnerText(objs[i]);\r
-                                       \r
+                                       var sText=getInnerText2(objs[i]);\r
                                        if(sText.length!=0)\r
                                        {\r
-                                               sPath=sText.substring(1)+gsPathSplit+sPath;\r
+                                               sPath=sText+gsPathSplit+sPath;\r
                                                break;\r
                                        }\r
                                }\r
@@ -330,7 +425,7 @@ function writeAnItem(nIdx)
        var sName=_textToHtml(getItemName(nIdx));\r
        var sHTML="<p><nobr><a id=\""+getItemId(nIdx)+"\" onfocus=\"markItem("+nIdx+");\""\r
        var sAltString="";\r
-       if (nItemType&2)\r
+       if(nItemType&2)\r
                sAltString="Page";\r
        else\r
                sAltString="Remote Page";\r
@@ -349,16 +444,12 @@ function writeBookItems(nIdx,num)
                        nCIdx++;\r
                        var i=nIdx+nCIdx;\r
                        var nItemType=getItemType(i);\r
-                       if(nItemType==1){\r
+                       if(nItemType==1||nItemType==4||nItemType==8){\r
                                sHTML+=writeBook(i);    \r
                                nCIdx+=getItemContentsNum(i);           \r
                        }\r
                        else if(nItemType==2||nItemType==16){\r
                                sHTML+=writeAnItem(i);\r
-                       }else if(nItemType==4){\r
-                               sHTML+=writeBook(i,false);\r
-                       }else if(nItemType==8){\r
-                               sHTML+=writeBook(i,true);\r
                        }\r
                }\r
                while(nCIdx<num);\r
@@ -369,10 +460,9 @@ function writeBookItems(nIdx,num)
 function tocExpandHelpSet(nIdx,bLocal)\r
 {\r
        checkBookItem(nIdx);\r
-       cancelAll();\r
-       if(isHSLoad(nIdx))\r
-               ExpandIt(nIdx);\r
-       else{\r
+       removeLoadingDiv();\r
+       if(!isHSLoad(nIdx))\r
+       {\r
                setHSLoad(nIdx);\r
                var sSrc="";\r
                if(bLocal){\r
@@ -388,8 +478,11 @@ function tocExpandHelpSet(nIdx,bLocal)
                        var nProj=getProject(sSrc);\r
                        if(nProj!=-1)\r
                        {\r
-                               goChunk=addTocChunk(gaProj[nProj].sPPath,gaProj[nProj].sDPath);\r
                                sSrc=gaRoot[nProj].sToc;\r
+                               if(sSrc)\r
+                                       goChunk=addTocChunk(gaProj[nProj].sPPath,gaProj[nProj].sDPath);\r
+                               else\r
+                                       goChunk=null;\r
                        }\r
                        else\r
                                goChunk=null;\r
@@ -397,22 +490,22 @@ function tocExpandHelpSet(nIdx,bLocal)
                if(goChunk)\r
                {\r
                        PrepareLoading(nIdx);\r
-                       ExpandIt(nIdx);\r
-                       gbLoadToc=false;\r
+                       gbToc=false;\r
                        loadData2(goChunk.sPPath+goChunk.sDPath+sSrc);\r
                }\r
+               else\r
+               {\r
+                       gbLData=false;\r
+                       checkFillStub();\r
+               }\r
        }\r
 }\r
 \r
 function getProject(sSrc)\r
 {\r
        for(var i=0;i<gaProj.length;i++)\r
-       {\r
                if(isSamePath(getPath(sSrc),gaProj[i].sPPath))\r
-               {\r
                        return i;\r
-               }\r
-       }\r
        return -1;\r
 }\r
 \r
@@ -437,15 +530,15 @@ function PrepareLoading(nIdx)
        gnInsIdx=nIdx;\r
        if(!gsTP)\r
        {\r
-               var oObj=getElement(getCBId(gnInsIdx));\r
+               var oObj=getElement(getPBId(gnInsIdx));\r
                if(oObj)\r
-                       oObj.innerHTML=writeLoadingDiv(nIdx);\r
+                       oObj.insertAdjacentHTML("afterEnd",writeLoadingDiv(nIdx));\r
        }\r
 }\r
 \r
 function writeLoadingDiv(nIdx)\r
 {\r
-       return"<div id=\""+gsLoadingDivID+"\" class=parent onclick=\"cancelLoading("+nIdx+");\" style=\"padding-left:4px;background-color:ivory;border-width:1;border-style:solid;border-color:black;width:150px;\">"+gsLoadingMsg+"</div>";\r
+       return"<div id=\""+gsLoadingDivID+"\" class=parent onclick=\"removeLoadingDiv();\" style=\"padding-left:4px;background-color:ivory;border-width:1;border-style:solid;border-color:black;width:150px;\">"+gsLoadingMsg+"</div>";\r
 }\r
 \r
 function getItemName(nIdx)\r
@@ -542,13 +635,14 @@ function getItemIcon(nIdx,nIconIdx)
 function TocWriteClassStyle()\r
 {\r
        var sStyle="<STYLE TYPE='text/css'>\n";\r
-       if (gsBgImage)\r
+       if(gsBgImage)\r
                sStyle+="body {border-top:"+gsBgColor+" 1px solid;}\n";\r
        else\r
                sStyle+="body {border-top:black 1px solid;}\n";\r
        sStyle+="P {"+getFontStyle(goFont)+"margin-top:"+gsMargin+";margin-bottom:"+gsMargin+";}\n";\r
        sStyle+="DIV {margin-top:"+gsMargin+";margin-bottom:"+gsMargin+";}\n";\r
        sStyle+=".parent {margin-left:0pt;}\n";\r
+       sStyle+=".stub {margin-left:0pt;display:none}\n";\r
        sStyle+=".child {display:none;margin-left:"+gsIndent+";}\n";\r
        sStyle+="A:link {"+getFontStyle(goFont)+"}\n";\r
        sStyle+="A:visited {"+getFontStyle(goFont)+"}\n";\r
@@ -586,19 +680,15 @@ function getItemsFromObj(obj)
                {\r
                        var tempNobr=getChildrenByTag(tempColl[i],"NOBR");\r
                        if(tempNobr&&tempNobr.length>0)\r
-                       {\r
                                for(var j=0;j<tempNobr.length;j++)\r
                                        anobr[anobr.length]=tempNobr[j];\r
-                       }\r
                }\r
                for(var s=0;s<anobr.length;s++)\r
                {\r
                        var tempAnchor=getChildrenByTag(anobr[s],"A");\r
                        if(tempAnchor&&tempAnchor.length>0)\r
-                       {\r
                                for(var u=0;u<tempAnchor.length;u++)\r
                                        aAnchor[aAnchor.length]=tempAnchor[u];\r
-                       }\r
                }\r
        }\r
        return aAnchor;\r
@@ -609,21 +699,15 @@ function getItemsByBook(obj)
        var aAnchor=new Array();\r
        var aTAnchor=getItemsFromObj(obj);\r
        for(var i=0;i<aTAnchor.length;i++)\r
-       {\r
                aAnchor[aAnchor.length]=aTAnchor[i];\r
-       }\r
        var tempBook=getChildrenByTag(obj,"DIV");\r
        if(tempBook&&tempBook.length>0)\r
-       {\r
                for(var j=0;j<tempBook.length;j++)\r
                {\r
                        var aTAnchorDiv=getItemsFromObj(tempBook[j]);\r
                        for(var s=0;s<aTAnchorDiv.length;s++)\r
-                       {\r
                                aAnchor[aAnchor.length]=aTAnchorDiv[s];\r
-                       }\r
                }\r
-       }       \r
        return aAnchor;\r
 }\r
 \r
@@ -635,21 +719,19 @@ function ExpandIt(nId)
 \r
 function ExpandIt2(nId,bForceOpen)\r
 {\r
-       if(gbIE4||gbNav6){\r
-               var oC=TocExpand(nId,true,bForceOpen);\r
-               var nNewScroll=document.body.scrollTop;\r
-               if(oC.style.display=="block"){\r
-                       var nTop=oC.offsetTop;\r
-                       var nBottom=nTop+oC.offsetHeight;\r
-                       if(document.body.scrollTop+document.body.clientHeight<nBottom){\r
-                               nNewScroll=nBottom-document.body.clientHeight;\r
-                       }\r
-                       if(nBottom-nTop>document.body.clientHeight){\r
-                               nNewScroll=nTop-20;\r
-                       }\r
+       var oC=TocExpand(nId,true,bForceOpen);\r
+       var nNewScroll=document.body.scrollTop;\r
+       if(oC.style.display=="block"){\r
+               var nTop=oC.offsetTop;\r
+               var nBottom=nTop+oC.offsetHeight;\r
+               if(document.body.scrollTop+document.body.clientHeight<nBottom){\r
+                       nNewScroll=nBottom-document.body.clientHeight;\r
+               }\r
+               if(nBottom-nTop>document.body.clientHeight){\r
+                       nNewScroll=nTop-20;\r
                }\r
-               document.body.scrollTop=nNewScroll;\r
        }\r
+       document.body.scrollTop=nNewScroll;\r
 }\r
 \r
 function TocExpand(nId,bChangeImg,bForceOpen)\r
@@ -682,16 +764,18 @@ function TocExpand(nId,bChangeImg,bForceOpen)
 \r
 function getChunkId(n)\r
 {\r
-       var nCandidate=-1;\r
-       for(var i=0;i<gaTocs.length;i++){\r
-               if(gaTocs[i].nMI<=n){\r
-                       nCandidate=i;\r
+       var nCan=-1;\r
+       for(var i=0;i<gaTocs.length;i++)\r
+               if(gaTocs[i].nMI<=n&&gaTocs[i].nMI!=-1)\r
+               {\r
+                       if(nCan==-1)\r
+                               nCan=i;\r
+                       else\r
+                               if(gaTocs[i].nMI>=gaTocs[nCan].nMI)\r
+                                       nCan=i;\r
                }\r
-               else\r
-                       break;\r
-       }\r
-       if(nCandidate!=-1&&gaTocs[nCandidate].nMI!=-1)\r
-               return nCandidate;\r
+       if(nCan!=-1)\r
+               return nCan;\r
        else\r
                return -1;\r
 }\r
@@ -735,6 +819,14 @@ function getItemImage(nIdx,bRemote)
        return _getFullPath(gaProj[0].sPPath,sIcon);\r
 }\r
 \r
+function getInnerText2(obj)\r
+{\r
+       var sText=getInnerText(obj);\r
+       if(sText.length>0&&!gbOpera7)\r
+               sText=sText.substring(1);\r
+       return sText;\r
+}\r
+\r
 function expandToc(oObj,sRest,aIdList)\r
 {\r
        var len=aIdList.length;\r
@@ -750,9 +842,7 @@ function expandToc(oObj,sRest,aIdList)
                var aTagAs=getItemsByBook(oObj);\r
                for(var s=0;s<aTagAs.length;s++)\r
                {\r
-                       var sText=getInnerText(aTagAs[s]);\r
-                       if(sText.length>0)\r
-                               sText=sText.substring(1);\r
+                       var sText=getInnerText2(aTagAs[s]);\r
                        if(sText==sPart)\r
                        {\r
                                aIdList[len]=aTagAs[s];\r
@@ -768,8 +858,8 @@ function expandToc(oObj,sRest,aIdList)
                var sPId=aChildren[i].id;\r
                if(!isPBId(sPId))\r
                        continue;\r
-               var sText=getInnerText(aChildren[i]);\r
-               if(sText.substring(1)!=sPart)\r
+               var sText=getInnerText2(aChildren[i]);\r
+               if(sText!=sPart)\r
                        continue;\r
                aIdList[len]=getIdByPBId(sPId);\r
                var sCId=getCBId(aIdList[len]);\r
@@ -804,37 +894,37 @@ function expandToc(oObj,sRest,aIdList)
 \r
 function getIdByPBId(sPId)\r
 {\r
-       return parseInt(sPId.substring(5,sPId.length-6));\r
+       return parseInt(sPId.substring(2,sPId.length-1));\r
 }\r
 \r
 function getIdByCBId(sCId)\r
 {\r
-       return parseInt(sCId.substring(5,sCId.length-5));\r
+       return parseInt(sCId.substring(2,sCId.length-1));\r
 }\r
 \r
 function isPBId(sId)\r
 {\r
-       return (sId&&sId.indexOf("Book_")==0&&sId.lastIndexOf("Parent")==sId.length-6);\r
+       return (sId&&sId.indexOf("B_")==0&&sId.lastIndexOf("P")==sId.length-1);\r
 }\r
 \r
 function isCBId(sId)\r
 {\r
-       return (sId&&sId.indexOf("Book_")==0&&sId.lastIndexOf("Child")==sId.length-5);\r
+       return (sId&&sId.indexOf("B_")==0&&sId.lastIndexOf("C")==sId.length-1);\r
 }\r
 \r
 function getBId(nIdx)\r
 {\r
-       return "Book_"+nIdx;\r
+       return "B_"+nIdx;\r
 }\r
 \r
 function getPBId(nIdx)\r
 {\r
-       return getBId(nIdx)+"Parent";\r
+       return getBId(nIdx)+"P";\r
 }\r
 \r
 function getCBId(nIdx)\r
 {\r
-       return getBId(nIdx)+"Child";\r
+       return getBId(nIdx)+"C";\r
 }\r
 \r
 function getClosestTocPath(aPaths)\r
@@ -853,13 +943,9 @@ function getClosestTocPath(aPaths)
                }\r
        }\r
        if(nThatIndex!=-1)\r
-       {\r
                sPath=aPaths[nThatIndex];\r
-       }\r
        else\r
-       {\r
                sPath=aPaths[0];\r
-       }\r
        return sPath;\r
 }\r
 \r
@@ -908,23 +994,22 @@ function getTocPaths(oTopicParam)
        var aRelTocPaths=oTopicParam.aPaths;\r
        var aPaths=new Array();\r
        for(var i=0;i<gaProj.length;i++)\r
-       {\r
                if(isSamePath(gaProj[i].sPPath,oTopicParam.sPPath))\r
                {\r
                        for(var j=0;j<aRelTocPaths.length;j++)\r
-                       {\r
-                               aPaths[j]=gaRoot[i].sRPath+aRelTocPaths[j];\r
-                               aPaths[j]=aPaths[j].substring(1);\r
-                       }\r
+                               for (var k=0;k<gaRoot[i].aRPath.length;k++)\r
+                               {\r
+                                       var sPath=gaRoot[i].aRPath[k]+aRelTocPaths[j];\r
+                                       aPaths[aPaths.length]=sPath.substring(1);\r
+                               }\r
                        break;\r
                }\r
-       }\r
        return aPaths;\r
 }\r
 \r
 function syncInit()\r
 {\r
-       if(gsTP)\r
+       if(gsTP&&!gbNeedFillStub)\r
        {\r
                gInSync=true;\r
                var obj=document.body;\r
@@ -936,9 +1021,7 @@ function syncInit()
                        {\r
                                if(aIdList.length)\r
                                        for(var i=0;i<aIdList.length-1;i++)\r
-                                       {\r
                                                ExpandIt2(aIdList[i],true);\r
-                                       }\r
                                gsCTPath=gsTP;\r
                                if(!gbIE55)\r
                                        aIdList[aIdList.length-1].focus();\r
@@ -964,11 +1047,12 @@ function syncInit()
 \r
 function loadToc()\r
 {\r
-       if(!gbReady)\r
+       if(!gbLoadToc)\r
        {\r
                var oResMsg=new whMessage(WH_MSG_GETPROJINFO,this,1,null);\r
                if(SendMessage(oResMsg)&&oResMsg.oParam)\r
                {\r
+                       gbLoadToc=true;\r
                        var oProj=oResMsg.oParam;\r
                        gaProj=oProj.aProj;\r
                        gbXML=oProj.bXML;\r
@@ -980,18 +1064,14 @@ function loadToc()
 function load1B1()\r
 {\r
        if(gnLT+1<gaProj.length)\r
-       {\r
                for(var i=gnLT+1;i<gaProj.length;i++)\r
-               {\r
-                       if(gaProj[i].sToc!=null&&gaProj[i].sToc!="")\r
+                       if(gaProj[i].sToc)\r
                        {\r
-                               gbLoadToc=true;\r
+                               gbToc=true;\r
                                gnLT=i;\r
                                setTimeout("loadTocInfo()",1);\r
                                return true;\r
                        }\r
-               }\r
-       }\r
        return false;\r
 }\r
 \r
@@ -1015,7 +1095,10 @@ function projReady(sRoot,aProj)
        gaRoot[gnLT].sToc=sRoot;\r
        \r
        if(gnLT==0)\r
-               gaRoot[gnLT].sRPath=gsPathSplit;\r
+       {\r
+               gaRoot[gnLT].aRPath=new Array();\r
+               gaRoot[gnLT].aRPath[0]=gsPathSplit;\r
+       }\r
 \r
        updatePTPath(gnLT,aProj);\r
 \r
@@ -1033,8 +1116,9 @@ function loadTData()
 {\r
        if(gaProj[0].sToc!="")\r
        {\r
+               gbLData=true;\r
                goChunk=addTocChunk(gaProj[0].sPPath,gaProj[0].sDPath);\r
-               gbLoadToc=false;\r
+               gbToc=false;\r
                loadData2(gaProj[0].sPPath+gaProj[0].sDPath+gaRoot[0].sToc);\r
        }\r
 }\r
@@ -1042,33 +1126,56 @@ function loadTData()
 function updatePTPath(n,aProj)\r
 {\r
        if(aProj)\r
-       {\r
                for(var i=0;i<aProj.length;i++)\r
                {\r
                        var sFullPath=_getFullPath(gaProj[n].sPPath,aProj[i].sPPath);\r
                        for(var j=0;j<gaProj.length;j++)\r
-                       {\r
                                if(isSamePath(sFullPath,gaProj[j].sPPath))\r
                                {\r
                                        if(gaRoot.length<=j||!gaRoot[j])\r
                                                gaRoot[j]=new Object();\r
-                                       if(!gaRoot[j].sRPath)\r
-                                       {\r
-                                               if(gaRoot[n].sRPath)\r
-                                                       gaRoot[j].sRPath=gaRoot[n].sRPath+aProj[i].sRPath;\r
-                                               else\r
-                                                       gaRoot[j].sRPath=aProj[i].sRPath;\r
-                                       }\r
+                                       if(!gaRoot[j].aRPath)\r
+                                               gaRoot[j].aRPath=new Array();\r
+\r
+                                       if(gaRoot[n].aRPath)\r
+                                               for(var k=0;k<gaRoot[n].aRPath.length;k++)\r
+                                               {\r
+                                                       var bDup=false;\r
+                                                       var sTFPath=gaRoot[n].aRPath[k]+aProj[i].sRPath;\r
+                                                       for(var l=0;l<gaRoot[j].aRPath.length;l++)\r
+                                                               if(gaRoot[j].aRPath[l]==sTFPath)\r
+                                                               {\r
+                                                                       bDup=true;\r
+                                                                       break;\r
+                                                               }\r
+                                                       if(!bDup)\r
+                                                               gaRoot[j].aRPath[gaRoot[j].aRPath.length]=sTFPath;\r
+                                               }\r
+                                       else\r
+                                               gaRoot[j].aRPath[gaRoot[j].aRPath.length]=aProj[i].sRPath;\r
                                        break;\r
                                }\r
-                       }\r
                }\r
+}\r
+\r
+function onLoadXMLError()\r
+{\r
+       if(gbToc)\r
+       {\r
+               var sRoot="";\r
+               var aRProj=new Array();\r
+               projReady(sRoot,aRProj);\r
+       }\r
+       else\r
+       {\r
+               var aToc=new Array();\r
+               putData(aToc)\r
        }\r
 }\r
 \r
 function putDataXML(xmlDoc,sDocPath)\r
 {\r
-       if(gbLoadToc)\r
+       if(gbToc)\r
        {\r
                var tocNode=xmlDoc.getElementsByTagName("toc")[0];\r
                if(tocNode)\r
@@ -1081,8 +1188,25 @@ function putDataXML(xmlDoc,sDocPath)
                                for(var i=0;i<rmtProject.length;i++)\r
                                {\r
                                        aRProj[i]=new Object();\r
-                                       aRProj[i].sPPath=rmtProject[i].getAttribute("url");\r
-                                       aRProj[i].sRPath=rmtProject[i].getAttribute("path");\r
+                                       var sURL=rmtProject[i].getAttribute("url");\r
+                                       if(sURL)\r
+                                       {\r
+                                               if(sURL.lastIndexOf("/")!=sURL.length-1)\r
+                                                       sURL+="/";                                              \r
+                                       }\r
+                                       aRProj[i].sPPath=sURL;\r
+                                       aRProj[i].sRPath = "";\r
+                                       var oSubPath = rmtProject[i].getElementsByTagName("subpath")[0];\r
+                                       if (oSubPath)\r
+                                       {\r
+                                               while (oSubPath)\r
+                                               {\r
+                                                       aRProj[i].sRPath += oSubPath.getAttribute("name") + "\n";\r
+                                                       oSubPath = oSubPath.getElementsByTagName("subpath")[0];\r
+                                               }\r
+                                       }\r
+                                       else\r
+                                               aRProj[i].sRPath=rmtProject[i].getAttribute("path");\r
                                }\r
                        }\r
                        projReady(sRoot,aRProj);\r
@@ -1123,6 +1247,7 @@ function processBook(node,aToc)
                                if(sIcons)\r
                                        item.sIconRef=sIcons;\r
                                if(sURL==null) sURL="";\r
+\r
                                item.sItemURL=sURL;\r
                                \r
                                if(oChild.nodeName=="book")\r
@@ -1147,6 +1272,11 @@ function processBook(node,aToc)
                                }\r
                                else if(oChild.nodeName=="project")\r
                                {\r
+                                       if(sRef)\r
+                                       {\r
+                                               if(sRef.lastIndexOf("/")!=sRef.length-1)\r
+                                                       sRef+="/";                                              \r
+                                       }\r
                                        item.nType=4;\r
                                        item.sRefURL=sRef;\r
                                        item.nContents=0;\r
@@ -1175,6 +1305,7 @@ function putData(aTocs)
 \r
 function realPutData()\r
 {\r
+       removeLoadingDiv();\r
        var aTocs=gaTocsNs61Fix;\r
        if(!aTocs) return;\r
        if(goChunk)\r
@@ -1185,10 +1316,10 @@ function realPutData()
                gnMinIdx+=aTocs.length;\r
                if(gnInsIdx!=-1)\r
                {\r
-                       var oObj=getElement(getCBId(gnInsIdx));\r
+                       var oObj=getElement(getPBId(gnInsIdx));\r
                        if(oObj)\r
                        {\r
-                               oObj.innerHTML=writeBookItems(n-1,aTocs.length);\r
+                               oObj.insertAdjacentHTML("afterEnd",writeBookItems(n-1,aTocs.length));\r
                                setTimeout("syncInit()",1);\r
                        }\r
                }\r
@@ -1199,11 +1330,13 @@ function realPutData()
                        var oMsg=new whMessage(WH_MSG_GETTOCPATHS,this,1,oParam);\r
                        if(SendMessage(oMsg))\r
                        {\r
-                               if (oMsg.oParam.oTocInfo)\r
+                               if(oMsg.oParam.oTocInfo)\r
                                        syncWithPaths(oMsg.oParam.oTocInfo);\r
                        }\r
                }       \r
        }\r
+       gbLData=false;\r
+       checkFillStub();\r
 }\r
 \r
 function syncWithPaths(oTopicParam)\r
@@ -1354,7 +1487,7 @@ function onSendMessage(oMsg)
        return true;\r
 }\r
 \r
-if (window.gbWhUtil&&window.gbWhVer&&window.gbWhMsg&&window.gbWhProxy)\r
+if(window.gbWhUtil&&window.gbWhVer&&window.gbWhMsg&&window.gbWhProxy)\r
 {\r
        RegisterListener2(this,WH_MSG_PROJECTREADY);\r
        RegisterListener2(this,WH_MSG_SYNCTOC);\r
@@ -1368,5 +1501,4 @@ if (window.gbWhUtil&&window.gbWhVer&&window.gbWhMsg&&window.gbWhProxy)
        gbWhTHost=true;\r
 }\r
 else\r
-       document.location.reload();\r
-\r
+       document.location.reload();
\ No newline at end of file
index 3adaa251e1eded56d4fc3ff9a3c3573ea8e7e1d3..8a53281c8cce69d80b14260e59fb7c28f91fe30c 100755 (executable)
-var gsPPath = "";\r
-var gaPaths = new Array();\r
-var gaAvenues = new Array();\r
-\r
-var goFrame = null;\r
-var gsStartPage = "";\r
-var gsRelCurPagePath = "";\r
-var gsSearchFormHref  = "";\r
-var gnTopicOnly = -1;\r
-var gnOutmostTopic = -1;\r
+//     WebHelp 5.10.005\r
+var gsPPath="";\r
+var gaPaths=new Array();\r
+var gaAvenues=new Array();\r
+\r
+var goFrame=null;\r
+var gsStartPage="";\r
+var gsRelCurPagePath="";\r
+var gsSearchFormHref="";\r
+var gnTopicOnly=-1;\r
+var gnOutmostTopic=-1;\r
 \r
 var BTN_TEXT=1;\r
 var BTN_IMG=2;\r
 \r
-var goSync = null;\r
+var goSync=null;\r
 \r
-var goShow = null;\r
-var goHide = null;\r
+var goShow=null;\r
+var goHide=null;\r
 \r
-var goPrev = null;\r
-var goNext = null;\r
-var gnForm = 0;\r
-var goShowNav = null;\r
-var goHideNav = null;\r
+var goPrev=null;\r
+var goNext=null;\r
+var gnForm=0;\r
+var goShowNav=null;\r
+var goHideNav=null;\r
 \r
-var goWebSearch = null;\r
+var goWebSearch=null;\r
 \r
-var gsBtnStyle = "";\r
-var gaButtons = new Array();\r
-var gaTypes = new Array();\r
-var whtopic_foldUnload = null;\r
+var gsBtnStyle="";\r
+var gaButtons=new Array();\r
+var gaTypes=new Array();\r
+var whtopic_foldUnload=null;\r
 var gbWhTopic=false;\r
 var gbCheckSync=false;\r
 var gbSyncEnabled=false;\r
 \r
-function setButtonFont(sType, sFontName,sFontSize,sFontColor,sFontStyle,sFontWeight,sFontDecoration)\r
+function setButtonFont(sType,sFontName,sFontSize,sFontColor,sFontStyle,sFontWeight,sFontDecoration)\r
 {\r
        var vFont=new whFont(sFontName,sFontSize,sFontColor,sFontStyle,sFontWeight,sFontDecoration);\r
-       gsBtnStyle += ".whtbtn" + sType + "{"+getFontStyle(vFont) + "}";\r
+       gsBtnStyle+=".whtbtn"+sType+"{"+getFontStyle(vFont)+"}";\r
 }\r
 \r
 function writeBtnStyle()\r
 {\r
-       if (gaButtons.length > 0)\r
+       if(gaButtons.length>0)\r
        {\r
-               if (gsBtnStyle.length > 0)\r
+               if(gsBtnStyle.length>0)\r
                {\r
-                       var sStyle = "<style type='text/css'>";\r
-                       sStyle+= gsBtnStyle + "</style>";\r
+                       var sStyle="<style type='text/css'>";\r
+                       sStyle+=gsBtnStyle+"</style>";\r
                        document.write(sStyle);\r
                }\r
        }\r
 }\r
 \r
-function button(sText, nWidth, nHeight)\r
+function button(sText,nWidth,nHeight)\r
 {\r
-       this.sText = sText;\r
-       this.nWidth = nWidth;\r
-       this.nHeight = nHeight;\r
+       this.sText=sText;\r
+       this.nWidth=nWidth;\r
+       this.nHeight=nHeight;\r
        \r
-       this.aImgs = new Array();\r
-       var i = 0;\r
-       while (button.arguments.length > i + 3)\r
+       this.aImgs=new Array();\r
+       var i=0;\r
+       while(button.arguments.length>i+3)\r
        {\r
-               this.aImgs[i] = button.arguments[3 + i];\r
-               i ++;\r
+               this.aImgs[i]=button.arguments[3+i];\r
+               i++;\r
        }\r
 }\r
 \r
-// project info\r
+//project info\r
 function setRelStartPage(sPath)\r
 {\r
-       if (gsPPath.length == 0)\r
+       if(gsPPath.length==0)\r
        {\r
-               gsPPath = _getFullPath(_getPath(document.location.href),  _getPath(sPath));\r
-               gsStartPage = _getFullPath(_getPath(document.location.href), sPath);\r
-               gsRelCurPagePath = _getRelativeFileName(gsStartPage, document.location.href);\r
+               gsPPath=_getFullPath(_getPath(document.location.href),_getPath(sPath));\r
+               gsStartPage=_getFullPath(_getPath(document.location.href),sPath);\r
+               gsRelCurPagePath=_getRelativeFileName(gsStartPage,document.location.href);\r
        }\r
 }\r
 \r
-function getImage(oImage, sType)\r
+function getImage(oImage,sType)\r
 {\r
        var sImg="";\r
-       if (oImage && oImage.aImgs && (oImage.aImgs.length > 0))\r
+       if(oImage&&oImage.aImgs&&(oImage.aImgs.length>0))\r
        {\r
-               sImg+="<img alt=\""+ sType + "\" src=\"" + oImage.aImgs[0] + "\"";\r
-               if (oImage.nWidth > 0)\r
-                       sImg+=" width=" + oImage.nWidth;\r
-               if (oImage.nHeight > 0)\r
-                       sImg+=" height=" + oImage.nHeight;\r
-               sImg+=" border=no>";\r
+               sImg+="<img alt=\""+sType+"\" src=\""+oImage.aImgs[0]+"\"";\r
+               if(oImage.nWidth>0)\r
+                       sImg+=" width="+oImage.nWidth;\r
+               if(oImage.nHeight>0)\r
+                       sImg+=" height="+oImage.nHeight;\r
+               sImg+=" border=0>";\r
        }\r
        return sImg;\r
 }\r
 \r
 function addTocInfo(sTocPath)\r
 {\r
-       gaPaths[gaPaths.length] = sTocPath;\r
+       gaPaths[gaPaths.length]=sTocPath;\r
 }\r
 \r
-function addAvenueInfo(sName, sPrev, sNext)\r
+function addAvenueInfo(sName,sPrev,sNext)\r
 {\r
-       gaAvenues[gaAvenues.length] = new avenueInfo(sName, sPrev, sNext);      \r
+       gaAvenues[gaAvenues.length]=new avenueInfo(sName,sPrev,sNext);  \r
 }\r
 \r
-function addButton(sType, nStyle, sText, sHref, sOnClick, sOnMouseOver, sOnLoad, nWidth, nHeight, sImg1, sImg2, sImg3)\r
+function addButton(sType,nStyle,sText,sHref,sOnClick,sOnMouseOver,sOnLoad,nWidth,nHeight,sImg1,sImg2,sImg3)\r
 {\r
-       var sButton = "";\r
+       var sButton="";\r
        var nBtn=gaButtons.length;\r
-       if (sType == "prev")\r
+       if(sType=="prev")\r
        {\r
-               if (canGo(false))\r
+               if(canGo(false))\r
                {\r
-                       var sTitle = "Previous Topic";\r
-                       goPrev = new button(sText, nWidth, nHeight, sImg1, sImg2, sImg3);\r
-                       sButton = "<a title=\"" + sTitle + "\" class=\"whtbtnprev\" href=\"javascript:void(0);\" onclick=\"goAvenue(false);return false;\">";\r
-                       if (nStyle == BTN_TEXT)\r
-                               sButton += goPrev.sText;\r
+                       var sTitle="Previous Topic";\r
+                       goPrev=new button(sText,nWidth,nHeight,sImg1,sImg2,sImg3);\r
+                       sButton="<a title=\""+sTitle+"\" class=\"whtbtnprev\" href=\"javascript:void(0);\" onclick=\"goAvenue(false);return false;\">";\r
+                       if(nStyle==BTN_TEXT)\r
+                               sButton+=goPrev.sText;\r
                        else\r
-                               sButton += getImage(goPrev, sTitle);\r
-                       sButton += "</a>";\r
+                               sButton+=getImage(goPrev,sTitle);\r
+                       sButton+="</a>";\r
                }\r
        }\r
-       else if (sType == "next")\r
+       else if(sType=="next")\r
        {\r
-               if (canGo(true))\r
+               if(canGo(true))\r
                {\r
-                       var sTitle = "Next Topic";\r
-                       goNext = new button(sText, nWidth, nHeight, sImg1, sImg2, sImg3);\r
-                       sButton = "<a title=\"" + sTitle + "\" class=\"whtbtnnext\" href=\"javascript:void(0);\" onclick=\"goAvenue(true);return false;\">";\r
-                       if (nStyle == BTN_TEXT)\r
-                               sButton += goNext.sText;\r
+                       var sTitle="Next Topic";\r
+                       goNext=new button(sText,nWidth,nHeight,sImg1,sImg2,sImg3);\r
+                       sButton="<a title=\""+sTitle+"\" class=\"whtbtnnext\" href=\"javascript:void(0);\" onclick=\"goAvenue(true);return false;\">";\r
+                       if(nStyle==BTN_TEXT)\r
+                               sButton+=goNext.sText;\r
                        else\r
-                               sButton += getImage(goNext, sTitle);\r
-                       sButton += "</a>";\r
+                               sButton+=getImage(goNext,sTitle);\r
+                       sButton+="</a>";\r
                }\r
        }\r
-       else if (sType == "show")\r
+       else if(sType=="show")\r
        {\r
-               if (isTopicOnly())\r
+               if(isTopicOnly()&&(!gbOpera6||gbOpera7))\r
                {\r
-                       var sTitle = "Show Navigation Component";\r
-                       goShow = new button(sText, nWidth, nHeight, sImg1, sImg2, sImg3);\r
-                       sButton = "<a title=\"" + sTitle + "\" class=\"whtbtnshow\" href=\"javascript:void(0);\" onclick=\"show();return false;\">";\r
-                       if (nStyle == BTN_TEXT)\r
-                               sButton += goShow.sText;\r
+                       var sTitle="Show Navigation Component";\r
+                       goShow=new button(sText,nWidth,nHeight,sImg1,sImg2,sImg3);\r
+                       sButton="<a title=\""+sTitle+"\" class=\"whtbtnshow\" href=\"javascript:void(0);\" onclick=\"show();return false;\">";\r
+                       if(nStyle==BTN_TEXT)\r
+                               sButton+=goShow.sText;\r
                        else\r
-                               sButton += getImage(goShow, sTitle);\r
-                       sButton += "</a>";\r
+                               sButton+=getImage(goShow,sTitle);\r
+                       sButton+="</a>";\r
                }\r
        }\r
-       else if (sType == "hide")\r
+       else if(sType=="hide")\r
        {\r
-               if (!isTopicOnly())\r
+               if(!isTopicOnly()&&!gbOpera6)\r
                {\r
-                       var sTitle = "Hide Navigation Component";\r
-                       goHide = new button(sText, nWidth, nHeight, sImg1, sImg2, sImg3);\r
-                       sButton = "<a title=\"" + sTitle + "\" class=\"whtbtnhide\" href=\"javascript:void(0);\" onclick=\"hide();return false;\">";\r
-                       if (nStyle == BTN_TEXT)\r
-                               sButton += goHide.sText;\r
+                       var sTitle="Hide Navigation Component";\r
+                       goHide=new button(sText,nWidth,nHeight,sImg1,sImg2,sImg3);\r
+                       sButton="<a title=\""+sTitle+"\" class=\"whtbtnhide\" href=\"javascript:void(0);\" onclick=\"hide();return false;\">";\r
+                       if(nStyle==BTN_TEXT)\r
+                               sButton+=goHide.sText;\r
                        else\r
-                               sButton += getImage(goHide, sTitle);\r
-                       sButton += "</a>";\r
+                               sButton+=getImage(goHide,sTitle);\r
+                       sButton+="</a>";\r
                }\r
        }\r
-       else if (sType == "shownav")\r
+       else if(sType=="shownav")\r
        {\r
-               \r
-               if (isShowHideEnable())\r
+               if(isShowHideEnable())\r
                {\r
-                       var sTitle = "Show Navigation Component";\r
-                       goShowNav = new button(sText, nWidth, nHeight, sImg1, sImg2, sImg3);\r
-                       sButton = "<a title=\"" + sTitle + "\" class=\"whtbtnshownav\" href=\"javascript:void(0);\" onclick=\"showHidePane(true);return false;\">";\r
-                       if (nStyle == BTN_TEXT)\r
-                               sButton += goShowNav.sText;\r
+                       var sTitle="Show Navigation Component";\r
+                       goShowNav=new button(sText,nWidth,nHeight,sImg1,sImg2,sImg3);\r
+                       sButton="<a title=\""+sTitle+"\" class=\"whtbtnshownav\" href=\"javascript:void(0);\" onclick=\"showHidePane(true);return false;\">";\r
+                       if(nStyle==BTN_TEXT)\r
+                               sButton+=goShowNav.sText;\r
                        else\r
-                               sButton += getImage(goShowNav, sTitle);\r
-                       sButton += "</a>";\r
+                               sButton+=getImage(goShowNav,sTitle);\r
+                       sButton+="</a>";\r
                }\r
        }\r
-       else if (sType == "hidenav")\r
+       else if(sType=="hidenav")\r
        {\r
-               if (isShowHideEnable())\r
+               if(isShowHideEnable())\r
                {\r
-                       var sTitle = "Hide Navigation Component";\r
-                       goHideNav = new button(sText, nWidth, nHeight, sImg1, sImg2, sImg3);\r
-                       sButton = "<a title=\"" + sTitle + "\" class=\"whtbtnhidenav\" href=\"javascript:void(0);\" onclick=\"showHidePane(false);return false;\">";\r
-                       if (nStyle == BTN_TEXT)\r
-                               sButton += goHideNav.sText;\r
+                       var sTitle="Hide Navigation Component";\r
+                       goHideNav=new button(sText,nWidth,nHeight,sImg1,sImg2,sImg3);\r
+                       sButton="<a title=\""+sTitle+"\" class=\"whtbtnhidenav\" href=\"javascript:void(0);\" onclick=\"showHidePane(false);return false;\">";\r
+                       if(nStyle==BTN_TEXT)\r
+                               sButton+=goHideNav.sText;\r
                        else\r
-                               sButton += getImage(goHideNav, sTitle);\r
-                       sButton += "</a>";\r
+                               sButton+=getImage(goHideNav,sTitle);\r
+                       sButton+="</a>";\r
                }\r
        }\r
-       else if (sType == "synctoc")\r
+       else if(sType=="synctoc")\r
        {\r
-               if (gaPaths.length > 0)\r
+               if(gaPaths.length>0)\r
                {\r
-                       var sTitle = "Sync TOC";\r
-                       goSync = new button(sText, nWidth, nHeight, sImg1, sImg2, sImg3);\r
-                       sButton = "<a title=\""+ sTitle + "\" class=\"whtbtnsynctoc\" href=\"javascript:void(0);\" onclick=\"syncWithShow();return false;\">";\r
-                       if (nStyle == BTN_TEXT)\r
-                               sButton += goSync.sText;\r
+                       var sTitle="Sync TOC";\r
+                       goSync=new button(sText,nWidth,nHeight,sImg1,sImg2,sImg3);\r
+                       sButton="<a title=\""+sTitle+"\" class=\"whtbtnsynctoc\" href=\"javascript:void(0);\" onclick=\"syncWithShow();return false;\">";\r
+                       if(nStyle==BTN_TEXT)\r
+                               sButton+=goSync.sText;\r
                        else\r
-                               sButton += getImage(goSync, sTitle);\r
-                       sButton += "</a>";\r
+                               sButton+=getImage(goSync,sTitle);\r
+                       sButton+="</a>";\r
                }\r
        }\r
-       else if (sType == "websearch")\r
+       else if(sType=="websearch")\r
        {\r
-               if (gsSearchFormHref.length > 0)\r
+               if(gsSearchFormHref.length>0)\r
                {\r
-                       var sTitle = "WebSearch";\r
-                       goWebSearch = new button(sText, nWidth, nHeight, sImg1, sImg2, sImg3);\r
-                       sButton = "<a title=\""+ sTitle + "\" class=\"whtbtnwebsearch\" href=\"" + gsSearchFormHref + "\">";\r
-                       if (nStyle == BTN_TEXT)\r
-                               sButton += goWebSearch.sText;\r
+                       var sTitle="WebSearch";\r
+                       goWebSearch=new button(sText,nWidth,nHeight,sImg1,sImg2,sImg3);\r
+                       sButton="<a title=\""+sTitle+"\" class=\"whtbtnwebsearch\" href=\""+gsSearchFormHref+"\">";\r
+                       if(nStyle==BTN_TEXT)\r
+                               sButton+=goWebSearch.sText;\r
                        else\r
-                               sButton += getImage(goWebSearch, sTitle);\r
-                       sButton += "</a>";\r
+                               sButton+=getImage(goWebSearch,sTitle);\r
+                       sButton+="</a>";\r
                }\r
        }\r
-       else if (sType == "searchform")\r
+       else if(sType=="searchform")\r
        {\r
-               gaButtons[nBtn] = "NeedSearchForm";\r
-               gaTypes[nBtn] = sType;\r
+               gaButtons[nBtn]="NeedSearchForm";\r
+               gaTypes[nBtn]=sType;\r
        }\r
-       if (sButton.length != 0)\r
+       if(sButton.length!=0)\r
        {\r
-               if (nStyle == BTN_TEXT)\r
-                       sButton += "&nbsp;";\r
-               gaButtons[nBtn] = "<td>" + sButton + "</td>";\r
-               gaTypes[nBtn] = sType;\r
+               if(nStyle==BTN_TEXT)\r
+                       sButton+="&nbsp;";\r
+               gaButtons[nBtn]="<td>"+sButton+"</td>";\r
+               gaTypes[nBtn]=sType;\r
        }\r
 }\r
 \r
 function isSyncEnabled()\r
 {\r
-       if (!gbCheckSync)\r
+       if(!gbCheckSync)\r
        {\r
                var oMsg=new whMessage(WH_MSG_ISSYNCSSUPPORT,this,1,null);\r
                if(SendMessage(oMsg))\r
@@ -250,30 +250,30 @@ function isSyncEnabled()
 \r
 function isInPopup()\r
 {\r
-       return (window.name.indexOf("BSSCPopup") != -1);\r
+       return (window.name.indexOf("BSSCPopup")!=-1);\r
 }\r
 \r
 function getIntopicBar(sAlign)\r
 {\r
-       var sHTML = "";\r
-       if (gaButtons.length > 0)\r
+       var sHTML="";\r
+       if(gaButtons.length>0)\r
        {\r
-               sHTML += "<div align="+ sAlign + ">";\r
+               sHTML+="<div align="+sAlign+">";\r
 \r
-               sHTML += "<table cellpadding=\"2\" cellspacing=\"0\" border=\"0\"><tr>";\r
-               for (var i = 0; i < gaButtons.length; i++)\r
+               sHTML+="<table cellpadding=\"2\" cellspacing=\"0\" border=\"0\"><tr>";\r
+               for(var i=0;i<gaButtons.length;i++)\r
                {\r
-                       if (gaTypes[i]!="synctoc" || isSyncEnabled())\r
+                       if(gaTypes[i]!="synctoc"||isSyncEnabled())\r
                        {\r
-                               if (gaButtons[i] == "NeedSearchForm")\r
-                                       sHTML += getSearchFormHTML();\r
+                               if(gaButtons[i]=="NeedSearchForm")\r
+                                       sHTML+=getSearchFormHTML();\r
                                else\r
-                                       sHTML += gaButtons[i];\r
+                                       sHTML+=gaButtons[i];\r
                        }\r
                }\r
-               sHTML += "</tr></table>";\r
+               sHTML+="</tr></table>";\r
 \r
-               sHTML += "</div>";\r
+               sHTML+="</div>";\r
        }\r
        return sHTML;\r
 }\r
@@ -281,20 +281,20 @@ function getIntopicBar(sAlign)
 \r
 function writeIntopicBar(nAligns)\r
 {\r
-       if (isInPopup()) return;\r
-       if (gaButtons.length > 0)\r
+       if(isInPopup()) return;\r
+       if(gaButtons.length>0)\r
        {\r
-               var sHTML = "";\r
-               if (nAligns != 0)\r
+               var sHTML="";\r
+               if(nAligns!=0)\r
                {\r
-                       sHTML += "<table width=100%><tr>"\r
-                       if (nAligns & 1)\r
-                               sHTML += "<td width=33%>" + getIntopicBar("left") + "</td>";\r
-                       if (nAligns & 2)\r
-                               sHTML += "<td width=34%>" + getIntopicBar("center") + "</td>";\r
-                       if (nAligns & 4)\r
-                               sHTML += "<td width=33%>" + getIntopicBar("right") + "</td>";\r
-                       sHTML += "</tr></table>";\r
+                       sHTML+="<table width=100%><tr>"\r
+                       if(nAligns&1)\r
+                               sHTML+="<td width=33%>"+getIntopicBar("left")+"</td>";\r
+                       if(nAligns&2)\r
+                               sHTML+="<td width=34%>"+getIntopicBar("center")+"</td>";\r
+                       if(nAligns&4)\r
+                               sHTML+="<td width=33%>"+getIntopicBar("right")+"</td>";\r
+                       sHTML+="</tr></table>";\r
                        document.write(sHTML);\r
                }\r
        }\r
@@ -302,45 +302,45 @@ function writeIntopicBar(nAligns)
 \r
 function sendAveInfoOut()\r
 {\r
-       if (!isInPopup())\r
-               setTimeout("sendAveInfo();", 100);\r
+       if(!isInPopup())\r
+               setTimeout("sendAveInfo();",100);\r
 }\r
 \r
 function sendAveInfo()\r
 {\r
-       var oMsg = new whMessage(WH_MSG_AVENUEINFO, this, 1, gaAvenues);\r
+       var oMsg=new whMessage(WH_MSG_AVENUEINFO,this,1,gaAvenues);\r
        SendMessage(oMsg);\r
 }\r
 \r
 \r
 function onNext()\r
 {\r
-       var oMsg = new whMessage(WH_MSG_NEXT, this, 1, null);\r
+       var oMsg=new whMessage(WH_MSG_NEXT,this,1,null);\r
        SendMessage(oMsg);\r
 }\r
 \r
 function onPrev()\r
 {\r
-       var oMsg = new whMessage(WH_MSG_PREV, this, 1, null);\r
+       var oMsg=new whMessage(WH_MSG_PREV,this,1,null);\r
        SendMessage(oMsg);\r
 }\r
 \r
 function createSyncInfo()\r
 {\r
-       var oParam = new Object();\r
-       if (gsPPath.length == 0)\r
-               gsPPath = _getPath(document.location.href);\r
-       oParam.sPPath = gsPPath;\r
-       oParam.sTPath = document.location.href;\r
-       oParam.aPaths = gaPaths;\r
+       var oParam=new Object();\r
+       if(gsPPath.length==0)\r
+               gsPPath=_getPath(document.location.href);\r
+       oParam.sPPath=gsPPath;\r
+       oParam.sTPath=document.location.href;\r
+       oParam.aPaths=gaPaths;\r
        return oParam;\r
 }\r
 \r
 function syncWithShow()\r
 {\r
-       if (isTopicOnly())\r
+       if(isTopicOnly())\r
                show();\r
-       else \r
+       else\r
        {\r
                sync();\r
                showTocPane();\r
@@ -349,86 +349,86 @@ function syncWithShow()
 \r
 function showTocPane()\r
 {\r
-       var oMsg = new whMessage(WH_MSG_SHOWTOC, this, 1, null);\r
+       var oMsg=new whMessage(WH_MSG_SHOWTOC,this,1,null);\r
        SendMessage(oMsg);\r
 }\r
 \r
 function sendSyncInfo()\r
 {\r
-       if (!isInPopup())\r
+       if(!isInPopup())\r
        {\r
-               var oParam = null;\r
-               if (gaPaths.length > 0)\r
+               var oParam=null;\r
+               if(gaPaths.length>0)\r
                {\r
-                       oParam = createSyncInfo();\r
+                       oParam=createSyncInfo();\r
                }\r
-               var oMsg = new whMessage(WH_MSG_SYNCINFO, this, 1, oParam);\r
+               var oMsg=new whMessage(WH_MSG_SYNCINFO,this,1,oParam);\r
                SendMessage(oMsg);\r
        }\r
 }\r
 \r
 function sendInvalidSyncInfo()\r
 {\r
-       if (!isInPopup())\r
+       if(!isInPopup())\r
        {\r
-               var oMsg = new whMessage(WH_MSG_SYNCINFO, this, 1, null);\r
+               var oMsg=new whMessage(WH_MSG_SYNCINFO,this,1,null);\r
                SendMessage(oMsg);\r
        }\r
 }\r
 \r
 function enableWebSearch(bEnable)\r
 {\r
-       if (!isInPopup())\r
+       if(!isInPopup())\r
        {\r
-               var oMsg = new whMessage(WH_MSG_ENABLEWEBSEARCH, this, 1, bEnable);\r
+               var oMsg=new whMessage(WH_MSG_ENABLEWEBSEARCH,this,1,bEnable);\r
                SendMessage(oMsg);\r
        }\r
 }\r
 \r
 function autoSync(nSync)\r
 {\r
-       if (nSync == 0) return;\r
-       if (isInPopup()) return;\r
-       if (isOutMostTopic())\r
+       if(nSync==0) return;\r
+       if(isInPopup()) return;\r
+       if(isOutMostTopic())\r
                sync();\r
 }\r
 \r
 function isOutMostTopic()\r
 {\r
-       if (gnOutmostTopic == -1)\r
+       if(gnOutmostTopic==-1)\r
        {\r
-               var oMessage = new whMessage(WH_MSG_ISINFRAMESET, this, 1 , null);\r
-               if (SendMessage(oMessage))\r
-                       gnOutmostTopic = 0;\r
+               var oMessage=new whMessage(WH_MSG_ISINFRAMESET,this,1,null);\r
+               if(SendMessage(oMessage))\r
+                       gnOutmostTopic=0;\r
                else\r
-                       gnOutmostTopic = 1;\r
+                       gnOutmostTopic=1;\r
        }\r
-       return (gnOutmostTopic == 1);\r
+       return (gnOutmostTopic==1);\r
 }\r
 \r
 function sync()\r
 {\r
-       if (gaPaths.length > 0)\r
+       if(gaPaths.length>0)\r
        {\r
-               var oParam = createSyncInfo();\r
-               var oMessage = new whMessage(WH_MSG_SYNCTOC, this, 1, oParam);\r
+               var oParam=createSyncInfo();\r
+               var oMessage=new whMessage(WH_MSG_SYNCTOC,this,1,oParam);\r
                SendMessage(oMessage);\r
        }\r
 }\r
 \r
 \r
-function avenueInfo(sName, sPrev, sNext)\r
+function avenueInfo(sName,sPrev,sNext)\r
 {\r
-       this.sName = sName;\r
-       this.sPrev = sPrev;\r
-       this.sNext = sNext;\r
+       this.sName=sName;\r
+       this.sPrev=sPrev;\r
+       this.sNext=sNext;\r
 }\r
 \r
 function getCurrentAvenue()\r
 {\r
-       var oParam = new Object();\r
-       oParam.sAvenue = null;\r
-       var oMessage = new whMessage(WH_MSG_GETCURRENTAVENUE, this, 1, oParam);\r
+       var oParam=new Object();\r
+       oParam.sAvenue=null;\r
+       var oMessage=new whMessage(WH_MSG_GETCURRENTAVENUE,this,1,oParam);\r
        SendMessage(oMessage);\r
        return oParam.sAvenue;\r
 }\r
@@ -437,37 +437,37 @@ function unRegisterListener()
 {\r
        sendInvalidSyncInfo();\r
        enableWebSearch(false);\r
-       if (whtopic_foldUnload)\r
+       if(whtopic_foldUnload)\r
                whtopic_foldUnload();\r
 }\r
 \r
 function onSendMessage(oMsg)\r
 {\r
-       var nMsgId = oMsg.nMessageId;\r
-       if (nMsgId == WH_MSG_GETAVIAVENUES)\r
+       var nMsgId=oMsg.nMessageId;\r
+       if(nMsgId==WH_MSG_GETAVIAVENUES)\r
        {\r
-               oMsg.oParam.aAvenues = gaAvenues;\r
+               oMsg.oParam.aAvenues=gaAvenues;\r
                return false;\r
        }\r
-       else if (nMsgId == WH_MSG_GETTOCPATHS)\r
+       else if(nMsgId==WH_MSG_GETTOCPATHS)\r
        {\r
-               if (isOutMostTopic())\r
+               if(isOutMostTopic())\r
                {\r
-                       oMsg.oParam.oTocInfo = createSyncInfo();\r
+                       oMsg.oParam.oTocInfo=createSyncInfo();\r
                        return false;           \r
                }\r
                else\r
                        return true;\r
        }\r
-       else if (nMsgId == WH_MSG_NEXT)\r
+       else if(nMsgId==WH_MSG_NEXT)\r
        {\r
                goAvenue(true);\r
        }\r
-       else if (nMsgId == WH_MSG_PREV)\r
+       else if(nMsgId==WH_MSG_PREV)\r
        {\r
                goAvenue(false);\r
        }\r
-       else if (nMsgId == WH_MSG_WEBSEARCH)\r
+       else if(nMsgId==WH_MSG_WEBSEARCH)\r
        {\r
                websearch();\r
        }\r
@@ -476,60 +476,60 @@ function onSendMessage(oMsg)
 \r
 function goAvenue(bNext)\r
 {\r
-       var sTopic = null;\r
-       var sAvenue = getCurrentAvenue();\r
-       var nAvenue = -1;\r
-       if (sAvenue != null && sAvenue != "")\r
+       var sTopic=null;\r
+       var sAvenue=getCurrentAvenue();\r
+       var nAvenue=-1;\r
+       if(sAvenue!=null&&sAvenue!="")\r
        {\r
-               for (var i = 0; i < gaAvenues.length ; i ++)\r
+               for(var i=0;i<gaAvenues.length;i++)\r
                {\r
-                       if (gaAvenues[i].sName == sAvenue)\r
+                       if(gaAvenues[i].sName==sAvenue)\r
                        {\r
-                               nAvenue = i;\r
+                               nAvenue=i;\r
                                break;\r
                        }\r
                }\r
-               if (nAvenue != -1)\r
+               if(nAvenue!=-1)\r
                {\r
-                       if (bNext)\r
-                               sTopic = gaAvenues[nAvenue].sNext;\r
+                       if(bNext)\r
+                               sTopic=gaAvenues[nAvenue].sNext;\r
                        else\r
-                               sTopic = gaAvenues[nAvenue].sPrev;\r
+                               sTopic=gaAvenues[nAvenue].sPrev;\r
                }\r
        }\r
        else\r
-       { \r
-               for (var i = 0; i < gaAvenues.length ; i ++)\r
+       {\r
+               for(var i=0;i<gaAvenues.length;i++)\r
                {\r
-                       if (gaAvenues[i].sNext != null && gaAvenues[i].sNext.length > 0 && bNext)\r
+                       if(gaAvenues[i].sNext!=null&&gaAvenues[i].sNext.length>0&&bNext)\r
                        {\r
-                               sTopic = gaAvenues[i].sNext;\r
+                               sTopic=gaAvenues[i].sNext;\r
                                break;\r
                        }\r
-                       else if (gaAvenues[i].sPrev != null && gaAvenues[i].sPrev.length > 0 && !bNext)\r
+                       else if(gaAvenues[i].sPrev!=null&&gaAvenues[i].sPrev.length>0&&!bNext)\r
                        {\r
-                               sTopic = gaAvenues[i].sPrev;\r
+                               sTopic=gaAvenues[i].sPrev;\r
                                break;\r
                        }\r
                }\r
        }\r
        \r
-       if (sTopic != null && sTopic != "")\r
+       if(sTopic!=null&&sTopic!="")\r
        {\r
-               if (gsPPath != null && gsPPath != "")\r
+               if(gsPPath!=null&&gsPPath!="")\r
                {\r
-                       sFullTopicPath = _getFullPath(gsPPath, sTopic);\r
-                       document.location = sFullTopicPath;\r
+                       sFullTopicPath=_getFullPath(gsPPath,sTopic);\r
+                       document.location=sFullTopicPath;\r
                }\r
        }\r
 }\r
 \r
 function canGo(bNext)\r
 {\r
-       for (var i = 0; i < gaAvenues.length ; i ++)\r
+       for(var i=0;i<gaAvenues.length;i++)\r
        {\r
-               if ((gaAvenues[i].sNext != null && gaAvenues[i].sNext.length > 0 && bNext) ||\r
-                       (gaAvenues[i].sPrev != null && gaAvenues[i].sPrev.length > 0 && !bNext))\r
+               if((gaAvenues[i].sNext!=null&&gaAvenues[i].sNext.length>0&&bNext)||\r
+                       (gaAvenues[i].sPrev!=null&&gaAvenues[i].sPrev.length>0&&!bNext))\r
                        return true;\r
        }\r
        return false;\r
@@ -537,34 +537,34 @@ function canGo(bNext)
 \r
 function show()\r
 {\r
-       if (gsStartPage != "")\r
-               window.location =  gsStartPage + "#" + gsRelCurPagePath;\r
+       if(gsStartPage!="")\r
+               window.location=gsStartPage+"#"+gsRelCurPagePath;\r
 }\r
 \r
 function hide()\r
 {\r
-       if (goFrame != null)\r
+       if(goFrame!=null)\r
        {\r
-               goFrame.location = window.location;\r
+               goFrame.location=window.location;\r
        }\r
 }\r
 \r
 function isTopicOnly()\r
 {\r
-       if (gnTopicOnly == -1)\r
+       if(gnTopicOnly==-1)\r
        {\r
-               var oParam = new Object();\r
-               oParam.oFrame = null;\r
-               var oMsg = new whMessage(WH_MSG_GETSTARTFRAME, this, 1, oParam);\r
-               if (SendMessage(oMsg))\r
+               var oParam=new Object();\r
+               oParam.oFrame=null;\r
+               var oMsg=new whMessage(WH_MSG_GETSTARTFRAME,this,1,oParam);\r
+               if(SendMessage(oMsg))\r
                {\r
-                       goFrame = oParam.oFrame;\r
-                       gnTopicOnly = 0;\r
+                       goFrame=oParam.oFrame;\r
+                       gnTopicOnly=0;\r
                }\r
                else\r
-                       gnTopicOnly = 1;\r
+                       gnTopicOnly=1;\r
        }\r
-       if (gnTopicOnly == 1)\r
+       if(gnTopicOnly==1)\r
                return true;\r
        else\r
                return false;\r
@@ -572,88 +572,150 @@ function isTopicOnly()
 \r
 function websearch()\r
 {\r
-       if (gbNav4)\r
+       if(gbNav4)\r
        {\r
-               if (document.ehelpform)\r
+               if(document.ehelpform)\r
                        document.ehelpform.submit();\r
        }\r
        else\r
        {\r
-               if (window.ehelpform)\r
+               if(window.ehelpform)\r
                        window.ehelpform.submit();\r
        }\r
 }\r
 \r
 function addSearchFormHref(sHref)\r
 {\r
-       gsSearchFormHref = sHref;\r
+       gsSearchFormHref=sHref;\r
        enableWebSearch(true);\r
 }\r
 \r
 function searchB(nForm)\r
 {\r
-       var sValue = eval("document.searchForm" + nForm + ".searchString.value");\r
-       var oMsg = new whMessage(WH_MSG_SEARCHTHIS, this, 1, sValue);\r
+       var sValue=eval("document.searchForm"+nForm+".searchString.value");\r
+       var oMsg=new whMessage(WH_MSG_SEARCHTHIS,this,1,sValue);\r
        SendMessage(oMsg);\r
 }\r
 \r
 function getSearchFormHTML()\r
 {\r
-       var sHTML = "";\r
-       gnForm ++;\r
-       var sFormName = "searchForm" + gnForm;\r
-       var sButton = "<form name=\"" + sFormName + "\" method=\"POST\" action=\"javascript:searchB("+ gnForm + ")\">"\r
-       sButton += "<input type=\"text\" name=\"searchString\" value=\"- Full Text search -\" size=\"20\"/>";\r
-       if ("" == "text")\r
+       var sHTML="";\r
+       gnForm++;\r
+       var sFormName="searchForm"+gnForm;\r
+       var sButton="<form name=\""+sFormName+"\" method=\"POST\" action=\"javascript:searchB("+gnForm+")\">"\r
+       sButton+="<input type=\"text\" name=\"searchString\" value=\"- Full Text search -\" size=\"20\"/>";\r
+       if(""=="text")\r
        {\r
-               sButton+="<a class=\"searchbtn\" href=\"javascript:void(0);\" onclick=\"" + sFormName + ".submit(); return false;\"></a>";\r
+               sButton+="<a class=\"searchbtn\" href=\"javascript:void(0);\" onclick=\""+sFormName+".submit();return false;\"></a>";\r
        }\r
-       else if ("" == "image")\r
+       else if(""=="image")\r
        {\r
-               sButton+="<a class=\"searchbtn\" href=\"javascript:void(0);\" onclick=\"" + sFormName + ".submit(); return false;\">"\r
+               sButton+="<a class=\"searchbtn\" href=\"javascript:void(0);\" onclick=\""+sFormName+".submit();return false;\">"\r
                sButton+="<img src=\"\" border=0></a>";\r
        }\r
-       sButton += "</form>";\r
-       sHTML ="<td align=\"center\">" + sButton + "</td>";\r
+       sButton+="</form>";\r
+       sHTML="<td align=\"center\">"+sButton+"</td>";\r
        return sHTML;\r
 }\r
 \r
 function showHidePane(bShow)\r
 {\r
        var oMsg=null;\r
-       if (bShow)\r
-               oMsg=new whMessage(WH_MSG_SHOWPANE, this, 1, null);\r
+       if(bShow)\r
+               oMsg=new whMessage(WH_MSG_SHOWPANE,this,1,null);\r
        else\r
-               oMsg=new whMessage(WH_MSG_HIDEPANE, this, 1, null);\r
+               oMsg=new whMessage(WH_MSG_HIDEPANE,this,1,null);\r
        SendMessage(oMsg);\r
 }\r
 \r
 function isShowHideEnable()\r
 {\r
-       if (gbIE4)\r
+       if(gbIE4)\r
                return true;\r
        else\r
                return false;\r
 }\r
 \r
+\r
+function PickupDialog_Invoke()\r
+{\r
+       if(!gbIE4||gbMac)\r
+       {\r
+               if(typeof(_PopupMenu_Invoke)=="function")\r
+                       return _PopupMenu_Invoke(PickupDialog_Invoke.arguments);\r
+       }\r
+       else\r
+       {\r
+               if(PickupDialog_Invoke.arguments.length>2)\r
+               {\r
+                       var sPickup="whskin_pickup.htm";\r
+                       var sPickupPath=gsPPath+sPickup;\r
+                       if(gbIE4)\r
+                       {\r
+                               var sFrame=PickupDialog_Invoke.arguments[1];\r
+                               var aTopics=new Array();\r
+                               for(var i=2;i<PickupDialog_Invoke.arguments.length;i+=2)\r
+                               {\r
+                                       var j=aTopics.length;\r
+                                       aTopics[j]=new Object();\r
+                                       aTopics[j].m_sName=PickupDialog_Invoke.arguments[i];\r
+                                       aTopics[j].m_sURL=PickupDialog_Invoke.arguments[i+1];\r
+                               }\r
+\r
+                               if(aTopics.length>1)\r
+                               {\r
+                                       var nWidth=300;\r
+                                       var nHeight=180;\r
+                                       var     nScreenWidth=screen.width;\r
+                                       var     nScreenHeight=screen.height;\r
+                                       var nLeft=(nScreenWidth-nWidth)/2;\r
+                                       var nTop=(nScreenHeight-nHeight)/2;\r
+                                       if(gbIE4)\r
+                                       {\r
+                                               var vRet=window.showModalDialog(sPickupPath,aTopics,"dialogHeight:"+nHeight+"px;dialogWidth:"+nWidth+"px;resizable:yes;status:no;scroll:no;help:no;center:yes;");\r
+                                               if(vRet)\r
+                                               {\r
+                                                       var sURL=vRet.m_url;\r
+                                                       if(sFrame)\r
+                                                               window.open(sURL,sFrame);\r
+                                                       else\r
+                                                               window.open(sURL,"_self");\r
+                                               }\r
+                                       }\r
+                               }\r
+                               else if(aTopics.length==1)\r
+                               {\r
+                                       var sURL=aTopics[0].m_sURL\r
+                                       if(sFrame)\r
+                                               window.open(sURL,sFrame);\r
+                                       else\r
+                                               window.open(sURL,"_self");\r
+                               }\r
+                       }\r
+               }\r
+       }\r
+}\r
+\r
 if(window.gbWhUtil&&window.gbWhMsg&&window.gbWhVer&&window.gbWhProxy)\r
 {\r
-       RegisterListener("bsscright", WH_MSG_GETAVIAVENUES);\r
-       RegisterListener("bsscright", WH_MSG_GETTOCPATHS);\r
-       RegisterListener("bsscright", WH_MSG_NEXT);\r
-       RegisterListener("bsscright", WH_MSG_PREV);\r
-       RegisterListener("bsscright", WH_MSG_WEBSEARCH);\r
-       if (gbMac && gbIE4)\r
+       RegisterListener("bsscright",WH_MSG_GETAVIAVENUES);\r
+       RegisterListener("bsscright",WH_MSG_GETTOCPATHS);\r
+       RegisterListener("bsscright",WH_MSG_NEXT);\r
+       RegisterListener("bsscright",WH_MSG_PREV);\r
+       RegisterListener("bsscright",WH_MSG_WEBSEARCH);\r
+       if(gbMac&&gbIE4)\r
        {\r
-               if (typeof(window.onunload) != "unknown")\r
-                       whtopic_foldUnload = window.onunload;\r
+               if(typeof(window.onunload)!="unknown")\r
+                       if(window.onunload.toString!=unRegisterListener.toString)\r
+                               whtopic_foldUnload=window.onunload;\r
        }\r
        else\r
        {\r
-               if (window.onunload)\r
-                       whtopic_foldUnload = window.onunload;\r
+               if(window.onunload)\r
+                       if(window.onunload.toString!=unRegisterListener.toString)\r
+                               whtopic_foldUnload=window.onunload;\r
        }\r
-       window.onunload = unRegisterListener;\r
+       window.onunload=unRegisterListener;\r
        setButtonFont("show","","10pt","","","","");\r
 \r
        gbWhTopic=true;\r
index 7fa6c28a860ebf9337dc1482b58e39af4ee6313b..85fae7e05b81c3ae6071ef877ba6715b66a1c82a 100755 (executable)
@@ -1,19 +1,26 @@
+//     WebHelp 5.10.004\r
 var gsFileName="";\r
+var gsDivName="";\r
 var xmlDoc=null;\r
 var sdocPath=null;\r
 var gsInsertBeforeEndHTML="";\r
 var sReplaceStringsSrc=new Array();\r
+var gsDivName="dataDiv";\r
+var gnLoadDivNum=0;\r
 sReplaceStringsSrc[0]="&amp;";\r
 sReplaceStringsSrc[1]="&gt;";\r
 sReplaceStringsSrc[2]="&lt;";\r
 sReplaceStringsSrc[3]="&quot;";\r
-sReplaceStringsSrc[4]="&nbsp;";\r
+sReplaceStringsSrc[4]=String.fromCharCode(8364);\r
+sReplaceStringsSrc[5]="&nbsp;";\r
+\r
 var sReplaceStringsDst=new Array();\r
 sReplaceStringsDst[0]="&";\r
 sReplaceStringsDst[1]=">";\r
 sReplaceStringsDst[2]="<";\r
 sReplaceStringsDst[3]="\"";\r
-sReplaceStringsDst[4]=" ";\r
+sReplaceStringsDst[4]=String.fromCharCode(128);\r
+sReplaceStringsDst[5]=" ";\r
 var goHighLighted=null;\r
 \r
 function _getRelativePath(strParentPath,strCurrentPath)\r
@@ -45,7 +52,7 @@ function _getRelativePath(strParentPath,strCurrentPath)
        return strCurrentPath;\r
 }\r
 \r
-function _getRelativeFileName(strParentPath, strCurrentPath)\r
+function _getRelativeFileName(strParentPath,strCurrentPath)\r
 {\r
        strParentPath=_replaceSlash(strParentPath);\r
        strParentPath=_getPath(strParentPath);\r
@@ -108,7 +115,7 @@ function _getFullPath(sPath,sRelPath)
                        {\r
                                sRelPath=sRelPath.substring(nPathPos+3);\r
                                sFullPath=sFullPath.substring(0,sFullPath.length-1);\r
-                               var nPos2 = sFullPath.lastIndexOf("/");\r
+                               var nPos2=sFullPath.lastIndexOf("/");\r
                                if(nPos2!=-1)\r
                                        sFullPath=sFullPath.substring(0,nPos2+1);\r
                                else\r
@@ -123,7 +130,7 @@ function _getFullPath(sPath,sRelPath)
 function _isAbsPath(strPath)\r
 {\r
        var strUpper=strPath.toUpperCase();\r
-       return (strUpper.indexOf(":")!=-1);\r
+       return (strUpper.indexOf(":")!=-1||strUpper.indexOf("\\\\")==0);\r
 }\r
 \r
 function _replaceSlash(strURL)\r
@@ -166,21 +173,29 @@ function insertItemIntoArray(oArray,i,obj)
 \r
 function loadData(sFileName)\r
 {\r
-       if(!getElement("dataDiv"))\r
+       var i=gnLoadDivNum;\r
+       var sName=gsDivName+gnLoadDivNum++;\r
+       loadData_2(sFileName,sName);\r
+}\r
+\r
+function loadData_2(sFileName,sDivName)\r
+{\r
+       if(!getElement(sDivName))\r
        {\r
-               if(!insertDataDiv())\r
+               if(!insertDataDiv(sDivName))\r
                {\r
                        gsFileName=sFileName;\r
+                       gsDivName=sDivName;\r
                        return;\r
                }\r
        }\r
        var sHTML="";\r
        if(gbMac)\r
-               sHTML+="<iframe src="+sFileName+"></iframe>";\r
+               sHTML+="<iframe src=\""+sFileName+"\"></iframe>";\r
        else\r
-               sHTML+="<iframe style=\"visibility:hidden;width:0;height:0\" src="+sFileName+"></iframe>";\r
+               sHTML+="<iframe style=\"visibility:hidden;width:0;height:0\" src=\""+sFileName+"\"></iframe>";\r
        \r
-       var oDivCon=getElement("dataDiv");\r
+       var oDivCon=getElement(sDivName);\r
        if(oDivCon)\r
        {\r
                if(gbNav6)\r
@@ -231,21 +246,21 @@ function checkState()
                if(state==4)\r
                {\r
                        var err=xmlDoc.parseError;\r
-                       if(err.errorCode!=0)\r
-                               alert(err.reason);\r
-                       else\r
+                       if(err.errorCode==0)\r
                                putDataXML(xmlDoc,sdocPath);\r
+                       else\r
+                               onLoadXMLError();\r
                }\r
        }\r
 }\r
 \r
-function insertDataDiv()\r
+function insertDataDiv(sName)\r
 {\r
        var sHTML="";\r
        if(gbMac)\r
-               sHTML+="<div id=dataDiv style=\"display:none;\"></div>";\r
+               sHTML+="<div id="+sName+" style=\"display:none;\"></div>";\r
        else\r
-               sHTML+="<div id=dataDiv style=\"visibility:hidden\"></div>";\r
+               sHTML+="<div id="+sName+" style=\"visibility:hidden\"></div>";\r
        if((gbIE5||gbNav6)&&document.body)\r
                document.body.insertAdjacentHTML("beforeEnd",sHTML);\r
        else\r
@@ -264,7 +279,7 @@ function insertWhenBodyReady()
        {\r
                document.body.insertAdjacentHTML("beforeEnd",gsInsertBeforeEndHTML);\r
                gsInsertBeforeEndHTML="";\r
-               loadData(gsFileName);\r
+               loadData_2(gsFileName,gsDivName);\r
        }\r
        else\r
        {\r
@@ -274,9 +289,12 @@ function insertWhenBodyReady()
 \r
 function window_BUnload()\r
 {\r
-       var oDivCon=getElement("dataDiv");\r
-       if(oDivCon)\r
-               oDivCon.innerHTML="";\r
+       for(var i=0;i<gnLoadDivNum;i++)\r
+       {\r
+               var oDivCon=getElement(gsDivName+i);\r
+               if(oDivCon)\r
+                       oDivCon.innerHTML="";\r
+       }\r
 }\r
 \r
 function removeThis(obj)\r
@@ -410,7 +428,8 @@ function HighLightElement(obj,sHighLightColor,sNormalColor)
        if(obj!=null)\r
        {\r
                resetHighLight(sNormalColor);\r
-               obj.style.backgroundColor=sHighLightColor;\r
+               if (obj.style)\r
+                       obj.style.backgroundColor=sHighLightColor;\r
                goHighLighted=obj;\r
        }\r
 }\r
@@ -419,7 +438,8 @@ function resetHighLight(sNormalColor)
 {\r
        if(goHighLighted!=null)\r
        {\r
-               goHighLighted.style.backgroundColor=sNormalColor;\r
+               if (goHighLighted.style)\r
+                       goHighLighted.style.backgroundColor=sNormalColor;\r
                goHighLighted=null;\r
        }\r
 }\r
@@ -460,4 +480,48 @@ function getFontStyle(oFont)
        return sStyle;\r
 }\r
 \r
+function _browserStringToText(sBStr)\r
+{\r
+       var sText="";\r
+       // change %xxx back to the real char.\r
+       var nPos=sBStr.indexOf('%');\r
+       while(nPos!=-1)\r
+       {\r
+               sText+=sBStr.substring(0,nPos);\r
+               sBStr=sBStr.substring(nPos+1);\r
+               var sNum="";\r
+               var i=0;\r
+               while(sBStr.charAt(i)>='0'&&sBStr.charAt(i)<='9')\r
+               {\r
+                       sNum+=sBStr.charAt(i++);        \r
+               }\r
+               if(sNum!=""){\r
+                       var nNum=parseInt(sNum,16);\r
+                       sText+=String.fromCharCode(nNum);\r
+                       sBStr=sBStr.substring(i);\r
+               }\r
+               nPos=sBStr.indexOf('%');\r
+       }\r
+       sText+=sBStr;\r
+       return sText;\r
+}\r
+\r
+function excapeSingleQuotandSlash(str)\r
+{\r
+       if(str==null) return null;\r
+       var nPos=0;\r
+       var sRes="";\r
+       var nPosNew=str.indexOf("\\",nPos);\r
+       while(nPosNew!=-1){\r
+               sRes+=str.substring(nPos,nPosNew+1)+"\\";\r
+               nPos=nPosNew+1;\r
+               nPosNew=str.indexOf("\\",nPos);\r
+       }\r
+       if(nPos<str.length)\r
+               sRes+=str.substring(nPos);\r
+       var re=new RegExp("'","g");\r
+       sRes=sRes.replace(re,"\\'");\r
+       return sRes;\r
+}\r
+\r
 var gbWhUtil=true;
\ No newline at end of file
index 50a8e405281546cba166079d244ec4c0022cc436..ff597631d2f9012fd7ccbe355118ba1bd39f6644 100755 (executable)
+//     WebHelp 5.10.006\r
+var gbNav=false;\r
 var gbNav6=false;\r
 var gbNav61=false;\r
+var gbNav7=false;\r
 var gbNav4=false;\r
 var gbIE4=false;\r
 var gbIE=false;\r
 var gbIE5=false;\r
 var gbIE55=false;\r
+var gbOpera6=false;\r
+var gbOpera7=false;\r
+var gbKonqueror3=false;\r
 \r
 var gAgent=navigator.userAgent.toLowerCase();\r
 var gbMac=(gAgent.indexOf("mac")!=-1);\r
 var gbSunOS=(gAgent.indexOf("sunos")!=-1);\r
 var gbOpera=(gAgent.indexOf("opera")!=-1);\r
+var gbKonqueror=(gAgent.indexOf("konqueror")!= -1);\r
+var gbSafari=(gAgent.indexOf("safari")!= -1);\r
+var gbWindows=((gAgent.indexOf('win')!= -1)||(gAgent.indexOf('16bit')!= -1));\r
+var gbMozilla=((gAgent.indexOf('gecko')!=-1) && (gAgent.indexOf('netscape')==-1));\r
+\r
 \r
 var gVersion=navigator.appVersion.toLowerCase();\r
 \r
 var gnVerMajor=parseInt(gVersion);\r
 var gnVerMinor=parseFloat(gVersion);\r
 \r
-gbIE=(navigator.appName.indexOf("Microsoft")!=-1);\r
-if(gnVerMajor>=4)\r
+if(!gbOpera&&!gbKonqueror&&!gbSafari) // opera can mimic IE or Netscape by settings.\r
 {\r
-       if(navigator.appName=="Netscape")\r
+       gbIE=(navigator.appName.indexOf("Microsoft")!=-1);\r
+       gbNav=(gAgent.indexOf('mozilla')!=-1) && ((gAgent.indexOf('spoofer')==-1) && (gAgent.indexOf('compatible')==-1));\r
+       if(gnVerMajor>=4)\r
        {\r
-               gbNav4=true;\r
-               if(gnVerMajor>=5)\r
-                       gbNav6=true;\r
+               if(navigator.appName=="Netscape")\r
+               {\r
+                       gbNav4=true;\r
+                       if(gnVerMajor>=5)\r
+                               gbNav6=true;\r
+               }\r
+               gbIE4=(navigator.appName.indexOf("Microsoft")!=-1);\r
+       }\r
+       if(gbNav6)\r
+       {\r
+               var nPos=gAgent.indexOf("gecko");\r
+               if(nPos!=-1)\r
+               {\r
+                       var nPos2=gAgent.indexOf("/", nPos);\r
+                       if(nPos2!=-1)\r
+                       {\r
+                               var nVersion=parseFloat(gAgent.substring(nPos2+1));\r
+                               if(nVersion>=20010726)\r
+                               {\r
+                                       gbNav61=true;\r
+                                       if (nVersion>=20020823)\r
+                                               gbNav7=true;\r
+                               }\r
+                       }\r
+               }\r
+       }else if(gbIE4)\r
+       {\r
+               var nPos=gAgent.indexOf("msie");\r
+               if(nPos!=-1)\r
+               {\r
+                       var nVersion=parseFloat(gAgent.substring(nPos+5));\r
+                       if(nVersion>=5)\r
+                       {\r
+                               gbIE5=true;\r
+                               if(nVersion>=5.5)\r
+                                       gbIE55=true;\r
+                       }\r
+               }\r
        }\r
-       gbIE4=(navigator.appName.indexOf("Microsoft")!=-1);\r
 }\r
-if(gbNav6)\r
+else if (gbOpera)\r
 {\r
-       document.gnPageWidth=innerWidth;\r
-       document.gnPageHeight=innerHeight;\r
-       var nPos=gAgent.indexOf("netscape");\r
+       var nPos = gAgent.indexOf("opera");\r
        if(nPos!=-1)\r
        {\r
-               var nVersion=parseFloat(gAgent.substring(nPos+10));\r
-               if(nVersion>=6.1)\r
-                       gbNav61=true;\r
+               var nVersion=parseFloat(gAgent.substring(nPos+6));\r
+               if(nVersion>=6)\r
+               {\r
+                       gbOpera6=true;\r
+                       if(nVersion>=7)\r
+                               gbOpera7=true;\r
+               }\r
        }\r
-}else if(gbIE4)\r
+}\r
+else if (gbKonqueror)\r
 {\r
-       var nPos=gAgent.indexOf("msie");\r
+       var nPos = gAgent.indexOf("konqueror");\r
        if(nPos!=-1)\r
        {\r
-               var nVersion=parseFloat(gAgent.substring(nPos+5));\r
-               if(nVersion>=5)\r
-                       gbIE5=true;\r
-               if(nVersion>=5.5)\r
-                       gbIE55=true;\r
+               var nVersion = parseFloat(gAgent.substring(nPos+10));\r
+               if (nVersion >= 3)\r
+               {\r
+                       gbKonqueror3=true;\r
+               }\r
        }\r
 }\r
 \r
index 29f6496ce04435e5d8c759733de45263c162595e..64247b6b5979965fa42ae31fe26495a5f5358d04 100755 (executable)
@@ -60,7 +60,6 @@ INPUT                  = ../../../share/salome/idl/SALOME_ModuleCatalog.idl \
                          ../../../share/salome/idl/SALOMEDS.idl \
                          ../../../share/salome/idl/SALOME_Exception.idl \
                          ../../../share/salome/idl/SALOMEDS_Attributes.idl \
-                         ../../../share/salome/idl/SALOME_Session.idl \
                          ../../../share/salome/idl/SALOME_Component.idl \
                          ../../../share/salome/src/LifeCycleCORBA/SALOME_LifeCycleCORBA.hxx \
                          ../../../share/salome/src/NamingService/SALOME_NamingService.hxx \
index 40542236a397809ec23585c5484278f36033d79e..9ac8e2c24f383c6282bac9712ec55adb5ef0831d 100644 (file)
@@ -18,7 +18,6 @@ IDL_FILES = \
   SALOME_RessourcesCatalog.idl \
   SALOMEDS.idl \
   SALOMEDS_Attributes.idl \
-  SALOME_Session.idl \
   SALOME_Component.idl \
   SALOME_ContainerManager.idl \
   SALOME_TestComponent.idl \
index 15e6511642f67b5d8504422b921208160f70e544..7c0844a317ad6575350b7a30a44a6fbe0601b41b 100644 (file)
@@ -36,6 +36,7 @@
 #define _SALOMEDS_IDL_
 
 #include "SALOME_Exception.idl"
+#include "SALOME_GenericObj.idl"
 
 /*!
      This package contains the interfaces used for creation, managment
@@ -98,7 +99,6 @@ during each working session.
   interface AttributeStudyProperties;
   interface UseCaseIterator;
   interface UseCaseBuilder;
-  interface Callback;
 
 /*! List of attributes of %SObjects
 */
@@ -367,6 +367,17 @@ during each working session.
     void RemovePostponed(in long theUndoLimit);
 
     void UndoPostponed(in long theWay);
+
+    boolean DumpStudy(in string thePath, in string theBaseName, in boolean isPublished);
+
+/*!
+    Private method, returns an implementation of this Study.
+   \param theHostname is a hostname of the caller
+   \param thePID is a process ID of the caller
+   \param isLocal is set True if the Study is launched locally with the caller
+*/
+    long GetLocalImpl(in string theHostname, in long thePID, out boolean isLocal);
+
   };
 
   //==========================================================================
@@ -403,6 +414,7 @@ during each working session.
     Defines the instance to the %SComponent.
 */
     void       DefineComponentInstance (in SComponent aComponent,in Object ComponentIOR) raises(LockProtection);
+        
 /*! \brief Deletion of a %SComponent
 
   Removes a %SComponent.
@@ -605,22 +617,6 @@ Searches for a definite %SObject with a definite GUID and returns True if it fin
 
 */
     boolean GetAvailableRedos();
-/*!
-    This method is called when adding an object into study.
-    It sets the callback for addition of the given %SObject.
-    \param theCallback New assigned callback.
-    \return The previous callback.
-*/
-    Callback SetOnAddSObject(in Callback theCallback);
-/*!
-    This method is called when adding an object into study.
-    It sets the callback for removal of the given %SObject.
-
-    \return The previous callback.
-    \param theCallback New assigned callback.
-*/
-    Callback SetOnRemoveSObject(in Callback theCallback);
-
 /*!
     Puts name attribute with the given string value to the given %SObject
 
@@ -778,6 +774,29 @@ Gets the list of open studies
     an object into a study, which is protected for modifications.
 */
     SObject Paste(in SObject theObject) raises (SALOMEDS::StudyBuilder::LockProtection);
+
+/*! \brief Object conversion.
+
+    Converts an object into IOR.
+    \return    IOR
+*/
+    string ConvertObjectToIOR(in Object theObject);
+/*! \brief Object conversion.
+           
+    Converts IOR into an object.
+    \return    An object
+*/
+    Object ConvertIORToObject(in string theIOR); 
+
+/*!
+    Private method, returns an implementation of this StudyManager.
+   \param theHostname is a hostname of the caller
+   \param thePID is a process ID of the caller
+   \param isLocal is set True if the StudyManager is launched locally with the caller
+*/
+    long GetLocalImpl(in string theHostname, in long thePID, out boolean isLocal); 
+
+
   };
 
 
@@ -795,7 +814,7 @@ Gets the list of open studies
 */
   //==========================================================================
 
-  interface SObject
+  interface SObject : SALOME::GenericObj
   {
 /*! Name of the %SObject
 */
@@ -885,6 +904,14 @@ Gets the list of open studies
     Returns empty string if there is no IOR attribute.
 */
     string GetIOR();
+
+/*!
+    Private method, returns an implementation of this SObject.
+   \param theHostname is a hostname of the caller
+   \param thePID is a process ID of the caller
+   \param isLocal is set True if the SObject is launched locally with the caller
+*/
+    long GetLocalImpl(in string theHostname, in long thePID, out boolean isLocal);
   };
 
 
@@ -894,7 +921,7 @@ Gets the list of open studies
    %Generic attribute is a base interface for all attributes which can be assigned to the SObjects created in the study.
 */
   //==========================================================================
-  interface GenericAttribute
+  interface GenericAttribute : SALOME::GenericObj
   {
 /*! \brief Exception locking all changes
 
@@ -909,13 +936,19 @@ Gets the list of open studies
 */
     void CheckLocked() raises (LockProtection);
 
-    string Store();
-
-    void Restore(in string theData);
-
     string Type();
 
+    string GetClassType();     
+       
     SObject GetSObject();
+
+/*!
+    Private method, returns an implementation of this GenericAttribute.
+   \param theHostname is a hostname of the caller
+   \param thePID is a process ID of the caller
+   \param isLocal is set True if the GenericAttribute is launched locally with the caller
+*/
+    long GetLocalImpl(in string theHostname, in long thePID, out boolean isLocal);
   };
 
 
@@ -951,7 +984,7 @@ Gets the list of open studies
   The search is started from the first %SComponent in the list.
 */
   //==========================================================================
-  interface SComponentIterator
+  interface SComponentIterator : SALOME::GenericObj
   {
 /*!
 Activates the %SComponentIterator.
@@ -982,7 +1015,7 @@ Moves the iterator to the next %SComponent in the list.
     levels.
 */
   //==========================================================================
-  interface ChildIterator
+  interface ChildIterator : SALOME::GenericObj
   {
 /*!
 
@@ -1017,7 +1050,7 @@ Activates the %ChildIterator for all child levels.
 
    This interface contains a set of methods used for iteration over the objects in the use case.
 */
-  interface UseCaseIterator
+  interface UseCaseIterator : SALOME::GenericObj
   {
 /*!
 Activates the %UseCaseIterator.
@@ -1046,7 +1079,7 @@ Activates the %UseCaseIterator.
    Use case in the study represents a user-managed subtree, containing all or some of the objects which exist in the study.
    The %UseCaseBuilder interface contains a set of methods used for management of the use case in the study.
 */
-  interface UseCaseBuilder
+  interface UseCaseBuilder : SALOME::GenericObj
   {
 /*!
    Adds to the use case an object as a child of the current object of the use case.
@@ -1108,25 +1141,6 @@ Activates the %UseCaseIterator.
     UseCaseIterator GetUseCaseIterator(in SObject theObject);
   };
   //==========================================================================
-  //==========================================================================
-/*! \brief The callback interface
-
-  The %StudyBuilder can be created with the method <VAR>NewBuilder</VAR>. While invocation of this method a new object of the class <VAR>Callback</VAR> is created
-  and this object is assigned to the newly created Builder as callback which should be called when adding and removing of the ojects.
-*/
-  interface Callback
-  {
-/*!
-     Invokes the corresponding method <VAR>Append</VAR> of the %UseCaseBuilder.
-*/
-     void OnAddSObject(in SObject theObject);
-/*!
-     Invokes the corresponding method <VAR>Remove</VAR> of the %UseCaseBuilder.
-*/
-     void OnRemoveSObject(in SObject theObject);
-  };
-
-  //==========================================================================
 /*! \brief %Driver interface
 
 This class represents a common tool for all components integrated into SALOME application, that allows them to communicate with the study. It contains a set of methods which
index a01eca1a6ae5a5b622a61a17538e96d4dfac72ca..e1736c61619486d58d3f534a10568c4e8ef91fdc 100644 (file)
@@ -1,3 +1,6 @@
+#ifndef _SALOME_COMM_IDL_
+#define _SALOME_COMM_IDL_
+
 #include "SALOME_Exception.idl"
 
 module SALOME {
@@ -20,33 +23,40 @@ module SALOME {
 
   interface Sender {
     TypeOfDataTransmitted getTypeOfDataTransmitted();
-    Sender buildOtherWithProtocol(in TypeOfCommunication type);
     void release();
   };
 
+  interface SenderDouble : Sender {
+    SenderDouble buildOtherWithProtocol(in TypeOfCommunication type);
+  };
+
+  interface SenderInt : Sender {
+    SenderInt buildOtherWithProtocol(in TypeOfCommunication type);
+  };
+
   //No compulsory copy between double and CORBA::Double
-  interface CorbaDoubleNCSender : Sender {
+  interface CorbaDoubleNCSender : SenderDouble {
     unsigned long getSize();
     vectorOfDouble sendPart(in unsigned long n1,in unsigned long n2);
     vectorOfDouble send();
   };
 
   //Compulsory copy between double and CORBA::Double
-  interface CorbaDoubleCSender : Sender {
+  interface CorbaDoubleCSender : SenderDouble {
     unsigned long getSize();
     //unsigned long getSize2();
     vectorOfDouble sendPart(in unsigned long n1,in unsigned long n2);
   };
 
   //No compulsory copy between int and CORBA::Long
-  interface CorbaLongNCSender : Sender {
+  interface CorbaLongNCSender : SenderInt {
     unsigned long getSize();
     vectorOfLong sendPart(in unsigned long n1,in unsigned long n2);
     vectorOfLong send();
   };
 
   //Compulsory copy between int and CORBA::Long
-  interface CorbaLongCSender : Sender {
+  interface CorbaLongCSender : SenderInt {
     unsigned long getSize();
     vectorOfLong sendPart(in unsigned long n1,in unsigned long n2);
   };
@@ -63,6 +73,12 @@ module SALOME {
     void close(in param p);
   };
 
+  interface MPISenderDouble : SenderDouble,MPISender {
+  };
+
+  interface MPISenderInt : SenderInt,MPISender {
+  };
+
   interface SocketSender : Sender {
     typedef struct Parameter {
       unsigned long lstart;
@@ -78,4 +94,11 @@ module SALOME {
     void send();
   };
 
+  interface SocketSenderDouble : SenderDouble,SocketSender {
+  };
+
+  interface SocketSenderInt : SenderInt,SocketSender {
+  };
 };
+
+#endif
index f60922c42005cc289f2c19b486e948863700cfdc..bb099003072a5c28eb438849ff5ce6d883718a3e 100644 (file)
 //
 //  File   : SALOME_Component.idl
 //  Author : Paul RASCLE, EDF
-//  $Header: /dn05/salome/CVS/SALOME_ROOT/idl/SALOME_Component.idl
+//  $Header: 
 
 #ifndef _SALOME_COMPONENT_IDL_
 #define _SALOME_COMPONENT_IDL_
 /*!  
-
-This is a package of interfaces used for connecting new components to %SALOME application. It also contains a set of interfaces used
-for management of %MED component in %SALOME application.
+This is a package of interfaces used for connecting new components to %SALOME
+application. It also contains a set of interfaces used for management of %MED
+component in %SALOME application.
 */
 module Engines
 {
-/*!
+  /*! 
+    A byte stream which is used for binary data transfer between different
+    components
+  */
+  typedef sequence<octet> TMPFile;  
+  
+  /*!
     General Key Value Structure to set or get properties, for component
-*/
+  */
   struct KeyValuePair
   {
     string key;
@@ -45,135 +51,234 @@ module Engines
 
   interface Component ;
 
-/*! \brief Interface of the %Container
+  /*! \brief Interface of the %Container
+  This interface defines the process of loading and registration
+  of new components in %SALOME application
+  */
 
-   This interface defines the process of loading and registration
-    of new components in %SALOME application
-*/
   interface Container
   {
 
-/*!
-    Loads into the container a new component, registers it and starts it's CORBA servant.
-    \param nameToRegister     Name of the component which will be registered in Registry (or Name Service)
-    \param componentName     Name of the constructed library of the %component
-    \return a loaded component
-*/
-    Component load_impl(in string nameToRegister, in string componentName);
+    /*!
+      Loads a new component class (dynamic library).
+      \param componentName like COMPONENT, (Python or C++ implementation)
+                           try to make a Python import of COMPONENT,
+                           then a lib open of libCOMPONENTEngine.so
+      \return true if load successfull or already done, false otherwise
+    */
+    boolean load_component_Library(in string componentName);
 
-/*!
-    Loads into the container a new component, registers it and starts it's CORBA servant.
-    \param nameToRegister    Name used to register in Naming Service, the component instance 
-    \param componentName     Name of the %component
-    \return a new instance of the component or the registered component if already registered or Nil if not possible
-*/
-    Component instance(in string nameToRegister, in string componentName);
+    /*!
+      Creates a new servant instance of a component.
+      Component library must be loaded.
+      \param componentName Name of the component which will be registered
+                           in Registry and Name Service,
+                         (instance number suffix added to the registered name)
+      \param studyId        0 if instance is not associated to a study, 
+                            >0 otherwise (== study id)
+      \return a loaded component
+    */
+    Component create_component_instance(in string componentName,
+                                       in long studyId);
 
-/*!
-    Stops the component servant, and deletes all related objects
-    \param component_i     Component to be removed
-*/
+    /*!
+      Finds a servant instance of a component
+      \param registeredName  Name of the component in Registry or Name Service,
+                             without instance suffix number
+      \param studyId        0 if instance is not associated to a study, 
+                            >0 otherwise (== study id)
+      \return the first instance found with same studyId
+    */
+    Component find_component_instance(in string registeredName,
+                                     in long studyId);
+
+    /*!
+      Find a servant instance of a component, or create a new one.
+      Loads the component library if needed.
+      Only applicable to multiStudy components.
+      \param nameToRegister Name of the component which will be registered
+                            in Registry (or Name Service)
+      \param componentName  Name of the constructed library of the %component
+                            (not used any more, give empty string)
+      \return a loaded component
+    */
+    Component load_impl(in string nameToRegister,
+                       in string componentName);
+
+    /*!
+      Stops the component servant, and deletes all related objects
+      \param component_i     Component to be removed
+    */
     void remove_impl(in Component component_i);
 
-/*!
-    Discharges all components from the container.
-*/
+    /*!
+      Discharges all components from the container.
+    */
     void finalize_removal() ;
-/*!
-     Determines whether the server has been loaded or not.
-*/
 
+    /*!
+      Determines whether the server has been loaded or not.
+    */
     void ping();
-/*!
-   Name of the %container
-*/
+
+    /*!
+      Name of the %container
+    */
     readonly attribute string name ;
-/*!
-   Name of the machine containing this container (location of the container).
-*/
-    readonly attribute string machineName ;
-/*!
-   Returns True if the %container has been killed
-*/
-    boolean Kill_impl() ;
-/*!
-   Shutdown the Container process.
-*/
+
+    /*!
+      Shutdown the Container process.
+    */
     oneway void Shutdown();
-/*!
-   Returns the hostname of the container
-*/
+
+    /*!
+      Returns the hostname of the container
+    */
     string getHostName();
-/*!
-   Returns the PID of the container
-*/
+
+    /*!
+      Returns the PID of the container
+    */
     long getPID();
+
+    /*!
+      Returns True if the %container has been killed.
+      Kept for Superv compilation but can't work, unless oneway...
+      TO REMOVE !
+    */
+    boolean Kill_impl() ;
+
+    // -------------------------- removed -------------------------------
+
+    /*!
+      Loads into the container a new component, registers it and starts it's
+      CORBA servant.
+      \param nameToRegister    Name used to register in Naming Service,
+                               the component instance 
+      \param componentName     Name of the %component
+      \return a new instance of the component or the registered component
+               if already registered or Nil if not possible
+    */
+    //    Component instance(in string nameToRegister, in string componentName);
+
+
+    /*!
+      Name of the machine containing this container (location of the container).
+    */
+    //    readonly attribute string machineName ;
+
+
   };
-/*! \brief Interface of the %component
 
-    This interface is used for interaction between the %container and the %component and between
-    the components inside the container.
-*/
+
+
+  /*! \brief Interface of the %component
+  This interface is used for interaction between the %container and the
+  %component and between the components inside the container.
+  */
   interface Component
   {
-/*!
-   The name of the instance of the %Component
-*/
+    /*!
+      The name of the instance of the %Component
+    */
     readonly attribute string instanceName ;
-/*!
-   The name of the interface of the %Component
-*/
+
+    /*!
+      The name of the interface of the %Component
+    */
     readonly attribute string interfaceName ;
-/*!
-    Determines whether the server has already been loaded or not.
-*/
+
+    /*!
+      Determines whether the server has already been loaded or not.
+    */
     void ping();
-/*!
-    Deactivates the %Component.
-*/
+
+//     /*!
+//       Set study associated to component instance
+//       \param studyId
+//       (=0:  multistudy component instance,
+//        >0: study id associated to this instance
+//       \return false if already set with a different value (change not possible)
+//     */
+//     boolean setStudyId(in long studyId);
+
+    /*!
+      get study associated to component instance
+      \return -1: not initialised (Internal Error)
+               0: multistudy component instance
+              >0: study id associated to this instance
+    */
+    long getStudyId();
+
+    /*!
+      Deactivates the %Component.
+      -- TO BE USED BY CONTAINER ONLY (Container housekeeping) --
+      use remove_impl from Container instead !
+    */
     void destroy() ;
-/*!
-    Returns the container that the %Component refers to.
-*/
+
+    /*!
+      Returns the container that the %Component refers to.
+    */
     Container GetContainerRef() ;
-/*!
-    Gives a sequence of (key=string,value=any) to the component. 
-    Base class component stores the sequence in a map.
-    The map is cleared before.
-    This map is for use by derived classes. 
-*/
+
+    /*!
+      Gives a sequence of (key=string,value=any) to the component. 
+      Base class component stores the sequence in a map.
+      The map is cleared before.
+      This map is for use by derived classes. 
+    */
     void setProperties(in FieldsDict dico);
-/*!
-    returns a previously stored map (key=string,value=any) as a sequence.
-    See setProperties(in FieldsDict dico).
-*/
+
+    /*!
+      returns a previously stored map (key=string,value=any) as a sequence.
+      See setProperties(in FieldsDict dico).
+    */
     FieldsDict getProperties();
-/*!
-   This method is used by the %SUPERVISOR component. It sets the names of the graph and of the node.
-   \param aGraphName Name of graph
-   \param aNodeName Name of node
-*/
+
+    /*!
+      This method is used by the %SUPERVISOR component. It sets the names of
+      the graph and of the node.
+      \param aGraphName Name of graph
+      \param aNodeName  Name of node
+    */
     void Names( in string aGraphName , in string aNodeName ) ;
-/*!
-   Returns True if the %Component has been killed.
-*/
+
+    /*!
+      Returns True if the %Component has been killed.
+    */
     boolean Kill_impl() ;
-/*!
-   Returns True if the activity of the %Component has been stopped. (It's action can't be resumed)
-*/
+
+    /*!
+      Returns True if the activity of the %Component has been stopped.
+      (It's action can't be resumed)
+    */
     boolean Stop_impl() ;
-/*!
-   Returns True if the activity of the %Component has been suspended. (It's action can be resumed)
-*/
+
+    /*!
+      Returns True if the activity of the %Component has been suspended.
+      (It's action can be resumed)
+    */
     boolean Suspend_impl() ;
-/*!
-   Returns True if the activity of the %Component has been resumed.
-*/
+
+    /*!
+      Returns True if the activity of the %Component has been resumed.
+    */
     boolean Resume_impl() ;
-/*!
-   Returns the Cpu used (long does not run with python !...)
-*/
+
+    /*!
+      Returns the Cpu used (long does not run with python !...)
+    */
     long CpuUsed_impl() ;
+    
+    /*!
+      Returns a python script, which is being played back reproduces
+      the data model of component
+    */    
+    TMPFile DumpPython(in Object theStudy,
+                      in boolean isPublished, 
+                      out boolean isValidScript); 
+
   } ;
 } ;
 
index d8a57247e64dc64a88d089854c57999d41949d2d..7d4e96c24b97b6fa31ec554564491a40833cdfc1 100644 (file)
@@ -1,6 +1,7 @@
 #ifndef _SALOME_CONTAINERMANAGER_IDL_
 #define _SALOME_CONTAINERMANAGER_IDL_
 
+#include "SALOME_Exception.idl"
 #include "SALOME_Component.idl"
 
 module Engines
@@ -9,7 +10,8 @@ module Engines
 /*!
     Type to describe properties of wanted resource.
 */
-struct MachineParameters {
+struct MachineParameters
+{
   string container_name;
   string hostname;
   string OS;
@@ -17,6 +19,7 @@ struct MachineParameters {
   long cpu_clock;
   long nb_proc_per_node;
   long nb_node;
+  boolean isMPI;
 };
 
 /*!
@@ -24,15 +27,29 @@ struct MachineParameters {
 */
   typedef sequence<string> MachineList;
 
+/*!
+    exception thrown if a computer is not found in the catalog
+*/
+  exception NotFound {};
+
+
 /*! \brief Interface of the %containerManager
-    This interface is used for interaction with the unique instance of ContainerManager
+    This interface is used for interaction with the unique instance
+    of ContainerManager
 */
   interface ContainerManager
   {
-    Container FindOrStartContainer( in string containerName, in MachineList possibleComputers);
+    Container FindOrStartContainer( in MachineParameters params,
+                                   in MachineList possibleComputers);
+
     string FindBest(in MachineList possibleComputers);
-    MachineList GetFittingResources( in MachineParameters params, in string componentName );
+
+    MachineList GetFittingResources( in MachineParameters params,
+                                    in string componentName )
+      raises (SALOME::SALOME_Exception);
+
     void Shutdown();
+
     void ShutdownContainers();
   } ;
 };
index c23e1c06107f97c6d1b8e9c6d03077fbdcb5db95..13e135f6bca997697f1ff56b2a18d73925382f52 100644 (file)
@@ -31,16 +31,12 @@ module Engines
 {
   interface MPIContainer:Container,MPIObject
   {
-    // start MPI container executable
-    MPIContainer start_MPIimpl( in string ContainerName, in short nbproc );
-
-    //   shutdown corba server
-    void MPIShutdown() ;
-
     // asynchronous version to load and remove parallel component in parallel
-    oneway void SPload_impl(in string nameToRegister, in string componentName);
-    oneway void SPremove_impl(in Component component_i);
-    oneway void SPfinalize_removal();
+    oneway void Asload_component_Library(in string componentName);
+    oneway void Ascreate_component_instance(in string componentName,in long studyId);
+    oneway void Asload_impl(in string nameToRegister, in string componentName);
+    oneway void Asremove_impl(in Component component_i);
+    oneway void Asfinalize_removal();
   };
 } ;
 
index 99939a37803fa36e607d76e9a7b5b5610afb20ba..f83a16243be7125e12b6abea478a253cad71d475 100644 (file)
@@ -1,8 +1,48 @@
 <!DOCTYPE ResourcesCatalog>
 <resources>
-<machine protocol="r" nbOfNodes="1" mode="i" OS="LINUX" CPUFreqMHz="3200" userName="BS" memInMB="1024" preReqFilePath="/export/home/kloss/Salome2_2.1.0_22.12.04/env_products.sh" nbOfProcPerNode="1" alias="is111793" hostname="is111793" >
-<modules modulePath="/export/home/kloss/Salome2_2.1.0_22.12.04/CCRTTEST_INSTALL" moduleName="CCRTTEST" />
-  <modules modulePath="/export/home/kloss/Salome2_2.1.0_22.12.04/KERNEL_INSTALL" moduleName="KERNEL" /> </machine>
- <machine protocol="r" nbOfNodes="1" mode="i" OS="LINUX" CPUFreqMHz="3200" userName="geay" memInMB="1024" preReqFilePath="/export/home/geay/SALOME_RES_MAN/env_products.sh" nbOfProcPerNode="1" alias="is111918" hostname="is111918" >
-<modules modulePath="/export/home/geay/CCRTTEST/CCRTTEST_INSTALL" moduleName="CCRTTEST" />
-  <modules modulePath="/export/home/geay/SALOME_RES_MAN/KERNEL_INSTALL" moduleName="KERNEL" /> </machine></resources>
+
+<machine hostname="is111790" OS="LINUX" CPUFreqMHz="2992" memInMB="1024" protocol="r" mode="i" nbOfNodes="1" nbOfProcPerNode="1" preReqFilePath="/home/secher/SALOME2_INSTALL/KERNEL_INSTALL/salome.sh" >
+<modules modulePath="/home/secher/SALOME2_INSTALL/KERNEL_INSTALL" moduleName="KERNEL" />
+<modules modulePath="/export/home/LGLS/Products/MED_3.1.0a" moduleName="MED" />
+<modules modulePath="/export/home/LGLS/Products/GEOM_3.1.0a" moduleName="GEOM" />
+<modules modulePath="/export/home/LGLS/Products/SMESH_3.1.0a" moduleName="SMESH" />
+<modules modulePath="/export/home/LGLS/Products/SUPERV_3.1.0a" moduleName="SUPERV" />
+<modules modulePath="/export/home/LGLS/Products/VISU_3.1.0a" moduleName="VISU" />
+<modules modulePath="/home/secher/SALOME2_INSTALL/MYCOMPO_INSTALL" moduleName="MYCOMPO" />
+<modules modulePath="/home/secher/SALOME2_INSTALL/MYMPICOMPO_INSTALL" moduleName="MYMPICOMPO" />
+</machine>
+
+<machine hostname="is111915" OS="LINUX" CPUFreqMHz="2992" memInMB="1024" protocol="r" mode="i" nbOfNodes="1" nbOfProcPerNode="1" preReqFilePath="/home/secher/SALOME2_INSTALL/KERNEL_INSTALL/salome.sh" >
+<modules modulePath="/home/secher/SALOME2_INSTALL/KERNEL_INSTALL" moduleName="KERNEL" />
+<modules modulePath="/export/home/LGLS/Products/MED_3.1.0a" moduleName="MED" />
+<modules modulePath="/export/home/LGLS/Products/GEOM_3.1.0a" moduleName="GEOM" />
+<modules modulePath="/export/home/LGLS/Products/SMESH_3.1.0a" moduleName="SMESH" />
+<modules modulePath="/export/home/LGLS/Products/SUPERV_3.1.0a" moduleName="SUPERV" />
+<modules modulePath="/export/home/LGLS/Products/VISU_3.1.0a" moduleName="VISU" />
+<modules modulePath="/home/secher/SALOME2_INSTALL/MYCOMPO_INSTALL" moduleName="MYCOMPO" />
+<modules modulePath="/home/secher/SALOME2_INSTALL/MYMPICOMPO_INSTALL" moduleName="MYMPICOMPO" />
+</machine>
+
+<machine hostname="is111918" OS="LINUX" CPUFreqMHz="2992" memInMB="1024" protocol="r" mode="i" nbOfNodes="1" nbOfProcPerNode="1" preReqFilePath="/home/secher/SALOME2_INSTALL/KERNEL_INSTALL/salome.sh" >
+<modules modulePath="/home/secher/SALOME2_INSTALL/KERNEL_INSTALL" moduleName="KERNEL" />
+<modules modulePath="/export/home/LGLS/Products/MED_3.1.0a" moduleName="MED" />
+<modules modulePath="/export/home/LGLS/Products/GEOM_3.1.0a" moduleName="GEOM" />
+<modules modulePath="/export/home/LGLS/Products/SMESH_3.1.0a" moduleName="SMESH" />
+<modules modulePath="/export/home/LGLS/Products/SUPERV_3.1.0a" moduleName="SUPERV" />
+<modules modulePath="/export/home/LGLS/Products/VISU_3.1.0a" moduleName="VISU" />
+<modules modulePath="/home/secher/SALOME2_INSTALL/MYCOMPO_INSTALL" moduleName="MYCOMPO" />
+<modules modulePath="/home/secher/SALOME2_INSTALL/MYMPICOMPO_INSTALL" moduleName="MYMPICOMPO" />
+</machine>
+
+<machine hostname="is111996" OS="LINUX" CPUFreqMHz="2992" memInMB="1024" protocol="r" mode="i" nbOfNodes="1" nbOfProcPerNode="1" preReqFilePath="/home/secher/SALOME2_INSTALL/KERNEL_INSTALL/salome.sh" >
+<modules modulePath="/home/secher/SALOME2_INSTALL/KERNEL_INSTALL" moduleName="KERNEL" />
+<modules modulePath="/export/home/LGLS/Products/MED_3.1.0a" moduleName="MED" />
+<modules modulePath="/export/home/LGLS/Products/GEOM_3.1.0a" moduleName="GEOM" />
+<modules modulePath="/export/home/LGLS/Products/SMESH_3.1.0a" moduleName="SMESH" />
+<modules modulePath="/export/home/LGLS/Products/SUPERV_3.1.0a" moduleName="SUPERV" />
+<modules modulePath="/export/home/LGLS/Products/VISU_3.1.0a" moduleName="VISU" />
+<modules modulePath="/home/secher/SALOME2_INSTALL/MYCOMPO_INSTALL" moduleName="MYCOMPO" />
+<modules modulePath="/home/secher/SALOME2_INSTALL/MYMPICOMPO_INSTALL" moduleName="MYMPICOMPO" />
+</machine>
+
+</resources>
index 4bad252ff01031cbb83d0cdea0c5c8ce6b82c44a..298eadd2df489eda006a0447bae226af06a7f7df 100644 (file)
@@ -16,7 +16,7 @@
                <component-username>Salome</component-username>
                <component-type>Other</component-type>
                <component-author>NRI</component-author>
-               <component-version>2.2.0</component-version>
+               <component-version>3.1.0a</component-version>
                <component-comment>GUI Neutral Context</component-comment>
                <component-multistudy>1</component-multistudy>
 
@@ -27,7 +27,7 @@
                <component-username>SalomeTestComponent</component-username>
                <component-type>Other</component-type>
                <component-author>NRI</component-author>
-               <component-version>2.1.0</component-version>
+               <component-version>3.1.0a</component-version>
                <component-comment>GUI Neutral Context</component-comment>
                <component-multistudy>1</component-multistudy>
                <constraint>'linux' ~ OS</constraint>
@@ -37,7 +37,7 @@
                <component-username>SALOME_TestComponentPy</component-username>
                <component-type>Other</component-type>
                <component-author>NRI</component-author>
-               <component-version>2.1.0</component-version>
+               <component-version>3.1.0a</component-version>
                <component-comment>GUI Neutral Context</component-comment>
                <component-multistudy>1</component-multistudy>
                <constraint>'linux' ~ OS</constraint>
diff --git a/resources/Plugin.in b/resources/Plugin.in
new file mode 100755 (executable)
index 0000000..3d4fad5
--- /dev/null
@@ -0,0 +1,10 @@
+! Description of available plugins
+! ********************************
+!
+a148e300-5740-11d1-a904-080036aaa103.Location: FWOSPlugin
+!
+! standard attribute drivers plugin
+!
+ad696000-5b34-11d1-b5ba-00a0c9064368.Location: @CAS_STDPLUGIN@
+ad696001-5b34-11d1-b5ba-00a0c9064368.Location: @CAS_STDPLUGIN@
+ad696002-5b34-11d1-b5ba-00a0c9064368.Location: @CAS_STDPLUGIN@
index 2982ad06c7b72d28330a5d07054d545dae4afc79..4dfafb94b34265c0ff86260539651ac4e9e1dc03 100644 (file)
@@ -41,5 +41,7 @@ uninstall-idl:
 
 distclean:
 
+clean:
+
 distclean-other:
 
index e79eb7ae8bffbc07c456b2e5f1656819d67e0bac..c1be35bd0e09f8dc1685af461002a3238a206fdd 100644 (file)
   See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
 ------------------------------------------------------------------------------------*/
 
+#ifndef SALOME_CONFIG_H
+#define SALOME_CONFIG_H
+
 #define DEBUG
 
 #define QUOTE(x)  #x
 #define CORBA_CLIENT_HEADER(x)  QUOTE(x@IDL_CLN_H@)
 #define CORBA_SERVER_HEADER(x)  QUOTE(x@IDL_SRV_H@)
 
+#ifndef @MACHINE@
+  #define @MACHINE@
+#endif
+
+#endif
index d28ee01dcf152131b2da0efb8e8112f8dea4e5fa..69da63decb78a9da95d20264b702d341446e615c 100644 (file)
@@ -29,7 +29,7 @@ dnl
 dnl @version $Id$
 dnl @author Luc Maisonobe
 dnl
-AC_DEFUN(AC_CXX_BOOL,
+AC_DEFUN([AC_CXX_BOOL],
 [AC_CACHE_CHECK(whether the compiler recognizes bool as a built-in type,
 ac_cv_cxx_bool,
 [AC_LANG_SAVE
index 9e3d4ecc97e9754f67a361b3464adcc627987b37..9dc8b0fd346038f151796d56dc9c65b10d545638 100644 (file)
@@ -27,7 +27,7 @@ dnl
 dnl @version $Id$
 dnl @author Marc Tajchman
 dnl
-AC_DEFUN(AC_DEPEND_FLAG,
+AC_DEFUN([AC_DEPEND_FLAG],
 [AC_CACHE_CHECK(which flag for dependency information generation,
 ac_cv_depend_flag,
 [AC_LANG_SAVE
@@ -44,12 +44,14 @@ dnl on utilise donc gnu pour generer les dependances.
      DEPCXX=g++
      DEPCXXFLAGS="-Wno-deprecated"
      DIFFFLAGS="-w"
+     MACHINE="OSF1"
      ;;
    *)
      DEPCC=${CC-cc}
      DEPCXX=${CXX-c++}
      DEPCXXFLAGS="\${CXXFLAGS}"
      DIFFFLAGS="-b -B"
+     MACHINE="PCLINUX"
      ;;
  esac
  C_DEPEND_FLAG=
@@ -137,5 +139,6 @@ dnl use g++ option -MG : asume unknown file will be construct later
  AC_SUBST(DEPCXXFLAGS)
  AC_SUBST(C_DEPEND_FLAG)
  AC_SUBST(CXX_DEPEND_FLAG)
+ AC_SUBST(MACHINE)
 ])
 ])
index 86f5fa730a9640c0ad569b2c8d58863f2f637802..3d87bacb8637667c22e6b764604ddee059499af8 100644 (file)
@@ -28,7 +28,7 @@ dnl
 dnl @version $Id$
 dnl @author Luc Maisonobe
 dnl
-AC_DEFUN(AC_CXX_MUTABLE,
+AC_DEFUN([AC_CXX_MUTABLE],
 [AC_CACHE_CHECK(whether the compiler supports the mutable keyword,
 ac_cv_cxx_mutable,
 [AC_LANG_SAVE
index 53e9317d6925e85993859a8865e9054bc25de365..76b815ace59e7e892a649479695c0eb24238c958 100644 (file)
@@ -27,7 +27,7 @@ dnl
 dnl @version $Id$
 dnl @author Luc Maisonobe
 dnl
-AC_DEFUN(AC_CXX_NAMESPACES,
+AC_DEFUN([AC_CXX_NAMESPACES],
 [AC_CACHE_CHECK(whether the compiler implements namespaces,
 ac_cv_cxx_namespaces,
 [AC_LANG_SAVE
index 93589ff8061f7457a9eaa1800682914b1f41d3e9..634d3c64097b192eb071e7818eeb58bac4d1773a 100644 (file)
@@ -28,7 +28,7 @@ dnl @version $Id$
 dnl @author Luc Maisonobe
 dnl
 
-AC_DEFUN(AC_CXX_PARTIAL_SPECIALIZATION,
+AC_DEFUN([AC_CXX_PARTIAL_SPECIALIZATION],
 [AC_CACHE_CHECK(whether the compiler supports partial specialization,
 ac_cv_cxx_partial_specialization,
 [AC_LANG_SAVE
index 7ec2ad39e5e314a5fe41a5541b7d319973e42978..bb1424673fd7f5972969685ccb730ff9f97ffff5 100644 (file)
@@ -26,7 +26,7 @@ dnl
 dnl @version $Id$
 dnl @author Luc Maisonobe
 dnl
-AC_DEFUN(AC_CXX_TYPENAME,
+AC_DEFUN([AC_CXX_TYPENAME],
 [AC_CACHE_CHECK(whether the compiler recognizes typename,
 ac_cv_cxx_typename,
 [AC_LANG_SAVE
index 789167b4c1264a3d29860a04c96f3f492090f5bf..215ce8cf53b859b155f347da3f6ac66a1c0266ba 100644 (file)
@@ -31,7 +31,10 @@ BOOST_CPPFLAGS=""
 boost_ok=no
 
 if test -z ${BOOSTDIR}; then
-  AC_MSG_WARN(You must provide BOOSTDIR variable)
+  AC_CHECK_HEADER(boost/shared_ptr.hpp,boost_ok=yes,boost_ok=no)
+  if test boost_ok = no ; then
+    AC_MSG_WARN(You must provide BOOSTDIR variable)
+  fi
 else
   AC_MSG_RESULT(\$BOOSTDIR = ${BOOSTDIR})
   AC_CHECKING(for boost/shared_ptr.hpp header file)
index 3b3f654f985c277a0e68ebae50162ddbb4c3193d..99fd4be6b3c71621e06e4a10e11ad48e63af43a1 100644 (file)
@@ -37,6 +37,7 @@ AC_SUBST(CAS_OCAF)
 AC_SUBST(CAS_DATAEXCHANGE)
 AC_SUBST(CAS_LDFLAGS)
 AC_SUBST(CAS_LDPATH)
+AC_SUBST(CAS_STDPLUGIN)
 
 OWN_CONFIG_H=no
 
@@ -72,6 +73,19 @@ case $host_os in
 esac
 
 AC_MSG_CHECKING(for OpenCascade directories)
+
+if test -z $CASROOT; then
+  AC_MSG_RESULT(CASROOT not defined)
+  for d in `echo $LD_LIBRARY_PATH | sed -e "s/:/ /g"` ; do
+    if test -f $d/libTKernel.so ; then
+      AC_MSG_RESULT(libTKernel.so detected in $d)
+      CASROOT=$d
+      CASROOT=`echo ${CASROOT} | sed -e "s,[[^/]]*$,,;s,/$,,;s,^$,.,"`
+      break
+    fi
+  done
+fi
+
 if test -d ${CASROOT}/${casdir}/lib; then
   CAS_LDPATH="-L$CASROOT/$casdir/lib "
   AC_MSG_RESULT(yes)
@@ -91,12 +105,17 @@ if test -z $CASROOT; then
 else
   occ_ok=yes
   OCC_VERSION_MAJOR=0
+  OCC_VERSION_MINOR=0
   ff=$CASROOT/inc/Standard_Version.hxx
   if test -f $ff ; then
     grep "define OCC_VERSION_MAJOR" $ff > /dev/null
     if test $? = 0 ; then
       OCC_VERSION_MAJOR=`grep "define OCC_VERSION_MAJOR" $ff | awk '{i=3 ; print $i}'`
     fi
+    grep "define OCC_VERSION_MINOR" $ff > /dev/null
+    if test $? = 0 ; then
+      OCC_VERSION_MINOR=`grep "define OCC_VERSION_MINOR" $ff | awk '{i=3 ; print $i}'`
+    fi
   fi
 fi
 
@@ -113,9 +132,25 @@ dnl test c++ compiler flag for unsigned character
 dnl cascade headers
 
   CPPFLAGS_old="$CPPFLAGS"
-  CAS_CPPFLAGS="-DOCC_VERSION_MAJOR=$OCC_VERSION_MAJOR -DLIN -DLINTEL -DCSFDB -DNO_CXX_EXCEPTION -DNo_exception -DHAVE_CONFIG_H -DHAVE_LIMITS_H -DHAVE_WOK_CONFIG_H -I$CASROOT/inc"
+case $host_os in
+   linux*)
+      CAS_CPPFLAGS="-DOCC_VERSION_MAJOR=$OCC_VERSION_MAJOR -DLIN -DLINTEL -DCSFDB -DNO_CXX_EXCEPTION -DNo_exception -DHAVE_CONFIG_H -DHAVE_LIMITS_H -DHAVE_WOK_CONFIG_H -I$CASROOT/inc"
+      ;;
+   osf*)
+      CAS_CPPFLAGS="-DOCC_VERSION_MAJOR=$OCC_VERSION_MAJOR -DLIN -DLINTEL -DCSFDB -DNo_exception -DHAVE_CONFIG_H -DHAVE_LIMITS_H -DHAVE_WOK_CONFIG_H -I$CASROOT/inc"
+      ;;
+esac
   CPPFLAGS="$CPPFLAGS $CAS_CPPFLAGS"
 
+  if test -n $KERNEL_ROOT_DIR; then
+      if test -d $KERNEL_ROOT_DIR/include/salome; then
+          CAS_CPPFLAGS="$CAS_CPPFLAGS -I$KERNEL_ROOT_DIR/include/salome"
+         CPPFLAGS="$CPPFLAGS -I$KERNEL_ROOT_DIR/include/salome"
+      fi
+  fi
+  CAS_CPPFLAGS="$CAS_CPPFLAGS -I${ROOT_BUILDDIR}/include/salome"
+  CPPFLAGS="$CPPFLAGS -I${ROOT_BUILDDIR}/salome_adm/unix"
+
   echo
   echo
   echo testing config.h
@@ -179,14 +214,23 @@ else
   CAS_KERNEL="$CAS_LDPATH -lTKernel -lTKMath"
 
   # E.A. compatibility version 4 and 5.x  
-  CAS_OCAF="$CAS_LDPATH -lPTKernel -lTKCAF -lFWOSPlugin -lTKPShape -lTKPCAF -lTKStdSchema -lTKShapeSchema -lPAppStdPlugin"
+  CAS_OCAF="$CAS_LDPATH -lPTKernel -lTKPShape -lTKCDF -lTKCAF -lTKShapeSchema -lTKPCAF -lFWOSPlugin -lTKStdSchema"
   if test $OCC_VERSION_MAJOR -lt 5 ; then
     CAS_OCAF="$CAS_OCAF -lTKPAppStd"
   fi
-  CAS_OCAF="$CAS_OCAF -lTKCDF"
+  if test -f $CASROOT/$casdir/lib/libPAppStdPlugin.so ; then
+    # this library is absent in CASCADE 5.2.3
+    CAS_OCAF="$CAS_OCAF -lPAppStdPlugin"
+    CAS_STDPLUGIN="PAppStdPlugin"
+  fi
+  if test -f $CASROOT/$casdir/lib/libStdPlugin.so ; then
+    # this libraries are only for CASCADE 5.2.3
+    CAS_STDPLUGIN="StdPlugin"
+    CAS_OCAF="$CAS_OCAF -lStdPlugin -lStdLPlugin -lTKLCAF -lTKPLCAF -lTKStdLSchema"
+  fi
   
   CAS_VIEWER="$CAS_LDPATH -lTKOpenGl -lTKV3d -lTKService"
-  CAS_MODELER="$CAS_LDPATH -lTKG2d -lTKG3d -lTKGeomBase -lTKBRep -lTKGeomAlgo -lTKTopAlgo -lTKPrim -lTKBool -lTKHLR -lTKFillet -lTKOffset"
+  CAS_MODELER="$CAS_LDPATH -lTKG2d -lTKG3d -lTKGeomBase -lTKBRep -lTKGeomAlgo -lTKTopAlgo -lTKPrim -lTKBO -lTKBool -lTKHLR -lTKFillet -lTKOffset -lTKFeat"
 
   # E.A. compatibility version 4 and 5.x  
   CAS_DATAEXCHANGE="$CAS_LDPATH -lTKXSBase -lTKIGES -lTKSTEP -lTKShHealing"
diff --git a/salome_adm/unix/config_files/check_cppunit.m4 b/salome_adm/unix/config_files/check_cppunit.m4
new file mode 100644 (file)
index 0000000..10c9181
--- /dev/null
@@ -0,0 +1,108 @@
+
+AC_DEFUN([CHECK_CPPUNIT],[
+
+AC_CHECKING(for cppunit)
+
+cppunit_ok=yes
+
+dnl were is cppunit ?
+
+AC_ARG_WITH(cppunit,
+    [  --with-cppunit=DIR     directory path to CPPUNIT installation ],
+    [CPPUNITHOME="$withval"
+      AC_MSG_RESULT("select $withval as path to CPPUNIT")
+    ])
+
+AC_ARG_WITH(cppunit_inc,
+    [  --with-cppunit_inc=DIR   directory path to CPPUNIT includes ],
+    [CPPUNIT_INCLUDES="$withval"
+      AC_MSG_RESULT("select $withval as path to CPPUNIT includes")
+    ])
+
+if test -z $CPPUNITHOME; then
+  AC_MSG_RESULT(CPPUNITHOME not defined)
+  exits_ok=no  
+  if test "x$exits_ok" = "xno"; then
+     for d in /usr/local /usr ; do
+        AC_CHECK_FILE(${d}/lib/libcppunit.so,exits_ok=yes,exits_ok=no)
+        if test "x$exits_ok" = "xyes"; then
+           CPPUNITHOME=$d
+           AC_MSG_RESULT(libcppunit.so detected in $d/lib)
+        fi
+     done
+  fi
+  if test "x$exits_ok" = "xno"; then
+     for d in `echo $LD_LIBRARY_PATH | sed -e "s/:/ /g"` ; do
+        if test -f $d/libcppunit.so ; then
+           AC_MSG_RESULT(libcppunit.so detected in $d)
+           CPPUNITHOME=$d
+           CPPUNITHOME=`echo ${CPPUNITHOME} | sed -e "s,[[^/]]*$,,;s,/$,,;s,^$,.,"`
+           exits_ok=yes
+           break
+        fi
+     done
+  fi
+  if test "x$exits_ok" = "xyes"; then
+     if test -z $CPPUNIT_INCLUDES; then
+        CPPUNIT_INCLUDES=$CPPUNITHOME"/include"
+     fi
+  fi
+else
+  if test -z $CPPUNIT_INCLUDES; then
+     CPPUNIT_INCLUDES="$CPPUNITHOME/include"
+  fi           
+fi
+
+if test "x$cppunit_ok" = xno -o ! -d "$CPPUNITHOME" ; then
+  AC_MSG_RESULT(no)
+  AC_MSG_WARN(cppunit not found)
+  cppunit_ok=no
+else
+   AC_LANG_SAVE
+   AC_LANG_CPLUSPLUS
+   CPPFLAGS_old=$CPPFLAGS
+   CPPFLAGS="$CPPFLAGS -I$CPPUNIT_INCLUDES"
+   CPPFLAGS="$CPPFLAGS $QT_INCLUDES"
+
+   AC_CHECK_HEADER(cppunit/extensions/HelperMacros.h,cppunit_ok=yes,cppunit_ok=no) 
+
+   CPPFLAGS=$CPPFLAGS_old
+
+   if test "x$cppunit_ok" = xno ; then
+     AC_MSG_RESULT(no)
+     AC_MSG_WARN(cppunit not found)
+   else
+     cppunit_ok=yes
+   fi
+
+  if  test "x$cppunit_ok" = "xno"
+  then
+    AC_MSG_RESULT(unable to found cppunit headers and library)
+    AC_MSG_RESULT(CPPUNITHOME environment variable may be wrong)
+  else
+    if test "x$CPPUNIT_INCLUDES" = "x/usr/include"
+    then
+      CPPUNIT_INCLUDES=""
+    else
+      CPPUNIT_INCLUDES="-I$CPPUNIT_INCLUDES"
+    fi
+    if test "x$CPPUNITHOME" = "x/usr"
+    then
+      CPPUNIT_LIBS=" -lcppunit"
+    else
+      CPPUNIT_LIBS="-L$CPPUNITHOME/lib -lcppunit"
+    fi
+
+    AC_SUBST(CPPUNIT_INCLUDES)
+    AC_SUBST(CPPUNIT_LIBS)
+    AC_SUBST(cppunit_ok)
+
+    AC_MSG_RESULT(yes)
+  fi
+
+fi
+
+AC_LANG_RESTORE
+
+])dnl
+dnl
\ No newline at end of file
index b3658afc1e622c4c897f27816dcb8404b6754f27..b20db13ac474e0ce1918f5e64413c51e6117c7d4 100644 (file)
@@ -48,7 +48,12 @@ then
    AC_MSG_WARN(undefined HDF5HOME variable which specify hdf5 installation directory)
 else
    LOCAL_INCLUDES="-I$HDF5HOME/include"
-   LOCAL_LIBS="-L$HDF5HOME/lib"
+   if test "x$HDF5HOME" = "x/usr"
+   then
+      LOCAL_LIBS=""
+   else
+      LOCAL_LIBS="-L$HDF5HOME/lib"
+   fi
 fi
 
 dnl hdf5 headers
index 9a303a054a1b9d4a7d8dbf51c23943bc15aca306..994a2b0a538d5ca0e2f4b9cd643a6fe59acfb321 100644 (file)
@@ -41,7 +41,12 @@ if test "$WITHLAM" = yes; then
 
   if test "$LAM_HOME"; then
     MPI_INCLUDES="-I$LAM_HOME/include"
-    MPI_LIBS="-L$LAM_HOME/lib"
+    if test "x$LAM_HOME" = "x/usr"
+    then
+      MPI_LIBS=""
+    else
+      MPI_LIBS="-L$LAM_HOME/lib"
+    fi
   fi
 
   CPPFLAGS_old="$CPPFLAGS"
index 5fb9e0b100f4bd8125cd22b8706a76ffad3cdbc7..a172d477d3f7e96d4d1a7ad52be2ace5627aa5fc 100755 (executable)
@@ -43,7 +43,12 @@ AC_DEFUN([CHECK_LSF],
  
    dnl LIB directory
 
-   LSF_LDFLAGS="-L${LSF_LIBDIR}"
+   if test "x${LSF_LIBDIR}" = "x/usr/lib"
+   then
+     LSF_LDFLAGS=""
+   else
+     LSF_LDFLAGS="-L${LSF_LIBDIR}"
+   fi
    LSF_LIBS=""
    saved_LDFLAGS=${LDFLAGS}
    saved_LIBS=${LIBS}
@@ -70,6 +75,9 @@ AC_DEFUN([CHECK_LSF],
  dnl AM_CONDITIONAL(WITH_LSF, test $WITH_LSF = 1)
 
  lsf_ok=$WITH_LSF
+ if test $lsf_ok = no ; then
+   lsf_ok=
+ fi
  AC_SUBST(WITH_LSF)
 
 ])
index b839d1e5c868810bc6b545d689f78b6963d21069..5d97e2aa185fd5471a4b8adab40e9d1e22b92a2f 100644 (file)
@@ -84,7 +84,12 @@ fi
 
 if test "x$mico_ok" = "xyes" 
 then
-  MICO_LDFLAGS="-L$MICO_LIB"
+  if test "x$MICO_LIB" = "x/usr/lib"
+  then
+    MICO_LDFLAGS=""
+  else
+    MICO_LDFLAGS="-L$MICO_LIB"
+  fi
 
   LIBS_old=$LIBS
   MICO_LIBS="$MICO_LDFLAGS -lmico$MICO_VERSION -ldl"
index d746ac0554d93a2d3ecc9f6574c7d6264c0f433a..e8255a2e482ea4bd414468c9661f3354006cd8ac 100644 (file)
@@ -41,7 +41,12 @@ if test "$WITHMPI" = yes; then
   if test "x$withval" != "xyes"; then
     MPI_HOME=$withval
     MPI_INCLUDES="-I$MPI_HOME/include"
-    MPI_LIBS="-L$MPI_HOME/lib"
+    if test "x$MPI_HOME" = "x/usr"
+    then
+      MPI_LIBS=""
+    else
+      MPI_LIBS="-L$MPI_HOME/lib"
+    fi
   fi
 
   CPPFLAGS_old="$CPPFLAGS"
index de0e6d50a9d5b6b85c62a924806e7d6d7ab10508..c5971aa35220357ed5215b58a4305fec9f7d40f3 100644 (file)
@@ -41,7 +41,12 @@ if test "$WITHMPICH" = yes; then
 
   if test "$MPICH_HOME"; then
     MPI_INCLUDES="-I$MPICH_HOME/include"
-    MPI_LIBS="-L$MPICH_HOME/lib"
+    if test "x$MPICH_HOME" = "x/usr"
+    then
+      MPI_LIBS=""
+    else
+      MPI_LIBS="-L$MPICH_HOME/lib"
+    fi
   fi
 
   CPPFLAGS_old="$CPPFLAGS"
diff --git a/salome_adm/unix/config_files/check_msg2qm.m4 b/salome_adm/unix/config_files/check_msg2qm.m4
new file mode 100755 (executable)
index 0000000..8d0c547
--- /dev/null
@@ -0,0 +1,57 @@
+# Check availability of Qt's msg2qm tool binary distribution
+#
+# Author : Jerome Roy (CEA, 2003)
+#
+
+AC_DEFUN([CHECK_MSG2QM],[
+
+AC_CHECKING(for msg2qm)
+
+msg2qm_ok=no
+
+AC_ARG_WITH(msg2qm,
+           [  --with-msg2qm=DIR               root directory path of MSG2QM installation],
+           MSG2QM_DIR="$withval",MSG2QM_DIR="")
+
+if test "x$MSG2QM_DIR" == "x" ; then
+
+# no --with-MSG2QM-dir option used
+
+   if test "x$MSG2QM_ROOT" != "x" ; then
+
+    # MSG2QM_ROOT environment variable defined
+      MSG2QM_DIR=$MSG2QM_ROOT
+
+   else
+
+    # search MSG2QM binaries in PATH variable
+      AC_PATH_PROG(TEMP, msg2qm)
+      if test "x$TEMP" != "x" ; then
+         MSG2QM_DIR=`dirname $TEMP`
+      fi
+      
+   fi
+# 
+fi
+
+# look for msg2qm in ${MSG2QM_DIR} directory
+if test -f ${MSG2QM_DIR}/msg2qm ; then
+   msg2qm_ok=yes
+   MSG2QM="${MSG2QM_DIR}/msg2qm"
+   AC_MSG_RESULT(Using MSG2QM executable in ${MSG2QM_DIR})
+else
+   # if not found, look for msg2qm in ${MSG2QM_DIR}/bin directory
+   if test -f ${MSG2QM_DIR}/bin/msg2qm ; then
+      msg2qm_ok=yes
+      MSG2QM="${MSG2QM_DIR}/bin/msg2qm"
+      AC_MSG_RESULT(Using MSG2QM executable in ${MSG2QM_DIR}/bin)
+   else            
+      AC_MSG_WARN("Cannot find MSG2QM executable")
+   fi
+fi
+
+AC_SUBST(MSG2QM)
+AC_MSG_RESULT(for MSG2QM: $msg2qm_ok)
+])dnl
index f3d5abcdb62d902211015d7a4bdc6ef2c1a10514..1f63365bf30438d3bf8ed8057466d08d16f84114 100644 (file)
@@ -99,7 +99,12 @@ dnl omniORB_ok=yes
 
 if test "x$omniORB_ok" = "xyes" 
 then
-  OMNIORB_LDFLAGS="-L$OMNIORB_LIB"
+  if test "x$OMNIORB_LIB" = "x/usr/lib"
+  then
+    OMNIORB_LDFLAGS=""
+  else
+    OMNIORB_LDFLAGS="-L$OMNIORB_LIB"
+  fi
 
   LIBS_old=$LIBS
   LIBS="$LIBS $OMNIORB_LDFLAGS -lomnithread"
index ad1ccbd1eb044e154d898b9216eda416814d91ea..dd43d25a03a6b873d0ddee362a62704078b2bb61 100644 (file)
@@ -49,7 +49,12 @@ if test "x$local_opengl" = "xyes" ; then
    if test -f "${opengl_dir}/include/GL/gl.h" ; then
       OpenGL_ok=yes
       OGL_INCLUDES="-I${opengl_dir}/include"
-      OGL_LIBS="-L${opengl_dir}/lib"
+      if test "x${opengl_dir}" = "x/usr"
+      then
+        OGL_LIBS=""
+      else
+        OGL_LIBS="-L${opengl_dir}/lib"
+      fi
       AC_MSG_RESULT(select OpenGL distribution in ${opengl_dir})
    else
       AC_MSG_RESULT(no gl.h header file in ${opengl_dir}/include/GL)
@@ -91,13 +96,23 @@ then
   for i in $dirs; do
     if test -r "$i/libGL.so"; then
 dnl      AC_MSG_RESULT(in $i)
-      OGL_LIBS="-L$i"
+      if test "x$i" = "x/usr/lib"
+      then
+        OGL_LIBS=""
+      else
+        OGL_LIBS="-L$i"
+      fi
       break
     fi
 # under IRIX ?
     if test -r "$i/libGL.sl"; then
 dnl      AC_MSG_RESULT(in $i)
-      OGL_LIBS="-L$i"
+      if test "x$i" = "x/usr/lib"
+      then
+        OGL_LIBS=""
+      else
+        OGL_LIBS="-L$i"
+      fi
       break
     fi
   done
index 9598285c9548c3e09f6d30f16637cd53b8b97a60..01454588660c6f0357742cb8a877cd1678054fb9 100644 (file)
@@ -30,7 +30,12 @@ AC_DEFUN([CHECK_OPENPBS],
    CPPFLAGS=${saved_CPPFLAGS}
    AC_SUBST(OPENPBS_INCLUDES)
  
-   OPENPBS_LIBDIR="-L${OPENPBS}/lib"
+   if test "x${OPENPBS}" = "x/usr"
+   then
+     OPENPBS_LIBDIR=""
+   else
+     OPENPBS_LIBDIR="-L${OPENPBS}/lib"
+   fi
    OPENPBS_LIBS="-lpbs"
    saved_LDFLAGS=${LDFLAGS}
    saved_LIBS=${LIBS}
@@ -51,6 +56,9 @@ AC_DEFUN([CHECK_OPENPBS],
  fi
 
  WITHOPENPBS=$openpbs_ok
+ if test x$WITHOPENPBS = x ; then
+   WITHOPENPBS=no
+ fi
  AC_SUBST(WITHOPENPBS)
 
 ])
index 983bfc20076571ef473c0a830d5a919f9e9416e4..80aef2aad184d0e6509be9383e3422b254bf336c 100644 (file)
@@ -29,7 +29,7 @@ dnl@author   (C) Ruslan Shevchenko <Ruslan@Shevchenko.Kiev.UA>, 1998
 dnl@id $Id$
 dnl ----------------------------------------------------------------
 dnl CHECK_PTHREADS
-AC_DEFUN(CHECK_PTHREADS,[
+AC_DEFUN([CHECK_PTHREADS],[
 AC_CXX_OPTION(-pthread,CPPFLAGS,flag=yes,flag=no)
 
 if test $flag = no; then
index cb99775f81b4482d491e14cbe65d13fe126f0069..ee024efaf8fc2c8caa136b4e12028a1dfe9d430c 100644 (file)
@@ -2,6 +2,11 @@ dnl Copyright (C) 2003  CEA/DEN, EDF R&D
 
 AC_DEFUN([CHECK_PYQT],[
 AC_REQUIRE([CHECK_PYTHON])dnl
+AC_REQUIRE([CHECK_QT])dnl
+AC_REQUIRE([CHECK_SIP])dnl
+
+AC_LANG_SAVE
+AC_LANG_CPLUSPLUS
 
 AC_ARG_WITH(pyqt,
     [  --with-pyqt=DIR      root directory path to PyQt installation ],
@@ -24,68 +29,278 @@ AC_ARG_WITH(pyuic,
 
 AC_CHECKING(for pyqt)
 
-pyqt_ok=no
+pyqt_ok=yes
 
-if test "x$PYQTDIR" = x; then
-  PYQTDIR="/usr"
+dnl look for pyuic
+pyqt_uic_ok=no
+if test "x$PYUIC" != x; then
+  dnl try withval value
+  AC_CHECK_FILE($PYUIC,pyqt_uic_ok=yes,pyqt_uic_ok=no)
 fi
-  
-if test "x$PYQT_SIPS" = x; then
-  PYQT_SIPS="/usr/share/sip/qt"
+if test "x$pyqt_uic_ok" == "xno"; then
+  dnl try ${PYQTDIR}
+  if test "x${PYQTDIR}" != "x"; then
+    if test -d ${PYQTDIR} ; then
+      AC_CHECK_FILE(${PYQTDIR}/pyuic,pyqt_uic_ok=yes,pyqt_uic_ok=no)
+      if test "x$pyqt_uic_ok" == "xyes"; then
+        PYUIC="${PYQTDIR}/pyuic"
+      fi
+    fi
+  fi   
 fi
-
-if test -d $PYQTDIR/lib/python${PYTHON_VERSION}/site-packages; then
-  PYQTLIB=$PYQTDIR/lib/python${PYTHON_VERSION}/site-packages
-else
-  if test -d $PYQTDIR/lib; then
-    PYQTLIB=$PYQTDIR/lib
-  else
-    PYQTLIB=$PYQTDIR
+if test "x$pyqt_uic_ok" == "xno"; then
+  dnl try ${SIPDIR}
+  if test "x${SIPDIR}" != "x"; then
+    if test -d ${SIPDIR} ; then
+      AC_CHECK_FILE(${SIPDIR}/pyuic,pyqt_uic_ok=yes,pyqt_uic_ok=no)
+      if test "x$pyqt_uic_ok" == "xyes"; then
+        PYUIC="${SIPDIR}/pyuic"
+      fi
+    fi
+  fi   
+fi
+if test "x$pyqt_uic_ok" == "xno"; then
+  dnl try ${PYTHONHOME}/bin
+  if test "x${PYTHONHOME}" != "x"; then
+    if test -d ${PYTHONHOME}/bin ; then
+      AC_CHECK_FILE(${PYTHONHOME}/bin/pyuic,pyqt_uic_ok=yes,pyqt_uic_ok=no)
+      if test "x$pyqt_uic_ok" == "xyes"; then
+        PYUIC="${PYTHONHOME}/bin/pyuic"
+      fi
+    fi
+  fi   
+fi
+if test "x$pyqt_uic_ok" == "xno"; then
+  dnl try /usr/bin
+  AC_CHECK_FILE(/usr/bin/pyuic,pyqt_uic_ok=yes,pyqt_uic_ok=no)
+  if test "x$pyqt_uic_ok" == "xyes"; then
+    PYUIC="/usr/bin/pyuic"
   fi
 fi
-
-if test -d $PYQTDIR/bin; then
-  PYQTBIN=$PYQTDIR/bin
-else
-  PYQTBIN=$PYQTDIR
+if test "x$pyqt_uic_ok" == "xno"; then
+  pyqt_ok=no
 fi
 
-if test "x$PYUIC" = x; then
-  PYUIC="$PYQTBIN/pyuic"
+dnl look for PyQt libs
+pyqt_lib_ok=no
+if test "x${PYQTDIR}" != "x"; then
+  dnl try {PYQTDIR}
+  AC_CHECK_FILE(${PYQTDIR}/libqtcmodule.so,pyqt_lib_ok=yes,pyqt_lib_ok=no)
+  if test "x$pyqt_lib_ok" == "xyes"; then
+    if test "x${PYQTDIR}" = "x/usr/lib"
+    then
+      PYQT_LIBS="-lqtcmodule"
+    else
+      PYQT_LIBS="-L${PYQTDIR} -lqtcmodule"
+    fi
+  else 
+    AC_CHECK_FILE(${PYQTDIR}/qt.so,pyqt_lib_ok=yes,pyqt_lib_ok=no)
+    if test "x$pyqt_lib_ok" == "xyes"; then
+      if test "x${PYQTDIR}" = "x/usr/lib"
+      then
+        PYQT_LIBS=""
+      else
+        PYQT_LIBS="-L${PYQTDIR}"
+      fi
+    fi
+  fi
+  if test "x$pyqt_lib_ok" == "xno"; then
+    dnl try {PYQTDIR}/lib
+    if test -d {PYQTDIR}/lib; then
+      AC_CHECK_FILE(${PYQTDIR}/lib/libqtcmodule.so,pyqt_lib_ok=yes,pyqt_lib_ok=no)
+      if test "x$pyqt_lib_ok" == "xyes"; then
+        PYQT_LIBS="-L${PYQTDIR}/lib -lqtcmodule"
+      else 
+        AC_CHECK_FILE(${PYQTDIR}/lib/qt.so,pyqt_lib_ok=yes,pyqt_lib_ok=no)
+        if test "x$pyqt_lib_ok" == "xyes"; then
+          PYQT_LIBS="-L${PYQTDIR}/lib"
+        fi
+      fi
+    fi
+  fi
+  if test "x$pyqt_lib_ok" == "xno"; then
+    dnl try {PYQTDIR}/lib/python${PYTHON_VERSION}/site-packages
+    if test -d {PYQTDIR}/lib/python${PYTHON_VERSION}/site-packages; then
+      AC_CHECK_FILE(${PYQTDIR}/lib/python${PYTHON_VERSION}/site-packages/libqtcmodule.so,pyqt_lib_ok=yes,pyqt_lib_ok=no)
+      if test "x$pyqt_lib_ok" == "xyes"; then
+        PYQT_LIBS="-L${PYQTDIR}/lib/python${PYTHON_VERSION}/site-packages -lqtcmodule"
+      else 
+        AC_CHECK_FILE(${PYQTDIR}/lib/python${PYTHON_VERSION}/site-packages/qt.so,pyqt_lib_ok=yes,pyqt_lib_ok=no)
+        if test "x$pyqt_lib_ok" == "xyes"; then
+          PYQT_LIBS="-L${PYQTDIR}/lib/python${PYTHON_VERSION}/site-packages"
+        fi
+      fi
+    fi
+  fi
 fi
-  
-AC_CHECK_FILE("$PYUIC",pyqt_ok=yes,pyqt_ok=no)
-
-if test "x$pyqt_ok" = xyes ; then
-  AC_CHECK_FILES("$PYQTLIB/qt.py",pyqt_ok=yes,pyqt_ok=no)
+if test "x$pyqt_lib_ok" == "xno"; then
+  dnl try ${SIPDIR}
+  if test "x${SIPDIR}" != "x"; then
+    if test -d ${SIPDIR} ; then
+      AC_CHECK_FILE(${SIPDIR}/libqtcmodule.so,pyqt_lib_ok=yes,pyqt_lib_ok=no)
+      if test "x$pyqt_lib_ok" == "xyes"; then
+        if test "x${SIPDIR}" = "x/usr/lib"
+        then
+          PYQT_LIBS="-lqtcmodule"
+        else
+          PYQT_LIBS="-L${SIPDIR} -lqtcmodule"
+        fi
+      else 
+        AC_CHECK_FILE(${SIPDIR}/qt.so,pyqt_lib_ok=yes,pyqt_lib_ok=no)
+        if test "x$pyqt_lib_ok" == "xyes"; then
+          if test "x${SIPDIR}" = "x/usr/lib"
+          then
+            PYQT_LIBS=""
+          else
+            PYQT_LIBS="-L${SIPDIR}"
+          fi
+        fi
+      fi
+    fi
+  fi
 fi
-
-if test "x$pyqt_ok" = xno ; then
-  AC_CHECK_FILES("$PYQTLIB/qt/qt.py",pyqt_ok=yes,pyqt_ok=no)
+if test "x$pyqt_lib_ok" == "xno"; then
+  dnl try ${PYTHONHOME}/lib/python${PYTHON_VERSION}/site-packages
+  if test "x${PYTHONHOME}" != "x"; then
+    if test -d ${PYTHONHOME}/lib/python${PYTHON_VERSION}/site-packages ; then
+      AC_CHECK_FILE(${PYTHONHOME}/lib/python${PYTHON_VERSION}/site-packages/libqtcmodule.so,pyqt_lib_ok=yes,pyqt_lib_ok=no)
+      if test "x$pyqt_lib_ok" == "xyes"; then
+        PYQT_LIBS="-L${PYTHONHOME}/lib/python${PYTHON_VERSION}/site-packages -lqtcmodule"
+      else 
+        AC_CHECK_FILE(${PYTHONHOME}/lib/python${PYTHON_VERSION}/site-packages/qt.so,pyqt_lib_ok=yes,pyqt_lib_ok=no)
+        if test "x$pyqt_lib_ok" == "xyes"; then
+          PYQT_LIBS="-L${PYTHONHOME}/lib/python${PYTHON_VERSION}/site-packages"
+        fi
+      fi
+    fi
+  fi   
 fi
-
-if test "x$pyqt_ok" = xyes ; then
-  AC_CHECK_FILE("$PYQTLIB/libqtcmodule.so",pyqt_ok=yes,pyqt_ok=no)
+if test "x$pyqt_lib_ok" == "xno"; then
+  dnl try /usr/lib/python${PYTHON_VERSION}/site-packages
+  AC_CHECK_FILE(/usr/lib/python${PYTHON_VERSION}/site-packages/libqtcmodule.so,pyqt_lib_ok=yes,pyqt_lib_ok=no)
+  if test "x$pyqt_lib_ok" == "xyes"; then
+    PYQT_LIBS="-L/usr/lib/python${PYTHON_VERSION}/site-packages -lqtcmodule"
+  else 
+    AC_CHECK_FILE(/usr/lib/python${PYTHON_VERSION}/site-packages/qt.so,pyqt_lib_ok=yes,pyqt_lib_ok=no)
+    if test "x$pyqt_lib_ok" == "xyes"; then
+      PYQT_LIBS="-L/usr/lib/python${PYTHON_VERSION}/site-packages"
+    fi
+  fi
+fi
+if test "x$pyqt_lib_ok" == "xno"; then
+  pyqt_ok=no
 fi
 
-if test "x$pyqt_ok" = xyes ; then
-  AC_CHECK_FILES("$PYQT_SIPS/qtmod.sip",pyqt_ok=yes,pyqt_ok=no)
+dnl look for PyQt sips
+pyqt_sips_ok=no
+dnl try ${PYQT_SIPS} or ${PYQT_SIPS}/qt
+if test "x${PYQT_SIPS}" != "x"; then
+  AC_CHECK_FILE(${PYQT_SIPS}/qglobal.sip,pyqt_sips_ok=yes,pyqt_sips_ok=no)
+  if test "x$pyqt_sips_ok" == "xno"; then
+    AC_CHECK_FILE(${PYQT_SIPS}/qt/qglobal.sip,pyqt_sips_ok=yes,pyqt_sips_ok=no)
+    if test "x$pyqt_sips_ok" == "xyes"; then
+      PYQT_SIPS="${PYQT_SIPS}/qt"
+    fi
+  fi
 fi
-if test "x$pyqt_ok" = xyes ; then
-  AC_CHECK_FILE("$PYQT_SIPS/copying.sip",pyqt_ok=yes,pyqt_ok=no)
+if test "x$pyqt_sips_ok" == "xno"; then
+  dnl try ${PYQTDIR}/sip
+  if test "x${PYQTDIR}" != "x"; then
+    if test -d ${PYQTDIR}/sip ; then
+      AC_CHECK_FILE(${PYQTDIR}/sip/qglobal.sip,pyqt_sips_ok=yes,pyqt_sips_ok=no)
+      if test "x$pyqt_sips_ok" == "xyes"; then
+        PYQT_SIPS="${PYQTDIR}/sip"
+      else
+        AC_CHECK_FILE(${PYQTDIR}/sip/qt/qglobal.sip,pyqt_sips_ok=yes,pyqt_sips_ok=no)
+        if test "x$pyqt_sips_ok" == "xyes"; then
+          PYQT_SIPS="${PYQTDIR}/sip/qt"
+        fi
+      fi
+    fi
+  fi
 fi
-
-if test "x$pyqt_ok" = xyes ; then
-  PYQT_ROOT=$PYQTDIR
+if test "x$pyqt_sips_ok" == "xno"; then
+  dnl try ${SIPDIR}/sip
+  if test "x${SIPDIR}" != "x"; then
+    if test -d ${SIPDIR}/sip ; then
+      AC_CHECK_FILE(${SIPDIR}/sip/qglobal.sip,pyqt_sips_ok=yes,pyqt_sips_ok=no)
+      if test "x$pyqt_sips_ok" == "xyes"; then
+        PYQT_SIPS="${SIPDIR}/sip"
+      else
+        AC_CHECK_FILE(${SIPDIR}/sip/qt/qglobal.sip,pyqt_sips_ok=yes,pyqt_sips_ok=no)
+        if test "x$pyqt_sips_ok" == "xyes"; then
+          PYQT_SIPS="${SIPDIR}/sip/qt"
+        fi
+      fi
+    fi
+  fi
+fi
+if test "x$pyqt_sips_ok" == "xno"; then
+  dnl try /usr/share/sip
+  if test -d /usr/share/sip ; then
+    AC_CHECK_FILE(/usr/share/sip/qglobal.sip,pyqt_sips_ok=yes,pyqt_sips_ok=no)
+    if test "x$pyqt_sips_ok" == "xyes"; then
+      PYQT_SIPS="/usr/share/sip"
+    else
+      AC_CHECK_FILE(/usr/share/sip/qt/qglobal.sip,pyqt_sips_ok=yes,pyqt_sips_ok=no)
+      if test "x$pyqt_sips_ok" == "xyes"; then
+        PYQT_SIPS="/usr/share/sip/qt"
+      fi
+    fi
+  fi
+fi
+if test "x$pyqt_sips_ok" == "xno"; then
+  pyqt_ok=no
+else
   PYQT_INCLUDES="-I$PYQT_SIPS"
-  PYQT_LIBS="-L$PYQTLIB -lqtcmodule"
-  AC_SUBST(PYQT_ROOT)
-  AC_SUBST(PYQT_INCLUDES)
-  AC_SUBST(PYQT_LIBS)
-  AC_SUBST(PYQT_SIPS)
-  AC_SUBST(PYUIC)
+  
+  dnl Additional sip flags required for correct wrappers compilation
+  AC_MSG_CHECKING(which qt classes should be excluded)
+
+  PYQT_SIPFLAGS=""
+
+  CXXFLAGS_old=$CXXFLAGS
+  CXXFLAGS="$CXXFLAGS $QT_INCLUDES"
+  LIBS_old=$LIBS
+  LIBS="$LIBS $QT_LIBS"
+
+  AC_TRY_COMPILE([#include <qcdestyle.h>],
+                 [new QCDEStyle();],,PYQT_SIPFLAGS="$PYQT_SIPFLAGS -x Qt_STYLE_CDE")
+  AC_TRY_COMPILE([#include <qinterlacestyle.h>],
+                 [new QInterlaceStyle();],,PYQT_SIPFLAGS="$PYQT_SIPFLAGS -x Qt_STYLE_INTERLACE")
+  AC_TRY_COMPILE([#include <qmotifstyle.h>],
+                 [new QMotifStyle();],,PYQT_SIPFLAGS="$PYQT_SIPFLAGS -x Qt_STYLE_MOTIF")
+  AC_TRY_COMPILE([#include <qmotifplusstyle.h>],
+                 [new QMotifPlusStyle();],,PYQT_SIPFLAGS="$PYQT_SIPFLAGS -x Qt_STYLE_MOTIFPLUS")
+  AC_TRY_COMPILE([#include <qplatinumstyle.h>],
+                 [new QPlatinumStyle();],,PYQT_SIPFLAGS="$PYQT_SIPFLAGS -x Qt_STYLE_PLATINUM")
+  AC_TRY_COMPILE([#include <qsgistyle.h>],
+                 [new QSGIStyle();],,PYQT_SIPFLAGS="$PYQT_SIPFLAGS -x Qt_STYLE_SGI")
+  AC_TRY_COMPILE([#include <qwindowsstyle.h>],
+                 [new QWindowsStyle();],,PYQT_SIPFLAGS="$PYQT_SIPFLAGS -x Qt_STYLE_WINDOWS")
+  AC_TRY_COMPILE([#include <qwindowsxpstyle.h>],
+                 [new QWindowsXPStyle();],,PYQT_SIPFLAGS="$PYQT_SIPFLAGS -x Qt_STYLE_WINDOWSXP")
+
+  LIBS="$LIBS -lqassistantclient"
+  AC_TRY_LINK([#include <qassistantclient.h>],
+              [new QAssistantClient("foo");],,PYQT_SIPFLAGS="$PYQT_SIPFLAGS -x Qt_ASSISTANTCLIENT")
+
+  AC_MSG_RESULT(done)
+
+  CXXFLAGS=$CXXFLAGS_old
+  LIBS=$LIBS_old
 fi
 
+AC_SUBST(PYQT_INCLUDES)
+AC_SUBST(PYQT_LIBS)
+AC_SUBST(PYQT_SIPS)
+AC_SUBST(PYUIC)
+AC_SUBST(PYQT_SIPFLAGS)
+
+AC_LANG_RESTORE
+
+AC_MSG_RESULT(for pyqt: $pyqt_ok)
+
 ])dnl
 dnl
 
index b27de2779cb4cb176f9f0472407ec1e4f14fcc3a..3faa1e990dd1076a526628175ecb53028d9c20e0 100644 (file)
@@ -37,6 +37,14 @@ if test "x$QTDIR" = "x"
 then
    AC_MSG_RESULT(please define QTDIR variable)
    qt_ok=no
+else
+   AC_MSG_RESULT(QTDIR is $QTDIR)
+   qt_inc_ok=no
+   QTINC=""
+   AC_CHECK_FILE(${QTDIR}/include/qt3/qglobal.h,QTINC="/qt3",QTINC="")
+   QT_VERS=`grep "QT_VERSION_STR" ${QTDIR}/include${QTINC}/qglobal.h | sed -e 's%^#define QT_VERSION_STR\([[:space:]]*\)%%g' -e 's%\"%%g'`
+   AC_MSG_RESULT(Qt version is $QT_VERS)
+   QT_VERS="Qt_"`echo $QT_VERS | sed -e 's%\"%%g' -e 's%\.%_%g'`
 fi
 
 if  test "x$qt_ok" = "xyes"
@@ -81,7 +89,7 @@ QT_ROOT=$QTDIR
 if  test "x$qt_ok" = "xyes"
 then
   CPPFLAGS_old=$CPPFLAGS
-  CPPFLAGS="$CPPFLAGS -I$QTDIR/include"
+  CPPFLAGS="$CPPFLAGS -I$QTDIR/include${QTINC}"
 
   AC_LANG_CPLUSPLUS
   AC_CHECK_HEADER(qaction.h,qt_ok=yes ,qt_ok=no)
@@ -96,8 +104,8 @@ then
     AC_MSG_RESULT(QTDIR environment variable may be wrong)
   else
     AC_MSG_RESULT(yes)
-    QT_INCLUDES="-I${QT_ROOT}/include -DQT_THREAD_SUPPORT"
-    QT_MT_INCLUDES="-I${QT_ROOT}/include -DQT_THREAD_SUPPORT"
+    QT_INCLUDES="-I${QT_ROOT}/include${QTINC} -DQT_THREAD_SUPPORT"
+    QT_MT_INCLUDES="-I${QT_ROOT}/include${QTINC} -DQT_THREAD_SUPPORT"
   fi
 fi
 
@@ -105,10 +113,15 @@ if  test "x$qt_ok" = "xyes"
 then
   AC_MSG_CHECKING(linking qt library)
   LIBS_old=$LIBS
-  LIBS="$LIBS -L$QTDIR/lib -lqt-mt $OGL_LIBS"
+  if test "x$QTDIR" = "x/usr"
+  then
+    LIBS="$LIBS -lqt-mt $OGL_LIBS"
+  else
+    LIBS="$LIBS -L$QTDIR/lib -lqt-mt $OGL_LIBS"
+  fi
 
   CXXFLAGS_old=$CXXFLAGS
-  CXXFLAGS="$CXXFLAGS -I$QTDIR/include"
+  CXXFLAGS="$CXXFLAGS $QT_INCLUDES"
 
   AC_CACHE_VAL(salome_cv_lib_qt,[
     AC_TRY_LINK(
@@ -127,8 +140,14 @@ then
     AC_MSG_RESULT(QTDIR environment variable may be wrong)
   else
     AC_MSG_RESULT(yes)
-       QT_LIBS="-L$QTDIR/lib -lqt-mt"
-    QT_MT_LIBS="-L$QTDIR/lib -lqt-mt"
+    if test "x$QTDIR" = "x/usr"
+    then
+         QT_LIBS=" -lqt-mt"
+      QT_MT_LIBS=" -lqt-mt"
+    else
+         QT_LIBS="-L$QTDIR/lib -lqt-mt"
+      QT_MT_LIBS="-L$QTDIR/lib -lqt-mt"
+    fi
   fi
 
   LIBS=$LIBS_old
@@ -143,6 +162,7 @@ AC_SUBST(QT_ROOT)
 AC_SUBST(QT_INCLUDES)
 AC_SUBST(QT_LIBS)
 AC_SUBST(QT_MT_LIBS)
+AC_SUBST(QT_VERS)
 
 AC_LANG_RESTORE
 
index 4e541d70d80dd9b65e2231cd70e638c283457b59..f1b456ddad3d6947f3045170b994850e21a1c34a 100644 (file)
@@ -22,19 +22,36 @@ AC_ARG_WITH(qwt_inc,
     ])
 
 if test -z $QWTHOME; then
+  AC_MSG_RESULT(QWTHOME not defined)
   exits_ok=no  
-  AC_CHECK_FILE("/usr/local/lib/libqwt.so",exits_ok=yes,exits_ok=no)
+  if test "x$exits_ok" = "xno"; then
+     for d in /usr/local /usr ; do
+        AC_CHECK_FILE(${d}/lib/libqwt.so,exits_ok=yes,exits_ok=no)
+        if test "x$exits_ok" = "xyes"; then
+           QWTHOME=$d
+           AC_MSG_RESULT(libqwt.so detected in $d/lib)
+        fi
+     done
+  fi
+  if test "x$exits_ok" = "xno"; then
+     for d in `echo $LD_LIBRARY_PATH | sed -e "s/:/ /g"` ; do
+        if test -f $d/libqwt.so ; then
+           AC_MSG_RESULT(libqwt.so detected in $d)
+           QWTHOME=$d
+           QWTHOME=`echo ${QWTHOME} | sed -e "s,[[^/]]*$,,;s,/$,,;s,^$,.,"`
+           exits_ok=yes
+           break
+        fi
+     done
+  fi
   if test "x$exits_ok" = "xyes"; then
-     QWTHOME="/usr/local/lib"    
-     if test -z $QWT_INCLUDES; then
-        QWT_INCLUDES="/usr/local/include/qwt"
-     fi
-  else
-     QWTHOME="/usr/lib"   
      if test -z $QWT_INCLUDES; then
-        QWT_INCLUDES="/usr/include/qwt"
+        QWT_INCLUDES=$QWTHOME"/include/qwt"
+        if test ! -d $QWT_INCLUDES; then
+           QWT_INCLUDES=$QWTHOME"/include"
+        fi
      fi
-  fi   
+  fi
 else
   if test -z $QWT_INCLUDES; then
      QWT_INCLUDES="$QWTHOME/include"
@@ -50,7 +67,7 @@ else
    AC_LANG_CPLUSPLUS
    CPPFLAGS_old=$CPPFLAGS
    CPPFLAGS="$CPPFLAGS -I$QWT_INCLUDES"
-   CPPFLAGS="$CPPFLAGS -I$QTDIR/include"
+   CPPFLAGS="$CPPFLAGS $QT_INCLUDES"
 
    AC_CHECK_HEADER(qwt.h,qwt_ok=yes,qwt_ok=no) 
 
@@ -67,10 +84,21 @@ if  test "x$qwt_ok" = "xyes"
 then
   AC_MSG_CHECKING(linking qwt library)
   LIBS_old=$LIBS
-  LIBS="$LIBS -L$QTDIR/lib -lqt-mt -L$QWTHOME/lib -lqwt"
+  if test "x$QTDIR" = "x/usr"
+  then
+    LIBS="$LIBS -lqt-mt"
+  else
+    LIBS="$LIBS -L$QTDIR/lib -lqt-mt"
+  fi
+  if test "x$QWTHOME" = "x/usr/lib"
+  then
+    LIBS="$LIBS -lqwt"
+  else
+    LIBS="$LIBS -L$QWTHOME/lib -lqwt"
+  fi
 
   CXXFLAGS_old=$CXXFLAGS
-  CXXFLAGS="$CXXFLAGS -I$QTDIR/include -I$QWT_INCLUDES"
+  CXXFLAGS="$CXXFLAGS $QT_INCLUDES -I$QWT_INCLUDES"
 
   AC_CACHE_VAL(salome_cv_lib_qwt,[
     AC_TRY_LINK(
@@ -92,7 +120,12 @@ then
     AC_MSG_RESULT(QWTHOME environment variable may be wrong)
   else
     QWT_INCLUDES="-I$QWT_INCLUDES"
-    QWT_LIBS="-L$QWTHOME/lib -lqwt"
+    if test "x$QWTHOME" = "x/usr/lib"
+    then
+      QWT_LIBS=" -lqwt"
+    else
+      QWT_LIBS="-L$QWTHOME/lib -lqwt"
+    fi
 
     AC_SUBST(QWT_INCLUDES)
     AC_SUBST(QWT_LIBS)
index 84c2beaf73829cdb40eff8f552fb44e7bd698962..245f2382ee200c658920e7c611dfef42445ea64a 100644 (file)
@@ -2,6 +2,7 @@ dnl Copyright (C) 2003  CEA/DEN, EDF R&D
 
 AC_DEFUN([CHECK_SIP],[
 AC_REQUIRE([CHECK_PYTHON])dnl
+AC_REQUIRE([CHECK_QT])dnl
 
 sip_ok=yes
 
@@ -13,75 +14,146 @@ AC_ARG_WITH(sip,
       AC_PATH_PROG(SIP, sip)
     ])
 
-if test "x$SIP" = "x"
-then
+if test "x$SIP" = "x" ; then
     sip_ok=no
     AC_MSG_RESULT(sip not in PATH variable)
 else
-    version=`sip -V`
+    version=`$SIP -V`
+    AC_MSG_RESULT(sip version is $version)
     case "$version" in
          3.2*)
-           SIP_VERS=old ;;
+           SIP_VERS=v3_old ;;
          3.3*)
-           SIP_VERS=old ;;
+           SIP_VERS=v3_old ;;
          3.4*)
-           SIP_VERS=new ;;
+           SIP_VERS=v3_old ;;
          3.5*)
-           SIP_VERS=new ;;
+           SIP_VERS=v3_old ;;
          3.6*)
-           SIP_VERS=new ;;
+           SIP_VERS=v3_old ;;
          3.7*)
-           SIP_VERS=new ;;
+           SIP_VERS=v3_old ;;
          3.8*)
-           SIP_VERS=new ;;
+           SIP_VERS=v3_old ;;
          3.9*)
-           SIP_VERS=new ;;
+           SIP_VERS=v3_old ;;
          3.10*)
-           SIP_VERS=new2 ;;
+           SIP_VERS=v3_new ;;
+         4.1*)
+           SIP_VERS=v4_old ;;
+         4.2*)
+           SIP_VERS=v4_new ;;
          *)
            AC_MSG_RESULT(sip version $version not supported)
-           SIP_VERS=no ;;
+           SIP_VERS=unsupported ;;
     esac
-    sip_ok=no
 
-    if test "x$SIP_VERS" = "xold"
-    then
-        dnl old install : includes and libs are in python install or in SIPDIR
-        AC_MSG_RESULT(old install detected)
-        sip_ok=yes
-       SIP_ROOT="$SIPDIR"
-       SIP_INCLUDES="${PYTHON_INCLUDES} -I${SIPDIR}"
-       SIP_LIBS="-L${PYTHON_PREFIX}/lib/python${PYTHON_VERSION}/site-packages -L${SIPDIR} -lsip"
+    sip_ok=no
+    dnl Search sip.h file
+    if test "x$SIPDIR" != "x" ; then
+        dnl look for sip.h in ${SIPDIR}
+        AC_CHECK_FILE(${SIPDIR}/sip.h,sip_ok=yes,sip_ok=no)
+       if test "x$sip_ok" == "xyes" ; then
+           SIP_INCLUDES="-I${SIPDIR}"
+       fi
+        if test "x$sip_ok" == "xno" ; then
+            dnl look for sip.h in ${SIPDIR}/include/python${PYTHON_VERSION}
+           if test -d ${SIPDIR}/include/python${PYTHON_VERSION} ; then
+               AC_CHECK_FILE(${SIPDIR}/include/python${PYTHON_VERSION}/sip.h,sip_ok=yes,sip_ok=no)
+               if test "x$sip_ok" == "xyes" ; then
+                   SIP_INCLUDES="-I${SIPDIR}/include/python${PYTHON_VERSION}"
+               fi
+           fi
+       fi
     fi
-
-    if test "x$SIP_VERS" = "xnew"
-    then
-       sip_ok=yes
-       if test -d ${SIPDIR}/include/python${PYTHON_VERSION} ; then
-           AC_MSG_RESULT(new install with include dir detected)
-           dnl new install with include dir : includes and libs are in python install or in SIPDIR/include
-          SIP_ROOT="$SIPDIR"
-          SIP_INCLUDES="${PYTHON_INCLUDES} -I${SIPDIR}/include/python${PYTHON_VERSION}"
-          SIP_LIBS="-L${SIPDIR}/lib/python${PYTHON_VERSION}/site-packages -lsip"
-       else
-           dnl new install without include dir : includes and libs are in SIPDIR
-           AC_MSG_RESULT(new install without include dir detected)
-          sip_ok=yes
-          SIP_ROOT="$SIPDIR"
-          SIP_INCLUDES="-I${SIPDIR}"
-          SIP_LIBS="-L${SIPDIR} -lsip"
-        fi
+    if test "x$sip_ok" == "xno" ; then
+        dnl look for sip.h in ${PYTHON_PREFIX}/include/python${PYTHON_VERSION}
+       if test -d ${PYTHON_PREFIX}/include/python${PYTHON_VERSION} ; then
+            AC_CHECK_FILE(${PYTHON_PREFIX}/include/python${PYTHON_VERSION}/sip.h,sip_ok=yes,sip_ok=no)
+           if test "x$sip_ok" == "xyes" ; then
+               SIP_INCLUDES="${PYTHON_INCLUDES}"
+            fi
+       fi
+    fi
+    if test "x$sip_ok" == "xno" ; then
+        dnl look for sip.h in /usr/include/python${PYTHON_VERSION}
+       if test -d /usr/include/python${PYTHON_VERSION} ; then
+            AC_CHECK_FILE(/usr/include/python${PYTHON_VERSION}/sip.h,sip_ok=yes,sip_ok=no)
+           if test "x$sip_ok" == "xyes" ; then
+               SIP_INCLUDES="/usr/include/python${PYTHON_VERSION}"
+            fi
+       fi
     fi
+       
+    dnl Search (lib)sip.so file
+    sip_lib_ok=no
+    if test "x$SIPDIR" != "x" ; then
+        dnl look for (lib)sip.so in ${SIPDIR}
+        AC_CHECK_FILE(${SIPDIR}/libsip.so,sip_lib_ok=yes,sip_lib_ok=no)
+       if test "x$sip_lib_ok" == "xyes" ; then
+            if test "x${SIPDIR}" = "x/usr/lib"
+            then
+              SIP_LIBS="-lsip"
+            else
+              SIP_LIBS="-L${SIPDIR} -lsip"
+            fi
+       else
+           AC_CHECK_FILE(${SIPDIR}/sip.so,sip_lib_ok=yes,sip_lib_ok=no)
+           if test "x$sip_lib_ok" == "xyes" ; then
+              if test "x${SIPDIR}" = "x/usr/lib"
+              then
+                SIP_LIBS=""
+              else
+                SIP_LIBS="-L${SIPDIR}"
+              fi
+           fi
+       fi
 
-    if test "x$SIP_VERS" = "xnew2"
-        then
-        dnl new2 install : includes and libs are in python install 
-        AC_MSG_RESULT(new2 install detected)
-       sip_ok=yes
-        AC_CHECK_FILE($PYTHON_PREFIX/include/python$PYTHON_VERSION/sip.h,sip_ok=$sip_ok,sip_ok=no)
-       SIP_INCLUDES="${PYTHON_INCLUDES}"
-        AC_CHECK_FILE($PYTHON_PREFIX/lib/python$PYTHON_VERSION/site-packages/libsip.so,sip_ok=$sip_ok,sip_ok=no)
-       SIP_LIBS="-L${PYTHON_PREFIX}/lib/python${PYTHON_VERSION}/site-packages -lsip"
+        if test "x$sip_lib_ok" == "xno" ; then
+            dnl look for (lib)sip.so in ${SIPDIR}/lib/python${PYTHON_VERSION}/site-packages
+           if test -d ${SIPDIR}/lib/python${PYTHON_VERSION}/site-packages ; then
+               AC_CHECK_FILE(${SIPDIR}/lib/python${PYTHON_VERSION}/site-packages/libsip.so,sip_lib_ok=yes,sip_lib_ok=no)
+               if test "x$sip_lib_ok" == "xyes" ; then
+                   SIP_LIBS="-L${SIPDIR}/lib/python${PYTHON_VERSION}/site-packages -lsip"
+               else
+                   AC_CHECK_FILE(${SIPDIR}/lib/python${PYTHON_VERSION}/site-packages/sip.so,sip_lib_ok=yes,sip_lib_ok=no)
+                   if test "x$sip_lib_ok" == "xyes" ; then
+                       SIP_LIBS="-L${SIPDIR}/lib/python${PYTHON_VERSION}/site-packages"
+                   fi
+               fi
+           fi
+       fi
+    fi
+    if test "x$sip_lib_ok" == "xno" ; then
+        dnl look for (lib)sip.so in ${PYTHON_PREFIX}/lib/python${PYTHON_VERSION}/site-packages
+       if test -d ${PYTHON_PREFIX}/lib/python${PYTHON_VERSION}/site-packages ; then
+            AC_CHECK_FILE(${PYTHON_PREFIX}/lib/python${PYTHON_VERSION}/site-packages/libsip.so,sip_lib_ok=yes,sip_lib_ok=no)
+           if test "x$sip_lib_ok" == "xyes" ; then
+               SIP_LIBS="-L${PYTHON_PREFIX}/lib/python${PYTHON_VERSION}/site-packages -lsip"
+           else
+               AC_CHECK_FILE(${PYTHON_PREFIX}/lib/python${PYTHON_VERSION}/site-packages/sip.so,sip_lib_ok=yes,sip_lib_ok=no)
+                if test "x$sip_lib_ok" == "xyes" ; then
+                   SIP_LIBS="-L${PYTHON_PREFIX}/lib/python${PYTHON_VERSION}/site-packages"
+                fi
+           fi
+       fi
+    fi
+    if test "x$sip_lib_ok" == "xno" ; then
+        dnl look for (lib)sip.so in /usr/lib/python${PYTHON_VERSION}/site-packages
+       if test -d /usr/lib/python${PYTHON_VERSION}/site-packages ; then
+            AC_CHECK_FILE(/usr/lib/python${PYTHON_VERSION}/site-packages/libsip.so,sip_lib_ok=yes,sip_lib_ok=no)
+           if test "x$sip_lib_ok" == "xyes" ; then
+               SIP_LIBS="-L$/usr/lib/python${PYTHON_VERSION}/site-packages -lsip"
+           else
+               AC_CHECK_FILE(/usr/lib/python${PYTHON_VERSION}/site-packages/sip.so,sip_lib_ok=yes,sip_lib_ok=no)
+                if test "x$sip_lib_ok" == "xyes" ; then
+                   SIP_LIBS="-L/usr/lib/python${PYTHON_VERSION}/site-packages"
+               fi
+            fi
+       fi
+    fi
+    if test "x$sip_lib_ok" == "xno" ; then
+        sip_ok=no
     fi
 fi
 
index 4b4b1454fab0c07c93f3cdcb6d164863b686e03a..df9245b5de903be1c160a1b0b9c6b232ded6f716 100644 (file)
@@ -55,6 +55,21 @@ else
    LXLIB=""
 fi
 
+if test "x$x_libraries" = "x/usr/lib"
+then
+   LXLIB=""
+fi
+
+if test "x$x_libraries" = "x/usr/lib"
+then
+   LXLIB=""
+fi
+
+if test "x$x_libraries" = "x/usr/lib"
+then
+   LXLIB=""
+fi
+
 LOCAL_INCLUDES="$OGL_INCLUDES"
 LOCAL_LIBS="-lvtkCommon -lvtkGraphics -lvtkImaging -lvtkFiltering -lvtkIO -lvtkRendering -lvtkHybrid $OGL_LIBS $LXLIB -lX11 -lXt"
 TRY_LINK_LIBS="-lvtkCommon $OGL_LIBS $LXLIB -lX11 -lXt"
@@ -62,7 +77,14 @@ TRY_LINK_LIBS="-lvtkCommon $OGL_LIBS $LXLIB -lX11 -lXt"
 if test -z $VTKHOME
 then 
    AC_MSG_WARN(undefined VTKHOME variable which specify where vtk was compiled)
-else
+   if test -f /usr/include/vtk/vtkPlane.h ; then
+      AC_MSG_RESULT(trying /usr)
+      VTKHOME="/usr"
+   fi
+fi
+
+if test ! -z $VTKHOME
+then
    LOCAL_INCLUDES="-I$VTKHOME/include/vtk $LOCAL_INCLUDES"
    LOCAL_LIBS="-L$VTKHOME/lib/vtk $LOCAL_LIBS"
    TRY_LINK_LIBS="-L$VTKHOME/lib/vtk $TRY_LINK_LIBS"
index 8c5cd7d5aa3678d17803209bef372e0fa282d4ad..f28545379c4630e8c7d38bcff577aa6ba969ed01 100644 (file)
@@ -22,7 +22,7 @@
 ## the same distribution terms that you use for the rest of that program.
 
 # serial 40 AC_PROG_LIBTOOL
-AC_DEFUN(AC_PROG_LIBTOOL,
+AC_DEFUN([AC_PROG_LIBTOOL],
 [AC_REQUIRE([AC_LIBTOOL_SETUP])dnl
 
 # Save cache, so that ltconfig can load it
@@ -52,7 +52,7 @@ AC_SUBST(LIBTOOL)dnl
 exec 5>>./config.log
 ])
 
-AC_DEFUN(AC_LIBTOOL_SETUP,
+AC_DEFUN([AC_LIBTOOL_SETUP],
 [AC_PREREQ(2.13)dnl
 AC_REQUIRE([AC_ENABLE_SHARED])dnl
 AC_REQUIRE([AC_ENABLE_STATIC])dnl
@@ -137,16 +137,16 @@ esac
 ])
 
 # AC_LIBTOOL_DLOPEN - enable checks for dlopen support
-AC_DEFUN(AC_LIBTOOL_DLOPEN, [AC_BEFORE([$0],[AC_LIBTOOL_SETUP])])
+AC_DEFUN([AC_LIBTOOL_DLOPEN], [AC_BEFORE([$0],[AC_LIBTOOL_SETUP])])
 
 # AC_LIBTOOL_WIN32_DLL - declare package support for building win32 dll's
-AC_DEFUN(AC_LIBTOOL_WIN32_DLL, [AC_BEFORE([$0], [AC_LIBTOOL_SETUP])])
+AC_DEFUN([AC_LIBTOOL_WIN32_DLL], [AC_BEFORE([$0], [AC_LIBTOOL_SETUP])])
 
 # AC_ENABLE_SHARED - implement the --enable-shared flag
 # Usage: AC_ENABLE_SHARED[(DEFAULT)]
 #   Where DEFAULT is either `yes' or `no'.  If omitted, it defaults to
 #   `yes'.
-AC_DEFUN(AC_ENABLE_SHARED, [dnl
+AC_DEFUN([AC_ENABLE_SHARED], [dnl
 define([AC_ENABLE_SHARED_DEFAULT], ifelse($1, no, no, yes))dnl
 AC_ARG_ENABLE(shared,
 changequote(<<, >>)dnl
@@ -172,14 +172,14 @@ enable_shared=AC_ENABLE_SHARED_DEFAULT)dnl
 ])
 
 # AC_DISABLE_SHARED - set the default shared flag to --disable-shared
-AC_DEFUN(AC_DISABLE_SHARED, [AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl
+AC_DEFUN([AC_DISABLE_SHARED], [AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl
 AC_ENABLE_SHARED(no)])
 
 # AC_ENABLE_STATIC - implement the --enable-static flag
 # Usage: AC_ENABLE_STATIC[(DEFAULT)]
 #   Where DEFAULT is either `yes' or `no'.  If omitted, it defaults to
 #   `yes'.
-AC_DEFUN(AC_ENABLE_STATIC, [dnl
+AC_DEFUN([AC_ENABLE_STATIC], [dnl
 define([AC_ENABLE_STATIC_DEFAULT], ifelse($1, no, no, yes))dnl
 AC_ARG_ENABLE(static,
 changequote(<<, >>)dnl
@@ -205,7 +205,7 @@ enable_static=AC_ENABLE_STATIC_DEFAULT)dnl
 ])
 
 # AC_DISABLE_STATIC - set the default static flag to --disable-static
-AC_DEFUN(AC_DISABLE_STATIC, [AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl
+AC_DEFUN([AC_DISABLE_STATIC], [AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl
 AC_ENABLE_STATIC(no)])
 
 
@@ -213,7 +213,7 @@ AC_ENABLE_STATIC(no)])
 # Usage: AC_ENABLE_FAST_INSTALL[(DEFAULT)]
 #   Where DEFAULT is either `yes' or `no'.  If omitted, it defaults to
 #   `yes'.
-AC_DEFUN(AC_ENABLE_FAST_INSTALL, [dnl
+AC_DEFUN([AC_ENABLE_FAST_INSTALL], [dnl
 define([AC_ENABLE_FAST_INSTALL_DEFAULT], ifelse($1, no, no, yes))dnl
 AC_ARG_ENABLE(fast-install,
 changequote(<<, >>)dnl
@@ -239,11 +239,11 @@ enable_fast_install=AC_ENABLE_FAST_INSTALL_DEFAULT)dnl
 ])
 
 # AC_ENABLE_FAST_INSTALL - set the default to --disable-fast-install
-AC_DEFUN(AC_DISABLE_FAST_INSTALL, [AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl
+AC_DEFUN([AC_DISABLE_FAST_INSTALL], [AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl
 AC_ENABLE_FAST_INSTALL(no)])
 
 # AC_PROG_LD - find the path to the GNU or non-GNU linker
-AC_DEFUN(AC_PROG_LD,
+AC_DEFUN([AC_PROG_LD],
 [AC_ARG_WITH(gnu-ld,
 [  --with-gnu-ld           assume the C compiler uses GNU ld [default=no]],
 test "$withval" = no || with_gnu_ld=yes, with_gnu_ld=no)
@@ -313,7 +313,7 @@ test -z "$LD" && AC_MSG_ERROR([no acceptable ld found in \$PATH])
 AC_PROG_LD_GNU
 ])
 
-AC_DEFUN(AC_PROG_LD_GNU,
+AC_DEFUN([AC_PROG_LD_GNU],
 [AC_CACHE_CHECK([if the linker ($LD) is GNU ld], ac_cv_prog_gnu_ld,
 [# I'd rather use --version here, but apparently some GNU ld's only accept -v.
 if $LD -v 2>&1 </dev/null | egrep '(GNU|with BFD)' 1>&5; then
@@ -324,7 +324,7 @@ fi])
 ])
 
 # AC_PROG_NM - find the path to a BSD-compatible name lister
-AC_DEFUN(AC_PROG_NM,
+AC_DEFUN([AC_PROG_NM],
 [AC_MSG_CHECKING([for BSD-compatible nm])
 AC_CACHE_VAL(ac_cv_path_NM,
 [if test -n "$NM"; then
@@ -358,7 +358,7 @@ AC_MSG_RESULT([$NM])
 ])
 
 # AC_CHECK_LIBM - check for math library
-AC_DEFUN(AC_CHECK_LIBM,
+AC_DEFUN([AC_CHECK_LIBM],
 [AC_REQUIRE([AC_CANONICAL_HOST])dnl
 LIBM=
 case "$lt_target" in
@@ -385,7 +385,7 @@ esac
 # '${top_srcdir}/' (note the single quotes!).  If your package is not
 # flat and you're not using automake, define top_builddir and
 # top_srcdir appropriately in the Makefiles.
-AC_DEFUN(AC_LIBLTDL_CONVENIENCE, [AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl
+AC_DEFUN([AC_LIBLTDL_CONVENIENCE], [AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl
   case "$enable_ltdl_convenience" in
   no) AC_MSG_ERROR([this package needs a convenience libltdl]) ;;
   "") enable_ltdl_convenience=yes
@@ -406,7 +406,7 @@ AC_DEFUN(AC_LIBLTDL_CONVENIENCE, [AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl
 # not flat and you're not using automake, define top_builddir and
 # top_srcdir appropriately in the Makefiles.
 # In the future, this macro may have to be called after AC_PROG_LIBTOOL.
-AC_DEFUN(AC_LIBLTDL_INSTALLABLE, [AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl
+AC_DEFUN([AC_LIBLTDL_INSTALLABLE], [AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl
   AC_CHECK_LIB(ltdl, main,
   [test x"$enable_ltdl_install" != xyes && enable_ltdl_install=no],
   [if test x"$enable_ltdl_install" = xno; then
@@ -427,13 +427,13 @@ AC_DEFUN(AC_LIBLTDL_INSTALLABLE, [AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl
 ])
 
 dnl old names
-AC_DEFUN(AM_PROG_LIBTOOL, [indir([AC_PROG_LIBTOOL])])dnl
-AC_DEFUN(AM_ENABLE_SHARED, [indir([AC_ENABLE_SHARED], $@)])dnl
-AC_DEFUN(AM_ENABLE_STATIC, [indir([AC_ENABLE_STATIC], $@)])dnl
-AC_DEFUN(AM_DISABLE_SHARED, [indir([AC_DISABLE_SHARED], $@)])dnl
-AC_DEFUN(AM_DISABLE_STATIC, [indir([AC_DISABLE_STATIC], $@)])dnl
-AC_DEFUN(AM_PROG_LD, [indir([AC_PROG_LD])])dnl
-AC_DEFUN(AM_PROG_NM, [indir([AC_PROG_NM])])dnl
+AC_DEFUN([AM_PROG_LIBTOOL], [indir([AC_PROG_LIBTOOL])])dnl
+AC_DEFUN([AM_ENABLE_SHARED], [indir([AC_ENABLE_SHARED], $@)])dnl
+AC_DEFUN([AM_ENABLE_STATIC], [indir([AC_ENABLE_STATIC], $@)])dnl
+AC_DEFUN([AM_DISABLE_SHARED], [indir([AC_DISABLE_SHARED], $@)])dnl
+AC_DEFUN([AM_DISABLE_STATIC], [indir([AC_DISABLE_STATIC], $@)])dnl
+AC_DEFUN([AM_PROG_LD], [indir([AC_PROG_LD])])dnl
+AC_DEFUN([AM_PROG_NM], [indir([AC_PROG_NM])])dnl
 
 dnl This is just to silence aclocal about the macro not being used
 ifelse([AC_DISABLE_FAST_INSTALL])dnl
index dfa8b39e9a1f8b56fef844b997792dcbd6a546fd..dd6bce2d1b614879322f5381cb4fe71543f2cbe5 100644 (file)
@@ -29,7 +29,7 @@ dnl author Patrick GOLDBRONN
 dnl
  
 # AC_ENABLE_PRODUCTION
-AC_DEFUN(AC_ENABLE_PRODUCTION, [dnl
+AC_DEFUN([AC_ENABLE_PRODUCTION], [dnl
 define([AC_ENABLE_PRODUCTION_DEFAULT], ifelse($1, no, no, yes))dnl
 AC_ARG_ENABLE(production,
 changequote(<<, >>)dnl
@@ -68,10 +68,10 @@ fi
 ])
 
 # AC_DISABLE_PRODUCTION - set the default flag to --disable-production
-AC_DEFUN(AC_DISABLE_PRODUCTION, [AC_ENABLE_PRODUCTION(no)])
+AC_DEFUN([AC_DISABLE_PRODUCTION], [AC_ENABLE_PRODUCTION(no)])
 
 # AC_ENABLE_DEBUG
-AC_DEFUN(AC_ENABLE_DEBUG, [dnl
+AC_DEFUN([AC_ENABLE_DEBUG], [dnl
 define([AC_ENABLE_DEBUG_DEFAULT], ifelse($1, no, no, yes))dnl
 AC_ARG_ENABLE(debug,
 changequote(<<, >>)dnl
@@ -102,5 +102,5 @@ fi
 ])
 
 # AC_DISABLE_DEBUG - set the default flag to --disable-debug
-AC_DEFUN(AC_DISABLE_DEBUG, [AC_ENABLE_DEBUG(no)])
+AC_DEFUN([AC_DISABLE_DEBUG], [AC_ENABLE_DEBUG(no)])
 
index 78cf7f8d2720e2de208dab6b8733d256752ac259..a1a2a34e620eaf183b52d35f7558aa0db0561c36 100644 (file)
@@ -22,7 +22,7 @@ dnl
 dnl This macro defines the PYTHON_EMBED_{CFLAGS,LDFLAGS,LIBS} substitutions
 dnl that should be used when embedding the python interpreter into a program.
 dnl AM_INIT_PYTHON_EMBED
-AC_DEFUN(AM_INIT_PYTHON_EMBED,
+AC_DEFUN([AM_INIT_PYTHON_EMBED],
 [AC_REQUIRE([AM_PATH_PYTHON])
 AC_REQUIRE([AM_INIT_PYEXEC_MOD])
 
@@ -75,7 +75,7 @@ dnl table for python.  The first argument should be the output filename.
 dnl The second argument gives the names of all the modules you want to build
 dnl into the executable.
 dnl AM_PYTHON_CREATE_CONFIG_C(CONFIG_C, MODULE ...)
-AC_DEFUN(AM_PYTHON_CREATE_CONFIG_C,
+AC_DEFUN([AM_PYTHON_CREATE_CONFIG_C],
 [AC_REQUIRE([AM_INIT_PYTHON_EMBED])
 AC_MSG_CHECKING(for config.c.in)
 changequote(,)dnl
index b99b9d138009e8ac65a713b033aaa5ddb4f5ea78..a8013e2902753a125469f1dfb1c27a2821e49c5f 100644 (file)
@@ -34,7 +34,7 @@ dnl while those distributed as `classes' are installed under PYTHON_SITE
 dnl (eg, ./python1.5/site-packages).  The default is to install as
 dnl a `module'.
 
-AC_DEFUN(CHECK_PYTHON,
+AC_DEFUN([CHECK_PYTHON],
  [
   AC_ARG_WITH(python,
    [  --with-python=DIR root directory path of python installation ],
index 09a46645aa9c0dafd232ff6fbe35c95e1004a1a3..080bf9a17c5183714b8d8e413ad91de66d150351 100644 (file)
@@ -32,6 +32,11 @@ $(srcdir)/Dependencies: .depend
 
 depend:.depend
 
+# when use the path as regexp, prevent taking "." for "any symbol"
+srcdir_re = $(subst .,[.],$(srcdir))
+top_srcdir_re = $(subst .,[.],$(top_srcdir))
+top_builddir_re = $(subst .,[.],$(top_builddir))
+
 # we had Makefile target, because we want Makefile rebuild before include .depend
 .depend: $(LIB_DEP) $(TEST_SRC) $(BIN_DEP)
        @touch .depend
@@ -44,9 +49,9 @@ depend:.depend
                    obj=`basename $$dep .c`.lo;                               \
                    sed '\%^'"$$obj"':%,\%[^\\]$$%d' <$@ >$@- && mv $@- $@;   \
                    $(CC) $(C_DEPEND_FLAG) $(CPPFLAGS) $$dep 2>/dev/null |    \
-                        sed 's% $(srcdir)/% $$(srcdir)/%g' |                 \
-                        sed 's% $(top_srcdir)/% $$(top_srcdir)/%g' |         \
-                        sed 's% $(top_builddir)/% $$(top_builddir)/%g' |      \
+                        sed 's% $(srcdir_re)/% $$(srcdir)/%g' |                      \
+                        sed 's% $(top_srcdir_re)/% $$(top_srcdir)/%g' |              \
+                        sed 's% $(top_builddir_re)/% $$(top_builddir)/%g' |      \
                        sed 's/\.o/.lo/' >>$@;                                \
                    ;;                                                        \
                 *.cc)                                                        \
@@ -54,9 +59,9 @@ depend:.depend
                    obj=`basename $$dep .cc`.lo;                              \
                    sed '\%^'"$$obj"':%,\%[^\\]$$%d' <$@ >$@- && mv $@- $@;   \
                    $(CXX) $(CXX_DEPEND_FLAG) $(CXXFLAGS) $(CPPFLAGS) $$dep 2>/dev/null | \
-                        sed 's% $(srcdir)/% $$(srcdir)/%g' |                 \
-                        sed 's% $(top_srcdir)/% $$(top_srcdir)/%g' |         \
-                        sed 's% $(top_builddir)/% $$(top_builddir)/%g' |      \
+                        sed 's% $(srcdir_re)/% $$(srcdir)/%g' |                      \
+                        sed 's% $(top_srcdir_re)/% $$(top_srcdir)/%g' |              \
+                        sed 's% $(top_builddir_re)/% $$(top_builddir)/%g' |      \
                        sed 's/\.o/.lo/' >>$@;                                \
                    ;;                                                        \
                 *.cxx)                                                       \
@@ -64,9 +69,9 @@ depend:.depend
                    obj=`basename $$dep .cxx`.lo;                             \
                    sed '\%^'"$$obj"':%,\%[^\\]$$%d' <$@ >$@- && mv $@- $@;   \
                    $(CXX) $(CXX_DEPEND_FLAG) $(CXXFLAGS) $(CPPFLAGS) $$dep 2>/dev/null | \
-                        sed 's% $(srcdir)/% $$(srcdir)/%g' |                 \
-                        sed 's% $(top_srcdir)/% $$(top_srcdir)/%g' |         \
-                        sed 's% $(top_builddir)/% $$(top_builddir)/%g' |      \
+                        sed 's% $(srcdir_re)/% $$(srcdir)/%g' |                      \
+                        sed 's% $(top_srcdir_re)/% $$(top_srcdir)/%g' |              \
+                        sed 's% $(top_builddir_re)/% $$(top_builddir)/%g' |      \
                        sed 's/\.o/.lo/' >>$@;                                \
                    ;;                                                        \
              esac;                                                           \
index 620cfd9fffdf394f9c6c0ae1bdcf71609ab3fb71..8cc3f4c469c8ad7a69959355df8361e2b03cb648 100644 (file)
@@ -55,6 +55,11 @@ LSF_INCLUDES = @LSF_INCLUDES@
 LSF_LIBDIR   = @LSF_LDFLAGS@
 LSF_LIBS     = @LSF_LIBS@
 
+# CPPUNIT
+
+CPPUNIT_INCLUDES = @CPPUNIT_INCLUDES@
+CPPUNIT_LIBS = @CPPUNIT_LIBS@
+
 # JAVA
 
 #JAVA_INCLUDES = @JAVA_INCLUDES@
@@ -77,10 +82,13 @@ QT_INCLUDES = @QT_INCLUDES@
 QT_MT_INCLUDES = @QT_INCLUDES@ -DQT_THREAD_SUPPORT
 QT_LIBS = @QT_LIBS@
 QT_MT_LIBS = @QT_MT_LIBS@
+QT_VERS = @QT_VERS@
 
 MOC = @MOC@
 UIC = @UIC@
 
+# msg2qm
+MSG2QM = @MSG2QM@
 
 #QWT
 
@@ -98,6 +106,7 @@ PYQT_SIPS = @PYQT_SIPS@
 PYQT_LIBS = @PYQT_LIBS@
 PYQT_INCLUDES = @PYQT_INCLUDES@
 PYUIC = @PYUIC@
+PYQT_SIPFLAGS = @PYQT_SIPFLAGS@
 
 # openGL
 OGL_INCLUDES=@OGL_INCLUDES@
@@ -113,12 +122,6 @@ HDF5_INCLUDES=@HDF5_INCLUDES@
 HDF5_LIBS=@HDF5_LIBS@
 HDF5_MT_LIBS=@HDF5_MT_LIBS@
 
-# MED2
-
-MED2_INCLUDES=@MED2_INCLUDES@
-MED2_LIBS=@MED2_LIBS@
-MED2_MT_LIBS=@MED2_MT_LIBS@
-
 # OpenCasCade
 
 OCC_INCLUDES=@CAS_CPPFLAGS@
@@ -192,6 +195,7 @@ CXXFLAGS+= $(CORBA_CXXFLAGS)
 # add corba libs when link salome application ! 
 #LDFLAGS+= $(CORBA_LIBS)
 LIBS+=$(CORBA_LIBS)
+LIBSFORBIN+=$(CORBA_LIBS)
 
 DOXYGEN = @DOXYGEN@
 
@@ -275,8 +279,8 @@ ac_cxx_mutable.m4                 check_mico.m4      libtool.m4             \
 ac_cxx_namespaces.m4              check_omniorb.m4   pyembed.m4                \
 ac_cxx_partial_specialization.m4  check_opengl.m4    python.m4         \
 ac_cxx_typename.m4                check_pthreads.m4  check_cas.m4      \
-ac_cc_warnings.m4                 check_qt.m4        check_med2.m4      \
-check_swig.m4                     check_boost.m4 
+ac_cc_warnings.m4                 check_qt.m4        check_swig.m4      \
+check_boost.m4 
 
 $(top_srcdir)/aclocal.m4: $(ACLOCAL_SRC:%=@KERNEL_ROOT_DIR@/salome_adm/unix/config_files/%)
        cd $(top_srcdir) ; aclocal --acdir=adm_local/unix/config_files -I @KERNEL_ROOT_DIR@/salome_adm/unix/config_files
index 2b8f95495ffc84b81fdfa33e08ba7694f88c2a99..d5d4a5d14c30fb654471fb933e9742ddefbbc50b 100644 (file)
@@ -38,6 +38,7 @@ LIB_OBJ = $(LIB_OBJ_CXX) $(LIB_OBJ_CC) $(LIB_OBJ_C) $(LIB_CLIENT_OBJ:%.o=%.lo) $
 # LIB_BUILD = $(LIB:%.la=$(top_builddir)/lib/salome/%.la)
 LIB_BUILD = $(patsubst %.la, $(top_builddir)/lib/salome/%.la, $(filter %.la, $(LIB)))
 LIB_BUILD_A = $(patsubst %.a, $(top_builddir)/lib/salome/%.a, $(filter %.a, $(LIB)))
+LIB_BUILD_SO = $(patsubst %.so, $(top_builddir)/lib/salome/%.so, $(filter %.so, $(LIB)))
 
 ifneq ($(findstring cmodule.la,$(filter %.la, $(LIB))),)
 LIB_SWIG = $(patsubst %cmodule.la,%.so, $(filter %.la, $(LIB)))
@@ -45,7 +46,7 @@ else
 LIB_SWIG = 
 endif
 
-lib: $(LIB_BUILD) $(LIB_CLIENT_PY)
+lib: $(LIB_BUILD) $(LIB_BUILD_SO) $(LIB_CLIENT_PY)
 # we don't build static library !
 
 $(LIB_BUILD): $(top_builddir)/lib/salome/%.la: %.la
@@ -58,7 +59,7 @@ $(LIB_BUILD): $(top_builddir)/lib/salome/%.la: %.la
        ln -sf $(patsubst %.la, %.so, $(CURDIR)/.libs/$<).0 \
              $(patsubst %.la, %.so, $@).0 || true
 
-       if test "X$(LIB_SWIG)" != X; then \
+       if ! test -z $(LIB_SWIG) ; then \
           ln -sf $(patsubst %.la,%.so, $(CURDIR)/.libs/$<) $(top_builddir)/lib/salome/_$(LIB_SWIG) || true;\
        fi;
 
@@ -66,8 +67,12 @@ $(LIB_BUILD_A): $(top_builddir)/lib/salome/%.a: %.a
        -$(RM) $@
        ln -sf $(CURDIR)/$< $@ || true
 
+$(LIB_BUILD_SO): $(top_builddir)/lib/salome/%.so: %.so
+       -$(RM) $@
+       ln -sf $(CURDIR)/$< $@ || true
+
 $(LIB): $(LIB_OBJ)
-       @$(LT) --mode=link $(CXX) -rpath $(libdir) -o $@ $(CXXFLAGS) $(LIB_OBJ) $(LDFLAGS) $(LIBS)
+       @$(LT) --mode=link $(CXX) -shared -rpath $(libdir) -o $@ $(CXXFLAGS) $(LIB_OBJ) $(LDFLAGS) $(LIBS)
 
 # transform idl reference in appropriate obj file
 BIN_CLIENT_SRC = $(BIN_CLIENT_IDL:%.idl=%$(IDL_CLN_CXX))
@@ -147,20 +152,32 @@ $(DEST_HEADERS): $(inc_builddir)/%: %
        cp -f $< $@
 
 # build resources file (icons and messages) : .qm file from .po file
-resources: $(PO_FILES:%.po=$(top_builddir)/share/salome/resources/%.qm)
+RESOURCES_FILES_ALL := $(notdir $(wildcard $(srcdir)/resources/*))
+RESOURCES_FILES_ALL := $(filter-out CVS, $(RESOURCES_FILES_ALL))
+RESOURCES_FILES_ALL := $(filter-out %.po, $(RESOURCES_FILES_ALL))
+RESOURCES_FILES ?= $(RESOURCES_FILES_ALL)
+
+resources: resources-po resources-cp 
+
+resources-po: $(PO_FILES:%.po=$(top_builddir)/share/salome/resources/%.qm)
+
+resources-cp: $(RESOURCES_FILES:%=$(top_builddir)/share/salome/resources/%)
+
+$(RESOURCES_FILES:%=$(top_builddir)/share/salome/resources/%): $(top_builddir)/share/salome/resources/% : %
+       cp -fr $< $@;
 
 # Make installation directories if they don't exist.
 $(libdir) $(includedir) $(bindir) $(datadir) $(idldir) $(sharedpydir):
        $(INSTALL) -d $@ && chmod 755 $@
 
 # Install the library, the public header files, and programs.
-install: $(LIB) $(BIN) $(TEST_PROGS) $(libdir) $(includedir) $(bindir) $(datadir) $(idldir) install-python install-sharedpyqt install-qm
+install: $(LIB) $(BIN) $(TEST_PROGS) $(libdir) $(includedir) $(bindir) $(datadir) $(idldir) install-python install-sharedpyqt install-qm install-res
        @for f in X $(LIB); do                                                \
           if test $$f != X; then                                             \
              ($(LT_INSTALL_LIB) $$f $(libdir)/. || exit 1);                  \
           fi;                                                                \
        done
-       @if test "X$(LIB_SWIG)" != X; then                                    \
+       @if ! test -z $(LIB_SWIG) ; then                                      \
          (cd $(libdir); ln -sf $(patsubst %.so, %cmodule.so, $(LIB_SWIG)) _$(LIB_SWIG)  || true); \
         fi;                                                                  
        @for f in X $(BIN); do                                                \
@@ -213,6 +230,15 @@ install-qm: resources
           fi;                                                                           \
        done
 
+# generic rule to install resources files (png, ini ...):
+install-res: resources
+       $(INSTALL) -d $(datadir)/resources
+       @for f in X $(RESOURCES_FILES:%=$(top_builddir)/share/salome/resources/%); do \
+          if test $$f != X; then                                                        \
+            ($(INSTALL_DATA) $$f $(datadir)/resources/. || exit 1);                     \
+          fi;                                                                           \
+       done  
+
 # Removes those things that `make install' (would have) installed.
 uninstall:
        @if test "X$(LIB)" != X; then                                         \
@@ -353,11 +379,7 @@ distclean: clean
        $(SWIG) $(SWIG_FLAGS) -o $@ $<
 
 $(top_builddir)/share/salome/resources/%.qm: %.po
-       if test -e ${KERNEL_ROOT_DIR}/bin/salome/msg2qm ; then \
-               ${KERNEL_ROOT_DIR}/bin/salome/msg2qm $< $@ ; \
-       else \
-               $(top_builddir)/bin/salome/msg2qm $< $@ ; \
-       fi
+       $(MSG2QM) $< $@ ; \
 
 #------------------------------------------------------------------------------
 # The following section of this makefile contains dependencies between the
index 2d08f49bad01dab3aadeb91983b0dc88cdc0f814..cb13120236f435896bd49d6717b0f6a51db6ba13 100644 (file)
@@ -45,13 +45,18 @@ depend:
        done
 
 # copy all resources files in common directory
+RESOURCES_FILES_ALL := $(notdir $(wildcard $(srcdir)/resources/*))
+RESOURCES_FILES_ALL := $(filter-out CVS, $(RESOURCES_FILES_ALL))
+RESOURCES_FILES_ALL := $(filter-out %.po, $(RESOURCES_FILES_ALL))
+RESOURCES_FILES ?= $(RESOURCES_FILES_ALL)
+
 resources: $(RESOURCES_FILES:%=$(top_builddir)/share/salome/resources/%)
        @@SETX@; for d in $(SUBDIRS); do        \
           (cd $$d && $(MAKE) $@) || exit 1;    \
        done
 
 $(RESOURCES_FILES:%=$(top_builddir)/share/salome/resources/%): $(top_builddir)/share/salome/resources/% : %
-       cp -f $< $@
+       cp -fr $< $@;
 
 data:
        @if test "X$(top_builddir)" = "X."; then                                                         \
diff --git a/src/Basics/BasicsGenericDestructor.cxx b/src/Basics/BasicsGenericDestructor.cxx
new file mode 100644 (file)
index 0000000..91585a2
--- /dev/null
@@ -0,0 +1,192 @@
+//  SALOME Basics : general SALOME definitions and tools (C++ part - no CORBA)
+//
+//  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
+//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
+// 
+//  This library is free software; you can redistribute it and/or 
+//  modify it under the terms of the GNU Lesser General Public 
+//  License as published by the Free Software Foundation; either 
+//  version 2.1 of the License. 
+// 
+//  This library is distributed in the hope that it will be useful, 
+//  but WITHOUT ANY WARRANTY; without even the implied warranty of 
+//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
+//  Lesser General Public License for more details. 
+// 
+//  You should have received a copy of the GNU Lesser General Public 
+//  License along with this library; if not, write to the Free Software 
+//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
+// 
+//  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
+//
+//
+//
+//  File   : BasicGenericDestructor.cxx
+//  Author : Antoine YESSAYAN, Paul RASCLE, EDF
+//  Module : SALOME
+//  $Header$
+
+#include <iostream>
+#include <list>
+#include <cstdlib>
+
+#include "BasicsGenericDestructor.hxx"
+
+using namespace std;
+
+void HouseKeeping();
+
+std::list<PROTECTED_DELETE*> PROTECTED_DELETE::_objList;
+pthread_mutex_t PROTECTED_DELETE::_listMutex;
+
+std::list<GENERIC_DESTRUCTOR*> *GENERIC_DESTRUCTOR::Destructors = 0;
+static bool atExitSingletonDone = false ;
+
+// ============================================================================
+/*! 
+ *  deleteInstance deletes only once the object. Only object present on the
+ *  static list of PROTECTED_DELETE* are deleted, then removed of the list.
+ *  The operation is protected by a mutex.
+ */
+// ============================================================================
+
+void PROTECTED_DELETE::deleteInstance(PROTECTED_DELETE *anObject)
+  {
+    if (std::find(_objList.begin(), _objList.end(),anObject) == _objList.end())
+      return;
+    else
+      {
+       int ret;
+       ret = pthread_mutex_lock(&_listMutex); // acquire lock, an check again
+       if (std::find(_objList.begin(), _objList.end(), anObject)
+           != _objList.end())
+         {
+           DEVTRACE("PROTECTED_DELETE::deleteInstance1 " << anObject);
+           delete anObject;
+           DEVTRACE("PROTECTED_DELETE::deleteInstance2 " << &_objList);
+           _objList.remove(anObject);
+         }
+       ret = pthread_mutex_unlock(&_listMutex); // release lock
+      }
+  }
+
+// ============================================================================
+/*! 
+ * To allow a further destruction of a PRTECTED_DELETE object, it must be added
+ * to the static list of PROTECTED_DELETE*
+ */
+// ============================================================================
+
+void PROTECTED_DELETE::addObj(PROTECTED_DELETE *anObject)
+{
+  DEVTRACE("PROTECTED_DELETE::addObj " << anObject);
+  _objList.push_back(anObject);
+}
+
+// ============================================================================
+/*! 
+ *  Herited classes have there own destructors
+ */
+// ============================================================================
+
+PROTECTED_DELETE::~PROTECTED_DELETE()
+{
+  DEVTRACE("PROTECTED_DELETE::~PROTECTED_DELETE()");
+}
+
+// ============================================================================
+/*! 
+ * To execute only once GENERIC_DESTRUCTOR::HouseKeeping et the end of process,
+ * a dedicated object is created, as a singleton: atExitSingleton.
+ * When the singleton is created, the HouseKeeping() function is registered in
+ * atExit().
+ * Destructors is a list created on heap, and deleted by HouseKeeping(), with
+ * the list content.
+ */
+// ============================================================================
+
+class atExitSingleton
+{
+public:
+  atExitSingleton(bool Make_ATEXIT)
+  {
+    if (Make_ATEXIT && !atExitSingletonDone)
+      {
+       DEVTRACE("atExitSingleton(" << Make_ATEXIT << ")");
+       assert(GENERIC_DESTRUCTOR::Destructors == 0);
+       GENERIC_DESTRUCTOR::Destructors = new std::list<GENERIC_DESTRUCTOR*>;
+       int cr = atexit(HouseKeeping);
+       assert(cr == 0);
+       atExitSingletonDone = true;
+      }
+  }
+
+  ~atExitSingleton()
+  {
+    DEVTRACE("atExitSingleton::~atExitSingleton()");
+  }
+};
+
+//! static singleton for atExitSingleton class
+
+static atExitSingleton HouseKeeper = atExitSingleton(false);
+
+// ============================================================================
+/*! 
+ *  Executes all objects of type DESTRUCTOR_OF in the Destructors list. 
+ *  Deletes  all objects of type DESTRUCTOR_OF in the Destructors list.
+ *  Deletes the list.
+ */
+// ============================================================================
+
+void HouseKeeping( void )
+{
+  DEVTRACE("HouseKeeping()");
+  assert(GENERIC_DESTRUCTOR::Destructors);
+  if(GENERIC_DESTRUCTOR::Destructors->size())
+    {
+      std::list<GENERIC_DESTRUCTOR*>::iterator it =
+       GENERIC_DESTRUCTOR::Destructors->end();
+
+      do
+       {
+         it-- ;
+         GENERIC_DESTRUCTOR* ptr = *it ;
+         DEVTRACE("HouseKeeping() " << typeid(ptr).name());
+         (*ptr)();
+         delete ptr ;
+       }
+      while (it !=  GENERIC_DESTRUCTOR::Destructors->begin()) ;
+
+      DEVTRACE("HouseKeeping() end list ");
+      GENERIC_DESTRUCTOR::Destructors->clear() ;
+      assert(GENERIC_DESTRUCTOR::Destructors->size() == 0);
+      assert(GENERIC_DESTRUCTOR::Destructors->empty());
+      DEVTRACE("HouseKeeping()after clear ");
+    }
+
+  delete GENERIC_DESTRUCTOR::Destructors;
+  GENERIC_DESTRUCTOR::Destructors = 0;
+  DEVTRACE("HouseKeeping() very end ");
+  return ;
+}
+
+// ============================================================================
+/*!
+ * Adds a destruction object to the list of actions to be performed at the end
+ * of the process
+ */
+// ============================================================================
+
+const int GENERIC_DESTRUCTOR::Add(GENERIC_DESTRUCTOR &anObject)
+{
+  DEVTRACE("GENERIC_DESTRUCTOR::Add("<<typeid(anObject).name()<<") "
+          << &anObject);
+  if (!atExitSingletonDone)
+    {
+      HouseKeeper = atExitSingleton(true);
+    }
+  assert(Destructors);
+  Destructors->push_back(&anObject);
+  return Destructors->size();
+}
diff --git a/src/Basics/BasicsGenericDestructor.hxx b/src/Basics/BasicsGenericDestructor.hxx
new file mode 100644 (file)
index 0000000..a5d934d
--- /dev/null
@@ -0,0 +1,186 @@
+//  SALOME Basics : general SALOME definitions and tools (C++ part - no CORBA)
+//
+//  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
+//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
+// 
+//  This library is free software; you can redistribute it and/or 
+//  modify it under the terms of the GNU Lesser General Public 
+//  License as published by the Free Software Foundation; either 
+//  version 2.1 of the License. 
+// 
+//  This library is distributed in the hope that it will be useful, 
+//  but WITHOUT ANY WARRANTY; without even the implied warranty of 
+//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
+//  Lesser General Public License for more details. 
+// 
+//  You should have received a copy of the GNU Lesser General Public 
+//  License along with this library; if not, write to the Free Software 
+//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
+// 
+//  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
+//
+//
+//
+//  File   : BasicGenericDestructor.hxx
+//  Author : Antoine YESSAYAN, Paul RASCLE, EDF
+//  Module : SALOME
+//  $Header$
+
+#ifndef _BASICGENERICDESTRUCTOR_HXX_
+#define _BASICGENERICDESTRUCTOR_HXX_
+
+#include <list>
+#include <algorithm>
+#include <cassert>
+#include <typeinfo>
+#include <iostream>
+#include <cstdlib>
+#include <pthread.h>
+
+#if defined BASICS_EXPORTS
+#if defined WIN32
+#define BASICS_EXPORT __declspec( dllexport )
+#else
+#define BASICS_EXPORT
+#endif
+#else
+#if defined WNT
+#define BASICS_EXPORT __declspec( dllimport )
+#else
+#define BASICS_EXPORT
+#endif
+#endif
+
+//#define _DEVDEBUG_
+
+#ifdef _DEVDEBUG_
+#define MYDEVTRACE {std::cerr << __FILE__ << " [" << __LINE__ << "] : ";}
+#define DEVTRACE(msg) {MYDEVTRACE; std::cerr<<msg<<std::endl<<std::flush;}
+#else
+#define MYDEVTRACE
+#define DEVTRACE(msg)
+#endif
+
+// ============================================================================
+/*!
+ * The PROTECTED_DELETE base class provides a protected destructor. 
+ * The only way to use PROTECTED_DELETE is inheritance:
+ *   example: class LocalTraceBufferPool : public PROTECTED_DELETE
+ * Herited class destructor must stay protected.
+ * Normal use is:
+ * - create an instance of herited class on the heap (new),
+ * - use addObj(instance) to store the instance on the static list _objList,
+ * - delete instance with deleteInstance(instance)
+ *
+ * This class is utilised with GENERIC_DESTRUCTOR and DESTRUCTOR_OF, 
+ * to program automatic deletion of objects at the end of the process, while
+ * keeping the possibility of an early destruction, if required. This is used
+ * for unit testing and trace mecanism.
+ */ 
+// ============================================================================
+
+class PROTECTED_DELETE
+{
+public:
+  static void deleteInstance(PROTECTED_DELETE *anObject);
+  static void addObj(PROTECTED_DELETE *anObject);
+
+protected:
+  virtual ~PROTECTED_DELETE();
+  static std::list<PROTECTED_DELETE*> _objList;
+
+private:
+  static pthread_mutex_t _listMutex;
+};
+
+// ============================================================================
+/*!
+ * The GENERIC_DESTRUCTOR abstract class describes the comportement of any
+ * destruction object. This type is used to create a list of miscellaneous
+ * destruction objects.
+ *
+ * The only way to use the GENERIC_DESTRUCTOR class is inheritance:
+ *   class SPECIFIC_DESTRUCTOR : public GENERIC_DESTRUCTOR
+ * 
+ * A generic destructor provides two methods:
+ * -# a static method to add a destruction (object) to be performed:
+ *    GENERIC_DESTRUCTOR::Add(GENERIC_DESTRUCTOR &anObject);
+ *    The Destruction object is stored in a list of pointer to
+ *    GENERIC_DESTRUCTOR objects.
+ * -# an object method to execute the destruction : operator()().
+ */ 
+// ============================================================================
+
+class GENERIC_DESTRUCTOR
+{
+public :
+  BASICS_EXPORT static std::list<GENERIC_DESTRUCTOR*> *Destructors;
+
+  virtual ~GENERIC_DESTRUCTOR() {};
+  BASICS_EXPORT static const int Add(GENERIC_DESTRUCTOR &anObject);
+  BASICS_EXPORT virtual void operator()(void) = 0;
+};
+
+// ============================================================================
+/*! 
+ * The DESTRUCTOR_OF class allows the user to program - at any moment - the
+ * destruction of an object at the end of the process.
+ *
+ * Example: the POINT ptrPoint will be destroyed at the end of the process
+ * (atexit).
+ *
+ * POINT *ptrPoint = new POINT ;
+ *
+ * DESTRUCTOR_OF<POINT> *ptrDestruct = new DESTRUCTOR_OF<POINT>(*ptrPoint);
+ * 
+ * Note that neither ptrPoint, nor ptrDestruct should be destroyed by the user.
+ * 
+ * The destruction object must be created dynamically because it suscribes
+ * itself in the list of destruction to be performed at the end of the process.
+ */ 
+// ============================================================================
+
+template <class TYPE> class DESTRUCTOR_OF : public GENERIC_DESTRUCTOR
+{
+
+public:
+  /*!
+    Programs the destruction at the end of the process, of the object anObject.
+    This method records in _objectPtr the address of an object to be destroyed 
+    at the end of the process
+  */
+  DESTRUCTOR_OF(TYPE &anObject):
+    _objectPtr(&anObject)
+  {
+    DEVTRACE(" DESTRUCTOR_OF " << typeid(anObject).name() 
+            << " " << _objectPtr << " " << this );
+    PROTECTED_DELETE::addObj(_objectPtr);
+    assert(GENERIC_DESTRUCTOR::Add(*this) >= 0);
+  }
+
+  /*!
+    Performs the destruction of the object.
+    This method really destroys the object pointed by _objectPtr. 
+    It should be called at the end of the process (i.e. at exit).
+  */
+  virtual void operator()(void)
+  {
+    if (_objectPtr)
+      {
+       DEVTRACE("DESTRUCTOR_OF<>::operator() " << _objectPtr);
+       if (_objectPtr) PROTECTED_DELETE::deleteInstance(_objectPtr);
+       _objectPtr = NULL;
+      }
+  }
+
+  virtual ~DESTRUCTOR_OF()
+  {
+    DEVTRACE("~DESTRUCTOR_OF() " << this);
+    assert(!_objectPtr);
+  }
+
+private:
+  TYPE *_objectPtr;
+};
+
+# endif
diff --git a/src/Basics/Makefile.in b/src/Basics/Makefile.in
new file mode 100644 (file)
index 0000000..6125814
--- /dev/null
@@ -0,0 +1,52 @@
+#  Basics: General purpose C++ 
+#
+#  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
+#  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
+# 
+#  This library is free software; you can redistribute it and/or 
+#  modify it under the terms of the GNU Lesser General Public 
+#  License as published by the Free Software Foundation; either 
+#  version 2.1 of the License. 
+# 
+#  This library is distributed in the hope that it will be useful, 
+#  but WITHOUT ANY WARRANTY; without even the implied warranty of 
+#  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
+#  Lesser General Public License for more details. 
+# 
+#  You should have received a copy of the GNU Lesser General Public 
+#  License along with this library; if not, write to the Free Software 
+#  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
+# 
+#  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
+#
+#
+#
+#  File   : Makefile.in
+#  Author : Paul RASCLE (EDF)
+#  Module : SALOME
+#  $Header$
+
+top_srcdir=@top_srcdir@
+top_builddir=../..
+srcdir=@srcdir@
+VPATH=.:@srcdir@:@top_srcdir@/idl
+
+
+@COMMENCE@
+
+# header files  
+EXPORT_HEADERS= \
+ BasicsGenericDestructor.hxx 
+
+EXPORT_PYSCRIPTS = 
+
+# Libraries targets
+
+LIB = libSALOMEBasics.la 
+LIB_SRC = BasicsGenericDestructor.cxx
+
+LIBS= @LIBS@ 
+#LDFLAGS+= 
+
+
+@CONCLUDE@
diff --git a/src/Basics/Test/BasicMainTest.hxx b/src/Basics/Test/BasicMainTest.hxx
new file mode 100644 (file)
index 0000000..54b2db9
--- /dev/null
@@ -0,0 +1,69 @@
+#ifndef _BASICMAINTEST_HXX_
+#define _BASICMAINTEST_HXX_
+
+#include <cppunit/CompilerOutputter.h>
+#include <cppunit/TestResult.h>
+#include <cppunit/TestResultCollector.h>
+#include <cppunit/TextTestProgressListener.h>
+#include <cppunit/BriefTestProgressListener.h>
+#include <cppunit/extensions/TestFactoryRegistry.h>
+#include <cppunit/TestRunner.h>
+#include <stdexcept>
+
+#include <iostream>
+#include <fstream>
+
+// ============================================================================
+/*!
+ *  Main program source for Unit Tests with cppunit package does not depend
+ *  on actual tests, so we use the same for all partial unit tests.
+ */
+// ============================================================================
+
+int main(int argc, char* argv[])
+{
+  // --- Create the event manager and test controller
+  CPPUNIT_NS::TestResult controller;
+
+  // ---  Add a listener that colllects test result
+  CPPUNIT_NS::TestResultCollector result;
+  controller.addListener( &result );        
+
+  // ---  Add a listener that print dots as test run.
+#ifdef WIN32
+  CPPUNIT_NS::TextTestProgressListener progress;
+#else
+  CPPUNIT_NS::BriefTestProgressListener progress;
+#endif
+  controller.addListener( &progress );      
+
+  // ---  Get the top level suite from the registry
+
+  CPPUNIT_NS::Test *suite =
+    CPPUNIT_NS::TestFactoryRegistry::getRegistry().makeTest();
+
+  // ---  Adds the test to the list of test to run
+
+  CPPUNIT_NS::TestRunner runner;
+  runner.addTest( suite );
+  runner.run( controller);
+
+  // ---  Print test in a compiler compatible format.
+
+  std::ofstream testFile;
+  testFile.open("UnitTestsResult", std::ios::out |  std::ios::trunc);
+  //CPPUNIT_NS::CompilerOutputter outputter( &result, std::cerr );
+  CPPUNIT_NS::CompilerOutputter outputter( &result, testFile );
+  outputter.write(); 
+
+  // ---  Run the tests.
+
+  bool wasSucessful = result.wasSuccessful();
+  testFile.close();
+
+  // ---  Return error code 1 if the one of test failed.
+
+  return wasSucessful ? 0 : 1;
+}
+
+#endif
diff --git a/src/Basics/Test/Makefile.in b/src/Basics/Test/Makefile.in
new file mode 100644 (file)
index 0000000..c98aadb
--- /dev/null
@@ -0,0 +1,61 @@
+#  Basics:  General purpose C++
+#
+#  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
+#  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
+# 
+#  This library is free software; you can redistribute it and/or 
+#  modify it under the terms of the GNU Lesser General Public 
+#  License as published by the Free Software Foundation; either 
+#  version 2.1 of the License. 
+# 
+#  This library is distributed in the hope that it will be useful, 
+#  but WITHOUT ANY WARRANTY; without even the implied warranty of 
+#  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
+#  Lesser General Public License for more details. 
+# 
+#  You should have received a copy of the GNU Lesser General Public 
+#  License along with this library; if not, write to the Free Software 
+#  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
+# 
+#  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
+#
+#
+#
+#  File   : Makefile.in
+#  Author : Paul RASCLE (EDF)
+#  Module : SALOME
+#  $Header$
+
+top_srcdir=@top_srcdir@
+top_builddir=../../..
+srcdir=@srcdir@
+VPATH=.:@srcdir@:@top_srcdir@/idl
+
+
+@COMMENCE@
+
+# header files  
+EXPORT_HEADERS= BasicMainTest.hxx
+
+EXPORT_PYSCRIPTS =
+
+# Libraries targets
+
+LIB =
+LIB_SRC =
+
+# Executables targets
+
+BIN =
+BIN_SRC = 
+
+CXXFLAGS += @CPPUNIT_INCLUDES@
+CPPFLAGS += @CPPUNIT_INCLUDES@
+
+LIBS= @LIBS@ @CPPUNIT_LIBS@
+
+LDFLAGS+=
+
+LDFLAGSFORBIN+=
+
+@CONCLUDE@
diff --git a/src/CASCatch/CASCatch_CatchSignals.cxx b/src/CASCatch/CASCatch_CatchSignals.cxx
new file mode 100644 (file)
index 0000000..955743f
--- /dev/null
@@ -0,0 +1,314 @@
+#include "CASCatch_CatchSignals.hxx"
+
+#include "CASCatch_Failure.hxx"  
+#include "CASCatch_ErrorHandler.hxx"
+#include <TCollection_AsciiString.hxx>
+
+#define MAX_HANDLER_NUMBER 6
+
+
+//================================================================================
+/*! Public -
+ * \brief creates a CASCatch_CatchSignals
+ */
+//================================================================================ 
+CASCatch_CatchSignals::CASCatch_CatchSignals() 
+     :myIsActivated(Standard_False)
+{
+
+  Standard_Integer i = 0;
+  for(; i<=MAX_HANDLER_NUMBER; i++)
+    mySigStates[i] = NULL;
+}
+
+#ifndef WNT
+
+//================================ UNIX part ==================================================
+
+#include <OSD.hxx>
+#include <OSD_WhoAmI.hxx>
+#include <OSD_SIGHUP.hxx>
+#include <OSD_SIGINT.hxx>
+#include <OSD_SIGQUIT.hxx>
+#include <OSD_SIGILL.hxx>
+#include <OSD_SIGKILL.hxx>
+#include <OSD_SIGBUS.hxx>
+#include <OSD_SIGSEGV.hxx>
+#include <OSD_SIGSYS.hxx>
+#ifndef LIN
+#include <exception.h>
+#endif
+
+//==============================
+typedef void (ACT_SIGIO_HANDLER)(void) ;
+
+ACT_SIGIO_HANDLER *ADR_ACT_SIGIO_HANDLER = NULL ;
+
+typedef void (* SIG_PFV) (int);
+
+#ifdef SUN
+# include <floatingpoint.h>
+#endif
+
+#ifdef SOLARIS
+# include <floatingpoint.h>
+# include <sys/machsig.h>
+# include <stdlib.h>
+# include <stdio.h>
+#endif
+
+#include <signal.h>
+#include <sys/signal.h>
+
+#ifdef LIN
+# include <stdlib.h>
+# include <stdio.h>
+#else
+# ifdef SA_SIGINFO 
+#   ifndef AIX
+# include <sys/siginfo.h>
+#    endif
+# endif
+#endif
+
+
+#ifdef IRIX
+# include <sigfpe.h>
+# include <sys/siginfo.h>
+#endif 
+
+
+//================================================================================
+/*! Private -
+ * \brief universal handler for signals
+ */
+//================================================================================ 
+static void Handler(const OSD_Signals theSig, const OSD_Signals)
+{
+  sigset_t set;
+  sigemptyset(&set);
+  sigaddset(&set, theSig);
+  sigprocmask(SIG_UNBLOCK, &set, NULL) ;
+
+  TCollection_AsciiString aMessage(theSig);  
+  aMessage+=" signal detected";
+  CASCatch_Failure::Raise(aMessage.ToCString());
+}
+
+
+#ifdef SA_SIGINFO
+//================================================================================
+/*! Private -
+ * \brief  handler for SIGSEGV signal
+ */
+//================================================================================ 
+static void SegvHandler(const OSD_Signals, const Standard_Address, const Standard_Address)
+{
+  sigset_t set;
+  sigemptyset(&set);
+  sigaddset(&set, SIGSEGV);
+  sigprocmask (SIG_UNBLOCK, &set, NULL); 
+
+  CASCatch_Failure::Raise("SIGSEGV detected");
+}
+#endif
+
+
+//================================================================================
+/*! Public -
+ * \brief activates a signals handling
+ */
+//================================================================================ 
+void CASCatch_CatchSignals::Activate() 
+{  
+  if(myIsActivated) return;
+
+  struct sigaction act;
+
+  Standard_Integer i = 0;
+  for(; i<=MAX_HANDLER_NUMBER; i++)  
+    mySigStates[i] = new struct sigaction(); //Initialize structures
+
+  int stat;
+  act.sa_handler =  (SIG_PFV) &Handler ;
+  sigemptyset(&act.sa_mask) ;
+
+
+  stat = sigaction(SIGHUP,&act,(struct sigaction*)mySigStates[0]);    // ...... hangup
+  stat = sigaction(SIGFPE,&act,(struct sigaction*) mySigStates[1]);   // ...... floating point exception
+  stat = sigaction(SIGINT,&act,(struct sigaction*)mySigStates[2]);   // ...... interrupt
+  stat = sigaction(SIGQUIT,&act,(struct sigaction*)mySigStates[3]);  // ...... quit
+  stat = sigaction(SIGBUS,&act,(struct sigaction*)mySigStates[4]);   // ...... bus error
+  stat = sigaction(SIGILL,&act,(struct sigaction*)mySigStates[5]);   // ...... illegal instruction
+
+#ifdef SA_RESTART
+  act.sa_flags   = SA_RESTART ;
+#else
+  act.sa_flags   = 0 ;
+#endif
+  act.sa_handler = (SIG_PFV) &SegvHandler ;
+
+#ifdef SA_SIGINFO      // OSF,SOLARIS,IRIX
+  act.sa_flags = act.sa_flags | SA_SIGINFO ;
+# ifdef SOLARIS
+  act.sa_sigaction = (void(*)(int, siginfo_t *, void*)) &SegvHandler ;
+# endif
+#endif
+
+  stat = sigaction( SIGSEGV , &act , (struct sigaction*)mySigStates[6]);    // ...... segmentation violation
+
+  myIsActivated = Standard_True;
+}
+
+
+//================================================================================
+/*! Public -
+ * \brief deactivates a signals handling
+ */
+//================================================================================
+void CASCatch_CatchSignals::Deactivate() 
+{
+  if(!myIsActivated) return;
+
+  struct sigaction oact;
+  int stat;
+
+  stat = sigaction(SIGHUP,(struct sigaction*)mySigStates[0],&oact);   // ...... hangup
+  stat = sigaction(SIGFPE,(struct sigaction*)mySigStates[1],&oact);   // ...... floating point exception
+  stat = sigaction(SIGINT,(struct sigaction*)mySigStates[2],&oact);   // ...... interrupt
+  stat = sigaction(SIGQUIT,(struct sigaction*)mySigStates[3],&oact);  // ...... quit
+  stat = sigaction(SIGBUS,(struct sigaction*)mySigStates[4],&oact);   // ...... bus error
+  stat = sigaction(SIGILL,(struct sigaction*)mySigStates[5],&oact);   // ...... illegal instruction
+  stat = sigaction(SIGSEGV,(struct sigaction*)mySigStates[6],&oact);  // ...... segmentation violation
+
+
+  Standard_Integer i = 0;
+  for(; i<=MAX_HANDLER_NUMBER; i++)
+    delete (struct sigaction*)mySigStates[i];
+
+  myIsActivated = Standard_False;
+}
+
+
+
+#else
+//====================================== WNT part ====================================================
+#include <OSD_WNT_1.hxx>
+
+#include <process.h>
+#include <signal.h>
+#include <float.h>
+
+#define _OSD_FPX ( _EM_DENORMAL | _EM_INEXACT | _EM_UNDERFLOW | _EM_ZERODIVIDE | _EM_OVERFLOW) //Mask these exceptions
+
+//================================================================================
+/*! Private -
+ * \brief handler for unexpected exceptions
+ */
+//================================================================================
+static Standard_Integer WntHandler(const Standard_Address theExceptionInfo) 
+{
+  LPEXCEPTION_POINTERS lpXP = ( LPEXCEPTION_POINTERS )theExceptionInfo;
+  DWORD                dwExceptionCode = lpXP -> ExceptionRecord -> ExceptionCode;
+
+  TCollection_AsciiString aMessage((Standard_Integer)dwExceptionCode);  
+  aMessage+=" Exception code - unexpected exception";
+
+  CASCatch_Failure::Raise(aMessage.ToCString());
+
+  return EXCEPTION_EXECUTE_HANDLER;
+}
+
+void SIGWntHandler(int , int ) ;
+static void (*SIGWNTHANDLER)(int) = ( void (*)(int) ) ( &SIGWntHandler ) ;
+
+
+//================================================================================
+/*! Private -
+ * \brief handler for signals
+ */
+//================================================================================
+static void SIGWntHandler(const int signum , const int theCode)
+{
+
+  void (*OLDSIGWNTHANDLER)(int) ;  
+  switch( signum ) { 
+  case SIGFPE : 
+    _fpreset() ;
+    _clearfp() ; 
+    _controlfp ( _OSD_FPX, _MCW_EM ); 
+    OLDSIGWNTHANDLER = signal( signum , SIGWNTHANDLER ); 
+
+    if(theCode == _FPE_UNDERFLOW || theCode == _FPE_INEXACT) return;
+    CASCatch_Failure::Raise ("Floating point error"); 
+    break;
+  case SIGSEGV : 
+    OLDSIGWNTHANDLER = signal( signum , SIGWNTHANDLER );
+    CASCatch_Failure::Raise("Access violation"); 
+    break; 
+  case SIGILL : 
+    OLDSIGWNTHANDLER = signal( signum , SIGWNTHANDLER );
+    CASCatch_Failure::Raise("Illegal instruction" ); 
+    break; 
+  }
+}
+
+
+//================================================================================
+/*! Public -
+ * \brief activates a signals handling
+ */
+//================================================================================ 
+void CASCatch_CatchSignals::Activate() 
+{
+  if(myIsActivated) return;
+
+  mySigStates[0] = SetUnhandledExceptionFilter (( LPTOP_LEVEL_EXCEPTION_FILTER )&WntHandler);
+
+  myFloatOpWord = _controlfp(0, 0);
+  _controlfp ( _OSD_FPX, _MCW_EM );  //Enable floating point exceptions
+
+  mySigStates[1] = signal( SIGSEGV , SIGWNTHANDLER );
+  mySigStates[2] = signal( SIGFPE , SIGWNTHANDLER );
+  mySigStates[3] = signal( SIGILL , SIGWNTHANDLER );
+
+  myIsActivated = Standard_True;
+}
+
+//================================================================================
+/*! Public -
+ * \brief deactivates a signals handling
+ */
+//================================================================================
+void CASCatch_CatchSignals::Deactivate() 
+{
+  if(!myIsActivated) return;
+
+  SetUnhandledExceptionFilter (( LPTOP_LEVEL_EXCEPTION_FILTER )mySigStates[0]);
+
+  _controlfp ( myFloatOpWord, _MCW_EM );
+
+  signal( SIGSEGV ,  ( void (*)(int) )mySigStates[1]);
+  signal( SIGFPE , ( void (*)(int) )mySigStates[2]);
+  signal( SIGILL , ( void (*)(int) )mySigStates[3]);
+
+  Standard_Integer i = 0;
+  for(; i<=MAX_HANDLER_NUMBER; i++)
+    mySigStates[i] = NULL;
+  
+  myIsActivated = Standard_False;
+}
+
+#endif
+
+//================================================================================
+/*! Private -
+ * \brief deactivates a signals handling
+ */
+//================================================================================
+void CASCatch_CatchSignals::Destroy() 
+{
+  if(myIsActivated) Deactivate();
+}
+
diff --git a/src/CASCatch/CASCatch_CatchSignals.hxx b/src/CASCatch/CASCatch_CatchSignals.hxx
new file mode 100644 (file)
index 0000000..27134aa
--- /dev/null
@@ -0,0 +1,44 @@
+
+#ifndef _CASCatch_CatchSignals_HeaderFile
+#define _CASCatch_CatchSignals_HeaderFile
+
+#include <Standard.hxx>
+
+/*!
+ * \class CASCatch_CatchSignals
+ * \brief This class controls an exception handling
+ *
+ */ 
+class CASCatch_CatchSignals  {
+
+public:
+
+ // Methods PUBLIC
+ // 
+Standard_EXPORT CASCatch_CatchSignals();
+Standard_EXPORT void Destroy() ;
+~CASCatch_CatchSignals() { Destroy(); }
+Standard_EXPORT void Activate() ;
+Standard_EXPORT void Deactivate() ;
+
+private:
+
+/*!\var mySigStates[7], private
+ * \brief stores signals' handler functions
+ */ 
+Standard_Address mySigStates[7];
+
+/*!\var myFloatOpWord
+ * \brief stores a float operation word, private
+ */ 
+Standard_Integer myFloatOpWord;
+
+/*!\var myIsActivated
+ * \brief stores a flag whether a catcher is activated, private]
+ */
+Standard_Boolean myIsActivated;
+
+};
+
+
+#endif
diff --git a/src/CASCatch/CASCatch_ErrorHandler.cxx b/src/CASCatch/CASCatch_ErrorHandler.cxx
new file mode 100644 (file)
index 0000000..a878430
--- /dev/null
@@ -0,0 +1,103 @@
+
+#ifdef NO_CXX_EXCEPTION
+
+#include "CASCatch_ErrorHandler.hxx"
+
+// During setjmp()/longjmp() K_SETJMP_CASCatch is non zero (try)
+// So if there is an abort request and if K_SETJMP_CASCatch is non zero, the abort
+// request will be ignored. If the abort request do a raise during a setjmp
+// or a longjmp, there will be a "terminating SEGV" impossible to handle.
+
+
+Standard_EXPORT int K_SETJMP_CASCatch = 0 ; 
+
+static Handle(CASCatch_Failure) GlbError;  //Last caught Error, Null if there is no error
+
+static CASCatch_ErrorHandler*   Top = 0;   //The top of the Errors Stack
+
+//=======================================================================
+//function : CASCatch_ErrorHandler
+//purpose  : Constructor
+//=======================================================================
+CASCatch_ErrorHandler::CASCatch_ErrorHandler ()
+{
+  Previous = Top;
+  Top      = this;
+  CaughtError.Nullify();
+  GlbError.Nullify();
+}
+
+//=======================================================================
+//function : ~CASCatch_ErrorHandler
+//purpose  : Destructor : Delete the ErrorHandler and Abort if there is a 'Error'.
+//=======================================================================
+CASCatch_ErrorHandler::~CASCatch_ErrorHandler()
+{
+  Top = Top->Previous;
+  if( !GlbError.IsNull() ) Abort();
+}
+
+//=======================================================================
+//function : Abort: make a longjmp to the saved Context.
+//purpose  : Abort if there is a non null 'Error'
+//=======================================================================
+void CASCatch_ErrorHandler::Abort ()
+{
+  //==== Check if can do the "longjmp" =======================================
+  if(Top == NULL || Top->Label == NULL) {
+    cout << "*** Abort *** an exception was raised, but no catch was found." << endl;
+    cout << "\t... The exception is:" << GlbError;
+    exit(1);
+  }
+
+#ifdef DO_ABORT
+  if ( K_SETJMP_CASCatch )
+    cout << "Recursive abort ===> Terminating SEGV ..." << endl ;
+  K_SETJMP_CASCatch = 1 ;
+#endif
+
+  longjmp(Top->Label, Standard_True);
+}
+
+//=======================================================================
+//function : Catches
+//purpose  : If there is a 'Error', and it is in good type 
+//           returns True and clean 'Error', else returns False.
+//=======================================================================
+Standard_Boolean CASCatch_ErrorHandler::Catches 
+  (const Handle(Standard_Type)& AType) 
+{
+#ifdef DO_ABORT
+  K_SETJMP_CASCatch = 0 ;
+#endif
+  if(GlbError.IsNull())
+    return Standard_False;
+
+  if(GlbError->IsKind(AType)){
+    CaughtError = GlbError;
+    GlbError.Nullify();
+    return Standard_True;
+  } else {
+    return Standard_False;
+  }
+}
+
+//=======================================================================
+//function : LastCaughtError
+//purpose  : 
+//=======================================================================
+Handle(CASCatch_Failure) CASCatch_ErrorHandler::LastCaughtError()
+{
+  return Top->CaughtError;
+}
+
+//=======================================================================
+//function : Error
+//purpose  : 
+//=======================================================================
+void CASCatch_ErrorHandler::Error(const Handle(CASCatch_Failure)& aError)
+{
+  GlbError = aError;
+}
+
+#endif
diff --git a/src/CASCatch/CASCatch_ErrorHandler.hxx b/src/CASCatch/CASCatch_ErrorHandler.hxx
new file mode 100644 (file)
index 0000000..e5b4171
--- /dev/null
@@ -0,0 +1,73 @@
+
+#ifndef _CASCatch_ErrorHandler_HeaderFile
+#define _CASCatch_ErrorHandler_HeaderFile
+
+#include "CASCatch_Failure.hxx"
+
+#include <stdlib.h>
+#include <setjmp.h>
+
+
+extern int K_SETJMP_CASCatch ;
+
+/*!
+ * \class CASCatch_ErrorHandler
+ * \brief This class is an exception handler, private
+ *
+ */ 
+class CASCatch_ErrorHandler 
+{
+  friend class  CASCatch_Failure;     // To execute the raise exception.
+
+ public:
+ Standard_EXPORT CASCatch_ErrorHandler();
+ Standard_EXPORT ~CASCatch_ErrorHandler();
+ Standard_EXPORT Standard_Boolean Catches (const Handle(Standard_Type)&);
+
+ private:
+  Standard_EXPORT static  void Abort();
+  Standard_EXPORT static  void Error(const Handle(CASCatch_Failure)&);
+  Standard_EXPORT static  Handle(CASCatch_Failure)  LastCaughtError();
+
+ //==== The fields ===========================================================
+ private:
+           CASCatch_ErrorHandler*   Previous;
+           Handle(CASCatch_Failure) CaughtError;
+
+ public:
+  jmp_buf      Label;
+
+};
+
+#undef CASCatch_TRY
+#define CASCatch_TRY try
+
+#undef CASCatch_CATCH
+#define CASCatch_CATCH catch
+
+
+#ifdef NO_CXX_EXCEPTION
+# undef CASCatch_TRY
+# undef CASCatch_CATCH
+
+# if defined(DO_ABORT)
+  
+#  define DoesNotAbort_CASCatch(aHandler) !(K_SETJMP_CASCatch = setjmp(aHandler.Label))
+
+#  define CASCatch_TRY        CASCatch_ErrorHandler _Function; \
+                                K_SETJMP_CASCatch = 1 ; \
+                                if(DoesNotAbort_CASCatch(_Function))
+
+# else  //If DO_ABORT is not defined
+#  define DoesNotAbort_CASCatch(aHandler) !setjmp(aHandler.Label)
+
+#  define CASCatch_TRY      CASCatch_ErrorHandler _Function; \
+                              if(DoesNotAbort_CASCatch(_Function))
+# endif //DO_ABORT
+
+
+# define CASCatch_CATCH(Error)   else if(_Function.Catches(STANDARD_TYPE(Error)))
+#endif //NO_CXX_EXCEPTION
+
+#endif //_CASCatch_ErrorHandler_HeaderFile
diff --git a/src/CASCatch/CASCatch_Failure.cxx b/src/CASCatch/CASCatch_Failure.cxx
new file mode 100644 (file)
index 0000000..70eb8a7
--- /dev/null
@@ -0,0 +1,107 @@
+#include "CASCatch_Failure.hxx"
+#include "CASCatch_ErrorHandler.hxx"
+#include <Standard_TypeMismatch.hxx>
+#include <Standard_Type.hxx>
+#include <string.h>
+
+IMPLEMENT_STANDARD_HANDLE( CASCatch_Failure, Standard_Transient )
+IMPLEMENT_STANDARD_RTTIEXT( CASCatch_Failure, Standard_Transient ) 
+
+
+#ifndef NO_CXX_EXCEPTION
+static Handle(CASCatch_Failure) RaisedError;
+#endif
+
+//================================================================================
+/*! Public -
+ * \brief creates a CASCatch_Failure
+ */
+//================================================================================ 
+CASCatch_Failure::CASCatch_Failure () { myMessage = "Signal detected";}
+
+
+//================================================================================
+/*! Public -
+ * \brief creates a CASCatch_Failure with a message
+ * \param an exception message
+ */
+//================================================================================ 
+CASCatch_Failure::CASCatch_Failure (const Standard_CString AString) 
+{
+  if(AString) {
+     myMessage = new Standard_Character[strlen(AString) + 1];
+     strcpy(myMessage,AString);
+  }
+}
+
+//================================================================================
+/*! Public -
+ * \brief returns the last caught exception
+ */
+//================================================================================ 
+Handle(CASCatch_Failure) CASCatch_Failure::Caught() 
+{
+#ifdef NO_CXX_EXCEPTION
+  return CASCatch_ErrorHandler::LastCaughtError();
+#else
+  return RaisedError ;
+#endif
+}
+
+//================================================================================
+/*! Public -
+ * \brief raises a CASCatch_Failure exception
+ * \param an exception message
+ */
+//================================================================================ 
+void CASCatch_Failure::Raise (const Standard_CString AString) 
+{ 
+  Handle(CASCatch_Failure) E = new CASCatch_Failure()  ;
+  E->Reraise (AString) ;
+}
+
+
+//================================================================================
+/*! Public -
+ * \brief re-raises a CASCatch_Failure exception
+ * \param an exception message
+ */
+//================================================================================
+void CASCatch_Failure::Reraise (const Standard_CString AString) 
+{
+  if(AString){
+    myMessage = new Standard_Character[strlen(AString) + 1];
+    strcpy(myMessage,AString);
+  }
+
+#ifdef NO_CXX_EXCEPTION
+  CASCatch_ErrorHandler::Error(this) ;
+  CASCatch_ErrorHandler::Abort();
+#else
+  RaisedError = this ;
+  Throw() ;
+#endif
+}
+
+//================================================================================
+/*! Public -
+ * \brief returns an exception message
+ */
+//================================================================================ 
+Standard_CString CASCatch_Failure::GetError() const
+{
+  return myMessage;
+}
+
+//================================================================================
+/*! Public -
+ * \brief Is called when using standard C++ exceptions
+ */
+//================================================================================ 
+void CASCatch_Failure::Throw() const
+{
+#ifndef NO_CXX_EXCEPTION
+  throw CASCatch_Failure() ;
+#endif
+}
+
diff --git a/src/CASCatch/CASCatch_Failure.hxx b/src/CASCatch/CASCatch_Failure.hxx
new file mode 100644 (file)
index 0000000..9da5701
--- /dev/null
@@ -0,0 +1,41 @@
+#ifndef _CASCATCH_FAILURE_HeaderFile
+#define _CASCATCH_FAILURE_HeaderFile
+
+#include <Standard_Transient.hxx>
+#include <Standard_DefineHandle.hxx>
+DEFINE_STANDARD_HANDLE( CASCatch_Failure, Standard_Transient )
+
+#include <Standard.hxx>
+
+/*!
+ * \class CASCatch_Failure
+ * \brief This class presents an exception to be thrown
+ *
+ */    
+class CASCatch_Failure :  public Standard_Transient
+{
+
+public:
+
+Standard_EXPORT CASCatch_Failure();
+Standard_EXPORT CASCatch_Failure(const Standard_CString aString);
+Standard_EXPORT void Reraise(const Standard_CString aMessage) ;
+Standard_EXPORT Standard_CString GetError() const;
+Standard_EXPORT static  Handle_CASCatch_Failure Caught() ;
+Standard_EXPORT static  void Raise(const Standard_CString aMessage = "") ;
+Standard_EXPORT virtual  void Throw() const;public:
+
+public:
+
+DEFINE_STANDARD_RTTI( CASCatch_Failure )  
+
+private: 
+/*!\var myMessage
+ * \brief stores an exception message
+ */   
+Standard_CString myMessage;
+
+};
+
+
+#endif
index 838e3e08640abd6b565cdb4e68a7aed0c02c2491..f6e17c1e8690fc1089e78e05901b02519dbf573b 100644 (file)
@@ -1,45 +1,26 @@
-#  SALOME Utils : general SALOME's definitions and tools
-#
-#  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-#  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
-# 
-#  This library is free software; you can redistribute it and/or 
-#  modify it under the terms of the GNU Lesser General Public 
-#  License as published by the Free Software Foundation; either 
-#  version 2.1 of the License. 
-# 
-#  This library is distributed in the hope that it will be useful, 
-#  but WITHOUT ANY WARRANTY; without even the implied warranty of 
-#  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
-#  Lesser General Public License for more details. 
-# 
-#  You should have received a copy of the GNU Lesser General Public 
-#  License along with this library; if not, write to the Free Software 
-#  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
-# 
-#  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
-#
-#
-#
 #  File   : Makefile.in
-#  Author : Marc Tajchman (CEA)
+#  Author : Sergey RUIN (OCN)
 #  Module : SALOME
-#  $Header$
 
 top_srcdir=@top_srcdir@
 top_builddir=../..
 srcdir=@srcdir@
-VPATH=.:@srcdir@:@top_srcdir@/idl
+VPATH=.:@srcdir@:@top_srcdir@/idl:$(top_srcdir)/idl
 
 
 @COMMENCE@
 
 # header files  
-EXPORT_HEADERS= CASCatch_SignalsHandler.h
+EXPORT_HEADERS= CASCatch_Failure.hxx \
+               CASCatch_CatchSignals.hxx \
+               CASCatch_ErrorHandler.hxx
 
 # Libraries targets
 LIB = libCASCatch.la 
-LIB_SRC = CASCatch_SignalsHandler.cxx
+
+LIB_SRC = CASCatch_Failure.cxx \
+          CASCatch_ErrorHandler.cxx \
+          CASCatch_CatchSignals.cxx
 
 CPPFLAGS += $(OCC_INCLUDES)
 CXXFLAGS += $(OCC_CXXFLAGS)
index 736fbe560d54a7cd2d8823f50b0ec2fea3f38190..e859ea4fbaaa666d6b44317ca895274f9b2e60c4 100644 (file)
@@ -17,7 +17,7 @@ EXPORT_HEADERS = \
 # Libraries targets
 
 LIB = libSalomeCommunication.la 
-LIB_SRC = SALOME_Comm_i.cxx  SenderFactory.cxx Receiver.cxx MultiCommException.cxx SALOMEMultiComm.cxx ReceiverFactory.cxx
+LIB_SRC = SALOME_Comm_i.cxx  SenderFactory.cxx MultiCommException.cxx SALOMEMultiComm.cxx ReceiverFactory.cxx
 LIB_SERVER_IDL = SALOME_Comm.idl SALOME_Exception.idl
 
 # Executables targets
index fe029fc4a17832dd4f56ef280c4d7dee8a448362..6313ab5e43e23c3cb3742a43e96f71d516f7884a 100644 (file)
@@ -3,8 +3,13 @@
 
 #include <string>
 
+#if defined WNT && defined COMMUNICATION_EXPORTS
+#define COMMUNICATION_EXPORT __declspec( dllexport )
+#else
+#define COMMUNICATION_EXPORT
+#endif
 
-class MultiCommException {
+class COMMUNICATION_EXPORT MultiCommException {
 private:
   std::string _message;
 public:
index 56c65ad7ed918a70fbeb5f3946145990d629129a..d155e3360e73915c094d43d633449061d0a15056 100644 (file)
@@ -5,16 +5,38 @@
 
 /*! Abstract class factorizing common methods of all the receivers. All of the receivers have to inheritate from it.
  */
+template<class T,class senderPtr, class senderSrv>
 class Receiver
 {
 public:
-  virtual void *getValue(long &size)=0;
+  virtual T *getValue(long &size)=0;
   virtual ~Receiver() {}
 protected:
-  virtual void *getValue(long &size,SALOME::Sender_ptr sender);
-  static inline void *getLocalValue(long &size,SALOME_Sender_i* servant);
-  virtual void *getDistValue(long &size)=0;
+  virtual T *getValue(long &size,senderPtr sender);
+  static inline T *getLocalValue(long &size,senderSrv* servant);
+  virtual T *getDistValue(long &size)=0;
 };
 
+template<class T,class senderPtr, class senderSrv>
+T *Receiver<T,senderPtr,senderSrv>::getLocalValue(long &size,senderSrv* servant)
+{
+  const T *src=(const T *)servant->getData(size);
+  long lgr=size*servant->getSizeOf();
+  void *ret=new char[lgr];
+  memcpy(ret,src,lgr);
+  return (T *)ret;
+  //return (void *)servant->getData(size);
+}
+
+template<class T,class senderPtr, class senderSrv>
+T *Receiver<T,senderPtr,senderSrv>::getValue(long &size,senderPtr sender)
+{
+  senderSrv* data=senderSrv::find(sender);
+  if(data)
+    return getLocalValue(size,data);
+  else
+    return getDistValue(size);
+}
+
 #endif
 
index f3f0da6b149a88f890d05037e6b76d33435e882a..1a2bd9125d61c1b49d5dc5ef1b1617ac8bc3bbb0 100644 (file)
@@ -23,116 +23,141 @@ using namespace std;
 #endif
 
 /*!
-  This method performs the transfert with the remote sender given. If it fails with this sender it tries with an another protocol (CORBA by default).
+  This method performs the transfert of double array with the remote SenderDouble given. If it fails with this SenderDouble it tries with an another protocol (CORBA by default).
  */
-void *ReceiverFactory::getValue(SALOME::Sender_ptr sender,long &size)throw(MultiCommException)
+double *ReceiverFactory::getValue(SALOME::SenderDouble_ptr sender,long &size)throw(MultiCommException)
 {
-  void *ret;
+  double *ret;
   try{
     ret=getValueOneShot(sender,size);
   }
   catch(MultiCommException&)
     {
-      SALOME::Sender_ptr newSender=sender->buildOtherWithProtocol(SALOME::CORBA_);
+      SALOME::SenderDouble_ptr newSender=sender->buildOtherWithProtocol(SALOME::CORBA_);
+      MESSAGE("PROTOCOL CHANGED TO CORBA");
+      sender->release();
+      ret=getValueOneShot(newSender,size);
+      CORBA::release(newSender);
+    }
+  return ret;
+}
+
+/*!
+  This method performs the transfert of int array with the remote SenderInt given. If it fails with this SenderInt it tries with an another protocol (CORBA by default).
+ */
+int *ReceiverFactory::getValue(SALOME::SenderInt_ptr sender,long &size)throw(MultiCommException)
+{
+  int *ret;
+  try{
+    ret=getValueOneShot(sender,size);
+  }
+  catch(MultiCommException&)
+    {
+      SALOME::SenderInt_ptr newSender=sender->buildOtherWithProtocol(SALOME::CORBA_);
       MESSAGE("PROTOCOL CHANGED TO CORBA");
       sender->release();
-      CORBA::release(sender);
       ret=getValueOneShot(newSender,size);
+      CORBA::release(newSender);
     }
   return ret;
 }
 
 /*!
-  This method performs the transfert with the remote sender given. If it fails an exception is thrown.
+  This method performs the transfert with the remote SenderDouble given. If it fails an exception is thrown.
  */
-void *ReceiverFactory::getValueOneShot(SALOME::Sender_ptr sender,long &size)throw(MultiCommException)
+double *ReceiverFactory::getValueOneShot(SALOME::SenderDouble_ptr sender,long &size)throw(MultiCommException)
 {
   SALOME::CorbaDoubleNCSender_ptr cncD_ptr;
   SALOME::CorbaDoubleCSender_ptr cwcD_ptr;
-  SALOME::CorbaLongNCSender_ptr cncL_ptr;
-  SALOME::CorbaLongCSender_ptr cwcL_ptr;
 #ifdef HAVE_MPI2
-  SALOME::MPISender_ptr mpi_ptr=SALOME::MPISender::_narrow(sender);
+  SALOME::MPISenderDouble_ptr mpi_ptr=SALOME::MPISenderDouble::_narrow(sender);
+#endif
+#ifdef HAVE_SOCKET
+  SALOME::SocketSenderDouble_ptr sock_ptr=SALOME::SocketSenderDouble::_narrow(sender);
+#endif
+  cncD_ptr=SALOME::CorbaDoubleNCSender::_narrow(sender);
+  cwcD_ptr=SALOME::CorbaDoubleCSender::_narrow(sender);
+  if(!CORBA::is_nil(cncD_ptr))
+    {
+      CORBA::release(sender);
+      CorbaDNoCopyReceiver<double,CORBA::Double,SALOME::vectorOfDouble_var,SALOME::CorbaDoubleNCSender_ptr,SALOME::SenderDouble_ptr,SALOME_SenderDouble_i> rec(cncD_ptr);
+      return rec.getValue(size);
+    }
+  else if(!CORBA::is_nil(cwcD_ptr))
+    {
+      CORBA::release(sender);
+      CorbaDWithCopyReceiver<double,CORBA::Double,SALOME::vectorOfDouble_var,SALOME::CorbaDoubleCSender_ptr,SALOME::SenderDouble_ptr,SALOME_SenderDouble_i> rec(cwcD_ptr);
+      return rec.getValue(size);
+    }
+#ifdef HAVE_MPI2
+  else if(!CORBA::is_nil(mpi_ptr))
+    {
+      CORBA::release(sender);
+      MPIReceiver<double,MPI_DOUBLE,SALOME::MPISenderDouble_ptr,SALOME::SenderDouble_ptr,SALOME_SenderDouble_i> rec(mpi_ptr);
+      return rec.getValue(size);
+    }
 #endif
 #ifdef HAVE_SOCKET
-  SALOME::SocketSender_ptr sock_ptr=SALOME::SocketSender::_narrow(sender);
+  else if(!CORBA::is_nil(sock_ptr))
+    {
+      CORBA::release(sender);
+      SocketReceiver<double,xdr_double,SALOME::SocketSenderDouble_ptr,SALOME::SenderDouble_ptr,SALOME_SenderDouble_i> rec(sock_ptr);
+      return rec.getValue(size);
+    }
 #endif
- switch(sender->getTypeOfDataTransmitted())
+  else
     {
-    case SALOME::DOUBLE_:
-      cncD_ptr=SALOME::CorbaDoubleNCSender::_narrow(sender);
-      cwcD_ptr=SALOME::CorbaDoubleCSender::_narrow(sender);
-      if(!CORBA::is_nil(cncD_ptr))
-       {
-         CORBA::release(sender);
-         CorbaDNoCopyReceiver<double,CORBA::Double,SALOME::vectorOfDouble_var,SALOME::CorbaDoubleNCSender_ptr> rec(cncD_ptr);
-         return rec.getValue(size);
-       }
-      else if(!CORBA::is_nil(cwcD_ptr))
-       {
-         CORBA::release(sender);
-         CorbaDWithCopyReceiver<double,CORBA::Double,SALOME::vectorOfDouble_var,SALOME::CorbaDoubleCSender_ptr> rec(cwcD_ptr);
-         return rec.getValue(size);
-       }
+      throw MultiCommException("Unknown sender protocol");
+      return 0;
+    }
+}
+
+/*!
+  This method performs the transfert with the remote SenderInt given. If it fails an exception is thrown.
+ */
+int *ReceiverFactory::getValueOneShot(SALOME::SenderInt_ptr sender,long &size)throw(MultiCommException)
+{
+  SALOME::CorbaLongNCSender_ptr cncL_ptr;
+  SALOME::CorbaLongCSender_ptr cwcL_ptr;
 #ifdef HAVE_MPI2
-      else if(!CORBA::is_nil(mpi_ptr))
-       {
-         CORBA::release(sender);
-         MPIReceiver<double,MPI_DOUBLE> rec(mpi_ptr);
-         return rec.getValue(size);
-       }
+  SALOME::MPISenderInt_ptr mpi_ptr=SALOME::MPISenderInt::_narrow(sender);
 #endif
 #ifdef HAVE_SOCKET
-      else if(!CORBA::is_nil(sock_ptr))
-       {
-         CORBA::release(sender);
-         SocketReceiver<double,xdr_double> rec(sock_ptr);
-         return rec.getValue(size);
-       }
+  SALOME::SocketSenderInt_ptr sock_ptr=SALOME::SocketSenderInt::_narrow(sender);
 #endif
-      else
-       {
-         throw MultiCommException("Unknown sender protocol");
-         return 0;
-       }
-    case SALOME::INT_:
-      cncL_ptr=SALOME::CorbaLongNCSender::_narrow(sender);
-      cwcL_ptr=SALOME::CorbaLongCSender::_narrow(sender);
-      if(!CORBA::is_nil(cncL_ptr))
-       {
-         CORBA::release(sender);
-         CorbaINoCopyReceiver<int,CORBA::Long,SALOME::vectorOfLong_var,SALOME::CorbaLongNCSender_ptr> rec(cncL_ptr);
-         return rec.getValue(size);
-       }
-      else if(!CORBA::is_nil(cwcL_ptr))
-       {
-         CORBA::release(sender);
-         CorbaIWithCopyReceiver<int,CORBA::Long,SALOME::vectorOfLong_var,SALOME::CorbaLongCSender_ptr> rec(cwcL_ptr);
-         return rec.getValue(size);
-       }
+  cncL_ptr=SALOME::CorbaLongNCSender::_narrow(sender);
+  cwcL_ptr=SALOME::CorbaLongCSender::_narrow(sender);
+  if(!CORBA::is_nil(cncL_ptr))
+    {
+      CORBA::release(sender);
+      CorbaINoCopyReceiver<int,CORBA::Long,SALOME::vectorOfLong_var,SALOME::CorbaLongNCSender_ptr,SALOME::SenderInt_ptr,SALOME_SenderInt_i> rec(cncL_ptr);
+      return rec.getValue(size);
+    }
+  else if(!CORBA::is_nil(cwcL_ptr))
+    {
+      CORBA::release(sender);
+      CorbaIWithCopyReceiver<int,CORBA::Long,SALOME::vectorOfLong_var,SALOME::CorbaLongCSender_ptr,SALOME::SenderInt_ptr,SALOME_SenderInt_i> rec(cwcL_ptr);
+      return rec.getValue(size);
+    }
 #ifdef HAVE_MPI2
-      else if(!CORBA::is_nil(mpi_ptr))
-       {
-         CORBA::release(sender);
-         MPIReceiver<int,MPI_INT> rec(mpi_ptr);
-         return rec.getValue(size);
-       }
+  else if(!CORBA::is_nil(mpi_ptr))
+    {
+      CORBA::release(sender);
+      MPIReceiver<int,MPI_INT,SALOME::MPISenderInt_ptr,SALOME::SenderInt_ptr,SALOME_SenderInt_i> rec(mpi_ptr);
+      return rec.getValue(size);
+    }
 #endif
 #ifdef HAVE_SOCKET
-      else if(!CORBA::is_nil(sock_ptr))
-       {
-         CORBA::release(sender);
-         SocketReceiver<int,xdr_int> rec(sock_ptr);
-         return rec.getValue(size);
-       }
+  else if(!CORBA::is_nil(sock_ptr))
+    {
+      CORBA::release(sender);
+      SocketReceiver<int,xdr_int,SALOME::SocketSenderInt_ptr,SALOME::SenderInt_ptr,SALOME_SenderInt_i> rec(sock_ptr);
+      return rec.getValue(size);
+    }
 #endif
-      else
-       {
-         throw MultiCommException("Unknown sender protocol");
-         return 0;
-       }
-    default:
-      throw MultiCommException("unknown type of data transfered");
+  else
+    {
+      throw MultiCommException("Unknown sender protocol");
       return 0;
     }
 }
index e5072c9998a2160e2b56c3fa4f7541bc24a61041..28eac49f68d4c6f654e0e97ba6941f1adfbcc974 100644 (file)
 class ReceiverFactory
 {
 public:
-  static void *getValue(SALOME::Sender_ptr sender,long &size)throw(MultiCommException);
+  static double *getValue(SALOME::SenderDouble_ptr sender,long &size)throw(MultiCommException);
+  static int *getValue(SALOME::SenderInt_ptr sender,long &size)throw(MultiCommException);
 private:
-  static void *getValueOneShot(SALOME::Sender_ptr sender,long &size)throw(MultiCommException);
+  static double *getValueOneShot(SALOME::SenderDouble_ptr sender,long &size)throw(MultiCommException);
+  static int *getValueOneShot(SALOME::SenderInt_ptr sender,long &size)throw(MultiCommException);
 };
 
 #endif
index a5d65ae15fc517aa11ba2db600981da5102fce93..19ea8c164d7c3c6ca689ad30417ea5426f05b229 100644 (file)
@@ -5,42 +5,40 @@ using namespace std;
 #define TAILLE_SPLIT 100000
 #define TIMEOUT 20
 
-template<class T,class TCorba,class TSeqCorba,class CorbaSender>
-CorbaNCNoCopyReceiver<T,TCorba,TSeqCorba,CorbaSender>::CorbaNCNoCopyReceiver(CorbaSender mySender):_mySender(mySender){
+template<class T,class TCorba,class TSeqCorba,class CorbaSender,class servForT,class ptrForT>
+CorbaNCNoCopyReceiver<T,TCorba,TSeqCorba,CorbaSender,servForT,ptrForT>::CorbaNCNoCopyReceiver(CorbaSender mySender):_mySender(mySender){
 }
 
-template<class T,class TCorba,class TSeqCorba,class CorbaSender>
-CorbaNCNoCopyReceiver<T,TCorba,TSeqCorba,CorbaSender>::~CorbaNCNoCopyReceiver(){
+template<class T,class TCorba,class TSeqCorba,class CorbaSender,class servForT,class ptrForT>
+CorbaNCNoCopyReceiver<T,TCorba,TSeqCorba,CorbaSender,servForT,ptrForT>::~CorbaNCNoCopyReceiver(){
   _mySender->release();
-  CORBA::release(_mySender);
 }
 
-template<class T,class TCorba,class TSeqCorba,class CorbaSender>
-void *CorbaNCNoCopyReceiver<T,TCorba,TSeqCorba,CorbaSender>::getDistValue(long &size)
+template<class T,class TCorba,class TSeqCorba,class CorbaSender,class servForT,class ptrForT>
+T *CorbaNCNoCopyReceiver<T,TCorba,TSeqCorba,CorbaSender,servForT,ptrForT>::getDistValue(long &size)
 {
   TSeqCorba seq=_mySender->send();
   size=seq->length();
-  return seq->get_buffer(1);
+  return (T *)seq->get_buffer(1);
 }
 
-template<class T,class TCorba,class TSeqCorba,class CorbaSender>
-void *CorbaNCNoCopyReceiver<T,TCorba,TSeqCorba,CorbaSender>::getValue(long &size)
+template<class T,class TCorba,class TSeqCorba,class CorbaSender,class servForT,class ptrForT>
+T *CorbaNCNoCopyReceiver<T,TCorba,TSeqCorba,CorbaSender,servForT,ptrForT>::getValue(long &size)
 {
-  return Receiver::getValue(size,_mySender);
+  return Receiver<T,servForT,ptrForT>::getValue(size,_mySender);
 }
 
-template<class T,class TCorba,class TSeqCorba,class CorbaSender>
-CorbaNCWithCopyReceiver<T,TCorba,TSeqCorba,CorbaSender>::CorbaNCWithCopyReceiver(CorbaSender mySender):_mySender(mySender){
+template<class T,class TCorba,class TSeqCorba,class CorbaSender,class servForT,class ptrForT>
+CorbaNCWithCopyReceiver<T,TCorba,TSeqCorba,CorbaSender,servForT,ptrForT>::CorbaNCWithCopyReceiver(CorbaSender mySender):_mySender(mySender){
 }
 
-template<class T,class TCorba,class TSeqCorba,class CorbaSender>
-CorbaNCWithCopyReceiver<T,TCorba,TSeqCorba,CorbaSender>::~CorbaNCWithCopyReceiver(){
+template<class T,class TCorba,class TSeqCorba,class CorbaSender,class servForT,class ptrForT>
+CorbaNCWithCopyReceiver<T,TCorba,TSeqCorba,CorbaSender,servForT,ptrForT>::~CorbaNCWithCopyReceiver(){
   _mySender->release();
-  CORBA::release(_mySender);
 }
 
-template<class T,class TCorba,class TSeqCorba,class CorbaSender>
-void *CorbaNCWithCopyReceiver<T,TCorba,TSeqCorba,CorbaSender>::getDistValue(long &size){
+template<class T,class TCorba,class TSeqCorba,class CorbaSender,class servForT,class ptrForT>
+T *CorbaNCWithCopyReceiver<T,TCorba,TSeqCorba,CorbaSender,servForT,ptrForT>::getDistValue(long &size){
   size=_mySender->getSize();
   long n;
   T *ret=new T[size];
@@ -59,24 +57,23 @@ void *CorbaNCWithCopyReceiver<T,TCorba,TSeqCorba,CorbaSender>::getDistValue(long
   return ret;
 }
 
-template<class T,class TCorba,class TSeqCorba,class CorbaSender>
-void *CorbaNCWithCopyReceiver<T,TCorba,TSeqCorba,CorbaSender>::getValue(long &size)
+template<class T,class TCorba,class TSeqCorba,class CorbaSender,class servForT,class ptrForT>
+T *CorbaNCWithCopyReceiver<T,TCorba,TSeqCorba,CorbaSender,servForT,ptrForT>::getValue(long &size)
 {
-  return Receiver::getValue(size,_mySender);
+  return Receiver<T,servForT,ptrForT>::getValue(size,_mySender);
 }
 
-template<class T,class TCorba,class TSeqCorba,class CorbaSender>
-CorbaWCNoCopyReceiver<T,TCorba,TSeqCorba,CorbaSender>::CorbaWCNoCopyReceiver(CorbaSender mySender):_mySender(mySender){
+template<class T,class TCorba,class TSeqCorba,class CorbaSender,class servForT,class ptrForT>
+CorbaWCNoCopyReceiver<T,TCorba,TSeqCorba,CorbaSender,servForT,ptrForT>::CorbaWCNoCopyReceiver(CorbaSender mySender):_mySender(mySender){
 }
 
-template<class T,class TCorba,class TSeqCorba,class CorbaSender>
-CorbaWCNoCopyReceiver<T,TCorba,TSeqCorba,CorbaSender>::~CorbaWCNoCopyReceiver(){
+template<class T,class TCorba,class TSeqCorba,class CorbaSender,class servForT,class ptrForT>
+CorbaWCNoCopyReceiver<T,TCorba,TSeqCorba,CorbaSender,servForT,ptrForT>::~CorbaWCNoCopyReceiver(){
   _mySender->release();
-  CORBA::release(_mySender);
 }
 
-template<class T,class TCorba,class TSeqCorba,class CorbaSender>
-void *CorbaWCNoCopyReceiver<T,TCorba,TSeqCorba,CorbaSender>::getDistValue(long &size){
+template<class T,class TCorba,class TSeqCorba,class CorbaSender,class servForT,class ptrForT>
+T *CorbaWCNoCopyReceiver<T,TCorba,TSeqCorba,CorbaSender,servForT,ptrForT>::getDistValue(long &size){
   size=_mySender->getSize();
   long n;
   T *ret=new T[size];
@@ -95,24 +92,23 @@ void *CorbaWCNoCopyReceiver<T,TCorba,TSeqCorba,CorbaSender>::getDistValue(long &
   return ret;
 }
 
-template<class T,class TCorba,class TSeqCorba,class CorbaSender>
-void *CorbaWCNoCopyReceiver<T,TCorba,TSeqCorba,CorbaSender>::getValue(long &size)
+template<class T,class TCorba,class TSeqCorba,class CorbaSender,class servForT,class ptrForT>
+T *CorbaWCNoCopyReceiver<T,TCorba,TSeqCorba,CorbaSender,servForT,ptrForT>::getValue(long &size)
 {
-  return Receiver::getValue(size,_mySender);
+  return Receiver<T,servForT,ptrForT>::getValue(size,_mySender);
 }
 
-template<class T,class TCorba,class TSeqCorba,class CorbaSender>
-CorbaWCWithCopyReceiver<T,TCorba,TSeqCorba,CorbaSender>::CorbaWCWithCopyReceiver(CorbaSender mySender):_mySender(mySender){
+template<class T,class TCorba,class TSeqCorba,class CorbaSender,class servForT,class ptrForT>
+CorbaWCWithCopyReceiver<T,TCorba,TSeqCorba,CorbaSender,servForT,ptrForT>::CorbaWCWithCopyReceiver(CorbaSender mySender):_mySender(mySender){
 }
 
-template<class T,class TCorba,class TSeqCorba,class CorbaSender>
-CorbaWCWithCopyReceiver<T,TCorba,TSeqCorba,CorbaSender>::~CorbaWCWithCopyReceiver(){
+template<class T,class TCorba,class TSeqCorba,class CorbaSender,class servForT,class ptrForT>
+CorbaWCWithCopyReceiver<T,TCorba,TSeqCorba,CorbaSender,servForT,ptrForT>::~CorbaWCWithCopyReceiver(){
   _mySender->release();
-  CORBA::release(_mySender);
 }
 
-template<class T,class TCorba,class TSeqCorba,class CorbaSender>
-void *CorbaWCWithCopyReceiver<T,TCorba,TSeqCorba,CorbaSender>::getDistValue(long &size){
+template<class T,class TCorba,class TSeqCorba,class CorbaSender,class servForT,class ptrForT>
+T *CorbaWCWithCopyReceiver<T,TCorba,TSeqCorba,CorbaSender,servForT,ptrForT>::getDistValue(long &size){
   size=_mySender->getSize();
   long n;
   T *ret=new T[size];
@@ -131,26 +127,25 @@ void *CorbaWCWithCopyReceiver<T,TCorba,TSeqCorba,CorbaSender>::getDistValue(long
   return ret;
 }
 
-template<class T,class TCorba,class TSeqCorba,class CorbaSender>
-void *CorbaWCWithCopyReceiver<T,TCorba,TSeqCorba,CorbaSender>::getValue(long &size)
+template<class T,class TCorba,class TSeqCorba,class CorbaSender,class servForT,class ptrForT>
+T *CorbaWCWithCopyReceiver<T,TCorba,TSeqCorba,CorbaSender,servForT,ptrForT>::getValue(long &size)
 {
-  return Receiver::getValue(size,_mySender);
+  return Receiver<T,servForT,ptrForT>::getValue(size,_mySender);
 }
 
 #ifdef HAVE_MPI2
 
-template<class T,MPI_Datatype T2>
-MPIReceiver<T,T2>::MPIReceiver(SALOME::MPISender_ptr mySender):_mySender(mySender){
+template<class T,MPI_Datatype T2,class CorbaSender,class servForT,class ptrForT>
+MPIReceiver<T,T2,CorbaSender,servForT,ptrForT>::MPIReceiver(CorbaSender mySender):_mySender(mySender){
 }
 
-template<class T,MPI_Datatype T2>
-MPIReceiver<T,T2>::~MPIReceiver(){
+template<class T,MPI_Datatype T2,class CorbaSender,class servForT,class ptrForT>
+MPIReceiver<T,T2,CorbaSender,servForT,ptrForT>::~MPIReceiver(){
   _mySender->release();
-  CORBA::release(_mySender);
 }
 
-template<class T,MPI_Datatype T2>
-void *MPIReceiver<T,T2>::getDistValue(long &size){
+template<class T,MPI_Datatype T2,class CorbaSender,class servForT,class ptrForT>
+T *MPIReceiver<T,T2,CorbaSender,servForT,ptrForT>::getDistValue(long &size){
   int i=0;
   int myproc;
   int sproc;
@@ -204,10 +199,10 @@ void *MPIReceiver<T,T2>::getDistValue(long &size){
   return _v;
 }
 
-template<class T,MPI_Datatype T2>
-void *MPIReceiver<T,T2>::getValue(long &size)
+template<class T,MPI_Datatype T2,class CorbaSender,class servForT,class ptrForT>
+T *MPIReceiver<T,T2,CorbaSender,servForT,ptrForT>::getValue(long &size)
 {
-  return Receiver::getValue(size,_mySender);
+  return Receiver<T,servForT,ptrForT>::getValue(size,_mySender);
 }
 
 #endif
@@ -221,31 +216,30 @@ void *MPIReceiver<T,T2>::getValue(long &size)
 #include <unistd.h>
 #include <rpc/xdr.h>
 
-template<class T,int (*myFunc)(XDR*,T*)>
-SocketReceiver<T,myFunc>::SocketReceiver(SALOME::SocketSender_ptr mySender) : _mySender(mySender)
+template<class T,int (*myFunc)(XDR*,T*),class CorbaSender,class servForT,class ptrForT>
+SocketReceiver<T,myFunc,CorbaSender,servForT,ptrForT>::SocketReceiver(CorbaSender mySender) : _mySender(mySender)
 {
   _clientSockfd = -1;
   _senderDestruc=true;
 }
 
-template<class T,int (*myFunc)(XDR*,T*)>
-SocketReceiver<T,myFunc>::~SocketReceiver()
+template<class T,int (*myFunc)(XDR*,T*),class CorbaSender,class servForT,class ptrForT>
+SocketReceiver<T,myFunc,CorbaSender,servForT,ptrForT>::~SocketReceiver()
 {
   if(_senderDestruc)
     {
       _mySender->release();
-      CORBA::release(_mySender);
     }
 }
 
-template<class T,int (*myFunc)(XDR*,T*)>
-void *SocketReceiver<T,myFunc>::getValue(long &size)
+template<class T,int (*myFunc)(XDR*,T*),class CorbaSender,class servForT,class ptrForT>
+T *SocketReceiver<T,myFunc,CorbaSender,servForT,ptrForT>::getValue(long &size)
 {
-  return Receiver::getValue(size,_mySender);
+  return Receiver<T,servForT,ptrForT>::getValue(size,_mySender);
 }
 
-template<class T,int (*myFunc)(XDR*,T*)>
-void* SocketReceiver<T,myFunc>::getDistValue(long &size)
+template<class T,int (*myFunc)(XDR*,T*),class CorbaSender,class servForT,class ptrForT>
+T* SocketReceiver<T,myFunc,CorbaSender,servForT,ptrForT>::getDistValue(long &size)
 {
   int n=0, m;
   T *v;
@@ -296,8 +290,8 @@ void* SocketReceiver<T,myFunc>::getDistValue(long &size)
   return v;
 }
 
-template<class T,int (*myFunc)(XDR*,T*)>
-void SocketReceiver<T,myFunc>::initCom()
+template<class T,int (*myFunc)(XDR*,T*),class CorbaSender,class servForT,class ptrForT>
+void SocketReceiver<T,myFunc,CorbaSender,servForT,ptrForT>::initCom()
 {
   try{
     _mySender->initCom();
@@ -325,8 +319,8 @@ void SocketReceiver<T,myFunc>::initCom()
 
 }
 
-template<class T,int (*myFunc)(XDR*,T*)>
-void SocketReceiver<T,myFunc>::connectCom(const char *dest_address, int port)
+template<class T,int (*myFunc)(XDR*,T*),class CorbaSender,class servForT,class ptrForT>
+void SocketReceiver<T,myFunc,CorbaSender,servForT,ptrForT>::connectCom(const char *dest_address, int port)
 {
   struct sockaddr_in serv_addr;
   struct hostent * server;
@@ -377,8 +371,8 @@ void SocketReceiver<T,myFunc>::connectCom(const char *dest_address, int port)
 }
 
 
-template<class T,int (*myFunc)(XDR*,T*)>
-void SocketReceiver<T,myFunc>::closeCom()
+template<class T,int (*myFunc)(XDR*,T*),class CorbaSender,class servForT,class ptrForT>
+void SocketReceiver<T,myFunc,CorbaSender,servForT,ptrForT>::closeCom()
 {
   _mySender->closeCom();
   if( _clientSockfd >= 0 ){
index 4fd2581ee0a9e313f3556882976d78137c130327..c4309b754a3fa082c66d5df09c19a40426a726e0 100644 (file)
 /*!
   Receiver used for transfert with CORBA when no copy is required remotely and locally.
  */
-template<class T,class TCorba,class TSeqCorba,class CorbaSender>
-class CorbaNCNoCopyReceiver : public Receiver
+template<class T,class TCorba,class TSeqCorba,class CorbaSender,class servForT,class ptrForT>
+class CorbaNCNoCopyReceiver : public Receiver<T,servForT,ptrForT>
 {
 private:
   CorbaSender _mySender;
 public:
   CorbaNCNoCopyReceiver(CorbaSender mySender);
   ~CorbaNCNoCopyReceiver();
-  void *getValue(long &size);
+  T *getValue(long &size);
 private:
-  void *getDistValue(long &size);
+  T *getDistValue(long &size);
 };
 
 /*!
   Receiver used for transfert with CORBA when copy is not required remotely but required locally.
  */
-template<class T,class TCorba,class TSeqCorba,class CorbaSender>
-class CorbaNCWithCopyReceiver : public Receiver
+template<class T,class TCorba,class TSeqCorba,class CorbaSender,class servForT,class ptrForT>
+class CorbaNCWithCopyReceiver : public Receiver<T,servForT,ptrForT>
 {
 private:
   CorbaSender _mySender;
 public:
   CorbaNCWithCopyReceiver(CorbaSender mySender);
   ~CorbaNCWithCopyReceiver();
-  void *getValue(long &size);
+  T *getValue(long &size);
 private:
-  void *getDistValue(long &size);
+  T *getDistValue(long &size);
 };
 
 /*!
   Receiver used for transfert with CORBA when copy is required remotely but not required locally.
  */
-template<class T,class TCorba,class TSeqCorba,class CorbaSender>
-class CorbaWCNoCopyReceiver : public Receiver
+template<class T,class TCorba,class TSeqCorba,class CorbaSender,class servForT,class ptrForT>
+class CorbaWCNoCopyReceiver : public Receiver<T,servForT,ptrForT>
 {
 private:
   CorbaSender  _mySender;
 public:
   CorbaWCNoCopyReceiver(CorbaSender mySender);
   ~CorbaWCNoCopyReceiver();
-  void *getValue(long &size);
+  T *getValue(long &size);
 private:
-  void *getDistValue(long &size);
+  T *getDistValue(long &size);
 };
 
 /*!
   Receiver used for transfert with CORBA when copy is required both remotely and locally.
  */
-template<class T,class TCorba,class TSeqCorba,class CorbaSender>
-class CorbaWCWithCopyReceiver : public Receiver
+template<class T,class TCorba,class TSeqCorba,class CorbaSender,class servForT,class ptrForT>
+class CorbaWCWithCopyReceiver : public Receiver<T,servForT,ptrForT>
 {
 private:
   CorbaSender _mySender;
 public:
   CorbaWCWithCopyReceiver(CorbaSender mySender);
   ~CorbaWCWithCopyReceiver();
-  void *getValue(long &size);
+  T *getValue(long &size);
 private:
-  void *getDistValue(long &size);
+  T *getDistValue(long &size);
 };
 
 #ifdef HAVE_MPI2
 /*!
   Receiver for MPI transfert.
  */
-template<class T,MPI_Datatype T2>
-class MPIReceiver : public Receiver
+template<class T,MPI_Datatype T2,class CorbaSender,class servForT,class ptrForT>
+class MPIReceiver : public Receiver<T,servForT,ptrForT>
 {
 private:
-  SALOME::MPISender_ptr _mySender;
+  CorbaSender _mySender;
 public:
-  MPIReceiver(SALOME::MPISender_ptr mySender);
+  MPIReceiver(CorbaSender mySender);
   ~MPIReceiver();
-  void *getValue(long &size);
+  T *getValue(long &size);
 private:
-  void *getDistValue(long &size);
+  T *getDistValue(long &size);
 };
 #endif
 
@@ -96,19 +96,19 @@ class XDR;
 /*!
   Receiver for transfert with sockets.
  */
-template<class T,int (*myFunc)(XDR*,T*)>
-class SocketReceiver : public Receiver
+template<class T,int (*myFunc)(XDR*,T*),class CorbaSender,class servForT,class ptrForT>
+class SocketReceiver : public Receiver<T,servForT,ptrForT>
 {
 private:
-  SALOME::SocketSender_ptr _mySender;
+  CorbaSender _mySender;
   int _clientSockfd;
   bool _senderDestruc;
 public:
-  SocketReceiver(SALOME::SocketSender_ptr mySender);
+  SocketReceiver(CorbaSender mySender);
   ~SocketReceiver();
-  void *getValue(long &size);
+  T *getValue(long &size);
 private:
-  void *getDistValue(long &size);
+  T *getDistValue(long &size);
   void initCom();
   void connectCom(const char *, int);
   void closeCom();
index c832478ab51721a721724ab4b5518c1b8af591be..bcdf9cbeced7ffb9c7126cc4997e29f9d7e872f9 100644 (file)
@@ -1,5 +1,7 @@
 #include "SALOMEMultiComm.hxx"
+#ifndef WNT
 using namespace std;
+#endif
 
 SALOMEMultiComm::SALOMEMultiComm():_type(SALOME::CORBA_)
 {
index 2537dc042b3b3487a62faac8e399d8cd790e4fc8..8c46251af175d281086b2f61a15b52349bbe47bb 100644 (file)
@@ -4,11 +4,17 @@
 #include <SALOMEconfig.h>
 #include CORBA_SERVER_HEADER(SALOME_Comm)
 
+#if defined WNT && defined COMMUNICATION_EXPORTS
+#define COMMUNICATION_EXPORT __declspec( dllexport )
+#else
+#define COMMUNICATION_EXPORT
+#endif
+
 /*!
   Class is designed to ease the use of multi communication.\n
   Simply inherite from it your servant class you want to emit data with senders.
  */
-class SALOMEMultiComm : public virtual POA_SALOME::MultiCommClass {
+class COMMUNICATION_EXPORT SALOMEMultiComm : public virtual POA_SALOME::MultiCommClass {
 protected:
   SALOME::TypeOfCommunication _type;
 public:
index c9b677a84e3799283bda51ebd517c15c32d85b7d..71fbdadf85813225600046620e72dc46993fdcaa 100644 (file)
@@ -1,4 +1,6 @@
+#ifndef WNT
 #include <rpc/xdr.h>
+#endif
 #include "SALOME_Comm_i.hxx"
 #include "poa.h"
 #include "omnithread.h"
 #include "SenderFactory.hxx"
 using namespace std;
 
+#ifndef WNT
 CORBA::ORB_var &getGlobalORB(){
   ORB_INIT &init = *SINGLETON_<ORB_INIT>::Instance();
   CORBA::ORB_var &orb = init(0,0);
   return orb;
 }
+#endif
 
 /*! Return the C++ data associated to the array to transmit.
   Used when sender and receiver are collocalized.
@@ -30,13 +34,47 @@ int SALOME_Sender_i::getSizeOf() const {
 }
 
 /*! Unique constructor */
-SALOME_Sender_i::SALOME_Sender_i(SALOME::TypeOfDataTransmitted type,const void *tabToSend,long lgrTabToSend,int sizeOf):_tabToSend(tabToSend),_lgrTabToSend(lgrTabToSend),_type(type),_sizeOf(sizeOf){
+SALOME_Sender_i::SALOME_Sender_i(const void *tabToSend,long lgrTabToSend,int sizeOf,bool ownTabToSend):_tabToSend(tabToSend),_lgrTabToSend(lgrTabToSend),_sizeOf(sizeOf),_ownTabToSend(ownTabToSend){
+}
+
+/*! To force ownerShip status */
+void SALOME_Sender_i::setOwnerShip(bool own)
+{
+  _ownTabToSend=own;
+}
+
+/*! Method for the remote destroy of the current servant. This method is used by the receiver to destroy the sender when the transfert is complete.
+ */
+void SALOME_Sender_i::release()
+{
+  PortableServer::ObjectId_var oid = _default_POA()->servant_to_id(this);
+  _default_POA()->deactivate_object(oid);
+  _remove_ref();
+}
+
+SALOME_SenderDouble_i::SALOME_SenderDouble_i(const double *tabToSend,long lgrTabToSend,bool ownTabToSend):SALOME_Sender_i(tabToSend,lgrTabToSend,sizeof(double),ownTabToSend)
+{
+}
+
+/*! Destructor.
+ */
+SALOME_SenderDouble_i::~SALOME_SenderDouble_i()
+{
+  if(_ownTabToSend)
+    delete [] (double *)_tabToSend;
+}
+
+/*! Return a new sender of the same array but with an another protocol and delegates to the returned sender the ownership of array.
+ */
+SALOME::SenderDouble_ptr SALOME_SenderDouble_i::buildOtherWithProtocol(SALOME::TypeOfCommunication type)
+{
+  return SenderFactory::buildSender(type,this);
 }
 
 /*! Method to establish if the CORBA object refered by pCorba is collocalised.\n
   If it is, the pointer to the servant that incarnates the CORBA object is returned.
 */
-SALOME_Sender_i *SALOME_Sender_i::find(SALOME::Sender_ptr pCorba){
+SALOME_SenderDouble_i *SALOME_SenderDouble_i::find(SALOME::SenderDouble_ptr pCorba){
   PortableServer::ServantBase *ret;
   try {
     ret=PortableServer::POA::_the_root_poa()->reference_to_servant(pCorba);
@@ -45,33 +83,44 @@ SALOME_Sender_i *SALOME_Sender_i::find(SALOME::Sender_ptr pCorba){
     return 0;
   }
   ret->_remove_ref();
-  return dynamic_cast<SALOME_Sender_i *>(ret);
+  return dynamic_cast<SALOME_SenderDouble_i *>(ret);
 }
 
-/*! Method for the remote destroy of the current servant. This method is used by the receiver to destroy the sender when the transfert is complete.
- */
-void SALOME_Sender_i::release()
+SALOME_SenderInt_i::SALOME_SenderInt_i(const int *tabToSend,long lgrTabToSend,bool ownTabToSend):SALOME_Sender_i(tabToSend,lgrTabToSend,sizeof(int),ownTabToSend)
 {
-  PortableServer::ObjectId_var oid = _default_POA()->servant_to_id(this);
-  _default_POA()->deactivate_object(oid);
-  _remove_ref();
 }
 
-/*! Return the type of the element that compose the array. Used by receiverfactory to build the correct receiver.
+/*! Destructor.
  */
-SALOME::TypeOfDataTransmitted SALOME_Sender_i::getTypeOfDataTransmitted()
+SALOME_SenderInt_i::~SALOME_SenderInt_i()
 {
-  return _type;
+  if(_ownTabToSend)
+    delete [] (int *)_tabToSend;
 }
 
 /*! Return a new sender of the same array but with an another protocol.
  */
-SALOME::Sender_ptr SALOME_Sender_i::buildOtherWithProtocol(SALOME::TypeOfCommunication type)
+SALOME::SenderInt_ptr SALOME_SenderInt_i::buildOtherWithProtocol(SALOME::TypeOfCommunication type)
 {
   return SenderFactory::buildSender(type,this);
 }
 
-SALOME_CorbaDoubleNCSender_i::SALOME_CorbaDoubleNCSender_i(const double *tabToSend,long lgrTabToSend):SALOME_Sender_i(SALOME::DOUBLE_,tabToSend,lgrTabToSend,sizeof(double)){
+/*! Method to establish if the CORBA object refered by pCorba is collocalised.\n
+  If it is, the pointer to the servant that incarnates the CORBA object is returned.
+*/
+SALOME_SenderInt_i *SALOME_SenderInt_i::find(SALOME::SenderInt_ptr pCorba){
+  PortableServer::ServantBase *ret;
+  try {
+    ret=PortableServer::POA::_the_root_poa()->reference_to_servant(pCorba);
+  }
+  catch(...){
+    return 0;
+  }
+  ret->_remove_ref();
+  return dynamic_cast<SALOME_SenderInt_i *>(ret);
+}
+
+SALOME_CorbaDoubleNCSender_i::SALOME_CorbaDoubleNCSender_i(const double *tabToSend,long lgrTabToSend,bool ownTabToSend):SALOME_SenderDouble_i(tabToSend,lgrTabToSend,ownTabToSend),SALOME_Sender_i(tabToSend,lgrTabToSend,sizeof(double),ownTabToSend){
 }
 
 SALOME_CorbaDoubleNCSender_i::~SALOME_CorbaDoubleNCSender_i(){
@@ -92,7 +141,7 @@ SALOME::vectorOfDouble* SALOME_CorbaDoubleNCSender_i::send(){
   return c1._retn();
 }
 
-SALOME_CorbaDoubleCSender_i::SALOME_CorbaDoubleCSender_i(const double *tabToSend,long lgrTabToSend):SALOME_Sender_i(SALOME::DOUBLE_,tabToSend,lgrTabToSend,sizeof(double)){
+SALOME_CorbaDoubleCSender_i::SALOME_CorbaDoubleCSender_i(const double *tabToSend,long lgrTabToSend,bool ownTabToSend):SALOME_SenderDouble_i(tabToSend,lgrTabToSend,ownTabToSend),SALOME_Sender_i(tabToSend,lgrTabToSend,sizeof(double),ownTabToSend){
 }
 
 SALOME_CorbaDoubleCSender_i::~SALOME_CorbaDoubleCSender_i(){
@@ -113,7 +162,7 @@ SALOME::vectorOfDouble* SALOME_CorbaDoubleCSender_i::sendPart(CORBA::ULong offse
 
 ////////////////////////
 
-SALOME_CorbaLongNCSender_i::SALOME_CorbaLongNCSender_i(const int *tabToSend,long lgrTabToSend):SALOME_Sender_i(SALOME::INT_,tabToSend,lgrTabToSend,sizeof(int)){
+SALOME_CorbaLongNCSender_i::SALOME_CorbaLongNCSender_i(const int *tabToSend,long lgrTabToSend,bool ownTabToSend):SALOME_SenderInt_i(tabToSend,lgrTabToSend,ownTabToSend),SALOME_Sender_i(tabToSend,lgrTabToSend,sizeof(int),ownTabToSend){
 }
 
 SALOME_CorbaLongNCSender_i::~SALOME_CorbaLongNCSender_i(){
@@ -134,7 +183,7 @@ SALOME::vectorOfLong* SALOME_CorbaLongNCSender_i::send(){
   return c1._retn();
 }
 
-SALOME_CorbaLongCSender_i::SALOME_CorbaLongCSender_i(const int *tabToSend,long lgrTabToSend):SALOME_Sender_i(SALOME::INT_,tabToSend,lgrTabToSend,sizeof(int)){
+SALOME_CorbaLongCSender_i::SALOME_CorbaLongCSender_i(const int *tabToSend,long lgrTabToSend,bool ownTabToSend):SALOME_SenderInt_i(tabToSend,lgrTabToSend,ownTabToSend),SALOME_Sender_i(tabToSend,lgrTabToSend,sizeof(int),ownTabToSend){
 }
 
 SALOME_CorbaLongCSender_i::~SALOME_CorbaLongCSender_i(){
@@ -159,7 +208,7 @@ unsigned long SALOME_MPISender_i::_tag1=0;
 
 unsigned long SALOME_MPISender_i::_tag2=1;
 
-SALOME_MPISender_i::SALOME_MPISender_i(SALOME::TypeOfDataTransmitted type,const void *tabToSend,long lgrTabToSend,int sizeOf):SALOME_Sender_i(type,tabToSend,lgrTabToSend,sizeOf){
+SALOME_MPISender_i::SALOME_MPISender_i(const void *tabToSend,long lgrTabToSend,int sizeOf,bool ownTabToSend):SALOME_Sender_i(tabToSend,lgrTabToSend,sizeOf,ownTabToSend){
   _portName=new char[MPI_MAX_PORT_NAME];
 }
 
@@ -203,6 +252,7 @@ SALOME::MPISender::param* SALOME_MPISender_i::getParam()
 
 void SALOME_MPISender_i::send()
 {
+  _type=getTypeOfDataTransmitted();
   _argsForThr=new (void *)[8];
   _argsForThr[0]=_portName;
   _argsForThr[1]=&_lgrTabToSend;
@@ -238,6 +288,7 @@ void* SALOME_MPISender_i::myThread(void *args)
       MPI_Send(argsTab[2],*lgrTabToSend,MPI_INT,*cproc,*tag2,*com);
     }
   omni_thread::exit();
+  return args;
 }
 
 void SALOME_MPISender_i::close(const SALOME::MPISender::param& p)
@@ -252,6 +303,18 @@ void SALOME_MPISender_i::close(const SALOME::MPISender::param& p)
   delete [] _argsForThr;
 }
 
+SALOME_MPISenderDouble_i::SALOME_MPISenderDouble_i(const double *tabToSend,long lgrTabToSend,bool ownTabToSend)
+  :SALOME_SenderDouble_i(tabToSend,lgrTabToSend,ownTabToSend),SALOME_MPISender_i(tabToSend,lgrTabToSend,sizeof(double),ownTabToSend)
+  ,SALOME_Sender_i(tabToSend,lgrTabToSend,sizeof(double),ownTabToSend)
+{
+}
+
+SALOME_MPISenderInt_i::SALOME_MPISenderInt_i(const int *tabToSend,long lgrTabToSend,bool ownTabToSend)
+  :SALOME_SenderInt_i(tabToSend,lgrTabToSend,ownTabToSend),SALOME_MPISender_i(tabToSend,lgrTabToSend,sizeof(int),ownTabToSend)
+  ,SALOME_Sender_i(tabToSend,lgrTabToSend,sizeof(int),ownTabToSend)
+{
+}
+
 #endif
 
 #ifdef HAVE_SOCKET
@@ -267,7 +330,7 @@ void SALOME_MPISender_i::close(const SALOME::MPISender::param& p)
 #include <netdb.h>
 #include <unistd.h>
 
-SALOME_SocketSender_i::SALOME_SocketSender_i(SALOME::TypeOfDataTransmitted type,const void *tabToSend,long lgrTabToSend,int sizeOf):SALOME_Sender_i(type,tabToSend,lgrTabToSend,sizeOf){
+SALOME_SocketSender_i::SALOME_SocketSender_i(const void *tabToSend,long lgrTabToSend,int sizeOf,bool ownTabToSend):SALOME_Sender_i(tabToSend,lgrTabToSend,sizeOf,ownTabToSend){
   _IPAddress = inetAddress();
   _serverSockfd = -1;
   _clientSockfd = -1;
@@ -314,6 +377,7 @@ SALOME::SocketSender::param * SALOME_SocketSender_i::getParam()
 
 void SALOME_SocketSender_i::send()
 {
+  _type=getTypeOfDataTransmitted();
   _argsForThr=new void *[6];
   _argsForThr[0]=&_serverSockfd;
   _argsForThr[1]=&_clientSockfd;
@@ -393,6 +457,7 @@ void* SALOME_SocketSender_i::myThread(void *args)
       xdr_vector( &xp, (char*)tabToSend, *lgrTabToSend, sizeof(int), (xdrproc_t)xdr_int );
       xdr_destroy( &xp );
     }
+  return args;
 }
 
 void SALOME_SocketSender_i::initCom() throw(SALOME::SALOME_Exception)
@@ -443,7 +508,6 @@ void SALOME_SocketSender_i::initCom() throw(SALOME::SALOME_Exception)
 void SALOME_SocketSender_i::acceptCom() throw(SALOME::SALOME_Exception)
 {
   socklen_t sin_size;
-  int new_fd;
   struct sockaddr_in client_addr;
   SALOME::ExceptionStruct es;
 
@@ -485,6 +549,18 @@ void SALOME_SocketSender_i::endOfCom()
   delete [] _argsForThr;
 }
 
+SALOME_SocketSenderDouble_i::SALOME_SocketSenderDouble_i(const double *tabToSend,long lgrTabToSend,bool ownTabToSend)
+  :SALOME_SenderDouble_i(tabToSend,lgrTabToSend,ownTabToSend),SALOME_SocketSender_i(tabToSend,lgrTabToSend,sizeof(double),ownTabToSend)
+  ,SALOME_Sender_i(tabToSend,lgrTabToSend,sizeof(double),ownTabToSend)
+{
+}
+
+SALOME_SocketSenderInt_i::SALOME_SocketSenderInt_i(const int *tabToSend,long lgrTabToSend,bool ownTabToSend)
+  :SALOME_SenderInt_i(tabToSend,lgrTabToSend,ownTabToSend),SALOME_SocketSender_i(tabToSend,lgrTabToSend,sizeof(int),ownTabToSend)
+  ,SALOME_Sender_i(tabToSend,lgrTabToSend,sizeof(int),ownTabToSend)
+{
+}
+
 //CCRT porting
 #undef _LIBC_POLLUTION_H_
 #undef _POSIX_PII_SOCKET
index 7b6e8df4376315ae862cfe1980f361ea10df7150..f7f196c620b5bf62740c164fe1e1dc2c88486267 100644 (file)
@@ -26,26 +26,48 @@ protected:
     Practically in terms of bytes the size to be transmitted is _lgrTabToSend*_sizeOf
   */
   int _sizeOf;
-  /*! Type the component of the array*/
-  SALOME::TypeOfDataTransmitted _type;
+  /*! Indicates if _tabToSend has to be deallocated */ 
+  bool _ownTabToSend;
 
-  SALOME_Sender_i(SALOME::TypeOfDataTransmitted type,const void *tabToSend,long lgrTabToSend,int sizeOf);
+  SALOME_Sender_i(const void *tabToSend,long lgrTabToSend,int sizeOf,bool ownTabToSend=false);
 public:
   const void *getData(long &size) const;
   int getSizeOf() const;
+  void setOwnerShip(bool own);
+  bool getOwnerShip() const { return _ownTabToSend; }
   void release();
-  SALOME::TypeOfDataTransmitted getTypeOfDataTransmitted();
-  SALOME::Sender_ptr buildOtherWithProtocol(SALOME::TypeOfCommunication type);
-  static SALOME_Sender_i *find(SALOME::Sender_ptr pCorba);
+  virtual ~SALOME_Sender_i() {}
+};
+
+class SALOME_SenderDouble_i : public virtual POA_SALOME::SenderDouble,
+                             public virtual SALOME_Sender_i
+{
+public:
+  SALOME_SenderDouble_i(const double *tabToSend,long lgrTabToSend,bool ownTabToSend=false);
+  SALOME::TypeOfDataTransmitted getTypeOfDataTransmitted() { return SALOME::DOUBLE_; }
+  SALOME::SenderDouble_ptr buildOtherWithProtocol(SALOME::TypeOfCommunication type);
+  virtual ~SALOME_SenderDouble_i();
+  static SALOME_SenderDouble_i *find(SALOME::SenderDouble_ptr pCorba);
+};
+
+class SALOME_SenderInt_i : public virtual POA_SALOME::SenderInt,
+                          public virtual SALOME_Sender_i
+{
+public:
+  SALOME_SenderInt_i(const int *tabToSend,long lgrTabToSend,bool ownTabToSend=false);
+  SALOME::TypeOfDataTransmitted getTypeOfDataTransmitted() { return SALOME::INT_; }
+  SALOME::SenderInt_ptr buildOtherWithProtocol(SALOME::TypeOfCommunication type);
+  virtual ~SALOME_SenderInt_i();
+  static SALOME_SenderInt_i *find(SALOME::SenderInt_ptr pCorba);
 };
 
 /*! Servant class for CORBA sender for double* when no copy of array _tabToSend is required, that is to say double and CORBA::Double are binary equal.
  */
 class SALOME_CorbaDoubleNCSender_i : public POA_SALOME::CorbaDoubleNCSender,
-                                    public SALOME_Sender_i
+                                    public SALOME_SenderDouble_i
 {
 public:
-  SALOME_CorbaDoubleNCSender_i(const double *tabToSend,long lgrTabToSend);
+  SALOME_CorbaDoubleNCSender_i(const double *tabToSend,long lgrTabToSend,bool ownTabToSend=false);
   ~SALOME_CorbaDoubleNCSender_i();
   CORBA::ULong getSize();
   SALOME::vectorOfDouble* sendPart(CORBA::ULong offset, CORBA::ULong length);
@@ -55,10 +77,10 @@ public:
 /*! Servant class for CORBA sender for double* when copy of array _tabToSend is required, that is to say double and CORBA::Double are NOT binary equal.
  */
 class SALOME_CorbaDoubleCSender_i : public POA_SALOME::CorbaDoubleCSender,
-                                   public SALOME_Sender_i
+                                   public SALOME_SenderDouble_i
 {
 public:
-  SALOME_CorbaDoubleCSender_i(const double *tabToSend,long lgrTabToSend);
+  SALOME_CorbaDoubleCSender_i(const double *tabToSend,long lgrTabToSend,bool ownTabToSend=false);
   ~SALOME_CorbaDoubleCSender_i();
   CORBA::ULong getSize();
   SALOME::vectorOfDouble* sendPart(CORBA::ULong offset, CORBA::ULong length);
@@ -67,10 +89,10 @@ public:
 /*! Servant class for CORBA sender for int* when no copy of array _tabToSend is required, that is to say int and CORBA::Long are binary equal.
  */
 class SALOME_CorbaLongNCSender_i : public POA_SALOME::CorbaLongNCSender,
-                                  public SALOME_Sender_i
+                                  public SALOME_SenderInt_i
 {
 public:
-  SALOME_CorbaLongNCSender_i(const int *tabToSend,long lgrTabToSend);
+  SALOME_CorbaLongNCSender_i(const int *tabToSend,long lgrTabToSend,bool ownTabToSend=false);
   ~SALOME_CorbaLongNCSender_i();
   CORBA::ULong getSize();
   SALOME::vectorOfLong* sendPart(CORBA::ULong offset, CORBA::ULong length);
@@ -80,22 +102,24 @@ public:
 /*! Servant class for CORBA sender for int* when copy of array _tabToSend is required, that is to say int and CORBA::Long are NOT binary equal.
  */
 class SALOME_CorbaLongCSender_i : public POA_SALOME::CorbaLongCSender,
-                                 public SALOME_Sender_i
+                                 public SALOME_SenderInt_i
 {
 public:
-  SALOME_CorbaLongCSender_i(const int *tabToSend,long lgrTabToSend);
+  SALOME_CorbaLongCSender_i(const int *tabToSend,long lgrTabToSend,bool ownTabToSend=false);
   ~SALOME_CorbaLongCSender_i();
   CORBA::ULong getSize();
   SALOME::vectorOfLong* sendPart(CORBA::ULong offset, CORBA::ULong length);
+#ifndef WNT
   SALOME::CorbaLongCSender_ptr _this();
+#endif
 };
 
 #ifdef HAVE_MPI2
 
 /*! Servant class of sender using MPI2.
  */
-class SALOME_MPISender_i : public POA_SALOME::MPISender,
-                          public SALOME_Sender_i
+class SALOME_MPISender_i : public virtual POA_SALOME::MPISender,
+                          public virtual SALOME_Sender_i
 {
 private:
   static unsigned long _tag1;
@@ -113,8 +137,10 @@ private:
   void **_argsForThr;
   /*! Pointer to thread created on asynchronous invocation*/
   omni_thread *_newThr;
+  /*! Type the component of the array*/
+  SALOME::TypeOfDataTransmitted _type;
 public:
-  SALOME_MPISender_i(SALOME::TypeOfDataTransmitted type,const void *tabToSend,long lgrTabToSend,int sizeOf);
+  SALOME_MPISender_i(const void *tabToSend,long lgrTabToSend,int sizeOf,bool ownTabToSend=false);
   ~SALOME_MPISender_i();
   SALOME::MPISender::param* getParam();
   void send();
@@ -123,14 +149,30 @@ private:
   static void* myThread(void *args);
 };
 
+class SALOME_MPISenderDouble_i : public POA_SALOME::MPISenderDouble,
+                                public SALOME_SenderDouble_i,
+                                public SALOME_MPISender_i
+{
+public:
+  SALOME_MPISenderDouble_i(const double *tabToSend,long lgrTabToSend,bool ownTabToSend=false);
+};
+
+class SALOME_MPISenderInt_i : public POA_SALOME::MPISenderInt,
+                             public SALOME_SenderInt_i,
+                             public SALOME_MPISender_i
+{
+public:
+  SALOME_MPISenderInt_i(const int *tabToSend,long lgrTabToSend,bool ownTabToSend=false);
+};
+
 #endif
 
 #ifdef HAVE_SOCKET
 
 /*! Servant class of sender using Sockets.
  */
-class SALOME_SocketSender_i : public POA_SALOME::SocketSender,
-                             public SALOME_Sender_i
+class SALOME_SocketSender_i : public virtual POA_SALOME::SocketSender,
+                             public virtual SALOME_Sender_i
 {
 private:
   int _serverSockfd;
@@ -140,8 +182,10 @@ private:
   void **_argsForThr;
   omni_thread *_newThr;
   bool _errorFlag;
+  /*! Type the component of the array*/
+  SALOME::TypeOfDataTransmitted _type;
 public:
-  SALOME_SocketSender_i(SALOME::TypeOfDataTransmitted type,const void *tabToSend,long lgrTabToSend,int sizeOf);
+  SALOME_SocketSender_i(const void *tabToSend,long lgrTabToSend,int sizeOf,bool ownTabToSend=false);
   ~SALOME_SocketSender_i();
   SALOME::SocketSender::param* getParam();
   void send();
@@ -154,6 +198,22 @@ private:
   std::string inetAddress();
 };
 
+class SALOME_SocketSenderDouble_i : public POA_SALOME::SocketSenderDouble,
+                                   public SALOME_SenderDouble_i,
+                                   public SALOME_SocketSender_i
+{
+public:
+  SALOME_SocketSenderDouble_i(const double *tabToSend,long lgrTabToSend,bool ownTabToSend=false);
+};
+
+class SALOME_SocketSenderInt_i : public POA_SALOME::SocketSenderInt,
+                                public SALOME_SenderInt_i,
+                                public SALOME_SocketSender_i
+{
+public:
+  SALOME_SocketSenderInt_i(const int *tabToSend,long lgrTabToSend,bool ownTabToSend=false);
+};
+
 #endif
 
 #endif
index 3b1f81165943ed24c6e14a339aad050f7795df46..04f8056d0ec928486ff5907008a5911a3a6f4c33 100644 (file)
@@ -16,25 +16,25 @@ using namespace std;
 #define SALOME_CorbaLongSender SALOME_CorbaLongCSender_i
 #endif
 
-SALOME::Sender_ptr SenderFactory::buildSender(SALOMEMultiComm &multiCommunicator,const double *tab,long lgr)throw(MultiCommException){
+SALOME::SenderDouble_ptr SenderFactory::buildSender(SALOMEMultiComm &multiCommunicator,const double *tab,long lgr,bool ownTab)throw(MultiCommException){
   switch(multiCommunicator.getProtocol())
     {
     case SALOME::CORBA_:
       {
-       SALOME_CorbaDoubleSender * retc=new SALOME_CorbaDoubleSender(tab,lgr);
+       SALOME_CorbaDoubleSender * retc=new SALOME_CorbaDoubleSender(tab,lgr,ownTab);
        return retc->_this();
       }
 #ifdef HAVE_MPI2
     case SALOME::MPI_:
       {
-       SALOME_MPISender_i* retm=new SALOME_MPISender_i(SALOME::DOUBLE_,tab,lgr,sizeof(double));
+       SALOME_MPISenderDouble_i* retm=new SALOME_MPISenderDouble_i(tab,lgr,ownTab);
        return retm->_this();
       }
 #endif
 #ifdef HAVE_SOCKET
     case SALOME::SOCKET_:
       {
-       SALOME_SocketSender_i* rets=new SALOME_SocketSender_i(SALOME::DOUBLE_,tab,lgr,sizeof(double));
+       SALOME_SocketSenderDouble_i* rets=new SALOME_SocketSenderDouble_i(tab,lgr,ownTab);
        return rets->_this();
       }
 #endif
@@ -42,58 +42,61 @@ SALOME::Sender_ptr SenderFactory::buildSender(SALOMEMultiComm &multiCommunicator
       {
        multiCommunicator.setProtocol(SALOME::CORBA_);
        MESSAGE("PROTOCOL CHANGED TO CORBA");
-       SALOME_CorbaDoubleSender * retc=new SALOME_CorbaDoubleSender(tab,lgr);
+       SALOME_CorbaDoubleSender * retc=new SALOME_CorbaDoubleSender(tab,lgr,ownTab);
        return retc->_this();
       }
 //       throw MultiCommException("Communication protocol not implemented");
     }
 }
 
-SALOME::Sender_ptr SenderFactory::buildSender(SALOMEMultiComm &multiCommunicator,const int *tab,long lgr)throw(MultiCommException){
+SALOME::SenderInt_ptr SenderFactory::buildSender(SALOMEMultiComm &multiCommunicator,const int *tab,long lgr,bool ownTab)throw(MultiCommException){
   switch(multiCommunicator.getProtocol())
     {
     case SALOME::CORBA_:
       {
-       SALOME_CorbaLongSender * retc=new SALOME_CorbaLongSender(tab,lgr);
+       SALOME_CorbaLongSender * retc=new SALOME_CorbaLongSender(tab,lgr,ownTab);
        return retc->_this();
       }
 #ifdef HAVE_MPI2
     case SALOME::MPI_:
       {
-       SALOME_MPISender_i* retm=new SALOME_MPISender_i(SALOME::INT_,tab,lgr,sizeof(int));
+       SALOME_MPISenderInt_i* retm=new SALOME_MPISenderInt_i(tab,lgr,ownTab);
        return retm->_this();
       }
 #endif
 #ifdef HAVE_SOCKET
     case SALOME::SOCKET_:
       {
-       SALOME_SocketSender_i* rets=new SALOME_SocketSender_i(SALOME::INT_,tab,lgr,sizeof(int));
+       SALOME_SocketSenderInt_i* rets=new SALOME_SocketSenderInt_i(tab,lgr,ownTab);
        return rets->_this();
       }
 #endif
     default:
       {
        multiCommunicator.setProtocol(SALOME::CORBA_);
-       SALOME_CorbaLongSender * retc=new SALOME_CorbaLongSender(tab,lgr);
+       SALOME_CorbaLongSender * retc=new SALOME_CorbaLongSender(tab,lgr,ownTab);
        return retc->_this();
       }
 //       throw MultiCommException("Communication protocol not implemented"); 
     }
   }
 
-SALOME::Sender_ptr SenderFactory::buildSender(SALOME::TypeOfCommunication NewType,SALOME_Sender_i *src)
+SALOME::SenderDouble_ptr SenderFactory::buildSender(SALOME::TypeOfCommunication NewType,SALOME_SenderDouble_i *src)
 {
   SALOMEMultiComm mc(NewType);
   long n;
-  const void *data=src->getData(n);
-  switch(src->getTypeOfDataTransmitted())
-    {
-    case SALOME::DOUBLE_:
-      return buildSender(mc,(const double *)data,n);
-    case SALOME::INT_:
-      return buildSender(mc,(const int *)data,n);
-    }
-  
+  const double *data=(const double *)src->getData(n);
+  bool own=src->getOwnerShip();
+  src->setOwnerShip(false);
+  return buildSender(mc,data,n,own);
 }
 
-
+SALOME::SenderInt_ptr SenderFactory::buildSender(SALOME::TypeOfCommunication NewType,SALOME_SenderInt_i *src)
+{
+  SALOMEMultiComm mc(NewType);
+  long n;
+  const int *data=(const int *)src->getData(n);
+  bool own=src->getOwnerShip();
+  src->setOwnerShip(false);
+  return buildSender(mc,data,n,own);
+}
index d85a842baf1175a36e498fd6dd5d337214f21e64..39edaa3a11f70d6d8322b008f6f5768e1d97216e 100644 (file)
@@ -5,19 +5,44 @@
 #include <SALOMEconfig.h>
 #include CORBA_SERVER_HEADER(SALOME_Comm)
 
+#if defined WNT && defined COMMUNICATION_EXPORTS
+#define COMMUNICATION_EXPORT __declspec( dllexport )
+#else
+#define COMMUNICATION_EXPORT
+#endif
+
 class SALOMEMultiComm;
 
-class SALOME_Sender_i;
+class SALOME_SenderDouble_i;
+class SALOME_SenderInt_i;
 
 /*!
   This class implements the factory pattern of GoF by making a sender by giving an array and a communicator.It completely hides the type of sender from the user.
  */
-class SenderFactory
+class COMMUNICATION_EXPORT SenderFactory
 {
 public:
-  static SALOME::Sender_ptr buildSender(SALOMEMultiComm &multiCommunicator,const double *tab,long lgr) throw(MultiCommException);
-  static SALOME::Sender_ptr buildSender(SALOMEMultiComm &multiCommunicator,const int *tab,long lgr) throw(MultiCommException);
-  static SALOME::Sender_ptr buildSender(SALOME::TypeOfCommunication NewType,SALOME_Sender_i *src);
+  static SALOME::SenderDouble_ptr buildSender(SALOMEMultiComm &multiCommunicator,const double *tab,long lgr,bool ownTab=false) throw(MultiCommException);
+  static SALOME::SenderInt_ptr buildSender(SALOMEMultiComm &multiCommunicator,const int *tab,long lgr,bool ownTab=false) throw(MultiCommException);
+  static SALOME::SenderDouble_ptr buildSender(SALOME::TypeOfCommunication NewType,SALOME_SenderDouble_i *src);
+  static SALOME::SenderInt_ptr buildSender(SALOME::TypeOfCommunication NewType,SALOME_SenderInt_i *src);
+};
+
+template<class T>
+struct mapCppSender {
+  typedef T SenderVarType;
+};
+
+template<>
+struct mapCppSender<int>
+{
+  typedef SALOME::SenderInt_var SenderVarType;
+};
+
+template<>
+struct mapCppSender<double>
+{
+  typedef SALOME::SenderDouble_var SenderVarType;
 };
 
 #endif
diff --git a/src/Communication/libSALOME_Comm.i b/src/Communication/libSALOME_Comm.i
new file mode 100644 (file)
index 0000000..b4ad753
--- /dev/null
@@ -0,0 +1,117 @@
+%{
+  #include "ReceiverFactory.hxx"
+  #include "SALOME_Comm_i.hxx"
+%}
+
+%typemap(python,in) SALOME::SenderDouble_ptr
+{
+  PyObject* pdict = PyDict_New();
+  PyDict_SetItemString(pdict, "__builtins__", PyEval_GetBuiltins());
+  PyRun_String("import CORBA", Py_single_input, pdict, pdict);
+  PyRun_String("o = CORBA.ORB_init([''], CORBA.ORB_ID);", Py_single_input,
+                   pdict, pdict);
+  PyObject* orb = PyDict_GetItemString(pdict, "o");
+
+  // Ask omniORBpy to transform SUPPORT (python Corba) ptr to IOR string
+
+  PyObject* iorSupport = PyObject_CallMethod(orb, "object_to_string", "O", $input);
+  if (iorSupport == Py_None)
+    return NULL;
+  char * s = PyString_AsString(PyObject_Str(iorSupport));
+  // Ask omniORB to convert IOR string to SALOME::SenderDouble_ptr
+
+  int argc = 0;
+  char *xargv = "";
+  char **argv = &xargv;
+  CORBA::ORB_var ORB = CORBA::ORB_init(argc, argv);
+  CORBA::Object_var O =  ORB->string_to_object(s);
+  SALOME::SenderDouble_ptr t = SALOME::SenderDouble::_narrow(O);
+  $1 = t;
+}
+
+%typemap(python,in) SALOME::SenderInt_ptr
+{
+  PyObject* pdict = PyDict_New();
+  PyDict_SetItemString(pdict, "__builtins__", PyEval_GetBuiltins());
+  PyRun_String("import CORBA", Py_single_input, pdict, pdict);
+  PyRun_String("o = CORBA.ORB_init([''], CORBA.ORB_ID);", Py_single_input,
+                   pdict, pdict);
+  PyObject* orb = PyDict_GetItemString(pdict, "o");
+
+  // Ask omniORBpy to transform SUPPORT (python Corba) ptr to IOR string
+
+  PyObject* iorSupport = PyObject_CallMethod(orb, "object_to_string", "O", $input);
+  if (iorSupport == Py_None)
+    return NULL;
+  char * s = PyString_AsString(PyObject_Str(iorSupport));
+  // Ask omniORB to convert IOR string to SALOME::SenderInt_ptr
+
+  int argc = 0;
+  char *xargv = "";
+  char **argv = &xargv;
+  CORBA::ORB_var ORB = CORBA::ORB_init(argc, argv);
+  CORBA::Object_var O =  ORB->string_to_object(s);
+  SALOME::SenderInt_ptr t = SALOME::SenderInt::_narrow(O);
+  $1 = t;
+}
+
+PyObject * getValueForSenderDouble(SALOME::SenderDouble_ptr senderDouble);
+
+%{
+PyObject * getValueForSenderDouble(SALOME::SenderDouble_ptr senderDouble)
+{
+  PyObject *py_list;
+  long size;
+  double *ret=ReceiverFactory::getValue(senderDouble,size);
+  py_list = PyList_New(size);
+  for (int i=0; i < size; i++)
+    {
+            int err = PyList_SetItem(py_list, i, Py_BuildValue("d", (double) ret[i]));
+            if(err)
+              {
+                char * message = "Error in SUPPORT::getTypes";
+                PyErr_SetString(PyExc_RuntimeError, message);
+                return NULL;
+              }
+    }
+  PyObject * result = Py_BuildValue("O", py_list);
+  delete [] ret;
+  Py_DECREF(py_list);
+  return result;
+}
+%}
+
+
+PyObject * getValueForSenderInt(SALOME::SenderInt_ptr senderInt);
+
+%{
+PyObject * getValueForSenderInt(SALOME::SenderInt_ptr senderInt)
+{
+  PyObject *py_list;
+  long size;
+  int *ret=ReceiverFactory::getValue(senderInt,size);
+  py_list = PyList_New(size);
+  for (int i=0; i < size; i++)
+    {
+            int err = PyList_SetItem(py_list, i, Py_BuildValue("i", (int) ret[i]));
+            if(err)
+              {
+                char * message = "Error in SUPPORT::getTypes";
+                PyErr_SetString(PyExc_RuntimeError, message);
+                return NULL;
+              }
+    }
+  PyObject * result = Py_BuildValue("O", py_list);
+  delete [] ret;
+  Py_DECREF(py_list);
+  return result;
+}
+%}
index ff343a2cc5065e9a6c22413bd13dc2dfca994d59..258a7acf7e8c303429fd2f2a661bd610e0791e45 100644 (file)
 //  Module : SALOME
 //  $Header$
 
+//#define private protected  // for pd_refCount trace
 #include "SALOME_Component_i.hxx"
 #include "SALOME_Container_i.hxx"
 #include "RegistryConnexion.hxx"
 #include "OpUtil.hxx"
 #include <stdio.h>
+#ifndef WNT
 #include <dlfcn.h>
+#endif
 #include <cstdlib>
 #include "utilities.h"
+
+#ifndef WNT
+#include <sys/time.h>
+#include <sys/resource.h>
+#include <unistd.h>
+#else
+#include <sys/timeb.h>
+int SIGUSR11 = 1000;
+#endif
+
+
 using namespace std;
 
 extern bool _Sleeping ;
 static Engines_Component_i * theEngines_Component ;
 
+bool Engines_Component_i::_isMultiStudy = true;
+bool Engines_Component_i::_isMultiInstance = false;
+
+//=============================================================================
+/*! 
+ *  Default constructor, not for use
+ */
+//=============================================================================
+
 Engines_Component_i::Engines_Component_i()
 {
-//  MESSAGE("Component constructor");
+  //ASSERT(0);
+  INFOS("Default Constructor...");
 }
 
+//=============================================================================
+/*! 
+ *  Standard Constructor for generic Component, used in derived class
+ *  Connection to Registry and Notification
+ *  \param orb Object Request broker given by Container
+ *  \parap poa Portable Object Adapter from Container (normally root_poa)
+ *  \param contId container CORBA id inside the server
+ *  \param instanceName unique instance name for this object (see Container_i)
+ *  \param interfaceName component class name
+ *  \param notif use of notification
+ */
+//=============================================================================
+
 Engines_Component_i::Engines_Component_i(CORBA::ORB_ptr orb,
                                         PortableServer::POA_ptr poa, 
                                         PortableServer::ObjectId * contId, 
@@ -53,63 +90,142 @@ Engines_Component_i::Engines_Component_i(CORBA::ORB_ptr orb,
   _instanceName(instanceName),
   _interfaceName(interfaceName),
   _myConnexionToRegistry(0),
-  _ThreadId(0) , _ThreadCpuUsed(0) , _Executed(false) , _graphName("") , _nodeName("") {
+  _ThreadId(0) ,
+  _ThreadCpuUsed(0) ,
+  _Executed(false) ,
+  _graphName("") ,
+  _nodeName(""),
+ _studyId(-1)
+{
   MESSAGE("Component constructor with instanceName "<< _instanceName);
+  //SCRUTE(pd_refCount);
   _orb = CORBA::ORB::_duplicate(orb);
   _poa = PortableServer::POA::_duplicate(poa);
   _contId = contId ;
   CORBA::Object_var o = _poa->id_to_reference(*contId); // container ior...
   const CORBA::String_var ior = _orb->object_to_string(o);
-  _myConnexionToRegistry = new RegistryConnexion(0, 0, ior, "theSession", _instanceName.c_str());
+  _myConnexionToRegistry = new RegistryConnexion(0, 0, ior,"theSession",
+                                                _instanceName.c_str());
 
   _notifSupplier = new NOTIFICATION_Supplier(instanceName, notif);
+  //SCRUTE(pd_refCount);
 }
 
-// Constructeur pour composant parallele: ne pas faire appel au registry!!
+//=============================================================================
+/*! 
+ * Standard constructor for parallel component
+ *  Connection Notification (no connection to Registry !)
+ *  \param orb Object Request broker given by Container
+ *  \parap poa Portable Object Adapter from Container (normally root_poa)
+ *  \param contId container CORBA id inside the server
+ *  \param instanceName unique instance name for this object (see Container_i)
+ *  \param interfaceName component class name
+ *  \param flag not used...
+ *  \param notif use of notification
+ */
+//=============================================================================
+
 Engines_Component_i::Engines_Component_i(CORBA::ORB_ptr orb,
                                         PortableServer::POA_ptr poa, 
                                         PortableServer::ObjectId * contId, 
                                         const char *instanceName,
                                         const char *interfaceName,
                                         int flag,
-                                         bool notif )
-  : _instanceName(instanceName),
-    _interfaceName(interfaceName),
-    _myConnexionToRegistry(0),
-    _ThreadId(0) , _ThreadCpuUsed(0) , _Executed(false) , _graphName("") , _nodeName("") {
-//  MESSAGE("Component constructor with instanceName "<< _instanceName);
+                                         bool notif ) :
+ _instanceName(instanceName),
+ _interfaceName(interfaceName),
+ _myConnexionToRegistry(0),
+ _ThreadId(0) ,
+ _ThreadCpuUsed(0) ,
+ _Executed(false) ,
+ _graphName("") ,
+ _nodeName(""),
+ _studyId(-1)
+{
   _orb = CORBA::ORB::_duplicate(orb);
   _poa = PortableServer::POA::_duplicate(poa);
   _contId = contId ;
-  //  CORBA::Object_var myself = this->_this(); //appel a _this = increment reference
 
   _notifSupplier = new NOTIFICATION_Supplier(instanceName, notif);
 }
 
+//=============================================================================
+/*! 
+ *  Destructor: call Container for decrement of instances count.
+ *  When instances count falls to 0, the container tries to remove the
+ *  component library (dlclose)
+ */
+//=============================================================================
+
 Engines_Component_i::~Engines_Component_i()
 {
   MESSAGE("Component destructor");
-//   delete _myConnexionToRegistry;
-//   _myConnexionToRegistry = 0 ;
+  Engines_Container_i::decInstanceCnt(_interfaceName);
 }
 
-char* Engines_Component_i::instanceName() {
+//=============================================================================
+/*! 
+ *  CORBA method: return name of the instance, unique in this Container
+ */
+//=============================================================================
+
+char* Engines_Component_i::instanceName()
+{
    return CORBA::string_dup(_instanceName.c_str()) ;
 }
 
-char* Engines_Component_i::interfaceName() {
-   return CORBA::string_dup(_interfaceName.c_str()) ;
+//=============================================================================
+/*! 
+ *  CORBA method: return name of the component class
+ */
+//=============================================================================
+
+char* Engines_Component_i::interfaceName()
+{
+  return CORBA::string_dup(_interfaceName.c_str()) ;
+}
+
+//=============================================================================
+/*! 
+ *  CORBA method: Get study Id
+ *  \return -1: not initialised (Internal Error)
+ *           0: multistudy component instance
+ *          >0: study id associated to this instance
+ */
+//=============================================================================
+
+CORBA::Long Engines_Component_i::getStudyId()
+{
+  return _studyId;
 }
 
+//=============================================================================
+/*! 
+ *  CORBA method: Test if instance is alive and responds
+ */
+//=============================================================================
+
 void Engines_Component_i::ping()
 {
   MESSAGE("Engines_Component_i::ping() pid "<< getpid() << " threadid "
           << pthread_self());
 }
 
+//=============================================================================
+/*! 
+ *  CORBA method: Deactivate this instance. CORBA object is deactivated (do not
+ *  respond any more to CORBA calls), the connection to Regsitry is removed
+ *  (Registry informed of deactivation), internal server reference counter on
+ *  the derived servant class is decremented, to allow destruction of the class
+ *  (delete) by POA, when there are no more references.
+ *  -- TO BE USED BY CONTAINER ONLY (Container housekeeping) --
+ */
+//=============================================================================
+
 void Engines_Component_i::destroy()
 {
   MESSAGE("Engines_Component_i::destroy()");
+  //SCRUTE(pd_refCount);
 
   delete _notifSupplier;
   _notifSupplier = 0;
@@ -119,10 +235,19 @@ void Engines_Component_i::destroy()
   _poa->deactivate_object(*_id) ;
   CORBA::release(_poa) ;
   delete(_id) ;
+  //SCRUTE(pd_refCount);
   _thisObj->_remove_ref();
+  //SCRUTE(pd_refCount);
   MESSAGE("Engines_Component_i::destroyed") ;
 }
 
+//=============================================================================
+/*! 
+ *  CORBA method: return CORBA reference of the Container
+ *
+ */
+//=============================================================================
+
 Engines::Container_ptr Engines_Component_i::GetContainerRef()
 {
   MESSAGE("Engines_Component_i::GetContainerRef");
@@ -130,11 +255,16 @@ Engines::Container_ptr Engines_Component_i::GetContainerRef()
   return Engines::Container::_narrow(o);
 }
 
-PortableServer::ObjectId * Engines_Component_i::getId()
-{
-//  MESSAGE("PortableServer::ObjectId * Engines_Component_i::getId()");
-  return _id ;
-}
+//=============================================================================
+/*! 
+ *  CORBA method: 
+ *  Gives a sequence of (key=string,value=any) to the component. 
+ *  Base class component stores the sequence in a map.
+ *  The map is cleared before.
+ *  This map is for use by derived classes. 
+ *  \param dico sequence of (key=string,value=any)
+ */
+//=============================================================================
 
 void Engines_Component_i::setProperties(const Engines::FieldsDict& dico)
 {
@@ -146,6 +276,14 @@ void Engines_Component_i::setProperties(const Engines::FieldsDict& dico)
     }
 }
 
+//=============================================================================
+/*! 
+ *  CORBA method: 
+ *  returns a previously stored map (key=string,value=any) as a sequence.
+ *  (see setProperties)
+ */
+//=============================================================================
+
 Engines::FieldsDict* Engines_Component_i::getProperties()
 {
   Engines::FieldsDict_var copie = new Engines::FieldsDict;
@@ -161,24 +299,298 @@ Engines::FieldsDict* Engines_Component_i::getProperties()
   return copie._retn();
 }
 
+//=============================================================================
+/*! 
+ *  CORBA method: used by Supervision to give names to this instance
+ */
+//=============================================================================
+
+void Engines_Component_i::Names( const char * graphName ,
+                                 const char * nodeName )
+{
+  _graphName = graphName ;
+  _nodeName = nodeName ;
+  //  MESSAGE("Engines_Component_i::Names( '" << _graphName << "' , '"
+  //          << _nodeName << "' )");
+}
+
+//=============================================================================
+/*! 
+ *  CORBA method: used in Supervision
+ */
+//=============================================================================
+
+bool Engines_Component_i::Kill_impl() 
+{
+//  MESSAGE("Engines_Component_i::Kill_i() pthread_t "<< pthread_self()
+//          << " pid " << getpid() << " instanceName "
+//          << _instanceName.c_str() << " interface " << _interfaceName.c_str()
+//          << " machineName " << GetHostname().c_str()<< " _id " << hex << _id
+//          << dec << " _ThreadId " << _ThreadId << " this " << hex << this
+//          << dec ) ;
+
+  bool RetVal = false ;
+#ifndef WNT
+  if ( _ThreadId > 0 && pthread_self() != _ThreadId )
+    {
+      RetVal = Killer( _ThreadId , 0 ) ;
+      _ThreadId = (pthread_t ) -1 ;
+    }
+
+#else
+  if ( _ThreadId > 0 && pthread_self().p != _ThreadId->p )
+    {
+      RetVal = Killer( *_ThreadId , 0 ) ;
+      _ThreadId = (pthread_t* ) 0 ;
+    }
+
+#endif
+  return RetVal ;
+}
+
+//=============================================================================
+/*! 
+ *  CORBA method: used in Supervision
+ */
+//=============================================================================
+
+bool Engines_Component_i::Stop_impl()
+{
+  MESSAGE("Engines_Component_i::Stop_i() pthread_t "<< pthread_self()
+          << " pid " << getpid() << " instanceName "
+          << _instanceName.c_str() << " interface " << _interfaceName.c_str()
+          << " machineName " << GetHostname().c_str()<< " _id " << hex << _id
+          << dec << " _ThreadId " << _ThreadId );
+  
+
+  bool RetVal = false ;
+#ifndef WNT
+  if ( _ThreadId > 0 && pthread_self() != _ThreadId )
+    {
+      RetVal = Killer( _ThreadId , 0 ) ;
+      _ThreadId = (pthread_t ) -1 ;
+    }
+#else
+  if ( _ThreadId > 0 && pthread_self().p != _ThreadId->p )
+    {
+      RetVal = Killer( *_ThreadId , 0 ) ;
+      _ThreadId = (pthread_t* ) 0 ;
+    }
+#endif
+  return RetVal ;
+}
+
+//=============================================================================
+/*! 
+ *  CORBA method: used in Supervision
+ */
+//=============================================================================
+
+bool Engines_Component_i::Suspend_impl()
+{
+  MESSAGE("Engines_Component_i::Suspend_i() pthread_t "<< pthread_self()
+          << " pid " << getpid() << " instanceName "
+          << _instanceName.c_str() << " interface " << _interfaceName.c_str()
+          << " machineName " << GetHostname().c_str()<< " _id " << hex << _id
+          << dec << " _ThreadId " << _ThreadId );
+
+  bool RetVal = false ;
+#ifndef WNT
+  if ( _ThreadId > 0 && pthread_self() != _ThreadId )
+#else
+  if ( _ThreadId > 0 && pthread_self().p != _ThreadId->p )
+#endif
+    {
+      if ( _Sleeping )
+       {
+         return false ;
+       }
+    else 
+      {
+#ifndef WNT
+       RetVal = Killer( _ThreadId ,SIGINT ) ;
+#else
+       RetVal = Killer( *_ThreadId ,SIGINT ) ;
+#endif
+       //if ( RetVal ) _Sleeping = true;
+
+      }
+    }
+  return RetVal ;
+}
+
+//=============================================================================
+/*! 
+ *  CORBA method: used in Supervision
+ */
+//=============================================================================
+
+bool Engines_Component_i::Resume_impl()
+{
+  MESSAGE("Engines_Component_i::Resume_i() pthread_t "<< pthread_self()
+          << " pid " << getpid() << " instanceName "
+          << _instanceName.c_str() << " interface " << _interfaceName.c_str()
+          << " machineName " << GetHostname().c_str()<< " _id " << hex << _id
+          << dec << " _ThreadId " << _ThreadId );
+  bool RetVal = false ;
+#ifndef WNT
+  if ( _ThreadId > 0 && pthread_self() != _ThreadId )
+#else
+  if ( _ThreadId > 0 && pthread_self().p != _ThreadId->p )
+#endif
+    {
+    if ( _Sleeping ) 
+      {
+       _Sleeping = false ;
+       RetVal = true ;
+      }
+    else
+      {
+       RetVal = false ;
+      }
+    }
+  return RetVal ;
+}
+
+//=============================================================================
+/*! 
+ *  CORBA method: 
+ */
+//=============================================================================
+
+CORBA::Long Engines_Component_i::CpuUsed_impl()
+{
+  long cpu = 0 ;
+  if ( _ThreadId || _Executed )
+    {
+    if ( _ThreadId > 0 )
+      {
+#ifndef WNT
+      if ( pthread_self() != _ThreadId )
+#else
+      if ( pthread_self().p != _ThreadId->p )
+#endif
+       {
+        if ( _Sleeping )
+         {
+         }
+        else
+         {
+           // Get Cpu in the appropriate thread with that object !...
+           theEngines_Component = this ;
+#ifndef WNT
+           Killer( _ThreadId ,SIGUSR1 ) ;
+#else
+           Killer( *_ThreadId ,SIGUSR11 ) ;
+#endif
+         }
+        cpu = _ThreadCpuUsed ;
+       }
+      else
+       {
+         _ThreadCpuUsed = CpuUsed() ;
+         cpu = _ThreadCpuUsed ;
+         // cout << pthread_self() << " Engines_Component_i::CpuUsed_impl "
+         //      << _serviceName << " " << cpu << endl ;
+      }
+    }
+    else 
+      {
+       cpu = _ThreadCpuUsed ;
+       // cout << pthread_self() << " Engines_Component_i::CpuUsed_impl "
+       //      << _serviceName << " " << cpu<< endl ;
+      }
+    }
+  else
+    {
+      // cout<< pthread_self()<<"Engines_Component_i::CpuUsed_impl _ThreadId "
+      //     <<_ThreadId <<" "<<_serviceName<<" _StartUsed "<<_StartUsed<<endl;
+    }
+  return cpu ;
+}
+
+
+//=============================================================================
+/*! 
+ *  C++ method: return Container Servant
+ */
+//=============================================================================
+
+Engines_Container_i *Engines_Component_i::GetContainerPtr()
+{
+  return dynamic_cast<Engines_Container_i*>(_poa->id_to_servant(*_contId)) ;
+}
+
+//=============================================================================
+/*! 
+ *  C++ method: set study Id
+ *  \param studyId         0 if instance is not associated to a study, 
+ *                         >0 otherwise (== study id)
+ *  \return true if the set of study Id is OK
+ *  must be set once by Container, at instance creation,
+ *  and cannot be changed after.
+ */
+//=============================================================================
+
+CORBA::Boolean Engines_Component_i::setStudyId(CORBA::Long studyId)
+{
+  ASSERT( studyId >= 0);
+  CORBA::Boolean ret = false;
+  if (_studyId < 0) // --- not yet initialized 
+    {
+      _studyId = studyId;
+      ret = true;
+    }
+  else
+    if ( _studyId == studyId) ret = true;
+  return ret;
+}
+
+//=============================================================================
+/*! 
+ *  C++ method: return CORBA instance id, the id is set in derived class
+ *  constructor, when instance is activated.
+ */
+//=============================================================================
+
+PortableServer::ObjectId * Engines_Component_i::getId()
+{
+//  MESSAGE("PortableServer::ObjectId * Engines_Component_i::getId()");
+  return _id ;
+}
+
+//=============================================================================
+/*! 
+ *  C++ method: used by derived classes for supervision
+ */
+//=============================================================================
+
 void Engines_Component_i::beginService(const char *serviceName)
 {
-  MESSAGE(pthread_self() << "Send BeginService notification for " << serviceName << endl
-         << "Component instance : " << _instanceName << endl << endl);
+  MESSAGE(pthread_self() << "Send BeginService notification for " <<serviceName
+         << endl << "Component instance : " << _instanceName << endl << endl);
+#ifndef WNT
   _ThreadId = pthread_self() ;
+#else
+  _ThreadId = new pthread_t;
+  _ThreadId->p = pthread_self().p ;
+  _ThreadId->x = pthread_self().x ;
+#endif
   _StartUsed = 0 ;
   _StartUsed = CpuUsed_impl() ;
   _ThreadCpuUsed = 0 ;
   _Executed = true ;
   _serviceName = serviceName ;
-  if ( pthread_setcanceltype( PTHREAD_CANCEL_ASYNCHRONOUS , NULL ) ) {
-    perror("pthread_setcanceltype ") ;
-    exit(0) ;
-  }
-  if ( pthread_setcancelstate( PTHREAD_CANCEL_ENABLE , NULL ) ) {
-    perror("pthread_setcancelstate ") ;
-    exit(0) ;
-  }
+  if ( pthread_setcanceltype( PTHREAD_CANCEL_ASYNCHRONOUS , NULL ) )
+    {
+      perror("pthread_setcanceltype ") ;
+      exit(0) ;
+    }
+  if ( pthread_setcancelstate( PTHREAD_CANCEL_ENABLE , NULL ) )
+    {
+      perror("pthread_setcancelstate ") ;
+      exit(0) ;
+    }
 //  MESSAGE(pthread_self() << " Return from BeginService for " << serviceName
 //          << " ThreadId " << _ThreadId << " StartUsed " << _StartUsed
 //          << " _graphName " << _graphName << " _nodeName " << _nodeName );
@@ -194,7 +606,7 @@ void Engines_Component_i::beginService(const char *serviceName)
        {
          const char* value;
          (*it).second >>= value;
-         // --- todo: replace __GNUC__ test by an autoconf macro AC_CHECK_FUNC...
+         // ---todo: replace __GNUC__ test by an autoconf macro AC_CHECK_FUNC.
 #if defined __GNUC__
          int ret = setenv(cle.c_str(), value, overwrite);
 #else
@@ -202,7 +614,8 @@ void Engines_Component_i::beginService(const char *serviceName)
          std::string s(cle);
          s+='=';
          s+=value;
-         //char* cast because 1st arg of linux putenv function is not a const char* !!!
+         // char* cast because 1st arg of linux putenv function
+         // is not a const char* !
          int ret=putenv((char *)s.c_str());
          //End of CCRT porting
 #endif
@@ -211,194 +624,166 @@ void Engines_Component_i::beginService(const char *serviceName)
     }
 }
 
+//=============================================================================
+/*! 
+ *  C++ method: used by derived classes for supervision
+ */
+//=============================================================================
+
 void Engines_Component_i::endService(const char *serviceName)
 {
   _ThreadCpuUsed = CpuUsed_impl() ;
-  MESSAGE(pthread_self() << " Send EndService notification for " << serviceName << endl
-         << " Component instance : " << _instanceName << " StartUsed " << _StartUsed << " _ThreadCpuUsed "
-          << _ThreadCpuUsed << endl << endl);
+  MESSAGE(pthread_self() << " Send EndService notification for " << serviceName
+         << endl << " Component instance : " << _instanceName << " StartUsed "
+          << _StartUsed << " _ThreadCpuUsed "<< _ThreadCpuUsed << endl <<endl);
   _ThreadId = 0 ;
 }
 
-void Engines_Component_i::Names( const char * graphName ,
-                                 const char * nodeName ) {
-  _graphName = graphName ;
-  _nodeName = nodeName ;
-//  MESSAGE("Engines_Component_i::Names( '" << _graphName << "' , '"
-//          << _nodeName << "' )");
-}
+//=============================================================================
+/*! 
+ *  C++ method: -- CHECK IF USED --
+ */
+//=============================================================================
 
-char* Engines_Component_i::graphName() {
+char* Engines_Component_i::graphName()
+{
   return CORBA::string_dup( _graphName.c_str() ) ;
 }
 
-char* Engines_Component_i::nodeName() {
+//=============================================================================
+/*! 
+ *  C++ method: -- CHECK IF USED --
+ */
+//=============================================================================
+
+char* Engines_Component_i::nodeName()
+{
   return CORBA::string_dup( _nodeName.c_str() ) ;
 }
 
-bool Engines_Component_i::Killer( pthread_t ThreadId , int signum ) {
-  if ( ThreadId ) {
-    if ( signum == 0 ) {
-      if ( pthread_cancel( ThreadId ) ) {
-        perror("Killer pthread_cancel error") ;
-        return false ;
-      }
-      else {
-        MESSAGE(pthread_self() << "Killer : ThreadId " << ThreadId << " pthread_canceled") ;
-      }
-    }
-    else {
-      if ( pthread_kill( ThreadId , signum ) == -1 ) {
-        perror("Killer pthread_kill error") ;
-        return false ;
-      }
-      else {
-        MESSAGE(pthread_self() << "Killer : ThreadId " << ThreadId << " pthread_killed("
-                << signum << ")") ;
-      }
+//=============================================================================
+/*! 
+ *  C++ method: used in Supervision (see kill_impl)
+ */
+//=============================================================================
+
+bool Engines_Component_i::Killer( pthread_t ThreadId , int signum )
+{
+#ifndef WNT
+  if ( ThreadId )
+#else
+  if ( ThreadId.p )
+#endif
+    {
+      if ( signum == 0 )
+       {
+         if ( pthread_cancel( ThreadId ) )
+           {
+             perror("Killer pthread_cancel error") ;
+             return false ;
+           }
+         else
+           {
+             MESSAGE(pthread_self() << "Killer : ThreadId " << ThreadId
+                     << " pthread_canceled") ;
+           }
+       }
+      else
+       {
+         if ( pthread_kill( ThreadId , signum ) == -1 )
+           {
+             perror("Killer pthread_kill error") ;
+             return false ;
+           }
+         else 
+           {
+             MESSAGE(pthread_self() << "Killer : ThreadId " << ThreadId
+                     << " pthread_killed(" << signum << ")") ;
+           }
+       }
     }
-  }
   return true ;
 }
 
-bool Engines_Component_i::Kill_impl() {
-//  MESSAGE("Engines_Component_i::Kill_i() pthread_t "<< pthread_self()
-//          << " pid " << getpid() << " instanceName "
-//          << _instanceName.c_str() << " interface " << _interfaceName.c_str()
-//          << " machineName " << GetHostname().c_str()<< " _id " << hex << _id
-//          << dec << " _ThreadId " << _ThreadId << " this " << hex << this
-//          << dec ) ;
-  bool RetVal = false ;
-  if ( _ThreadId > 0 && pthread_self() != _ThreadId ) {
-    RetVal = Killer( _ThreadId , 0 ) ;
-    _ThreadId = (pthread_t ) -1 ;
-  }
-  return RetVal ;
-}
-
-bool Engines_Component_i::Stop_impl() {
-  MESSAGE("Engines_Component_i::Stop_i() pthread_t "<< pthread_self()
-          << " pid " << getpid() << " instanceName "
-          << _instanceName.c_str() << " interface " << _interfaceName.c_str()
-          << " machineName " << GetHostname().c_str()<< " _id " << hex << _id
-          << dec << " _ThreadId " << _ThreadId );
-  bool RetVal = false ;
-  if ( _ThreadId > 0 && pthread_self() != _ThreadId ) {
-    RetVal = Killer( _ThreadId , 0 ) ;
-    _ThreadId = (pthread_t ) -1 ;
-  }
-  return RetVal ;
-}
+//=============================================================================
+/*! 
+ *  C++ method:
+ */ 
+//=============================================================================
 
-bool Engines_Component_i::Suspend_impl() {
-  MESSAGE("Engines_Component_i::Suspend_i() pthread_t "<< pthread_self()
-          << " pid " << getpid() << " instanceName "
-          << _instanceName.c_str() << " interface " << _interfaceName.c_str()
-          << " machineName " << GetHostname().c_str()<< " _id " << hex << _id
-          << dec << " _ThreadId " << _ThreadId );
-  bool RetVal = false ;
-  if ( _ThreadId > 0 && pthread_self() != _ThreadId ) {
-    if ( _Sleeping ) {
-      return false ;
-    }
-    else {
-      RetVal = Killer( _ThreadId ,SIGINT ) ;
-    }
-  }
-  return RetVal ;
+void SetCpuUsed()
+{
+  theEngines_Component->SetCurCpu() ;
 }
 
-bool Engines_Component_i::Resume_impl() {
-  MESSAGE("Engines_Component_i::Resume_i() pthread_t "<< pthread_self()
-          << " pid " << getpid() << " instanceName "
-          << _instanceName.c_str() << " interface " << _interfaceName.c_str()
-          << " machineName " << GetHostname().c_str()<< " _id " << hex << _id
-          << dec << " _ThreadId " << _ThreadId );
-  bool RetVal = false ;
-  if ( _ThreadId > 0 && pthread_self() != _ThreadId ) {
-    if ( _Sleeping ) {
-      _Sleeping = false ;
-      RetVal = true ;
-    }
-    else {
-      RetVal = false ;
-    }
-  }
-  return RetVal ;
+//=============================================================================
+/*! 
+ *  C++ method:
+ */
+//=============================================================================
 
-}
-
-void SetCpuUsed() {
-  theEngines_Component->SetCurCpu() ;
-}
-void Engines_Component_i::SetCurCpu() {
+void Engines_Component_i::SetCurCpu()
+{
   _ThreadCpuUsed =  CpuUsed() ;
-//  MESSAGE(pthread_self() << " Engines_Component_i::SetCurCpu() _ThreadCpuUsed " << _ThreadCpuUsed) ;
+  //  MESSAGE(pthread_self() << 
+  //  " Engines_Component_i::SetCurCpu() _ThreadCpuUsed " << _ThreadCpuUsed) ;
 }
 
-#include <sys/time.h>
-#include <sys/resource.h>
-#include <unistd.h>
+//=============================================================================
+/*! 
+ *  C++ method:
+ */
+//=============================================================================
 
-long Engines_Component_i::CpuUsed() {
+long Engines_Component_i::CpuUsed()
+{
   long cpu = 0 ;
+#ifndef WNT
   struct rusage usage ;
-  if ( _ThreadId || _Executed ) {
-    if ( getrusage( RUSAGE_SELF , &usage ) == -1 ) {
-      perror("Engines_Component_i::CpuUsed") ;
-      return 0 ;
-    }
-    cpu = usage.ru_utime.tv_sec - _StartUsed ;
-//    cout << pthread_self() << " Engines_Component_i::CpuUsed " << " " << _serviceName
-//         << usage.ru_utime.tv_sec << " - " << _StartUsed << " = " << cpu << endl ;
-  }
-  else {
-//    cout << pthread_self() << "Engines_Component_i::CpuUsed _ThreadId " << _ThreadId << " " << _serviceName
-//         << " _StartUsed " << _StartUsed << endl ;
-  }
-  return cpu ;
-}
-
-CORBA::Long Engines_Component_i::CpuUsed_impl() {
-  long cpu = 0 ;
-  if ( _ThreadId || _Executed ) {
-    if ( _ThreadId > 0 ) {
-      if ( pthread_self() != _ThreadId ) {
-        if ( _Sleeping ) {
-        }
-        else {
-// Get Cpu in the appropriate thread with that object !...
-          theEngines_Component = this ;
-          Killer( _ThreadId ,SIGUSR1 ) ;
-        }
-        cpu = _ThreadCpuUsed ;
-      }
-      else {
-        _ThreadCpuUsed = CpuUsed() ;
-        cpu = _ThreadCpuUsed ;
-//        cout << pthread_self() << " Engines_Component_i::CpuUsed_impl " << _serviceName << " " << cpu
-//             << endl ;
-      }
+  if ( _ThreadId || _Executed )
+    {
+      if ( getrusage( RUSAGE_SELF , &usage ) == -1 )
+       {
+         perror("Engines_Component_i::CpuUsed") ;
+         return 0 ;
+       }
+      cpu = usage.ru_utime.tv_sec - _StartUsed ;
+      // cout << pthread_self() << " Engines_Component_i::CpuUsed " << " "
+      //      << _serviceName   << usage.ru_utime.tv_sec << " - " << _StartUsed
+      //      << " = " << cpu << endl ;
     }
-    else {
-      cpu = _ThreadCpuUsed ;
-//      cout << pthread_self() << " Engines_Component_i::CpuUsed_impl " << _serviceName << " " << cpu
-//           << endl ;
+  else
+    {
+      // cout << pthread_self() << "Engines_Component_i::CpuUsed _ThreadId "
+      //      << _ThreadId << " " << _serviceName<< " _StartUsed " 
+      //      << _StartUsed << endl ;
     }
-  }
-  else {
-//    cout << pthread_self() << "Engines_Component_i::CpuUsed_impl _ThreadId " << _ThreadId << " "
-//         << _serviceName << " _StartUsed " << _StartUsed << endl ;
-  }
+#else
+       // NOT implementet yet
+#endif
+
+
   return cpu ;
 }
 
-// Send message to event channel
+//=============================================================================
+/*! 
+ *  C++ method: Send message to event channel
+ */
+//=============================================================================
 
-void Engines_Component_i::sendMessage(const char *event_type, const char *message) {
+void Engines_Component_i::sendMessage(const char *event_type,
+                                     const char *message)
+{
     _notifSupplier->Send(graphName(), nodeName(), event_type, message);
 }
 
+//=============================================================================
+/*! 
+ *  C++ method: return standard library name built on component name
+ */
+//=============================================================================
+
 string Engines_Component_i::GetDynLibraryName(const char *componentName)
 {
   string ret="lib";
@@ -407,11 +792,22 @@ string Engines_Component_i::GetDynLibraryName(const char *componentName)
   return ret;
 }
 
-string Engines_Component_i::BuildComponentNameForNS(const char *ComponentName, const char *ContainerName, const char *hostname)
+//=============================================================================
+/*! 
+ *  C++ method: DumpPython default implementation
+ */
+//=============================================================================
+
+Engines::TMPFile* Engines_Component_i::DumpPython(CORBA::Object_ptr theStudy, 
+                                                 CORBA::Boolean isPublished, 
+                                                 CORBA::Boolean& isValidScript)
 {
-  string ret=Engines_Container_i::BuildContainerNameForNS(ContainerName,hostname);
-  ret+="/";
-  ret+=ComponentName;
-  return ret;
+  char* aScript = "def RebuildData(theStudy): pass";
+  char* aBuffer = new char[strlen(aScript)+1];
+  strcpy(aBuffer, aScript);
+  CORBA::Octet* anOctetBuf =  (CORBA::Octet*)aBuffer;
+  int aBufferSize = strlen(aBuffer)+1;
+  Engines::TMPFile_var aStreamFile = new Engines::TMPFile(aBufferSize, aBufferSize, anOctetBuf, 1); 
+  isValidScript = true;
+  return aStreamFile._retn(); 
 }
-
index b65bf13bdc699ace327f474ac8f111e2124c8a3e..62b58f98a438ba85468db47dba26ec300b076ca5 100644 (file)
 //  Module : SALOME
 //  $Header$
 
+//#define private public
 #include <SALOMEconfig.h>
+#ifndef WNT
 #include CORBA_SERVER_HEADER(SALOME_Component)
+#else
+#include <SALOME_Component.hh>
+#endif
 #include "SALOME_Container_i.hxx"
+#include "SALOME_Component_i.hxx"
 #include "SALOME_NamingService.hxx"
-//#include "Utils_SINGLETON.hxx"
 #include "OpUtil.hxx"
 #include <string.h>
 #include <stdio.h>
+#ifndef WNT
 #include <dlfcn.h>
 #include <unistd.h>
+#else
+#include "../../adm/win32/SALOME_WNT.hxx"
+#include <signal.h>
+#include <process.h>
+int SIGUSR1 = 1000;
+#endif
+#include <Python.h>
+#include "Container_init_python.hxx"
 
 #include "utilities.h"
 using namespace std;
 
 bool _Sleeping = false ;
 
-// Needed by multi-threaded Python
+// // Needed by multi-threaded Python --- Supervision
 int _ArgC ;
 char ** _ArgV ;
 
@@ -51,15 +65,35 @@ char ** _ArgV ;
 // Other Containers are started via start_impl of FactoryServer
 
 extern "C" {void ActSigIntHandler() ; }
+#ifndef WNT
 extern "C" {void SigIntHandler(int, siginfo_t *, void *) ; }
+#else
+  extern "C" {void SigIntHandler( int ) ; }
+#endif
 
-const char *Engines_Container_i::_defaultContainerName="FactoryServer";
+
+map<std::string, int> Engines_Container_i::_cntInstances_map;
+map<std::string, void *> Engines_Container_i::_library_map;
+map<std::string, void *> Engines_Container_i::_toRemove_map;
+omni_mutex Engines_Container_i::_numInstanceMutex ;
+
+//=============================================================================
+/*! 
+ *  Default constructor, not for use
+ */
+//=============================================================================
 
 Engines_Container_i::Engines_Container_i () :
- _numInstance(0)
 _numInstance(0)
 {
 }
 
+//=============================================================================
+/*! 
+ *  Construtor to use
+ */
+//=============================================================================
+
 Engines_Container_i::Engines_Container_i (CORBA::ORB_ptr orb, 
                                          PortableServer::POA_ptr poa,
                                          char *containerName ,
@@ -74,219 +108,714 @@ Engines_Container_i::Engines_Container_i (CORBA::ORB_ptr orb,
   if(activAndRegist)
     ActSigIntHandler() ;
 
-  _ArgC = argc ;
-  _ArgV = argv ;
-
   _argc = argc ;
   _argv = argv ;
-  int i = strlen( _argv[ 0 ] ) - 1 ;
-  while ( i >= 0 ) {
-    if ( _argv[ 0 ][ i ] == '/' ) {
-      _argv[ 0 ][ i+1 ] = '\0' ;
-      break ;
-    }
-    i -= 1 ;
-  }
+
   string hostname = GetHostname();
   MESSAGE(hostname << " " << getpid() << " Engines_Container_i starting argc "
          << _argc << " Thread " << pthread_self() ) ;
-  i = 0 ;
-  while ( _argv[ i ] ) {
-    MESSAGE("           argv" << i << " " << _argv[ i ]) ;
-    i++ ;
-  }
-  if ( argc != 4 ) {
-    MESSAGE("SALOME_Container usage : SALOME_Container ServerName -ORBInitRef NameService=corbaname::hostname:tcpipPortNumber") ;
-//    exit(0) ;
-  }
 
-  SCRUTE(hostname);
+  int i = 0 ;
+  while ( _argv[ i ] )
+    {
+      MESSAGE("           argv" << i << " " << _argv[ i ]) ;
+      i++ ;
+    }
+
+  if ( argc < 2 )
+    {
+      INFOS("SALOME_Container usage : SALOME_Container ServerName");
+      ASSERT(0) ;
+    }
+  SCRUTE(argv[1]);
+  _isSupervContainer = false;
+  if (strcmp(argv[1],"SuperVisionContainer") == 0) _isSupervContainer = true;
 
-  _containerName = BuildContainerNameForNS(containerName,hostname.c_str());
+  if (_isSupervContainer)
+    {
+      _ArgC = argc ;
+      _ArgV = argv ;
+    }
 
   _orb = CORBA::ORB::_duplicate(orb) ;
   _poa = PortableServer::POA::_duplicate(poa) ;
+  
+  // Pour les containers paralleles: il ne faut pas enregistrer et activer
+  // le container generique, mais le container specialise
 
-  // Pour les containers paralleles: il ne faut pas enregistrer et activer le container generique, mais le container specialise
-  if(activAndRegist){
-    _id = _poa->activate_object(this);
-    _NS = new SALOME_NamingService();//SINGLETON_<SALOME_NamingService>::Instance() ;
-    //ASSERT(SINGLETON_<SALOME_NamingService>::IsAlreadyExisting()) ;
-    _NS->init_orb( CORBA::ORB::_duplicate(_orb) ) ;
-    CORBA::Object_var obj=_poa->id_to_reference(*_id);
-    Engines::Container_var pCont 
-      = Engines::Container::_narrow(obj);
-    SCRUTE(_containerName);
-    _NS->Register(pCont, _containerName.c_str()); 
-  }
+  if(activAndRegist)
+    {
+      _id = _poa->activate_object(this);
+      _NS = new SALOME_NamingService();
+      _NS->init_orb( CORBA::ORB::_duplicate(_orb) ) ;
+      CORBA::Object_var obj=_poa->id_to_reference(*_id);
+      Engines::Container_var pCont 
+       = Engines::Container::_narrow(obj);
+
+      _containerName = _NS->BuildContainerNameForNS(containerName,
+                                                   hostname.c_str());
+      SCRUTE(_containerName);
+      _NS->Register(pCont, _containerName.c_str());
+      MESSAGE("Engines_Container_i::Engines_Container_i : Container name "
+             << _containerName);
+
+      // Python: 
+      // import SALOME_Container
+      // pycont = SALOME_Container.SALOME_Container_i(containerIORStr)
+    
+      CORBA::String_var sior =  _orb->object_to_string(pCont);
+      string myCommand="pyCont = SALOME_Container.SALOME_Container_i('";
+      myCommand += _containerName + "','";
+      myCommand += sior;
+      myCommand += "')\n";
+      SCRUTE(myCommand);
+
+      if (!_isSupervContainer)
+       {
+         Py_ACQUIRE_NEW_THREAD;
+#ifdef WNT
+         // mpv: this is temporary solution: there is a unregular crash if not
+         Sleep(2000);
+         PyRun_SimpleString("import sys\n");
+         // first element is the path to Registry.dll, but it's wrong
+         PyRun_SimpleString("sys.path = sys.path[1:]\n");
+#endif
+         PyRun_SimpleString("import SALOME_Container\n");
+         PyRun_SimpleString((char*)myCommand.c_str());
+         Py_RELEASE_NEW_THREAD;
+       }
+    }
 }
 
+//=============================================================================
+/*! 
+ *  Destructor
+ */
+//=============================================================================
+
 Engines_Container_i::~Engines_Container_i()
 {
   MESSAGE("Container_i::~Container_i()");
   delete _id;
 }
 
+//=============================================================================
+/*! 
+ *  CORBA attribute: Container name (see constructor)
+ */
+//=============================================================================
+
 char* Engines_Container_i::name()
 {
    return CORBA::string_dup(_containerName.c_str()) ;
 }
 
-char* Engines_Container_i::machineName()
+//=============================================================================
+/*! 
+ *  CORBA method: Get the hostName of the Container (without domain extensions)
+ */
+//=============================================================================
+
+char* Engines_Container_i::getHostName()
 {
   string s = GetHostname();
-  MESSAGE("Engines_Container_i::machineName " << s);
-   return CORBA::string_dup(s.c_str()) ;
+  MESSAGE("Engines_Container_i::getHostName " << s);
+  return CORBA::string_dup(s.c_str()) ;
+}
+
+//=============================================================================
+/*! 
+ *  CORBA method: Get the PID (process identification) of the Container
+ */
+//=============================================================================
+
+CORBA::Long Engines_Container_i::getPID()
+{
+  return (CORBA::Long)getpid();
 }
 
+//=============================================================================
+/*! 
+ *  CORBA method: check if servant is still alive
+ */
+//=============================================================================
+
 void Engines_Container_i::ping()
 {
   MESSAGE("Engines_Container_i::ping() pid "<< getpid());
 }
 
-// shutdown corba server
+//=============================================================================
+/*! 
+ *  CORBA method, oneway: Server shutdown. 
+ *  - Container name removed from naming service,
+ *  - servant deactivation,
+ *  - orb shutdown if no other servants in the process 
+ */
+//=============================================================================
+
 void Engines_Container_i::Shutdown()
 {
   MESSAGE("Engines_Container_i::Shutdown()");
-  _NS->Destroy_Name(_containerName.c_str());
+  _NS->Destroy_FullDirectory(_containerName.c_str());
   //_remove_ref();
   //_poa->deactivate_object(*_id);
   if(_isServantAloneInProcess)
-    _orb->shutdown(0);
+    {
+      LocalTraceBufferPool* bp1 = LocalTraceBufferPool::instance();
+      bp1->deleteInstance(bp1);
+      _orb->shutdown(0);
+    }
 }
 
-//! Kill current container
-bool Engines_Container_i::Kill_impl() {
-  MESSAGE("Engines_Container_i::Kill() pid "<< getpid() << " containerName "
-          << _containerName.c_str() << " machineName "
-          << GetHostname().c_str());
-  exit( 0 ) ;
-}
 
-Engines::Component_ptr Engines_Container_i::load_impl( const char* nameToRegister,
-                                                      const char* componentName ) {
+//=============================================================================
+/*! 
+ *  CORBA method: load a new component class (Python or C++ implementation)
+ *  \param componentName like COMPONENT
+ *                          try to make a Python import of COMPONENT,
+ *                          then a lib open of libCOMPONENTEngine.so
+ *  \return true if dlopen successfull or already done, false otherwise
+ */
+//=============================================================================
+
+bool
+Engines_Container_i::load_component_Library(const char* componentName)
+{
 
-  _numInstanceMutex.lock() ; // lock on the instance number
-  BEGIN_OF( "Container_i::load_impl " << componentName ) ;
-  _numInstance++ ;
-  char _aNumI[12];
-  sprintf( _aNumI , "%d" , _numInstance ) ;
+  string aCompName = componentName;
 
-  string _impl_name = componentName;
-  string _nameToRegister = nameToRegister;
-  string instanceName = _nameToRegister + "_inst_" + _aNumI ;
-  //SCRUTE(instanceName);
+  // --- try dlopen C++ component
 
-  //string absolute_impl_name = _library_path + "lib" + _impl_name + ".so";
-  string absolute_impl_name( _impl_name ) ;
-  SCRUTE(absolute_impl_name);
+#ifndef WNT
+  string impl_name = string ("lib") + aCompName + string("Engine.so");
+#else
+  string impl_name = aCompName + string("Engine.dll");
+#endif
+  SCRUTE(impl_name);
+  
+  _numInstanceMutex.lock(); // lock to be alone 
+  // (see decInstanceCnt, finalize_removal))
+  if (_toRemove_map[impl_name]) _toRemove_map.erase(impl_name);
+  if (_library_map[impl_name])
+    {
+      MESSAGE("Library " << impl_name << " already loaded");
+      _numInstanceMutex.unlock();
+      return true;
+    }
+  
   void* handle;
-  handle = dlopen( absolute_impl_name.c_str() , RTLD_LAZY ) ;
-  if ( !handle ) {
-    INFOS("Can't load shared library : " << absolute_impl_name);
-    INFOS("error dlopen: " << dlerror());
-    _numInstanceMutex.unlock() ;
-    return Engines::Component::_nil() ;
-  }
+#ifndef WNT
+  handle = dlopen( impl_name.c_str() , RTLD_LAZY ) ;
+#else
+  handle = dlopen( impl_name.c_str() , 0 ) ;
+#endif
+  if ( handle )
+    {
+      _library_map[impl_name] = handle;
+      _numInstanceMutex.unlock();
+      return true;
+    }
+  else
+    {
+      INFOS("Can't load shared library : " << impl_name);
+      INFOS("error dlopen: " << dlerror());
+    }
+  _numInstanceMutex.unlock();
+
+  // --- try import Python component
+
+  INFOS("try import Python component "<<componentName);
+  if (_isSupervContainer)
+    {
+      INFOS("Supervision Container does not support Python Component Engines");
+      return false;
+    }
+  if (_library_map[aCompName])
+    {
+      return true; // Python Component, already imported
+    }
+  else
+    {
+      Py_ACQUIRE_NEW_THREAD;
+      PyObject *mainmod = PyImport_AddModule("__main__");
+      PyObject *globals = PyModule_GetDict(mainmod);
+      PyObject *pyCont = PyDict_GetItemString(globals, "pyCont");
+      PyObject *result = PyObject_CallMethod(pyCont,
+                                            "import_component",
+                                            "s",componentName);
+      int ret= PyInt_AsLong(result);
+      SCRUTE(ret);
+      Py_RELEASE_NEW_THREAD;
   
-  string factory_name = _nameToRegister + string("Engine_factory");
-  //  SCRUTE(factory_name) ;
+      if (ret) // import possible: Python component
+       {
+         _library_map[aCompName] = (void *)pyCont; // any non O value OK
+         MESSAGE("import Python: "<<aCompName<<" OK");
+         return true;
+       }
+    }
+  return false;
+}
 
-  typedef  PortableServer::ObjectId * (*FACTORY_FUNCTION)
-                            (CORBA::ORB_ptr,
-                            PortableServer::POA_ptr, 
-                            PortableServer::ObjectId *, 
-                            const char *, 
-                            const char *) ; 
-  FACTORY_FUNCTION Component_factory = (FACTORY_FUNCTION) dlsym(handle, factory_name.c_str());
+//=============================================================================
+/*! 
+ *  CORBA method: Creates a new servant instance of a component.
+ *  The servant registers itself to naming service and Registry.
+ *  \param genericRegisterName  Name of the component instance to register
+ *                         in Registry & Name Service (without _inst_n suffix)
+ *  \param studyId         0 for multiStudy instance, 
+ *                         study Id (>0) otherwise
+ *  \return a loaded component
+ */
+//=============================================================================
 
-  char *error ;
-  if ( (error = dlerror() ) != NULL) {
-      INFOS("Can't resolve symbol: " + factory_name);
-      SCRUTE(error);
-      _numInstanceMutex.unlock() ;
+Engines::Component_ptr
+Engines_Container_i::create_component_instance(const char*genericRegisterName,
+                                              CORBA::Long studyId)
+{
+  if (studyId < 0)
+    {
+      INFOS("studyId must be > 0 for mono study instance, =0 for multiStudy");
       return Engines::Component::_nil() ;
     }
 
-  string component_registerName = _containerName + "/" + _nameToRegister;
   Engines::Component_var iobject = Engines::Component::_nil() ;
-  try {
-    CORBA::Object_var obj = _NS->Resolve( component_registerName.c_str() ) ;
-    if ( CORBA::is_nil( obj ) ) {
-// Instanciate required CORBA object
-      PortableServer::ObjectId * id ;
-      id = (Component_factory) ( _orb, _poa, _id, instanceName.c_str() ,
-                                 _nameToRegister.c_str() ) ;
-  // get reference from id
-      obj = _poa->id_to_reference(*id);
-      iobject = Engines::Component::_narrow( obj ) ;
 
-//  _numInstanceMutex.lock() ; // lock on the add on handle_map (necessary ?)
-  // register the engine under the name containerName.dir/nameToRegister.object
-      _NS->Register( iobject , component_registerName.c_str() ) ;
-      MESSAGE( "Container_i::load_impl " << component_registerName.c_str() << " bound" ) ;
-    }
-    else { // JR : No ReBind !!!
-      MESSAGE( "Container_i::load_impl " << component_registerName.c_str() << " already bound" ) ;
+  string aCompName = genericRegisterName;
+  if (_library_map[aCompName]) // Python component
+    {
+      if (_isSupervContainer)
+       {
+         INFOS("Supervision Container does not support Python Component Engines");
+         return Engines::Component::_nil();
+       }
+      _numInstanceMutex.lock() ; // lock on the instance number
+      _numInstance++ ;
+      int numInstance = _numInstance ;
+      _numInstanceMutex.unlock() ;
+
+      char aNumI[12];
+      sprintf( aNumI , "%d" , numInstance ) ;
+      string instanceName = aCompName + "_inst_" + aNumI ;
+      string component_registerName =
+       _containerName + "/" + instanceName;
+
+      Py_ACQUIRE_NEW_THREAD;
+      PyObject *mainmod = PyImport_AddModule("__main__");
+      PyObject *globals = PyModule_GetDict(mainmod);
+      PyObject *pyCont = PyDict_GetItemString(globals, "pyCont");
+      PyObject *result = PyObject_CallMethod(pyCont,
+                                            "create_component_instance",
+                                            "ssl",
+                                            aCompName.c_str(),
+                                            instanceName.c_str(),
+                                            studyId);
+      string iors = PyString_AsString(result);
+      SCRUTE(iors);
+      Py_RELEASE_NEW_THREAD;
+  
+      CORBA::Object_var obj = _orb->string_to_object(iors.c_str());
       iobject = Engines::Component::_narrow( obj ) ;
+      return iobject._retn();
     }
-  }
-  catch (...) {
-    INFOS( "Container_i::load_impl catched" ) ;
-  }
+  
+  //--- try C++
+
+#ifndef WNT
+  string impl_name = string ("lib") + genericRegisterName +string("Engine.so");
+#else
+  string impl_name = genericRegisterName +string("Engine.dll");
+#endif
+  void* handle = _library_map[impl_name];
+  if ( !handle )
+    {
+      INFOS("shared library " << impl_name <<"must be loaded before instance");
+      return Engines::Component::_nil() ;
+    }
+  else
+    {
+      iobject = createInstance(genericRegisterName,
+                              handle,
+                              studyId);
+      return iobject._retn();
+    }
+}
+
+//=============================================================================
+/*! 
+ *  CORBA method: Finds a servant instance of a component
+ *  \param registeredName  Name of the component in Registry or Name Service,
+ *                         without instance suffix number
+ *  \param studyId         0 if instance is not associated to a study, 
+ *                         >0 otherwise (== study id)
+ *  \return the first instance found with same studyId
+ */
+//=============================================================================
 
-//Jr  _numInstanceMutex.lock() ; // lock on the add on handle_map (necessary ?)
-  handle_map[instanceName] = handle;
-  END_OF("Container_i::load_impl");
-  _numInstanceMutex.unlock() ;
-  return Engines::Component::_duplicate(iobject);
+Engines::Component_ptr
+Engines_Container_i::find_component_instance( const char* registeredName,
+                                             CORBA::Long studyId)
+{
+  Engines::Component_var anEngine = Engines::Component::_nil();
+  map<string,Engines::Component_var>::iterator itm =_listInstances_map.begin();
+  while (itm != _listInstances_map.end())
+    {
+      string instance = (*itm).first;
+      SCRUTE(instance);
+      if (instance.find(registeredName) == 0)
+       {
+         anEngine = (*itm).second;
+         if (studyId == anEngine->getStudyId())
+           {
+             return anEngine._retn();
+           }
+       }
+      itm++;
+    }
+  return anEngine._retn();  
 }
 
+//=============================================================================
+/*! 
+ *  CORBA method: find or create an instance of the component (servant),
+ *  load a new component class (dynamic library) if required,
+ *  ---- FOR COMPATIBILITY WITH 2.2 ---- 
+ *  ---- USE ONLY FOR MULTISTUDY INSTANCES ! --------
+ *  The servant registers itself to naming service and Registry.
+ *  \param genericRegisterName  Name of the component to register
+ *                              in Registry & Name Service
+ *  \param componentName       Name of the constructed library of the component
+ *  \return a loaded component
+ */
+//=============================================================================
+
+Engines::Component_ptr
+Engines_Container_i::load_impl( const char* genericRegisterName,
+                               const char* componentName )
+{
+  string impl_name = string ("lib") + genericRegisterName +string("Engine.so");
+  Engines::Component_var iobject = Engines::Component::_nil() ;
+  if (load_component_Library(genericRegisterName))
+    iobject = find_or_create_instance(genericRegisterName, impl_name);
+  return iobject._retn();
+}
+    
+
+//=============================================================================
+/*! 
+ *  CORBA method: Stops the component servant, and deletes all related objects
+ *  \param component_i     Component to be removed
+ */
+//=============================================================================
+
 void Engines_Container_i::remove_impl(Engines::Component_ptr component_i)
 {
   ASSERT(! CORBA::is_nil(component_i));
   string instanceName = component_i->instanceName() ;
   MESSAGE("unload component " << instanceName);
+  _listInstances_map.erase(instanceName);
   component_i->destroy() ;
-  MESSAGE("test key handle_map");
-  _numInstanceMutex.lock() ; // lock on the remove on handle_map
-  if (handle_map[instanceName]) // if key does not exist, created & initialized null
+  _NS->Destroy_Name(instanceName.c_str());
+}
+
+//=============================================================================
+/*! 
+ *  CORBA method: Discharges unused libraries from the container.
+ */
+//=============================================================================
+
+void Engines_Container_i::finalize_removal()
+{
+  MESSAGE("finalize unload : dlclose");
+  _numInstanceMutex.lock(); // lock to be alone
+                            // (see decInstanceCnt, load_component_Library)
+  map<string, void *>::iterator ith;
+  for (ith = _toRemove_map.begin(); ith != _toRemove_map.end(); ith++)
+    {
+      void *handle = (*ith).second;
+      string impl_name= (*ith).first;
+      if (handle)
+       {
+         SCRUTE(handle);
+         SCRUTE(impl_name);
+//       dlclose(handle);                // SALOME unstable after ...
+//       _library_map.erase(impl_name);
+       }
+    }
+  _toRemove_map.clear();
+  _numInstanceMutex.unlock();
+}
+
+//=============================================================================
+/*! 
+ *  CORBA method: Kill the container process with exit(0).
+ *  To remove :  never returns !
+ */
+//=============================================================================
+
+bool Engines_Container_i::Kill_impl()
+{
+  MESSAGE("Engines_Container_i::Kill() pid "<< getpid() << " containerName "
+          << _containerName.c_str() << " machineName "
+          << GetHostname().c_str());
+  INFOS("===============================================================");
+  INFOS("= REMOVE calls to Kill_impl in C++ container                  =");
+  INFOS("===============================================================");
+  //exit( 0 ) ;
+  ASSERT(0);
+  return false;
+}
+
+//=============================================================================
+/*! 
+ *  C++ method: Finds an already existing servant instance of a component, or
+ *              create an instance.
+ *  ---- USE ONLY FOR MULTISTUDY INSTANCES ! --------
+ *  \param genericRegisterName    Name of the component instance to register
+ *                                in Registry & Name Service,
+ *                                (without _inst_n suffix, like "COMPONENT")
+ *  \param componentLibraryName   like "libCOMPONENTEngine.so"
+ *  \return a loaded component
+ * 
+ *  example with names:
+ *  aGenRegisterName = COMPONENT (= first argument)
+ *  impl_name = libCOMPONENTEngine.so (= second argument)
+ *  _containerName = /Containers/cli76ce/FactoryServer
+ *  factoryName = COMPONENTEngine_factory
+ *  component_registerBase = /Containers/cli76ce/FactoryServer/COMPONENT
+ *
+ *  instanceName = COMPONENT_inst_1
+ *  component_registerName = /Containers/cli76ce/FactoryServer/COMPONENT_inst_1
+ */
+//=============================================================================
+
+Engines::Component_ptr
+Engines_Container_i::find_or_create_instance(string genericRegisterName,
+                                            string componentLibraryName)
+{
+  string aGenRegisterName = genericRegisterName;
+  string impl_name = componentLibraryName;
+  void* handle = _library_map[impl_name];
+  if ( !handle )
     {
-      remove_map[instanceName] = handle_map[instanceName] ;
+      INFOS("shared library " << impl_name <<"must be loaded before instance");
+      return Engines::Component::_nil() ;
     }
-  else MESSAGE("pas d'entree handle_map");
-  handle_map.erase(instanceName) ;   
-  _numInstanceMutex.unlock() ;
-  MESSAGE("contenu handle_map");
-  map<string, void *>::iterator im ;
-  for (im = handle_map.begin() ; im != handle_map.end() ; im ++)
+  else
     {
-      MESSAGE("reste " << (*im).first);
+      // --- find a registered instance in naming service, or create
+
+      string component_registerBase =
+       _containerName + "/" + aGenRegisterName;
+      Engines::Component_var iobject = Engines::Component::_nil() ;
+      try
+       {
+         CORBA::Object_var obj =
+           _NS->ResolveFirst( component_registerBase.c_str());
+         if ( CORBA::is_nil( obj ) )
+           {
+             iobject = createInstance(genericRegisterName,
+                                      handle,
+                                      0); // force multiStudy instance here !
+           }
+         else
+           { 
+             iobject = Engines::Component::_narrow( obj ) ;
+             Engines_Component_i *servant =
+               dynamic_cast<Engines_Component_i*>
+               (_poa->reference_to_servant(iobject));
+             ASSERT(servant)
+             int studyId = servant->getStudyId();
+             ASSERT (studyId >= 0);
+             if (studyId == 0) // multiStudy instance, OK
+               {
+                 // No ReBind !
+                 MESSAGE(component_registerBase.c_str()<<" already bound");
+               }
+             else // monoStudy instance: NOK
+               {
+                 iobject = Engines::Component::_nil();
+                 INFOS("load_impl & find_component_instance methods "
+                       << "NOT SUITABLE for mono study components");
+               }
+           }
+       }
+      catch (...)
+       {
+         INFOS( "Container_i::load_impl catched" ) ;
+       }
+      return iobject._retn();
     }
 }
 
-void Engines_Container_i::finalize_removal()
+//=============================================================================
+/*! 
+ *  C++ method: create a servant instance of a component.
+ *  \param genericRegisterName    Name of the component instance to register
+ *                                in Registry & Name Service,
+ *                                (without _inst_n suffix, like "COMPONENT")
+ *  \param handle                 loaded library handle
+ *  \param studyId                0 for multiStudy instance, 
+ *                                study Id (>0) otherwise
+ *  \return a loaded component
+ * 
+ *  example with names:
+ *  aGenRegisterName = COMPONENT (= first argument)
+ *  _containerName = /Containers/cli76ce/FactoryServer
+ *  factoryName = COMPONENTEngine_factory
+ *  component_registerBase = /Containers/cli76ce/FactoryServer/COMPONENT
+ *  instanceName = COMPONENT_inst_1
+ *  component_registerName = /Containers/cli76ce/FactoryServer/COMPONENT_inst_1
+ */
+//=============================================================================
+
+Engines::Component_ptr
+Engines_Container_i::createInstance(string genericRegisterName,
+                                   void *handle,
+                                   int studyId)
 {
-  MESSAGE("finalize unload : dlclose");
-  map<string, void *>::iterator im ;
-  _numInstanceMutex.lock() ; // lock on the explore remove_map & dlclose
-  for (im = remove_map.begin() ; im != remove_map.end() ; im ++)
+  // --- find the factory
+
+  string aGenRegisterName = genericRegisterName;
+  string factory_name = aGenRegisterName + string("Engine_factory");
+  SCRUTE(factory_name) ;
+
+  typedef  PortableServer::ObjectId * (*FACTORY_FUNCTION)
+    (CORBA::ORB_ptr,
+     PortableServer::POA_ptr, 
+     PortableServer::ObjectId *, 
+     const char *, 
+     const char *) ;
+
+  FACTORY_FUNCTION Component_factory
+    = (FACTORY_FUNCTION) dlsym(handle, factory_name.c_str());
+
+  char *error ;
+  if ( (error = dlerror() ) != NULL)
+    {
+      INFOS("Can't resolve symbol: " + factory_name);
+      SCRUTE(error);
+      return Engines::Component::_nil() ;
+    }
+
+  // --- create instance
+
+  Engines::Component_var iobject = Engines::Component::_nil() ;
+
+  try
+    {
+      _numInstanceMutex.lock() ; // lock on the instance number
+      _numInstance++ ;
+      int numInstance = _numInstance ;
+      _numInstanceMutex.unlock() ;
+
+      char aNumI[12];
+      sprintf( aNumI , "%d" , numInstance ) ;
+      string instanceName = aGenRegisterName + "_inst_" + aNumI ;
+      string component_registerName =
+       _containerName + "/" + instanceName;
+
+      // --- Instanciate required CORBA object
+
+      PortableServer::ObjectId *id ; //not owner, do not delete (nore use var)
+      id = (Component_factory) ( _orb, _poa, _id, instanceName.c_str(),
+                                aGenRegisterName.c_str() ) ;
+
+      // --- get reference & servant from id
+
+      CORBA::Object_var obj = _poa->id_to_reference(*id);
+      iobject = Engines::Component::_narrow( obj ) ;
+
+      Engines_Component_i *servant =
+       dynamic_cast<Engines_Component_i*>(_poa->reference_to_servant(iobject));
+      ASSERT(servant);
+      //SCRUTE(servant->pd_refCount);
+      servant->_remove_ref(); // compensate previous id_to_reference 
+      //SCRUTE(servant->pd_refCount);
+      _listInstances_map[instanceName] = iobject;
+      _cntInstances_map[aGenRegisterName] += 1;
+      SCRUTE(aGenRegisterName);
+      SCRUTE(_cntInstances_map[aGenRegisterName]);
+      //SCRUTE(servant->pd_refCount);
+      bool ret_studyId = servant->setStudyId(studyId);
+      ASSERT(ret_studyId);
+
+      // --- register the engine under the name
+      //     containerName(.dir)/instanceName(.object)
+
+      _NS->Register( iobject , component_registerName.c_str() ) ;
+      MESSAGE( component_registerName.c_str() << " bound" ) ;
+    }
+  catch (...)
+    {
+      INFOS( "Container_i::createInstance exception catched" ) ;
+    }
+  return iobject._retn();
+}
+
+//=============================================================================
+/*! 
+ *
+ */
+//=============================================================================
+
+void Engines_Container_i::decInstanceCnt(string genericRegisterName)
+{
+  string aGenRegisterName =genericRegisterName;
+  MESSAGE("Engines_Container_i::decInstanceCnt " << aGenRegisterName);
+  ASSERT(_cntInstances_map[aGenRegisterName] > 0); 
+  _numInstanceMutex.lock(); // lock to be alone
+                            // (see finalize_removal, load_component_Library)
+  _cntInstances_map[aGenRegisterName] -= 1;
+  SCRUTE(_cntInstances_map[aGenRegisterName]);
+  if (_cntInstances_map[aGenRegisterName] == 0)
     {
-      void * handle = (*im).second ;
-      dlclose(handle) ;
-      MESSAGE("dlclose " << (*im).first);
+      string impl_name =
+       Engines_Component_i::GetDynLibraryName(aGenRegisterName.c_str());
+      SCRUTE(impl_name);
+      void* handle = _library_map[impl_name];
+      ASSERT(handle);
+      _toRemove_map[impl_name] = handle;
     }
-  remove_map.clear() ;  
-  _numInstanceMutex.unlock() ;
-  MESSAGE("remove_map.clear()");
+  _numInstanceMutex.unlock();
 }
 
-void ActSigIntHandler() {
+//=============================================================================
+/*! 
+ *  Retrieves only with container naming convention if it is a python container
+ */
+//=============================================================================
+
+bool Engines_Container_i::isPythonContainer(const char* ContainerName)
+{
+  bool ret=false;
+  int len=strlen(ContainerName);
+  if(len>=2)
+    if(strcmp(ContainerName+len-2,"Py")==0)
+      ret=true;
+  return ret;
+}
+
+//=============================================================================
+/*! 
+ *  
+ */
+//=============================================================================
+
+void ActSigIntHandler()
+{
+#ifndef WNT
   struct sigaction SigIntAct ;
   SigIntAct.sa_sigaction = &SigIntHandler ;
   SigIntAct.sa_flags = SA_SIGINFO ;
-// DEBUG 03.02.2005 : the first parameter of sigaction is not a mask of signals (SIGINT | SIGUSR1) :
-// it must be only one signal ===> one call for SIGINT and an other one for SIGUSR1
+#endif
+
+// DEBUG 03.02.2005 : the first parameter of sigaction is not a mask of signals
+// (SIGINT | SIGUSR1) :
+// it must be only one signal ===> one call for SIGINT 
+// and an other one for SIGUSR1
+#ifndef WNT
   if ( sigaction( SIGINT , &SigIntAct, NULL ) ) {
     perror("SALOME_Container main ") ;
     exit(0) ;
@@ -295,20 +824,38 @@ void ActSigIntHandler() {
     perror("SALOME_Container main ") ;
     exit(0) ;
   }
-  INFOS(pthread_self() << "SigIntHandler activated") ;
+  //PAL9042 JR : during the execution of a Signal Handler (and of methods called through Signal Handlers)
+  //             use of streams (and so on) should never be used because :
+  //             streams of C++ are naturally thread-safe and use pthread_mutex_lock ===>
+  //             A stream operation may be interrupted by a signal and if the Handler use stream we
+  //             may have a "Dead-Lock" ===HangUp
+  //==INFOS is commented
+  //  INFOS(pthread_self() << "SigIntHandler activated") ;
+#else  
+  signal( SIGINT, SigIntHandler );
+  signal( SIGUSR1, SigIntHandler );
+#endif
+
 }
 
 void SetCpuUsed() ;
 
+#ifndef WNT
 void SigIntHandler(int what , siginfo_t * siginfo ,
                                         void * toto ) {
-  MESSAGE(pthread_self() << "SigIntHandler what     " << what << endl
-          << "              si_signo " << siginfo->si_signo << endl
-          << "              si_code  " << siginfo->si_code << endl
-          << "              si_pid   " << siginfo->si_pid) ;
+  //PAL9042 JR : during the execution of a Signal Handler (and of methods called through Signal Handlers)
+  //             use of streams (and so on) should never be used because :
+  //             streams of C++ are naturally thread-safe and use pthread_mutex_lock ===>
+  //             A stream operation may be interrupted by a signal and if the Handler use stream we
+  //             may have a "Dead-Lock" ===HangUp
+  //==MESSAGE is commented
+  //  MESSAGE(pthread_self() << "SigIntHandler what     " << what << endl
+  //          << "              si_signo " << siginfo->si_signo << endl
+  //          << "              si_code  " << siginfo->si_code << endl
+  //          << "              si_pid   " << siginfo->si_pid) ;
   if ( _Sleeping ) {
     _Sleeping = false ;
-    MESSAGE("SigIntHandler END sleeping.") ;
+    //     MESSAGE("SigIntHandler END sleeping.") ;
     return ;
   }
   else {
@@ -318,132 +865,148 @@ void SigIntHandler(int what , siginfo_t * siginfo ,
     }
     else {
       _Sleeping = true ;
-      MESSAGE("SigIntHandler BEGIN sleeping.") ;
+      //      MESSAGE("SigIntHandler BEGIN sleeping.") ;
       int count = 0 ;
       while( _Sleeping ) {
         sleep( 1 ) ;
         count += 1 ;
       }
-      MESSAGE("SigIntHandler LEAVE sleeping after " << count << " s.") ;
+      //      MESSAGE("SigIntHandler LEAVE sleeping after " << count << " s.") ;
     }
     return ;
   }
 }
-
-// Get the PID of the Container
-
-long Engines_Container_i::getPID() {
-    return (long)getpid();
-}
-
-// Get the hostName of the Container
-
-char* Engines_Container_i::getHostName() {
-    return((char*)(GetHostname().c_str()));
-}
-
-// Retrieves only with container naming convention if it is a python container
-bool Engines_Container_i::isPythonContainer(const char* ContainerName)
-{
-  bool ret=false;
-  int len=strlen(ContainerName);
-  if(len>=2)
-    if(strcmp(ContainerName+len-2,"Py")==0)
-      ret=true;
-  return ret;
-}
-
-string Engines_Container_i::BuildContainerNameForNS(const char *ContainerName, const char *hostname)
-{
-  string ret="/Containers/";
-  ret += hostname;
-  ret+="/";
-  if (strlen(ContainerName)== 0)
-    ret+=_defaultContainerName;
-  else
-    ret += ContainerName;
-  return ret;
+#else // Case WNT
+void SigIntHandler( int what ) {
+  MESSAGE( pthread_self() << "SigIntHandler what     " << what << endl );
+  if ( _Sleeping ) {
+    _Sleeping = false ;
+    MESSAGE("SigIntHandler END sleeping.") ;
+    return ;
+  }
+  else {
+    ActSigIntHandler() ;
+    if ( what == SIGUSR1 ) {
+      SetCpuUsed() ;
+    }
+    else {
+      _Sleeping = true ;
+      MESSAGE("SigIntHandler BEGIN sleeping.") ;
+      int count = 0 ;
+      while( _Sleeping ) {
+        Sleep( 1000 ) ;
+        count += 1 ;
+      }
+      MESSAGE("SigIntHandler LEAVE sleeping after " << count << " s.") ;
+    }
+    return ;
+  }
 }
+#endif
 
-
-/*
- *  Create one instance of componentName component and register i
- *  as nameToRegister in naming service
+//=============================================================================
+/*
+ *  CORBA method: Create one instance of componentName componen
+ *  and register it as genericRegisterName in naming service
  */
-Engines::Component_ptr Engines_Container_i::instance( const char* nameToRegister,
-                                                     const char* componentName ) {
+//=============================================================================
 
-  _numInstanceMutex.lock() ; // lock on the instance number
-  BEGIN_OF( "Container_i::instance " << componentName ) ;
+// Engines::Component_ptr Engines_Container_i::instance( const char* genericRegisterName,
+//                                                   const char* componentName )
+// {
+//   _numInstanceMutex.lock() ; // lock on the instance number
+//   BEGIN_OF( "Container_i::instance " << componentName ) ;
 
-  string _nameToRegister = nameToRegister;
-  string component_registerName = _containerName + "/" + _nameToRegister;
+//   string _genericRegisterName = genericRegisterName;
+//   string component_registerName = _containerName + "/" + _genericRegisterName;
   
-  Engines::Component_var iobject = Engines::Component::_nil() ;
+//   Engines::Component_var iobject = Engines::Component::_nil() ;
   
-  try {
-    CORBA::Object_var obj = _NS->Resolve( component_registerName.c_str() ) ;
-    if (! CORBA::is_nil( obj ) ) {
-      MESSAGE( "Container_i::instance " << component_registerName.c_str() << " already registered" ) ;
-      iobject = Engines::Component::_narrow( obj ) ;
-    }
-    else{
-      string _compo_name = componentName;
-      string _impl_name = "lib" + _compo_name + "Engine.so";
-      SCRUTE(_impl_name);
+//   try 
+//     {
+//       CORBA::Object_var obj = _NS->Resolve( component_registerName.c_str() ) ;
+//       if (! CORBA::is_nil( obj ) )
+//     {
+//       MESSAGE( "Container_i::instance " << component_registerName.c_str() << " already registered" ) ;
+//       iobject = Engines::Component::_narrow( obj ) ;
+//     }
+//       else
+//     {
+//       string _compo_name = componentName;
+//       string _impl_name = "lib" + _compo_name + "Engine.so";
+//       SCRUTE(_impl_name);
       
-      void* handle;
-      handle = dlopen( _impl_name.c_str() , RTLD_LAZY ) ;
-      
-      if ( handle ) {
-        string factory_name = _compo_name + "Engine_factory";
-        SCRUTE(factory_name) ;
-
-        typedef  PortableServer::ObjectId * (*FACTORY_FUNCTION)
-                                  (CORBA::ORB_ptr,
-                                   PortableServer::POA_ptr, 
-                                   PortableServer::ObjectId *, 
-                                   const char *, 
-                                   const char *) ; 
-        FACTORY_FUNCTION Component_factory = (FACTORY_FUNCTION) dlsym(handle, factory_name.c_str());
-
-        char *error ;
-        if ( (error = dlerror() ) == NULL) {
-             // Instanciate required CORBA object
-            _numInstance++ ;
-             char _aNumI[12];
-             sprintf( _aNumI , "%d" , _numInstance ) ;
-             string instanceName = _compo_name + "_inst_" + _aNumI ;
-             SCRUTE(instanceName);
-
-             PortableServer::ObjectId * id ;
-             id = (Component_factory) ( _orb, _poa, _id, instanceName.c_str() ,
-                                 _nameToRegister.c_str() ) ;
-             // get reference from id
-             obj = _poa->id_to_reference(*id);
-             iobject = Engines::Component::_narrow( obj ) ;
-
-             // register the engine under the name containerName.dir/nameToRegister.object
-             _NS->Register( iobject , component_registerName.c_str() ) ;
-             MESSAGE( "Container_i::instance " << component_registerName.c_str() << " registered" ) ;
-            handle_map[instanceName] = handle;
-        }
-        else{
-            INFOS("Can't resolve symbol: " + factory_name);
-            SCRUTE(error);
-        }  
-      }
-      else{
-       INFOS("Can't load shared library : " << _impl_name);
-       INFOS("error dlopen: " << dlerror());
-      }      
-    }
-  }
-  catch (...) {
-    INFOS( "Container_i::instance exception caught" ) ;
-  }
-  END_OF("Container_i::instance");
-  _numInstanceMutex.unlock() ;
-  return Engines::Component::_duplicate(iobject);
-}
+//       void* handle;
+//       handle = dlopen( _impl_name.c_str() , RTLD_LAZY ) ;
+         
+//       if ( handle )
+//         {
+//           string factory_name = _compo_name + "Engine_factory";
+//           SCRUTE(factory_name) ;
+             
+//           typedef  PortableServer::ObjectId * (*FACTORY_FUNCTION)
+//             (CORBA::ORB_ptr,
+//              PortableServer::POA_ptr, 
+//              PortableServer::ObjectId *, 
+//              const char *, 
+//              const char *) ; 
+//           FACTORY_FUNCTION Component_factory = (FACTORY_FUNCTION) dlsym(handle, factory_name.c_str());
+
+//           char *error ;
+//           if ( (error = dlerror() ) == NULL)
+//             {
+//               // Instanciate required CORBA object
+//               _numInstance++ ;
+//               char _aNumI[12];
+//               sprintf( _aNumI , "%d" , _numInstance ) ;
+//               string instanceName = _compo_name + "_inst_" + _aNumI ;
+//               SCRUTE(instanceName);
+                 
+//               PortableServer::ObjectId * id ;
+//               id = (Component_factory) ( _orb, _poa, _id, instanceName.c_str() ,
+//                                          _genericRegisterName.c_str() ) ;
+//               // get reference from id
+//               obj = _poa->id_to_reference(*id);
+//               iobject = Engines::Component::_narrow( obj ) ;
+                 
+//               // register the engine under the name containerName.dir/genericRegisterName.object
+//               _NS->Register( iobject , component_registerName.c_str() ) ;
+//               MESSAGE( "Container_i::instance " << component_registerName.c_str() << " registered" ) ;
+//               _handle_map[instanceName] = handle;
+//             }
+//           else
+//             {
+//               INFOS("Can't resolve symbol: " + factory_name);
+//               SCRUTE(error);
+//             }  
+//         }
+//       else
+//         {
+//           INFOS("Can't load shared library : " << _impl_name);
+//           INFOS("error dlopen: " << dlerror());
+//         }      
+//     }
+//     }
+//   catch (...)
+//     {
+//       INFOS( "Container_i::instance exception caught" ) ;
+//     }
+//   END_OF("Container_i::instance");
+//   _numInstanceMutex.unlock() ;
+//   return Engines::Component::_duplicate(iobject);
+// }
+
+//=============================================================================
+/*! 
+ *  CORBA attribute: Machine Name (hostname without domain extensions)
+ */
+//=============================================================================
+
+// char* Engines_Container_i::machineName()
+// {
+//   string s = GetHostname();
+//   MESSAGE("Engines_Container_i::machineName " << s);
+//    return CORBA::string_dup(s.c_str()) ;
+// }
+
 
diff --git a/src/Container/Container_init_python.cxx b/src/Container/Container_init_python.cxx
new file mode 100644 (file)
index 0000000..7a4e585
--- /dev/null
@@ -0,0 +1,58 @@
+//  SALOME Container : implementation of container and engine for Kernel
+//
+//  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
+//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
+// 
+//  This library is free software; you can redistribute it and/or 
+//  modify it under the terms of the GNU Lesser General Public 
+//  License as published by the Free Software Foundation; either 
+//  version 2.1 of the License. 
+// 
+//  This library is distributed in the hope that it will be useful, 
+//  but WITHOUT ANY WARRANTY; without even the implied warranty of 
+//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
+//  Lesser General Public License for more details. 
+// 
+//  You should have received a copy of the GNU Lesser General Public 
+//  License along with this library; if not, write to the Free Software 
+//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
+// 
+//  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
+//
+//
+//
+//  File   : Container_init_python.cxx
+//  Author : Paul RASCLE, EDF
+//  Module : KERNEL
+//  $Header$
+
+#include "Container_init_python.hxx"
+
+#include "utilities.h"
+using namespace std;
+
+PyThreadState *KERNEL_PYTHON::_gtstate = 0;
+PyObject *KERNEL_PYTHON::salome_shared_modules_module = NULL;
+PyInterpreterState *KERNEL_PYTHON::_interp = NULL;
+
+void KERNEL_PYTHON::init_python(int argc, char **argv)
+{
+  if (Py_IsInitialized())
+    {
+      MESSAGE("Python already initialized");
+      SCRUTE(KERNEL_PYTHON::_gtstate);
+      return;
+    }
+  MESSAGE("=================================================================");
+  MESSAGE("Python Initialization...");
+  MESSAGE("=================================================================");
+  Py_SetProgramName(argv[0]);
+  Py_Initialize(); // Initialize the interpreter
+  PySys_SetArgv(argc, argv);
+  KERNEL_PYTHON::_interp = PyThreadState_Get()->interp;
+  PyEval_InitThreads(); // Create (and acquire) the interpreter lock
+  ASSERT(!KERNEL_PYTHON::_gtstate);
+  KERNEL_PYTHON::_gtstate = PyEval_SaveThread(); // Release global thread state
+  SCRUTE(KERNEL_PYTHON::_gtstate);
+}
+
diff --git a/src/Container/Container_init_python.hxx b/src/Container/Container_init_python.hxx
new file mode 100644 (file)
index 0000000..291f6f4
--- /dev/null
@@ -0,0 +1,86 @@
+//  SALOME Container : implementation of container and engine for Kernel
+//
+//  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
+//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
+// 
+//  This library is free software; you can redistribute it and/or 
+//  modify it under the terms of the GNU Lesser General Public 
+//  License as published by the Free Software Foundation; either 
+//  version 2.1 of the License. 
+// 
+//  This library is distributed in the hope that it will be useful, 
+//  but WITHOUT ANY WARRANTY; without even the implied warranty of 
+//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
+//  Lesser General Public License for more details. 
+// 
+//  You should have received a copy of the GNU Lesser General Public 
+//  License along with this library; if not, write to the Free Software 
+//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
+// 
+//  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
+//
+//
+//
+//  File   : Container_init_python.hxx
+//  Author : Paul RASCLE, EDF
+//  Module : KERNEL
+//  $Header$
+
+#ifndef _CONTAINER_INIT_PYTHON_HXX_
+#define _CONTAINER_INIT_PYTHON_HXX_
+
+#include <pthread.h>  // must be before Python.h !
+#include <Python.h>
+
+
+// next two MACRO must be used together only once inside a block
+// -------------------------------------------------------------
+// protect a sequence of Python calls:
+// - Python lock must be acquired for these calls
+// - new Python thread state allows multi thread use of the sequence:
+//    - Python may release the lock within the sequence, so multiple
+//      thread execution of the sequence may occur.
+//    - For that case, each sequence call must use a specific Python
+//      thread state.
+//    - There is no need of C Lock protection of the sequence.
+
+
+#if defined CONTAINER_EXPORTS
+#if defined WIN32
+#define CONTAINER_EXPORT __declspec( dllexport )
+#else
+#define CONTAINER_EXPORT
+#endif
+#else
+#if defined WNT
+#define CONTAINER_EXPORT __declspec( dllimport )
+#else
+#define CONTAINER_EXPORT
+#endif
+#endif
+
+#define Py_ACQUIRE_NEW_THREAD \
+  PyEval_AcquireLock(); \
+  PyThreadState *myTstate = PyThreadState_New(KERNEL_PYTHON::_interp); \
+  PyThreadState *myoldTstate = PyThreadState_Swap(myTstate);
+
+#define Py_RELEASE_NEW_THREAD \
+  PyEval_ReleaseThread(myTstate); \
+  PyThreadState_Delete(myTstate);
+
+struct CONTAINER_EXPORT KERNEL_PYTHON
+{
+#ifdef WNT
+  static PyThreadState *get_gtstate() { return KERNEL_PYTHON::_gtstate; }
+  static PyObject *getsalome_shared_modules_module() { return KERNEL_PYTHON::salome_shared_modules_module; }
+  static PyInterpreterState *get_interp() { return KERNEL_PYTHON::_interp; }
+#endif
+  static PyThreadState *_gtstate;
+  static PyObject *salome_shared_modules_module;
+  static PyInterpreterState *_interp;
+
+  static void init_python(int argc, char **argv);
+
+};
+
+#endif
index 1ed861ed014cb06824dccabd9b1f2570993797c3..cd185a90d34237595ceb9ac183b98a0bb239843e 100644 (file)
@@ -34,32 +34,39 @@ VPATH=.:@srcdir@:@top_srcdir@/idl
 
 @COMMENCE@
 
-EXPORT_PYSCRIPTS = SALOME_ComponentPy.py SALOME_ContainerPy.py
+EXPORT_PYSCRIPTS = SALOME_ComponentPy.py \
+       SALOME_ContainerPy.py \
+       SALOME_Container.py
 
 EXPORT_HEADERS = \
        SALOME_Component_i.hxx \
        SALOME_Container_i.hxx \
-       SALOME_ContainerManager.hxx
+       SALOME_ContainerManager.hxx \
+       Container_init_python.hxx
 
 # Libraries targets
 
 LIB = libSalomeContainer.la 
-LIB_SRC = Component_i.cxx  Container_i.cxx SALOME_ContainerManager.cxx
-LIB_SERVER_IDL = SALOME_Registry.idl SALOME_Component.idl SALOME_ContainerManager.idl
+LIB_SRC = Component_i.cxx \
+         Container_i.cxx \
+         SALOME_ContainerManager.cxx \
+         Container_init_python.cxx
+
+LIB_SERVER_IDL = SALOME_Registry.idl SALOME_Component.idl SALOME_ContainerManager.idl SALOME_Exception.idl
 LIB_CLIENT_IDL = 
 
 # Executables targets
-BIN = SALOME_Container
+BIN = SALOME_Container SALOME_ContainerManagerServer
 BIN_SRC = SALOME_Container_SignalsHandler.cxx
 BIN_SERVER_IDL = SALOME_Component.idl SALOME_ContainerManager.idl
 
 CPPFLAGS+= $(PYTHON_INCLUDES) $(MPI_INCLUDE) $(OCC_INCLUDES) $(QT_MT_INCLUDES)
 CXXFLAGS+=$(OCC_CXXFLAGS)
 
-LDFLAGS+= $(QT_MT_LIBS) -lSalomeNS -lRegistry -lOpUtil -lSalomeNotification -lSALOMELocalTrace -lSALOMETraceCollector -lSalomeResourcesManager
+LDFLAGS+= $(QT_MT_LIBS) -lSalomeNS -lRegistry -lOpUtil -lSalomeNotification -lSALOMELocalTrace -lSalomeResourcesManager
 
 LIBS += @LDEXPDYNFLAGS@ $(PYTHON_LIBS) $(MPI_LIBS)
 
-LDFLAGSFORBIN= $(LDFLAGS) -lSALOMETraceCollector
+LDFLAGSFORBIN= $(LDFLAGS) -lSALOMEBasics
 LIBSFORBIN= $(LIBS)
 @CONCLUDE@
index 10a47c9781447c770817d9f1e470bdaa38fff828..642c76e5a4f65e08067e2fb9b7f5a1b5053393e6 100755 (executable)
@@ -32,6 +32,7 @@ import os
 import sys
 import time
 import string
+import signal
 from omniORB import CORBA, PortableServer
 import Engines, Engines__POA
 import Registry
@@ -45,17 +46,20 @@ from thread import *
 
 #=============================================================================
 
+_Sleeping = 0
+
 #define an implementation of the component interface
 
 class SALOME_ComponentPy_i (Engines__POA.Component):
     _orb = None
     _poa = None
     _fieldsDict = []
+    _studyId = -1
     
     #-------------------------------------------------------------------------
 
     def __init__ (self, orb, poa, contID, containerName,
-                  instanceName, interfaceName, notif):
+                  instanceName, interfaceName, notif=0):
         # Notif for notification services
         # NOT YET IMPLEMENTED
         MESSAGE(  "SALOME_ComponentPy_i::__init__" + " " + str (containerName) + " " + str(instanceName) + " " + str(interfaceName) )
@@ -72,10 +76,11 @@ class SALOME_ComponentPy_i (Engines__POA.Component):
         self._StartUsed = 0
         self._ThreadCpuUsed = 0
         self._Executed = 0
+        self._contId = contID
 
         naming_service = SALOME_NamingServicePy_i(self._orb)
         myMachine=getShortHostName()
-        Component_path = "/Containers/" + myMachine + "/" + self._containerName + "/" + self._interfaceName
+        Component_path = self._containerName + "/" + self._instanceName
         MESSAGE(  'SALOME_ComponentPy_i Register' + str( Component_path ) )
         naming_service.Register(self._this(), Component_path)
 
@@ -117,7 +122,7 @@ class SALOME_ComponentPy_i (Engines__POA.Component):
     #-------------------------------------------------------------------------
 
     def ping(self):
-        MESSAGE(  "SALOME_ComponentPy_i::ping" )
+        MESSAGE(  "SALOME_ComponentPy_i::ping() pid " + str(os.getpid()) )
         
     #-------------------------------------------------------------------------
 
@@ -133,14 +138,16 @@ class SALOME_ComponentPy_i (Engines__POA.Component):
 
     def destroy(self):
         MESSAGE(  "SALOME_ComponentPy_i::destroy" )
-        poa.deactivate_object(self)
-        CORBA.release(_poa)
+        self._poa.deactivate_object(self)
+        CORBA.release(self._poa)
         
     #-------------------------------------------------------------------------
 
     def GetContainerRef(self):
         MESSAGE(  "SALOME_ComponentPy_i::GetContainerRef" )
-        
+        corbaObj_ptr = self._poa.id_to_reference(self._contId)
+        return corbaObj_ptr._narrow(Engines.Container)
+                
     #-------------------------------------------------------------------------
 
     def beginService(self , serviceName ):
@@ -185,23 +192,68 @@ class SALOME_ComponentPy_i (Engines__POA.Component):
 
     #-------------------------------------------------------------------------
 
-    def Kill(self):
-        MESSAGE(  "SALOME_ComponentPy_i::Kill not yet implemented" )
+    def Killer(self, ThreadId, signum):
+        #if ThreadId > 0:
+            #if signum == 0:
+                #if pthread_cancel(ThreadId): <- from C++
+                #   return 0
+                #else:
+                #   MESSAGE()
+            #else:
+                #if pthread_kill(ThreadId): <- from C++
+                #   return 0
+                #else:
+                #   MESSAGE()
+        return 1                 
+    
+    #-------------------------------------------------------------------------
+
+    def Kill_impl(self):
+        MESSAGE(  "SALOME_ComponentPy_i::Kill_impl" )
+        RetVal = 0
+        if self._ThreadId > 0 & self._ThreadId != get_ident():
+            RetVal = Killer(self._ThreadId,0)
+            self._ThreadId = 0
+        return RetVal
 
     #-------------------------------------------------------------------------
 
-    def Stop(self):
-        MESSAGE(  "SALOME_ComponentPy_i::Stop not yet implemented" )
+    def Stop_impl(self):
+        MESSAGE(  "SALOME_ComponentPy_i::Stop_impl" )
+        RetVal = 0
+        if self._ThreadId > 0 & self._ThreadId != get_ident():
+            RetVal = Killer(self._ThreadId,0)
+            self._ThreadId = 0
+        return RetVal
 
     #-------------------------------------------------------------------------
 
-    def Suspend(self):
-        MESSAGE(  "SALOME_ComponentPy_i::Suspend not yet implemented" )
+    def Suspend_impl(self):
+        MESSAGE(  "SALOME_ComponentPy_i::Suspend_impl" )
+        global _Sleeping
+        RetVal = 0
+        if self._ThreadId > 0 & self._ThreadId != get_ident():
+            if _Sleeping > 0:
+                return 0
+            else:
+                RetVal = Killer(self._ThreadId, signal.SIGINT)
+                if RetVal > 0:
+                    _Sleeping = 1
+        return RetVal
 
     #-------------------------------------------------------------------------
 
-    def Resume(self):
-        MESSAGE(  "SALOME_ComponentPy_i::Resume not yet implemented" )
+    def Resume_impl(self):
+        MESSAGE(  "SALOME_ComponentPy_i::Resume_impl" )
+        global _Sleeping
+        RetVal = 0
+        if self._ThreadId > 0 & self._ThreadId != get_ident():
+            if _Sleeping > 0:
+                _Sleeping = 0
+                RetVal = 1
+            else:
+                RetVal = 0
+        return RetVal
 
     #-------------------------------------------------------------------------
 
@@ -218,4 +270,17 @@ class SALOME_ComponentPy_i (Engines__POA.Component):
         return 0
 
     #-------------------------------------------------------------------------
-
+   
+    def DumpPython(self, theStudy, isPublished, isValidScript):
+        aBuffer = "def RebuildData(theStudy): pass"
+        aBufferSize = len(aBuffer) + 1
+        anOctetBuf = aBuffer._narrow(CORBA.Octet)
+        aTMPFile = Engines.TMPFile(aBufferSize, aBufferSize, anOctetBuf._this(), 1)
+        isValidScript = 1
+       #return (aBuffer, 1)
+        return aTMPFile._this()
+
+    #-------------------------------------------------------------------------    
+
+    def getStudyId(self):
+        return self._studyId
index 620ca149985180f4ad5e05556e2a2f8757a9a46a..c8de1f1aac979cc437130ecf51bfe0b46e0d1191 100644 (file)
@@ -32,7 +32,9 @@
 #include <iostream>
 #include <signal.h>
 #include <stdlib.h>
+#ifndef WNT
 #include <unistd.h>
+#endif
 #include <sys/types.h>
 #include <string>
 #include <map>
 #include "NOTIFICATION.hxx"
 
 class RegistryConnexion;
+class Engines_Container_i;
+
+#if defined CONTAINER_EXPORTS
+#if defined WIN32
+#define CONTAINER_EXPORT __declspec( dllexport )
+#else
+#define CONTAINER_EXPORT
+#endif
+#else
+#if defined WNT
+#define CONTAINER_EXPORT __declspec( dllimport )
+#else
+#define CONTAINER_EXPORT
+#endif
+#endif
 
-class Engines_Component_i: public virtual POA_Engines::Component,
-                          public virtual PortableServer::RefCountServantBase
+class CONTAINER_EXPORT Engines_Component_i: 
+  public virtual POA_Engines::Component,
+  public virtual PortableServer::RefCountServantBase
 {
 public:
   Engines_Component_i();
@@ -64,42 +82,59 @@ public:
 
   virtual ~Engines_Component_i();
 
+  // --- CORBA methods
+
   char* instanceName();
   char* interfaceName();
 
-  void destroy();
   void ping();
+  void destroy();
 
+  CORBA::Long getStudyId();
   Engines::Container_ptr GetContainerRef();
-  PortableServer::ObjectId * getId(); 
 
   void setProperties(const Engines::FieldsDict& dico);
   Engines::FieldsDict* getProperties();
 
+  void Names( const char * graphName , const char * nodeName ) ;
+  bool Kill_impl();
+  bool Stop_impl();
+  bool Suspend_impl();
+  bool Resume_impl();
+  CORBA::Long CpuUsed_impl() ;
+
+ virtual Engines::TMPFile* DumpPython(CORBA::Object_ptr theStudy,
+                                     CORBA::Boolean isPublished,
+                                     CORBA::Boolean& isValidScript);
+
+
+  // --- local C++ methods
+
+  PortableServer::ObjectId * getId(); 
+  Engines_Container_i *GetContainerPtr();
+
+  bool setStudyId(CORBA::Long studyId);
+  static bool isMultiStudy();
+  static bool isMultiInstance();
+  static std::string GetDynLibraryName(const char *componentName);
+
   void beginService(const char *serviceName);
   void endService(const char *serviceName);
   void sendMessage(const char *event_type, const char *message);
-
-  void Names( const char * graphName , const char * nodeName ) ;
   char * graphName() ;
   char * nodeName() ;
   bool Killer( pthread_t ThreadId , int signum );
-  bool Kill_impl();
-  bool Stop_impl();
-  bool Suspend_impl();
-  bool Resume_impl();
   void SetCurCpu() ;
   long CpuUsed() ;
-  CORBA::Long CpuUsed_impl() ;
 
-  static std::string GetDynLibraryName(const char *componentName);
-  static std::string BuildComponentNameForNS(const char *ComponentName, const char *ContainerName, const char *hostname);
 protected:
+  int _studyId; // -1: not initialised; 0: multiStudy; >0: study
+  static bool _isMultiStudy;
+  static bool _isMultiInstance;
+
   std::string _instanceName ;
   std::string _interfaceName ;
-  std::string _serviceName ;
-  std::string _graphName ;
-  std::string _nodeName ;
+
   CORBA::ORB_ptr _orb;
   PortableServer::POA_ptr _poa;
   PortableServer::ObjectId * _id;
@@ -109,8 +144,16 @@ protected:
   NOTIFICATION_Supplier* _notifSupplier;
   std::map<std::string,CORBA::Any>_fieldsDict;
 
+  std::string _serviceName ;
+  std::string _graphName ;
+  std::string _nodeName ;
+
 private:
+#ifndef WNT
   pthread_t _ThreadId ;
+#else
+  pthread_t* _ThreadId ;
+#endif
   long      _StartUsed ;
   long      _ThreadCpuUsed ;
   bool      _Executed ;
index dfd501e9ff11bc86d1c7747f82808b5c728d1a76..f6f1884ff70a0fa602af6ed029cbd15429fcfda4 100644 (file)
 #include <string>
 #include <stdio.h>
 
-//#include "Utils_ORB_INIT.hxx"
-//#include "Utils_SINGLETON.hxx"
+#ifndef WNT
 #include <unistd.h>
-#include "SALOME_NamingService.hxx"
+#else
+#include <process.h>
+#endif
 #include "SALOME_Container_i.hxx"
 #include "utilities.h"
+#include "Utils_ORB_INIT.hxx"
+#include "Utils_SINGLETON.hxx"
 #include "SALOMETraceCollector.hxx"
+#include "OpUtil.hxx"
 
 #ifdef CHECKTIME
 #include <Utils_Timer.hxx>
 #include <mpi.h>
 #endif
 
-#include <Python.h>
+#include "Container_init_python.hxx"
 
 using namespace std;
 
 extern "C" void HandleServerSideSignals(CORBA::ORB_ptr theORB);
 
-static PyMethodDef MethodPyVoidMethod[] = {{ NULL, NULL }};
-
 int main(int argc, char* argv[])
 {
 #ifdef HAVE_MPI2
   MPI_Init(&argc,&argv);
 #endif
+
   // Initialise the ORB.
-  //ORB_INIT &init = *SINGLETON_<ORB_INIT>::Instance() ;
-  CORBA::ORB_var orb = CORBA::ORB_init( argc , argv ) ;
-  SALOMETraceCollector *myThreadTrace = SALOMETraceCollector::instance(orb);
+  //SRN: BugID: IPAL9541, it's necessary to set a size of one message to be at least 100Mb
+  //CORBA::ORB_var orb = CORBA::ORB_init( argc , argv ) ;
+  ORB_INIT &init = *SINGLETON_<ORB_INIT>::Instance() ;
+  ASSERT(SINGLETON_<ORB_INIT>::IsAlreadyExisting());
+  CORBA::ORB_var orb = init(0 , 0 ) ;
+         
+  //  LocalTraceCollector *myThreadTrace = SALOMETraceCollector::instance(orb);
   INFOS_COMPILATION;
   BEGIN_OF(argv[0]);
-    
-  Py_Initialize() ;
-  PySys_SetArgv( argc , argv ) ;
-  Py_InitModule( "InitPyRunMethod" , MethodPyVoidMethod ) ;
-  
-  try{
-    // Obtain a reference to the root POA.
-    // obtain the root poa manager
-    //
-    long TIMESleep = 500000000;
-    int NumberOfTries = 40;
-    int a;
-    timespec ts_req;
-    ts_req.tv_nsec=TIMESleep;
-    ts_req.tv_sec=0;
-    timespec ts_rem;
-    ts_rem.tv_nsec=0;
-    ts_rem.tv_sec=0;
-    CosNaming::NamingContext_var inc;
-    PortableServer::POA_var root_poa;
-    CORBA::Object_var theObj;
-    CORBA::Object_var obj;
-    CORBA::Object_var object;
-    //SALOME_NamingService &naming = *SINGLETON_<SALOME_NamingService>::Instance() ;
-    int CONTAINER=0;
-    const char * Env = getenv("USE_LOGGER");
-    int EnvL =0;
-    if(Env != NULL && strlen(Env))
-      EnvL=1;
-    
-    CosNaming::Name name;
-    name.length(1);
-    name[0].id=CORBA::string_dup("Logger");    
-    PortableServer::POAManager_var pman; 
-    for(int i = 1; i <= NumberOfTries; i++){
-      if(i != 1) 
-       a=nanosleep(&ts_req,&ts_rem);
-      try{ 
-       obj = orb->resolve_initial_references("RootPOA");
-       if(!CORBA::is_nil(obj))
-         root_poa = PortableServer::POA::_narrow(obj);
-       if(!CORBA::is_nil(root_poa))
-         pman = root_poa->the_POAManager();
-       if(!CORBA::is_nil(orb)) 
-         theObj = orb->resolve_initial_references("NameService");
-       if (!CORBA::is_nil(theObj))
-         inc = CosNaming::NamingContext::_narrow(theObj);
-      }catch(CORBA::COMM_FAILURE&){
-       MESSAGE( "Container: CORBA::COMM_FAILURE: Unable to contact the Naming Service" );
-      }
-      if(!CORBA::is_nil(inc)){
-       MESSAGE( "Container: Naming Service was found" );
-       if(EnvL == 1){
-         for(int j = 1; j <= NumberOfTries; j++){
-           if(j != 1) 
-             a=nanosleep(&ts_req, &ts_rem);
-           try{
-             object = inc->resolve(name);
-           }catch(CosNaming::NamingContext::NotFound){
-             MESSAGE( "Container: Logger Server wasn't found" );
-           }catch(...){
-             MESSAGE( "Container: Unknown exception" );
-           }
-           if(!CORBA::is_nil(object)){
-             MESSAGE( "Container: Logger Server was found" );
-             CONTAINER = 1;
-             break;
-           }
-         }
-       }
-      }
-      if(CONTAINER == 1 || (EnvL == 0 && !CORBA::is_nil(inc)))
-       break;
+
+  ASSERT(argc > 1);
+  SCRUTE(argv[1]);
+  bool isSupervContainer = false;
+  if (strcmp(argv[1],"SuperVisionContainer") == 0) isSupervContainer = true;
+
+  if (!isSupervContainer)
+    {
+      int _argc = 1;
+      char* _argv[] = {""};
+      KERNEL_PYTHON::init_python(argc,argv);
+    }
+  else
+    {
+      Py_Initialize() ;
+      PySys_SetArgv( argc , argv ) ;
     }
     
-    char *containerName = "";
-    if(argc > 1){
+  char *containerName = "";
+  if(argc > 1)
+    {
       containerName = argv[1] ;
     }
-    
-    Engines_Container_i * myContainer 
-      = new Engines_Container_i(orb, root_poa, containerName , argc , argv );
 
-    pman->activate();
-    
+  try
+    {  
+      CORBA::Object_var obj = orb->resolve_initial_references("RootPOA");
+      ASSERT(!CORBA::is_nil(obj));
+      PortableServer::POA_var root_poa = PortableServer::POA::_narrow(obj);
+
+      PortableServer::POAManager_var pman = root_poa->the_POAManager();
+
+      // add new container to the kill list
+#ifndef WNT
+      char aCommand[40];
+      sprintf(aCommand, "addToKillList.py %d SALOME_Container", getpid());
+      system(aCommand);
+#endif
+      
+      Engines_Container_i * myContainer 
+       = new Engines_Container_i(orb, root_poa, containerName , argc , argv );
+      
+      pman->activate();
+      
 #ifdef CHECKTIME
-    Utils_Timer timer;
-    timer.Start();
-    timer.Stop();
-    MESSAGE("SALOME_Registry_Server.cxx - orb->run()");
-    timer.ShowAbsolute();
+      Utils_Timer timer;
+      timer.Start();
+      timer.Stop();
+      MESSAGE("SALOME_Registry_Server.cxx - orb->run()");
+      timer.ShowAbsolute();
 #endif
-    
-    HandleServerSideSignals(orb);
-  }catch(CORBA::SystemException&){
-    INFOS("Caught CORBA::SystemException.");
-  }catch(PortableServer::POA::WrongPolicy&){
-    INFOS("Caught CORBA::WrongPolicyException.");
-  }catch(PortableServer::POA::ServantAlreadyActive&){
-    INFOS("Caught CORBA::ServantAlreadyActiveException");
-  }catch(CORBA::Exception&){
-    INFOS("Caught CORBA::Exception.");
-  }catch(std::exception& exc){
-    INFOS("Caught std::exception - "<<exc.what()); 
-  }catch(...){
-    INFOS("Caught unknown exception.");
-  }
+      
+      HandleServerSideSignals(orb);
+      
+    }
+  catch(CORBA::SystemException&)
+    {
+      INFOS("Caught CORBA::SystemException.");
+    }
+  catch(PortableServer::POA::ServantAlreadyActive&)
+    {
+      INFOS("Caught CORBA::ServantAlreadyActiveException");
+    }
+  catch(CORBA::Exception&)
+    {
+      INFOS("Caught CORBA::Exception.");
+    }
+  catch(std::exception& exc)
+    {
+      INFOS("Caught std::exception - "<<exc.what()); 
+    }
+  catch(...)
+    {
+      INFOS("Caught unknown exception.");
+    }
+
 #ifdef HAVE_MPI2
   MPI_Finalize();
 #endif
-  END_OF(argv[0]);
-  delete myThreadTrace;
+
+  //END_OF(argv[0]);
+  //LocalTraceBufferPool* bp1 = LocalTraceBufferPool::instance();
+  //bp1->deleteInstance(bp1);
   return 0 ;
 }
 
diff --git a/src/Container/SALOME_Container.py b/src/Container/SALOME_Container.py
new file mode 100644 (file)
index 0000000..4dab6de
--- /dev/null
@@ -0,0 +1,108 @@
+#! /usr/bin/env python
+#
+#  SALOME Container : implementation of container and engine for Kernel
+#
+#  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
+#  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
+# 
+#  This library is free software; you can redistribute it and/or 
+#  modify it under the terms of the GNU Lesser General Public 
+#  License as published by the Free Software Foundation; either 
+#  version 2.1 of the License. 
+# 
+#  This library is distributed in the hope that it will be useful, 
+#  but WITHOUT ANY WARRANTY; without even the implied warranty of 
+#  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
+#  Lesser General Public License for more details. 
+# 
+#  You should have received a copy of the GNU Lesser General Public 
+#  License along with this library; if not, write to the Free Software 
+#  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
+# 
+#  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
+#
+#
+#
+#  File   : SALOME_Container.py
+#  Author : Paul RASCLE, EDF
+#  Module : SALOME
+#  $Header$
+
+import os
+import sys
+import string
+from omniORB import CORBA, PortableServer
+# import SALOMEDS before other SALOME modules
+# (if not, incomplete import done by SALOME module: no load of SALOMEDS_attributes)
+import SALOMEDS 
+import Engines, Engines__POA
+reload(Engines)
+reload(Engines__POA)
+from SALOME_NamingServicePy import *
+from SALOME_ComponentPy import *
+
+from SALOME_utilities import *
+from Utils_Identity import getShortHostName
+
+#=============================================================================
+
+#define an implementation of the container interface
+
+class SALOME_Container_i:
+    _orb = None
+    _poa = None
+    _containerName = ""
+    _naming_service = None
+
+    #-------------------------------------------------------------------------
+
+    def __init__(self ,containerName, containerIORStr):
+        MESSAGE( "SALOME_Container_i::__init__" )
+        self._orb = CORBA.ORB_init(sys.argv, CORBA.ORB_ID)
+        self._poa = self._orb.resolve_initial_references("RootPOA")
+        self._containerName = containerName
+        print "SALOME_Container.SALOME_Container_i : _containerName ",self._containerName
+        #self._naming_service = SALOME_NamingServicePy_i(self._orb)
+        self._container = self._orb.string_to_object(containerIORStr)
+
+    #-------------------------------------------------------------------------
+
+    def import_component(self, componentName):
+        MESSAGE( "SALOME_Container_i::import_component" )
+        ret=0
+        try:
+            print "try import ",componentName
+            __import__(componentName)
+            print "import ",componentName," successful"
+            ret=1
+        except:
+            import traceback
+            traceback.print_exc()
+            print "import ",componentName," not possible"
+        return ret
+        
+    #-------------------------------------------------------------------------
+
+    def create_component_instance(self, componentName, instanceName, studyId):
+        MESSAGE( "SALOME_Container_i::create_component_instance" )
+        comp_iors=""
+        try:
+            component=__import__(componentName)
+            factory=getattr(component,componentName)
+            comp_i=factory(self._orb,
+                           self._poa,
+                           self._container,
+                           self._containerName,
+                           instanceName,
+                           componentName)
+
+            MESSAGE( "SALOME_Container_i::create_component_instance : OK")
+            comp_o = comp_i._this()
+            comp_iors = self._orb.object_to_string(comp_o)
+        except:
+            import traceback
+            traceback.print_exc()
+            MESSAGE( "SALOME_Container_i::create_component_instance : NOT OK")
+        return comp_iors 
+        
+
index d5fad0ae9d78a25f89e79f76aee7cf28d5553397..de43d8696ac1fc84cf34466a64fe9e0f43c16375 100644 (file)
@@ -2,32 +2,77 @@
 #include "SALOME_NamingService.hxx"
 #include "OpUtil.hxx"
 #include <sys/types.h>
+#ifndef WNT
 #include <unistd.h>
+#endif
 #include <vector>
+#include "Utils_CorbaException.hxx"
 
 #define TIME_OUT_TO_LAUNCH_CONT 21
 
 using namespace std;
 
-const char *SALOME_ContainerManager::_ContainerManagerNameInNS="/ContainerManager";
+const char *SALOME_ContainerManager::_ContainerManagerNameInNS = 
+  "/ContainerManager";
+
+//=============================================================================
+/*! 
+ *  Constructor
+ *  \param orb
+ *  Define a CORBA single thread policy for the server, which avoid to deal
+ *  with non thread-safe usage like Change_Directory in SALOME naming service
+ */
+//=============================================================================
 
 SALOME_ContainerManager::SALOME_ContainerManager(CORBA::ORB_ptr orb)
 {
-  _NS=new SALOME_NamingService(orb);
-  PortableServer::POA_var root_poa=PortableServer::POA::_the_root_poa();
-  PortableServer::ObjectId_var id=root_poa->activate_object(this);
-  CORBA::Object_var obj=root_poa->id_to_reference(id);
-  Engines::ContainerManager_var refContMan = Engines::ContainerManager::_narrow(obj);
+  MESSAGE("constructor");
+  _NS = new SALOME_NamingService(orb);
+  _ResManager = new SALOME_ResourcesManager(orb);
+  PortableServer::POA_var root_poa = PortableServer::POA::_the_root_poa();
+  PortableServer::POAManager_var pman = root_poa->the_POAManager();
+  PortableServer::POA_var my_poa;
+
+  CORBA::PolicyList policies;
+  policies.length(1);
+  PortableServer::ThreadPolicy_var threadPol = 
+    root_poa->create_thread_policy(PortableServer::SINGLE_THREAD_MODEL);
+  policies[0] = PortableServer::ThreadPolicy::_duplicate(threadPol);
+
+  my_poa = 
+    root_poa->create_POA("SThreadPOA",pman,policies);
+  threadPol->destroy();
+  PortableServer::ObjectId_var id = my_poa->activate_object(this);
+  CORBA::Object_var obj = my_poa->id_to_reference(id);
+  Engines::ContainerManager_var refContMan =
+    Engines::ContainerManager::_narrow(obj);
+
   _NS->Register(refContMan,_ContainerManagerNameInNS);
+  MESSAGE("constructor end");
 }
 
+//=============================================================================
+/*! 
+ * destructor
+ */
+//=============================================================================
+
 SALOME_ContainerManager::~SALOME_ContainerManager()
 {
+  MESSAGE("destructor");
   delete _NS;
+  delete _ResManager;
 }
 
+//=============================================================================
+/*! CORBA method:
+ *  shutdown all the containers, then the ContainerManager servant
+ */
+//=============================================================================
+
 void SALOME_ContainerManager::Shutdown()
 {
+  MESSAGE("Shutdown");
   ShutdownContainers();
   PortableServer::ObjectId_var oid = _default_POA()->servant_to_id(this);
   _default_POA()->deactivate_object(oid);
@@ -35,11 +80,18 @@ void SALOME_ContainerManager::Shutdown()
   
 }
 
+//=============================================================================
+/*! CORBA Method:
+ *  Loop on all the containers listed in naming service, ask shutdown on each
+ */
+//=============================================================================
+
 void SALOME_ContainerManager::ShutdownContainers()
 {
+  MESSAGE("ShutdownContainers");
   _NS->Change_Directory("/Containers");
-  vector<string> vec=_NS->list_directory_recurs();
-  for(vector<string>::iterator iter=vec.begin();iter!=vec.end();iter++)
+  vector<string> vec = _NS->list_directory_recurs();
+  for(vector<string>::iterator iter = vec.begin();iter!=vec.end();iter++)
     {
       SCRUTE((*iter));
       CORBA::Object_var obj=_NS->Resolve((*iter).c_str());
@@ -49,52 +101,111 @@ void SALOME_ContainerManager::ShutdownContainers()
     }
 }
 
-Engines::Container_ptr SALOME_ContainerManager::FindOrStartContainer(const char *containerName, const Engines::MachineList& possibleComputers)
+//=============================================================================
+/*! CORBA Method:
+ *  Find a suitable Container in a list of machines, or start one
+ *  \param params            Machine Parameters required for the container
+ *  \param possibleComputers list of machines usable for find or start
+ */
+//=============================================================================
+
+Engines::Container_ptr
+SALOME_ContainerManager::
+FindOrStartContainer(const Engines::MachineParameters& params,
+                    const Engines::MachineList& possibleComputers)
 {
-  Engines::Container_ptr ret=FindContainer(containerName,possibleComputers);
+  Engines::Container_ptr ret = FindContainer(params,possibleComputers);
   if(!CORBA::is_nil(ret))
     return ret;
-  // Container doesn't exist try to launch it ...
-  vector<string> vector;
-  string theMachine=_LoadManager.FindBest(possibleComputers);
+  MESSAGE("Container doesn't exist try to launch it ...");
+  MESSAGE("SALOME_ContainerManager::FindOrStartContainer " <<
+         possibleComputers.length());
+  //vector<string> vector;
+  string theMachine=_ResManager->FindBest(possibleComputers);
+  MESSAGE("try to launch it on " << theMachine);
+
   string command;
-  if(theMachine==GetHostname())
-    command=_ResManager.BuildCommandToLaunchLocalContainer(containerName);
+  if(theMachine=="")
+    {
+      MESSAGE("SALOME_ContainerManager::FindOrStartContainer : " <<
+             "no possible computer");
+      return Engines::Container::_nil();
+    }
+  else if(theMachine==GetHostname())
+    {
+      command=_ResManager->BuildCommandToLaunchLocalContainer(params);
+    }
   else
-    command=_ResManager.BuildTempFileToLaunchRemoteContainer(theMachine,containerName);
-  _ResManager.RmTmpFile();
+    command =
+      _ResManager->BuildCommandToLaunchRemoteContainer(theMachine,params);
+
+  _ResManager->RmTmpFile();
   int status=system(command.c_str());
-  if (status == -1) {
-    MESSAGE("SALOME_LifeCycleCORBA::StartOrFindContainer rsh failed (system command status -1)");
-    return Engines::Container::_nil();
-  }
-  else if (status == 217) {
-    MESSAGE("SALOME_LifeCycleCORBA::StartOrFindContainer rsh failed (system command status 217)");
-    return Engines::Container::_nil();
-  }
-  else {
-    int count=TIME_OUT_TO_LAUNCH_CONT;
-    while ( CORBA::is_nil(ret) && count ) {
-      sleep( 1 ) ;
-      count-- ;
-      if ( count != 10 )
-       MESSAGE( count << ". Waiting for FactoryServer on " << theMachine);
-      string containerNameInNS=BuildContainerNameInNS(containerName,theMachine.c_str());
-      SCRUTE(containerNameInNS);
-      CORBA::Object_var obj = _NS->Resolve(containerNameInNS.c_str());
-      ret=Engines::Container::_narrow(obj);
+  if (status == -1)
+    {
+      MESSAGE("SALOME_LifeCycleCORBA::StartOrFindContainer rsh failed " <<
+             "(system command status -1)");
+      return Engines::Container::_nil();
+    }
+  else if (status == 217)
+    {
+      MESSAGE("SALOME_LifeCycleCORBA::StartOrFindContainer rsh failed " <<
+             "(system command status 217)");
+      return Engines::Container::_nil();
     }
-    if ( CORBA::is_nil(ret) ) {
-      MESSAGE("SALOME_LifeCycleCORBA::StartOrFindContainer rsh failed");
+  else
+    {
+      int count=TIME_OUT_TO_LAUNCH_CONT;
+      while ( CORBA::is_nil(ret) && count )
+       {
+#ifndef WNT
+         sleep( 1 ) ;
+#else
+         Sleep(1000);
+#endif
+         count-- ;
+         if ( count != 10 )
+           MESSAGE( count << ". Waiting for FactoryServer on " << theMachine);
+         string containerNameInNS =
+           _NS->BuildContainerNameForNS(params,theMachine.c_str());
+         SCRUTE(containerNameInNS);
+         CORBA::Object_var obj = _NS->Resolve(containerNameInNS.c_str());
+         ret=Engines::Container::_narrow(obj);
+       }
+      if ( CORBA::is_nil(ret) )
+       {
+         MESSAGE("SALOME_LifeCycleCORBA::StartOrFindContainer rsh failed");
+       }
+      return ret;
     }
-    return ret;
-  }
 }
 
-Engines::MachineList *SALOME_ContainerManager::GetFittingResources(const Engines::MachineParameters& params, const char *componentName)
+//=============================================================================
+/*! 
+ * 
+ */
+//=============================================================================
+
+Engines::MachineList *
+SALOME_ContainerManager::
+GetFittingResources(const Engines::MachineParameters& params,
+                   const char *componentName)
 {
-  vector<string> vec=_ResManager.GetFittingResources(params,componentName);
+  MESSAGE("SALOME_ContainerManager::GetFittingResources");
   Engines::MachineList *ret=new Engines::MachineList;
+  vector<string> vec;
+  try
+    {
+      vec = _ResManager->GetFittingResources(params,componentName);
+    }
+  catch(const SALOME_Exception &ex)
+    {
+      INFOS("Caught exception.");
+      THROW_SALOME_CORBA_EXCEPTION(ex.what(),SALOME::BAD_PARAM);
+      //return ret;
+    }
+
+  MESSAGE("Machine list length "<<vec.size());
   ret->length(vec.size());
   for(unsigned int i=0;i<vec.size();i++)
     {
@@ -103,16 +214,32 @@ Engines::MachineList *SALOME_ContainerManager::GetFittingResources(const Engines
   return ret;
 }
 
-char* SALOME_ContainerManager::FindBest(const Engines::MachineList& possibleComputers)
-  {
-    string theMachine=_LoadManager.FindBest(possibleComputers);
-    return CORBA::string_dup(theMachine.c_str());
-  }
+//=============================================================================
+/*! 
+ * 
+ */
+//=============================================================================
+
+char*
+SALOME_ContainerManager::
+FindBest(const Engines::MachineList& possibleComputers)
+{
+  string theMachine=_ResManager->FindBest(possibleComputers);
+  return CORBA::string_dup(theMachine.c_str());
+}
+
+//=============================================================================
+/*! 
+ * 
+ */
+//=============================================================================
 
-Engines::Container_ptr SALOME_ContainerManager::FindContainer(const char *containerName,const char *theMachine)
+Engines::Container_ptr
+SALOME_ContainerManager::
+FindContainer(const Engines::MachineParameters& params,
+             const char *theMachine)
 {
-  string containerNameInNS(BuildContainerNameInNS(containerName,theMachine));
-  SCRUTE(containerNameInNS);
+  string containerNameInNS(_NS->BuildContainerNameForNS(params,theMachine));
   CORBA::Object_var obj = _NS->Resolve(containerNameInNS.c_str());
   if( !CORBA::is_nil(obj) )
     return Engines::Container::_narrow(obj);
@@ -120,22 +247,25 @@ Engines::Container_ptr SALOME_ContainerManager::FindContainer(const char *contai
     return Engines::Container::_nil();
 }
 
-Engines::Container_ptr SALOME_ContainerManager::FindContainer(const char *containerName,const Engines::MachineList& possibleComputers)
+//=============================================================================
+/*! 
+ * 
+ */
+//=============================================================================
+
+Engines::Container_ptr
+SALOME_ContainerManager::
+FindContainer(const Engines::MachineParameters& params,
+             const Engines::MachineList& possibleComputers)
 {
+  MESSAGE("FindContainer "<<possibleComputers.length());
   for(unsigned int i=0;i<possibleComputers.length();i++)
     {
-      Engines::Container_ptr cont=FindContainer(containerName,possibleComputers[i]);
+      MESSAGE("FindContainer possible " << possibleComputers[i]);
+      Engines::Container_ptr cont = FindContainer(params,possibleComputers[i]);
       if( !CORBA::is_nil(cont) )
        return cont;
     }
+  MESSAGE("FindContainer: not found");
   return Engines::Container::_nil();
 }
-
-string SALOME_ContainerManager::BuildContainerNameInNS(const char *containerName,const char *machineName)
-{
-  string containerNameInNS("/Containers/");
-  containerNameInNS+=machineName;
-  containerNameInNS+="/";
-  containerNameInNS+=containerName;
-  return containerNameInNS;
-}
index 9293f18814e7624fb78eab6f0b1f758838dec24d..f8311e9f732b09bb55c1a84051272ecdca9d0055 100644 (file)
 
 class SALOME_NamingService;
 
-class SALOME_ContainerManager: public POA_Engines::ContainerManager,
-                              public PortableServer::RefCountServantBase {
-private:
-  SALOME_ResourcesManager _ResManager;
-  SALOME_LoadRateManager _LoadManager;
-  SALOME_NamingService *_NS;
+#if defined CONTAINER_EXPORTS
+#if defined WIN32
+#define CONTAINER_EXPORT __declspec( dllexport )
+#else
+#define CONTAINER_EXPORT
+#endif
+#else
+#if defined WNT
+#define CONTAINER_EXPORT __declspec( dllimport )
+#else
+#define CONTAINER_EXPORT
+#endif
+#endif
+
+class CONTAINER_EXPORT SALOME_ContainerManager:
+  public POA_Engines::ContainerManager,
+  public PortableServer::RefCountServantBase
+{
+
 public:
   SALOME_ContainerManager(CORBA::ORB_ptr orb);
   ~SALOME_ContainerManager();
-  Engines::Container_ptr FindOrStartContainer(const char *containerName, const Engines::MachineList& possibleComputer);
-  Engines::MachineList *GetFittingResources(const Engines::MachineParameters& params, const char *componentName);
+
+  Engines::Container_ptr
+  FindOrStartContainer(const Engines::MachineParameters& params,
+                      const Engines::MachineList& possibleComputer);
+
+  Engines::MachineList *
+  GetFittingResources(const Engines::MachineParameters& params,
+                     const char *componentName);
+
   char* FindBest(const Engines::MachineList& possibleComputers);
+
   void Shutdown();
   void ShutdownContainers();
 
   static const char *_ContainerManagerNameInNS;
+
 private:
-  Engines::Container_ptr FindContainer(const char *containerName,const Engines::MachineList& possibleComputers);
-  Engines::Container_ptr FindContainer(const char *containerName,const char *theMachine);
-  std::string BuildContainerNameInNS(const char *containerName,const char *machineName);
+  Engines::Container_ptr
+  FindContainer(const Engines::MachineParameters& params,
+               const Engines::MachineList& possibleComputers);
+
+  Engines::Container_ptr
+  FindContainer(const Engines::MachineParameters& params,
+               const char *theMachine);
+
+  SALOME_ResourcesManager *_ResManager;
+  SALOME_NamingService *_NS;
 };
 
 #endif
diff --git a/src/Container/SALOME_ContainerManagerServer.cxx b/src/Container/SALOME_ContainerManagerServer.cxx
new file mode 100644 (file)
index 0000000..630c4a6
--- /dev/null
@@ -0,0 +1,45 @@
+#include "SALOME_ContainerManager.hxx"
+#include "SALOMETraceCollector.hxx"
+#include "utilities.h"
+
+int main(int argc, char* argv[])
+{
+  PortableServer::POA_var root_poa;
+  PortableServer::POAManager_var pman;
+  CORBA::Object_var obj;
+
+  CORBA::ORB_var orb = CORBA::ORB_init( argc , argv ) ;
+  //  LocalTraceCollector *myThreadTrace = SALOMETraceCollector::instance(orb);
+  INFOS_COMPILATION;
+  BEGIN_OF(argv[0]);
+  try{ 
+       obj = orb->resolve_initial_references("RootPOA");
+       if(!CORBA::is_nil(obj))
+         root_poa = PortableServer::POA::_narrow(obj);
+       if(!CORBA::is_nil(root_poa))
+         pman = root_poa->the_POAManager();
+      }
+  catch(CORBA::COMM_FAILURE&){
+    MESSAGE( "Container: CORBA::COMM_FAILURE: Unable to contact the Naming Service" );
+  }
+  try{
+    SALOME_ContainerManager *cmServ=new SALOME_ContainerManager(orb);
+    pman->activate();
+    orb->run();
+  }catch(CORBA::SystemException&){
+    MESSAGE("Caught CORBA::SystemException.");
+  }catch(PortableServer::POA::WrongPolicy&){
+    MESSAGE("Caught CORBA::WrongPolicyException.");
+  }catch(PortableServer::POA::ServantAlreadyActive&){
+    MESSAGE("Caught CORBA::ServantAlreadyActiveException");
+  }catch(CORBA::Exception&){
+    MESSAGE("Caught CORBA::Exception.");
+  }catch(std::exception& exc){
+    MESSAGE("Caught std::exception - "<<exc.what()); 
+  }catch(...){
+    MESSAGE("Caught unknown exception.");
+  }
+  END_OF(argv[0]);
+  //  delete myThreadTrace;
+}
+
index d2b30bfa89753151c0c7ce34504d0f547de7d3f9..23ac0195ace0477af9dbb4b8d7e5b19e7096f68e 100755 (executable)
@@ -52,6 +52,7 @@ class SALOME_ContainerPy_i (Engines__POA.Container):
     _orb = None
     _poa = None
     _numInstance = 0
+    _listInstances_map = {}
 
     #-------------------------------------------------------------------------
 
@@ -59,12 +60,14 @@ class SALOME_ContainerPy_i (Engines__POA.Container):
         MESSAGE( "SALOME_ContainerPy_i::__init__" )
         self._orb = orb
         self._poa = poa
-        self._containerName = containerName
-
         myMachine=getShortHostName()
+        Container_path = "/Containers/" + myMachine + "/" + containerName
+        #self._containerName = containerName
+        self._containerName = Container_path
+        print "container name ",self._containerName
+
         naming_service = SALOME_NamingServicePy_i(self._orb)
         self._naming_service = naming_service
-        Container_path = "/Containers/" + myMachine + "/" + self._containerName
         MESSAGE( str(Container_path) )
         naming_service.Register(self._this(), Container_path)
             
@@ -164,11 +167,104 @@ class SALOME_ContainerPy_i (Engines__POA.Container):
         comp_o = comp_i._this()
         return comp_o
     
+    #-------------------------------------------------------------------------
+    
+    def import_component(self, componentName):
+        MESSAGE( "SALOME_Container_i::import_component" )
+        ret=0
+        try:
+            print "try import ",componentName
+            __import__(componentName)
+            print "import ",componentName," successful"
+            ret=1
+        except:
+            import traceback
+            traceback.print_exc()
+            print "import ",componentName," not possible"
+        return ret
+
+    #-------------------------------------------------------------------------
+
+    def load_component_Library(self, componentName):
+        MESSAGE(  "SALOME_ContainerPy_i::load_component_Library " + str(componentName) )
+        ret = 0
+        instanceName = componentName + "_inst_" + `self._numInstance`
+        interfaceName = componentName
+        #the_command = "import " + componentName + "\n"
+        #the_command = the_command + "comp_i = " + componentName + "." + componentName
+        #the_command = the_command + "(self._orb, self._poa, self._this(), self._containerName, instanceName, interfaceName)\n"
+        #MESSAGE( "SALOME_ContainerPy_i::load_component_Library :" + str (the_command) )
+        #exec the_command
+        #comp_o = comp_i._this()
+        #if comp_o is not None:
+        #    ret = 1
+        #else:
+            # --- try to import Python component
+        #    retImpl = self.import_component(componentName)
+        #    if retImpl == 1:
+                #import is possible
+        #        ret = 1
+        #    else:
+                #import isn't possible
+        #        ret = 0
+        #return ret
+        return self.import_component(componentName)
+    
+    #-------------------------------------------------------------------------
+
+    def create_component_instance(self, componentName, studyId):
+        MESSAGE( "SALOME_ContainerPy_i::create_component_instance ==> " + str(componentName) + ' ' + str(studyId) )
+        if studyId < 0:
+            MESSAGE( "Study ID is lower than 0!" )
+            return None
+        else:
+            self._numInstance = self._numInstance +1
+            instanceName = componentName + "_inst_" + `self._numInstance`
+            comp_iors=""
+            try:
+                component=__import__(componentName)
+                factory=getattr(component,componentName)
+                comp_i=factory(self._orb,
+                               self._poa,
+                               self._this(),
+                               self._containerName,
+                               instanceName,
+                               componentName)
+                
+                MESSAGE( "SALOME_Container_i::create_component_instance : OK")
+                comp_o = comp_i._this()
+                self._listInstances_map[instanceName] = comp_i
+            except:
+                import traceback
+                traceback.print_exc()
+                MESSAGE( "SALOME_Container_i::create_component_instance : NOT OK")
+            return comp_o
+
+    #-------------------------------------------------------------------------
+
+    def find_component_instance(self, registeredName, studyId):
+        anEngine = None
+        keysList = self._listInstances_map.keys()
+        i = 0
+        while i < len(keysList):
+            instance = keysList[i]
+            if find(instance,registeredName) == 0:
+                anEngine = self._listInstances_map[instance]
+                if studyId == anEngine.getStudyId():
+                    return anEngine._this()
+            i = i + 1
+        return anEngine._this()
+        
+        
     #-------------------------------------------------------------------------
 
     def remove_impl(self, component):
         MESSAGE( "SALOME_ContainerPy_i::remove_impl" )
-        return None
+        instanceName = component._get_instanceName()
+        MESSAGE( "unload component " + str(instanceName) )
+        self._listInstances_map.remove(instanceName)
+        component.destroy()
+        self._naming_service.Destroy_Name(str(instanceName))
 
     #-------------------------------------------------------------------------
 
@@ -179,17 +275,29 @@ class SALOME_ContainerPy_i (Engines__POA.Container):
     #-------------------------------------------------------------------------
 
     def ping(self):
-        MESSAGE( "SALOME_ContainerPy_i::ping" )
+        MESSAGE( "SALOME_ContainerPy_i::ping() pid " + str(os.getpid()) )
         return None
 
     #-------------------------------------------------------------------------
 
+    def getPID(self):
+        return os.getpid()
+
+    #-------------------------------------------------------------------------
+
     def _get_name(self):
         MESSAGE( "SALOME_ContainerPy_i::_get_name" )
         return self._containerName
 
     #-------------------------------------------------------------------------
 
+    def getHostName(self):
+        MESSAGE( "SALOME_ContainerPy_i::_get_MachineName" )
+        self._machineName = "localhost"
+        return self._machineName
+
+    #-------------------------------------------------------------------------
+    
     def _get_machineName(self):
         MESSAGE( "SALOME_ContainerPy_i::_get_MachineName" )
         self._machineName = "localhost"
index 1f0eb93cc523e7fc83a71cc79063edc8d62354bf..be21173b0f1bb1983902818828fac09539d092c4 100644 (file)
@@ -35,7 +35,9 @@
 #include <iostream>
 #include <signal.h>
 #include <stdlib.h>
+#ifndef WNT
 #include <unistd.h>
+#endif
 #include <sys/types.h>
 #include <omnithread.h>
 #include <map>
 
 class SALOME_NamingService;
 
-class Engines_Container_i: public virtual POA_Engines::Container,
-                          public virtual PortableServer::RefCountServantBase
+
+#if defined CONTAINER_EXPORTS
+#if defined WIN32
+#define CONTAINER_EXPORT __declspec( dllexport )
+#else
+#define CONTAINER_EXPORT
+#endif
+#else
+#if defined WNT
+#define CONTAINER_EXPORT __declspec( dllimport )
+#else
+#define CONTAINER_EXPORT
+#endif
+#endif
+
+class CONTAINER_EXPORT Engines_Container_i:
+  public virtual POA_Engines::Container,
+  public virtual PortableServer::RefCountServantBase
 {
 public:
   Engines_Container_i();
@@ -56,33 +74,66 @@ public:
                      bool isServantAloneInProcess = true);
   virtual ~Engines_Container_i();
 
+  // --- CORBA methods
 
-  //! Load component in current container
-  Engines::Component_ptr load_impl(const char* nameToRegister,
-                                  const char* componentName);
+  virtual bool load_component_Library(const char* componentName);
+
+  virtual Engines::Component_ptr
+  create_component_instance( const char* componentName,
+                            CORBA::Long studyId); // 0 for multiStudy
+
+  Engines::Component_ptr
+  find_component_instance( const char* registeredName,
+                          CORBA::Long studyId); // 0 for multiStudy
+
+  Engines::Component_ptr
+  load_impl(const char* nameToRegister,
+           const char* componentName);
 
-  Engines::Component_ptr instance(const char* nameToRegister,
-                                  const char* componentName);
 
-  //! Unload component from current container
   void remove_impl(Engines::Component_ptr component_i);
   void finalize_removal();
 
+  virtual void ping();
   char* name();
-  char* machineName();
-  void ping();
-  void Shutdown();
+  virtual void Shutdown();
+  char* getHostName();
+  CORBA::Long getPID();
   //! Kill current container
   bool Kill_impl() ;
 
-  char* getHostName();
-  CORBA::Long getPID();
+  //Engines::Component_ptr instance(const char* nameToRegister,
+  //                              const char* componentName);
+
+  // --- local C++ methods
+
+  Engines::Component_ptr
+  find_or_create_instance( std::string genericRegisterName,
+                          std::string componentLibraryName);
+
+  Engines::Component_ptr
+  createInstance(std::string genericRegisterName,
+                void *handle,
+                int studyId);
+
   static bool isPythonContainer(const char* ContainerName);
+  static void decInstanceCnt(std::string genericRegisterName);
+  //??? char* machineName();
+
+  // --- needed for parallel components, Numerical Platon
+
+  int getArgc() { return _argc; }
+  char **getArgv() { return _argv; }
 
-  static std::string BuildContainerNameForNS(const char *ContainerName, const char *hostname);
-  static const char *_defaultContainerName;
 protected:
 
+  static std::map<std::string, int> _cntInstances_map;
+  static std::map<std::string, void *> _library_map; // library names, loaded
+  static std::map<std::string, void *> _toRemove_map;// library names to remove
+  static omni_mutex _numInstanceMutex ; // lib and instance protection
+
+  bool _isSupervContainer;
+
   SALOME_NamingService *_NS ;
   std::string _library_path;
   std::string _containerName;
@@ -90,16 +141,12 @@ protected:
   PortableServer::POA_var _poa;
   PortableServer::ObjectId * _id ;
   int _numInstance ;
-  std::map<std::string, void *> handle_map ;
-  std::map<std::string, void *> remove_map ;
-  omni_mutex _numInstanceMutex ; // if several threads on the same object
-
-  //private: 
+  std::map<std::string,Engines::Component_var> _listInstances_map;
 
-  int   _argc ;
+  int    _argc ;
   char** _argv ;
-  long _pid;
-  bool _isServantAloneInProcess;
+  long   _pid;
+  bool   _isServantAloneInProcess;
 };
 
 #endif
index 7ba1a085f17d6cb7bd6f98add0a20812a3f3762f..d0ed574a65720689d0310996be465f0bca1003f5 100644 (file)
@@ -50,11 +50,10 @@ LIB_SRC = \
 # in fact client is a test ! So it may go away BIN !
 BIN = SALOME_DataTypeCatalog_Server SALOME_DataTypeCatalog_Client
 BIN_SRC = 
-BIN_SERVER_IDL = SALOME_DataTypeCatalog.idl
+BIN_SERVER_IDL = SALOME_DataTypeCatalog.idl SALOME_Exception.idl
 
 CPPFLAGS+= $(QT_MT_INCLUDES) 
 CXXFLAGS+= 
 LDFLAGS+= $(QT_MT_LIBS) $(OGL_LIBS) -lSalomeNS -lOpUtil -lSALOMELocalTrace
-LDFLAGSFORBIN= $(LDFLAGS) -lSALOMETraceCollector
-
+LDFLAGSFORBIN+= -lSalomeNS -lOpUtil -lSALOMELocalTrace -lSALOMEBasics
 @CONCLUDE@
index 580d16b5c537990178ce2b94a63829f2246172f7..81008bcc697b7c5ebc30dbd45228c3aec88cda65 100644 (file)
@@ -26,7 +26,7 @@
 
 /* $Header$ */
 
-#include <iostream.h>
+#include <iostream>
 #include "SALOME_NamingService.hxx"
 #include "SALOME_DataTypeCatalog.hh"
 #include <string>
index 78d08de307cfade863cd541fdcb14247b92deee6..77b06a5b851afbbffcc14b33401100c1fa874929 100644 (file)
 #include <string>
 #include <vector>
 
-class SALOME_DataTypeCatalog_Handler : public QXmlDefaultHandler 
+#if defined DATATYPECATALOG_EXPORTS
+#if defined WIN32
+#define DATATYPECATALOG_EXPORT __declspec( dllexport )
+#else
+#define DATATYPECATALOG_EXPORT
+#endif
+#else
+#if defined WNT
+#define DATATYPECATALOG_EXPORT __declspec( dllimport )
+#else
+#define DATATYPECATALOG_EXPORT
+#endif
+#endif
+
+class DATATYPECATALOG_EXPORT SALOME_DataTypeCatalog_Handler : public QXmlDefaultHandler 
 {
 public:
   //! standard constructor
index d7982916387bc649f68447b8d3df53512fb0f717..72712de82449fadc6a106780ede929eb6ba7b521 100644 (file)
@@ -26,7 +26,7 @@
 //  Module : SALOME
 //  $Header$
 
-#include <iostream.h>
+#include <iostream>
 #include "SALOME_NamingService.hxx"
 #include "SALOME_DataTypeCatalog_impl.hxx"
 #include "utilities.h"
@@ -38,7 +38,7 @@ int main(int argc,char **argv)
 {
   // initialize the ORB
   CORBA::ORB_ptr orb = CORBA::ORB_init (argc, argv);
-  SALOMETraceCollector *myThreadTrace = SALOMETraceCollector::instance(orb);
+  //  LocalTraceCollector *myThreadTrace = SALOMETraceCollector::instance(orb);
   try 
     {
       CosNaming::NamingContext_var _rootContext, catalogContext;
@@ -71,7 +71,11 @@ int main(int argc,char **argv)
       for (int i = 1; i<=NumberOfTries; i++)
        {
          if (i!=1) 
+#ifndef WNT
            a=nanosleep(&ts_req,&ts_rem);
+#else
+           Sleep(TIMESleep/1000000);
+#endif
          try
            { 
              obj = orb->resolve_initial_references("RootPOA");
@@ -83,9 +87,9 @@ int main(int argc,char **argv)
                theObj = orb->resolve_initial_references("NameService");
              if (!CORBA::is_nil(theObj))
                inc = CosNaming::NamingContext::_narrow(theObj);}
-         catch( CORBA::COMM_FAILURE& )
+         catch( CORBA::SystemException& )
            {
-             MESSAGE( "Data Type Catalog: CORBA::COMM_FAILURE: Unable to contact the Naming Service" );
+             MESSAGE( "Data Type Catalog: CORBA::SystemException: Unable to contact the Naming Service" );
            }
          if(!CORBA::is_nil(inc))
            {
@@ -98,7 +102,11 @@ int main(int argc,char **argv)
                  for(int j=1; j<=NumberOfTries; j++)
                    {
                      if (j!=1) 
+#ifndef WNT
                        a=nanosleep(&ts_req, &ts_rem);
+#else
+                       Sleep(TIMESleep/1000000);
+#endif
                      try
                        {
                          object = inc->resolve(name);
@@ -155,6 +163,6 @@ int main(int argc,char **argv)
     INFOS("Caught CORBA::Exception.")
       }
 
-  delete myThreadTrace;
+  //  delete myThreadTrace;
   return 0;
 }
index cb5337e674b5090a4889c827a797b73f908ebf08..13f3584f2fb97bb1ede4df71ae32562d861f144c 100644 (file)
@@ -310,7 +310,11 @@ SALOME_DataTypeCatalogImpl::_verify_data_type(ListOfParserDataType datatypelist)
 
    // Parse if parents data type name of a data type are defined in the 
    // datatype catalog
+#ifndef WNT
   for (unsigned int ind = 0; ind < _datatype_list.size(); ind++)
+#else
+  for (ind = 0; ind < _datatype_list.size(); ind++)
+#endif
     {
       // Scrute data type parents
       // MESSAGE("Treatment of " << _datatype_list[ind].Parserdata_name);
index 97c67ba40c592a0281cada317e12b95ab5413a64..6b662f6b286068e005a2a947188093fdb9bc385f 100644 (file)
 #include <SALOMEconfig.h>
 #include CORBA_SERVER_HEADER(SALOME_DataTypeCatalog)
 
-class SALOME_DataTypeCatalogImpl: public POA_SALOME_DataTypeCatalog::DataCatalog,
+#if defined DATATYPECATALOG_EXPORTS
+#if defined WIN32
+#define DATATYPECATALOG_EXPORT __declspec( dllexport )
+#else
+#define DATATYPECATALOG_EXPORT
+#endif
+#else
+#if defined WNT
+#define DATATYPECATALOG_EXPORT __declspec( dllimport )
+#else
+#define DATATYPECATALOG_EXPORT
+#endif
+#endif
+
+class DATATYPECATALOG_EXPORT SALOME_DataTypeCatalogImpl: public POA_SALOME_DataTypeCatalog::DataCatalog,
                                  public PortableServer::RefCountServantBase 
 {
 public:
index e5281e72b77a5fb4d4a210b9bdad789df3e660b8..90b7ac39f1bca1704be18f7595823ad81bab033c 100644 (file)
@@ -41,7 +41,11 @@ GenericObj_i::GenericObj_i(PortableServer::POA_ptr thePOA): myRefCounter(1){
     MESSAGE("GenericObj_i::GenericObj_i() - this = "<<this<<
            "; CORBA::is_nil(thePOA) = "<<CORBA::is_nil(thePOA));
   if(CORBA::is_nil(thePOA))
+#ifndef WNT
     myPOA = PortableServer::RefCountServantBase::_default_POA();
+#else
+    myPOA = RefCountServantBase::_default_POA();
+#endif
   else
     myPOA = PortableServer::POA::_duplicate(thePOA);
 }
index 715b0a98a2a71684d782e691406e2abbbebb5f72..550f8e33428b6d4b55ccd7cf7257ddb149f6841c 100644 (file)
 #include "SALOMEconfig.h"
 #include CORBA_SERVER_HEADER(SALOME_GenericObj)
 
+#if defined GENERICOBJ_EXPORTS
+#if defined WIN32
+#define GENERICOBJ_EXPORT __declspec( dllexport )
+#else
+#define GENERICOBJ_EXPORT
+#endif
+#else
+#if defined WNT
+#define GENERICOBJ_EXPORT __declspec( dllimport )
+#else
+#define GENERICOBJ_EXPORT
+#endif
+#endif
+
 namespace SALOME{
-  class GenericObj_i : 
+  class GENERICOBJ_EXPORT GenericObj_i : 
     public virtual POA_SALOME::GenericObj,
     public virtual PortableServer::RefCountServantBase
   {
index e5719df68a24a96f0b3fbff3dc08140f3f52cd73..54577e068aa526121294237f31a6b79e80be638a 100644 (file)
 #include <string.h>
 #include <fcntl.h>
 #include <stdio.h>
+
+#ifdef WNT
+#include <io.h>
+#include <time.h>
+#endif
+
 using namespace std;
 
 bool CreateAttributeFromASCII(HDFinternalObject *father, FILE* fp);
@@ -289,7 +295,11 @@ void SaveDatasetInASCIIfile(HDFdataset *hdf_dataset, FILE* fp, int ident)
   
   fprintf(fp, "\n");
 
+#ifndef WNT
   for(unsigned j=0; j<nbAttr; j++) {
+#else
+  for(j=0; j<nbAttr; j++) {
+#endif
     name = hdf_dataset->GetAttributeName(j);
     HDFattribute *hdf_attribute = new HDFattribute(name, hdf_dataset);
     delete name;
@@ -506,8 +516,10 @@ bool CreateDatasetFromASCII(HDFcontainerObject *father, FILE *fp)
   fscanf(fp, "%i\n", &nbDim);
 
   hdf_size* sizeArray = new hdf_size[nbDim];
+  int dim = 0;
   for(i = 0; i<nbDim; i++) {
-    fscanf(fp, "%i\n", &(sizeArray[i]));
+    fscanf(fp, "%i\n", &dim);
+    sizeArray[i] = dim;
   }
  
   HDFdataset* hdf_dataset = new HDFdataset(new_name, father,type, sizeArray, nbDim);
@@ -642,13 +654,19 @@ char* GetTmpDir()
 
   TCollection_AsciiString aTmpDir;
 
-#ifdef WIN32
-  aTmpDir = TCollection_AsciiString("C:\\");
+#ifdef WNT
+  char *aTmp;
+  aTmp = getenv("TMP");
+  if(aTmp != NULL)
+       aTmpDir = TCollection_AsciiString(aTmp);
+  else
+       aTmpDir = TCollection_AsciiString("C:\\");
 #else
   aTmpDir = TCollection_AsciiString("/tmp/");
 #endif
 
   srand((unsigned int)time(NULL));
+
   int aRND = 999 + (int)(100000.0*rand()/(RAND_MAX+1.0)); //Get a random number to present a name of a sub directory
   TCollection_AsciiString aSubDir(aRND);
   if(aSubDir.Length() <= 1) aSubDir = TCollection_AsciiString("123409876");
index 5ae7e584672948443456991549c6ae88d2548b4c..4ae3f17484859722f8f5edd624d51462574cd2a1 100644 (file)
 #ifndef __HDFascii_H__
 #define __HDFascii_H__
 
+#include <Standard_Macro.hxx>
 
 
-
-class HDFascii                                
+class Standard_EXPORT HDFascii                                
 {
 public:
  
index b95bef33cdfc75b701f8f80fbf33e87083201a8f..efc1fd9ed690145328b093709c6cb5ecab8710e7 100644 (file)
@@ -33,8 +33,9 @@ extern "C"
 }
 #include "HDFobject.hxx"
 #include "HDFinternalObject.hxx"
+#include <Standard_Macro.hxx>
 
-class HDFcontainerObject : public HDFinternalObject
+class Standard_EXPORT HDFcontainerObject : public HDFinternalObject
 { 
 private :
   HDFinternalObject *_firstson;
index 0249c933ae5a763c30b2bdcf2be8095746a40d7f..c2e11ba1ca89c4fece8634bc24d5508a813ccfb3 100644 (file)
 #include "HDFconvert.hxx"
 using namespace std;
 
+#ifdef WNT
+#include <io.h>
+#include <windows.h>
+#endif
+
 int HDFConvert::FromAscii(const string& file, const HDFcontainerObject & hdf_container, const string& nomdataset)
 {
   
@@ -43,7 +48,7 @@ int HDFConvert::FromAscii(const string& file, const HDFcontainerObject & hdf_con
     return -1;
   };
   
-  // Lit l'état du fichier
+  // Lit l'\89tat du fichier
   if ( fstat(fd,&status) < 0) {
     perror("HDFConvert::FromAscii");
     return -1;
@@ -54,12 +59,25 @@ int HDFConvert::FromAscii(const string& file, const HDFcontainerObject & hdf_con
   
 #ifdef _POSIX_MAPPED_FILES
   
-  // Map le fichier en mémoire
+  // Map le fichier en m\89moire
   if ( (buffer = (char *)  mmap(0,length,PROT_READ,MAP_SHARED,fd,0)) == MAP_FAILED ) {
     perror("HDFConvert::FromAscii");
     return -1;
   };
-  
+#elif defined WNT
+
+#define SHMEMSIZE 4096
+
+  HANDLE hMapObject = CreateFileMapping( 
+           INVALID_HANDLE_VALUE, NULL, PAGE_READWRITE, 0, SHMEMSIZE, "");
+  if (hMapObject != NULL) {
+  // Get a pointer to the file-mapped shared memory.
+  buffer = ( char* ) MapViewOfFile( 
+    hMapObject, FILE_MAP_WRITE, 0, 0, 0 );
+  if( buffer == NULL )
+    CloseHandle(hMapObject);
+  };
+
 #else
 
   // Sort de la compilation
@@ -69,7 +87,7 @@ int HDFConvert::FromAscii(const string& file, const HDFcontainerObject & hdf_con
   
   // Creation du Dataset utilisateur 
   hdf_dataset = new HDFdataset( (char *) nomdataset.c_str(),            /*discard const */
-                                            (HDFcontainerObject*) &hdf_container,   /*discard const, pas de constructeur par référence */
+                                            (HDFcontainerObject*) &hdf_container,   /*discard const, pas de constructeur par r\89f\89rence */
                                             HDF_STRING,
                                             &length_long,1);
   // Cree le Dataset sur le disk
index 42628a1c8bf43d07772bcf865cc0a4a10db61bfa..772fbcf70a64175f42fb76a11dbbf5bb4db38b99 100644 (file)
 extern "C"
 {
 #include "HDFtypes.h"
+#ifndef WNT
 #include <unistd.h>
 #include <sys/mman.h>
+#else
+#endif
 #include <stdio.h>
 #include <errno.h>
 #include <sys/types.h>
index ac02e32dbc2687bd0a1c096d159b2f16a59b9004..84a2f5ae633eb0cf75e0f30a7570f6039a9812b9 100644 (file)
@@ -33,7 +33,7 @@ extern "C"
 #include "HDFcontainerObject.hxx"
 #include "HDFexception.hxx"
 
-#include <iostream.h>
+#include <iostream>
 using namespace std;
 
 herr_t dataset_attr(hid_t loc_id, const char *attr_name, void *operator_data)
index 58afc6510d54233015d2b0d4aabecdcf99459cd2..b1e076903688c9ea8c3707be497b8d8a41e779b7 100644 (file)
@@ -33,8 +33,9 @@ extern "C"
 }
 #include "HDFinternalObject.hxx"
 #include "HDFcontainerObject.hxx"
+#include <Standard_Macro.hxx>
 
-class HDFdataset : public HDFinternalObject
+class Standard_EXPORT HDFdataset : public HDFinternalObject
 {
 private :
   HDFcontainerObject *_father;
index 07dbefdd9dd64d1e0e5ac3e3503fcb31859cba90..e3727a812ffa0e81f5d43f052070a9e0aef9275b 100644 (file)
@@ -44,7 +44,7 @@ hdf_err HDFdatasetWrite(hdf_idt id, void *val)
   hdf_err ret;
 #ifdef PCLINUX
   int isI32BE = 0;
-  int size;
+  int size = 0;
 #endif
 
   if ((datatype = H5Dget_type(id)) < 0)
@@ -53,10 +53,21 @@ hdf_err HDFdatasetWrite(hdf_idt id, void *val)
 #ifdef PCLINUX
   if((H5Tget_class(datatype) == H5T_INTEGER) && (H5Tget_size(datatype) == 4)) {
     isI32BE = 1; /* See HDFdatasetCreate */
-    size = (int)HDFdatasetGetSize(id) / 4;
+
+    /*SRN : bug IPAL9619:  replaced the method of getting the size of INT32 dataset */ 
+    int i, ndim = HDFdatasetGetnDim(id);
+    if(ndim < 0) return -1;
+    
+    hdf_size *dim = (hdf_size *) malloc(sizeof(hdf_size)*ndim);
+    if ((ret == HDFdatasetGetDim(id, dim)) < 0)  return -1;
+       
+    for(i=0; i<ndim; i++) size+=dim[i];    
+    free(dim);
+    /*SRN : end of the fix */
+    
     if(size == 0) 
       return -1;
-    if(H5Tconvert(H5T_NATIVE_INT, H5T_STD_I32BE, size, (void *)val, NULL, NULL) < 0) 
+    if(H5Tconvert(H5T_NATIVE_INT, H5T_STD_I32BE, size, (void *)val, NULL, (hid_t)0) < 0) 
       return -1;
   }
 #endif
@@ -65,7 +76,7 @@ hdf_err HDFdatasetWrite(hdf_idt id, void *val)
     return -1;
 
 #ifdef PCLINUX
-  if (isI32BE && (H5Tconvert(H5T_STD_I32BE, H5T_NATIVE_INT, size, (void *)val, NULL, NULL) < 0)) 
+  if (isI32BE && (H5Tconvert(H5T_STD_I32BE, H5T_NATIVE_INT, size, (void *)val, NULL, (hid_t)0) < 0)) 
     return -1;
 #endif
 
index 9fbe7d70d005b21d1ec720ab0386fba59e6860f8..02ed93f1f664c082067f7f840913af27ca2e72e8 100644 (file)
 extern "C"
 {
 #include "hdfi.h"
+#ifndef WNT
 #include <unistd.h>
+#else
+#include <io.h>
+#define F_OK 0
+#endif
 #include <string.h>
 }
-#include <iostream.h>
+#include <iostream>
 #include "HDFfile.hxx"
 #include "HDFexception.hxx"
 using namespace std;
index 4194fdbbeb7616d3e749f5910b3a59bfdd3440ff..83bec3d33104483e6f305a2bc2770caa35dc5e96 100644 (file)
@@ -32,8 +32,9 @@ extern "C"
 #include "HDFtypes.h"
 }
 #include "HDFcontainerObject.hxx"
+#include <Standard_Macro.hxx>
 
-class HDFfile : public HDFcontainerObject
+class Standard_EXPORT HDFfile : public HDFcontainerObject
 {
 private :
   hdf_access_mode _access_mode;
index cca0584488adc5016dc8cc66b05d0b25147728dd..eaf93aab6fb917543c9e3bfafc18cddb64f6f5d1 100644 (file)
@@ -32,8 +32,9 @@ extern "C"
 #include "HDFtypes.h"
 }
 #include "HDFcontainerObject.hxx"
+#include <Standard_Macro.hxx>
 
-class HDFgroup : public HDFcontainerObject
+class Standard_EXPORT HDFgroup : public HDFcontainerObject
 {
 private :
   HDFcontainerObject *_father;
index 7ef6fb8e7267fbad8b31af80c2d497313ec5e5c3..a1b9486438d90d382bb0a3c07709a17d5b198af0 100644 (file)
@@ -29,7 +29,9 @@ extern "C"
 #include "hdfi.h"
 }
 #include "HDFinternalObject.hxx"
+#ifndef WNT
 using namespace std;
+#endif
 
 HDFinternalObject::HDFinternalObject(char *name)
   : HDFobject(name)
index 5e4acb81cae5bff67bbf89d0ec1322958ca36994..7aa0eb3483c303e0f13094661b768c6caadaaff1 100644 (file)
@@ -32,8 +32,9 @@ extern "C"
 #include "HDFtypes.h"
 }
 #include "HDFobject.hxx"
+#include <Standard_Macro.hxx>
 
-class HDFinternalObject : public HDFobject
+class Standard_EXPORT HDFinternalObject : public HDFobject
 {
 private :
   HDFinternalObject *_previousbrother;
index e9264713076e68752af417cf07017f461128d3c2..9d74c271f1bbf4428a9a9e3a3e5a86607803eab9 100644 (file)
@@ -31,8 +31,9 @@ extern "C"
 {
 #include "HDFtypes.h"
 }
+#include <Standard_Macro.hxx>
 
-class HDFobject {
+class Standard_EXPORT HDFobject {
 protected :
   char *_name;
   hdf_idt _id;
diff --git a/src/KERNEL_PY/Help.py b/src/KERNEL_PY/Help.py
new file mode 100755 (executable)
index 0000000..404ee4d
--- /dev/null
@@ -0,0 +1,141 @@
+#  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
+#  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
+# 
+#  This library is free software; you can redistribute it and/or 
+#  modify it under the terms of the GNU Lesser General Public 
+#  License as published by the Free Software Foundation; either 
+#  version 2.1 of the License. 
+# 
+#  This library is distributed in the hope that it will be useful, 
+#  but WITHOUT ANY WARRANTY; without even the implied warranty of 
+#  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
+#  Lesser General Public License for more details. 
+# 
+#  You should have received a copy of the GNU Lesser General Public 
+#  License along with this library; if not, write to the Free Software 
+#  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
+# 
+#  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
+#
+#
+#
+#  File   : Help.py
+#  Author : Paul RASCLE, EDF
+#  Module : SALOME
+#  $Header$
+
+class SalomeDoc:
+    def __init__(self, aDoc):
+        self.doc = aDoc
+    def __repr__(self):
+        print self.doc
+        return "---"
+    def salome(self):
+        doc_salome = '''
+MODULE : salome
+---------------
+module salome gives access to Salome ressources:
+variables:
+
+  salome:orb             : CORBA
+  salome.naming_service  : instance of naming Service class
+      methods:
+          Resolve(name)  : find a CORBA object (ior) by its pathname
+          Register(name) : register a CORBA object under a pathname
+  salome.lcc             : instance of lifeCycleCORBA class
+      methods:
+          FindOrLoadComponent(server,name) :
+                           obtain an Engine (CORBA object)
+                           or launch the Engine if not found,
+                           with a Server name and an Engine name
+  salome.sg
+      methods:
+         updateObjBrowser(bool):
+         getActiveStudyId():
+         getActiveStudyName():
+         
+         SelectedCount():      returns number of selected objects
+         getSelected(i):       returns entry of selected object number i
+         getAllSelected():     returns list of entry of selected objects
+         AddIObject(Entry):    select an existing Interactive object
+         RemoveIObject(Entry): remove object from selection
+         ClearIObjects():      clear selection
+         
+         Display(*Entry):
+         DisplayOnly(Entry):
+         Erase(Entry):
+         DisplayAll():
+         EraseAll():
+
+         IDToObject(Entry):    returns CORBA reference from entry
+
+  salome.myStudyName     : active Study Name
+  salome.myStudyId       : active Study Id
+  salome.myStudy         : the active Study itself (CORBA ior)
+                           methods : defined in SALOMEDS.idl
+                                                         
+methods:
+  salome.DumpStudy(study) : Dump a study, given the ior
+---
+'''
+        print doc_salome
+        
+    def geompy(self):
+        doc_geompy = '''
+MODULE : geompy
+---------------
+module geompy provides an encapsulation of GEOM Engine methods
+variables:
+  geompy.geom               : a Geometry Engine, found or loaded
+                              at first import of module geompy.
+                              methods : defined in GEOM_Gen.idl
+  geompy.myBuilder          : a study builder
+  geompy.father             : GEOM root in current study (salome.myStudy)
+
+methods:
+  addToStudy(aShape, aName) : add the shape into the current study
+  --- all methods of GEOM_Gen.idl that returns a shape are encapsulated,
+      with the same interface : shapes are named with their ior
+'''
+        print doc_geompy
+        
+    def supervision(self):
+        doc_supervision = '''
+MODULES : SALOME_SuperVisionEditor and SALOME_SuperVisionExecutor
+-----------------------------------------------------------------
+this modules provide access to Editor and Executor Engine methods
+
+See SUPERV.idl
+
+In order to run the example (supervisionexample.py)
+
+    Type : from supervisionexample import *
+           supervisionexample.py contains comments
+
+A new python example avoids references to LifeCycleCORBA
+                     avoids references to NamingService
+                     avoids references to ModuleCatalog
+                     avoids SuperVisionComponent creation
+                     allows G.Input(...) instead of AddInput(G,...)
+                     replaces Editor/Executor with Graph
+                     allows Nodes, Ports and Links CORBA objects
+                     shortens methods names
+                     ...
+
+    See /SuperVisionTest/resources/GraphExample.py
+                                   and GraphExample.xml
+---
+'''
+        print doc_supervision
+        
+    
+
+help = SalomeDoc('''
+Availables modules:
+  salome      : gives access to Salome ressources
+  geompy      : encapsulation of GEOM Engine methods
+  supervision : gives access to SuperVision Engine
+To obtain specific help on a module "truc", type: help.truc()
+To run an example, type: import example3
+''')
+  
diff --git a/src/KERNEL_PY/Makefile.in b/src/KERNEL_PY/Makefile.in
new file mode 100755 (executable)
index 0000000..0f9b896
--- /dev/null
@@ -0,0 +1,38 @@
+#  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
+#  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
+# 
+#  This library is free software; you can redistribute it and/or 
+#  modify it under the terms of the GNU Lesser General Public 
+#  License as published by the Free Software Foundation; either 
+#  version 2.1 of the License. 
+# 
+#  This library is distributed in the hope that it will be useful, 
+#  but WITHOUT ANY WARRANTY; without even the implied warranty of 
+#  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
+#  Lesser General Public License for more details. 
+# 
+#  You should have received a copy of the GNU Lesser General Public 
+#  License along with this library; if not, write to the Free Software 
+#  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
+# 
+#  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
+#
+#
+#
+#  File   : Makefile.in
+#  Author : Sergey RUIN, OCC
+#  Module : SALOME
+
+top_srcdir=@top_srcdir@
+top_builddir=../..
+srcdir=@srcdir@
+VPATH=.:@srcdir@:@top_srcdir@/idl
+
+
+@COMMENCE@
+
+EXPORT_PYSCRIPTS = Help.py PyInterp.py salome.py salome_shared_modules.py batchmode_salome.py import_hook.py salome_test.py salome_kernel.py salome_study.py salome_iapp.py salome_ComponentGUI.py
+
+EXPORT_SHAREDPYSCRIPTS=kernel_shared_modules.py
+
+@CONCLUDE@
diff --git a/src/KERNEL_PY/PyInterp.py b/src/KERNEL_PY/PyInterp.py
new file mode 100755 (executable)
index 0000000..4831016
--- /dev/null
@@ -0,0 +1,101 @@
+#  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
+#  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
+# 
+#  This library is free software; you can redistribute it and/or 
+#  modify it under the terms of the GNU Lesser General Public 
+#  License as published by the Free Software Foundation; either 
+#  version 2.1 of the License. 
+# 
+#  This library is distributed in the hope that it will be useful, 
+#  but WITHOUT ANY WARRANTY; without even the implied warranty of 
+#  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
+#  Lesser General Public License for more details. 
+# 
+#  You should have received a copy of the GNU Lesser General Public 
+#  License along with this library; if not, write to the Free Software 
+#  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
+# 
+#  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
+#
+#
+#
+#  File   : PyInterp.py
+#  Author : Paul RASCLE, EDF
+#  Module : SALOME
+#  $Header$
+
+import sys
+from omniORB import CORBA
+from LifeCycleCORBA import *
+from libSALOME_Swig import *
+import SALOMEDS
+from SALOME_NamingServicePy import *
+
+    #--------------------------------------------------------------------------
+
+def DumpComponent(Study, SO, offset):
+    it = Study.NewChildIterator(SO)
+    Builder = Study.NewBuilder()
+    while it.More():
+        CSO = it.Value()
+        it.Next()
+        anAttr = Builder.FindOrCreateAttribute(CSO, "AttributeName")
+        AtName = anAttr._narrow(SALOMEDS.AttributeName)
+        t_name = AtName.Value()
+        if t_name[0] == 1:
+            ofs = 1
+            a = ""
+            while ofs <= offset:
+                a = a + "--"
+                ofs = ofs +1
+            print a + ">" + CSO.GetID() + " " + t_name[1]
+        t_RefSO = CSO.ReferencedObject()
+        if t_RefSO[0] == 1:
+            RefSO = t_RefSO[1]
+            ofs = 1
+            a = ""
+            while ofs <= offset:
+                a = a + "  "
+                ofs = ofs +1
+            print a + ">" + RefSO.GetID()
+        DumpComponent(Study, CSO, offset+2)
+
+    #--------------------------------------------------------------------------
+
+def DumpStudy(Study):
+    itcomp = Study.NewComponentIterator()
+    while itcomp.More():
+        SC = itcomp.Value()
+        itcomp.Next()
+        name = SC.ComponentDataType()
+        print "-> ComponentDataType is " + name
+        DumpComponent(Study, SC, 1)
+        
+
+    #--------------------------------------------------------------------------
+
+# initialise the ORB
+orb = CORBA.ORB_init([''], CORBA.ORB_ID)
+
+# create an LifeCycleCORBA instance
+lcc = LifeCycleCORBA(orb)
+
+# create an SALOMEGUI_Swig instance
+sg = SALOMEGUI_Swig()
+
+#create an naming service instance
+naming_service = SALOME_NamingServicePy_i(orb)
+
+# get active study name and id
+myStudyName = sg.getActiveStudyName()
+print myStudyName
+
+myStudyId = sg.getActiveStudyId()
+print myStudyId
+
+# get Study Manager reference
+obj = naming_service.Resolve('myStudyManager')
+myStudyManager = obj._narrow(SALOMEDS.StudyManager)
+
+# get active study
+myStudy = myStudyManager.GetStudyByName(myStudyName)
diff --git a/src/KERNEL_PY/batchmode_salome.py b/src/KERNEL_PY/batchmode_salome.py
new file mode 100755 (executable)
index 0000000..abd099f
--- /dev/null
@@ -0,0 +1,270 @@
+#  Copyright (C) 2003  CEA/DEN, EDF R&D
+#
+#
+#
+#  File   : batchmode_salome.py
+#  Module : SALOME
+
+import salome_shared_modules
+
+from omniORB import CORBA
+from LifeCycleCORBA import *
+import SALOME
+import SALOMEDS
+from SALOME_NamingServicePy import *
+
+#--------------------------------------------------------------------------
+
+def ImportComponentGUI(ComponentName):
+    libName = "lib" + ComponentName + "_Swig"
+    command = "from " + libName + " import *"
+    exec ( command )
+    constructor = ComponentName + "GUI_Swig()"
+    command = "gui = " + constructor
+    exec ( command )
+    return gui
+
+    #--------------------------------------------------------------------------
+
+def SalomeGUIgetAllSelected(self):
+    selNumber = self.SelectedCount()
+    listSelected = []
+    for i in range(selNumber):
+        listSelected.append(self.getSelected(i))
+    return listSelected
+    #--------------------------------------------------------------------------
+
+def generateName(prefix = None):
+    import whrandom;
+    int = whrandom.randint(1,1000);
+    if prefix is None:
+        return "Study" + str(int)
+    else :
+        return prefix + str(int)
+
+#WITHOUTIHMfrom libSALOME_Swig import *
+###from SalomePyQt import *
+#WITHOUTIHMclass SalomeGUI(SALOMEGUI_Swig):
+    #WITHOUTIHMgetAllSelected = SalomeGUIgetAllSelected
+   
+    #WITHOUTIHMdef getDesktop(self) :
+#      return SalomePyQt.getDesktop()
+       #WITHOUTIHMreturn None
+
+    #WITHOUTIHMdef getSelection(self) :
+#      return SalomePyQt.getSelection()
+       #WITHOUTIHMreturn None
+
+    #--------------------------------------------------------------------------
+
+def IDToObject(id):
+    myObj = None
+    mySO = myStudy.FindObjectID(id);
+    if mySO is not None:
+        ok, anAttr = mySO.FindAttribute("AttributeIOR")
+        if ok:
+            AtIOR = anAttr._narrow(SALOMEDS.AttributeIOR)
+            if AtIOR.Value() != "":
+                myObj = orb.string_to_object(AtIOR.Value())
+    return myObj
+
+def ObjectToSObject(obj):
+    mySO = None
+    if obj is not None:
+        ior =  orb.object_to_string(obj)
+        if ior != "":
+            mySO = myStudy.FindObjectIOR(ior)
+    return mySO
+
+def ObjectToID(obj):
+    mySO = ObjectToSObject(obj)
+    if mySO:
+        return mySO.GetID()
+    return ""
+
+def IDToSObject(id):
+    mySO = myStudy.FindObjectID(id);
+    return mySO
+
+    #--------------------------------------------------------------------------
+
+def PersistentPresentation(theStudy, theSO, theWithID):
+    # put the sobject's content (with subchildren) to the string
+    aResult = ""
+    attrs = theSO.GetAllAttributes()
+    aLen = len(attrs)
+    anUncopied = 0
+    for a in range(0,aLen):
+        attr = attrs[a]
+        if isinstance(attr,SALOMEDS._objref_AttributeTreeNode):
+            anUncopied += 1
+        elif isinstance(attr,SALOMEDS._objref_AttributeTarget):
+            anUncopied += 1
+        elif isinstance(attr,SALOMEDS._objref_AttributeReal) or \
+             isinstance(attr,SALOMEDS._objref_AttributeInteger) or \
+             isinstance(attr,SALOMEDS._objref_AttributeName) or \
+             isinstance(attr,SALOMEDS._objref_AttributeComment) or \
+             isinstance(attr,SALOMEDS._objref_AttributePersistentRef) or \
+             isinstance(attr,SALOMEDS._objref_AttributeLocalID) or \
+             isinstance(attr,SALOMEDS._objref_AttributeUserID):
+            aResult += " attribute value: " + str(attr.Value())
+        elif isinstance(attr,SALOMEDS._objref_AttributeIOR):
+            aResult += " attribute: IOR"
+        elif isinstance(attr,SALOMEDS._objref_AttributeSequenceOfReal) or \
+             isinstance(attr,SALOMEDS._objref_AttributeSequenceOfInteger):
+            aResult += " Sequence: " + str(attr.CorbaSequence())
+        elif isinstance(attr,SALOMEDS._objref_AttributeDrawable):
+            aResult += " Drawable: " + str(attr.IsDrawable())
+        elif isinstance(attr,SALOMEDS._objref_AttributeSelectable):
+            aResult += " Selectable: " + str(attr.IsSelectable())
+        elif isinstance(attr,SALOMEDS._objref_AttributeExpandable):
+            aResult += " Expandable: " + str(attr.IsExpandable())
+        elif isinstance(attr,SALOMEDS._objref_AttributeOpened):
+            aResult += " Opened: " + str(attr.IsOpened())
+        elif isinstance(attr,SALOMEDS._objref_AttributeTextColor):
+            aResult += " TextColor: " + str(attr.TextColor())
+        elif isinstance(attr,SALOMEDS._objref_AttributeTextHighlightColor):
+            aResult += " TextHighlightColor: " + str(attr.TextHighlightColor())
+        elif isinstance(attr,SALOMEDS._objref_AttributePixMap):
+            aResult += " PixMap: " + str(attr.GetPixMap())
+        elif isinstance(attr,SALOMEDS._objref_AttributeTableOfInteger) or \
+             isinstance(attr,SALOMEDS._objref_AttributeTableOfReal):
+            aResult += " Table with title: " + attr.GetTitle()
+        elif isinstance(attr,SALOMEDS._objref_AttributePythonObject):
+            aResult += " PythonObject: " + attr.GetObject()
+
+    if theWithID:
+        aResult = "sobject: " + theSO.GetID() + " nbattrs: " + str(aLen - anUncopied) + aResult + '\n'
+    else:
+        aResult = " nbattrs: " + str(aLen - anUncopied) + aResult + '\n'
+    anIter = theStudy.NewChildIterator(theSO)
+    while anIter.More():
+        aResult += PersistentPresentation(theStudy, anIter.Value(), theWithID)
+        anIter.Next()
+    return aResult
+
+    #--------------------------------------------------------------------------
+
+def GetTree(theSO):
+    # returns the document list tree (as list)
+    aResult = [theSO.GetID()]
+    anIter = myStudy.NewChildIterator(theSO)
+    while anIter.More():
+        aResult += GetTree(anIter.Value())
+        anIter.Next()
+    return aResult
+
+    #--------------------------------------------------------------------------
+
+def CheckCopyPaste(theSO, theInfo ,theComponentPaste):
+    aRoot = theSO
+    while aRoot.GetID() != "0:":
+        aRoot = aRoot.GetFather()
+    aTree = GetTree(aRoot)
+    aStudyPersist = PersistentPresentation(myStudy, aRoot, 1)
+
+    if not myStudyManager.CanCopy(theSO):
+        raise RuntimeError, "<CanCopy> for "+theInfo+" returns false"
+    
+    if not myStudyManager.Copy(theSO):
+        raise RuntimeError, "<Copy> for "+theInfo+" returns false"
+
+    
+    if not myStudyManager.CanPaste(theSO):
+        raise RuntimeError, "<CanPaste> for "+theInfo+" returns false"
+
+    # check: before paste study is not changed check
+    if aStudyPersist != PersistentPresentation(myStudy, aRoot, 1):
+        raise RuntimeError, "Study is changed before Paste calling for "+theInfo
+    
+    aSObj = theSO
+    if theComponentPaste:
+        aSObj = theSO.GetFatherComponent()
+        theInfo = theInfo + "(paste for component)"
+    if myStudyManager.Paste(aSObj) == None:
+        raise RuntimeError, "<Paste> for "+theInfo+" returns None object"
+    aNewTree = GetTree(aRoot)
+    aLen = len(aTree)
+    for a in range(0,aLen):
+        if aTree[a] != aNewTree[a]:
+            return myStudy.FindObjectID(aNewTree[a])
+        
+    if aLen < len(aNewTree):
+        return myStudy.FindObjectID(aNewTree[aLen])
+    
+    raise RuntimeError, "After Copy calling the tree is not changed"
+    
+    #--------------------------------------------------------------------------
+def FindFileInDataDir(filename):
+    import os
+    datadir = os.getenv("DATA_DIR")
+    if datadir is not None:
+        import string
+        dirs = string.split(datadir, ":")
+        for dir in dirs:
+            file = dir + "/" + filename
+            if os.path.exists(file):
+                return file;
+    datadir = os.getenv("KERNEL_ROOT_DIR") + "/examples/"
+    file = datadir + filename
+    if os.path.exists(file):
+        return file;
+
+    return None
+        
+#--------------------------------------------------------------------------
+# initialise the ORB
+orb = None
+
+step = 0
+while step < 100 and orb is None:
+    orb = CORBA.ORB_init([''], CORBA.ORB_ID)
+    step = step + 1
+    time.sleep(4)
+
+if orb is None:
+    print "Warning: ORB has not been initialized !!!"
+
+# create an LifeCycleCORBA instance
+lcc = LifeCycleCORBA(orb)
+
+step = 0
+while step < 100 and lcc is None:
+    lcc = LifeCycleCORBA(orb)
+    step = step + 1
+    time.sleep(4)
+    
+if lcc is None:
+    print "Warning: LifeCycleCORBA object has not been initialized !!!"
+    
+#create a naming service instance
+naming_service = SALOME_NamingServicePy_i(orb)
+
+# get Study Manager reference
+obj = None
+
+step = 0
+while step < 100 and obj == None:
+    obj = naming_service.Resolve('myStudyManager')
+    step = step + 1
+    time.sleep(4)
+     
+myStudyManager = obj._narrow(SALOMEDS.StudyManager)
+
+if myStudyManager is None:
+    print "Warning: SALOMEDS.StudyManager has not been created !!!"
+
+# create new study
+aListOfOpenStudies = myStudyManager.GetOpenStudies();
+myStudy = None;
+if len(aListOfOpenStudies) == 0 :
+    myStudy = myStudyManager.NewStudy("Study1")
+else:
+    myStudyName = aListOfOpenStudies[0]
+    myStudy = myStudyManager.GetStudyByName(myStudyName)
+    
+myStudyName = myStudy._get_Name()
+
+myStudyId = myStudy._get_StudyId()
+print myStudyId
+
diff --git a/src/KERNEL_PY/import_hook.py b/src/KERNEL_PY/import_hook.py
new file mode 100755 (executable)
index 0000000..79725c6
--- /dev/null
@@ -0,0 +1,109 @@
+"""
+This module replaces the standard import mechanism with one
+that filters some imports that can't be done more than once.
+
+This is related to the multi study feature that is implemented
+by using the Python multi interpreter feature.
+Some modules register objects or classes by calling modules
+implemented in C. These operations can't be done multiple times.
+So it's very important to control these imports.
+
+Examples:
+  - PyQt : import qt calls a C module to register classes
+  - OmniORB : import *_idl calls a C module to register CORBA interfaces
+
+Usage:
+  - First import the module : import import_hook. This module will
+    replace the original importer mechanism
+
+  - Next register the module names or pattern names to filter out::
+     import_hook.register_name("a")
+     import_hook.register_pattern(pattern)
+
+    where pattern is a function with one parameter, the module name
+    to be imported, that returns true or false depending if this module is
+    to be filtered or not.
+
+  - Then it's done
+
+IMPORTANT : Every subinterpretor has its own import_hook module. import_hook is not shared among subinterpretors.
+The mechanism only works if shared_imported and pattern are shared between all subinterpretors.
+This is done by calling init_shared_modules().
+  
+"""
+import sys, imp, __builtin__
+
+# Keep in shared_imported a copy of dictionnary modules
+# that need to be imported only once in multi-study context
+shared_imported={}
+
+# patterns contains functions that returns 1 or 0 depending if 
+# the module name (argument) must be filtered out or not
+# These functions are added by calling register_pattern
+patterns=[]
+
+original_import=__builtin__.__import__
+
+def register_name(name):
+    if shared_imported.has_key(name):return
+    shared_imported[name]=None
+
+def register_pattern(pattern):
+    patterns.append(pattern)
+
+def is_shared(name):
+    if shared_imported.has_key(name):return 1
+    for pattern in patterns:
+        if pattern(name) : return 1
+    return 0
+
+def get_shared_imported(name):
+    return shared_imported.get(name)
+
+def set_shared_imported(name,module):
+    shared_imported[name]=module
+    #print "Module %s shared registered" % name,module
+
+def get_shared_imported_with_copy(name):
+    module_dict= shared_imported.get(name)
+    m=imp.new_module(name)
+    m.__dict__.update(module_dict)
+    return m
+def set_shared_imported_with_copy(name,module):
+    shared_imported[name]=module.__dict__.copy()
+    #print "Module %s shared registered" % name
+
+def import_hook(name, globals=None, locals=None, fromlist=None):
+    #print "import_hook",name,fromlist
+    module=get_shared_imported(name)
+    if module:
+       sys.modules[name]=module
+       return module
+
+    module= original_import(name, globals, locals, fromlist)
+
+    if is_shared(name):
+       set_shared_imported(name,module)
+    return module
+
+original_reload=__builtin__.reload
+
+def reload_hook(module):
+    if is_shared(module.__name__):
+       return module
+    return original_reload(module)
+
+__builtin__.__import__=import_hook
+# Reload is not replaced 
+#__builtin__.reload=reload_hook
+
+def init_shared_modules(shared_module):
+    global shared_imported, patterns
+    shared_imported=shared_module.shared_imported
+    patterns=       shared_module.patterns
+    for k,v in shared_imported.items():
+       if v is not None:sys.modules[k]=v
+    shared_imported["salome_shared_modules"]=shared_module
+    import salome_shared_modules
+    for m in salome_shared_modules.list_modules:
+        m.init_shared_modules()
diff --git a/src/KERNEL_PY/kernel_shared_modules.py b/src/KERNEL_PY/kernel_shared_modules.py
new file mode 100755 (executable)
index 0000000..5be2f15
--- /dev/null
@@ -0,0 +1,112 @@
+"""
+
+"""
+import import_hook
+
+import glob,os,sys,string,imp
+
+from import_hook import register_name
+from import_hook import register_pattern
+
+register_name("qt")
+register_name("libSALOME_LifeCycleCORBA")
+register_pattern(lambda(x):x.endswith("_idl"))
+register_pattern(lambda(x):x.endswith("_Swig"))
+
+register_name("CORBA")
+import CORBA
+
+register_name("omniORB")
+import omniORB
+
+register_name("CosNaming")
+import CosNaming
+
+# Modify omniORB to use right sys.modules dictionnary 
+# with multi-interpreter feature
+# openModule and newModule are functions of omniORB/__init__.py module
+# modified to register modules to share
+# Function to return a Python module for the required IDL module name
+def openModule(mname, fname=None):
+    # Salome modification start
+    import sys
+    # Salome modification end
+
+    if mname == "CORBA":
+        mod = sys.modules["omniORB.CORBA"]
+    elif sys.modules.has_key(mname):
+        mod = sys.modules[mname]
+    else:
+        mod = newModule(mname)
+
+    # Salome modification start
+    import_hook.set_shared_imported(mname,mod)
+    # Salome modification end
+
+
+    if not hasattr(mod, "__doc__") or mod.__doc__ is None:
+        mod.__doc__ = "omniORB IDL module " + mname + "\n\n" + \
+                      "Generated from:\n\n"
+
+    if fname is not None:
+        mod.__doc__ = mod.__doc__ + "  " + fname + "\n"
+
+    return mod
+
+# Function to create a new module, and any parent modules which do not
+# already exist
+def newModule(mname):
+    # Salome modification start
+    import sys
+    # Salome modification end
+
+    mlist   = string.split(mname, ".")
+    current = ""
+    mod     = None
+
+    for name in mlist:
+        current = current + name
+
+        if sys.modules.has_key(current):
+            mod = sys.modules[current]
+        else:
+            newmod = imp.new_module(current)
+            if mod: setattr(mod, name, newmod)
+            sys.modules[current] = mod = newmod
+
+        current = current + "."
+
+    return mod
+# Replace openModule and newModule by modified ones
+# to take into account the sys.modules that matches
+# the right one (multi-interpreter feature)
+omniORB.openModule=openModule
+omniORB.newModule=newModule
+
+# BE CAREFUL
+# Engines, SALOME, SALOMEDS must be imported in that order because :
+# Engines imports SALOME_Component_idl
+# SALOME imports SALOME_Session_idl and SALOME_Exception_idl which imports SALOME_Component_idl
+# and SALOMEDS imports SALOMEDS_idl and SALOMEDS_Attributes_idl which imports SALOME_Exception_idl
+# If SALOME is imported before Engines, that module would not be completely imported
+import Engines
+import SALOME
+import SALOMEDS
+import SALOME_ModuleCatalog
+
+def init_shared_modules():
+   """
+      This function initializes shared modules that need to be
+   """
+   # EDF-CCAR:
+   # Problem with omniORB : omniORB creates a C Python module named  _omnipy
+   # this module has sub-modules : omni_func, ...
+   # _omnipy is quite a package but import with Python sub-interpreters does not seem to work
+   # To make it work we need to add those sub-modules in sys.modules
+   import sys
+   import _omnipy
+   sys.modules["_omnipy.omni_func"]=_omnipy.omni_func
+   sys.modules["_omnipy.poa_func"]=_omnipy.poa_func
+   sys.modules["_omnipy.poamanager_func"]=_omnipy.poamanager_func
+   sys.modules["_omnipy.orb_func"]=_omnipy.orb_func
+
diff --git a/src/KERNEL_PY/salome.py b/src/KERNEL_PY/salome.py
new file mode 100755 (executable)
index 0000000..e8d5d5b
--- /dev/null
@@ -0,0 +1,63 @@
+#  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
+#  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
+# 
+#  This library is free software; you can redistribute it and/or 
+#  modify it under the terms of the GNU Lesser General Public 
+#  License as published by the Free Software Foundation; either 
+#  version 2.1 of the License. 
+# 
+#  This library is distributed in the hope that it will be useful, 
+#  but WITHOUT ANY WARRANTY; without even the implied warranty of 
+#  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
+#  Lesser General Public License for more details. 
+# 
+#  You should have received a copy of the GNU Lesser General Public 
+#  License along with this library; if not, write to the Free Software 
+#  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
+# 
+#  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
+#
+#
+#
+#  File   : salome.py
+#  Author : Paul RASCLE, EDF
+#  Module : SALOME
+#  $Header$
+
+from salome_kernel import *
+from salome_study import *
+from salome_iapp import *
+
+salome_initial=1
+def salome_init(theStudyId=0):
+    """
+    Performs only once SALOME general purpose intialisation for scripts.
+    optional argument : theStudyId
+      When in embedded interpreter inside IAPP, theStudyId is not used
+      When used without GUI (external interpreter)
+        0      : create a new study (default).
+        n (>0) : try connection to study with Id = n, or create a new one
+                 if study not found.
+                 If study creation, its Id may be different from theStudyId !
+    Provides:
+    orb             reference to CORBA
+    lcc             a LifeCycleCorba instance
+    naming_service  a naming service instance
+    cm              reference to the container manager
+    sg              access to SALOME GUI (when linked with IAPP GUI)
+    myStudyManager  the study manager
+    myStudyId       active study identifier
+    myStudy         active study itself (CORBA reference)
+    myStudyName     active study name
+    """
+    global salome_initial
+    global orb, lcc, naming_service, cm
+    global sg
+    global myStudyManager, myStudyId, myStudy, myStudyName
+    
+    if salome_initial:
+        salome_initial=0
+        sg = salome_iapp_init()
+        orb, lcc, naming_service, cm = salome_kernel_init()
+        myStudyManager, myStudyId, myStudy, myStudyName =salome_study_init(theStudyId)
+
diff --git a/src/KERNEL_PY/salome_ComponentGUI.py b/src/KERNEL_PY/salome_ComponentGUI.py
new file mode 100644 (file)
index 0000000..617c882
--- /dev/null
@@ -0,0 +1,56 @@
+#  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
+#  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
+# 
+#  This library is free software; you can redistribute it and/or 
+#  modify it under the terms of the GNU Lesser General Public 
+#  License as published by the Free Software Foundation; either 
+#  version 2.1 of the License. 
+# 
+#  This library is distributed in the hope that it will be useful, 
+#  but WITHOUT ANY WARRANTY; without even the implied warranty of 
+#  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
+#  Lesser General Public License for more details. 
+# 
+#  You should have received a copy of the GNU Lesser General Public 
+#  License along with this library; if not, write to the Free Software 
+#  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
+# 
+#  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
+#
+#
+#
+#  File   : salome.py
+#  Author : Paul RASCLE, EDF
+#  Module : SALOME
+#  $Header$
+
+
+# to replace some function from <MODULE>_SWIG, outside GUI
+
+# --- From GeometryGUI_SWIG
+
+    #--------------------------------------------------------------------------
+
+def getIndexTopology(aSubId, aMainId):
+    return 0
+
+    #--------------------------------------------------------------------------
+
+def getShapeTypeString(aSubId):
+    return "SubShape"
+
+    #--------------------------------------------------------------------------
+
+# --- From SMESHGUI_SWIG
+
+    #--------------------------------------------------------------------------
+
+def Init(studyId):
+    return
+
+    #--------------------------------------------------------------------------
+
+def SetName(objId, name):
+    return
+
+    #--------------------------------------------------------------------------
diff --git a/src/KERNEL_PY/salome_iapp.py b/src/KERNEL_PY/salome_iapp.py
new file mode 100644 (file)
index 0000000..e6ebcaf
--- /dev/null
@@ -0,0 +1,74 @@
+#  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
+#  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
+# 
+#  This library is free software; you can redistribute it and/or 
+#  modify it under the terms of the GNU Lesser General Public 
+#  License as published by the Free Software Foundation; either 
+#  version 2.1 of the License. 
+# 
+#  This library is distributed in the hope that it will be useful, 
+#  but WITHOUT ANY WARRANTY; without even the implied warranty of 
+#  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
+#  Lesser General Public License for more details. 
+# 
+#  You should have received a copy of the GNU Lesser General Public 
+#  License along with this library; if not, write to the Free Software 
+#  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
+# 
+#  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
+#
+#
+#
+#  File   : salome_iapp.py
+#  Author : Paul RASCLE, EDF
+#  Module : SALOME
+#  $Header$
+
+import salome_ComponentGUI
+
+    #--------------------------------------------------------------------------
+
+IN_SALOME_GUI=0
+
+def ImportComponentGUI(ComponentName):
+    if IN_SALOME_GUI:
+        libName = "lib" + ComponentName + "_Swig"
+        command = "from " + libName + " import *"
+        exec ( command )
+        constructor = ComponentName + "_Swig()"
+        command = "gui = " + constructor
+        exec ( command )
+        return gui
+    else:
+        print "Warning: ImportComponentGUI(",ComponentName,") outside GUI !"
+        print "calls to GUI methods may crash..."
+        return salome_ComponentGUI
+
+    #--------------------------------------------------------------------------
+
+def SalomeGUIgetAllSelected(self):
+    selNumber = self.SelectedCount()
+    listSelected = []
+    for i in range(selNumber):
+        listSelected.append(self.getSelected(i))
+    return listSelected
+
+    #--------------------------------------------------------------------------
+
+salome_iapp_initial = 1
+
+def salome_iapp_init():
+    global salome_iapp_initial
+    global sg,IN_SALOME_GUI
+
+    if salome_iapp_initial:
+        salome_iapp_initial=0
+        import libSALOME_Swig
+        
+        class SalomeGUI(libSALOME_Swig.SALOMEGUI_Swig):
+            getAllSelected = SalomeGUIgetAllSelected
+
+        # create a SALOMEGUI_Swig instance
+        sg = SalomeGUI()
+        IN_SALOME_GUI = sg.hasDesktop()
+    return sg
diff --git a/src/KERNEL_PY/salome_kernel.py b/src/KERNEL_PY/salome_kernel.py
new file mode 100644 (file)
index 0000000..40fe9e1
--- /dev/null
@@ -0,0 +1,55 @@
+#  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
+#  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
+# 
+#  This library is free software; you can redistribute it and/or 
+#  modify it under the terms of the GNU Lesser General Public 
+#  License as published by the Free Software Foundation; either 
+#  version 2.1 of the License. 
+# 
+#  This library is distributed in the hope that it will be useful, 
+#  but WITHOUT ANY WARRANTY; without even the implied warranty of 
+#  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
+#  Lesser General Public License for more details. 
+# 
+#  You should have received a copy of the GNU Lesser General Public 
+#  License along with this library; if not, write to the Free Software 
+#  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
+# 
+#  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
+#
+#
+#
+#  File   : salome_kernel.py
+#  Author : Paul RASCLE, EDF
+#  Module : SALOME
+#  $Header$
+
+from omniORB import CORBA
+from LifeCycleCORBA import *
+from SALOME_NamingServicePy import *
+from SALOME_utilities import *
+import Engines
+
+salome_kernel_initial=1
+
+def salome_kernel_init():
+    global salome_kernel_initial
+    global orb, lcc, naming_service, cm
+    
+    if salome_kernel_initial:
+        salome_kernel_initial = 0
+        
+        # initialise the ORB
+        orb = CORBA.ORB_init([''], CORBA.ORB_ID)
+
+        # create a LifeCycleCORBA instance
+        lcc = LifeCycleCORBA(orb)
+
+        #create a naming service instance
+        naming_service = SALOME_NamingServicePy_i(orb)
+
+        # get Container Manager
+        obj = naming_service.Resolve('/ContainerManager')
+        cm = obj._narrow(Engines.ContainerManager)
+
+    return orb, lcc, naming_service, cm
diff --git a/src/KERNEL_PY/salome_shared_modules.py b/src/KERNEL_PY/salome_shared_modules.py
new file mode 100755 (executable)
index 0000000..f746809
--- /dev/null
@@ -0,0 +1,92 @@
+#  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
+#  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
+# 
+#  This library is free software; you can redistribute it and/or 
+#  modify it under the terms of the GNU Lesser General Public 
+#  License as published by the Free Software Foundation; either 
+#  version 2.1 of the License. 
+# 
+#  This library is distributed in the hope that it will be useful, 
+#  but WITHOUT ANY WARRANTY; without even the implied warranty of 
+#  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
+#  Lesser General Public License for more details. 
+# 
+#  You should have received a copy of the GNU Lesser General Public 
+#  License along with this library; if not, write to the Free Software 
+#  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
+# 
+#  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
+#
+#
+#
+#  File   : salome_shared_modules.py
+#  Module : SALOME
+
+from SALOME_utilities import *
+
+"""
+This module with help of import_hook and *_shared_modules
+filters imports when using the embedded Python interpretor.
+
+Some imports can't be done more than once.
+This is related to the multi study feature that is implemented
+by using the Python multi interpreter feature.
+Some modules register objects or classes by calling modules
+implemented in C. These operations can't be done multiple times.
+So it's very important to control these imports.
+
+Examples:
+  - PyQt : import qt calls a C module to register classes
+  - OmniORB : import *_idl calls a C module to register CORBA interfaces
+
+Usage:
+  - First : the module salome_shared_modules is imported by main Python interpretor.
+    It will keep a dictionnary and a list that are shared among all
+    the subinterpretors and imports import_hook module that replaces
+    the standard import mechanism par one that prevents more than one import
+    for some modules identified by name (call register_name) or by a 
+    validator (call register_pattern).
+
+  Calls to register_name and register_pattern are done in modules named *_shared_modules
+  that could be found in the path SALOMEPATH
+
+"""
+import glob,os,sys
+
+import import_hook
+# shared_imported, patterns, register_name, register_pattern
+# will be shared by all Python sub interpretors
+from import_hook import shared_imported
+from import_hook import patterns
+from import_hook import register_name
+from import_hook import register_pattern
+
+register_name("salome_shared_modules")
+
+# Get the SALOMEPATH if set or else use KERNEL_ROOT_DIR that should be set.
+salome_path=os.environ.get("SALOMEPATH",os.getenv("KERNEL_ROOT_DIR"))
+
+list_modules=[]
+
+# Import all *_shared_modules in the path and store them in list_modules
+path=salome_path.split(":")
+for rep in path:
+    # Import all *_shared_modules in rep
+    for f in glob.glob(os.path.join(rep,"lib","python"+sys.version[:3],"site-packages","salome","shared_modules","*_shared_modules.py")):
+        try:
+           name=os.path.splitext(os.path.basename(f))[0]
+           register_name(name)
+           m=__import__(name)
+           list_modules.append(m)
+        except:
+           pass
+
+# 
+# If shared modules have been imported before installing import mechanism
+# we add them to shared_imported
+#
+for name,module in sys.modules.items():
+    if import_hook.is_shared(name) and shared_imported.get(name) is None:
+       #print "Module shared added to shared_imported: ",name
+       shared_imported[name]=module
+
diff --git a/src/KERNEL_PY/salome_study.py b/src/KERNEL_PY/salome_study.py
new file mode 100644 (file)
index 0000000..f643e84
--- /dev/null
@@ -0,0 +1,323 @@
+#  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
+#  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
+# 
+#  This library is free software; you can redistribute it and/or 
+#  modify it under the terms of the GNU Lesser General Public 
+#  License as published by the Free Software Foundation; either 
+#  version 2.1 of the License. 
+# 
+#  This library is distributed in the hope that it will be useful, 
+#  but WITHOUT ANY WARRANTY; without even the implied warranty of 
+#  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
+#  Lesser General Public License for more details. 
+# 
+#  You should have received a copy of the GNU Lesser General Public 
+#  License along with this library; if not, write to the Free Software 
+#  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
+# 
+#  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
+#
+#
+#
+#  File   : salome_study.py
+#  Author : Paul RASCLE, EDF
+#  Module : SALOME
+#  $Header$
+
+import salome_kernel
+import SALOMEDS
+import salome_iapp
+
+#--------------------------------------------------------------------------
+
+def DumpComponent(Study, SO, offset):
+    it = Study.NewChildIterator(SO)
+    Builder = Study.NewBuilder()
+    while it.More():
+        CSO = it.Value()
+        it.Next()
+        anAttr = Builder.FindOrCreateAttribute(CSO, "AttributeName")
+        AtName = anAttr._narrow(SALOMEDS.AttributeName)
+        t_name = AtName.Value()
+        if t_name[0] == 1:
+            ofs = 1
+            a = ""
+            while ofs <= offset:
+                a = a + "--"
+                ofs = ofs +1
+            MESSAGE( a + ">" + str(CSO.GetID()) + " " + str(t_name[1]) )
+        t_RefSO = CSO.ReferencedObject()
+        if t_RefSO[0] == 1:
+            RefSO = t_RefSO[1]
+            ofs = 1
+            a = ""
+            while ofs <= offset:
+                a = a + "  "
+                ofs = ofs +1
+            MESSAGE( a + ">" + str(RefSO.GetID()) )
+        DumpComponent(Study, CSO, offset+2)
+
+    #--------------------------------------------------------------------------
+
+def DumpStudy(Study):
+    itcomp = Study.NewComponentIterator()
+    while itcomp.More():
+        SC = itcomp.Value()
+        itcomp.Next()
+        name = SC.ComponentDataType()
+        MESSAGE( "-> ComponentDataType is " + name )
+        DumpComponent(Study, SC, 1)
+        
+
+    #--------------------------------------------------------------------------
+
+def IDToObject(id):
+    myObj = None
+    mySO = myStudy.FindObjectID(id);
+    if mySO is not None:
+        ok, anAttr = mySO.FindAttribute("AttributeIOR")
+        if ok:
+            AtIOR = anAttr._narrow(SALOMEDS.AttributeIOR)
+            if AtIOR.Value() != "":
+                myObj = orb.string_to_object(AtIOR.Value())
+    return myObj
+
+def ObjectToSObject(obj):
+    mySO = None
+    if obj is not None:
+        ior =  orb.object_to_string(obj)
+        if ior != "":
+            mySO = myStudy.FindObjectIOR(ior)
+    return mySO
+
+def ObjectToID(obj):
+    mySO = ObjectToSObject(obj)
+    if mySO:
+        return mySO.GetID()
+    return ""
+
+def IDToSObject(id):
+    mySO = myStudy.FindObjectID(id);
+    return mySO
+
+    #--------------------------------------------------------------------------
+
+def generateName(prefix = None):
+    import whrandom;
+    int = whrandom.randint(1,1000);
+    if prefix is None:
+        return "Study" + str(int)
+    else :
+        return prefix + str(int)
+
+    #--------------------------------------------------------------------------
+
+def PersistentPresentation(theStudy, theSO, theWithID):
+    # put the sobject's content (with subchildren) to the string
+    aResult = ""
+    attrs = theSO.GetAllAttributes()
+    aLen = len(attrs)
+    anUncopied = 0
+    for a in range(0,aLen):
+        attr = attrs[a]
+        if isinstance(attr,SALOMEDS._objref_AttributeTreeNode):
+            anUncopied += 1
+        elif isinstance(attr,SALOMEDS._objref_AttributeTarget):
+            anUncopied += 1
+        elif isinstance(attr,SALOMEDS._objref_AttributeReal) or \
+             isinstance(attr,SALOMEDS._objref_AttributeInteger) or \
+             isinstance(attr,SALOMEDS._objref_AttributeName) or \
+             isinstance(attr,SALOMEDS._objref_AttributeComment) or \
+             isinstance(attr,SALOMEDS._objref_AttributePersistentRef) or \
+             isinstance(attr,SALOMEDS._objref_AttributeLocalID) or \
+             isinstance(attr,SALOMEDS._objref_AttributeUserID):
+            aResult += " attribute value: " + str(attr.Value())
+        elif isinstance(attr,SALOMEDS._objref_AttributeIOR):
+            aResult += " attribute: IOR"
+        elif isinstance(attr,SALOMEDS._objref_AttributeSequenceOfReal) or \
+             isinstance(attr,SALOMEDS._objref_AttributeSequenceOfInteger):
+            aResult += " Sequence: " + str(attr.CorbaSequence())
+        elif isinstance(attr,SALOMEDS._objref_AttributeDrawable):
+            aResult += " Drawable: " + str(attr.IsDrawable())
+        elif isinstance(attr,SALOMEDS._objref_AttributeSelectable):
+            aResult += " Selectable: " + str(attr.IsSelectable())
+        elif isinstance(attr,SALOMEDS._objref_AttributeExpandable):
+            aResult += " Expandable: " + str(attr.IsExpandable())
+        elif isinstance(attr,SALOMEDS._objref_AttributeOpened):
+            aResult += " Opened: " + str(attr.IsOpened())
+        elif isinstance(attr,SALOMEDS._objref_AttributeTextColor):
+            aResult += " TextColor: " + str(attr.TextColor())
+        elif isinstance(attr,SALOMEDS._objref_AttributeTextHighlightColor):
+            aResult += " TextHighlightColor: " + str(attr.TextHighlightColor())
+        elif isinstance(attr,SALOMEDS._objref_AttributePixMap):
+            aResult += " PixMap: " + str(attr.GetPixMap())
+        elif isinstance(attr,SALOMEDS._objref_AttributeTableOfInteger) or \
+             isinstance(attr,SALOMEDS._objref_AttributeTableOfReal):
+            aResult += " Table with title: " + attr.GetTitle()
+        elif isinstance(attr,SALOMEDS._objref_AttributePythonObject):
+            aResult += " PythonObject: " + attr.GetObject()
+
+    if theWithID:
+        aResult = "sobject: " + theSO.GetID() + " nbattrs: " + str(aLen - anUncopied) + aResult + '\n'
+    else:
+        aResult = " nbattrs: " + str(aLen - anUncopied) + aResult + '\n'
+    anIter = theStudy.NewChildIterator(theSO)
+    while anIter.More():
+        aResult += PersistentPresentation(theStudy, anIter.Value(), theWithID)
+        anIter.Next()
+    return aResult
+
+    #--------------------------------------------------------------------------
+
+def GetTree(theSO):
+    # returns the document list tree (as list)
+    aResult = [theSO.GetID()]
+    anIter = myStudy.NewChildIterator(theSO)
+    while anIter.More():
+        aResult += GetTree(anIter.Value())
+        anIter.Next()
+    return aResult
+
+    #--------------------------------------------------------------------------
+
+def CheckCopyPaste(theSO, theInfo ,theComponentPaste):
+    aRoot = theSO
+    while aRoot.GetID() != "0:":
+        aRoot = aRoot.GetFather()
+    aTree = GetTree(aRoot)
+    aStudyPersist = PersistentPresentation(myStudy, aRoot, 1)
+
+    if not myStudyManager.CanCopy(theSO):
+        raise RuntimeError, "<CanCopy> for "+theInfo+" returns false"
+    
+    if not myStudyManager.Copy(theSO):
+        raise RuntimeError, "<Copy> for "+theInfo+" returns false"
+
+    
+    if not myStudyManager.CanPaste(theSO):
+        raise RuntimeError, "<CanPaste> for "+theInfo+" returns false"
+
+    # check: before paste study is not changed check
+    if aStudyPersist != PersistentPresentation(myStudy, aRoot, 1):
+        raise RuntimeError, "Study is changed before Paste calling for "+theInfo
+    
+    aSObj = theSO
+    if theComponentPaste:
+        aSObj = theSO.GetFatherComponent()
+        theInfo = theInfo + "(paste for component)"
+    if myStudyManager.Paste(aSObj) == None:
+        raise RuntimeError, "<Paste> for "+theInfo+" returns None object"
+    aNewTree = GetTree(aRoot)
+    aLen = len(aTree)
+    for a in range(0,aLen):
+        if aTree[a] != aNewTree[a]:
+            return myStudy.FindObjectID(aNewTree[a])
+        
+    if aLen < len(aNewTree):
+        return myStudy.FindObjectID(aNewTree[aLen])
+    
+    raise RuntimeError, "After Copy calling the tree is not changed"
+    
+    #--------------------------------------------------------------------------
+
+def FindFileInDataDir(filename):
+    import os
+    datadir = os.getenv("DATA_DIR")
+    if datadir is not None:
+        import string
+        dirs = string.split(datadir, ":")
+        for dir in dirs:
+            file = dir + "/" + filename
+            if os.path.exists(file):
+                return file;
+    datadir = os.getenv("KERNEL_ROOT_DIR") + "/examples/"
+    file = datadir + filename
+    if os.path.exists(file):
+        return file;
+
+    return None
+
+    #--------------------------------------------------------------------------
+
+salome_study_ID = -1
+
+def getActiveStudy(theStudyId=0):
+    global salome_study_ID
+    
+    print "getActiveStudy"
+    sg = salome_iapp.salome_iapp_init()
+    if salome_study_ID == -1:
+        if sg.hasDesktop():
+            print "---in gui"
+            salome_study_ID = sg.getActiveStudyId()
+        else:
+            print "---outside gui"
+            if theStudyId:
+                aStudy=myStudyManager.GetStudyByID(theStudyId)
+                if aStudy:
+                    print "connection to existing study ", theStudyId
+                    salome_study_ID = theStudyId
+            if salome_study_ID == -1:
+                salome_study_ID = createNewStudy()
+            print"--- Study Id ", salome_study_ID
+    return salome_study_ID
+    
+    #--------------------------------------------------------------------------
+
+def createNewStudy():
+    print "createNewStudy"
+    i=1
+    aStudyName = "noName"
+    nameAlreadyInUse = 1
+    listOfOpenStudies = myStudyManager.GetOpenStudies()
+    print listOfOpenStudies
+    while nameAlreadyInUse:
+        aStudyName = "extStudy_%d"%i
+        if aStudyName not in listOfOpenStudies:
+            nameAlreadyInUse=0
+        else:
+            i = i+1
+
+    theStudy = myStudyManager.NewStudy(aStudyName)
+    theStudyId = theStudy._get_StudyId()
+    print aStudyName, theStudyId
+    return theStudyId
+
+    #--------------------------------------------------------------------------
+
+salome_study_initial = 1
+
+def salome_study_init(theStudyId=0):
+    """
+    Performs only once study creation or connection.
+    optional argument : theStudyId
+      When in embedded interpreter inside IAPP, theStudyId is not used
+      When used without GUI (external interpreter)
+        0      : create a new study (default).
+        n (>0) : try connection to study with Id = n, or create a new one
+                 if study not found.
+    """
+    
+    global salome_study_initial
+    global myStudyManager, myStudyId, myStudy, myStudyName
+    global orb, lcc, naming_service, cm
+    
+    if salome_study_initial:
+        salome_study_initial = 0
+        
+        orb, lcc, naming_service, cm = salome_kernel.salome_kernel_init()
+        
+        # get Study Manager reference
+        print "looking for studyManager ..."
+        obj = naming_service.Resolve('myStudyManager')
+        myStudyManager = obj._narrow(SALOMEDS.StudyManager)
+        print "studyManager found"
+
+        # get active study Id, ref and name
+        myStudyId = getActiveStudy(theStudyId)
+        print "myStudyId",myStudyId
+        myStudy = myStudyManager.GetStudyByID(myStudyId)
+        myStudyName = myStudy._get_Name()
+
+    return myStudyManager, myStudyId, myStudy, myStudyName
+
diff --git a/src/KERNEL_PY/salome_test.py b/src/KERNEL_PY/salome_test.py
new file mode 100755 (executable)
index 0000000..a1e63a6
--- /dev/null
@@ -0,0 +1,486 @@
+#  SALOME SALOME_SWIG : binding of C++ implementation and Python
+#
+#  Copyright (C) 2003  CEA/DEN, EDF R&D
+#
+#
+#
+#  File   : salome_test.py
+#  Module : SALOME
+
+print "Test the application loading  GEOM, SMESH, VISU, MED, components and doing some"
+print "operation within the components."
+
+import salome
+from salome import sg
+import SALOMEDS
+import os
+
+import SALOME_ModuleCatalog
+
+print "======================================================================"
+print "           Get Catalog "
+print "======================================================================"
+obj = salome.naming_service.Resolve('Kernel/ModulCatalog')
+catalog = obj._narrow(SALOME_ModuleCatalog.ModuleCatalog)
+
+print "======================================================================"
+print "           Create Study "
+print "======================================================================"
+
+comp = catalog.GetComponent("GEOM")
+if comp is None:
+       raise RuntimeError,"Component GEOM not found in Module Catalog."
+
+import geompy
+
+print "================================="
+print "       create AttributeReal      "
+print "================================="
+A = geompy.myBuilder.FindOrCreateAttribute(geompy.father, "AttributeReal")
+if A == None :
+       raise  RuntimeError, "Can't create AttributeReal attribute"
+A = A._narrow(SALOMEDS.AttributeReal)
+A.SetValue(0.0001)
+if A.Value() != 0.0001:
+       raise  RuntimeError, "Error : wrong value of  AttributeReal"
+
+print
+print " ===========  Test Geometry  =========================="
+print
+
+print "==================================="
+print "     define a box"
+print "==================================="
+
+box = geompy.MakeBox(0., 0., 0., 100., 200., 300.)
+idbox = geompy.addToStudy(box,"box")
+
+print
+print "=============  Test SMESH  ============================="
+print
+
+import StdMeshers
+
+comp = catalog.GetComponent("SMESH")
+if comp is None:
+       raise RuntimeError,"Component SMESH not found in Module Catalog."
+
+comp = catalog.GetComponent("MED")
+if comp is None:
+       raise RuntimeError,"Component MED not found in Module Catalog."
+
+import SMESH
+
+geom = salome.lcc.FindOrLoadComponent("FactoryServer", "GEOM")
+myBuilder = salome.myStudy.NewBuilder()
+
+smesh = salome.lcc.FindOrLoadComponent("FactoryServer", "SMESH")
+smeshgui = salome.ImportComponentGUI("SMESH")
+smeshgui.Init(salome.myStudyId);
+
+ShapeTypeCompSolid = 1
+ShapeTypeSolid = 2
+ShapeTypeShell = 3
+ShapeTypeFace = 4
+ShapeTypeWire = 5
+ShapeTypeEdge = 6
+ShapeTypeVertex = 7
+
+# ---- define a box
+
+box = geompy.MakeBox(0., 0., 0., 100., 200., 300.)
+idbox = geompy.addToStudy(box,"box")
+
+# ---- add first face of box in study
+
+subShapeList=geompy.SubShapeAll(box,ShapeTypeFace)
+face=subShapeList[0]
+name = geompy.SubShapeName(face, box)
+print name
+idface=geompy.addToStudyInFather(box,face,name)
+
+# ---- add shell from box  in study
+
+subShellList=geompy.SubShapeAll(box,ShapeTypeShell)
+shell = subShellList[0]
+name = geompy.SubShapeName(shell, box)
+print name
+idshell=geompy.addToStudyInFather(box,shell,name)
+
+# ---- add first edge of face in study
+
+edgeList = geompy.SubShapeAll(face,ShapeTypeEdge)
+edge=edgeList[0];
+name = geompy.SubShapeName(edge, face)
+print name
+idedge=geompy.addToStudyInFather(face,edge,name)
+
+
+# ---- SMESH 
+
+# ---- create Hypothesis
+
+print "-------------------------- create Hypothesis"
+print "-------------------------- LocalLength"
+hypLen1 = smesh.CreateHypothesis( "LocalLength", "libStdMeshersEngine.so" )
+hypLen1.SetLength(100)
+print hypLen1.GetName()
+print hypLen1.GetId()
+print hypLen1.GetLength()
+
+smeshgui.SetName(salome.ObjectToID(hypLen1), "Local_Length_100")
+
+print "-------------------------- NumberOfSegments"
+hypNbSeg1= smesh.CreateHypothesis( "NumberOfSegments", "libStdMeshersEngine.so" )
+hypNbSeg1.SetNumberOfSegments(7)
+print hypNbSeg1.GetName()
+print hypNbSeg1.GetId()
+print hypNbSeg1.GetNumberOfSegments()
+
+smeshgui.SetName(salome.ObjectToID(hypNbSeg1), "NumberOfSegments_7")
+
+print "-------------------------- MaxElementArea"
+hypArea1 = smesh.CreateHypothesis( "MaxElementArea", "libStdMeshersEngine.so" )
+hypArea1.SetMaxElementArea(2500)
+print hypArea1.GetName()
+print hypArea1.GetId()
+print hypArea1.GetMaxElementArea()
+
+smeshgui.SetName(salome.ObjectToID(hypArea1), "MaxElementArea_2500")
+
+print "-------------------------- MaxElementArea"
+hypArea2 = smesh.CreateHypothesis( "MaxElementArea", "libStdMeshersEngine.so" )
+hypArea2.SetMaxElementArea(500)
+print hypArea2.GetName()
+print hypArea2.GetId()
+print hypArea2.GetMaxElementArea()
+
+smeshgui.SetName(salome.ObjectToID(hypArea2), "MaxElementArea_500")
+
+print "-------------------------- Regular_1D"
+algoReg = smesh.CreateHypothesis( "Regular_1D", "libStdMeshersEngine.so" )
+listHyp=algoReg.GetCompatibleHypothesis()
+for hyp in listHyp:
+    print hyp
+print algoReg.GetName()
+print algoReg.GetId()
+
+smeshgui.SetName(salome.ObjectToID(algoReg), "Regular_1D" )
+
+print "-------------------------- MEFISTO_2D"
+algoMef = smesh.CreateHypothesis( "MEFISTO_2D", "libStdMeshersEngine.so" )
+listHyp=algoMef.GetCompatibleHypothesis()
+for hyp in listHyp:
+    print hyp
+print algoMef.GetName()
+print algoMef.GetId()
+
+smeshgui.SetName(salome.ObjectToID(algoMef), "MEFISTO_2D" )
+
+# ---- add hypothesis to box
+
+print "-------------------------- add hypothesis to box"
+box=salome.IDToObject(idbox)
+mesh = smesh.CreateMesh(box)
+
+smeshgui.SetName( salome.ObjectToID(mesh), "MeshBox" );
+
+ret=mesh.AddHypothesis(box,algoReg)
+print ret
+ret=mesh.AddHypothesis(box,algoMef)
+print ret
+
+
+ret=mesh.AddHypothesis(box,hypNbSeg1)
+print ret
+ret=mesh.AddHypothesis(box,hypArea1)
+print ret
+
+
+# ---- add hypothesis to edge
+
+print "-------------------------- add hypothesis to edge"
+edge=salome.IDToObject(idedge)
+submesh=mesh.GetSubMesh(edge, "SubMeshEdge")
+
+ret=mesh.AddHypothesis(edge,algoReg)
+print ret
+ret=mesh.AddHypothesis(edge,hypLen1)
+print ret
+
+print "-------------------------- add hypothesis to face"
+face=salome.IDToObject(idface)
+submesh   = mesh.GetSubMesh(face, "SubMeshFace")
+
+ret=mesh.AddHypothesis(face,hypArea2)
+print ret
+
+smesh.Compute(mesh, box)
+sg.updateObjBrowser(1);
+
+print
+print "=============  Test  Supervisor  ============================="
+print
+
+comp = catalog.GetComponent("SUPERV")
+if comp is None:
+       raise RuntimeError,"Component SUPERV not found in Module Catalog."
+
+from SuperV import *
+import SALOMEDS
+myStudy = salome.myStudy
+myBuilder = myStudy.NewBuilder()
+
+SuperVision = lcc.FindOrLoadComponent("SuperVisionContainer","SUPERV")
+father = myStudy.FindComponent("SUPERV")
+if father is None:
+        father = myBuilder.NewComponent("SUPERV")
+        A1 = myBuilder.FindOrCreateAttribute(father, "AttributeName");
+        FName = A1._narrow(SALOMEDS.AttributeName)
+        FName.SetValue( salome.sg.getComponentUserName("SUPERV") )
+       A2 = myBuilder.FindOrCreateAttribute(father, "AttributePixMap");
+       aPixmap = A2._narrow(SALOMEDS.AttributePixMap);
+       aPixmap.SetPixMap( "ICON_OBJBROWSER_Supervision" );
+       myBuilder.DefineComponentInstance(father,SuperVision)
+
+def addStudy(ior):
+    dataflow = SuperVision.getStreamGraph(ior)
+    name=dataflow.Name()
+    itr = myStudy.NewChildIterator(father)
+    while itr.More():
+        item=itr.Value()
+        res,A=item.FindAttribute("AttributeName")
+        if res:
+            aName = A._narrow(SALOMEDS.AttributeName)
+            if aName.Value() == name :
+               print myBuilder.FindOrCreateAttribute(item, "AttributeIOR")
+               A  = myBuilder.FindOrCreateAttribute(item, "AttributeIOR")
+               print "A = ", A
+               if A is not None :
+                   #res,A = myBuilder.FindOrCreateAttribute(item, "AttributeIOR")
+                   anIOR  = A._narrow(SALOMEDS.AttributeIOR);
+                  print "anIOR.SetValue(dataflow.getIOR())"
+                  anIOR.SetValue(dataflow.getIOR()) 
+                return
+        itr.Next()
+    obj = myBuilder.NewObject(father)
+    A=myBuilder.FindOrCreateAttribute(obj, "AttributeName")
+    aName=A._narrow(SALOMEDS.AttributeName)
+    aName.SetValue(name)
+    A=myBuilder.FindOrCreateAttribute(obj, "AttributeIOR")
+    anIOR  = A._narrow(SALOMEDS.AttributeIOR)
+    anIOR.SetValue(dataflow.getIOR())
+
+import os
+dir= os.getenv("SUPERV_ROOT_DIR")
+if dir == None:
+       raise RuntimeError, "SUPERV_ROOT_DIR is not defined"
+xmlfile = dir +"/examples/GraphGeomEssai.xml"
+print "Load dataflow from the file : "
+print xmlfile
+print
+
+myGraph = StreamGraph ( xmlfile )
+
+# This DataFlow is "valid" : no loop, correct links between Nodes etc...
+print "myGraph.IsValid() = ", myGraph.IsValid()
+
+# Get Nodes
+myGraph.PrintNodes()
+
+# This DataFlow is "executable" : all pending Ports are defined with Datas
+print myGraph.IsExecutable()
+
+# Starts only execution of that DataFlow and gets control immediatly
+print myGraph.Run()
+
+# That DataFlow is running ==> 0 (false)
+print myGraph.IsDone()
+
+# Events of execution :
+aStatus,aNode,anEvent,aState = myGraph.Event()
+while aStatus :
+    print aNode.Thread(),aNode.SubGraph(),aNode.Name(),anEvent,aState
+    aStatus,aNode,anEvent,aState = myGraph.Event()
+print "myGraph.IsDone() = ",myGraph.IsDone()
+
+# Wait for Completion (but it is already done after event loop ...)
+print "Done : ",myGraph.DoneW()
+
+print " "
+#print "Type : print myGraph.IsDone()"
+#print "       If execution is finished ==> 1 (true)"
+res=myGraph.IsDone()
+if res != 1:
+       raise RuntimeError, "myGraph.Run() is not done"
+
+print " "
+print "Type : myGraph.PrintPorts()"
+print "       to see input and output values of the graph"
+myGraph.PrintPorts()
+
+# Export will create newsupervisionexample.xml and the corresponding .py file
+tmpdir=os.getenv("TmpDir")
+if tmpdir is None:
+       tmpdir="/tmp"
+file = tmpdir + "/newsupervisionexample"
+print "--------------\n"+file+"\n--------------\n"
+myGraph.Export(file)
+
+ior = salome.orb.object_to_string(myGraph.G)
+addStudy(ior)
+
+GraphName = myGraph.Name()
+print "Befor save ",
+#nodes = myGraph.Nodes()
+nodes = myGraph.G.Nodes().FNodes
+length_bs = len(nodes)
+print "ListOfNodes length = ", length_bs
+names=[]
+for node in nodes:
+       names.append(node.Name())
+print names
+
+# Graph creation 
+GraphInLines = StreamGraph( 'GraphInLines' )
+GraphInLines.SetName( 'GraphInLines' )
+GraphInLines.SetAuthor( '' )
+GraphInLines.SetComment( '' )
+GraphInLines.Coords( 0 , 0 )
+
+# Creation of InLine Nodes
+PyAdd = []
+PyAdd.append( 'def Add(a,b) :  ' )
+PyAdd.append( '    return a+b  ' )
+PyAdd.append( '' )
+Add = GraphInLines.INode( 'Add' , PyAdd )
+Add.InPort( 'a' , 'long' )
+Add.InPort( 'b' , 'long' )
+Add.OutPort( 'f' , 'long' )
+Add.SetName( 'Add' )
+Add.SetAuthor( '' )
+Add.SetComment( 'Python function' )
+Add.Coords( 351 , 77 )
+PySub = []
+PySub.append( 'def Sub(a,b) : ' )
+PySub.append( '    return a-b ' )
+PySub.append( '' )
+Sub = GraphInLines.INode( 'Sub' , PySub )
+Sub.InPort( 'a' , 'long' )
+Sub.InPort( 'b' , 'long' )
+Sub.OutPort( 'f' , 'long' )
+Sub.SetName( 'Sub' )
+Sub.SetAuthor( '' )
+Sub.SetComment( 'Python function' )
+Sub.Coords( 86 , 333 )
+PyMul = []
+PyMul.append( 'def Mul(a,b) : ' )
+PyMul.append( '    return a*b ' )
+Mul = GraphInLines.INode( 'Mul' , PyMul )
+Mul.InPort( 'a' , 'long' )
+Mul.InPort( 'b' , 'long' )
+Mul.OutPort( 'Result' , 'long' )
+Mul.SetName( 'Mul' )
+Mul.SetAuthor( '' )
+Mul.SetComment( 'Python function' )
+Mul.Coords( 616 , 247 )
+
+# Creation of intermediate Output variables and of Control Links
+Addf = Add.Port( 'f' )
+Mula = GraphInLines.Link( Addf , Mul.Port( 'a' ) )
+Mula.AddCoord( 1 , 570 , 356 )
+Mula.AddCoord( 2 , 570 , 186 )
+Subf = Sub.Port( 'f' )
+Mulb = GraphInLines.Link( Subf , Mul.Port( 'b' ) )
+Mulb.AddCoord( 1 , 282 , 376 )
+Mulb.AddCoord( 2 , 282 , 442 )
+Addb = GraphInLines.Link( Subf , Add.Port( 'b' ) )
+Addb.AddCoord( 1 , 283 , 209 )
+Addb.AddCoord( 2 , 283 , 374 )
+Addb.AddCoord( 3 , 283 , 442 )
+
+# Creation of Input datas
+Adda = Add.Input( 'a' , 1)
+Suba = Sub.Input( 'a' , 3)
+Subb = Sub.Input( 'b' , 4)
+
+# Creation of Output variables
+MulResult = Mul.Port( 'Result' )
+
+GraphInLines.Run()
+
+GraphInLines.DoneW()
+
+GraphInLines.PrintPorts()
+
+sg.updateObjBrowser(1);
+
+print
+print "=============  Test  VISU  and MED ============================="
+print
+
+comp = catalog.GetComponent("VISU")
+if comp is None:
+       raise RuntimeError,"Component VISU not found in Module Catalog."
+
+import sys
+import SALOMEDS
+import SALOME
+import SALOME_MED
+import VISU
+
+import visu_gui
+
+medFileName = "pointe.med"
+medFile = os.getenv('KERNEL_ROOT_DIR') + '/examples/' + medFileName
+print "Load ", medFile
+
+studyCurrent = salome.myStudyName
+
+med_comp = salome.lcc.FindOrLoadComponent("FactoryServer", "MED")
+myVisu = salome.lcc.FindOrLoadComponent("FactoryServer", "VISU")
+
+try:
+    if os.access(medFile, os.R_OK) :
+       if not os.access(medFile, os.W_OK) :
+              import random
+              medFileNew = "/tmp/" + str(random.randint(0,1000000)) + "_" + medFileName
+              print " -- Copy " + medFile + " to " + medFileNew
+              os.system("cp "+ medFile + " " + medFileNew)
+              medFile = medFileNew
+              os.system("chmod 755 " + medFile)
+
+       if os.access(medFile, os.W_OK) :
+           med_comp.readStructFileWithFieldType(medFile,studyCurrent)
+           med_obj = visu_gui.visu.getMedObjectFromStudy()
+           print "med_obj - ", med_obj
+
+           myField1 = visu_gui.visu.getFieldObjectFromStudy(2,1)
+           aMeshName = "maa1"
+           anEntity = VISU.NODE
+          aTimeStampId = -1
+                  
+           myResult1 = myVisu.ImportMedField(myField1)
+           aMesh1 = myVisu.MeshOnEntity(myResult1, aMeshName, anEntity);
+           
+          aScalarMap1= myVisu.ScalarMapOnField(myResult1, aMeshName, anEntity, myField1.getName(), aTimeStampId)
+          
+          myResult2 = myVisu.ImportFile(medFile);
+          aMesh2 = myVisu.MeshOnEntity(myResult2, aMeshName, anEntity);
+           
+          aTimeStampId = 3
+          aScalarMap2= myVisu.ScalarMapOnField(myResult2, aMeshName, anEntity, myField1.getName(), aTimeStampId)
+                  
+          sg.updateObjBrowser(0)
+       else :  print "We have no permission to rewrite medFile, so readStructFileWithFieldType can't open this file";
+    else :  print  "We have no permission to read medFile, it will not be opened"; 
+
+except:
+    if sys.exc_type == SALOME.SALOME_Exception :
+        print "There is no permission to read " + medFile
+    else :
+        print sys.exc_type 
+        print sys.exc_value
+        print sys.exc_traceback
+
+sg.updateObjBrowser(1);
index f3622465d3261f2cc78a1b8de31d99ed0f274f23..3957e8f77988af687633cde01ac26962860112df 100644 (file)
@@ -1,4 +1,7 @@
 #include <Launchers.hxx>
+#include "utilities.h"
+
+using namespace std;
 
 static int Launchers_IsLoaded = 0;
 static PyObject * Launchers_module = 0;
@@ -30,8 +33,14 @@ void releaseMainThread(PyThreadState *tstate){
 }
 
 void Launchers_assertInitialized() {
+  MESSAGE("===========================================================");
+  MESSAGE("Launchers_assertInitialized");
+  MESSAGE("===========================================================");
    PyThreadState *_save; 
    if( !Py_IsInitialized() ) {
+     MESSAGE("===========================================================");
+     MESSAGE("Py_Initialize()");
+     MESSAGE("===========================================================");
          Py_Initialize();
          PyEval_InitThreads();
          PyEval_SaveThread();
index 3b825582f7d785653852de912d71719af4d8c3d5..d5b514cf4d2012f87a3be218f7ce1d8271f40ce0 100644 (file)
@@ -36,17 +36,17 @@ VPATH=.:@srcdir@:@top_srcdir@/idl
 
 EXPORT_HEADERS = SALOME_LifeCycleCORBA.hxx
 
-EXPORT_PYSCRIPTS = LifeCycleCORBA.py Launchers.py
+EXPORT_PYSCRIPTS = Launchers.py
 
 # Libraries targets
 
 LIB = libSalomeLifeCycleCORBA.la
 LIB_SRC = SALOME_LifeCycleCORBA.cxx Launchers.cxx
 LIB_CLIENT_IDL = SALOME_Component.idl SALOME_TestComponent.idl \
-                SALOME_ModuleCatalog.idl SALOME_ContainerManager.idl
+                SALOME_ModuleCatalog.idl SALOME_ContainerManager.idl SALOME_Exception.idl
 
 # Executables targets
-BIN = TestLifeCycleCORBA
+BIN = Test_LifeCycleCORBA
 BIN_SRC =
 BIN_CLIENT_IDL = SALOME_Component.idl SALOME_TestComponent.idl \
                 SALOME_ModuleCatalog.idl SALOME_ContainerManager.idl
@@ -54,7 +54,7 @@ BIN_CLIENT_IDL = SALOME_Component.idl SALOME_TestComponent.idl \
 CPPFLAGS += $(PYTHON_INCLUDES) $(QT_MT_INCLUDES)
 
 LDFLAGS += -lSalomeNS -lOpUtil -lSALOMELocalTrace -lSalomeContainer -lSalomeResourcesManager
-LDFLAGSFORBIN= $(LDFLAGS) -lRegistry -lSalomeNotification -lSALOMETraceCollector
+LDFLAGSFORBIN= $(LDFLAGS) -lRegistry -lSalomeNotification -lSALOMEBasics
 LIBS += $(PYTHON_LIBS)
 
 @CONCLUDE@
index af5848155456dab9d351cc21659f2bee223306c6..31dec183569723d77a763acffb4eef52549c629f 100644 (file)
 #include <ServiceUnreachable.hxx>
 
 #include "SALOME_LifeCycleCORBA.hxx"
+#include "SALOMETraceCollector.hxx"
+#ifndef WNT
 #include CORBA_CLIENT_HEADER(SALOME_ModuleCatalog)
+#else
+#include "SALOME_ModuleCatalog.hh"
+#endif
 #include "SALOME_ContainerManager.hxx"
 #include "SALOME_Component_i.hxx"
 #include "SALOME_NamingService.hxx"
 using namespace std;
 
+IncompatibleComponent::IncompatibleComponent( void ):
+  SALOME_Exception( "IncompatibleComponent" )
+{
+}
+
+IncompatibleComponent::IncompatibleComponent(const IncompatibleComponent &ex):
+  SALOME_Exception( ex ) 
+{
+}
+
+//=============================================================================
+/*! 
+ *  Constructor
+ */
+//=============================================================================
+
 SALOME_LifeCycleCORBA::SALOME_LifeCycleCORBA(SALOME_NamingService *ns)
 {
-  _NS = ns;
+  // be sure to have an instance of traceCollector, when used via SWIG
+  // in a Python module
+  int argc = 0;
+  char *xargv = "";
+  char **argv = &xargv;
+  CORBA::ORB_var orb = CORBA::ORB_init(argc, argv);
+  //  LocalTraceCollector *myThreadTrace = SALOMETraceCollector::instance(orb);
+  if (!ns)
+    {
+      _NS = new SALOME_NamingService(orb);
+    }
+  else _NS = ns;
   //add try catch
-  _NS->Change_Directory("/"); // mpv 250105: current directory may be not root (in SALOMEDS for an example)
-  CORBA::Object_var obj=_NS->Resolve(SALOME_ContainerManager::_ContainerManagerNameInNS);
+  _NS->Change_Directory("/"); // mpv 250105: current directory may be not root 
+                              // (in SALOMEDS for an example)
+  // not enough: set a current directory in naming service is not thread safe
+  // if naming service instance is shared among several threads...
+  // ==> allways use absolute path and dot rely on current directory!
+
+  CORBA::Object_var obj =
+    _NS->Resolve(SALOME_ContainerManager::_ContainerManagerNameInNS);
   ASSERT( !CORBA::is_nil(obj));
   _ContManager=Engines::ContainerManager::_narrow(obj);
 }
 
+//=============================================================================
+/*! 
+ *  Destructor
+ */
+//=============================================================================
+
 SALOME_LifeCycleCORBA::~SALOME_LifeCycleCORBA()
 {
 }
 
-string SALOME_LifeCycleCORBA::ContainerName(
-                                         const char * aComputerContainer ,
-                                         string * theComputer ,
-                                         string * theContainer ) {
-  char * ContainerName = new char [ strlen( aComputerContainer ) + 1 ] ;
-  strcpy( ContainerName , aComputerContainer ) ;
-  string theComputerContainer("/Containers/");
-  char * slash = strchr( ContainerName , '/' ) ;
-  if ( !slash ) {
-    *theComputer = GetHostname() ;
-    theComputerContainer += *theComputer ;
-    theComputerContainer += "/" ;
-    *theContainer = ContainerName ;
-    theComputerContainer += *theContainer ;
-  }
-  else {
-    slash[ 0 ] = '\0' ;
-    slash += 1 ;
-    *theContainer = slash ;
-    if ( !strcmp( ContainerName , "localhost" ) ) {
-      *theComputer = GetHostname() ;
+//=============================================================================
+/*! Public - 
+ *  Find and aready existing and registered component instance.
+ *  \param params         machine parameters like type or name...
+ *  \param componentName  the name of component class
+ *  \param studyId        default = 0  : multistudy instance
+ *  \return a CORBA reference of the component instance, or _nil if not found
+ */
+//=============================================================================
+
+Engines::Component_ptr
+SALOME_LifeCycleCORBA::FindComponent(const Engines::MachineParameters& params,
+                                    const char *componentName,
+                                    int studyId)
+{
+  if (! isKnownComponentClass(componentName))
+    return Engines::Component::_nil();
+
+  Engines::MachineList_var listOfMachines =
+    _ContManager->GetFittingResources(params, componentName);
+
+  Engines::Component_var compo = _FindComponent(params,
+                                               componentName,
+                                               studyId,
+                                               listOfMachines);
+
+  return compo._retn();
+}
+
+//=============================================================================
+/*! Public - 
+ *  Load a component instance on a container defined by machine parameters
+ *  \param params         machine parameters like type or name...
+ *  \param componentName  the name of component class
+ *  \param studyId        default = 0  : multistudy instance
+ *  \return a CORBA reference of the component instance, or _nil if problem
+ */
+//=============================================================================
+
+Engines::Component_ptr
+SALOME_LifeCycleCORBA::LoadComponent(const Engines::MachineParameters& params,
+                                    const char *componentName,
+                                    int studyId)
+{
+  // --- Check if Component Name is known in ModuleCatalog
+
+  if (! isKnownComponentClass(componentName))
+    return Engines::Component::_nil();
+
+  Engines::MachineList_var listOfMachines =
+    _ContManager->GetFittingResources(params, componentName);
+
+  Engines::Component_var compo = _LoadComponent(params,
+                                               componentName,
+                                               studyId,
+                                               listOfMachines);
+
+  return compo._retn();
+}
+
+//=============================================================================
+/*! Public - 
+ *  Find and aready existing and registered component instance or load a new
+ *  component instance on a container defined by machine parameters.
+ *  \param params         machine parameters like type or name...
+ *  \param componentName  the name of component class
+ *  \param studyId        default = 0  : multistudy instance
+ *  \return a CORBA reference of the component instance, or _nil if problem
+ */
+//=============================================================================
+
+Engines::Component_ptr
+SALOME_LifeCycleCORBA::
+FindOrLoad_Component(const Engines::MachineParameters& params,
+                    const char *componentName,
+                    int studyId)
+{
+  // --- Check if Component Name is known in ModuleCatalog
+
+  if (! isKnownComponentClass(componentName))
+    return Engines::Component::_nil();
+
+  Engines::MachineList_var listOfMachines =
+    _ContManager->GetFittingResources(params,componentName);
+
+  Engines::Component_var compo = _FindComponent(params,
+                                               componentName,
+                                               studyId,
+                                               listOfMachines);
+
+  if(CORBA::is_nil(compo))
+    compo = _LoadComponent(params,
+                          componentName,
+                          studyId,
+                          listOfMachines);
+
+  return compo._retn();
+}
+
+//=============================================================================
+/*! Public - 
+ *  Find and aready existing and registered component instance or load a new
+ *  component instance on a container defined by name
+ *  \param containerName  the name of container, under one of the forms
+ *           - 1 aContainer (local container)
+ *           - 2 machine/aContainer (container on hostname = machine)
+ *  \param componentName  the name of component class
+ *  \return a CORBA reference of the component instance, or _nil if problem
+ */
+//=============================================================================
+
+Engines::Component_ptr
+SALOME_LifeCycleCORBA::FindOrLoad_Component(const char *containerName,
+                                           const char *componentName)
+{
+  // --- Check if Component Name is known in ModuleCatalog
+
+  if (! isKnownComponentClass(componentName))
+    return Engines::Component::_nil();
+
+  // --- Check if containerName contains machine name (if yes: rg>0)
+
+  char *stContainer=strdup(containerName);
+  string st2Container(stContainer);
+  int rg=st2Container.find("/");
+
+  Engines::MachineParameters_var params=new Engines::MachineParameters;
+  preSet(params);
+  if (rg<0)
+    {
+      // containerName doesn't contain "/" => Local container
+      params->container_name=CORBA::string_dup(stContainer);
+      params->hostname=CORBA::string_dup(GetHostname().c_str());
     }
-    else {
-      *theComputer = ContainerName ;
+  else 
+    {
+      stContainer[rg]='\0';
+      params->container_name=CORBA::string_dup(stContainer+rg+1);
+      params->hostname=CORBA::string_dup(stContainer);
     }
-    theComputerContainer += *theComputer ;
-    theComputerContainer += "/" ;
-    theComputerContainer += *theContainer ;
-  }
-  delete [] ContainerName;
-  return theComputerContainer ;
+  params->isMPI = false;
+  SCRUTE(params->container_name);
+  SCRUTE(params->hostname);
+  SCRUTE(params->OS);
+  SCRUTE(params->mem_mb);
+  SCRUTE(params->cpu_clock);
+  SCRUTE(params->nb_proc_per_node);
+  SCRUTE(params->nb_node);
+  SCRUTE(params->isMPI);
+  free(stContainer);
+  return FindOrLoad_Component(params,componentName);
+  
 }
 
+//=============================================================================
+/*! Public -
+ *  Check if the component class is known in module catalog
+ *  \param componentName  the name of component class
+ *  \return true if found, false otherwise
+ */
+//=============================================================================
+
 bool SALOME_LifeCycleCORBA::isKnownComponentClass(const char *componentName)
 {
 
@@ -99,6 +272,7 @@ bool SALOME_LifeCycleCORBA::isKnownComponentClass(const char *componentName)
       CORBA::Object_var obj = _NS->Resolve("/Kernel/ModulCatalog");
       SALOME_ModuleCatalog::ModuleCatalog_var Catalog = 
        SALOME_ModuleCatalog::ModuleCatalog::_narrow(obj) ;
+      ASSERT(! CORBA::is_nil(Catalog));
       SALOME_ModuleCatalog::Acomponent_ptr compoInfo = 
        Catalog->GetComponent(componentName);
       if (CORBA::is_nil (compoInfo)) 
@@ -119,206 +293,180 @@ bool SALOME_LifeCycleCORBA::isKnownComponentClass(const char *componentName)
   return false;
 }
 
-string SALOME_LifeCycleCORBA::ComputerPath(
-                                         const char * theComputer ) {
-  CORBA::String_var path;
-  CORBA::Object_var obj = _NS->Resolve("/Kernel/ModulCatalog");
-  SALOME_ModuleCatalog::ModuleCatalog_var Catalog = 
-                    SALOME_ModuleCatalog::ModuleCatalog::_narrow(obj) ;
-  try {
-    path = Catalog->GetPathPrefix( theComputer );
-  }
-  catch (SALOME_ModuleCatalog::NotFound&) {
-    INFOS("GetPathPrefix(" << theComputer << ") not found!");
-    path = "" ;
-  }
-  SCRUTE( path ) ;
-  return CORBA::string_dup( path ) ;
-}
+//=============================================================================
+/*! Public -
+ *  Not so complex... useful ?
+ */
+//=============================================================================
 
-Engines::Container_ptr SALOME_LifeCycleCORBA::FindContainer(const char *containerName)
+bool 
+SALOME_LifeCycleCORBA::isMpiContainer(const Engines::MachineParameters& params)
+  throw(IncompatibleComponent)
 {
-  ASSERT(_NS != NULL);
-  string cont ;
-  if ( strncmp( containerName , "/Containers/" , 12 ) ) { // Compatibility ...
-    string theComputer ;
-    string theContainer ;
-    cont = ContainerName( containerName , &theComputer , &theContainer ) ;
-  }
-  else {
-    cont = containerName ;
-  }
-  try {
-
-    SCRUTE( cont );
-
-    CORBA::Object_var obj = _NS->Resolve( cont.c_str() );
-    if( !CORBA::is_nil( obj ) ) {
-      return Engines::Container::_narrow( obj ) ;
-    }
-  }
-  catch (ServiceUnreachable&) {
-    INFOS("Caught exception: Naming Service Unreachable");
-  }
-  catch (...) {
-    INFOS("Caught unknown exception.");
-  }
-  return Engines::Container::_nil();
+  if( params.isMPI )
+    return true;
+  else
+    return false;
 }
 
-Engines::Component_ptr SALOME_LifeCycleCORBA::FindOrLoad_Component
-                                  (const char *containerName,
-                                  const char *componentName)
+
+//=============================================================================
+/*! Public -
+ *  Pre initialisation of a given Engines::MachineParameters with default
+ *  values.
+ *  - container_name = ""  : not relevant
+ *  - hostname = ""        : not relevant
+ *  - OS = ""              : not relevant
+ *  - mem_mb = 0           : not relevant
+ *  - cpu_clock = 0        : not relevant
+ *  - nb_proc_per_node = 0 : not relevant
+ *  - nb_node = 0          : not relevant
+ *  - isMPI = false        : standard components
+ */
+//=============================================================================
+
+void SALOME_LifeCycleCORBA::preSet( Engines::MachineParameters& params)
 {
-  if (! isKnownComponentClass(componentName)) return Engines::Component::_nil();
-  char *stContainer=strdup(containerName);
-  string st2Container(stContainer);
-  int rg=st2Container.find("/");
-  if(rg>=0)
-    {
-      stContainer[rg]='\0';
-      if(strcmp(stContainer,"localhost")==0)
-       {
-         Engines::Component_ptr ret=FindOrLoad_Component(stContainer+rg+1,componentName);
-         free(stContainer);
-         return ret;
-       }
-    }
-  if(rg<0) {
-    //containerName doesn't contain "/" => Local container
-    free(stContainer);
-    Engines::MachineList_var listOfMachine=new Engines::MachineList;
-    listOfMachine->length(1);
-    listOfMachine[0]=CORBA::string_dup(GetHostname().c_str());
-    Engines::Component_ptr ret=FindComponent(containerName,componentName,listOfMachine.in());
-    if(CORBA::is_nil(ret))
-      return LoadComponent(containerName,componentName,listOfMachine);
-    else
-      return ret;
-  }
-  else {
-    //containerName contains "/" => Remote container
-    stContainer[rg]='\0';
-    Engines::MachineParameters_var params=new Engines::MachineParameters;
-    params->container_name=CORBA::string_dup(stContainer+rg+1);
-    params->hostname=CORBA::string_dup(stContainer);
-    params->OS=CORBA::string_dup("LINUX");
-    free(stContainer);
-    return FindOrLoad_Component(params,componentName);
-  }
+  params.container_name = "";
+  params.hostname = "";
+  params.OS = "";
+  params.mem_mb = 0;
+  params.cpu_clock = 0;
+  params.nb_proc_per_node = 0;
+  params.nb_node = 0;
+  params.isMPI = false;
 }
 
-Engines::Component_ptr SALOME_LifeCycleCORBA::FindOrLoad_Component(const Engines::MachineParameters& params,
-                                                                  const char *componentName)
+//=============================================================================
+/*! Public -
+ *  \return a number of processors not 0, only for MPI containers
+ */
+//=============================================================================
+
+int SALOME_LifeCycleCORBA::NbProc(const Engines::MachineParameters& params)
 {
-  if (! isKnownComponentClass(componentName)) return Engines::Component::_nil();
-  Engines::MachineList_var listOfMachine=_ContManager->GetFittingResources(params,componentName);
-  Engines::Component_ptr ret=FindComponent(params.container_name,componentName,listOfMachine);
-  if(CORBA::is_nil(ret))
-    return LoadComponent(params.container_name,componentName,listOfMachine);
+  if( !isMpiContainer(params) )
+    return 0;
+  else if( (params.nb_node <= 0) && (params.nb_proc_per_node <= 0) )
+    return 1;
+  else if( params.nb_node == 0 )
+    return params.nb_proc_per_node;
+  else if( params.nb_proc_per_node == 0 )
+    return params.nb_node;
   else
-    return ret;
+    return params.nb_node * params.nb_proc_per_node;
 }
 
-Engines::Component_ptr SALOME_LifeCycleCORBA::FindComponent(const char *containerName,
-                                                                const char *componentName,
-                                                                const Engines::MachineList& listOfMachines)
+//=============================================================================
+/*! Protected -
+ *  Find and aready existing and registered component instance.
+ *  \param params         machine parameters like type or name...
+ *  \param componentName  the name of component class
+ *  \param studyId        default = 0  : multistudy instance
+ *  \param listOfMachines list of machine address
+ *  \return a CORBA reference of the component instance, or _nil if not found
+ * - build a list of machines on which an instance of the component is running,
+ * - find the best machine among the list
+ */
+//=============================================================================
+
+Engines::Component_ptr
+SALOME_LifeCycleCORBA::
+_FindComponent(const Engines::MachineParameters& params,
+              const char *componentName,
+              int studyId,
+              const Engines::MachineList& listOfMachines)
 {
-  if (! isKnownComponentClass(componentName)) return Engines::Component::_nil();
-  if(containerName[0]!='\0')
+  // --- build the list of machines on which the component is already running
+
+  const char *containerName = params.container_name;
+  int nbproc = NbProc(params);
+  MESSAGE("_FindComponent, required " << containerName <<
+         " " << componentName << " " << nbproc);
+
+  Engines::MachineList_var machinesOK = new Engines::MachineList;
+
+  unsigned int lghtOfmachinesOK = 0;
+  machinesOK->length(listOfMachines.length());
+
+  for(unsigned int i=0; i<listOfMachines.length(); i++)
     {
-      Engines::MachineList_var machinesOK=new Engines::MachineList;
-      unsigned int lghtOfmachinesOK=0;
-      machinesOK->length(listOfMachines.length());
-      for(unsigned int i=0;i<listOfMachines.length();i++)
-       {
-         const char *currentMachine=listOfMachines[i];
-         string componentNameForNS=Engines_Component_i::BuildComponentNameForNS(componentName,containerName,currentMachine);
-         CORBA::Object_var obj = _NS->Resolve(componentNameForNS.c_str());
-         if(!CORBA::is_nil(obj))
-           {
-             machinesOK[lghtOfmachinesOK++]=CORBA::string_dup(currentMachine);
-           }
-       }
-      if(lghtOfmachinesOK!=0)
-       {
-         machinesOK->length(lghtOfmachinesOK);
-         CORBA::String_var bestMachine=_ContManager->FindBest(machinesOK);
-         string componentNameForNS=Engines_Component_i::BuildComponentNameForNS(componentName,containerName,bestMachine);
-         CORBA::Object_var obj=_NS->Resolve(componentNameForNS.c_str());
-         return Engines::Component::_narrow(obj);
-       }
-      else
-       return Engines::Component::_nil();
+      const char *currentMachine=listOfMachines[i];
+      MESSAGE("_FindComponent, look at " << currentMachine);
+      CORBA::Object_var obj = _NS->ResolveComponent(currentMachine,
+                                                   containerName,
+                                                   componentName,
+                                                   nbproc);
+      if (!CORBA::is_nil(obj))
+       machinesOK[lghtOfmachinesOK++] = CORBA::string_dup(currentMachine);
     }
-  else
+
+  // --- find the best machine among the list
+
+  if(lghtOfmachinesOK != 0)
     {
-      //user specified no container name so trying to find a component in the best machine among listOfMachines
-      CORBA::String_var bestMachine=_ContManager->FindBest(listOfMachines);
-      //Normally look at all containers launched on bestMachine to see if componentName is already launched on one of them. To do..
-      string componentNameForNS=Engines_Component_i::BuildComponentNameForNS(componentName,containerName,bestMachine);
-      CORBA::Object_var obj = _NS->Resolve(componentNameForNS.c_str());
+      machinesOK->length(lghtOfmachinesOK);
+      CORBA::String_var bestMachine = _ContManager->FindBest(machinesOK);
+      CORBA::Object_var obj = _NS->ResolveComponent(bestMachine,
+                                                   containerName,
+                                                   componentName,
+                                                   nbproc);
       return Engines::Component::_narrow(obj);
     }
+  else
+    return Engines::Component::_nil();
 }
 
-Engines::Component_ptr SALOME_LifeCycleCORBA::LoadComponent(const char *containerName, const char *componentName, const Engines::MachineList& listOfMachines)
+//=============================================================================
+/*! Protected -
+ *  Load a component instance.
+ *  \param params         machine parameters like type or name...
+ *  \param componentName  the name of component class
+ *  \param studyId        default = 0  : multistudy instance
+ *  \param listOfMachines list of machine address
+ *  \return a CORBA reference of the component instance, or _nil if problem
+ *  - Finds a container in the list of machine or start one.
+ *  - Try to load the component library in the container,
+ *  - then create an instance of the component.
+ */
+//=============================================================================
+
+Engines::Component_ptr 
+SALOME_LifeCycleCORBA::
+_LoadComponent(const Engines::MachineParameters& params, 
+             const char *componentName,
+             int studyId,
+             const Engines::MachineList& listOfMachines)
 {
-  Engines::Container_var cont=_ContManager->FindOrStartContainer(containerName,listOfMachines);
-  string implementation=Engines_Component_i::GetDynLibraryName(componentName);
-  return cont->load_impl(componentName, implementation.c_str());
-}
+  const char *containerName = params.container_name;
+  int nbproc = NbProc(params);
+
+  MESSAGE("_LoadComponent, required " << containerName <<
+         " " << componentName << " " << nbproc);
+
+  Engines::Container_var cont =
+    _ContManager->FindOrStartContainer(params,
+                                      listOfMachines);
+  if (CORBA::is_nil(cont)) return Engines::Component::_nil();
 
+  bool isLoadable = cont->load_component_Library(componentName);
+  if (!isLoadable) return Engines::Component::_nil();
 
-Engines::Container_ptr SALOME_LifeCycleCORBA::FindOrStartContainer(
-                                              const string aComputerContainer ,
-                                              const string theComputer ,
-                                              const string theContainer ) {
-  SCRUTE( aComputerContainer ) ;
-  SCRUTE( theComputer ) ;
-  SCRUTE( theContainer ) ;
-
-  Engines::Container_var aContainer = FindContainer( aComputerContainer.c_str() ) ;
-
-  if ( !CORBA::is_nil( aContainer ) ) {
-    return aContainer ;
-  }
-
-  Engines::Container_var aFactoryServer ;
-
-  bool pyCont = false ;
-  int len = theContainer.length() ;
-  if ( !strcmp( &theContainer.c_str()[len-2] , "Py" ) ) {
-    pyCont = true ;
-  }
-
-  string addr=_NS->getIORaddr();
-  string CMD="SALOME_Container";
-  if ( pyCont ) {
-    CMD="SALOME_ContainerPy.py";
-  }
-  CMD=CMD + " " + theContainer;
-  CMD=CMD + " -ORBInitRef NameService="+addr;
-
-  /*
-   *  Get the appropriate launcher and ask to launch
-   */
-  PyObject * launcher=getLauncher((char *)theComputer.c_str());
-  Launcher_Slaunch(launcher,(char *)theComputer.c_str(),(char *)CMD.c_str());
-  /*
-   *  Wait until the container is registered in Naming Service
-   */
-  int count = 5 ;
-  while ( CORBA::is_nil( aFactoryServer ) && count ) {
-      sleep( 1 ) ;
-      count-- ;
-      if ( count != 10 )
-            MESSAGE( count << ". Waiting for FactoryServer on " << theComputer)
-      aFactoryServer = FindContainer( aComputerContainer.c_str() ) ;
-  }
-  if ( !CORBA::is_nil( aFactoryServer ) ) {
-     return aFactoryServer;
-  }
-  MESSAGE("SALOME_LifeCycleCORBA::StartOrFindContainer rsh failed") ;
-  return Engines::Container::_nil();
+  Engines::Component_var myInstance =
+    cont->create_component_instance(componentName, studyId);
+  return myInstance._retn();
 }
+
+
+
+
+
+
+
+
+
+
+
+
+
+
index ca91a238ffaf2f72756a930a699929b543d6ee1e..dea15255f4469b96da253944a8295c044c9339c8 100644 (file)
 #define _SALOME_LIFECYCLECORBA_HXX_
 
 #include <stdlib.h>
+#ifndef WNT
 #include <unistd.h>
+#endif
 #include <string>
 
 #include <SALOMEconfig.h>
+#include <Utils_SALOME_Exception.hxx>
 #include CORBA_CLIENT_HEADER(SALOME_ContainerManager)
 #include CORBA_CLIENT_HEADER(SALOME_Component)
 
+#if defined LIFECYCLECORBA_EXPORTS
+#if defined WIN32
+#define LIFECYCLECORBA_EXPORT __declspec( dllexport )
+#else
+#define LIFECYCLECORBA_EXPORT
+#endif
+#else
+#if defined WNT
+#define LIFECYCLECORBA_EXPORT __declspec( dllimport )
+#else
+#define LIFECYCLECORBA_EXPORT
+#endif
+#endif
+
+
 class SALOME_NamingService;
 
-class SALOME_LifeCycleCORBA
+class LIFECYCLECORBA_EXPORT IncompatibleComponent : public SALOME_Exception
+{
+public :
+  IncompatibleComponent(void);
+  IncompatibleComponent(const IncompatibleComponent &ex);
+};
+
+class LIFECYCLECORBA_EXPORT SALOME_LifeCycleCORBA
 {
 public:
-  SALOME_LifeCycleCORBA(SALOME_NamingService *ns);
+  SALOME_LifeCycleCORBA(SALOME_NamingService *ns = 0);
   virtual ~SALOME_LifeCycleCORBA();
-  Engines::Container_ptr FindContainer(const char *containerName); // for supervision
-  Engines::Component_ptr FindOrLoad_Component(const Engines::MachineParameters& params,
-                                             const char *componentName);
-  Engines::Component_ptr FindOrLoad_Component(const char *containerName,
-                                             const char *componentName);
+
+  Engines::Component_ptr 
+  FindComponent(const Engines::MachineParameters& params,
+               const char *componentName,
+               int studyId=0);
+
+  Engines::Component_ptr
+  LoadComponent(const Engines::MachineParameters& params,
+               const char *componentName,
+               int studyId=0);
+
+  Engines::Component_ptr 
+  FindOrLoad_Component(const Engines::MachineParameters& params,
+                      const char *componentName,
+                      int studyId =0);
+
+  Engines::Component_ptr
+  FindOrLoad_Component(const char *containerName,
+                      const char *componentName); // for compatibility
+  
   bool isKnownComponentClass(const char *componentName);
+
+  bool isMpiContainer(const Engines::MachineParameters& params)
+    throw(IncompatibleComponent);
+
+  int NbProc(const Engines::MachineParameters& params);
+
+  void preSet(Engines::MachineParameters& params);
+
 protected:
-  //! Establish if a component called "componentName" in a container called "containerName" exists among the list of resources
-  //! in "listOfMachines". This method uses Naming Service to find the component.
-  Engines::Component_ptr FindComponent(const char *containerName,
-                                           const char *componentName,
-                                           const Engines::MachineList& listOfMachines);
 
-  Engines::Component_ptr LoadComponent(const char *containerName, const char *componentName, const Engines::MachineList& listOfMachines);
+  /*! Establish if a component called "componentName" in a container called
+   *  "containerName"
+   *  exists among the list of resources in "listOfMachines".
+   *  This method uses Naming Service to find the component.
+   */
+  Engines::Component_ptr 
+  _FindComponent(const Engines::MachineParameters& params,
+                const char *componentName,
+                int studyId,
+                const Engines::MachineList& listOfMachines);
 
+  Engines::Component_ptr
+  _LoadComponent(const Engines::MachineParameters& params,
+                const char *componentName,
+                int studyId,
+                const Engines::MachineList& listOfMachines);
+  
   SALOME_NamingService *_NS;
   Engines::ContainerManager_var _ContManager;
   
-  //private:
-  std::string ContainerName( const char * aComputerContainer ,
-                            std::string * theComputer ,
-                            std::string * theContainer ) ;
-  std::string ComputerPath( const char * theComputer ) ;
-  Engines::Container_ptr FindOrStartContainer(const std::string aComputerContainer ,
-                                              const std::string theComputer ,
-                                              const std::string theContainer ) ;
 } ;
 
 #endif
diff --git a/src/LifeCycleCORBA/Test/LifeCycleCORBATest.cxx b/src/LifeCycleCORBA/Test/LifeCycleCORBATest.cxx
new file mode 100644 (file)
index 0000000..94a42a8
--- /dev/null
@@ -0,0 +1,650 @@
+
+#include "LifeCycleCORBATest.hxx"
+#include "SALOME_LifeCycleCORBA.hxx"
+#include "Utils_ORB_INIT.hxx"
+#include "Utils_SINGLETON.hxx"
+#include "OpUtil.hxx"
+
+#include <iostream>
+#include <fstream>
+#include <string>
+#include <cstdlib>
+
+using namespace std;
+
+// --- uncomment to have some traces on standard error
+//     (useful only when adding new tests...)
+//#define _DEVDEBUG_
+
+#ifdef _DEVDEBUG_
+#define MYDEVTRACE {std::cerr << __FILE__ << " [" << __LINE__ << "] : ";}
+#define DEVTRACE(msg) {MYDEVTRACE; std::cerr<<msg<<std::endl<<std::flush;}
+#else
+#define MYDEVTRACE
+#define DEVTRACE(msg)
+#endif
+
+#define TRACEFILE "/tmp/traceUnitTest.log"
+
+// ============================================================================
+/*!
+ * Set Trace mecanism
+ * - delete preexisting trace classes if any
+ * - set trace on file
+ * Get or initialize the orb
+ * Create a SALOME_NamingService instance
+ */
+// ============================================================================
+
+void 
+LifeCycleCORBATest::setUp()
+{
+  LocalTraceBufferPool* bp1 = LocalTraceBufferPool::instance();
+  CPPUNIT_ASSERT(bp1);
+  bp1->deleteInstance(bp1);
+
+  // --- trace on file
+  char *theFileName = TRACEFILE;
+
+  string s = "file:";
+  s += theFileName;
+  //s="local";
+  //s="with_logger";
+  CPPUNIT_ASSERT(! setenv("SALOME_trace",s.c_str(),1)); // 1: overwrite
+
+  ofstream traceFile;
+  //  traceFile.open(theFileName, ios::out | ios::trunc);
+  traceFile.open(theFileName, ios::out | ios::app);
+  CPPUNIT_ASSERT(traceFile); // file created empty, then closed
+  traceFile.close();
+
+  bp1 = LocalTraceBufferPool::instance();
+  CPPUNIT_ASSERT(bp1);
+
+  // --- Get or initialize the orb
+
+  int _argc = 1;
+  char* _argv[] = {""};
+  ORB_INIT &init = *SINGLETON_<ORB_INIT>::Instance() ;
+  ASSERT(SINGLETON_<ORB_INIT>::IsAlreadyExisting());
+  _orb = init(_argc , _argv ) ;
+
+  // --- Create a SALOME_NamingService instance
+
+  _NS.init_orb(_orb) ;
+}
+
+// ============================================================================
+/*!
+ *  - delete trace classes
+ */
+// ============================================================================
+
+void 
+LifeCycleCORBATest::tearDown()
+{
+
+  LocalTraceBufferPool* bp1 = LocalTraceBufferPool::instance();
+  CPPUNIT_ASSERT(bp1);
+  bp1->deleteInstance(bp1);
+}
+
+// ============================================================================
+/*!
+ * Check FindOrLoad_Component.
+ * - get a local container (no hostname given),
+ *       load an engine, check that the CORBA object is not null.
+ * - check narrow
+ */
+// ============================================================================
+
+void
+LifeCycleCORBATest::testFindOrLoad_Component_LaunchContainer()
+{
+  SALOME_LifeCycleCORBA _LCC(&_NS);
+
+  // --- get a local container,
+  //     load an engine, check that the CORBA object is not null
+
+  string containerName = "myContainer";
+  Engines::Component_var mycompo =
+    _LCC.FindOrLoad_Component(containerName.c_str(),"SalomeTestComponent");
+  CPPUNIT_ASSERT(!CORBA::is_nil(mycompo));
+
+  // --- check narrow
+
+  Engines::TestComponent_var m1;
+  m1 = Engines::TestComponent::_narrow(mycompo);
+  CPPUNIT_ASSERT(!CORBA::is_nil(m1));
+}
+
+// ============================================================================
+/*!
+ * Check FindOrLoad_Component.
+ * - Call 2 times FindOrLoad_Component with the same parameters
+ * - check if we get the same engine
+ */
+// ============================================================================
+
+void
+LifeCycleCORBATest::testFindOrLoad_Component_SameInstance()
+{
+  SALOME_LifeCycleCORBA _LCC(&_NS);
+
+  // --- get a local container,
+  //     load an engine, check that the CORBA object is not null
+
+  string containerName = "myContainer";
+
+  Engines::Component_var mycompo1 =
+    _LCC.FindOrLoad_Component(containerName.c_str(),"SalomeTestComponent");
+  CPPUNIT_ASSERT(!CORBA::is_nil(mycompo1));
+
+  Engines::Component_var mycompo2 =
+    _LCC.FindOrLoad_Component(containerName.c_str(),"SalomeTestComponent");
+  CPPUNIT_ASSERT(!CORBA::is_nil(mycompo2));
+
+  // --- check narrow
+
+  Engines::TestComponent_var m1;
+  m1 = Engines::TestComponent::_narrow(mycompo1);
+  CPPUNIT_ASSERT(!CORBA::is_nil(m1));
+
+  Engines::TestComponent_var m2;
+  m2 = Engines::TestComponent::_narrow(mycompo2);
+  CPPUNIT_ASSERT(!CORBA::is_nil(m2));
+
+  // --- check equality of instance names
+
+  string name1 = m1->instanceName();
+  string name2 = m2->instanceName();
+  CPPUNIT_ASSERT_EQUAL(name1, name2);
+}
+
+// ============================================================================
+/*!
+ * Check FindOrLoad_Component with Python Component on C++ Container
+ *       load an engine, check that the CORBA object is not null.
+ * - check narrow
+ */
+// ============================================================================
+
+void
+LifeCycleCORBATest::testFindOrLoad_Component_PythonInCppContainer()
+{
+  SALOME_LifeCycleCORBA _LCC(&_NS);
+
+  // --- get a local container,
+  //     load an engine, check that the CORBA object is not null
+
+  string containerName = "myContainer";
+
+  Engines::Component_var mycompo1 =
+    _LCC.FindOrLoad_Component(containerName.c_str(),"SALOME_TestComponentPy");
+  CPPUNIT_ASSERT(!CORBA::is_nil(mycompo1));
+
+  // --- check narrow
+
+  Engines::TestComponent_var m1;
+  m1 = Engines::TestComponent::_narrow(mycompo1);
+  CPPUNIT_ASSERT(!CORBA::is_nil(m1));
+}
+
+// ============================================================================
+/*!
+ * Check FindOrLoad_Component with Python Component on C++ Container
+ * - Call 2 times FindOrLoad_Component with the same parameters
+ * - check if we get the same engine
+ */
+// ============================================================================
+
+void
+LifeCycleCORBATest::testFindOrLoad_Component_PythonSameInstance()
+{
+  SALOME_LifeCycleCORBA _LCC(&_NS);
+
+  // --- get a local container (with a name based on local hostname),
+  //     load an engine, check that the CORBA object is not null
+
+  string containerName = "myContainer";
+
+  Engines::Component_var mycompo1 =
+    _LCC.FindOrLoad_Component(containerName.c_str(),"SALOME_TestComponentPy");
+  CPPUNIT_ASSERT(!CORBA::is_nil(mycompo1));
+
+  Engines::Component_var mycompo2 =
+    _LCC.FindOrLoad_Component(containerName.c_str(),"SALOME_TestComponentPy");
+  CPPUNIT_ASSERT(!CORBA::is_nil(mycompo2));
+
+  // --- check narrow
+
+  Engines::TestComponent_var m1;
+  m1 = Engines::TestComponent::_narrow(mycompo1);
+  CPPUNIT_ASSERT(!CORBA::is_nil(m1));
+
+  Engines::TestComponent_var m2;
+  m2 = Engines::TestComponent::_narrow(mycompo2);
+  CPPUNIT_ASSERT(!CORBA::is_nil(m2));
+
+  // --- check equality of instance names
+
+  string name1 = m1->instanceName();
+  string name2 = m2->instanceName();
+  CPPUNIT_ASSERT_EQUAL(name1, name2);
+}
+
+// ============================================================================
+/*!
+ * Check FindOrLoad_Component with a component name not in catalog.
+ * See list of catalog given to module catalog server.
+ * Here, we work with KERNEL_SRC/resources/KERNELCatalog.xml that contains 
+ * only KERNEL, SalomeTestComponent and SALOME_TestComponentPy
+ */
+// ============================================================================
+
+void
+LifeCycleCORBATest::testFindOrLoad_Component_UnknownInCatalog()
+{
+  SALOME_LifeCycleCORBA _LCC(&_NS);
+
+  // --- get a local container (with a name based on local hostname),
+  //     load an engine, check that the CORBA object is not null
+
+  string containerName = "myContainer";
+
+  Engines::Component_var mycompo1 =
+    _LCC.FindOrLoad_Component(containerName.c_str(),"MyNewComponent");
+  CPPUNIT_ASSERT(CORBA::is_nil(mycompo1));
+}
+
+// ============================================================================
+/*!
+ * Check FindOrLoad_Component with hostname given
+ * - get a local container : getHostName()/componentName,
+ *       load an engine, check that the CORBA object is not null.
+ * - check narrow
+ */
+// ============================================================================
+
+void
+LifeCycleCORBATest::testFindOrLoad_Component_LaunchContainerHostname()
+{
+  SALOME_LifeCycleCORBA _LCC(&_NS);
+
+  // --- get a local container (with a name based on local hostname),
+  //     load an engine, check that the CORBA object is not null
+
+  string containerName = GetHostname();
+  containerName += "/theContainer";
+  DEVTRACE("containerName = " << containerName);
+  Engines::Component_var mycompo =
+    _LCC.FindOrLoad_Component(containerName.c_str(),"SalomeTestComponent");
+  CPPUNIT_ASSERT(!CORBA::is_nil(mycompo));
+
+  // --- check narrow
+
+  Engines::TestComponent_var m1;
+  m1 = Engines::TestComponent::_narrow(mycompo);
+  CPPUNIT_ASSERT(!CORBA::is_nil(m1));
+}
+
+// ============================================================================
+/*!
+ * Check FindOrLoad_Component with and without local hostname given.
+ * We must get the same container, the same instance of component
+ */
+// ============================================================================
+
+void
+LifeCycleCORBATest::testFindOrLoad_Component_SameContainer()
+{
+  SALOME_LifeCycleCORBA _LCC(&_NS);
+
+  // --- get a local container (with a name based on local hostname),
+  //     load an engine, check that the CORBA object is not null
+
+  string containerName = "aContainer";
+
+  Engines::Component_var mycompo1 =
+    _LCC.FindOrLoad_Component(containerName.c_str(),"SalomeTestComponent");
+  CPPUNIT_ASSERT(!CORBA::is_nil(mycompo1));
+
+  containerName = GetHostname();
+  containerName += "/aContainer";
+  DEVTRACE("containerName = " << containerName);
+  Engines::Component_var mycompo2 =
+    _LCC.FindOrLoad_Component(containerName.c_str(),"SalomeTestComponent");
+  CPPUNIT_ASSERT(!CORBA::is_nil(mycompo2));
+
+  // --- check narrow
+
+  Engines::TestComponent_var m1;
+  m1 = Engines::TestComponent::_narrow(mycompo1);
+  CPPUNIT_ASSERT(!CORBA::is_nil(m1));
+
+  Engines::TestComponent_var m2;
+  m2 = Engines::TestComponent::_narrow(mycompo2);
+  CPPUNIT_ASSERT(!CORBA::is_nil(m2));
+
+  // --- check equality of instance names
+
+  string name1 = m1->instanceName();
+  string name2 = m2->instanceName();
+  CPPUNIT_ASSERT_EQUAL(name1, name2);
+
+  // --- check containers are the same servant (same container name+hostname)
+
+  Engines::Container_var c1 = m1->GetContainerRef();
+  CPPUNIT_ASSERT(!CORBA::is_nil(c1));
+  Engines::Container_var c2 = m2->GetContainerRef();
+  CPPUNIT_ASSERT(!CORBA::is_nil(c1));
+  string cname1 = c1->name();
+  string cname2 = c2->name();
+  CPPUNIT_ASSERT_EQUAL(cname1, cname2);
+  string hostname1 = c1->getHostName();
+  string hostname2 = c2->getHostName();
+  CPPUNIT_ASSERT_EQUAL(hostname1, hostname2);
+  CORBA::Long pidc1 = c1->getPID();
+  CORBA::Long pidc2 = c2->getPID();
+  CPPUNIT_ASSERT_EQUAL(pidc1, pidc2);
+}
+
+// ============================================================================
+/*!
+ * Check FindOrLoad_Component: check behaviour when ask for an unknown computer
+ * We must catch a Salome Exception with "unknown host" message
+ */
+// ============================================================================
+
+void
+LifeCycleCORBATest::testFindOrLoad_Component_UnknownMachine()
+{
+  SALOME_LifeCycleCORBA _LCC(&_NS);
+
+  // --- try to get a distant container on an unknown machine (not existing)
+  //     check that the CORBA object is null
+
+  string containerName = "aFarAwayComputer";
+  containerName += "/theContainer";
+//   CPPUNIT_ASSERT_THROW(Engines::Component_var mycompo =
+//                    _LCC.FindOrLoad_Component(containerName.c_str(),"SalomeTestComponent");,SALOME::SALOME_Exception);
+  try
+    {
+      Engines::Component_var mycompo =
+       _LCC.FindOrLoad_Component(containerName.c_str(),"SalomeTestComponent");
+    }
+  catch(const SALOME::SALOME_Exception &ex)
+    {
+      CPPUNIT_ASSERT(true);
+//       string expectedMessage = "BAD PARAM";
+//       std::ostream os;
+//       os << ex;
+//       string actualMessage = os.str();
+//       DEVTRACE("actual Exception Message = " << actualMessage);
+//       CPPUNIT_ASSERT(actualMessage.find(expectedMessage) != string::npos);
+    }
+}
+
+// ============================================================================
+/*!
+ * Check FindOrLoad_Component, empty params must give an instance
+ */
+// ============================================================================
+
+void
+LifeCycleCORBATest::testFindOrLoad_Component_ParamsEmpty()
+{
+  SALOME_LifeCycleCORBA _LCC(&_NS);
+
+  Engines::MachineParameters params;
+  _LCC.preSet(params);
+  Engines::Component_var mycompo =
+    _LCC.FindOrLoad_Component(params,"SalomeTestComponent");
+  CPPUNIT_ASSERT(!CORBA::is_nil(mycompo));
+
+  // --- check narrow
+
+  Engines::TestComponent_var m1;
+  m1 = Engines::TestComponent::_narrow(mycompo);
+}
+
+// ============================================================================
+/*!
+ * Check FindOrLoad_Component params = local container 
+ */
+// ============================================================================
+
+void
+LifeCycleCORBATest::testFindOrLoad_Component_ParamsLocalContainer()
+{
+  SALOME_LifeCycleCORBA _LCC(&_NS);
+
+  Engines::MachineParameters params;
+  _LCC.preSet(params);
+  string hostname=GetHostname();
+  params.hostname=hostname.c_str();
+  Engines::Component_var mycompo =
+    _LCC.FindOrLoad_Component(params,"SalomeTestComponent");
+  CPPUNIT_ASSERT(!CORBA::is_nil(mycompo));
+
+  // --- check narrow
+
+  Engines::TestComponent_var m1;
+  m1 = Engines::TestComponent::_narrow(mycompo);
+
+  // --- check that container is on local computer
+
+  CPPUNIT_ASSERT(!CORBA::is_nil(m1));
+  Engines::Container_var c1 = m1->GetContainerRef();
+  CPPUNIT_ASSERT(!CORBA::is_nil(c1));
+  string hostname1 = c1->getHostName();
+  CPPUNIT_ASSERT_EQUAL(hostname1, GetHostname());
+}
+
+
+// ============================================================================
+/*!
+ * Check FindOrLoad_Component params = containerName
+ */
+// ============================================================================
+
+void
+LifeCycleCORBATest::testFindOrLoad_Component_ParamsContainerName()
+{
+  SALOME_LifeCycleCORBA _LCC(&_NS);
+
+  Engines::MachineParameters params;
+  _LCC.preSet(params);
+  string containerName = "myContainer";
+  params.container_name = containerName.c_str();
+  Engines::Component_var mycompo =
+    _LCC.FindOrLoad_Component(params,"SalomeTestComponent");
+  CPPUNIT_ASSERT(!CORBA::is_nil(mycompo));
+
+  // --- check narrow
+
+  Engines::TestComponent_var m1;
+  m1 = Engines::TestComponent::_narrow(mycompo);
+
+  // --- check that container has good name
+
+  CPPUNIT_ASSERT(!CORBA::is_nil(m1));
+  Engines::Container_var c1 = m1->GetContainerRef();
+  CPPUNIT_ASSERT(!CORBA::is_nil(c1));
+  string hostname1 = c1->getHostName();
+  CPPUNIT_ASSERT_EQUAL(hostname1, GetHostname());
+  string cname1 = c1->name();
+  CPPUNIT_ASSERT(cname1.find(containerName) != string::npos);
+}
+
+// ============================================================================
+/*!
+ * Check FindOrLoad_Component on remote computer
+ */
+// ============================================================================
+
+void
+LifeCycleCORBATest::testFindOrLoad_Component_RemoteComputer()
+{
+  SALOME_LifeCycleCORBA _LCC(&_NS);
+
+  string remoteHost = GetRemoteHost();
+
+  string containerName = remoteHost;
+  containerName += "/aContainer";
+  DEVTRACE("containerName = " << containerName);
+  Engines::Component_var mycompo1 =
+    _LCC.FindOrLoad_Component(containerName.c_str(),"SalomeTestComponent");
+  CPPUNIT_ASSERT_MESSAGE("Test validity requires connection to remote "\
+                        "computers from ResourcesCatalog",
+                        !CORBA::is_nil(mycompo1));
+
+  // --- check narrow
+
+  Engines::TestComponent_var m1;
+  m1 = Engines::TestComponent::_narrow(mycompo1);
+
+  // --- check that container is on good computer
+
+  CPPUNIT_ASSERT(!CORBA::is_nil(m1));
+  Engines::Container_var c1 = m1->GetContainerRef();
+  CPPUNIT_ASSERT(!CORBA::is_nil(c1));
+  string hostname1 = c1->getHostName();
+  CPPUNIT_ASSERT_EQUAL(hostname1, remoteHost);
+}
+
+// ============================================================================
+/*!
+ * Check FindOrLoad_Component with params on remote computer
+ * params empty except hostname 
+ */
+// ============================================================================
+
+void
+LifeCycleCORBATest::testFindOrLoad_Component_ParamsRemoteComputer()
+{
+  SALOME_LifeCycleCORBA _LCC(&_NS);
+
+  string remoteHost = GetRemoteHost();
+
+  Engines::MachineParameters params;
+  _LCC.preSet(params); 
+  params.hostname = remoteHost.c_str();
+
+  Engines::Component_var mycompo1 =
+    _LCC.FindOrLoad_Component(params,"SalomeTestComponent");
+  CPPUNIT_ASSERT_MESSAGE("Test validity requires connection to remote "\
+                        "computers from ResourcesCatalog",
+                        !CORBA::is_nil(mycompo1));
+
+  // --- check narrow
+
+  Engines::TestComponent_var m1;
+  m1 = Engines::TestComponent::_narrow(mycompo1);
+
+  // --- check that container is on good computer
+
+  CPPUNIT_ASSERT(!CORBA::is_nil(m1));
+  Engines::Container_var c1 = m1->GetContainerRef();
+  CPPUNIT_ASSERT(!CORBA::is_nil(c1));
+  string hostname1 = c1->getHostName();
+  CPPUNIT_ASSERT_EQUAL(hostname1, remoteHost);
+}
+
+// ============================================================================
+/*!
+ * Check FindOrLoad_Component with params on remote computer
+ * params empty except hostname and container_name
+ */
+// ============================================================================
+
+void
+LifeCycleCORBATest::testFindOrLoad_Component_ParamsRemoteComputer2()
+{
+  SALOME_LifeCycleCORBA _LCC(&_NS);
+
+  string remoteHost = GetRemoteHost();
+
+  Engines::MachineParameters params;
+  _LCC.preSet(params); 
+  params.hostname = remoteHost.c_str();
+  params.container_name = "anotherContainer";
+
+  Engines::Component_var mycompo1 =
+    _LCC.FindOrLoad_Component(params,"SalomeTestComponent");
+  CPPUNIT_ASSERT_MESSAGE("Test validity requires connection to remote "\
+                        "computers from ResourcesCatalog",
+                        !CORBA::is_nil(mycompo1));
+
+  // --- check narrow
+
+  Engines::TestComponent_var m1;
+  m1 = Engines::TestComponent::_narrow(mycompo1);
+
+  // --- check that container is on good computer
+
+  CPPUNIT_ASSERT(!CORBA::is_nil(m1));
+  Engines::Container_var c1 = m1->GetContainerRef();
+  CPPUNIT_ASSERT(!CORBA::is_nil(c1));
+  string hostname1 = c1->getHostName();
+  CPPUNIT_ASSERT_EQUAL(hostname1, remoteHost);
+}
+
+
+
+// ============================================================================
+/*!
+ * Check FindOrLoad_Component params = containerName
+ */
+// ============================================================================
+
+// void
+// LifeCycleCORBATest::testFindOrLoad_Component_()
+// {
+// }
+
+
+
+
+
+
+
+
+// ============================================================================
+/*!
+ *  Get a remote HostName in the Resource Catalog
+ */
+// ============================================================================
+
+string LifeCycleCORBATest::GetRemoteHost()
+{
+  SALOME_LifeCycleCORBA _LCC(&_NS);
+
+  CORBA::Object_var obj = _NS.Resolve("/ContainerManager");
+  CPPUNIT_ASSERT(!CORBA::is_nil(obj));
+  Engines::ContainerManager_var containerManager =
+    Engines::ContainerManager::_narrow(obj);
+  CPPUNIT_ASSERT(!CORBA::is_nil(containerManager));
+
+  Engines::MachineParameters params;
+  _LCC.preSet(params);               // empty params to get all the machines
+
+  Engines::MachineList_var hostList =
+    containerManager->GetFittingResources(params,"SalomeTestComponent");
+  CPPUNIT_ASSERT(hostList->length() > 1);
+
+  string localHost = GetHostname();
+  string remoteHost;
+  for (unsigned int i=0; i < hostList->length(); i++)
+    {
+      const char* aMachine = hostList[i];
+      string machine(aMachine);
+      if (machine != localHost)
+       {
+         remoteHost = machine;
+         break;
+       }
+    }
+  CPPUNIT_ASSERT(remoteHost != "");
+  return remoteHost;
+}
diff --git a/src/LifeCycleCORBA/Test/LifeCycleCORBATest.hxx b/src/LifeCycleCORBA/Test/LifeCycleCORBATest.hxx
new file mode 100644 (file)
index 0000000..2f457f0
--- /dev/null
@@ -0,0 +1,63 @@
+
+#ifndef _LIFECYCLECORBATEST_HXX_
+#define _LIFECYCLECORBATEST_HXX_
+
+#include <cppunit/extensions/HelperMacros.h>
+
+#include <SALOMEconfig.h>
+#include CORBA_CLIENT_HEADER(SALOME_Component)
+#include CORBA_CLIENT_HEADER(SALOME_TestComponent)
+#include "SALOME_NamingService.hxx"
+
+class LifeCycleCORBATest : public CppUnit::TestFixture
+{
+  CPPUNIT_TEST_SUITE( LifeCycleCORBATest );
+  CPPUNIT_TEST( testFindOrLoad_Component_LaunchContainer );
+  CPPUNIT_TEST( testFindOrLoad_Component_SameInstance );
+  CPPUNIT_TEST( testFindOrLoad_Component_PythonInCppContainer );
+  CPPUNIT_TEST( testFindOrLoad_Component_PythonSameInstance );
+  CPPUNIT_TEST( testFindOrLoad_Component_UnknownInCatalog );
+  CPPUNIT_TEST( testFindOrLoad_Component_LaunchContainerHostname );
+  CPPUNIT_TEST( testFindOrLoad_Component_SameContainer );
+  CPPUNIT_TEST( testFindOrLoad_Component_UnknownMachine );
+  CPPUNIT_TEST( testFindOrLoad_Component_ParamsEmpty );
+  CPPUNIT_TEST( testFindOrLoad_Component_ParamsLocalContainer );
+  CPPUNIT_TEST( testFindOrLoad_Component_ParamsContainerName );
+  CPPUNIT_TEST( testFindOrLoad_Component_RemoteComputer );
+  CPPUNIT_TEST( testFindOrLoad_Component_ParamsRemoteComputer );
+  CPPUNIT_TEST( testFindOrLoad_Component_ParamsRemoteComputer2 );
+//   CPPUNIT_TEST( testFindOrLoad_Component_ );
+//   CPPUNIT_TEST( testFindOrLoad_Component_ );
+//   CPPUNIT_TEST(  );
+//   CPPUNIT_TEST(  );
+  CPPUNIT_TEST_SUITE_END();
+
+public:
+
+  void setUp();
+  void tearDown();
+
+  void testFindOrLoad_Component_LaunchContainer();
+  void testFindOrLoad_Component_SameInstance();
+  void testFindOrLoad_Component_PythonInCppContainer();
+  void testFindOrLoad_Component_PythonSameInstance();
+  void testFindOrLoad_Component_UnknownInCatalog();
+  void testFindOrLoad_Component_LaunchContainerHostname();
+  void testFindOrLoad_Component_SameContainer();
+  void testFindOrLoad_Component_UnknownMachine();
+  void testFindOrLoad_Component_ParamsEmpty();
+  void testFindOrLoad_Component_ParamsLocalContainer();
+  void testFindOrLoad_Component_ParamsContainerName();
+  void testFindOrLoad_Component_RemoteComputer();
+  void testFindOrLoad_Component_ParamsRemoteComputer();
+  void testFindOrLoad_Component_ParamsRemoteComputer2();
+//   void testFindOrLoad_Component_();
+//   void testFindOrLoad_Component_();
+
+protected:
+  std::string GetRemoteHost();
+  CORBA::ORB_var _orb;
+  SALOME_NamingService _NS;
+};
+
+#endif
diff --git a/src/LifeCycleCORBA/Test/Makefile.in b/src/LifeCycleCORBA/Test/Makefile.in
new file mode 100644 (file)
index 0000000..dff2dac
--- /dev/null
@@ -0,0 +1,70 @@
+#  SALOMELocalTrace : log on local machine
+#
+#  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
+#  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
+# 
+#  This library is free software; you can redistribute it and/or 
+#  modify it under the terms of the GNU Lesser General Public 
+#  License as published by the Free Software Foundation; either 
+#  version 2.1 of the License. 
+# 
+#  This library is distributed in the hope that it will be useful, 
+#  but WITHOUT ANY WARRANTY; without even the implied warranty of 
+#  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
+#  Lesser General Public License for more details. 
+# 
+#  You should have received a copy of the GNU Lesser General Public 
+#  License along with this library; if not, write to the Free Software 
+#  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
+# 
+#  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
+#
+#
+#
+#  File   : Makefile.in
+#  Author : Paul RASCLE (EDF)
+#  Module : SALOME
+#  $Header$
+
+top_srcdir=@top_srcdir@
+top_builddir=../../..
+srcdir=@srcdir@
+VPATH=.:@srcdir@:@top_srcdir@/idl
+
+
+@COMMENCE@
+
+# header files  
+EXPORT_HEADERS= LifeCycleCORBATest.hxx
+
+EXPORT_PYSCRIPTS = TestLifeCycleCORBA.py
+
+# Libraries targets
+
+LIB = libLifeCycleCORBATest.la 
+LIB_SRC = LifeCycleCORBATest.cxx
+LIB_CLIENT_IDL = SALOME_Component.idl SALOME_TestComponent.idl \
+                SALOME_Exception.idl
+
+# Executables targets
+
+BIN = TestLifeCycleCORBA
+BIN_SRC = 
+
+CXXFLAGS += @CPPUNIT_INCLUDES@
+CPPFLAGS += @CPPUNIT_INCLUDES@
+
+LIBS= @LIBS@ @CPPUNIT_LIBS@
+
+LDFLAGS+=
+
+LDFLAGSFORBIN+= \
+ -lSALOMELocalTraceTest -lSALOMELocalTrace -lSALOMEBasics \
+ -lSALOMETraceCollectorTest \
+ -lUtilsTest -lOpUtil \
+ -lSalomeNS -lSalomeContainer -lSalomeResourcesManager \
+ -lRegistry -lSalomeNotification \
+ -lLifeCycleCORBATest -lSalomeLifeCycleCORBA
+
+
+@CONCLUDE@
diff --git a/src/LifeCycleCORBA/Test/TestLifeCycleCORBA.cxx b/src/LifeCycleCORBA/Test/TestLifeCycleCORBA.cxx
new file mode 100644 (file)
index 0000000..987e304
--- /dev/null
@@ -0,0 +1,18 @@
+
+// --- include all Unit Test from basics until the present directory
+
+#include "SALOMELocalTraceTest.hxx"
+#include "SALOMETraceCollectorTest.hxx"
+#include "UtilsTest.hxx"
+#include "LifeCycleCORBATest.hxx"
+
+// --- Registers the fixture into the 'registry'
+
+CPPUNIT_TEST_SUITE_REGISTRATION( SALOMELocalTraceTest );
+CPPUNIT_TEST_SUITE_REGISTRATION( SALOMETraceCollectorTest );
+CPPUNIT_TEST_SUITE_REGISTRATION( UtilsTest );
+CPPUNIT_TEST_SUITE_REGISTRATION( LifeCycleCORBATest );
+
+// --- generic Main program from Basic/Test
+
+#include "BasicMainTest.hxx"
diff --git a/src/LifeCycleCORBA/Test/TestLifeCycleCORBA.py b/src/LifeCycleCORBA/Test/TestLifeCycleCORBA.py
new file mode 100644 (file)
index 0000000..a1c7135
--- /dev/null
@@ -0,0 +1,67 @@
+
+import sys, os,signal,string,commands
+import runSalome
+import orbmodule
+import TestKiller
+
+# get SALOME environment :
+
+args, modules_list, modules_root_dir = runSalome.get_config()
+runSalome.set_env(args, modules_list, modules_root_dir)
+
+# set environment for trace in logger
+# (with file, servers may be killed before the write to the file...)
+
+#os.environ["SALOME_trace"] = "file:/tmp/traceUnitTest.log"
+#os.environ["SALOME_trace"] = "local"
+os.environ["SALOME_trace"] = "with_logger"
+
+# launch CORBA naming server
+
+clt=orbmodule.client()
+
+# launch CORBA logger server
+
+myServer=runSalome.LoggerServer(args)
+myServer.run()
+clt.waitLogger("Logger")
+
+# launch notify server
+
+myServer=runSalome.NotifyServer(args,modules_root_dir)
+myServer.run()
+
+# launch registry server
+
+myServer=runSalome.RegistryServer(args)
+myServer.run()
+clt.waitNS("/Registry")
+
+# launch module catalog server
+
+cataServer=runSalome.CatalogServer(args)
+cataServer.setpath(modules_list,modules_root_dir)
+cataServer.run()
+clt.waitNS("/Kernel/ModulCatalog")
+
+# launch container manager server
+
+myCmServer = runSalome.ContainerManagerServer(args)
+myCmServer.setpath(modules_list,modules_root_dir)
+myCmServer.run()
+clt.waitNS("/ContainerManager")
+
+# execute Unit Test
+
+command = ['TestLifeCycleCORBA']
+ret = os.spawnvp(os.P_WAIT, command[0], command)
+
+# kill containers created by the Container Manager
+
+import Engines
+containerManager = clt.waitNS("/ContainerManager",Engines.ContainerManager)
+containerManager.Shutdown()
+
+# kill Test process 
+
+TestKiller.killProcess(runSalome.process_id)
diff --git a/src/LifeCycleCORBA/Test_LifeCycleCORBA.cxx b/src/LifeCycleCORBA/Test_LifeCycleCORBA.cxx
new file mode 100644 (file)
index 0000000..050cd19
--- /dev/null
@@ -0,0 +1,142 @@
+//  SALOME LifeCycleCORBA : implementation of containers and engines life cycle both in Python and C++
+//
+//  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
+//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
+// 
+//  This library is free software; you can redistribute it and/or 
+//  modify it under the terms of the GNU Lesser General Public 
+//  License as published by the Free Software Foundation; either 
+//  version 2.1 of the License. 
+// 
+//  This library is distributed in the hope that it will be useful, 
+//  but WITHOUT ANY WARRANTY; without even the implied warranty of 
+//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
+//  Lesser General Public License for more details. 
+// 
+//  You should have received a copy of the GNU Lesser General Public 
+//  License along with this library; if not, write to the Free Software 
+//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
+// 
+//  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
+//
+//
+//
+//  File   : TestLifeCycleCORBA.cxx
+//  Author : Paul RASCLE, EDF - MARC TAJCHMAN, CEA
+//  Module : SALOME
+//  $Header$
+
+#include <iostream>
+#ifndef WNT
+#include <unistd.h>
+#endif
+#include <SALOMEconfig.h>
+#ifndef WNT
+#include CORBA_CLIENT_HEADER(SALOME_Component)
+#include CORBA_CLIENT_HEADER(SALOME_TestComponent)
+#else
+#include <SALOME_Component.hh>
+#include <SALOME_TestComponent.hh>
+#endif
+#include "SALOME_NamingService.hxx"
+#include "SALOME_LifeCycleCORBA.hxx"
+#include "utilities.h"
+#include "SALOMETraceCollector.hxx"
+#include <OpUtil.hxx>
+
+using namespace std;
+
+int main (int argc, char * argv[])
+{
+
+  try
+    {
+      // Initializing omniORB
+      CORBA::ORB_var orb = CORBA::ORB_init(argc, argv);
+      //      LocalTraceCollector *myThreadTrace = SALOMETraceCollector::instance(orb);
+    
+      // Obtain a reference to the root POA
+      CORBA::Object_var obj = orb->resolve_initial_references("RootPOA") ;
+      PortableServer::POA_var poa = PortableServer::POA::_narrow(obj) ;
+    
+      SALOME_NamingService _NS(orb) ;
+
+      SALOME_LifeCycleCORBA _LCC(&_NS) ;
+
+      // get a local container (with a name based on local hostname),
+      // load an engine, and invoque methods on that engine
+
+      string containerName = GetHostname();
+
+      cout << containerName << endl;
+      cout << "FindOrLoadComponent " + containerName + "/" + "SalomeTestComponent" << endl;
+      MESSAGE("FindOrLoadComponent " + containerName + "/" + "SalomeTestComponent" );
+
+      Engines::Component_var mycompo =
+       _LCC.FindOrLoad_Component(containerName.c_str(),"SalomeTestComponent");
+
+      ASSERT(!CORBA::is_nil(mycompo));
+
+      Engines::TestComponent_var m1;
+      m1 = Engines::TestComponent::_narrow(mycompo);
+
+      ASSERT(!CORBA::is_nil(m1));
+
+      SCRUTE(m1->instanceName());
+      MESSAGE("Coucou " << m1->Coucou(1L));
+
+      // get another container (with a fixed name),
+      // load an engine, and invoque methods on that engine
+
+      string containerName2 = "FactoryServerPy";
+
+      Engines::Component_var mycompo2 =
+       _LCC.FindOrLoad_Component(containerName2.c_str(),"SALOME_TestComponentPy");
+
+      ASSERT(!CORBA::is_nil(mycompo2));
+
+      Engines::TestComponent_var m2;
+      m2 = Engines::TestComponent::_narrow(mycompo2);
+
+      ASSERT(!CORBA::is_nil(m2));
+
+      SCRUTE(m2->instanceName());
+      cout << m2->instanceName() << endl;
+      MESSAGE("Coucou " << m2->Coucou(1L));
+
+      Engines::Component_var mycompo3 = _LCC.FindOrLoad_Component("totoPy","SALOME_TestComponentPy");
+      ASSERT(!CORBA::is_nil(mycompo3));
+      Engines::TestComponent_var m3 = Engines::TestComponent::_narrow(mycompo3);
+      ASSERT(!CORBA::is_nil(m3));
+      cout << m3->instanceName() << endl;
+
+      string containerName4 = containerName + "/titiPy";
+      Engines::Component_var mycompo4 = _LCC.FindOrLoad_Component(containerName4.c_str(),"SALOME_TestComponentPy");
+      ASSERT(!CORBA::is_nil(mycompo4));
+      Engines::TestComponent_var m4 = Engines::TestComponent::_narrow(mycompo4);
+      ASSERT(!CORBA::is_nil(m4));
+      cout << m4->instanceName() << endl;
+
+    }
+  catch(CORBA::SystemException& ex)
+    {
+      INFOS("Caught system exception COMM_FAILURE -- unable to contact the object.");
+    }
+#ifndef WNT
+  catch(CORBA::SystemException&)
+    {
+      INFOS("Caught a CORBA::SystemException.");
+    }
+#endif
+  catch(CORBA::Exception&)
+    {
+      INFOS("Caught CORBA::Exception.");
+    }
+  catch(...)
+    {
+      INFOS("Caught unknown exception.");
+    }
+
+  return 0;
+}
+
diff --git a/src/LifeCycleCORBA_SWIG/LifeCycleCORBA.py b/src/LifeCycleCORBA_SWIG/LifeCycleCORBA.py
new file mode 100644 (file)
index 0000000..f88ef87
--- /dev/null
@@ -0,0 +1,41 @@
+#  SALOME LifeCycleCORBA : implementation of containers and engines life cycle both in Python and C++
+#
+#  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
+#  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
+# 
+#  This library is free software; you can redistribute it and/or 
+#  modify it under the terms of the GNU Lesser General Public 
+#  License as published by the Free Software Foundation; either 
+#  version 2.1 of the License. 
+# 
+#  This library is distributed in the hope that it will be useful, 
+#  but WITHOUT ANY WARRANTY; without even the implied warranty of 
+#  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
+#  Lesser General Public License for more details. 
+# 
+#  You should have received a copy of the GNU Lesser General Public 
+#  License along with this library; if not, write to the Free Software 
+#  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
+# 
+#  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
+#
+#
+#
+#  File   : LifeCycleCORBA.py
+#  Author : Paul RASCLE, EDF
+#  Module : SALOME
+#  $Header$
+
+
+import Engines
+from libSALOME_LifeCycleCORBA import *
+
+class LifeCycleCORBA (SALOME_LifeCycleCORBA):
+
+    def __init__(self, orb = None):
+        SALOME_LifeCycleCORBA.__init__(self)
+
+    def FindOrLoadComponent(self, containerName, componentName):
+        return SALOME_LifeCycleCORBA.FindOrLoad_Component(self,
+                                                          containerName,
+                                                          componentName)
diff --git a/src/LifeCycleCORBA_SWIG/Makefile.in b/src/LifeCycleCORBA_SWIG/Makefile.in
new file mode 100644 (file)
index 0000000..20b6d64
--- /dev/null
@@ -0,0 +1,52 @@
+#  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
+#  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
+# 
+#  This library is free software; you can redistribute it and/or 
+#  modify it under the terms of the GNU Lesser General Public 
+#  License as published by the Free Software Foundation; either 
+#  version 2.1 of the License. 
+# 
+#  This library is distributed in the hope that it will be useful, 
+#  but WITHOUT ANY WARRANTY; without even the implied warranty of 
+#  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
+#  Lesser General Public License for more details. 
+# 
+#  You should have received a copy of the GNU Lesser General Public 
+#  License along with this library; if not, write to the Free Software 
+#  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
+# 
+#  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
+#
+#
+#
+#  File   : Makefile.in
+#  Author : Paul RASCLE, EDF
+#  Module : SALOME
+#  $Header$
+
+top_srcdir=@top_srcdir@
+top_builddir=../..
+srcdir=@srcdir@
+VPATH=.:@srcdir@:@top_srcdir@/idl
+
+
+@COMMENCE@
+
+# Libraries targets
+
+LIB = libSALOME_LifeCycleCORBAcmodule.la
+LIB_SRC = 
+
+LIB_CLIENT_IDL = SALOME_Component.idl SALOME_ContainerManager.idl SALOME_Exception.idl
+
+SWIG_DEF = libSALOME_LifeCycleCORBA.i
+
+EXPORT_PYSCRIPTS = libSALOME_LifeCycleCORBA.py LifeCycleCORBA.py TestLifeCycleCORBA.py
+
+CPPFLAGS+= $(PYTHON_INCLUDES)
+
+LIBS+= $(PYTHON_LIBS) -lSalomeLifeCycleCORBA
+
+LDFLAGS+= -lSalomeLifeCycleCORBA
+
+@CONCLUDE@
diff --git a/src/LifeCycleCORBA_SWIG/TestLifeCycleCORBA.py b/src/LifeCycleCORBA_SWIG/TestLifeCycleCORBA.py
new file mode 100644 (file)
index 0000000..147e072
--- /dev/null
@@ -0,0 +1,18 @@
+
+import Engines
+import LifeCycleCORBA
+
+lcc = LifeCycleCORBA.LifeCycleCORBA()
+
+#obj=lcc.FindOrLoad_Component("FactoryServer","SalomeTestComponent")
+#comp=obj._narrow(Engines.TestComponent)
+#comp.Coucou(1)
+
+param={}
+param['hostname']='cli76cc'
+param['container_name']='myContainer'
+smesh=lcc.FindOrLoad_Component(param,'PYHELLO')
+
+container=lcc.FindContainer('myContainer')
+engine=lcc.FindComponent(param,'HELLO')
+geom=lcc.LoadComponent(param,'GEOM')
diff --git a/src/LifeCycleCORBA_SWIG/libSALOME_LifeCycleCORBA.i b/src/LifeCycleCORBA_SWIG/libSALOME_LifeCycleCORBA.i
new file mode 100644 (file)
index 0000000..af9877e
--- /dev/null
@@ -0,0 +1,116 @@
+
+
+%module libSALOME_LifeCycleCORBA
+
+%{
+#include "utilities.h"
+#include "SALOME_LifeCycleCORBA.hxx"
+
+  using namespace std;
+%}
+
+%typemap(python,out) Engines::Container_ptr, Engines::Component_ptr
+{
+  MESSAGE("typemap out on CORBA object ptr");
+  SCRUTE($1);
+
+  // --- Get the Python orb
+
+  PyObject* pdict = PyDict_New();
+  PyDict_SetItemString(pdict, "__builtins__", PyEval_GetBuiltins());
+  PyRun_String("import CORBA", Py_single_input, pdict, pdict);
+  PyRun_String("o = CORBA.ORB_init([''], CORBA.ORB_ID);", Py_single_input,
+                   pdict, pdict);
+  PyObject* orb = PyDict_GetItemString(pdict, "o");
+
+  // --- Get the C++ orb
+
+  int argc = 0;
+  char *xargv = "";
+  char **argv = &xargv;
+  CORBA::ORB_var ORB = CORBA::ORB_init(argc, argv);
+  string s =  ORB->object_to_string($1);
+  SCRUTE(s);
+  PyObject * tmp = PyString_FromString(s.c_str());
+  SCRUTE(tmp);
+  $result = PyObject_CallMethod(orb, "string_to_object", "O", tmp);
+  SCRUTE($result);
+}
+
+
+%typemap(typecheck) const Engines::MachineParameters &
+{
+  $1 = ($input != 0);
+}
+
+%typemap(python,in) const Engines::MachineParameters &
+{
+  printf("typemap in on Engines::MachineParameters\n");
+  //MESSAGE("typemap in on Engines::MachineParameters");
+  //ASSERT (PyDict_Check($input))
+  if (PyDict_Check($input) == 1)
+    {
+      Engines::MachineParameters *param = new Engines::MachineParameters ;
+      param->container_name = CORBA::string_dup("");
+      param->hostname = CORBA::string_dup("");
+      param->OS = CORBA::string_dup("");
+      param->mem_mb = 0;
+      param->cpu_clock = 0;
+      param->nb_proc_per_node = 0;
+      param->nb_node = 0;
+      param->isMPI = false;
+      PyObject *key, *value;
+      int pos = 0;
+      while (PyDict_Next($input, &pos, &key, &value))
+       {
+         char* keystr = PyString_AsString(key);
+         printf("key: %s\n", keystr);
+         if (strcmp(keystr,"container_name")==0)
+           {
+             param->container_name = CORBA::string_dup(PyString_AsString(value));
+           }
+         else if (strcmp(keystr,"hostname")==0)
+           {
+             param->hostname = CORBA::string_dup(PyString_AsString(value));
+           }
+         else if (strcmp(keystr,"OS")==0)
+           {
+             param->OS = CORBA::string_dup(PyString_AsString(value));
+           }
+         else if (strcmp(keystr,"mem_mb")==0)
+           {
+             param->mem_mb = PyLong_AsLong(value);
+           }
+         else if (strcmp(keystr,"cpu_clock")==0)
+           {
+             param->cpu_clock = PyLong_AsLong(value);
+           }
+         else if (strcmp(keystr,"nb_proc_per_node")==0)
+           {
+             param->nb_proc_per_node = PyLong_AsLong(value);
+           }
+         else if (strcmp(keystr,"nb_node")==0)
+           {
+             param->nb_node = PyLong_AsLong(value);
+           }
+         else if (strcmp(keystr,"isMPI")==0)
+           {
+             param->isMPI = PyLong_AsLong(value);
+           }
+       }
+      $1 = param;
+    }
+  else 
+    {
+       printf("pas un dico\n");
+       return NULL;
+    }
+}
+
+%typemap(python,freearg) const Engines::MachineParameters &
+{
+  MESSAGE("delete $1");
+  delete $1;
+}
+
+%include "SALOME_LifeCycleCORBA.hxx"
index f4b6fd53b3d7c6d4f4cc59db87df950c050d9197..4464c835b3601d3118b8ca00112c379b1bf8960e 100644 (file)
 #include "SALOME_Logger_Server.hxx"
 #include <SALOMEconfig.h>
 #include <sys/types.h>
-#include <unistd.h>
-using namespace std;
+#ifndef __WIN32__
+# include <unistd.h>
+#endif
+
+#ifdef WNT
+#include <omnithread/pthread_nt.h>
+#endif
 
 omni_mutex Logger::myLock;
 
@@ -29,7 +34,7 @@ Logger::Logger()
 Logger::Logger(const char *filename)
 {
   //  m_outputFile.open( filename, ios::out | ios::trunc , filebuf::openprot);
-  m_outputFile.open( filename, ios::out | ios::trunc);
+  m_outputFile.open( filename, std::ios::out | std::ios::trunc);
   if (m_outputFile.is_open())
     m_putIntoFile = true;
   else
@@ -46,9 +51,10 @@ void Logger::putMessage(const char* message)
 {
   myLock.lock();
   if (m_putIntoFile)
-    m_outputFile << message << flush;
+
+       m_outputFile << message << std::flush;
   else
-    cout << message;
+    std::cout << message;
   myLock.unlock();
 }
 
@@ -61,13 +67,13 @@ int main(int argc, char **argv)
 {
   if (argc > 2)
     {
-      cout << "usage: SALOME_Logger_Server [output_file]" << endl;
+      std::cout << "usage: SALOME_Logger_Server [output_file]" << std::endl;
       exit(1);
     }
   try
     {
       //Initialize the ORB
-      const long TIMESleep = 500000000;
+      const long TIMESleep = 250000000;
       const int NumberOfTries = 40;
       int i;
       timespec ts_req = {0, TIMESleep};
@@ -82,42 +88,47 @@ int main(int argc, char **argv)
 
       CORBA::ORB_var orb = CORBA::ORB_init(argc, argv) ;
 
-      for (int i = 1; i <= NumberOfTries; i++){        
-       if (i != 1) nanosleep(&ts_req, &ts_rem);
-       try {
-         obj = orb->resolve_initial_references("RootPOA") ;
-         if(!CORBA::is_nil(obj))
-           poa = PortableServer::POA::_narrow(obj) ;
-         pman = poa->the_POAManager();
-         // NB. You can activate the POA before or after
-         // activating objects in that POA.
-         
-         // This activates the object in the root POA (by default), and
-         // returns a reference to it.
-         //NB. You can't use SALOME_NamingService class because it uses MESSAGE macro
-         //Otherwise, you will get segmentation fault.   
-         //Get initial naming context
-         if(!CORBA::is_nil(orb)) 
-           theObj = orb->resolve_initial_references("NameService");
-         //Narrow to NamingContext
-         if (!CORBA::is_nil(theObj))
-           inc = CosNaming::NamingContext::_narrow(theObj);
-       } catch(CORBA::COMM_FAILURE&) {
-         //cout<<"Logger Server: CORBA::COMM_FAILURE: Unable to contact the Naming Service"<<endl;
-       }
-       catch(...) {
-         //cout<<"Logger Server: Unknown exception dealed with Naming Service" <<endl;
-       }
-       if (!CORBA::is_nil(inc)) {
-//       cout<<"Logger Server: Naming Service was found"<<endl; 
-         break;
-       }
+      for (i = 1; i <= NumberOfTries; i++) 
+         {
+#ifndef WNT
+                 if (i != 1) nanosleep(&ts_req, &ts_rem);
+#else
+                 if (i != 1) Sleep(TIMESleep / 1000000);
+#endif
+                 try 
+                 {
+                         obj = orb->resolve_initial_references("RootPOA") ;
+                         if(!CORBA::is_nil(obj))
+                                 poa = PortableServer::POA::_narrow(obj) ;
+                         pman = poa->the_POAManager();
+                         // NB. You can activate the POA before or after
+                         // activating objects in that POA.
+                         
+                         // This activates the object in the root POA (by default), and
+                         // returns a reference to it.
+                         //NB. You can't use SALOME_NamingService class because it uses MESSAGE macro
+                         //Otherwise, you will get segmentation fault.   
+                         //Get initial naming context
+                         if(!CORBA::is_nil(orb)) 
+                                 theObj = orb->resolve_initial_references("NameService");
+                         //Narrow to NamingContext
+                         if (!CORBA::is_nil(theObj))
+                                 inc = CosNaming::NamingContext::_narrow(theObj);
+                 } catch(CORBA::COMM_FAILURE&) {
+                         //cout<<"Logger Server: CORBA::COMM_FAILURE: Unable to contact the Naming Service"<<endl;
+                 } catch(...) {
+                         //cout<<"Logger Server: Unknown exception dealed with Naming Service" <<endl;
+                 }
+                 
+                 if (!CORBA::is_nil(inc)) {
+                         //      cout<<"Logger Server: Naming Service was found"<<endl; 
+                         break;
+                 }
       }
       if (argc == 1)
-       myLogger = new Logger();
+                 myLogger = new Logger();
       else
-       myLogger = new Logger(argv[1]);
-
+                 myLogger = new Logger(argv[1]);
 
       myLoggerRef = myLogger->_this();
       CosNaming::Name name;
@@ -128,29 +139,30 @@ int main(int argc, char **argv)
       pman->activate();   
       orb->run() ;
       orb->destroy() ;
-    }
-  catch(CORBA::COMM_FAILURE& ex) 
-    {
-      cerr << "Caught system exception COMM_FAILURE -- unable to contact the "
-          << "object." << endl;
+    }  
+  catch(CORBA::COMM_FAILURE& ex)
+       {
+      std::cerr << "Caught system exception COMM_FAILURE -- unable to contact the "
+          << "object." << std::endl;
     }
   catch(CORBA::SystemException&) 
     {
-      cerr << "Caught CORBA::SystemException." << endl;
+      std::cerr << "Caught CORBA::SystemException." << std::endl;
     }
   catch(CORBA::Exception&) 
     {
-      cerr << "Caught CORBA::Exception." << endl;
+      std::cerr << "Caught CORBA::Exception." << std::endl;
     }
   catch(omniORB::fatalException& fe) 
     {
-      cerr << "Caught omniORB::fatalException:" << endl;
-      cerr << "  file: " << fe.file() << endl;
-      cerr << "  line: " << fe.line() << endl;
-      cerr << "  mesg: " << fe.errmsg() << endl;
+      std::cerr << "Caught omniORB::fatalException:" << std::endl;
+      std::cerr << "  file: " << fe.file() << std::endl;
+      std::cerr << "  line: " << fe.line() << std::endl;
+      std::cerr << "  mesg: " << fe.errmsg() << std::endl;
     }
   catch(...) 
     {
-      cerr << "Caught unknown exception." << endl;
+      std::cerr << "Caught unknown exception." << std::endl;
     }
+  return 0;
 }
index 4b1441bd119b05858b699ee307e1b8e560461018..086a0f7f9e727100be315f6b6112d03826b0e4f7 100644 (file)
 #if !defined SALOME_Logger_Server_include
 #define SALOME_Logger_Server_include
 
+#ifndef WNT
 #include <fstream.h>
+#else
+#include <fstream>
+#include <iosfwd>
+#endif
 #include <omnithread.h>
 #include "Logger.hh"
 
@@ -35,7 +40,11 @@ private:
        //otherwise all messages will be put into terminal via cout 
         bool m_putIntoFile;
        //ofstream class specialized for disk file output
+#ifndef WNT
         ofstream m_outputFile; 
+#else
+               std::ofstream m_outputFile; 
+#endif
        //synchronisation object
        static omni_mutex myLock;
 };
index 1a33333eb5fe8745887482c3b3695dff4aa6c9b8..1bdf1d73706ac900e38d5bc0e7189b5370e4dc0d 100644 (file)
 #include <iostream>
 using namespace std;
 
+#ifdef WNT
+#include <omnithread/pthread_nt.h>
+#endif
+
 //////////////////////////////////////////////////////////////////////
 // Construction/Destruction
 //////////////////////////////////////////////////////////////////////
@@ -53,7 +57,11 @@ int SALOME_Trace::Initialize(CORBA::ORB_ptr theOrb) {
 
   // searchin for naming service for 0.25*40=10 seconds
   for (i = 1; i <= NumberOfTries; i++) {
+#ifndef WNT
     if (i != 1) nanosleep(&ts_req,&ts_rem);
+#else
+       if (i != 1) Sleep(TIMESleep / 1000000);
+#endif
     try{ 
       if(CORBA::is_nil(obj))
        obj = theOrb->resolve_initial_references("RootPOA");
@@ -62,7 +70,7 @@ int SALOME_Trace::Initialize(CORBA::ORB_ptr theOrb) {
       if (!CORBA::is_nil(theObj))
        inc = CosNaming::NamingContext::_narrow(theObj);
       if (!CORBA::is_nil(inc)) break;
-    } catch( CORBA::COMM_FAILURE& ) {
+    } catch( CORBA::SystemException& ) {
     } catch (...) {
     }
   }
@@ -84,7 +92,11 @@ int SALOME_Trace::Initialize(CORBA::ORB_ptr theOrb) {
     name[0].id=CORBA::string_dup("Logger");    
     
     for(i = 1; i <= NumberOfTries; i++){
+#ifndef WNT
       if (i != 1) nanosleep(&ts_req, &ts_rem);
+#else
+         if (i != 1) Sleep(TIMESleep / 1000000);
+#endif
       try {
        obj = inc->resolve(name);
        if (!CORBA::is_nil(obj)) m_pInterfaceLogger = SALOME_Logger::Logger::_narrow(obj);
index fd507c7c744e69ecad69862f1571d2a5862af930..2b88171d694d3047da0dd0a23f4cbc8904bd8add 100644 (file)
@@ -41,7 +41,7 @@ class SALOME_Trace :
 
               except CosNaming.NamingContext.NotFound, e :
                     if steps == 1: print "Caught exception: Naming Service can't found Logger"
-              except CORBA.COMM_FAILURE, e:
+              except (CORBA.TRANSIENT,CORBA.OBJECT_NOT_EXIST,CORBA.COMM_FAILURE):
                     if steps == 1: print "Caught CORBA::SystemException CommFailure"
               except CORBA.SystemException, e:
                     if steps == 1: print "Caught CORBA::SystemException."
diff --git a/src/Logger/Test/Makefile.in b/src/Logger/Test/Makefile.in
new file mode 100644 (file)
index 0000000..2ff5e39
--- /dev/null
@@ -0,0 +1,61 @@
+#  Logger: CORBA Logger Server
+#
+#  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
+#  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
+# 
+#  This library is free software; you can redistribute it and/or 
+#  modify it under the terms of the GNU Lesser General Public 
+#  License as published by the Free Software Foundation; either 
+#  version 2.1 of the License. 
+# 
+#  This library is distributed in the hope that it will be useful, 
+#  but WITHOUT ANY WARRANTY; without even the implied warranty of 
+#  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
+#  Lesser General Public License for more details. 
+# 
+#  You should have received a copy of the GNU Lesser General Public 
+#  License along with this library; if not, write to the Free Software 
+#  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
+# 
+#  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
+#
+#
+#
+#  File   : Makefile.in
+#  Author : Paul RASCLE (EDF)
+#  Module : SALOME
+#  $Header$
+
+top_srcdir=@top_srcdir@
+top_builddir=../../..
+srcdir=@srcdir@
+VPATH=.:@srcdir@:@top_srcdir@/idl
+
+
+@COMMENCE@
+
+# header files  
+EXPORT_HEADERS=
+
+EXPORT_PYSCRIPTS = TestKiller.py 
+
+# Libraries targets
+
+LIB =
+LIB_SRC =
+
+# Executables targets
+
+BIN =
+BIN_SRC = 
+
+CXXFLAGS += @CPPUNIT_INCLUDES@
+CPPFLAGS += @CPPUNIT_INCLUDES@
+
+LIBS= @LIBS@ @CPPUNIT_LIBS@
+
+LDFLAGS+=
+
+LDFLAGSFORBIN+=
+
+@CONCLUDE@
diff --git a/src/Logger/Test/TestKiller.py b/src/Logger/Test/TestKiller.py
new file mode 100644 (file)
index 0000000..cda030b
--- /dev/null
@@ -0,0 +1,36 @@
+
+import sys, os,signal,string,commands
+
+def killNamingService():
+    """
+    kills omniORB4 Naming Service on local machine.
+    Selects process corresponding to the port used in $OMNIORB_CONFIG file.
+    Works only with a single line $OMNIORB_CONFIG like
+    InitRef = NameService=corbaname::<hostname>:<port>
+    """
+    fic=os.environ['OMNIORB_CONFIG']
+    f=open(fic,'r')
+    line=f.readline()
+    f.close()
+    port=string.split(line,':')[-1][0:4]
+    command='ps -eo pid,command | grep "omniNames -start '+str(port)+'"'
+    pid=string.split(commands.getoutput(command))[0]
+    os.kill(int(pid),signal.SIGKILL)
+
+
+def killProcess(process_id):
+    """
+    kills process on local machine, given a dictionary of running process
+    generated by runSalome.Server() class and derived, (method run).
+    kills also local Naming server.
+    """
+    for pid, cmd in process_id.items():
+        print "stop process %s : %s"% (pid, cmd[0])
+        try:
+            os.kill(int(pid),signal.SIGKILL)
+        except:
+            print "  ---- process %s : %s inexistant"% (pid, cmd[0])
+            pass
+        del process_id[pid]
+        pass
+    killNamingService()
index c190fa2bbecb992e4a176cd12f928fb8b042568a..3b97ad7938dd76dcec8cd55aee9c547c61c620f2 100644 (file)
 #include <iostream.h>
 #include <dlfcn.h>
 #include <stdio.h>
+#include "SALOME_Component_i.hxx"
 #include "MPIContainer_i.hxx"
 #include "SALOME_NamingService.hxx"
 #include "Utils_SINGLETON.hxx"
 #include "OpUtil.hxx"
 #include "utilities.h"
+#include <Python.h>
+#include "Container_init_python.hxx"
 using namespace std;
 
 // L'appel au registry SALOME ne se fait que pour le process 0
@@ -44,18 +47,21 @@ Engines_MPIContainer_i::Engines_MPIContainer_i(int nbproc, int numproc,
 {
   MESSAGE("[" << numproc << "] activate object");
   _id = _poa->activate_object(this);
-  this->_add_ref();
+//   this->_add_ref();
 
   if(numproc==0){
 
-    //   _NS = new SALOME_NamingService(_orb);
-    _NS = SINGLETON_<SALOME_NamingService>::Instance() ;
-    ASSERT(SINGLETON_<SALOME_NamingService>::IsAlreadyExisting()) ;
-    _NS->init_orb( orb ) ;
+    _NS = new SALOME_NamingService();
+//     _NS = SINGLETON_<SALOME_NamingService>::Instance() ;
+//     ASSERT(SINGLETON_<SALOME_NamingService>::IsAlreadyExisting()) ;
+    _NS->init_orb( CORBA::ORB::_duplicate(_orb) ) ;
 
 //     Engines::Container_ptr pCont 
 //       = Engines::Container::_narrow(POA_Engines::MPIContainer::_this());
-    Engines::Container_ptr pCont = Engines::Container::_narrow(_poa->id_to_reference(*_id));
+    CORBA::Object_var obj=_poa->id_to_reference(*_id);
+    Engines::Container_var pCont = Engines::Container::_narrow(obj);
+    string hostname = GetHostname();
+    _containerName = _NS->BuildContainerNameForNS(containerName,hostname.c_str());
     SCRUTE(_containerName);
     _NS->Register(pCont, _containerName.c_str());
   }
@@ -73,122 +79,299 @@ Engines_MPIContainer_i::Engines_MPIContainer_i(int nbproc, int numproc)
 Engines_MPIContainer_i::~Engines_MPIContainer_i(void)
 {
   MESSAGE("[" << _numproc << "] Engines_MPIContainer_i::~Engines_MPIContainer_i()");
-  if( !handle_map.empty() ){
-    MESSAGE("[" << _numproc << "] Engines_MPIContainer_i::~Engines_MPIContainer_i: warning destroy a not empty container");
+}
+
+// Load component
+void Engines_MPIContainer_i::Shutdown()
+{
+  int ip;
+  MESSAGE("[" << _numproc << "] shutdown of MPI Corba Server");
+  if( _numproc == 0 ){
+    _NS->Destroy_FullDirectory(_containerName.c_str());
+    for(ip= 1;ip<_nbproc;ip++)
+      (Engines::MPIContainer::_narrow((*_tior)[ip]))->Shutdown();
   }
+  _orb->shutdown(0);
+
 }
 
-// Start MPI Container
-Engines::MPIContainer_ptr Engines_MPIContainer_i::start_MPIimpl(
-                                        const char* ContainerName,
-                                        CORBA::Short nbproc )
+// Load a component library
+bool Engines_MPIContainer_i::load_component_Library(const char* componentName)
 {
+  if( _numproc == 0 ){
+    // Invocation du chargement du composant dans les autres process
+    for(int ip= 1;ip<_nbproc;ip++)
+      (Engines::MPIContainer::_narrow((*_tior)[ip]))->Asload_component_Library(componentName);
+  }
 
-  char nbp[1024];
+  return Lload_component_Library(componentName);
+}
 
-  MESSAGE("[" << _numproc << "] start_impl argc " << _argc << " ContainerName " << ContainerName
-          << hex << this << dec) ;
-  _numInstanceMutex.lock() ; // lock on the instance number
+void Engines_MPIContainer_i::Asload_component_Library(const char* componentName)
+{
+  Lload_component_Library(componentName);
+}
+
+bool Engines_MPIContainer_i::Lload_component_Library(const char* componentName)
+{
+  string aCompName = componentName;
 
-  CORBA::Object_var obj = Engines::MPIContainer::_nil() ;
-  bool nilvar = true ;
-  try {
-    string cont("/Containers/");
-    cont += machineName() ;
-    cont += "/" ;
-    cont += ContainerName;
-    INFOS("[" << _numproc << "] " << machineName() << " start_impl unknown container " << cont.c_str()
-          << " try to Resolve" );
-    obj = _NS->Resolve( cont.c_str() );
-    nilvar = CORBA::is_nil( obj ) ;
-    if ( nilvar ) {
-      INFOS("[" << _numproc << "] " << machineName() << " start_impl unknown container "
-            << ContainerName);
+  // --- try dlopen C++ component
+
+  string impl_name = string ("lib") + aCompName + string("Engine.so");
+  SCRUTE(impl_name);
+  
+  _numInstanceMutex.lock(); // lock to be alone 
+  // (see decInstanceCnt, finalize_removal))
+  if (_toRemove_map[impl_name]) _toRemove_map.erase(impl_name);
+  if (_library_map[impl_name])
+    {
+      MESSAGE("[" << _numproc << "] Library " << impl_name << " already loaded");
+      _numInstanceMutex.unlock();
+      return true;
     }
+  
+  void* handle;
+  handle = dlopen( impl_name.c_str() , RTLD_LAZY ) ;
+  if ( handle )
+    {
+      _library_map[impl_name] = handle;
+      _numInstanceMutex.unlock();
+      return true;
+    }
+  else
+    {
+      INFOS("[" << _numproc << "] Can't load shared library : " << impl_name);
+      INFOS("[" << _numproc << "] error dlopen: " << dlerror());
+    }
+  _numInstanceMutex.unlock();
+
+  // --- try import Python component
+
+  INFOS("[" << _numproc << "] try import Python component "<<componentName);
+  if (_isSupervContainer)
+    {
+      INFOS("[" << _numproc << "] Supervision Container does not support Python Component Engines");
+      return false;
+    }
+  if (_library_map[aCompName])
+    {
+      return true; // Python Component, already imported
+    }
+  else
+    {
+      Py_ACQUIRE_NEW_THREAD;
+      PyObject *mainmod = PyImport_AddModule("__main__");
+      PyObject *globals = PyModule_GetDict(mainmod);
+      PyObject *pyCont = PyDict_GetItemString(globals, "pyCont");
+      PyObject *result = PyObject_CallMethod(pyCont,
+                                            "import_component",
+                                            "s",componentName);
+      int ret= PyInt_AsLong(result);
+      SCRUTE(ret);
+      Py_RELEASE_NEW_THREAD;
+  
+      if (ret) // import possible: Python component
+       {
+         _library_map[aCompName] = (void *)pyCont; // any non O value OK
+         MESSAGE("[" << _numproc << "] import Python: "<<aCompName<<" OK");
+         return true;
+       }
+    }
+  return false;
+}
+
+// Create an instance of component
+Engines::Component_ptr
+Engines_MPIContainer_i::create_component_instance( const char* componentName,
+                                                  CORBA::Long studyId)
+{
+  if( _numproc == 0 ){
+    // Invocation du chargement du composant dans les autres process
+    for(int ip= 1;ip<_nbproc;ip++)
+      (Engines::MPIContainer::_narrow((*_tior)[ip]))->Ascreate_component_instance(componentName,studyId);
   }
-  catch (ServiceUnreachable&) {
-    INFOS("[" << _numproc << "] " << machineName() << "Caught exception: Naming Service Unreachable");
-  }
-  catch (...) {
-    INFOS("[" << _numproc << "] " << machineName() << "Caught unknown exception.");
+
+  return Lcreate_component_instance(componentName,studyId);
+}
+
+void Engines_MPIContainer_i::Ascreate_component_instance( const char* componentName,
+                                                         CORBA::Long studyId)
+{
+  Lcreate_component_instance(componentName,studyId);
+}
+
+Engines::Component_ptr
+Engines_MPIContainer_i::Lcreate_component_instance( const char* genericRegisterName, CORBA::Long studyId)
+{
+  if (studyId < 0) {
+    INFOS("studyId must be > 0 for mono study instance, =0 for multiStudy");
+    return Engines::Component::_nil() ;
   }
-  if ( !nilvar ) {
+
+  Engines::Component_var iobject = Engines::Component::_nil() ;
+  Engines::MPIObject_var pobj;
+
+  string aCompName = genericRegisterName;
+  if (_library_map[aCompName]) { // Python component
+    if (_isSupervContainer) {
+      INFOS("Supervision Container does not support Python Component Engines");
+      return Engines::Component::_nil();
+    }
+    _numInstanceMutex.lock() ; // lock on the instance number
+    _numInstance++ ;
+    int numInstance = _numInstance ;
     _numInstanceMutex.unlock() ;
-    MESSAGE("[" << _numproc << "] start_impl container found without new launch") ;
-    return Engines::MPIContainer::_narrow(obj);
-  }
-  int i = 0 ;
-  while ( _argv[ i ] ) {
-    MESSAGE("[" << _numproc << "]            argv" << i << " " << _argv[ i ]) ;
-    i++ ;
+
+    char aNumI[12];
+    sprintf( aNumI , "%d" , numInstance ) ;
+    string instanceName = aCompName + "_inst_" + aNumI ;
+    string component_registerName =
+      _containerName + "/" + instanceName;
+
+    Py_ACQUIRE_NEW_THREAD;
+    PyObject *mainmod = PyImport_AddModule("__main__");
+    PyObject *globals = PyModule_GetDict(mainmod);
+    PyObject *pyCont = PyDict_GetItemString(globals, "pyCont");
+    PyObject *result = PyObject_CallMethod(pyCont,
+                                          "create_component_instance",
+                                          "ssl",
+                                          aCompName.c_str(),
+                                          instanceName.c_str(),
+                                          studyId);
+    string iors = PyString_AsString(result);
+    SCRUTE(iors);
+    Py_RELEASE_NEW_THREAD;
+  
+    CORBA::Object_var obj = _orb->string_to_object(iors.c_str());
+    iobject = Engines::Component::_narrow( obj ) ;
+    pobj = Engines::MPIObject::_narrow(obj) ;
+    if( _numproc == 0 )
+      _NS->Register(iobject, component_registerName.c_str()) ;
+    // Root recupere les ior des composants des autre process
+    BCastIOR(_orb,pobj,false);
+
+    return iobject._retn();
   }
-  sprintf(nbp,"mpirun -np %d SALOME_MPIContainer ",nbproc);
-  string shstr(nbp);
-  shstr += ContainerName ;
-  if ( _argc == 4 ) {
-    shstr += " " ;
-    shstr += _argv[ 2 ] ;
-    shstr += " " ;
-    shstr += _argv[ 3 ] ;
+  
+  //--- try C++
+
+  string impl_name = string ("lib") + genericRegisterName +string("Engine.so");
+  void* handle = _library_map[impl_name];
+  if ( !handle ) {
+    INFOS("shared library " << impl_name <<"must be loaded before instance");
+    return Engines::Component::_nil() ;
   }
-  shstr += " > /tmp/" ;
-  shstr += ContainerName ;
-  shstr += ".log 2>&1 &" ;
-  MESSAGE("system(" << shstr << ")") ;
-  int status = system( shstr.c_str() ) ;
-  if (status == -1) {
-    INFOS("[" << _numproc << "] Engines_MPIContainer_i::start_impl SALOME_MPIContainer failed (system command status -1)") ;
+  else {
+    iobject = createMPIInstance(genericRegisterName,
+                               handle,
+                               studyId);
+    return iobject._retn();
   }
-  else if (status == 217) {
-    INFOS("[" << _numproc << "] Engines_MPIContainer_i::start_impl SALOME_MPIContainer failed (system command status 217)") ;
+}
+
+Engines::Component_ptr
+Engines_MPIContainer_i::createMPIInstance(string genericRegisterName,
+                                         void *handle,
+                                         int studyId)
+{
+  Engines::Component_var iobject;
+  Engines::MPIObject_var pobj;
+  // --- find the factory
+
+  string aGenRegisterName = genericRegisterName;
+  string factory_name = aGenRegisterName + string("Engine_factory");
+  SCRUTE(factory_name) ;
+
+  typedef  PortableServer::ObjectId * (*MPIFACTORY_FUNCTION)
+    (int,int,
+     CORBA::ORB_ptr,
+     PortableServer::POA_ptr, 
+     PortableServer::ObjectId *, 
+     const char *, 
+     const char *) ;
+
+  MPIFACTORY_FUNCTION MPIComponent_factory
+    = (MPIFACTORY_FUNCTION) dlsym(handle, factory_name.c_str());
+
+  char *error ;
+  if ( (error = dlerror() ) != NULL) {
+    // Try to load a sequential component
+    MESSAGE("[" << _numproc << "] Try to load a sequential component");
+    _numInstanceMutex.unlock() ;
+    iobject = Engines_Container_i::createInstance(genericRegisterName,handle,studyId);
+    if( CORBA::is_nil(iobject) ) return Engines::Component::_duplicate(iobject);
   }
-  INFOS("[" << _numproc << "] " << machineName() << " Engines_MPIContainer_i::start_impl SALOME_MPIContainer launch done");
-
-  obj = Engines::MPIContainer::_nil() ;
-  try {
-    string cont("/Containers/");
-    cont += machineName() ;
-    cont += "/" ;
-    cont += ContainerName;
-    nilvar = true ;
-    int count = 20 ;
-    while ( nilvar && count >= 0) {
-      sleep( 1 ) ;
-      obj = _NS->Resolve(cont.c_str());
-      nilvar = CORBA::is_nil( obj ) ;
-      if ( nilvar ) {
-        INFOS("[" << _numproc << "] " << count << ". " << machineName()
-              << " start_impl unknown container " << cont.c_str());
-        count -= 1 ;
+
+  // --- create instance
+
+  iobject = Engines::Component::_nil() ;
+
+  try
+    {
+      _numInstanceMutex.lock() ; // lock on the instance number
+      _numInstance++ ;
+      int numInstance = _numInstance ;
+      _numInstanceMutex.unlock() ;
+
+      char aNumI[12];
+      sprintf( aNumI , "%d" , numInstance ) ;
+      string instanceName = aGenRegisterName + "_inst_" + aNumI ;
+      string component_registerName =
+       _containerName + "/" + instanceName;
+
+      // --- Instanciate required CORBA object
+
+      PortableServer::ObjectId *id ; //not owner, do not delete (nore use var)
+      id = (MPIComponent_factory) ( _nbproc,_numproc,_orb, _poa, _id, instanceName.c_str(),
+                                aGenRegisterName.c_str() ) ;
+
+      // --- get reference & servant from id
+
+      CORBA::Object_var obj = _poa->id_to_reference(*id);
+      iobject = Engines::Component::_narrow( obj ) ;
+      pobj = Engines::MPIObject::_narrow(obj) ;
+
+      Engines_Component_i *servant =
+       dynamic_cast<Engines_Component_i*>(_poa->reference_to_servant(iobject));
+      ASSERT(servant);
+      //SCRUTE(servant->pd_refCount);
+      servant->_remove_ref(); // compensate previous id_to_reference 
+      //SCRUTE(servant->pd_refCount);
+      _listInstances_map[instanceName] = iobject;
+      _cntInstances_map[aGenRegisterName] += 1;
+      SCRUTE(aGenRegisterName);
+      SCRUTE(_cntInstances_map[aGenRegisterName]);
+      //SCRUTE(servant->pd_refCount);
+      bool ret_studyId = servant->setStudyId(studyId);
+      ASSERT(ret_studyId);
+
+      // --- register the engine under the name
+      //     containerName(.dir)/instanceName(.object)
+
+      if( _numproc == 0 ){
+       _NS->Register( iobject , component_registerName.c_str() ) ;
+       MESSAGE( component_registerName.c_str() << " bound" ) ;
       }
+      // Root recupere les ior des composants des autre process
+      BCastIOR(_orb,pobj,false);
+
     }
-    _numInstanceMutex.unlock() ;
-    if ( !nilvar ) {
-      MESSAGE("[" << _numproc << "] start_impl container found after new launch of SALOME_MPIContainer") ;
+  catch (...)
+    {
+      INFOS( "Container_i::createInstance exception catched" ) ;
     }
-    return Engines::MPIContainer::_narrow(obj);
-  }
-  catch (ServiceUnreachable&) {
-    INFOS("[" << _numproc << "] " << machineName() << "Caught exception: Naming Service Unreachable");
-  }
-  catch (...) {
-    INFOS("[" << _numproc << "] " << machineName() << "Caught unknown exception.");
-  }
-  _numInstanceMutex.unlock() ;
-  MESSAGE("[" << _numproc << "] start_impl MPI container not found after new launch of SALOME_MPIContainer") ;
-  return Engines::MPIContainer::_nil() ;
+  return iobject._retn();
 }
 
 // Load component
 Engines::Component_ptr Engines_MPIContainer_i::load_impl(const char* nameToRegister,
                                                 const char* componentName)
 {
-  int ip;
-
   if( _numproc == 0 ){
     // Invocation du chargement du composant dans les autres process
-    for(ip= 1;ip<_nbproc;ip++)
-      (Engines::MPIContainer::_narrow((*_tior)[ip]))->SPload_impl(nameToRegister,
+    for(int ip= 1;ip<_nbproc;ip++)
+      (Engines::MPIContainer::_narrow((*_tior)[ip]))->Asload_impl(nameToRegister,
                                                                componentName);
   }
 
@@ -197,7 +380,7 @@ Engines::Component_ptr Engines_MPIContainer_i::load_impl(const char* nameToRegis
 }
 
 // Load component
-void Engines_MPIContainer_i::SPload_impl(const char* nameToRegister,
+void Engines_MPIContainer_i::Asload_impl(const char* nameToRegister,
                                         const char* componentName)
 {
   Lload_impl(nameToRegister,componentName);
@@ -277,7 +460,6 @@ Engines::Component_ptr Engines_MPIContainer_i::Lload_impl(
     _NS->Register(iobject, component_registerName.c_str()) ;
   }
 
-  handle_map[instanceName] = handle;
   _numInstanceMutex.unlock() ;
 
   // Root recupere les ior des composants des autre process
@@ -303,25 +485,20 @@ void Engines_MPIContainer_i::remove_impl(Engines::Component_ptr component_i)
     for(ip= 1;ip<_nbproc;ip++){
       spcptr = Engines::MPIObject::_narrow((*(pcptr->tior()))[ip]);
       cptr = (Engines::Component_ptr)spcptr;
-      (Engines::MPIContainer::_narrow((*_tior)[ip]))->SPremove_impl(cptr);
+      (Engines::MPIContainer::_narrow((*_tior)[ip]))->Asremove_impl(cptr);
     }
   }
 
   Lremove_impl(component_i);
 }
 
-void Engines_MPIContainer_i::SPremove_impl(Engines::Component_ptr component_i)
+void Engines_MPIContainer_i::Asremove_impl(Engines::Component_ptr component_i)
 {
   Lremove_impl(component_i);
 }
 
 void Engines_MPIContainer_i::Lremove_impl(Engines::Component_ptr component_i)
 {
-  int ip;
-  Engines::Component_ptr cptr;
-  Engines::MPIObject_ptr pcptr;
-  Engines::MPIObject_ptr spcptr;
-
   BEGIN_OF("[" << _numproc << "] MPIContainer_i::Lremove_impl");
 
   ASSERT(! CORBA::is_nil(component_i));
@@ -331,19 +508,8 @@ void Engines_MPIContainer_i::Lremove_impl(Engines::Component_ptr component_i)
   component_i->destroy() ;
   MESSAGE("[" << _numproc << "] test key handle_map");
   _numInstanceMutex.lock() ; // lock on the remove on handle_map
-  if (handle_map[instanceName]) // if key does not exist, created & initialized null
-    {
-      remove_map[instanceName] = handle_map[instanceName] ;
-    }
-  else MESSAGE("[" << _numproc << "] no key handle_map");
-  handle_map.erase(instanceName) ;   
   _numInstanceMutex.unlock() ;
   MESSAGE("[" << _numproc << "] list handle_map");
-  map<string, void *>::iterator im ;
-  for (im = handle_map.begin() ; im != handle_map.end() ; im ++)
-    {
-      MESSAGE("[" << _numproc << "] stay " << (*im).first);
-    }
 
   END_OF("[" << _numproc << "] MPIContainer_i::Lremove_impl");
 
@@ -356,13 +522,13 @@ void Engines_MPIContainer_i::finalize_removal()
   if( _numproc == 0 ){
     // Invocation de la destruction du composant dans les autres process
     for(ip= 1;ip<_nbproc;ip++)
-      (Engines::MPIContainer::_narrow((*_tior)[ip]))->SPfinalize_removal();
+      (Engines::MPIContainer::_narrow((*_tior)[ip]))->Asfinalize_removal();
   }
 
   Lfinalize_removal();
 }
 
-void Engines_MPIContainer_i::SPfinalize_removal()
+void Engines_MPIContainer_i::Asfinalize_removal()
 {
   Lfinalize_removal();
 }
@@ -371,33 +537,18 @@ void Engines_MPIContainer_i::Lfinalize_removal()
 {
   BEGIN_OF("[" << _numproc << "] MPIContainer_i::Lfinalize_removal");
 
-  map<string, void *>::iterator im ;
-  // lock on the explore remove_map & dlclose
-  _numInstanceMutex.lock() ; 
-  for (im = remove_map.begin() ; im != remove_map.end() ; im ++)
-    {
-      void * handle = (*im).second ;
-      MESSAGE("[" << _numproc << "] dlclose " << (*im).first);
-      dlclose(handle) ;
-    }
-  MESSAGE("[" << _numproc << "] remove_map.clear()");
-  remove_map.clear() ;  
-  _numInstanceMutex.unlock() ;
+//   map<string, void *>::iterator im ;
+//   // lock on the explore remove_map & dlclose
+//   _numInstanceMutex.lock() ; 
+//   for (im = remove_map.begin() ; im != remove_map.end() ; im ++)
+//     {
+//       void * handle = (*im).second ;
+//       MESSAGE("[" << _numproc << "] dlclose " << (*im).first);
+//       dlclose(handle) ;
+//     }
+//   MESSAGE("[" << _numproc << "] remove_map.clear()");
+//   remove_map.clear() ;  
+//   _numInstanceMutex.unlock() ;
 
   END_OF("[" << _numproc << "] MPIContainer_i::Lfinalize_removal");
 }
-
-// Load component
-void Engines_MPIContainer_i::MPIShutdown()
-{
-  int ip;
-  MESSAGE("[" << _numproc << "] shutdown of Corba Server");
-  if( _numproc == 0 ){
-    for(ip= 1;ip<_nbproc;ip++)
-      (Engines::MPIContainer::_narrow((*_tior)[ip]))->Shutdown();
-  }
-
-  Shutdown();
-
-}
-
index a971b7f201da226ea3da739a2c82a24b63f7da7c..a73af8b38abca7da9993b83df6d704993a11ec59 100644 (file)
@@ -48,38 +48,58 @@ class Engines_MPIContainer_i : public POA_Engines::MPIContainer,
   // Destructor
   ~Engines_MPIContainer_i();
 
-  // Launch a new MPI container from the current container
-  Engines::MPIContainer_ptr start_MPIimpl(const char* ContainerName,
-                                         CORBA::Short nbproc);
+  // shutdown corba server
+  void Shutdown();
+
+  // Load a component library
+  // synchronous version for process 0
+  bool load_component_Library(const char* componentName);
+  // asynchronous version for other process
+  void Asload_component_Library(const char* componentName);
+
+  // Create an instance of component
+  // synchronous version for process 0
+  Engines::Component_ptr
+  create_component_instance( const char* componentName,
+                            CORBA::Long studyId); // 0 for multiStudy
+  // asynchronous version for other process
+  void Ascreate_component_instance( const char* componentName,
+                                 CORBA::Long studyId); // 0 for multiStudy
 
   // Load a component in current MPI container
   // synchronous version for process 0
   Engines::Component_ptr load_impl(const char* nameToRegister,
                                   const char* componentName);
-  // shutdown corba server
-  void MPIShutdown();
-
   // asynchronous version for other process
-  void SPload_impl(const char* nameToRegister, const char* componentName);
+  void Asload_impl(const char* nameToRegister, const char* componentName);
 
   // Unload a component from current MPI container
   // synchronous version for process 0
   void remove_impl(Engines::Component_ptr component_i);
   // asynchronous version for other process
-  void SPremove_impl(Engines::Component_ptr component_i);
+  void Asremove_impl(Engines::Component_ptr component_i);
 
   // synchronous version for process 0
   void finalize_removal();
   // asynchronous version for other process
-  void SPfinalize_removal();
+  void Asfinalize_removal();
 
  private:
   // local version to not duplicate code 
   // called by synchronous and asynchronous version
+  bool Lload_component_Library(const char* componentName);
+  Engines::Component_ptr
+  Lcreate_component_instance( const char* componentName,
+                             CORBA::Long studyId); // 0 for multiStudy
   Engines::Component_ptr Lload_impl(const char* nameToRegister,
                                    const char* componentName);
   void Lremove_impl(Engines::Component_ptr component_i);
   void Lfinalize_removal();
 
+  Engines::Component_ptr
+  createMPIInstance(std::string genericRegisterName,
+                   void *handle,
+                   int studyId);
+
 };
 #endif
index d01e24df8a59ed576221496df095023136301356..6aa39f7ce08ef9a8651b180695877b84ea61e810 100644 (file)
@@ -52,12 +52,15 @@ BIN = SALOME_MPIContainer
 BIN_SRC = 
 BIN_SERVER_IDL = SALOME_MPIObject.idl SALOME_MPIContainer.idl
 
-LDFLAGS+= -lSalomeContainer -lSalomeNS -lRegistry -lOpUtil -lSalomeNotification -lSALOMELocalTrace
+CPPFLAGS+= $(PYTHON_INCLUDES) 
+LDFLAGS+= -lSalomeContainer -lSalomeNS -lRegistry -lOpUtil -lSalomeNotification -lSALOMELocalTrace -lSalomeResourcesManager
 
 ifeq (@WITHMPI@,yes)
+  LIBS += $(PYTHON_LIBS) $(MPI_LIBS)
   CXXFLAGS+=${MPI_INCLUDES}
   CXX_DEPEND_FLAG+=${MPI_INCLUDES}
-  LDFLAGS+= ${MPI_LIBS}
+  LDFLAGSFORBIN= $(LDFLAGS)
+  LIBSFORBIN= $(LIBS)
 endif
 
 @CONCLUDE@
index 52152364e87d181e0fd157abda372b2a4a82c569..bf2322190a7e30cf16008458e622172568d32045 100644 (file)
@@ -4,13 +4,12 @@
 #include "Utils_SINGLETON.hxx"
 #include "utilities.h"
 #include <mpi.h>
-#include "LocalTraceCollector.hxx"
+#include "SALOMETraceCollector.hxx"
 using namespace std;
 
 int main(int argc, char* argv[])
 {
   int nbproc, numproc;
-  int flag;
   Engines_MPIContainer_i * myContainer=NULL;
 
   MPI_Init(&argc,&argv);
@@ -20,7 +19,7 @@ int main(int argc, char* argv[])
   // Initialise the ORB.
   ORB_INIT &init = *SINGLETON_<ORB_INIT>::Instance() ;
   CORBA::ORB_var &orb = init( argc , argv ) ;
-  LocalTraceCollector *myThreadTrace = LocalTraceCollector::instance(orb);
+  //  SALOMETraceCollector *myThreadTrace = SALOMETraceCollector::instance(orb);
  
   BEGIN_OF("[" << numproc << "] " << argv[0])
   try {
@@ -69,7 +68,6 @@ int main(int argc, char* argv[])
     pman->activate();
 
     orb->run();
-    orb->destroy();
 
   }
   catch(CORBA::SystemException&){
@@ -90,12 +88,11 @@ int main(int argc, char* argv[])
 
   if(myContainer)
     delete myContainer;
-  MPI_Initialized(&flag);
-  if(flag)
-    MPI_Finalize();
 
   END_OF("[" << numproc << "] " << argv[0]);
-  delete myThreadTrace;
-  return 0 ;
+  //  delete myThreadTrace;
+
+  MPI_Finalize();
+
 }
 
index c64ecb109433b89435f4d252b44a9209994fa6e7..2b5bb4c7deaadd86e17575855b9f4402ecbd6552 100644 (file)
@@ -32,36 +32,53 @@ VPATH=.:@srcdir@
 
 @COMMENCE@
 
-ifeq (@WITHIHM@,yes)
-SUBDIRS = MSG2QM SALOMELocalTrace SALOMETraceCollector Logger Utils CASCatch PatchQt \
-          GenericObj MEDWrapper NamingService Registry \
-         ModuleCatalog DataTypeCatalog RessourcesCatalog \
-          ResourcesManager Notification  NOTIFICATION_SWIG \
-         Container TestContainer LifeCycleCORBA HDFPersist Prs \
-         VTKFilter OBJECT \
-          TOOLSDS SALOMEDS Event \
-          SALOMEGUI TOOLSGUI Plot2d VTKViewer OCCViewer \
-         SUPERVGraph \
-         Session SALOME_SWIG SALOME_SWIG_WITHOUTIHM SALOME_PY \
-          RegistryDisplay ModuleGenerator SALOME_PYQT Loader Communication
-endif
-
-ifeq (@WITHIHM@,no)
-SUBDIRS = MSG2QM SALOMELocalTrace SALOMETraceCollector Logger Utils CASCatch \
-          GenericObj NamingService Registry \
-         ModuleCatalog DataTypeCatalog RessourcesCatalog \
-         ResourcesManager Notification  NOTIFICATION_SWIG \
-         Container TestContainer LifeCycleCORBA HDFPersist Prs \
-          TOOLSDS SALOMEDS Event \
-          SALOME_SWIG_WITHOUTIHM ModuleGenerator Loader Communication
-endif
+SUBDIRS = \
+ Basics \
+ SALOMELocalTrace \
+ CASCatch \
+ HDFPersist \
+ Logger \
+ SALOMETraceCollector \
+ Utils \
+ NamingService \
+ GenericObj \
+ Registry \
+ ModuleCatalog \
+ DataTypeCatalog \
+ RessourcesCatalog \
+ ResourcesManager \
+ Notification \
+ NOTIFICATION_SWIG \
+ Container \
+ TestContainer \
+ LifeCycleCORBA \
+ LifeCycleCORBA_SWIG \
+ SALOMEDSClient \
+ TOOLSDS \
+ SALOMEDSImpl \
+ SALOMEDS \
+ KERNEL_PY \
+ ModuleGenerator \
+ Communication 
 
 ifeq (@mpi_ok@,yes)
-  SUBDIRS+= MPIContainer MPILifeCycleCORBA TestMPIContainer
+  SUBDIRS+= MPIContainer TestMPIContainer
 endif
 
 ifeq (@WITH_BATCH@,yes)
   SUBDIRS += Batch Batch_SWIG
 endif
 
+ifeq (@cppunit_ok@,yes)
+ SUBDIRS+= \
+ Basics/Test \
+ SALOMELocalTrace/Test \
+ Logger/Test \
+ SALOMETraceCollector/Test \
+ Utils/Test \
+ LifeCycleCORBA/Test \
+ UnitTests
+endif
+
 @MODULE@
+
index bc4a90babbd56572ef06cd1d21c4e3238c402e61..65f688f973f83fea6c119e9348225db0ed779fbf 100644 (file)
@@ -51,18 +51,22 @@ LIB_SRC = \
                  SALOME_ModuleCatalog_impl.cxx \
                  SALOME_ModuleCatalog_Acomponent_impl.cxx
 
-CXXFLAGS+=@CXXTMPDPTHFLAGS@
+LIB_SERVER_IDL = SALOME_ModuleCatalog.idl SALOME_Exception.idl
+
+CXXFLAGS+=-ftemplate-depth-32
 
 # Executables targets
 # trouble we have client and serveur and build don't known about this with rule
 # in fact client is a test ! So it may go away BIN !
+
 BIN = SALOME_ModuleCatalog_Server SALOME_ModuleCatalog_Client
 BIN_SRC = 
-LIB_CLIENT_IDL = SALOME_ModuleCatalog.idl
-BIN_SERVER_IDL = SALOME_ModuleCatalog.idl
+BIN_SERVER_IDL = SALOME_ModuleCatalog.idl SALOME_Exception.idl
 
 CPPFLAGS+= $(QT_MT_INCLUDES) 
-LDFLAGS+= $(QT_MT_LIBS) -lSalomeNS -lOpUtil -lSALOMELocalTrace
+LDFLAGS+= $(QT_MT_LIBS) -lSalomeNS -lSALOMELocalTrace -lOpUtil -lSALOMEBasics
+
+LDFLAGSFORBIN+=  -lSalomeNS -lSALOMELocalTrace -lOpUtil -lSALOMEBasics
+
 
-LDFLAGSFORBIN= $(LDFLAGS) -lSALOMETraceCollector
 @CONCLUDE@
index ad1c341694a121db358bf5b88dec0dd8580e8f2e..228c4953809ec02110c02b1cd00490e33bf9a95f 100644 (file)
@@ -493,16 +493,24 @@ void SALOME_ModuleCatalog_AcomponentImpl::duplicate
   // duplicate out Parameters
   _length = S_in.ServiceoutParameter.length();
   S_out.ServiceoutParameter.length(_length);
-  
+
+#ifndef WNT  
   for (unsigned int ind2 = 0; ind2 < _length ; ind2 ++)
+#else
+  for (ind2 = 0; ind2 < _length ; ind2 ++)
+#endif
     duplicate(S_out.ServiceoutParameter[ind2],
              S_in.ServiceoutParameter[ind2]);
   
   // duplicate in DataStreamParameters
   _length = S_in.ServiceinDataStreamParameter.length();
   S_out.ServiceinDataStreamParameter.length(_length);
-  
+
+#ifndef WNT
   for (unsigned int ind2 = 0; ind2 < _length ; ind2 ++)
+#else
+  for (ind2 = 0; ind2 < _length ; ind2 ++)
+#endif
     duplicate(S_out.ServiceinDataStreamParameter[ind2],
              S_in.ServiceinDataStreamParameter[ind2]);
   
@@ -511,7 +519,11 @@ void SALOME_ModuleCatalog_AcomponentImpl::duplicate
   if(MYDEBUG) SCRUTE(_length);
   S_out.ServiceoutDataStreamParameter.length(_length);
   
+#ifndef WNT
   for (unsigned int ind2 = 0; ind2 < _length ; ind2 ++)
+#else
+  for (ind2 = 0; ind2 < _length ; ind2 ++)
+#endif
     duplicate(S_out.ServiceoutDataStreamParameter[ind2],
              S_in.ServiceoutDataStreamParameter[ind2]);
 }
index 4580350ae1e14baaa06a2f90c9349e5cff9cf64c..e56d8a3fbc622acdfc2f8f4d0885a78fb66b0551 100644 (file)
 
 #include CORBA_SERVER_HEADER(SALOME_ModuleCatalog)
 
-class SALOME_ModuleCatalog_AcomponentImpl: public POA_SALOME_ModuleCatalog::Acomponent,
+#if defined MODULECATALOG_EXPORTS
+#if defined WIN32
+#define MODULECATALOG_EXPORT __declspec( dllexport )
+#else
+#define MODULECATALOG_EXPORT
+#endif
+#else
+#if defined WNT
+#define MODULECATALOG_EXPORT __declspec( dllimport )
+#else
+#define MODULECATALOG_EXPORT
+#endif
+#endif
+
+class MODULECATALOG_EXPORT SALOME_ModuleCatalog_AcomponentImpl: public POA_SALOME_ModuleCatalog::Acomponent,
                       public PortableServer::RefCountServantBase 
 {
 public:
index ee3da570eb6177e3eeb628fa6d84defa921995da..70b1c695e436694ad5c83002603028850025354f 100644 (file)
@@ -26,7 +26,7 @@
 
 /* $Header$ */
 
-#include <iostream.h>
+#include <iostream>
 #include "SALOME_NamingService.hxx"
 #include "SALOME_ModuleCatalog.hh"
 #include <string>
@@ -78,13 +78,21 @@ int main(int argc,char **argv)
    MESSAGE("Get Typed Component list (SUPERV Type)");
    list_typed_composants 
      = Catalogue->GetTypedComponentList(SALOME_ModuleCatalog::SUPERV);
+#ifndef WNT
    for (unsigned int ind = 0; ind < list_typed_composants->length();ind++)
+#else
+   for (ind = 0; ind < list_typed_composants->length();ind++)
+#endif
       MESSAGE("Component SUPERV list : " << list_typed_composants[ind]);
 
    // Get list of couple (component name, component icone)
    SALOME_ModuleCatalog::ListOfIAPP_Affich_var list_composants_icone 
      = Catalogue->GetComponentIconeList();
+#ifndef WNT
    for (unsigned int ind = 0; ind < list_composants_icone->length();ind++)
+#else
+   for (ind = 0; ind < list_composants_icone->length();ind++)
+#endif
      {
        MESSAGE("Component name: " << list_composants_icone[ind].modulename);
        MESSAGE("Component icone: " << list_composants_icone[ind].moduleicone);
index 43701c9832ae8484f1da24c37aaef75e6ca73d7e..add44e49846921c152e2756d8703b59bd4256958 100644 (file)
 #include <stack>
 #include <map>
 
-class SALOME_ModuleCatalog_Handler : public QXmlDefaultHandler 
+#if defined MODULECATALOG_EXPORTS
+#if defined WIN32
+#define MODULECATALOG_EXPORT __declspec( dllexport )
+#else
+#define MODULECATALOG_EXPORT
+#endif
+#else
+#if defined WNT
+#define MODULECATALOG_EXPORT __declspec( dllimport )
+#else
+#define MODULECATALOG_EXPORT
+#endif
+#endif
+
+class MODULECATALOG_EXPORT SALOME_ModuleCatalog_Handler : public QXmlDefaultHandler 
 {
 public:
   //! standard constructor
index ad8cdd43dee065c66351dfab412b57f61f41c811..274de28a1ee4dd06b872ce81b61ccbeb4f6a60cd 100644 (file)
@@ -41,7 +41,7 @@ int main(int argc,char **argv)
 {
   // initialize the ORB
   CORBA::ORB_ptr orb = CORBA::ORB_init (argc, argv);
-  SALOMETraceCollector *myThreadTrace = SALOMETraceCollector::instance(orb);
+  //  LocalTraceCollector *myThreadTrace = SALOMETraceCollector::instance(orb);
   try 
     {
       CosNaming::NamingContext_var _rootContext, catalogContext;
@@ -74,7 +74,11 @@ int main(int argc,char **argv)
       for (int i = 1; i<=NumberOfTries; i++)
        {
          if (i!=1) 
+#ifndef WNT
            a=nanosleep(&ts_req,&ts_rem);
+#else
+           Sleep(TIMESleep/1000000);
+#endif
          try
            { 
              obj = orb->resolve_initial_references("RootPOA");
@@ -85,9 +89,9 @@ int main(int argc,char **argv)
              if(!CORBA::is_nil(orb)) 
                theObj = orb->resolve_initial_references("NameService"); 
            }
-         catch( CORBA::COMM_FAILURE& )
+         catch( CORBA::SystemException& )
            {
-             INFOS( "Module Catalog Server: CORBA::COMM_FAILURE: Unable to contact the Naming Service" );
+             INFOS( "Module Catalog Server: CORBA::SystemException: Unable to contact the Naming Service" );
            }
          if (!CORBA::is_nil(theObj))
            {
@@ -103,7 +107,11 @@ int main(int argc,char **argv)
                      for(int j=1; j<=NumberOfTries; j++)
                        {
                          if (j!=1) 
+#ifndef WNT
                            a=nanosleep(&ts_req, &ts_rem);
+#else
+                           Sleep(TIMESleep/1000000);
+#endif
                          try{
                            object = inc->resolve(name);}
                          catch(CosNaming::NamingContext::NotFound)
@@ -166,6 +174,6 @@ int main(int argc,char **argv)
     INFOS("Caught CORBA::Exception.")
       }
 
-  delete myThreadTrace;
+  //  delete myThreadTrace;
   return 0;
 }
index 845e341dcda6f62634e35b2b1331cb52710ff745..87e57d287f72791873bf320733611b81353707da 100644 (file)
 #include <qfileinfo.h>
 using namespace std;
 
+#include "utilities.h"
+
 #ifdef _DEBUG_
-static int MYDEBUG = 0;
+static int MYDEBUG = 1;
 #else
-static int MYDEBUG = 0;
+static int MYDEBUG = 1;
 #endif
 
 static const char* SEPARATOR    = ":";
@@ -251,7 +253,11 @@ SALOME_ModuleCatalogImpl::GetComponentList()
   
   // The components in the general catalog are taken only if they're
   // not defined in the personal catalog
+#ifndef WNT
   for(unsigned int ind=0; ind < _general_module_list.size();ind++){
+#else
+  for(ind=0; ind < _general_module_list.size();ind++){
+#endif
     _find = false;
     for(unsigned int ind1=0; ind1 < _personal_module_list.size();ind1++){
       // searching if the component is already defined in 
@@ -312,7 +318,11 @@ SALOME_ModuleCatalogImpl::GetComponentIconeList()
   
   // The components in the general catalog are taken only if they're
   // not defined in the personal catalog
+#ifndef WNT
   for(unsigned int ind=0; ind < _general_module_list.size();ind++){
+#else
+  for(ind=0; ind < _general_module_list.size();ind++){
+#endif
     _find = false;
     for(unsigned int ind1=0; ind1 < _personal_module_list.size();ind1++){
       // searching if the component is aleready defined in 
@@ -403,7 +413,11 @@ SALOME_ModuleCatalogImpl::GetTypedComponentList(SALOME_ModuleCatalog::ComponentT
   
   // The components in the general catalog are taken only if they're
   // not defined in the personal catalog
+#ifndef WNT
   for (unsigned int ind=0; ind < _general_module_list.size();ind++)
+#else
+  for (ind=0; ind < _general_module_list.size();ind++)
+#endif
     {
       _find = false;
 
@@ -456,12 +470,12 @@ SALOME_ModuleCatalogImpl::GetComponent(const char* name)
   ParserComponent *C_parser = NULL;
   ParserPathPrefixes *pp = NULL;
 
-  SALOME_ModuleCatalog::Acomponent_ptr compo = NULL;
-  
+  SALOME_ModuleCatalog::Acomponent_ptr compo
+    = SALOME_ModuleCatalog::Acomponent::_nil();
   C_parser = findComponent(s);
   if (C_parser) {
     
-//    DebugParserComponent(*C_parser);
+    //    DebugParserComponent(*C_parser);
 
     SALOME_ModuleCatalog::Component C_corba;
     duplicate(C_corba, *C_parser);
@@ -477,7 +491,6 @@ SALOME_ModuleCatalogImpl::GetComponent(const char* name)
     // return NULL object
     if(MYDEBUG) MESSAGE("Component with name  " << name 
                        << " not found in catalog");
-    compo = NULL;
   }
   
   return compo;
@@ -508,13 +521,15 @@ SALOME_ModuleCatalogImpl::findComponent(const string & name)
 
   if (!C_parser)
     for (unsigned int ind=0; ind < _personal_module_list.size();ind++)
-      if (name.compare(_personal_module_list[ind].name) == 0)
-        {
-          if(MYDEBUG) MESSAGE("Component named " << name 
-                             << " found in the personal catalog");
-         C_parser = &(_personal_module_list[ind]);
-         break;
-       }
+      {
+       if (name.compare(_personal_module_list[ind].name) == 0)
+         {
+           if(MYDEBUG) MESSAGE("Component named " << name 
+                               << " found in the personal catalog");
+           C_parser = &(_personal_module_list[ind]);
+           break;
+         }
+      }
 
   if (!C_parser)
     for (unsigned int ind=0; ind < _general_module_list.size();ind++)
@@ -662,16 +677,24 @@ void SALOME_ModuleCatalogImpl::duplicate
   // duplicate out Parameters
   _length = S_parser.outParameters.size();
   S_corba.ServiceoutParameter.length(_length);
-  
+
+#ifndef WNT
   for (unsigned int ind2 = 0; ind2 < _length ; ind2 ++)
+#else
+  for (ind2 = 0; ind2 < _length ; ind2 ++)
+#endif
     duplicate(S_corba.ServiceoutParameter[ind2],
              S_parser.outParameters[ind2]);
   
   // duplicate in DataStreamParameters
   _length = S_parser.inDataStreamParameters.size();
   S_corba.ServiceinDataStreamParameter.length(_length);
-  
+
+#ifndef WNT
   for (unsigned int ind2 = 0; ind2 < _length ; ind2 ++)
+#else
+  for (ind2 = 0; ind2 < _length ; ind2 ++)
+#endif
     duplicate(S_corba.ServiceinDataStreamParameter[ind2],
              S_parser.inDataStreamParameters[ind2]);
   
@@ -679,8 +702,12 @@ void SALOME_ModuleCatalogImpl::duplicate
   _length = S_parser.outDataStreamParameters.size();
   if(MYDEBUG) SCRUTE(_length);
   S_corba.ServiceoutDataStreamParameter.length(_length);
-  
+
+#ifndef WNT
   for (unsigned int ind2 = 0; ind2 < _length ; ind2 ++)
+#else
+  for (ind2 = 0; ind2 < _length ; ind2 ++)
+#endif
     duplicate(S_corba.ServiceoutDataStreamParameter[ind2],
              S_parser.outDataStreamParameters[ind2]);
 }
@@ -790,7 +817,11 @@ SALOME_ModuleCatalogImpl::_verify_path_prefix(ParserPathPrefixes & pathList)
     }
 
   // Parse if a computer name is twice in the list of computers
+#ifndef WNT
   for (unsigned int ind = 0; ind < _machine_list.size(); ind++)
+#else
+  for (ind = 0; ind < _machine_list.size(); ind++)
+#endif
     {
      for (unsigned int ind1 = ind+1 ; ind1 < _machine_list.size(); ind1++)
        {
index 71209115140ec966680c191caa6fa9636bcee353..aef5c2daf77ee49fd6358cca3e1118942b67ccdb 100644 (file)
@@ -30,7 +30,6 @@
 #ifndef MODULECATALOG_IMPL_H
 #define MODULECATALOG_IMPL_H
 
-#include "utilities.h"
 #include <string>
 #include <map>
 
 #include <SALOMEconfig.h>
 #include CORBA_SERVER_HEADER(SALOME_ModuleCatalog)
 
-class SALOME_ModuleCatalogImpl: public POA_SALOME_ModuleCatalog::ModuleCatalog,
+
+#if defined MODULECATALOG_EXPORTS
+#if defined WIN32
+#define MODULECATALOG_EXPORT __declspec( dllexport )
+#else
+#define MODULECATALOG_EXPORT
+#endif
+#else
+#if defined WNT
+#define MODULECATALOG_EXPORT __declspec( dllimport )
+#else
+#define MODULECATALOG_EXPORT
+#endif
+#endif
+
+class MODULECATALOG_EXPORT SALOME_ModuleCatalogImpl: public POA_SALOME_ModuleCatalog::ModuleCatalog,
                                public PortableServer::RefCountServantBase 
 {
 public:
index a653da09e40be678cf23e3dbe857ffc79541374a..3cf31f9b7514afb93498b871c9deb79c4d05e5c2 100644 (file)
@@ -49,7 +49,7 @@ nb_components = 0
 # catalog=/tmp/myxml.xml
 #--------------------------------------------------
 def getParamValue( param_name, default_value, args ):
-    pattern=param_name+"="
+    pattern="^"+param_name+"="
 
     res = default_value        #initial value
     for opt in args:
@@ -410,12 +410,20 @@ class Component(Tree):
         Tree.__init__(self, 'component', key=name)
         if name is None:  return
                  
-        self.addNamedChild('component-name',       name)
+# ASV : fix for bug PAL8922 (Component name indicated by user in GUI is not taken into account
+       if common_data["COMP_NAME"] != '':
+           self.addNamedChild('component-name', common_data["COMP_NAME"])
+       else:
+           self.addNamedChild('component-name', name)
 
+# ASV : if user name is NOT set, then use component-name instead.  Else - default.
         if common_data["COMP_UNAME"] != '':
             self.addNamedChild('component-username',   common_data["COMP_UNAME"])
         else:
-            self.addNamedChild('component-username',   name)
+            if common_data["COMP_NAME"] != '':
+                self.addNamedChild('component-username', common_data["COMP_NAME"] )
+            else:
+                self.addNamedChild('component-username',   name)
             
         self.addNamedChild('component-type',       common_data["COMP_TYPE"])
         self.addNamedChild('component-author',     common_data["AUTHOR"])
@@ -629,15 +637,15 @@ class ModuleCatalogVisitor (idlvisitor.AstVisitor):
 
         self.currentService = self.currentInterface.createService \
                                        (node.identifier())
-
-        for c in node.parameters():
-            c.accept(self)
             
         node.returnType().accept(self)
         if (self.currentType != "void"):
             self.currentService.createOutParameter \
                 ("return", self.currentType)
             
+        for c in node.parameters():
+            c.accept(self)
+
         for i in node.comments():
             self.currentInterface.comments.append(str(i))
         
@@ -673,7 +681,7 @@ def run(tree, args):
     common_data["ICON"]       = getParamValue("icon",       "",                args)
     common_data["AUTHOR"]     = getParamValue("author",     os.getenv("USER"), args)
     common_data["VERSION"]    = getParamValue("version",    "1",               args)
-    common_data["COMP_NAME"]  = getParamValue("name",       "",                args)
+    common_data["COMP_NAME"]  = getParamValue("name",       "",                args) 
     common_data["COMP_UNAME"] = getParamValue("username",   "",                args)
     common_data["COMP_TYPE"]  = getParamValue("type",       "OTHER",           args)
     common_data["COMP_MULT"]  = getParamValue("multistudy", "1",               args)
index 2951501b1a9ec9f1c8d6b5334cb6eb5a04eebc44..13281780cd83f01f676df7f57a5877fd9f151135 100644 (file)
@@ -48,6 +48,7 @@ LIB_SRC = \
        SALOME_NamingService.cxx \
        ServiceUnreachable.cxx \
        NamingService_WaitForServerReadiness.cxx
+LIB_SERVER_IDL = SALOME_Exception.idl
 
 LDFLAGS+= -lOpUtil
 
index 7cb1a6bce9dafd1f889274d554bb8fcd2c985548..6b150367084f6124f46cab86e529f1d599e6f078 100644 (file)
@@ -66,7 +66,7 @@ void NamingService_WaitForServerReadiness(SALOME_NamingService* NS,
        {
          if (serverName.length() == 0)
            {
-             string curdir = NS->Current_Directory(); // to wait for naming service
+             string dummyadr = NS->getIORaddr(); // to wait for naming service
              found = 1;
              break; // naming service found
            }
@@ -79,13 +79,21 @@ void NamingService_WaitForServerReadiness(SALOME_NamingService* NS,
                  break; // server found, no more try to do
                }
              MESSAGE("Server "<< serverName <<" not yet ready, waiting...");
+#ifndef WNT
              int a = nanosleep(&ts_req,&ts_rem); // wait before retry
+#else
+                 Sleep(TIMESleep/1000000);
+#endif
            }
        }
       catch( ServiceUnreachable& )
        {
          MESSAGE("CORBA::COMM_FAILURE: Naming Service not yet ready, waiting...");
+#ifndef WNT
          int a = nanosleep(&ts_req,&ts_rem); // wait before retry
+#else
+         Sleep(TIMESleep/1000000);
+#endif
        }
     }
   if (!found)
index e65693117f4a495a3fff565e3e84e8b45b42ae20..f5fdd578f14ddca47fa95bf05a311c2f8d7afc54 100644 (file)
 
 #include <string>
 #include "SALOME_NamingService.hxx"
+#ifdef WNT
+#include <SALOME_WNT.hxx>
+#else
+#define SALOME_WNT_EXPORT
+#endif
 
-void NamingService_WaitForServerReadiness(SALOME_NamingService* NS,
+void SALOME_WNT_EXPORT NamingService_WaitForServerReadiness(SALOME_NamingService* NS,
                                          std::string serverName);
 
 #endif
index e939d53418a1be1bff596f676c1f5d4aea076a68..0692af4951adff1b1bccbef8bac49de6fba397ff 100644 (file)
@@ -33,6 +33,7 @@
 
 #include <iostream>
 #include <cstring>
+#include <string>
 
 using namespace std;
 
@@ -69,7 +70,8 @@ SALOME_NamingService::SALOME_NamingService(CORBA::ORB_ptr orb)
 
 SALOME_NamingService::~SALOME_NamingService()
 {
-  MESSAGE("SALOME_NamingService destruction");
+  // Problem MESSAGE with singleton: late destruction, after trace system destruction ?
+  //MESSAGE("SALOME_NamingService destruction");
 }
 
 //----------------------------------------------------------------------
@@ -80,7 +82,8 @@ SALOME_NamingService::~SALOME_NamingService()
 
 void SALOME_NamingService::init_orb(CORBA::ORB_ptr orb)
 {
-  // MESSAGE("SALOME_NamingService initialisation");
+  MESSAGE("SALOME_NamingService initialisation");
+  Utils_Locker lock(&_myMutex);
   _orb = orb ;
   _initialize_root_context();
 }
@@ -100,7 +103,8 @@ void SALOME_NamingService::Register(CORBA::Object_ptr ObjRef,
                                    const char* Path) 
   throw(ServiceUnreachable)
 {
-  // MESSAGE("BEGIN OF Register: "<< Path);
+  MESSAGE("BEGIN OF Register: "<< Path);
+  Utils_Locker lock(&_myMutex);
   int dimension_Path = strlen(Path) + 1;
   char** resultat_resolve_Path = new char* [dimension_Path];
 
@@ -151,9 +155,9 @@ void SALOME_NamingService::Register(CORBA::Object_ptr ObjRef,
        {
          INFOS("!!!Register() : CosNaming::NamingContext::CannotProceed");
        }
-      catch(CORBA::COMM_FAILURE&)
+      catch(CORBA::SystemException&)
        {
-         INFOS("!!!Register() : CORBA::COMM_FAILURE : unable to contact"
+         INFOS("!!!Register() : CORBA::SystemException : unable to contact"
               << " the naming service"); 
          throw ServiceUnreachable();
        }
@@ -218,9 +222,9 @@ void SALOME_NamingService::Register(CORBA::Object_ptr ObjRef,
            {
              INFOS("!!!Register() : CosNaming::NamingContext::InvalidName");
            }
-         catch(CORBA::COMM_FAILURE&)
+         catch(CORBA::SystemException&)
            {
-             INFOS("!!!Register() :CORBA::COMM_FAILURE : unable to contact"
+             INFOS("!!!Register() :CORBA::SystemException : unable to contact"
                   << " the naming service"); 
              throw ServiceUnreachable();
            }
@@ -270,9 +274,9 @@ void SALOME_NamingService::Register(CORBA::Object_ptr ObjRef,
       INFOS("!!!Register() : CosNaming::NamingContext::AlreadyBound, object will be rebind"); 
       _current_context->rebind(_context_name, ObjRef);
     }
-  catch(CORBA::COMM_FAILURE&)
+  catch(CORBA::SystemException&)
     {
-      INFOS("!!!Register() :CORBA::COMM_FAILURE : unable to contact"
+      INFOS("!!!Register() :CORBA::SystemException : unable to contact"
            << " the naming service");
       throw ServiceUnreachable();
     }
@@ -298,7 +302,8 @@ void SALOME_NamingService::Register(CORBA::Object_ptr ObjRef,
 CORBA::Object_ptr SALOME_NamingService::Resolve(const char* Path)
   throw(ServiceUnreachable)
 {
-  //MESSAGE("BEGIN OF Resolve: " << Path);
+  MESSAGE("BEGIN OF Resolve: " << Path);
+  Utils_Locker lock(&_myMutex);
   int dimension_Path = strlen(Path) + 1;
   char** resultat_resolve_Path = new char* [dimension_Path];
 
@@ -352,9 +357,9 @@ CORBA::Object_ptr SALOME_NamingService::Resolve(const char* Path)
     {
       INFOS("!!!Resolve() : CosNaming::NamingContext::InvalidName"); 
     }
-  catch(CORBA::COMM_FAILURE&)
+  catch(CORBA::SystemException&)
     {
-      INFOS("!!!Resolve() :CORBA::COMM_FAILURE : unable to contact"
+      INFOS("!!!Resolve() :CORBA::SystemException : unable to contact"
            << "the naming service");
       throw ServiceUnreachable();
     }
@@ -368,6 +373,162 @@ CORBA::Object_ptr SALOME_NamingService::Resolve(const char* Path)
   return _obj;
 }
 
+//----------------------------------------------------------------------
+/*! Function : ResolveFirst 
+ *  Purpose  : method to get an ObjRef with a symbolic name
+ * \param Path const char* argument like "/path/name"
+ *  search the fist reference like "/path(.dir)/name*(.kind)"
+ *  If the NamingService is out, the exception ServiceUnreachable is thrown 
+
+
+
+
+ * \return the object reference
+ */
+//----------------------------------------------------------------------
+
+CORBA::Object_ptr SALOME_NamingService::ResolveFirst(const char* Path)
+  throw(ServiceUnreachable)
+{
+  MESSAGE("ResolveFirst");
+  Utils_Locker lock(&_myMutex);
+  SCRUTE(Path);
+  string thePath =Path;
+  string basePath ="/";
+  string name = thePath;
+  string::size_type idx = thePath.rfind('/');
+  if (idx != string::npos) // at least one '/' found
+    {
+      basePath = thePath.substr(0,idx);
+      name = thePath.substr(idx+1);
+      SCRUTE(basePath);
+    }
+  SCRUTE(name);
+  CORBA::Object_ptr obj = CORBA::Object::_nil();
+  bool isOk = Change_Directory(basePath.c_str());
+  if (isOk)
+    {
+      vector<string> listElem = list_directory();
+      vector<string>::iterator its = listElem.begin();
+      while (its != listElem.end())
+       {
+         MESSAGE(*its);
+         if ((*its).find(name) == 0)
+           {
+             //string instance = basePath + "/" + *its;
+             return Resolve((*its).c_str());
+           }
+         its++;
+       }
+    }
+  return obj;
+}
+
+//----------------------------------------------------------------------
+/*! Function : Resolve Component  from hostname, containername, componentName and number of prcoessors
+ *  Purpose  : method to get the ObjRef of a component
+ *  If the NamingService is out, the exception ServiceUnreachable is thrown 
+ * \param hostname const char* argument
+ * \param containername const char* argument
+ * \param componentname const char* argument
+ * \param nbproc const int argument
+ * \return the object reference
+ */
+//----------------------------------------------------------------------
+
+CORBA::Object_ptr SALOME_NamingService::ResolveComponent(const char* hostname, const char* containerName, const char* componentName, const int nbproc)
+{
+  MESSAGE("ResolveComponent");
+  Utils_Locker lock(&_myMutex);
+
+  string name="/Containers/";
+  name += hostname;
+  if( strlen(containerName) != 0 ){
+    name += "/";
+    if( nbproc >=1 ){
+      char *newContainerName = new char[strlen(containerName)+8];
+      sprintf(newContainerName,"%s_%d",containerName,nbproc);
+      name += newContainerName;
+    }
+    else
+      name += containerName;
+    name += "/";
+    name += componentName;
+    return ResolveFirst(name.c_str());
+  }
+  else {
+    Change_Directory(name.c_str());
+    vector<string> contList = list_directory();
+    for(unsigned int ind = 0; ind < contList.size(); ind++){
+      name = contList[ind].c_str();
+      name += "/";
+      name += componentName;
+      CORBA::Object_ptr obj = ResolveFirst(name.c_str());
+      if( !CORBA::is_nil(obj) )
+       return obj;
+    }
+    return CORBA::Object::_nil();
+  }
+
+}
+
+string SALOME_NamingService::ContainerName(const char *containerName)
+{
+  string ret;
+
+  if (strlen(containerName)== 0)
+    ret = "FactoryServer";
+  else
+    ret = containerName;
+
+  return ret;
+}
+
+string SALOME_NamingService::ContainerName(const Engines::MachineParameters& params)
+{
+  int nbproc;
+  if( !params.isMPI )
+    nbproc = 0;
+  else if( (params.nb_node <= 0) && (params.nb_proc_per_node <= 0) )
+    nbproc = 1;
+  else if( params.nb_node == 0 )
+    nbproc = params.nb_proc_per_node;
+  else if( params.nb_proc_per_node == 0 )
+    nbproc = params.nb_node;
+  else
+    nbproc = params.nb_node * params.nb_proc_per_node;
+
+  string ret=ContainerName(params.container_name);
+
+  if( nbproc >=1 ){
+    char *suffix = new char[8];
+    sprintf(suffix,"_%d",nbproc);
+    ret += suffix;
+  }
+
+  return ret;
+}
+
+string SALOME_NamingService::BuildContainerNameForNS(const char *containerName, const char *hostname)
+{
+  string ret="/Containers/";
+  ret += hostname;
+  ret+="/";
+  ret+=ContainerName(containerName);
+
+  return ret;
+}
+
+string SALOME_NamingService::BuildContainerNameForNS(const Engines::MachineParameters& params, const char *hostname)
+{
+  string ret="/Containers/";
+  ret += hostname;
+  ret+="/";
+  ret+=ContainerName(params);
+
+  return ret;
+}
+
 //----------------------------------------------------------------------
 /*!  Function : Find
  *  Purpose  : method to research a name from the current directory 
@@ -384,15 +545,16 @@ CORBA::Object_ptr SALOME_NamingService::Resolve(const char* Path)
 int SALOME_NamingService::Find(const char* name)
   throw(ServiceUnreachable)
 {
-  // MESSAGE("BEGIN OF Find " << name);
+  MESSAGE("BEGIN OF Find " << name);
+  Utils_Locker lock(&_myMutex);
   CORBA::Long occurence_number = 0 ; 
   try
     {
       _Find(name,occurence_number);
     }
-  catch(CORBA::COMM_FAILURE&)
+  catch(CORBA::SystemException&)
     {
-      INFOS("!!!Find() : CORBA::COMM_FAILURE : unable to contact"
+      INFOS("!!!Find() : CORBA::SystemException : unable to contact"
           << " the naming service"); 
       throw ServiceUnreachable();
     }
@@ -411,7 +573,8 @@ int SALOME_NamingService::Find(const char* name)
 bool SALOME_NamingService::Create_Directory(const char* Path)
   throw(ServiceUnreachable)
 {
-  //MESSAGE("BEGIN OF Create_Directory");
+  MESSAGE("BEGIN OF Create_Directory");
+  Utils_Locker lock(&_myMutex);
   int dimension_Path = strlen(Path) + 1;
   char** resultat_resolve_Path= new char* [dimension_Path];;
   CORBA::Boolean _return_code = true ;
@@ -495,10 +658,10 @@ bool SALOME_NamingService::Create_Directory(const char* Path)
       _return_code = false;
       INFOS("!!!Create_Directory():CosNaming::NamingContext::InvalidName");
     }
-  catch(CORBA::COMM_FAILURE&)
+  catch(CORBA::SystemException&)
     {
       _return_code = false;
-      INFOS("!!!Register() :CORBA::COMM_FAILURE : unable to contact"
+      INFOS("!!!Register() :CORBA::SystemException : unable to contact"
           << " the naming service"); 
       throw ServiceUnreachable();
     }
@@ -525,7 +688,8 @@ bool SALOME_NamingService::Create_Directory(const char* Path)
 bool SALOME_NamingService::Change_Directory(const char* Path)
   throw(ServiceUnreachable)
 {
-  //MESSAGE("BEGIN OF Change_Directory " << Path);
+  MESSAGE("BEGIN OF Change_Directory " << Path);
+  Utils_Locker lock(&_myMutex);
   int dimension_Path = strlen(Path) + 1;
   char** resultat_resolve_Path = new char* [dimension_Path];
   CORBA::Boolean _return_code = true ;
@@ -588,10 +752,10 @@ bool SALOME_NamingService::Change_Directory(const char* Path)
          _return_code = false;
          INFOS( "!!!Change_Directory() : CosNaming::NamingContext::InvalidName" )
        }
-      catch(CORBA::COMM_FAILURE&)
+      catch(CORBA::SystemException&)
        {
          _return_code = false;
-         INFOS( "!!!Change_Directory() :CORBA::COMM_FAILURE : unable to contact"
+         INFOS( "!!!Change_Directory() :CORBA::SystemException : unable to contact"
               << "the naming service")
          throw ServiceUnreachable();
        }
@@ -617,7 +781,8 @@ bool SALOME_NamingService::Change_Directory(const char* Path)
 char* SALOME_NamingService::Current_Directory()
   throw(ServiceUnreachable)
 {
-  //MESSAGE("BEGIN OF Current_Directory");  
+  MESSAGE("BEGIN OF Current_Directory");  
+  Utils_Locker lock(&_myMutex);
 
   CosNaming::NamingContext_var _ref_context = _current_context;
 
@@ -633,9 +798,9 @@ char* SALOME_NamingService::Current_Directory()
     {
       _current_directory(result_path,i,_ref_context,_continue );
     }
-  catch(CORBA::COMM_FAILURE&)
+  catch(CORBA::SystemException&)
     {
-      INFOS("!!!Current_Directory(): CORBA::COMM_FAILURE : unable to contact"
+      INFOS("!!!Current_Directory(): CORBA::SystemException : unable to contact"
           << " the naming service" )
       throw ServiceUnreachable();
     }
@@ -648,7 +813,11 @@ char* SALOME_NamingService::Current_Directory()
   char* return_Path = new char[length_path +2];
   return_Path[0] = '/' ;
   return_Path[1] = '\0' ;
+#ifndef WNT
   for (int k = 0 ; k <i ;k++) 
+#else
+  for (k = 0 ; k <i ;k++) 
+#endif
     { 
       //SCRUTE(result_path[k])
        strcat(return_Path,result_path[k]);
@@ -672,6 +841,7 @@ void SALOME_NamingService::list()
   throw(ServiceUnreachable)
 {
   MESSAGE("Begin of list");
+  Utils_Locker lock(&_myMutex);
   CosNaming::BindingList_var _binding_list;
   CosNaming::BindingIterator_var _binding_iterator;
   unsigned long nb=0 ; // for using only the BindingIterator to access the bindings
@@ -748,6 +918,8 @@ vector<string> SALOME_NamingService::list_directory()
 vector<string> SALOME_NamingService::list_directory_recurs()
     throw(ServiceUnreachable)
 {
+  MESSAGE("list_directory_recurs");
+  Utils_Locker lock(&_myMutex);
   vector<string> _list ;
   char *currentDir=Current_Directory();
   _list_directory_recurs(_list,0,currentDir);
@@ -768,6 +940,7 @@ void SALOME_NamingService::Destroy_Name(const char* Path)
   throw(ServiceUnreachable)
 {
   MESSAGE("BEGIN OF Destroy_Name");
+  Utils_Locker lock(&_myMutex);
   int dimension_Path = strlen(Path) + 1;
   char** resultat_resolve_Path = new char* [dimension_Path];
 
@@ -817,9 +990,9 @@ void SALOME_NamingService::Destroy_Name(const char* Path)
        {
          INFOS( "!!!Destroy_Name(): CosNaming::NamingContext::CannotProceed" )
        }
-      catch(CORBA::COMM_FAILURE&)
+      catch(CORBA::SystemException&)
        {
-         INFOS( "!!!Destroy_Name() : CORBA::COMM_FAILURE : unable to contact"
+         INFOS( "!!!Destroy_Name() : CORBA::SystemException : unable to contact"
               << " the naming service")
          throw ServiceUnreachable();
        }
@@ -861,9 +1034,9 @@ void SALOME_NamingService::Destroy_Name(const char* Path)
     {
       INFOS( "!!!Destroy_Name() : CosNaming::NamingContext::InvalidName")
     }
-  catch(CORBA::COMM_FAILURE&)
+  catch(CORBA::SystemException&)
     {
-      INFOS( "!!!Destroy_Name() :CORBA::COMM_FAILURE : unable to contact" 
+      INFOS( "!!!Destroy_Name() :CORBA::SystemException : unable to contact" 
           << " the naming service") 
       throw ServiceUnreachable();
     }
@@ -889,6 +1062,7 @@ void SALOME_NamingService::Destroy_Directory(const char* Path)
   throw(ServiceUnreachable)
 {
   MESSAGE("BEGIN OF Destroy_Directory");
+  Utils_Locker lock(&_myMutex);
   int dimension_Path = strlen(Path) + 1;
   char** resultat_resolve_Path = new char* [dimension_Path];
 
@@ -940,9 +1114,9 @@ void SALOME_NamingService::Destroy_Directory(const char* Path)
        {
          INFOS("!!!Destroy_Directory(): CosNaming::NamingContext::CannotProceed" )
        }
-      catch(CORBA::COMM_FAILURE&)
+      catch(CORBA::SystemException&)
        {
-         INFOS( "!!!Destroy_Directory() : CORBA::COMM_FAILURE : unable to contact"
+         INFOS( "!!!Destroy_Directory() : CORBA::SystemException : unable to contact"
               << " the naming service" )
          throw ServiceUnreachable();
        }
@@ -984,9 +1158,9 @@ void SALOME_NamingService::Destroy_Directory(const char* Path)
     {
       INFOS( "!!!Destroy_Directory(): CosNaming::NamingContext::CannotProceed" )
     }
-  catch(CORBA::COMM_FAILURE&)
+  catch(CORBA::SystemException&)
     {
-      INFOS( "!!!Destroy_Directory() : CORBA::COMM_FAILURE : unable to contact"
+      INFOS( "!!!Destroy_Directory() : CORBA::SystemException : unable to contact"
           << " the naming service" )
       throw ServiceUnreachable();
     }
@@ -1003,9 +1177,9 @@ void SALOME_NamingService::Destroy_Directory(const char* Path)
       INFOS( "!!!Destroy_Directory() : CosNaming::NamingContext::NoEmpty "
           << Path << " is not empty" )
     } 
-  catch(CORBA::COMM_FAILURE&)
+  catch(CORBA::SystemException&)
     {
-      INFOS( "!!!Destroy_Directory() :CORBA::COMM_FAILURE : "
+      INFOS( "!!!Destroy_Directory() :CORBA::SystemException : "
           << "unable to contact the naming service") 
       throw ServiceUnreachable();
     }
@@ -1039,9 +1213,9 @@ void SALOME_NamingService::Destroy_Directory(const char* Path)
     {
       INFOS( "!!!Destroy_Directory() : CosNaming::NamingContext::InvalidName")
     }
-  catch(CORBA::COMM_FAILURE&)
+  catch(CORBA::SystemException&)
     {
-      INFOS( "!!!Destroy_Directory() :CORBA::COMM_FAILURE : unable to contact" 
+      INFOS( "!!!Destroy_Directory() :CORBA::SystemException : unable to contact" 
           << " the naming service") 
       throw ServiceUnreachable();
     }
@@ -1053,6 +1227,27 @@ void SALOME_NamingService::Destroy_Directory(const char* Path)
   delete[] resultat_resolve_Path ;
 }
 
+//----------------------------------------------------------------------
+/*! Function : Destroy_Directory.
+ *  Purpose  : method to destroy a directory if it is empty.
+ *  WARNING : The complete Path  to the directory (from the root_context)
+ *  to destroy should be given.
+ *  If the NamingService is out, the exception ServiceUnreachable is thrown.
+ * \param Path const char* arguments
+ */
+//----------------------------------------------------------------------
+
+void SALOME_NamingService::Destroy_FullDirectory(const char* Path)
+  throw(ServiceUnreachable)
+{
+  Change_Directory(Path);
+  vector<string> contList = list_directory();
+  for(unsigned int ind = 0; ind < contList.size(); ind++)
+    Destroy_Name(contList[ind].c_str());
+  Destroy_Directory(Path);
+  Destroy_Name(Path);
+}
+
 //----------------------------------------------------------------------
 /*! Function : _initialize_root_context
  * Purpose  :  method called by constructor to initialize _root_context
@@ -1070,9 +1265,9 @@ void SALOME_NamingService::_initialize_root_context()
       ASSERT(!CORBA::is_nil(_root_context)); 
     }
 
-  catch(CORBA::COMM_FAILURE&)
+  catch(CORBA::SystemException&)
     {
-      INFOS("CORBA::COMM_FAILURE: unable to contact the naming service");
+      INFOS("CORBA::SystemException: unable to contact the naming service");
       throw ServiceUnreachable();
     }
   catch(...)
@@ -1284,7 +1479,7 @@ SALOME_NamingService::_current_directory(char** result_path,
   CosNaming::NamingContext_var _temp_context = _current_context;
  
   _current_context->list(nb, _binding_list, _binding_iterator) ;
-
+  if ( !_binding_iterator->_is_nil() ) {
   while ((_binding_iterator->next_one(_binding)) && _continue) {
     CosNaming::Name _bindingName = _binding->binding_name;
     if (_binding->binding_type == CosNaming::ncontext)
@@ -1324,6 +1519,7 @@ SALOME_NamingService::_current_directory(char** result_path,
       }
   }
   _binding_iterator->destroy();  
+  }    
   // We go to the last directory where an occurence was found
   _current_context = _ref_context ; 
 }
@@ -1383,6 +1579,8 @@ void SALOME_NamingService::_list_directory_recurs(vector<string>& myList, const
 
 //----------------------------------------------------------------------
 
-char * SALOME_NamingService::getIORaddr(){
+char * SALOME_NamingService::getIORaddr()
+{
    return _orb->object_to_string(_root_context);
 }
+
index db9c39e17865a0a55a776342536b465ec57bfac2..d418b47b723fca64214d27bd6f38fc5782c2db56 100644 (file)
 #include <CORBA.h>
 #include <vector>
 #include <string>
+#include "Utils_Mutex.hxx"
 
+#include <SALOMEconfig.h>
+#include CORBA_CLIENT_HEADER(SALOME_ContainerManager)
+#include CORBA_CLIENT_HEADER(SALOME_Component)
 //class ServiceUnreachable;
 #include "ServiceUnreachable.hxx"
 
-class SALOME_NamingService
+#if defined NAMINGSERVICE_EXPORTS
+#if defined WIN32
+#define NAMINGSERVICE_EXPORT __declspec( dllexport )
+#else
+#define NAMINGSERVICE_EXPORT
+#endif
+#else
+#if defined WNT
+#define NAMINGSERVICE_EXPORT __declspec( dllimport )
+#else
+#define NAMINGSERVICE_EXPORT
+#endif
+#endif
+
+class NAMINGSERVICE_EXPORT SALOME_NamingService
 {
 public:
   //! default constructor
@@ -60,6 +78,19 @@ public:
   CORBA::Object_ptr Resolve(const char* Path)
     throw( ServiceUnreachable); 
 
+  //! method to get the ObjRef of a component
+  CORBA::Object_ptr ResolveComponent(const char* hostname, const char* containerName, const char* componentName, const int nbproc=0);
+
+ //! method to get an ObjRef, given a symbolic name without instance suffix "/Path/Name*.kind"
+  CORBA::Object_ptr ResolveFirst(const char* Path)
+    throw( ServiceUnreachable); 
+
+  std::string ContainerName(const char *ContainerName);
+  std::string ContainerName(const Engines::MachineParameters& params);
+
+  std::string BuildContainerNameForNS(const char *ContainerName, const char *hostname);
+  std::string BuildContainerNameForNS(const Engines::MachineParameters& params, const char *hostname);
+
   //! method to research a name from the naming service's current directory 
   int Find(const char* name)
     throw(ServiceUnreachable);
@@ -97,10 +128,15 @@ public:
   virtual void Destroy_Directory(const char* Path)
     throw(ServiceUnreachable);
 
+  //! method to destroy a directory even if it is not empty
+  virtual void Destroy_FullDirectory(const char* Path)
+    throw(ServiceUnreachable);
+
   //! get IORstring naming service address 
   char * getIORaddr();
 
 protected:
+  Utils_Mutex _myMutex;
   CORBA::ORB_ptr _orb;
   CosNaming::NamingContext_var _root_context, _current_context;
 
@@ -134,3 +170,4 @@ protected:
 };
 
 #endif // SALOME_NAMINGSERVICE_H
+
index 2bc3c553ca4cfa4c7969215bbf70fab90c6c338f..ab7f2050d1a6e8ab35a2cf71fba50aca1ceffd84 100644 (file)
@@ -64,7 +64,7 @@ class SALOME_NamingServicePy_i:
              MESSAGE(" Name service not found")
            else:
              ok = 1
-         except CORBA.COMM_FAILURE, ex:
+         except (CORBA.TRANSIENT,CORBA.OBJECT_NOT_EXIST,CORBA.COMM_FAILURE):
            MESSAGE(" Name service not found")
          time.sleep(0.25)
          steps = steps - 1
@@ -100,8 +100,8 @@ class SALOME_NamingServicePy_i:
                 MESSAGE ( "Register : CosNaming.NamingContext.InvalidName" )
             except CosNaming.NamingContext.CannotProceed, ex:
                 MESSAGE ( "Register : CosNaming.NamingContext.CannotProceed" )
-            except CORBA.COMM_FAILURE, ex:
-                MESSAGE ( "Register : CORBA.COMM_FAILURE" )
+            except (CORBA.TRANSIENT,CORBA.OBJECT_NOT_EXIST,CORBA.COMM_FAILURE):
+                MESSAGE ( "Register : CORBA.TRANSIENT,CORBA.OBJECT_NOT_EXIST,CORBA.COMM_FAILURE" )
 
             if _not_exist:
                 # at least one context of the complete path is not created, we had
@@ -132,8 +132,8 @@ class SALOME_NamingServicePy_i:
         except CosNaming.NamingContext.AlreadyBound, ex:
             MESSAGE ( "Register : CosNaming.NamingContext.AlreadyBound, object will be rebind" )
             self._current_context.rebind(_context_name,ObjRef)
-        except CORBA.COMM_FAILURE, ex:
-            MESSAGE ( "Register : CORBA.COMM_FAILURE" )
+        except (CORBA.TRANSIENT,CORBA.OBJECT_NOT_EXIST,CORBA.COMM_FAILURE):
+            MESSAGE ( "Register : CORBA.TRANSIENT,CORBA.OBJECT_NOT_EXIST,CORBA.COMM_FAILURE" )
 
             
     #-------------------------------------------------------------------------
@@ -161,8 +161,8 @@ class SALOME_NamingServicePy_i:
         except CosNaming.NamingContext.CannotProceed, ex:
             MESSAGE ( "Resolve : CosNaming.NamingContext.CannotProceed" )
             self._obj = None
-        except CORBA.COMM_FAILURE, ex:
-            MESSAGE ( "Resolve : CORBA.COMM_FAILURE" )
+        except (CORBA.TRANSIENT,CORBA.OBJECT_NOT_EXIST,CORBA.COMM_FAILURE):
+            MESSAGE ( "Resolve : CORBA.TRANSIENT,CORBA.OBJECT_NOT_EXIST,CORBA.COMM_FAILURE" )
             self._obj = None
         return self._obj
 
@@ -191,8 +191,8 @@ class SALOME_NamingServicePy_i:
                 MESSAGE ( "Create_Directory : CosNaming.NamingContext.InvalidName" )
             except CosNaming.NamingContext.CannotProceed, ex:
                 MESSAGE ( "Create_Directory : CosNaming.NamingContext.CannotProceed" )
-            except CORBA.COMM_FAILURE, ex:
-                MESSAGE ( "Create_Directory : CORBA.COMM_FAILURE" )
+            except (CORBA.TRANSIENT,CORBA.OBJECT_NOT_EXIST,CORBA.COMM_FAILURE):
+                MESSAGE ( "Create_Directory : CORBA.TRANSIENT,CORBA.OBJECT_NOT_EXIST,CORBA.COMM_FAILURE" )
 
  
 
index 2124c76fed75a7b5c455609742d264fdedd733bc..9134e3244ac839b9b2fa4effaed9dc096f2b0e54 100644 (file)
 
 #include "Utils_SALOME_Exception.hxx"
 
+#if defined NAMINGSERVICE_EXPORTS
+#if defined WIN32
+#define NAMINGSERVICE_EXPORT __declspec( dllexport )
+#else
+#define NAMINGSERVICE_EXPORT
+#endif
+#else
+#if defined WNT
+#define NAMINGSERVICE_EXPORT __declspec( dllimport )
+#else
+#define NAMINGSERVICE_EXPORT
+#endif
+#endif
+
 //! exception class for NamingService : ServiceUnreachable
 
-class ServiceUnreachable : public SALOME_Exception
+class NAMINGSERVICE_EXPORT ServiceUnreachable : public SALOME_Exception
 {
 public :
        ServiceUnreachable( void );
index bbbb922948c7a896c31baae5967586d998c3cf56..e55d0abc78a796ba0ada0f60ba349cb5e2a8aaf5 100644 (file)
@@ -50,7 +50,7 @@ CosNA_EventChannel_ptr NOTIFICATION_channel() {
     } catch(CORBA::ORB::InvalidName& ex) {
         MESSAGE("NOTIFICATION Error : service required is invalid [does not exist]");
         return(channel);
-    } catch (CORBA::COMM_FAILURE& ex) {
+    } catch (CORBA::SystemException& ex) {
         MESSAGE("NOTIFICATION Error : caught system exception COMM_FAILURE");
         return(channel);
     } catch (...) {
@@ -70,7 +70,7 @@ CosNA_EventChannel_ptr NOTIFICATION_channel() {
         };
     } catch(CORBA::ORB::InvalidName& ex) {
         MESSAGE("NOTIFICATION Error : invalid name");
-    } catch (CORBA::COMM_FAILURE& ex) {
+    } catch (CORBA::SystemException& ex) {
         MESSAGE("NOTIFICATION Error : caught system exception COMM_FAILURE while resolving event channel name");
     } catch (...) {
         MESSAGE("NOTIFICATION Error : caught exception while resolving event channel name");
index 4e8a08e069a6e3ea7818e15291b0b48a38d03cd7..3bc49294b28e9be4cc469233d7056362b01f2ff8 100644 (file)
 #include "NOTIFICATION_Supplier.hxx"
 #include "NOTIFICATION_Consumer.hxx"
 
-char* NOTIFICATION_date();
-CosNA_EventChannel_ptr NOTIFICATION_channel();
+
+#if defined NOTIFICATION_EXPORTS
+#if defined WIN32
+#define NOTIFICATION_EXPORT __declspec( dllexport )
+#else
+#define NOTIFICATION_EXPORT
+#endif
+#else
+#if defined WNT
+#define NOTIFICATION_EXPORT __declspec( dllimport )
+#else
+#define NOTIFICATION_EXPORT
+#endif
+#endif
+
+NOTIFICATION_EXPORT char* NOTIFICATION_date();
+NOTIFICATION_EXPORT CosNA_EventChannel_ptr NOTIFICATION_channel();
 
 #endif
index 26470597c0bb4611936d0b3c88e1a168745ba8ef..653fca33f7877317460a2f9b8d2e58c702b274ec 100644 (file)
 #ifndef NOTIFICATION_Consumer_HXX
 #define NOTIFICATION_Consumer_HXX
 
-class NOTIFICATION_Consumer: public POA_CosNotifyComm::StructuredPullConsumer {
+#if defined NOTIFICATION_EXPORTS
+#if defined WIN32
+#define NOTIFICATION_EXPORT __declspec( dllexport )
+#else
+#define NOTIFICATION_EXPORT
+#endif
+#else
+#if defined WNT
+#define NOTIFICATION_EXPORT __declspec( dllimport )
+#else
+#define NOTIFICATION_EXPORT
+#endif
+#endif
+
+class NOTIFICATION_EXPORT NOTIFICATION_Consumer: public POA_CosNotifyComm::StructuredPullConsumer {
   public:
     NOTIFICATION_Consumer();
     virtual ~NOTIFICATION_Consumer();
index 77f44d07bcfdb03d49e6a3aaf0b335cfdede9e64..0f7070226ebc7d2256daf194356c062806a55e8c 100644 (file)
 #ifndef NOTIFICATION_Supplier_HXX
 #define NOTIFICATION_Supplier_HXX
 
-class NOTIFICATION_Supplier: public POA_CosNotifyComm::StructuredPushSupplier {
+#if defined NOTIFICATION_EXPORTS
+#if defined WIN32
+#define NOTIFICATION_EXPORT __declspec( dllexport )
+#else
+#define NOTIFICATION_EXPORT
+#endif
+#else
+#if defined WNT
+#define NOTIFICATION_EXPORT __declspec( dllimport )
+#else
+#define NOTIFICATION_EXPORT
+#endif
+#endif
+
+class NOTIFICATION_EXPORT NOTIFICATION_Supplier: public POA_CosNotifyComm::StructuredPushSupplier {
   public:
     NOTIFICATION_Supplier(const char* instanceName, bool notif);
     virtual ~NOTIFICATION_Supplier();
index 8b5eb524ccd1a30abd3cd04532ef7b187e82c670..73b61f60dc47c8f8b3d8fb727eeb5363c9147c4a 100644 (file)
@@ -46,7 +46,7 @@ LIB = libRegistry.la
 LIB_SRC = \
        RegistryConnexion.cxx \
        RegistryService.cxx
-LIB_CLIENT_IDL = SALOME_Registry.idl
+LIB_CLIENT_IDL = SALOME_Registry.idl SALOME_Exception.idl
 
 # Executables targets
 BIN = SALOME_Registry_Server
@@ -55,6 +55,6 @@ BIN_SERVER_IDL = SALOME_Registry.idl
 
 LDFLAGS+= -lSalomeNS -lOpUtil -lSALOMELocalTrace
 
-LDFLAGSFORBIN= $(LDFLAGS) -lSALOMETraceCollector
+LDFLAGSFORBIN= $(LDFLAGS) -lSALOMEBasics
 
 @CONCLUDE@
index bf33e0882160df3254002ade8f6ce16a170cc1f9..de079550f02b23089ff8bb595921d38a9f839fa4 100644 (file)
@@ -98,7 +98,11 @@ RegistryConnexion::~RegistryConnexion()
                _VarComponents->remove( _Id ) ;
        }
        _Id   = 0 ;
+#ifndef WNT
        delete [] _Ior;
+#else
+       delete [] (char*) _Ior;
+#endif
        _Ior = 0;
        _SessionName = "";
        _Name = "" ;
@@ -121,7 +125,7 @@ void RegistryConnexion::add( const char *aName )
                infos.pid       = lesInfos.pid() ;
                infos.machine   = CORBA::string_dup( lesInfos.host_char() ) ;
                infos.adip      = CORBA::string_dup( lesInfos.adip() ) ;
-               infos.uid       = lesInfos.uid() ;
+               infos.uid       = (long)lesInfos.uid() ;
                infos.pwname    = CORBA::string_dup( lesInfos.pwname() ) ;
                infos.tc_start  = lesInfos.start() ;
                infos.tc_hello  = 0 ;
index 5b945cd41ae6aa77674087e02c0cadbf2ee0ab80..c241618ef8730cd152a29be6bd425bbfae5469f9 100644 (file)
 #include CORBA_CLIENT_HEADER(SALOME_Registry)
 #include <string>
 
-class RegistryConnexion
+#if defined REGISTRY_EXPORTS
+#if defined WIN32
+#define REGISTRY_EXPORT __declspec( dllexport )
+#else
+#define REGISTRY_EXPORT
+#endif
+#else
+#if defined WNT
+#define REGISTRY_EXPORT __declspec( dllimport )
+#else
+#define REGISTRY_EXPORT
+#endif
+#endif
+
+class REGISTRY_EXPORT RegistryConnexion
 {
 protected :
        const char*                     _Ior            ; // engine ior
index 8aed1d77fe959abf52e7056c2226a024bb4b9e75..77c55a7a1a789ab275a80f01743ca058f2b9028f 100644 (file)
@@ -35,7 +35,9 @@ extern "C"
 # include <time.h>
 }
 
+#ifndef WNT
 #include <unistd.h>
+#endif
 using namespace std;
 
 /* ------------------------------*/
@@ -70,7 +72,11 @@ RegistryService::~RegistryService()
        _Compteur = -1 ;
        if ( _SessionName )
        {
+#ifndef WNT
                delete [] _SessionName ;
+#else
+               delete [] (char*)_SessionName ;
+#endif
                _SessionName = 0 ;
        }
        END_OF("RegistryService::~RegistryService()") ;
@@ -104,8 +110,11 @@ CORBA::ULong RegistryService::add( const Registry::Infos & infos )
        return (CORBA::ULong)_Compteur ;
 }
 
-
+#ifndef WNT
 void RegistryService::remove( const CORBA::ULong id)
+#else
+void RegistryService::remove( CORBA::ULong id)
+#endif
 {
        BEGIN_OF("RegistryService::remove") ;
        SCRUTE(id) ;
@@ -129,8 +138,11 @@ void RegistryService::remove( const CORBA::ULong id)
 }
 
 
-
+#ifndef WNT
 void RegistryService::hello( const CORBA::ULong id )
+#else
+void RegistryService::hello( CORBA::ULong id )
+#endif
 {
        BEGIN_OF("RegistryService::hello") ;
        SCRUTE(id) ;
index 63f7d57e4ddf2a1fa1b092102eb262895d990d33..c07043e5048d49ec1a12ffafe8fb246b805cb1e5 100644 (file)
 
 # include <map>
 
-
-class RegistryService : public POA_Registry::Components  //, public PortableServer::RefCountServantBase
+#if defined REGISTRY_EXPORTS
+#if defined WIN32
+#define REGISTRY_EXPORT __declspec( dllexport )
+#else
+#define REGISTRY_EXPORT
+#endif
+#else
+#if defined WNT
+#define REGISTRY_EXPORT __declspec( dllimport )
+#else
+#define REGISTRY_EXPORT
+#endif
+#endif
+
+class REGISTRY_EXPORT RegistryService : public POA_Registry::Components  //, public PortableServer::RefCountServantBase
 {
 
 public :
@@ -73,8 +86,13 @@ public :
         void ping();
        virtual CORBA::ULong add (const Registry::Infos & infos);
        virtual CORBA::ULong size ( void );
+#ifndef WNT
        virtual void remove( const CORBA::ULong id );
        virtual void hello( const CORBA::ULong id );
+#else
+       virtual void remove( CORBA::ULong id );
+       virtual void hello( CORBA::ULong id );
+#endif
        virtual void end(void);
 
        virtual Registry::AllInfos *getall(void);
index d47523a9328a64e2618b2479a02513bf5119e641..0131bb901d06a208e32e199aaeff6b4cdd864cea 100644 (file)
@@ -27,8 +27,8 @@
 //  $Header$
 
 #include <stdlib.h>
-#include <iostream.h>
-#include <fstream.h>
+#include <iostream>
+#include <fstream>
 
 extern "C"
 {
@@ -54,7 +54,7 @@ int main( int argc , char **argv )
 {
   ORB_INIT &init = *SINGLETON_<ORB_INIT>::Instance() ;
   CORBA::ORB_var &orb = init( argc , argv ) ;
-  SALOMETraceCollector *myThreadTrace = SALOMETraceCollector::instance(orb);
+  //  LocalTraceCollector *myThreadTrace = SALOMETraceCollector::instance(orb);
   BEGIN_OF( argv[0] )
     INFOS_COMPILATION 
     SCRUTE(argc) 
@@ -105,7 +105,11 @@ int main( int argc , char **argv )
   for (int i = 1; i<=NumberOfTries; i++)
     {
       if (i!=1) 
+#ifndef WNT
        a=nanosleep(&ts_req,&ts_rem);
+#else
+    Sleep(TIMESleep/1000000);
+#endif
       try
        { 
          obj = orb->resolve_initial_references("RootPOA");
@@ -118,9 +122,9 @@ int main( int argc , char **argv )
          if (!CORBA::is_nil(theObj))
            inc = CosNaming::NamingContext::_narrow(theObj);
        }
-      catch( CORBA::COMM_FAILURE& )
+      catch( CORBA::SystemException& )
        {
-         MESSAGE( "Registry Server: CORBA::COMM_FAILURE: Unable to contact the Naming Service" );
+         MESSAGE( "Registry Server: CORBA::SystemException: Unable to contact the Naming Service" );
        }
       if(!CORBA::is_nil(inc))
        {
@@ -130,7 +134,11 @@ int main( int argc , char **argv )
              for(int j=1; j<=NumberOfTries; j++)
                {
                  if (j!=1) 
+#ifndef WNT
                    a=nanosleep(&ts_req, &ts_rem);
+#else
+                       Sleep(TIMESleep/1000000);
+#endif
                  try
                    {
                      object = inc->resolve(name);
@@ -211,6 +219,6 @@ int main( int argc , char **argv )
     }
        
   END_OF( argv[0] ) ;
-  delete myThreadTrace;
+  //  delete myThreadTrace;
   return 0 ;
 }
index ac30999d74563d39cf1bc1625ba6c71973dc3c3e..e3aca30faceacf3f1ed0cb97b58ecb8b2c029f5b 100755 (executable)
@@ -53,13 +53,13 @@ LIB_SRC = \
 # in fact client is a test ! So it may go away BIN !
 #BIN = test_rc2
 #SALOME_RessourcesCatalog_Server SALOME_RessourcesCatalog_Client test
-LIB_CLIENT_IDL = SALOME_ContainerManager.idl SALOME_Component.idl
+LIB_CLIENT_IDL = SALOME_ContainerManager.idl SALOME_Component.idl SALOME_Exception.idl
 BIN_SRC = 
 BIN_SERVER_IDL = SALOME_ContainerManager.idl
 
 CPPFLAGS+= $(QT_MT_INCLUDES) -I$(srcdir)/../Container
 CXXFLAGS+= 
-LDFLAGS+= $(QT_MT_LIBS) $(OGL_LIBS) -lSalomeNS -lOpUtil -lSALOMELocalTrace -lSALOMETraceCollector
+LDFLAGS+= $(QT_MT_LIBS) $(OGL_LIBS) -lSalomeNS -lOpUtil -lSALOMELocalTrace 
 
 @CONCLUDE@
 
index ab5aa4d88554f66909c83dc8c0b34dfeec365f70..00166fec4603f7bde30b1023424c87618c79e41e 100644 (file)
@@ -1,9 +1,16 @@
 #include "SALOME_LoadRateManager.hxx"
+#include "utilities.h"
+#include <iostream>
 
 using namespace std;
 
 string SALOME_LoadRateManager::FindBest(const Engines::MachineList& hosts)
 {
   // for the moment then "maui" will be used for dynamic selection ...
+  MESSAGE("SALOME_LoadRateManager::FindBest " << hosts.length());
+
+  if (hosts.length() == 0)
+    return string("");
+
   return string(hosts[0]);
 }
index 9a5d984416b4c07c06633c30a797077e2f989ff6..1f26777480c727759205a3e17fbf806590a617ad 100644 (file)
@@ -5,10 +5,26 @@
 #include CORBA_CLIENT_HEADER(SALOME_ContainerManager)
 #include <string>
 
-class SALOME_LoadRateManager
-{
-public:
-  std::string FindBest(const Engines::MachineList& hosts);
-};
+
+#if defined RESOURCESMANAGER_EXPORTS
+#if defined WIN32
+#define RESOURCESMANAGER_EXPORT __declspec( dllexport )
+#else
+#define RESOURCESMANAGER_EXPORT
+#endif
+#else
+#if defined WNT
+#define RESOURCESMANAGER_EXPORT __declspec( dllimport )
+#else
+#define RESOURCESMANAGER_EXPORT
+#endif
+#endif
+
+class RESOURCESMANAGER_EXPORT SALOME_LoadRateManager
+  {
+
+  public:
+    std::string FindBest(const Engines::MachineList& hosts);
+  };
 
 #endif
index f8c5a6ef138ea13115d7e95604ec6368346c59eb..f635431c7b496a2d79126c3165e493124e44b8f5 100755 (executable)
@@ -1,23 +1,23 @@
 //  SALOME ResourcesCatalog : implementation of catalog resources parsing (SALOME_ModuleCatalog.idl)
 //
 //  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
-// 
-//  This library is free software; you can redistribute it and/or 
-//  modify it under the terms of the GNU Lesser General Public 
-//  License as published by the Free Software Foundation; either 
-//  version 2.1 of the License. 
-// 
-//  This library is distributed in the hope that it will be useful, 
-//  but WITHOUT ANY WARRANTY; without even the implied warranty of 
-//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
-//  Lesser General Public License for more details. 
-// 
-//  You should have received a copy of the GNU Lesser General Public 
-//  License along with this library; if not, write to the Free Software 
-//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
-// 
-//  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
+//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
+//
+//  This library is free software; you can redistribute it and/or
+//  modify it under the terms of the GNU Lesser General Public
+//  License as published by the Free Software Foundation; either
+//  version 2.1 of the License.
+//
+//  This library is distributed in the hope that it will be useful,
+//  but WITHOUT ANY WARRANTY; without even the implied warranty of
+//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+//  Lesser General Public License for more details.
+//
+//  You should have received a copy of the GNU Lesser General Public
+//  License along with this library; if not, write to the Free Software
+//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
+//
+//  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org
 //
 //
 //
 
 using namespace std;
 
-//----------------------------------------------------------------------
-//Function : SALOME_ResourcesCatalog_Handler
-//Purpose: Constructor
-//----------------------------------------------------------------------
-SALOME_ResourcesCatalog_Handler::SALOME_ResourcesCatalog_Handler(MapOfParserResourcesType& listOfResources):_resources_list(listOfResources)
+//=============================================================================
+/*!
+ *  Constructor
+ *  \param listOfResources: map of ParserResourcesType to fill when parsing
+ */ 
+//=============================================================================
+
+SALOME_ResourcesCatalog_Handler::
+SALOME_ResourcesCatalog_Handler(MapOfParserResourcesType& listOfResources):
+    _resources_list(listOfResources)
 {
   MESSAGE("SALOME_ResourcesCatalog_Handler creation");
   //XML tags initialisation
-  test_machine="machine";
-  test_resources="resources";
-
-  test_hostname="hostname";
-  test_alias="alias";
-  test_protocol="protocol";
-  test_mode="mode";
-  test_user_name="userName";
-  test_modules="modules";
-  test_module_name="moduleName";
-  test_module_path="modulePath";
-  test_pre_req_file_path="preReqFilePath";
-  test_os="OS";
-  test_mem_in_mb="memInMB";
-  test_cpu_freq_mhz="CPUFreqMHz";
-  test_nb_of_nodes="nbOfNodes";
-  test_nb_of_proc_per_node="nbOfProcPerNode";
+  test_machine = "machine";
+  test_resources = "resources";
+
+  test_hostname = "hostname";
+  test_alias = "alias";
+  test_protocol = "protocol";
+  test_mode = "mode";
+  test_user_name = "userName";
+  test_appli_path = "appliPath";
+  test_modules = "modules";
+  test_module_name = "moduleName";
+  test_module_path = "modulePath";
+  test_pre_req_file_path = "preReqFilePath";
+  test_os = "OS";
+  test_mem_in_mb = "memInMB";
+  test_cpu_freq_mhz = "CPUFreqMHz";
+  test_nb_of_nodes = "nbOfNodes";
+  test_nb_of_proc_per_node = "nbOfProcPerNode";
 }
 
-//----------------------------------------------------------------------
-//Function : ~SALOME_ResourcesCatalog_Handler
-//Purpose: Destructor
-//----------------------------------------------------------------------
+//=============================================================================
+/*!
+ *  Destructor
+ */ 
+//=============================================================================
+
 SALOME_ResourcesCatalog_Handler::~SALOME_ResourcesCatalog_Handler()
 {
   MESSAGE("SALOME_ResourcesCatalog_Handler destruction");
 }
 
-//----------------------------------------------------------------------
-//Function : GetResourcesAfterParsing
-//Purpose: Retrieves DS after the file parse.
-//----------------------------------------------------------------------
-const MapOfParserResourcesType& SALOME_ResourcesCatalog_Handler::GetResourcesAfterParsing() const
-{
-  return _resources_list;
-}
+//=============================================================================
+/*!
+ *  Retrieves DS after the file parse.
+ */ 
+//=============================================================================
+
+const MapOfParserResourcesType&
+SALOME_ResourcesCatalog_Handler::GetResourcesAfterParsing() const
+  {
+    return _resources_list;
+  }
+
+//=============================================================================
+/*!
+ *  Overload handler function startDocument.
+ *  Called before an xml file is parsed.
+ *  Clears the list of resources.
+ *  \return true (if no error detected...)
+ */ 
+//=============================================================================
 
-//----------------------------------------------------------------------
-//Function : startDocument
-//Purpose: overload handler function 
-//----------------------------------------------------------------------
 bool SALOME_ResourcesCatalog_Handler::startDocument()
 {
   MESSAGE("Begin parse document");
-  // Empty private elements
+
+  // --- Empty private elements
+
   _resources_list.clear();
   return true;
 }
 
-//----------------------------------------------------------------------
-//Function : startElement
-//Purpose: overload handler function 
-//----------------------------------------------------------------------
-bool SALOME_ResourcesCatalog_Handler::startElement(const QString&, 
-                                              const QString&,
-                                              const QString& name, 
-                                              const QXmlAttributes& attrs)
+//=============================================================================
+/*!
+ *  Overload handler function startElement.
+ *    \param QString argument by reference (not used here ?)
+ *    \param QString argument by reference (not used here ?)
+ *    \param name                          (not used here ?)
+ *    \param atts
+ *    \return true if no error was detected
+ */ 
+//=============================================================================
+
+bool
+SALOME_ResourcesCatalog_Handler::
+startElement( const QString&,
+              const QString&,
+              const QString& name,
+              const QXmlAttributes& attrs )
 {
-  for(int i=0;i<attrs.count();i++)
+  for (int i = 0;i < attrs.count();i++)
     {
       QString qName(attrs.localName(i));
       std::string content(attrs.value(i).latin1());
-      if((qName.compare(QString(test_hostname))==0))
-       _resource.DataForSort._hostName = content;
-      if((qName.compare(QString(test_alias))==0))
-       _resource.Alias = content;
-      if((qName.compare(QString(test_protocol))==0)){
-       switch(content[0]) {
-       case 'r':
-         _resource.Protocol = rsh;
-         break;
-       case 's':
-         _resource.Protocol = ssh;
-         break; 
-       default:
-         // If it'not in all theses cases, the protocol is affected to rsh
-         _resource.Protocol = rsh;
-         break;
-       }
-      }
-      if((qName.compare(QString(test_mode))==0))
-       {
-         switch(content[0]) {
-         case 'i':
-           _resource.Mode = interactive;
-           break;
-         case 'b':
-           _resource.Mode = batch;
-           break; 
-         default:
-           // If it'not in all theses cases, the mode is affected to interactive
-           _resource.Mode = interactive;
-           break;
-         }
-       }
-      if((qName.compare(QString(test_user_name))==0))
-       _resource.UserName = content;
-      if((qName.compare(QString(test_module_name))==0))
-       previous_module_name = content;
-      if((qName.compare(QString(test_module_path))==0))
-       previous_module_path = content;
-      if((qName.compare(QString(test_pre_req_file_path))==0))
-       _resource.PreReqFilePath = content;
-      if((qName.compare(QString(test_os))==0))
-       _resource.OS = content;
-      if((qName.compare(QString(test_mem_in_mb))==0))
-         _resource.DataForSort._memInMB = atoi(content.c_str());
-      if((qName.compare(QString(test_cpu_freq_mhz))==0))
-       _resource.DataForSort._CPUFreqMHz = atoi(content.c_str());
-      if((qName.compare(QString(test_nb_of_nodes))==0))
-       _resource.DataForSort._nbOfNodes = atoi(content.c_str());
-      if((qName.compare(QString(test_nb_of_proc_per_node))==0))
-       _resource.DataForSort._nbOfProcPerNode = atoi(content.c_str());
+
+      if ((qName.compare(QString(test_hostname)) == 0))
+        _resource.DataForSort._hostName = content;
+
+      if ((qName.compare(QString(test_alias)) == 0))
+        _resource.Alias = content;
+
+      if ((qName.compare(QString(test_protocol)) == 0))
+        {
+          switch (content[0])
+            {
+
+            case 'r':
+              _resource.Protocol = rsh;
+              break;
+
+            case 's':
+              _resource.Protocol = ssh;
+              break;
+
+            default:
+              // If it'not in all theses cases, the protocol is affected to rsh
+              _resource.Protocol = rsh;
+              break;
+            }
+        }
+
+      if ((qName.compare(QString(test_mode)) == 0))
+        {
+          switch (content[0])
+            {
+
+            case 'i':
+              _resource.Mode = interactive;
+              break;
+
+            case 'b':
+              _resource.Mode = batch;
+              break;
+
+            default:
+              // If it'not in all theses cases, the mode is affected to interactive
+              _resource.Mode = interactive;
+              break;
+            }
+        }
+
+      if ((qName.compare(QString(test_user_name)) == 0))
+        _resource.UserName = content;
+
+      if ((qName.compare(QString(test_appli_path)) == 0))
+        _resource.AppliPath = content;
+
+      if ((qName.compare(QString(test_module_name)) == 0))
+        previous_module_name = content;
+
+      if ((qName.compare(QString(test_module_path)) == 0))
+        previous_module_path = content;
+
+      if ((qName.compare(QString(test_pre_req_file_path)) == 0))
+        _resource.PreReqFilePath = content;
+
+      if ((qName.compare(QString(test_os)) == 0))
+        _resource.OS = content;
+
+      if ((qName.compare(QString(test_mem_in_mb)) == 0))
+        _resource.DataForSort._memInMB = atoi(content.c_str());
+
+      if ((qName.compare(QString(test_cpu_freq_mhz)) == 0))
+        _resource.DataForSort._CPUFreqMHz = atoi(content.c_str());
+
+      if ((qName.compare(QString(test_nb_of_nodes)) == 0))
+        _resource.DataForSort._nbOfNodes = atoi(content.c_str());
+
+      if ((qName.compare(QString(test_nb_of_proc_per_node)) == 0))
+        _resource.DataForSort._nbOfProcPerNode = atoi(content.c_str());
     }
+
   return true;
 }
 
-//----------------------------------------------------------------------
-//Function : endElement
-//Purpose: overload handler function 
-//----------------------------------------------------------------------
-bool SALOME_ResourcesCatalog_Handler::endElement(const QString&, const QString&,
-                                            const QString& qName)
+//=============================================================================
+/*!
+ *  Overload handler function endElement.
+ *     \param QString argument by reference  (not used here ?)
+ *     \param QString argument by reference  (not used here ?)
+ *     \param qName 
+ *     \return true (if no error detected ...)
+ */ 
+//=============================================================================
+
+bool SALOME_ResourcesCatalog_Handler::
+endElement(const QString&,
+           const QString&,
+           const QString& qName)
 {
-  if((qName.compare(QString(test_modules))==0))
+  if ((qName.compare(QString(test_modules)) == 0))
     _resource.ModulesPath[previous_module_name] = previous_module_path;
-  if((qName.compare(QString(test_machine))==0))
-    _resources_list[_resource.DataForSort._hostName]=_resource;
+
+  if ((qName.compare(QString(test_machine)) == 0))
+    _resources_list[_resource.DataForSort._hostName] = _resource;
+
   return true;
 }
 
-//----------------------------------------------------------------------
-//Function : characters
-//Purpose: overload handler function
-//----------------------------------------------------------------------
+//=============================================================================
+/*!
+ *  Overload handler function characters.
+ *  fills the private attribute string 'content'.
+ *     \param chars  
+ *     \return true (if no error detected ...)
+ */ 
+//=============================================================================
+
 bool SALOME_ResourcesCatalog_Handler::characters(const QString& chars)
 {
   content = (const char *)chars ;
   return true;
 }
 
-//----------------------------------------------------------------------
-//Function : endDocument
-//Purpose: overload handler function 
-//----------------------------------------------------------------------
+//=============================================================================
+/*!
+ *  Overload handler function endDocument.
+ *  Called after the document has been parsed.
+ *     \return true (if no error detected ...)
+ */ 
+//=============================================================================
+
 bool SALOME_ResourcesCatalog_Handler::endDocument()
 {
-  //_resources_list
-//   for (unsigned int ind = 0; ind < _resources_list.size(); ind++)
-//     {
-//       MESSAGE("Resources name :"<<_resources_list[ind].Parsername);
-//       MESSAGE("OS :"<<_resources_list[ind].ParserOS); 
-//       MESSAGE("OS version :"<<_resources_list[ind].ParserOS_version);
-//       for (unsigned int i = 0; i < _resources_list[ind].Parserprocs.size(); i++)
-//     {
-//       MESSAGE("Proc number :" << _resources_list[ind].Parserprocs[i].Parsernumber);
-//       MESSAGE("Model name :" << _resources_list[ind].Parserprocs[i].Parsermodel_name);
-//       MESSAGE("CPU(MHz) :" << _resources_list[ind].Parserprocs[i].Parsercpu_mhz);
-//       MESSAGE("Cache :" << _resources_list[ind].Parserprocs[i].Parsercache_size);
-//     }
-//       for (unsigned int j = 0; j < _resources_list[ind].Parsercontainertype.size(); j++)
-//     MESSAGE("Container Type :" << _resources_list[ind].Parsercontainertype[j]);
-//     }
-  cout << "This is the end of document" << endl;
+  for (map<string, ParserResourcesType>::const_iterator iter =
+         _resources_list.begin();
+       iter != _resources_list.end();
+       iter++)
+    {
+      SCRUTE((*iter).second.Alias);
+      SCRUTE((*iter).second.UserName);
+      SCRUTE((*iter).second.AppliPath);
+      SCRUTE((*iter).second.PreReqFilePath);
+      SCRUTE((*iter).second.OS);
+      SCRUTE((*iter).second.Protocol);
+      SCRUTE((*iter).second.Mode);
+   }
+  
+  MESSAGE("This is the end of document");
   return true;
 }
 
-//----------------------------------------------------------------------
-//Function : errorProtocol
-//Purpose: overload handler function
-//----------------------------------------------------------------------
+//=============================================================================
+/*!
+ *  Overload handler function errorProtocol.
+ *  \return the error message.
+ */ 
+//=============================================================================
+
 QString SALOME_ResourcesCatalog_Handler::errorProtocol()
 {
-  cout << "error prot !!!!!!!!!!!!!!!!!" << endl;
+  INFOS(" ------------- error protocol !");
   return errorProt;
 }
 
-//----------------------------------------------------------------------
-//Function : fatalError
-//Purpose: overload handler function
-//----------------------------------------------------------------------
-bool 
-SALOME_ResourcesCatalog_Handler::fatalError(const QXmlParseException& exception)
+//=============================================================================
+/*!
+ *  Overload handler function fatalError.
+ *  Fills the private string errorProt with details on error.
+ *     \param exception from parser
+ *     \return boolean (meaning ?)
+ */
+//=============================================================================
+
+bool
+SALOME_ResourcesCatalog_Handler::fatalError
+(const QXmlParseException& exception)
 {
-  cout << "fatal error !!!!!!!!!!!!!!!!!" << endl;
-    errorProt += QString( "fatal parsing error: %1 in line %2, column %3\n" )
-    .arg( exception.message() )
-    .arg( exception.lineNumber() )
-    .arg( exception.columnNumber() );
+  INFOS(" ------------- fatal error !");
+  errorProt += QString( "fatal parsing error: %1 in line %2, column %3\n" )
+               .arg( exception.message() )
+               .arg( exception.lineNumber() )
+               .arg( exception.columnNumber() );
 
   return QXmlDefaultHandler::fatalError( exception );
 }
 
-//----------------------------------------------------------------------
-//Function : FillDocument
-//Purpose: Fill the document tree in xml file, used to write in xml file.
-//----------------------------------------------------------------------
+//=============================================================================
+/*!
+ *  Fill the document tree in xml file, used to write in an xml file.
+ *  \param doc document to fill.
+ */ 
+//=============================================================================
+
 void SALOME_ResourcesCatalog_Handler::PrepareDocToXmlFile(QDomDocument& doc)
 {
   QDomElement root = doc.createElement("resources");
   doc.appendChild(root);
-  for(map<string, ParserResourcesType>::iterator iter=_resources_list.begin();iter!=_resources_list.end();iter++)
+
+  for (map<string, ParserResourcesType>::iterator iter =
+         _resources_list.begin();
+       iter != _resources_list.end();
+       iter++)
     {
       QDomElement eltRoot = doc.createElement(test_machine);
       root.appendChild( eltRoot );
-      eltRoot.setAttribute((char *)test_hostname,(*iter).first.c_str());
-      eltRoot.setAttribute((char *)test_alias,(*iter).second.Alias.c_str());
-      switch((*iter).second.Protocol)
-       {
-       case rsh:
-         eltRoot.setAttribute((char *)test_protocol,"rsh");
-         break;
-       case ssh:
-         eltRoot.setAttribute((char *)test_protocol,"ssh");
-         break;
-       default:
-         eltRoot.setAttribute((char *)test_protocol,"rsh");
-       }
-      switch((*iter).second.Mode)
-       {
-       case interactive:
-         eltRoot.setAttribute((char *)test_mode,"interactive");
-         break;
-       case batch:
-         eltRoot.setAttribute((char *)test_mode,"batch");
-         break;
-       default:
-         eltRoot.setAttribute((char *)test_mode,"interactive");
-       }
-      eltRoot.setAttribute((char *)test_user_name,(*iter).second.UserName.c_str());
-      for(map<string, string>::const_iterator iter2=(*iter).second.ModulesPath.begin();iter2!=(*iter).second.ModulesPath.end();iter2++)
-       {
-         QDomElement rootForModulesPaths=doc.createElement(test_modules);
-         rootForModulesPaths.setAttribute(test_module_name,(*iter2).first.c_str());
-         rootForModulesPaths.setAttribute(test_module_path,(*iter2).second.c_str());
-         eltRoot.appendChild(rootForModulesPaths);
-       }
-      eltRoot.setAttribute(test_pre_req_file_path,(*iter).second.PreReqFilePath.c_str());
-      eltRoot.setAttribute(test_os,(*iter).second.OS.c_str());
-      eltRoot.setAttribute(test_mem_in_mb,(*iter).second.DataForSort._memInMB);
-      eltRoot.setAttribute(test_cpu_freq_mhz,(*iter).second.DataForSort._CPUFreqMHz);
-      eltRoot.setAttribute(test_nb_of_nodes,(*iter).second.DataForSort._nbOfNodes);
-      eltRoot.setAttribute(test_nb_of_proc_per_node,(*iter).second.DataForSort._nbOfProcPerNode);
+      eltRoot.setAttribute((char *)test_hostname, (*iter).first.c_str());
+      eltRoot.setAttribute((char *)test_alias, (*iter).second.Alias.c_str());
+
+      switch ((*iter).second.Protocol)
+        {
+
+        case rsh:
+          eltRoot.setAttribute((char *)test_protocol, "rsh");
+          break;
+
+        case ssh:
+          eltRoot.setAttribute((char *)test_protocol, "ssh");
+          break;
+
+        default:
+          eltRoot.setAttribute((char *)test_protocol, "rsh");
+        }
+
+      switch ((*iter).second.Mode)
+        {
+
+        case interactive:
+          eltRoot.setAttribute((char *)test_mode, "interactive");
+          break;
+
+        case batch:
+          eltRoot.setAttribute((char *)test_mode, "batch");
+          break;
+
+        default:
+          eltRoot.setAttribute((char *)test_mode, "interactive");
+        }
+
+      eltRoot.setAttribute((char *)test_user_name,
+                           (*iter).second.UserName.c_str());
+
+      for (map<string, string>::const_iterator iter2 =
+             (*iter).second.ModulesPath.begin();
+           iter2 != (*iter).second.ModulesPath.end();
+           iter2++)
+        {
+          QDomElement rootForModulesPaths = doc.createElement(test_modules);
+          rootForModulesPaths.setAttribute(test_module_name,
+                                           (*iter2).first.c_str());
+          rootForModulesPaths.setAttribute(test_module_path,
+                                           (*iter2).second.c_str());
+          eltRoot.appendChild(rootForModulesPaths);
+        }
+
+      eltRoot.setAttribute(test_pre_req_file_path,
+                           (*iter).second.PreReqFilePath.c_str());
+      eltRoot.setAttribute(test_os, (*iter).second.OS.c_str());
+      eltRoot.setAttribute(test_mem_in_mb,
+                           (*iter).second.DataForSort._memInMB);
+      eltRoot.setAttribute(test_cpu_freq_mhz,
+                           (*iter).second.DataForSort._CPUFreqMHz);
+      eltRoot.setAttribute(test_nb_of_nodes,
+                           (*iter).second.DataForSort._nbOfNodes);
+      eltRoot.setAttribute(test_nb_of_proc_per_node,
+                           (*iter).second.DataForSort._nbOfProcPerNode);
     }
 }
index 6e9916aab15509eaa9b70eeb979ff54e272a5c79..c450cfce883ac46fa8ab160a83e8c90e88616fc4 100755 (executable)
@@ -1,23 +1,23 @@
 //  SALOME ResourcesCatalog : implementation of catalog resources parsing (SALOME_ModuleCatalog.idl)
 //
 //  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
-// 
-//  This library is free software; you can redistribute it and/or 
-//  modify it under the terms of the GNU Lesser General Public 
-//  License as published by the Free Software Foundation; either 
-//  version 2.1 of the License. 
-// 
-//  This library is distributed in the hope that it will be useful, 
-//  but WITHOUT ANY WARRANTY; without even the implied warranty of 
-//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
-//  Lesser General Public License for more details. 
-// 
-//  You should have received a copy of the GNU Lesser General Public 
-//  License along with this library; if not, write to the Free Software 
-//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
-// 
-//  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
+//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
+//
+//  This library is free software; you can redistribute it and/or
+//  modify it under the terms of the GNU Lesser General Public
+//  License as published by the Free Software Foundation; either
+//  version 2.1 of the License.
+//
+//  This library is distributed in the hope that it will be useful,
+//  but WITHOUT ANY WARRANTY; without even the implied warranty of
+//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+//  Lesser General Public License for more details.
+//
+//  You should have received a copy of the GNU Lesser General Public
+//  License along with this library; if not, write to the Free Software
+//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
+//
+//  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org
 //
 //
 //
 #include <vector>
 
 class QDomElement;
+
 class QDomDocument;
 
 class SALOME_ResourcesCatalog_Handler : public QXmlDefaultHandler
-{
-public :
-  //! standard constructor
-  SALOME_ResourcesCatalog_Handler(MapOfParserResourcesType& listOfResources);
-
-  const MapOfParserResourcesType& GetResourcesAfterParsing() const;
-
-  //! standard destructor
-  virtual ~SALOME_ResourcesCatalog_Handler();
-
-  //! method to overload handler function startDocument
-  /*! is called before a xml file is parsed
-    \return true if no error was detected
-  */
-  virtual bool startDocument();
-
-  //! method to overload handler function startElement
-  /*!
-    \param QString argument by value
-    \param QString argument by value
-    \param QString qName argument by value
-    \param QXmlAttributes atts argument by value
-    \return true if no error was detected
-  */
-  virtual bool startElement(const QString& , const QString& ,
-                           const QString& name, const QXmlAttributes& attrs);
-
- //! method to overload handler function endElement
-  /*!
-    \param QString argument by value
-    \param QString argument by value
-    \param QString qName argument by value
-    \return true if no error was detected
-  */
-  virtual bool endElement(const QString&, const QString&,
-                         const QString& qName);
-
- //! method to overload handler function characters
-  /*!
-    \param QString chars argument by value
-    \return true if no error was detected
-  */
-  virtual bool characters(const QString& chars);
-
- //! method to overload handler function endDocument
-  /*! is called at the end of the parsing
-    \return true if no error was detected
-  */
-  virtual bool endDocument();
-
- //! method to overload handler function errorProtocol
-  /*!
-    \return the error message
-  */
-  virtual QString errorProtocol();
-
-//! method to overload handler function fatalError
-  /*!
-    \param QXmlParseException exception argument by value
-    \return true if no error was detected
-  */
-  virtual bool fatalError(const QXmlParseException& exception);
-
-//! method to fill the document to be writen in a file
-  void PrepareDocToXmlFile(QDomDocument& doc);
-
-private :
-  QString errorProt;
-  std::string content;
-  std::string previous_module_name;
-  std::string previous_module_path;
-
-  ParserResourcesType _resource;
-  MapOfParserResourcesType& _resources_list;
-
-  const char *test_machine;
-  const char *test_resources;
-
-  const char *test_hostname;
-  const char *test_alias;
-  const char *test_protocol;
-  const char *test_mode;
-  const char *test_user_name;
-  const char *test_modules;
-  const char *test_module_name;
-  const char *test_module_path;
-  const char *test_pre_req_file_path;
-  const char *test_os;
-  const char *test_mem_in_mb;
-  const char *test_cpu_freq_mhz;
-  const char *test_nb_of_nodes;
-  const char *test_nb_of_proc_per_node;
-
-};
+  {
+
+  public :
+    SALOME_ResourcesCatalog_Handler(MapOfParserResourcesType& listOfResources);
+
+    const MapOfParserResourcesType& GetResourcesAfterParsing() const;
+
+    virtual ~SALOME_ResourcesCatalog_Handler();
+
+    virtual bool startDocument();
+
+    virtual bool startElement(const QString& , const QString& ,
+                              const QString& name, 
+                             const QXmlAttributes& attrs);
+
+    virtual bool endElement(const QString&, const QString&,
+                            const QString& qName);
+
+    virtual bool characters(const QString& chars);
+
+    virtual bool endDocument();
+
+   virtual QString errorProtocol();
+    virtual bool fatalError(const QXmlParseException& exception);
+
+    void PrepareDocToXmlFile(QDomDocument& doc);
+
+  private :
+    QString errorProt;
+    std::string content;
+    std::string previous_module_name;
+    std::string previous_module_path;
+
+    ParserResourcesType _resource;
+    MapOfParserResourcesType& _resources_list;
+
+    const char *test_machine;
+    const char *test_resources;
+
+    const char *test_hostname;
+    const char *test_alias;
+    const char *test_protocol;
+    const char *test_mode;
+    const char *test_user_name;
+    const char *test_appli_path;
+    const char *test_modules;
+    const char *test_module_name;
+    const char *test_module_path;
+    const char *test_pre_req_file_path;
+    const char *test_os;
+    const char *test_mem_in_mb;
+    const char *test_cpu_freq_mhz;
+    const char *test_nb_of_nodes;
+    const char *test_nb_of_proc_per_node;
+
+  };
 
 #endif // SALOME_RESOURCES_CATALOG_HANDLER
index d6562befcd0125db5914e7b182e082b3846f2e9b..8747cb0307862604cd4aa6129fe2529c3d474fda 100644 (file)
 #include "SALOME_ResourcesCatalog_Parser.hxx"
+#include "utilities.h"
 #include <iostream>
 
 #define NULL_VALUE 0
 
 using namespace std;
 
-unsigned int ResourceDataToSort::_nbOfNodesWanted=NULL_VALUE;
-unsigned int ResourceDataToSort::_nbOfProcPerNodeWanted=NULL_VALUE;
-unsigned int ResourceDataToSort::_CPUFreqMHzWanted=NULL_VALUE;
-unsigned int ResourceDataToSort::_memInMBWanted=NULL_VALUE;
+unsigned int ResourceDataToSort::_nbOfNodesWanted = NULL_VALUE;
+unsigned int ResourceDataToSort::_nbOfProcPerNodeWanted = NULL_VALUE;
+unsigned int ResourceDataToSort::_CPUFreqMHzWanted = NULL_VALUE;
+unsigned int ResourceDataToSort::_memInMBWanted = NULL_VALUE;
 
 ResourceDataToSort::ResourceDataToSort()
-{
-}
+{}
 
-ResourceDataToSort::ResourceDataToSort(const string& hostname,unsigned int nbOfNodes,unsigned int nbOfProcPerNode,unsigned int CPUFreqMHz,unsigned int memInMB):_hostName(hostname),_nbOfNodes(nbOfNodes),_nbOfProcPerNode(nbOfProcPerNode),_CPUFreqMHz(CPUFreqMHz),_memInMB(memInMB)
-{
-}
+ResourceDataToSort::ResourceDataToSort(const string& hostname,
+                                       unsigned int nbOfNodes,
+                                       unsigned int nbOfProcPerNode,
+                                       unsigned int CPUFreqMHz,
+                                       unsigned int memInMB):
+    _hostName(hostname),
+    _nbOfNodes(nbOfNodes),
+    _nbOfProcPerNode(nbOfProcPerNode),
+    _CPUFreqMHz(CPUFreqMHz),
+    _memInMB(memInMB)
+{}
 
 //! Method used by list::sort to sort the resources used in SALOME_ResourcesManager::GetResourcesFitting
 bool ResourceDataToSort::operator< (const ResourceDataToSort& other) const
-{
-  unsigned int nbPts=GetNumberOfPoints();
-  return nbPts<other.GetNumberOfPoints();
-}
+  {
+    unsigned int nbPts = GetNumberOfPoints();
+    return nbPts < other.GetNumberOfPoints();
+  }
 
 unsigned int ResourceDataToSort::GetNumberOfPoints() const
-{
-  unsigned int ret=0;
-  //priority 1 : Nb of nodes
-  if(_nbOfNodesWanted!=NULL_VALUE)
-    {
-      if(_nbOfNodes==_nbOfNodesWanted)
-       ret+=3000;
-      else if(_nbOfNodes>_nbOfNodesWanted)
-       ret+=2000;
-      else
-       ret+=1000;
-    }
-  //priority 2 : Nb of proc by node
-  if(_nbOfProcPerNodeWanted!=NULL_VALUE)
-    {
-      if(_nbOfProcPerNode==_nbOfProcPerNodeWanted)
-       ret+=300;
-      else if(_nbOfProcPerNode > _nbOfProcPerNodeWanted)
-       ret+=200;
-      else
-       ret+=100;
-    }
-  //priority 3 : Cpu freq
-  if(_CPUFreqMHzWanted!=NULL_VALUE)
-    {
-      if(_CPUFreqMHz==_CPUFreqMHzWanted)
-       ret+=30;
-      else if(_CPUFreqMHz > _CPUFreqMHzWanted)
-       ret+=20;
-      else
-       ret+=10;
-    }
-  //priority 4 : memory
-  if(_memInMBWanted!=NULL_VALUE)
-    {
-      if(_memInMB==_memInMBWanted)
-       ret+=3;
-      else if(_memInMB > _memInMBWanted)
-       ret+=2;
-      else
-       ret+=1;
-    }
-  return ret;
-}
+  {
+    unsigned int ret = 0;
+    //priority 1 : Nb of nodes
+
+    if (_nbOfNodesWanted != NULL_VALUE)
+      {
+        if (_nbOfNodes == _nbOfNodesWanted)
+          ret += 3000;
+        else if (_nbOfNodes > _nbOfNodesWanted)
+          ret += 2000;
+        else
+          ret += 1000;
+      }
+
+    //priority 2 : Nb of proc by node
+    if (_nbOfProcPerNodeWanted != NULL_VALUE)
+      {
+        if (_nbOfProcPerNode == _nbOfProcPerNodeWanted)
+          ret += 300;
+        else if (_nbOfProcPerNode > _nbOfProcPerNodeWanted)
+          ret += 200;
+        else
+          ret += 100;
+      }
+
+    //priority 3 : Cpu freq
+    if (_CPUFreqMHzWanted != NULL_VALUE)
+      {
+        if (_CPUFreqMHz == _CPUFreqMHzWanted)
+          ret += 30;
+        else if (_CPUFreqMHz > _CPUFreqMHzWanted)
+          ret += 20;
+        else
+          ret += 10;
+      }
+
+    //priority 4 : memory
+    if (_memInMBWanted != NULL_VALUE)
+      {
+        if (_memInMB == _memInMBWanted)
+          ret += 3;
+        else if (_memInMB > _memInMBWanted)
+          ret += 2;
+        else
+          ret += 1;
+      }
+
+    return ret;
+  }
 
 //! Method used for debug
 void ResourceDataToSort::Print() const
+  {
+    SCRUTE(_nbOfNodes);
+    SCRUTE(_nbOfProcPerNode);
+    SCRUTE(_CPUFreqMHz);
+    SCRUTE(_memInMB);
+  }
+
+void ParserResourcesType::Print()
 {
-  cout << "Nb of nodes : " << _nbOfNodes << endl;
-  cout << "Nb of proc per node : " <<  _nbOfProcPerNode << endl;
-  cout << "CPU : " << _CPUFreqMHz << endl;
-  cout << "Mem : " << _memInMB << endl;
-}
+  MESSAGE("##############*****");
+  MESSAGE("HostName : " << DataForSort._hostName);
+  MESSAGE("Alias : " << Alias);
+  MESSAGE("Protocol : " << Protocol);
+  MESSAGE("Mode : " << Mode);
+  MESSAGE("UserName : " << UserName);
+  MESSAGE("Modules : ");
+  int i = 1;
+
+  for (std::map<std::string, std::string>::iterator iter = ModulesPath.begin();
+       iter != ModulesPath.end();
+       iter++)
+    {
+      MESSAGE("Module " << i++ << " called : " << (*iter).first
+              << " with path : " << (*iter).second);
+    }
 
+  MESSAGE("PreReqFilePath : " << PreReqFilePath);
+  MESSAGE("OS : " << OS);
+  DataForSort.Print();
+}
index 989db2f44d6790cb39ced393c3b8fdd9edeb7c17..d81c1d4f188439ebe69094347510e77299361508 100755 (executable)
@@ -1,23 +1,23 @@
 //  SALOME ResourcesCatalog : implementation of catalog resources parsing (SALOME_ModuleCatalog.idl)
 //
 //  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
-// 
-//  This library is free software; you can redistribute it and/or 
-//  modify it under the terms of the GNU Lesser General Public 
-//  License as published by the Free Software Foundation; either 
-//  version 2.1 of the License. 
-// 
-//  This library is distributed in the hope that it will be useful, 
-//  but WITHOUT ANY WARRANTY; without even the implied warranty of 
-//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
-//  Lesser General Public License for more details. 
-// 
-//  You should have received a copy of the GNU Lesser General Public 
-//  License along with this library; if not, write to the Free Software 
-//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
-// 
-//  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
+//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
+//
+//  This library is free software; you can redistribute it and/or
+//  modify it under the terms of the GNU Lesser General Public
+//  License as published by the Free Software Foundation; either
+//  version 2.1 of the License.
+//
+//  This library is distributed in the hope that it will be useful,
+//  but WITHOUT ANY WARRANTY; without even the implied warranty of
+//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+//  Lesser General Public License for more details.
+//
+//  You should have received a copy of the GNU Lesser General Public
+//  License along with this library; if not, write to the Free Software
+//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
+//
+//  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org
 //
 //
 //
@@ -40,57 +40,48 @@ enum AccessProtocolType {rsh, ssh};
 
 enum AccessModeType {interactive, batch};
 
-class ResourceDataToSort {
-public:
-  std::string _hostName;
-  unsigned int _nbOfNodes;
-  unsigned int _nbOfProcPerNode;
-  unsigned int _CPUFreqMHz;
-  unsigned int _memInMB;
-  static unsigned int _nbOfNodesWanted;
-  static unsigned int _nbOfProcPerNodeWanted;
-  static unsigned int _CPUFreqMHzWanted;
-  static unsigned int _memInMBWanted;
-public:
-  ResourceDataToSort();
-  ResourceDataToSort(const std::string& hostname,unsigned int nbOfNodes,unsigned int nbOfProcPerNode,unsigned int CPUFreqMHz,unsigned int memInMB);
-  bool operator< (const ResourceDataToSort& other) const;
-  void Print() const;
-private:
-  unsigned int GetNumberOfPoints() const;
-//   friend class SALOME_ResourcesCatalog_Handler;
-//   friend class SALOME_ResourcesManager;
-//   friend struct ParserResourcesType;
-};
+class ResourceDataToSort
+  {
+
+  public:
+    std::string _hostName;
+    unsigned int _nbOfNodes;
+    unsigned int _nbOfProcPerNode;
+    unsigned int _CPUFreqMHz;
+    unsigned int _memInMB;
+    static unsigned int _nbOfNodesWanted;
+    static unsigned int _nbOfProcPerNodeWanted;
+    static unsigned int _CPUFreqMHzWanted;
+    static unsigned int _memInMBWanted;
+
+  public:
+    ResourceDataToSort();
+    ResourceDataToSort(const std::string& hostname,
+                       unsigned int nbOfNodes,
+                       unsigned int nbOfProcPerNode,
+                       unsigned int CPUFreqMHz,
+                       unsigned int memInMB);
+    bool operator< (const ResourceDataToSort& other) const;
+    void Print() const;
+
+  private:
+    unsigned int GetNumberOfPoints() const;
+  };
 
-struct ParserResourcesType {
-  ResourceDataToSort DataForSort;
-  std::string Alias;
-  AccessProtocolType Protocol;
-  AccessModeType Mode;
-  std::string UserName;
-  MapOfModulesPath ModulesPath;
-  std::string PreReqFilePath;
-  std::string OS;
+struct ParserResourcesType
+  {
+    ResourceDataToSort DataForSort;
+    std::string Alias;
+    AccessProtocolType Protocol;
+    AccessModeType Mode;
+    std::string UserName;
+    std::string AppliPath;
+    MapOfModulesPath ModulesPath;
+    std::string PreReqFilePath;
+    std::string OS;
 
-  void Print(){
-    std::cout << "##############*****" << std::endl; 
-    std::cout << "HostName : " << DataForSort._hostName << std::endl;
-    std::cout << "Alias : " << Alias << std::endl;
-    std::cout << "Protocol : " << Protocol << std::endl;
-    std::cout << "Mode : " << Mode << std::endl;
-    std::cout << "UserName : " << UserName << std::endl;
-    std::cout << "Modules : " << std::endl;
-    int i=1;
-    for(std::map<std::string, std::string>::iterator iter=ModulesPath.begin();iter!=ModulesPath.end();iter++)
-       {
-         std::cout << "    Module " << i++ << " called : " << (*iter).first << " with path : " << (*iter).second << std::endl;
-       }
-    std::cout << "PreReqFilePath : " << PreReqFilePath << std::endl;
-    std::cout << "OS : " << OS << std::endl;
-    DataForSort.Print();
-  }
-};
+    void Print();
+  };
 
 typedef std::map<std::string, ParserResourcesType> MapOfParserResourcesType;
 
index f84a3586760858222e7b692cd357db1fa716dd65..88ff54e84b5119fe1efaede0bedb4f96f9e9e582 100644 (file)
-#include "SALOME_ResourcesManager.hxx"
-#include "SALOME_Container_i.hxx"
+#include "SALOME_ResourcesManager.hxx" 
+//#include "SALOME_Container_i.hxx"
 #include "Utils_ExceptHandlers.hxx"
 #include "OpUtil.hxx"
 
 #include <qdom.h>
 
 #include <stdlib.h>
+#ifndef WNT
 #include <unistd.h>
+#else
+#include <io.h>
+#include <process.h>
+#endif
 #include <fstream>
 #include <iostream>
+#include <sstream>
 #include <string.h>
 #include <map>
+#include <list>
 
 #include <sys/types.h>
 #include <sys/stat.h>
+#include "utilities.h"
 
 #define MAX_SIZE_FOR_HOSTNAME 256;
 
 using namespace std;
 
-//just for test
-SALOME_ResourcesManager::SALOME_ResourcesManager(const char *xmlFilePath):_path_resources(xmlFilePath)
+//=============================================================================
+/*!
+ * just for test
+ */ 
+//=============================================================================
+
+SALOME_ResourcesManager::
+SALOME_ResourcesManager(CORBA::ORB_ptr orb,
+                        const char *xmlFilePath) :
+    _path_resources(xmlFilePath)
 {
+  _NS = new SALOME_NamingService(orb);
 }
 
-SALOME_ResourcesManager::SALOME_ResourcesManager()
+//=============================================================================
+/*!
+ *  Standard constructor, parse resource file.
+ *  - if ${APPLI} exists in environment,
+ *    look for ${HOME}/*{APPLI}/CatalogResources.xml
+ *  - else look for default:
+ *    ${KERNEL_ROOT_DIR}/share/salome/resources/CatalogResources.xml
+ *  - parse XML resource file.
+ */ 
+//=============================================================================
+
+SALOME_ResourcesManager::SALOME_ResourcesManager(CORBA::ORB_ptr orb)
 {
-  _path_resources=getenv("KERNEL_ROOT_DIR");
-  _path_resources+="/share/salome/resources/CatalogResources.xml";
+  _NS = new SALOME_NamingService(orb);
+  _isAppliSalomeDefined = (getenv("APPLI") != 0);
+
+  if (_isAppliSalomeDefined)
+    {
+      _path_resources = getenv("HOME");
+      _path_resources += "/";
+      _path_resources += getenv("APPLI");
+      _path_resources += "/CatalogResources.xml";
+    }
+
+  else
+    {
+      _path_resources = getenv("KERNEL_ROOT_DIR");
+      _path_resources += "/share/salome/resources/CatalogResources.xml";
+    }
+
   ParseXmlFile();
 }
 
+//=============================================================================
+/*!
+ *  Standard Destructor
+ */ 
+//=============================================================================
+
 SALOME_ResourcesManager::~SALOME_ResourcesManager()
 {
+  delete _NS;
 }
 
-vector<string> SALOME_ResourcesManager::GetFittingResources(const Engines::MachineParameters& params,const char *moduleName) throw(SALOME_Exception)
+//=============================================================================
+/*!
+ *  get the list of name of ressources fitting for the specified module.
+ *  If hostname specified, check it is local or known in resources catalog.
+ *
+ *  Else
+ *  - select first machines with corresponding OS (all machines if
+ *    parameter OS empty),
+ *  - then select the sublist of machines on witch the module is known
+ *    (if the result is empty, that probably means that the inventory of
+ *    modules is probably not done, so give complete list from previous step)
+ */ 
+//=============================================================================
+
+vector<string>
+SALOME_ResourcesManager::
+GetFittingResources(const Engines::MachineParameters& params,
+                    const char *moduleName)
+throw(SALOME_Exception)
 {
+  MESSAGE("ResourcesManager::GetFittingResources");
   vector <std::string> ret;
-  //To be sure that we search in a correct list.
+
+  // --- To be sure that we search in a correct list.
   ParseXmlFile();
-  const char *hostname=(const char *)params.hostname;
-  if(hostname[0]!='\0')
+
+  const char *hostname = (const char *)params.hostname;
+  MESSAGE("GetFittingResources " << hostname << " " << GetHostname().c_str());
+
+  if (hostname[0] != '\0')
     {
-      if(_resourcesList.find(hostname)!=_resourcesList.end())
-       // params.hostame is in the list of resources so return it.
-       ret.push_back(hostname);
+      MESSAGE("ResourcesManager::GetFittingResources : hostname specified" );
+
+      if ( strcmp(hostname, "localhost") == 0 ||
+           strcmp(hostname, GetHostname().c_str()) == 0 )
+        {
+          MESSAGE("ResourcesManager::GetFittingResources : localhost" );
+          ret.push_back(GetHostname().c_str());
+          MESSAGE("ResourcesManager::GetFittingResources : " << ret.size());
+        }
+
+      else if (_resourcesList.find(hostname) != _resourcesList.end())
+        {
+          // --- params.hostname is in the list of resources so return it.
+          ret.push_back(hostname);
+        }
+
       else
-       //user specified an unknown hostame so notify to him.
-       throw SALOME_Exception("unknown host");
+        {
+          // --- user specified an unknown hostame so notify him.
+          MESSAGE("ResourcesManager::GetFittingResources : SALOME_Exception");
+          throw SALOME_Exception("unknown host");
+        }
     }
+
   else
-    // Search for available resources sorted by priority
+    // --- Search for available resources sorted by priority
     {
-      SelectOnlyResourcesWithOS(ret,params.OS);
-      KeepOnlyResourcesWithModule(ret,moduleName);
-      //set wanted parameters
-      ResourceDataToSort::_nbOfNodesWanted=params.nb_node;
-      ResourceDataToSort::_nbOfProcPerNodeWanted=params.nb_proc_per_node;
-      ResourceDataToSort::_CPUFreqMHzWanted=params.cpu_clock;
-      ResourceDataToSort::_memInMBWanted=params.mem_mb;
-      //end of set
+      SelectOnlyResourcesWithOS(ret, params.OS);
+
+      KeepOnlyResourcesWithModule(ret, moduleName);
+
+      if (ret.size() == 0)
+        SelectOnlyResourcesWithOS(ret, params.OS);
+
+      // --- set wanted parameters
+      ResourceDataToSort::_nbOfNodesWanted = params.nb_node;
+
+      ResourceDataToSort::_nbOfProcPerNodeWanted = params.nb_proc_per_node;
+
+      ResourceDataToSort::_CPUFreqMHzWanted = params.cpu_clock;
+
+      ResourceDataToSort::_memInMBWanted = params.mem_mb;
+
+      // --- end of set
+
       list<ResourceDataToSort> li;
-      for(vector<string>::iterator iter=ret.begin();iter!=ret.end();iter++)
-       li.push_back(_resourcesList[(*iter)].DataForSort);
+
+      for (vector<string>::iterator iter = ret.begin();
+           iter != ret.end();
+           iter++)
+        li.push_back(_resourcesList[(*iter)].DataForSort);
+
       li.sort();
-      unsigned int i=0;
-      for(list<ResourceDataToSort>::iterator iter2=li.begin();iter2!=li.end();iter2++)
-       ret[i++]=(*iter2)._hostName;
+
+      unsigned int i = 0;
+
+      for (list<ResourceDataToSort>::iterator iter2 = li.begin();
+           iter2 != li.end();
+           iter2++)
+        ret[i++] = (*iter2)._hostName;
     }
+
+  MESSAGE("ResourcesManager::GetFittingResources : return" << ret.size());
   return ret;
 }
 
-int SALOME_ResourcesManager::AddResourceInCatalog(const Engines::MachineParameters& paramsOfNewResources, const map<string,string>& modulesOnNewResources,
-                                                 const char *environPathOfPrerequired,
-                                                 const char *alias, const char *userName, AccessModeType mode, AccessProtocolType prot) throw(SALOME_Exception)
+//=============================================================================
+/*!
+ *  add an entry in the ressources catalog  xml file.
+ *  Return 0 if OK (KERNEL found in new resources modules) else throw exception
+ */ 
+//=============================================================================
+
+int
+SALOME_ResourcesManager::
+AddResourceInCatalog(const Engines::MachineParameters& paramsOfNewResources,
+                     const map<string, string>& modulesOnNewResources,
+                     const char *environPathOfPrerequired,
+                     const char *alias,
+                     const char *userName,
+                     AccessModeType mode,
+                     AccessProtocolType prot)
+throw(SALOME_Exception)
 {
-  map<string,string>::const_iterator iter=modulesOnNewResources.find("KERNEL");
-  if(iter!=modulesOnNewResources.end())
+  map<string, string>::const_iterator iter =
+    modulesOnNewResources.find("KERNEL");
+
+  if (iter != modulesOnNewResources.end())
     {
       ParserResourcesType newElt;
-      newElt.DataForSort._hostName=paramsOfNewResources.hostname;
-      newElt.Alias=alias;
-      newElt.Protocol=prot;
-      newElt.Mode=mode;
-      newElt.UserName=userName;
-      newElt.ModulesPath=modulesOnNewResources;
-      newElt.PreReqFilePath=environPathOfPrerequired;
-      newElt.OS=paramsOfNewResources.OS;
-      newElt.DataForSort._memInMB=paramsOfNewResources.mem_mb;
-      newElt.DataForSort._CPUFreqMHz=paramsOfNewResources.cpu_clock;
-      newElt.DataForSort._nbOfNodes=paramsOfNewResources.nb_node;
-      newElt.DataForSort._nbOfProcPerNode=paramsOfNewResources.nb_proc_per_node;
-      _resourcesList[newElt.DataForSort._hostName]=newElt;
+      newElt.DataForSort._hostName = paramsOfNewResources.hostname;
+      newElt.Alias = alias;
+      newElt.Protocol = prot;
+      newElt.Mode = mode;
+      newElt.UserName = userName;
+      newElt.ModulesPath = modulesOnNewResources;
+      newElt.PreReqFilePath = environPathOfPrerequired;
+      newElt.OS = paramsOfNewResources.OS;
+      newElt.DataForSort._memInMB = paramsOfNewResources.mem_mb;
+      newElt.DataForSort._CPUFreqMHz = paramsOfNewResources.cpu_clock;
+      newElt.DataForSort._nbOfNodes = paramsOfNewResources.nb_node;
+      newElt.DataForSort._nbOfProcPerNode =
+        paramsOfNewResources.nb_proc_per_node;
+      _resourcesList[newElt.DataForSort._hostName] = newElt;
       return 0;
     }
+
   else
     throw SALOME_Exception("KERNEL is not present in this resource");
 }
 
+//=============================================================================
+/*!
+ *  Deletes a resource from the catalog
+ */ 
+//=============================================================================
+
 void SALOME_ResourcesManager::DeleteResourceInCatalog(const char *hostname)
 {
   _resourcesList.erase(hostname);
 }
 
+//=============================================================================
+/*!
+ *  write the current data in memory in file.
+ */ 
+//=============================================================================
+
 void SALOME_ResourcesManager::WriteInXmlFile()
 {
   QDomDocument doc("ResourcesCatalog");
-  SALOME_ResourcesCatalog_Handler* handler = new SALOME_ResourcesCatalog_Handler(_resourcesList);
+  SALOME_ResourcesCatalog_Handler* handler =
+    new SALOME_ResourcesCatalog_Handler(_resourcesList);
   handler->PrepareDocToXmlFile(doc);
   delete handler;
+
   QFile file( _path_resources );
-  if( !file.open( IO_WriteOnly ) )
-    cout << "WRITING ERROR !!!" << endl;
+
+  if ( !file.open( IO_WriteOnly ) )
+    INFOS("WRITING ERROR !");
 
   QTextStream ts( &file );
+
   ts << doc.toString();
 
   file.close();
-  cout << "WRITING DONE!!!" << endl;
+
+  MESSAGE("WRITING DONE!");
 }
 
-const MapOfParserResourcesType& SALOME_ResourcesManager::ParseXmlFile() 
+//=============================================================================
+/*!
+ *  parse the data type catalog
+ */ 
+//=============================================================================
+
+const MapOfParserResourcesType& SALOME_ResourcesManager::ParseXmlFile()
 {
-  SALOME_ResourcesCatalog_Handler* handler = new SALOME_ResourcesCatalog_Handler(_resourcesList);
+  SALOME_ResourcesCatalog_Handler* handler =
+    new SALOME_ResourcesCatalog_Handler(_resourcesList);
   QFile xmlFile(_path_resources);
 
   QXmlInputSource source(xmlFile);
@@ -137,163 +289,265 @@ const MapOfParserResourcesType& SALOME_ResourcesManager::ParseXmlFile()
   return _resourcesList;
 }
 
-bool SALOME_ResourcesManager::_verify_resources(MapOfParserResourcesType resourceslist)
-{
-//     bool _return_value = true;
-//     bool _bool = false ;
-//     vector<string> _machine_list;
-//     _machine_list.resize(0);
-
-//   // Fill a list of all computers indicated in the resources list
-//   for (unsigned int ind = 0; ind < resourceslist.size(); ind++)
-//           _machine_list.push_back(resourceslist[ind].HostName);   
-
-//   // Parse if a computer name is twice in the list of computers
-//   for (unsigned int ind = 0; ind < _machine_list.size(); ind++)
-//     {
-//      for (unsigned int ind1 = ind+1 ; ind1 < _machine_list.size(); ind1++)
-//        {
-//          if(_machine_list[ind].compare(_machine_list[ind1]) == 0)
-//            {
-//              MESSAGE("The computer " << _machine_list[ind] << " is indicated more than once in the resources list")
-//              _return_value = false;
-//           }
-//        }
-//     }
-
-//    return _return_value;
-  return true;
-}
+//=============================================================================
+/*!
+ *   consult the content of the list
+ */ 
+//=============================================================================
 
 const MapOfParserResourcesType& SALOME_ResourcesManager::GetList() const
+  {
+    return _resourcesList;
+  }
+
+
+//=============================================================================
+/*!
+ *  dynamically obtains the best machines
+ */ 
+//=============================================================================
+
+string
+SALOME_ResourcesManager::FindBest(const Engines::MachineList& listOfMachines)
 {
-  return _resourcesList;
+  return _dynamicResourcesSelecter.FindBest(listOfMachines);
 }
 
-string SALOME_ResourcesManager::FindBest(const Engines::MachineList& listOfMachines)
+
+//=============================================================================
+/*!
+ *  This is no longer valid (C++ container are also python containers)
+ */ 
+//=============================================================================
+
+bool isPythonContainer(const char* ContainerName)
 {
-  return _dynamicResourcesSelecter.FindBest(listOfMachines);
+  bool ret = false;
+  int len = strlen(ContainerName);
+
+  if (len >= 2)
+    if (strcmp(ContainerName + len - 2, "Py") == 0)
+      ret = true;
+
+  return ret;
 }
 
-string SALOME_ResourcesManager::BuildTempFileToLaunchRemoteContainer(const string& machine,const char *containerName)
+
+//=============================================================================
+/*!
+ *  Builds the script to be launched
+ *
+ *  If SALOME Application not defined ($APPLI),
+ *  see BuildTempFileToLaunchRemoteContainer()
+ *
+ *  Else rely on distant configuration. Command is under the form (example):
+ *  ssh user@machine distantPath/runRemote.sh hostNS portNS \
+ *                   SALOME_Container containerName &"
+
+ *  - where user is ommited if not specified in CatalogResources,
+ *  - where distant path is always relative to user@machine $HOME, and
+ *    equal to $APPLI if not specified in CatalogResources,
+ *  - where hostNS is the hostname of CORBA naming server (set by scripts to
+ *    use to launch SALOME and servers in $APPLI: runAppli.sh, runRemote.sh)
+ *  - where portNS is the port used by CORBA naming server (set by scripts to
+ *    use to launch SALOME and servers in $APPLI: runAppli.sh, runRemote.sh)
+ */ 
+//=============================================================================
+
+string
+SALOME_ResourcesManager::BuildCommandToLaunchRemoteContainer
+(const string& machine,
+ const Engines::MachineParameters& params)
 {
-  _TmpFileName=BuildTemporaryFileName();
-  ofstream tempOutputFile;
-  tempOutputFile.open(_TmpFileName.c_str(),ofstream::out );
-  const ParserResourcesType& resInfo=_resourcesList[machine];
-  tempOutputFile << "#! /bin/sh" << endl;
-  //set env vars
-  for(map<string,string>::const_iterator iter=resInfo.ModulesPath.begin();iter!=resInfo.ModulesPath.end();iter++)
-    {
-      string curModulePath((*iter).second);
-      tempOutputFile << (*iter).first << "_ROOT_DIR="<< curModulePath << endl;
-      tempOutputFile << "export " << (*iter).first << "_ROOT_DIR" << endl;
-      tempOutputFile << "LD_LIBRARY_PATH=" << curModulePath << "/lib/salome" << ":${LD_LIBRARY_PATH}" << endl;
-      tempOutputFile << "PYTHONPATH=" << curModulePath << "/bin/salome:" << curModulePath << "/lib/salome:" << curModulePath << "/lib/python2.2/site-packages/salome:";
-      tempOutputFile << curModulePath << "/lib/python2.2/site-packages/salome/shared_modules:${PYTHONPATH}" << endl;
-    }
-  tempOutputFile << "export LD_LIBRARY_PATH" << endl;
-  tempOutputFile << "export PYTHONPATH" << endl;
-  tempOutputFile << "source " << resInfo.PreReqFilePath << endl;
-  // ! env vars
-  tempOutputFile << (*(resInfo.ModulesPath.find("KERNEL"))).second << "/bin/salome/";
-  if(Engines_Container_i::isPythonContainer(containerName))
-    tempOutputFile << "SALOME_ContainerPy.py ";
-  else
-    tempOutputFile << "SALOME_Container ";
-  tempOutputFile << containerName << " -";
-  AddOmninamesParams(tempOutputFile);
-  tempOutputFile << " &" << endl;
-  tempOutputFile.flush();
-  tempOutputFile.close();
-  chmod(_TmpFileName.c_str(),0x1ED);
-  //Build command
   string command;
-  if(resInfo.Protocol==rsh)
+
+  if ( ! _isAppliSalomeDefined )
+    command = BuildTempFileToLaunchRemoteContainer(machine, params);
+
+  else
     {
-      command = "rsh ";
-      string commandRcp="rcp ";
-      commandRcp+=_TmpFileName;
-      commandRcp+=" ";
-      commandRcp+=machine;
-      commandRcp+=":";
-      commandRcp+=_TmpFileName;
-      system(commandRcp.c_str());
+      const ParserResourcesType& resInfo = _resourcesList[machine];
+
+      if (params.isMPI)
+        {
+          int nbproc;
+
+          if ( (params.nb_node <= 0) && (params.nb_proc_per_node <= 0) )
+            nbproc = 1;
+          else if ( params.nb_node == 0 )
+            nbproc = params.nb_proc_per_node;
+          else if ( params.nb_proc_per_node == 0 )
+            nbproc = params.nb_node;
+          else
+            nbproc = params.nb_node * params.nb_proc_per_node;
+        }
+
+      // "ssh user@machine distantPath/runRemote.sh hostNS portNS \
+      //  SALOME_Container containerName &"
+
+      if (resInfo.Protocol == rsh)
+        command = "rsh ";
+      else if (resInfo.Protocol == ssh)
+        command = "ssh ";
+      else
+        throw SALOME_Exception("Unknown protocol");
+
+      if (resInfo.UserName != "")
+       {
+         command += resInfo.UserName;
+         command += "@";
+       }
+
+      command += machine;
+      command += " ";
+
+      if (resInfo.AppliPath != "")
+       command += resInfo.AppliPath; // path relative to user@machine $HOME
+      else
+       {
+         ASSERT(getenv("APPLI"));
+         command += getenv("APPLI"); // path relative to user@machine $HOME
+       }
+
+      command += "/runRemote.sh ";
+
+      ASSERT(getenv("NSHOST")); 
+      command += getenv("NSHOST"); // hostname of CORBA name server
+
+      command += " ";
+      ASSERT(getenv("NSPORT"));
+      command += getenv("NSPORT"); // port of CORBA name server
+
+      command += " SALOME_Container ";
+      command += _NS->ContainerName(params);
+      command += "&";
+
+      MESSAGE("command =" << command);
     }
-  else if(resInfo.Protocol==ssh)
-    command = "ssh ";
-  else
-    throw SALOME_Exception("Unknown protocol");
-  command+=machine;
-  _CommandForRemAccess=command;
-  command+=" ";
-  command+=_TmpFileName;
-  command += " > ";
-  command += "/tmp/";
-  command += containerName;
-  command += "_";
-  command += machine;
-  command += ".log &";
-  cout << "Command is ... " << command << endl;
+
   return command;
 }
 
-string SALOME_ResourcesManager::BuildCommandToLaunchLocalContainer(const char *containerName)
+
+//=============================================================================
+/*!
+ *  builds the command to be launched.
+ */ 
+//=============================================================================
+
+string
+SALOME_ResourcesManager::BuildCommandToLaunchLocalContainer
+(const Engines::MachineParameters& params)
 {
-  _TmpFileName="";
+  _TmpFileName = "";
   string command;
-  if(Engines_Container_i::isPythonContainer(containerName))
-    command="SALOME_ContainerPy.py ";
+  int nbproc = 0;
+
+  if (params.isMPI)
+    {
+      command = "mpirun -np ";
+
+      if ( (params.nb_node <= 0) && (params.nb_proc_per_node <= 0) )
+        nbproc = 1;
+      else if ( params.nb_node == 0 )
+        nbproc = params.nb_proc_per_node;
+      else if ( params.nb_proc_per_node == 0 )
+        nbproc = params.nb_node;
+      else
+        nbproc = params.nb_node * params.nb_proc_per_node;
+
+      std::ostringstream o;
+
+      o << nbproc << " ";
+
+      command += o.str();
+
+      if (isPythonContainer(params.container_name))
+        command += "pyMPI SALOME_ContainerPy.py ";
+      else
+        command += "SALOME_MPIContainer ";
+    }
+
   else
-    command="SALOME_Container ";
-  command+=containerName;
-  command+=" -";
+    {
+      if (isPythonContainer(params.container_name))
+        command = "SALOME_ContainerPy.py ";
+      else
+        command = "SALOME_Container ";
+    }
+
+  command += _NS->ContainerName(params);
+  command += " -";
   AddOmninamesParams(command);
-  command+=" > /tmp/";
-  command+=containerName;
+  command += " > /tmp/";
+  command += _NS->ContainerName(params);
   command += "_";
   command += GetHostname();
+  command += "_";
+  command += getenv( "USER" ) ;
   command += ".log 2>&1 &" ;
-  cout << "Command is ... " << command << endl << flush;
+  MESSAGE("Command is ... " << command);
   return command;
 }
 
+
+//=============================================================================
+/*!
+ *  removes the generated temporary file in case of a remote launch.
+ */ 
+//=============================================================================
+
 void SALOME_ResourcesManager::RmTmpFile()
 {
-  if(_TmpFileName!="")
+  if (_TmpFileName != "")
     {
-      string command="rm ";
-      command+=_TmpFileName;
-      char *temp=strdup(command.c_str());
-      int lgthTemp=strlen(temp);
-      temp[lgthTemp-3]='*';
-      temp[lgthTemp-2]='\0';
+      string command = "rm ";
+      command += _TmpFileName;
+      char *temp = strdup(command.c_str());
+      int lgthTemp = strlen(temp);
+      temp[lgthTemp - 3] = '*';
+      temp[lgthTemp - 2] = '\0';
       system(temp);
       free(temp);
     }
 }
 
-string SALOME_ResourcesManager::BuildCommand(const string& machine,const char *containerName)
+
+//=============================================================================
+/*!
+ *  builds the script to be launched
+ */ 
+//=============================================================================
+
+string
+SALOME_ResourcesManager::BuildCommand
+(const string& machine,
+ const char *containerName)
 {
-// rsh -n ikkyo /export/home/rahuel/SALOME_ROOT/bin/runSession SALOME_Container -ORBInitRef NameService=corbaname::dm2s0017:1515 &
-  const ParserResourcesType& resInfo=_resourcesList[machine];
-  bool pyCont=Engines_Container_i::isPythonContainer(containerName);
+  // rsh -n ikkyo /export/home/rahuel/SALOME_ROOT/bin/runSession SALOME_Container -ORBInitRef NameService=corbaname::dm2s0017:1515 &
+  const ParserResourcesType& resInfo = _resourcesList[machine];
+  bool pyCont = isPythonContainer(containerName);
+
   string command;
-  if(resInfo.Protocol==rsh)
+
+  if (resInfo.Protocol == rsh)
     command = "rsh -n " ;
-  else if(resInfo.Protocol==ssh)
+  else if (resInfo.Protocol == ssh)
     command = "ssh -f -n ";
   else
     throw SALOME_Exception("Not implemented yet...");
-      command += machine;
+
+  command += machine;
   command += " ";
   string path = (*(resInfo.ModulesPath.find("KERNEL"))).second;
-  command +=path;
+  command += path;
   command += "/bin/salome/";
+
   if ( pyCont )
     command += "SALOME_ContainerPy.py ";
   else
     command += "SALOME_Container ";
+
   command += containerName;
   command += " -";
   AddOmninamesParams(command);
@@ -302,80 +556,285 @@ string SALOME_ResourcesManager::BuildCommand(const string& machine,const char *c
   command += "_";
   command += machine;
   command += ".log 2>&1 &" ;
+
   SCRUTE( command );
   return command;
 }
 
+//=============================================================================
+/*!
+ *  Gives a sublist of machines with matching OS.
+ *  If parameter OS is empty, gives the complete list of machines
+ */ 
+//=============================================================================
+
 // Warning need an updated parsed list : _resourcesList
-void SALOME_ResourcesManager::SelectOnlyResourcesWithOS(vector<string>& hosts,const char *OS) const throw(SALOME_Exception)
+void
+SALOME_ResourcesManager::SelectOnlyResourcesWithOS
+( vector<string>& hosts,
+  const char *OS) const
+throw(SALOME_Exception)
 {
   string base(OS);
-  for(map<string, ParserResourcesType>::const_iterator iter=_resourcesList.begin();iter!=_resourcesList.end();iter++)
-    if((*iter).second.OS==base)
-      hosts.push_back((*iter).first);
+
+  for (map<string, ParserResourcesType>::const_iterator iter =
+         _resourcesList.begin();
+       iter != _resourcesList.end();
+       iter++)
+    {
+      if ( (*iter).second.OS == base || base.size() == 0)
+        hosts.push_back((*iter).first);
+    }
 }
 
+
+//=============================================================================
+/*!
+ *  Gives a sublist of machines on which the module is known.
+ */ 
+//=============================================================================
+
 //Warning need an updated parsed list : _resourcesList
-void SALOME_ResourcesManager::KeepOnlyResourcesWithModule(vector<string>& hosts,const char *moduleName) const throw(SALOME_Exception)
+void
+SALOME_ResourcesManager::KeepOnlyResourcesWithModule
+( vector<string>& hosts,
+  const char *moduleName) const
+throw(SALOME_Exception)
 {
-   for(vector<string>::iterator iter=hosts.begin();iter!=hosts.end();iter++)
-     {
-       MapOfParserResourcesType::const_iterator it=_resourcesList.find(*iter);
-       const map<string,string>& mapOfModulesOfCurrentHost=(((*it).second).ModulesPath);
-       if(mapOfModulesOfCurrentHost.find(moduleName)==mapOfModulesOfCurrentHost.end())
-        {
-          hosts.erase(iter);
-        }
-     }
+  for (vector<string>::iterator iter = hosts.begin(); iter != hosts.end();)
+    {
+      MapOfParserResourcesType::const_iterator it = _resourcesList.find(*iter);
+      const map<string, string>& mapOfModulesOfCurrentHost =
+        (((*it).second).ModulesPath);
+
+      if (mapOfModulesOfCurrentHost.find(moduleName) ==
+          mapOfModulesOfCurrentHost.end())
+        hosts.erase(iter);
+      else
+        iter++;
+    }
 }
 
+
+//=============================================================================
+/*!
+ *   add to command all options relative to naming service.
+ */ 
+//=============================================================================
+
 void SALOME_ResourcesManager::AddOmninamesParams(string& command) const
-{
-  string omniORBcfg( getenv( "OMNIORB_CONFIG" ) ) ;
-  ifstream omniORBfile( omniORBcfg.c_str() ) ;
-  char ORBInitRef[12] ;
-  char nameservice[132] ;
-  omniORBfile >> ORBInitRef ;
-  command += ORBInitRef ;
-  command += " " ;
-  omniORBfile >> nameservice ;
-  omniORBfile.close() ;
-  char * bsn = strchr( nameservice , '\n' ) ;
-  if ( bsn ) {
-    bsn[ 0 ] = '\0' ;
+  {
+    // If env variable OMNIORB_CONFIG is not defined or the file is more complex than one line
+    // does not work
+    // Even if we use it we have to check if env variable exists
+    //string omniORBcfg( getenv( "OMNIORB_CONFIG" ) ) ;
+    //ifstream omniORBfile( omniORBcfg.c_str() ) ;
+    //char ORBInitRef[11] ;
+    //char egal[3] ;
+    //char nameservice[132] ;
+    //omniORBfile >> ORBInitRef ;
+    //command += "ORBInitRef " ;
+    //omniORBfile >> egal ;
+    //omniORBfile >> nameservice ;
+    //omniORBfile.close() ;
+    //char * bsn = strchr( nameservice , '\n' ) ;
+    //if ( bsn ) {
+    //bsn[ 0 ] = '\0' ;
+    //}
+    //command += nameservice ;
+
+    char *iorstr = _NS->getIORaddr();
+    command += "ORBInitRef NameService=";
+    command += iorstr;
   }
-  command += nameservice ;
-}
+
+
+//=============================================================================
+/*!
+ *  add to command all options relative to naming service.
+ */ 
+//=============================================================================
 
 void SALOME_ResourcesManager::AddOmninamesParams(ofstream& fileStream) const
-{
-  string omniORBcfg( getenv( "OMNIORB_CONFIG" ) ) ;
-  ifstream omniORBfile( omniORBcfg.c_str() ) ;
-  char ORBInitRef[12] ;
-  char nameservice[132] ;
-  omniORBfile >> ORBInitRef ;
-  fileStream << ORBInitRef;
-  fileStream << " ";
-  omniORBfile >> nameservice ;
-  omniORBfile.close() ;
-  char * bsn = strchr( nameservice , '\n' ) ;
-  if ( bsn ) {
-    bsn[ 0 ] = '\0' ;
+  {
+    string omniORBcfg( getenv( "OMNIORB_CONFIG" ) ) ;
+    ifstream omniORBfile( omniORBcfg.c_str() ) ;
+    char ORBInitRef[11] ;
+    char egal[3] ;
+    char nameservice[132] ;
+    omniORBfile >> ORBInitRef ;
+    fileStream << "ORBInitRef ";
+    omniORBfile >> egal ;
+    omniORBfile >> nameservice ;
+    omniORBfile.close() ;
+    char * bsn = strchr( nameservice , '\n' ) ;
+
+    if ( bsn )
+      {
+        bsn[ 0 ] = '\0' ;
+      }
+
+    fileStream << nameservice;
   }
-  fileStream << nameservice;
-}
+
+
+//=============================================================================
+/*!
+ *  generate a file name in /tmp directory
+ */ 
+//=============================================================================
 
 string SALOME_ResourcesManager::BuildTemporaryFileName() const
+  {
+    //build more complex file name to support multiple salome session
+    char *temp = new char[19];
+    strcpy(temp, "/tmp/command");
+    strcat(temp, "XXXXXX");
+#ifndef WNT
+
+    mkstemp(temp);
+#else
+
+    char aPID[80];
+    itoa(getpid(), aPID, 10);
+    strcat(temp, aPID);
+#endif
+
+    string command(temp);
+    delete [] temp;
+    command += ".sh";
+    return command;
+  }
+
+
+//=============================================================================
+/*!
+ *  Builds in a temporary file the script to be launched.
+ *  
+ *  Used if SALOME Application ($APPLI) is not defined.
+ *  The command is build with data from CatalogResources, in which every path
+ *  used on remote computer must be defined.
+ */ 
+//=============================================================================
+
+string
+SALOME_ResourcesManager::BuildTempFileToLaunchRemoteContainer
+(const string& machine,
+ const Engines::MachineParameters& params)
 {
-  //build more complex file name to support multiple salome session
-  char *temp=new char[19];
-  strcpy(temp,"/tmp/command");
-  strcat(temp,"XXXXXX");
-  mkstemp(temp);
-  string command(temp);
-  delete [] temp;
-  command += ".sh";
+  _TmpFileName = BuildTemporaryFileName();
+  ofstream tempOutputFile;
+  tempOutputFile.open(_TmpFileName.c_str(), ofstream::out );
+  const ParserResourcesType& resInfo = _resourcesList[machine];
+  tempOutputFile << "#! /bin/sh" << endl;
+
+  // --- set env vars
+
+  for (map<string, string>::const_iterator iter = resInfo.ModulesPath.begin();
+       iter != resInfo.ModulesPath.end();
+       iter++)
+    {
+      string curModulePath((*iter).second);
+      tempOutputFile << (*iter).first << "_ROOT_DIR=" << curModulePath << endl;
+      tempOutputFile << "export " << (*iter).first << "_ROOT_DIR" << endl;
+      tempOutputFile << "LD_LIBRARY_PATH=" << curModulePath
+                    << "/lib/salome" << ":${LD_LIBRARY_PATH}" << endl;
+      tempOutputFile << "PYTHONPATH=" << curModulePath << "/bin/salome:"
+                    << curModulePath << "/lib/salome:" << curModulePath
+                    << "/lib/python2.2/site-packages/salome:";
+      tempOutputFile << curModulePath
+      << "/lib/python2.2/site-packages/salome/shared_modules:${PYTHONPATH}"
+      << endl;
+    }
+
+  tempOutputFile << "export LD_LIBRARY_PATH" << endl;
+  tempOutputFile << "export PYTHONPATH" << endl;
+  tempOutputFile << "source " << resInfo.PreReqFilePath << endl;
+
+  // ! env vars
+
+  if (params.isMPI)
+    {
+      tempOutputFile << "mpirun -np ";
+      int nbproc;
+
+      if ( (params.nb_node <= 0) && (params.nb_proc_per_node <= 0) )
+        nbproc = 1;
+      else if ( params.nb_node == 0 )
+        nbproc = params.nb_proc_per_node;
+      else if ( params.nb_proc_per_node == 0 )
+        nbproc = params.nb_node;
+      else
+        nbproc = params.nb_node * params.nb_proc_per_node;
+
+      std::ostringstream o;
+
+      tempOutputFile << nbproc << " ";
+    }
+
+  tempOutputFile << (*(resInfo.ModulesPath.find("KERNEL"))).second
+                << "/bin/salome/";
+
+  if (params.isMPI)
+    {
+      if (isPythonContainer(params.container_name))
+        tempOutputFile << "pyMPI SALOME_ContainerPy.py ";
+      else
+        tempOutputFile << "SALOME_MPIContainer ";
+    }
+
+  else
+    {
+      if (isPythonContainer(params.container_name))
+        tempOutputFile << "SALOME_ContainerPy.py ";
+      else
+        tempOutputFile << "SALOME_Container ";
+    }
+
+  tempOutputFile << _NS->ContainerName(params) << " -";
+  AddOmninamesParams(tempOutputFile);
+  tempOutputFile << " &" << endl;
+  tempOutputFile.flush();
+  tempOutputFile.close();
+  chmod(_TmpFileName.c_str(), 0x1ED);
+
+  // --- Build command
+
+  string command;
+
+  if (resInfo.Protocol == rsh)
+    {
+      command = "rsh ";
+      string commandRcp = "rcp ";
+      commandRcp += _TmpFileName;
+      commandRcp += " ";
+      commandRcp += machine;
+      commandRcp += ":";
+      commandRcp += _TmpFileName;
+      system(commandRcp.c_str());
+    }
+
+  else if (resInfo.Protocol == ssh)
+    command = "ssh ";
+  else
+    throw SALOME_Exception("Unknown protocol");
+
+  command += machine;
+  _CommandForRemAccess = command;
+  command += " ";
+  command += _TmpFileName;
+  command += " > ";
+  command += "/tmp/";
+  command += _NS->ContainerName(params);
+  command += "_";
+  command += machine;
+  command += ".log 2>&1 &";
+  SCRUTE(command);
+
   return command;
+
 }
 
 
+
+
index c0b6ef38530492a15d9dcd5a6e33e1921cbc99d4..029c9fa9ee96ae04822feb6fab6e03f15da82035 100644 (file)
 #include <SALOMEconfig.h>
 #include "SALOME_ResourcesCatalog_Handler.hxx"
 #include "SALOME_LoadRateManager.hxx"
+#include "SALOME_NamingService.hxx"
 #include CORBA_CLIENT_HEADER(SALOME_ContainerManager)
 #include <string>
 #include <fstream>
 #include <vector>
 
-//WARNING the call of BuildTempFileToLaunchRemoteContainer and RmTmpFile must be done in a critical section to be sure to be clean.
-//Only one thread should use the SALOME_ResourcesManager class in a SALOME session.
 
-class SALOME_ResourcesManager
-{
-public:
-  //! standard constructor
-  SALOME_ResourcesManager();
 
-  //!just for test
-  SALOME_ResourcesManager(const char *xmlFilePath);
-  
-  //! standard destructor
-  ~SALOME_ResourcesManager();
+#if defined RESOURCESMANAGER_EXPORTS
+#if defined WIN32
+#define RESOURCESMANAGER_EXPORT __declspec( dllexport )
+#else
+#define RESOURCESMANAGER_EXPORT
+#endif
+#else
+#if defined WNT
+#define RESOURCESMANAGER_EXPORT __declspec( dllimport )
+#else
+#define RESOURCESMANAGER_EXPORT
+#endif
+#endif
 
-  //! method to get the list of name of ressources fitting for the specified module.
-  std::vector<std::string> GetFittingResources(const Engines::MachineParameters& params,const char *moduleName) throw(SALOME_Exception);
+// --- WARNING ---
+// The call of BuildTempFileToLaunchRemoteContainer and RmTmpFile must be done
+// in a critical section to be sure to be clean.
+// Only one thread should use the SALOME_ResourcesManager class in a SALOME
+// session.
 
-  //! method to dynamically obtain the best machines
-  std::string FindBest(const Engines::MachineList& listOfMachines);
+class RESOURCESMANAGER_EXPORT SALOME_ResourcesManager
+  {
 
-  //! method that builds in a temporary file the script to be launched
-  std::string BuildTempFileToLaunchRemoteContainer(const std::string& machine,const char *containerName);
+  public:
 
-  //! method that builds the command to be launched.
-  std::string BuildCommandToLaunchLocalContainer(const char *containerName);
+    SALOME_ResourcesManager(CORBA::ORB_ptr orb, const char *xmlFilePath);
+    SALOME_ResourcesManager(CORBA::ORB_ptr orb);
 
-  //! method that remove the generated temporary file in case of a remote launch.
-  void RmTmpFile();
+    ~SALOME_ResourcesManager();
 
-  //! method that builds the script to be launched
-  std::string BuildCommand(const std::string& machine,const char *containerName);
+    std::vector<std::string>
+    GetFittingResources(const Engines::MachineParameters& params,
+                        const char *moduleName)
+    throw(SALOME_Exception);
 
-  //! add an entry in the ressources catalog  xml file. Return 1 if OK. Return 0 if the ressource with the same hostname already exists.
-  int AddResourceInCatalog(const Engines::MachineParameters& paramsOfNewResources, const std::map<std::string,std::string>& modulesOnNewResources,
-                          const char *environPathOfPrerequired,
-                          const char *alias, const char *userName, AccessModeType mode, AccessProtocolType prot) throw(SALOME_Exception);
-  
-  //! delete a ressource from the Catalog.
-  void DeleteResourceInCatalog(const char *hostname);
+    std::string FindBest(const Engines::MachineList& listOfMachines);
 
-  //! write the current data in memory in file.
-  void WriteInXmlFile();
+    std::string BuildCommandToLaunchRemoteContainer
+    (const std::string& machine,
+     const Engines::MachineParameters& params);
 
-  //! method to parse the data type catalog
-  const MapOfParserResourcesType& ParseXmlFile();
+    std::string BuildCommandToLaunchLocalContainer
+    (const Engines::MachineParameters& params);
 
-  //! to consult the content of the list
-  const MapOfParserResourcesType& GetList() const;
+    void RmTmpFile();
 
-private:
+    std::string BuildCommand(const std::string& machine,
+                            const char *containerName);
 
-  //! method to verify ressources catalog content - return true if verfication is OK
-  bool _verify_resources(MapOfParserResourcesType resourceslist);
+    int AddResourceInCatalog
+    (const Engines::MachineParameters& paramsOfNewResources,
+     const std::map<std::string, std::string>& modulesOnNewResources,
+     const char *environPathOfPrerequired,
+     const char *alias,
+     const char *userName,
+     AccessModeType mode,
+     AccessProtocolType prot)
+    throw(SALOME_Exception);
 
-  //! method that fill hosts with only resources in xml files that are on the specified OS
-  void SelectOnlyResourcesWithOS(std::vector<std::string>& hosts,const char *OS) const throw(SALOME_Exception);
+    void DeleteResourceInCatalog(const char *hostname);
 
-  //! method that keep from hosts only those having component of name moduleName.
-  void KeepOnlyResourcesWithModule(std::vector<std::string>& hosts,const char *moduleName) const throw(SALOME_Exception);
+    void WriteInXmlFile();
 
-  //! methode that add to command all options relative to naming service.
-  void AddOmninamesParams(std::string& command) const;
+    const MapOfParserResourcesType& ParseXmlFile();
 
-  //! method that add to command all options relative to naming service.
-  void AddOmninamesParams(std::ofstream& fileStream) const;
+    const MapOfParserResourcesType& GetList() const;
 
-  //! method that generate a file name in /tmp directory
-  std::string BuildTemporaryFileName() const;
+  private:
+    SALOME_NamingService *_NS;
 
-  // will contain the path to the ressources catalog
-  QString _path_resources;
+    std::string BuildTempFileToLaunchRemoteContainer
+    (const std::string& machine,
+     const Engines::MachineParameters& params);
 
-  //! attribute that contains current tmp files generated
-  std::string _TmpFileName;
+    void SelectOnlyResourcesWithOS(std::vector<std::string>& hosts,
+                                  const char *OS) const
+      throw(SALOME_Exception);
 
-  //! attribute that contains the rsh or ssh command to access directly to machine. Only used by this->RmTmpFile in case of a remote launch.
-  std::string _CommandForRemAccess;
-  
-  //will contain the informations on the data type catalog(after parsing)
-  MapOfParserResourcesType _resourcesList;
+    void KeepOnlyResourcesWithModule(std::vector<std::string>& hosts,
+                                    const char *moduleName) const
+      throw(SALOME_Exception);
 
-  SALOME_LoadRateManager _dynamicResourcesSelecter;
-};
+    void AddOmninamesParams(std::string& command) const;
+
+    void AddOmninamesParams(std::ofstream& fileStream) const;
+
+    std::string BuildTemporaryFileName() const;
+
+
+    //! will contain the path to the ressources catalog
+    QString _path_resources;
+
+    //! attribute that contains current tmp files generated
+    std::string _TmpFileName;
+
+    //! contains the rsh or ssh command to access directly to machine.
+    //  Only used by this->RmTmpFile in case of a remote launch.
+    std::string _CommandForRemAccess;
+
+    //! will contain the informations on the data type catalog(after parsing)
+    MapOfParserResourcesType _resourcesList;
+
+    SALOME_LoadRateManager _dynamicResourcesSelecter;
+
+    //! different behaviour if $APPLI exists (SALOME Application) 
+    bool _isAppliSalomeDefined;
+  };
 
 #endif // RESSOURCESCATALOG_IMPL_H
index 17f8c42afca68b0536a36db6e284d9065442e3d3..8d416a855b33e21a4aa3ac0ad1ebf7cbdb41aed9 100644 (file)
@@ -50,12 +50,12 @@ LIB_SRC = \
 # in fact client is a test ! So it may go away BIN !
 BIN = SALOME_RessourcesCatalog_Server SALOME_RessourcesCatalog_Client
 BIN_SRC = 
-BIN_SERVER_IDL = SALOME_RessourcesCatalog.idl
+BIN_SERVER_IDL = SALOME_RessourcesCatalog.idl SALOME_Exception.idl
 
 CPPFLAGS+= $(QT_MT_INCLUDES) 
 CXXFLAGS+= 
 LDFLAGS+= $(QT_MT_LIBS) $(OGL_LIBS) -lSalomeNS -lOpUtil -lSALOMELocalTrace
-LDFLAGSFORBIN= $(LDFLAGS) -lSALOMETraceCollector
+LDFLAGSFORBIN+= -lSalomeNS -lOpUtil -lSALOMELocalTrace -lSALOMEBasics
 
 @CONCLUDE@
 
index d368d878f2a4523cb3246eb2d46166956d359d97..9fef8478bfc9eaf64a8dde989373c1672fd4a902 100644 (file)
 
 /* $Header$ */
 
-#include <iostream.h>
+#include <iostream>
 #include "SALOME_NamingService.hxx"
 #include <SALOMEconfig.h>
+#ifndef WNT
 #include CORBA_SERVER_HEADER(SALOME_RessourcesCatalog)
+#else
+#include <SALOME_RessourcesCatalog.hh>
+#endif
 #include <string>
 #include "utilities.h"
 using namespace std;
@@ -62,7 +66,11 @@ int main(int argc,char **argv)
 
   //Get container type list of computer eri
   SALOME_RessourcesCatalog::ListOfContainerType_var list = Catalogue->GetContainerTypeList("eri");
+#ifndef WNT
   for (unsigned int ind = 0; ind < list->length();ind++)
+#else
+  for (ind = 0; ind < list->length();ind++)
+#endif
     {
       MESSAGE("Container type list of eri : " << list[ind]);
     }
@@ -72,7 +80,11 @@ int main(int argc,char **argv)
   MESSAGE("Ressource name : " << computer->name);
   MESSAGE("Ressource OS : " << computer->OS);
   MESSAGE("Ressource OS version : " << computer->OS_version);
+#ifndef WNT
   for (unsigned int ind = 0; ind < computer->procs.length();ind++)
+#else
+  for (ind = 0; ind < computer->procs.length();ind++)
+#endif
     {
       MESSAGE("Processor number : " << computer->procs[ind].number);
       MESSAGE("Processor model name : " << computer->procs[ind].model_name);
index 9e1b8e2f8d898c377c63ef2c41b982ec11e029e6..79e785560ac2e927b753afa801b8a8663deb4857 100755 (executable)
 #include <string>
 #include <vector>
 
-class SALOME_RessourcesCatalog_Handler : public QXmlDefaultHandler
+#if defined RESSOURCESCatalog_EXPORTS
+#if defined WIN32
+#define RESSOURCESCatalog_EXPORT __declspec( dllexport )
+#else
+#define RESSOURCESCatalog_EXPORT
+#endif
+#else
+#if defined WNT
+#define RESSOURCESCatalog_EXPORT __declspec( dllimport )
+#else
+#define RESSOURCESCatalog_EXPORT
+#endif
+#endif
+
+class RESSOURCESCatalog_EXPORT SALOME_RessourcesCatalog_Handler : public QXmlDefaultHandler
 {
 public :
   //! standard constructor
index b52c63b672bda7cd8765f13a2afa2de3c40ac288..ea3be6a324ded239bd9c03bc99f0b70683a27142 100644 (file)
@@ -26,7 +26,7 @@
 //  Module : SALOME
 //  $Header$
 
-#include <iostream.h>
+#include <iostream>
 #include "SALOME_NamingService.hxx"
 #include "SALOME_RessourcesCatalog_impl.hxx"
 #include "utilities.h"
@@ -38,7 +38,7 @@ int main(int argc,char **argv)
 {
   // initialize the ORB
   CORBA::ORB_ptr orb = CORBA::ORB_init (argc, argv);
-  SALOMETraceCollector *myThreadTrace = SALOMETraceCollector::instance(orb);
+  //  LocalTraceCollector *myThreadTrace = SALOMETraceCollector::instance(orb);
   try
     {
       CosNaming::NamingContext_var _rootContext, catalogContext;
@@ -72,7 +72,11 @@ int main(int argc,char **argv)
       for (int i = 1; i<=NumberOfTries; i++)
        {
          if (i!=1) 
+#ifndef WNT
            a=nanosleep(&ts_req,&ts_rem);
+#else
+           Sleep(TIMESleep/1000000);
+#endif
          try
            { 
              obj = orb->resolve_initial_references("RootPOA");
@@ -85,9 +89,9 @@ int main(int argc,char **argv)
              if (!CORBA::is_nil(theObj))
                inc = CosNaming::NamingContext::_narrow(theObj);
            }
-         catch( CORBA::COMM_FAILURE& )
+         catch( CORBA::SystemException& )
            {
-             INFOS( "Ressources Catalog: CORBA::COMM_FAILURE: Unable to contact the Naming Service" );
+             INFOS( "Ressources Catalog: CORBA::SystemException: Unable to contact the Naming Service" );
            }
          if(!CORBA::is_nil(inc)) 
            {
@@ -97,7 +101,11 @@ int main(int argc,char **argv)
                  for(int j=1; j<=NumberOfTries; j++)
                    {
                      if (j!=1) 
+#ifndef WNT
                        a=nanosleep(&ts_req, &ts_rem);
+#else
+                   Sleep(TIMESleep/1000000);
+#endif
                      try{
                        object = inc->resolve(name);
                      }
@@ -149,6 +157,6 @@ int main(int argc,char **argv)
     INFOS("Caught CORBA::Exception.")
       }
 
-  delete myThreadTrace;
+  //  delete myThreadTrace;
   return 0;
 }
index 5a1d7bed46ee04fbc42b4bbd637fbab15093ea05..28be74c37b7fa47b02478effbd7504802e004666 100644 (file)
@@ -227,7 +227,11 @@ SALOME_RessourcesCatalogImpl::_verify_ressources(ListOfParserressources ressourc
           _machine_list.push_back(ressourceslist[ind].Parsername);   
 
   // Parse if a computer name is twice in the list of computers
+#ifndef WNT
   for (unsigned int ind = 0; ind < _machine_list.size(); ind++)
+#else
+  for (ind = 0; ind < _machine_list.size(); ind++)
+#endif
     {
      for (unsigned int ind1 = ind+1 ; ind1 < _machine_list.size(); ind1++)
        {
index 4b8c5228ad3b70fad66a47a28f3c2025b6d3a2ce..42237b98bb63286a240400c3647af73c1569436d 100644 (file)
 #include <SALOMEconfig.h>
 #include CORBA_SERVER_HEADER(SALOME_RessourcesCatalog)
 
-class SALOME_RessourcesCatalogImpl: public POA_SALOME_RessourcesCatalog::RessourcesCatalog,
+#if defined RESSOURCESCatalog_EXPORTS
+#if defined WIN32
+#define RESSOURCESCatalog_EXPORT __declspec( dllexport )
+#else
+#define RESSOURCESCatalog_EXPORT
+#endif
+#else
+#if defined WNT
+#define RESSOURCESCatalog_EXPORT __declspec( dllimport )
+#else
+#define RESSOURCESCatalog_EXPORT
+#endif
+#endif
+
+class RESSOURCESCatalog_EXPORT SALOME_RessourcesCatalogImpl: public POA_SALOME_RessourcesCatalog::RessourcesCatalog,
                                  public PortableServer::RefCountServantBase 
 {
 public:
index 5a4adbf4e62687107bfe9d9da9e834b4685e4963..eb9a92a377c6e22f9ea4f44875045bd49a7effcb 100644 (file)
@@ -1,28 +1,6 @@
-#  SALOME SALOMEDS : data structure of SALOME and sources of Salome data server 
-#
-#  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-#  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
-# 
-#  This library is free software; you can redistribute it and/or 
-#  modify it under the terms of the GNU Lesser General Public 
-#  License as published by the Free Software Foundation; either 
-#  version 2.1 of the License. 
-# 
-#  This library is distributed in the hope that it will be useful, 
-#  but WITHOUT ANY WARRANTY; without even the implied warranty of 
-#  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
-#  Lesser General Public License for more details. 
-# 
-#  You should have received a copy of the GNU Lesser General Public 
-#  License along with this library; if not, write to the Free Software 
-#  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
-# 
-#  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
-#
-#
 #
 #  File   : Makefile.in
-#  Author : Marc Tajchman
+#  Author : Sergey RUIN
 #  Module : SALOME
 
 top_srcdir=@top_srcdir@
@@ -33,15 +11,27 @@ VPATH=.:@srcdir@:@top_srcdir@/idl:$(top_srcdir)/idl
 
 @COMMENCE@
 
+EXPORT_PYSCRIPTS = SALOME_DriverPy.py
+
 EXPORT_HEADERS= \
        SALOMEDS_StudyManager_i.hxx \
-       SALOMEDS_OCAFApplication.hxx \
-       Handle_SALOMEDS_OCAFApplication.hxx
+       SALOMEDS_Driver_i.hxx \
+       SALOMEDS_StudyManager.hxx \
+       SALOMEDS_Study_i.hxx \
+       SALOMEDS_Study.hxx \
+       SALOMEDS_SObject_i.hxx \
+       SALOMEDS_SObject.hxx \
+       SALOMEDS_SComponent_i.hxx \
+       SALOMEDS_SComponent.hxx \
+       SALOMEDS_GenericAttribute_i.hxx \
+       SALOMEDS_GenericAttribute.hxx
 
 # Libraries targets
 
 LIB = libSalomeDS.la
 LIB_SRC =      \
+                 SALOMEDS.cxx \
+                 SALOMEDS_Driver_i.cxx \
                  SALOMEDS_StudyManager_i.cxx \
                  SALOMEDS_UseCaseBuilder_i.cxx \
                  SALOMEDS_UseCaseIterator_i.cxx \
@@ -51,12 +41,7 @@ LIB_SRC =    \
                  SALOMEDS_StudyBuilder_i.cxx \
                  SALOMEDS_SObject_i.cxx \
                  SALOMEDS_SComponent_i.cxx \
-                 SALOMEDS_OCAFApplication.cxx \
                  SALOMEDS_GenericAttribute_i.cxx \
-                 SALOMEDS_IORAttribute.cxx \
-                 SALOMEDS_ExternalFileDef.cxx \
-                 SALOMEDS_FileType.cxx \
-                 SALOMEDS_PersRefAttribute.cxx \
                  SALOMEDS_AttributeComment_i.cxx \
                  SALOMEDS_AttributeExternalFileDef_i.cxx \
                  SALOMEDS_AttributeFileType_i.cxx \
@@ -85,51 +70,71 @@ LIB_SRC =   \
                  SALOMEDS_AttributeTableOfString_i.cxx \
                  SALOMEDS_AttributeStudyProperties_i.cxx \
                  SALOMEDS_AttributePythonObject_i.cxx \
-                 SALOMEDS_SequenceOfRealAttribute.cxx \
-                 SALOMEDS_SequenceOfIntegerAttribute.cxx \
-                 SALOMEDS_DrawableAttribute.cxx \
-                 SALOMEDS_SelectableAttribute.cxx \
-                 SALOMEDS_ExpandableAttribute.cxx  \
-                 SALOMEDS_OpenedAttribute.cxx \
-                 SALOMEDS_FlagsAttribute.cxx \
-                 SALOMEDS_GraphicAttribute.cxx \
-                 SALOMEDS_TextColorAttribute.cxx \
-                 SALOMEDS_TextHighlightColorAttribute.cxx \
-                 SALOMEDS_PixMapAttribute.cxx \
-                 SALOMEDS_LocalIDAttribute.cxx \
-                 SALOMEDS_TargetAttribute.cxx \
-                 SALOMEDS_TableOfIntegerAttribute.cxx \
-                 SALOMEDS_TableOfRealAttribute.cxx \
-                 SALOMEDS_TableOfStringAttribute.cxx \
-                 SALOMEDS_StudyPropertiesAttribute.cxx \
-                 SALOMEDS_PythonObjectAttribute.cxx \
-                 SALOMEDS_DataMapOfIntegerString_0.cxx \
-                 SALOMEDS_DataMapIteratorOfDataMapOfIntegerString_0.cxx \
-                 SALOMEDS_DataMapNodeOfDataMapOfIntegerString_0.cxx \
-                 SALOMEDS_DataMapIteratorOfDataMapStringLabel_0.cxx \
-                 SALOMEDS_DataMapNodeOfDataMapStringLabel_0.cxx \
-                 SALOMEDS_DataMapStringLabel_0.cxx 
+                 SALOMEDS_SObject.cxx \
+                 SALOMEDS_SComponent.cxx \
+                 SALOMEDS_GenericAttribute.cxx \
+                 SALOMEDS_ChildIterator.cxx \
+                 SALOMEDS_SComponentIterator.cxx \
+                 SALOMEDS_UseCaseIterator.cxx \
+                 SALOMEDS_UseCaseBuilder.cxx \
+                 SALOMEDS_StudyBuilder.cxx \
+                 SALOMEDS_Study.cxx \
+                 SALOMEDS_StudyManager.cxx \
+                 SALOMEDS_AttributeStudyProperties.cxx \
+                 SALOMEDS_AttributeComment.cxx \
+                 SALOMEDS_AttributeDrawable.cxx \
+                 SALOMEDS_AttributeExpandable.cxx \
+                 SALOMEDS_AttributeExternalFileDef.cxx \
+                 SALOMEDS_AttributeFileType.cxx \
+                 SALOMEDS_AttributeFlags.cxx \
+                 SALOMEDS_AttributeGraphic.cxx \
+                 SALOMEDS_AttributeIOR.cxx \
+                 SALOMEDS_AttributeInteger.cxx \
+                 SALOMEDS_AttributeLocalID.cxx \
+                 SALOMEDS_AttributeName.cxx \
+                 SALOMEDS_AttributeOpened.cxx \
+                 SALOMEDS_AttributePythonObject.cxx \
+                 SALOMEDS_AttributeReal.cxx \
+                 SALOMEDS_AttributeSelectable.cxx \
+                 SALOMEDS_AttributeSequenceOfInteger.cxx \
+                 SALOMEDS_AttributePersistentRef.cxx \
+                 SALOMEDS_AttributePixMap.cxx \
+                 SALOMEDS_AttributeSequenceOfReal.cxx \
+                 SALOMEDS_AttributeTableOfInteger.cxx \
+                 SALOMEDS_AttributeTableOfReal.cxx \
+                 SALOMEDS_AttributeTableOfString.cxx \
+                 SALOMEDS_AttributeTarget.cxx \
+                 SALOMEDS_AttributeTextColor.cxx \
+                 SALOMEDS_AttributeTextHighlightColor.cxx \
+                 SALOMEDS_AttributeTreeNode.cxx \
+                 SALOMEDS_AttributeUserID.cxx
+
 
 # Executables targets
 BIN = SALOMEDS_Server SALOMEDS_Client
 BIN_SRC = 
-LIB_SERVER_IDL = SALOMEDS.idl SALOMEDS_Attributes.idl SALOME_Exception.idl SALOME_ContainerManager.idl
+LIB_SERVER_IDL = SALOMEDS.idl SALOMEDS_Attributes.idl SALOME_Exception.idl SALOME_GenericObj.idl
 BIN_SERVER_IDL = SALOMEDS.idl SALOMEDS_Attributes.idl
 BIN_CLIENT_IDL = 
-LIB_CLIENT_IDL = SALOME_Component.idl SALOME_GenericObj.idl
 
-CPPFLAGS+=$(OCC_INCLUDES) $(HDF5_INCLUDES)
-CXXFLAGS+=$(OCC_CXXFLAGS)
-LDFLAGS+= $(HDF5_LIBS) -lTOOLSDS -lSalomeNS -lSalomeHDFPersist -lOpUtil -lSALOMELocalTrace $(CAS_LDPATH) -lTKCAF -lTKBO -lTKStdSchema -lSalomeGenericObj -lSalomeLifeCycleCORBA -lSalomeContainer -lSalomeResourcesManager
+CPPFLAGS+=$(OCC_INCLUDES) $(HDF5_INCLUDES) $(BOOST_CPPFLAGS)
+CXXFLAGS+=$(OCC_CXXFLAGS) $(BOOST_CPPFLAGS)
+LDFLAGS+= $(HDF5_LIBS) -lTOOLSDS -lSalomeNS -lSalomeHDFPersist -lOpUtil -lSALOMELocalTrace -lSalomeDSImpl -lSalomeGenericObj $(CAS_LDPATH) -lTKCAF -lTKBO -lTKStdSchema -lSalomeGenericObj -lSalomeLifeCycleCORBA
 
 # _CS_gbo_090604 Ajout Spécifique Calibre 3, pour l'utilisation de la version 5.12 de la bibliothèque OCC.
 # La bibliothèque OCC5.12 a été compilée sur Calibre 3 avec l'extention Xmu (impossible de compiler sans).
 # On est donc obligé ici, pour permettre l'édition de lien avec les bibliothèques OCC, de spécifier le
 # chemin d'accès aux bibliothèques Xmu
 #
+
+# _CS_gbo_090604 Ajout Sp.cifique Calibre 3, pour l'utilisation de la version 5.12 de la biblioth.que OCC.
+# La biblioth.que OCC5.12 a .t. compil.e sur Calibre 3 avec l'extention Xmu (impossible de compiler sans).
+# On est donc oblig. ici, pour permettre l'.dition de lien avec les biblioth.ques OCC, de sp.cifier le
+# chemin d'acc.s aux biblioth.ques Xmu
+#
 LDXMUFLAGS= -L/usr/X11R6/lib -lXmu
 LDFLAGS+=$(LDXMUFLAGS)
-LDFLAGSFORBIN= $(LDFLAGS) -lRegistry -lSalomeNotification -lSALOMETraceCollector
+LDFLAGSFORBIN= $(LDFLAGS) -lTKLCAF -lTKMath -lRegistry -lSalomeNotification -lSalomeContainer -lSalomeResourcesManager -lSALOMEBasics
 
 @CONCLUDE@
 
diff --git a/src/SALOMEDS/SALOMEDS.cxx b/src/SALOMEDS/SALOMEDS.cxx
new file mode 100644 (file)
index 0000000..ae488ad
--- /dev/null
@@ -0,0 +1,57 @@
+//  SALOME SALOMEDS : data structure of SALOME and sources of Salome data server 
+//
+//  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
+//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
+// 
+//  This library is free software; you can redistribute it and/or 
+//  modify it under the terms of the GNU Lesser General Public 
+//  License as published by the Free Software Foundation; either 
+//  version 2.1 of the License. 
+// 
+//  This library is distributed in the hope that it will be useful, 
+//  but WITHOUT ANY WARRANTY; without even the implied warranty of 
+//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
+//  Lesser General Public License for more details. 
+// 
+//  You should have received a copy of the GNU Lesser General Public 
+//  License along with this library; if not, write to the Free Software 
+//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
+// 
+//  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
+//
+//
+//
+//  File   : SALOMEDS.cxx
+//  Author : Sergey ANIKIN
+//  Module : SALOME
+//  $Header$
+
+
+#ifndef WNT
+#include <SALOMEDS.hxx>
+#else
+#include "SALOMEDS.hxx"
+#endif
+
+using namespace SALOMEDS;
+
+// PAL8065: san -- Global recursive mutex for SALOMEDS methods
+Utils_Mutex Locker::MutexDS;
+
+// PAL8065: san -- Global SALOMEDS locker
+Locker::Locker()
+: Utils_Locker( &MutexDS )
+{}
+
+Locker::~Locker()
+{}
+
+void SALOMEDS::lock()
+{
+  Locker::MutexDS.lock();
+}
+
+void SALOMEDS::unlock()
+{
+  Locker::MutexDS.unlock();
+}
diff --git a/src/SALOMEDS/SALOMEDS.hxx b/src/SALOMEDS/SALOMEDS.hxx
new file mode 100644 (file)
index 0000000..06ee182
--- /dev/null
@@ -0,0 +1,67 @@
+//  SALOME SALOMEDS : data structure of SALOME and sources of Salome data server 
+//
+//  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
+//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
+// 
+//  This library is free software; you can redistribute it and/or 
+//  modify it under the terms of the GNU Lesser General Public 
+//  License as published by the Free Software Foundation; either 
+//  version 2.1 of the License. 
+// 
+//  This library is distributed in the hope that it will be useful, 
+//  but WITHOUT ANY WARRANTY; without even the implied warranty of 
+//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
+//  Lesser General Public License for more details. 
+// 
+//  You should have received a copy of the GNU Lesser General Public 
+//  License along with this library; if not, write to the Free Software 
+//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
+// 
+//  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
+//
+//
+//
+//  File   : SALOMEDS.hxx
+//  Author : Sergey ANIKIN
+//  Module : SALOME
+//  $Header$
+
+
+#ifndef SALOMEDS_HeaderFile
+#define SALOMEDS_HeaderFile
+
+#include <Utils_Mutex.hxx>
+
+namespace SALOMEDS
+{
+  // PAL8065: san -- Implementation of convenient locker based on simple recursive 
+  // mutex for POSIX platforms.
+  // This class is to protect SALOMEDS CORBA methods which deal with OCC calls from 
+  // parallel access by several threads
+  // To protect some method, an instance of Locker class should be created
+  // on the stack at the beginning of guarded code:
+  //
+  //    Locker lock;
+  //
+  class Locker : public Utils_Locker
+  {
+  public:
+    Locker();
+    virtual ~Locker();
+
+  private:
+    static Utils_Mutex MutexDS;
+
+    friend void lock();
+    friend void unlock();
+  };
+
+  // Convenient functions to lock/unlock the global SALOMEDS mutex temporarily.
+  // In particular, "unlock-dosomething-lock" scheme should be used, when some non-SALOMEDS
+  // CORBA interface is called (component's engine), to avoid deadlocks in case of 
+  // indirect recursion.
+  void lock();
+  void unlock();
+};
+
+#endif
diff --git a/src/SALOMEDS/SALOMEDS_AttributeComment.cxx b/src/SALOMEDS/SALOMEDS_AttributeComment.cxx
new file mode 100644 (file)
index 0000000..d8555c1
--- /dev/null
@@ -0,0 +1,36 @@
+//  File   : SALOMEDS_AttributeComment.cxx
+//  Author : Sergey RUIN
+//  Module : SALOME
+
+#include "SALOMEDS_AttributeComment.hxx"
+
+#include <string>
+#include <TCollection_AsciiString.hxx> 
+#include <TCollection_ExtendedString.hxx>
+
+SALOMEDS_AttributeComment::SALOMEDS_AttributeComment(const Handle(SALOMEDSImpl_AttributeComment)& theAttr)
+:SALOMEDS_GenericAttribute(theAttr)
+{}
+
+SALOMEDS_AttributeComment::SALOMEDS_AttributeComment(SALOMEDS::AttributeComment_ptr theAttr)
+:SALOMEDS_GenericAttribute(theAttr)
+{}
+
+SALOMEDS_AttributeComment::~SALOMEDS_AttributeComment()
+{}
+
+std::string SALOMEDS_AttributeComment::Value()
+{
+  std::string aValue;
+  if(_isLocal) 
+    aValue = TCollection_AsciiString(Handle(SALOMEDSImpl_AttributeComment)::DownCast(_local_impl)->Value()).ToCString();
+  else aValue = SALOMEDS::AttributeComment::_narrow(_corba_impl)->Value();
+  return aValue;
+}
+void SALOMEDS_AttributeComment::SetValue(const std::string& value)
+{
+  CheckLocked();
+  if(_isLocal) Handle(SALOMEDSImpl_AttributeComment)::DownCast(_local_impl)->SetValue((char*)value.c_str());
+  else SALOMEDS::AttributeComment::_narrow(_corba_impl)->SetValue(value.c_str());
+}
diff --git a/src/SALOMEDS/SALOMEDS_AttributeComment.hxx b/src/SALOMEDS/SALOMEDS_AttributeComment.hxx
new file mode 100644 (file)
index 0000000..b363897
--- /dev/null
@@ -0,0 +1,28 @@
+//  File   : SALOMEDS_AttributeComment.hxx
+//  Author : Sergey RUIN
+//  Module : SALOME
+
+#ifndef SALOMEDS_AttributeComment_HeaderFile
+#define SALOMEDS_AttributeComment_HeaderFile
+
+#include "SALOMEDSClient_AttributeComment.hxx"
+#include "SALOMEDS_GenericAttribute.hxx"
+#include "SALOMEDSImpl_AttributeComment.hxx"
+
+// IDL headers
+#include <SALOMEconfig.h>
+#include CORBA_SERVER_HEADER(SALOMEDS)
+#include CORBA_SERVER_HEADER(SALOMEDS_Attributes)
+
+class SALOMEDS_AttributeComment: public SALOMEDS_GenericAttribute, public SALOMEDSClient_AttributeComment
+{
+public:  
+  SALOMEDS_AttributeComment(const Handle(SALOMEDSImpl_AttributeComment)& theAttr);
+  SALOMEDS_AttributeComment(SALOMEDS::AttributeComment_ptr theAttr);
+  ~SALOMEDS_AttributeComment();
+
+  virtual std::string Value();
+  virtual void SetValue(const std::string& value);
+};
+
+#endif
index d84186658944e0d699ac14a1d514aeddd029982e..ee2d75a09054992d653f1bf015c4a3fd89c51ed0 100644 (file)
@@ -1,56 +1,30 @@
-//  SALOME SALOMEDS : data structure of SALOME and sources of Salome data server 
-//
-//  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
-// 
-//  This library is free software; you can redistribute it and/or 
-//  modify it under the terms of the GNU Lesser General Public 
-//  License as published by the Free Software Foundation; either 
-//  version 2.1 of the License. 
-// 
-//  This library is distributed in the hope that it will be useful, 
-//  but WITHOUT ANY WARRANTY; without even the implied warranty of 
-//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
-//  Lesser General Public License for more details. 
-// 
-//  You should have received a copy of the GNU Lesser General Public 
-//  License along with this library; if not, write to the Free Software 
-//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
-// 
-//  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
-//
-//
-//
 //  File   : SALOMEDS_AttributeComment_i.cxx
-//  Author : Yves FRICAUD
+//  Author : Sergey RUIN
 //  Module : SALOME
-//  $Header$
 
-#include <TCollection_ExtendedString.hxx>
-#include <TCollection_AsciiString.hxx>
 
 #include "SALOMEDS_AttributeComment_i.hxx"
 
+#include <TCollection_ExtendedString.hxx>
+#include "SALOMEDS_SObject_i.hxx"
+#include "SALOMEDS.hxx"
+
 using namespace std;
 
 char* SALOMEDS_AttributeComment_i::Value()
 {
-  TCollection_ExtendedString S = Handle(TDataStd_Comment)::DownCast(_myAttr)->Get();
-  CORBA::String_var c_s = CORBA::string_dup(TCollection_AsciiString(S).ToCString());
+  SALOMEDS::Locker lock;
+  
+  CORBA::String_var c_s =
+    CORBA::string_dup(TCollection_AsciiString(Handle(SALOMEDSImpl_AttributeComment)::DownCast(_impl)->Value()).ToCString());
   return c_s._retn();
 }
 
 void SALOMEDS_AttributeComment_i::SetValue(const char* value) 
 {
-  CheckLocked();
-  CORBA::String_var Str = CORBA::string_dup(value);
-  Handle(TDataStd_Comment)::DownCast(_myAttr)->Set(TCollection_ExtendedString(Str));
-}
-
-char* SALOMEDS_AttributeComment_i::Store() {
-  return Value();
-}
+  SALOMEDS::Locker lock; 
 
-void SALOMEDS_AttributeComment_i::Restore(const char* value) {
-  SetValue(value);
+  CheckLocked();
+  TCollection_AsciiString aStr((char*)value);
+  Handle(SALOMEDSImpl_AttributeComment)::DownCast(_impl)->SetValue(TCollection_ExtendedString(aStr));
 }
index 762a96fe99f3c4b911838c69126155f419f30cb8..dcc5a4892315f07981df3d2b5629c2f8515d0090 100644 (file)
@@ -1,56 +1,28 @@
-//  SALOME SALOMEDS : data structure of SALOME and sources of Salome data server 
-//
-//  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
-// 
-//  This library is free software; you can redistribute it and/or 
-//  modify it under the terms of the GNU Lesser General Public 
-//  License as published by the Free Software Foundation; either 
-//  version 2.1 of the License. 
-// 
-//  This library is distributed in the hope that it will be useful, 
-//  but WITHOUT ANY WARRANTY; without even the implied warranty of 
-//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
-//  Lesser General Public License for more details. 
-// 
-//  You should have received a copy of the GNU Lesser General Public 
-//  License along with this library; if not, write to the Free Software 
-//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
-// 
-//  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
-//
-//
-//
 //  File   : SALOMEDS_AttributeComment_i.hxx
-//  Author : Yves FRICAUD
+//  Author : Sergey RUIN
 //  Module : SALOME
-//  $Header$
 
 #ifndef SALOMEDS_AttributeComment_i_HeaderFile
 #define SALOMEDS_AttributeComment_i_HeaderFile
 
-#include <TDataStd_Comment.hxx>
-
-#include "SALOMEDS_GenericAttribute_i.hxx"
-
 // IDL headers
 #include <SALOMEconfig.h>
 #include CORBA_SERVER_HEADER(SALOMEDS_Attributes)
 
-DEFINE_DERIVED_ATTR(AttributeComment,TDataStd_Comment,true);
+#include "SALOMEDS_GenericAttribute_i.hxx"
+#include "SALOMEDSImpl_AttributeComment.hxx"
 
-class SALOMEDS_AttributeComment_i: 
-  public virtual POA_SALOMEDS::AttributeComment,
-  public virtual SALOMEDS_TAttributeComment_i
+class SALOMEDS_AttributeComment_i: public virtual POA_SALOMEDS::AttributeComment,
+                                  public virtual SALOMEDS_GenericAttribute_i 
 {
-  DEFINE_DERIVED_ATTR_METH_DEFAULT(AttributeComment,TDataStd_Comment);
-public:
+public:  
+  SALOMEDS_AttributeComment_i(const Handle(SALOMEDSImpl_AttributeComment)& theAttr, CORBA::ORB_ptr orb) 
+    :SALOMEDS_GenericAttribute_i(theAttr, orb) {};
+
+  virtual ~SALOMEDS_AttributeComment_i() {};
+
   char* Value();
-  void SetValue(const char* theValue);
-  
-  char* Store();
-  void Restore(const char*);
+  void SetValue(const char* value);
 };
 
-
 #endif
diff --git a/src/SALOMEDS/SALOMEDS_AttributeDrawable.cxx b/src/SALOMEDS/SALOMEDS_AttributeDrawable.cxx
new file mode 100644 (file)
index 0000000..0c4972e
--- /dev/null
@@ -0,0 +1,34 @@
+//  File   : SALOMEDS_AttributeDrawable.cxx
+//  Author : Sergey RUIN
+//  Module : SALOME
+
+#include "SALOMEDS_AttributeDrawable.hxx"
+
+#include <TCollection_AsciiString.hxx>
+#include <TCollection_ExtendedString.hxx>
+
+SALOMEDS_AttributeDrawable::SALOMEDS_AttributeDrawable(const Handle(SALOMEDSImpl_AttributeDrawable)& theAttr)
+:SALOMEDS_GenericAttribute(theAttr)
+{}
+
+SALOMEDS_AttributeDrawable::SALOMEDS_AttributeDrawable(SALOMEDS::AttributeDrawable_ptr theAttr)
+:SALOMEDS_GenericAttribute(theAttr)
+{}
+
+SALOMEDS_AttributeDrawable::~SALOMEDS_AttributeDrawable()
+{}
+
+bool SALOMEDS_AttributeDrawable::IsDrawable()
+{
+  bool aValue;
+  if(_isLocal) aValue = (bool)Handle(SALOMEDSImpl_AttributeDrawable)::DownCast(_local_impl)->IsDrawable();
+  else aValue = SALOMEDS::AttributeDrawable::_narrow(_corba_impl)->IsDrawable();
+  return aValue;
+}
+void SALOMEDS_AttributeDrawable::SetDrawable(bool value)
+{
+  CheckLocked();
+  if(_isLocal) Handle(SALOMEDSImpl_AttributeDrawable)::DownCast(_local_impl)->SetDrawable((int)value);
+  else SALOMEDS::AttributeDrawable::_narrow(_corba_impl)->SetDrawable(value);
+}
diff --git a/src/SALOMEDS/SALOMEDS_AttributeDrawable.hxx b/src/SALOMEDS/SALOMEDS_AttributeDrawable.hxx
new file mode 100644 (file)
index 0000000..fdc0b36
--- /dev/null
@@ -0,0 +1,28 @@
+//  File   : SALOMEDS_AttributeDrawable.hxx
+//  Author : Sergey RUIN
+//  Module : SALOME
+
+#ifndef SALOMEDS_AttributeDrawable_HeaderFile
+#define SALOMEDS_AttributeDrawable_HeaderFile
+
+#include "SALOMEDSClient_AttributeDrawable.hxx"
+#include "SALOMEDS_GenericAttribute.hxx"
+#include "SALOMEDSImpl_AttributeDrawable.hxx"
+
+// IDL headers
+#include <SALOMEconfig.h>
+#include CORBA_SERVER_HEADER(SALOMEDS)
+#include CORBA_SERVER_HEADER(SALOMEDS_Attributes)
+
+class SALOMEDS_AttributeDrawable: public SALOMEDS_GenericAttribute, public SALOMEDSClient_AttributeDrawable
+{
+public:  
+  SALOMEDS_AttributeDrawable(const Handle(SALOMEDSImpl_AttributeDrawable)& theAttr);
+  SALOMEDS_AttributeDrawable(SALOMEDS::AttributeDrawable_ptr theAttr);
+  ~SALOMEDS_AttributeDrawable();
+
+  virtual bool IsDrawable();
+  virtual void SetDrawable(bool value);
+};
+
+#endif
index 26f6578210ba9c5434ab9176e3035f04fba0191a..4f68a4b83a9ef7afda03cc6de8fe06fa7ae98595 100644 (file)
@@ -1,50 +1,24 @@
-//  SALOME SALOMEDS : data structure of SALOME and sources of Salome data server 
-//
-//  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
-// 
-//  This library is free software; you can redistribute it and/or 
-//  modify it under the terms of the GNU Lesser General Public 
-//  License as published by the Free Software Foundation; either 
-//  version 2.1 of the License. 
-// 
-//  This library is distributed in the hope that it will be useful, 
-//  but WITHOUT ANY WARRANTY; without even the implied warranty of 
-//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
-//  Lesser General Public License for more details. 
-// 
-//  You should have received a copy of the GNU Lesser General Public 
-//  License along with this library; if not, write to the Free Software 
-//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
-// 
-//  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
-//
-//
-//
 //  File   : SALOMEDS_AttributeDrawable_i.cxx
-//  Author : Yves FRICAUD
+//  Author : Sergey RUIN
 //  Module : SALOME
-//  $Header$
+
+
 
 #include "SALOMEDS_AttributeDrawable_i.hxx"
+#include "SALOMEDS.hxx"
 
 using namespace std;
 
-CORBA::Boolean SALOMEDS_AttributeDrawable_i::IsDrawable() {
-  return (Handle(SALOMEDS_DrawableAttribute)::DownCast(_myAttr)->Get() == 1);
+CORBA::Boolean SALOMEDS_AttributeDrawable_i::IsDrawable() 
+{
+  SALOMEDS::Locker lock;
+  return (Handle(SALOMEDSImpl_AttributeDrawable)::DownCast(_impl)->IsDrawable() == 1);
 }
                                                            
-void SALOMEDS_AttributeDrawable_i::SetDrawable(CORBA::Boolean value) {
+void SALOMEDS_AttributeDrawable_i::SetDrawable(CORBA::Boolean value) 
+{
+  SALOMEDS::Locker lock;
   CheckLocked();
-  Standard_Integer val = 0;
-  if (value != 0) val = 1;
-  Handle(TDataStd_Integer)::DownCast(_myAttr)->Set(val);
+  Handle(SALOMEDSImpl_AttributeDrawable)::DownCast(_impl)->SetDrawable(value);
 }
 
-char* SALOMEDS_AttributeDrawable_i::Store() {
-  return CORBA::string_dup(IsDrawable()?"1":"0");
-}
-
-void SALOMEDS_AttributeDrawable_i::Restore(const char* value) {
-  SetDrawable(value[0] == '1');
-}
index 7fb12ac348736f6a3e68666ecbf432c28eccd71b..97fbda50e7759d8cf735feba86ef0b60da6e52ce 100644 (file)
@@ -1,56 +1,31 @@
-//  SALOME SALOMEDS : data structure of SALOME and sources of Salome data server 
-//
-//  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
-// 
-//  This library is free software; you can redistribute it and/or 
-//  modify it under the terms of the GNU Lesser General Public 
-//  License as published by the Free Software Foundation; either 
-//  version 2.1 of the License. 
-// 
-//  This library is distributed in the hope that it will be useful, 
-//  but WITHOUT ANY WARRANTY; without even the implied warranty of 
-//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
-//  Lesser General Public License for more details. 
-// 
-//  You should have received a copy of the GNU Lesser General Public 
-//  License along with this library; if not, write to the Free Software 
-//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
-// 
-//  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
-//
-//
-//
 //  File   : SALOMEDS_AttributeDrawable_i.hxx
-//  Author : Yves FRICAUD
+//  Author : Sergey RUIN
 //  Module : SALOME
-//  $Header:
 
 #ifndef SALOMEDS_AttributeDrawable_i_HeaderFile
 #define SALOMEDS_AttributeDrawable_i_HeaderFile
 
-#include "SALOMEDS_DrawableAttribute.hxx"
-#include "SALOMEDS_GenericAttribute_i.hxx"
-
 // IDL headers
+
 #include <SALOMEconfig.h>
 #include CORBA_SERVER_HEADER(SALOMEDS_Attributes)
 
-DEFINE_DERIVED_ATTR(AttributeDrawable,SALOMEDS_DrawableAttribute,false);
+#include "SALOMEDS_GenericAttribute_i.hxx"
+#include "SALOMEDSImpl_AttributeDrawable.hxx"
 
-class SALOMEDS_AttributeDrawable_i: 
-  public virtual POA_SALOMEDS::AttributeDrawable,
-  public virtual SALOMEDS_TAttributeDrawable_i 
+class SALOMEDS_AttributeDrawable_i: public virtual POA_SALOMEDS::AttributeDrawable,
+                                    public virtual SALOMEDS_GenericAttribute_i 
 {
-  DEFINE_DERIVED_ATTR_METH_DEFAULT(AttributeDrawable,SALOMEDS_DrawableAttribute);
 public:
+  
+  SALOMEDS_AttributeDrawable_i(const Handle(SALOMEDSImpl_AttributeDrawable)& theAttr, CORBA::ORB_ptr orb)
+    :SALOMEDS_GenericAttribute_i(theAttr, orb) {}; 
+
+  virtual ~SALOMEDS_AttributeDrawable_i() {};
   CORBA::Boolean IsDrawable();
   void SetDrawable(CORBA::Boolean value);
-
-  char* Store();
-  void Restore(const char*);
-
 };
 
 
+
 #endif
diff --git a/src/SALOMEDS/SALOMEDS_AttributeExpandable.cxx b/src/SALOMEDS/SALOMEDS_AttributeExpandable.cxx
new file mode 100644 (file)
index 0000000..f14eca0
--- /dev/null
@@ -0,0 +1,34 @@
+//  File   : SALOMEDS_AttributeExpandable.cxx
+//  Author : Sergey RUIN
+//  Module : SALOME
+
+#include "SALOMEDS_AttributeExpandable.hxx"
+
+#include <TCollection_AsciiString.hxx>
+#include <TCollection_ExtendedString.hxx>
+
+SALOMEDS_AttributeExpandable::SALOMEDS_AttributeExpandable(const Handle(SALOMEDSImpl_AttributeExpandable)& theAttr)
+:SALOMEDS_GenericAttribute(theAttr)
+{}
+
+SALOMEDS_AttributeExpandable::SALOMEDS_AttributeExpandable(SALOMEDS::AttributeExpandable_ptr theAttr)
+:SALOMEDS_GenericAttribute(theAttr)
+{}
+
+SALOMEDS_AttributeExpandable::~SALOMEDS_AttributeExpandable()
+{}
+
+bool SALOMEDS_AttributeExpandable::IsExpandable()
+{
+  bool aValue;
+  if(_isLocal) aValue = (bool)Handle(SALOMEDSImpl_AttributeExpandable)::DownCast(_local_impl)->IsExpandable();
+  else aValue = SALOMEDS::AttributeExpandable::_narrow(_corba_impl)->IsExpandable();
+  return aValue;
+}
+void SALOMEDS_AttributeExpandable::SetExpandable(bool value)
+{
+  CheckLocked();
+  if(_isLocal) Handle(SALOMEDSImpl_AttributeExpandable)::DownCast(_local_impl)->SetExpandable((int)value);
+  else SALOMEDS::AttributeExpandable::_narrow(_corba_impl)->SetExpandable(value);
+}
diff --git a/src/SALOMEDS/SALOMEDS_AttributeExpandable.hxx b/src/SALOMEDS/SALOMEDS_AttributeExpandable.hxx
new file mode 100644 (file)
index 0000000..550e289
--- /dev/null
@@ -0,0 +1,28 @@
+//  File   : SALOMEDS_AttributeExpandable.hxx
+//  Author : Sergey RUIN
+//  Module : SALOME
+
+#ifndef SALOMEDS_AttributeExpandable_HeaderFile
+#define SALOMEDS_AttributeExpandable_HeaderFile
+
+#include "SALOMEDSClient_AttributeExpandable.hxx"
+#include "SALOMEDS_GenericAttribute.hxx"
+#include "SALOMEDSImpl_AttributeExpandable.hxx"
+
+// IDL headers
+#include <SALOMEconfig.h>
+#include CORBA_SERVER_HEADER(SALOMEDS)
+#include CORBA_SERVER_HEADER(SALOMEDS_Attributes)
+
+class SALOMEDS_AttributeExpandable: public SALOMEDS_GenericAttribute, public SALOMEDSClient_AttributeExpandable
+{
+public:  
+  SALOMEDS_AttributeExpandable(const Handle(SALOMEDSImpl_AttributeExpandable)& theAttr);
+  SALOMEDS_AttributeExpandable(SALOMEDS::AttributeExpandable_ptr theAttr);
+  ~SALOMEDS_AttributeExpandable();
+
+  virtual bool IsExpandable();
+  virtual void SetExpandable(bool value);
+};
+
+#endif
index 70601d33fea9e5ce0e955f18cb71e163fa05211c..5cff0d380f614cfdcff6ef966008be8db5c7c02f 100644 (file)
@@ -1,49 +1,23 @@
-//  SALOME SALOMEDS : data structure of SALOME and sources of Salome data server 
-//
-//  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
-// 
-//  This library is free software; you can redistribute it and/or 
-//  modify it under the terms of the GNU Lesser General Public 
-//  License as published by the Free Software Foundation; either 
-//  version 2.1 of the License. 
-// 
-//  This library is distributed in the hope that it will be useful, 
-//  but WITHOUT ANY WARRANTY; without even the implied warranty of 
-//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
-//  Lesser General Public License for more details. 
-// 
-//  You should have received a copy of the GNU Lesser General Public 
-//  License along with this library; if not, write to the Free Software 
-//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
-// 
-//  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
-//
-//
-//
 //  File   : SALOMEDS_AttributeExpandable_i.cxx
-//  Author : Yves FRICAUD
+//  Author : Sergey RUIN
 //  Module : SALOME
-//  $Header$
+
 
 #include "SALOMEDS_AttributeExpandable_i.hxx"
+#include "SALOMEDS.hxx"
 
 using namespace std;
 
-CORBA::Boolean SALOMEDS_AttributeExpandable_i::IsExpandable() {
-  return (Handle(SALOMEDS_ExpandableAttribute)::DownCast(_myAttr)->Get() == 1);
+CORBA::Boolean SALOMEDS_AttributeExpandable_i::IsExpandable() 
+{
+  SALOMEDS::Locker lock;
+  return (Handle(SALOMEDSImpl_AttributeExpandable)::DownCast(_impl)->IsExpandable() == 1);
 }
                                                            
-void SALOMEDS_AttributeExpandable_i::SetExpandable(CORBA::Boolean value) {
-  Standard_Integer val = 0;
-  if (value != 0) val = 1;
-  Handle(TDataStd_Integer)::DownCast(_myAttr)->Set(val);
-}
-
-char* SALOMEDS_AttributeExpandable_i::Store() {
-  return CORBA::string_dup(IsExpandable()?"1":"0");
+void SALOMEDS_AttributeExpandable_i::SetExpandable(CORBA::Boolean value) 
+{
+  SALOMEDS::Locker lock;
+  CheckLocked();
+  Handle(SALOMEDSImpl_AttributeExpandable)::DownCast(_impl)->SetExpandable(value);
 }
 
-void SALOMEDS_AttributeExpandable_i::Restore(const char* value) {
-  SetExpandable(value[0] == '1');
-}
index a8c57c00eec55a3b9d44da37b87143f09c96f713..7463c8f512e2765eeaf85b88096b998a05ae3092 100644 (file)
@@ -1,28 +1,5 @@
-//  SALOME SALOMEDS : data structure of SALOME and sources of Salome data server 
-//
-//  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
-// 
-//  This library is free software; you can redistribute it and/or 
-//  modify it under the terms of the GNU Lesser General Public 
-//  License as published by the Free Software Foundation; either 
-//  version 2.1 of the License. 
-// 
-//  This library is distributed in the hope that it will be useful, 
-//  but WITHOUT ANY WARRANTY; without even the implied warranty of 
-//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
-//  Lesser General Public License for more details. 
-// 
-//  You should have received a copy of the GNU Lesser General Public 
-//  License along with this library; if not, write to the Free Software 
-//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
-// 
-//  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
-//
-//
-//
 //  File   : SALOMEDS_AttributeExpandable_i.hxx
-//  Author : Yves FRICAUD
+//  Author : Sergey RUIN
 //  Module : SALOME
 //  $Header:
 
 #define SALOMEDS_AttributeExpandable_i_HeaderFile
 
 // IDL headers
+
 #include <SALOMEconfig.h>
 #include CORBA_SERVER_HEADER(SALOMEDS_Attributes)
 
-#include "SALOMEDS_ExpandableAttribute.hxx"
 #include "SALOMEDS_GenericAttribute_i.hxx"
+#include "SALOMEDSImpl_AttributeExpandable.hxx"
 
-DEFINE_DERIVED_ATTR(AttributeExpandable,SALOMEDS_ExpandableAttribute,false);
-
-class SALOMEDS_AttributeExpandable_i: 
-  public virtual POA_SALOMEDS::AttributeExpandable,
-  public virtual SALOMEDS_TAttributeExpandable_i 
+class SALOMEDS_AttributeExpandable_i: public virtual POA_SALOMEDS::AttributeExpandable,
+                                      public virtual SALOMEDS_GenericAttribute_i 
 {
-  DEFINE_DERIVED_ATTR_METH_DEFAULT(AttributeExpandable,SALOMEDS_ExpandableAttribute);
 public:
+  
+  SALOMEDS_AttributeExpandable_i(const Handle(SALOMEDSImpl_AttributeExpandable)& theAttr, CORBA::ORB_ptr orb)
+    :SALOMEDS_GenericAttribute_i(theAttr, orb) {};  
+
+  ~SALOMEDS_AttributeExpandable_i() {};
   CORBA::Boolean IsExpandable();
   void SetExpandable(CORBA::Boolean value);
-
-  char* Store();
-  void Restore(const char*);
-
 };
 
 
diff --git a/src/SALOMEDS/SALOMEDS_AttributeExternalFileDef.cxx b/src/SALOMEDS/SALOMEDS_AttributeExternalFileDef.cxx
new file mode 100644 (file)
index 0000000..01e5c51
--- /dev/null
@@ -0,0 +1,36 @@
+//  File   : SALOMEDS_AttributeExternalFileDef.cxx
+//  Author : Sergey RUIN
+//  Module : SALOME
+
+#include "SALOMEDS_AttributeExternalFileDef.hxx"
+
+#include <string>
+#include <TCollection_AsciiString.hxx> 
+#include <TCollection_ExtendedString.hxx>
+
+SALOMEDS_AttributeExternalFileDef::SALOMEDS_AttributeExternalFileDef(const Handle(SALOMEDSImpl_AttributeExternalFileDef)& theAttr)
+:SALOMEDS_GenericAttribute(theAttr)
+{}
+
+SALOMEDS_AttributeExternalFileDef::SALOMEDS_AttributeExternalFileDef(SALOMEDS::AttributeExternalFileDef_ptr theAttr)
+:SALOMEDS_GenericAttribute(theAttr)
+{}
+
+SALOMEDS_AttributeExternalFileDef::~SALOMEDS_AttributeExternalFileDef()
+{}
+
+std::string SALOMEDS_AttributeExternalFileDef::Value()
+{
+  std::string aValue;
+  if(_isLocal) 
+   aValue = TCollection_AsciiString(Handle(SALOMEDSImpl_AttributeExternalFileDef)::DownCast(_local_impl)->Value()).ToCString();
+  else aValue = SALOMEDS::AttributeExternalFileDef::_narrow(_corba_impl)->Value();
+  return aValue;
+}
+void SALOMEDS_AttributeExternalFileDef::SetValue(const std::string& value)
+{
+  CheckLocked();
+  if(_isLocal) Handle(SALOMEDSImpl_AttributeExternalFileDef)::DownCast(_local_impl)->SetValue((char*)value.c_str());
+  else SALOMEDS::AttributeExternalFileDef::_narrow(_corba_impl)->SetValue(value.c_str());
+}
diff --git a/src/SALOMEDS/SALOMEDS_AttributeExternalFileDef.hxx b/src/SALOMEDS/SALOMEDS_AttributeExternalFileDef.hxx
new file mode 100644 (file)
index 0000000..71b9a5f
--- /dev/null
@@ -0,0 +1,28 @@
+//  File   : SALOMEDS_AttributeExternalFileDef.hxx
+//  Author : Sergey RUIN
+//  Module : SALOME
+
+#ifndef SALOMEDS_AttributeExternalFileDef_HeaderFile
+#define SALOMEDS_AttributeExternalFileDef_HeaderFile
+
+#include "SALOMEDSClient_AttributeExternalFileDef.hxx"
+#include "SALOMEDS_GenericAttribute.hxx"
+#include "SALOMEDSImpl_AttributeExternalFileDef.hxx"
+
+// IDL headers
+#include <SALOMEconfig.h>
+#include CORBA_SERVER_HEADER(SALOMEDS)
+#include CORBA_SERVER_HEADER(SALOMEDS_Attributes)
+
+class SALOMEDS_AttributeExternalFileDef: public SALOMEDS_GenericAttribute, public SALOMEDSClient_AttributeExternalFileDef
+{
+public:  
+  SALOMEDS_AttributeExternalFileDef(const Handle(SALOMEDSImpl_AttributeExternalFileDef)& theAttr);
+  SALOMEDS_AttributeExternalFileDef(SALOMEDS::AttributeExternalFileDef_ptr theAttr);
+  ~SALOMEDS_AttributeExternalFileDef();
+
+  virtual std::string Value();
+  virtual void SetValue(const std::string& value);
+};
+
+#endif
index 9c60c8886ce335271ab5ffc140163c951af389a5..d25c454f671acd2d21b2dc4d33dedf5f2defeaa3 100644 (file)
@@ -1,49 +1,26 @@
-//  SALOME SALOMEDS : data structure of SALOME and sources of Salome data server 
-//
-//  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
-// 
-//  This library is free software; you can redistribute it and/or 
-//  modify it under the terms of the GNU Lesser General Public 
-//  License as published by the Free Software Foundation; either 
-//  version 2.1 of the License. 
-// 
-//  This library is distributed in the hope that it will be useful, 
-//  but WITHOUT ANY WARRANTY; without even the implied warranty of 
-//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
-//  Lesser General Public License for more details. 
-// 
-//  You should have received a copy of the GNU Lesser General Public 
-//  License along with this library; if not, write to the Free Software 
-//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
-// 
-//  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
-//
-//
-//
 //  File   : SALOMEDS_AttributeExternalFileDef_i.cxx
-//  Author : Yves FRICAUD
+//  Author : Sergey RUIN
 //  Module : SALOME
-//  $Header$
 
-#include "SALOMEDS_AttributeExternalFileDef_i.hxx"
 
+#include "SALOMEDS_AttributeExternalFileDef_i.hxx"
+#include "SALOMEDS.hxx"
 #include <TCollection_ExtendedString.hxx>
-#include <TCollection_AsciiString.hxx>
 
 using namespace std;
 
 char* SALOMEDS_AttributeExternalFileDef_i::Value()
-{
-  TCollection_ExtendedString S = Handle(SALOMEDS_ExternalFileDef)::DownCast(_myAttr)->Get();
-  CORBA::String_var c_s = CORBA::string_dup(TCollection_AsciiString(S).ToCString());
+{  
+  SALOMEDS::Locker lock; 
+  CORBA::String_var c_s = 
+    CORBA::string_dup(TCollection_AsciiString(Handle(SALOMEDSImpl_AttributeExternalFileDef)::DownCast(_impl)->Value()).ToCString());
   return c_s._retn();
 }
 
 void SALOMEDS_AttributeExternalFileDef_i::SetValue(const char* value) 
 {
+  SALOMEDS::Locker lock; 
   CheckLocked();
   CORBA::String_var Str = CORBA::string_dup(value);
-  //  Handle(SALOMEDS_ExternalFileDef)::DownCast(_myAttr)->Set(TCollection_ExtendedString(Str));
-  Handle(TDataStd_Comment)::DownCast(_myAttr)->Set(TCollection_ExtendedString(Str));
+  Handle(SALOMEDSImpl_AttributeExternalFileDef)::DownCast(_impl)->SetValue(TCollection_ExtendedString(Str));
 }
index 12b2033565a3a4abbbbb7d810b2ad93989c99b3c..a6032c3595b2f8d4af57014e6a4f7456fb36853c 100644 (file)
@@ -1,30 +1,6 @@
-//  SALOME SALOMEDS : data structure of SALOME and sources of Salome data server 
-//
-//  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
-// 
-//  This library is free software; you can redistribute it and/or 
-//  modify it under the terms of the GNU Lesser General Public 
-//  License as published by the Free Software Foundation; either 
-//  version 2.1 of the License. 
-// 
-//  This library is distributed in the hope that it will be useful, 
-//  but WITHOUT ANY WARRANTY; without even the implied warranty of 
-//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
-//  Lesser General Public License for more details. 
-// 
-//  You should have received a copy of the GNU Lesser General Public 
-//  License along with this library; if not, write to the Free Software 
-//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
-// 
-//  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
-//
-//
-//
 //  File   : SALOMEDS_AttributeExternalFileDef_i.hxx
-//  Author : Yves FRICAUD
+//  Author : Sergey RUIN
 //  Module : SALOME
-//  $Header$
 
 #ifndef SALOMEDS_AttributeExternalFileDef_i_HeaderFile
 #define SALOMEDS_AttributeExternalFileDef_i_HeaderFile
 #include CORBA_SERVER_HEADER(SALOMEDS_Attributes)
 
 #include "SALOMEDS_GenericAttribute_i.hxx"
-#include "SALOMEDS_ExternalFileDef.hxx"
+#include "SALOMEDSImpl_AttributeExternalFileDef.hxx"
 
-DEFINE_DERIVED_ATTR(AttributeExternalFileDef,SALOMEDS_ExternalFileDef,false);
-
-class SALOMEDS_AttributeExternalFileDef_i: 
-  public virtual POA_SALOMEDS::AttributeExternalFileDef,
-  public virtual SALOMEDS_TAttributeExternalFileDef_i 
+class SALOMEDS_AttributeExternalFileDef_i: public virtual POA_SALOMEDS::AttributeExternalFileDef,
+                                          public virtual SALOMEDS_GenericAttribute_i 
 {
-  DEFINE_DERIVED_ATTR_METH_DEFAULT(AttributeExternalFileDef,SALOMEDS_ExternalFileDef);
 public:
+  
+  SALOMEDS_AttributeExternalFileDef_i(const Handle(SALOMEDSImpl_AttributeExternalFileDef)& theAttr, CORBA::ORB_ptr orb) 
+    :SALOMEDS_GenericAttribute_i(theAttr, orb) {} 
+  ~SALOMEDS_AttributeExternalFileDef_i() {};
+
   char* Value();
   void SetValue(const char* value);
   
diff --git a/src/SALOMEDS/SALOMEDS_AttributeFileType.cxx b/src/SALOMEDS/SALOMEDS_AttributeFileType.cxx
new file mode 100644 (file)
index 0000000..d2cc2c1
--- /dev/null
@@ -0,0 +1,36 @@
+//  File   : SALOMEDS_AttributeFileType.cxx
+//  Author : Sergey RUIN
+//  Module : SALOME
+
+#include "SALOMEDS_AttributeFileType.hxx"
+
+#include <string>
+#include <TCollection_AsciiString.hxx> 
+#include <TCollection_ExtendedString.hxx>
+
+SALOMEDS_AttributeFileType::SALOMEDS_AttributeFileType(const Handle(SALOMEDSImpl_AttributeFileType)& theAttr)
+:SALOMEDS_GenericAttribute(theAttr)
+{}
+
+SALOMEDS_AttributeFileType::SALOMEDS_AttributeFileType(SALOMEDS::AttributeFileType_ptr theAttr)
+:SALOMEDS_GenericAttribute(theAttr)
+{}
+
+SALOMEDS_AttributeFileType::~SALOMEDS_AttributeFileType()
+{}
+
+std::string SALOMEDS_AttributeFileType::Value()
+{
+  std::string aValue;
+  if(_isLocal) 
+    aValue = TCollection_AsciiString(Handle(SALOMEDSImpl_AttributeFileType)::DownCast(_local_impl)->Value()).ToCString();
+  else aValue = SALOMEDS::AttributeFileType::_narrow(_corba_impl)->Value();
+  return aValue;
+}
+void SALOMEDS_AttributeFileType::SetValue(const std::string& value)
+{
+  CheckLocked();
+  if(_isLocal) Handle(SALOMEDSImpl_AttributeFileType)::DownCast(_local_impl)->SetValue((char*)value.c_str());
+  else SALOMEDS::AttributeFileType::_narrow(_corba_impl)->SetValue(value.c_str());
+}
diff --git a/src/SALOMEDS/SALOMEDS_AttributeFileType.hxx b/src/SALOMEDS/SALOMEDS_AttributeFileType.hxx
new file mode 100644 (file)
index 0000000..b889d53
--- /dev/null
@@ -0,0 +1,28 @@
+//  File   : SALOMEDS_AttributeFileType.hxx
+//  Author : Sergey RUIN
+//  Module : SALOME
+
+#ifndef SALOMEDS_AttributeFileType_HeaderFile
+#define SALOMEDS_AttributeFileType_HeaderFile
+
+#include "SALOMEDSClient_AttributeFileType.hxx"
+#include "SALOMEDS_GenericAttribute.hxx"
+#include "SALOMEDSImpl_AttributeFileType.hxx"
+
+// IDL headers
+#include <SALOMEconfig.h>
+#include CORBA_SERVER_HEADER(SALOMEDS)
+#include CORBA_SERVER_HEADER(SALOMEDS_Attributes)
+
+class SALOMEDS_AttributeFileType: public SALOMEDS_GenericAttribute, public SALOMEDSClient_AttributeFileType
+{
+public:  
+  SALOMEDS_AttributeFileType(const Handle(SALOMEDSImpl_AttributeFileType)& theAttr);
+  SALOMEDS_AttributeFileType(SALOMEDS::AttributeFileType_ptr theAttr);
+  ~SALOMEDS_AttributeFileType();
+
+  virtual std::string Value();
+  virtual void SetValue(const std::string& value);
+};
+
+#endif
index b6237f309617c92fba7195deed44f40dd1689ff3..c94f3b70de983a68d50c8bcd7553ec696060bca4 100644 (file)
@@ -1,48 +1,26 @@
-//  SALOME SALOMEDS : data structure of SALOME and sources of Salome data server 
-//
-//  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
-// 
-//  This library is free software; you can redistribute it and/or 
-//  modify it under the terms of the GNU Lesser General Public 
-//  License as published by the Free Software Foundation; either 
-//  version 2.1 of the License. 
-// 
-//  This library is distributed in the hope that it will be useful, 
-//  but WITHOUT ANY WARRANTY; without even the implied warranty of 
-//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
-//  Lesser General Public License for more details. 
-// 
-//  You should have received a copy of the GNU Lesser General Public 
-//  License along with this library; if not, write to the Free Software 
-//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
-// 
-//  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
-//
-//
-//
 //  File   : SALOMEDS_AttributeFileType_i.cxx
-//  Author : Yves FRICAUD
+//  Author : Sergey RUIN
 //  Module : SALOME
-//  $Header$
+
 
 #include "SALOMEDS_AttributeFileType_i.hxx"
+#include "SALOMEDS.hxx"
 #include <TCollection_ExtendedString.hxx>
-#include <TCollection_AsciiString.hxx>
 
 using namespace std;
 
 char* SALOMEDS_AttributeFileType_i::Value()
 {
-  TCollection_ExtendedString S = Handle(SALOMEDS_FileType)::DownCast(_myAttr)->Get();
-  CORBA::String_var c_s = CORBA::string_dup(TCollection_AsciiString(S).ToCString());
+  SALOMEDS::Locker lock;
+  CORBA::String_var c_s = 
+    CORBA::string_dup(TCollection_AsciiString(Handle(SALOMEDSImpl_AttributeFileType)::DownCast(_impl)->Value()).ToCString());
   return c_s._retn();
 }
 
 void SALOMEDS_AttributeFileType_i::SetValue(const char* value) 
 {
+  SALOMEDS::Locker lock;
   CheckLocked();
   CORBA::String_var Str = CORBA::string_dup(value);
-  //  Handle(SALOMEDS_FileType)::DownCast(_myAttr)->Set(TCollection_ExtendedString(Str));
-  Handle(TDataStd_Comment)::DownCast(_myAttr)->Set(TCollection_ExtendedString(Str));
+  Handle(SALOMEDSImpl_AttributeFileType)::DownCast(_impl)->SetValue(TCollection_ExtendedString(Str));
 }
index e31e23b2ee27a7a0eb05e47be1836ddc843b8d0f..321d1a02443f2d5611656e4b00f03fa7cda93ae9 100644 (file)
@@ -1,49 +1,25 @@
-//  SALOME SALOMEDS : data structure of SALOME and sources of Salome data server 
-//
-//  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
-// 
-//  This library is free software; you can redistribute it and/or 
-//  modify it under the terms of the GNU Lesser General Public 
-//  License as published by the Free Software Foundation; either 
-//  version 2.1 of the License. 
-// 
-//  This library is distributed in the hope that it will be useful, 
-//  but WITHOUT ANY WARRANTY; without even the implied warranty of 
-//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
-//  Lesser General Public License for more details. 
-// 
-//  You should have received a copy of the GNU Lesser General Public 
-//  License along with this library; if not, write to the Free Software 
-//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
-// 
-//  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
-//
-//
-//
 //  File   : SALOMEDS_AttributeFileType_i.hxx
-//  Author : Yves FRICAUD
+//  Author : Sergey RUIN
 //  Module : SALOME
-//  $Header$
 
 #ifndef SALOMEDS_AttributeFileType_i_HeaderFile
 #define SALOMEDS_AttributeFileType_i_HeaderFile
 
-#include "SALOMEDS_GenericAttribute_i.hxx"
-#include "SALOMEDS_FileType.hxx"
-
 // IDL headers
 #include <SALOMEconfig.h>
 #include CORBA_SERVER_HEADER(SALOMEDS_Attributes)
 
-DEFINE_DERIVED_ATTR(AttributeFileType,SALOMEDS_FileType,true);
+#include "SALOMEDS_GenericAttribute_i.hxx"
+#include "SALOMEDSImpl_AttributeFileType.hxx"
 
-class SALOMEDS_AttributeFileType_i: 
-  public virtual POA_SALOMEDS::AttributeFileType,
-  public virtual SALOMEDS_TAttributeFileType_i 
-{
-  DEFINE_DERIVED_ATTR_METH_DEFAULT(AttributeFileType,SALOMEDS_FileType);
+class SALOMEDS_AttributeFileType_i: public virtual POA_SALOMEDS::AttributeFileType,
+                                  public virtual SALOMEDS_GenericAttribute_i {
 public:
+  
+  SALOMEDS_AttributeFileType_i(const Handle(SALOMEDSImpl_AttributeFileType)& theAttr, CORBA::ORB_ptr orb) 
+    :SALOMEDS_GenericAttribute_i(theAttr, orb) {}; 
+  ~SALOMEDS_AttributeFileType_i() {};
+
   char* Value();
   void SetValue(const char* value);
   
diff --git a/src/SALOMEDS/SALOMEDS_AttributeFlags.cxx b/src/SALOMEDS/SALOMEDS_AttributeFlags.cxx
new file mode 100644 (file)
index 0000000..ff70449
--- /dev/null
@@ -0,0 +1,50 @@
+//  File   : SALOMEDS_AttributeFlags.cxx
+//  Author : Sergey RUIN
+//  Module : SALOME
+
+#include "SALOMEDS_AttributeFlags.hxx"
+
+#include <TCollection_AsciiString.hxx>
+#include <TCollection_ExtendedString.hxx>
+
+SALOMEDS_AttributeFlags::SALOMEDS_AttributeFlags(const Handle(SALOMEDSImpl_AttributeFlags)& theAttr)
+:SALOMEDS_GenericAttribute(theAttr)
+{}
+
+SALOMEDS_AttributeFlags::SALOMEDS_AttributeFlags(SALOMEDS::AttributeFlags_ptr theAttr)
+:SALOMEDS_GenericAttribute(theAttr)
+{}
+
+SALOMEDS_AttributeFlags::~SALOMEDS_AttributeFlags()
+{}
+
+int SALOMEDS_AttributeFlags::GetFlags()
+{
+  int aValue;
+  if(_isLocal) aValue = Handle(SALOMEDSImpl_AttributeFlags)::DownCast(_local_impl)->Get();
+  else aValue = SALOMEDS::AttributeFlags::_narrow(_corba_impl)->GetFlags();
+  return aValue;
+}
+
+void SALOMEDS_AttributeFlags::SetFlags(int theFlags)
+{
+  if(_isLocal) Handle(SALOMEDSImpl_AttributeFlags)::DownCast(_local_impl)->Set(theFlags);
+  else SALOMEDS::AttributeFlags::_narrow(_corba_impl)->SetFlags(theFlags);
+}
+
+bool SALOMEDS_AttributeFlags::Get(int theFlag)
+{
+  return (GetFlags() & theFlag) ? true : false;
+}
+void SALOMEDS_AttributeFlags::Set(int theFlag, bool theValue)
+{
+  if(_isLocal)  {
+    Handle(SALOMEDSImpl_AttributeFlags) anAttr = Handle(SALOMEDSImpl_AttributeFlags)::DownCast(_local_impl);
+    if ( theValue )
+      anAttr->Set( anAttr->Get() | theFlag );
+    else
+      anAttr->Set( anAttr->Get() & ~theFlag );    
+  }
+  else SALOMEDS::AttributeFlags::_narrow(_corba_impl)->Set(theFlag, theValue);
+}
diff --git a/src/SALOMEDS/SALOMEDS_AttributeFlags.hxx b/src/SALOMEDS/SALOMEDS_AttributeFlags.hxx
new file mode 100644 (file)
index 0000000..8bd9f57
--- /dev/null
@@ -0,0 +1,31 @@
+//  File   : SALOMEDS_AttributeFlags.hxx
+//  Author : Sergey RUIN
+//  Module : SALOME
+
+#ifndef SALOMEDS_AttributeFlags_HeaderFile
+#define SALOMEDS_AttributeFlags_HeaderFile
+
+#include "SALOMEDSClient_AttributeFlags.hxx"
+#include "SALOMEDS_GenericAttribute.hxx"
+#include "SALOMEDSImpl_AttributeFlags.hxx"
+
+// IDL headers
+#include <SALOMEconfig.h>
+#include CORBA_SERVER_HEADER(SALOMEDS)
+#include CORBA_SERVER_HEADER(SALOMEDS_Attributes)
+
+class SALOMEDS_AttributeFlags: public SALOMEDS_GenericAttribute, public SALOMEDSClient_AttributeFlags
+{
+public:  
+  SALOMEDS_AttributeFlags(const Handle(SALOMEDSImpl_AttributeFlags)& theAttr);
+  SALOMEDS_AttributeFlags(SALOMEDS::AttributeFlags_ptr theAttr);
+  ~SALOMEDS_AttributeFlags();
+
+  virtual int   GetFlags();
+  virtual void  SetFlags(int theFlags);
+
+  virtual bool  Get(int theFlag);
+  virtual void  Set(int theFlag, bool theValue);
+};
+
+#endif
index 43f2fd9473d81d64721e6448a6e0c8b4386cb7d2..9bbe0fd66134dc66c05c699a4e2e8ac9ead7feed 100644 (file)
@@ -1,42 +1,33 @@
-//  SALOME SALOMEDS : data structure of SALOME and sources of Salome data server 
-//
-//  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
-// 
-//  This library is free software; you can redistribute it and/or 
-//  modify it under the terms of the GNU Lesser General Public 
-//  License as published by the Free Software Foundation; either 
-//  version 2.1 of the License. 
-// 
-//  This library is distributed in the hope that it will be useful, 
-//  but WITHOUT ANY WARRANTY; without even the implied warranty of 
-//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
-//  Lesser General Public License for more details. 
-// 
-//  You should have received a copy of the GNU Lesser General Public 
-//  License along with this library; if not, write to the Free Software 
-//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
-// 
-//  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
-//
-//
-//
 //  File   : SALOMEDS_AttributeFlags_i.cxx
-//  Author : Sergey LITONIN
+//  Author : Sergey RUIN
 //  Module : SALOME
-//  $Header$
+
 
 #include "SALOMEDS_AttributeFlags_i.hxx"
+#include "SALOMEDS.hxx"  
 
 using namespace std;
 
+/*
+  Class       : SALOMEDS_AttributeFlags_i
+  Description : This class is intended for storing different object attributes that
+                have only two states (0 and 1).
+                
+                Avalable attributes:
+                
+                IS_VISIBLE - is equal to 1 if object is visible in 3D view (0 - overwise).
+                             This attribute is valid for active view only.
+*/
+
+
 //=======================================================================
 // function : SALOMEDS_AttributeFlags_i::GetFlags
 // purpose  : Get all flags as integer value
 //=======================================================================
 CORBA::Long SALOMEDS_AttributeFlags_i::GetFlags()
 {
-  return Handle(SALOMEDS_FlagsAttribute)::DownCast( _myAttr )->Get();
+  SALOMEDS::Locker lock;
+  return Handle(SALOMEDSImpl_AttributeFlags)::DownCast(_impl)->Get();
 }
 
 //=======================================================================
@@ -45,7 +36,8 @@ CORBA::Long SALOMEDS_AttributeFlags_i::GetFlags()
 //=======================================================================
 void SALOMEDS_AttributeFlags_i::SetFlags( CORBA::Long theFlags )
 {
-  Handle(SALOMEDS_FlagsAttribute)::DownCast( _myAttr )->Set( theFlags );
+  SALOMEDS::Locker lock;
+  Handle(SALOMEDSImpl_AttributeFlags)::DownCast(_impl)->Set( theFlags );
 }
 
 //=======================================================================
@@ -54,7 +46,8 @@ void SALOMEDS_AttributeFlags_i::SetFlags( CORBA::Long theFlags )
 //=======================================================================
 CORBA::Boolean SALOMEDS_AttributeFlags_i::Get( CORBA::Long theFlag )
 {
-  return Handle(SALOMEDS_FlagsAttribute)::DownCast( _myAttr )->Get() & theFlag ? true : false;
+  SALOMEDS::Locker lock;
+  return Handle(SALOMEDSImpl_AttributeFlags)::DownCast(_impl)->Get() & theFlag ? true : false;
 }
 
 //=======================================================================
@@ -63,8 +56,8 @@ CORBA::Boolean SALOMEDS_AttributeFlags_i::Get( CORBA::Long theFlag )
 //=======================================================================
 void SALOMEDS_AttributeFlags_i::Set( CORBA::Long theFlag, CORBA::Boolean theValue )
 {
-  Handle(SALOMEDS_FlagsAttribute) anAttr =
-    Handle(SALOMEDS_FlagsAttribute)::DownCast( _myAttr );
+  SALOMEDS::Locker lock;
+  Handle(SALOMEDSImpl_AttributeFlags) anAttr = Handle(SALOMEDSImpl_AttributeFlags)::DownCast(_impl);
   if ( theValue )
     anAttr->Set( anAttr->Get() | theFlag );
   else
index 228654562aaf5d0fb29679c732cae5c24ab09d7f..1481d0720d6b55ef44af6e2d7cec3b807f743683 100644 (file)
@@ -1,28 +1,5 @@
-//  SALOME SALOMEDS : data structure of SALOME and sources of Salome data server 
-//
-//  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
-// 
-//  This library is free software; you can redistribute it and/or 
-//  modify it under the terms of the GNU Lesser General Public 
-//  License as published by the Free Software Foundation; either 
-//  version 2.1 of the License. 
-// 
-//  This library is distributed in the hope that it will be useful, 
-//  but WITHOUT ANY WARRANTY; without even the implied warranty of 
-//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
-//  Lesser General Public License for more details. 
-// 
-//  You should have received a copy of the GNU Lesser General Public 
-//  License along with this library; if not, write to the Free Software 
-//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
-// 
-//  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
-//
-//
-//
 //  File   : SALOMEDS_AttributeFlags_i.hxx
-//  Author : Sergey LITONIN
+//  Author : Sergey RUIN
 //  Module : SALOME
 //  $Header:
 
 #define SALOMEDS_AttributeFlags_i_HeaderFile
 
 // IDL headers
+
 #include <SALOMEconfig.h>
 #include CORBA_SERVER_HEADER(SALOMEDS_Attributes)
 
-#include "SALOMEDS_FlagsAttribute.hxx"
 #include "SALOMEDS_GenericAttribute_i.hxx"
+#include "SALOMEDSImpl_AttributeFlags.hxx"
 
 /*
   Class       : SALOMEDS_AttributeFlags_i
                              This attribute is valid for active view only.
 */
 
-DEFINE_DERIVED_ATTR(AttributeFlags,SALOMEDS_FlagsAttribute,true);
-
-class SALOMEDS_AttributeFlags_i: 
-  public virtual POA_SALOMEDS::AttributeFlags,
-  public virtual SALOMEDS_TAttributeFlags_i
+class SALOMEDS_AttributeFlags_i: public virtual POA_SALOMEDS::AttributeFlags,
+                                 public virtual SALOMEDS_GenericAttribute_i
 {
-  DEFINE_DERIVED_ATTR_METH_DEFAULT(AttributeFlags,SALOMEDS_FlagsAttribute);
 public:
+  
+                      SALOMEDS_AttributeFlags_i( const Handle(SALOMEDSImpl_AttributeFlags)& theAttr, CORBA::ORB_ptr orb )
+                       :SALOMEDS_GenericAttribute_i(theAttr, orb) {};
+
+  virtual             ~SALOMEDS_AttributeFlags_i() {};
 
   CORBA::Long         GetFlags();
   void                SetFlags( CORBA::Long theFlags );
diff --git a/src/SALOMEDS/SALOMEDS_AttributeGraphic.cxx b/src/SALOMEDS/SALOMEDS_AttributeGraphic.cxx
new file mode 100644 (file)
index 0000000..8965029
--- /dev/null
@@ -0,0 +1,34 @@
+//  File   : SALOMEDS_AttributeGraphic.cxx
+//  Author : Sergey RUIN
+//  Module : SALOME
+
+#include "SALOMEDS_AttributeGraphic.hxx"
+
+#include <TCollection_AsciiString.hxx>
+#include <TCollection_ExtendedString.hxx>
+
+SALOMEDS_AttributeGraphic::SALOMEDS_AttributeGraphic(const Handle(SALOMEDSImpl_AttributeGraphic)& theAttr)
+:SALOMEDS_GenericAttribute(theAttr)
+{}
+
+SALOMEDS_AttributeGraphic::SALOMEDS_AttributeGraphic(SALOMEDS::AttributeGraphic_ptr theAttr)
+:SALOMEDS_GenericAttribute(theAttr)
+{}
+
+SALOMEDS_AttributeGraphic::~SALOMEDS_AttributeGraphic()
+{}
+
+
+bool SALOMEDS_AttributeGraphic:: GetVisibility(int theViewId)
+{
+  bool aValue;
+  if(_isLocal) aValue = (bool)Handle(SALOMEDSImpl_AttributeGraphic)::DownCast(_local_impl)->GetVisibility(theViewId);
+  else aValue = SALOMEDS::AttributeGraphic::_narrow(_corba_impl)->GetVisibility(theViewId);
+  return aValue;
+}
+void SALOMEDS_AttributeGraphic::SetVisibility(int theViewId, bool theValue)
+{
+  if(_isLocal) Handle(SALOMEDSImpl_AttributeGraphic)::DownCast(_local_impl)->SetVisibility(theViewId, theValue);
+  else SALOMEDS::AttributeGraphic::_narrow(_corba_impl)->SetVisibility(theViewId, theValue);
+}
diff --git a/src/SALOMEDS/SALOMEDS_AttributeGraphic.hxx b/src/SALOMEDS/SALOMEDS_AttributeGraphic.hxx
new file mode 100644 (file)
index 0000000..f684c45
--- /dev/null
@@ -0,0 +1,28 @@
+//  File   : SALOMEDS_AttributeGraphic.hxx
+//  Author : Sergey RUIN
+//  Module : SALOME
+
+#ifndef SALOMEDS_AttributeGraphic_HeaderFile
+#define SALOMEDS_AttributeGraphic_HeaderFile
+
+#include "SALOMEDSClient_AttributeGraphic.hxx"
+#include "SALOMEDS_GenericAttribute.hxx"
+#include "SALOMEDSImpl_AttributeGraphic.hxx"
+
+// IDL headers
+#include <SALOMEconfig.h>
+#include CORBA_SERVER_HEADER(SALOMEDS)
+#include CORBA_SERVER_HEADER(SALOMEDS_Attributes)
+
+class SALOMEDS_AttributeGraphic: public SALOMEDS_GenericAttribute, public SALOMEDSClient_AttributeGraphic
+{
+public:  
+  SALOMEDS_AttributeGraphic(const Handle(SALOMEDSImpl_AttributeGraphic)& theAttr);
+  SALOMEDS_AttributeGraphic(SALOMEDS::AttributeGraphic_ptr theAttr);
+  ~SALOMEDS_AttributeGraphic();
+
+  virtual void  SetVisibility(int theViewId, bool theValue);
+  virtual bool GetVisibility(int theViewId);
+};
+
+#endif
index 7865b25019a687fe1df5058f40a6bacecfd3388c..54eca3453cd89dc5a5f148d4e37c91f125ace485 100644 (file)
@@ -1,35 +1,20 @@
-//  SALOME SALOMEDS : data structure of SALOME and sources of Salome data server 
-//
-//  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
-// 
-//  This library is free software; you can redistribute it and/or 
-//  modify it under the terms of the GNU Lesser General Public 
-//  License as published by the Free Software Foundation; either 
-//  version 2.1 of the License. 
-// 
-//  This library is distributed in the hope that it will be useful, 
-//  but WITHOUT ANY WARRANTY; without even the implied warranty of 
-//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
-//  Lesser General Public License for more details. 
-// 
-//  You should have received a copy of the GNU Lesser General Public 
-//  License along with this library; if not, write to the Free Software 
-//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
-// 
-//  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
-//
-//
-//
 //  File   : SALOMEDS_AttributeGraphic_i.cxx
-//  Author : Sergey LITONIN
+//  Author : Sergey RUIN
 //  Module : SALOME
-//  $Header$
+
 
 #include "SALOMEDS_AttributeGraphic_i.hxx"
+#include "SALOMEDS.hxx" 
 
 using namespace std;
 
+/*
+  Class       : SALOMEDS_AttributeGraphic_i
+  Description : This class is intended for storing information about
+                graphic representation of objects in dirrent views
+*/
+
+
 //=======================================================================
 // function : SALOMEDS_AttributeGraphic_i::~SetVisibility
 // purpose  : Set visibility of object in given view
@@ -37,10 +22,9 @@ using namespace std;
 void SALOMEDS_AttributeGraphic_i::SetVisibility( CORBA::Long    theViewId,
                                                  CORBA::Boolean theValue )
 {
-  Handle(SALOMEDS_GraphicAttribute) anAttr =
-    Handle(SALOMEDS_GraphicAttribute)::DownCast( _myAttr );
-  if ( !anAttr.IsNull() )
-    anAttr->SetVisibility( theViewId, theValue );
+  SALOMEDS::Locker lock;    
+  if ( !_impl.IsNull() )
+    Handle(SALOMEDSImpl_AttributeGraphic)::DownCast(_impl)->SetVisibility( theViewId, theValue );
 }
 
 //=======================================================================
@@ -49,9 +33,8 @@ void SALOMEDS_AttributeGraphic_i::SetVisibility( CORBA::Long    theViewId,
 //=======================================================================                                     
 CORBA::Boolean SALOMEDS_AttributeGraphic_i::GetVisibility( CORBA::Long theViewId )
 {
-  Handle(SALOMEDS_GraphicAttribute) anAttr =
-    Handle(SALOMEDS_GraphicAttribute)::DownCast( _myAttr );
-  return !anAttr.IsNull() ? anAttr->GetVisibility( theViewId ) : false;
+  SALOMEDS::Locker lock;
+  return !_impl.IsNull() ? Handle(SALOMEDSImpl_AttributeGraphic)::DownCast(_impl)->GetVisibility( theViewId ) : false;
 }
 
 
index 718b2861987224c02347ea8549f419cde2c61eae..a391fc333f183c53a744668867beaf9e8751a8ed 100644 (file)
@@ -1,28 +1,5 @@
-//  SALOME SALOMEDS : data structure of SALOME and sources of Salome data server 
-//
-//  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
-// 
-//  This library is free software; you can redistribute it and/or 
-//  modify it under the terms of the GNU Lesser General Public 
-//  License as published by the Free Software Foundation; either 
-//  version 2.1 of the License. 
-// 
-//  This library is distributed in the hope that it will be useful, 
-//  but WITHOUT ANY WARRANTY; without even the implied warranty of 
-//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
-//  Lesser General Public License for more details. 
-// 
-//  You should have received a copy of the GNU Lesser General Public 
-//  License along with this library; if not, write to the Free Software 
-//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
-// 
-//  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
-//
-//
-//
 //  File   : SALOMEDS_AttributeFlags_i.hxx
-//  Author : Sergey LITONIN
+//  Author : Sergey RUIN
 //  Module : SALOME
 //  $Header:
 
 #define SALOMEDS_AttributeGraphic_i_HeaderFile
 
 // IDL headers
+
+
 #include <SALOMEconfig.h>
 #include CORBA_SERVER_HEADER(SALOMEDS_Attributes)
 
-#include "SALOMEDS_GraphicAttribute.hxx"
 #include "SALOMEDS_GenericAttribute_i.hxx"
+#include "SALOMEDSImpl_AttributeGraphic.hxx"
 
 /*
   Class       : SALOMEDS_AttributeGraphic_i
                 graphic representation of objects in dirrent views
 */
 
-DEFINE_DERIVED_ATTR(AttributeGraphic,SALOMEDS_GraphicAttribute,true);
-
-class SALOMEDS_AttributeGraphic_i: 
-  public virtual POA_SALOMEDS::AttributeGraphic,
-  public virtual SALOMEDS_TAttributeGraphic_i
+class SALOMEDS_AttributeGraphic_i: public virtual POA_SALOMEDS::AttributeGraphic,
+                                   public virtual SALOMEDS_GenericAttribute_i
 {
-  DEFINE_DERIVED_ATTR_METH_DEFAULT(AttributeGraphic,SALOMEDS_GraphicAttribute);
 public:
+  
+  SALOMEDS_AttributeGraphic_i( const Handle(SALOMEDSImpl_AttributeGraphic)& theAttr, CORBA::ORB_ptr orb )
+    :SALOMEDS_GenericAttribute_i(theAttr, orb) {}; 
+
+  virtual             ~SALOMEDS_AttributeGraphic_i() {};
 
   void                SetVisibility( CORBA::Long    theViewId,
                                      CORBA::Boolean theValue );
   CORBA::Boolean      GetVisibility( CORBA::Long    theViewId );
+
 };
 
 #endif
diff --git a/src/SALOMEDS/SALOMEDS_AttributeIOR.cxx b/src/SALOMEDS/SALOMEDS_AttributeIOR.cxx
new file mode 100644 (file)
index 0000000..13b54c9
--- /dev/null
@@ -0,0 +1,36 @@
+//  File   : SALOMEDS_AttributeIOR.cxx
+//  Author : Sergey RUIN
+//  Module : SALOME
+
+#include "SALOMEDS_AttributeIOR.hxx"
+
+#include <string>
+#include <TCollection_AsciiString.hxx> 
+#include <TCollection_ExtendedString.hxx>
+
+SALOMEDS_AttributeIOR::SALOMEDS_AttributeIOR(const Handle(SALOMEDSImpl_AttributeIOR)& theAttr)
+:SALOMEDS_GenericAttribute(theAttr)
+{}
+
+SALOMEDS_AttributeIOR::SALOMEDS_AttributeIOR(SALOMEDS::AttributeIOR_ptr theAttr)
+:SALOMEDS_GenericAttribute(theAttr)
+{}
+
+SALOMEDS_AttributeIOR::~SALOMEDS_AttributeIOR()
+{}
+
+std::string SALOMEDS_AttributeIOR::Value()
+{
+  std::string aValue;
+  if(_isLocal) 
+    aValue = TCollection_AsciiString(Handle(SALOMEDSImpl_AttributeIOR)::DownCast(_local_impl)->Value()).ToCString();
+  else aValue = SALOMEDS::AttributeIOR::_narrow(_corba_impl)->Value();
+  return aValue;
+}
+void SALOMEDS_AttributeIOR::SetValue(const std::string& value)
+{
+  CheckLocked();
+  if(_isLocal) Handle(SALOMEDSImpl_AttributeIOR)::DownCast(_local_impl)->SetValue((char*)value.c_str());
+  else SALOMEDS::AttributeIOR::_narrow(_corba_impl)->SetValue(value.c_str());
+}
diff --git a/src/SALOMEDS/SALOMEDS_AttributeIOR.hxx b/src/SALOMEDS/SALOMEDS_AttributeIOR.hxx
new file mode 100644 (file)
index 0000000..98d383f
--- /dev/null
@@ -0,0 +1,28 @@
+//  File   : SALOMEDS_AttributeIOR.hxx
+//  Author : Sergey RUIN
+//  Module : SALOME
+
+#ifndef SALOMEDS_AttributeIOR_HeaderFile
+#define SALOMEDS_AttributeIOR_HeaderFile
+
+#include "SALOMEDSClient_AttributeIOR.hxx"
+#include "SALOMEDS_GenericAttribute.hxx"
+#include "SALOMEDSImpl_AttributeIOR.hxx"
+
+// IDL headers
+#include <SALOMEconfig.h>
+#include CORBA_SERVER_HEADER(SALOMEDS)
+#include CORBA_SERVER_HEADER(SALOMEDS_Attributes)
+
+class SALOMEDS_AttributeIOR: public SALOMEDS_GenericAttribute, public SALOMEDSClient_AttributeIOR
+{
+public:  
+  SALOMEDS_AttributeIOR(const Handle(SALOMEDSImpl_AttributeIOR)& theAttr);
+  SALOMEDS_AttributeIOR(SALOMEDS::AttributeIOR_ptr theAttr);
+  ~SALOMEDS_AttributeIOR();
+
+  virtual std::string Value();
+  virtual void SetValue(const std::string& value);
+};
+
+#endif
index dec61d3587609e21ab4a7f134df77b547de384be..24309b32ae58298a99d40672e82d7beaec0e0488 100644 (file)
@@ -1,55 +1,26 @@
-//  SALOME SALOMEDS : data structure of SALOME and sources of Salome data server 
-//
-//  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
-// 
-//  This library is free software; you can redistribute it and/or 
-//  modify it under the terms of the GNU Lesser General Public 
-//  License as published by the Free Software Foundation; either 
-//  version 2.1 of the License. 
-// 
-//  This library is distributed in the hope that it will be useful, 
-//  but WITHOUT ANY WARRANTY; without even the implied warranty of 
-//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
-//  Lesser General Public License for more details. 
-// 
-//  You should have received a copy of the GNU Lesser General Public 
-//  License along with this library; if not, write to the Free Software 
-//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
-// 
-//  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
-//
-//
-//
 //  File   : SALOMEDS_AttributeIOR_i.cxx
-//  Author : Yves FRICAUD
+//  Author : Sergey RUIN
 //  Module : SALOME
-//  $Header$
 
-#include "SALOMEDS_AttributeIOR_i.hxx"
 
+#include "SALOMEDS_AttributeIOR_i.hxx"
+#include "SALOMEDS.hxx"
 #include <TCollection_ExtendedString.hxx>
-#include "SALOMEDS_SObject_i.hxx"
-#include "SALOMEDS_Study_i.hxx"
 
 using namespace std;
 
 char* SALOMEDS_AttributeIOR_i::Value()
 {
-  TCollection_ExtendedString S = Handle(SALOMEDS_IORAttribute)::DownCast(_myAttr)->Get();
-  CORBA::String_var c_s = CORBA::string_dup(TCollection_AsciiString(S).ToCString());
+ SALOMEDS::Locker lock;
+  CORBA::String_var c_s = 
+    CORBA::string_dup(TCollection_AsciiString(Handle(SALOMEDSImpl_AttributeIOR)::DownCast(_impl)->Value()).ToCString());
   return c_s._retn();
 }
 
 void SALOMEDS_AttributeIOR_i::SetValue(const char* value) 
 {
+  SALOMEDS::Locker lock;
   CheckLocked();
-
-  SALOMEDS_Study_i* aStudy = _mySObject->GetStudyServant();
-  aStudy->AddCreatedPostponed(value);
-  aStudy->AddPostponed(Value());
-
   CORBA::String_var Str = CORBA::string_dup(value);
-  Handle(TDataStd_Comment)::DownCast(_myAttr)->Set(TCollection_ExtendedString(Str));
-  aStudy->IORUpdated(Handle(SALOMEDS_IORAttribute)::DownCast(_myAttr));
+  Handle(SALOMEDSImpl_AttributeIOR)::DownCast(_impl)->SetValue(TCollection_ExtendedString(Str));
 }
index 5e60bd6cb04a052eff8a19a9dc2678ab414b094f..1aa1b7e4f8128d86a2be3692c24c24abe9791b68 100644 (file)
@@ -1,48 +1,25 @@
-//  SALOME SALOMEDS : data structure of SALOME and sources of Salome data server 
-//
-//  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
-// 
-//  This library is free software; you can redistribute it and/or 
-//  modify it under the terms of the GNU Lesser General Public 
-//  License as published by the Free Software Foundation; either 
-//  version 2.1 of the License. 
-// 
-//  This library is distributed in the hope that it will be useful, 
-//  but WITHOUT ANY WARRANTY; without even the implied warranty of 
-//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
-//  Lesser General Public License for more details. 
-// 
-//  You should have received a copy of the GNU Lesser General Public 
-//  License along with this library; if not, write to the Free Software 
-//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
-// 
-//  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
-//
-//
-//
 //  File   : SALOMEDS_AttributeIOR_i.hxx
-//  Author : Yves FRICAUD
+//  Author : Sergey RUIN
 //  Module : SALOME
-//  $Header$
 
 #ifndef SALOMEDS_AttributeIOR_i_HeaderFile
 #define SALOMEDS_AttributeIOR_i_HeaderFile
 
-#include "SALOMEDS_GenericAttribute_i.hxx"
-#include "SALOMEDS_IORAttribute.hxx"
-
 #include <SALOMEconfig.h>
 #include CORBA_SERVER_HEADER(SALOMEDS_Attributes)
 
-DEFINE_DERIVED_ATTR(AttributeIOR,SALOMEDS_IORAttribute,true);
+#include "SALOMEDS_GenericAttribute_i.hxx"
+#include "SALOMEDSImpl_AttributeIOR.hxx"
 
-class SALOMEDS_AttributeIOR_i: 
-  public virtual POA_SALOMEDS::AttributeIOR,
-  public virtual SALOMEDS_TAttributeIOR_i 
-{
-  DEFINE_DERIVED_ATTR_METH_DEFAULT(AttributeIOR,SALOMEDS_IORAttribute);
+class SALOMEDS_AttributeIOR_i: public virtual POA_SALOMEDS::AttributeIOR,
+                              public virtual SALOMEDS_GenericAttribute_i {
 public:
+  
+  SALOMEDS_AttributeIOR_i(const Handle(SALOMEDSImpl_AttributeIOR)& theAttr, CORBA::ORB_ptr orb) 
+    :SALOMEDS_GenericAttribute_i(theAttr, orb) {};
+
+  ~SALOMEDS_AttributeIOR_i() {};
+
   char* Value();
   void SetValue(const char* value);
   
diff --git a/src/SALOMEDS/SALOMEDS_AttributeInteger.cxx b/src/SALOMEDS/SALOMEDS_AttributeInteger.cxx
new file mode 100644 (file)
index 0000000..4fb2b30
--- /dev/null
@@ -0,0 +1,34 @@
+//  File   : SALOMEDS_AttributeInteger.cxx
+//  Author : Sergey RUIN
+//  Module : SALOME
+
+#include "SALOMEDS_AttributeInteger.hxx"
+
+#include <TCollection_AsciiString.hxx>
+#include <TCollection_ExtendedString.hxx>
+
+SALOMEDS_AttributeInteger::SALOMEDS_AttributeInteger(const Handle(SALOMEDSImpl_AttributeInteger)& theAttr)
+:SALOMEDS_GenericAttribute(theAttr)
+{}
+
+SALOMEDS_AttributeInteger::SALOMEDS_AttributeInteger(SALOMEDS::AttributeInteger_ptr theAttr)
+:SALOMEDS_GenericAttribute(theAttr)
+{}
+
+SALOMEDS_AttributeInteger::~SALOMEDS_AttributeInteger()
+{}
+
+int SALOMEDS_AttributeInteger::Value()
+{
+  int aValue;
+  if(_isLocal) aValue = Handle(SALOMEDSImpl_AttributeInteger)::DownCast(_local_impl)->Value();
+  else aValue = SALOMEDS::AttributeInteger::_narrow(_corba_impl)->Value();
+  return aValue;
+}
+void SALOMEDS_AttributeInteger::SetValue(int value)
+{
+  CheckLocked();
+  if(_isLocal) Handle(SALOMEDSImpl_AttributeInteger)::DownCast(_local_impl)->SetValue(value);
+  else SALOMEDS::AttributeInteger::_narrow(_corba_impl)->SetValue(value);
+}
diff --git a/src/SALOMEDS/SALOMEDS_AttributeInteger.hxx b/src/SALOMEDS/SALOMEDS_AttributeInteger.hxx
new file mode 100644 (file)
index 0000000..1ebe366
--- /dev/null
@@ -0,0 +1,28 @@
+//  File   : SALOMEDS_AttributeInteger.hxx
+//  Author : Sergey RUIN
+//  Module : SALOME
+
+#ifndef SALOMEDS_AttributeInteger_HeaderFile
+#define SALOMEDS_AttributeInteger_HeaderFile
+
+#include "SALOMEDSClient_AttributeInteger.hxx"
+#include "SALOMEDS_GenericAttribute.hxx"
+#include "SALOMEDSImpl_AttributeInteger.hxx"
+
+// IDL headers
+#include <SALOMEconfig.h>
+#include CORBA_SERVER_HEADER(SALOMEDS)
+#include CORBA_SERVER_HEADER(SALOMEDS_Attributes)
+
+class SALOMEDS_AttributeInteger: public SALOMEDS_GenericAttribute, public SALOMEDSClient_AttributeInteger
+{
+public:  
+  SALOMEDS_AttributeInteger(const Handle(SALOMEDSImpl_AttributeInteger)& theAttr);
+  SALOMEDS_AttributeInteger(SALOMEDS::AttributeInteger_ptr theAttr);
+  ~SALOMEDS_AttributeInteger();
+
+  virtual int Value();
+  virtual void SetValue(int value);
+};
+
+#endif
index 8e40d859067ffa3ad0da72299960ffe0571b5417..1766ccf87d75004cd7d8fd903b13381e406840e2 100644 (file)
@@ -1,52 +1,24 @@
-//  SALOME SALOMEDS : data structure of SALOME and sources of Salome data server 
-//
-//  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
-// 
-//  This library is free software; you can redistribute it and/or 
-//  modify it under the terms of the GNU Lesser General Public 
-//  License as published by the Free Software Foundation; either 
-//  version 2.1 of the License. 
-// 
-//  This library is distributed in the hope that it will be useful, 
-//  but WITHOUT ANY WARRANTY; without even the implied warranty of 
-//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
-//  Lesser General Public License for more details. 
-// 
-//  You should have received a copy of the GNU Lesser General Public 
-//  License along with this library; if not, write to the Free Software 
-//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
-// 
-//  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
-//
-//
-//
 //  File   : SALOMEDS_AttributeInteger_i.cxx
-//  Author : Yves FRICAUD
+//  Author : Sergey RUIN
 //  Module : SALOME
-//  $Header$
+
 
 #include "SALOMEDS_AttributeInteger_i.hxx"
+#include "SALOMEDS.hxx"
 
 using namespace std;
 
-CORBA::Long SALOMEDS_AttributeInteger_i::Value() {
-  return Handle(TDataStd_Integer)::DownCast(_myAttr)->Get();
+CORBA::Long SALOMEDS_AttributeInteger_i::Value() 
+{
+  SALOMEDS::Locker lock; 
+  return Handle(SALOMEDSImpl_AttributeInteger)::DownCast(_impl)->Value();
 }
 
-void SALOMEDS_AttributeInteger_i::SetValue(CORBA::Long value) {
+void SALOMEDS_AttributeInteger_i::SetValue(CORBA::Long value) 
+{
+  SALOMEDS::Locker lock; 
   CheckLocked();
-  Handle(TDataStd_Integer)::DownCast(_myAttr)->Set(value);
+  Handle(SALOMEDSImpl_AttributeInteger)::DownCast(_impl)->SetValue(value);
 }
 
-char* SALOMEDS_AttributeInteger_i::Store() {
-  char* IntVal = new char[25];
-  sprintf(IntVal, "%d", Value());
-  return IntVal;
-}
 
-void SALOMEDS_AttributeInteger_i::Restore(const char* value) {
-  char *err = NULL;
-  CORBA::Long l =  atol(value);
-  SetValue(l);
-}
index 0339a2cce9a71ddbd25b220fd78c347afd0f5c52..dc0bea26e1c6cf5a0f62ac36ad3f5d3c6ec15be3 100644 (file)
@@ -1,57 +1,32 @@
-//  SALOME SALOMEDS : data structure of SALOME and sources of Salome data server 
-//
-//  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
-// 
-//  This library is free software; you can redistribute it and/or 
-//  modify it under the terms of the GNU Lesser General Public 
-//  License as published by the Free Software Foundation; either 
-//  version 2.1 of the License. 
-// 
-//  This library is distributed in the hope that it will be useful, 
-//  but WITHOUT ANY WARRANTY; without even the implied warranty of 
-//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
-//  Lesser General Public License for more details. 
-// 
-//  You should have received a copy of the GNU Lesser General Public 
-//  License along with this library; if not, write to the Free Software 
-//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
-// 
-//  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
-//
-//
-//
 //  File   : SALOMEDS_AttributeInteger_i.hxx
-//  Author : Yves FRICAUD
+//  Author : Sergey RUIN
 //  Module : SALOME
-//  $Header:
 
 #ifndef SALOMEDS_AttributeInteger_i_HeaderFile
 #define SALOMEDS_AttributeInteger_i_HeaderFile
 
-#include <TDataStd_Integer.hxx>
+// IDL headers
 
-#include "SALOMEDS_GenericAttribute_i.hxx"
 
-// IDL headers
 #include <SALOMEconfig.h>
 #include CORBA_SERVER_HEADER(SALOMEDS_Attributes)
 
-DEFINE_DERIVED_ATTR(AttributeInteger,TDataStd_Integer,true);
+#include "SALOMEDS_GenericAttribute_i.hxx"
+#include "SALOMEDSImpl_AttributeInteger.hxx"
 
-class SALOMEDS_AttributeInteger_i: 
-  public virtual POA_SALOMEDS::AttributeInteger,
-  public virtual SALOMEDS_TAttributeInteger_i 
-{
-  DEFINE_DERIVED_ATTR_METH_DEFAULT(AttributeInteger,TDataStd_Integer);
+class SALOMEDS_AttributeInteger_i: public virtual POA_SALOMEDS::AttributeInteger,
+                                  public virtual SALOMEDS_GenericAttribute_i {
 public:
-  CORBA::Long Value();
-  void SetValue(CORBA::Long theValue);
+  
+  SALOMEDS_AttributeInteger_i(const Handle(SALOMEDSImpl_AttributeInteger)& theAttr, CORBA::ORB_ptr orb) 
+    :SALOMEDS_GenericAttribute_i(theAttr, orb) {}; 
 
-  char* Store();
-  void Restore(const char*);
+  ~SALOMEDS_AttributeInteger_i() {};
 
+  CORBA::Long Value();
+  void SetValue(CORBA::Long value);
 };
 
 
+
 #endif
diff --git a/src/SALOMEDS/SALOMEDS_AttributeLocalID.cxx b/src/SALOMEDS/SALOMEDS_AttributeLocalID.cxx
new file mode 100644 (file)
index 0000000..4efc2ac
--- /dev/null
@@ -0,0 +1,34 @@
+//  File   : SALOMEDS_AttributeLocalID.cxx
+//  Author : Sergey RUIN
+//  Module : SALOME
+
+#include "SALOMEDS_AttributeLocalID.hxx"
+
+#include <TCollection_AsciiString.hxx>
+#include <TCollection_ExtendedString.hxx>
+
+SALOMEDS_AttributeLocalID::SALOMEDS_AttributeLocalID(const Handle(SALOMEDSImpl_AttributeLocalID)& theAttr)
+:SALOMEDS_GenericAttribute(theAttr)
+{}
+
+SALOMEDS_AttributeLocalID::SALOMEDS_AttributeLocalID(SALOMEDS::AttributeLocalID_ptr theAttr)
+:SALOMEDS_GenericAttribute(theAttr)
+{}
+
+SALOMEDS_AttributeLocalID::~SALOMEDS_AttributeLocalID()
+{}
+
+int SALOMEDS_AttributeLocalID::Value()
+{
+  int aValue;
+  if(_isLocal) aValue = (bool)Handle(SALOMEDSImpl_AttributeLocalID)::DownCast(_local_impl)->Value();
+  else aValue = SALOMEDS::AttributeLocalID::_narrow(_corba_impl)->Value();
+  return aValue;
+}
+void SALOMEDS_AttributeLocalID::SetValue(int value)
+{
+  CheckLocked();
+  if(_isLocal) Handle(SALOMEDSImpl_AttributeLocalID)::DownCast(_local_impl)->SetValue(value);
+  else SALOMEDS::AttributeLocalID::_narrow(_corba_impl)->SetValue(value);
+}
diff --git a/src/SALOMEDS/SALOMEDS_AttributeLocalID.hxx b/src/SALOMEDS/SALOMEDS_AttributeLocalID.hxx
new file mode 100644 (file)
index 0000000..d62a941
--- /dev/null
@@ -0,0 +1,28 @@
+//  File   : SALOMEDS_AttributeLocalID.hxx
+//  Author : Sergey RUIN
+//  Module : SALOME
+
+#ifndef SALOMEDS_AttributeLocalID_HeaderFile
+#define SALOMEDS_AttributeLocalID_HeaderFile
+
+#include "SALOMEDSClient_AttributeLocalID.hxx"
+#include "SALOMEDS_GenericAttribute.hxx"
+#include "SALOMEDSImpl_AttributeLocalID.hxx"
+
+// IDL headers
+#include <SALOMEconfig.h>
+#include CORBA_SERVER_HEADER(SALOMEDS)
+#include CORBA_SERVER_HEADER(SALOMEDS_Attributes)
+
+class SALOMEDS_AttributeLocalID: public SALOMEDS_GenericAttribute, public SALOMEDSClient_AttributeLocalID
+{
+public:  
+  SALOMEDS_AttributeLocalID(const Handle(SALOMEDSImpl_AttributeLocalID)& theAttr);
+  SALOMEDS_AttributeLocalID(SALOMEDS::AttributeLocalID_ptr theAttr);
+  ~SALOMEDS_AttributeLocalID();
+
+  virtual int Value();
+  virtual void SetValue(int value);
+};
+
+#endif
index 77cef467817bd66d604b18344e0f889729442235..79231218e01ea063a272183c0cb4e388f85617ab 100644 (file)
@@ -1,52 +1,23 @@
-//  SALOME SALOMEDS : data structure of SALOME and sources of Salome data server 
-//
-//  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
-// 
-//  This library is free software; you can redistribute it and/or 
-//  modify it under the terms of the GNU Lesser General Public 
-//  License as published by the Free Software Foundation; either 
-//  version 2.1 of the License. 
-// 
-//  This library is distributed in the hope that it will be useful, 
-//  but WITHOUT ANY WARRANTY; without even the implied warranty of 
-//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
-//  Lesser General Public License for more details. 
-// 
-//  You should have received a copy of the GNU Lesser General Public 
-//  License along with this library; if not, write to the Free Software 
-//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
-// 
-//  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
-//
-//
-//
 //  File   : SALOMEDS_AttributeLocalID_i.cxx
-//  Author : Yves FRICAUD
+//  Author : Sergey RUIN
 //  Module : SALOME
-//  $Header$
+
 
 #include "SALOMEDS_AttributeLocalID_i.hxx"
+#include "SALOMEDS.hxx"
 
 using namespace std;
 
-CORBA::Long SALOMEDS_AttributeLocalID_i::Value() {
-  return Handle(SALOMEDS_LocalIDAttribute)::DownCast(_myAttr)->Get();
+CORBA::Long SALOMEDS_AttributeLocalID_i::Value() 
+{
+  SALOMEDS::Locker lock;
+  return Handle(SALOMEDSImpl_AttributeLocalID)::DownCast(_impl)->Value();
 }
                                                            
-void SALOMEDS_AttributeLocalID_i::SetValue(CORBA::Long value) {
+void SALOMEDS_AttributeLocalID_i::SetValue(CORBA::Long value) 
+{
+  SALOMEDS::Locker lock;
   CheckLocked();
-  Handle(TDataStd_Integer)::DownCast(_myAttr)->Set(value);
-}
-
-char* SALOMEDS_AttributeLocalID_i::Store() {
-  char* IntVal = new char[25];
-  sprintf(IntVal, "%d", Value());
-  return IntVal;
+  Handle(SALOMEDSImpl_AttributeLocalID)::DownCast(_impl)->SetValue(value);
 }
 
-void SALOMEDS_AttributeLocalID_i::Restore(const char* value) {
-  char *err = NULL;
-  CORBA::Long l =  atol(value);
-  SetValue(l);
-}
index a2d41abf922dbfa77fa78c9ae328baaacd2a3323..add11aab7b1911cb7d8ca1643703acb24ef3b68f 100644 (file)
@@ -1,28 +1,5 @@
-//  SALOME SALOMEDS : data structure of SALOME and sources of Salome data server 
-//
-//  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
-// 
-//  This library is free software; you can redistribute it and/or 
-//  modify it under the terms of the GNU Lesser General Public 
-//  License as published by the Free Software Foundation; either 
-//  version 2.1 of the License. 
-// 
-//  This library is distributed in the hope that it will be useful, 
-//  but WITHOUT ANY WARRANTY; without even the implied warranty of 
-//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
-//  Lesser General Public License for more details. 
-// 
-//  You should have received a copy of the GNU Lesser General Public 
-//  License along with this library; if not, write to the Free Software 
-//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
-// 
-//  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
-//
-//
-//
 //  File   : SALOMEDS_AttributeLocalID_i.hxx
-//  Author : Yves FRICAUD
+//  Author : Sergey RUIN
 //  Module : SALOME
 //  $Header:
 
 #include <SALOMEconfig.h>
 #include CORBA_SERVER_HEADER(SALOMEDS_Attributes)
 
-#include "SALOMEDS_LocalIDAttribute.hxx"
 #include "SALOMEDS_GenericAttribute_i.hxx"
+#include "SALOMEDSImpl_AttributeLocalID.hxx"
 
-DEFINE_DERIVED_ATTR(AttributeLocalID,SALOMEDS_LocalIDAttribute,true);
-
-class SALOMEDS_AttributeLocalID_i: 
-  public virtual POA_SALOMEDS::AttributeLocalID,
-  public virtual SALOMEDS_TAttributeLocalID_i 
+class SALOMEDS_AttributeLocalID_i: public virtual POA_SALOMEDS::AttributeLocalID,
+                                   public virtual SALOMEDS_GenericAttribute_i 
 {
-  DEFINE_DERIVED_ATTR_METH_DEFAULT(AttributeLocalID,SALOMEDS_LocalIDAttribute);
 public:
+  
+  SALOMEDS_AttributeLocalID_i(const Handle(SALOMEDSImpl_AttributeLocalID)& theAttr, CORBA::ORB_ptr orb) 
+    :SALOMEDS_GenericAttribute_i(theAttr, orb) {}; 
+
+  ~SALOMEDS_AttributeLocalID_i() {};
 
   CORBA::Long Value();
   void SetValue(CORBA::Long value);
 
-  char* Store();
-  void Restore(const char*);
-
 };
 
 
+
 #endif
diff --git a/src/SALOMEDS/SALOMEDS_AttributeName.cxx b/src/SALOMEDS/SALOMEDS_AttributeName.cxx
new file mode 100644 (file)
index 0000000..082703e
--- /dev/null
@@ -0,0 +1,36 @@
+//  File   : SALOMEDS_AttributeName.cxx
+//  Author : Sergey RUIN
+//  Module : SALOME
+
+#include "SALOMEDS_AttributeName.hxx"
+
+#include <string>
+#include <TCollection_AsciiString.hxx> 
+#include <TCollection_ExtendedString.hxx>
+
+SALOMEDS_AttributeName::SALOMEDS_AttributeName(const Handle(SALOMEDSImpl_AttributeName)& theAttr)
+:SALOMEDS_GenericAttribute(theAttr)
+{}
+
+SALOMEDS_AttributeName::SALOMEDS_AttributeName(SALOMEDS::AttributeName_ptr theAttr)
+:SALOMEDS_GenericAttribute(theAttr)
+{}
+
+SALOMEDS_AttributeName::~SALOMEDS_AttributeName()
+{}
+
+std::string SALOMEDS_AttributeName::Value()
+{
+  std::string aValue;
+  if(_isLocal) 
+    aValue = TCollection_AsciiString(Handle(SALOMEDSImpl_AttributeName)::DownCast(_local_impl)->Value()).ToCString();
+  else aValue = SALOMEDS::AttributeName::_narrow(_corba_impl)->Value();
+  return aValue;
+}
+void SALOMEDS_AttributeName::SetValue(const std::string& value)
+{
+  CheckLocked();
+  if(_isLocal) Handle(SALOMEDSImpl_AttributeName)::DownCast(_local_impl)->SetValue((char*)value.c_str());
+  else SALOMEDS::AttributeName::_narrow(_corba_impl)->SetValue(value.c_str());
+}
diff --git a/src/SALOMEDS/SALOMEDS_AttributeName.hxx b/src/SALOMEDS/SALOMEDS_AttributeName.hxx
new file mode 100644 (file)
index 0000000..f176349
--- /dev/null
@@ -0,0 +1,28 @@
+//  File   : SALOMEDS_AttributeName.hxx
+//  Author : Sergey RUIN
+//  Module : SALOME
+
+#ifndef SALOMEDS_AttributeName_HeaderFile
+#define SALOMEDS_AttributeName_HeaderFile
+
+#include "SALOMEDSClient_AttributeName.hxx"
+#include "SALOMEDS_GenericAttribute.hxx"
+#include "SALOMEDSImpl_AttributeName.hxx"
+
+// IDL headers
+#include <SALOMEconfig.h>
+#include CORBA_SERVER_HEADER(SALOMEDS)
+#include CORBA_SERVER_HEADER(SALOMEDS_Attributes)
+
+class SALOMEDS_AttributeName: public SALOMEDS_GenericAttribute, public SALOMEDSClient_AttributeName
+{
+public:  
+  SALOMEDS_AttributeName(const Handle(SALOMEDSImpl_AttributeName)& theAttr);
+  SALOMEDS_AttributeName(SALOMEDS::AttributeName_ptr theAttr);
+  ~SALOMEDS_AttributeName();
+
+  virtual std::string Value();
+  virtual void SetValue(const std::string& value);
+};
+
+#endif
index b495f26bfb805f077a8fe3715307d9b10b22e535..65483a3a32d84b1412fbfeb66dd18033ae76e5d4 100644 (file)
@@ -1,52 +1,25 @@
-//  SALOME SALOMEDS : data structure of SALOME and sources of Salome data server 
-//
-//  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
-// 
-//  This library is free software; you can redistribute it and/or 
-//  modify it under the terms of the GNU Lesser General Public 
-//  License as published by the Free Software Foundation; either 
-//  version 2.1 of the License. 
-// 
-//  This library is distributed in the hope that it will be useful, 
-//  but WITHOUT ANY WARRANTY; without even the implied warranty of 
-//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
-//  Lesser General Public License for more details. 
-// 
-//  You should have received a copy of the GNU Lesser General Public 
-//  License along with this library; if not, write to the Free Software 
-//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
-// 
-//  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
-//
-//
-//
 //  File   : SALOMEDS_AttributeName_i.cxx
-//  Author : Yves FRICAUD
+//  Author : Sergey RUIN
 //  Module : SALOME
-//  $Header$
+
 
 #include "SALOMEDS_AttributeName_i.hxx"
+#include "SALOMEDS.hxx"
 #include <TCollection_ExtendedString.hxx>
-#include <TCollection_AsciiString.hxx>
 
 using namespace std;
 
-char* SALOMEDS_AttributeName_i::Value() {
-  TCollection_ExtendedString S = Handle(TDataStd_Name)::DownCast(_myAttr)->Get();
-  CORBA::String_var c_s = CORBA::string_dup(TCollection_AsciiString(S).ToCString());
+char* SALOMEDS_AttributeName_i::Value() 
+{
+  SALOMEDS::Locker lock; 
+  CORBA::String_var c_s = 
+    CORBA::string_dup(TCollection_AsciiString(Handle(SALOMEDSImpl_AttributeName)::DownCast(_impl)->Value()).ToCString());
   return c_s._retn();
 }
 
-void SALOMEDS_AttributeName_i::SetValue(const char* theValue) {
+void SALOMEDS_AttributeName_i::SetValue(const char* value) 
+{
+  SALOMEDS::Locker lock; 
   CheckLocked();
-  Handle(TDataStd_Name)::DownCast(_myAttr)->Set(TCollection_ExtendedString((char*)theValue));
-}
-
-char* SALOMEDS_AttributeName_i::Store() {
-  return Value();
-}
-
-void SALOMEDS_AttributeName_i::Restore(const char* value) {
-  SetValue(value);
+  Handle(SALOMEDSImpl_AttributeName)::DownCast(_impl)->SetValue(TCollection_ExtendedString((char*)value));
 }
index ffcebc20fbf5bf583456e90ef354574c56c35a88..cdb14718198fdb0608b135339a367d64f949e463 100644 (file)
@@ -1,55 +1,31 @@
-//  SALOME SALOMEDS : data structure of SALOME and sources of Salome data server 
-//
-//  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
-// 
-//  This library is free software; you can redistribute it and/or 
-//  modify it under the terms of the GNU Lesser General Public 
-//  License as published by the Free Software Foundation; either 
-//  version 2.1 of the License. 
-// 
-//  This library is distributed in the hope that it will be useful, 
-//  but WITHOUT ANY WARRANTY; without even the implied warranty of 
-//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
-//  Lesser General Public License for more details. 
-// 
-//  You should have received a copy of the GNU Lesser General Public 
-//  License along with this library; if not, write to the Free Software 
-//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
-// 
-//  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
-//
-//
-//
 //  File   : SALOMEDS_AttributeName_i.hxx
-//  Author : Yves FRICAUD
+//  Author : Sergey RUIN
 //  Module : SALOME
 //  $Header:
 
 #ifndef SALOMEDS_AttributeName_i_HeaderFile
 #define SALOMEDS_AttributeName_i_HeaderFile
 
-#include <TDataStd_Name.hxx>
-
-#include "SALOMEDS_GenericAttribute_i.hxx"
-
 // IDL headers
 #include <SALOMEconfig.h>
 #include CORBA_SERVER_HEADER(SALOMEDS_Attributes)
 
-DEFINE_DERIVED_ATTR(AttributeName,TDataStd_Name,true);
+#include "SALOMEDS_GenericAttribute_i.hxx"
+#include "SALOMEDSImpl_AttributeName.hxx"
 
-class SALOMEDS_AttributeName_i: 
-  public virtual POA_SALOMEDS::AttributeName,
-  public virtual SALOMEDS_TAttributeName_i 
+class SALOMEDS_AttributeName_i: public virtual POA_SALOMEDS::AttributeName,
+                               public virtual SALOMEDS_GenericAttribute_i 
 {
-  DEFINE_DERIVED_ATTR_METH_DEFAULT(AttributeName,TDataStd_Name);
 public:
+  
+  SALOMEDS_AttributeName_i(const Handle(SALOMEDSImpl_AttributeName)& theAttr, CORBA::ORB_ptr orb) 
+    :SALOMEDS_GenericAttribute_i(theAttr, orb) {}; 
+
+  ~SALOMEDS_AttributeName_i() {};
+
   char* Value();
   void SetValue(const char* value);
 
-  char* Store();
-  void Restore(const char*);
 };
 
 
diff --git a/src/SALOMEDS/SALOMEDS_AttributeOpened.cxx b/src/SALOMEDS/SALOMEDS_AttributeOpened.cxx
new file mode 100644 (file)
index 0000000..0f4f29d
--- /dev/null
@@ -0,0 +1,33 @@
+//  File   : SALOMEDS_AttributeOpened.cxx
+//  Author : Sergey RUIN
+//  Module : SALOME
+
+#include "SALOMEDS_AttributeOpened.hxx"
+
+#include <TCollection_AsciiString.hxx>
+#include <TCollection_ExtendedString.hxx>
+
+SALOMEDS_AttributeOpened::SALOMEDS_AttributeOpened(const Handle(SALOMEDSImpl_AttributeOpened)& theAttr)
+:SALOMEDS_GenericAttribute(theAttr)
+{}
+
+SALOMEDS_AttributeOpened::SALOMEDS_AttributeOpened(SALOMEDS::AttributeOpened_ptr theAttr)
+:SALOMEDS_GenericAttribute(theAttr)
+{}
+
+SALOMEDS_AttributeOpened::~SALOMEDS_AttributeOpened()
+{}
+
+bool SALOMEDS_AttributeOpened::IsOpened()
+{
+  bool aValue;
+  if(_isLocal) aValue = (bool)Handle(SALOMEDSImpl_AttributeOpened)::DownCast(_local_impl)->IsOpened();
+  else aValue = SALOMEDS::AttributeOpened::_narrow(_corba_impl)->IsOpened();
+  return aValue;
+}
+void SALOMEDS_AttributeOpened::SetOpened(bool value)
+{
+  if(_isLocal) Handle(SALOMEDSImpl_AttributeOpened)::DownCast(_local_impl)->SetOpened((int)value);
+  else SALOMEDS::AttributeOpened::_narrow(_corba_impl)->SetOpened(value);
+}
diff --git a/src/SALOMEDS/SALOMEDS_AttributeOpened.hxx b/src/SALOMEDS/SALOMEDS_AttributeOpened.hxx
new file mode 100644 (file)
index 0000000..653bfad
--- /dev/null
@@ -0,0 +1,28 @@
+//  File   : SALOMEDS_AttributeOpened.hxx
+//  Author : Sergey RUIN
+//  Module : SALOME
+
+#ifndef SALOMEDS_AttributeOpened_HeaderFile
+#define SALOMEDS_AttributeOpened_HeaderFile
+
+#include "SALOMEDSClient_AttributeOpened.hxx"
+#include "SALOMEDS_GenericAttribute.hxx"
+#include "SALOMEDSImpl_AttributeOpened.hxx"
+
+// IDL headers
+#include <SALOMEconfig.h>
+#include CORBA_SERVER_HEADER(SALOMEDS)
+#include CORBA_SERVER_HEADER(SALOMEDS_Attributes)
+
+class SALOMEDS_AttributeOpened: public SALOMEDS_GenericAttribute, public SALOMEDSClient_AttributeOpened
+{
+public:  
+  SALOMEDS_AttributeOpened(const Handle(SALOMEDSImpl_AttributeOpened)& theAttr);
+  SALOMEDS_AttributeOpened(SALOMEDS::AttributeOpened_ptr theAttr);
+  ~SALOMEDS_AttributeOpened();
+
+  virtual bool IsOpened();
+  virtual void SetOpened(bool value);
+};
+
+#endif
index 5471006e5dd79a90186db6da551505ddbd0bc706..0a7445dd6858bf9cf8b7785d46c5c84c64512f14 100644 (file)
@@ -1,49 +1,24 @@
-//  SALOME SALOMEDS : data structure of SALOME and sources of Salome data server 
-//
-//  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
-// 
-//  This library is free software; you can redistribute it and/or 
-//  modify it under the terms of the GNU Lesser General Public 
-//  License as published by the Free Software Foundation; either 
-//  version 2.1 of the License. 
-// 
-//  This library is distributed in the hope that it will be useful, 
-//  but WITHOUT ANY WARRANTY; without even the implied warranty of 
-//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
-//  Lesser General Public License for more details. 
-// 
-//  You should have received a copy of the GNU Lesser General Public 
-//  License along with this library; if not, write to the Free Software 
-//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
-// 
-//  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
-//
-//
-//
 //  File   : SALOMEDS_AttributeOpened_i.cxx
-//  Author : Yves FRICAUD
+//  Author : Sergey RUIN
 //  Module : SALOME
-//  $Header$
+
 
 #include "SALOMEDS_AttributeOpened_i.hxx"
+#include "SALOMEDS.hxx"
 
 using namespace std;
 
-CORBA::Boolean SALOMEDS_AttributeOpened_i::IsOpened() {
-  return (Handle(SALOMEDS_OpenedAttribute)::DownCast(_myAttr)->Get() == 1);
+CORBA::Boolean SALOMEDS_AttributeOpened_i::IsOpened() 
+{
+  SALOMEDS::Locker lock; 
+  return (Handle(SALOMEDSImpl_AttributeOpened)::DownCast(_impl)->IsOpened() == 1);
 }
                                                            
-void SALOMEDS_AttributeOpened_i::SetOpened(CORBA::Boolean value) {
+void SALOMEDS_AttributeOpened_i::SetOpened(CORBA::Boolean value) 
+{
+  SALOMEDS::Locker lock; 
+  
   Standard_Integer val = 0;
   if (value != 0) val = 1;
-  Handle(TDataStd_Integer)::DownCast(_myAttr)->Set(val);
-}
-
-char* SALOMEDS_AttributeOpened_i::Store() {
-  return CORBA::string_dup(IsOpened()?"1":"0");
-}
-
-void SALOMEDS_AttributeOpened_i::Restore(const char* value) {
-  SetOpened(value[0] == '1');
+  Handle(SALOMEDSImpl_AttributeOpened)::DownCast(_impl)->SetOpened(val);
 }
index 0ad905ca6ff93cf6559349ab3511c09ba4bff161..3d5ea9ca6b1bd8c9704f2f5159eb5618f77acbaa 100644 (file)
@@ -1,28 +1,5 @@
-//  SALOME SALOMEDS : data structure of SALOME and sources of Salome data server 
-//
-//  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
-// 
-//  This library is free software; you can redistribute it and/or 
-//  modify it under the terms of the GNU Lesser General Public 
-//  License as published by the Free Software Foundation; either 
-//  version 2.1 of the License. 
-// 
-//  This library is distributed in the hope that it will be useful, 
-//  but WITHOUT ANY WARRANTY; without even the implied warranty of 
-//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
-//  Lesser General Public License for more details. 
-// 
-//  You should have received a copy of the GNU Lesser General Public 
-//  License along with this library; if not, write to the Free Software 
-//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
-// 
-//  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
-//
-//
-//
 //  File   : SALOMEDS_AttributeOpened_i.hxx
-//  Author : Yves FRICAUD
+//  Author : Sergey RUIN
 //  Module : SALOME
 //  $Header:
 
 #include <SALOMEconfig.h>
 #include CORBA_SERVER_HEADER(SALOMEDS_Attributes)
 
-#include "SALOMEDS_OpenedAttribute.hxx"
 #include "SALOMEDS_GenericAttribute_i.hxx"
+#include "SALOMEDSImpl_AttributeOpened.hxx"
 
-DEFINE_DERIVED_ATTR(AttributeOpened,SALOMEDS_OpenedAttribute,false);
-
-class SALOMEDS_AttributeOpened_i: 
-  public virtual POA_SALOMEDS::AttributeOpened,
-  public virtual SALOMEDS_TAttributeOpened_i 
+class SALOMEDS_AttributeOpened_i: public virtual POA_SALOMEDS::AttributeOpened,
+                                  public virtual SALOMEDS_GenericAttribute_i 
 {
-  DEFINE_DERIVED_ATTR_METH_DEFAULT(AttributeOpened,SALOMEDS_OpenedAttribute);
 public:
+  
+  SALOMEDS_AttributeOpened_i(const Handle(SALOMEDSImpl_AttributeOpened)& theAttr, CORBA::ORB_ptr orb) 
+    :SALOMEDS_GenericAttribute_i(theAttr, orb) {};
+  ~SALOMEDS_AttributeOpened_i() {};
+
   CORBA::Boolean IsOpened();
   void SetOpened(CORBA::Boolean value);
-
-  char* Store();
-  void Restore(const char*);
-
 };
 
 
diff --git a/src/SALOMEDS/SALOMEDS_AttributePersistentRef.cxx b/src/SALOMEDS/SALOMEDS_AttributePersistentRef.cxx
new file mode 100644 (file)
index 0000000..4b2f2c9
--- /dev/null
@@ -0,0 +1,36 @@
+//  File   : SALOMEDS_AttributePersistentRef.cxx
+//  Author : Sergey RUIN
+//  Module : SALOME
+
+#include "SALOMEDS_AttributePersistentRef.hxx"
+
+#include <string>
+#include <TCollection_AsciiString.hxx> 
+#include <TCollection_ExtendedString.hxx>
+
+SALOMEDS_AttributePersistentRef::SALOMEDS_AttributePersistentRef(const Handle(SALOMEDSImpl_AttributePersistentRef)& theAttr)
+:SALOMEDS_GenericAttribute(theAttr)
+{}
+
+SALOMEDS_AttributePersistentRef::SALOMEDS_AttributePersistentRef(SALOMEDS::AttributePersistentRef_ptr theAttr)
+:SALOMEDS_GenericAttribute(theAttr)
+{}
+
+SALOMEDS_AttributePersistentRef::~SALOMEDS_AttributePersistentRef()
+{}
+
+std::string SALOMEDS_AttributePersistentRef::Value()
+{
+  std::string aValue;
+  if(_isLocal) 
+    aValue = TCollection_AsciiString(Handle(SALOMEDSImpl_AttributePersistentRef)::DownCast(_local_impl)->Value()).ToCString();
+  else aValue = SALOMEDS::AttributePersistentRef::_narrow(_corba_impl)->Value();
+  return aValue;
+}
+void SALOMEDS_AttributePersistentRef::SetValue(const std::string& value)
+{
+  CheckLocked();
+  if(_isLocal) Handle(SALOMEDSImpl_AttributePersistentRef)::DownCast(_local_impl)->SetValue((char*)value.c_str());
+  else SALOMEDS::AttributePersistentRef::_narrow(_corba_impl)->SetValue(value.c_str());
+}
diff --git a/src/SALOMEDS/SALOMEDS_AttributePersistentRef.hxx b/src/SALOMEDS/SALOMEDS_AttributePersistentRef.hxx
new file mode 100644 (file)
index 0000000..b5b5aae
--- /dev/null
@@ -0,0 +1,28 @@
+//  File   : SALOMEDS_AttributePersistentRef.hxx
+//  Author : Sergey RUIN
+//  Module : SALOME
+
+#ifndef SALOMEDS_AttributePersistentRef_HeaderFile
+#define SALOMEDS_AttributePersistentRef_HeaderFile
+
+#include "SALOMEDSClient_AttributePersistentRef.hxx"
+#include "SALOMEDS_GenericAttribute.hxx"
+#include "SALOMEDSImpl_AttributePersistentRef.hxx"
+
+// IDL headers
+#include <SALOMEconfig.h>
+#include CORBA_SERVER_HEADER(SALOMEDS)
+#include CORBA_SERVER_HEADER(SALOMEDS_Attributes)
+
+class SALOMEDS_AttributePersistentRef: public SALOMEDS_GenericAttribute, public SALOMEDSClient_AttributePersistentRef
+{
+public:  
+  SALOMEDS_AttributePersistentRef(const Handle(SALOMEDSImpl_AttributePersistentRef)& theAttr);
+  SALOMEDS_AttributePersistentRef(SALOMEDS::AttributePersistentRef_ptr theAttr);
+  ~SALOMEDS_AttributePersistentRef();
+
+  virtual std::string Value();
+  virtual void SetValue(const std::string& value);
+};
+
+#endif
index 67281220b84d6b2cfb43d5f271fb220b9ab7e17e..1add1e193a1ba42e8386523882b263658b278b83 100644 (file)
@@ -1,55 +1,26 @@
-//  SALOME SALOMEDS : data structure of SALOME and sources of Salome data server 
-//
-//  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
-// 
-//  This library is free software; you can redistribute it and/or 
-//  modify it under the terms of the GNU Lesser General Public 
-//  License as published by the Free Software Foundation; either 
-//  version 2.1 of the License. 
-// 
-//  This library is distributed in the hope that it will be useful, 
-//  but WITHOUT ANY WARRANTY; without even the implied warranty of 
-//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
-//  Lesser General Public License for more details. 
-// 
-//  You should have received a copy of the GNU Lesser General Public 
-//  License along with this library; if not, write to the Free Software 
-//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
-// 
-//  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
-//
-//
-//
 //  File   : SALOMEDS_AttributePersistentRef_i.cxx
-//  Author : Yves FRICAUD
+//  Author : Sergey RUIN
 //  Module : SALOME
-//  $Header$
+
 
 #include "SALOMEDS_AttributePersistentRef_i.hxx"
+#include "SALOMEDS.hxx"
 #include <TCollection_ExtendedString.hxx>
-#include <TCollection_AsciiString.hxx>
 
 using namespace std;
 
 char* SALOMEDS_AttributePersistentRef_i::Value()
 {
-  TCollection_ExtendedString S = Handle(SALOMEDS_PersRefAttribute)::DownCast(_myAttr)->Get();
-  CORBA::String_var c_s = CORBA::string_dup(TCollection_AsciiString(S).ToCString());
+  SALOMEDS::Locker lock;
+  CORBA::String_var c_s = 
+    CORBA::string_dup(TCollection_AsciiString(Handle(SALOMEDSImpl_AttributePersistentRef)::DownCast(_impl)->Value()).ToCString());
   return c_s._retn();
 }
 
 void SALOMEDS_AttributePersistentRef_i::SetValue(const char* value) 
 {
+  SALOMEDS::Locker lock;
   CheckLocked();
   CORBA::String_var Str = CORBA::string_dup(value);
-  Handle(TDataStd_Comment)::DownCast(_myAttr)->Set(TCollection_ExtendedString(Str));
-}
-
-char* SALOMEDS_AttributePersistentRef_i::Store() {
-  return Value();
-}
-
-void SALOMEDS_AttributePersistentRef_i::Restore(const char* value) {
-  SetValue(value);
+  Handle(SALOMEDSImpl_AttributePersistentRef)::DownCast(_impl)->SetValue(TCollection_ExtendedString(Str));
 }
index 40cb201490f36460830b166c4f64de47a3ad238a..ccf47be6c23148bafd6b29c5cf2a398c1766b12c 100644 (file)
@@ -1,55 +1,30 @@
-//  SALOME SALOMEDS : data structure of SALOME and sources of Salome data server 
-//
-//  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
-// 
-//  This library is free software; you can redistribute it and/or 
-//  modify it under the terms of the GNU Lesser General Public 
-//  License as published by the Free Software Foundation; either 
-//  version 2.1 of the License. 
-// 
-//  This library is distributed in the hope that it will be useful, 
-//  but WITHOUT ANY WARRANTY; without even the implied warranty of 
-//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
-//  Lesser General Public License for more details. 
-// 
-//  You should have received a copy of the GNU Lesser General Public 
-//  License along with this library; if not, write to the Free Software 
-//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
-// 
-//  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
-//
-//
-//
 //  File   : SALOMEDS_AttributePersistentRef_i.hxx
-//  Author : Yves FRICAUD
+//  Author : Sergey RUIN
 //  Module : SALOME
-//  $Header$
 
 #ifndef SALOMEDS_AttributePersistentRef_i_HeaderFile
 #define SALOMEDS_AttributePersistentRef_i_HeaderFile
 
-#include "SALOMEDS_GenericAttribute_i.hxx"
-#include "SALOMEDS_PersRefAttribute.hxx"
-
 #include <SALOMEconfig.h>
 #include CORBA_SERVER_HEADER(SALOMEDS_Attributes)
 
-DEFINE_DERIVED_ATTR(AttributePersistentRef,SALOMEDS_PersRefAttribute,false);
+#include "SALOMEDS_GenericAttribute_i.hxx"
+#include "SALOMEDSImpl_AttributePersistentRef.hxx"
 
-class SALOMEDS_AttributePersistentRef_i: 
-  public virtual POA_SALOMEDS::AttributePersistentRef,
-  public virtual SALOMEDS_TAttributePersistentRef_i 
-{
-  DEFINE_DERIVED_ATTR_METH_DEFAULT(AttributePersistentRef,SALOMEDS_PersRefAttribute);
+class SALOMEDS_AttributePersistentRef_i: public virtual POA_SALOMEDS::AttributePersistentRef,
+                                        public virtual SALOMEDS_GenericAttribute_i {
 public:
+  
+  SALOMEDS_AttributePersistentRef_i(const Handle(SALOMEDSImpl_AttributePersistentRef)& theAttr, CORBA::ORB_ptr orb) 
+    :SALOMEDS_GenericAttribute_i(theAttr, orb) {}; 
+
+  ~SALOMEDS_AttributePersistentRef_i() {};
+
   char* Value();
   void SetValue(const char* value);
 
-  char* Store();
-  void Restore(const char*);
-  
 };
 
 
+
 #endif
diff --git a/src/SALOMEDS/SALOMEDS_AttributePixMap.cxx b/src/SALOMEDS/SALOMEDS_AttributePixMap.cxx
new file mode 100644 (file)
index 0000000..658d81e
--- /dev/null
@@ -0,0 +1,44 @@
+//  File   : SALOMEDS_AttributePixMap.cxx
+//  Author : Sergey RUIN
+//  Module : SALOME
+
+#include "SALOMEDS_AttributePixMap.hxx"
+
+#include <string>
+#include <TCollection_AsciiString.hxx> 
+#include <TCollection_ExtendedString.hxx>
+
+SALOMEDS_AttributePixMap::SALOMEDS_AttributePixMap(const Handle(SALOMEDSImpl_AttributePixMap)& theAttr)
+:SALOMEDS_GenericAttribute(theAttr)
+{}
+
+SALOMEDS_AttributePixMap::SALOMEDS_AttributePixMap(SALOMEDS::AttributePixMap_ptr theAttr)
+:SALOMEDS_GenericAttribute(theAttr)
+{}
+
+SALOMEDS_AttributePixMap::~SALOMEDS_AttributePixMap()
+{}
+
+bool SALOMEDS_AttributePixMap::HasPixMap()
+{
+  bool ret;
+  if(_isLocal) ret = Handle(SALOMEDSImpl_AttributePixMap)::DownCast(_local_impl)->HasPixMap();
+  else ret = SALOMEDS::AttributePixMap::_narrow(_corba_impl)->HasPixMap();
+  return ret;
+}
+
+std::string SALOMEDS_AttributePixMap::GetPixMap()
+{
+  std::string aValue;
+  if(_isLocal) 
+    aValue = TCollection_AsciiString(Handle(SALOMEDSImpl_AttributePixMap)::DownCast(_local_impl)->GetPixMap()).ToCString();
+  else aValue = SALOMEDS::AttributePixMap::_narrow(_corba_impl)->GetPixMap();
+  return aValue;
+}
+void SALOMEDS_AttributePixMap::SetPixMap(const std::string& value)
+{
+  CheckLocked();
+  if(_isLocal) Handle(SALOMEDSImpl_AttributePixMap)::DownCast(_local_impl)->SetPixMap((char*)value.c_str());
+  else SALOMEDS::AttributePixMap::_narrow(_corba_impl)->SetPixMap(value.c_str());
+}
diff --git a/src/SALOMEDS/SALOMEDS_AttributePixMap.hxx b/src/SALOMEDS/SALOMEDS_AttributePixMap.hxx
new file mode 100644 (file)
index 0000000..47e6f36
--- /dev/null
@@ -0,0 +1,30 @@
+//  File   : SALOMEDS_AttributePixMap.hxx
+//  Author : Sergey RUIN
+//  Module : SALOME
+
+#ifndef SALOMEDS_AttributePixMap_HeaderFile
+#define SALOMEDS_AttributePixMap_HeaderFile
+
+#include "SALOMEDSClient_AttributePixMap.hxx"
+#include "SALOMEDS_GenericAttribute.hxx"
+#include "SALOMEDSImpl_AttributePixMap.hxx"
+
+// IDL headers
+#include <SALOMEconfig.h>
+#include CORBA_SERVER_HEADER(SALOMEDS)
+#include CORBA_SERVER_HEADER(SALOMEDS_Attributes)
+
+class SALOMEDS_AttributePixMap: public SALOMEDS_GenericAttribute, public SALOMEDSClient_AttributePixMap
+{
+public:  
+  SALOMEDS_AttributePixMap(const Handle(SALOMEDSImpl_AttributePixMap)& theAttr);
+  SALOMEDS_AttributePixMap(SALOMEDS::AttributePixMap_ptr theAttr);
+  ~SALOMEDS_AttributePixMap();
+
+  virtual bool HasPixMap();
+  virtual std::string GetPixMap();
+  virtual void SetPixMap(const std::string& value); 
+
+};
+
+#endif
index 8fc0f2be1a1d51ce757ea1767a085f0f8a29a40f..9774a1004b4bda5ef69e7bcf694a5ab59ddb4a48 100644 (file)
@@ -1,57 +1,32 @@
-//  SALOME SALOMEDS : data structure of SALOME and sources of Salome data server 
-//
-//  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
-// 
-//  This library is free software; you can redistribute it and/or 
-//  modify it under the terms of the GNU Lesser General Public 
-//  License as published by the Free Software Foundation; either 
-//  version 2.1 of the License. 
-// 
-//  This library is distributed in the hope that it will be useful, 
-//  but WITHOUT ANY WARRANTY; without even the implied warranty of 
-//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
-//  Lesser General Public License for more details. 
-// 
-//  You should have received a copy of the GNU Lesser General Public 
-//  License along with this library; if not, write to the Free Software 
-//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
-// 
-//  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
-//
-//
-//
 //  File   : SALOMEDS_AttributePixMap_i.cxx
-//  Author : Yves FRICAUD
+//  Author : Sergey RUIN
 //  Module : SALOME
-//  $Header$
+
 
 #include "SALOMEDS_AttributePixMap_i.hxx"
+#include "SALOMEDS.hxx"
 #include <TCollection_AsciiString.hxx>
 
 using namespace std;
 
-CORBA::Boolean SALOMEDS_AttributePixMap_i::HasPixMap() {
-  TCollection_ExtendedString S = Handle(SALOMEDS_PixMapAttribute)::DownCast(_myAttr)->Get();
-  if (strcmp(TCollection_AsciiString(S).ToCString(), "None") == 0) return Standard_False;
-  return Standard_True;
+CORBA::Boolean SALOMEDS_AttributePixMap_i::HasPixMap() 
+{
+  return Handle(SALOMEDSImpl_AttributePixMap)::DownCast(_impl)->HasPixMap();
 }
 
-char* SALOMEDS_AttributePixMap_i::GetPixMap() {
- CORBA::String_var S = CORBA::string_dup(TCollection_AsciiString(Handle(SALOMEDS_PixMapAttribute)::DownCast(_myAttr)->Get()).ToCString());
- return S._retn();
+char* SALOMEDS_AttributePixMap_i::GetPixMap() 
+{
+  SALOMEDS::Locker lock;
+  CORBA::String_var S = 
+    CORBA::string_dup(TCollection_AsciiString(Handle(SALOMEDSImpl_AttributePixMap)::DownCast(_impl)->GetPixMap()).ToCString());
+  return S._retn();
 }
 
-void SALOMEDS_AttributePixMap_i::SetPixMap(const char* value) {
+void SALOMEDS_AttributePixMap_i::SetPixMap(const char* value) 
+{
+  SALOMEDS::Locker lock;
   CheckLocked();
   CORBA::String_var Str = CORBA::string_dup(value);
-  Handle(TDataStd_Comment)::DownCast(_myAttr)->Set(TCollection_ExtendedString(Str));
-}
-
-char* SALOMEDS_AttributePixMap_i::Store() {
-  return GetPixMap();
+  Handle(SALOMEDSImpl_AttributePixMap)::DownCast(_impl)->SetPixMap(TCollection_ExtendedString(Str));
 }
 
-void SALOMEDS_AttributePixMap_i::Restore(const char* value) {
-  SetPixMap(value);
-}
index c17fa5c2f1a6863d7746ea9398f52ce4ae6182af..46f3797ffb947d9612f1d3bd4b57811333278070 100644 (file)
@@ -1,30 +1,6 @@
-//  SALOME SALOMEDS : data structure of SALOME and sources of Salome data server 
-//
-//  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
-// 
-//  This library is free software; you can redistribute it and/or 
-//  modify it under the terms of the GNU Lesser General Public 
-//  License as published by the Free Software Foundation; either 
-//  version 2.1 of the License. 
-// 
-//  This library is distributed in the hope that it will be useful, 
-//  but WITHOUT ANY WARRANTY; without even the implied warranty of 
-//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
-//  Lesser General Public License for more details. 
-// 
-//  You should have received a copy of the GNU Lesser General Public 
-//  License along with this library; if not, write to the Free Software 
-//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
-// 
-//  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
-//
-//
-//
 //  File   : SALOMEDS_AttributePixMap_i.hxx
-//  Author : Yves FRICAUD
+//  Author : Sergey RUIN
 //  Module : SALOME
-//  $Header$
 
 #ifndef SALOMEDS_AttributePixMap_i_HeaderFile
 #define SALOMEDS_AttributePixMap_i_HeaderFile
 #include <SALOMEconfig.h>
 #include CORBA_SERVER_HEADER(SALOMEDS_Attributes)
 
-#include "SALOMEDS_PixMapAttribute.hxx"
 #include "SALOMEDS_GenericAttribute_i.hxx"
+#include "SALOMEDSImpl_AttributePixMap.hxx"
 
-DEFINE_DERIVED_ATTR(AttributePixMap,SALOMEDS_PixMapAttribute,false);
-
-class SALOMEDS_AttributePixMap_i: 
-  public virtual POA_SALOMEDS::AttributePixMap,
-  public virtual SALOMEDS_TAttributePixMap_i 
+class SALOMEDS_AttributePixMap_i: public virtual POA_SALOMEDS::AttributePixMap,
+                                 public virtual SALOMEDS_GenericAttribute_i 
 {
-  DEFINE_DERIVED_ATTR_METH_DEFAULT(AttributePixMap,SALOMEDS_PixMapAttribute);
 public:
+  
+  SALOMEDS_AttributePixMap_i(const Handle(SALOMEDSImpl_AttributePixMap)& theAttr, CORBA::ORB_ptr orb) 
+    :SALOMEDS_GenericAttribute_i(theAttr, orb) {};
+
+  ~SALOMEDS_AttributePixMap_i() {};
+
   CORBA::Boolean HasPixMap();
   char* GetPixMap();
   void SetPixMap(const char* value);
 
-  char* Store();
-  void Restore(const char*);
-
 };
 
 
diff --git a/src/SALOMEDS/SALOMEDS_AttributePythonObject.cxx b/src/SALOMEDS/SALOMEDS_AttributePythonObject.cxx
new file mode 100644 (file)
index 0000000..4a3561f
--- /dev/null
@@ -0,0 +1,44 @@
+//  File   : SALOMEDS_AttributePythonObject.cxx
+//  Author : Sergey RUIN
+//  Module : SALOME
+
+#include "SALOMEDS_AttributePythonObject.hxx"
+
+#include <string>
+#include <TCollection_AsciiString.hxx> 
+#include <TCollection_ExtendedString.hxx>
+
+SALOMEDS_AttributePythonObject::SALOMEDS_AttributePythonObject(const Handle(SALOMEDSImpl_AttributePythonObject)& theAttr)
+:SALOMEDS_GenericAttribute(theAttr)
+{}
+
+SALOMEDS_AttributePythonObject::SALOMEDS_AttributePythonObject(SALOMEDS::AttributePythonObject_ptr theAttr)
+:SALOMEDS_GenericAttribute(theAttr)
+{}
+
+SALOMEDS_AttributePythonObject::~SALOMEDS_AttributePythonObject()
+{}
+
+bool SALOMEDS_AttributePythonObject::IsScript()
+{
+  bool ret;
+  if(_isLocal) ret = Handle(SALOMEDSImpl_AttributePythonObject)::DownCast(_local_impl)->IsScript();
+  else ret = SALOMEDS::AttributePythonObject::_narrow(_corba_impl)->IsScript();
+  return ret;
+}
+
+std::string SALOMEDS_AttributePythonObject::GetObject()
+{
+  std::string aValue;
+  if(_isLocal) 
+    aValue = TCollection_AsciiString(Handle(SALOMEDSImpl_AttributePythonObject)::DownCast(_local_impl)->GetObject()).ToCString();
+  else aValue = SALOMEDS::AttributePythonObject::_narrow(_corba_impl)->GetObject();
+  return aValue;
+}
+void SALOMEDS_AttributePythonObject::SetObject(const std::string& theSequence, bool IsScript)
+{
+  CheckLocked();
+  if(_isLocal) Handle(SALOMEDSImpl_AttributePythonObject)::DownCast(_local_impl)->SetObject((char*)theSequence.c_str(), IsScript);
+  else SALOMEDS::AttributePythonObject::_narrow(_corba_impl)->SetObject(theSequence.c_str(), IsScript);
+}
diff --git a/src/SALOMEDS/SALOMEDS_AttributePythonObject.hxx b/src/SALOMEDS/SALOMEDS_AttributePythonObject.hxx
new file mode 100644 (file)
index 0000000..e5f12b2
--- /dev/null
@@ -0,0 +1,35 @@
+//  File   : SALOMEDS_AttributePythonObject.hxx
+//  Author : Sergey RUIN
+//  Module : SALOME
+
+#ifndef SALOMEDS_AttributePythonObject_HeaderFile
+#define SALOMEDS_AttributePythonObject_HeaderFile
+
+#include "SALOMEDSClient_AttributePythonObject.hxx"
+#include "SALOMEDS_GenericAttribute.hxx"
+#include "SALOMEDSImpl_AttributePythonObject.hxx"
+
+// IDL headers
+#include <SALOMEconfig.h>
+#include CORBA_SERVER_HEADER(SALOMEDS)
+#include CORBA_SERVER_HEADER(SALOMEDS_Attributes)
+
+
+#ifdef GetObject
+#undef GetObject
+#endif
+
+class SALOMEDS_AttributePythonObject: public SALOMEDS_GenericAttribute, public SALOMEDSClient_AttributePythonObject
+{
+public:  
+  SALOMEDS_AttributePythonObject(const Handle(SALOMEDSImpl_AttributePythonObject)& theAttr);
+  SALOMEDS_AttributePythonObject(SALOMEDS::AttributePythonObject_ptr theAttr);
+  ~SALOMEDS_AttributePythonObject();
+
+  virtual void SetObject(const std::string& theSequence, bool IsScript);
+  virtual std::string GetObject();
+  virtual bool IsScript();     
+
+};
+
+#endif
index 2faab629daf2678ed678212a5c9c01908b5827d2..59dcf552ebaad9db5cb892dd5116ee67cc78f354 100644 (file)
@@ -1,43 +1,35 @@
-//  SALOME SALOMEDS : data structure of SALOME and sources of Salome data server 
-//
-//  Copyright (C) 2003  CEA/DEN, EDF R&D
-//
-//
-//
 //  File   : SALOMEDS_AttributePythonObject_i.cxx
-//  Author : Michael Ponikarov
+//  Author : Sergey RUIN
 //  Module : SALOME
-//  $Header$
+
 
 #include "SALOMEDS_AttributePythonObject_i.hxx"
+#include "SALOMEDS.hxx"
 #include <TCollection_ExtendedString.hxx>
 #include <TColStd_HArray1OfCharacter.hxx>
 
 using namespace std;
 
-void SALOMEDS_AttributePythonObject_i::SetObject(const char* theSequence, CORBA::Boolean IsScript) {
+void SALOMEDS_AttributePythonObject_i::SetObject(const char* theSequence, CORBA::Boolean IsScript) 
+{
+  SALOMEDS::Locker lock;
   CheckLocked();
-  Handle(SALOMEDS_PythonObjectAttribute)::DownCast(_myAttr)->SetObject(const_cast<char*>(theSequence), IsScript);
+  char *aSeq = CORBA::string_dup(theSequence);
+  Handle(SALOMEDSImpl_AttributePythonObject)::DownCast(_impl)->SetObject(aSeq, IsScript);
 }
 
-char* SALOMEDS_AttributePythonObject_i::GetObject() {
-  char* aSeq = Handle(SALOMEDS_PythonObjectAttribute)::DownCast(_myAttr)->GetObject();
+char* SALOMEDS_AttributePythonObject_i::GetObject() 
+{
+  SALOMEDS::Locker lock;
+  char* aSeq = Handle(SALOMEDSImpl_AttributePythonObject)::DownCast(_impl)->GetObject().ToCString();
   CORBA::String_var aStr = CORBA::string_dup(aSeq);
   return aStr._retn();
 }
 
-CORBA::Boolean SALOMEDS_AttributePythonObject_i::IsScript() {
-  return Handle(SALOMEDS_PythonObjectAttribute)::DownCast(_myAttr)->IsScript();
+CORBA::Boolean SALOMEDS_AttributePythonObject_i::IsScript() 
+{
+  SALOMEDS::Locker lock;
+  return Handle(SALOMEDSImpl_AttributePythonObject)::DownCast(_impl)->IsScript();
 }
 
-char* SALOMEDS_AttributePythonObject_i::Store() {
-  CORBA::String_var aString = GetObject();
-  char* aResult = new char[strlen(aString) + 2];
-  aResult[0] = IsScript()?'s':'n';
-  strcpy(aResult+1, aString);
-  return aResult;
-}
 
-void SALOMEDS_AttributePythonObject_i::Restore(const char* theValue) {
-  SetObject(&theValue[1], theValue[0]=='s');
-}
index 615690b978b204e9459701e53bfb2da2582c95c4..fb82ce7408b5c623a96336602674b20e91353720 100644 (file)
@@ -1,13 +1,6 @@
-//  SALOME SALOMEDS : data structure of SALOME and sources of Salome data server 
-//
-//  Copyright (C) 2003  CEA/DEN, EDF R&D
-//
-//
-//
 //  File   : SALOMEDS_AttributePythonObject_i.hxx
-//  Author : Michael Ponikarov
+//  Author : Sergey RUIN
 //  Module : SALOME
-//  $Header$
 
 #ifndef SALOMEDS_AttributePythonObject_i_HeaderFile
 #define SALOMEDS_AttributePythonObject_i_HeaderFile
 #include CORBA_SERVER_HEADER(SALOMEDS_Attributes)
 
 #include "SALOMEDS_GenericAttribute_i.hxx"
-#include "SALOMEDS_PythonObjectAttribute.hxx"
+#include "SALOMEDSImpl_AttributePythonObject.hxx"
 
-DEFINE_DERIVED_ATTR(AttributePythonObject,SALOMEDS_PythonObjectAttribute,true);
-
-class SALOMEDS_AttributePythonObject_i: 
-  public virtual POA_SALOMEDS::AttributePythonObject,
-  public virtual SALOMEDS_TAttributePythonObject_i 
-{
-  DEFINE_DERIVED_ATTR_METH_DEFAULT(AttributePythonObject,SALOMEDS_PythonObjectAttribute);
+class SALOMEDS_AttributePythonObject_i: public virtual POA_SALOMEDS::AttributePythonObject,
+                                        public virtual SALOMEDS_GenericAttribute_i {
 public:
+  
+  SALOMEDS_AttributePythonObject_i(const Handle(SALOMEDSImpl_AttributePythonObject)& theAttr, CORBA::ORB_ptr orb) 
+    :SALOMEDS_GenericAttribute_i(theAttr, orb) {}; 
+
+  ~SALOMEDS_AttributePythonObject_i() {};
+
   virtual void SetObject(const char* theSequence, CORBA::Boolean IsScript);
   virtual char* GetObject();
   virtual CORBA::Boolean IsScript();
 
-  virtual char* Store();
-  virtual void Restore(const char*);
-
 };
 
+
+
+
 #endif
diff --git a/src/SALOMEDS/SALOMEDS_AttributeReal.cxx b/src/SALOMEDS/SALOMEDS_AttributeReal.cxx
new file mode 100644 (file)
index 0000000..72d73d4
--- /dev/null
@@ -0,0 +1,34 @@
+//  File   : SALOMEDS_AttributeReal.cxx
+//  Author : Sergey RUIN
+//  Module : SALOME
+
+#include "SALOMEDS_AttributeReal.hxx"
+
+#include <TCollection_AsciiString.hxx>
+#include <TCollection_ExtendedString.hxx>
+
+SALOMEDS_AttributeReal::SALOMEDS_AttributeReal(const Handle(SALOMEDSImpl_AttributeReal)& theAttr)
+:SALOMEDS_GenericAttribute(theAttr)
+{}
+
+SALOMEDS_AttributeReal::SALOMEDS_AttributeReal(SALOMEDS::AttributeReal_ptr theAttr)
+:SALOMEDS_GenericAttribute(theAttr)
+{}
+
+SALOMEDS_AttributeReal::~SALOMEDS_AttributeReal()
+{}
+
+double SALOMEDS_AttributeReal::Value()
+{
+  double aValue;
+  if(_isLocal) aValue = Handle(SALOMEDSImpl_AttributeReal)::DownCast(_local_impl)->Value();
+  else aValue = SALOMEDS::AttributeReal::_narrow(_corba_impl)->Value();
+  return aValue;
+}
+void SALOMEDS_AttributeReal::SetValue(double value)
+{
+  CheckLocked();
+  if(_isLocal) Handle(SALOMEDSImpl_AttributeReal)::DownCast(_local_impl)->SetValue(value);
+  else SALOMEDS::AttributeReal::_narrow(_corba_impl)->SetValue(value);
+}
diff --git a/src/SALOMEDS/SALOMEDS_AttributeReal.hxx b/src/SALOMEDS/SALOMEDS_AttributeReal.hxx
new file mode 100644 (file)
index 0000000..dd26b53
--- /dev/null
@@ -0,0 +1,28 @@
+//  File   : SALOMEDS_AttributeReal.hxx
+//  Author : Sergey RUIN
+//  Module : SALOME
+
+#ifndef SALOMEDS_AttributeReal_HeaderFile
+#define SALOMEDS_AttributeReal_HeaderFile
+
+#include "SALOMEDSClient_AttributeReal.hxx"
+#include "SALOMEDS_GenericAttribute.hxx"
+#include "SALOMEDSImpl_AttributeReal.hxx"
+
+// IDL headers
+#include <SALOMEconfig.h>
+#include CORBA_SERVER_HEADER(SALOMEDS)
+#include CORBA_SERVER_HEADER(SALOMEDS_Attributes)
+
+class SALOMEDS_AttributeReal: public SALOMEDS_GenericAttribute, public SALOMEDSClient_AttributeReal
+{
+public:  
+  SALOMEDS_AttributeReal(const Handle(SALOMEDSImpl_AttributeReal)& theAttr);
+  SALOMEDS_AttributeReal(SALOMEDS::AttributeReal_ptr theAttr);
+  ~SALOMEDS_AttributeReal();
+
+  virtual double Value();
+  virtual void SetValue(double value);
+};
+
+#endif
index ca74454ee442e74fbc77c0a5b68738cf785dda66..aaeae7ee19c98c844aff49e9b40e3904a043fe98 100644 (file)
@@ -1,80 +1,24 @@
-//  SALOME SALOMEDS : data structure of SALOME and sources of Salome data server 
-//
-//  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
-// 
-//  This library is free software; you can redistribute it and/or 
-//  modify it under the terms of the GNU Lesser General Public 
-//  License as published by the Free Software Foundation; either 
-//  version 2.1 of the License. 
-// 
-//  This library is distributed in the hope that it will be useful, 
-//  but WITHOUT ANY WARRANTY; without even the implied warranty of 
-//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
-//  Lesser General Public License for more details. 
-// 
-//  You should have received a copy of the GNU Lesser General Public 
-//  License along with this library; if not, write to the Free Software 
-//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
-// 
-//  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
-//
-//
-//
 //  File   : SALOMEDS_AttributeReal_i.cxx
-//  Author : Yves FRICAUD
+//  Author : Sergey RUIN
 //  Module : SALOME
-//  $Header$
 
 #include "SALOMEDS_AttributeReal_i.hxx"
+#include "SALOMEDS_SObject_i.hxx"
+#include "SALOMEDS.hxx"
 #include <sstream>
 
 using namespace std;
 
-static const char* write_double(double value)
+CORBA::Double SALOMEDS_AttributeReal_i::Value() 
 {
-  std::ostringstream os;
-  unsigned char* array = (unsigned char*)&value;
-  for(int i = 0; i < sizeof(double); i++) {
-    unsigned tmp = (unsigned short)array[i];
-    os << " " << tmp;
-  }
-  return os.str().c_str();
+  SALOMEDS::Locker lock;
+  return Handle(SALOMEDSImpl_AttributeReal)::DownCast(_impl)->Value();
 }
 
-static double read_double(const char* str)
+void SALOMEDS_AttributeReal_i::SetValue(CORBA::Double value) 
 {
-  std::istringstream is(str);
-  double value;
-  unsigned char* array = (unsigned char*)(&value);
-  for(int i = 0; i < sizeof(double); i++) {
-    unsigned tmp;
-    is >> tmp;
-    array[i] = (unsigned char)tmp;
-  }
-  return value;
-}
-
-CORBA::Double SALOMEDS_AttributeReal_i::Value() {
-  return Handle(TDataStd_Real)::DownCast(_myAttr)->Get();
-}
-
-void SALOMEDS_AttributeReal_i::SetValue(CORBA::Double value) {
+  SALOMEDS::Locker lock;
   CheckLocked();
-  Handle(TDataStd_Real)::DownCast(_myAttr)->Set(value);
-}
-
-char* SALOMEDS_AttributeReal_i::Store() {
-  //  char* RealVal = new char[35];
-  //  sprintf(RealVal, "%.20f", Value());
-  //return RealVal;
-  return (char*)write_double( (double)Value() );
-}
-
-void SALOMEDS_AttributeReal_i::Restore(const char* value) {
-  //char *err = NULL;
-  //CORBA::Double r =  strtod(value, &err);
-  //if (err != value) SetValue(r);
-  SetValue( read_double(value) );
+  Handle(SALOMEDSImpl_AttributeReal)::DownCast(_impl)->SetValue(value);
 }
 
index a7fa861e6601dfcc2a30a10964f924b89e91fd5f..305cfb6b102d52846981d712e529a23ac7749651 100644 (file)
@@ -1,56 +1,28 @@
-//  SALOME SALOMEDS : data structure of SALOME and sources of Salome data server 
-//
-//  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
-// 
-//  This library is free software; you can redistribute it and/or 
-//  modify it under the terms of the GNU Lesser General Public 
-//  License as published by the Free Software Foundation; either 
-//  version 2.1 of the License. 
-// 
-//  This library is distributed in the hope that it will be useful, 
-//  but WITHOUT ANY WARRANTY; without even the implied warranty of 
-//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
-//  Lesser General Public License for more details. 
-// 
-//  You should have received a copy of the GNU Lesser General Public 
-//  License along with this library; if not, write to the Free Software 
-//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
-// 
-//  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
-//
-//
-//
 //  File   : SALOMEDS_AttributeReal_i.hxx
-//  Author : Yves FRICAUD
+//  Author : Sergey RUIN
 //  Module : SALOME
-//  $Header$
 
 #ifndef SALOMEDS_AttributeReal_i_HeaderFile
 #define SALOMEDS_AttributeReal_i_HeaderFile
 
-#include <TDataStd_Real.hxx>
-
-#include "SALOMEDS_GenericAttribute_i.hxx"
-
 // IDL headers
 #include <SALOMEconfig.h>
 #include CORBA_SERVER_HEADER(SALOMEDS_Attributes)
 
-DEFINE_DERIVED_ATTR(AttributeReal,TDataStd_Real,true);
+#include "SALOMEDS_GenericAttribute_i.hxx"
+#include "SALOMEDSImpl_AttributeReal.hxx"
 
-class SALOMEDS_AttributeReal_i: 
-  public virtual POA_SALOMEDS::AttributeReal,
-  public virtual SALOMEDS_TAttributeReal_i 
-{
-  DEFINE_DERIVED_ATTR_METH_DEFAULT(AttributeReal,TDataStd_Real);
+class SALOMEDS_AttributeReal_i: public virtual POA_SALOMEDS::AttributeReal,
+                               public virtual SALOMEDS_GenericAttribute_i {
 public:
-  CORBA::Double Value();
-  void SetValue(CORBA::Double theValue);
+  
+  SALOMEDS_AttributeReal_i(const Handle(SALOMEDSImpl_AttributeReal)& theAttr, CORBA::ORB_ptr orb)
+    :SALOMEDS_GenericAttribute_i(theAttr, orb) {};
 
-  char* Store();
-  void Restore(const char*);
+  ~SALOMEDS_AttributeReal_i() {};
 
+  CORBA::Double Value();
+  void SetValue(CORBA::Double value);
 };
 
 
diff --git a/src/SALOMEDS/SALOMEDS_AttributeSelectable.cxx b/src/SALOMEDS/SALOMEDS_AttributeSelectable.cxx
new file mode 100644 (file)
index 0000000..f9581a0
--- /dev/null
@@ -0,0 +1,33 @@
+//  File   : SALOMEDS_AttributeSelectable.cxx
+//  Author : Sergey RUIN
+//  Module : SALOME
+
+#include "SALOMEDS_AttributeSelectable.hxx"
+
+#include <TCollection_AsciiString.hxx>
+#include <TCollection_ExtendedString.hxx>
+
+SALOMEDS_AttributeSelectable::SALOMEDS_AttributeSelectable(const Handle(SALOMEDSImpl_AttributeSelectable)& theAttr)
+:SALOMEDS_GenericAttribute(theAttr)
+{}
+
+SALOMEDS_AttributeSelectable::SALOMEDS_AttributeSelectable(SALOMEDS::AttributeSelectable_ptr theAttr)
+:SALOMEDS_GenericAttribute(theAttr)
+{}
+
+SALOMEDS_AttributeSelectable::~SALOMEDS_AttributeSelectable()
+{}
+
+bool SALOMEDS_AttributeSelectable::IsSelectable()
+{
+  bool aValue;
+  if(_isLocal) aValue = (bool)Handle(SALOMEDSImpl_AttributeSelectable)::DownCast(_local_impl)->IsSelectable();
+  else aValue = SALOMEDS::AttributeSelectable::_narrow(_corba_impl)->IsSelectable();
+  return aValue;
+}
+void SALOMEDS_AttributeSelectable::SetSelectable(bool value)
+{
+  if(_isLocal) Handle(SALOMEDSImpl_AttributeSelectable)::DownCast(_local_impl)->SetSelectable((int)value);
+  else SALOMEDS::AttributeSelectable::_narrow(_corba_impl)->SetSelectable(value);
+}
diff --git a/src/SALOMEDS/SALOMEDS_AttributeSelectable.hxx b/src/SALOMEDS/SALOMEDS_AttributeSelectable.hxx
new file mode 100644 (file)
index 0000000..943eafa
--- /dev/null
@@ -0,0 +1,28 @@
+//  File   : SALOMEDS_AttributeSelectable.hxx
+//  Author : Sergey RUIN
+//  Module : SALOME
+
+#ifndef SALOMEDS_AttributeSelectable_HeaderFile
+#define SALOMEDS_AttributeSelectable_HeaderFile
+
+#include "SALOMEDSClient_AttributeSelectable.hxx"
+#include "SALOMEDS_GenericAttribute.hxx"
+#include "SALOMEDSImpl_AttributeSelectable.hxx"
+
+// IDL headers
+#include <SALOMEconfig.h>
+#include CORBA_SERVER_HEADER(SALOMEDS)
+#include CORBA_SERVER_HEADER(SALOMEDS_Attributes)
+
+class SALOMEDS_AttributeSelectable: public SALOMEDS_GenericAttribute, public SALOMEDSClient_AttributeSelectable
+{
+public:  
+  SALOMEDS_AttributeSelectable(const Handle(SALOMEDSImpl_AttributeSelectable)& theAttr);
+  SALOMEDS_AttributeSelectable(SALOMEDS::AttributeSelectable_ptr theAttr);
+  ~SALOMEDS_AttributeSelectable();
+
+  virtual bool IsSelectable();
+  virtual void SetSelectable(bool value);
+};
+
+#endif
index 1ae041186057b1edcf421a40e4f132af8e236e53..a83c79c162d26b904910486de0e3423c5beae367 100644 (file)
@@ -1,49 +1,24 @@
-//  SALOME SALOMEDS : data structure of SALOME and sources of Salome data server 
-//
-//  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
-// 
-//  This library is free software; you can redistribute it and/or 
-//  modify it under the terms of the GNU Lesser General Public 
-//  License as published by the Free Software Foundation; either 
-//  version 2.1 of the License. 
-// 
-//  This library is distributed in the hope that it will be useful, 
-//  but WITHOUT ANY WARRANTY; without even the implied warranty of 
-//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
-//  Lesser General Public License for more details. 
-// 
-//  You should have received a copy of the GNU Lesser General Public 
-//  License along with this library; if not, write to the Free Software 
-//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
-// 
-//  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
-//
-//
-//
 //  File   : SALOMEDS_AttributeSelectable_i.cxx
-//  Author : Yves FRICAUD
+//  Author : Sergey RUIN
 //  Module : SALOME
-//  $Header$
+
 
 #include "SALOMEDS_AttributeSelectable_i.hxx"
+#include "SALOMEDS.hxx"
 
 using namespace std;
 
-CORBA::Boolean SALOMEDS_AttributeSelectable_i::IsSelectable() {
-  return (Handle(SALOMEDS_SelectableAttribute)::DownCast(_myAttr)->Get() == 1);
+CORBA::Boolean SALOMEDS_AttributeSelectable_i::IsSelectable() 
+{
+  SALOMEDS::Locker lock;
+  return (Handle(SALOMEDSImpl_AttributeSelectable)::DownCast(_impl)->IsSelectable() == 1);
 }
                                                            
-void SALOMEDS_AttributeSelectable_i::SetSelectable(CORBA::Boolean value) {
+void SALOMEDS_AttributeSelectable_i::SetSelectable(CORBA::Boolean value) 
+{
+  SALOMEDS::Locker lock;
   Standard_Integer val = 0;
   if (value != 0) val = 1;
-  Handle(TDataStd_Integer)::DownCast(_myAttr)->Set(val);
-}
-
-char* SALOMEDS_AttributeSelectable_i::Store() {
-  return CORBA::string_dup(IsSelectable()?"1":"0");
+  Handle(SALOMEDSImpl_AttributeSelectable)::DownCast(_impl)->SetSelectable(val);
 }
 
-void SALOMEDS_AttributeSelectable_i::Restore(const char* value) {
-  SetSelectable(value[0] == '1');
-}
index f7158eedad40bc7110f49a58b57a6bfa99f82bd6..d91f510becaae1f1faa7a8e85ae4c10dbfbc0cfd 100644 (file)
@@ -1,56 +1,31 @@
-//  SALOME SALOMEDS : data structure of SALOME and sources of Salome data server 
-//
-//  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
-// 
-//  This library is free software; you can redistribute it and/or 
-//  modify it under the terms of the GNU Lesser General Public 
-//  License as published by the Free Software Foundation; either 
-//  version 2.1 of the License. 
-// 
-//  This library is distributed in the hope that it will be useful, 
-//  but WITHOUT ANY WARRANTY; without even the implied warranty of 
-//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
-//  Lesser General Public License for more details. 
-// 
-//  You should have received a copy of the GNU Lesser General Public 
-//  License along with this library; if not, write to the Free Software 
-//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
-// 
-//  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
-//
-//
-//
 //  File   : SALOMEDS_AttributeSelectable_i.hxx
-//  Author : Yves FRICAUD
+//  Author : Sergey RUIN
 //  Module : SALOME
-//  $Header:
 
 #ifndef SALOMEDS_AttributeSelectable_i_HeaderFile
 #define SALOMEDS_AttributeSelectable_i_HeaderFile
 
-#include "SALOMEDS_SelectableAttribute.hxx"
-#include "SALOMEDS_GenericAttribute_i.hxx"
-
 // IDL headers
 #include <SALOMEconfig.h>
 #include CORBA_SERVER_HEADER(SALOMEDS_Attributes)
 
-DEFINE_DERIVED_ATTR(AttributeSelectable,SALOMEDS_SelectableAttribute,false);
+#include "SALOMEDS_GenericAttribute_i.hxx"
+#include "SALOMEDSImpl_AttributeSelectable.hxx"
 
-class SALOMEDS_AttributeSelectable_i: 
-  public virtual POA_SALOMEDS::AttributeSelectable,
-  public virtual SALOMEDS_TAttributeSelectable_i 
-{
-  DEFINE_DERIVED_ATTR_METH_DEFAULT(AttributeSelectable,SALOMEDS_SelectableAttribute);
+class SALOMEDS_AttributeSelectable_i: public virtual POA_SALOMEDS::AttributeSelectable,
+                                      public virtual SALOMEDS_GenericAttribute_i {
 public:
+  
+  SALOMEDS_AttributeSelectable_i(const Handle(SALOMEDSImpl_AttributeSelectable)& theAttr, CORBA::ORB_ptr orb) 
+    :SALOMEDS_GenericAttribute_i(theAttr, orb) {}; 
+
+  ~SALOMEDS_AttributeSelectable_i() {};
+
   CORBA::Boolean IsSelectable();
   void SetSelectable(CORBA::Boolean value);
 
-  char* Store();
-  void Restore(const char*);
-
 };
 
 
+
 #endif
diff --git a/src/SALOMEDS/SALOMEDS_AttributeSequenceOfInteger.cxx b/src/SALOMEDS/SALOMEDS_AttributeSequenceOfInteger.cxx
new file mode 100644 (file)
index 0000000..9623d89
--- /dev/null
@@ -0,0 +1,89 @@
+//  File   : SALOMEDS_AttributeSequenceOfInteger.cxx
+//  Author : Sergey RUIN
+//  Module : SALOME
+
+#include "SALOMEDS_AttributeSequenceOfInteger.hxx"
+
+#include <TCollection_AsciiString.hxx>
+#include <TCollection_ExtendedString.hxx>
+#include <TColStd_HSequenceOfInteger.hxx>
+
+SALOMEDS_AttributeSequenceOfInteger
+::SALOMEDS_AttributeSequenceOfInteger(const Handle(SALOMEDSImpl_AttributeSequenceOfInteger)& theAttr)
+:SALOMEDS_GenericAttribute(theAttr)
+{}
+
+SALOMEDS_AttributeSequenceOfInteger::SALOMEDS_AttributeSequenceOfInteger(SALOMEDS::AttributeSequenceOfInteger_ptr theAttr)
+:SALOMEDS_GenericAttribute(theAttr)
+{}
+
+SALOMEDS_AttributeSequenceOfInteger::~SALOMEDS_AttributeSequenceOfInteger()
+{}
+
+void SALOMEDS_AttributeSequenceOfInteger::Assign(const std::vector<int>& other)
+{
+  int i, aLength = other.size();
+  if(_isLocal) {
+    Handle(TColStd_HSequenceOfInteger) aSeq = new TColStd_HSequenceOfInteger;
+    for(i = 0; i < aLength; i++) aSeq->Append(other[i]);
+    Handle(SALOMEDSImpl_AttributeSequenceOfInteger)::DownCast(_local_impl)->Assign(aSeq);
+  }
+  else {
+    SALOMEDS::LongSeq_var aSeq = new SALOMEDS::LongSeq();
+    aSeq->length(aLength);
+    for(i = 0; i < aLength; i++) aSeq[i] = other[i];
+    SALOMEDS::AttributeSequenceOfInteger::_narrow(_corba_impl)->Assign(aSeq);
+  }
+}
+
+std::vector<int> SALOMEDS_AttributeSequenceOfInteger::CorbaSequence()
+{
+  std::vector<int> aVector;
+  int i, aLength;
+  if(_isLocal) {
+    Handle(SALOMEDSImpl_AttributeSequenceOfInteger) aSeqAttr;
+    aSeqAttr = Handle(SALOMEDSImpl_AttributeSequenceOfInteger)::DownCast(_local_impl);
+    aLength = aSeqAttr->Length();
+    for(i = 1; i <=aLength; i++) aVector.push_back(aSeqAttr->Value(i));
+  }
+  else {
+    SALOMEDS::AttributeSequenceOfInteger_var aSeqAttr = SALOMEDS::AttributeSequenceOfInteger::_narrow(_corba_impl);
+    aLength = aSeqAttr->Length();
+    for(i = 1; i <=aLength; i++) aVector.push_back(aSeqAttr->Value(i));
+  }
+  return aVector;
+}
+void SALOMEDS_AttributeSequenceOfInteger::Add(int value)
+{
+  if(_isLocal) Handle(SALOMEDSImpl_AttributeSequenceOfInteger)::DownCast(_local_impl)->Add(value);
+  else SALOMEDS::AttributeSequenceOfInteger::_narrow(_corba_impl)->Add(value);
+}
+
+void SALOMEDS_AttributeSequenceOfInteger::Remove(int index)
+{
+  if(_isLocal) Handle(SALOMEDSImpl_AttributeSequenceOfInteger)::DownCast(_local_impl)->Remove(index);
+  else SALOMEDS::AttributeSequenceOfInteger::_narrow(_corba_impl)->Remove(index);
+}
+void SALOMEDS_AttributeSequenceOfInteger::ChangeValue(int index, int value)
+{
+  if(_isLocal) Handle(SALOMEDSImpl_AttributeSequenceOfInteger)::DownCast(_local_impl)->ChangeValue(index, value);
+  else SALOMEDS::AttributeSequenceOfInteger::_narrow(_corba_impl)->ChangeValue(index, value);
+}
+int SALOMEDS_AttributeSequenceOfInteger::Value(int index)
+{
+  int aValue;
+  if(_isLocal) aValue = Handle(SALOMEDSImpl_AttributeSequenceOfInteger)::DownCast(_local_impl)->Value(index);
+  else aValue = SALOMEDS::AttributeSequenceOfInteger::_narrow(_corba_impl)->Value(index);
+  return aValue;
+}
+int SALOMEDS_AttributeSequenceOfInteger::Length()
+{
+  int aValue;
+  if(_isLocal) aValue = Handle(SALOMEDSImpl_AttributeSequenceOfInteger)::DownCast(_local_impl)-> Length();
+  else aValue = SALOMEDS::AttributeSequenceOfInteger::_narrow(_corba_impl)-> Length();
+  return aValue;
+}
diff --git a/src/SALOMEDS/SALOMEDS_AttributeSequenceOfInteger.hxx b/src/SALOMEDS/SALOMEDS_AttributeSequenceOfInteger.hxx
new file mode 100644 (file)
index 0000000..26fe88e
--- /dev/null
@@ -0,0 +1,36 @@
+//  File   : SALOMEDS_AttributeSequenceOfInteger.hxx
+//  Author : Sergey RUIN
+//  Module : SALOME
+
+#ifndef SALOMEDS_AttributeSequenceOfInteger_HeaderFile
+#define SALOMEDS_AttributeSequenceOfInteger_HeaderFile
+
+#include "SALOMEDSClient_AttributeSequenceOfInteger.hxx"
+#include "SALOMEDS_GenericAttribute.hxx"
+#include "SALOMEDSImpl_AttributeSequenceOfInteger.hxx"
+
+// IDL headers
+#include <SALOMEconfig.h>
+#include CORBA_SERVER_HEADER(SALOMEDS)
+#include CORBA_SERVER_HEADER(SALOMEDS_Attributes)
+
+#include <vector>
+
+class SALOMEDS_AttributeSequenceOfInteger: public SALOMEDS_GenericAttribute, public SALOMEDSClient_AttributeSequenceOfInteger
+{
+public:  
+  SALOMEDS_AttributeSequenceOfInteger(const Handle(SALOMEDSImpl_AttributeSequenceOfInteger)& theAttr);
+  SALOMEDS_AttributeSequenceOfInteger(SALOMEDS::AttributeSequenceOfInteger_ptr theAttr);
+  ~SALOMEDS_AttributeSequenceOfInteger();
+
+  virtual void Assign(const std::vector<int>& other);
+  virtual std::vector<int> CorbaSequence();
+  virtual void Add(int value);
+  virtual void Remove(int index);
+  virtual void ChangeValue(int index, int value);
+  virtual int Value(int index);
+  virtual int Length();
+
+};
+
+#endif
index 33b8fbd1e3a54c4ee12a75c28e81e293096d7ce3..0fccb55c0a86725f8235cd0c741f7ca3f94166e1 100644 (file)
@@ -1,50 +1,32 @@
-//  SALOME SALOMEDS : data structure of SALOME and sources of Salome data server 
-//
-//  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
-// 
-//  This library is free software; you can redistribute it and/or 
-//  modify it under the terms of the GNU Lesser General Public 
-//  License as published by the Free Software Foundation; either 
-//  version 2.1 of the License. 
-// 
-//  This library is distributed in the hope that it will be useful, 
-//  but WITHOUT ANY WARRANTY; without even the implied warranty of 
-//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
-//  Lesser General Public License for more details. 
-// 
-//  You should have received a copy of the GNU Lesser General Public 
-//  License along with this library; if not, write to the Free Software 
-//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
-// 
-//  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
-//
-//
-//
 //  File   : SALOMEDS_AttributeSequenceOfInteger_i.cxx
-//  Author : Yves FRICAUD
+//  Author : Sergey RUIN
 //  Module : SALOME
-//  $Header$
+
 
 #include "SALOMEDS_AttributeSequenceOfInteger_i.hxx"
+#include "SALOMEDS.hxx"
 #include <TColStd_HSequenceOfInteger.hxx>
 
 using namespace std;
 
+
 void SALOMEDS_AttributeSequenceOfInteger_i::Assign(const SALOMEDS::LongSeq& other) 
 {
+  SALOMEDS::Locker lock;
   CheckLocked();
   Handle(TColStd_HSequenceOfInteger) CasCadeSeq = new TColStd_HSequenceOfInteger;
   for (int i = 0; i < other.length(); i++) {
     CasCadeSeq->Append(other[i]);
   }
-  Handle(SALOMEDS_SequenceOfIntegerAttribute)::DownCast(_myAttr)->Assign(CasCadeSeq);
+  Handle(SALOMEDSImpl_AttributeSequenceOfInteger)::DownCast(_impl)->Assign(CasCadeSeq);
 }
  
 SALOMEDS::LongSeq* SALOMEDS_AttributeSequenceOfInteger_i::CorbaSequence()
 {
+  SALOMEDS::Locker lock;
   SALOMEDS::LongSeq_var CorbaSeq = new SALOMEDS::LongSeq;
-  Handle(SALOMEDS_SequenceOfIntegerAttribute) CasCadeSeq = Handle(SALOMEDS_SequenceOfIntegerAttribute)::DownCast(_myAttr);
+  Handle(SALOMEDSImpl_AttributeSequenceOfInteger) CasCadeSeq;
+  CasCadeSeq = Handle(SALOMEDSImpl_AttributeSequenceOfInteger)::DownCast(_impl);
   CorbaSeq->length(CasCadeSeq->Length());
   for (int i = 0; i < CasCadeSeq->Length(); i++) {
     CorbaSeq[i] = CasCadeSeq->Value(i+1);;
@@ -54,55 +36,34 @@ SALOMEDS::LongSeq* SALOMEDS_AttributeSequenceOfInteger_i::CorbaSequence()
  
 void SALOMEDS_AttributeSequenceOfInteger_i::Add(CORBA::Long value) 
 {
+  SALOMEDS::Locker lock;
   CheckLocked();
-  Handle(SALOMEDS_SequenceOfIntegerAttribute)::DownCast(_myAttr)->Add(value);
+  Handle(SALOMEDSImpl_AttributeSequenceOfInteger)::DownCast(_impl)->Add(value);
 }
 
 void SALOMEDS_AttributeSequenceOfInteger_i::Remove(CORBA::Long index) 
 {
+  SALOMEDS::Locker lock;
   CheckLocked();
-  Handle(SALOMEDS_SequenceOfIntegerAttribute)::DownCast(_myAttr)->Remove(index);
+  Handle(SALOMEDSImpl_AttributeSequenceOfInteger)::DownCast(_impl)->Remove(index);
 }
  
 void SALOMEDS_AttributeSequenceOfInteger_i::ChangeValue(CORBA::Long index, CORBA::Long value)
 {
+  SALOMEDS::Locker lock;
   CheckLocked();
-  Handle(SALOMEDS_SequenceOfIntegerAttribute)::DownCast(_myAttr)->ChangeValue(index, value);
+  Handle(SALOMEDSImpl_AttributeSequenceOfInteger)::DownCast(_impl)->ChangeValue(index, value);
 }
  
 CORBA::Long SALOMEDS_AttributeSequenceOfInteger_i::Value(CORBA::Short index) 
 {
-  return Handle(SALOMEDS_SequenceOfIntegerAttribute)::DownCast(_myAttr)->Value(index);
+  SALOMEDS::Locker lock;
+  return Handle(SALOMEDSImpl_AttributeSequenceOfInteger)::DownCast(_impl)->Value(index);
 }
 
 CORBA::Long SALOMEDS_AttributeSequenceOfInteger_i::Length() 
-{
-  return Handle(SALOMEDS_SequenceOfIntegerAttribute)::DownCast(_myAttr)->Length();
+{  
+  SALOMEDS::Locker lock;
+  return Handle(SALOMEDSImpl_AttributeSequenceOfInteger)::DownCast(_impl)->Length();
 }
 
-char* SALOMEDS_AttributeSequenceOfInteger_i::Store() {
-  Handle(SALOMEDS_SequenceOfIntegerAttribute) CasCadeSeq = Handle(SALOMEDS_SequenceOfIntegerAttribute)::DownCast(_myAttr);
-  Standard_Integer aLength = CasCadeSeq->Length();
-  char* aResult = new char[aLength * 25];
-  aResult[0] = 0;
-  Standard_Integer aPosition = 0;
-  for (int i = 1; i <= aLength; i++) {
-    sprintf(aResult + aPosition , "%d ", CasCadeSeq->Value(i));
-    aPosition += strlen(aResult + aPosition);
-  }
-  return aResult;
-}
-
-void SALOMEDS_AttributeSequenceOfInteger_i::Restore(const char* value) {
-  Handle(TColStd_HSequenceOfInteger) CasCadeSeq = new TColStd_HSequenceOfInteger;
-  
-  char* aCopy = strdup(value);
-  char* adr = strtok(aCopy, " ");
-  while (adr) {
-    CORBA::Long l =  atol(adr);
-    CasCadeSeq->Append(l);
-    adr = strtok(NULL, " ");
-  }
-  free(aCopy);
-  Handle(SALOMEDS_SequenceOfIntegerAttribute)::DownCast(_myAttr)->Assign(CasCadeSeq);
-}
index d561d229d68555b8df72dd61cf94998487f60fed..320bbd21ee19bffe2d36d1c0ef6036d4b3df85f5 100644 (file)
@@ -1,49 +1,27 @@
-//  SALOME SALOMEDS : data structure of SALOME and sources of Salome data server 
-//
-//  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
-// 
-//  This library is free software; you can redistribute it and/or 
-//  modify it under the terms of the GNU Lesser General Public 
-//  License as published by the Free Software Foundation; either 
-//  version 2.1 of the License. 
-// 
-//  This library is distributed in the hope that it will be useful, 
-//  but WITHOUT ANY WARRANTY; without even the implied warranty of 
-//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
-//  Lesser General Public License for more details. 
-// 
-//  You should have received a copy of the GNU Lesser General Public 
-//  License along with this library; if not, write to the Free Software 
-//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
-// 
-//  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
-//
-//
-//
 //  File   : SALOMEDS_AttributeSequenceOfInteger_i.hxx
-//  Author : Yves FRICAUD
+//  Author : Sergey RUIN
 //  Module : SALOME
-//  $Header$
 
 #ifndef SALOMEDS_AttributeSequenceOfInteger_i_HeaderFile
 #define SALOMEDS_AttributeSequenceOfInteger_i_HeaderFile
 
-#include "SALOMEDS_SequenceOfIntegerAttribute.hxx"
-#include "SALOMEDS_GenericAttribute_i.hxx"
-
 // IDL headers
 #include <SALOMEconfig.h>
 #include CORBA_SERVER_HEADER(SALOMEDS_Attributes)
 
-DEFINE_DERIVED_ATTR(AttributeSequenceOfInteger,SALOMEDS_SequenceOfIntegerAttribute,true);
+#include "SALOMEDS_GenericAttribute_i.hxx"
+#include "SALOMEDSImpl_AttributeSequenceOfInteger.hxx"
 
-class SALOMEDS_AttributeSequenceOfInteger_i: 
-  public virtual POA_SALOMEDS::AttributeSequenceOfInteger,
-  public virtual SALOMEDS_TAttributeSequenceOfInteger_i 
-{
-  DEFINE_DERIVED_ATTR_METH_DEFAULT(AttributeSequenceOfInteger,SALOMEDS_SequenceOfIntegerAttribute);
+class SALOMEDS_AttributeSequenceOfInteger_i: public virtual POA_SALOMEDS::AttributeSequenceOfInteger,
+                                             public virtual SALOMEDS_GenericAttribute_i 
+{    
 public:
+  
+  SALOMEDS_AttributeSequenceOfInteger_i(const Handle(SALOMEDSImpl_AttributeSequenceOfInteger)& theAttr,CORBA::ORB_ptr orb)
+    :SALOMEDS_GenericAttribute_i(theAttr, orb) {}; 
+
+  ~SALOMEDS_AttributeSequenceOfInteger_i() {};
+
   void Assign(const SALOMEDS::LongSeq& other);
   SALOMEDS::LongSeq* CorbaSequence();
   void Add(CORBA::Long value);
@@ -52,9 +30,6 @@ public:
   CORBA::Long Value(CORBA::Short index);
   CORBA::Long Length();
 
-  char* Store();
-  void Restore(const char*);
-
 };
 
 #endif
diff --git a/src/SALOMEDS/SALOMEDS_AttributeSequenceOfReal.cxx b/src/SALOMEDS/SALOMEDS_AttributeSequenceOfReal.cxx
new file mode 100644 (file)
index 0000000..f29de16
--- /dev/null
@@ -0,0 +1,89 @@
+//  File   : SALOMEDS_AttributeSequenceOfReal.cxx
+//  Author : Sergey RUIN
+//  Module : SALOME
+
+#include "SALOMEDS_AttributeSequenceOfReal.hxx"
+
+#include <TCollection_AsciiString.hxx>
+#include <TCollection_ExtendedString.hxx>
+#include <TColStd_HSequenceOfReal.hxx>
+
+SALOMEDS_AttributeSequenceOfReal
+::SALOMEDS_AttributeSequenceOfReal(const Handle(SALOMEDSImpl_AttributeSequenceOfReal)& theAttr)
+:SALOMEDS_GenericAttribute(theAttr)
+{}
+
+SALOMEDS_AttributeSequenceOfReal::SALOMEDS_AttributeSequenceOfReal(SALOMEDS::AttributeSequenceOfReal_ptr theAttr)
+:SALOMEDS_GenericAttribute(theAttr)
+{}
+
+SALOMEDS_AttributeSequenceOfReal::~SALOMEDS_AttributeSequenceOfReal()
+{}
+
+void SALOMEDS_AttributeSequenceOfReal::Assign(const std::vector<double>& other)
+{
+  int i, aLength = other.size();
+  if(_isLocal) {
+    Handle(TColStd_HSequenceOfReal) aSeq = new TColStd_HSequenceOfReal;
+    for(i = 0; i < aLength; i++) aSeq->Append(other[i]);
+    Handle(SALOMEDSImpl_AttributeSequenceOfReal)::DownCast(_local_impl)->Assign(aSeq);
+  }
+  else {
+    SALOMEDS::DoubleSeq_var aSeq = new SALOMEDS::DoubleSeq();
+    aSeq->length(aLength);
+    for(i = 0; i < aLength; i++) aSeq[i] = other[i];
+    SALOMEDS::AttributeSequenceOfReal::_narrow(_corba_impl)->Assign(aSeq);
+  }
+}
+
+std::vector<double> SALOMEDS_AttributeSequenceOfReal::CorbaSequence()
+{
+  std::vector<double> aVector;
+  int i, aLength;
+  if(_isLocal) {
+    Handle(SALOMEDSImpl_AttributeSequenceOfReal) aSeqAttr;
+    aSeqAttr = Handle(SALOMEDSImpl_AttributeSequenceOfReal)::DownCast(_local_impl);
+    aLength = aSeqAttr->Length();
+    for(i = 1; i <=aLength; i++) aVector.push_back(aSeqAttr->Value(i));
+  }
+  else {
+    SALOMEDS::AttributeSequenceOfReal_var aSeqAttr = SALOMEDS::AttributeSequenceOfReal::_narrow(_corba_impl);
+    aLength = aSeqAttr->Length();
+    for(i = 1; i <=aLength; i++) aVector.push_back(aSeqAttr->Value(i));
+  }
+  return aVector;
+}
+void SALOMEDS_AttributeSequenceOfReal::Add(double value)
+{
+  if(_isLocal) Handle(SALOMEDSImpl_AttributeSequenceOfReal)::DownCast(_local_impl)->Add(value);
+  else SALOMEDS::AttributeSequenceOfReal::_narrow(_corba_impl)->Add(value);
+}
+
+void SALOMEDS_AttributeSequenceOfReal::Remove(int index)
+{
+  if(_isLocal) Handle(SALOMEDSImpl_AttributeSequenceOfReal)::DownCast(_local_impl)->Remove(index);
+  else SALOMEDS::AttributeSequenceOfReal::_narrow(_corba_impl)->Remove(index);
+}
+void SALOMEDS_AttributeSequenceOfReal::ChangeValue(int index, double value)
+{
+  if(_isLocal) Handle(SALOMEDSImpl_AttributeSequenceOfReal)::DownCast(_local_impl)->ChangeValue(index, value);
+  else SALOMEDS::AttributeSequenceOfReal::_narrow(_corba_impl)->ChangeValue(index, value);
+}
+double SALOMEDS_AttributeSequenceOfReal::Value(int index)
+{
+  double aValue;
+  if(_isLocal) aValue = Handle(SALOMEDSImpl_AttributeSequenceOfReal)::DownCast(_local_impl)->Value(index);
+  else aValue = SALOMEDS::AttributeSequenceOfReal::_narrow(_corba_impl)->Value(index);
+  return aValue;
+}
+int SALOMEDS_AttributeSequenceOfReal::Length()
+{
+  int aValue;
+  if(_isLocal) aValue = Handle(SALOMEDSImpl_AttributeSequenceOfReal)::DownCast(_local_impl)-> Length();
+  else aValue = SALOMEDS::AttributeSequenceOfReal::_narrow(_corba_impl)-> Length();
+  return aValue;
+}
diff --git a/src/SALOMEDS/SALOMEDS_AttributeSequenceOfReal.hxx b/src/SALOMEDS/SALOMEDS_AttributeSequenceOfReal.hxx
new file mode 100644 (file)
index 0000000..3177326
--- /dev/null
@@ -0,0 +1,36 @@
+//  File   : SALOMEDS_AttributeSequenceOfReal.hxx
+//  Author : Sergey RUIN
+//  Module : SALOME
+
+#ifndef SALOMEDS_AttributeSequenceOfReal_HeaderFile
+#define SALOMEDS_AttributeSequenceOfReal_HeaderFile
+
+#include "SALOMEDSClient_AttributeSequenceOfReal.hxx"
+#include "SALOMEDS_GenericAttribute.hxx"
+#include "SALOMEDSImpl_AttributeSequenceOfReal.hxx"
+
+// IDL headers
+#include <SALOMEconfig.h>
+#include CORBA_SERVER_HEADER(SALOMEDS)
+#include CORBA_SERVER_HEADER(SALOMEDS_Attributes)
+
+#include <vector>
+
+class SALOMEDS_AttributeSequenceOfReal: public SALOMEDS_GenericAttribute, public SALOMEDSClient_AttributeSequenceOfReal
+{
+public:  
+  SALOMEDS_AttributeSequenceOfReal(const Handle(SALOMEDSImpl_AttributeSequenceOfReal)& theAttr);
+  SALOMEDS_AttributeSequenceOfReal(SALOMEDS::AttributeSequenceOfReal_ptr theAttr);
+  ~SALOMEDS_AttributeSequenceOfReal();
+
+  virtual void Assign(const std::vector<double>& other);
+  virtual std::vector<double> CorbaSequence();
+  virtual void Add(double value);
+  virtual void Remove(int index);
+  virtual void ChangeValue(int index, double value);
+  virtual double Value(int index);
+  virtual int Length();
+
+};
+
+#endif
index 308ec01c0f0947b10a9f4cf77a4f94cdc44865f4..bf97ab386ec4d65a1af7d642c8c7142304332d02 100644 (file)
@@ -1,50 +1,30 @@
-//  SALOME SALOMEDS : data structure of SALOME and sources of Salome data server 
-//
-//  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
-// 
-//  This library is free software; you can redistribute it and/or 
-//  modify it under the terms of the GNU Lesser General Public 
-//  License as published by the Free Software Foundation; either 
-//  version 2.1 of the License. 
-// 
-//  This library is distributed in the hope that it will be useful, 
-//  but WITHOUT ANY WARRANTY; without even the implied warranty of 
-//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
-//  Lesser General Public License for more details. 
-// 
-//  You should have received a copy of the GNU Lesser General Public 
-//  License along with this library; if not, write to the Free Software 
-//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
-// 
-//  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
-//
-//
-//
 //  File   : SALOMEDS_AttributeSequenceOfReal_i.cxx
-//  Author : Yves FRICAUD
+//  Author : Sergey RUIN
 //  Module : SALOME
-//  $Header$
+
 
 #include "SALOMEDS_AttributeSequenceOfReal_i.hxx"
+#include "SALOMEDS.hxx" 
 #include <TColStd_HSequenceOfReal.hxx>
 
 using namespace std;
 
 void SALOMEDS_AttributeSequenceOfReal_i::Assign(const SALOMEDS::DoubleSeq& other) 
 {
+  SALOMEDS::Locker lock; 
   CheckLocked();
   Handle(TColStd_HSequenceOfReal) CasCadeSeq = new TColStd_HSequenceOfReal;
   for (int i = 0; i < other.length(); i++) {
     CasCadeSeq->Append(other[i]);
   }
-  Handle(SALOMEDS_SequenceOfRealAttribute)::DownCast(_myAttr)->Assign(CasCadeSeq);
+  Handle(SALOMEDSImpl_AttributeSequenceOfReal)::DownCast(_impl)->Assign(CasCadeSeq);
 }
  
 SALOMEDS::DoubleSeq* SALOMEDS_AttributeSequenceOfReal_i::CorbaSequence()
 {
+  SALOMEDS::Locker lock; 
   SALOMEDS::DoubleSeq_var CorbaSeq = new SALOMEDS::DoubleSeq;
-  Handle(SALOMEDS_SequenceOfRealAttribute) CasCadeSeq = Handle(SALOMEDS_SequenceOfRealAttribute)::DownCast(_myAttr);
+  Handle(SALOMEDSImpl_AttributeSequenceOfReal) CasCadeSeq = Handle(SALOMEDSImpl_AttributeSequenceOfReal)::DownCast(_impl);
   CorbaSeq->length(CasCadeSeq->Length());
   for (int i = 0; i < CasCadeSeq->Length(); i++) {
     CorbaSeq[i] = CasCadeSeq->Value(i+1);;
@@ -54,57 +34,34 @@ SALOMEDS::DoubleSeq* SALOMEDS_AttributeSequenceOfReal_i::CorbaSequence()
  
 void SALOMEDS_AttributeSequenceOfReal_i::Add(CORBA::Double value) 
 {
+  SALOMEDS::Locker lock; 
   CheckLocked();
-  Handle(SALOMEDS_SequenceOfRealAttribute)::DownCast(_myAttr)->Add(value);
+  Handle(SALOMEDSImpl_AttributeSequenceOfReal)::DownCast(_impl)->Add(value);
 }
 
 void SALOMEDS_AttributeSequenceOfReal_i::Remove(CORBA::Long index) 
 {
+  SALOMEDS::Locker lock; 
   CheckLocked();
-  Handle(SALOMEDS_SequenceOfRealAttribute)::DownCast(_myAttr)->Remove(index);
+  Handle(SALOMEDSImpl_AttributeSequenceOfReal)::DownCast(_impl)->Remove(index);
 }
  
 void SALOMEDS_AttributeSequenceOfReal_i::ChangeValue(CORBA::Long index, CORBA::Double value)
 {
+  SALOMEDS::Locker lock; 
   CheckLocked();
-  Handle(SALOMEDS_SequenceOfRealAttribute)::DownCast(_myAttr)->ChangeValue(index, value);
+  Handle(SALOMEDSImpl_AttributeSequenceOfReal)::DownCast(_impl)->ChangeValue(index, value);
 }
  
 CORBA::Double SALOMEDS_AttributeSequenceOfReal_i::Value(CORBA::Short index) 
 {
-  return Handle(SALOMEDS_SequenceOfRealAttribute)::DownCast(_myAttr)->Value(index);
+  SALOMEDS::Locker lock; 
+  return Handle(SALOMEDSImpl_AttributeSequenceOfReal)::DownCast(_impl)->Value(index);
 }
 
 CORBA::Long SALOMEDS_AttributeSequenceOfReal_i::Length() 
 {
-  return Handle(SALOMEDS_SequenceOfRealAttribute)::DownCast(_myAttr)->Length();
-}
-
-char* SALOMEDS_AttributeSequenceOfReal_i::Store() {
-  Handle(SALOMEDS_SequenceOfRealAttribute) CasCadeSeq = Handle(SALOMEDS_SequenceOfRealAttribute)::DownCast(_myAttr);
-  Standard_Integer aLength = CasCadeSeq->Length();
-  char* aResult = new char[aLength * 25];
-  aResult[0] = 0;
-  Standard_Integer aPosition = 0;
-  for (int i = 1; i <= aLength; i++) {
-    sprintf(aResult + aPosition , "%f ", CasCadeSeq->Value(i));
-    aPosition += strlen(aResult + aPosition);
-  }
-  return aResult;
+  SALOMEDS::Locker lock; 
+  return Handle(SALOMEDSImpl_AttributeSequenceOfReal)::DownCast(_impl)->Length();
 }
 
-void SALOMEDS_AttributeSequenceOfReal_i::Restore(const char* value) {
-  Handle(TColStd_HSequenceOfReal) CasCadeSeq = new TColStd_HSequenceOfReal;
-  
-  char* aCopy = strdup(value);
-  char* adr = strtok(aCopy, " ");
-  char *err = NULL;
-  while (adr) {
-    CORBA::Double r =  strtod(adr, &err);
-    if (err == adr) break;
-    else CasCadeSeq->Append(r);
-    adr = strtok(NULL, " ");
-  }
-  free(aCopy);
-  Handle(SALOMEDS_SequenceOfRealAttribute)::DownCast(_myAttr)->Assign(CasCadeSeq);
-}
index 4c7fa6a17d99cd102ffb868c579ebf1ed3875545..a4aa834ccbdb831ec902df4c2991584c0ad4a08d 100644 (file)
@@ -1,49 +1,26 @@
-//  SALOME SALOMEDS : data structure of SALOME and sources of Salome data server 
-//
-//  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
-// 
-//  This library is free software; you can redistribute it and/or 
-//  modify it under the terms of the GNU Lesser General Public 
-//  License as published by the Free Software Foundation; either 
-//  version 2.1 of the License. 
-// 
-//  This library is distributed in the hope that it will be useful, 
-//  but WITHOUT ANY WARRANTY; without even the implied warranty of 
-//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
-//  Lesser General Public License for more details. 
-// 
-//  You should have received a copy of the GNU Lesser General Public 
-//  License along with this library; if not, write to the Free Software 
-//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
-// 
-//  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
-//
-//
-//
 //  File   : SALOMEDS_AttributeSequenceOfSequenceOfReal_i.hxx
-//  Author : Yves FRICAUD
+//  Author : Sergey RUIN
 //  Module : SALOME
-//  $Header$
 
 #ifndef SALOMEDS_AttributeSequenceOfSequenceOfReal_i_HeaderFile
 #define SALOMEDS_AttributeSequenceOfSequenceOfReal_i_HeaderFile
 
-#include "SALOMEDS_SequenceOfRealAttribute.hxx"
-#include "SALOMEDS_GenericAttribute_i.hxx"
-
 // IDL headers
 #include <SALOMEconfig.h>
 #include CORBA_SERVER_HEADER(SALOMEDS_Attributes)
 
-DEFINE_DERIVED_ATTR(AttributeSequenceOfReal,SALOMEDS_SequenceOfRealAttribute,true);
+#include "SALOMEDS_GenericAttribute_i.hxx"
+#include "SALOMEDSImpl_AttributeSequenceOfReal.hxx"
 
-class SALOMEDS_AttributeSequenceOfReal_i: 
-  public virtual POA_SALOMEDS::AttributeSequenceOfReal,
-  public virtual SALOMEDS_TAttributeSequenceOfReal_i 
-{
-  DEFINE_DERIVED_ATTR_METH_DEFAULT(AttributeSequenceOfReal,SALOMEDS_SequenceOfRealAttribute);
+class SALOMEDS_AttributeSequenceOfReal_i: public virtual POA_SALOMEDS::AttributeSequenceOfReal,
+                                         public virtual SALOMEDS_GenericAttribute_i {
 public:
+  
+  SALOMEDS_AttributeSequenceOfReal_i(const Handle(SALOMEDSImpl_AttributeSequenceOfReal)& theAttr, CORBA::ORB_ptr orb) 
+    :SALOMEDS_GenericAttribute_i(theAttr, orb) {}; 
+
+  ~SALOMEDS_AttributeSequenceOfReal_i() {};
+
   void Assign(const SALOMEDS::DoubleSeq& other);
   SALOMEDS::DoubleSeq* CorbaSequence();
   void Add(CORBA::Double value);
@@ -52,9 +29,6 @@ public:
   CORBA::Double Value(CORBA::Short index);
   CORBA::Long Length();
 
-  char* Store();
-  void Restore(const char*);
-
 };
 
 
diff --git a/src/SALOMEDS/SALOMEDS_AttributeStudyProperties.cxx b/src/SALOMEDS/SALOMEDS_AttributeStudyProperties.cxx
new file mode 100644 (file)
index 0000000..8ba288b
--- /dev/null
@@ -0,0 +1,236 @@
+//  File   : SALOMEDS_AttributeStudyProperties.cxx
+//  Author : Sergey RUIN
+//  Module : SALOME
+
+#include "SALOMEDS_AttributeStudyProperties.hxx"
+
+#include <string>
+#include <TCollection_AsciiString.hxx>
+#include <TCollection_ExtendedString.hxx>
+#include <TColStd_HSequenceOfExtendedString.hxx>
+#include <TColStd_HSequenceOfInteger.hxx>
+
+SALOMEDS_AttributeStudyProperties::SALOMEDS_AttributeStudyProperties
+                                   (const Handle(SALOMEDSImpl_AttributeStudyProperties)& theAttr)
+:SALOMEDS_GenericAttribute(theAttr)
+{}
+
+SALOMEDS_AttributeStudyProperties::SALOMEDS_AttributeStudyProperties
+                                   (SALOMEDS::AttributeStudyProperties_ptr theAttr)
+:SALOMEDS_GenericAttribute(theAttr)
+{}
+
+SALOMEDS_AttributeStudyProperties::~SALOMEDS_AttributeStudyProperties()
+{
+}
+
+void SALOMEDS_AttributeStudyProperties::SetUserName(const std::string& theName)
+{
+  if (_isLocal) {
+    Handle(SALOMEDSImpl_AttributeStudyProperties) anImpl =
+      Handle(SALOMEDSImpl_AttributeStudyProperties)::DownCast(_local_impl);
+    anImpl->ChangeCreatorName((char*)theName.c_str());
+  } else
+    SALOMEDS::AttributeStudyProperties::_narrow(_corba_impl)->SetUserName(theName.c_str());
+}
+
+std::string SALOMEDS_AttributeStudyProperties::GetUserName()
+{
+  std::string aName;
+  if (_isLocal) {
+    TCollection_ExtendedString S =
+      Handle(SALOMEDSImpl_AttributeStudyProperties)::DownCast(_local_impl)->GetCreatorName();
+    aName = TCollection_AsciiString(S).ToCString();
+  }
+#ifndef WNT
+  else aName = SALOMEDS::AttributeStudyProperties::_narrow(_corba_impl)->GetUserName();
+#else
+  else aName = SALOMEDS::AttributeStudyProperties::_narrow(_corba_impl)->GetUserNameA();
+#endif
+  return aName;
+}
+
+void SALOMEDS_AttributeStudyProperties::SetCreationDate
+              (int theMinute, int theHour, int theDay, int theMonth, int theYear)
+{
+  if (_isLocal) {
+    Handle(SALOMEDSImpl_AttributeStudyProperties) anImpl =
+      Handle(SALOMEDSImpl_AttributeStudyProperties)::DownCast(_local_impl);
+    int aTmp;
+    if (anImpl->GetCreationDate(aTmp, aTmp, aTmp, aTmp, aTmp)) return;
+    TCollection_ExtendedString S;
+    anImpl->SetModification(S, theMinute, theHour, theDay, theMonth, theYear);
+  } else {
+    SALOMEDS::AttributeStudyProperties::_narrow(_corba_impl)->SetCreationDate(theMinute,
+                                                                             theHour,
+                                                                             theDay,
+                                                                             theMonth,
+                                                                             theYear);
+  }
+}
+
+bool SALOMEDS_AttributeStudyProperties::GetCreationDate(int& theMinute,
+                                                       int& theHour,
+                                                       int& theDay,
+                                                       int& theMonth,
+                                                       int& theYear)
+{
+  bool ret;
+  if (_isLocal) {
+    ret = Handle(SALOMEDSImpl_AttributeStudyProperties)::DownCast
+      (_local_impl)->GetCreationDate(theMinute, theHour, theDay, theMonth, theYear);
+  } else {
+    CORBA::Long aMinute, anHour, aDay, aMonth, anYear;
+    ret = SALOMEDS::AttributeStudyProperties::_narrow(_corba_impl)->GetCreationDate(aMinute,
+                                                                                   anHour,
+                                                                                   aDay,
+                                                                                   aMonth,
+                                                                                   anYear);
+    theMinute = (int)aMinute;
+    theHour = (int)anHour;
+    theDay = (int)aDay;
+    theMonth = (int)aMonth;
+    theYear = (int)anYear;
+  }
+  return ret;
+}
+
+void SALOMEDS_AttributeStudyProperties::SetCreationMode(const std::string& theMode)
+{
+  if (_isLocal) {
+    if (theMode == "from scratch")
+      Handle(SALOMEDSImpl_AttributeStudyProperties)::DownCast(_local_impl)->SetCreationMode(1);
+    else if (theMode == "copy from")
+      Handle(SALOMEDSImpl_AttributeStudyProperties)::DownCast(_local_impl)->SetCreationMode(2);
+    else //Not defined
+      Handle(SALOMEDSImpl_AttributeStudyProperties)::DownCast(_local_impl)->SetCreationMode(0);
+  }
+  else SALOMEDS::AttributeStudyProperties::_narrow(_corba_impl)->SetCreationMode(theMode.c_str());
+}
+
+std::string SALOMEDS_AttributeStudyProperties::GetCreationMode()
+{
+  std::string aMode;
+  if (_isLocal) {
+    int mode  = Handle(SALOMEDSImpl_AttributeStudyProperties)::DownCast(_local_impl)->GetCreationMode();
+    if (mode == 1) aMode = "from scratch";
+    if (mode == 2) aMode = "copy from";
+  }
+  else
+    aMode = SALOMEDS::AttributeStudyProperties::_narrow(_corba_impl)->GetCreationMode();
+  return aMode;
+}
+
+void SALOMEDS_AttributeStudyProperties::SetModified(int theModified)
+{
+  if (_isLocal)
+    Handle(SALOMEDSImpl_AttributeStudyProperties)::DownCast(_local_impl)->SetModified(theModified);
+  else
+    SALOMEDS::AttributeStudyProperties::_narrow(_corba_impl)->SetModified(theModified);
+}
+
+bool SALOMEDS_AttributeStudyProperties::IsModified()
+{
+  bool ret;
+  if (_isLocal)
+    ret = Handle(SALOMEDSImpl_AttributeStudyProperties)::DownCast(_local_impl)->IsModified();
+  else
+    ret = SALOMEDS::AttributeStudyProperties::_narrow(_corba_impl)->IsModified();
+  return ret;
+}
+
+int SALOMEDS_AttributeStudyProperties::GetModified()
+{
+  int isModified;
+  if (_isLocal)
+    isModified = Handle(SALOMEDSImpl_AttributeStudyProperties)::DownCast(_local_impl)->GetModified();
+  else
+    isModified = SALOMEDS::AttributeStudyProperties::_narrow(_corba_impl)->GetModified();
+  return isModified;
+}
+
+void SALOMEDS_AttributeStudyProperties::SetLocked(bool theLocked)
+{
+  if (_isLocal)
+    Handle(SALOMEDSImpl_AttributeStudyProperties)::DownCast(_local_impl)->SetLocked(theLocked);
+  else
+    SALOMEDS::AttributeStudyProperties::_narrow(_corba_impl)->SetLocked(theLocked);
+}
+
+bool SALOMEDS_AttributeStudyProperties::IsLocked()
+{
+  bool ret;
+  if (_isLocal)
+    ret = Handle(SALOMEDSImpl_AttributeStudyProperties)::DownCast(_local_impl)->IsLocked();
+  else
+    ret = SALOMEDS::AttributeStudyProperties::_narrow(_corba_impl)->IsLocked();
+  return ret;
+}
+
+void SALOMEDS_AttributeStudyProperties::SetModification(const std::string& theName,
+                                                       int theMinute,
+                                                       int theHour,
+                                                       int theDay,
+                                                       int theMonth,
+                                                       int theYear)
+{
+  if (_isLocal) {
+    Handle(SALOMEDSImpl_AttributeStudyProperties) anImpl =
+      Handle(SALOMEDSImpl_AttributeStudyProperties)::DownCast(_local_impl);
+    anImpl->SetModification((char*)theName.c_str(), theMinute, theHour, theDay, theMonth, theYear);
+  } else
+    SALOMEDS::AttributeStudyProperties::_narrow(_corba_impl)->SetModification(theName.c_str(),
+                                                                              theMinute,
+                                                                              theHour,
+                                                                              theDay,
+                                                                              theMonth,
+                                                                              theYear);
+}
+
+void SALOMEDS_AttributeStudyProperties::GetModificationsList(std::vector<std::string>& theNames,
+                                                            std::vector<int>& theMinutes,
+                                                            std::vector<int>& theHours,
+                                                            std::vector<int>& theDays,
+                                                            std::vector<int>& theMonths,
+                                                            std::vector<int>& theYears,
+                                                            bool theWithCreator)
+{
+  int i, aLength;
+
+  if (_isLocal) {
+    Handle(TColStd_HSequenceOfExtendedString) aNames;
+    Handle(TColStd_HSequenceOfInteger) aMinutes, aHours, aDays, aMonths, aYears;
+    Handle(SALOMEDSImpl_AttributeStudyProperties) anImpl =
+      Handle(SALOMEDSImpl_AttributeStudyProperties)::DownCast(_local_impl);
+    anImpl->GetModifications(aNames, aMinutes, aHours, aDays, aMonths, aYears);
+    aLength = aNames->Length();
+    i = ((theWithCreator) ? 1 : 2);
+    for (; i <= aLength; i++) {
+      theNames.push_back(TCollection_AsciiString(aNames->Value(i)).ToCString());
+      theMinutes.push_back(aMinutes->Value(i));
+      theHours.push_back(aHours->Value(i));
+      theDays.push_back(aDays->Value(i));
+      theMonths.push_back(aMonths->Value(i));
+      theYears.push_back(aYears->Value(i));
+    }
+  } else {
+    SALOMEDS::StringSeq_var aNames;
+    SALOMEDS::LongSeq_var aMinutes, aHours, aDays, aMonths, aYears;
+    SALOMEDS::AttributeStudyProperties::_narrow(_corba_impl)->GetModificationsList(aNames.out(),
+                                                                                  aMinutes.out(),
+                                                                                  aHours.out(),
+                                                                                  aDays.out(),
+                                                                                  aMonths.out(),
+                                                                                  aYears.out(),
+                                                                                  theWithCreator);
+    aLength = aNames->length();
+    for (i = 0; i<aLength; i++) {
+      theNames.push_back(aNames[i].in());
+      theMinutes.push_back(aMinutes[i]);
+      theHours.push_back(aHours[i]);
+      theDays.push_back(aDays[i]);
+      theMonths.push_back(aMonths[i]);
+      theYears.push_back(aYears[i]);
+    }
+  }
+}
diff --git a/src/SALOMEDS/SALOMEDS_AttributeStudyProperties.hxx b/src/SALOMEDS/SALOMEDS_AttributeStudyProperties.hxx
new file mode 100644 (file)
index 0000000..2a3be0e
--- /dev/null
@@ -0,0 +1,60 @@
+//  File   : SALOMEDS_AttributeStudyProperties.hxx
+//  Author : Sergey RUIN
+//  Module : SALOME
+
+#ifndef SALOMEDS_AttributeStudyProperties_HeaderFile
+#define SALOMEDS_AttributeStudyProperties_HeaderFile
+
+#include <vector>
+#include <string>
+
+#include "SALOMEDSClient_AttributeStudyProperties.hxx"
+#include "SALOMEDS_GenericAttribute.hxx"
+#include "SALOMEDSImpl_AttributeStudyProperties.hxx"
+
+// IDL headers
+#include <SALOMEconfig.h>
+#include CORBA_SERVER_HEADER(SALOMEDS)
+#include CORBA_SERVER_HEADER(SALOMEDS_Attributes)
+
+#ifdef GetUserName
+#undef GetUserName
+#endif
+
+class Standard_EXPORT SALOMEDS_AttributeStudyProperties: public SALOMEDS_GenericAttribute, public SALOMEDSClient_AttributeStudyProperties
+{
+public:
+  
+  SALOMEDS_AttributeStudyProperties(const Handle(SALOMEDSImpl_AttributeStudyProperties)& theAttr);
+  SALOMEDS_AttributeStudyProperties(SALOMEDS::AttributeStudyProperties_ptr theAttr);
+  ~SALOMEDS_AttributeStudyProperties();
+
+  virtual void SetUserName(const std::string& theName);
+  virtual std::string GetUserName();
+  virtual void SetCreationDate(int theMinute, int theHour, int theDay, int theMonth, int theYear);
+  virtual bool GetCreationDate(int& theMinute, int& theHour, int& theDay, int& theMonth, int& theYear);
+  virtual void SetCreationMode(const std::string& theMode);
+  virtual std::string GetCreationMode();
+  virtual void SetModified(int theModified);
+  virtual bool IsModified();
+  virtual int GetModified();
+  virtual void SetLocked(bool theLocked);
+  virtual bool IsLocked();
+  virtual void SetModification(const std::string& theName,
+                              int theMinute,
+                              int theHour,
+                              int theDay,
+                              int theMonth,
+                              int theYear);
+  virtual void GetModificationsList(std::vector<std::string>& theNames,
+                                   std::vector<int>& theMinutes,
+                                   std::vector<int>& theHours,
+                                   std::vector<int>& theDays,
+                                   std::vector<int>& theMonths,
+                                   std::vector<int>& theYears,
+                                   bool theWithCreator);
+
+};
+
+
+#endif
index b08b9d5c4c93892d19858113074e2fb4b0ac8214..286fdb7d25853ca1b042f229f5759a0aa7f7b425 100644 (file)
@@ -1,35 +1,32 @@
-//  SALOME SALOMEDS : data structure of SALOME and sources of Salome data server 
-//
-//  Copyright (C) 2003  CEA/DEN, EDF R&D
-//
-//
-//
 //  File   : SALOMEDS_AttributeStudyProperties_i.cxx
-//  Author : Yves FRICAUD
+//  Author : Sergey RUIN
 //  Module : SALOME
-//  $Header$
 
+
+#include "SALOMEDS_AttributeStudyProperties_i.hxx"
+#include "SALOMEDS.hxx"
 #include <TColStd_HSequenceOfExtendedString.hxx>
 #include <TColStd_HSequenceOfInteger.hxx>
 #include <TCollection_ExtendedString.hxx>
-#include <TCollection_AsciiString.hxx>
 
-#include "SALOMEDS_AttributeStudyProperties_i.hxx"
+using namespace std;
 
 #define CREATION_MODE_NOTDEFINED 0
 #define CREATION_MODE_SCRATCH 1
 #define CREATION_MODE_COPY 2
 
-using namespace std;
-
-void SALOMEDS_AttributeStudyProperties_i::SetUserName(const char* theName) {
+void SALOMEDS_AttributeStudyProperties_i::SetUserName(const char* theName)
+{
+  SALOMEDS::Locker lock;
   CheckLocked();
-  Handle(SALOMEDS_StudyPropertiesAttribute) aProp = Handle(SALOMEDS_StudyPropertiesAttribute)::DownCast(_myAttr);
-  aProp->SetFirstName(const_cast<char*>(theName));
+  Handle(SALOMEDSImpl_AttributeStudyProperties)::DownCast(_impl)->ChangeCreatorName((char*)theName);
 }
 
-char* SALOMEDS_AttributeStudyProperties_i::GetUserName() {
-  TCollection_ExtendedString S = Handle(SALOMEDS_StudyPropertiesAttribute)::DownCast(_myAttr)->GetCreatorName();
+char* SALOMEDS_AttributeStudyProperties_i::GetUserName()
+{
+  SALOMEDS::Locker lock;
+  TCollection_ExtendedString S =
+    Handle(SALOMEDSImpl_AttributeStudyProperties)::DownCast(_impl)->GetCreatorName();
   CORBA::String_var c_s = CORBA::string_dup(TCollection_AsciiString(S).ToCString());
   return c_s._retn();
 }
@@ -38,26 +35,32 @@ void SALOMEDS_AttributeStudyProperties_i::SetCreationDate(CORBA::Long theMinute,
                                                          CORBA::Long theHour,
                                                          CORBA::Long theDay,
                                                          CORBA::Long theMonth,
-                                                         CORBA::Long theYear) {
+                                                         CORBA::Long theYear)
+{
+  SALOMEDS::Locker lock;
   CheckLocked();
-  Handle(SALOMEDS_StudyPropertiesAttribute) aProp = Handle(SALOMEDS_StudyPropertiesAttribute)::DownCast(_myAttr);
+  Handle(SALOMEDSImpl_AttributeStudyProperties) aProp =
+    Handle(SALOMEDSImpl_AttributeStudyProperties)::DownCast(_impl);
   int aTmp;
   if (aProp->GetCreationDate(aTmp, aTmp, aTmp, aTmp, aTmp)) return;
-  aProp->SetModificationDate(theMinute, theHour, theDay, theMonth, theYear);
+  TCollection_ExtendedString S;
+  aProp->SetModification(S, theMinute, theHour, theDay, theMonth, theYear);
 }
 
 CORBA::Boolean SALOMEDS_AttributeStudyProperties_i::GetCreationDate(CORBA::Long& theMinute,
                                                                    CORBA::Long& theHour,
                                                                    CORBA::Long& theDay,
                                                                    CORBA::Long& theMonth,
-                                                                   CORBA::Long& theYear) {
+                                                                   CORBA::Long& theYear)
+{
+  SALOMEDS::Locker lock;
   Standard_Integer aMinute;
   Standard_Integer aHour;
   Standard_Integer aDay;
   Standard_Integer aMonth;
   Standard_Integer aYear;
-  if (Handle(SALOMEDS_StudyPropertiesAttribute)::DownCast(_myAttr)->GetCreationDate(aMinute, aHour, aDay,
-                                                                                   aMonth, aYear)) {
+  if (Handle(SALOMEDSImpl_AttributeStudyProperties)::DownCast
+      (_impl)->GetCreationDate(aMinute, aHour, aDay, aMonth, aYear)) {
     theMinute = aMinute;
     theHour = aHour;
     theDay = aDay;
@@ -68,17 +71,22 @@ CORBA::Boolean SALOMEDS_AttributeStudyProperties_i::GetCreationDate(CORBA::Long&
   return Standard_False;
 }
 
-void SALOMEDS_AttributeStudyProperties_i::SetCreationMode(const char* theMode) {
+void SALOMEDS_AttributeStudyProperties_i::SetCreationMode(const char* theMode)
+{
+  SALOMEDS::Locker lock;
   CheckLocked();
-  Handle(SALOMEDS_StudyPropertiesAttribute) aProp = Handle(SALOMEDS_StudyPropertiesAttribute)::DownCast(_myAttr);
+  Handle(SALOMEDSImpl_AttributeStudyProperties) aProp =
+    Handle(SALOMEDSImpl_AttributeStudyProperties)::DownCast(_impl);
   if (strcmp(theMode,"from scratch")==0) aProp->SetCreationMode(CREATION_MODE_SCRATCH);
   else if (strcmp(theMode,"copy from")==0) aProp->SetCreationMode(CREATION_MODE_COPY);
   else aProp->SetCreationMode(CREATION_MODE_NOTDEFINED);
 }
 
-char* SALOMEDS_AttributeStudyProperties_i::GetCreationMode() {
+char* SALOMEDS_AttributeStudyProperties_i::GetCreationMode()
+{
+  SALOMEDS::Locker lock;
   CORBA::String_var c_s;
-  switch (Handle(SALOMEDS_StudyPropertiesAttribute)::DownCast(_myAttr)->GetCreationMode()) {
+  switch (Handle(SALOMEDSImpl_AttributeStudyProperties)::DownCast(_impl)->GetCreationMode()) {
   case CREATION_MODE_SCRATCH: c_s = "from scratch"; break;
   case CREATION_MODE_COPY: c_s = "copy from"; break;
   default: c_s = "";
@@ -86,24 +94,34 @@ char* SALOMEDS_AttributeStudyProperties_i::GetCreationMode() {
   return c_s._retn();
 }
 
-void SALOMEDS_AttributeStudyProperties_i::SetModified(CORBA::Long theModified) {
-  Handle(SALOMEDS_StudyPropertiesAttribute)::DownCast(_myAttr)->SetModified(theModified);
+void SALOMEDS_AttributeStudyProperties_i::SetModified(CORBA::Long theModified)
+{
+  SALOMEDS::Locker lock;
+  Handle(SALOMEDSImpl_AttributeStudyProperties)::DownCast(_impl)->SetModified(theModified);
 }
 
-CORBA::Boolean SALOMEDS_AttributeStudyProperties_i::IsModified() {
-  return Handle(SALOMEDS_StudyPropertiesAttribute)::DownCast(_myAttr)->IsModified();
+CORBA::Boolean SALOMEDS_AttributeStudyProperties_i::IsModified()
+{
+  SALOMEDS::Locker lock;
+  return Handle(SALOMEDSImpl_AttributeStudyProperties)::DownCast(_impl)->IsModified();
 }
 
-CORBA::Long SALOMEDS_AttributeStudyProperties_i::GetModified() {
-  return Handle(SALOMEDS_StudyPropertiesAttribute)::DownCast(_myAttr)->GetModified();
+CORBA::Long SALOMEDS_AttributeStudyProperties_i::GetModified()
+{
+  SALOMEDS::Locker lock;
+  return Handle(SALOMEDSImpl_AttributeStudyProperties)::DownCast(_impl)->GetModified();
 }
 
-void SALOMEDS_AttributeStudyProperties_i::SetLocked(CORBA::Boolean theLocked) {
-  Handle(SALOMEDS_StudyPropertiesAttribute)::DownCast(_myAttr)->SetLocked(theLocked);
+void SALOMEDS_AttributeStudyProperties_i::SetLocked(CORBA::Boolean theLocked)
+{
+  SALOMEDS::Locker lock;
+  Handle(SALOMEDSImpl_AttributeStudyProperties)::DownCast(_impl)->SetLocked(theLocked);
 }
 
-CORBA::Boolean SALOMEDS_AttributeStudyProperties_i::IsLocked() {
-  return Handle(SALOMEDS_StudyPropertiesAttribute)::DownCast(_myAttr)->IsLocked();
+CORBA::Boolean SALOMEDS_AttributeStudyProperties_i::IsLocked()
+{
+  SALOMEDS::Locker lock;
+  return Handle(SALOMEDSImpl_AttributeStudyProperties)::DownCast(_impl)->IsLocked();
 }
 
 void SALOMEDS_AttributeStudyProperties_i::SetModification(const char* theName,
@@ -111,124 +129,51 @@ void SALOMEDS_AttributeStudyProperties_i::SetModification(const char* theName,
                                                          CORBA::Long theHour,
                                                          CORBA::Long theDay,
                                                          CORBA::Long theMonth,
-                                                         CORBA::Long theYear) {
+                                                         CORBA::Long theYear)
+{
+  SALOMEDS::Locker lock;
   CheckLocked();
-  Handle(SALOMEDS_StudyPropertiesAttribute) aProp = Handle(SALOMEDS_StudyPropertiesAttribute)::DownCast(_myAttr);
-  aProp->SetUserName(const_cast<char*>(theName));
-  aProp->SetModificationDate((int)theMinute, (int)theHour, (int)theDay, (int)theMonth, (int)theYear);
+  Handle(SALOMEDSImpl_AttributeStudyProperties) aProp =
+    Handle(SALOMEDSImpl_AttributeStudyProperties)::DownCast(_impl);
+  aProp->SetModification((char*)theName, (int)theMinute, (int)theHour,
+                         (int)theDay, (int)theMonth, (int)theYear);
 }
+
 void SALOMEDS_AttributeStudyProperties_i::GetModificationsList(SALOMEDS::StringSeq_out theNames,
                                                               SALOMEDS::LongSeq_out theMinutes,
                                                               SALOMEDS::LongSeq_out theHours,
                                                               SALOMEDS::LongSeq_out theDays,
                                                               SALOMEDS::LongSeq_out theMonths,
                                                               SALOMEDS::LongSeq_out theYears,
-                                                              CORBA::Boolean theWithCreator) {
+                                                              CORBA::Boolean theWithCreator)
+{
+  SALOMEDS::Locker lock;
   Handle(TColStd_HSequenceOfExtendedString) aNames;
   Handle(TColStd_HSequenceOfInteger) aMinutes, aHours, aDays, aMonths, aYears;
-  Handle(SALOMEDS_StudyPropertiesAttribute) aProp = Handle(SALOMEDS_StudyPropertiesAttribute)::DownCast(_myAttr);
-  aNames = aProp->GetUserNames();
-  aProp->GetModificationDates(aMinutes, aHours, aDays, aMonths, aYears);
-  int aLength = aNames->Length()-((theWithCreator)?0:1);
+  Handle(SALOMEDSImpl_AttributeStudyProperties) aProp =
+    Handle(SALOMEDSImpl_AttributeStudyProperties)::DownCast(_impl);
+  aProp->GetModifications(aNames, aMinutes, aHours, aDays, aMonths, aYears);
+  int aLength = aNames->Length();
+  int aRetLength = aLength - ((theWithCreator) ? 0 : 1);
   theNames = new SALOMEDS::StringSeq;
-//   SALOMEDS::LongSeq *maminute = new SALOMEDS::LongSeq;
-//   maminute->length(5);
   theMinutes = new SALOMEDS::LongSeq;
   theHours = new SALOMEDS::LongSeq;
   theDays = new SALOMEDS::LongSeq;
   theMonths = new SALOMEDS::LongSeq;
   theYears = new SALOMEDS::LongSeq;
-  theNames->length(aLength);
-  theMinutes->length(aLength);
-  theHours->length(aLength);
-  theDays->length(aLength);
-  theMonths->length(aLength);
-  theYears->length(aLength);
-  int a;
-  for(a = 0; a < aLength; a++) 
-    {
-      (*theNames)[a] = CORBA::string_dup(TCollection_AsciiString(aNames->Value(a + 1 + ((theWithCreator)?0:1))).ToCString());
-      (*theMinutes)[a] = aMinutes->Value(a + 1 + ((theWithCreator)?0:1));
-      (*theHours)[a] = aHours->Value(a + 1 + ((theWithCreator)?0:1));
-      (*theDays)[a] = aDays->Value(a + 1 + ((theWithCreator)?0:1));
-      (*theMonths)[a] = aMonths->Value(a + 1 + ((theWithCreator)?0:1));
-      (*theYears)[a] = aYears->Value(a + 1 + ((theWithCreator)?0:1));
-    }
-}
-
-char* SALOMEDS_AttributeStudyProperties_i::Store() {
-  Handle(TColStd_HSequenceOfExtendedString) aNames;
-  Handle(TColStd_HSequenceOfInteger) aMinutes, aHours, aDays, aMonths, aYears;
-  Handle(SALOMEDS_StudyPropertiesAttribute) aProp = Handle(SALOMEDS_StudyPropertiesAttribute)::DownCast(_myAttr);
-  aNames = aProp->GetUserNames();
-  aProp->GetModificationDates(aMinutes, aHours, aDays, aMonths, aYears);
-
-  int aLength, anIndex;
-  for(aLength = 0, anIndex = aNames->Length(); anIndex > 0; anIndex--) aLength += aNames->Value(anIndex).Length() + 1;
-
-  char* aProperty = new char[3 + aLength + 12 * aNames->Length()];
-
-  sprintf(aProperty,"%c%c", strlen(GetCreationMode())?GetCreationMode()[0]:'0', IsLocked()?'l':'u');
-
-  aLength = aNames->Length();
-  int a = 2;
-  for(anIndex = 1; anIndex  <= aLength; anIndex++) {
-    sprintf(&(aProperty[a]),"%2d%2d%2d%2d%4d%s",
-           (int)(aMinutes->Value(anIndex)),
-           (int)(aHours->Value(anIndex)),
-           (int)(aDays->Value(anIndex)),
-           (int)(aMonths->Value(anIndex)),
-           (int)(aYears->Value(anIndex)),
-           (char*)(TCollection_AsciiString(aNames->Value(anIndex)).ToCString()));
-    a = strlen(aProperty);
-    aProperty[a++] = 1;
-  }
-  aProperty[a] = 0;
-  return aProperty;
-}
-
-void SALOMEDS_AttributeStudyProperties_i::Restore(const char* value) {
-  char* aCopy = strdup(value);
-  if (aCopy[0] == 'f') SetCreationMode("from scratch");
-  else if (aCopy[0] == 'c') SetCreationMode("copy from");
-  else SetCreationMode("none");
-
-  int anIndex;
-  for(anIndex = 2; anIndex + 2 < strlen(value) ;) {
-    char str[10];
-    Standard_Integer aMinute, aHour, aDay, aMonth, aYear;
-    str[0] = aCopy[anIndex++];
-    str[1] = aCopy[anIndex++];
-    str[2] = 0;
-    aMinute = atoi(str);
-    str[0] = aCopy[anIndex++];
-    str[1] = aCopy[anIndex++];
-    aHour =  atoi(str);
-    str[0] = aCopy[anIndex++];
-    str[1] = aCopy[anIndex++];
-    aDay =  atoi(str);
-    str[0] = aCopy[anIndex++];
-    str[1] = aCopy[anIndex++];
-    aMonth =  atoi(str);
-    str[0] = aCopy[anIndex++];
-    str[1] = aCopy[anIndex++];
-    str[2] = aCopy[anIndex++];
-    str[3] = aCopy[anIndex++];
-    str[4] = 0;
-    aYear = atoi(str);
-    
-    int aNameSize;
-    for(aNameSize = 0; aCopy[anIndex+aNameSize]!=1; aNameSize++);
-    char *aName = new char[aNameSize+1];
-    strncpy(aName, &(aCopy[anIndex]), aNameSize);
-    aName[aNameSize] = 0;
-    SetModification(aName, aMinute,aHour,aDay,aMonth,aYear);
-    delete(aName);
-    anIndex += aNameSize + 1;
-  }
-  if (aCopy[1] == 'l') {
-    SetLocked(Standard_True);
+  theNames->length(aRetLength);
+  theMinutes->length(aRetLength);
+  theHours->length(aRetLength);
+  theDays->length(aRetLength);
+  theMonths->length(aRetLength);
+  theYears->length(aRetLength);
+  int a = 0, ind = ((theWithCreator) ? 1 : 2);
+  for (; ind <= aLength; a++, ind++) {
+    (*theNames)[a] = CORBA::string_dup(TCollection_AsciiString(aNames->Value(ind)).ToCString());
+    (*theMinutes)[a] = aMinutes->Value(ind);
+    (*theHours)[a] = aHours->Value(ind);
+    (*theDays)[a] = aDays->Value(ind);
+    (*theMonths)[a] = aMonths->Value(ind);
+    (*theYears)[a] = aYears->Value(ind);
   }
-  SetModified(0);
-  free(aCopy);
 }
index b7e1d00202c602e50ff1d59a4263b0971fc4381c..7a93e197da32b9a5b29c5c19b3706b323b3e11f6 100644 (file)
@@ -1,13 +1,6 @@
-//  SALOME SALOMEDS : data structure of SALOME and sources of Salome data server 
-//
-//  Copyright (C) 2003  CEA/DEN, EDF R&D
-//
-//
-//
 //  File   : SALOMEDS_AttributeStudyProperties_i.hxx
-//  Author : Yves FRICAUD
+//  Author : Sergey RUIN
 //  Module : SALOME
-//  $Header$
 
 #ifndef SALOMEDS_AttributeStudyProperties_i_HeaderFile
 #define SALOMEDS_AttributeStudyProperties_i_HeaderFile
 #include <SALOMEconfig.h>
 #include CORBA_SERVER_HEADER(SALOMEDS_Attributes)
 
-#include "SALOMEDS_StudyPropertiesAttribute.hxx"
 #include "SALOMEDS_GenericAttribute_i.hxx"
+#include "SALOMEDSImpl_AttributeStudyProperties.hxx"
 
-DEFINE_DERIVED_ATTR(AttributeStudyProperties,SALOMEDS_StudyPropertiesAttribute,false);
-
-class SALOMEDS_AttributeStudyProperties_i: 
-  public virtual POA_SALOMEDS::AttributeStudyProperties,
-  public virtual SALOMEDS_TAttributeStudyProperties_i 
-{
-  DEFINE_DERIVED_ATTR_METH_DEFAULT(AttributeStudyProperties,SALOMEDS_StudyPropertiesAttribute);
+class SALOMEDS_AttributeStudyProperties_i: public virtual POA_SALOMEDS::AttributeStudyProperties,
+                                           public virtual SALOMEDS_GenericAttribute_i {
 public:
+  
+  SALOMEDS_AttributeStudyProperties_i(const Handle(SALOMEDSImpl_AttributeStudyProperties)& theAttr, CORBA::ORB_ptr orb) 
+    :SALOMEDS_GenericAttribute_i(theAttr, orb) {}; 
+
+  ~SALOMEDS_AttributeStudyProperties_i() {};
+
   virtual void SetUserName(const char* theName);
   virtual char* GetUserName() ;
   virtual void SetCreationDate(CORBA::Long theMinute, CORBA::Long theHour, CORBA::Long theDay, CORBA::Long theMonth, CORBA::Long theYear);
@@ -52,9 +46,6 @@ public:
                                    SALOMEDS::LongSeq_out theYears,
                                    CORBA::Boolean theWithCreator);
 
-  char* Store();
-  void Restore(const char*);
-
 };
 
 
diff --git a/src/SALOMEDS/SALOMEDS_AttributeTableOfInteger.cxx b/src/SALOMEDS/SALOMEDS_AttributeTableOfInteger.cxx
new file mode 100644 (file)
index 0000000..d72bd44
--- /dev/null
@@ -0,0 +1,383 @@
+//  File   : SALOMEDS_AttributeTableOfInteger.cxx
+//  Author : Sergey RUIN
+//  Module : SALOME
+
+#include "SALOMEDS_AttributeTableOfInteger.hxx"
+
+#include <TCollection_AsciiString.hxx>
+#include <TCollection_ExtendedString.hxx>
+#include <TColStd_HSequenceOfInteger.hxx>
+#include <TColStd_HSequenceOfExtendedString.hxx>
+
+
+SALOMEDS_AttributeTableOfInteger
+::SALOMEDS_AttributeTableOfInteger(const Handle(SALOMEDSImpl_AttributeTableOfInteger)& theAttr)
+:SALOMEDS_GenericAttribute(theAttr)
+{}
+
+SALOMEDS_AttributeTableOfInteger::SALOMEDS_AttributeTableOfInteger(SALOMEDS::AttributeTableOfInteger_ptr theAttr)
+:SALOMEDS_GenericAttribute(theAttr)
+{}
+
+SALOMEDS_AttributeTableOfInteger::~SALOMEDS_AttributeTableOfInteger()
+{}
+
+
+void SALOMEDS_AttributeTableOfInteger::SetTitle(const std::string& theTitle)
+{
+  CheckLocked();
+  if(_isLocal) Handle(SALOMEDSImpl_AttributeTableOfInteger)::DownCast(_local_impl)->SetTitle((char*)theTitle.c_str());
+  else SALOMEDS::AttributeTableOfInteger::_narrow(_corba_impl)->SetTitle(theTitle.c_str());
+}
+
+std::string SALOMEDS_AttributeTableOfInteger::GetTitle()
+{
+  std::string aStr;
+  if(_isLocal) 
+    aStr = TCollection_AsciiString(Handle(SALOMEDSImpl_AttributeTableOfInteger)::DownCast(_local_impl)->GetTitle()).ToCString();
+  else aStr = SALOMEDS::AttributeTableOfInteger::_narrow(_corba_impl)->GetTitle();
+  return aStr;
+}
+
+void SALOMEDS_AttributeTableOfInteger::SetRowTitle(int theIndex, const std::string& theTitle)
+{
+  CheckLocked();
+  if(_isLocal) Handle(SALOMEDSImpl_AttributeTableOfInteger)::DownCast(_local_impl)->SetRowTitle(theIndex, 
+                                                                                               (char*)theTitle.c_str());
+  else SALOMEDS::AttributeTableOfInteger::_narrow(_corba_impl)->SetRowTitle(theIndex, theTitle.c_str());
+}
+
+void SALOMEDS_AttributeTableOfInteger::SetRowTitles(const std::vector<std::string>& theTitles)
+{
+  CheckLocked();
+  int aLength = theTitles.size(), i;
+  if(_isLocal) {
+    Handle(TColStd_HSequenceOfExtendedString) aSeq = new TColStd_HSequenceOfExtendedString;
+    for(i = 0; i < aLength; i++) aSeq->Append((char*)theTitles[i].c_str());
+    Handle(SALOMEDSImpl_AttributeTableOfInteger)::DownCast(_local_impl)->SetRowTitles(aSeq);
+  }
+  else {
+    SALOMEDS::StringSeq_var aSeq = new SALOMEDS::StringSeq();
+    aSeq->length(aLength);
+    for(i = 0; i < aLength; i++) aSeq[i] = theTitles[i].c_str();
+    SALOMEDS::AttributeTableOfInteger::_narrow(_corba_impl)->SetRowTitles(aSeq);
+  }
+  
+}
+
+std::vector<std::string> SALOMEDS_AttributeTableOfInteger::GetRowTitles()
+{
+  std::vector<std::string> aVector;
+  int aLength, i;
+  if(_isLocal) {
+    Handle(TColStd_HSequenceOfExtendedString) aSeq;
+    aSeq = Handle(SALOMEDSImpl_AttributeTableOfInteger)::DownCast(_local_impl)->GetRowTitles();
+    aLength = aSeq->Length();
+    for(i = 1; i<= aLength; i++) aVector.push_back(TCollection_AsciiString((aSeq->Value(i))).ToCString());
+  }
+  else {
+    SALOMEDS::StringSeq_var aSeq = SALOMEDS::AttributeTableOfInteger::_narrow(_corba_impl)->GetRowTitles();
+    aLength = aSeq->length();
+    for(i = 0; i<aLength; i++) aVector.push_back((char*)aSeq[i].in());
+  }
+  return aVector;
+}
+
+void SALOMEDS_AttributeTableOfInteger::SetColumnTitle(int theIndex, const std::string& theTitle)
+{
+  CheckLocked();
+  if(_isLocal) 
+    Handle(SALOMEDSImpl_AttributeTableOfInteger)::DownCast(_local_impl)->SetColumnTitle(theIndex, 
+                                                                                       (char*)theTitle.c_str());
+  else SALOMEDS::AttributeTableOfInteger::_narrow(_corba_impl)->SetColumnTitle(theIndex, theTitle.c_str());
+}
+
+void SALOMEDS_AttributeTableOfInteger::SetColumnTitles(const std::vector<std::string>& theTitles)
+{
+  CheckLocked();
+  int aLength = theTitles.size(), i;
+  if(_isLocal) {
+    Handle(TColStd_HSequenceOfExtendedString) aSeq = new TColStd_HSequenceOfExtendedString;
+    for(i = 0; i < aLength; i++) aSeq->Append((char*)theTitles[i].c_str());
+    Handle(SALOMEDSImpl_AttributeTableOfInteger)::DownCast(_local_impl)->SetColumnTitles(aSeq);
+  }
+  else {
+    SALOMEDS::StringSeq_var aSeq = new SALOMEDS::StringSeq();
+    aSeq->length(aLength);
+    for(i = 0; i < aLength; i++) aSeq[i] = theTitles[i].c_str();
+    SALOMEDS::AttributeTableOfInteger::_narrow(_corba_impl)->SetColumnTitles(aSeq);
+  }
+}
+
+std::vector<std::string> SALOMEDS_AttributeTableOfInteger::GetColumnTitles()
+{
+  std::vector<std::string> aVector;
+  int aLength, i;
+  if(_isLocal) {
+    Handle(TColStd_HSequenceOfExtendedString) aSeq;
+    aSeq = Handle(SALOMEDSImpl_AttributeTableOfInteger)::DownCast(_local_impl)->GetColumnTitles();
+    aLength = aSeq->Length();
+    for(i = 1; i<= aLength; i++) aVector.push_back(TCollection_AsciiString(aSeq->Value(i)).ToCString());
+  }
+  else {
+    SALOMEDS::StringSeq_var aSeq = SALOMEDS::AttributeTableOfInteger::_narrow(_corba_impl)->GetColumnTitles();
+    aLength = aSeq->length();
+    for(i = 0; i<aLength; i++) aVector.push_back((char*)aSeq[i].in());
+  }
+  return aVector;
+}
+
+void SALOMEDS_AttributeTableOfInteger::SetRowUnit(int theIndex, const std::string& theUnit)
+{
+  CheckLocked();
+  if(_isLocal) Handle(SALOMEDSImpl_AttributeTableOfInteger)::DownCast(_local_impl)->SetRowUnit(theIndex, 
+                                                                                              (char*)theUnit.c_str()); 
+  else SALOMEDS::AttributeTableOfInteger::_narrow(_corba_impl)->SetRowUnit(theIndex, theUnit.c_str());
+}
+
+void SALOMEDS_AttributeTableOfInteger::SetRowUnits(const std::vector<std::string>& theUnits)
+{
+  CheckLocked();
+  int aLength = theUnits.size(), i;
+  if(_isLocal) {
+    Handle(TColStd_HSequenceOfExtendedString) aSeq = new TColStd_HSequenceOfExtendedString;
+    for(i = 0; i < aLength; i++) aSeq->Append((char*)theUnits[i].c_str());
+    Handle(SALOMEDSImpl_AttributeTableOfInteger)::DownCast(_local_impl)->SetRowUnits(aSeq);
+  }
+  else {
+    SALOMEDS::StringSeq_var aSeq = new SALOMEDS::StringSeq();
+    aSeq->length(aLength);
+    for(i = 0; i < aLength; i++) aSeq[i] = (char*)theUnits[i].c_str();
+    SALOMEDS::AttributeTableOfInteger::_narrow(_corba_impl)->SetRowUnits(aSeq);
+  }
+}
+
+std::vector<std::string> SALOMEDS_AttributeTableOfInteger::GetRowUnits()
+{
+  std::vector<std::string> aVector;
+  int aLength, i;
+  if(_isLocal) {
+    Handle(TColStd_HSequenceOfExtendedString) aSeq;
+    aSeq = Handle(SALOMEDSImpl_AttributeTableOfInteger)::DownCast(_local_impl)->GetRowUnits();
+    aLength = aSeq->Length();
+    for(i = 1; i<= aLength; i++) aVector.push_back(TCollection_AsciiString(aSeq->Value(i)).ToCString());
+  }
+  else {
+    SALOMEDS::StringSeq_var aSeq = SALOMEDS::AttributeTableOfInteger::_narrow(_corba_impl)->GetRowUnits();
+    aLength = aSeq->length();
+    for(i = 0; i<aLength; i++) aVector.push_back((char*)aSeq[i].in());
+  }
+  return aVector;
+}
+
+int SALOMEDS_AttributeTableOfInteger::GetNbRows()
+{
+  int aNb;
+  if(_isLocal) aNb = Handle(SALOMEDSImpl_AttributeTableOfInteger)::DownCast(_local_impl)->GetNbRows();
+  else aNb = SALOMEDS::AttributeTableOfInteger::_narrow(_corba_impl)->GetNbRows();
+  return aNb;
+}
+
+int SALOMEDS_AttributeTableOfInteger::GetNbColumns()
+{  
+  int aNb;
+  if(_isLocal) aNb = Handle(SALOMEDSImpl_AttributeTableOfInteger)::DownCast(_local_impl)->GetNbColumns();
+  else aNb = SALOMEDS::AttributeTableOfInteger::_narrow(_corba_impl)->GetNbColumns();
+  return aNb;
+  
+}
+
+void SALOMEDS_AttributeTableOfInteger::AddRow(const std::vector<int>& theData)
+{
+  CheckLocked();
+  int aLength = theData.size(), i;
+  if(_isLocal) {
+    Handle(SALOMEDSImpl_AttributeTableOfInteger) aTable;
+    aTable = Handle(SALOMEDSImpl_AttributeTableOfInteger)::DownCast(_local_impl);
+    Handle(TColStd_HSequenceOfInteger) aRow = new TColStd_HSequenceOfInteger;
+    for (int i = 0; i < aLength; i++) aRow->Append(theData[i]);
+    try {
+      aTable->SetRowData(aTable->GetNbRows() + 1, aRow);
+    }   
+    catch(...) {
+      throw SALOMEDS::AttributeTableOfInteger::IncorrectArgumentLength();
+    }
+  }
+  else {
+    SALOMEDS::LongSeq_var aSeq = new SALOMEDS::LongSeq();
+    aSeq->length(aLength);
+    for(i = 0; i < aLength; i++) aSeq[i] = theData[i];
+    SALOMEDS::AttributeTableOfInteger::_narrow(_corba_impl)->AddRow(aSeq);
+  }
+}
+
+void SALOMEDS_AttributeTableOfInteger::SetRow(int theRow, const std::vector<int>& theData)
+{
+  CheckLocked();
+  int aLength = theData.size(), i;
+  if(_isLocal) {
+    Handle(SALOMEDSImpl_AttributeTableOfInteger) aTable;
+    aTable = Handle(SALOMEDSImpl_AttributeTableOfInteger)::DownCast(_local_impl);
+    Handle(TColStd_HSequenceOfInteger) aRow = new TColStd_HSequenceOfInteger;
+    for (int i = 0; i < aLength; i++) aRow->Append(theData[i]);
+    try {
+      aTable->SetRowData(theRow, aRow);
+    }   
+    catch(...) {
+      throw SALOMEDS::AttributeTableOfInteger::IncorrectArgumentLength();
+    }
+  }
+  else {
+    SALOMEDS::LongSeq_var aSeq = new SALOMEDS::LongSeq();
+    aSeq->length(aLength);
+    for(i = 0; i < aLength; i++) aSeq[i] = theData[i];
+    SALOMEDS::AttributeTableOfInteger::_narrow(_corba_impl)->SetRow(theRow, aSeq);
+  }
+}
+
+std::vector<int> SALOMEDS_AttributeTableOfInteger::GetRow(int theRow)
+{
+  std::vector<int> aVector;
+  int aLength, i;
+  if(_isLocal) {
+    Handle(TColStd_HSequenceOfInteger) aRow; 
+    aRow = Handle(SALOMEDSImpl_AttributeTableOfInteger)::DownCast(_local_impl)->GetRowData(theRow);
+    aLength = aRow->Length();
+    for(i = 1; i<= aLength; i++) aVector.push_back(aRow->Value(i));
+  }
+  else {
+    SALOMEDS::LongSeq_var aRow = SALOMEDS::AttributeTableOfInteger::_narrow(_corba_impl)->GetRow(theRow);
+    for(i = 0; i < aLength; i++) aVector.push_back(aRow[i]);
+  }
+
+  return aVector;
+}
+
+void SALOMEDS_AttributeTableOfInteger::AddColumn(const std::vector<int>& theData)
+{
+  CheckLocked();
+  int aLength = theData.size(), i;
+  if(_isLocal) {
+    Handle(SALOMEDSImpl_AttributeTableOfInteger) aTable;
+    aTable = Handle(SALOMEDSImpl_AttributeTableOfInteger)::DownCast(_local_impl);
+    Handle(TColStd_HSequenceOfInteger) aColumn = new TColStd_HSequenceOfInteger;
+    for (int i = 0; i < aLength; i++) aColumn->Append(theData[i]);
+    try {
+      aTable->SetColumnData(aTable->GetNbColumns() + 1, aColumn);
+    }   
+    catch(...) {
+      throw SALOMEDS::AttributeTableOfInteger::IncorrectArgumentLength();
+    }
+  }
+  else {
+    SALOMEDS::LongSeq_var aColumn = new SALOMEDS::LongSeq();
+    aColumn->length(aLength);
+    for(i = 0; i < aLength; i++) aColumn[i] = theData[i];
+    SALOMEDS::AttributeTableOfInteger::_narrow(_corba_impl)->AddColumn(aColumn);
+  }
+}
+
+void SALOMEDS_AttributeTableOfInteger::SetColumn(int theColumn, const std::vector<int>& theData)
+{
+  CheckLocked();
+  int aLength = theData.size(), i;
+  if(_isLocal) {
+    Handle(SALOMEDSImpl_AttributeTableOfInteger) aTable;
+    aTable = Handle(SALOMEDSImpl_AttributeTableOfInteger)::DownCast(_local_impl);
+    Handle(TColStd_HSequenceOfInteger) aColumn = new TColStd_HSequenceOfInteger;
+    for (int i = 0; i < aLength; i++) aColumn->Append(theData[i]);
+    try {
+      aTable->SetRowData(theColumn, aColumn);
+    }   
+    catch(...) {
+      throw SALOMEDS::AttributeTableOfInteger::IncorrectArgumentLength();
+    }
+  }
+  else {
+    SALOMEDS::LongSeq_var aColumn = new SALOMEDS::LongSeq();
+    aColumn->length(aLength);
+    for(i = 0; i < aLength; i++) aColumn[i] = theData[i];
+    SALOMEDS::AttributeTableOfInteger::_narrow(_corba_impl)->SetRow(theColumn, aColumn);
+  }
+}
+
+std::vector<int> SALOMEDS_AttributeTableOfInteger::GetColumn(int theColumn)
+{
+  std::vector<int> aVector;
+  int aLength, i;
+  if(_isLocal) {
+    Handle(TColStd_HSequenceOfInteger) aColumn; 
+    aColumn = Handle(SALOMEDSImpl_AttributeTableOfInteger)::DownCast(_local_impl)->GetColumnData(theColumn);
+    aLength = aColumn->Length();
+    for(i = 1; i<= aLength; i++) aVector.push_back(aColumn->Value(i));
+  }
+  else {
+    SALOMEDS::LongSeq_var aColumn = SALOMEDS::AttributeTableOfInteger::_narrow(_corba_impl)->GetColumn(theColumn);
+    for(i = 0; i < aLength; i++) aVector.push_back(aColumn[i]);
+  }
+  return aVector;
+}
+
+void SALOMEDS_AttributeTableOfInteger::PutValue(int theValue, int theRow, int theColumn)
+{
+  CheckLocked();
+  if(_isLocal) {
+    try {
+      Handle(SALOMEDSImpl_AttributeTableOfInteger)::DownCast(_local_impl)->PutValue(theValue, theRow, theColumn);
+    }   
+    catch(...) {
+      throw SALOMEDS::AttributeTableOfInteger::IncorrectIndex();
+    }
+  }
+  else {
+    SALOMEDS::AttributeTableOfInteger::_narrow(_corba_impl)->PutValue(theValue, theRow, theColumn);
+  }
+}
+
+bool SALOMEDS_AttributeTableOfInteger::HasValue(int theRow, int theColumn)
+{
+  bool ret;
+  if(_isLocal) ret = Handle(SALOMEDSImpl_AttributeTableOfInteger)::DownCast(_local_impl)->HasValue(theRow, theColumn);
+  else ret = SALOMEDS::AttributeTableOfInteger::_narrow(_corba_impl)->HasValue(theRow, theColumn);
+  return ret;
+}
+
+int SALOMEDS_AttributeTableOfInteger::GetValue(int theRow, int theColumn)
+{
+  int aValue;
+  if(_isLocal) {
+    try {
+      aValue = Handle(SALOMEDSImpl_AttributeTableOfInteger)::DownCast(_local_impl)->GetValue(theRow, theColumn);
+    }   
+    catch(...) {
+      throw SALOMEDS::AttributeTableOfInteger::IncorrectIndex();
+    }
+  }
+  else {
+    aValue = SALOMEDS::AttributeTableOfInteger::_narrow(_corba_impl)->GetValue(theRow, theColumn);
+  }
+  return aValue;
+}
+
+std::vector<int> SALOMEDS_AttributeTableOfInteger::GetRowSetIndices(int theRow)
+{
+  std::vector<int> aVector;
+  int aLength, i;
+  if(_isLocal) {
+    Handle(TColStd_HSequenceOfInteger) aSet; 
+    aSet = Handle(SALOMEDSImpl_AttributeTableOfInteger)::DownCast(_local_impl)->GetSetRowIndices(theRow);
+    aLength = aSet->Length();
+    for(i = 1; i<= aLength; i++) aVector.push_back(aSet->Value(i));
+  }
+  else {
+    SALOMEDS::LongSeq_var aSet = SALOMEDS::AttributeTableOfInteger::_narrow(_corba_impl)->GetRowSetIndices(theRow);
+    for(i = 0; i < aLength; i++) aVector.push_back(aSet[i]);
+  }
+  return aVector;
+}
+
+void SALOMEDS_AttributeTableOfInteger::SetNbColumns(int theNbColumns)
+{
+  if(_isLocal) Handle(SALOMEDSImpl_AttributeTableOfInteger)::DownCast(_local_impl)->SetNbColumns(theNbColumns);
+  else SALOMEDS::AttributeTableOfInteger::_narrow(_corba_impl)->SetNbColumns(theNbColumns);
+}
diff --git a/src/SALOMEDS/SALOMEDS_AttributeTableOfInteger.hxx b/src/SALOMEDS/SALOMEDS_AttributeTableOfInteger.hxx
new file mode 100644 (file)
index 0000000..ad19157
--- /dev/null
@@ -0,0 +1,56 @@
+//  File   : SALOMEDS_AttributeTableOfInteger.hxx
+//  Author : Sergey RUIN
+//  Module : SALOME
+
+#ifndef SALOMEDS_AttributeTableOfInteger_HeaderFile
+#define SALOMEDS_AttributeTableOfInteger_HeaderFile
+
+#include "SALOMEDSClient_AttributeTableOfInteger.hxx"
+#include "SALOMEDS_GenericAttribute.hxx"
+#include "SALOMEDSImpl_AttributeTableOfInteger.hxx"
+
+// IDL headers
+#include <SALOMEconfig.h>
+#include CORBA_SERVER_HEADER(SALOMEDS)
+#include CORBA_SERVER_HEADER(SALOMEDS_Attributes)
+
+#include <vector>
+
+class SALOMEDS_AttributeTableOfInteger: public SALOMEDS_GenericAttribute, public SALOMEDSClient_AttributeTableOfInteger
+{
+public:  
+  SALOMEDS_AttributeTableOfInteger(const Handle(SALOMEDSImpl_AttributeTableOfInteger)& theAttr);
+  SALOMEDS_AttributeTableOfInteger(SALOMEDS::AttributeTableOfInteger_ptr theAttr);
+  ~SALOMEDS_AttributeTableOfInteger();
+
+  virtual void SetTitle(const std::string& theTitle);
+  virtual std::string GetTitle();
+  virtual void SetRowTitle(int theIndex, const std::string& theTitle);
+  virtual void SetRowTitles(const std::vector<std::string>& theTitles);
+  virtual std::vector<std::string> GetRowTitles();
+  virtual void SetColumnTitle(int theIndex, const std::string& theTitle);
+  virtual void SetColumnTitles(const std::vector<std::string>& theTitles);
+  virtual std::vector<std::string> GetColumnTitles();
+
+  virtual void SetRowUnit(int theIndex, const std::string& theUnit);
+  virtual void SetRowUnits(const std::vector<std::string>& theUnits);
+  virtual std::vector<std::string> GetRowUnits();
+
+  virtual int GetNbRows();
+  virtual int GetNbColumns();
+  virtual void AddRow(const std::vector<int>& theData);
+  virtual void SetRow(int theRow, const std::vector<int>& theData);
+  virtual std::vector<int> GetRow(int theRow);
+  virtual void AddColumn(const std::vector<int>& theData);
+  virtual void SetColumn(int theColumn, const std::vector<int>& theData);
+  virtual std::vector<int> GetColumn(int theColumn);
+  virtual void PutValue(int theValue, int theRow, int theColumn);
+  virtual bool HasValue(int theRow, int theColumn);
+  virtual int GetValue(int theRow, int theColumn);
+
+  virtual std::vector<int> GetRowSetIndices(int theRow);
+  virtual void SetNbColumns(int theNbColumns);    
+
+};
+
+#endif
index 380741f4925947d18586216fd2c60a768b273160..0c97e62467f8349f2fe9d4eb9e57e833a36ce2ef 100644 (file)
@@ -1,20 +1,14 @@
-//  SALOME SALOMEDS : data structure of SALOME and sources of Salome data server 
-//
-//  Copyright (C) 2003  CEA/DEN, EDF R&D
-//
-//
-//
 //  File   : SALOMEDS_AttributeTableOfInteger_i.cxx
-//  Author : Michael Ponikarov
+//  Author : Sergey RUIN
 //  Module : SALOME
-//  $Header$
+
+
+#include "SALOMEDS_AttributeTableOfInteger_i.hxx"
+#include "SALOMEDS.hxx"
 
 #include <TColStd_HSequenceOfInteger.hxx>
-#include <TCollection_AsciiString.hxx>
 #include <Standard_Failure.hxx>
 #include <Standard_ErrorHandler.hxx>
-
-#include "SALOMEDS_AttributeTableOfInteger_i.hxx"
 #include "Utils_ExceptHandlers.hxx"
 
 #include <stdexcept>
 
 using namespace std;
 
-#define SEPARATOR '\1'
-
 UNEXPECT_CATCH(ATI_IncorrectIndex, SALOMEDS::AttributeTableOfInteger::IncorrectIndex);
 UNEXPECT_CATCH(ATI_IncorrectArgumentLength, SALOMEDS::AttributeTableOfInteger::IncorrectArgumentLength);
 
-static TCollection_ExtendedString getUnit(TCollection_ExtendedString theString)
+void SALOMEDS_AttributeTableOfInteger_i::SetTitle(const char* theTitle) 
 {
-  TCollection_ExtendedString aString(theString);
-  int aPos = aString.Search(SEPARATOR);
-  if(aPos <= 0 || aPos == aString.Length() ) return TCollection_ExtendedString();
-  return aString.Split(aPos);
-}
-
-static TCollection_ExtendedString getTitle(TCollection_ExtendedString theString)
-{
-  TCollection_ExtendedString aString(theString);
-  int aPos = aString.Search(SEPARATOR);
-  if(aPos < 1) return aString;
-  if(aPos == 1) return TCollection_ExtendedString();
-  aString.Split(aPos-1);
-  return aString;
-}
-
-void SALOMEDS_AttributeTableOfInteger_i::SetTitle(const char* theTitle) {
+  SALOMEDS::Locker lock;
   CheckLocked();
-  Handle(SALOMEDS_TableOfIntegerAttribute) aTable = Handle(SALOMEDS_TableOfIntegerAttribute)::DownCast(_myAttr);
   CORBA::String_var aStr = CORBA::string_dup(theTitle);
-  aTable->SetTitle(TCollection_ExtendedString(aStr));
+  Handle(SALOMEDSImpl_AttributeTableOfInteger)::DownCast(_impl)->SetTitle(TCollection_ExtendedString(aStr));
 }
 
-char* SALOMEDS_AttributeTableOfInteger_i::GetTitle() {
-  Handle(SALOMEDS_TableOfIntegerAttribute) aTable = Handle(SALOMEDS_TableOfIntegerAttribute)::DownCast(_myAttr);
+char* SALOMEDS_AttributeTableOfInteger_i::GetTitle() 
+{
+  SALOMEDS::Locker lock;
+  Handle(SALOMEDSImpl_AttributeTableOfInteger) aTable = Handle(SALOMEDSImpl_AttributeTableOfInteger)::DownCast(_impl);
   CORBA::String_var c_s = CORBA::string_dup(TCollection_AsciiString(aTable->GetTitle()).ToCString());
   return c_s._retn();
 }
@@ -62,48 +39,45 @@ char* SALOMEDS_AttributeTableOfInteger_i::GetTitle() {
 void SALOMEDS_AttributeTableOfInteger_i::SetRowTitle(CORBA::Long theIndex, const char* theTitle)
      throw (SALOMEDS::AttributeTableOfInteger::IncorrectIndex)
 {
+  SALOMEDS::Locker lock;
   Unexpect aCatch (ATI_IncorrectIndex);
   CheckLocked();
-  Handle(SALOMEDS_TableOfIntegerAttribute) aTable = Handle(SALOMEDS_TableOfIntegerAttribute)::DownCast(_myAttr);
+  Handle(SALOMEDSImpl_AttributeTableOfInteger) aTable = Handle(SALOMEDSImpl_AttributeTableOfInteger)::DownCast(_impl);
   if (theIndex <= 0 || theIndex > aTable->GetNbRows()) throw SALOMEDS::AttributeTableOfInteger::IncorrectIndex();
-  CORBA::String_var aStr = CORBA::string_dup(theTitle);
-  TCollection_ExtendedString aTitle(aStr);
-  TCollection_ExtendedString aUnit = getUnit(aTable->GetRowTitle(theIndex));
-  if(aUnit.Length() > 0) {
-    aTitle += SEPARATOR;
-    aTitle += aUnit;
-  }
-
-  aTable->SetRowTitle(theIndex, aTitle);
+  aTable->SetRowTitle(theIndex, TCollection_ExtendedString((char*)theTitle));
 }
 
 void SALOMEDS_AttributeTableOfInteger_i::SetRowTitles(const SALOMEDS::StringSeq& theTitles)
      throw (SALOMEDS::AttributeTableOfInteger::IncorrectArgumentLength)
 {
+  SALOMEDS::Locker lock;
   Unexpect aCatch (ATI_IncorrectArgumentLength);
   CheckLocked();
-  Handle(SALOMEDS_TableOfIntegerAttribute) aTable = Handle(SALOMEDS_TableOfIntegerAttribute)::DownCast(_myAttr);
+  Handle(SALOMEDSImpl_AttributeTableOfInteger) aTable = Handle(SALOMEDSImpl_AttributeTableOfInteger)::DownCast(_impl);
   if (theTitles.length() != aTable->GetNbRows()) throw SALOMEDS::AttributeTableOfInteger::IncorrectArgumentLength();
   for (int i = 0; i < theTitles.length(); i++) {
     SetRowTitle(i + 1, theTitles[i]);
   }
 }
 
-SALOMEDS::StringSeq* SALOMEDS_AttributeTableOfInteger_i::GetRowTitles() {
-  Handle(SALOMEDS_TableOfIntegerAttribute) aTable = Handle(SALOMEDS_TableOfIntegerAttribute)::DownCast(_myAttr);
+SALOMEDS::StringSeq* SALOMEDS_AttributeTableOfInteger_i::GetRowTitles() 
+{
+  SALOMEDS::Locker lock;
+  Handle(SALOMEDSImpl_AttributeTableOfInteger) aTable = Handle(SALOMEDSImpl_AttributeTableOfInteger)::DownCast(_impl);
   SALOMEDS::StringSeq_var aTitles = new SALOMEDS::StringSeq;
   aTitles->length(aTable->GetNbRows());
   for(int i = 0; i < aTitles->length(); i++)
-    aTitles[i] = CORBA::string_dup(TCollection_AsciiString(getTitle(aTable->GetRowTitle(i + 1))).ToCString());
+    aTitles[i] = CORBA::string_dup(TCollection_AsciiString(aTable->GetRowTitle(i + 1)).ToCString());
   return aTitles._retn();
 }
 
 void SALOMEDS_AttributeTableOfInteger_i::SetColumnTitle(CORBA::Long theIndex, const char* theTitle)
      throw (SALOMEDS::AttributeTableOfInteger::IncorrectIndex)
 {
+  SALOMEDS::Locker lock;
   Unexpect aCatch (ATI_IncorrectIndex);
   CheckLocked();
-  Handle(SALOMEDS_TableOfIntegerAttribute) aTable = Handle(SALOMEDS_TableOfIntegerAttribute)::DownCast(_myAttr);
+  Handle(SALOMEDSImpl_AttributeTableOfInteger) aTable = Handle(SALOMEDSImpl_AttributeTableOfInteger)::DownCast(_impl);
   if (theIndex <= 0 || theIndex > aTable->GetNbColumns()) throw SALOMEDS::AttributeTableOfInteger::IncorrectIndex();
   CORBA::String_var aStr = CORBA::string_dup(theTitle);
   aTable->SetColumnTitle(theIndex, TCollection_ExtendedString(aStr));
@@ -112,17 +86,20 @@ void SALOMEDS_AttributeTableOfInteger_i::SetColumnTitle(CORBA::Long theIndex, co
 void SALOMEDS_AttributeTableOfInteger_i::SetColumnTitles(const SALOMEDS::StringSeq& theTitles)
      throw (SALOMEDS::AttributeTableOfInteger::IncorrectArgumentLength)
 {
+  SALOMEDS::Locker lock;
   Unexpect aCatch(ATI_IncorrectArgumentLength);
   CheckLocked();
-  Handle(SALOMEDS_TableOfIntegerAttribute) aTable = Handle(SALOMEDS_TableOfIntegerAttribute)::DownCast(_myAttr);
+  Handle(SALOMEDSImpl_AttributeTableOfInteger) aTable = Handle(SALOMEDSImpl_AttributeTableOfInteger)::DownCast(_impl);
   if (theTitles.length() != aTable->GetNbColumns()) throw SALOMEDS::AttributeTableOfInteger::IncorrectArgumentLength();
   for (int i = 0; i < theTitles.length(); i++) {
-    SetColumnTitle(i + 1, theTitles[i]);
+    aTable->SetColumnTitle(i + 1, (char*)theTitles[i].in());
   }
 }
 
-SALOMEDS::StringSeq* SALOMEDS_AttributeTableOfInteger_i::GetColumnTitles() {
-  Handle(SALOMEDS_TableOfIntegerAttribute) aTable = Handle(SALOMEDS_TableOfIntegerAttribute)::DownCast(_myAttr);
+SALOMEDS::StringSeq* SALOMEDS_AttributeTableOfInteger_i::GetColumnTitles() 
+{
+  SALOMEDS::Locker lock;
+  Handle(SALOMEDSImpl_AttributeTableOfInteger) aTable = Handle(SALOMEDSImpl_AttributeTableOfInteger)::DownCast(_impl);
   SALOMEDS::StringSeq_var aTitles = new SALOMEDS::StringSeq;
   aTitles->length(aTable->GetNbColumns());
   for(int i = 0; i < aTitles->length(); i++)
@@ -134,52 +111,57 @@ SALOMEDS::StringSeq* SALOMEDS_AttributeTableOfInteger_i::GetColumnTitles() {
 void SALOMEDS_AttributeTableOfInteger_i::SetRowUnit(CORBA::Long theIndex, const char* theUnit)
      throw (SALOMEDS::AttributeTableOfInteger::IncorrectIndex)
 {
- Unexpect aCatch (ATI_IncorrectIndex);
+  SALOMEDS::Locker lock;
+  Unexpect aCatch (ATI_IncorrectIndex);
   CheckLocked();
-  Handle(SALOMEDS_TableOfIntegerAttribute) aTable = Handle(SALOMEDS_TableOfIntegerAttribute)::DownCast(_myAttr);
+  Handle(SALOMEDSImpl_AttributeTableOfInteger) aTable = Handle(SALOMEDSImpl_AttributeTableOfInteger)::DownCast(_impl);
   if (theIndex <= 0 || theIndex > aTable->GetNbRows()) throw SALOMEDS::AttributeTableOfInteger::IncorrectIndex();
-  CORBA::String_var aStr = CORBA::string_dup(theUnit);
-  TCollection_ExtendedString aTitle = getTitle(aTable->GetRowTitle(theIndex));
-  TCollection_ExtendedString aUnit(aStr);
-  aTitle += SEPARATOR;
-  aTitle += aUnit;
-  aTable->SetRowTitle(theIndex, aTitle);
+  aTable->SetRowUnit(theIndex, TCollection_ExtendedString((char*)theUnit));
 }
 
 void SALOMEDS_AttributeTableOfInteger_i::SetRowUnits(const SALOMEDS::StringSeq& theUnits)
      throw (SALOMEDS::AttributeTableOfInteger::IncorrectArgumentLength)
 {
+  SALOMEDS::Locker lock;
   Unexpect aCatch (ATI_IncorrectArgumentLength);
   CheckLocked();
-  Handle(SALOMEDS_TableOfIntegerAttribute) aTable = Handle(SALOMEDS_TableOfIntegerAttribute)::DownCast(_myAttr);
+  Handle(SALOMEDSImpl_AttributeTableOfInteger) aTable = Handle(SALOMEDSImpl_AttributeTableOfInteger)::DownCast(_impl);
   if (theUnits.length() != aTable->GetNbRows()) throw SALOMEDS::AttributeTableOfInteger::IncorrectArgumentLength();
   for (int i = 0; i < theUnits.length(); i++) {
-    SetRowUnit(i + 1, theUnits[i]);
+    aTable->SetRowUnit(i + 1, (char*)theUnits[i].in());
   }
 }
 
-SALOMEDS::StringSeq* SALOMEDS_AttributeTableOfInteger_i::GetRowUnits() {
-  Handle(SALOMEDS_TableOfIntegerAttribute) aTable = Handle(SALOMEDS_TableOfIntegerAttribute)::DownCast(_myAttr);
+SALOMEDS::StringSeq* SALOMEDS_AttributeTableOfInteger_i::GetRowUnits() 
+{
+  SALOMEDS::Locker lock;
+  Handle(SALOMEDSImpl_AttributeTableOfInteger) aTable = Handle(SALOMEDSImpl_AttributeTableOfInteger)::DownCast(_impl);
   SALOMEDS::StringSeq_var aUnits = new SALOMEDS::StringSeq;
   aUnits->length(aTable->GetNbRows());
   for(int i = 0; i < aUnits->length(); i++)
-    aUnits[i] = CORBA::string_dup(TCollection_AsciiString(getUnit(aTable->GetRowTitle(i + 1))).ToCString());
+    aUnits[i] = CORBA::string_dup(TCollection_AsciiString(aTable->GetRowUnit(i + 1)).ToCString());
   return aUnits._retn();
 }
 
-CORBA::Long SALOMEDS_AttributeTableOfInteger_i::GetNbRows() {
-  return Handle(SALOMEDS_TableOfIntegerAttribute)::DownCast(_myAttr)->GetNbRows();
+CORBA::Long SALOMEDS_AttributeTableOfInteger_i::GetNbRows() 
+{
+  SALOMEDS::Locker lock;
+  return Handle(SALOMEDSImpl_AttributeTableOfInteger)::DownCast(_impl)->GetNbRows();
 }
-CORBA::Long SALOMEDS_AttributeTableOfInteger_i::GetNbColumns() {
-  return Handle(SALOMEDS_TableOfIntegerAttribute)::DownCast(_myAttr)->GetNbColumns();
+
+CORBA::Long SALOMEDS_AttributeTableOfInteger_i::GetNbColumns() 
+{
+  SALOMEDS::Locker lock;
+  return Handle(SALOMEDSImpl_AttributeTableOfInteger)::DownCast(_impl)->GetNbColumns();
 }
 
 void SALOMEDS_AttributeTableOfInteger_i::AddRow(const SALOMEDS::LongSeq& theData)
      throw (SALOMEDS::AttributeTableOfInteger::IncorrectArgumentLength)
 {
+  SALOMEDS::Locker lock;
   Unexpect aCatch(ATI_IncorrectArgumentLength);
   CheckLocked();
-  Handle(SALOMEDS_TableOfIntegerAttribute) aTable = Handle(SALOMEDS_TableOfIntegerAttribute)::DownCast(_myAttr);
+  Handle(SALOMEDSImpl_AttributeTableOfInteger) aTable = Handle(SALOMEDSImpl_AttributeTableOfInteger)::DownCast(_impl);
   
   Handle(TColStd_HSequenceOfInteger) aRow = new TColStd_HSequenceOfInteger;
   for (int i = 0; i < theData.length(); i++) aRow->Append(theData[i]);
@@ -194,9 +176,10 @@ void SALOMEDS_AttributeTableOfInteger_i::AddRow(const SALOMEDS::LongSeq& theData
 void SALOMEDS_AttributeTableOfInteger_i::SetRow(CORBA::Long theRow, const SALOMEDS::LongSeq& theData)
      throw (SALOMEDS::AttributeTableOfInteger::IncorrectArgumentLength, SALOMEDS::AttributeTableOfInteger::IncorrectIndex)
 {
+  SALOMEDS::Locker lock;
   Unexpect aCatch(ATI_IncorrectArgumentLength);
   CheckLocked();
-  Handle(SALOMEDS_TableOfIntegerAttribute) aTable = Handle(SALOMEDS_TableOfIntegerAttribute)::DownCast(_myAttr);
+  Handle(SALOMEDSImpl_AttributeTableOfInteger) aTable = Handle(SALOMEDSImpl_AttributeTableOfInteger)::DownCast(_impl);
   
   Handle(TColStd_HSequenceOfInteger) aRow = new TColStd_HSequenceOfInteger;
   for (int i = 0; i < theData.length(); i++) aRow->Append(theData[i]);
@@ -211,8 +194,9 @@ void SALOMEDS_AttributeTableOfInteger_i::SetRow(CORBA::Long theRow, const SALOME
 SALOMEDS::LongSeq* SALOMEDS_AttributeTableOfInteger_i::GetRow(CORBA::Long theRow)
      throw (SALOMEDS::AttributeTableOfInteger::IncorrectIndex)
 {
+  SALOMEDS::Locker lock;
   Unexpect aCatch(ATI_IncorrectIndex);
-  Handle(SALOMEDS_TableOfIntegerAttribute) aTable = Handle(SALOMEDS_TableOfIntegerAttribute)::DownCast(_myAttr);
+  Handle(SALOMEDSImpl_AttributeTableOfInteger) aTable = Handle(SALOMEDSImpl_AttributeTableOfInteger)::DownCast(_impl);
   if (theRow <= 0 || theRow > aTable->GetNbRows()) throw SALOMEDS::AttributeTableOfInteger::IncorrectIndex();
 
   SALOMEDS::LongSeq_var CorbaSeq = new SALOMEDS::LongSeq;
@@ -227,9 +211,10 @@ SALOMEDS::LongSeq* SALOMEDS_AttributeTableOfInteger_i::GetRow(CORBA::Long theRow
 void SALOMEDS_AttributeTableOfInteger_i::AddColumn(const SALOMEDS::LongSeq& theData)
      throw (SALOMEDS::AttributeTableOfInteger::IncorrectArgumentLength)
 {
+  SALOMEDS::Locker lock;
   Unexpect aCatch(ATI_IncorrectArgumentLength);
   CheckLocked();
-  Handle(SALOMEDS_TableOfIntegerAttribute) aTable = Handle(SALOMEDS_TableOfIntegerAttribute)::DownCast(_myAttr);
+  Handle(SALOMEDSImpl_AttributeTableOfInteger) aTable = Handle(SALOMEDSImpl_AttributeTableOfInteger)::DownCast(_impl);
   
   Handle(TColStd_HSequenceOfInteger) aColumn = new TColStd_HSequenceOfInteger;
   for (int i = 0; i < theData.length(); i++) aColumn->Append(theData[i]);
@@ -244,9 +229,10 @@ void SALOMEDS_AttributeTableOfInteger_i::AddColumn(const SALOMEDS::LongSeq& theD
 void SALOMEDS_AttributeTableOfInteger_i::SetColumn(CORBA::Long theColumn, const SALOMEDS::LongSeq& theData)
      throw (SALOMEDS::AttributeTableOfInteger::IncorrectArgumentLength, SALOMEDS::AttributeTableOfInteger::IncorrectIndex)
 {
+  SALOMEDS::Locker lock;
   Unexpect aCatch(ATI_IncorrectArgumentLength);
   CheckLocked();
-  Handle(SALOMEDS_TableOfIntegerAttribute) aTable = Handle(SALOMEDS_TableOfIntegerAttribute)::DownCast(_myAttr);
+  Handle(SALOMEDSImpl_AttributeTableOfInteger) aTable = Handle(SALOMEDSImpl_AttributeTableOfInteger)::DownCast(_impl);
   
   Handle(TColStd_HSequenceOfInteger) aColumn = new TColStd_HSequenceOfInteger;
   for (int i = 0; i < theData.length(); i++) aColumn->Append(theData[i]);
@@ -261,8 +247,9 @@ void SALOMEDS_AttributeTableOfInteger_i::SetColumn(CORBA::Long theColumn, const
 SALOMEDS::LongSeq* SALOMEDS_AttributeTableOfInteger_i::GetColumn(CORBA::Long theColumn)
      throw (SALOMEDS::AttributeTableOfInteger::IncorrectIndex)
 {
+  SALOMEDS::Locker lock;
   Unexpect aCatch(ATI_IncorrectIndex);
-  Handle(SALOMEDS_TableOfIntegerAttribute) aTable = Handle(SALOMEDS_TableOfIntegerAttribute)::DownCast(_myAttr);
+  Handle(SALOMEDSImpl_AttributeTableOfInteger) aTable = Handle(SALOMEDSImpl_AttributeTableOfInteger)::DownCast(_impl);
   if (theColumn <= 0 || theColumn > aTable->GetNbColumns()) throw SALOMEDS::AttributeTableOfInteger::IncorrectIndex();
 
   SALOMEDS::LongSeq_var CorbaSeq = new SALOMEDS::LongSeq;
@@ -277,9 +264,10 @@ SALOMEDS::LongSeq* SALOMEDS_AttributeTableOfInteger_i::GetColumn(CORBA::Long the
 void SALOMEDS_AttributeTableOfInteger_i::PutValue(CORBA::Long theValue, CORBA::Long theRow, CORBA::Long theColumn)
      throw (SALOMEDS::AttributeTableOfInteger::IncorrectIndex)
 {
+  SALOMEDS::Locker lock;
   Unexpect aCatch(ATI_IncorrectIndex);
   CheckLocked();
-  Handle(SALOMEDS_TableOfIntegerAttribute) aTable = Handle(SALOMEDS_TableOfIntegerAttribute)::DownCast(_myAttr);
+  Handle(SALOMEDSImpl_AttributeTableOfInteger) aTable = Handle(SALOMEDSImpl_AttributeTableOfInteger)::DownCast(_impl);
 
   try {
     aTable->PutValue(theValue, theRow, theColumn);
@@ -289,15 +277,18 @@ void SALOMEDS_AttributeTableOfInteger_i::PutValue(CORBA::Long theValue, CORBA::L
   }
 }
 
-CORBA::Boolean SALOMEDS_AttributeTableOfInteger_i::HasValue(CORBA::Long theRow, CORBA::Long theColumn) {
-  return Handle(SALOMEDS_TableOfIntegerAttribute)::DownCast(_myAttr)->HasValue(theRow, theColumn);
+CORBA::Boolean SALOMEDS_AttributeTableOfInteger_i::HasValue(CORBA::Long theRow, CORBA::Long theColumn) 
+{
+  SALOMEDS::Locker lock;
+  return Handle(SALOMEDSImpl_AttributeTableOfInteger)::DownCast(_impl)->HasValue(theRow, theColumn);
 }
 
 CORBA::Long SALOMEDS_AttributeTableOfInteger_i::GetValue(CORBA::Long theRow, CORBA::Long theColumn)
      throw (SALOMEDS::AttributeTableOfInteger::IncorrectIndex)
 {
+  SALOMEDS::Locker lock;
   Unexpect aCatch(ATI_IncorrectIndex);
-  Handle(SALOMEDS_TableOfIntegerAttribute) aTable = Handle(SALOMEDS_TableOfIntegerAttribute)::DownCast(_myAttr);
+  Handle(SALOMEDSImpl_AttributeTableOfInteger) aTable = Handle(SALOMEDSImpl_AttributeTableOfInteger)::DownCast(_impl);
   if (theRow > aTable->GetNbRows()) throw SALOMEDS::AttributeTableOfInteger::IncorrectIndex();
 
   CORBA::Long aValue;
@@ -312,7 +303,8 @@ CORBA::Long SALOMEDS_AttributeTableOfInteger_i::GetValue(CORBA::Long theRow, COR
 
 SALOMEDS::LongSeq* SALOMEDS_AttributeTableOfInteger_i::GetRowSetIndices(CORBA::Long theRow) 
 {
-  Handle(SALOMEDS_TableOfIntegerAttribute) aTable = Handle(SALOMEDS_TableOfIntegerAttribute)::DownCast(_myAttr);
+  SALOMEDS::Locker lock;
+  Handle(SALOMEDSImpl_AttributeTableOfInteger) aTable = Handle(SALOMEDSImpl_AttributeTableOfInteger)::DownCast(_impl);
 
   if(theRow <= 0 || theRow > aTable->GetNbRows()) throw SALOMEDS::AttributeTableOfInteger::IncorrectIndex();
 
@@ -328,13 +320,15 @@ SALOMEDS::LongSeq* SALOMEDS_AttributeTableOfInteger_i::GetRowSetIndices(CORBA::L
 
 void SALOMEDS_AttributeTableOfInteger_i::SetNbColumns(CORBA::Long theNbColumns)
 {
-  Handle(SALOMEDS_TableOfIntegerAttribute) aTable = Handle(SALOMEDS_TableOfIntegerAttribute)::DownCast(_myAttr);
+  SALOMEDS::Locker lock;
+  Handle(SALOMEDSImpl_AttributeTableOfInteger) aTable = Handle(SALOMEDSImpl_AttributeTableOfInteger)::DownCast(_impl);
   aTable->SetNbColumns(theNbColumns);
 }
 
 bool SALOMEDS_AttributeTableOfInteger_i::ReadFromFile(const SALOMEDS::TMPFile& theStream) 
 {
-  Handle(SALOMEDS_TableOfIntegerAttribute) aTable = Handle(SALOMEDS_TableOfIntegerAttribute)::DownCast(_myAttr);
+  SALOMEDS::Locker lock;
+  Handle(SALOMEDSImpl_AttributeTableOfInteger) aTable = Handle(SALOMEDSImpl_AttributeTableOfInteger)::DownCast(_impl);
 
   istrstream aStream((char*)&theStream[0], theStream.length());
   return aTable->RestoreFromString(aStream);
@@ -342,7 +336,8 @@ bool SALOMEDS_AttributeTableOfInteger_i::ReadFromFile(const SALOMEDS::TMPFile& t
 
 SALOMEDS::TMPFile*  SALOMEDS_AttributeTableOfInteger_i::SaveToFile()
 {
-  Handle(SALOMEDS_TableOfIntegerAttribute) aTable = Handle(SALOMEDS_TableOfIntegerAttribute)::DownCast(_myAttr);
+  SALOMEDS::Locker lock;
+  Handle(SALOMEDSImpl_AttributeTableOfInteger) aTable = Handle(SALOMEDSImpl_AttributeTableOfInteger)::DownCast(_impl);
 
   ostrstream ostr;
   string aString;
@@ -360,20 +355,4 @@ SALOMEDS::TMPFile*  SALOMEDS_AttributeTableOfInteger_i::SaveToFile()
   return aStreamFile._retn();
 }
 
-char* SALOMEDS_AttributeTableOfInteger_i::Store() {
-  Handle(SALOMEDS_TableOfIntegerAttribute) aTable = Handle(SALOMEDS_TableOfIntegerAttribute)::DownCast(_myAttr);
 
-  ostrstream ostr;
-  aTable->ConvertToString(ostr);
-  string aString = ostr.rdbuf()->str();
-
-  CORBA::String_var aBuffer = CORBA::string_dup(aString.c_str());
-  return aBuffer._retn();
-}
-
-void SALOMEDS_AttributeTableOfInteger_i::Restore(const char* value) {
-  Handle(SALOMEDS_TableOfIntegerAttribute) aTable = Handle(SALOMEDS_TableOfIntegerAttribute)::DownCast(_myAttr);
-
-  istrstream aStream(value, strlen(value));
-  aTable->RestoreFromString(aStream);
-}
index 03f996572cb77d113e25bcaaf9e43fb4c8174a98..a2999eb2618ccd5177240a02be7866be7bbcbdda 100644 (file)
@@ -1,32 +1,28 @@
-//  SALOME SALOMEDS : data structure of SALOME and sources of Salome data server 
-//
-//  Copyright (C) 2003  CEA/DEN, EDF R&D
-//
-//
-//
 //  File   : SALOMEDS_AttributeTableOfInteger_i.hxx
-//  Author : Michael Ponikarov
+//  Author : Sergey RUIN
 //  Module : SALOME
-//  $Header$
 
 #ifndef SALOMEDS_AttributeTableOfInteger_i_HeaderFile
 #define SALOMEDS_AttributeTableOfInteger_i_HeaderFile
 
-#include "SALOMEDS_TableOfIntegerAttribute.hxx"
-#include "SALOMEDS_GenericAttribute_i.hxx"
-
 // IDL headers
 #include <SALOMEconfig.h>
 #include CORBA_SERVER_HEADER(SALOMEDS_Attributes)
 
-DEFINE_DERIVED_ATTR(AttributeTableOfInteger,SALOMEDS_TableOfIntegerAttribute,true);
+#include "SALOMEDS_GenericAttribute_i.hxx"
+#include "SALOMEDSImpl_AttributeTableOfInteger.hxx"
 
-class SALOMEDS_AttributeTableOfInteger_i: 
-  public virtual POA_SALOMEDS::AttributeTableOfInteger,
-  public virtual SALOMEDS_TAttributeTableOfInteger_i 
+class SALOMEDS_AttributeTableOfInteger_i: public virtual POA_SALOMEDS::AttributeTableOfInteger,
+                                          public virtual SALOMEDS_GenericAttribute_i 
 {
-  DEFINE_DERIVED_ATTR_METH_DEFAULT(AttributeTableOfInteger,SALOMEDS_TableOfIntegerAttribute);
+    
 public:
+  
+  SALOMEDS_AttributeTableOfInteger_i(const Handle(SALOMEDSImpl_AttributeTableOfInteger)& theAttr, CORBA::ORB_ptr orb) 
+    :SALOMEDS_GenericAttribute_i(theAttr, orb) {}; 
+
+  ~SALOMEDS_AttributeTableOfInteger_i() {};
+
   virtual void SetTitle(const char* theTitle);
   virtual char* GetTitle();
   virtual void SetRowTitle(CORBA::Long theIndex, const char* theTitle)
@@ -71,10 +67,6 @@ public:
 
   virtual bool ReadFromFile(const SALOMEDS::TMPFile& theStream);
   virtual SALOMEDS::TMPFile* SaveToFile();
-
-  virtual char* Store();
-  virtual void Restore(const char*);
-
 };
 
 #endif
diff --git a/src/SALOMEDS/SALOMEDS_AttributeTableOfReal.cxx b/src/SALOMEDS/SALOMEDS_AttributeTableOfReal.cxx
new file mode 100644 (file)
index 0000000..89c5935
--- /dev/null
@@ -0,0 +1,383 @@
+//  File   : SALOMEDS_AttributeTableOfReal.cxx
+//  Author : Sergey RUIN
+//  Module : SALOME
+
+#include "SALOMEDS_AttributeTableOfReal.hxx"
+
+#include <TCollection_AsciiString.hxx>
+#include <TCollection_ExtendedString.hxx>
+#include <TColStd_HSequenceOfInteger.hxx>
+#include <TColStd_HSequenceOfReal.hxx>
+#include <TColStd_HSequenceOfExtendedString.hxx>
+
+
+SALOMEDS_AttributeTableOfReal
+::SALOMEDS_AttributeTableOfReal(const Handle(SALOMEDSImpl_AttributeTableOfReal)& theAttr)
+:SALOMEDS_GenericAttribute(theAttr)
+{}
+
+SALOMEDS_AttributeTableOfReal::SALOMEDS_AttributeTableOfReal(SALOMEDS::AttributeTableOfReal_ptr theAttr)
+:SALOMEDS_GenericAttribute(theAttr)
+{}
+
+SALOMEDS_AttributeTableOfReal::~SALOMEDS_AttributeTableOfReal()
+{}
+
+
+void SALOMEDS_AttributeTableOfReal::SetTitle(const std::string& theTitle)
+{
+  CheckLocked();
+  if(_isLocal) Handle(SALOMEDSImpl_AttributeTableOfReal)::DownCast(_local_impl)->SetTitle((char*)theTitle.c_str());
+  else SALOMEDS::AttributeTableOfReal::_narrow(_corba_impl)->SetTitle(theTitle.c_str());
+}
+
+std::string SALOMEDS_AttributeTableOfReal::GetTitle()
+{
+  std::string aStr;
+  if(_isLocal) 
+    aStr = TCollection_AsciiString(Handle(SALOMEDSImpl_AttributeTableOfReal)::DownCast(_local_impl)->GetTitle()).ToCString();
+  else aStr = SALOMEDS::AttributeTableOfReal::_narrow(_corba_impl)->GetTitle();
+  return aStr;
+}
+
+void SALOMEDS_AttributeTableOfReal::SetRowTitle(int theIndex, const std::string& theTitle)
+{
+  CheckLocked();
+  if(_isLocal) Handle(SALOMEDSImpl_AttributeTableOfReal)::DownCast(_local_impl)->SetRowTitle(theIndex, 
+                                                                                            (char*)theTitle.c_str());
+  else SALOMEDS::AttributeTableOfReal::_narrow(_corba_impl)->SetRowTitle(theIndex, theTitle.c_str());
+}
+
+void SALOMEDS_AttributeTableOfReal::SetRowTitles(const std::vector<std::string>& theTitles)
+{
+  CheckLocked();
+  int aLength = theTitles.size(), i;
+  if(_isLocal) {
+    Handle(TColStd_HSequenceOfExtendedString) aSeq = new TColStd_HSequenceOfExtendedString;
+    for(i = 0; i < aLength; i++) aSeq->Append((char*)theTitles[i].c_str());
+    Handle(SALOMEDSImpl_AttributeTableOfReal)::DownCast(_local_impl)->SetRowTitles(aSeq);
+  }
+  else {
+    SALOMEDS::StringSeq_var aSeq = new SALOMEDS::StringSeq();
+    aSeq->length(aLength);
+    for(i = 0; i < aLength; i++) aSeq[i] = (char*)theTitles[i].c_str();
+    SALOMEDS::AttributeTableOfReal::_narrow(_corba_impl)->SetRowTitles(aSeq);
+  }
+  
+}
+
+std::vector<std::string> SALOMEDS_AttributeTableOfReal::GetRowTitles()
+{
+  std::vector<std::string> aVector;
+  int aLength, i;
+  if(_isLocal) {
+    Handle(TColStd_HSequenceOfExtendedString) aSeq;
+    aSeq = Handle(SALOMEDSImpl_AttributeTableOfReal)::DownCast(_local_impl)->GetRowTitles();
+    aLength = aSeq->Length();
+    for(i = 1; i<= aLength; i++) aVector.push_back(TCollection_AsciiString(aSeq->Value(i)).ToCString());
+  }
+  else {
+    SALOMEDS::StringSeq_var aSeq = SALOMEDS::AttributeTableOfReal::_narrow(_corba_impl)->GetRowTitles();
+    aLength = aSeq->length();
+    for(i = 0; i<aLength; i++) aVector.push_back((char*)aSeq[i].in());
+  }
+  return aVector;
+}
+
+void SALOMEDS_AttributeTableOfReal::SetColumnTitle(int theIndex, const std::string& theTitle)
+{
+  CheckLocked();
+  if(_isLocal) Handle(SALOMEDSImpl_AttributeTableOfReal)::DownCast(_local_impl)->SetColumnTitle(theIndex, 
+                                                                                               (char*)theTitle.c_str());
+  else SALOMEDS::AttributeTableOfReal::_narrow(_corba_impl)->SetColumnTitle(theIndex, theTitle.c_str());
+}
+
+void SALOMEDS_AttributeTableOfReal::SetColumnTitles(const std::vector<std::string>& theTitles)
+{
+  CheckLocked();
+  int aLength = theTitles.size(), i;
+  if(_isLocal) {
+    Handle(TColStd_HSequenceOfExtendedString) aSeq = new TColStd_HSequenceOfExtendedString;
+    for(i = 0; i < aLength; i++) aSeq->Append((char*)theTitles[i].c_str());
+    Handle(SALOMEDSImpl_AttributeTableOfReal)::DownCast(_local_impl)->SetColumnTitles(aSeq);
+  }
+  else {
+    SALOMEDS::StringSeq_var aSeq = new SALOMEDS::StringSeq();
+    aSeq->length(aLength);
+    for(i = 0; i < aLength; i++) aSeq[i] = (char*)theTitles[i].c_str();
+    SALOMEDS::AttributeTableOfReal::_narrow(_corba_impl)->SetColumnTitles(aSeq);
+  }
+}
+
+std::vector<std::string> SALOMEDS_AttributeTableOfReal::GetColumnTitles()
+{
+  std::vector<std::string> aVector;
+  int aLength, i;
+  if(_isLocal) {
+    Handle(TColStd_HSequenceOfExtendedString) aSeq;
+    aSeq = Handle(SALOMEDSImpl_AttributeTableOfReal)::DownCast(_local_impl)->GetColumnTitles();
+    aLength = aSeq->Length();
+    for(i = 1; i<= aLength; i++) aVector.push_back(TCollection_AsciiString(aSeq->Value(i)).ToCString());
+  }
+  else {
+    SALOMEDS::StringSeq_var aSeq = SALOMEDS::AttributeTableOfReal::_narrow(_corba_impl)->GetColumnTitles();
+    aLength = aSeq->length();
+    for(i = 0; i<aLength; i++) aVector.push_back((char*)aSeq[i].in());
+  }
+  return aVector;
+}
+
+void SALOMEDS_AttributeTableOfReal::SetRowUnit(int theIndex, const std::string& theUnit)
+{
+  CheckLocked();
+  if(_isLocal) Handle(SALOMEDSImpl_AttributeTableOfReal)::DownCast(_local_impl)->SetRowUnit(theIndex, 
+                                                                                           (char*)theUnit.c_str());
+  else SALOMEDS::AttributeTableOfReal::_narrow(_corba_impl)->SetRowUnit(theIndex, theUnit.c_str());
+}
+
+void SALOMEDS_AttributeTableOfReal::SetRowUnits(const std::vector<std::string>& theUnits)
+{
+  CheckLocked();
+  int aLength = theUnits.size(), i;
+  if(_isLocal) {
+    Handle(TColStd_HSequenceOfExtendedString) aSeq = new TColStd_HSequenceOfExtendedString;
+    for(i = 0; i < aLength; i++) aSeq->Append((char*)theUnits[i].c_str());
+    Handle(SALOMEDSImpl_AttributeTableOfReal)::DownCast(_local_impl)->SetRowUnits(aSeq);
+  }
+  else {
+    SALOMEDS::StringSeq_var aSeq = new SALOMEDS::StringSeq();
+    aSeq->length(aLength);
+    for(i = 0; i < aLength; i++) aSeq[i] = (char*)theUnits[i].c_str();
+    SALOMEDS::AttributeTableOfReal::_narrow(_corba_impl)->SetRowUnits(aSeq);
+  }
+}
+
+std::vector<std::string> SALOMEDS_AttributeTableOfReal::GetRowUnits()
+{
+  std::vector<std::string> aVector;
+  int aLength, i;
+  if(_isLocal) {
+    Handle(TColStd_HSequenceOfExtendedString) aSeq;
+    aSeq = Handle(SALOMEDSImpl_AttributeTableOfReal)::DownCast(_local_impl)->GetRowUnits();
+    aLength = aSeq->Length();
+    for(i = 1; i<= aLength; i++) aVector.push_back(TCollection_AsciiString(aSeq->Value(i)).ToCString());
+  }
+  else {
+    SALOMEDS::StringSeq_var aSeq = SALOMEDS::AttributeTableOfReal::_narrow(_corba_impl)->GetRowUnits();
+    aLength = aSeq->length();
+    for(i = 0; i<aLength; i++) aVector.push_back(TCollection_AsciiString((char*)aSeq[i].in()).ToCString());
+  }
+  return aVector;
+}
+
+int SALOMEDS_AttributeTableOfReal::GetNbRows()
+{
+  int aNb;
+  if(_isLocal) aNb = Handle(SALOMEDSImpl_AttributeTableOfReal)::DownCast(_local_impl)->GetNbRows();
+  else aNb = SALOMEDS::AttributeTableOfReal::_narrow(_corba_impl)->GetNbRows();
+  return aNb;
+}
+
+int SALOMEDS_AttributeTableOfReal::GetNbColumns()
+{  
+  int aNb;
+  if(_isLocal) aNb = Handle(SALOMEDSImpl_AttributeTableOfReal)::DownCast(_local_impl)->GetNbColumns();
+  else aNb = SALOMEDS::AttributeTableOfReal::_narrow(_corba_impl)->GetNbColumns();
+  return aNb;
+  
+}
+
+void SALOMEDS_AttributeTableOfReal::AddRow(const std::vector<double>& theData)
+{
+  CheckLocked();
+  int aLength = theData.size(), i;
+  if(_isLocal) {
+    Handle(SALOMEDSImpl_AttributeTableOfReal) aTable;
+    aTable = Handle(SALOMEDSImpl_AttributeTableOfReal)::DownCast(_local_impl);
+    Handle(TColStd_HSequenceOfReal) aRow = new TColStd_HSequenceOfReal;
+    for (int i = 0; i < aLength; i++) aRow->Append(theData[i]);
+    try {
+      aTable->SetRowData(aTable->GetNbRows() + 1, aRow);
+    }   
+    catch(...) {
+      throw SALOMEDS::AttributeTableOfReal::IncorrectArgumentLength();
+    }
+  }
+  else {
+    SALOMEDS::DoubleSeq_var aSeq = new SALOMEDS::DoubleSeq();
+    aSeq->length(aLength);
+    for(i = 0; i < aLength; i++) aSeq[i] = theData[i];
+    SALOMEDS::AttributeTableOfReal::_narrow(_corba_impl)->AddRow(aSeq);
+  }
+}
+
+void SALOMEDS_AttributeTableOfReal::SetRow(int theRow, const std::vector<double>& theData)
+{
+  CheckLocked();
+  int aLength = theData.size(), i;
+  if(_isLocal) {
+    Handle(SALOMEDSImpl_AttributeTableOfReal) aTable;
+    aTable = Handle(SALOMEDSImpl_AttributeTableOfReal)::DownCast(_local_impl);
+    Handle(TColStd_HSequenceOfReal) aRow = new TColStd_HSequenceOfReal;
+    for (int i = 0; i < aLength; i++) aRow->Append(theData[i]);
+    try {
+      aTable->SetRowData(theRow, aRow);
+    }   
+    catch(...) {
+      throw SALOMEDS::AttributeTableOfReal::IncorrectArgumentLength();
+    }
+  }
+  else {
+    SALOMEDS::DoubleSeq_var aSeq = new SALOMEDS::DoubleSeq();
+    aSeq->length(aLength);
+    for(i = 0; i < aLength; i++) aSeq[i] = theData[i];
+    SALOMEDS::AttributeTableOfReal::_narrow(_corba_impl)->SetRow(theRow, aSeq);
+  }
+}
+
+std::vector<double> SALOMEDS_AttributeTableOfReal::GetRow(int theRow)
+{
+  std::vector<double> aVector;
+  int aLength, i;
+  if(_isLocal) {
+    Handle(TColStd_HSequenceOfReal) aRow; 
+    aRow = Handle(SALOMEDSImpl_AttributeTableOfReal)::DownCast(_local_impl)->GetRowData(theRow);
+    aLength = aRow->Length();
+    for(i = 1; i<= aLength; i++) aVector.push_back(aRow->Value(i));
+  }
+  else {
+    SALOMEDS::DoubleSeq_var aRow = SALOMEDS::AttributeTableOfReal::_narrow(_corba_impl)->GetRow(theRow);
+    for(i = 0; i < aLength; i++) aVector.push_back(aRow[i]);
+  }
+
+  return aVector;
+}
+
+void SALOMEDS_AttributeTableOfReal::AddColumn(const std::vector<double>& theData)
+{
+  CheckLocked();
+  int aLength = theData.size(), i;
+  if(_isLocal) {
+    Handle(SALOMEDSImpl_AttributeTableOfReal) aTable;
+    aTable = Handle(SALOMEDSImpl_AttributeTableOfReal)::DownCast(_local_impl);
+    Handle(TColStd_HSequenceOfReal) aColumn = new TColStd_HSequenceOfReal;
+    for (int i = 0; i < aLength; i++) aColumn->Append(theData[i]);
+    try {
+      aTable->SetColumnData(aTable->GetNbColumns() + 1, aColumn);
+    }   
+    catch(...) {
+      throw SALOMEDS::AttributeTableOfReal::IncorrectArgumentLength();
+    }
+  }
+  else {
+    SALOMEDS::DoubleSeq_var aColumn = new SALOMEDS::DoubleSeq();
+    aColumn->length(aLength);
+    for(i = 0; i < aLength; i++) aColumn[i] = theData[i];
+    SALOMEDS::AttributeTableOfReal::_narrow(_corba_impl)->AddColumn(aColumn);
+  }
+}
+
+void SALOMEDS_AttributeTableOfReal::SetColumn(int theColumn, const std::vector<double>& theData)
+{
+  CheckLocked();
+  int aLength = theData.size(), i;
+  if(_isLocal) {
+    Handle(SALOMEDSImpl_AttributeTableOfReal) aTable;
+    aTable = Handle(SALOMEDSImpl_AttributeTableOfReal)::DownCast(_local_impl);
+    Handle(TColStd_HSequenceOfReal) aColumn = new TColStd_HSequenceOfReal;
+    for (int i = 0; i < aLength; i++) aColumn->Append(theData[i]);
+    try {
+      aTable->SetRowData(theColumn, aColumn);
+    }   
+    catch(...) {
+      throw SALOMEDS::AttributeTableOfReal::IncorrectArgumentLength();
+    }
+  }
+  else {
+    SALOMEDS::DoubleSeq_var aColumn = new SALOMEDS::DoubleSeq();
+    aColumn->length(aLength);
+    for(i = 0; i < aLength; i++) aColumn[i] = theData[i];
+    SALOMEDS::AttributeTableOfReal::_narrow(_corba_impl)->SetRow(theColumn, aColumn);
+  }
+}
+
+std::vector<double> SALOMEDS_AttributeTableOfReal::GetColumn(int theColumn)
+{
+  std::vector<double> aVector;
+  int aLength, i;
+  if(_isLocal) {
+    Handle(TColStd_HSequenceOfReal) aColumn; 
+    aColumn = Handle(SALOMEDSImpl_AttributeTableOfReal)::DownCast(_local_impl)->GetColumnData(theColumn);
+    aLength = aColumn->Length();
+    for(i = 1; i<= aLength; i++) aVector.push_back(aColumn->Value(i));
+  }
+  else {
+    SALOMEDS::DoubleSeq_var aColumn = SALOMEDS::AttributeTableOfReal::_narrow(_corba_impl)->GetColumn(theColumn);
+    for(i = 0; i < aLength; i++) aVector.push_back(aColumn[i]);
+  }
+  return aVector;
+}
+
+void SALOMEDS_AttributeTableOfReal::PutValue(double theValue, int theRow, int theColumn)
+{
+  CheckLocked();
+  if(_isLocal) {
+    try {
+      Handle(SALOMEDSImpl_AttributeTableOfReal)::DownCast(_local_impl)->PutValue(theValue, theRow, theColumn);
+    }   
+    catch(...) {
+      throw SALOMEDS::AttributeTableOfReal::IncorrectIndex();
+    }
+  }
+  else {
+    SALOMEDS::AttributeTableOfReal::_narrow(_corba_impl)->PutValue(theValue, theRow, theColumn);
+  }
+}
+
+bool SALOMEDS_AttributeTableOfReal::HasValue(int theRow, int theColumn)
+{
+  bool ret;
+  if(_isLocal) ret = Handle(SALOMEDSImpl_AttributeTableOfReal)::DownCast(_local_impl)->HasValue(theRow, theColumn);
+  else ret = SALOMEDS::AttributeTableOfReal::_narrow(_corba_impl)->HasValue(theRow, theColumn);
+  return ret;
+}
+
+double SALOMEDS_AttributeTableOfReal::GetValue(int theRow, int theColumn)
+{
+  double aValue;
+  if(_isLocal) {
+    try {
+      aValue = Handle(SALOMEDSImpl_AttributeTableOfReal)::DownCast(_local_impl)->GetValue(theRow, theColumn);
+    }   
+    catch(...) {
+      throw SALOMEDS::AttributeTableOfReal::IncorrectIndex();
+    }
+  }
+  else {
+    aValue = SALOMEDS::AttributeTableOfReal::_narrow(_corba_impl)->GetValue(theRow, theColumn);
+  }
+  return aValue;
+}
+
+std::vector<int> SALOMEDS_AttributeTableOfReal::GetRowSetIndices(int theRow)
+{
+  std::vector<int> aVector;
+  int aLength, i;
+  if(_isLocal) {
+    Handle(TColStd_HSequenceOfInteger) aSet; 
+    aSet = Handle(SALOMEDSImpl_AttributeTableOfReal)::DownCast(_local_impl)->GetSetRowIndices(theRow);
+    aLength = aSet->Length();
+    for(i = 1; i<= aLength; i++) aVector.push_back(aSet->Value(i));
+  }
+  else {
+    SALOMEDS::LongSeq_var aSet = SALOMEDS::AttributeTableOfReal::_narrow(_corba_impl)->GetRowSetIndices(theRow);
+    for(i = 0; i < aLength; i++) aVector.push_back(aSet[i]);
+  }
+  return aVector;
+}
+
+void SALOMEDS_AttributeTableOfReal::SetNbColumns(int theNbColumns)
+{
+  if(_isLocal) Handle(SALOMEDSImpl_AttributeTableOfReal)::DownCast(_local_impl)->SetNbColumns(theNbColumns);
+  else SALOMEDS::AttributeTableOfReal::_narrow(_corba_impl)->SetNbColumns(theNbColumns);
+}
diff --git a/src/SALOMEDS/SALOMEDS_AttributeTableOfReal.hxx b/src/SALOMEDS/SALOMEDS_AttributeTableOfReal.hxx
new file mode 100644 (file)
index 0000000..755058c
--- /dev/null
@@ -0,0 +1,56 @@
+//  File   : SALOMEDS_AttributeTableOfReal.hxx
+//  Author : Sergey RUIN
+//  Module : SALOME
+
+#ifndef SALOMEDS_AttributeTableOfReal_HeaderFile
+#define SALOMEDS_AttributeTableOfReal_HeaderFile
+
+#include "SALOMEDSClient_AttributeTableOfReal.hxx"
+#include "SALOMEDS_GenericAttribute.hxx"
+#include "SALOMEDSImpl_AttributeTableOfReal.hxx"
+
+// IDL headers
+#include <SALOMEconfig.h>
+#include CORBA_SERVER_HEADER(SALOMEDS)
+#include CORBA_SERVER_HEADER(SALOMEDS_Attributes)
+
+#include <vector>
+
+class SALOMEDS_AttributeTableOfReal: public SALOMEDS_GenericAttribute, public SALOMEDSClient_AttributeTableOfReal
+{
+public:  
+  SALOMEDS_AttributeTableOfReal(const Handle(SALOMEDSImpl_AttributeTableOfReal)& theAttr);
+  SALOMEDS_AttributeTableOfReal(SALOMEDS::AttributeTableOfReal_ptr theAttr);
+  ~SALOMEDS_AttributeTableOfReal();
+
+  virtual void SetTitle(const std::string& theTitle);
+  virtual std::string GetTitle();
+  virtual void SetRowTitle(int theIndex, const std::string& theTitle);
+  virtual void SetRowTitles(const std::vector<std::string>& theTitles);
+  virtual std::vector<std::string> GetRowTitles();
+  virtual void SetColumnTitle(int theIndex, const std::string& theTitle);
+  virtual void SetColumnTitles(const std::vector<std::string>& theTitles);
+  virtual std::vector<std::string> GetColumnTitles();
+
+  virtual void SetRowUnit(int theIndex, const std::string& theUnit);
+  virtual void SetRowUnits(const std::vector<std::string>& theUnits);
+  virtual std::vector<std::string> GetRowUnits();
+
+  virtual int GetNbRows();
+  virtual int GetNbColumns();
+  virtual void AddRow(const std::vector<double>& theData);
+  virtual void SetRow(int theRow, const std::vector<double>& theData);
+  virtual std::vector<double> GetRow(int theRow);
+  virtual void AddColumn(const std::vector<double>& theData);
+  virtual void SetColumn(int theColumn, const std::vector<double>& theData);
+  virtual std::vector<double> GetColumn(int theColumn);
+  virtual void PutValue(double theValue, int theRow, int theColumn);
+  virtual bool HasValue(int theRow, int theColumn);
+  virtual double GetValue(int theRow, int theColumn);
+
+  virtual std::vector<int> GetRowSetIndices(int theRow);
+  virtual void SetNbColumns(int theNbColumns);    
+
+};
+
+#endif
index c550cf38b9838af8e4bb34a724682172045ad041..6c638ced659a5e02d3683e228b65cd01b741ff89 100644 (file)
@@ -1,59 +1,37 @@
-//  SALOME SALOMEDS : data structure of SALOME and sources of Salome data server 
-//
-//  Copyright (C) 2003  CEA/DEN, EDF R&D
-//
-//
-//
 //  File   : SALOMEDS_AttributeTableOfReal_i.cxx
-//  Author : Michael Ponikarov
+//  Author : Sergey RUIN
 //  Module : SALOME
-//  $Header$
+
 
 #include "SALOMEDS_AttributeTableOfReal_i.hxx"
+#include "SALOMEDS.hxx"
 
 #include <TColStd_HSequenceOfReal.hxx>
-#include <TCollection_AsciiString.hxx>
 #include <Standard_Failure.hxx>
 #include <Standard_ErrorHandler.hxx>
 
 #include <strstream>
 #include <string>
 
+using namespace std;
+
 #include "Utils_ExceptHandlers.hxx"
 UNEXPECT_CATCH(ATR_IncorrectIndex, SALOMEDS::AttributeTableOfReal::IncorrectIndex);
 UNEXPECT_CATCH(ATR_IncorrectArgumentLength, SALOMEDS::AttributeTableOfReal::IncorrectArgumentLength);
 
-#define SEPARATOR '\1'
-
-using namespace std;
-
-static TCollection_ExtendedString getUnit(TCollection_ExtendedString theString)
-{
-  TCollection_ExtendedString aString(theString);
-  int aPos = aString.Search(SEPARATOR);
-  if(aPos <= 0 || aPos == aString.Length() ) return TCollection_ExtendedString();
-  return aString.Split(aPos);
-}
-
-static TCollection_ExtendedString getTitle(TCollection_ExtendedString theString)
+void SALOMEDS_AttributeTableOfReal_i::SetTitle(const char* theTitle) 
 {
-  TCollection_ExtendedString aString(theString);
-  int aPos = aString.Search(SEPARATOR);
-  if(aPos < 1) return aString;
-  if(aPos == 1) return TCollection_ExtendedString();
-  aString.Split(aPos-1);
-  return aString;
-}
-
-void SALOMEDS_AttributeTableOfReal_i::SetTitle(const char* theTitle) {
+  SALOMEDS::Locker lock;     
   CheckLocked();
-  Handle(SALOMEDS_TableOfRealAttribute) aTable = Handle(SALOMEDS_TableOfRealAttribute)::DownCast(_myAttr);
+  Handle(SALOMEDSImpl_AttributeTableOfReal) aTable = Handle(SALOMEDSImpl_AttributeTableOfReal)::DownCast(_impl);
   CORBA::String_var aStr = CORBA::string_dup(theTitle);
   aTable->SetTitle(TCollection_ExtendedString(aStr));
 }
 
-char* SALOMEDS_AttributeTableOfReal_i::GetTitle() {
-  Handle(SALOMEDS_TableOfRealAttribute) aTable = Handle(SALOMEDS_TableOfRealAttribute)::DownCast(_myAttr);
+char* SALOMEDS_AttributeTableOfReal_i::GetTitle() 
+{
+  SALOMEDS::Locker lock; 
+  Handle(SALOMEDSImpl_AttributeTableOfReal) aTable = Handle(SALOMEDSImpl_AttributeTableOfReal)::DownCast(_impl);
   CORBA::String_var c_s = CORBA::string_dup(TCollection_AsciiString(aTable->GetTitle()).ToCString());
   return c_s._retn();
 }
@@ -61,48 +39,45 @@ char* SALOMEDS_AttributeTableOfReal_i::GetTitle() {
 void SALOMEDS_AttributeTableOfReal_i::SetRowTitle(CORBA::Long theIndex, const char* theTitle)
      throw (SALOMEDS::AttributeTableOfReal::IncorrectIndex)
 {
+  SALOMEDS::Locker lock; 
   Unexpect aCatch (ATR_IncorrectIndex);
   CheckLocked();
-  Handle(SALOMEDS_TableOfRealAttribute) aTable = Handle(SALOMEDS_TableOfRealAttribute)::DownCast(_myAttr);
+  Handle(SALOMEDSImpl_AttributeTableOfReal) aTable = Handle(SALOMEDSImpl_AttributeTableOfReal)::DownCast(_impl);
   if (theIndex <= 0 || theIndex > aTable->GetNbRows()) throw SALOMEDS::AttributeTableOfReal::IncorrectIndex();
-  CORBA::String_var aStr = CORBA::string_dup(theTitle);
-  TCollection_ExtendedString aTitle(aStr);
-  TCollection_ExtendedString aUnit = getUnit(aTable->GetRowTitle(theIndex));
-  if(aUnit.Length() > 0) {
-    aTitle += SEPARATOR;
-    aTitle += aUnit;
-  }
-
-  aTable->SetRowTitle(theIndex, aTitle);
+  aTable->SetRowTitle(theIndex, TCollection_ExtendedString((char*)theTitle));
 }
 
 void SALOMEDS_AttributeTableOfReal_i::SetRowTitles(const SALOMEDS::StringSeq& theTitles)
      throw (SALOMEDS::AttributeTableOfReal::IncorrectArgumentLength)
 {
+  SALOMEDS::Locker lock; 
   Unexpect aCatch (ATR_IncorrectArgumentLength);
   CheckLocked();
-  Handle(SALOMEDS_TableOfRealAttribute) aTable = Handle(SALOMEDS_TableOfRealAttribute)::DownCast(_myAttr);
+  Handle(SALOMEDSImpl_AttributeTableOfReal) aTable = Handle(SALOMEDSImpl_AttributeTableOfReal)::DownCast(_impl);
   if (theTitles.length() != aTable->GetNbRows()) throw SALOMEDS::AttributeTableOfReal::IncorrectArgumentLength();
   for (int i = 0; i < theTitles.length(); i++) {
-    SetRowTitle(i + 1, theTitles[i]);
+    aTable->SetRowTitle(i + 1, (char*)theTitles[i].in());
   }
 }
 
-SALOMEDS::StringSeq* SALOMEDS_AttributeTableOfReal_i::GetRowTitles() {
-  Handle(SALOMEDS_TableOfRealAttribute) aTable = Handle(SALOMEDS_TableOfRealAttribute)::DownCast(_myAttr);
+SALOMEDS::StringSeq* SALOMEDS_AttributeTableOfReal_i::GetRowTitles() 
+{
+  SALOMEDS::Locker lock; 
+  Handle(SALOMEDSImpl_AttributeTableOfReal) aTable = Handle(SALOMEDSImpl_AttributeTableOfReal)::DownCast(_impl);
   SALOMEDS::StringSeq_var aTitles = new SALOMEDS::StringSeq;
   aTitles->length(aTable->GetNbRows());
   for(int i = 0; i < aTitles->length(); i++)
-    aTitles[i] = CORBA::string_dup(TCollection_AsciiString(getTitle(aTable->GetRowTitle(i + 1))).ToCString());
+    aTitles[i] = CORBA::string_dup(TCollection_AsciiString(aTable->GetRowTitle(i + 1)).ToCString());
   return aTitles._retn();
 }
 
 void SALOMEDS_AttributeTableOfReal_i::SetColumnTitle(CORBA::Long theIndex, const char* theTitle)
      throw (SALOMEDS::AttributeTableOfReal::IncorrectIndex)
 {
+  SALOMEDS::Locker lock; 
   Unexpect aCatch (ATR_IncorrectIndex);
   CheckLocked();
-  Handle(SALOMEDS_TableOfRealAttribute) aTable = Handle(SALOMEDS_TableOfRealAttribute)::DownCast(_myAttr);
+  Handle(SALOMEDSImpl_AttributeTableOfReal) aTable = Handle(SALOMEDSImpl_AttributeTableOfReal)::DownCast(_impl);
   if (theIndex <= 0 || theIndex > aTable->GetNbColumns()) throw SALOMEDS::AttributeTableOfReal::IncorrectIndex();
   CORBA::String_var aStr = CORBA::string_dup(theTitle);
   aTable->SetColumnTitle(theIndex, TCollection_ExtendedString(aStr));
@@ -111,17 +86,20 @@ void SALOMEDS_AttributeTableOfReal_i::SetColumnTitle(CORBA::Long theIndex, const
 void SALOMEDS_AttributeTableOfReal_i::SetColumnTitles(const SALOMEDS::StringSeq& theTitles)
      throw (SALOMEDS::AttributeTableOfReal::IncorrectArgumentLength)
 {
+  SALOMEDS::Locker lock; 
   Unexpect aCatch(ATR_IncorrectArgumentLength);
   CheckLocked();
-  Handle(SALOMEDS_TableOfRealAttribute) aTable = Handle(SALOMEDS_TableOfRealAttribute)::DownCast(_myAttr);
+  Handle(SALOMEDSImpl_AttributeTableOfReal) aTable = Handle(SALOMEDSImpl_AttributeTableOfReal)::DownCast(_impl);
   if (theTitles.length() != aTable->GetNbColumns()) throw SALOMEDS::AttributeTableOfReal::IncorrectArgumentLength();
   for (int i = 0; i < theTitles.length(); i++) {
-    SetColumnTitle(i + 1, theTitles[i]);
+    aTable->SetColumnTitle(i + 1, (char*)theTitles[i].in());
   }
 }
 
-SALOMEDS::StringSeq* SALOMEDS_AttributeTableOfReal_i::GetColumnTitles() {
-  Handle(SALOMEDS_TableOfRealAttribute) aTable = Handle(SALOMEDS_TableOfRealAttribute)::DownCast(_myAttr);
+SALOMEDS::StringSeq* SALOMEDS_AttributeTableOfReal_i::GetColumnTitles() 
+{
+  SALOMEDS::Locker lock; 
+  Handle(SALOMEDSImpl_AttributeTableOfReal) aTable = Handle(SALOMEDSImpl_AttributeTableOfReal)::DownCast(_impl);
   SALOMEDS::StringSeq_var aTitles = new SALOMEDS::StringSeq;
   aTitles->length(aTable->GetNbColumns());
   for(int i = 0; i < aTitles->length(); i++)
@@ -133,53 +111,58 @@ SALOMEDS::StringSeq* SALOMEDS_AttributeTableOfReal_i::GetColumnTitles() {
 void SALOMEDS_AttributeTableOfReal_i::SetRowUnit(CORBA::Long theIndex, const char* theUnit)
      throw (SALOMEDS::AttributeTableOfReal::IncorrectIndex)
 {
+  SALOMEDS::Locker lock; 
   Unexpect aCatch (ATR_IncorrectIndex);
   CheckLocked();
-  Handle(SALOMEDS_TableOfRealAttribute) aTable = Handle(SALOMEDS_TableOfRealAttribute)::DownCast(_myAttr);
+  Handle(SALOMEDSImpl_AttributeTableOfReal) aTable = Handle(SALOMEDSImpl_AttributeTableOfReal)::DownCast(_impl);
   if (theIndex <= 0 || theIndex > aTable->GetNbRows()) throw SALOMEDS::AttributeTableOfReal::IncorrectIndex();
-  CORBA::String_var aStr = CORBA::string_dup(theUnit);
-  TCollection_ExtendedString aTitle = getTitle(aTable->GetRowTitle(theIndex));
-  TCollection_ExtendedString aUnit(aStr);
-  aTitle += SEPARATOR;
-  aTitle += aUnit;
-  aTable->SetRowTitle(theIndex, aTitle);
+  aTable->SetRowUnit(theIndex, TCollection_ExtendedString((char*)theUnit));
 }
 
 void SALOMEDS_AttributeTableOfReal_i::SetRowUnits(const SALOMEDS::StringSeq& theUnits)
      throw (SALOMEDS::AttributeTableOfReal::IncorrectArgumentLength)
 {
+  SALOMEDS::Locker lock; 
   Unexpect aCatch (ATR_IncorrectArgumentLength);
   CheckLocked();
-  Handle(SALOMEDS_TableOfRealAttribute) aTable = Handle(SALOMEDS_TableOfRealAttribute)::DownCast(_myAttr);
+  Handle(SALOMEDSImpl_AttributeTableOfReal) aTable = Handle(SALOMEDSImpl_AttributeTableOfReal)::DownCast(_impl);
   if (theUnits.length() != aTable->GetNbRows()) throw SALOMEDS::AttributeTableOfReal::IncorrectArgumentLength();
   for (int i = 0; i < theUnits.length(); i++) {
-    SetRowUnit(i + 1, theUnits[i]);
+    aTable->SetRowUnit(i + 1, (char*)theUnits[i].in());
   }
 }
 
-SALOMEDS::StringSeq* SALOMEDS_AttributeTableOfReal_i::GetRowUnits() {
-  Handle(SALOMEDS_TableOfRealAttribute) aTable = Handle(SALOMEDS_TableOfRealAttribute)::DownCast(_myAttr);
+SALOMEDS::StringSeq* SALOMEDS_AttributeTableOfReal_i::GetRowUnits() 
+{
+  SALOMEDS::Locker lock; 
+  Handle(SALOMEDSImpl_AttributeTableOfReal) aTable = Handle(SALOMEDSImpl_AttributeTableOfReal)::DownCast(_impl);
   SALOMEDS::StringSeq_var aUnits = new SALOMEDS::StringSeq;
   aUnits->length(aTable->GetNbRows());
   for(int i = 0; i < aUnits->length(); i++)
-    aUnits[i] = CORBA::string_dup(TCollection_AsciiString(getUnit(aTable->GetRowTitle(i + 1))).ToCString());
+    aUnits[i] = CORBA::string_dup(TCollection_AsciiString(aTable->GetRowUnit(i + 1)).ToCString());
   return aUnits._retn();
 }
 
 
-CORBA::Long SALOMEDS_AttributeTableOfReal_i::GetNbRows() {
-  return Handle(SALOMEDS_TableOfRealAttribute)::DownCast(_myAttr)->GetNbRows();
+CORBA::Long SALOMEDS_AttributeTableOfReal_i::GetNbRows() 
+{
+  SALOMEDS::Locker lock; 
+  return Handle(SALOMEDSImpl_AttributeTableOfReal)::DownCast(_impl)->GetNbRows();
 }
-CORBA::Long SALOMEDS_AttributeTableOfReal_i::GetNbColumns() {
-  return Handle(SALOMEDS_TableOfRealAttribute)::DownCast(_myAttr)->GetNbColumns();
+
+CORBA::Long SALOMEDS_AttributeTableOfReal_i::GetNbColumns() 
+{
+  SALOMEDS::Locker lock; 
+  return Handle(SALOMEDSImpl_AttributeTableOfReal)::DownCast(_impl)->GetNbColumns();
 }
 
 void SALOMEDS_AttributeTableOfReal_i::AddRow(const SALOMEDS::DoubleSeq& theData)
      throw (SALOMEDS::AttributeTableOfReal::IncorrectArgumentLength)
 {
+  SALOMEDS::Locker lock; 
   Unexpect aCatch(ATR_IncorrectArgumentLength);
   CheckLocked();
-  Handle(SALOMEDS_TableOfRealAttribute) aTable = Handle(SALOMEDS_TableOfRealAttribute)::DownCast(_myAttr);
+  Handle(SALOMEDSImpl_AttributeTableOfReal) aTable = Handle(SALOMEDSImpl_AttributeTableOfReal)::DownCast(_impl);
   
   Handle(TColStd_HSequenceOfReal) aRow = new TColStd_HSequenceOfReal;
   for (int i = 0; i < theData.length(); i++) aRow->Append(theData[i]);
@@ -189,9 +172,10 @@ void SALOMEDS_AttributeTableOfReal_i::AddRow(const SALOMEDS::DoubleSeq& theData)
 void SALOMEDS_AttributeTableOfReal_i::SetRow(CORBA::Long theRow, const SALOMEDS::DoubleSeq& theData)
      throw (SALOMEDS::AttributeTableOfReal::IncorrectArgumentLength, SALOMEDS::AttributeTableOfReal::IncorrectIndex)
 {
+  SALOMEDS::Locker lock; 
   Unexpect aCatch(ATR_IncorrectArgumentLength);
   CheckLocked();
-  Handle(SALOMEDS_TableOfRealAttribute) aTable = Handle(SALOMEDS_TableOfRealAttribute)::DownCast(_myAttr);
+  Handle(SALOMEDSImpl_AttributeTableOfReal) aTable = Handle(SALOMEDSImpl_AttributeTableOfReal)::DownCast(_impl);
   
   Handle(TColStd_HSequenceOfReal) aRow = new TColStd_HSequenceOfReal;
   for (int i = 0; i < theData.length(); i++) aRow->Append(theData[i]);
@@ -201,8 +185,9 @@ void SALOMEDS_AttributeTableOfReal_i::SetRow(CORBA::Long theRow, const SALOMEDS:
 SALOMEDS::DoubleSeq* SALOMEDS_AttributeTableOfReal_i::GetRow(CORBA::Long theRow)
      throw (SALOMEDS::AttributeTableOfReal::IncorrectIndex)
 {
+  SALOMEDS::Locker lock; 
   Unexpect aCatch(ATR_IncorrectIndex);
-  Handle(SALOMEDS_TableOfRealAttribute) aTable = Handle(SALOMEDS_TableOfRealAttribute)::DownCast(_myAttr);
+  Handle(SALOMEDSImpl_AttributeTableOfReal) aTable = Handle(SALOMEDSImpl_AttributeTableOfReal)::DownCast(_impl);
   if (theRow <= 0 || theRow > aTable->GetNbRows()) throw SALOMEDS::AttributeTableOfReal::IncorrectIndex();
 
   SALOMEDS::DoubleSeq_var CorbaSeq = new SALOMEDS::DoubleSeq;
@@ -217,9 +202,10 @@ SALOMEDS::DoubleSeq* SALOMEDS_AttributeTableOfReal_i::GetRow(CORBA::Long theRow)
 void SALOMEDS_AttributeTableOfReal_i::AddColumn(const SALOMEDS::DoubleSeq& theData)
      throw (SALOMEDS::AttributeTableOfReal::IncorrectArgumentLength)
 {
+  SALOMEDS::Locker lock; 
   Unexpect aCatch(ATR_IncorrectArgumentLength);
   CheckLocked();
-  Handle(SALOMEDS_TableOfRealAttribute) aTable = Handle(SALOMEDS_TableOfRealAttribute)::DownCast(_myAttr);
+  Handle(SALOMEDSImpl_AttributeTableOfReal) aTable = Handle(SALOMEDSImpl_AttributeTableOfReal)::DownCast(_impl);
   
   Handle(TColStd_HSequenceOfReal) aColumn = new TColStd_HSequenceOfReal;
   for (int i = 0; i < theData.length(); i++) aColumn->Append(theData[i]);
@@ -229,9 +215,10 @@ void SALOMEDS_AttributeTableOfReal_i::AddColumn(const SALOMEDS::DoubleSeq& theDa
 void SALOMEDS_AttributeTableOfReal_i::SetColumn(CORBA::Long theColumn, const SALOMEDS::DoubleSeq& theData)
      throw (SALOMEDS::AttributeTableOfReal::IncorrectArgumentLength, SALOMEDS::AttributeTableOfReal::IncorrectIndex)
 {
+  SALOMEDS::Locker lock; 
   Unexpect aCatch(ATR_IncorrectArgumentLength);
   CheckLocked();
-  Handle(SALOMEDS_TableOfRealAttribute) aTable = Handle(SALOMEDS_TableOfRealAttribute)::DownCast(_myAttr);
+  Handle(SALOMEDSImpl_AttributeTableOfReal) aTable = Handle(SALOMEDSImpl_AttributeTableOfReal)::DownCast(_impl);
   
   Handle(TColStd_HSequenceOfReal) aColumn = new TColStd_HSequenceOfReal;
   for (int i = 0; i < theData.length(); i++) aColumn->Append(theData[i]);
@@ -241,8 +228,9 @@ void SALOMEDS_AttributeTableOfReal_i::SetColumn(CORBA::Long theColumn, const SAL
 SALOMEDS::DoubleSeq* SALOMEDS_AttributeTableOfReal_i::GetColumn(CORBA::Long theColumn)
      throw (SALOMEDS::AttributeTableOfReal::IncorrectIndex)
 {
+  SALOMEDS::Locker lock; 
   Unexpect aCatch(ATR_IncorrectIndex);
-  Handle(SALOMEDS_TableOfRealAttribute) aTable = Handle(SALOMEDS_TableOfRealAttribute)::DownCast(_myAttr);
+  Handle(SALOMEDSImpl_AttributeTableOfReal) aTable = Handle(SALOMEDSImpl_AttributeTableOfReal)::DownCast(_impl);
   if (theColumn <= 0 || theColumn > aTable->GetNbColumns()) throw SALOMEDS::AttributeTableOfReal::IncorrectIndex();
 
   SALOMEDS::DoubleSeq_var CorbaSeq = new SALOMEDS::DoubleSeq;
@@ -257,22 +245,26 @@ SALOMEDS::DoubleSeq* SALOMEDS_AttributeTableOfReal_i::GetColumn(CORBA::Long theC
 void SALOMEDS_AttributeTableOfReal_i::PutValue(CORBA::Double theValue, CORBA::Long theRow, CORBA::Long theColumn)
      throw (SALOMEDS::AttributeTableOfReal::IncorrectIndex)
 {
+  SALOMEDS::Locker lock; 
   Unexpect aCatch(ATR_IncorrectIndex);
   CheckLocked();
-  Handle(SALOMEDS_TableOfRealAttribute) aTable = Handle(SALOMEDS_TableOfRealAttribute)::DownCast(_myAttr);
+  Handle(SALOMEDSImpl_AttributeTableOfReal) aTable = Handle(SALOMEDSImpl_AttributeTableOfReal)::DownCast(_impl);
 
   aTable->PutValue(theValue, theRow, theColumn);
 }
 
-CORBA::Boolean SALOMEDS_AttributeTableOfReal_i::HasValue(CORBA::Long theRow, CORBA::Long theColumn) {
-  return Handle(SALOMEDS_TableOfRealAttribute)::DownCast(_myAttr)->HasValue(theRow, theColumn);
+CORBA::Boolean SALOMEDS_AttributeTableOfReal_i::HasValue(CORBA::Long theRow, CORBA::Long theColumn) 
+{
+  SALOMEDS::Locker lock; 
+  return Handle(SALOMEDSImpl_AttributeTableOfReal)::DownCast(_impl)->HasValue(theRow, theColumn);
 }
 
 CORBA::Double SALOMEDS_AttributeTableOfReal_i::GetValue(CORBA::Long theRow, CORBA::Long theColumn)
      throw (SALOMEDS::AttributeTableOfReal::IncorrectIndex)
 {
+  SALOMEDS::Locker lock; 
   Unexpect aCatch(ATR_IncorrectIndex);
-  Handle(SALOMEDS_TableOfRealAttribute) aTable = Handle(SALOMEDS_TableOfRealAttribute)::DownCast(_myAttr);
+  Handle(SALOMEDSImpl_AttributeTableOfReal) aTable = Handle(SALOMEDSImpl_AttributeTableOfReal)::DownCast(_impl);
   if (theRow > aTable->GetNbRows()) throw SALOMEDS::AttributeTableOfReal::IncorrectIndex();
 
   CORBA::Double aValue;
@@ -290,7 +282,8 @@ CORBA::Double SALOMEDS_AttributeTableOfReal_i::GetValue(CORBA::Long theRow, CORB
 
 SALOMEDS::LongSeq* SALOMEDS_AttributeTableOfReal_i::GetRowSetIndices(CORBA::Long theRow) 
 {
-  Handle(SALOMEDS_TableOfRealAttribute) aTable = Handle(SALOMEDS_TableOfRealAttribute)::DownCast(_myAttr);
+  SALOMEDS::Locker lock; 
+  Handle(SALOMEDSImpl_AttributeTableOfReal) aTable = Handle(SALOMEDSImpl_AttributeTableOfReal)::DownCast(_impl);
 
   if(theRow <= 0 || theRow > aTable->GetNbRows()) throw SALOMEDS::AttributeTableOfReal::IncorrectIndex();
 
@@ -306,13 +299,15 @@ SALOMEDS::LongSeq* SALOMEDS_AttributeTableOfReal_i::GetRowSetIndices(CORBA::Long
 
 void SALOMEDS_AttributeTableOfReal_i::SetNbColumns(CORBA::Long theNbColumns)
 {
-  Handle(SALOMEDS_TableOfRealAttribute) aTable = Handle(SALOMEDS_TableOfRealAttribute)::DownCast(_myAttr);
+  SALOMEDS::Locker lock; 
+  Handle(SALOMEDSImpl_AttributeTableOfReal) aTable = Handle(SALOMEDSImpl_AttributeTableOfReal)::DownCast(_impl);
   aTable->SetNbColumns(theNbColumns);
 }
 
 bool SALOMEDS_AttributeTableOfReal_i::ReadFromFile(const SALOMEDS::TMPFile& theStream) 
 {
-  Handle(SALOMEDS_TableOfRealAttribute) aTable = Handle(SALOMEDS_TableOfRealAttribute)::DownCast(_myAttr);
+  SALOMEDS::Locker lock; 
+  Handle(SALOMEDSImpl_AttributeTableOfReal) aTable = Handle(SALOMEDSImpl_AttributeTableOfReal)::DownCast(_impl);
 
   istrstream aStream((char*)&theStream[0], theStream.length());
   return aTable->RestoreFromString(aStream);
@@ -320,7 +315,8 @@ bool SALOMEDS_AttributeTableOfReal_i::ReadFromFile(const SALOMEDS::TMPFile& theS
 
 SALOMEDS::TMPFile*  SALOMEDS_AttributeTableOfReal_i::SaveToFile()
 {
-  Handle(SALOMEDS_TableOfRealAttribute) aTable = Handle(SALOMEDS_TableOfRealAttribute)::DownCast(_myAttr);
+  SALOMEDS::Locker lock; 
+  Handle(SALOMEDSImpl_AttributeTableOfReal) aTable = Handle(SALOMEDSImpl_AttributeTableOfReal)::DownCast(_impl);
 
   ostrstream ostr;
   string aString;
@@ -337,21 +333,3 @@ SALOMEDS::TMPFile*  SALOMEDS_AttributeTableOfReal_i::SaveToFile()
 
   return aStreamFile._retn();
 }
-
-char* SALOMEDS_AttributeTableOfReal_i::Store() {
-  Handle(SALOMEDS_TableOfRealAttribute) aTable = Handle(SALOMEDS_TableOfRealAttribute)::DownCast(_myAttr);
-
-  ostrstream ostr;
-  aTable->ConvertToString(ostr);
-  string aString = ostr.rdbuf()->str();
-
-  CORBA::String_var aBuffer = CORBA::string_dup(aString.c_str());
-  return aBuffer._retn();
-}
-
-void SALOMEDS_AttributeTableOfReal_i::Restore(const char* value) {
-  Handle(SALOMEDS_TableOfRealAttribute) aTable = Handle(SALOMEDS_TableOfRealAttribute)::DownCast(_myAttr);
-
-  istrstream aStream(value, strlen(value));
-  aTable->RestoreFromString(aStream);
-}
index 9726ec82a67445c45e765d70605750bc7460db52..0165154b7738b472f71c0df0f3a41e249d7d19f3 100644 (file)
@@ -1,33 +1,28 @@
-//  SALOME SALOMEDS : data structure of SALOME and sources of Salome data server 
-//
-//  Copyright (C) 2003  CEA/DEN, EDF R&D
-//
-//
-//
 //  File   : SALOMEDS_AttributeTableOfReal_i.hxx
 //  Author : Michael Ponikarov
 //  Module : SALOME
-//  $Header$
 
 #ifndef SALOMEDS_AttributeTableOfReal_i_HeaderFile
 #define SALOMEDS_AttributeTableOfReal_i_HeaderFile
 
-#include "SALOMEDS_TableOfRealAttribute.hxx"
-#include "SALOMEDS_GenericAttribute_i.hxx"
-
 // IDL headers
 #include <SALOMEconfig.h>
 #include CORBA_SERVER_HEADER(SALOMEDS_Attributes)
 
-DEFINE_DERIVED_ATTR(AttributeTableOfReal,SALOMEDS_TableOfRealAttribute,true);
+#include "SALOMEDS_GenericAttribute_i.hxx"
+#include "SALOMEDSImpl_AttributeTableOfReal.hxx"
 
-class SALOMEDS_AttributeTableOfReal_i: 
-  public virtual POA_SALOMEDS::AttributeTableOfReal,
-  public virtual SALOMEDS_TAttributeTableOfReal_i 
-{
-  DEFINE_DERIVED_ATTR_METH_DEFAULT(AttributeTableOfReal,SALOMEDS_TableOfRealAttribute);
+class SALOMEDS_AttributeTableOfReal_i: public virtual POA_SALOMEDS::AttributeTableOfReal,
+  public virtual SALOMEDS_GenericAttribute_i {
+    
 public:
-  virtual void SetTitle(const char* theTitle);
+  
+  SALOMEDS_AttributeTableOfReal_i(const Handle(SALOMEDSImpl_AttributeTableOfReal)& theAttr, CORBA::ORB_ptr orb) 
+    :SALOMEDS_GenericAttribute_i(theAttr, orb) {}; 
+
+  ~SALOMEDS_AttributeTableOfReal_i() {};
+
+ virtual void SetTitle(const char* theTitle);
   virtual char* GetTitle();
   virtual void SetRowTitle(CORBA::Long theIndex, const char* theTitle)
     throw (SALOMEDS::AttributeTableOfReal::IncorrectIndex);
@@ -72,9 +67,6 @@ public:
   virtual bool ReadFromFile(const SALOMEDS::TMPFile& theStream);
   virtual SALOMEDS::TMPFile* SaveToFile();
 
-  virtual char* Store();
-  virtual void Restore(const char*);
-
 };
 
 #endif
diff --git a/src/SALOMEDS/SALOMEDS_AttributeTableOfString.cxx b/src/SALOMEDS/SALOMEDS_AttributeTableOfString.cxx
new file mode 100644 (file)
index 0000000..dff594c
--- /dev/null
@@ -0,0 +1,387 @@
+//  File   : SALOMEDS_AttributeTableOfString.cxx
+//  Author : Sergey RUIN
+//  Module : SALOME
+
+#include "SALOMEDS_AttributeTableOfString.hxx"
+
+#include <string>
+#include <TCollection_AsciiString.hxx> 
+#include <TCollection_ExtendedString.hxx>
+#include <TColStd_HSequenceOfInteger.hxx>
+#include <TColStd_HSequenceOfReal.hxx>
+#include <TColStd_HSequenceOfExtendedString.hxx>
+SALOMEDS_AttributeTableOfString
+::SALOMEDS_AttributeTableOfString(const Handle(SALOMEDSImpl_AttributeTableOfString)& theAttr)
+:SALOMEDS_GenericAttribute(theAttr)
+{}
+
+SALOMEDS_AttributeTableOfString::SALOMEDS_AttributeTableOfString(SALOMEDS::AttributeTableOfString_ptr theAttr)
+:SALOMEDS_GenericAttribute(theAttr)
+{}
+
+SALOMEDS_AttributeTableOfString::~SALOMEDS_AttributeTableOfString()
+{}
+
+
+void SALOMEDS_AttributeTableOfString::SetTitle(const std::string& theTitle)
+{
+  CheckLocked();
+  if(_isLocal) Handle(SALOMEDSImpl_AttributeTableOfString)::DownCast(_local_impl)->SetTitle((char*)theTitle.c_str());
+  else SALOMEDS::AttributeTableOfString::_narrow(_corba_impl)->SetTitle(theTitle.c_str());
+}
+
+std::string SALOMEDS_AttributeTableOfString::GetTitle()
+{
+  std::string aStr;
+  if(_isLocal) 
+    aStr = TCollection_AsciiString(Handle(SALOMEDSImpl_AttributeTableOfString)::DownCast(_local_impl)->GetTitle()).ToCString();
+  else aStr = SALOMEDS::AttributeTableOfString::_narrow(_corba_impl)->GetTitle();
+  return aStr;
+}
+
+void SALOMEDS_AttributeTableOfString::SetRowTitle(int theIndex, const std::string& theTitle)
+{
+  CheckLocked();
+  if(_isLocal) Handle(SALOMEDSImpl_AttributeTableOfString)::DownCast(_local_impl)->SetRowTitle(theIndex, 
+                                                                                              (char*)theTitle.c_str());
+  else SALOMEDS::AttributeTableOfString::_narrow(_corba_impl)->SetRowTitle(theIndex, theTitle.c_str());
+}
+
+void SALOMEDS_AttributeTableOfString::SetRowTitles(const std::vector<std::string>& theTitles)
+{
+  CheckLocked();
+  int aLength = theTitles.size(), i;
+  if(_isLocal) {
+    Handle(TColStd_HSequenceOfExtendedString) aSeq = new TColStd_HSequenceOfExtendedString;
+    for(i = 0; i < aLength; i++) aSeq->Append((char*)theTitles[i].c_str());
+    Handle(SALOMEDSImpl_AttributeTableOfString)::DownCast(_local_impl)->SetRowTitles(aSeq);
+  }
+  else {
+    SALOMEDS::StringSeq_var aSeq = new SALOMEDS::StringSeq();
+    aSeq->length(aLength);
+    for(i = 0; i < aLength; i++) aSeq[i] = (char*)theTitles[i].c_str();
+    SALOMEDS::AttributeTableOfString::_narrow(_corba_impl)->SetRowTitles(aSeq);
+  }
+  
+}
+
+std::vector<std::string> SALOMEDS_AttributeTableOfString::GetRowTitles()
+{
+  std::vector<std::string> aVector;
+  int aLength, i;
+  if(_isLocal) {
+    Handle(TColStd_HSequenceOfExtendedString) aSeq;
+    aSeq = Handle(SALOMEDSImpl_AttributeTableOfString)::DownCast(_local_impl)->GetRowTitles();
+    aLength = aSeq->Length();
+    for(i = 1; i<= aLength; i++) aVector.push_back(TCollection_AsciiString(aSeq->Value(i)).ToCString());
+  }
+  else {
+    SALOMEDS::StringSeq_var aSeq = SALOMEDS::AttributeTableOfString::_narrow(_corba_impl)->GetRowTitles();
+    aLength = aSeq->length();
+    for(i = 0; i<aLength; i++) aVector.push_back((char*)aSeq[i].in());
+  }
+  return aVector;
+}
+
+void SALOMEDS_AttributeTableOfString::SetColumnTitle(int theIndex, const std::string& theTitle)
+{
+  CheckLocked();
+  if(_isLocal) Handle(SALOMEDSImpl_AttributeTableOfString)::DownCast(_local_impl)->SetColumnTitle(theIndex, 
+                                                                                                 (char*)theTitle.c_str());
+  else SALOMEDS::AttributeTableOfString::_narrow(_corba_impl)->SetColumnTitle(theIndex, theTitle.c_str());
+}
+
+void SALOMEDS_AttributeTableOfString::SetColumnTitles(const std::vector<std::string>& theTitles)
+{
+  CheckLocked();
+  int aLength = theTitles.size(), i;
+  if(_isLocal) {
+    Handle(TColStd_HSequenceOfExtendedString) aSeq = new TColStd_HSequenceOfExtendedString;
+    for(i = 0; i < aLength; i++) aSeq->Append((char*)theTitles[i].c_str());
+    Handle(SALOMEDSImpl_AttributeTableOfString)::DownCast(_local_impl)->SetColumnTitles(aSeq);
+  }
+  else {
+    SALOMEDS::StringSeq_var aSeq = new SALOMEDS::StringSeq();
+    aSeq->length(aLength);
+    for(i = 0; i < aLength; i++) aSeq[i] = (char*)theTitles[i].c_str();
+    SALOMEDS::AttributeTableOfString::_narrow(_corba_impl)->SetColumnTitles(aSeq);
+  }
+}
+
+std::vector<std::string> SALOMEDS_AttributeTableOfString::GetColumnTitles()
+{
+  std::vector<std::string> aVector;
+  int aLength, i;
+  if(_isLocal) {
+    Handle(TColStd_HSequenceOfExtendedString) aSeq;
+    aSeq = Handle(SALOMEDSImpl_AttributeTableOfString)::DownCast(_local_impl)->GetColumnTitles();
+    aLength = aSeq->Length();
+    for(i = 1; i<= aLength; i++) aVector.push_back(TCollection_AsciiString(aSeq->Value(i)).ToCString());
+  }
+  else {
+    SALOMEDS::StringSeq_var aSeq = SALOMEDS::AttributeTableOfString::_narrow(_corba_impl)->GetColumnTitles();
+    aLength = aSeq->length();
+    for(i = 0; i<aLength; i++) aVector.push_back((char*)aSeq[i].in());
+  }
+  return aVector;
+}
+
+void SALOMEDS_AttributeTableOfString::SetRowUnit(int theIndex, const std::string& theUnit)
+{
+  CheckLocked();
+  if(_isLocal) Handle(SALOMEDSImpl_AttributeTableOfString)::DownCast(_local_impl)->SetRowUnit(theIndex, 
+                                                                                             (char*)theUnit.c_str());
+  else SALOMEDS::AttributeTableOfString::_narrow(_corba_impl)->SetRowUnit(theIndex, theUnit.c_str());
+}
+
+void SALOMEDS_AttributeTableOfString::SetRowUnits(const std::vector<std::string>& theUnits)
+{
+  CheckLocked();
+  int aLength = theUnits.size(), i;
+  if(_isLocal) {
+    Handle(TColStd_HSequenceOfExtendedString) aSeq = new TColStd_HSequenceOfExtendedString;
+    for(i = 0; i < aLength; i++) aSeq->Append((char*)theUnits[i].c_str());
+    Handle(SALOMEDSImpl_AttributeTableOfString)::DownCast(_local_impl)->SetRowUnits(aSeq);
+  }
+  else {
+    SALOMEDS::StringSeq_var aSeq = new SALOMEDS::StringSeq();
+    aSeq->length(aLength);
+    for(i = 0; i < aLength; i++) aSeq[i] = (char*)theUnits[i].c_str();
+    SALOMEDS::AttributeTableOfString::_narrow(_corba_impl)->SetRowUnits(aSeq);
+  }
+}
+
+std::vector<std::string> SALOMEDS_AttributeTableOfString::GetRowUnits()
+{
+  std::vector<std::string> aVector;
+  int aLength, i;
+  if(_isLocal) {
+    Handle(TColStd_HSequenceOfExtendedString) aSeq;
+    aSeq = Handle(SALOMEDSImpl_AttributeTableOfString)::DownCast(_local_impl)->GetRowUnits();
+    aLength = aSeq->Length();
+    for(i = 1; i<= aLength; i++) aVector.push_back(TCollection_AsciiString(aSeq->Value(i)).ToCString());
+  }
+  else {
+    SALOMEDS::StringSeq_var aSeq = SALOMEDS::AttributeTableOfString::_narrow(_corba_impl)->GetRowUnits();
+    aLength = aSeq->length();
+    for(i = 0; i<aLength; i++) aVector.push_back((char*)aSeq[i].in());
+  }
+  return aVector;
+}
+
+int SALOMEDS_AttributeTableOfString::GetNbRows()
+{
+  int aNb;
+  if(_isLocal) aNb = Handle(SALOMEDSImpl_AttributeTableOfString)::DownCast(_local_impl)->GetNbRows();
+  else aNb = SALOMEDS::AttributeTableOfString::_narrow(_corba_impl)->GetNbRows();
+  return aNb;
+}
+
+int SALOMEDS_AttributeTableOfString::GetNbColumns()
+{  
+  int aNb;
+  if(_isLocal) aNb = Handle(SALOMEDSImpl_AttributeTableOfString)::DownCast(_local_impl)->GetNbColumns();
+  else aNb = SALOMEDS::AttributeTableOfString::_narrow(_corba_impl)->GetNbColumns();
+  return aNb;
+  
+}
+
+void SALOMEDS_AttributeTableOfString::AddRow(const std::vector<std::string>& theData)
+{
+  CheckLocked();
+  int aLength = theData.size(), i;
+  if(_isLocal) {
+    Handle(SALOMEDSImpl_AttributeTableOfString) aTable;
+    aTable = Handle(SALOMEDSImpl_AttributeTableOfString)::DownCast(_local_impl);
+    Handle(TColStd_HSequenceOfExtendedString) aRow = new TColStd_HSequenceOfExtendedString;
+    for (int i = 0; i < aLength; i++) aRow->Append((char*)theData[i].c_str());
+    try {
+      aTable->SetRowData(aTable->GetNbRows() + 1, aRow);
+    }   
+    catch(...) {
+      throw SALOMEDS::AttributeTableOfString::IncorrectArgumentLength();
+    }
+  }
+  else {
+    SALOMEDS::StringSeq_var aSeq = new SALOMEDS::StringSeq();
+    aSeq->length(aLength);
+    for(i = 0; i < aLength; i++) aSeq[i] = (char*)theData[i].c_str();
+    SALOMEDS::AttributeTableOfString::_narrow(_corba_impl)->AddRow(aSeq);
+  }
+}
+
+void SALOMEDS_AttributeTableOfString::SetRow(int theRow, const std::vector<std::string>& theData)
+{
+  CheckLocked();
+  int aLength = theData.size(), i;
+  if(_isLocal) {
+    Handle(SALOMEDSImpl_AttributeTableOfString) aTable;
+    aTable = Handle(SALOMEDSImpl_AttributeTableOfString)::DownCast(_local_impl);
+    Handle(TColStd_HSequenceOfExtendedString) aRow = new TColStd_HSequenceOfExtendedString;
+    for (int i = 0; i < aLength; i++) aRow->Append((char*)theData[i].c_str());
+    try {
+      aTable->SetRowData(theRow, aRow);
+    }   
+    catch(...) {
+      throw SALOMEDS::AttributeTableOfString::IncorrectArgumentLength();
+    }
+  }
+  else {
+    SALOMEDS::StringSeq_var aSeq = new SALOMEDS::StringSeq();
+    aSeq->length(aLength);
+    for(i = 0; i < aLength; i++) aSeq[i] = (char*)theData[i].c_str();
+    SALOMEDS::AttributeTableOfString::_narrow(_corba_impl)->SetRow(theRow, aSeq);
+  }
+}
+
+std::vector<std::string> SALOMEDS_AttributeTableOfString::GetRow(int theRow)
+{
+  std::vector<std::string> aVector;
+  int aLength, i;
+  if(_isLocal) {
+    Handle(TColStd_HSequenceOfExtendedString) aRow; 
+    aRow = Handle(SALOMEDSImpl_AttributeTableOfString)::DownCast(_local_impl)->GetRowData(theRow);
+    aLength = aRow->Length();
+    for(i = 1; i<= aLength; i++) aVector.push_back(TCollection_AsciiString(aRow->Value(i)).ToCString());
+  }
+  else {
+    SALOMEDS::StringSeq_var aRow = SALOMEDS::AttributeTableOfString::_narrow(_corba_impl)->GetRow(theRow);
+    for(i = 0; i < aLength; i++) aVector.push_back((char*)aRow[i].in());
+  }
+
+  return aVector;
+}
+
+void SALOMEDS_AttributeTableOfString::AddColumn(const std::vector<std::string>& theData)
+{
+  CheckLocked();
+  int aLength = theData.size(), i;
+  if(_isLocal) {
+    Handle(SALOMEDSImpl_AttributeTableOfString) aTable;
+    aTable = Handle(SALOMEDSImpl_AttributeTableOfString)::DownCast(_local_impl);
+    Handle(TColStd_HSequenceOfExtendedString) aColumn = new TColStd_HSequenceOfExtendedString;
+    for (int i = 0; i < aLength; i++) aColumn->Append((char*)theData[i].c_str());
+    try {
+      aTable->SetColumnData(aTable->GetNbColumns() + 1, aColumn);
+    }   
+    catch(...) {
+      throw SALOMEDS::AttributeTableOfString::IncorrectArgumentLength();
+    }
+  }
+  else {
+    SALOMEDS::StringSeq_var aColumn = new SALOMEDS::StringSeq();
+    aColumn->length(aLength);
+    for(i = 0; i < aLength; i++) aColumn[i] = (char*)theData[i].c_str();
+    SALOMEDS::AttributeTableOfString::_narrow(_corba_impl)->AddColumn(aColumn);
+  }
+}
+
+void SALOMEDS_AttributeTableOfString::SetColumn(int theColumn, const std::vector<std::string>& theData)
+{
+  CheckLocked();
+  int aLength = theData.size(), i;
+  if(_isLocal) {
+    Handle(SALOMEDSImpl_AttributeTableOfString) aTable;
+    aTable = Handle(SALOMEDSImpl_AttributeTableOfString)::DownCast(_local_impl);
+    Handle(TColStd_HSequenceOfExtendedString) aColumn = new TColStd_HSequenceOfExtendedString;
+    for (int i = 0; i < aLength; i++) aColumn->Append((char*)theData[i].c_str());
+    try {
+      aTable->SetRowData(theColumn, aColumn);
+    }   
+    catch(...) {
+      throw SALOMEDS::AttributeTableOfString::IncorrectArgumentLength();
+    }
+  }
+  else {
+    SALOMEDS::StringSeq_var aColumn = new SALOMEDS::StringSeq();
+    aColumn->length(aLength);
+    for(i = 0; i < aLength; i++) aColumn[i] = (char*)theData[i].c_str();
+    SALOMEDS::AttributeTableOfString::_narrow(_corba_impl)->SetRow(theColumn, aColumn);
+  }
+}
+
+std::vector<std::string> SALOMEDS_AttributeTableOfString::GetColumn(int theColumn)
+{
+  std::vector<std::string> aVector;
+  int aLength, i;
+  if(_isLocal) {
+    Handle(TColStd_HSequenceOfExtendedString) aColumn; 
+    aColumn = Handle(SALOMEDSImpl_AttributeTableOfString)::DownCast(_local_impl)->GetColumnData(theColumn);
+    aLength = aColumn->Length();
+    for(i = 1; i<= aLength; i++) aVector.push_back(TCollection_AsciiString(aColumn->Value(i)).ToCString());
+  }
+  else {
+    SALOMEDS::StringSeq_var aColumn = SALOMEDS::AttributeTableOfString::_narrow(_corba_impl)->GetColumn(theColumn);
+    for(i = 0; i < aLength; i++) aVector.push_back(aColumn[i].in());
+  }
+  return aVector;
+}
+
+void SALOMEDS_AttributeTableOfString::PutValue(const std::string& theValue, int theRow, int theColumn)
+{
+  CheckLocked();
+  if(_isLocal) {
+    try {
+      Handle(SALOMEDSImpl_AttributeTableOfString)::DownCast(_local_impl)->PutValue((char*)theValue.c_str(), 
+                                                                                  theRow, 
+                                                                                  theColumn);
+    }   
+    catch(...) {
+      throw SALOMEDS::AttributeTableOfString::IncorrectIndex();
+    }
+  }
+  else {
+    SALOMEDS::AttributeTableOfString::_narrow(_corba_impl)->PutValue(theValue.c_str(), theRow, theColumn);
+  }
+}
+
+bool SALOMEDS_AttributeTableOfString::HasValue(int theRow, int theColumn)
+{
+  bool ret;
+  if(_isLocal) ret = Handle(SALOMEDSImpl_AttributeTableOfString)::DownCast(_local_impl)->HasValue(theRow, theColumn);
+  else ret = SALOMEDS::AttributeTableOfString::_narrow(_corba_impl)->HasValue(theRow, theColumn);
+  return ret;
+}
+
+std::string SALOMEDS_AttributeTableOfString::GetValue(int theRow, int theColumn)
+{
+  std::string aValue;
+  if(_isLocal) {
+    try {
+      aValue = 
+          TCollection_AsciiString(Handle(SALOMEDSImpl_AttributeTableOfString)::DownCast(_local_impl)->GetValue(theRow,
+                                                                                                              theColumn)).ToCString();
+    }   
+    catch(...) {
+      throw SALOMEDS::AttributeTableOfString::IncorrectIndex();
+    }
+  }
+  else {
+    aValue = SALOMEDS::AttributeTableOfString::_narrow(_corba_impl)->GetValue(theRow, theColumn);
+  }
+  return aValue;
+}
+
+std::vector<int> SALOMEDS_AttributeTableOfString::GetRowSetIndices(int theRow)
+{
+  std::vector<int> aVector;
+  int aLength, i;
+  if(_isLocal) {
+    Handle(TColStd_HSequenceOfInteger) aSet; 
+    aSet = Handle(SALOMEDSImpl_AttributeTableOfString)::DownCast(_local_impl)->GetSetRowIndices(theRow);
+    aLength = aSet->Length();
+    for(i = 1; i<= aLength; i++) aVector.push_back(aSet->Value(i));
+  }
+  else {
+    SALOMEDS::LongSeq_var aSet = SALOMEDS::AttributeTableOfString::_narrow(_corba_impl)->GetRowSetIndices(theRow);
+    for(i = 0; i < aLength; i++) aVector.push_back(aSet[i]);
+  }
+  return aVector;
+}
+
+void SALOMEDS_AttributeTableOfString::SetNbColumns(int theNbColumns)
+{
+  if(_isLocal) Handle(SALOMEDSImpl_AttributeTableOfString)::DownCast(_local_impl)->SetNbColumns(theNbColumns);
+  else SALOMEDS::AttributeTableOfString::_narrow(_corba_impl)->SetNbColumns(theNbColumns);
+}
diff --git a/src/SALOMEDS/SALOMEDS_AttributeTableOfString.hxx b/src/SALOMEDS/SALOMEDS_AttributeTableOfString.hxx
new file mode 100644 (file)
index 0000000..cfffe3e
--- /dev/null
@@ -0,0 +1,56 @@
+//  File   : SALOMEDS_AttributeTableOfString.hxx
+//  Author : Sergey RUIN
+//  Module : SALOME
+
+#ifndef SALOMEDS_AttributeTableOfString_HeaderFile
+#define SALOMEDS_AttributeTableOfString_HeaderFile
+
+#include "SALOMEDSClient_AttributeTableOfString.hxx"
+#include "SALOMEDS_GenericAttribute.hxx"
+#include "SALOMEDSImpl_AttributeTableOfString.hxx"
+
+// IDL headers
+#include <SALOMEconfig.h>
+#include CORBA_SERVER_HEADER(SALOMEDS)
+#include CORBA_SERVER_HEADER(SALOMEDS_Attributes)
+
+#include <vector>
+
+class SALOMEDS_AttributeTableOfString: public SALOMEDS_GenericAttribute, public SALOMEDSClient_AttributeTableOfString
+{
+public:  
+  SALOMEDS_AttributeTableOfString(const Handle(SALOMEDSImpl_AttributeTableOfString)& theAttr);
+  SALOMEDS_AttributeTableOfString(SALOMEDS::AttributeTableOfString_ptr theAttr);
+  ~SALOMEDS_AttributeTableOfString();
+
+  virtual void SetTitle(const std::string& theTitle);
+  virtual std::string GetTitle();
+  virtual void SetRowTitle(int theIndex, const std::string& theTitle);
+  virtual void SetRowTitles(const std::vector<std::string>& theTitles);
+  virtual std::vector<std::string> GetRowTitles();
+  virtual void SetColumnTitle(int theIndex, const std::string& theTitle);
+  virtual void SetColumnTitles(const std::vector<std::string>& theTitles);
+  virtual std::vector<std::string> GetColumnTitles();
+
+  virtual void SetRowUnit(int theIndex, const std::string& theUnit);
+  virtual void SetRowUnits(const std::vector<std::string>& theUnits);
+  virtual std::vector<std::string> GetRowUnits();
+
+  virtual int GetNbRows();
+  virtual int GetNbColumns();
+  virtual void AddRow(const std::vector<std::string>& theData);
+  virtual void SetRow(int theRow, const std::vector<std::string>& theData);
+  virtual std::vector<std::string> GetRow(int theRow);
+  virtual void AddColumn(const std::vector<std::string>& theData);
+  virtual void SetColumn(int theColumn, const std::vector<std::string>& theData);
+  virtual std::vector<std::string> GetColumn(int theColumn);
+  virtual void PutValue(const std::string& theValue, int theRow, int theColumn);
+  virtual bool HasValue(int theRow, int theColumn);
+  virtual std::string GetValue(int theRow, int theColumn);
+
+  virtual std::vector<int> GetRowSetIndices(int theRow);
+  virtual void SetNbColumns(int theNbColumns);    
+
+};
+
+#endif
index 8527cf8db7e8a12b903f27f3641eecca8a672818..d893b5888f05c384c02c2c192c0e306f5b8c4e00 100644 (file)
@@ -1,60 +1,41 @@
-//  SALOME SALOMEDS : data structure of SALOME and sources of Salome data server 
-//
-//  Copyright (C) 2003  CEA/DEN, EDF R&D
-//
-//
-//
 //  File   : SALOMEDS_AttributeTableOfString_i.cxx
-//  Author : Sergey Ruin
+//  Author : Sergey RUIN
 //  Module : SALOME
 
+
 #include <TCollection_ExtendedString.hxx>
 #include <TCollection_AsciiString.hxx>
-#include <TColStd_HSequenceOfExtendedString.hxx>
 
+#include "SALOMEDS_AttributeTableOfString_i.hxx"
+#include "SALOMEDS.hxx"
+
+#include <TColStd_HSequenceOfExtendedString.hxx>
 #include <Standard_Failure.hxx>
 #include <Standard_ErrorHandler.hxx>
 
 #include <strstream>
 #include <string>
 
-#include "SALOMEDS_AttributeTableOfString_i.hxx"
-
 #include "Utils_ExceptHandlers.hxx"
 
-UNEXPECT_CATCH(ATS_IncorrectIndex, SALOMEDS::AttributeTableOfString::IncorrectIndex);
-UNEXPECT_CATCH(ATS_IncorrectArgumentLength, SALOMEDS::AttributeTableOfString::IncorrectArgumentLength);
-
 using namespace std;
-#define SEPARATOR '\1'
 
-static TCollection_ExtendedString getUnit(TCollection_ExtendedString theString)
-{
-  TCollection_ExtendedString aString(theString);
-  int aPos = aString.Search(SEPARATOR);
-  if(aPos <= 0 || aPos == aString.Length() ) return TCollection_ExtendedString();
-  return aString.Split(aPos);
-}
+UNEXPECT_CATCH(ATS_IncorrectIndex, SALOMEDS::AttributeTableOfString::IncorrectIndex);
+UNEXPECT_CATCH(ATS_IncorrectArgumentLength, SALOMEDS::AttributeTableOfString::IncorrectArgumentLength);
 
-static TCollection_ExtendedString getTitle(TCollection_ExtendedString theString)
+void SALOMEDS_AttributeTableOfString_i::SetTitle(const char* theTitle) 
 {
-  TCollection_ExtendedString aString(theString);
-  int aPos = aString.Search(SEPARATOR);
-  if(aPos < 1) return aString;
-  if(aPos == 1) return TCollection_ExtendedString();
-  aString.Split(aPos-1);
-  return aString;
-}
-
-void SALOMEDS_AttributeTableOfString_i::SetTitle(const char* theTitle) {
+  SALOMEDS::Locker lock;
   CheckLocked();
-  Handle(SALOMEDS_TableOfStringAttribute) aTable = Handle(SALOMEDS_TableOfStringAttribute)::DownCast(_myAttr);
+  Handle(SALOMEDSImpl_AttributeTableOfString) aTable = Handle(SALOMEDSImpl_AttributeTableOfString)::DownCast(_impl);
   CORBA::String_var aStr = CORBA::string_dup(theTitle);
   aTable->SetTitle(TCollection_ExtendedString(aStr));
 }
 
-char* SALOMEDS_AttributeTableOfString_i::GetTitle() {
-  Handle(SALOMEDS_TableOfStringAttribute) aTable = Handle(SALOMEDS_TableOfStringAttribute)::DownCast(_myAttr);
+char* SALOMEDS_AttributeTableOfString_i::GetTitle() 
+{
+  SALOMEDS::Locker lock;
+  Handle(SALOMEDSImpl_AttributeTableOfString) aTable = Handle(SALOMEDSImpl_AttributeTableOfString)::DownCast(_impl);
   CORBA::String_var c_s = CORBA::string_dup(TCollection_AsciiString(aTable->GetTitle()).ToCString());
   return c_s._retn();
 }
@@ -62,67 +43,67 @@ char* SALOMEDS_AttributeTableOfString_i::GetTitle() {
 void SALOMEDS_AttributeTableOfString_i::SetRowTitle(CORBA::Long theIndex, const char* theTitle)
      throw (SALOMEDS::AttributeTableOfString::IncorrectIndex)
 {
+  SALOMEDS::Locker lock;
   Unexpect aCatch(ATS_IncorrectIndex);
   CheckLocked();
-  Handle(SALOMEDS_TableOfStringAttribute) aTable = Handle(SALOMEDS_TableOfStringAttribute)::DownCast(_myAttr);
+  Handle(SALOMEDSImpl_AttributeTableOfString) aTable = Handle(SALOMEDSImpl_AttributeTableOfString)::DownCast(_impl);
   if (theIndex <= 0 || theIndex > aTable->GetNbRows()) throw SALOMEDS::AttributeTableOfString::IncorrectIndex();
-  CORBA::String_var aStr = CORBA::string_dup(theTitle);
-  TCollection_ExtendedString aTitle(aStr);
-  TCollection_ExtendedString aUnit = getUnit(aTable->GetRowTitle(theIndex));
-  if(aUnit.Length() > 0) {
-    aTitle += SEPARATOR;
-    aTitle += aUnit;
-  }
 
-  aTable->SetRowTitle(theIndex, aTitle);
+  aTable->SetRowTitle(theIndex, TCollection_ExtendedString((char*)theTitle));
 }
 
 void SALOMEDS_AttributeTableOfString_i::SetRowTitles(const SALOMEDS::StringSeq& theTitles)
      throw (SALOMEDS::AttributeTableOfString::IncorrectArgumentLength)
 {
+  SALOMEDS::Locker lock;
   Unexpect aCatch(ATS_IncorrectArgumentLength);
   CheckLocked();
-  Handle(SALOMEDS_TableOfStringAttribute) aTable = Handle(SALOMEDS_TableOfStringAttribute)::DownCast(_myAttr);
+  Handle(SALOMEDSImpl_AttributeTableOfString) aTable = Handle(SALOMEDSImpl_AttributeTableOfString)::DownCast(_impl);
   if (theTitles.length() != aTable->GetNbRows()) throw SALOMEDS::AttributeTableOfString::IncorrectArgumentLength();
   for (int i = 0; i < theTitles.length(); i++) {
-    SetRowTitle(i + 1, CORBA::string_dup(theTitles[i]));
+    aTable->SetRowTitle(i + 1, TCollection_ExtendedString((char*)theTitles[i].in()));
   }
 }
 
-SALOMEDS::StringSeq* SALOMEDS_AttributeTableOfString_i::GetRowTitles() {
-  Handle(SALOMEDS_TableOfStringAttribute) aTable = Handle(SALOMEDS_TableOfStringAttribute)::DownCast(_myAttr);
+SALOMEDS::StringSeq* SALOMEDS_AttributeTableOfString_i::GetRowTitles() 
+{
+  SALOMEDS::Locker lock;
+  Handle(SALOMEDSImpl_AttributeTableOfString) aTable = Handle(SALOMEDSImpl_AttributeTableOfString)::DownCast(_impl);
   SALOMEDS::StringSeq_var aTitles = new SALOMEDS::StringSeq;
   aTitles->length(aTable->GetNbRows());
   for(int i = 0; i < aTitles->length(); i++)
-    aTitles[i] = CORBA::string_dup(TCollection_AsciiString(getTitle(aTable->GetRowTitle(i + 1))).ToCString());
+    aTitles[i] =CORBA::string_dup(TCollection_AsciiString(aTable->GetRowTitle(i + 1)).ToCString());
   return aTitles._retn();
 }
 
 void SALOMEDS_AttributeTableOfString_i::SetColumnTitle(CORBA::Long theIndex, const char* theTitle)
      throw (SALOMEDS::AttributeTableOfString::IncorrectIndex)
 {
+  SALOMEDS::Locker lock;
   Unexpect aCatch(ATS_IncorrectIndex);
   CheckLocked();
-  Handle(SALOMEDS_TableOfStringAttribute) aTable = Handle(SALOMEDS_TableOfStringAttribute)::DownCast(_myAttr);
+  Handle(SALOMEDSImpl_AttributeTableOfString) aTable = Handle(SALOMEDSImpl_AttributeTableOfString)::DownCast(_impl);
   if (theIndex <= 0 || theIndex > aTable->GetNbColumns()) throw SALOMEDS::AttributeTableOfString::IncorrectIndex();
-  CORBA::String_var aStr = CORBA::string_dup(theTitle);
-  aTable->SetColumnTitle(theIndex, TCollection_ExtendedString(aStr));
+  aTable->SetColumnTitle(theIndex, TCollection_ExtendedString((char*)theTitle));
 }
 
 void SALOMEDS_AttributeTableOfString_i::SetColumnTitles(const SALOMEDS::StringSeq& theTitles)
      throw (SALOMEDS::AttributeTableOfString::IncorrectArgumentLength)
 {
+  SALOMEDS::Locker lock;
   Unexpect aCatch(ATS_IncorrectArgumentLength);
   CheckLocked();
-  Handle(SALOMEDS_TableOfStringAttribute) aTable = Handle(SALOMEDS_TableOfStringAttribute)::DownCast(_myAttr);
+  Handle(SALOMEDSImpl_AttributeTableOfString) aTable = Handle(SALOMEDSImpl_AttributeTableOfString)::DownCast(_impl);
   if (theTitles.length() != aTable->GetNbColumns()) throw SALOMEDS::AttributeTableOfString::IncorrectArgumentLength();
   for (int i = 0; i < theTitles.length(); i++) {
-    SetColumnTitle(i + 1, CORBA::string_dup(theTitles[i]));
+    aTable->SetColumnTitle(i + 1, TCollection_ExtendedString((char*)theTitles[i].in()));
   }
 }
 
-SALOMEDS::StringSeq* SALOMEDS_AttributeTableOfString_i::GetColumnTitles() {
-  Handle(SALOMEDS_TableOfStringAttribute) aTable = Handle(SALOMEDS_TableOfStringAttribute)::DownCast(_myAttr);
+SALOMEDS::StringSeq* SALOMEDS_AttributeTableOfString_i::GetColumnTitles() 
+{
+  SALOMEDS::Locker lock;
+  Handle(SALOMEDSImpl_AttributeTableOfString) aTable = Handle(SALOMEDSImpl_AttributeTableOfString)::DownCast(_impl);
   SALOMEDS::StringSeq_var aTitles = new SALOMEDS::StringSeq;
   aTitles->length(aTable->GetNbColumns());
   for(int i = 0; i < aTitles->length(); i++)
@@ -134,53 +115,58 @@ SALOMEDS::StringSeq* SALOMEDS_AttributeTableOfString_i::GetColumnTitles() {
 void SALOMEDS_AttributeTableOfString_i::SetRowUnit(CORBA::Long theIndex, const char* theUnit)
      throw (SALOMEDS::AttributeTableOfString::IncorrectIndex)
 {
+  SALOMEDS::Locker lock;
   Unexpect aCatch(ATS_IncorrectIndex);
   CheckLocked();
-  Handle(SALOMEDS_TableOfStringAttribute) aTable = Handle(SALOMEDS_TableOfStringAttribute)::DownCast(_myAttr);
+  Handle(SALOMEDSImpl_AttributeTableOfString) aTable = Handle(SALOMEDSImpl_AttributeTableOfString)::DownCast(_impl);
   if (theIndex <= 0 || theIndex > aTable->GetNbRows()) throw SALOMEDS::AttributeTableOfString::IncorrectIndex();
-  CORBA::String_var aStr = CORBA::string_dup(theUnit);
-  TCollection_ExtendedString aTitle = getTitle(aTable->GetRowTitle(theIndex));
-  TCollection_ExtendedString aUnit(aStr);
-  aTitle += SEPARATOR;
-  aTitle += aUnit;
-  aTable->SetRowTitle(theIndex, aTitle);
+  aTable->SetRowUnit(theIndex, TCollection_ExtendedString((char*)theUnit));
 }
 
 void SALOMEDS_AttributeTableOfString_i::SetRowUnits(const SALOMEDS::StringSeq& theUnits)
      throw (SALOMEDS::AttributeTableOfString::IncorrectArgumentLength)
 {
+  SALOMEDS::Locker lock;
   Unexpect aCatch(ATS_IncorrectArgumentLength);
   CheckLocked();
-  Handle(SALOMEDS_TableOfStringAttribute) aTable = Handle(SALOMEDS_TableOfStringAttribute)::DownCast(_myAttr);
+  Handle(SALOMEDSImpl_AttributeTableOfString) aTable = Handle(SALOMEDSImpl_AttributeTableOfString)::DownCast(_impl);
   if (theUnits.length() != aTable->GetNbRows()) throw SALOMEDS::AttributeTableOfString::IncorrectArgumentLength();
   for (int i = 0; i < theUnits.length(); i++) {
-    SetRowUnit(i + 1, CORBA::string_dup(theUnits[i]));
+    aTable->SetRowUnit(i + 1, TCollection_ExtendedString((char*)theUnits[i].in()));
   }
 }
 
-SALOMEDS::StringSeq* SALOMEDS_AttributeTableOfString_i::GetRowUnits() {
-  Handle(SALOMEDS_TableOfStringAttribute) aTable = Handle(SALOMEDS_TableOfStringAttribute)::DownCast(_myAttr);
+SALOMEDS::StringSeq* SALOMEDS_AttributeTableOfString_i::GetRowUnits() 
+{
+  SALOMEDS::Locker lock;
+  Handle(SALOMEDSImpl_AttributeTableOfString) aTable = Handle(SALOMEDSImpl_AttributeTableOfString)::DownCast(_impl);
   SALOMEDS::StringSeq_var aUnits = new SALOMEDS::StringSeq;
   aUnits->length(aTable->GetNbRows());
   for(int i = 0; i < aUnits->length(); i++)
-    aUnits[i] = CORBA::string_dup(TCollection_AsciiString(getUnit(aTable->GetRowTitle(i + 1))).ToCString());
+    aUnits[i] = CORBA::string_dup(TCollection_AsciiString(aTable->GetRowUnit(i + 1)).ToCString());
   return aUnits._retn();
 }
 
 
-CORBA::Long SALOMEDS_AttributeTableOfString_i::GetNbRows() {
-  return Handle(SALOMEDS_TableOfStringAttribute)::DownCast(_myAttr)->GetNbRows();
+CORBA::Long SALOMEDS_AttributeTableOfString_i::GetNbRows() 
+{
+  SALOMEDS::Locker lock;
+  return Handle(SALOMEDSImpl_AttributeTableOfString)::DownCast(_impl)->GetNbRows();
 }
-CORBA::Long SALOMEDS_AttributeTableOfString_i::GetNbColumns() {
-  return Handle(SALOMEDS_TableOfStringAttribute)::DownCast(_myAttr)->GetNbColumns();
+
+CORBA::Long SALOMEDS_AttributeTableOfString_i::GetNbColumns() 
+{
+  SALOMEDS::Locker lock;
+  return Handle(SALOMEDSImpl_AttributeTableOfString)::DownCast(_impl)->GetNbColumns();
 }
 
 void SALOMEDS_AttributeTableOfString_i::AddRow(const SALOMEDS::StringSeq& theData)
      throw (SALOMEDS::AttributeTableOfString::IncorrectArgumentLength)
 {
+  SALOMEDS::Locker lock;
   Unexpect aCatch(ATS_IncorrectArgumentLength);
   CheckLocked();
-  Handle(SALOMEDS_TableOfStringAttribute) aTable = Handle(SALOMEDS_TableOfStringAttribute)::DownCast(_myAttr);
+  Handle(SALOMEDSImpl_AttributeTableOfString) aTable = Handle(SALOMEDSImpl_AttributeTableOfString)::DownCast(_impl);
   
   Handle(TColStd_HSequenceOfExtendedString) aRow = new TColStd_HSequenceOfExtendedString;
   for (int i = 0; i < theData.length(); i++) aRow->Append(TCollection_AsciiString(CORBA::string_dup(theData[i])));
@@ -190,9 +176,10 @@ void SALOMEDS_AttributeTableOfString_i::AddRow(const SALOMEDS::StringSeq& theDat
 void SALOMEDS_AttributeTableOfString_i::SetRow(CORBA::Long theRow, const SALOMEDS::StringSeq& theData)
      throw (SALOMEDS::AttributeTableOfString::IncorrectArgumentLength, SALOMEDS::AttributeTableOfString::IncorrectIndex)
 {
+  SALOMEDS::Locker lock;
   Unexpect aCatch(ATS_IncorrectArgumentLength);
   CheckLocked();
-  Handle(SALOMEDS_TableOfStringAttribute) aTable = Handle(SALOMEDS_TableOfStringAttribute)::DownCast(_myAttr);
+  Handle(SALOMEDSImpl_AttributeTableOfString) aTable = Handle(SALOMEDSImpl_AttributeTableOfString)::DownCast(_impl);
   
   Handle(TColStd_HSequenceOfExtendedString) aRow = new TColStd_HSequenceOfExtendedString;
   for (int i = 0; i < theData.length(); i++) aRow->Append(TCollection_AsciiString(CORBA::string_dup(theData[i])));
@@ -202,8 +189,9 @@ void SALOMEDS_AttributeTableOfString_i::SetRow(CORBA::Long theRow, const SALOMED
 SALOMEDS::StringSeq* SALOMEDS_AttributeTableOfString_i::GetRow(CORBA::Long theRow)
      throw (SALOMEDS::AttributeTableOfString::IncorrectIndex)
 {
+  SALOMEDS::Locker lock;
   Unexpect aCatch(ATS_IncorrectIndex);
-  Handle(SALOMEDS_TableOfStringAttribute) aTable = Handle(SALOMEDS_TableOfStringAttribute)::DownCast(_myAttr);
+  Handle(SALOMEDSImpl_AttributeTableOfString) aTable = Handle(SALOMEDSImpl_AttributeTableOfString)::DownCast(_impl);
   if (theRow <= 0 || theRow > aTable->GetNbRows()) throw SALOMEDS::AttributeTableOfString::IncorrectIndex();
 
   SALOMEDS::StringSeq_var CorbaSeq = new SALOMEDS::StringSeq;
@@ -218,9 +206,10 @@ SALOMEDS::StringSeq* SALOMEDS_AttributeTableOfString_i::GetRow(CORBA::Long theRo
 void SALOMEDS_AttributeTableOfString_i::AddColumn(const SALOMEDS::StringSeq& theData)
      throw (SALOMEDS::AttributeTableOfString::IncorrectArgumentLength)
 {
+  SALOMEDS::Locker lock;
   Unexpect aCatch(ATS_IncorrectArgumentLength);
   CheckLocked();
-  Handle(SALOMEDS_TableOfStringAttribute) aTable = Handle(SALOMEDS_TableOfStringAttribute)::DownCast(_myAttr);
+  Handle(SALOMEDSImpl_AttributeTableOfString) aTable = Handle(SALOMEDSImpl_AttributeTableOfString)::DownCast(_impl);
   
   Handle(TColStd_HSequenceOfExtendedString) aColumn = new TColStd_HSequenceOfExtendedString;
   for (int i = 0; i < theData.length(); i++) aColumn->Append(TCollection_AsciiString(CORBA::string_dup(theData[i])));
@@ -230,9 +219,10 @@ void SALOMEDS_AttributeTableOfString_i::AddColumn(const SALOMEDS::StringSeq& the
 void SALOMEDS_AttributeTableOfString_i::SetColumn(CORBA::Long theColumn, const SALOMEDS::StringSeq& theData)
      throw (SALOMEDS::AttributeTableOfString::IncorrectArgumentLength, SALOMEDS::AttributeTableOfString::IncorrectIndex)
 {
+  SALOMEDS::Locker lock;
   Unexpect aCatch(ATS_IncorrectArgumentLength);
   CheckLocked();
-  Handle(SALOMEDS_TableOfStringAttribute) aTable = Handle(SALOMEDS_TableOfStringAttribute)::DownCast(_myAttr);
+  Handle(SALOMEDSImpl_AttributeTableOfString) aTable = Handle(SALOMEDSImpl_AttributeTableOfString)::DownCast(_impl);
   
   Handle(TColStd_HSequenceOfExtendedString) aColumn = new TColStd_HSequenceOfExtendedString;
   for (int i = 0; i < theData.length(); i++) aColumn->Append(TCollection_AsciiString(CORBA::string_dup(theData[i])));
@@ -242,8 +232,9 @@ void SALOMEDS_AttributeTableOfString_i::SetColumn(CORBA::Long theColumn, const S
 SALOMEDS::StringSeq* SALOMEDS_AttributeTableOfString_i::GetColumn(CORBA::Long theColumn)
      throw (SALOMEDS::AttributeTableOfString::IncorrectIndex)
 {
+  SALOMEDS::Locker lock;
   Unexpect aCatch(ATS_IncorrectIndex);
-  Handle(SALOMEDS_TableOfStringAttribute) aTable = Handle(SALOMEDS_TableOfStringAttribute)::DownCast(_myAttr);
+  Handle(SALOMEDSImpl_AttributeTableOfString) aTable = Handle(SALOMEDSImpl_AttributeTableOfString)::DownCast(_impl);
   if (theColumn <= 0 || theColumn > aTable->GetNbColumns()) throw SALOMEDS::AttributeTableOfString::IncorrectIndex();
 
   SALOMEDS::StringSeq_var CorbaSeq = new SALOMEDS::StringSeq;
@@ -258,23 +249,27 @@ SALOMEDS::StringSeq* SALOMEDS_AttributeTableOfString_i::GetColumn(CORBA::Long th
 void SALOMEDS_AttributeTableOfString_i::PutValue(const char* theValue, CORBA::Long theRow, CORBA::Long theColumn)
      throw (SALOMEDS::AttributeTableOfString::IncorrectIndex)
 {
+  SALOMEDS::Locker lock;
   Unexpect aCatch(ATS_IncorrectIndex);
   CheckLocked();
-  Handle(SALOMEDS_TableOfStringAttribute) aTable = Handle(SALOMEDS_TableOfStringAttribute)::DownCast(_myAttr);
+  Handle(SALOMEDSImpl_AttributeTableOfString) aTable = Handle(SALOMEDSImpl_AttributeTableOfString)::DownCast(_impl);
   char* aValue = CORBA::string_dup(theValue);
 
   aTable->PutValue(aValue, theRow, theColumn);
 }
 
-CORBA::Boolean SALOMEDS_AttributeTableOfString_i::HasValue(CORBA::Long theRow, CORBA::Long theColumn) {
-  return Handle(SALOMEDS_TableOfStringAttribute)::DownCast(_myAttr)->HasValue(theRow, theColumn);
+CORBA::Boolean SALOMEDS_AttributeTableOfString_i::HasValue(CORBA::Long theRow, CORBA::Long theColumn) 
+{
+  SALOMEDS::Locker lock;
+  return Handle(SALOMEDSImpl_AttributeTableOfString)::DownCast(_impl)->HasValue(theRow, theColumn);
 }
 
 char* SALOMEDS_AttributeTableOfString_i::GetValue(CORBA::Long theRow, CORBA::Long theColumn)
      throw (SALOMEDS::AttributeTableOfString::IncorrectIndex)
 {
+  SALOMEDS::Locker lock;
   Unexpect aCatch(ATS_IncorrectIndex);
-  Handle(SALOMEDS_TableOfStringAttribute) aTable = Handle(SALOMEDS_TableOfStringAttribute)::DownCast(_myAttr);
+  Handle(SALOMEDSImpl_AttributeTableOfString) aTable = Handle(SALOMEDSImpl_AttributeTableOfString)::DownCast(_impl);
   if (theRow > aTable->GetNbRows()) throw SALOMEDS::AttributeTableOfString::IncorrectIndex();
 
   TCollection_AsciiString aValue;
@@ -292,7 +287,8 @@ char* SALOMEDS_AttributeTableOfString_i::GetValue(CORBA::Long theRow, CORBA::Lon
 
 SALOMEDS::LongSeq* SALOMEDS_AttributeTableOfString_i::GetRowSetIndices(CORBA::Long theRow) 
 {
-  Handle(SALOMEDS_TableOfStringAttribute) aTable = Handle(SALOMEDS_TableOfStringAttribute)::DownCast(_myAttr);
+  SALOMEDS::Locker lock;
+  Handle(SALOMEDSImpl_AttributeTableOfString) aTable = Handle(SALOMEDSImpl_AttributeTableOfString)::DownCast(_impl);
 
   if(theRow <= 0 || theRow > aTable->GetNbRows()) throw SALOMEDS::AttributeTableOfString::IncorrectIndex();
 
@@ -308,13 +304,15 @@ SALOMEDS::LongSeq* SALOMEDS_AttributeTableOfString_i::GetRowSetIndices(CORBA::Lo
 
 void SALOMEDS_AttributeTableOfString_i::SetNbColumns(CORBA::Long theNbColumns)
 {
-  Handle(SALOMEDS_TableOfStringAttribute) aTable = Handle(SALOMEDS_TableOfStringAttribute)::DownCast(_myAttr);
+  SALOMEDS::Locker lock;
+  Handle(SALOMEDSImpl_AttributeTableOfString) aTable = Handle(SALOMEDSImpl_AttributeTableOfString)::DownCast(_impl);
   aTable->SetNbColumns(theNbColumns);
 }
 
 bool SALOMEDS_AttributeTableOfString_i::ReadFromFile(const SALOMEDS::TMPFile& theStream) 
 {
-  Handle(SALOMEDS_TableOfStringAttribute) aTable = Handle(SALOMEDS_TableOfStringAttribute)::DownCast(_myAttr);
+  SALOMEDS::Locker lock;
+  Handle(SALOMEDSImpl_AttributeTableOfString) aTable = Handle(SALOMEDSImpl_AttributeTableOfString)::DownCast(_impl);
 
   istrstream aStream((char*)&theStream[0], theStream.length());
   return aTable->RestoreFromString(aStream);
@@ -322,7 +320,8 @@ bool SALOMEDS_AttributeTableOfString_i::ReadFromFile(const SALOMEDS::TMPFile& th
 
 SALOMEDS::TMPFile*  SALOMEDS_AttributeTableOfString_i::SaveToFile()
 {
-  Handle(SALOMEDS_TableOfStringAttribute) aTable = Handle(SALOMEDS_TableOfStringAttribute)::DownCast(_myAttr);
+  SALOMEDS::Locker lock;
+  Handle(SALOMEDSImpl_AttributeTableOfString) aTable = Handle(SALOMEDSImpl_AttributeTableOfString)::DownCast(_impl);
 
   ostrstream ostr;
   aTable->ConvertToString(ostr);
@@ -332,20 +331,3 @@ SALOMEDS::TMPFile*  SALOMEDS_AttributeTableOfString_i::SaveToFile()
   return aStreamFile._retn();
 }
 
-char* SALOMEDS_AttributeTableOfString_i::Store() {
-  Handle(SALOMEDS_TableOfStringAttribute) aTable = Handle(SALOMEDS_TableOfStringAttribute)::DownCast(_myAttr);
-
-  ostrstream ostr;
-  aTable->ConvertToString(ostr);
-  string aString = ostr.rdbuf()->str();
-
-  CORBA::String_var aBuffer = CORBA::string_dup(aString.c_str());
-  return aBuffer._retn();
-}
-
-void SALOMEDS_AttributeTableOfString_i::Restore(const char* value) {
-  Handle(SALOMEDS_TableOfStringAttribute) aTable = Handle(SALOMEDS_TableOfStringAttribute)::DownCast(_myAttr);
-
-  istrstream aStream(value, strlen(value));
-  aTable->RestoreFromString(aStream);
-}
index cc2e84125556e00d2db3567fcc4a6bf52918ede8..c6290525c79a1218b06612352befaaed21fbc8bd 100644 (file)
@@ -1,31 +1,27 @@
-//  SALOME SALOMEDS : data structure of SALOME and sources of Salome data server 
-//
-//  Copyright (C) 2003  CEA/DEN, EDF R&D
-//
-//
-//
 //  File   : SALOMEDS_AttributeTableOfString_i.hxx
-//  Author : Sergey Ruin
+//  Author : Sergey RUIN
 //  Module : SALOME
 
 #ifndef SALOMEDS_AttributeTableOfString_i_HeaderFile
 #define SALOMEDS_AttributeTableOfString_i_HeaderFile
 
-#include "SALOMEDS_TableOfStringAttribute.hxx"
-#include "SALOMEDS_GenericAttribute_i.hxx"
-
 // IDL headers
 #include <SALOMEconfig.h>
 #include CORBA_SERVER_HEADER(SALOMEDS_Attributes)
 
-DEFINE_DERIVED_ATTR(AttributeTableOfString,SALOMEDS_TableOfStringAttribute,true);
+#include "SALOMEDS_GenericAttribute_i.hxx"
+#include "SALOMEDSImpl_AttributeTableOfString.hxx"
 
-class SALOMEDS_AttributeTableOfString_i: 
-  public virtual POA_SALOMEDS::AttributeTableOfString,
-  public virtual SALOMEDS_TAttributeTableOfString_i 
-{
-  DEFINE_DERIVED_ATTR_METH_DEFAULT(AttributeTableOfString,SALOMEDS_TableOfStringAttribute);
+class SALOMEDS_AttributeTableOfString_i: public virtual POA_SALOMEDS::AttributeTableOfString,
+  public virtual SALOMEDS_GenericAttribute_i {
+    
 public:
+  
+  SALOMEDS_AttributeTableOfString_i(const Handle(SALOMEDSImpl_AttributeTableOfString)& theAttr, CORBA::ORB_ptr orb) 
+    :SALOMEDS_GenericAttribute_i(theAttr, orb) {}; 
+
+  ~SALOMEDS_AttributeTableOfString_i() {};
+
   virtual void SetTitle(const char* theTitle);
   virtual char* GetTitle();
   virtual void SetRowTitle(CORBA::Long theIndex, const char* theTitle)
@@ -71,9 +67,6 @@ public:
   virtual bool ReadFromFile(const SALOMEDS::TMPFile& theStream);
   virtual SALOMEDS::TMPFile* SaveToFile();
 
-  char* Store();
-  void Restore(const char*);
-
 };
 
 #endif
diff --git a/src/SALOMEDS/SALOMEDS_AttributeTarget.cxx b/src/SALOMEDS/SALOMEDS_AttributeTarget.cxx
new file mode 100644 (file)
index 0000000..e47608f
--- /dev/null
@@ -0,0 +1,63 @@
+//  File   : SALOMEDS_AttributeTarget.cxx
+//  Author : Sergey RUIN
+//  Module : SALOME
+
+#include "SALOMEDS_AttributeTarget.hxx"
+
+#include <TColStd_HSequenceOfTransient.hxx>
+
+#include "SALOMEDSImpl_SObject.hxx"
+#include "SALOMEDS_SObject.hxx"
+
+
+SALOMEDS_AttributeTarget::SALOMEDS_AttributeTarget(const Handle(SALOMEDSImpl_AttributeTarget)& theAttr)
+:SALOMEDS_GenericAttribute(theAttr)
+{}
+
+SALOMEDS_AttributeTarget::SALOMEDS_AttributeTarget(SALOMEDS::AttributeTarget_ptr theAttr)
+:SALOMEDS_GenericAttribute(theAttr)
+{}
+
+SALOMEDS_AttributeTarget::~SALOMEDS_AttributeTarget()
+{}
+
+void SALOMEDS_AttributeTarget::Add(const _PTR(SObject)& theObject)
+{
+  SALOMEDS_SObject* aSO = dynamic_cast<SALOMEDS_SObject*>(theObject.get());
+
+  if(_isLocal) Handle(SALOMEDSImpl_AttributeTarget)::DownCast(_local_impl)->Add(aSO->GetLocalImpl());
+  else SALOMEDS::AttributeTarget::_narrow(_corba_impl)->Add(aSO->GetCORBAImpl());
+}
+
+std::vector<_PTR(SObject)> SALOMEDS_AttributeTarget::Get()
+{
+  std::vector<_PTR(SObject)> aVector;
+  int aLength, i;
+  SALOMEDSClient_SObject* aSO = NULL;
+  
+  if(_isLocal) {
+    Handle(TColStd_HSequenceOfTransient) aSeq = Handle(SALOMEDSImpl_AttributeTarget)::DownCast(_local_impl)->Get();
+    aLength = aSeq->Length();
+    for(i=1; i<=aLength; i++) {
+      aSO = new SALOMEDS_SObject(Handle(SALOMEDSImpl_SObject)::DownCast(aSeq->Value(i)));
+      aVector.push_back(_PTR(SObject)(aSO));
+    }
+  }
+  else {
+    SALOMEDS::Study::ListOfSObject_var aSeq = SALOMEDS::AttributeTarget::_narrow(_corba_impl)->Get();
+    aLength = aSeq->length();
+    aSO = new SALOMEDS_SObject(aSeq[i].in());
+    for(i = 0; i<aLength; i++) aVector.push_back(_PTR(SObject)(aSO));
+  }
+
+  return aVector;
+}
+
+void SALOMEDS_AttributeTarget::Remove(const _PTR(SObject)& theObject)
+{
+  SALOMEDS_SObject* aSO = dynamic_cast<SALOMEDS_SObject*>(theObject.get());
+
+  if(_isLocal) Handle(SALOMEDSImpl_AttributeTarget)::DownCast(_local_impl)->Remove(aSO->GetLocalImpl());
+  else SALOMEDS::AttributeTarget::_narrow(_corba_impl)->Remove(aSO->GetCORBAImpl());
+}
+
diff --git a/src/SALOMEDS/SALOMEDS_AttributeTarget.hxx b/src/SALOMEDS/SALOMEDS_AttributeTarget.hxx
new file mode 100644 (file)
index 0000000..d9a80b9
--- /dev/null
@@ -0,0 +1,31 @@
+//  File   : SALOMEDS_AttributeTarget.hxx
+//  Author : Sergey RUIN
+//  Module : SALOME
+
+#ifndef SALOMEDS_AttributeTarget_HeaderFile
+#define SALOMEDS_AttributeTarget_HeaderFile
+
+#include <vector>
+
+#include "SALOMEDSClient.hxx"
+#include "SALOMEDS_GenericAttribute.hxx"
+#include "SALOMEDSImpl_AttributeTarget.hxx"
+
+// IDL headers
+#include <SALOMEconfig.h>
+#include CORBA_SERVER_HEADER(SALOMEDS)
+#include CORBA_SERVER_HEADER(SALOMEDS_Attributes)
+
+class SALOMEDS_AttributeTarget: public SALOMEDS_GenericAttribute, public SALOMEDSClient_AttributeTarget
+{
+public:  
+  SALOMEDS_AttributeTarget(const Handle(SALOMEDSImpl_AttributeTarget)& theAttr);
+  SALOMEDS_AttributeTarget(SALOMEDS::AttributeTarget_ptr theAttr);
+  ~SALOMEDS_AttributeTarget();
+
+  virtual void Add(const _PTR(SObject)& theObject);
+  virtual std::vector<_PTR(SObject)> Get();
+  virtual void Remove(const _PTR(SObject)& theObject); 
+};
+
+#endif
index 70f7b81b920ef1d04812a3412ddf4a17d819d3c4..98ff924ad9800bece9b12c8457912d0a21abab93 100644 (file)
@@ -1,70 +1,45 @@
-//  SALOME SALOMEDS : data structure of SALOME and sources of Salome data server 
-//
-//  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
-// 
-//  This library is free software; you can redistribute it and/or 
-//  modify it under the terms of the GNU Lesser General Public 
-//  License as published by the Free Software Foundation; either 
-//  version 2.1 of the License. 
-// 
-//  This library is distributed in the hope that it will be useful, 
-//  but WITHOUT ANY WARRANTY; without even the implied warranty of 
-//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
-//  Lesser General Public License for more details. 
-// 
-//  You should have received a copy of the GNU Lesser General Public 
-//  License along with this library; if not, write to the Free Software 
-//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
-// 
-//  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
-//
-//
-//
 //  File   : SALOMEDS_AttributeTarget_i.cxx
-//  Author : Yves FRICAUD
+//  Author : Sergey RUIN
 //  Module : SALOME
-//  $Header$
 
-#include <TDF_ListIteratorOfLabelList.hxx>
-#include <TDF_LabelList.hxx>
-#include <TDF_Label.hxx>
-#include <TDF_Tool.hxx>
+
 
 #include "SALOMEDS_AttributeTarget_i.hxx"
-#include "SALOMEDS_SObject_i.hxx"
+#include "SALOMEDSImpl_SObject.hxx"
+#include "SALOMEDSImpl_Study.hxx"
+#include "SALOMEDS.hxx"
+
+#include <TColStd_HSequenceOfTransient.hxx>
 
 using namespace std;
 
-void SALOMEDS_AttributeTarget_i::Add(SALOMEDS::SObject_ptr anObject)
+void SALOMEDS_AttributeTarget_i::Add(SALOMEDS::SObject_ptr anObject) 
 {
+  SALOMEDS::Locker lock; 
   TDF_Label aLabel;
-  TDF_Tool::Label(_myAttr->Label().Data(),anObject->GetID(),aLabel,1);
-  _myAttr->Append(aLabel);
+  TDF_Tool::Label(_impl->Label().Data(),anObject->GetID(),aLabel,1);
+  (Handle(SALOMEDSImpl_AttributeTarget)::DownCast(_impl))->Add(SALOMEDSImpl_Study::SObject(aLabel));
 }
 
-SALOMEDS::Study::ListOfSObject* SALOMEDS_AttributeTarget_i::Get() {
-  TDF_LabelList aLList;
-
-  _myAttr->Get(aLList);
+SALOMEDS::Study::ListOfSObject* SALOMEDS_AttributeTarget_i::Get() 
+{
+  SALOMEDS::Locker lock; 
+  Handle(TColStd_HSequenceOfTransient) aSeq = (Handle(SALOMEDSImpl_AttributeTarget)::DownCast(_impl))->Get();
   SALOMEDS::Study::ListOfSObject_var aSList = new SALOMEDS::Study::ListOfSObject;
-
-  if (aLList.Extent() == 0) 
-    return aSList._retn();
-
-  aSList->length(aLList.Extent());
-  TDF_ListIteratorOfLabelList anIter(aLList);
-  SALOMEDS_Study_i* aStudy = _mySObject->GetStudyServant();
-  for(int index = 0; anIter.More(); anIter.Next(), index++){
-    const TDF_Label& aLabel = anIter.Value();
-    aSList[index] = SALOMEDS_SObject_i::NewRef(aStudy,aLabel)._retn();
+  int aLength = aSeq->Length(), i;
+  if (aLength == 0) return aSList._retn();
+  aSList->length(aLength);
+  for(i=1; i <=aLength; i++) {
+    SALOMEDS::SObject_var anSO = SALOMEDS_SObject_i::New(Handle(SALOMEDSImpl_SObject)::DownCast(aSeq->Value(i)), _orb);
+    aSList[i-1] = anSO;
   }
   return aSList._retn();
 }
 
-void SALOMEDS_AttributeTarget_i::Remove(SALOMEDS::SObject_ptr anObject) {
+void SALOMEDS_AttributeTarget_i::Remove(SALOMEDS::SObject_ptr anObject) 
+{
+  SALOMEDS::Locker lock; 
   TDF_Label aLabel;
-  CORBA::String_var anID = anObject->GetID();
-  TDF_Tool::Label(_myAttr->Label().Data(),anID.inout(),aLabel,1);
-  _myAttr->Remove(aLabel);
+  TDF_Tool::Label(_impl->Label().Data(),anObject->GetID(),aLabel,1);
+  (Handle(SALOMEDSImpl_AttributeTarget)::DownCast(_impl))->Remove(SALOMEDSImpl_Study::SObject(aLabel));
 }
index d6181dbcba4f6569d5ea91c714f72ed6be30e10c..03e70cd896f60f6b1dd8adcf502b5d4ac3e1d9ab 100644 (file)
@@ -1,30 +1,6 @@
-//  SALOME SALOMEDS : data structure of SALOME and sources of Salome data server 
-//
-//  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
-// 
-//  This library is free software; you can redistribute it and/or 
-//  modify it under the terms of the GNU Lesser General Public 
-//  License as published by the Free Software Foundation; either 
-//  version 2.1 of the License. 
-// 
-//  This library is distributed in the hope that it will be useful, 
-//  but WITHOUT ANY WARRANTY; without even the implied warranty of 
-//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
-//  Lesser General Public License for more details. 
-// 
-//  You should have received a copy of the GNU Lesser General Public 
-//  License along with this library; if not, write to the Free Software 
-//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
-// 
-//  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
-//
-//
-//
 //  File   : SALOMEDS_AttributeTarget_i.hxx
-//  Author : Yves FRICAUD
+//  Author : Sergey RUIN
 //  Module : SALOME
-//  $Header:
 
 #ifndef SALOMEDS_AttributeTarget_i_HeaderFile
 #define SALOMEDS_AttributeTarget_i_HeaderFile
 // IDL headers
 #include <SALOMEconfig.h>
 #include CORBA_SERVER_HEADER(SALOMEDS_Attributes)
-
-#include "SALOMEDS_TargetAttribute.hxx"
 #include "SALOMEDS_GenericAttribute_i.hxx"
+#include "SALOMEDSImpl_AttributeTarget.hxx"
 
-DEFINE_DERIVED_ATTR(AttributeTarget,SALOMEDS_TargetAttribute,false);
-
-class SALOMEDS_AttributeTarget_i: 
-  public virtual POA_SALOMEDS::AttributeTarget,
-  public virtual SALOMEDS_TAttributeTarget_i 
+class SALOMEDS_AttributeTarget_i: public virtual POA_SALOMEDS::AttributeTarget,
+                                  public virtual SALOMEDS_GenericAttribute_i 
 {
-  DEFINE_DERIVED_ATTR_METH_DEFAULT(AttributeTarget,SALOMEDS_TargetAttribute);
 public:
+  
+  SALOMEDS_AttributeTarget_i(const Handle(SALOMEDSImpl_AttributeTarget)& theAttr, CORBA::ORB_ptr orb) 
+    :SALOMEDS_GenericAttribute_i(theAttr, orb) {}; 
+
+  ~SALOMEDS_AttributeTarget_i() {};
+
   virtual void Add(SALOMEDS::SObject_ptr anObject) ;
   virtual SALOMEDS::Study::ListOfSObject* Get();
   virtual void Remove(SALOMEDS::SObject_ptr anObject);
-
 };
 
-
-
 #endif
diff --git a/src/SALOMEDS/SALOMEDS_AttributeTextColor.cxx b/src/SALOMEDS/SALOMEDS_AttributeTextColor.cxx
new file mode 100644 (file)
index 0000000..93b159e
--- /dev/null
@@ -0,0 +1,56 @@
+//  File   : SALOMEDS_AttributeTextColor.cxx
+//  Author : Sergey RUIN
+//  Module : SALOME
+
+#include "SALOMEDS_AttributeTextColor.hxx"
+
+#include <TColStd_HArray1OfReal.hxx>
+
+SALOMEDS_AttributeTextColor::SALOMEDS_AttributeTextColor(const Handle(SALOMEDSImpl_AttributeTextColor)& theAttr)
+:SALOMEDS_GenericAttribute(theAttr)
+{}
+
+SALOMEDS_AttributeTextColor::SALOMEDS_AttributeTextColor(SALOMEDS::AttributeTextColor_ptr theAttr)
+:SALOMEDS_GenericAttribute(theAttr)
+{}
+
+SALOMEDS_AttributeTextColor::~SALOMEDS_AttributeTextColor()
+{}
+
+
+STextColor SALOMEDS_AttributeTextColor::TextColor()
+{
+  STextColor aColor;
+  if(_isLocal) {
+    Handle(TColStd_HArray1OfReal) aSeq = Handle(SALOMEDSImpl_AttributeTextColor)::DownCast(_local_impl)->TextColor();
+    aColor.R = aSeq->Value(1);
+    aColor.G = aSeq->Value(2);
+    aColor.B = aSeq->Value(3); 
+  }
+  else {
+    SALOMEDS::Color anImplColor = SALOMEDS::AttributeTextColor::_narrow(_corba_impl)->TextColor();
+    aColor.R = anImplColor.R;
+    aColor.G = anImplColor.G;
+    aColor.B = anImplColor.B;
+  }
+  return aColor;
+}
+void SALOMEDS_AttributeTextColor::SetTextColor(STextColor value)
+{
+  CheckLocked();
+  if(_isLocal) {
+    Handle(TColStd_HArray1OfReal) aSeq = new TColStd_HArray1OfReal(1, 3);
+    aSeq->SetValue(1, value.R);
+    aSeq->SetValue(2, value.G);
+    aSeq->SetValue(3, value.B);
+    Handle(SALOMEDSImpl_AttributeTextColor)::DownCast(_local_impl)->ChangeArray(aSeq);
+  }
+  else {
+    SALOMEDS::Color aColor;
+    aColor.R = value.R;
+    aColor.G = value.G;
+    aColor.B = value.B;
+    SALOMEDS::AttributeTextColor::_narrow(_corba_impl)->SetTextColor(aColor);
+  }
+}
diff --git a/src/SALOMEDS/SALOMEDS_AttributeTextColor.hxx b/src/SALOMEDS/SALOMEDS_AttributeTextColor.hxx
new file mode 100644 (file)
index 0000000..fef62eb
--- /dev/null
@@ -0,0 +1,32 @@
+//  File   : SALOMEDS_AttributeTextColor.hxx
+//  Author : Sergey RUIN
+//  Module : SALOME
+
+#ifndef SALOMEDS_AttributeTextColor_HeaderFile
+#define SALOMEDS_AttributeTextColor_HeaderFile
+
+#include "SALOMEDSClient_AttributeTextColor.hxx"
+#include "SALOMEDS_GenericAttribute.hxx"
+#include "SALOMEDSImpl_AttributeTextColor.hxx"
+#include "SALOMEDSClient_definitions.hxx"
+
+// IDL headers
+#include <SALOMEconfig.h>
+#include CORBA_SERVER_HEADER(SALOMEDS)
+#include CORBA_SERVER_HEADER(SALOMEDS_Attributes)
+
+#include <vector>
+
+class SALOMEDS_AttributeTextColor: public SALOMEDS_GenericAttribute, public SALOMEDSClient_AttributeTextColor
+{
+public:  
+  SALOMEDS_AttributeTextColor(const Handle(SALOMEDSImpl_AttributeTextColor)& theAttr);
+  SALOMEDS_AttributeTextColor(SALOMEDS::AttributeTextColor_ptr theAttr);
+  ~SALOMEDS_AttributeTextColor();
+
+  virtual STextColor TextColor();
+  virtual void SetTextColor(STextColor value);
+
+};
+
+#endif
index 32a79e68c1f626fb5901c82cf0e8e7ed998711fc..4b9d928d6ef74d98b0c81da7051af355a0e87e2c 100644 (file)
@@ -1,39 +1,19 @@
-//  SALOME SALOMEDS : data structure of SALOME and sources of Salome data server 
-//
-//  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
-// 
-//  This library is free software; you can redistribute it and/or 
-//  modify it under the terms of the GNU Lesser General Public 
-//  License as published by the Free Software Foundation; either 
-//  version 2.1 of the License. 
-// 
-//  This library is distributed in the hope that it will be useful, 
-//  but WITHOUT ANY WARRANTY; without even the implied warranty of 
-//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
-//  Lesser General Public License for more details. 
-// 
-//  You should have received a copy of the GNU Lesser General Public 
-//  License along with this library; if not, write to the Free Software 
-//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
-// 
-//  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
-//
-//
-//
 //  File   : SALOMEDS_AttributeTextColor_i.cxx
-//  Author : Yves FRICAUD
+//  Author : Sergey RUIN
 //  Module : SALOME
-//  $Header$
+
 
 #include "SALOMEDS_AttributeTextColor_i.hxx"
+#include "SALOMEDS.hxx" 
 #include <TColStd_HArray1OfReal.hxx>
 
 using namespace std;
 
-SALOMEDS::Color SALOMEDS_AttributeTextColor_i::TextColor() {
+SALOMEDS::Color SALOMEDS_AttributeTextColor_i::TextColor() 
+{
+  SALOMEDS::Locker lock;
   SALOMEDS::Color TextColor;
-  Handle(TColStd_HArray1OfReal) anArray = Handle(SALOMEDS_TextColorAttribute)::DownCast(_myAttr)->Array();
+  Handle(TColStd_HArray1OfReal) anArray = Handle(SALOMEDSImpl_AttributeTextColor)::DownCast(_impl)->TextColor();
   if (anArray.IsNull() || anArray->Length()!=3) { 
     TextColor.R = 0;
     TextColor.G = 0;
@@ -47,28 +27,14 @@ SALOMEDS::Color SALOMEDS_AttributeTextColor_i::TextColor() {
   return TextColor;
 }
 
-void SALOMEDS_AttributeTextColor_i::SetTextColor(const SALOMEDS::Color& value) {
+void SALOMEDS_AttributeTextColor_i::SetTextColor(const SALOMEDS::Color& value) 
+{
+  SALOMEDS::Locker lock;
   CheckLocked();
   Handle(TColStd_HArray1OfReal) anArray = new TColStd_HArray1OfReal(1,3);
   anArray->SetValue(1,  value.R);
   anArray->SetValue(2, value.G);
   anArray->SetValue(3, value.B);
-  Handle(SALOMEDS_TextColorAttribute)::DownCast(_myAttr)->ChangeArray(anArray);
-}
-
-char* SALOMEDS_AttributeTextColor_i::Store() {
-  SALOMEDS::Color aColor = TextColor();
-  char *Val = new char[75];
-  sprintf(Val, "%f %f %f", (float)aColor.R, (float)aColor.G, (float)aColor.B);
-  return Val;
+  Handle(SALOMEDSImpl_AttributeTextColor)::DownCast(_impl)->ChangeArray(anArray);
 }
 
-void SALOMEDS_AttributeTextColor_i::Restore(const char* value) {
-  SALOMEDS::Color aColor;
-  float r, g, b;
-  sscanf(value, "%f %f %f", &r, &g, &b);
-  aColor.R = r;
-  aColor.G = g;
-  aColor.B = b;
-  SetTextColor(aColor);
-}
index 765eb1c166508e9b7f7dff5b4c8221eecee96c54..4a83a08a0efb5b31dab61c54e0bfdf933ad4d822 100644 (file)
@@ -1,28 +1,5 @@
-//  SALOME SALOMEDS : data structure of SALOME and sources of Salome data server 
-//
-//  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
-// 
-//  This library is free software; you can redistribute it and/or 
-//  modify it under the terms of the GNU Lesser General Public 
-//  License as published by the Free Software Foundation; either 
-//  version 2.1 of the License. 
-// 
-//  This library is distributed in the hope that it will be useful, 
-//  but WITHOUT ANY WARRANTY; without even the implied warranty of 
-//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
-//  Lesser General Public License for more details. 
-// 
-//  You should have received a copy of the GNU Lesser General Public 
-//  License along with this library; if not, write to the Free Software 
-//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
-// 
-//  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
-//
-//
-//
 //  File   : SALOMEDS_AttributeTextColor_i.hxx
-//  Author : Yves FRICAUD
+//  Author : Sergey RUIN
 //  Module : SALOME
 //  $Header$
 
 #include <SALOMEconfig.h>
 #include CORBA_SERVER_HEADER(SALOMEDS_Attributes)
 
-#include "SALOMEDS_TextColorAttribute.hxx"
 #include "SALOMEDS_GenericAttribute_i.hxx"
+#include "SALOMEDSImpl_AttributeTextColor.hxx"
 
-DEFINE_DERIVED_ATTR(AttributeTextColor,SALOMEDS_TextColorAttribute,false);
-
-class SALOMEDS_AttributeTextColor_i: 
-  public virtual POA_SALOMEDS::AttributeTextColor,
-  public virtual SALOMEDS_TAttributeTextColor_i 
+class SALOMEDS_AttributeTextColor_i: public virtual POA_SALOMEDS::AttributeTextColor,
+                                    public virtual SALOMEDS_GenericAttribute_i 
 {
-  DEFINE_DERIVED_ATTR_METH_DEFAULT(AttributeTextColor,SALOMEDS_TextColorAttribute);
 public:
+  
+  SALOMEDS_AttributeTextColor_i(const Handle(SALOMEDSImpl_AttributeTextColor)& theAttr, CORBA::ORB_ptr orb) 
+    :SALOMEDS_GenericAttribute_i(theAttr, orb) {}; 
+
+  ~SALOMEDS_AttributeTextColor_i() {};
+
   SALOMEDS::Color TextColor();
   void SetTextColor(const SALOMEDS::Color& value);
 
-  char* Store();
-  void Restore(const char*);
-
 };
 
 
diff --git a/src/SALOMEDS/SALOMEDS_AttributeTextHighlightColor.cxx b/src/SALOMEDS/SALOMEDS_AttributeTextHighlightColor.cxx
new file mode 100644 (file)
index 0000000..cbeab6d
--- /dev/null
@@ -0,0 +1,56 @@
+//  File   : SALOMEDS_AttributeTextHighlightColor.cxx
+//  Author : Sergey RUIN
+//  Module : SALOME
+
+#include "SALOMEDS_AttributeTextHighlightColor.hxx"
+
+#include <TColStd_HArray1OfReal.hxx>
+
+SALOMEDS_AttributeTextHighlightColor::SALOMEDS_AttributeTextHighlightColor(const Handle(SALOMEDSImpl_AttributeTextHighlightColor)& theAttr)
+:SALOMEDS_GenericAttribute(theAttr)
+{}
+
+SALOMEDS_AttributeTextHighlightColor::SALOMEDS_AttributeTextHighlightColor(SALOMEDS::AttributeTextHighlightColor_ptr theAttr)
+:SALOMEDS_GenericAttribute(theAttr)
+{}
+
+SALOMEDS_AttributeTextHighlightColor::~SALOMEDS_AttributeTextHighlightColor()
+{}
+
+
+STextColor SALOMEDS_AttributeTextHighlightColor::TextHighlightColor()
+{
+  STextColor aColor;
+  if(_isLocal) {
+    Handle(TColStd_HArray1OfReal) aSeq;
+    aSeq = Handle(SALOMEDSImpl_AttributeTextHighlightColor)::DownCast(_local_impl)->TextHighlightColor();
+    aColor.R = aSeq->Value(1);
+    aColor.G = aSeq->Value(2);
+    aColor.B = aSeq->Value(3); 
+  }
+  else {
+    SALOMEDS::Color anImplColor = SALOMEDS::AttributeTextHighlightColor::_narrow(_corba_impl)->TextHighlightColor();
+    aColor.R = anImplColor.R;
+    aColor.G = anImplColor.G;
+    aColor.B = anImplColor.B;
+  }
+  return aColor;
+}
+void SALOMEDS_AttributeTextHighlightColor::SetTextHighlightColor(STextColor value)
+{
+  if(_isLocal) {
+    Handle(TColStd_HArray1OfReal) aSeq = new TColStd_HArray1OfReal(1, 3);
+    aSeq->SetValue(1, value.R);
+    aSeq->SetValue(2, value.G);
+    aSeq->SetValue(3, value.B);
+    Handle(SALOMEDSImpl_AttributeTextHighlightColor)::DownCast(_local_impl)->ChangeArray(aSeq);
+  }
+  else {
+    SALOMEDS::Color aColor;
+    aColor.R = value.R;
+    aColor.G = value.G;
+    aColor.B = value.B;
+    SALOMEDS::AttributeTextHighlightColor::_narrow(_corba_impl)->SetTextHighlightColor(aColor);
+  }
+}
diff --git a/src/SALOMEDS/SALOMEDS_AttributeTextHighlightColor.hxx b/src/SALOMEDS/SALOMEDS_AttributeTextHighlightColor.hxx
new file mode 100644 (file)
index 0000000..df24286
--- /dev/null
@@ -0,0 +1,32 @@
+//  File   : SALOMEDS_AttributeTextHighlightColor.hxx
+//  Author : Sergey RUIN
+//  Module : SALOME
+
+#ifndef SALOMEDS_AttributeTextHighlightColor_HeaderFile
+#define SALOMEDS_AttributeTextHighlightColor_HeaderFile
+
+#include "SALOMEDSClient_AttributeTextHighlightColor.hxx"
+#include "SALOMEDS_GenericAttribute.hxx"
+#include "SALOMEDSImpl_AttributeTextHighlightColor.hxx"
+#include "SALOMEDSClient_definitions.hxx"
+
+// IDL headers
+#include <SALOMEconfig.h>
+#include CORBA_SERVER_HEADER(SALOMEDS)
+#include CORBA_SERVER_HEADER(SALOMEDS_Attributes)
+
+#include <vector>
+
+class SALOMEDS_AttributeTextHighlightColor: public SALOMEDS_GenericAttribute, public SALOMEDSClient_AttributeTextHighlightColor
+{
+public:  
+  SALOMEDS_AttributeTextHighlightColor(const Handle(SALOMEDSImpl_AttributeTextHighlightColor)& theAttr);
+  SALOMEDS_AttributeTextHighlightColor(SALOMEDS::AttributeTextHighlightColor_ptr theAttr);
+  ~SALOMEDS_AttributeTextHighlightColor();
+
+  virtual STextColor TextHighlightColor();
+  virtual void SetTextHighlightColor(STextColor value);
+
+};
+
+#endif
index 672d81c450e9fd92753193a248c0f1e0ac205390..8de0bd4c5a6657f71d3d9217f5249dd64acc9b9c 100644 (file)
@@ -1,39 +1,19 @@
-//  SALOME SALOMEDS : data structure of SALOME and sources of Salome data server 
-//
-//  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
-// 
-//  This library is free software; you can redistribute it and/or 
-//  modify it under the terms of the GNU Lesser General Public 
-//  License as published by the Free Software Foundation; either 
-//  version 2.1 of the License. 
-// 
-//  This library is distributed in the hope that it will be useful, 
-//  but WITHOUT ANY WARRANTY; without even the implied warranty of 
-//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
-//  Lesser General Public License for more details. 
-// 
-//  You should have received a copy of the GNU Lesser General Public 
-//  License along with this library; if not, write to the Free Software 
-//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
-// 
-//  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
-//
-//
-//
 //  File   : SALOMEDS_AttributeTextHighlightColor_i.cxx
-//  Author : Yves FRICAUD
+//  Author : Sergey RUIN
 //  Module : SALOME
-//  $Header$
+
 
 #include "SALOMEDS_AttributeTextHighlightColor_i.hxx"
+#include "SALOMEDS.hxx"
 #include <TColStd_HArray1OfReal.hxx>
 
 using namespace std;
 
-SALOMEDS::Color SALOMEDS_AttributeTextHighlightColor_i::TextHighlightColor() {
+SALOMEDS::Color SALOMEDS_AttributeTextHighlightColor_i::TextHighlightColor() 
+{
+  SALOMEDS::Locker lock;
   SALOMEDS::Color TextHighlightColor;
-  Handle(TColStd_HArray1OfReal) anArray = Handle(SALOMEDS_TextHighlightColorAttribute)::DownCast(_myAttr)->Array();
+  Handle(TColStd_HArray1OfReal) anArray=Handle(SALOMEDSImpl_AttributeTextHighlightColor)::DownCast(_impl)->TextHighlightColor();
   if (anArray.IsNull() || anArray->Length()!=3) { 
     TextHighlightColor.R = 0;
     TextHighlightColor.G = 0;
@@ -47,28 +27,13 @@ SALOMEDS::Color SALOMEDS_AttributeTextHighlightColor_i::TextHighlightColor() {
   return TextHighlightColor;
 }
 
-void SALOMEDS_AttributeTextHighlightColor_i::SetTextHighlightColor(const SALOMEDS::Color& value) {
+void SALOMEDS_AttributeTextHighlightColor_i::SetTextHighlightColor(const SALOMEDS::Color& value) 
+{
+  SALOMEDS::Locker lock;
   CheckLocked();
   Handle(TColStd_HArray1OfReal) anArray = new TColStd_HArray1OfReal(1,3);
   anArray->SetValue(1,  value.R);
   anArray->SetValue(2, value.G);
   anArray->SetValue(3, value.B);
-  Handle(SALOMEDS_TextHighlightColorAttribute)::DownCast(_myAttr)->ChangeArray(anArray);
-}
-
-char* SALOMEDS_AttributeTextHighlightColor_i::Store() {
-  SALOMEDS::Color aColor = TextHighlightColor();
-  char *Val = new char[75];
-  sprintf(Val, "%f %f %f", (float)aColor.R, (float)aColor.G, (float)aColor.B);
-  return Val;
-}
-
-void SALOMEDS_AttributeTextHighlightColor_i::Restore(const char* value) {
-  SALOMEDS::Color aColor;
-  float r, g, b;
-  sscanf(value, "%f %f %f", &r, &g, &b);
-  aColor.R = r;
-  aColor.G = g;
-  aColor.B = b;
-  SetTextHighlightColor(aColor);
+  Handle(SALOMEDSImpl_AttributeTextHighlightColor)::DownCast(_impl)->ChangeArray(anArray);
 }
index aa3ead5d2b14ec1fad975a3f54476f2b4be5a14b..da6fe461a58a0697b20007d1942ef5d1d427abbd 100644 (file)
@@ -1,30 +1,6 @@
-//  SALOME SALOMEDS : data structure of SALOME and sources of Salome data server 
-//
-//  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
-// 
-//  This library is free software; you can redistribute it and/or 
-//  modify it under the terms of the GNU Lesser General Public 
-//  License as published by the Free Software Foundation; either 
-//  version 2.1 of the License. 
-// 
-//  This library is distributed in the hope that it will be useful, 
-//  but WITHOUT ANY WARRANTY; without even the implied warranty of 
-//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
-//  Lesser General Public License for more details. 
-// 
-//  You should have received a copy of the GNU Lesser General Public 
-//  License along with this library; if not, write to the Free Software 
-//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
-// 
-//  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
-//
-//
-//
 //  File   : SALOMEDS_AttributeTextHighlightColor_i.hxx
-//  Author : Yves FRICAUD
+//  Author : Sergey RUIN
 //  Module : SALOME
-//  $Header$
 
 #ifndef SALOMEDS_AttributeTextHighlightColor_i_HeaderFile
 #define SALOMEDS_AttributeTextHighlightColor_i_HeaderFile
 #include <SALOMEconfig.h>
 #include CORBA_SERVER_HEADER(SALOMEDS_Attributes)
 
-#include "SALOMEDS_TextHighlightColorAttribute.hxx"
 #include "SALOMEDS_GenericAttribute_i.hxx"
+#include "SALOMEDSImpl_AttributeTextHighlightColor.hxx"
 
-DEFINE_DERIVED_ATTR(AttributeTextHighlightColor,SALOMEDS_TextHighlightColorAttribute,false);
-
-class SALOMEDS_AttributeTextHighlightColor_i: 
-  public virtual POA_SALOMEDS::AttributeTextHighlightColor,
-  public virtual SALOMEDS_TAttributeTextHighlightColor_i 
+class SALOMEDS_AttributeTextHighlightColor_i: public virtual POA_SALOMEDS::AttributeTextHighlightColor,
+                                             public virtual SALOMEDS_GenericAttribute_i 
 {
-  DEFINE_DERIVED_ATTR_METH_DEFAULT(AttributeTextHighlightColor,SALOMEDS_TextHighlightColorAttribute);
 public:
-  SALOMEDS::Color TextHighlightColor();
-  void SetTextHighlightColor(const SALOMEDS::Color& value);
+  
+  SALOMEDS_AttributeTextHighlightColor_i(const Handle(SALOMEDSImpl_AttributeTextHighlightColor)& theAttr, CORBA::ORB_ptr orb) 
+    :SALOMEDS_GenericAttribute_i(theAttr, orb) {}; 
 
-  char* Store();
-  void Restore(const char*);
+  ~SALOMEDS_AttributeTextHighlightColor_i() {};
 
+  SALOMEDS::Color TextHighlightColor();
+  void SetTextHighlightColor(const SALOMEDS::Color& value);
 };
 
 
diff --git a/src/SALOMEDS/SALOMEDS_AttributeTreeNode.cxx b/src/SALOMEDS/SALOMEDS_AttributeTreeNode.cxx
new file mode 100644 (file)
index 0000000..93b66d5
--- /dev/null
@@ -0,0 +1,381 @@
+//  File   : SALOMEDS_AttributeTreeNode.cxx
+//  Author : Sergey RUIN
+//  Module : SALOME
+
+#include "SALOMEDS_AttributeTreeNode.hxx"
+
+#include <string>
+#include <TCollection_AsciiString.hxx>
+#include <TCollection_ExtendedString.hxx>
+#include <Standard_GUID.hxx>
+#include <TDF_Label.hxx>
+#include <TDF_Tool.hxx>
+
+#include "SALOMEDSImpl_AttributeTreeNode.hxx"
+#include "SALOMEDS_AttributeTreeNode.hxx"
+
+SALOMEDS_AttributeTreeNode::SALOMEDS_AttributeTreeNode(const Handle(SALOMEDSImpl_AttributeTreeNode)& theAttr)
+:SALOMEDS_GenericAttribute(theAttr)
+{}
+
+SALOMEDS_AttributeTreeNode::SALOMEDS_AttributeTreeNode(SALOMEDS::AttributeTreeNode_ptr theAttr)
+:SALOMEDS_GenericAttribute(theAttr)
+{}
+
+SALOMEDS_AttributeTreeNode::~SALOMEDS_AttributeTreeNode()
+{}
+
+void SALOMEDS_AttributeTreeNode::SetFather(const _PTR(AttributeTreeNode)& value)
+{
+  SALOMEDS_AttributeTreeNode* aTN = dynamic_cast<SALOMEDS_AttributeTreeNode*>(value.get());
+  if(_isLocal) {
+    Handle(SALOMEDSImpl_AttributeTreeNode) aNode, aFather;
+    aNode = Handle(SALOMEDSImpl_AttributeTreeNode)::DownCast(_local_impl);
+    aFather = Handle(SALOMEDSImpl_AttributeTreeNode)::DownCast(aTN->_local_impl);
+    aNode->SetFather(aFather);
+  }
+  else {
+    SALOMEDS::AttributeTreeNode_var aNode = SALOMEDS::AttributeTreeNode::_narrow(_corba_impl);
+    SALOMEDS::AttributeTreeNode_var aFather = SALOMEDS::AttributeTreeNode::_narrow(aTN->_corba_impl);
+    aNode->SetFather(aFather);
+  }
+}
+
+bool SALOMEDS_AttributeTreeNode::HasFather()
+{
+  bool ret;
+  if(_isLocal) {
+    Handle(SALOMEDSImpl_AttributeTreeNode) aNode = Handle(SALOMEDSImpl_AttributeTreeNode)::DownCast(_local_impl);
+    ret = aNode->HasFather();
+  }
+  else {
+    SALOMEDS::AttributeTreeNode_var aNode = SALOMEDS::AttributeTreeNode::_narrow(_corba_impl);
+    ret = aNode->HasFather();
+  }
+  return ret;
+}
+
+_PTR(AttributeTreeNode) SALOMEDS_AttributeTreeNode::GetFather()
+{
+  SALOMEDSClient_AttributeTreeNode* aTN  = NULL;
+  if(_isLocal) {
+    Handle(SALOMEDSImpl_AttributeTreeNode) aNode = Handle(SALOMEDSImpl_AttributeTreeNode)::DownCast(_local_impl);
+    aTN = new SALOMEDS_AttributeTreeNode(aNode->GetFather());
+  }
+  else {
+    SALOMEDS::AttributeTreeNode_var aNode = SALOMEDS::AttributeTreeNode::_narrow(_corba_impl);
+    aTN = new SALOMEDS_AttributeTreeNode(aNode->GetFather());
+  }
+  return _PTR(AttributeTreeNode)(aTN);
+}
+
+void SALOMEDS_AttributeTreeNode::SetPrevious(const _PTR(AttributeTreeNode)& value)
+{
+  SALOMEDS_AttributeTreeNode* aTN = dynamic_cast<SALOMEDS_AttributeTreeNode*>(value.get());
+  if(_isLocal) {
+    Handle(SALOMEDSImpl_AttributeTreeNode) aNode, aPrev;
+    aNode = Handle(SALOMEDSImpl_AttributeTreeNode)::DownCast(_local_impl);
+    aPrev = Handle(SALOMEDSImpl_AttributeTreeNode)::DownCast(aTN->_local_impl);
+    aNode->SetPrevious(aPrev);
+  }
+  else {
+    SALOMEDS::AttributeTreeNode_var aNode = SALOMEDS::AttributeTreeNode::_narrow(_corba_impl);
+    SALOMEDS::AttributeTreeNode_var aPrev = SALOMEDS::AttributeTreeNode::_narrow(aTN->_corba_impl);
+    aNode->SetPrevious(aPrev);
+  }
+}
+
+bool SALOMEDS_AttributeTreeNode::HasPrevious()
+{
+  bool ret;
+  if(_isLocal) {
+    Handle(SALOMEDSImpl_AttributeTreeNode) aNode = Handle(SALOMEDSImpl_AttributeTreeNode)::DownCast(_local_impl);
+    ret = aNode->HasPrevious();
+  }
+  else {
+    SALOMEDS::AttributeTreeNode_var aNode = SALOMEDS::AttributeTreeNode::_narrow(_corba_impl);
+    ret = aNode->HasPrevious();
+  }
+  return ret;
+}
+
+_PTR(AttributeTreeNode) SALOMEDS_AttributeTreeNode::GetPrevious()
+{
+  SALOMEDSClient_AttributeTreeNode* aTN = NULL;
+  if(_isLocal) {
+    Handle(SALOMEDSImpl_AttributeTreeNode) aNode = Handle(SALOMEDSImpl_AttributeTreeNode)::DownCast(_local_impl);
+    aTN = new SALOMEDS_AttributeTreeNode(aNode->GetPrevious());
+  }
+  else {
+    SALOMEDS::AttributeTreeNode_var aNode = SALOMEDS::AttributeTreeNode::_narrow(_corba_impl);
+    aTN = new SALOMEDS_AttributeTreeNode(aNode->GetPrevious());
+  }
+  return _PTR(AttributeTreeNode)(aTN);
+}
+
+void SALOMEDS_AttributeTreeNode::SetNext(const _PTR(AttributeTreeNode)& value)
+{
+  SALOMEDS_AttributeTreeNode* aTN = dynamic_cast<SALOMEDS_AttributeTreeNode*>(value.get());
+  if(_isLocal) {
+    Handle(SALOMEDSImpl_AttributeTreeNode) aNode, aNext;
+    aNode = Handle(SALOMEDSImpl_AttributeTreeNode)::DownCast(_local_impl);
+    aNext = Handle(SALOMEDSImpl_AttributeTreeNode)::DownCast(aTN->_local_impl);
+    aNode->SetNext(aNext);
+  }
+  else {
+    SALOMEDS::AttributeTreeNode_var aNode = SALOMEDS::AttributeTreeNode::_narrow(_corba_impl);
+    SALOMEDS::AttributeTreeNode_var aNext = SALOMEDS::AttributeTreeNode::_narrow(aTN->_corba_impl);
+    aNode->SetNext(aNext);
+  }
+}
+
+bool SALOMEDS_AttributeTreeNode::HasNext()
+{
+  bool ret;
+  if(_isLocal) {
+    Handle(SALOMEDSImpl_AttributeTreeNode) aNode = Handle(SALOMEDSImpl_AttributeTreeNode)::DownCast(_local_impl);
+    ret = aNode->HasNext();
+  }
+  else {
+    SALOMEDS::AttributeTreeNode_var aNode = SALOMEDS::AttributeTreeNode::_narrow(_corba_impl);
+    ret = aNode->HasNext();
+  }
+  return ret;
+}
+
+_PTR(AttributeTreeNode) SALOMEDS_AttributeTreeNode::GetNext()
+{
+  SALOMEDSClient_AttributeTreeNode* aTN = NULL;
+  if(_isLocal) {
+    Handle(SALOMEDSImpl_AttributeTreeNode) aNode = Handle(SALOMEDSImpl_AttributeTreeNode)::DownCast(_local_impl);
+    aTN = new SALOMEDS_AttributeTreeNode(aNode->GetNext());
+  }
+  else {
+    SALOMEDS::AttributeTreeNode_var aNode = SALOMEDS::AttributeTreeNode::_narrow(_corba_impl);
+    aTN = new SALOMEDS_AttributeTreeNode(aNode->GetNext());
+  }
+  return _PTR(AttributeTreeNode)(aTN);
+}
+
+void SALOMEDS_AttributeTreeNode::SetFirst(const _PTR(AttributeTreeNode)& value)
+{
+  SALOMEDS_AttributeTreeNode* aTN = dynamic_cast<SALOMEDS_AttributeTreeNode*>(value.get());
+  if(_isLocal) {
+    Handle(SALOMEDSImpl_AttributeTreeNode) aNode, aFirst;
+    aNode = Handle(SALOMEDSImpl_AttributeTreeNode)::DownCast(_local_impl);
+    aFirst = Handle(SALOMEDSImpl_AttributeTreeNode)::DownCast(aTN->_local_impl);
+    aNode->SetFirst(aFirst);
+  }
+  else {
+    SALOMEDS::AttributeTreeNode_var aNode = SALOMEDS::AttributeTreeNode::_narrow(_corba_impl);
+    SALOMEDS::AttributeTreeNode_var aFirst = SALOMEDS::AttributeTreeNode::_narrow(aTN->_corba_impl);
+    aNode->SetFirst(aFirst);
+  }
+}
+
+bool SALOMEDS_AttributeTreeNode::HasFirst()
+{
+  bool ret;
+  if(_isLocal) {
+    Handle(SALOMEDSImpl_AttributeTreeNode) aNode = Handle(SALOMEDSImpl_AttributeTreeNode)::DownCast(_local_impl);
+    ret = aNode->HasFirst();
+  }
+  else {
+    SALOMEDS::AttributeTreeNode_var aNode = SALOMEDS::AttributeTreeNode::_narrow(_corba_impl);
+    ret = aNode->HasFirst();
+  }
+  return ret;
+}
+
+_PTR(AttributeTreeNode) SALOMEDS_AttributeTreeNode::GetFirst()
+{
+  SALOMEDSClient_AttributeTreeNode* aTN = NULL;
+  if(_isLocal) {
+    Handle(SALOMEDSImpl_AttributeTreeNode) aNode = Handle(SALOMEDSImpl_AttributeTreeNode)::DownCast(_local_impl);
+    aTN = new SALOMEDS_AttributeTreeNode(aNode->GetFirst());
+  }
+  else {
+    SALOMEDS::AttributeTreeNode_var aNode = SALOMEDS::AttributeTreeNode::_narrow(_corba_impl);
+    aTN = new SALOMEDS_AttributeTreeNode(aNode->GetFirst());
+  }
+  return _PTR(AttributeTreeNode)(aTN);
+}
+
+void SALOMEDS_AttributeTreeNode::SetTreeID(const std::string& value)
+{
+  if(_isLocal) {
+    Handle(SALOMEDSImpl_AttributeTreeNode) aNode = Handle(SALOMEDSImpl_AttributeTreeNode)::DownCast(_local_impl);
+    aNode->SetTreeID(Standard_GUID((char*)value.c_str()));
+  }
+  else {
+    SALOMEDS::AttributeTreeNode_var aNode = SALOMEDS::AttributeTreeNode::_narrow(_corba_impl);
+    aNode->SetTreeID(value.c_str());
+  }
+}
+
+std::string SALOMEDS_AttributeTreeNode::GetTreeID()
+{
+  TCollection_AsciiString aGUID;
+  if(_isLocal) {
+    Handle(SALOMEDSImpl_AttributeTreeNode) aNode = Handle(SALOMEDSImpl_AttributeTreeNode)::DownCast(_local_impl);
+    char guid[40];
+    aNode->GetTreeID().ToCString(guid);
+    aGUID = TCollection_AsciiString(guid);
+  }
+  else {
+    SALOMEDS::AttributeTreeNode_var aNode = SALOMEDS::AttributeTreeNode::_narrow(_corba_impl);
+    aGUID = TCollection_AsciiString(aNode->GetTreeID());
+  }
+
+  return std::string(aGUID.ToCString());
+}
+
+void SALOMEDS_AttributeTreeNode::Append(const _PTR(AttributeTreeNode)& value)
+{
+  SALOMEDS_AttributeTreeNode* aTN = dynamic_cast<SALOMEDS_AttributeTreeNode*>(value.get());
+  if(_isLocal) {
+    Handle(SALOMEDSImpl_AttributeTreeNode) aNode, anOther;
+    aNode = Handle(SALOMEDSImpl_AttributeTreeNode)::DownCast(_local_impl);
+    anOther = Handle(SALOMEDSImpl_AttributeTreeNode)::DownCast(aTN->_local_impl);
+    aNode->Append(anOther);
+  }
+  else {
+    SALOMEDS::AttributeTreeNode_var aNode = SALOMEDS::AttributeTreeNode::_narrow(_corba_impl);
+    SALOMEDS::AttributeTreeNode_var anOther = SALOMEDS::AttributeTreeNode::_narrow(aTN->_corba_impl);
+    aNode->Append(anOther);
+  }
+}
+
+void SALOMEDS_AttributeTreeNode::Prepend(const _PTR(AttributeTreeNode)& value)
+{
+  SALOMEDS_AttributeTreeNode* aTN = dynamic_cast<SALOMEDS_AttributeTreeNode*>(value.get());
+  if(_isLocal) {
+    Handle(SALOMEDSImpl_AttributeTreeNode) aNode, anOther;
+    aNode = Handle(SALOMEDSImpl_AttributeTreeNode)::DownCast(_local_impl);
+    anOther = Handle(SALOMEDSImpl_AttributeTreeNode)::DownCast(aTN->_local_impl);
+    aNode->Prepend(anOther);
+  }
+  else {
+    SALOMEDS::AttributeTreeNode_var aNode = SALOMEDS::AttributeTreeNode::_narrow(_corba_impl);
+    SALOMEDS::AttributeTreeNode_var anOther = SALOMEDS::AttributeTreeNode::_narrow(aTN->_corba_impl);
+    aNode->Prepend(anOther);
+  }
+}
+
+void SALOMEDS_AttributeTreeNode::InsertBefore(const _PTR(AttributeTreeNode)& value)
+{
+  SALOMEDS_AttributeTreeNode* aTN = dynamic_cast<SALOMEDS_AttributeTreeNode*>(value.get());
+  if(_isLocal) {
+    Handle(SALOMEDSImpl_AttributeTreeNode) aNode, anOther;
+    aNode = Handle(SALOMEDSImpl_AttributeTreeNode)::DownCast(_local_impl);
+    anOther = Handle(SALOMEDSImpl_AttributeTreeNode)::DownCast(aTN->_local_impl);
+    aNode->InsertBefore(anOther);
+  }
+  else {
+    SALOMEDS::AttributeTreeNode_var aNode = SALOMEDS::AttributeTreeNode::_narrow(_corba_impl);
+    SALOMEDS::AttributeTreeNode_var anOther = SALOMEDS::AttributeTreeNode::_narrow(aTN->_corba_impl);
+    aNode->InsertBefore(anOther);
+  }
+}
+
+void SALOMEDS_AttributeTreeNode::InsertAfter(const _PTR(AttributeTreeNode)& value)
+{
+  SALOMEDS_AttributeTreeNode* aTN = dynamic_cast<SALOMEDS_AttributeTreeNode*>(value.get());
+  if(_isLocal) {
+    Handle(SALOMEDSImpl_AttributeTreeNode) aNode, anOther;
+    aNode = Handle(SALOMEDSImpl_AttributeTreeNode)::DownCast(_local_impl);
+    anOther = Handle(SALOMEDSImpl_AttributeTreeNode)::DownCast(aTN->_local_impl);
+    aNode->InsertAfter(anOther);
+  }
+  else {
+    SALOMEDS::AttributeTreeNode_var aNode = SALOMEDS::AttributeTreeNode::_narrow(_corba_impl);
+    SALOMEDS::AttributeTreeNode_var anOther = SALOMEDS::AttributeTreeNode::_narrow(aTN->_corba_impl);
+    aNode->InsertAfter(anOther);
+  }
+}
+
+void SALOMEDS_AttributeTreeNode::Remove()
+{
+  if(_isLocal) Handle(SALOMEDSImpl_AttributeTreeNode)::DownCast(_local_impl)->Remove();
+  else SALOMEDS::AttributeTreeNode::_narrow(_corba_impl)->Remove();
+}
+
+int SALOMEDS_AttributeTreeNode::Depth()
+{
+  int aDepth;
+  if(_isLocal) aDepth = Handle(SALOMEDSImpl_AttributeTreeNode)::DownCast(_local_impl)->Depth();
+  else aDepth =  SALOMEDS::AttributeTreeNode::_narrow(_corba_impl)->Depth();
+  return aDepth;
+}
+
+bool SALOMEDS_AttributeTreeNode::IsRoot()
+{
+  bool ret;
+  if(_isLocal) ret = Handle(SALOMEDSImpl_AttributeTreeNode)::DownCast(_local_impl)->IsRoot();
+  else ret =  SALOMEDS::AttributeTreeNode::_narrow(_corba_impl)->IsRoot();
+  return ret;
+}
+
+bool SALOMEDS_AttributeTreeNode::IsDescendant(const _PTR(AttributeTreeNode)& value)
+{
+  bool ret;
+  SALOMEDS_AttributeTreeNode* aTN = dynamic_cast<SALOMEDS_AttributeTreeNode*>(value.get());
+  if(_isLocal) {
+    Handle(SALOMEDSImpl_AttributeTreeNode) aNode, anOther;
+    aNode = Handle(SALOMEDSImpl_AttributeTreeNode)::DownCast(_local_impl);
+    anOther = Handle(SALOMEDSImpl_AttributeTreeNode)::DownCast(aTN->_local_impl);
+    ret = aNode->IsDescendant(anOther);
+  }
+  else {
+    SALOMEDS::AttributeTreeNode_var aNode = SALOMEDS::AttributeTreeNode::_narrow(_corba_impl);
+    SALOMEDS::AttributeTreeNode_var anOther = SALOMEDS::AttributeTreeNode::_narrow(aTN->_corba_impl);
+    ret = aNode->IsDescendant(anOther);
+  }  
+  return ret;
+}
+
+bool SALOMEDS_AttributeTreeNode::IsFather(const _PTR(AttributeTreeNode)& value)
+{
+  bool ret;
+  SALOMEDS_AttributeTreeNode* aTN = dynamic_cast<SALOMEDS_AttributeTreeNode*>(value.get());
+  if(_isLocal) {
+    Handle(SALOMEDSImpl_AttributeTreeNode) aNode, anOther;
+    aNode = Handle(SALOMEDSImpl_AttributeTreeNode)::DownCast(_local_impl);
+    anOther = Handle(SALOMEDSImpl_AttributeTreeNode)::DownCast(aTN->_local_impl);
+    ret = aNode->IsFather(anOther);
+  }
+  else {
+    SALOMEDS::AttributeTreeNode_var aNode = SALOMEDS::AttributeTreeNode::_narrow(_corba_impl);
+    SALOMEDS::AttributeTreeNode_var anOther = SALOMEDS::AttributeTreeNode::_narrow(aTN->_corba_impl);
+    ret = aNode->IsFather(anOther);
+  }  
+  return ret;  
+}
+
+bool SALOMEDS_AttributeTreeNode::IsChild(const _PTR(AttributeTreeNode)& value)
+{
+  bool ret;
+  SALOMEDS_AttributeTreeNode* aTN = dynamic_cast<SALOMEDS_AttributeTreeNode*>(value.get());
+  if(_isLocal) {
+    Handle(SALOMEDSImpl_AttributeTreeNode) aNode, anOther;
+    aNode = Handle(SALOMEDSImpl_AttributeTreeNode)::DownCast(_local_impl);
+    anOther = Handle(SALOMEDSImpl_AttributeTreeNode)::DownCast(aTN->_local_impl);
+    ret = aNode->IsChild(anOther);
+  }
+  else {
+    SALOMEDS::AttributeTreeNode_var aNode = SALOMEDS::AttributeTreeNode::_narrow(_corba_impl);
+    SALOMEDS::AttributeTreeNode_var anOther = SALOMEDS::AttributeTreeNode::_narrow(aTN->_corba_impl);
+    ret = aNode->IsChild(anOther);
+  }  
+  return ret;  
+}
+
+std::string SALOMEDS_AttributeTreeNode::Label()
+{
+  TCollection_AsciiString aLabel;
+  if(_isLocal) TDF_Tool::Entry(_local_impl->Label(), aLabel);
+  else aLabel = SALOMEDS::AttributeTreeNode::_narrow(_corba_impl)->Label();
+  return std::string(aLabel.ToCString());
+}
+
+
diff --git a/src/SALOMEDS/SALOMEDS_AttributeTreeNode.hxx b/src/SALOMEDS/SALOMEDS_AttributeTreeNode.hxx
new file mode 100644 (file)
index 0000000..bbb82ab
--- /dev/null
@@ -0,0 +1,51 @@
+//  File   : SALOMEDS_AttributeTreeNode.hxx
+//  Author : Sergey RUIN
+//  Module : SALOME
+
+#ifndef SALOMEDS_AttributeTreeNode_HeaderFile
+#define SALOMEDS_AttributeTreeNode_HeaderFile
+
+#include "SALOMEDSClient_AttributeTreeNode.hxx"
+#include "SALOMEDS_GenericAttribute.hxx"
+#include "SALOMEDSImpl_AttributeTreeNode.hxx"
+
+// IDL headers
+#include <SALOMEconfig.h>
+#include CORBA_SERVER_HEADER(SALOMEDS)
+#include CORBA_SERVER_HEADER(SALOMEDS_Attributes)
+
+class SALOMEDS_AttributeTreeNode: public SALOMEDS_GenericAttribute, public SALOMEDSClient_AttributeTreeNode
+{
+public:  
+  SALOMEDS_AttributeTreeNode(const Handle(SALOMEDSImpl_AttributeTreeNode)& theAttr);
+  SALOMEDS_AttributeTreeNode(SALOMEDS::AttributeTreeNode_ptr theAttr);
+  ~SALOMEDS_AttributeTreeNode();
+
+  virtual void SetFather(const _PTR(AttributeTreeNode)& value);
+  virtual bool HasFather();
+  virtual _PTR(AttributeTreeNode) GetFather();
+  virtual void SetPrevious(const _PTR(AttributeTreeNode)& value);
+  virtual bool HasPrevious();
+  virtual _PTR(AttributeTreeNode) GetPrevious();
+  virtual void SetNext(const _PTR(AttributeTreeNode)& value);
+  virtual bool HasNext();
+  virtual _PTR(AttributeTreeNode) GetNext();
+  virtual void SetFirst(const _PTR(AttributeTreeNode)& value);
+  virtual bool HasFirst();
+  virtual _PTR(AttributeTreeNode) GetFirst();
+  virtual void SetTreeID(const std::string& value);
+  virtual std::string GetTreeID();
+  virtual void Append(const _PTR(AttributeTreeNode)& value);
+  virtual void Prepend(const _PTR(AttributeTreeNode)& value);
+  virtual void InsertBefore(const _PTR(AttributeTreeNode)& value);
+  virtual void InsertAfter(const _PTR(AttributeTreeNode)& value);
+  virtual void Remove();
+  virtual int Depth();
+  virtual bool IsRoot();
+  virtual bool IsDescendant(const _PTR(AttributeTreeNode)& value);
+  virtual bool IsFather(const _PTR(AttributeTreeNode)& value);
+  virtual bool IsChild(const _PTR(AttributeTreeNode)& value);
+  virtual std::string Label();                                        
+};
+
+#endif
index 15449d603ec039ba62bc2b69da7c34c66cf37e71..22b6864c0d6f8863eaea698fd150f4e7643d1629 100644 (file)
@@ -1,47 +1,25 @@
-//  SALOME SALOMEDS : data structure of SALOME and sources of Salome data server 
-//
-//  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
-// 
-//  This library is free software; you can redistribute it and/or 
-//  modify it under the terms of the GNU Lesser General Public 
-//  License as published by the Free Software Foundation; either 
-//  version 2.1 of the License. 
-// 
-//  This library is distributed in the hope that it will be useful, 
-//  but WITHOUT ANY WARRANTY; without even the implied warranty of 
-//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
-//  Lesser General Public License for more details. 
-// 
-//  You should have received a copy of the GNU Lesser General Public 
-//  License along with this library; if not, write to the Free Software 
-//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
-// 
-//  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
-//
-//
-//
 //  File   : SALOMEDS_AttributeTreeNode_i.cxx
-//  Author : Yves FRICAUD
+//  Author : Sergey RUIN
 //  Module : SALOME
-//  $Header$
 
-#include <TDocStd_Document.hxx>
-#include <TDF_Tool.hxx>
 
 #include "SALOMEDS_AttributeTreeNode_i.hxx"
-
 #include "utilities.h"
+#include "SALOMEDS.hxx"
+#include <TDocStd_Document.hxx>
+#include <TDF_Attribute.hxx>
+#include <TDF_Tool.hxx>
+#include <TDF_Data.hxx>
 
 using namespace std;
 
-static Handle(TDataStd_TreeNode) GetNode(SALOMEDS::AttributeTreeNode_ptr value,
-                                        const Handle(TDataStd_TreeNode)& aNode) 
+static Handle(SALOMEDSImpl_AttributeTreeNode) GetNode(SALOMEDS::AttributeTreeNode_ptr value,
+                                                     const Handle(SALOMEDSImpl_AttributeTreeNode)& aNode) 
 {
-  Handle(TDataStd_TreeNode) aResult = new TDataStd_TreeNode;
-  CORBA::String_var aString = CORBA::string_dup(value->Label());
+  Handle(SALOMEDSImpl_AttributeTreeNode) aResult = new SALOMEDSImpl_AttributeTreeNode;
+  TCollection_AsciiString anEntry = value->Label();
   TDF_Label aLabel;
-  TDF_Tool::Label(aNode->Label().Data(), TCollection_AsciiString(aString), aLabel, 0);
+  TDF_Tool::Label(aNode->Label().Data(), anEntry, aLabel);
   if (aLabel.IsNull()) {
     MESSAGE("SALOMEDS_AttributeTreeNode_i class: no such label")
     MESSAGE("SALOMEDS_AttributeTreeNode_i class: no such label")
@@ -54,177 +32,207 @@ static Handle(TDataStd_TreeNode) GetNode(SALOMEDS::AttributeTreeNode_ptr value,
   return aResult;
 }
 
-void SALOMEDS_AttributeTreeNode_i::SetFather(SALOMEDS::AttributeTreeNode_ptr theValue) {
+void SALOMEDS_AttributeTreeNode_i::SetFather(SALOMEDS::AttributeTreeNode_ptr value) 
+{
+  SALOMEDS::Locker lock;
   CheckLocked();
-  _myAttr->SetFather(GetNode(theValue,_myAttr));
+  Handle(SALOMEDSImpl_AttributeTreeNode) aNode = Handle(SALOMEDSImpl_AttributeTreeNode)::DownCast(_impl);
+  aNode->SetFather(GetNode(value, aNode));
 }
 
-CORBA::Boolean SALOMEDS_AttributeTreeNode_i::HasFather() {
-  return _myAttr->HasFather();
+CORBA::Boolean SALOMEDS_AttributeTreeNode_i::HasFather() 
+{
+  SALOMEDS::Locker lock;
+  return Handle(SALOMEDSImpl_AttributeTreeNode)::DownCast(_impl)->HasFather();
 }
 
-SALOMEDS::AttributeTreeNode_ptr SALOMEDS_AttributeTreeNode_i::GetFather() {
-  SALOMEDS_AttributeTreeNode_i* aTreeNode = 
-    new SALOMEDS_AttributeTreeNode_i(_myAttr->Father(),_mySObject);
-  return aTreeNode->_this();
+SALOMEDS::AttributeTreeNode_ptr SALOMEDS_AttributeTreeNode_i::GetFather() 
+{
+  SALOMEDS::Locker lock;
+  SALOMEDS_AttributeTreeNode_i* aFather;
+  aFather = new SALOMEDS_AttributeTreeNode_i(Handle(SALOMEDSImpl_AttributeTreeNode)::DownCast(_impl)->GetFather(), _orb);
+#ifndef WNT
+  return aFather->POA_SALOMEDS::AttributeTreeNode::_this();
+#else
+  return aFather->AttributeTreeNode::_this();
+#endif
 }
 
-void SALOMEDS_AttributeTreeNode_i::SetPrevious(SALOMEDS::AttributeTreeNode_ptr theValue) {
+void SALOMEDS_AttributeTreeNode_i::SetPrevious(SALOMEDS::AttributeTreeNode_ptr value) 
+{
+  SALOMEDS::Locker lock;
   CheckLocked();
-  _myAttr->SetPrevious(GetNode(theValue,_myAttr));
+  Handle(SALOMEDSImpl_AttributeTreeNode) aNode = Handle(SALOMEDSImpl_AttributeTreeNode)::DownCast(_impl);
+  aNode->SetPrevious(GetNode(value, aNode));
 }
 
-CORBA::Boolean SALOMEDS_AttributeTreeNode_i::HasPrevious() {
-  return _myAttr->HasPrevious();
+CORBA::Boolean SALOMEDS_AttributeTreeNode_i::HasPrevious() 
+{
+  SALOMEDS::Locker lock;
+  return Handle(SALOMEDSImpl_AttributeTreeNode)::DownCast(_impl)->HasPrevious();
 }
 
-SALOMEDS::AttributeTreeNode_ptr SALOMEDS_AttributeTreeNode_i::GetPrevious() {
-  SALOMEDS_AttributeTreeNode_i* aTreeNode = 
-    new SALOMEDS_AttributeTreeNode_i(_myAttr->Previous(),_mySObject);
-  return aTreeNode->_this();
+SALOMEDS::AttributeTreeNode_ptr SALOMEDS_AttributeTreeNode_i::GetPrevious() 
+{
+  SALOMEDS::Locker lock;
+  SALOMEDS_AttributeTreeNode_i* aPrevious;
+  aPrevious=new SALOMEDS_AttributeTreeNode_i(Handle(SALOMEDSImpl_AttributeTreeNode)::DownCast(_impl)->GetPrevious(), _orb);
+#ifndef WNT
+  return aPrevious->POA_SALOMEDS::AttributeTreeNode::_this();
+#else
+  return aPrevious->AttributeTreeNode::_this();
+#endif
 }
 
-void SALOMEDS_AttributeTreeNode_i::SetNext(SALOMEDS::AttributeTreeNode_ptr theValue) {
+void SALOMEDS_AttributeTreeNode_i::SetNext(SALOMEDS::AttributeTreeNode_ptr value) 
+{
+  SALOMEDS::Locker lock;
   CheckLocked();
-  _myAttr->SetNext(GetNode(theValue,_myAttr));
+  Handle(SALOMEDSImpl_AttributeTreeNode) aNode = Handle(SALOMEDSImpl_AttributeTreeNode)::DownCast(_impl);
+  aNode->SetNext(GetNode(value, aNode));
 }
 
-CORBA::Boolean SALOMEDS_AttributeTreeNode_i::HasNext() {
-  return _myAttr->HasNext();
+CORBA::Boolean SALOMEDS_AttributeTreeNode_i::HasNext() 
+{
+  SALOMEDS::Locker lock;
+  return Handle(SALOMEDSImpl_AttributeTreeNode)::DownCast(_impl)->HasNext();
 }
 
-SALOMEDS::AttributeTreeNode_ptr SALOMEDS_AttributeTreeNode_i::GetNext() {
-  SALOMEDS_AttributeTreeNode_i* aTreeNode = 
-    new SALOMEDS_AttributeTreeNode_i(_myAttr->Next(),_mySObject);
-  return aTreeNode->_this();
+SALOMEDS::AttributeTreeNode_ptr SALOMEDS_AttributeTreeNode_i::GetNext() 
+{
+  SALOMEDS::Locker lock;
+  SALOMEDS_AttributeTreeNode_i* aNext;
+  aNext = new SALOMEDS_AttributeTreeNode_i(Handle(SALOMEDSImpl_AttributeTreeNode)::DownCast(_impl)->GetNext(), _orb);
+#ifndef WNT
+  return aNext->POA_SALOMEDS::AttributeTreeNode::_this();
+#else
+  return aNext->AttributeTreeNode::_this();
+#endif
 }
 
-void SALOMEDS_AttributeTreeNode_i::SetFirst(SALOMEDS::AttributeTreeNode_ptr theValue) {
+void SALOMEDS_AttributeTreeNode_i::SetFirst(SALOMEDS::AttributeTreeNode_ptr value) 
+{
+  SALOMEDS::Locker lock;
   CheckLocked();
-  _myAttr->SetFirst(GetNode(theValue,_myAttr));
+  Handle(SALOMEDSImpl_AttributeTreeNode) aNode = Handle(SALOMEDSImpl_AttributeTreeNode)::DownCast(_impl);
+  aNode->SetFirst(GetNode(value, aNode));
 }
 
-CORBA::Boolean SALOMEDS_AttributeTreeNode_i::HasFirst() {
-  return _myAttr->HasFirst();
+CORBA::Boolean SALOMEDS_AttributeTreeNode_i::HasFirst() 
+{
+  SALOMEDS::Locker lock;
+  return Handle(SALOMEDSImpl_AttributeTreeNode)::DownCast(_impl)->HasFirst();
 }
 
-SALOMEDS::AttributeTreeNode_ptr SALOMEDS_AttributeTreeNode_i::GetFirst() {
-  SALOMEDS_AttributeTreeNode_i* aTreeNode = 
-    new SALOMEDS_AttributeTreeNode_i(_myAttr->First(),_mySObject);
-  return aTreeNode->_this();
+SALOMEDS::AttributeTreeNode_ptr SALOMEDS_AttributeTreeNode_i::GetFirst() 
+{
+  SALOMEDS::Locker lock;
+  SALOMEDS_AttributeTreeNode_i* aFirst;
+  aFirst = new SALOMEDS_AttributeTreeNode_i(Handle(SALOMEDSImpl_AttributeTreeNode)::DownCast(_impl)->GetFirst(), _orb);
+#ifndef WNT
+  return aFirst->POA_SALOMEDS::AttributeTreeNode::_this();
+#else
+  return aFirst->AttributeTreeNode::_this();
+#endif
 }
 
-void SALOMEDS_AttributeTreeNode_i::SetTreeID(const char* value) {
+void SALOMEDS_AttributeTreeNode_i::SetTreeID(const char* value) 
+{
+  SALOMEDS::Locker lock;
   CheckLocked();
-  _myAttr->SetTreeID(Standard_GUID(_myAttr->ID()));
+  Handle(SALOMEDSImpl_AttributeTreeNode) aNode = Handle(SALOMEDSImpl_AttributeTreeNode)::DownCast(_impl);
+  aNode->SetTreeID(Standard_GUID(aNode->ID()));
 }
 
-char* SALOMEDS_AttributeTreeNode_i::GetTreeID() {
+char* SALOMEDS_AttributeTreeNode_i::GetTreeID() 
+{
+  SALOMEDS::Locker lock;
+  Handle(SALOMEDSImpl_AttributeTreeNode) aNode = Handle(SALOMEDSImpl_AttributeTreeNode)::DownCast(_impl);
   char aGUID[40];
-  _myAttr->ID().ToCString(aGUID);
-  return CORBA::string_dup(aGUID);
+  aNode->ID().ToCString(aGUID);
+  return CORBA::String_var(CORBA::string_dup(aGUID))._retn();
 }
 
-void SALOMEDS_AttributeTreeNode_i::Append(SALOMEDS::AttributeTreeNode_ptr theValue) {
+void SALOMEDS_AttributeTreeNode_i::Append(SALOMEDS::AttributeTreeNode_ptr value) 
+{
+  SALOMEDS::Locker lock;
   CheckLocked();
-  _myAttr->Append(GetNode(theValue,_myAttr));
+  Handle(SALOMEDSImpl_AttributeTreeNode) aNode = Handle(SALOMEDSImpl_AttributeTreeNode)::DownCast(_impl);
+  aNode->Append(GetNode(value, aNode));
 }
 
-void SALOMEDS_AttributeTreeNode_i::Prepend(SALOMEDS::AttributeTreeNode_ptr theValue) {
+void SALOMEDS_AttributeTreeNode_i::Prepend(SALOMEDS::AttributeTreeNode_ptr value) 
+{
+  SALOMEDS::Locker lock;
   CheckLocked();
-  _myAttr->Prepend(GetNode(theValue,_myAttr));
+  Handle(SALOMEDSImpl_AttributeTreeNode) aNode = Handle(SALOMEDSImpl_AttributeTreeNode)::DownCast(_impl);
+  aNode->Prepend(GetNode(value, aNode));
 }
 
-void SALOMEDS_AttributeTreeNode_i::InsertBefore(SALOMEDS::AttributeTreeNode_ptr theValue) {
+void SALOMEDS_AttributeTreeNode_i::InsertBefore(SALOMEDS::AttributeTreeNode_ptr value) 
+{
+  SALOMEDS::Locker lock;
   CheckLocked();
-  _myAttr->InsertBefore(GetNode(theValue,_myAttr));
+  Handle(SALOMEDSImpl_AttributeTreeNode) aNode = Handle(SALOMEDSImpl_AttributeTreeNode)::DownCast(_impl);
+  aNode->InsertBefore(GetNode(value, aNode));
 }
 
-void SALOMEDS_AttributeTreeNode_i::InsertAfter(SALOMEDS::AttributeTreeNode_ptr theValue) {
+void SALOMEDS_AttributeTreeNode_i::InsertAfter(SALOMEDS::AttributeTreeNode_ptr value) 
+{
+  SALOMEDS::Locker lock;
   CheckLocked();
-  _myAttr->InsertAfter(GetNode(theValue,_myAttr));
+  Handle(SALOMEDSImpl_AttributeTreeNode) aNode = Handle(SALOMEDSImpl_AttributeTreeNode)::DownCast(_impl);
+  aNode->InsertAfter(GetNode(value, aNode));
 }
 
-void SALOMEDS_AttributeTreeNode_i::Remove() {
+void SALOMEDS_AttributeTreeNode_i::Remove() 
+{
+  SALOMEDS::Locker lock;
   CheckLocked();
-  _myAttr->Remove();
+  Handle(SALOMEDSImpl_AttributeTreeNode) aNode = Handle(SALOMEDSImpl_AttributeTreeNode)::DownCast(_impl);
+  aNode->Remove();
 }
 
-CORBA::Long SALOMEDS_AttributeTreeNode_i::Depth() {
-  return _myAttr->Depth();
+CORBA::Long SALOMEDS_AttributeTreeNode_i::Depth() 
+{
+  SALOMEDS::Locker lock;
+  Handle(SALOMEDSImpl_AttributeTreeNode) aNode = Handle(SALOMEDSImpl_AttributeTreeNode)::DownCast(_impl);
+  return aNode->Depth();
 }
 
-CORBA::Boolean SALOMEDS_AttributeTreeNode_i::IsRoot() {
-  return _myAttr->IsRoot();
+CORBA::Boolean SALOMEDS_AttributeTreeNode_i::IsRoot() 
+{
+  SALOMEDS::Locker lock;
+  Handle(SALOMEDSImpl_AttributeTreeNode) aNode = Handle(SALOMEDSImpl_AttributeTreeNode)::DownCast(_impl);
+  return aNode->IsRoot();
 }
 
-CORBA::Boolean SALOMEDS_AttributeTreeNode_i::IsDescendant(SALOMEDS::AttributeTreeNode_ptr theValue) {
-  return _myAttr->IsDescendant(GetNode(theValue,_myAttr));
+CORBA::Boolean SALOMEDS_AttributeTreeNode_i::IsDescendant(SALOMEDS::AttributeTreeNode_ptr value) 
+{
+  SALOMEDS::Locker lock;
+  Handle(SALOMEDSImpl_AttributeTreeNode) aNode = Handle(SALOMEDSImpl_AttributeTreeNode)::DownCast(_impl);
+  return aNode->IsDescendant(GetNode(value, aNode));
 }
 
-CORBA::Boolean SALOMEDS_AttributeTreeNode_i::IsFather(SALOMEDS::AttributeTreeNode_ptr theValue) {
-  return _myAttr->IsFather(GetNode(theValue,_myAttr));
+CORBA::Boolean SALOMEDS_AttributeTreeNode_i::IsFather(SALOMEDS::AttributeTreeNode_ptr value) 
+{
+  SALOMEDS::Locker lock;
+  Handle(SALOMEDSImpl_AttributeTreeNode) aNode = Handle(SALOMEDSImpl_AttributeTreeNode)::DownCast(_impl);
+  return aNode->IsFather(GetNode(value, aNode));
 }
 
-CORBA::Boolean SALOMEDS_AttributeTreeNode_i::IsChild(SALOMEDS::AttributeTreeNode_ptr theValue) {
-  return _myAttr->IsChild(GetNode(theValue,_myAttr));
+CORBA::Boolean SALOMEDS_AttributeTreeNode_i::IsChild(SALOMEDS::AttributeTreeNode_ptr value) 
+{
+  SALOMEDS::Locker lock;
+  Handle(SALOMEDSImpl_AttributeTreeNode) aNode = Handle(SALOMEDSImpl_AttributeTreeNode)::DownCast(_impl);
+  return aNode->IsChild(GetNode(value, aNode));
 }
 
-char* SALOMEDS_AttributeTreeNode_i::Label() {
+char* SALOMEDS_AttributeTreeNode_i::Label() 
+{
+  SALOMEDS::Locker lock;
   TCollection_AsciiString aLabelName;
-  TDF_Tool::Entry(_myAttr->Label(),aLabelName);
-  return CORBA::string_dup(aLabelName.ToCString());
-}
-
-char* SALOMEDS_AttributeTreeNode_i::Store() {
-  char* aStr[4];
-
-  if (HasFather()) aStr[0] = GetFather()->Label(); else aStr[0] = "!";
-  if (HasPrevious()) aStr[1] = GetPrevious()->Label(); else aStr[1] = "!";
-  if (HasNext()) aStr[2] = GetNext()->Label(); else aStr[2] = "!";
-  if (HasFirst()) aStr[3] = GetFirst()->Label(); else aStr[3] = "!";
-
-  int aLength = 4;
-  aLength += strlen(aStr[0]) + strlen(aStr[1]) + strlen(aStr[2]) + strlen(aStr[3]);
-  CORBA::String_var aResult = new char[aLength];
-  sprintf(aResult, "%s %s %s %s", aStr[0], aStr[1], aStr[2], aStr[3]);
-  return aResult._retn();
+  TDF_Tool::Entry(_impl->Label(),aLabelName);
+  return CORBA::String_var(CORBA::string_dup(aLabelName.ToCString()))._retn();
 }
 
-void SALOMEDS_AttributeTreeNode_i::Restore(const char* value) {
-  Handle(TDataStd_TreeNode) aNode = Handle(TDataStd_TreeNode)::DownCast(_myAttr);
-  Handle(TDF_Data) DF = TDocStd_Document::Get(_myAttr->Label())->GetData();
-  
-  char* aCopy = strdup(value);
-  char* adr = strtok(aCopy, " ");
-  
-  TDF_Label aLabel;
-  Handle(TDataStd_TreeNode) aDepNode;
-
-  if (adr && adr[0] != '!') {
-    TDF_Tool::Label(DF, adr, aLabel, 1);
-    if (!aLabel.FindAttribute(aNode->ID(), aDepNode)) aDepNode = TDataStd_TreeNode::Set(aLabel, aNode->ID());
-    aNode->SetFather(aDepNode);
-  }
-
-  adr = strtok(NULL, " ");
-  if (adr && adr[0] != '!') {
-    TDF_Tool::Label(DF, adr, aLabel, 1);
-    if (!aLabel.FindAttribute(aNode->ID(), aDepNode)) aDepNode = TDataStd_TreeNode::Set(aLabel, aNode->ID());
-    aNode->SetPrevious(aDepNode);
-  }
-
-  adr = strtok(NULL, " ");
-  if (adr && adr[0] != '!') {
-    TDF_Tool::Label(DF, adr, aLabel, 1);
-    if (!aLabel.FindAttribute(aNode->ID(), aDepNode)) aDepNode = TDataStd_TreeNode::Set(aLabel, aNode->ID());
-    aNode->SetNext(aDepNode);
-  }
-
-  adr = strtok(NULL, " ");
-  if (adr && adr[0] != '!') {
-    TDF_Tool::Label(DF, adr, aLabel, 1);
-    if (!aLabel.FindAttribute(aNode->ID(), aDepNode)) aDepNode = TDataStd_TreeNode::Set(aLabel, aNode->ID());
-    aNode->SetFirst(aDepNode);
-  }
-}
index 718ffc641ab17ff62411d6700a3bbdc0fbd4ea19..e57c10c7c8fd76812cab39f4ba69902e8ec837a9 100644 (file)
@@ -1,30 +1,6 @@
-//  SALOME SALOMEDS : data structure of SALOME and sources of Salome data server 
-//
-//  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
-// 
-//  This library is free software; you can redistribute it and/or 
-//  modify it under the terms of the GNU Lesser General Public 
-//  License as published by the Free Software Foundation; either 
-//  version 2.1 of the License. 
-// 
-//  This library is distributed in the hope that it will be useful, 
-//  but WITHOUT ANY WARRANTY; without even the implied warranty of 
-//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
-//  Lesser General Public License for more details. 
-// 
-//  You should have received a copy of the GNU Lesser General Public 
-//  License along with this library; if not, write to the Free Software 
-//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
-// 
-//  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
-//
-//
-//
 //  File   : SALOMEDS_AttributeTreeNode_i.hxx
-//  Author : Yves FRICAUD
+//  Author : Sergey RUIN
 //  Module : SALOME
-//  $Header:
 
 #ifndef SALOMEDS_AttributeTreeNode_i_HeaderFile
 #define SALOMEDS_AttributeTreeNode_i_HeaderFile
 #include <SALOMEconfig.h>
 #include CORBA_SERVER_HEADER(SALOMEDS_Attributes)
 
-#include <TDataStd_TreeNode.hxx>
 #include "SALOMEDS_GenericAttribute_i.hxx"
+#include "SALOMEDSImpl_AttributeTreeNode.hxx"
 
-DEFINE_DERIVED_ATTR(AttributeTreeNode,TDataStd_TreeNode,false);
-
-class SALOMEDS_AttributeTreeNode_i: 
-  public virtual POA_SALOMEDS::AttributeTreeNode,
-  public virtual SALOMEDS_TAttributeTreeNode_i
-{
-  DEFINE_DERIVED_ATTR_METH(AttributeTreeNode,TDataStd_TreeNode::GetDefaultTreeID());
-
+class SALOMEDS_AttributeTreeNode_i: public virtual POA_SALOMEDS::AttributeTreeNode,
+                                    public virtual SALOMEDS_GenericAttribute_i {
 public:
+  
+  SALOMEDS_AttributeTreeNode_i(const Handle(SALOMEDSImpl_AttributeTreeNode)& theAttr, CORBA::ORB_ptr orb) 
+    :SALOMEDS_GenericAttribute_i(theAttr, orb) {}; 
+  ~SALOMEDS_AttributeTreeNode_i() {};
+
   void SetFather(SALOMEDS::AttributeTreeNode_ptr value);
   CORBA::Boolean HasFather();
   SALOMEDS::AttributeTreeNode_ptr GetFather();
@@ -71,10 +47,6 @@ public:
   CORBA::Boolean IsChild(SALOMEDS::AttributeTreeNode_ptr value);
   char* Label();
 
-  char* Store();
-  void Restore(const char*);
-
 };
 
-
 #endif
diff --git a/src/SALOMEDS/SALOMEDS_AttributeUserID.cxx b/src/SALOMEDS/SALOMEDS_AttributeUserID.cxx
new file mode 100644 (file)
index 0000000..cc120db
--- /dev/null
@@ -0,0 +1,40 @@
+//  File   : SALOMEDS_AttributeUserID.cxx
+//  Author : Sergey RUIN
+//  Module : SALOME
+
+#include "SALOMEDS_AttributeUserID.hxx"
+
+#include <string>
+#include <TCollection_AsciiString.hxx> 
+#include <TCollection_ExtendedString.hxx>
+#include <Standard_GUID.hxx>
+
+SALOMEDS_AttributeUserID::SALOMEDS_AttributeUserID(const Handle(SALOMEDSImpl_AttributeUserID)& theAttr)
+:SALOMEDS_GenericAttribute(theAttr)
+{}
+
+SALOMEDS_AttributeUserID::SALOMEDS_AttributeUserID(SALOMEDS::AttributeUserID_ptr theAttr)
+:SALOMEDS_GenericAttribute(theAttr)
+{}
+
+SALOMEDS_AttributeUserID::~SALOMEDS_AttributeUserID()
+{}
+
+std::string SALOMEDS_AttributeUserID::Value()
+{
+  std::string aValue;
+  if(_isLocal) {
+    char guid[40];
+    Handle(SALOMEDSImpl_AttributeUserID)::DownCast(_local_impl)->Value().ToCString(guid);
+    aValue = std::string(guid);
+  }
+  else aValue = SALOMEDS::AttributeUserID::_narrow(_corba_impl)->Value();
+  return aValue;
+}
+void SALOMEDS_AttributeUserID::SetValue(const std::string& value)
+{
+  CheckLocked();
+  if(_isLocal) Handle(SALOMEDSImpl_AttributeUserID)::DownCast(_local_impl)->SetValue(Standard_GUID((char*)value.c_str()));
+  else SALOMEDS::AttributeUserID::_narrow(_corba_impl)->SetValue(value.c_str());
+}
diff --git a/src/SALOMEDS/SALOMEDS_AttributeUserID.hxx b/src/SALOMEDS/SALOMEDS_AttributeUserID.hxx
new file mode 100644 (file)
index 0000000..9ff8980
--- /dev/null
@@ -0,0 +1,28 @@
+//  File   : SALOMEDS_AttributeUserID.hxx
+//  Author : Sergey RUIN
+//  Module : SALOME
+
+#ifndef SALOMEDS_AttributeUserID_HeaderFile
+#define SALOMEDS_AttributeUserID_HeaderFile
+
+#include "SALOMEDSClient_AttributeUserID.hxx"
+#include "SALOMEDS_GenericAttribute.hxx"
+#include "SALOMEDSImpl_AttributeUserID.hxx"
+
+// IDL headers
+#include <SALOMEconfig.h>
+#include CORBA_SERVER_HEADER(SALOMEDS)
+#include CORBA_SERVER_HEADER(SALOMEDS_Attributes)
+
+class SALOMEDS_AttributeUserID: public SALOMEDS_GenericAttribute, public SALOMEDSClient_AttributeUserID
+{
+public:  
+  SALOMEDS_AttributeUserID(const Handle(SALOMEDSImpl_AttributeUserID)& theAttr);
+  SALOMEDS_AttributeUserID(SALOMEDS::AttributeUserID_ptr theAttr);
+  ~SALOMEDS_AttributeUserID();
+
+  virtual std::string Value();
+  virtual void SetValue(const std::string& value);
+};
+
+#endif
index 6a3d2d3cd4d501b14809839b7cdd473bfb9167e7..632d63cfcebac544f90369e5aca6f1a1c3020191 100644 (file)
@@ -1,52 +1,28 @@
-//  SALOME SALOMEDS : data structure of SALOME and sources of Salome data server 
-//
-//  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
-// 
-//  This library is free software; you can redistribute it and/or 
-//  modify it under the terms of the GNU Lesser General Public 
-//  License as published by the Free Software Foundation; either 
-//  version 2.1 of the License. 
-// 
-//  This library is distributed in the hope that it will be useful, 
-//  but WITHOUT ANY WARRANTY; without even the implied warranty of 
-//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
-//  Lesser General Public License for more details. 
-// 
-//  You should have received a copy of the GNU Lesser General Public 
-//  License along with this library; if not, write to the Free Software 
-//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
-// 
-//  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
-//
-//
-//
 //  File   : SALOMEDS_AttributeName_i.cxx
-//  Author : Yves FRICAUD
+//  Author : Sergey RUIN
 //  Module : SALOME
-//  $Header$
+
 
 #include "SALOMEDS_AttributeUserID_i.hxx"
+#include "SALOMEDS.hxx"
 #include <TCollection_ExtendedString.hxx>
 
 using namespace std;
 
-char* SALOMEDS_AttributeUserID_i::Value() {
+char* SALOMEDS_AttributeUserID_i::Value() 
+{
+  SALOMEDS::Locker lock;
   char aGUID[40];
-  Handle(TDataStd_UAttribute)::DownCast(_myAttr)->ID().ToCString(aGUID);
+  Handle(SALOMEDSImpl_AttributeUserID)::DownCast(_impl)->ID().ToCString(aGUID);
   CORBA::String_var c_s = CORBA::string_dup(aGUID);
   return c_s._retn();
 }
 
-void SALOMEDS_AttributeUserID_i::SetValue(const char* value) {
+void SALOMEDS_AttributeUserID_i::SetValue(const char* value) 
+{
+  SALOMEDS::Locker lock;
   CheckLocked();
   CORBA::String_var Str = CORBA::string_dup(value);
-  Handle(TDataStd_UAttribute)::DownCast(_myAttr)->SetID(Standard_GUID(Standard_CString(Str)));
-}
-
-char* SALOMEDS_AttributeUserID_i::Store() {
-  return "";
+  Handle(SALOMEDSImpl_AttributeUserID)::DownCast(_impl)->SetValue(Standard_GUID(Standard_CString(Str)));
 }
 
-void SALOMEDS_AttributeUserID_i::Restore(const char* value) {
-}
index d23f6d5893f67ecb63b16fb689686154d71c2f38..34884fb91e7198b3b7feb34395ee71b47e724d9a 100644 (file)
@@ -1,30 +1,6 @@
-//  SALOME SALOMEDS : data structure of SALOME and sources of Salome data server 
-//
-//  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
-// 
-//  This library is free software; you can redistribute it and/or 
-//  modify it under the terms of the GNU Lesser General Public 
-//  License as published by the Free Software Foundation; either 
-//  version 2.1 of the License. 
-// 
-//  This library is distributed in the hope that it will be useful, 
-//  but WITHOUT ANY WARRANTY; without even the implied warranty of 
-//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
-//  Lesser General Public License for more details. 
-// 
-//  You should have received a copy of the GNU Lesser General Public 
-//  License along with this library; if not, write to the Free Software 
-//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
-// 
-//  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
-//
-//
-//
 //  File   : SALOMEDS_AttributeUserID_i.hxx
-//  Author : Yves FRICAUD
+//  Author : Sergey RUIN
 //  Module : SALOME
-//  $Header:
 
 #ifndef SALOMEDS_AttributeUserID_i_HeaderFile
 #define SALOMEDS_AttributeUserID_i_HeaderFile
 #include <SALOMEconfig.h>
 #include CORBA_SERVER_HEADER(SALOMEDS_Attributes)
 
-#include <TDataStd_UAttribute.hxx>
 #include "SALOMEDS_GenericAttribute_i.hxx"
+#include "SALOMEDSImpl_AttributeUserID.hxx"
 
-DEFINE_DERIVED_ATTR(AttributeUserID,TDataStd_UAttribute,false);
+class SALOMEDS_AttributeUserID_i: public virtual POA_SALOMEDS::AttributeUserID,
+                                  public virtual SALOMEDS_GenericAttribute_i {
+public:
+  
+  SALOMEDS_AttributeUserID_i(const Handle(SALOMEDSImpl_AttributeUserID)& theAttr, CORBA::ORB_ptr orb) 
+    :SALOMEDS_GenericAttribute_i(theAttr, orb) {}; 
 
-class SALOMEDS_AttributeUserID_i: 
-  public virtual POA_SALOMEDS::AttributeUserID,
-  public virtual SALOMEDS_TAttributeUserID_i
-{
-  DEFINE_DERIVED_ATTR_METH(AttributeUserID,"FFFFFFFF-D9CD-11d6-945D-1050DA506788");
+  ~SALOMEDS_AttributeUserID_i() {};
 
-public:
   char* Value();
   void SetValue(const char* value);
 
-  char* Store();
-  void Restore(const char*);
+  static const Standard_GUID& DefaultID() {
+    return SALOMEDSImpl_AttributeUserID::DefaultID();
+  }
 
 };
 
 
+
+
 #endif
diff --git a/src/SALOMEDS/SALOMEDS_Attributes.hxx b/src/SALOMEDS/SALOMEDS_Attributes.hxx
new file mode 100644 (file)
index 0000000..2d39bb7
--- /dev/null
@@ -0,0 +1,107 @@
+//  File   : SALOMEDS_Attributes.hxx
+//  Author : Sergey RUIN
+//  Module : SALOME
+
+#ifndef __SALOMEDS_ATTRIBUTES__H__
+#define __SALOMEDS_ATTRIBUTES__H__
+
+#include "SALOMEDSImpl_GenericAttribute.hxx"
+#include "SALOMEDSImpl_AttributeName.hxx"
+#include "SALOMEDSImpl_AttributeComment.hxx"
+#include "SALOMEDSImpl_AttributeInteger.hxx"
+#include "SALOMEDSImpl_AttributeReal.hxx"
+#include "SALOMEDSImpl_AttributeTreeNode.hxx"
+#include "SALOMEDSImpl_AttributeUserID.hxx"
+#include "SALOMEDSImpl_AttributeReference.hxx"
+#include "SALOMEDSImpl_AttributeSequenceOfReal.hxx"
+#include "SALOMEDSImpl_AttributeSequenceOfInteger.hxx" 
+#include "SALOMEDSImpl_AttributeIOR.hxx"
+#include "SALOMEDSImpl_AttributePersistentRef.hxx" 
+#include "SALOMEDSImpl_AttributeDrawable.hxx"
+#include "SALOMEDSImpl_AttributeSelectable.hxx"
+#include "SALOMEDSImpl_AttributeExpandable.hxx"
+#include "SALOMEDSImpl_AttributeOpened.hxx"
+#include "SALOMEDSImpl_AttributeTextColor.hxx"
+#include "SALOMEDSImpl_AttributeTextHighlightColor.hxx"
+#include "SALOMEDSImpl_AttributePixMap.hxx"
+#include "SALOMEDSImpl_AttributeLocalID.hxx"
+#include "SALOMEDSImpl_AttributeTarget.hxx"
+#include "SALOMEDSImpl_AttributeTableOfInteger.hxx"
+#include "SALOMEDSImpl_AttributeTableOfReal.hxx"
+#include "SALOMEDSImpl_AttributeTableOfString.hxx"
+#include "SALOMEDSImpl_AttributeStudyProperties.hxx"
+#include "SALOMEDSImpl_AttributePythonObject.hxx"
+#include "SALOMEDSImpl_AttributeExternalFileDef.hxx"
+#include "SALOMEDSImpl_AttributeFileType.hxx"
+#include "SALOMEDSImpl_AttributeFlags.hxx"
+#include "SALOMEDSImpl_AttributeGraphic.hxx"
+
+#include "SALOMEDS_GenericAttribute_i.hxx"
+#include "SALOMEDS_AttributeName_i.hxx"
+#include "SALOMEDS_AttributeComment_i.hxx"
+#include "SALOMEDS_AttributeInteger_i.hxx"
+#include "SALOMEDS_AttributeReal_i.hxx"
+#include "SALOMEDS_AttributeTreeNode_i.hxx"
+#include "SALOMEDS_AttributeUserID_i.hxx"
+#include "SALOMEDS_AttributeSequenceOfReal_i.hxx"
+#include "SALOMEDS_AttributeSequenceOfInteger_i.hxx" 
+#include "SALOMEDS_AttributeIOR_i.hxx"
+#include "SALOMEDS_AttributePersistentRef_i.hxx" 
+#include "SALOMEDS_AttributeDrawable_i.hxx"
+#include "SALOMEDS_AttributeSelectable_i.hxx"
+#include "SALOMEDS_AttributeExpandable_i.hxx"
+#include "SALOMEDS_AttributeOpened_i.hxx"
+#include "SALOMEDS_AttributeTextColor_i.hxx"
+#include "SALOMEDS_AttributeTextHighlightColor_i.hxx"
+#include "SALOMEDS_AttributePixMap_i.hxx"
+#include "SALOMEDS_AttributeLocalID_i.hxx"
+#include "SALOMEDS_AttributeTarget_i.hxx"
+#include "SALOMEDS_AttributeTableOfInteger_i.hxx"
+#include "SALOMEDS_AttributeTableOfReal_i.hxx"
+#include "SALOMEDS_AttributeTableOfString_i.hxx"
+#include "SALOMEDS_AttributeStudyProperties_i.hxx"
+#include "SALOMEDS_AttributePythonObject_i.hxx"
+#include "SALOMEDS_AttributeExternalFileDef_i.hxx"
+#include "SALOMEDS_AttributeFileType_i.hxx"
+#include "SALOMEDS_AttributeFlags_i.hxx"
+#include "SALOMEDS_AttributeGraphic_i.hxx"
+
+#define __CreateCORBAAttribute(CORBA_Name) if (strcmp(aTypeOfAttribute, #CORBA_Name) == 0) { \
+    Handle(SALOMEDSImpl_##CORBA_Name) A = Handle(SALOMEDSImpl_##CORBA_Name)::DownCast(theAttr); \
+    SALOMEDS_##CORBA_Name##_i* Attr = new SALOMEDS_##CORBA_Name##_i(A, theOrb); \
+    attr_servant = Attr; \
+    anAttribute = Attr->CORBA_Name::_this(); \
+  }
+
+
+#define __CreateGenericCORBAAttribute \
+__CreateCORBAAttribute(AttributeReal) \
+__CreateCORBAAttribute(AttributeInteger) \
+__CreateCORBAAttribute(AttributeSequenceOfReal) \
+__CreateCORBAAttribute(AttributeSequenceOfInteger) \
+__CreateCORBAAttribute(AttributeName) \
+__CreateCORBAAttribute(AttributeComment) \
+__CreateCORBAAttribute(AttributeIOR) \
+__CreateCORBAAttribute(AttributePixMap) \
+__CreateCORBAAttribute(AttributeLocalID) \
+__CreateCORBAAttribute(AttributeTableOfInteger) \
+__CreateCORBAAttribute(AttributeTableOfReal) \
+__CreateCORBAAttribute(AttributeTableOfString) \
+__CreateCORBAAttribute(AttributePythonObject) \
+__CreateCORBAAttribute(AttributePersistentRef) \
+__CreateCORBAAttribute(AttributeDrawable) \
+__CreateCORBAAttribute(AttributeSelectable) \
+__CreateCORBAAttribute(AttributeExpandable) \
+__CreateCORBAAttribute(AttributeOpened) \
+__CreateCORBAAttribute(AttributeTextColor) \
+__CreateCORBAAttribute(AttributeTextHighlightColor) \
+__CreateCORBAAttribute(AttributeTarget) \
+__CreateCORBAAttribute(AttributeStudyProperties) \
+__CreateCORBAAttribute(AttributeExternalFileDef) \
+__CreateCORBAAttribute(AttributeFileType) \
+__CreateCORBAAttribute(AttributeFlags) \
+__CreateCORBAAttribute(AttributeGraphic) \
+__CreateCORBAAttribute(AttributeTreeNode) \
+__CreateCORBAAttribute(AttributeUserID)
+
+#endif
diff --git a/src/SALOMEDS/SALOMEDS_ChildIterator.cxx b/src/SALOMEDS/SALOMEDS_ChildIterator.cxx
new file mode 100644 (file)
index 0000000..e9dd1d4
--- /dev/null
@@ -0,0 +1,63 @@
+//  File   : SALOMEDS_ChildIterator.cxx
+//  Author : Sergey RUIN
+//  Module : SALOME
+
+
+
+#include "SALOMEDS_ChildIterator.hxx"
+#include "SALOMEDS_SObject.hxx"
+
+using namespace std; 
+
+SALOMEDS_ChildIterator::SALOMEDS_ChildIterator(const Handle(SALOMEDSImpl_ChildIterator)& theIterator)
+{
+  _isLocal = true;
+  _local_impl = theIterator;
+  _corba_impl = SALOMEDS::ChildIterator::_nil();
+}
+
+SALOMEDS_ChildIterator::SALOMEDS_ChildIterator(SALOMEDS::ChildIterator_ptr theIterator)
+{
+  _isLocal = false;
+  _local_impl = NULL;
+  _corba_impl = SALOMEDS::ChildIterator::_duplicate(theIterator);
+}
+
+SALOMEDS_ChildIterator::~SALOMEDS_ChildIterator()
+{
+  if(!_isLocal) _corba_impl->Destroy(); 
+}
+
+void SALOMEDS_ChildIterator::Init()
+{
+  if(_isLocal) _local_impl->Init();
+  else _corba_impl->Init();
+}
+
+void SALOMEDS_ChildIterator::InitEx(bool theAllLevels)
+{
+  if(_isLocal) _local_impl->InitEx(theAllLevels);
+  else _corba_impl->InitEx(theAllLevels);
+}
+
+bool SALOMEDS_ChildIterator::More()
+{
+  bool ret;
+  if(_isLocal) ret = _local_impl->More();
+  else ret = _corba_impl->More();
+  return ret;
+}
+
+void SALOMEDS_ChildIterator::Next() 
+{
+  if(_isLocal) _local_impl->Next();
+  else _corba_impl->Next();
+}
+
+_PTR(SObject) SALOMEDS_ChildIterator::Value()
+{
+  SALOMEDSClient_SObject* aSO;
+  if(_isLocal) aSO = new SALOMEDS_SObject(_local_impl->Value());
+  else aSO = new SALOMEDS_SObject(_corba_impl->Value());
+  return _PTR(SObject)(aSO);
+}
diff --git a/src/SALOMEDS/SALOMEDS_ChildIterator.hxx b/src/SALOMEDS/SALOMEDS_ChildIterator.hxx
new file mode 100644 (file)
index 0000000..127611f
--- /dev/null
@@ -0,0 +1,34 @@
+//  File   : SALOMEDS_ChildIterator.hxx
+//  Author : Sergey RUIN
+//  Module : SALOME
+
+#ifndef __SALOMEDS_CHILDITERATOR_H__
+#define __SALOMEDS_CHILDITERATOR_H__
+
+#include "SALOMEDSClient.hxx"
+#include "SALOMEDSImpl_ChildIterator.hxx"
+
+// IDL headers
+#include <SALOMEconfig.h>
+#include CORBA_SERVER_HEADER(SALOMEDS)
+
+class SALOMEDS_ChildIterator: public SALOMEDSClient_ChildIterator
+{
+private:
+  bool                               _isLocal;
+  Handle(SALOMEDSImpl_ChildIterator) _local_impl;
+  SALOMEDS::ChildIterator_var        _corba_impl;
+
+public:
+
+  SALOMEDS_ChildIterator(const Handle(SALOMEDSImpl_ChildIterator)& theIterator);
+  SALOMEDS_ChildIterator(SALOMEDS::ChildIterator_ptr theIterator);
+  ~SALOMEDS_ChildIterator();
+
+  virtual void Init();
+  virtual void InitEx(bool theAllLevels);
+  virtual bool More();
+  virtual void Next();
+  virtual _PTR(SObject) Value();
+};
+#endif
index d256bb669257b046510e90b42459d42978ed5f83..d57b0971c1129aecb1f2f7554ae23d497193259c 100644 (file)
@@ -1,35 +1,13 @@
-//  SALOME SALOMEDS : data structure of SALOME and sources of Salome data server 
-//
-//  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
-// 
-//  This library is free software; you can redistribute it and/or 
-//  modify it under the terms of the GNU Lesser General Public 
-//  License as published by the Free Software Foundation; either 
-//  version 2.1 of the License. 
-// 
-//  This library is distributed in the hope that it will be useful, 
-//  but WITHOUT ANY WARRANTY; without even the implied warranty of 
-//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
-//  Lesser General Public License for more details. 
-// 
-//  You should have received a copy of the GNU Lesser General Public 
-//  License along with this library; if not, write to the Free Software 
-//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
-// 
-//  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
-//
-//
-//
 //  File   : SALOMEDS_ChildIterator_i.cxx
-//  Author : Yves FRICAUD
+//  Author : Sergey RUIN
 //  Module : SALOME
-//  $Header$
 
-#include <TDF_Tool.hxx>
 
 #include "SALOMEDS_ChildIterator_i.hxx"
 #include "SALOMEDS_SObject_i.hxx"
+#include "SALOMEDS.hxx"
+#include "SALOMEDSImpl_SObject.hxx"
+#include "SALOMEDSImpl_Study.hxx"
 #include "utilities.h"
 
 using namespace std;
@@ -39,13 +17,12 @@ using namespace std;
  *  Purpose  :
  */
 //============================================================================
-SALOMEDS_ChildIterator_i::SALOMEDS_ChildIterator_i(SALOMEDS_Study_i* theStudy,
-                                                  const TDF_Label& theLabel,
-                                                  bool theIsAllLevels): 
-  _it(theLabel,theIsAllLevels),
-  _lab(theLabel),
-  _study(theStudy)
+SALOMEDS_ChildIterator_i::SALOMEDS_ChildIterator_i(const Handle(SALOMEDSImpl_ChildIterator)& theImpl,
+                                                  CORBA::ORB_ptr orb) 
+  : _it(theImpl)
 {
+  SALOMEDS::Locker lock;
+  _orb = CORBA::ORB::_duplicate(orb);
 }
 
 //============================================================================
@@ -64,7 +41,8 @@ SALOMEDS_ChildIterator_i::~SALOMEDS_ChildIterator_i()
 //============================================================================
 void SALOMEDS_ChildIterator_i::Init()
 { 
-  _it.Initialize(_lab);
+  SALOMEDS::Locker lock;
+  _it->Init();
 }
 
 //============================================================================
@@ -72,9 +50,10 @@ void SALOMEDS_ChildIterator_i::Init()
  * 
  */
 //============================================================================
-void SALOMEDS_ChildIterator_i::InitEx(CORBA::Boolean theIsAllLevels)
+void SALOMEDS_ChildIterator_i::InitEx(CORBA::Boolean allLevels)
 { 
-  _it.Initialize(_lab,theIsAllLevels);
+  SALOMEDS::Locker lock;
+  _it->InitEx (allLevels);
 }
 
 //============================================================================
@@ -84,7 +63,8 @@ void SALOMEDS_ChildIterator_i::InitEx(CORBA::Boolean theIsAllLevels)
 //============================================================================
 CORBA::Boolean SALOMEDS_ChildIterator_i::More()
 {
-  return _it.More();
+  SALOMEDS::Locker lock;
+  return _it->More();
 }
 
  //============================================================================
@@ -94,22 +74,22 @@ CORBA::Boolean SALOMEDS_ChildIterator_i::More()
 //============================================================================
 void SALOMEDS_ChildIterator_i::Next()
 {
-  _it.Next();
+  SALOMEDS::Locker lock;
+  _it->Next();
 }
 
 
 //============================================================================
-/*! Function :
+/*! Function : Value
  *  Purpose  :
  */
 //============================================================================
 
 SALOMEDS::SObject_ptr SALOMEDS_ChildIterator_i::Value()
 {
-  return SALOMEDS_SObject_i::NewRef(_study,_it.Value())._retn();
+  SALOMEDS::Locker lock;
+  Handle(SALOMEDSImpl_SObject) aSO = _it->Value();
+  SALOMEDS::SObject_var so = SALOMEDS_SObject_i::New (aSO, _orb);
+  return so._retn();
 }
 
-SALOMEDS_SObject_i* SALOMEDS_ChildIterator_i::GetValue()
-{
-  return SALOMEDS_SObject_i::NewPtr(_study,_it.Value());
-}
index dc7cfbe9cea0d05ae9a1fb74208e72f88c191ec3..e2baa207123ff7890f100c548753c1cb2ef70198 100644 (file)
@@ -1,71 +1,41 @@
-//  SALOME SALOMEDS : data structure of SALOME and sources of Salome data server 
-//
-//  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
-// 
-//  This library is free software; you can redistribute it and/or 
-//  modify it under the terms of the GNU Lesser General Public 
-//  License as published by the Free Software Foundation; either 
-//  version 2.1 of the License. 
-// 
-//  This library is distributed in the hope that it will be useful, 
-//  but WITHOUT ANY WARRANTY; without even the implied warranty of 
-//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
-//  Lesser General Public License for more details. 
-// 
-//  You should have received a copy of the GNU Lesser General Public 
-//  License along with this library; if not, write to the Free Software 
-//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
-// 
-//  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
-//
-//
-//
 //  File   : SALOMEDS_ChildIterator_i.hxx
-//  Author : Yves FRICAUD
+//  Author : Sergey RUIN
 //  Module : SALOME
-//  $Header$
 
 #ifndef __SALOMEDS_CHILDITERATOR_I_H__
 #define __SALOMEDS_CHILDITERATOR_I_H__
 
+// std C++ headers
+#include <iostream>
+
 // IDL headers
 #include <SALOMEconfig.h>
 #include CORBA_SERVER_HEADER(SALOMEDS)
+#include <SALOME_GenericObj_i.hh>
 
 // Cascade headers
-#include <TDF_ChildIterator.hxx>
-#include <TDF_Label.hxx>
-
-class SALOMEDS_Study_i;
-class SALOMEDS_SObject_i;
+#include "SALOMEDSImpl_ChildIterator.hxx"
+#include <stdio.h>
 
-class SALOMEDS_ChildIterator_i: public POA_SALOMEDS::ChildIterator,
-                               public PortableServer::RefCountServantBase 
+class SALOMEDS_ChildIterator_i: public virtual POA_SALOMEDS::ChildIterator,
+                               public virtual PortableServer::RefCountServantBase,
+                               public virtual SALOME::GenericObj_i
 {
-  SALOMEDS_ChildIterator_i(); // Not implemented
-  void operator=(const SALOMEDS_ChildIterator_i&); // Not implemented
-
 private:
-  SALOMEDS_Study_i*        _study;
-  TDF_Label                _lab;
-  TDF_ChildIterator        _it;
-
+  CORBA::ORB_ptr                     _orb;
+  Handle(SALOMEDSImpl_ChildIterator) _it;
 public:
-  SALOMEDS_ChildIterator_i(SALOMEDS_Study_i* theStudy,
-                          const TDF_Label& theLabel,
-                          bool theIsAllLevels = false);
 
+  //! standard constructor  
+  SALOMEDS_ChildIterator_i(const Handle(SALOMEDSImpl_ChildIterator)&, CORBA::ORB_ptr);
+  
+  //! standard destructor
   ~SALOMEDS_ChildIterator_i();
   
-  SALOMEDS_SObject_i* GetValue();
-
   virtual void Init();
   virtual void InitEx(CORBA::Boolean);
   virtual CORBA::Boolean More();
   virtual void Next();
   virtual SALOMEDS::SObject_ptr Value();
 };
-
-
 #endif
index a0cc035ce59a4e905716b5a6cabcb7682d7da5c2..8a19fe9e2453cbb6f37e78a193c9b8c5ea979978 100644 (file)
@@ -31,6 +31,7 @@
 #include "SALOMEDS_StudyManager_i.hxx"
 #include "utilities.h"
 #include "SALOMEDS_AttributeName_i.hxx"
+#include "HDFOI.hxx"
 using namespace std;
 
 //============================================================================
diff --git a/src/SALOMEDS/SALOMEDS_ClientAttributes.hxx b/src/SALOMEDS/SALOMEDS_ClientAttributes.hxx
new file mode 100644 (file)
index 0000000..9f45d7e
--- /dev/null
@@ -0,0 +1,140 @@
+//  File   : SALOMEDS_Attributes.hxx
+//  Author : Sergey RUIN
+//  Module : SALOME
+
+#ifndef __SALOMEDSCLIENT_ATTRIBUTES__H__
+#define __SALOMEDSCLIENT_ATTRIBUTES__H__
+
+#include CORBA_SERVER_HEADER(SALOMEDS_Attributes)
+
+#include "SALOMEDSImpl_GenericAttribute.hxx"
+#include "SALOMEDSImpl_AttributeName.hxx"
+#include "SALOMEDSImpl_AttributeComment.hxx"
+#include "SALOMEDSImpl_AttributeInteger.hxx"
+#include "SALOMEDSImpl_AttributeReal.hxx"
+#include "SALOMEDSImpl_AttributeTreeNode.hxx"
+#include "SALOMEDSImpl_AttributeUserID.hxx"
+#include "SALOMEDSImpl_AttributeSequenceOfReal.hxx"
+#include "SALOMEDSImpl_AttributeSequenceOfInteger.hxx" 
+#include "SALOMEDSImpl_AttributeIOR.hxx"
+#include "SALOMEDSImpl_AttributePersistentRef.hxx" 
+#include "SALOMEDSImpl_AttributeDrawable.hxx"
+#include "SALOMEDSImpl_AttributeSelectable.hxx"
+#include "SALOMEDSImpl_AttributeExpandable.hxx"
+#include "SALOMEDSImpl_AttributeOpened.hxx"
+#include "SALOMEDSImpl_AttributeTextColor.hxx"
+#include "SALOMEDSImpl_AttributeTextHighlightColor.hxx"
+#include "SALOMEDSImpl_AttributePixMap.hxx"
+#include "SALOMEDSImpl_AttributeLocalID.hxx"
+#include "SALOMEDSImpl_AttributeTarget.hxx"
+#include "SALOMEDSImpl_AttributeTableOfInteger.hxx"
+#include "SALOMEDSImpl_AttributeTableOfReal.hxx"
+#include "SALOMEDSImpl_AttributeTableOfString.hxx"
+#include "SALOMEDSImpl_AttributeStudyProperties.hxx"
+#include "SALOMEDSImpl_AttributePythonObject.hxx"
+#include "SALOMEDSImpl_AttributeExternalFileDef.hxx"
+#include "SALOMEDSImpl_AttributeFileType.hxx"
+#include "SALOMEDSImpl_AttributeFlags.hxx"
+#include "SALOMEDSImpl_AttributeGraphic.hxx"
+
+#include "SALOMEDS_GenericAttribute.hxx"
+#include "SALOMEDS_AttributeName.hxx"
+#include "SALOMEDS_AttributeComment.hxx"
+#include "SALOMEDS_AttributeInteger.hxx"
+#include "SALOMEDS_AttributeReal.hxx"
+#include "SALOMEDS_AttributeTreeNode.hxx"
+#include "SALOMEDS_AttributeUserID.hxx"
+#include "SALOMEDS_AttributeSequenceOfReal.hxx"
+#include "SALOMEDS_AttributeSequenceOfInteger.hxx" 
+#include "SALOMEDS_AttributeIOR.hxx"
+#include "SALOMEDS_AttributePersistentRef.hxx" 
+#include "SALOMEDS_AttributeDrawable.hxx"
+#include "SALOMEDS_AttributeSelectable.hxx"
+#include "SALOMEDS_AttributeExpandable.hxx"
+#include "SALOMEDS_AttributeOpened.hxx"
+#include "SALOMEDS_AttributeTextColor.hxx"
+#include "SALOMEDS_AttributeTextHighlightColor.hxx"
+#include "SALOMEDS_AttributePixMap.hxx"
+#include "SALOMEDS_AttributeLocalID.hxx"
+#include "SALOMEDS_AttributeTarget.hxx"
+#include "SALOMEDS_AttributeTableOfInteger.hxx"
+#include "SALOMEDS_AttributeTableOfReal.hxx"
+#include "SALOMEDS_AttributeTableOfString.hxx"
+#include "SALOMEDS_AttributeStudyProperties.hxx"
+#include "SALOMEDS_AttributePythonObject.hxx"
+#include "SALOMEDS_AttributeExternalFileDef.hxx"
+#include "SALOMEDS_AttributeFileType.hxx"
+#include "SALOMEDS_AttributeFlags.hxx"
+#include "SALOMEDS_AttributeGraphic.hxx"
+
+#define __CreateClientAttributeLocal(CORBA_Name) if (strcmp(aTypeOfAttribute.c_str(), #CORBA_Name) == 0) { \
+    Handle(SALOMEDSImpl_##CORBA_Name) A = Handle(SALOMEDSImpl_##CORBA_Name)::DownCast(theGA); \
+    aGA = new SALOMEDS_##CORBA_Name(A); \
+  }
+
+#define __CreateClientAttributeCORBA(CORBA_Name) if (strcmp(aTypeOfAttribute.c_str(), #CORBA_Name) == 0) { \
+    SALOMEDS::CORBA_Name##_var A = SALOMEDS::CORBA_Name::_narrow(theGA); \
+    aGA = new SALOMEDS_##CORBA_Name(A); \
+  }
+
+#define __CreateGenericClientAttributeLocal \
+__CreateClientAttributeLocal(AttributeReal) \
+__CreateClientAttributeLocal(AttributeInteger) \
+__CreateClientAttributeLocal(AttributeSequenceOfReal) \
+__CreateClientAttributeLocal(AttributeSequenceOfInteger) \
+__CreateClientAttributeLocal(AttributeName) \
+__CreateClientAttributeLocal(AttributeComment) \
+__CreateClientAttributeLocal(AttributeIOR) \
+__CreateClientAttributeLocal(AttributePixMap) \
+__CreateClientAttributeLocal(AttributeLocalID) \
+__CreateClientAttributeLocal(AttributeTableOfInteger) \
+__CreateClientAttributeLocal(AttributeTableOfReal) \
+__CreateClientAttributeLocal(AttributeTableOfString) \
+__CreateClientAttributeLocal(AttributePythonObject) \
+__CreateClientAttributeLocal(AttributePersistentRef) \
+__CreateClientAttributeLocal(AttributeDrawable) \
+__CreateClientAttributeLocal(AttributeSelectable) \
+__CreateClientAttributeLocal(AttributeExpandable) \
+__CreateClientAttributeLocal(AttributeOpened) \
+__CreateClientAttributeLocal(AttributeTextColor) \
+__CreateClientAttributeLocal(AttributeTextHighlightColor) \
+__CreateClientAttributeLocal(AttributeTarget) \
+__CreateClientAttributeLocal(AttributeStudyProperties) \
+__CreateClientAttributeLocal(AttributeExternalFileDef) \
+__CreateClientAttributeLocal(AttributeFileType) \
+__CreateClientAttributeLocal(AttributeFlags) \
+__CreateClientAttributeLocal(AttributeGraphic) \
+__CreateClientAttributeLocal(AttributeTreeNode) \
+__CreateClientAttributeLocal(AttributeUserID)
+
+#define __CreateGenericClientAttributeCORBA \
+__CreateClientAttributeCORBA(AttributeReal) \
+__CreateClientAttributeCORBA(AttributeInteger) \
+__CreateClientAttributeCORBA(AttributeSequenceOfReal) \
+__CreateClientAttributeCORBA(AttributeSequenceOfInteger) \
+__CreateClientAttributeCORBA(AttributeName) \
+__CreateClientAttributeCORBA(AttributeComment) \
+__CreateClientAttributeCORBA(AttributeIOR) \
+__CreateClientAttributeCORBA(AttributePixMap) \
+__CreateClientAttributeCORBA(AttributeLocalID) \
+__CreateClientAttributeCORBA(AttributeTableOfInteger) \
+__CreateClientAttributeCORBA(AttributeTableOfReal) \
+__CreateClientAttributeCORBA(AttributeTableOfString) \
+__CreateClientAttributeCORBA(AttributePythonObject) \
+__CreateClientAttributeCORBA(AttributePersistentRef) \
+__CreateClientAttributeCORBA(AttributeDrawable) \
+__CreateClientAttributeCORBA(AttributeSelectable) \
+__CreateClientAttributeCORBA(AttributeExpandable) \
+__CreateClientAttributeCORBA(AttributeOpened) \
+__CreateClientAttributeCORBA(AttributeTextColor) \
+__CreateClientAttributeCORBA(AttributeTextHighlightColor) \
+__CreateClientAttributeCORBA(AttributeTarget) \
+__CreateClientAttributeCORBA(AttributeStudyProperties) \
+__CreateClientAttributeCORBA(AttributeExternalFileDef) \
+__CreateClientAttributeCORBA(AttributeFileType) \
+__CreateClientAttributeCORBA(AttributeFlags) \
+__CreateClientAttributeCORBA(AttributeGraphic) \
+__CreateClientAttributeCORBA(AttributeTreeNode) \
+__CreateClientAttributeCORBA(AttributeUserID)
+
+#endif
diff --git a/src/SALOMEDS/SALOMEDS_Driver_i.cxx b/src/SALOMEDS/SALOMEDS_Driver_i.cxx
new file mode 100644 (file)
index 0000000..12a1848
--- /dev/null
@@ -0,0 +1,251 @@
+
+
+#include "SALOMEDS_Driver_i.hxx"
+#include "utilities.h"
+#include "SALOMEDS_SObject_i.hxx"
+#include "SALOMEDS_SComponent_i.hxx"
+#include "SALOMEDS_Study_i.hxx"
+#include "SALOMEDS.hxx"
+#include <stdlib.h>
+
+using namespace std;  
+
+SALOMEDS_Driver_i::~SALOMEDS_Driver_i()
+{
+}
+
+unsigned char* SALOMEDS_Driver_i::Save(const Handle(SALOMEDSImpl_SComponent)& theComponent,
+                                      const TCollection_AsciiString& theURL,
+                                      long& theStreamLength,
+                                      bool isMultiFile)
+{  
+  SALOMEDS::SComponent_var sco = SALOMEDS_SComponent_i::New (theComponent, _orb);
+  SALOMEDS::TMPFile_var aStream;
+  CORBA::String_var url = CORBA::string_dup(theURL.ToCString());
+  SALOMEDS::unlock(); 
+  aStream = _driver->Save(sco.in(), url, isMultiFile);
+  theStreamLength = aStream->length();
+  unsigned char* aRetStream = NULL;
+  if(theStreamLength > 0) {
+    aRetStream = new unsigned char[theStreamLength];
+    memcpy(aRetStream, aStream->NP_data(), theStreamLength);
+  }
+  return aRetStream;
+}
+
+unsigned char* SALOMEDS_Driver_i::SaveASCII(const Handle(SALOMEDSImpl_SComponent)& theComponent,
+                                           const TCollection_AsciiString& theURL,
+                                           long& theStreamLength,
+                                           bool isMultiFile)
+{
+  SALOMEDS::SComponent_var sco = SALOMEDS_SComponent_i::New (theComponent, _orb);
+  SALOMEDS::TMPFile_var aStream;
+  CORBA::String_var url = CORBA::string_dup(theURL.ToCString());
+  SALOMEDS::unlock(); 
+  aStream = _driver->SaveASCII(sco.in(), url, isMultiFile);
+  theStreamLength = aStream->length();
+  unsigned char* aRetStream = NULL;
+  if(theStreamLength > 0) {
+    aRetStream = new unsigned char[theStreamLength];
+    memcpy(aRetStream, aStream->NP_data(), theStreamLength);
+  }
+  return aRetStream; 
+}
+  
+bool SALOMEDS_Driver_i::Load(const Handle(SALOMEDSImpl_SComponent)& theComponent,
+                            const unsigned char* theStream,
+                            const long theStreamLength,
+                            const TCollection_AsciiString& theURL,
+                            bool isMultiFile)
+{
+  SALOMEDS::SComponent_var sco = SALOMEDS_SComponent_i::New (theComponent, _orb);
+  CORBA::String_var url = CORBA::string_dup(theURL.ToCString());
+  CORBA::Octet* anOctetBuf =  (CORBA::Octet*)theStream;
+
+  SALOMEDS::TMPFile_var aStream;
+  if(theStreamLength > 0) 
+    aStream = new SALOMEDS::TMPFile(theStreamLength, theStreamLength, anOctetBuf, 0);  
+  else 
+    aStream = new SALOMEDS::TMPFile(0);
+
+  SALOMEDS::unlock(); 
+  return _driver->Load(sco.in(), aStream.in(), url, isMultiFile);
+}
+
+bool SALOMEDS_Driver_i::LoadASCII(const Handle(SALOMEDSImpl_SComponent)& theComponent,
+                                 const unsigned char* theStream,
+                                 const long theStreamLength,
+                                 const TCollection_AsciiString& theURL,
+                                 bool isMultiFile)
+{
+  SALOMEDS::SComponent_var sco = SALOMEDS_SComponent_i::New (theComponent, _orb);
+  CORBA::String_var url = CORBA::string_dup(theURL.ToCString());
+  CORBA::Octet* anOctetBuf =  (CORBA::Octet*)theStream;
+
+  SALOMEDS::TMPFile_var aStream;
+  if(theStreamLength > 0) 
+    aStream = new SALOMEDS::TMPFile(theStreamLength, theStreamLength, anOctetBuf, 0);  
+  else 
+    aStream = new SALOMEDS::TMPFile(0);
+
+  SALOMEDS::unlock(); 
+  return _driver->LoadASCII(sco.in(), aStream.in(), url, isMultiFile);
+}
+
+void SALOMEDS_Driver_i::Close(const Handle(SALOMEDSImpl_SComponent)& theComponent)
+{
+  SALOMEDS::SComponent_var sco = SALOMEDS_SComponent_i::New (theComponent, _orb);
+  SALOMEDS::unlock(); 
+  _driver->Close(sco.in());
+}
+
+
+TCollection_AsciiString SALOMEDS_Driver_i::IORToLocalPersistentID(const Handle(SALOMEDSImpl_SObject)& theSObject,
+                                                                 const TCollection_AsciiString& IORString,
+                                                                 bool isMultiFile,
+                                                                 bool isASCII)
+{
+  SALOMEDS::SObject_var so = SALOMEDS_SObject_i::New (theSObject, _orb);
+  CORBA::String_var ior = CORBA::string_dup(IORString.ToCString());
+  SALOMEDS::unlock(); 
+  CORBA::String_var pers_string =_driver->IORToLocalPersistentID(so.in(), ior.in(), isMultiFile, isASCII);
+  return TCollection_AsciiString(pers_string);
+}
+
+
+TCollection_AsciiString SALOMEDS_Driver_i::LocalPersistentIDToIOR(const Handle(SALOMEDSImpl_SObject)& theObject,
+                                                                 const TCollection_AsciiString& aLocalPersistentID,
+                                                                 bool isMultiFile,
+                                                                 bool isASCII)
+{
+  SALOMEDS::SObject_var so = SALOMEDS_SObject_i::New (theObject, _orb);
+  CORBA::String_var pers_string = CORBA::string_dup(aLocalPersistentID.ToCString());
+  SALOMEDS::unlock(); 
+  CORBA::String_var IOR =_driver->LocalPersistentIDToIOR(so.in(), pers_string.in(), isMultiFile, isASCII);
+  return TCollection_AsciiString(IOR);
+}
+
+bool SALOMEDS_Driver_i::CanCopy(const Handle(SALOMEDSImpl_SObject)& theObject)
+{
+  SALOMEDS::SObject_var so = SALOMEDS_SObject_i::New (theObject, _orb);
+  SALOMEDS::unlock();
+  return _driver->CanCopy(so.in());
+}
+
+
+unsigned char* SALOMEDS_Driver_i::CopyFrom(const Handle(SALOMEDSImpl_SObject)& theObject, 
+                                          int& theObjectID,
+                                          long& theStreamLength)
+{
+  SALOMEDS::SObject_var so = SALOMEDS_SObject_i::New (theObject, _orb);
+  SALOMEDS::TMPFile_var aStream;
+  CORBA::Long anObjectID;
+
+  SALOMEDS::unlock();
+  aStream = _driver->CopyFrom(so.in(), anObjectID);
+
+  theObjectID = anObjectID;
+  theStreamLength = aStream->length();
+
+  unsigned char* aRetStream = NULL;
+  if(theStreamLength > 0) {
+    aRetStream = new unsigned char[theStreamLength];
+    memcpy(aRetStream, aStream->NP_data(), theStreamLength);
+  }
+
+  return aRetStream;
+}
+
+bool SALOMEDS_Driver_i::CanPaste(const TCollection_AsciiString& theComponentName, int theObjectID)
+{
+  SALOMEDS::unlock();
+  return _driver->CanPaste(theComponentName.ToCString(), theObjectID);
+}
+
+TCollection_AsciiString SALOMEDS_Driver_i::PasteInto(const unsigned char* theStream,
+                                                    const long theStreamLength,
+                                                    int theObjectID,
+                                                    const Handle(SALOMEDSImpl_SObject)& theObject)
+{
+  SALOMEDS::SObject_var so = SALOMEDS_SObject_i::New (theObject, _orb);
+  CORBA::Octet* anOctetBuf =  (CORBA::Octet*)theStream;
+
+  SALOMEDS::TMPFile_var aStream;
+  if(theStreamLength > 0) 
+    aStream = new SALOMEDS::TMPFile(theStreamLength, theStreamLength, anOctetBuf, 0);  
+  else 
+    aStream = new SALOMEDS::TMPFile(0);
+
+  SALOMEDS::unlock();
+  SALOMEDS::SObject_var ret_so = _driver->PasteInto(aStream.in(), theObjectID, so.in());
+
+  return TCollection_AsciiString((char*)ret_so->GetID());
+}
+
+unsigned char* SALOMEDS_Driver_i::DumpPython(const Handle(SALOMEDSImpl_Study)& theStudy, 
+                                            bool isPublished, 
+                                            bool& isValidScript,
+                                            long& theStreamLength)
+{
+  SALOMEDS_Study_i *  st_servant = new SALOMEDS_Study_i (theStudy, _orb);
+  SALOMEDS::Study_var st  = SALOMEDS::Study::_narrow(st_servant->_this());
+  Engines::TMPFile_var aStream;
+  CORBA::Boolean aValidScript, aPublished;
+  aPublished = isPublished;
+  Engines::Component_ptr aComponent = Engines::Component::_narrow(_driver);
+  SALOMEDS::unlock();
+  aStream = aComponent->DumpPython(st.in(), aPublished, aValidScript);
+  SALOMEDS::lock();
+  isValidScript = aValidScript;
+  theStreamLength = aStream->length();
+  unsigned char* aRetStream = NULL;
+
+  if(theStreamLength > 0) {
+    aRetStream = new unsigned char[theStreamLength];
+    memcpy(aRetStream, aStream->NP_data(), theStreamLength);
+  }
+
+  return aRetStream;
+}
+
+//###############################################################################################################
+//                                          SALOMEDS_DriverFactory
+//###############################################################################################################
+
+SALOMEDSImpl_Driver* SALOMEDS_DriverFactory_i::GetDriverByType(const TCollection_AsciiString& theComponentType)
+{
+  CORBA::Object_var obj;
+
+  TCollection_AsciiString aFactoryType;
+  if (theComponentType == "SUPERV") aFactoryType = "SuperVisionContainer";
+  else aFactoryType = "FactoryServer";
+
+  SALOMEDS::unlock();   
+  obj = SALOME_LifeCycleCORBA(_name_service).FindOrLoad_Component(aFactoryType.ToCString(), 
+                                                                 theComponentType.ToCString());
+  
+  if (CORBA::is_nil(obj)) {
+    obj = SALOME_LifeCycleCORBA(_name_service).FindOrLoad_Component("FactoryServerPy", theComponentType.ToCString());
+  }
+               
+  if (!CORBA::is_nil(obj)) {
+    SALOMEDS::Driver_var aDriver = SALOMEDS::Driver::_narrow(obj);
+    return new SALOMEDS_Driver_i(aDriver, _orb);
+  }
+
+  return NULL;
+}
+
+SALOMEDSImpl_Driver* SALOMEDS_DriverFactory_i::GetDriverByIOR(const TCollection_AsciiString& theIOR)
+{
+  CORBA::Object_var obj;
+  obj = _orb->string_to_object(theIOR.ToCString());
+  if (!CORBA::is_nil(obj)) {
+    SALOMEDS::Driver_var aDriver = SALOMEDS::Driver::_narrow(obj);
+    return new SALOMEDS_Driver_i(aDriver, _orb);
+  }
+
+  return NULL;
+}
diff --git a/src/SALOMEDS/SALOMEDS_Driver_i.hxx b/src/SALOMEDS/SALOMEDS_Driver_i.hxx
new file mode 100644 (file)
index 0000000..14abb3b
--- /dev/null
@@ -0,0 +1,124 @@
+#ifndef __SALOMEDS_DRIVER_I_H__
+#define __SALOMEDS_DRIVER_I_H__
+
+#include <CORBA.h>
+#include <TCollection_AsciiString.hxx>
+#include "SALOMEDSImpl_Driver.hxx"
+#include "SALOMEDSImpl_SComponent.hxx"
+#include "SALOMEDSImpl_SObject.hxx"
+
+#include <SALOMEconfig.h>   
+#include CORBA_SERVER_HEADER(SALOMEDS) 
+#include CORBA_SERVER_HEADER(SALOME_Component)
+
+class Standard_EXPORT SALOMEDS_Driver_i :  public virtual SALOMEDSImpl_Driver 
+{
+protected:
+  SALOMEDS::Driver_var _driver;
+  CORBA::ORB_var _orb;
+
+public:
+
+  SALOMEDS_Driver_i(SALOMEDS::Driver_ptr theDriver, CORBA::ORB_ptr theORB) 
+    {
+      _driver = SALOMEDS::Driver::_duplicate(theDriver);
+      _orb = CORBA::ORB::_duplicate(theORB);        
+    }
+
+  ~SALOMEDS_Driver_i();
+
+  virtual TCollection_AsciiString GetIOR() 
+    {
+      CORBA::String_var ior = _orb->object_to_string(_driver);
+      return TCollection_AsciiString(ior);
+    }
+
+  virtual unsigned char* Save(const Handle(SALOMEDSImpl_SComponent)& theComponent,
+                             const TCollection_AsciiString& theURL,
+                             long& theStreamLength,
+                             bool isMultiFile);
+
+  virtual unsigned char* SaveASCII(const Handle(SALOMEDSImpl_SComponent)& theComponent,
+                                  const TCollection_AsciiString& theURL,
+                                  long& theStreamLength,
+                                  bool isMultiFile);
+  
+  virtual bool Load(const Handle(SALOMEDSImpl_SComponent)& theComponent,
+                   const unsigned char* theStream,
+                   const long theStreamLength,
+                   const TCollection_AsciiString& theURL,
+                   bool isMultiFile);
+
+  virtual bool LoadASCII(const Handle(SALOMEDSImpl_SComponent)& theComponent,
+                        const unsigned char* theStream,
+                        const long theStreamLength,
+                        const TCollection_AsciiString& theURL,
+                        bool isMultiFile);
+
+  virtual void Close(const Handle(SALOMEDSImpl_SComponent)& theComponent);
+  virtual TCollection_AsciiString ComponentDataType() 
+    {
+      CORBA::String_var ior = _driver->ComponentDataType();
+      return TCollection_AsciiString(ior);
+    }
+
+
+  virtual TCollection_AsciiString IORToLocalPersistentID(const Handle(SALOMEDSImpl_SObject)& theSObject,
+                                                        const TCollection_AsciiString& IORString,
+                                                        bool isMultiFile,
+                                                        bool isASCII);
+
+  virtual TCollection_AsciiString LocalPersistentIDToIOR(const Handle(SALOMEDSImpl_SObject)& theSObject,
+                                                        const TCollection_AsciiString& aLocalPersistentID,
+                                                        bool isMultiFile,
+                                                        bool isASCII);
+
+  virtual bool CanCopy(const Handle(SALOMEDSImpl_SObject)& theObject);
+
+  virtual unsigned char* CopyFrom(const Handle(SALOMEDSImpl_SObject)& theObject, 
+                                 int& theObjectID,
+                                 long& theStreamLength);
+
+  virtual bool CanPaste(const TCollection_AsciiString& theComponentName, int theObjectID);
+
+  virtual TCollection_AsciiString PasteInto(const unsigned char* theStream,
+                                           const long theStreamLength,
+                                           int theObjectID,
+                                           const Handle(SALOMEDSImpl_SObject)& theObject);
+
+  virtual unsigned char* DumpPython(const Handle(SALOMEDSImpl_Study)& theStudy, 
+                                   bool isPublished, 
+                                   bool& isValidScript,
+                                   long& theStreamLength);
+};
+
+#include "SALOME_NamingService.hxx"
+#include "SALOME_LifeCycleCORBA.hxx"
+
+class SALOMEDS_DriverFactory_i : public virtual SALOMEDSImpl_DriverFactory 
+{
+protected:  
+  CORBA::ORB_ptr        _orb;
+  SALOME_NamingService* _name_service;
+
+public:
+  
+  SALOMEDS_DriverFactory_i(CORBA::ORB_ptr theORB) 
+    {
+      _orb = CORBA::ORB::_duplicate(theORB);
+      _name_service = new SALOME_NamingService(_orb);
+    }
+
+
+  ~SALOMEDS_DriverFactory_i() 
+  {
+    delete _name_service;
+  }
+   
+  virtual SALOMEDSImpl_Driver* GetDriverByType(const TCollection_AsciiString& theComponentType);
+
+  virtual SALOMEDSImpl_Driver* GetDriverByIOR(const TCollection_AsciiString& theIOR);
+};
+
+#endif 
diff --git a/src/SALOMEDS/SALOMEDS_GenericAttribute.cxx b/src/SALOMEDS/SALOMEDS_GenericAttribute.cxx
new file mode 100644 (file)
index 0000000..c1c4e23
--- /dev/null
@@ -0,0 +1,127 @@
+//  File   : SALOMEDS_GenericAttribute.cxx
+//  Author : Sergey RUIN
+//  Module : SALOME
+
+
+
+#include <string>
+#include <TCollection_AsciiString.hxx> 
+
+#include "SALOMEDS_GenericAttribute.hxx"
+#include "SALOMEDSImpl_SObject.hxx"
+#include "SALOMEDS_SObject.hxx"
+#include "SALOMEDS_ClientAttributes.hxx"
+
+#ifdef WIN32
+#include <process.h>
+#else
+#include <sys/types.h>
+#include <unistd.h>
+#endif
+
+#include "OpUtil.hxx"
+
+using namespace std; 
+
+SALOMEDS_GenericAttribute::SALOMEDS_GenericAttribute(const Handle(SALOMEDSImpl_GenericAttribute)& theGA)
+{
+  _isLocal = true;
+  _local_impl = theGA;
+  _corba_impl = SALOMEDS::GenericAttribute::_nil();
+}
+
+SALOMEDS_GenericAttribute::SALOMEDS_GenericAttribute(SALOMEDS::GenericAttribute_ptr theGA)
+{
+#ifdef WIN32
+  long pid =  (long)_getpid();
+#else
+  long pid =  (long)getpid();
+#endif  
+
+  long addr = theGA->GetLocalImpl(GetHostname().c_str(), pid, _isLocal);
+  if(_isLocal) {
+    _local_impl = ((SALOMEDSImpl_GenericAttribute*)(addr));
+    _corba_impl = SALOMEDS::GenericAttribute::_nil();
+  }
+  else {
+    _local_impl = NULL;
+    _corba_impl = SALOMEDS::GenericAttribute::_duplicate(theGA);
+  }
+}
+
+SALOMEDS_GenericAttribute::~SALOMEDS_GenericAttribute() 
+{
+  if (!_isLocal) {
+    _corba_impl->Destroy();
+  }
+}
+
+void SALOMEDS_GenericAttribute::CheckLocked() 
+{
+  if(_isLocal) {
+    try {
+      _local_impl->CheckLocked();
+    }
+    catch(...) {
+      throw SALOMEDS::GenericAttribute::LockProtection();
+    }
+  }
+  else {
+    _corba_impl->CheckLocked();
+  }
+}
+
+std::string SALOMEDS_GenericAttribute::Type()
+{
+  std::string aType;
+  if(_isLocal) {
+    aType = _local_impl->Type().ToCString();
+  }
+  else {
+    aType = _corba_impl->Type();
+  }
+  return aType;
+}
+
+std::string SALOMEDS_GenericAttribute::GetClassType()
+{
+  std::string aType;
+  if(_isLocal) {
+    aType = _local_impl->GetClassType().ToCString();
+  }
+  else {
+    aType = _corba_impl->GetClassType();
+  }
+  return aType;
+}
+
+_PTR(SObject) SALOMEDS_GenericAttribute::GetSObject()
+{
+  SALOMEDSClient_SObject* aSO = NULL;
+  if(_isLocal) {
+    aSO = new SALOMEDS_SObject(_local_impl->GetSObject());
+  }
+  else {
+    aSO = new SALOMEDS_SObject(_corba_impl->GetSObject());
+  }
+
+  return _PTR(SObject)(aSO);
+}
+
+
+SALOMEDS_GenericAttribute* SALOMEDS_GenericAttribute::CreateAttribute(const Handle(SALOMEDSImpl_GenericAttribute)& theGA)
+{
+  SALOMEDS_GenericAttribute* aGA = NULL;
+  std::string aTypeOfAttribute = theGA->GetClassType().ToCString();
+  __CreateGenericClientAttributeLocal
+  return aGA;  
+}
+
+SALOMEDS_GenericAttribute* SALOMEDS_GenericAttribute::CreateAttribute(SALOMEDS::GenericAttribute_ptr theGA)
+{
+  SALOMEDS_GenericAttribute* aGA = NULL;
+  std::string aTypeOfAttribute = theGA->GetClassType();
+  __CreateGenericClientAttributeCORBA
+  return aGA;  
+}
+
diff --git a/src/SALOMEDS/SALOMEDS_GenericAttribute.hxx b/src/SALOMEDS/SALOMEDS_GenericAttribute.hxx
new file mode 100644 (file)
index 0000000..8e7e416
--- /dev/null
@@ -0,0 +1,38 @@
+//  File   : SALOMEDS_GenericAttribute.hxx
+//  Author : Sergey RUIN
+//  Module : SALOME
+
+#ifndef _GENERIC_ATTRIBUTE_HXX_
+#define _GENERIC_ATTRIBUTE_HXX_
+
+#include <exception>
+#include "SALOMEDSClient.hxx"
+#include "SALOMEDSImpl_GenericAttribute.hxx"
+
+// IDL headers
+#include <SALOMEconfig.h>
+#include CORBA_SERVER_HEADER(SALOMEDS)
+
+
+class Standard_EXPORT SALOMEDS_GenericAttribute: public virtual SALOMEDSClient_GenericAttribute
+{
+protected:
+  bool                                  _isLocal;
+  Handle(SALOMEDSImpl_GenericAttribute) _local_impl;
+  SALOMEDS::GenericAttribute_var        _corba_impl;
+
+public:
+  SALOMEDS_GenericAttribute(const Handle(SALOMEDSImpl_GenericAttribute)& theGA);
+  SALOMEDS_GenericAttribute(SALOMEDS::GenericAttribute_ptr theGA);
+  virtual ~SALOMEDS_GenericAttribute();
+
+  void CheckLocked();
+  std::string Type();
+  std::string GetClassType();
+  _PTR(SObject) GetSObject();
+  
+  static SALOMEDS_GenericAttribute* CreateAttribute(const Handle(SALOMEDSImpl_GenericAttribute)& theGA);
+  static SALOMEDS_GenericAttribute* CreateAttribute(SALOMEDS::GenericAttribute_ptr theGA);
+};
+
+#endif
index b9a24946ad537f915a15731d50889cc301bd6eba..3be0736cd53527d7edb03b685a622f8eba8d5846 100644 (file)
-//  SALOME SALOMEDS : data structure of SALOME and sources of Salome data server 
-//
-//  Copyright (C) 2003  CEA/DEN, EDF R&D
-//
-//
-//
 //  File   : SALOMEDS_GenericAttribute_i.cxx
-//  Author : Mikhail PONIKAROV
+//  Author : Sergey RUIN
 //  Module : SALOME
-//  $Header$
 
+
+#include "utilities.h"
 #include "SALOMEDS_GenericAttribute_i.hxx"
-#include "SALOMEDS_SObject_i.hxx"
-#include "SALOMEDS_Study_i.hxx"
+#include "SALOMEDS_Attributes.hxx"
+#include "SALOMEDS.hxx"
+#include "SALOMEDSImpl_SObject.hxx"
+#include "SALOMEDSImpl_Study.hxx"
+#include "Utils_ExceptHandlers.hxx"
+#include <TCollection_AsciiString.hxx>
+#include <map>
+
+#ifdef WIN32
+#include <process.h>
+#else
+#include <sys/types.h>
+#include <unistd.h>
+#endif
+
+#include "OpUtil.hxx"
 
 using namespace std;
 
+UNEXPECT_CATCH(GALockProtection, SALOMEDS::GenericAttribute::LockProtection);
 
-SALOMEDS_GenericAttribute_i::SALOMEDS_GenericAttribute_i(const Handle(TDF_Attribute)& theAttr,
-                                                        SALOMEDS_SObject_i* theSObject):
-  _myBasicAttr(theAttr),
-  _mySObject(theSObject)
+SALOMEDS_GenericAttribute_i::SALOMEDS_GenericAttribute_i(const Handle(TDF_Attribute)& theImpl, CORBA::ORB_ptr theOrb)
 {
+  _orb = CORBA::ORB::_duplicate(theOrb);
+  _impl = theImpl;
 }
 
-
-SALOMEDS_GenericAttribute_i::~SALOMEDS_GenericAttribute_i()
+void SALOMEDS_GenericAttribute_i::CheckLocked() throw (SALOMEDS::GenericAttribute::LockProtection) 
 {
+  SALOMEDS::Locker lock;
+  Unexpect aCatch(GALockProtection);
+
+  if (!_impl.IsNull() && _impl->IsValid() && !CORBA::is_nil(_orb)) {
+    try {
+      SALOMEDSImpl_GenericAttribute::Impl_CheckLocked(_impl);
+    }
+    catch (...) {
+      throw SALOMEDS::GenericAttribute::LockProtection();
+    }
+  }
 }
 
-
-char* SALOMEDS_GenericAttribute_i::Store()
-{
-  return CORBA::string_dup("");
-}
-
-
-void SALOMEDS_GenericAttribute_i::Restore(const char*)
+SALOMEDS::SObject_ptr SALOMEDS_GenericAttribute_i::GetSObject() 
 {
+  SALOMEDS::Locker lock;
+  if (_impl.IsNull() || _impl->Label().IsNull()) return SALOMEDS::SObject::_nil();
+  Handle(SALOMEDSImpl_SObject) so_impl = SALOMEDSImpl_Study::SObject(_impl->Label());
+  SALOMEDS::SObject_var so = SALOMEDS_SObject_i::New (so_impl, _orb);
+  return so._retn();
 }
 
 
 char* SALOMEDS_GenericAttribute_i::Type() 
 {
-  return CORBA::string_dup(SALOMEDS::GetType(_myBasicAttr).c_str());
-}
+  SALOMEDS::Locker lock;
+  if (!_impl.IsNull()) {
+    return CORBA::string_dup(SALOMEDSImpl_GenericAttribute::Impl_GetType(_impl));
+  }    
 
+  return "";
+}
 
-SALOMEDS::SObject_ptr SALOMEDS_GenericAttribute_i::GetSObject()
+char* SALOMEDS_GenericAttribute_i::GetClassType()
 {
-  return _mySObject->_this();;
-}
+  SALOMEDS::Locker lock;
+  if (!_impl.IsNull()) {
+    return CORBA::string_dup(SALOMEDSImpl_GenericAttribute::Impl_GetClassType(_impl));
+  }
+         
+  return "";
+}  
 
 
-void SALOMEDS_GenericAttribute_i::CheckLocked() 
-  throw (SALOMEDS::GenericAttribute::LockProtection) 
+SALOMEDS::GenericAttribute_ptr SALOMEDS_GenericAttribute_i::CreateAttribute(const Handle(TDF_Attribute)& theAttr,
+                                                                           CORBA::ORB_ptr theOrb) 
+{
+/*
+  SALOMEDS::Locker lock;
+  
+  static std::map<TDF_Attribute*, SALOMEDS_GenericAttribute_i*> _mapOfAttrib;
+  SALOMEDS::GenericAttribute_var anAttribute;
+  SALOMEDS_GenericAttribute_i* attr_servant = NULL;
+
+  if(_mapOfAttrib.find(theAttr.operator->()) != _mapOfAttrib.end()) {
+    attr_servant = _mapOfAttrib[theAttr.operator->()];
+    anAttribute = SALOMEDS::GenericAttribute::_narrow(attr_servant->_this());
+  }
+  else {
+    char* aTypeOfAttribute = Handle(SALOMEDSImpl_GenericAttribute)::DownCast(theAttr)->GetClassType().ToCString();
+    __CreateGenericCORBAAttribute
+    _mapOfAttrib[theAttr.operator->()] = attr_servant;
+  }
+*/
+  // mpv: now servants Destroyed by common algos of CORBA
+  char* aTypeOfAttribute = Handle(SALOMEDSImpl_GenericAttribute)::DownCast(theAttr)->GetClassType().ToCString();
+  SALOMEDS::GenericAttribute_var anAttribute;
+  SALOMEDS_GenericAttribute_i* attr_servant = NULL;
+  __CreateGenericCORBAAttribute
+
+  return anAttribute._retn(); 
+}                                                                                                                    
+
+//===========================================================================
+//   PRIVATE FUNCTIONS
+//===========================================================================
+long SALOMEDS_GenericAttribute_i::GetLocalImpl(const char* theHostname, CORBA::Long thePID, CORBA::Boolean& isLocal)
 {
-  _mySObject->GetStudyServant()->CheckLocked();
+#ifdef WIN32
+  long pid = (long)_getpid();
+#else
+  long pid = (long)getpid();
+#endif  
+  isLocal = (strcmp(theHostname, GetHostname().c_str()) == 0 && pid == thePID)?1:0;
+  TDF_Attribute* local_impl = _impl.operator->();
+  return ((long)local_impl);
 }
index 80a7c96e081a6dc03fa81f8be07b4e7a9e555be3..3525bde15a4b26b3bc0506a8b38ba2df208b9c25 100644 (file)
-//  SALOME SALOMEDS : data structure of SALOME and sources of Salome data server 
-//
-//  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
-// 
-//  This library is free software; you can redistribute it and/or 
-//  modify it under the terms of the GNU Lesser General Public 
-//  License as published by the Free Software Foundation; either 
-//  version 2.1 of the License. 
-// 
-//  This library is distributed in the hope that it will be useful, 
-//  but WITHOUT ANY WARRANTY; without even the implied warranty of 
-//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
-//  Lesser General Public License for more details. 
-// 
-//  You should have received a copy of the GNU Lesser General Public 
-//  License along with this library; if not, write to the Free Software 
-//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
-// 
-//  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
-//
-//
-//
 //  File   : SALOMEDS_GenericAttribute_i.hxx
-//  Author : Yves FRICAUD
+//  Author : Sergey RUIN
 //  Module : SALOME
-//  $Header$
 
 #ifndef _GENERIC_ATTRIBUTE_I_HXX_
 #define _GENERIC_ATTRIBUTE_I_HXX_
 
-#include <TDF_Attribute.hxx>
-#include <Standard_GUID.hxx>
-
 // IDL headers
 #include <SALOMEconfig.h>
 #include CORBA_SERVER_HEADER(SALOMEDS)
+#include <SALOME_GenericObj_i.hh>
+#include <TDF_Attribute.hxx>
+#include "SALOMEDS_SObject_i.hxx"
+#include "SALOMEDSImpl_GenericAttribute.hxx"
 
-class SALOMEDS_SObject_i;
-
-class SALOMEDS_GenericAttribute_i:
-  public virtual POA_SALOMEDS::GenericAttribute,
-  public virtual PortableServer::RefCountServantBase 
-{ 
-private: 
-  friend class SALOMEDS_SObject_i;
-
-  SALOMEDS_GenericAttribute_i(); // Not implemented
-  void operator=(const SALOMEDS_GenericAttribute_i&);  //Not implemented
+class Standard_EXPORT SALOMEDS_GenericAttribute_i: public virtual POA_SALOMEDS::GenericAttribute,
+                                  public virtual PortableServer::RefCountServantBase,
+                                  public virtual SALOME::GenericObj_i
+{
 
 protected:
-  SALOMEDS_SObject_i* _mySObject;
-  Handle(TDF_Attribute) _myBasicAttr;
-
-  SALOMEDS_GenericAttribute_i(const Handle(TDF_Attribute)& theAttr,
-                             SALOMEDS_SObject_i* theSObject);
-  
-  virtual ~SALOMEDS_GenericAttribute_i();
+  Handle(TDF_Attribute) _impl;
+  CORBA::ORB_ptr        _orb;
 
-  void SetBasicAttribute(const Handle(TDF_Attribute)& theAttr){
-    _myBasicAttr = theAttr;
-  }
-  
 public:
-  void Restore(const char*);
-
-  char* Store();
+  SALOMEDS_GenericAttribute_i(const Handle(TDF_Attribute)& theImpl, CORBA::ORB_ptr theOrb);
+  virtual ~SALOMEDS_GenericAttribute_i() {};
 
-  char* Type();
+  void CheckLocked() throw (SALOMEDS::GenericAttribute::LockProtection);
   
-  SALOMEDS::SObject_ptr GetSObject();
-
-  void CheckLocked() 
-    throw (SALOMEDS::GenericAttribute::LockProtection);
-
-  virtual void SetAttribute(const Handle(TDF_Attribute)& theAttr) = 0;
-
-  virtual const Handle(TDF_Attribute)& GetAttribute() const = 0;
-
-};
+  virtual char* Type();
 
+  char* GetClassType();
 
-template<class TDFAttribute, class TStoreTDFAttribute, bool TIsCheckLockedStudy = true>
-class SALOMEDS_TGenericAttribute_i:
-  public virtual SALOMEDS_GenericAttribute_i
-{
-public:
-  typedef TDFAttribute TAttr;
-  typedef TStoreTDFAttribute TStoreAttr;
-
-  virtual void SetAttribute(const Handle(TDF_Attribute)& theAttr){
-    _myAttr = TStoreAttr::DownCast(theAttr);
-    SetBasicAttribute(theAttr);
-  }
-  virtual const Handle(TDF_Attribute)& GetAttribute() const{
-    return _myAttr;
-  }
-  static bool IsCheckLockedStudy(){
-    return TIsCheckLockedStudy;
-  }
-  static Handle(TDF_Attribute) NewAttribute(){
-    return new TAttr;
-  }
-
-protected:
-  TStoreAttr _myAttr;
-
-  SALOMEDS_TGenericAttribute_i(const Handle(TDF_Attribute)& theAttr,
-                              SALOMEDS_SObject_i* theSObject):
-    SALOMEDS_GenericAttribute_i(theAttr,theSObject),
-    _myAttr(TStoreAttr::DownCast(theAttr))
-  {
-  }
+  SALOMEDS::SObject_ptr GetSObject();
   
-private: 
-  friend class SALOMEDS_SObject_i;
+  virtual Handle(TDF_Attribute) GetImpl() { return _impl; }
 
-  SALOMEDS_TGenericAttribute_i(); //Not implemented
-  void operator=(const SALOMEDS_TGenericAttribute_i&);  //Not implemented
+  static SALOMEDS::GenericAttribute_ptr CreateAttribute(const Handle(TDF_Attribute)& theAttr, CORBA::ORB_ptr theOrb);  
 
+  virtual long GetLocalImpl(const char* theHostname, CORBA::Long thePID, CORBA::Boolean& isLocal);
 };
 
-
-#define DEFINE_DERIVED_ATTR(TName,TAttr,TCheck) \
-  typedef SALOMEDS_TGenericAttribute_i<TAttr,Handle_##TAttr,TCheck> \
-    SALOMEDS_T##TName##_i
-
-
-#define DEFINE_DERIVED_ATTR_METH_BASE(TName) \
-public: \
-  friend class SALOMEDS_SObject_i; \
-  static SALOMEDS_GenericAttribute_i* \
-    NewInstance(const Handle(TDF_Attribute)& theAttr, \
-                SALOMEDS_SObject_i* theSObject) \
-      { return new SALOMEDS_##TName##_i(theAttr,theSObject);} \
-private: \
-  SALOMEDS_##TName##_i(const Handle(TDF_Attribute)& theAttr, \
-                       SALOMEDS_SObject_i* theSObject): \
-    SALOMEDS_GenericAttribute_i(theAttr,theSObject), \
-    SALOMEDS_T##TName##_i(theAttr,theSObject) \
-    {} \
-  void operator=(const SALOMEDS_##TName##_i&); \
-  SALOMEDS_##TName##_i()
-
-
-#define DEFINE_DERIVED_ATTR_METH_DEFAULT(TName,TAttr) \
-DEFINE_DERIVED_ATTR_METH_BASE(TName); \
-public: \
-  static Standard_GUID GetGUID(){ return TAttr::GetID(); } \
-private:
-
-
-#define DEFINE_DERIVED_ATTR_METH(TName,theGUID) \
-DEFINE_DERIVED_ATTR_METH_BASE(TName); \
-public: \
-  static Standard_GUID GetGUID(){ return theGUID; } \
-private:
-
-
 #endif
index d7c739be5be95ba2b846f0ec131b8d2b13037ce7..1a5232031c98880627a568e668c10b74a10f0d65 100644 (file)
@@ -30,7 +30,7 @@
 #define __SALOMEDS_SATTRIBUTE_I_H__
 
 // std C++ headers
-#include <iostream.h>
+#include <iostream>
 
 // IDL headers
 #include <SALOMEconfig.h>
diff --git a/src/SALOMEDS/SALOMEDS_SComponent.cxx b/src/SALOMEDS/SALOMEDS_SComponent.cxx
new file mode 100644 (file)
index 0000000..6514835
--- /dev/null
@@ -0,0 +1,67 @@
+//  File   : SALOMEDS_SComponent.cxx
+//  Author : Sergey RUIN
+//  Module : SALOME
+
+
+
+#include "SALOMEDS_SComponent.hxx"
+#include "SALOMEDS_SComponent_i.hxx"
+#include <string> 
+#include <TCollection_AsciiString.hxx> 
+
+using namespace std; 
+
+SALOMEDS_SComponent::SALOMEDS_SComponent(SALOMEDS::SComponent_ptr theSComponent)
+:SALOMEDS_SObject(theSComponent) 
+{}
+
+SALOMEDS_SComponent::SALOMEDS_SComponent(const Handle(SALOMEDSImpl_SComponent)& theSComponent)
+:SALOMEDS_SObject(theSComponent) 
+{}
+
+SALOMEDS_SComponent::~SALOMEDS_SComponent()
+{}
+
+std::string SALOMEDS_SComponent::ComponentDataType()
+{
+  std::string aType;
+  if(_isLocal) {
+    aType = (Handle(SALOMEDSImpl_SComponent)::DownCast(GetLocalImpl()))->ComponentDataType().ToCString();
+  }
+  else aType = (SALOMEDS::SComponent::_narrow(GetCORBAImpl()))->ComponentDataType();
+
+  return aType;
+}
+
+bool SALOMEDS_SComponent::ComponentIOR(std::string& theID)
+{
+  bool ret;
+  if(_isLocal) { 
+    TCollection_AsciiString anIOR;
+    ret = (Handle(SALOMEDSImpl_SComponent)::DownCast(GetLocalImpl()))->ComponentIOR(anIOR);
+    theID = anIOR.ToCString();
+  }
+  else {
+    CORBA::String_var anIOR;
+    ret = (SALOMEDS::SComponent::_narrow(GetCORBAImpl()))->ComponentIOR(anIOR.out());
+    theID = std::string(anIOR.in());                   
+  }
+
+  return ret;
+}
+
+SALOMEDS::SComponent_ptr SALOMEDS_SComponent::GetSComponent()
+{
+  if(_isLocal) {
+    if(!CORBA::is_nil(_corba_impl)) return SALOMEDS::SComponent::_narrow(GetCORBAImpl());
+    SALOMEDS::SComponent_var aSCO = SALOMEDS_SComponent_i::New(Handle(SALOMEDSImpl_SComponent)::DownCast(GetLocalImpl()),
+                                                              _orb);
+    return aSCO._retn();
+  }
+  else {
+    return SALOMEDS::SComponent::_narrow(GetCORBAImpl());
+  }
+
+  return SALOMEDS::SComponent::_nil();
+}
+
diff --git a/src/SALOMEDS/SALOMEDS_SComponent.hxx b/src/SALOMEDS/SALOMEDS_SComponent.hxx
new file mode 100644 (file)
index 0000000..096ad90
--- /dev/null
@@ -0,0 +1,29 @@
+//  File   : SALOMEDS_SComponent.hxx
+//  Author : Sergey RUIN
+//  Module : SALOME
+
+#ifndef __SALOMEDS_SCOMPONENT_H__
+#define __SALOMEDS_SCOMPONENT_H__
+
+#include "SALOMEDSClient_SComponent.hxx"
+#include "SALOMEDS_SObject.hxx"
+#include "SALOMEDSImpl_SComponent.hxx"
+
+// IDL headers
+#include <SALOMEconfig.h>
+#include CORBA_SERVER_HEADER(SALOMEDS)
+
+class Standard_EXPORT SALOMEDS_SComponent: public SALOMEDS_SObject, public SALOMEDSClient_SComponent
+{
+public:
+
+  SALOMEDS_SComponent(const Handle(SALOMEDSImpl_SComponent)& theSComponent);
+  SALOMEDS_SComponent(SALOMEDS::SComponent_ptr theSComponent);
+  ~SALOMEDS_SComponent();
+
+  virtual std::string ComponentDataType();
+  virtual bool ComponentIOR(std::string& theID);    
+
+  SALOMEDS::SComponent_ptr GetSComponent();
+};
+#endif
diff --git a/src/SALOMEDS/SALOMEDS_SComponentIterator.cxx b/src/SALOMEDS/SALOMEDS_SComponentIterator.cxx
new file mode 100644 (file)
index 0000000..64c64ab
--- /dev/null
@@ -0,0 +1,53 @@
+//  File   : SALOMEDS_SComponentIterator.cxx
+//  Author : Sergey RUIN
+//  Module : SALOME
+
+#include "SALOMEDS_SComponentIterator.hxx"
+#include "SALOMEDSImpl_SComponent.hxx"
+#include "SALOMEDS_SComponent.hxx"
+
+SALOMEDS_SComponentIterator::SALOMEDS_SComponentIterator(const SALOMEDSImpl_SComponentIterator& theIterator)
+:_local_impl(theIterator)
+{
+  _isLocal = true;
+  _corba_impl = SALOMEDS::SComponentIterator::_nil();
+}
+
+SALOMEDS_SComponentIterator::SALOMEDS_SComponentIterator(SALOMEDS::SComponentIterator_ptr theIterator)
+{
+  _isLocal = false;
+  _corba_impl = SALOMEDS::SComponentIterator::_duplicate(theIterator);
+}
+
+SALOMEDS_SComponentIterator::~SALOMEDS_SComponentIterator()
+{
+  if(!_isLocal) _corba_impl->Destroy(); 
+}
+
+void SALOMEDS_SComponentIterator::Init()
+{
+  if(_isLocal) _local_impl.Init();
+  else _corba_impl->Init();
+}
+
+bool SALOMEDS_SComponentIterator::More()
+{
+  bool ret;
+  if(_isLocal) ret = _local_impl.More();
+  else ret = _corba_impl->More();
+  return ret;
+}
+void SALOMEDS_SComponentIterator::Next()
+{
+  if(_isLocal) _local_impl.Next();
+  else _corba_impl->Next();
+}
+_PTR(SComponent) SALOMEDS_SComponentIterator::Value()  
+{
+  SALOMEDSClient_SComponent* aSCO = NULL;
+  if(_isLocal) aSCO = new SALOMEDS_SComponent(_local_impl.Value());
+  else aSCO = new SALOMEDS_SComponent(_corba_impl->Value());
+  return _PTR(SComponent)(aSCO);
+}
diff --git a/src/SALOMEDS/SALOMEDS_SComponentIterator.hxx b/src/SALOMEDS/SALOMEDS_SComponentIterator.hxx
new file mode 100644 (file)
index 0000000..5d6495a
--- /dev/null
@@ -0,0 +1,33 @@
+//  File   : SALOMEDS_SComponentIterator.hxx
+//  Author : Sergey RUIN
+//  Module : SALOME
+
+#ifndef __SALOMEDS_SCOMPONENTITERATOR_H__
+#define __SALOMEDS_SCOMPONENTITERATOR_H__
+
+#include "SALOMEDSClient.hxx"
+#include "SALOMEDSImpl_SComponentIterator.hxx"
+
+// IDL headers
+#include <SALOMEconfig.h>
+#include CORBA_SERVER_HEADER(SALOMEDS)
+
+class SALOMEDS_SComponentIterator: public SALOMEDSClient_SComponentIterator
+{
+public:
+  SALOMEDS_SComponentIterator(const SALOMEDSImpl_SComponentIterator& theIterator);
+  SALOMEDS_SComponentIterator(SALOMEDS::SComponentIterator_ptr theIterator);
+  ~SALOMEDS_SComponentIterator();
+
+private:
+  bool                                    _isLocal;
+  SALOMEDSImpl_SComponentIterator         _local_impl;
+  SALOMEDS::SComponentIterator_var        _corba_impl;
+
+public:
+  virtual void Init();
+  virtual bool More();
+  virtual void Next();
+  virtual _PTR(SComponent) Value();  
+};
+#endif
index adf77476a5223f2cf658c074305075e77924ff40..fb709652a380e2828a32f9a237196625030b13a4 100644 (file)
@@ -1,33 +1,11 @@
-//  SALOME SALOMEDS : data structure of SALOME and sources of Salome data server 
-//
-//  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
-// 
-//  This library is free software; you can redistribute it and/or 
-//  modify it under the terms of the GNU Lesser General Public 
-//  License as published by the Free Software Foundation; either 
-//  version 2.1 of the License. 
-// 
-//  This library is distributed in the hope that it will be useful, 
-//  but WITHOUT ANY WARRANTY; without even the implied warranty of 
-//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
-//  Lesser General Public License for more details. 
-// 
-//  You should have received a copy of the GNU Lesser General Public 
-//  License along with this library; if not, write to the Free Software 
-//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
-// 
-//  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
-//
-//
-//
 //  File   : SALOMEDS_SComponentIterator_i.cxx
-//  Author : Yves FRICAUD
+//  Author : Sergey RUIN
 //  Module : SALOME
-//  $Header$
+
 
 #include "SALOMEDS_SComponentIterator_i.hxx"
-#include "SALOMEDS_SComponent_i.hxx"
+#include "SALOMEDS.hxx"
+#include "SALOMEDSImpl_SComponent.hxx"
 
 using namespace std;
 
@@ -37,12 +15,11 @@ using namespace std;
  */
 //============================================================================
 
-SALOMEDS_SComponentIterator_i::SALOMEDS_SComponentIterator_i(SALOMEDS_Study_i* theStudy,
-                                                            const Handle(TDocStd_Document)& theDocument): 
-  _it(theDocument->Main()),
-  _lab(theDocument->Main()),
-  _study(theStudy)
+SALOMEDS_SComponentIterator_i::SALOMEDS_SComponentIterator_i(const SALOMEDSImpl_SComponentIterator& theImpl, 
+                                                            CORBA::ORB_ptr orb) 
+:_impl(theImpl)
 {
+  _orb = CORBA::ORB::_duplicate(orb);
 }
 
 //============================================================================
@@ -61,7 +38,8 @@ SALOMEDS_SComponentIterator_i::~SALOMEDS_SComponentIterator_i()
 //============================================================================
 void SALOMEDS_SComponentIterator_i::Init()
 { 
-  _it.Initialize (_lab);
+  SALOMEDS::Locker lock; 
+  _impl.Init();
 }
 
 //============================================================================
@@ -71,13 +49,8 @@ void SALOMEDS_SComponentIterator_i::Init()
 //============================================================================
 CORBA::Boolean SALOMEDS_SComponentIterator_i::More()
 {
-  if (!_it.More())
-    return false;
-  TDF_Label L = _it.Value();
-  if (SALOMEDS_SComponent_i::IsA(L))
-     return true;
-
-  return _it.More();
+  SALOMEDS::Locker lock; 
+  return _impl.More();
 }
 
  //============================================================================
@@ -85,8 +58,9 @@ CORBA::Boolean SALOMEDS_SComponentIterator_i::More()
   */
 //============================================================================
 void SALOMEDS_SComponentIterator_i::Next()
-{
-  _it.Next();
+{ 
+  SALOMEDS::Locker lock; 
+  _impl.Next();
 }
 
 
@@ -97,6 +71,8 @@ void SALOMEDS_SComponentIterator_i::Next()
 //============================================================================
 SALOMEDS::SComponent_ptr SALOMEDS_SComponentIterator_i::Value()
 {
-  return SALOMEDS_SComponent_i::NewRef(_study,_it.Value())._retn();
+  SALOMEDS::Locker lock; 
+  SALOMEDS::SComponent_var sco = SALOMEDS_SComponent_i::New (_impl.Value(), _orb);
+  return sco._retn();
 }
 
index 919f65fabe5b3d59bf920863b5197c85b3090dc6..4eb829e45f698903fab038719c110d3481be5e09 100644 (file)
@@ -1,69 +1,41 @@
-//  SALOME SALOMEDS : data structure of SALOME and sources of Salome data server 
-//
-//  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
-// 
-//  This library is free software; you can redistribute it and/or 
-//  modify it under the terms of the GNU Lesser General Public 
-//  License as published by the Free Software Foundation; either 
-//  version 2.1 of the License. 
-// 
-//  This library is distributed in the hope that it will be useful, 
-//  but WITHOUT ANY WARRANTY; without even the implied warranty of 
-//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
-//  Lesser General Public License for more details. 
-// 
-//  You should have received a copy of the GNU Lesser General Public 
-//  License along with this library; if not, write to the Free Software 
-//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
-// 
-//  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
-//
-//
-//
 //  File   : SALOMEDS_SComponentIterator_i.hxx
-//  Author : Yves FRICAUD
+//  Author : Sergey RUIN
 //  Module : SALOME
-//  $Header$
 
 #ifndef __SALOMEDS_SCOMPONENTITERATOR_I_H__
 #define __SALOMEDS_SCOMPONENTITERATOR_I_H__
 
+// std C++ headers
+#include <iostream>
+
 // IDL headers
 #include <SALOMEconfig.h>
 #include CORBA_SERVER_HEADER(SALOMEDS)
+#include <SALOME_GenericObj_i.hh>
 
-// Cascade headers
-#include <TDocStd_Document.hxx>
-#include <TDF_ChildIterator.hxx>
-#include <TDF_Label.hxx>
-
-class SALOMEDS_Study_i;
+//SALOMEDS headers
+#include "SALOMEDS_SComponent_i.hxx"
+#include "SALOMEDSImpl_SComponentIterator.hxx"
 
 class SALOMEDS_SComponentIterator_i:public virtual POA_SALOMEDS::SComponentIterator,
-                                   public virtual PortableServer::RefCountServantBase 
+                                   public virtual PortableServer::RefCountServantBase,
+                                   public virtual SALOME::GenericObj_i 
 {
-  SALOMEDS_SComponentIterator_i(); // Not implemented
-  void operator=(const SALOMEDS_SComponentIterator_i&); // Not implemented
 
 private:
-  TDF_ChildIterator        _it;
-  TDF_Label                _lab;
-  SALOMEDS_Study_i*        _study;
+
+  CORBA::ORB_ptr                  _orb;
+  SALOMEDSImpl_SComponentIterator _impl;
 
 public:
-  SALOMEDS_SComponentIterator_i(SALOMEDS_Study_i* theStudy,
-                               const Handle(TDocStd_Document)& theDocument);
+  
+  SALOMEDS_SComponentIterator_i(const SALOMEDSImpl_SComponentIterator& theImpl, CORBA::ORB_ptr);
   
   ~SALOMEDS_SComponentIterator_i();
   
-  TDF_Label GetValue() { return _it.Value();}
-
   virtual void Init();
   virtual CORBA::Boolean More();
   virtual void Next();
   virtual SALOMEDS::SComponent_ptr Value();  
 };
-
-
 #endif
index c9cc82ac6ca69a5b3dca9426020a60f7525fa18f..01f0b62e689e990f1c96418070d85bcae5c634f3 100644 (file)
@@ -1,85 +1,46 @@
-//  SALOME SALOMEDS : data structure of SALOME and sources of Salome data server 
-//
-//  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
-// 
-//  This library is free software; you can redistribute it and/or 
-//  modify it under the terms of the GNU Lesser General Public 
-//  License as published by the Free Software Foundation; either 
-//  version 2.1 of the License. 
-// 
-//  This library is distributed in the hope that it will be useful, 
-//  but WITHOUT ANY WARRANTY; without even the implied warranty of 
-//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
-//  Lesser General Public License for more details. 
-// 
-//  You should have received a copy of the GNU Lesser General Public 
-//  License along with this library; if not, write to the Free Software 
-//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
-// 
-//  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
-//
-//
-//
 //  File   : SALOMEDS_SComponent_i.cxx
-//  Author : Yves FRICAUD
+//  Author : Sergey RUIN
 //  Module : SALOME
-//  $Header$
 
-#include "SALOMEDS_SComponent_i.hxx"
-#include "SALOMEDS_Study_i.hxx"
 
+#include "SALOMEDS_SComponent_i.hxx"
+#include "SALOMEDS.hxx"
 #include "utilities.h"
+#include <map>
 
 using namespace std;
 
-SALOMEDS_Study_i::TSObjectHolder 
-SALOMEDS_SComponent_i::New(SALOMEDS_Study_i* theStudy,
-                          const TDF_Label& theLabel)
+SALOMEDS::SComponent_ptr SALOMEDS_SComponent_i::New(const Handle(SALOMEDSImpl_SComponent)& theImpl, CORBA::ORB_ptr theORB)
 {
-  SALOMEDS_Study_i::TSObjectHolder aSObjectHolder;
-  SALOMEDS_Study_i::TSObjectMap& anSObjectMap = theStudy->GetSObjectMap();
-  SALOMEDS_Study_i::TSObjectMap::const_iterator anIter = anSObjectMap.find(theLabel);
-  if(anIter != anSObjectMap.end()){
-    aSObjectHolder = anIter->second;
-    SALOMEDS_SObject_i* aSObject = aSObjectHolder.first;
-    if(dynamic_cast<SALOMEDS_SComponent_i*>(aSObject))
-      return aSObjectHolder;
+/*
+  static std::map<SALOMEDSImpl_SComponent*, SALOMEDS_SComponent_i*> _mapOfSCO;
+  SALOMEDS::SComponent_var sco;
+  SALOMEDS_SComponent_i* sco_servant = NULL;
+
+  if(_mapOfSCO.find(theImpl.operator->()) != _mapOfSCO.end()) {
+    sco_servant = _mapOfSCO[theImpl.operator->()];
+  }
+  else {
+    sco_servant = new SALOMEDS_SComponent_i(theImpl, theORB);
+    _mapOfSCO[theImpl.operator->()] = sco_servant;
   }
-  TCollection_AsciiString anEntry;
-  TDF_Tool::Entry(theLabel,anEntry);
-  SALOMEDS_SComponent_i* aSComponent = new SALOMEDS_SComponent_i(theStudy,theLabel);
-  aSObjectHolder.first = aSComponent;
-  aSObjectHolder.second = aSComponent->_this();
-  anSObjectMap[theLabel] = aSObjectHolder;
 
-  return aSObjectHolder;
-}
+  sco  = SALOMEDS::SComponent::_narrow(sco_servant->SComponent::_this()); 
+*/
+  SALOMEDS_SComponent_i* sco_servant = new SALOMEDS_SComponent_i(theImpl, theORB);
+  SALOMEDS::SComponent_var sco  = SALOMEDS::SComponent::_narrow(sco_servant->SComponent::_this()); 
 
-SALOMEDS_SComponent_i*
-SALOMEDS_SComponent_i::NewPtr(SALOMEDS_Study_i* theStudy,
-                             const TDF_Label& theLabel)
-{
-  return dynamic_cast<SALOMEDS_SComponent_i*>(New(theStudy,theLabel).first);
-}
-
-SALOMEDS::SComponent_var
-SALOMEDS_SComponent_i::NewRef(SALOMEDS_Study_i* theStudy,
-                             const TDF_Label& theLabel)
-{
-  return SALOMEDS::SComponent::_narrow(New(theStudy,theLabel).second);
-}
+  return sco._retn();
+}    
 
 //============================================================================
 /*! Function : constructor
  *  Purpose  : 
  */
 //============================================================================
-SALOMEDS_SComponent_i::SALOMEDS_SComponent_i(SALOMEDS_Study_i* theStudy,
-                                            const TDF_Label& theLabel):
-  SALOMEDS_SObject_i(theStudy,theLabel)
-{
-}
+SALOMEDS_SComponent_i::SALOMEDS_SComponent_i(const Handle(SALOMEDSImpl_SComponent)& theImpl, CORBA::ORB_ptr orb)
+  :SALOMEDS_SObject_i(theImpl, orb)
+{}
   
 //============================================================================
 /*! Function : destructor
@@ -87,10 +48,8 @@ SALOMEDS_SComponent_i::SALOMEDS_SComponent_i(SALOMEDS_Study_i* theStudy,
  */
 //============================================================================
 SALOMEDS_SComponent_i::~SALOMEDS_SComponent_i()
-{
-}
-  
-  
+{}
+   
 //============================================================================
 /*! Function : ComponentDataType
  *  Purpose  : 
@@ -98,21 +57,9 @@ SALOMEDS_SComponent_i::~SALOMEDS_SComponent_i()
 //============================================================================
 char* SALOMEDS_SComponent_i::ComponentDataType()
 {
-  //DEB
-  //    MESSAGE("In SALOMEDS_SComponent_i::ComponentDataType");
-  //    TCollection_AsciiString anEntry;
-  //    TDF_Tool::Entry (_lab,anEntry);
-  //    MESSAGE("in SALOMEDS_SComponent_i, Entry :"<<anEntry);
-  // END DEB
-
-  Standard_CString res = "";
-  Handle(TDataStd_Comment) type;
-  if ( _lab.FindAttribute(TDataStd_Comment::GetID(),type) ) {
-    TCollection_AsciiString ch(type->Get());
-    res = ch.ToCString();
-  }
-
-  return CORBA::string_dup(res);
+  SALOMEDS::Locker lock;
+  TCollection_AsciiString aType = Handle(SALOMEDSImpl_SComponent)::DownCast(_impl)->ComponentDataType();
+  return CORBA::string_dup(aType.ToCString());
 }
   
 
@@ -123,28 +70,9 @@ char* SALOMEDS_SComponent_i::ComponentDataType()
 //============================================================================
 CORBA::Boolean SALOMEDS_SComponent_i::ComponentIOR(CORBA::String_out IOR)
 {
-  Handle(SALOMEDS_IORAttribute) ior;
-  if (!_lab.FindAttribute(SALOMEDS_IORAttribute::GetID(),ior) )
-      return false;
-  TCollection_AsciiString ch(ior->Get());
-  IOR = CORBA::string_dup(ch.ToCString());
+  SALOMEDS::Locker lock;
+  TCollection_AsciiString ior;
+  if(!Handle(SALOMEDSImpl_SComponent)::DownCast(_impl)->ComponentIOR(ior)) return false;
+  IOR = CORBA::string_dup(ior.ToCString());
   return true;
 }
-  
-
-//============================================================================
-/*! Function : IsA
- *  Purpose  : 
- */
-//============================================================================
-Standard_Boolean SALOMEDS_SComponent_i::IsA(const TDF_Label& Lab)
-{
-  Handle(TDF_Attribute) Att;
-  // scomponent must contain comment and belong to the 2th depth label
-  if ( Lab.FindAttribute(TDataStd_Comment::GetID(), Att) && Lab.Depth() == 2) {
-    return Standard_True;
-  }
-  return Standard_False;
-}
-  
-    
index 1018b7bb5ad69b3568840846e8cb1c0ad6375dbd..de70f530fc3febd0692d79cce4c881cc1287b922 100644 (file)
@@ -1,71 +1,37 @@
-//  SALOME SALOMEDS : data structure of SALOME and sources of Salome data server 
-//
-//  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
-// 
-//  This library is free software; you can redistribute it and/or 
-//  modify it under the terms of the GNU Lesser General Public 
-//  License as published by the Free Software Foundation; either 
-//  version 2.1 of the License. 
-// 
-//  This library is distributed in the hope that it will be useful, 
-//  but WITHOUT ANY WARRANTY; without even the implied warranty of 
-//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
-//  Lesser General Public License for more details. 
-// 
-//  You should have received a copy of the GNU Lesser General Public 
-//  License along with this library; if not, write to the Free Software 
-//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
-// 
-//  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
-//
-//
-//
 //  File   : SALOMEDS_SComponent_i.hxx
-//  Author : Yves FRICAUD
+//  Author : Sergey RUIN
 //  Module : SALOME
-//  $Header$
 
 #ifndef __SALOMEDS_SCOMPONENT_I_H__
 #define __SALOMEDS_SCOMPONENT_I_H__
 
-#include "SALOMEDS_SObject_i.hxx"
+// std C++ headers
+#include <iostream>
 
-class SALOMEDS_SComponent_i: public virtual POA_SALOMEDS::SComponent,
-                            public virtual SALOMEDS_SObject_i
-{
-  SALOMEDS_SComponent_i(); // Not implemented
-  void operator=(const SALOMEDS_SComponent_i&); // Not implemented
+// IDL headers
+#include <SALOMEconfig.h>
+#include CORBA_SERVER_HEADER(SALOMEDS)
 
-  SALOMEDS_SComponent_i(SALOMEDS_Study_i* theStudy,
-                       const TDF_Label& theLabel);
-  
-public:
+//SALOMEDS headers
+#include "SALOMEDS_SObject_i.hxx"
 
-  static 
-  SALOMEDS_Study_i::TSObjectHolder 
-  New(SALOMEDS_Study_i* theStudy,
-      const TDF_Label& theLabel);
+#include "SALOMEDSImpl_SObject.hxx"
+#include "SALOMEDSImpl_SComponent.hxx"
 
-  static 
-  SALOMEDS_SComponent_i* 
-  NewPtr(SALOMEDS_Study_i* theStudy,
-        const TDF_Label& theLabel);
+class Standard_EXPORT SALOMEDS_SComponent_i: public POA_SALOMEDS::SComponent,
+                            public SALOMEDS_SObject_i
+{
 
-  static 
-  SALOMEDS::SComponent_var 
-  NewRef(SALOMEDS_Study_i* theStudy,
-        const TDF_Label& theLabel);
+public:
 
-  ~SALOMEDS_SComponent_i();
+  static SALOMEDS::SComponent_ptr New(const Handle(SALOMEDSImpl_SComponent)&, CORBA::ORB_ptr); 
   
-  virtual char* ComponentDataType();
+  SALOMEDS_SComponent_i(const Handle(SALOMEDSImpl_SComponent)&, CORBA::ORB_ptr);
+  
+  virtual ~SALOMEDS_SComponent_i();
 
+  virtual char* ComponentDataType();
   virtual CORBA::Boolean ComponentIOR(CORBA::String_out theID);
-  
-  static Standard_Boolean IsA(const TDF_Label& Lab);
 
 };
-
-
 #endif
diff --git a/src/SALOMEDS/SALOMEDS_SObject.cxx b/src/SALOMEDS/SALOMEDS_SObject.cxx
new file mode 100644 (file)
index 0000000..1960ddc
--- /dev/null
@@ -0,0 +1,268 @@
+//  File   : SALOMEDS_SObject.hxx
+//  Author : Sergey RUIN
+//  Module : SALOME
+
+
+
+#include <string>
+#include <TCollection_AsciiString.hxx> 
+#include <TColStd_HSequenceOfTransient.hxx>
+
+#include "SALOMEDS_SObject.hxx"
+#include "SALOMEDS_SComponent.hxx"
+#include "SALOMEDSImpl_SComponent.hxx"
+#include "SALOMEDS_GenericAttribute.hxx"
+#include "SALOMEDSImpl_GenericAttribute.hxx"
+#include "SALOMEDS_Study.hxx"
+#include "SALOMEDSImpl_Study.hxx"
+
+#include "Utils_ORB_INIT.hxx" 
+#include "Utils_SINGLETON.hxx" 
+
+#ifdef WIN32
+#include <process.h>
+#else
+#include <sys/types.h>
+#include <unistd.h>
+#endif
+
+#include "OpUtil.hxx"
+#include "utilities.h"
+
+using namespace std;  
+
+SALOMEDS_SObject::SALOMEDS_SObject(SALOMEDS::SObject_ptr theSObject)
+{
+#ifdef WIN32
+  long pid =  (long)_getpid();
+#else
+  long pid =  (long)getpid();
+#endif  
+
+  long addr = theSObject->GetLocalImpl(GetHostname().c_str(), pid, _isLocal);
+  if(_isLocal) {
+    _local_impl = ((SALOMEDSImpl_SObject*)(addr));
+    _corba_impl = SALOMEDS::SObject::_duplicate(theSObject);
+  }
+  else {
+    _local_impl = NULL;
+    _corba_impl = SALOMEDS::SObject::_duplicate(theSObject);
+  }
+
+  init_orb();
+}
+
+SALOMEDS_SObject::SALOMEDS_SObject(const Handle(SALOMEDSImpl_SObject)& theSObject)
+:_isLocal(true)
+{
+  _corba_impl = SALOMEDS::SObject::_nil();
+  _local_impl = theSObject;
+
+  init_orb();
+}
+
+SALOMEDS_SObject::~SALOMEDS_SObject()
+{
+  if (!_isLocal) {
+    _corba_impl->Destroy();
+  }
+}
+
+std::string SALOMEDS_SObject::GetID()
+{
+  std::string aValue;
+  if(_isLocal) aValue = _local_impl->GetID().ToCString();
+  else aValue = _corba_impl->GetID();  
+  return aValue;
+}
+
+_PTR(SComponent) SALOMEDS_SObject::GetFatherComponent()
+{
+  if(_isLocal) {
+    Handle(SALOMEDSImpl_SComponent) aSCO = Handle(SALOMEDSImpl_SComponent)::DownCast(_local_impl->GetFatherComponent());
+    return _PTR(SComponent)(new SALOMEDS_SComponent(aSCO));
+  }
+  return _PTR(SComponent)(new SALOMEDS_SComponent(_corba_impl->GetFatherComponent()));
+}
+
+_PTR(SObject) SALOMEDS_SObject::GetFather()
+{
+  if(_isLocal) return _PTR(SObject)(new SALOMEDS_SObject(_local_impl->GetFather()));
+  return _PTR(SObject)(new SALOMEDS_SObject(_corba_impl->GetFather()));
+}
+
+bool SALOMEDS_SObject::FindAttribute(_PTR(GenericAttribute)& anAttribute, const std::string& aTypeOfAttribute)
+{
+  bool ret = false;
+  if(_isLocal) {
+    Handle(SALOMEDSImpl_GenericAttribute) anAttr;
+    ret = _local_impl->FindAttribute(anAttr, (char*)aTypeOfAttribute.c_str());
+    if(ret) anAttribute = _PTR(GenericAttribute)(SALOMEDS_GenericAttribute::CreateAttribute(anAttr));
+  }
+  else {
+    SALOMEDS::GenericAttribute_var anAttr;
+    ret = _corba_impl->FindAttribute(anAttr.out(), aTypeOfAttribute.c_str());
+    if(ret) anAttribute = _PTR(GenericAttribute)(SALOMEDS_GenericAttribute::CreateAttribute(anAttr));
+  }
+
+  return ret;
+}
+
+bool SALOMEDS_SObject::ReferencedObject(_PTR(SObject)& theObject)
+{
+  bool ret = false;
+  if(_isLocal) {
+    Handle(SALOMEDSImpl_SObject) aSO;
+    ret = _local_impl->ReferencedObject(aSO);
+    if(ret) theObject = _PTR(SObject)(new SALOMEDS_SObject(aSO));
+  }
+  else {
+    SALOMEDS::SObject_var aSO;
+    ret = _corba_impl->ReferencedObject(aSO.out());
+    if(ret) theObject = _PTR(SObject)(new SALOMEDS_SObject(aSO));
+  }
+
+  return ret; 
+}
+
+
+bool SALOMEDS_SObject::FindSubObject(int theTag, _PTR(SObject)& theObject)
+{
+  bool ret = false;
+  if(_isLocal) {
+    Handle(SALOMEDSImpl_SObject) aSO;
+    ret = _local_impl->FindSubObject(theTag, aSO);
+    if(ret) theObject = _PTR(SObject)(new SALOMEDS_SObject(aSO));
+  }
+  else {
+    SALOMEDS::SObject_var aSO;
+    ret = _corba_impl->FindSubObject(theTag, aSO.out());
+    if(ret) theObject = _PTR(SObject)(new SALOMEDS_SObject(aSO));
+  }
+
+  return ret;   
+}
+
+_PTR(Study) SALOMEDS_SObject::GetStudy()
+{
+  if(_isLocal) return _PTR(Study)(new SALOMEDS_Study(_local_impl->GetStudy()));
+  return _PTR(Study)(new SALOMEDS_Study(_corba_impl->GetStudy()));
+}
+
+std::string SALOMEDS_SObject::Name()
+{
+  std::string aName;
+  if(_isLocal) aName = _local_impl->Name().ToCString();
+  else aName = _corba_impl->Name();
+
+  return aName;
+}
+
+void  SALOMEDS_SObject::Name(const std::string& theName)
+{
+  if(_isLocal) _local_impl->Name((char*)theName.c_str());
+  else _corba_impl->Name(theName.c_str());
+}
+
+vector<_PTR(GenericAttribute)> SALOMEDS_SObject::GetAllAttributes()
+{
+  vector<_PTR(GenericAttribute)> aVector;
+  int aLength = 0;
+  SALOMEDSClient_GenericAttribute* anAttr;
+
+  if(_isLocal) {
+    Handle(TColStd_HSequenceOfTransient) aSeq = _local_impl->GetAllAttributes();
+    aLength = aSeq->Length();
+    for(int i = 1; i <= aLength; i++) {
+      anAttr = SALOMEDS_GenericAttribute::CreateAttribute(Handle(SALOMEDSImpl_GenericAttribute)::DownCast(aSeq->Value(i)));
+      aVector.push_back(_PTR(GenericAttribute)(anAttr));
+    }
+  }
+  else {
+    SALOMEDS::ListOfAttributes_var aSeq = _corba_impl->GetAllAttributes();
+    aLength = aSeq->length();
+    for(int i = 0; i < aLength; i++) {
+      anAttr = SALOMEDS_GenericAttribute::CreateAttribute(aSeq[i]);
+      aVector.push_back(_PTR(GenericAttribute)(anAttr));
+    }
+  }
+
+  return aVector;
+}
+
+std::string SALOMEDS_SObject::GetName()
+{
+  std::string aName;
+  if(_isLocal) aName = _local_impl->GetName().ToCString();
+  else aName = _corba_impl->GetName();
+
+  return aName;
+}
+
+std::string SALOMEDS_SObject::GetComment()
+{
+  std::string aComment;
+  if(_isLocal) aComment = _local_impl->GetComment().ToCString();
+  else aComment = _corba_impl->GetComment();
+
+  return aComment;
+}
+
+std::string SALOMEDS_SObject::GetIOR()
+{
+  std::string anIOR;
+  if(_isLocal) anIOR = _local_impl->GetIOR().ToCString();
+  else anIOR = _corba_impl->GetIOR();
+
+  return anIOR;
+}
+
+int SALOMEDS_SObject::Tag()
+{
+  if(_isLocal) return _local_impl->Tag();
+  return _corba_impl->Tag(); 
+}
+
+int SALOMEDS_SObject::Depth()
+{
+  if(_isLocal) return _local_impl->Depth();
+  return _corba_impl->Depth();  
+}
+
+CORBA::Object_ptr SALOMEDS_SObject::GetObject()
+{
+  CORBA::Object_var obj;
+  if(_isLocal) {
+    std::string anIOR = GetIOR();
+    if (!anIOR.empty())
+      obj = _orb->string_to_object(anIOR.c_str());
+    return obj._retn();
+  }
+  else {
+    obj = _corba_impl->GetObject();
+    return obj._retn();
+  }
+
+  return CORBA::Object::_nil();
+}
+
+SALOMEDS::SObject_ptr SALOMEDS_SObject::GetSObject()
+{
+  if(_isLocal) {
+    if(!CORBA::is_nil(_corba_impl)) return _corba_impl;
+    SALOMEDS::SObject_var aSO = SALOMEDS_SObject_i::New(_local_impl, _orb);
+    return aSO._retn();
+  }
+  else {
+    return _corba_impl;
+  }
+  return SALOMEDS::SObject::_nil();
+}
+
+
+void SALOMEDS_SObject::init_orb()
+{
+  ORB_INIT &init = *SINGLETON_<ORB_INIT>::Instance() ;
+  ASSERT(SINGLETON_<ORB_INIT>::IsAlreadyExisting());
+  _orb = init(0 , 0 ) ;     
+}
diff --git a/src/SALOMEDS/SALOMEDS_SObject.hxx b/src/SALOMEDS/SALOMEDS_SObject.hxx
new file mode 100644 (file)
index 0000000..0f5346f
--- /dev/null
@@ -0,0 +1,61 @@
+//  File   : SALOMEDS_SObject.hxx
+//  Author : Sergey RUIN
+//  Module : SALOME
+
+#ifndef __SALOMEDS_SOBJECT_H__
+#define __SALOMEDS_SOBJECT_H__
+
+// std C++ headers
+#include <vector>
+
+#include <SALOMEDSClient.hxx>
+
+// IDL headers
+#include <SALOMEconfig.h>
+#include CORBA_SERVER_HEADER(SALOMEDS)
+
+#include "SALOMEDS_SObject_i.hxx"
+#include "SALOMEDSImpl_SObject.hxx"
+
+class Standard_EXPORT SALOMEDS_SObject: public virtual SALOMEDSClient_SObject
+{
+protected:
+
+  bool                         _isLocal;
+  Handle(SALOMEDSImpl_SObject) _local_impl;
+  SALOMEDS::SObject_var        _corba_impl;
+  CORBA::ORB_var               _orb;
+
+public:
+  
+  SALOMEDS_SObject(SALOMEDS::SObject_ptr theSObject);
+  SALOMEDS_SObject(const Handle(SALOMEDSImpl_SObject)& theSObject);       
+  virtual ~SALOMEDS_SObject();
+
+  virtual std::string GetID();
+  virtual _PTR(SComponent) GetFatherComponent();
+  virtual _PTR(SObject)    GetFather();
+  virtual bool FindAttribute(_PTR(GenericAttribute)& anAttribute, const std::string& aTypeOfAttribute);
+  virtual bool ReferencedObject(_PTR(SObject)& theObject);
+  virtual bool FindSubObject(int theTag, _PTR(SObject)& theObject);
+  virtual _PTR(Study) GetStudy();
+  virtual std::string Name();
+  virtual void  Name(const std::string& theName);
+  virtual vector<_PTR(GenericAttribute)> GetAllAttributes();
+  virtual std::string GetName();
+  virtual std::string GetComment();
+  virtual std::string GetIOR();
+  virtual int   Tag();
+  virtual int   Depth();
+
+  CORBA::Object_ptr GetObject();
+  SALOMEDS::SObject_ptr GetSObject();
+
+  SALOMEDS::SObject_ptr        GetCORBAImpl() { return SALOMEDS::SObject::_duplicate(_corba_impl); }
+  Handle(SALOMEDSImpl_SObject) GetLocalImpl() { return _local_impl; } 
+
+private:
+  void init_orb();
+};
+
+#endif
index 35c5087af6385c4a68b45df0c587372444155b63..184a0af067f1053b14aa02d1c7cdfa1bf7d4deb3 100644 (file)
-//  SALOME SALOMEDS : data structure of SALOME and sources of Salome data server 
-//
-//  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
-// 
-//  This library is free software; you can redistribute it and/or 
-//  modify it under the terms of the GNU Lesser General Public 
-//  License as published by the Free Software Foundation; either 
-//  version 2.1 of the License. 
-// 
-//  This library is distributed in the hope that it will be useful, 
-//  but WITHOUT ANY WARRANTY; without even the implied warranty of 
-//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
-//  Lesser General Public License for more details. 
-// 
-//  You should have received a copy of the GNU Lesser General Public 
-//  License along with this library; if not, write to the Free Software 
-//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
-// 
-//  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
-//
-//
-//
 //  File   : SALOMEDS_SObject_i.cxx
-//  Author : Yves FRICAUD
+//  Author : Sergey RUIN
 //  Module : SALOME
-//  $Header$
-
-#include <TDF_Tool.hxx>
-#include <TDF_Attribute.hxx>
-#include <TDF_Reference.hxx>
-#include <Standard_GUID.hxx>
-#include <Standard_NoSuchObject.hxx>
-#include <TDataStd_Name.hxx>
-#include <TDataStd_Comment.hxx>
-#include <TDataStd_Integer.hxx>
-#include <TDataStd_Real.hxx>
-#include <TDataStd_TreeNode.hxx>
-#include <TDataStd_UAttribute.hxx>
 
-#include <TCollection_AsciiString.hxx>
-#include <TDF_AttributeIterator.hxx>
-
-#include "SALOMEDS_SObject_i.hxx"
-
-//SALOMEDS Headers
-#include "SALOMEDS_Study_i.hxx"
-#include "SALOMEDS_StudyManager_i.hxx"
-#include "SALOMEDS_SComponent_i.hxx"
 
-#include "SALOMEDS_AttributeComment_i.hxx"
-
-#include "SALOMEDS_AttributeTreeNode_i.hxx"
-#include "SALOMEDS_AttributeUserID_i.hxx"
-
-#include "SALOMEDS_AttributePersistentRef_i.hxx"
-#include "SALOMEDS_AttributeIOR_i.hxx"
-#include "SALOMEDS_AttributeExternalFileDef_i.hxx"
-#include "SALOMEDS_AttributeFileType_i.hxx"
-#include "SALOMEDS_AttributeName_i.hxx"
-#include "SALOMEDS_AttributeSequenceOfInteger_i.hxx"
-#include "SALOMEDS_AttributeSequenceOfReal_i.hxx"
-#include "SALOMEDS_AttributeTableOfInteger_i.hxx"
-#include "SALOMEDS_AttributeTableOfReal_i.hxx"
-#include "SALOMEDS_AttributeTableOfString_i.hxx"
-#include "SALOMEDS_AttributeInteger_i.hxx"
-#include "SALOMEDS_AttributeReal_i.hxx"
-#include "SALOMEDS_AttributeDrawable_i.hxx"
-#include "SALOMEDS_AttributeSelectable_i.hxx"
-#include "SALOMEDS_AttributeExpandable_i.hxx"
-#include "SALOMEDS_AttributeOpened_i.hxx"
-#include "SALOMEDS_AttributeTextColor_i.hxx"
-#include "SALOMEDS_AttributeTextHighlightColor_i.hxx"
-#include "SALOMEDS_AttributePixMap_i.hxx"
-#include "SALOMEDS_AttributeTarget_i.hxx"
-#include "SALOMEDS_AttributeLocalID_i.hxx"
-#include "SALOMEDS_AttributeStudyProperties_i.hxx"
-#include "SALOMEDS_AttributePythonObject_i.hxx"
-
-#include "SALOMEDS_AttributeGraphic_i.hxx"
-#include "SALOMEDS_AttributeFlags_i.hxx"
-
-#include "Utils_ExceptHandlers.hxx"
-UNEXPECT_CATCH(GALockProtection, SALOMEDS::GenericAttribute::LockProtection);
 
 #include "utilities.h"
+#include "SALOMEDS_SObject_i.hxx"
+#include "SALOMEDS_SComponent_i.hxx"
+#include "SALOMEDS_GenericAttribute_i.hxx"
+#include "SALOMEDS_StudyManager_i.hxx"
+#include "SALOMEDS.hxx"
+#include "SALOMEDSImpl_GenericAttribute.hxx"
+#include "SALOMEDSImpl_SComponent.hxx"
+#include "SALOMEDSImpl_Study.hxx"
+#include "SALOMEDSImpl_AttributeIOR.hxx"
 
-using namespace std;
-using namespace SALOMEDS;
-
-
-inline bool operator<(const Standard_GUID& theLeft, const Standard_GUID& theRight)
-{
-  char aLeft[40] = "";
-  theLeft.ToCString(aLeft);
-
-  char aRight[40] = "";
-  theRight.ToCString(aRight);
-  
-  return strcmp(aLeft,aRight) < 0;
-}
-
-
-namespace SALOMEDS{
-
-  const char* Str(const TCollection_ExtendedString& theString)
-  {
-    return TCollection_AsciiString(theString).ToCString();
-  }
-
-  typedef std::string TAttributeID;
-
-  typedef Standard_GUID (*TGetGUID)();
-  typedef bool (*TIsCheckLockedStudy)();
-  typedef Handle(TDF_Attribute) (*TNewAttribute)();
-  typedef SALOMEDS_GenericAttribute_i* (*TNewInstance)(const Handle(TDF_Attribute)&, SALOMEDS_SObject_i*);
-  
-  struct TAttrFun{
-    TAttrFun(const TGetGUID& theGetGUID,
-            const TIsCheckLockedStudy& theIsCheckLockedStudy,
-            const TNewAttribute& theNewAttribute,
-            const TNewInstance& theNewInstance):
-      myGetGUID(theGetGUID),
-      myIsCheckLockedStudy(theIsCheckLockedStudy),
-      myNewAttribute(theNewAttribute),
-      myNewInstance(theNewInstance)
-    {
-    }
-
-    TGetGUID myGetGUID;
-    TIsCheckLockedStudy myIsCheckLockedStudy;
-    TNewAttribute myNewAttribute;
-    TNewInstance myNewInstance;
-  };
-  
-  typedef std::map<TAttributeID,TAttrFun> TAttrID2FunMap;
-  static TAttrID2FunMap __AttrID2FunMap__;
-  
-  
-  typedef std::map<Standard_GUID,TAttributeID> TGUID2AttrIDMap;
-  static TGUID2AttrIDMap __GUID2AttrIDMap__;
-  
-  bool Init()
-  {
-    
-#define ADD_ATTRID2FUNMAP_ITEM(theName) \
-    __AttrID2FunMap__.insert( \
-      TAttrID2FunMap::value_type(#theName,TAttrFun( \
-       &(SALOMEDS_##theName##_i::GetGUID), \
-       &(SALOMEDS_##theName##_i::IsCheckLockedStudy), \
-       &(SALOMEDS_##theName##_i::NewAttribute), \
-       &(SALOMEDS_##theName##_i::NewInstance) \
-    )))
-                                                      
-    ADD_ATTRID2FUNMAP_ITEM(AttributeName);
-    ADD_ATTRID2FUNMAP_ITEM(AttributeComment); 
-    ADD_ATTRID2FUNMAP_ITEM(AttributeIOR);
-    ADD_ATTRID2FUNMAP_ITEM(AttributeReal);
-    ADD_ATTRID2FUNMAP_ITEM(AttributeInteger);
-    ADD_ATTRID2FUNMAP_ITEM(AttributeSequenceOfInteger);
-    ADD_ATTRID2FUNMAP_ITEM(AttributeSequenceOfReal);
-    ADD_ATTRID2FUNMAP_ITEM(AttributeTableOfInteger);
-    ADD_ATTRID2FUNMAP_ITEM(AttributeTableOfReal);
-    ADD_ATTRID2FUNMAP_ITEM(AttributeTableOfString);
-    ADD_ATTRID2FUNMAP_ITEM(AttributeLocalID);
-    ADD_ATTRID2FUNMAP_ITEM(AttributePythonObject);
-    
-    ADD_ATTRID2FUNMAP_ITEM(AttributeUserID);
-    ADD_ATTRID2FUNMAP_ITEM(AttributeTreeNode);
-
-    ADD_ATTRID2FUNMAP_ITEM(AttributePersistentRef);
-    ADD_ATTRID2FUNMAP_ITEM(AttributeDrawable);
-    ADD_ATTRID2FUNMAP_ITEM(AttributeSelectable);
-    ADD_ATTRID2FUNMAP_ITEM(AttributeExpandable);
-    ADD_ATTRID2FUNMAP_ITEM(AttributeOpened);
-    ADD_ATTRID2FUNMAP_ITEM(AttributeTextColor);
-    ADD_ATTRID2FUNMAP_ITEM(AttributeTextHighlightColor);
-    ADD_ATTRID2FUNMAP_ITEM(AttributePixMap);
-    ADD_ATTRID2FUNMAP_ITEM(AttributeTarget);
-    ADD_ATTRID2FUNMAP_ITEM(AttributeStudyProperties);
-    ADD_ATTRID2FUNMAP_ITEM(AttributeExternalFileDef);
-    ADD_ATTRID2FUNMAP_ITEM(AttributeFileType);
-
-    ADD_ATTRID2FUNMAP_ITEM(AttributeGraphic);
-    ADD_ATTRID2FUNMAP_ITEM(AttributeFlags);
-
-    TAttrID2FunMap::const_iterator anIter = __AttrID2FunMap__.begin();
-    TAttrID2FunMap::const_iterator anEnd = __AttrID2FunMap__.end();
-    for(; anIter != anEnd; anIter++){
-      const TAttrID2FunMap::key_type& aKey = anIter->first;
-      const TAttrID2FunMap::mapped_type& aValue = anIter->second;
-      __GUID2AttrIDMap__[aValue.myGetGUID()] = aKey;
-    };
-
-#undef ADD_ATTRID2FUNMAP_ITEM
-    return true;
-  }
-  
-
-  static bool __IsInitilized__ = Init();
-
-
-  //============================================================================
-  bool GetAttrFun(const Standard_GUID& theGUID, TAttrFun& theAttrFun)
-  {
-    TGUID2AttrIDMap::const_iterator anIter = __GUID2AttrIDMap__.find(theGUID);
-    if(anIter != __GUID2AttrIDMap__.end())
-    {
-      const TAttributeID& anAttributeID = anIter->second;
-      TAttrID2FunMap::const_iterator anIter2 = __AttrID2FunMap__.find(anAttributeID);
-      if(anIter2 != __AttrID2FunMap__.end())
-      {
-       theAttrFun = anIter2->second;
-       return true;
-      }
-    }
-    return false;
-  }
+// OCC Headers
+#include <TCollection_AsciiString.hxx>
+#include <TCollection_ExtendedString.hxx>
+#include <TColStd_HSequenceOfTransient.hxx>
+#include <map>
 
+#ifdef WIN32
+#include <process.h>
+#else
+#include <sys/types.h>
+#include <unistd.h>
+#endif
 
-  //============================================================================
-  Standard_GUID GetGUID(const char* theType)
-  {
-    TAttrID2FunMap::const_iterator anIter = __AttrID2FunMap__.find(theType);
-    if(anIter != __AttrID2FunMap__.end()){
-      const TAttrID2FunMap::mapped_type& aValue = anIter->second;
-      return aValue.myGetGUID();
-    }
-    // create tree node GUID by name
-    if(strncmp(theType,"AttributeTreeNodeGUID",21) == 0){
-      char aGUIDString[40] = "";
-      sprintf(aGUIDString,&theType[21]);
-      return aGUIDString;
-    }
-    
-    return Standard_GUID();
-  }
+#include "OpUtil.hxx"
 
+using namespace std;
 
-  //============================================================================
-  std::string GetType(const Handle(TDF_Attribute)& theAttr)
-  {
-    if(theAttr.IsNull())
-      return CORBA::string_dup("");
-    
-    Standard_GUID aGUID = theAttr->ID();
-    TGUID2AttrIDMap::const_iterator anIter = __GUID2AttrIDMap__.find(aGUID);
-    if(anIter != __GUID2AttrIDMap__.end())
-    {
-      const TAttributeID& anAttributeID = anIter->second;
-      return anAttributeID;
-    }
-    
-    char aType[60] = "";
-    {
-      Handle(TDataStd_TreeNode) anAttr = Handle(TDataStd_TreeNode)::DownCast(theAttr);
-      if (!anAttr.IsNull()) {
-       char aGUID[40] = "";
-       anAttr->ID().ToCString(aGUID);
-       sprintf(aType, "AttributeTreeNodeGUID%s",aGUID);
-       return aType;
-      }
-    }
-    {
-      Handle(TDataStd_UAttribute) anAttr = Handle(TDataStd_UAttribute)::DownCast(theAttr);
-      if (!anAttr.IsNull()) {
-       char aGUID[40] = "";
-       anAttr->ID().ToCString(aGUID);
-       sprintf(aType, "AttributeUserID_%s",aGUID); 
-       return aType;
-      }
-    }
-    return aType;
-  }
-  
-}  
-  
-//============================================================================
-SALOMEDS_Study_i::TSObjectHolder
-SALOMEDS_SObject_i::New(SALOMEDS_Study_i* theStudy,
-                       const TDF_Label& theLabel)
+SALOMEDS::SObject_ptr SALOMEDS_SObject_i::New(const Handle(SALOMEDSImpl_SObject)& theImpl, CORBA::ORB_ptr theORB)
 {
-  SALOMEDS_Study_i::TSObjectHolder aSObjectHolder;
-  SALOMEDS_Study_i::TSObjectMap& anSObjectMap = theStudy->GetSObjectMap();
-  SALOMEDS_Study_i::TSObjectMap::const_iterator anIter = anSObjectMap.find(theLabel);
-  if(anIter != anSObjectMap.end())
-    aSObjectHolder = anIter->second;
-  else{
-    SALOMEDS_SObject_i* aSObject = new SALOMEDS_SObject_i(theStudy,theLabel);
-    aSObjectHolder.first = aSObject;
-    aSObjectHolder.second = aSObject->_this();
-    anSObjectMap[theLabel] = aSObjectHolder;
-
-    //TCollection_AsciiString anEntry;
-    //TDF_Tool::Entry(theLabel,anEntry);
-    //cout<<"APO - SALOMEDS_SObject_i::New - anEntry = "<<anEntry.ToCString()<<endl;
-  }
-  return aSObjectHolder;
-}
+  SALOMEDS_SObject_i* so_servant = new SALOMEDS_SObject_i(theImpl, theORB);
+  SALOMEDS::SObject_var so  = SALOMEDS::SObject::_narrow(so_servant->_this());
 
-SALOMEDS_SObject_i*
-SALOMEDS_SObject_i::NewPtr(SALOMEDS_Study_i* theStudy,
-                          const TDF_Label& theLabel)
-{
-  return New(theStudy,theLabel).first;
+  return so._retn();
 }
 
-SALOMEDS::SObject_var
-SALOMEDS_SObject_i::NewRef(SALOMEDS_Study_i* theStudy,
-                          const TDF_Label& theLabel)
-{
-  return New(theStudy,theLabel).second;
-}
 
 //============================================================================
 /*! Function : constructor
- *  Purpose  : 
+ *  Purpose  :
  */
 //============================================================================
-SALOMEDS_SObject_i::SALOMEDS_SObject_i(SALOMEDS_Study_i* theStudy,
-                                      const TDF_Label& theLabel):
-  _lab(theLabel),
-  _study(theStudy)
+SALOMEDS_SObject_i::SALOMEDS_SObject_i(const Handle(SALOMEDSImpl_SObject)& impl, CORBA::ORB_ptr orb)
+  : _impl(impl)
 {
+  _orb = CORBA::ORB::_duplicate(orb);
+   //SALOME::GenericObj_i::myPOA = SALOMEDS_StudyManager_i::GetPOA(GetStudy());
 }
 
+
 //============================================================================
 /*! Function : destructor
- *  Purpose  : 
+ *  Purpose  :
  */
 //============================================================================
 SALOMEDS_SObject_i::~SALOMEDS_SObject_i()
-{
-}
-  
+{}
 
+
+//============================================================================
+/*! Function :GetID
+ *  Purpose  :
+ */
 //============================================================================
-CORBA::ORB_var SALOMEDS_SObject_i::GetORB() const
+char* SALOMEDS_SObject_i::GetID()
 {
-  return _study->GetORB();
+  SALOMEDS::Locker lock;
+  return CORBA::string_dup(_impl->GetID().ToCString());
 }
 
-
 //============================================================================
-PortableServer::POA_var SALOMEDS_SObject_i::GetPOA() const
+/*! Function : GetFatherComponent
+ *  Purpose  :
+ */
+//============================================================================
+SALOMEDS::SComponent_ptr SALOMEDS_SObject_i::GetFatherComponent()
 {
-  return _study->GetPOA();
+  SALOMEDS::Locker lock;
+  SALOMEDS::SComponent_var sco = SALOMEDS_SComponent_i::New (_impl->GetFatherComponent(), _orb);
+  return sco._retn();
 }
 
-
 //============================================================================
-/*! Function :
- *  Purpose  : 
+/*! Function : GetFather
+ *  Purpose  :
  */
 //============================================================================
-char* SALOMEDS_SObject_i::GetID()
+SALOMEDS::SObject_ptr SALOMEDS_SObject_i::GetFather()
 {
-  TCollection_AsciiString anEntry;
-  TDF_Tool::Entry(_lab,anEntry);
-  return CORBA::string_dup(anEntry.ToCString());
+  SALOMEDS::Locker lock;
+  SALOMEDS::SObject_var so = SALOMEDS_SObject_i::New (_impl->GetFather(), _orb);
+  return so._retn();
 }
-  
+
 //============================================================================
 /*! Function :
- *  Purpose  : 
+ *  Purpose  :
  */
 //============================================================================
-TDF_Label SALOMEDS_SObject_i::GetFatherComponentLabel()
+SALOMEDS::Study_ptr SALOMEDS_SObject_i::GetStudy()
 {
-  TDF_Label aLabel = _lab;
-  while(!SALOMEDS_SComponent_i::IsA(aLabel) && !aLabel.IsRoot())
-    aLabel = aLabel.Father();
+  SALOMEDS::Locker lock;
+  Handle(SALOMEDSImpl_Study) aStudy = _impl->GetStudy();
+  if(aStudy.IsNull()) {
+    MESSAGE("Problem GetStudy");
+    return SALOMEDS::Study::_nil();
+  }
 
-  return aLabel;
+  TCollection_AsciiString IOR = aStudy->GetTransientReference();
+  CORBA::Object_var obj = _orb->string_to_object(IOR.ToCString());
+  SALOMEDS::Study_var Study = SALOMEDS::Study::_narrow(obj) ;
+  ASSERT(!CORBA::is_nil(Study));
+  return SALOMEDS::Study::_duplicate(Study);
 }
 
-SALOMEDS::SComponent_ptr SALOMEDS_SObject_i::GetFatherComponent()
-{
-  TDF_Label aSCompLabel = GetFatherComponentLabel();
-
-  return SALOMEDS_SComponent_i::NewRef(_study,aSCompLabel)._retn();
-}
-  
 //============================================================================
-/*! Function :
- *  Purpose  : 
+/*! Function : FindAttribute
+ *  Purpose  : Find attribute of given type on this SObject
  */
 //============================================================================
-SALOMEDS::SObject_ptr SALOMEDS_SObject_i::GetFather()
+CORBA::Boolean SALOMEDS_SObject_i::FindAttribute (SALOMEDS::GenericAttribute_out anAttribute,
+                                                 const char* aTypeOfAttribute)
 {
-  return SALOMEDS_SObject_i::NewRef(_study,_lab.Father())._retn();
+  SALOMEDS::Locker lock;
+  Handle(TDF_Attribute) anAttr;
+  if(_impl->FindAttribute(anAttr, (char*)aTypeOfAttribute)) {
+    anAttribute = SALOMEDS::GenericAttribute::_duplicate(SALOMEDS_GenericAttribute_i::CreateAttribute(anAttr, _orb));
+    return Standard_True;
+  }
+
+  return Standard_False;
 }
 
 //============================================================================
-/*! Function :
- *  Purpose  : 
+/*! Function : GetAllAttributes
+ *  Purpose  : Returns list of all attributes for this sobject
  */
 //============================================================================
-SALOMEDS::Study_ptr SALOMEDS_SObject_i::GetStudy()
+
+SALOMEDS::ListOfAttributes* SALOMEDS_SObject_i::GetAllAttributes()
 {
-  return _study->_this();
+  SALOMEDS::Locker lock;
+  Handle(TColStd_HSequenceOfTransient) aSeq = _impl->GetAllAttributes();
+  SALOMEDS::ListOfAttributes_var SeqOfAttr = new SALOMEDS::ListOfAttributes;
+  Standard_Integer length = aSeq->Length();
+
+  SeqOfAttr->length(length);
+
+  if (length != 0) {
+    for(int i = 1; i<= length; i++) {
+      Handle(SALOMEDSImpl_GenericAttribute) anAttr = Handle(SALOMEDSImpl_GenericAttribute)::DownCast(aSeq->Value(i));
+      SALOMEDS::GenericAttribute_var anAttribute;
+      anAttribute = SALOMEDS::GenericAttribute::_duplicate(SALOMEDS_GenericAttribute_i::CreateAttribute(anAttr, _orb));
+      if (!CORBA::is_nil(anAttribute)) {
+       SeqOfAttr[i - 1] = anAttribute;
+      }
+    }
+  }
+  return SeqOfAttr._retn();
 }
 
+
 //============================================================================
 /*! Function : ReferencedObject
- *  Purpose  : 
+ *  Purpose  :
  */
 //============================================================================
-CORBA::Boolean SALOMEDS_SObject_i::ReferencedObject(SALOMEDS::SObject_out theSObject)
+CORBA::Boolean SALOMEDS_SObject_i::ReferencedObject(SALOMEDS::SObject_out obj)
 {
-  Handle(TDF_Reference) aRef;
-  if (!_lab.FindAttribute(TDF_Reference::GetID(),aRef))
-    return false;
-  
-  theSObject = SALOMEDS_SObject_i::NewRef(_study,aRef->Get())._retn(); 
+  SALOMEDS::Locker lock;
+  Handle(SALOMEDSImpl_SObject) aRefObj;
+  if(!_impl->ReferencedObject(aRefObj)) return false;
+
+  obj = SALOMEDS_SObject_i::New (aRefObj, _orb);
   return true;
 }
 
 //============================================================================
-/*! Function :
- *  Purpose  : 
+/*! Function : FindSubObject
+ *  Purpose  :
  */
 //============================================================================
-CORBA::Boolean SALOMEDS_SObject_i::FindSubObject(CORBA::Long theTag, SALOMEDS::SObject_out theSObject)
+CORBA::Boolean SALOMEDS_SObject_i::FindSubObject(long atag, SALOMEDS::SObject_out obj)
 {
-  TDF_Label aLabel = _lab.FindChild(theTag,false);
-  if(aLabel.IsNull()) 
-    return false;
-  
-  theSObject = SALOMEDS_SObject_i::NewRef(_study,aLabel)._retn(); 
+  SALOMEDS::Locker lock;
+  Handle(SALOMEDSImpl_SObject) aSubObj;
+  if(!_impl->FindSubObject(atag, aSubObj)) return false;
+
+  obj = SALOMEDS_SObject_i::New (aSubObj, _orb);
   return true;
-}  
+
+}
 
 //============================================================================
-/*! Function :
- *  Purpose  : 
+/*! Function : Name
+ *  Purpose  : gets a name
  */
 //============================================================================
 char* SALOMEDS_SObject_i::Name()
 {
-  return CORBA::string_dup(_name.c_str());
+  SALOMEDS::Locker lock;
+  return CORBA::string_dup(_impl->Name().ToCString());
 }
-  
+
 //============================================================================
-/*! Function :
- *  Purpose  : 
+/*! Function : Name
+ *  Purpose  : sets a name
  */
 //============================================================================
-void  SALOMEDS_SObject_i::Name(const char* theName)
+void  SALOMEDS_SObject_i::Name(const char* name)
 {
-  _name = theName;
+  SALOMEDS::Locker lock;
+  TCollection_AsciiString aName((char*)name);
+  _impl->Name(aName);
 }
-  
+
 //============================================================================
-/*! Function :
- *  Purpose  : 
+/*! Function : Tag
+ *  Purpose  :
  */
 //============================================================================
 CORBA::Short SALOMEDS_SObject_i::Tag()
 {
-  return _lab.Tag();
+  SALOMEDS::Locker lock;
+  return _impl->Tag();
 }
 
 //============================================================================
-/*! Function :
- *  Purpose  : 
+/*! Function : Depth
+ *  Purpose  :
  */
 //============================================================================
 CORBA::Short SALOMEDS_SObject_i::Depth()
 {
-  return _lab.Depth();
+  SALOMEDS::Locker lock;
+  return _impl->Depth();
 }
 
 //============================================================================
-/*! Function :
- *  Purpose  : 
+/*! Function : GetObject
+ *  Purpose  :
  */
 //============================================================================
 CORBA::Object_ptr SALOMEDS_SObject_i::GetObject()
 {
+  SALOMEDS::Locker lock;
+  CORBA::Object_ptr obj = CORBA::Object::_nil();
   try {
-    Handle(SALOMEDS_IORAttribute) anAttr;
-    if(_lab.FindAttribute(SALOMEDS_IORAttribute::GetID(),anAttr)){
-      CORBA::ORB_var anORB = _study->GetStudyManager()->GetORB();
-      return anORB->string_to_object(Str(anAttr->Get()));
-    }
-  }catch(...){
-  }
-  return CORBA::Object::_nil();
-}
-
-//============================================================================
-/*! Function :
- *  Purpose  : 
- */
-//============================================================================
-char* SALOMEDS_SObject_i::GetName() {
-  Handle(TDataStd_Name) anAttr;
-  if(_lab.FindAttribute(TDataStd_Name::GetID(),anAttr))
-    return CORBA::string_dup(Str(anAttr->Get()));
-
-  return CORBA::string_dup("");
-}
-
-//============================================================================
-/*! Function :
- *  Purpose  : 
- */
-//============================================================================
-char* SALOMEDS_SObject_i::GetComment() {
-  Handle(TDataStd_Comment) anAttr;
-  if(_lab.FindAttribute(TDataStd_Comment::GetID(), anAttr))
-    return CORBA::string_dup(Str(anAttr->Get()));
-
-  return CORBA::string_dup("");
-}
-
-//============================================================================
-/*! Function :
- *  Purpose  : 
- */
-//============================================================================
-char* SALOMEDS_SObject_i::GetIOR() {
-  Handle(SALOMEDS_IORAttribute) anAttr;
-  if(_lab.FindAttribute(SALOMEDS_IORAttribute::GetID(),anAttr))
-    return CORBA::string_dup(Str(anAttr->Get()));
-
-  return CORBA::string_dup("");
+    TCollection_AsciiString IOR = _impl->GetIOR();
+    char* c_ior = CORBA::string_dup(IOR.ToCString());
+    obj = _orb->string_to_object(c_ior);
+    CORBA::string_free(c_ior);
+  } catch(...) {}
+  return obj;
 }
 
-
 //============================================================================
-/*! Function : GetAllAttributes
- *  Purpose  : Returns list of all attributes for this sobject
+/*! Function : GetName
+ *  Purpose  :
  */
 //============================================================================
-SALOMEDS_SObject_i::TAttrHolder 
-SALOMEDS_SObject_i::_FindGenAttribute(const Handle(TDF_Attribute)& theAttr)
+char* SALOMEDS_SObject_i::GetName()
 {
-  std::string aType = GetType(theAttr);
-  return _FindGenAttribute(aType.c_str());
+  SALOMEDS::Locker lock;
+  CORBA::String_var aStr = CORBA::string_dup(_impl->GetName().ToCString());
+  return aStr._retn();
 }
 
-
-SALOMEDS::ListOfAttributes* SALOMEDS_SObject_i::GetAllAttributes()
-{
-  SALOMEDS::ListOfAttributes_var aSeqOfAttr = new SALOMEDS::ListOfAttributes;
-  if(_lab.NbAttributes() > 0){
-    Standard_Integer i = 0;
-    for(TDF_AttributeIterator iter(_lab); iter.More(); iter.Next()) {
-      Handle(TDF_Attribute) anAttr = iter.Value();
-      TAttrHolder anAttrHolder = _FindGenAttribute(anAttr);
-      SALOMEDS::GenericAttribute_var anGenAttr = anAttrHolder.second;
-      if(!anGenAttr->_is_nil())
-      {
-       aSeqOfAttr->length(++i);
-       aSeqOfAttr[i-1] = anGenAttr._retn();
-      }
-    }
-  }
-
-  return aSeqOfAttr._retn();
-}
-
-
 //============================================================================
-/*! Function : FindAttribute
- *  Purpose  : Find attribute of given type on this SObject
+/*! Function : GetComment
+ *  Purpose  :
  */
 //============================================================================
-SALOMEDS_SObject_i::TAttrHolder 
-SALOMEDS_SObject_i::_CreateGenAttribute(const Handle(TDF_Attribute)& theAttr,
-                                       const char* theType) 
+char* SALOMEDS_SObject_i::GetComment()
 {
-  SALOMEDS_GenericAttribute_i* anAttr;
-  TAttrID2FunMap::const_iterator anIter = __AttrID2FunMap__.find(theType);
-  if(anIter != __AttrID2FunMap__.end()){
-    const TAttrID2FunMap::mapped_type& aValue = anIter->second;
-    
-    //if(aValue.myIsCheckLockedStudy()) // mpv 03.02.05: creation of CORBA objects does not modify the study
-    //  _study->CheckLocked();
-    
-    anAttr = aValue.myNewInstance(theAttr,this);
-    return TAttrHolder(anAttr,anAttr->_this());
-  }
-  
-  if(strncmp(theType,"AttributeTreeNode",17) == 0){
-    anAttr = new SALOMEDS_AttributeTreeNode_i(theAttr,this);
-    return TAttrHolder(anAttr,anAttr->_this());
-  }
-  
-  if(strncmp(theType,"AttributeUserID",15) == 0){
-    anAttr =  new SALOMEDS_AttributeUserID_i(theAttr,this);
-    return TAttrHolder(anAttr,anAttr->_this());
-  }
-  
-  return TAttrHolder();
+  SALOMEDS::Locker lock;
+  CORBA::String_var aStr = CORBA::string_dup(_impl->GetComment().ToCString());
+  return aStr._retn();
 }
 
-
-SALOMEDS_SObject_i::TAttrHolder 
-SALOMEDS_SObject_i::_FindGenAttribute(const char* theType)
-{
-  TAttrHolder anAttrHolder;
-  TAttrMap::const_iterator anIter = myAttrMap.find(theType);
-  if(anIter != myAttrMap.end())
-    anAttrHolder = anIter->second;
-
-  Standard_GUID aGUID = ::GetGUID(theType);
-  Handle(TDF_Attribute) anAttr;
-
-  if(_lab.FindAttribute(aGUID,anAttr)){
-    SALOMEDS_GenericAttribute_i* aGenAttr = anAttrHolder.first;
-    if(aGenAttr != NULL){
-      if(aGenAttr->GetAttribute() != anAttr)
-       aGenAttr->SetAttribute(anAttr);
-    }else{
-      anAttrHolder = _CreateGenAttribute(anAttr,theType);
-    }
-    aGenAttr = anAttrHolder.first;
-    if(aGenAttr != NULL)
-      myAttrMap[theType] = anAttrHolder;
-  }else{
-    //myAttrMap.erase(theType);
-    //if(anGenAttr != NULL)
-    //  anGenAttr->Destroy();
-    return TAttrHolder();
-  }
-
-  return anAttrHolder;
-}
-
-
-CORBA::Boolean 
-SALOMEDS_SObject_i::FindAttribute(SALOMEDS::GenericAttribute_out theAttribute, 
-                                 const char* theType)
-{
-  TAttrHolder anAttr = _FindGenAttribute(theType);
-  SALOMEDS::GenericAttribute_var anGenAttr = anAttr.second;
-  if(!CORBA::is_nil(anGenAttr)){
-    theAttribute = SALOMEDS::GenericAttribute::_duplicate(anGenAttr);
-    return true;
-  }
-  return false;
-}
-
-
 //============================================================================
-/*! Function : FindAttribute
- *  Purpose  : Find attribute of given type on this SObject
+/*! Function : GetIOR
+ *  Purpose  :
  */
 //============================================================================
-Handle(TDF_Attribute) 
-  SALOMEDS_SObject_i::_AddAttribute(const char* theType) 
+char* SALOMEDS_SObject_i::GetIOR()
 {
-  Handle(TDF_Attribute) anAttr;
-  TAttrID2FunMap::const_iterator anIter = __AttrID2FunMap__.find(theType);
-  if(anIter != __AttrID2FunMap__.end()){
-    const TAttrID2FunMap::mapped_type& aValue = anIter->second;
-    
-    if(aValue.myIsCheckLockedStudy())
-      _study->CheckLocked();
-    
-    anAttr = aValue.myNewAttribute();
-    _lab.AddAttribute(anAttr);
-    return anAttr;
-  }
-  
-  if(strncmp(theType, "AttributeTreeNode",17) == 0){
-    Standard_GUID aGUID;
-    if(strcmp(theType, "AttributeTreeNode") == 0){
-      aGUID = TDataStd_TreeNode::GetDefaultTreeID();
-    }else{
-      char aString[40] = "";
-      sprintf(aString, &theType[21]);
-      aGUID = Standard_GUID(aString); // create tree node GUID by name
-    }
-    if(!_lab.FindAttribute(aGUID,anAttr)){
-      _study->CheckLocked();
-      anAttr = TDataStd_TreeNode::Set(_lab,aGUID);
-      return anAttr;
-    }
-  }
-  
-  if(strncmp(theType, "AttributeUserID",15) == 0){
-    Standard_GUID aGUID = SALOMEDS_AttributeUserID_i::GetGUID();
-    if(!_lab.FindAttribute(aGUID,anAttr)){
-      _study->CheckLocked();
-      anAttr = TDataStd_UAttribute::Set(_lab,aGUID);
-      return anAttr;
-    }
-  }
-  
-  
-  return anAttr;
+  SALOMEDS::Locker lock;
+  CORBA::String_var aStr = CORBA::string_dup(_impl->GetIOR().ToCString());
+  return aStr._retn();
 }
 
-
-SALOMEDS::GenericAttribute_ptr 
-SALOMEDS_SObject_i::FindOrCreateAttribute(const char* theType)
+//===========================================================================
+//   PRIVATE FUNCTIONS
+//===========================================================================
+long SALOMEDS_SObject_i::GetLocalImpl(const char* theHostname, CORBA::Long thePID, CORBA::Boolean& isLocal)
 {
-  TAttrHolder anAttrHolder = _FindGenAttribute(theType);
-  SALOMEDS::GenericAttribute_var anGenAttr = anAttrHolder.second;
-  if(!anGenAttr->_is_nil())
-    return anGenAttr._retn();
-
-  Handle(TDF_Attribute) anAttr = _AddAttribute(theType);
-  if(!anAttr.IsNull()){
-    anAttrHolder = _CreateGenAttribute(anAttr,theType);
-    anGenAttr = anAttrHolder.second;
-    if(!anGenAttr->_is_nil())
-      return anGenAttr._retn();
-  }
-
-  return SALOMEDS::GenericAttribute::_nil();
-}
-
-
-//============================================================================
-/*! Function : FindAttribute
- *  Purpose  : Find attribute of given type on this SObject
- */
-//============================================================================
-void SALOMEDS_SObject_i::RemoveAttribute(const char* theType)
-{
-  _study->CheckLocked();
-  if(strcmp(theType, "AttributeIOR") == 0) { // postponed removing of CORBA objects
-    Handle(SALOMEDS_IORAttribute) anAttr;
-    if(_lab.FindAttribute(SALOMEDS_IORAttribute::GetID(), anAttr))
-      _study->AddPostponed(Str(anAttr->Get()));
-    else 
-      return;
-  }
-  TAttrMap::iterator anIter = myAttrMap.find(theType);
-  if(anIter != myAttrMap.end()){
-    //myAttrMap.erase(anIter);
-  }
-  _lab.ForgetAttribute(::GetGUID(theType));
-}
-
-
-void SALOMEDS_SObject_i::OnRemove()
-{
-  Handle(TDF_Reference) aReference;
-  if(_lab.FindAttribute(TDF_Reference::GetID(),aReference)){
-    Handle(SALOMEDS_TargetAttribute) aTarget;
-    if(aReference->Get().FindAttribute(SALOMEDS_TargetAttribute::GetID(),aTarget))
-      aTarget->Remove(_lab);
-  }
-
-  Handle(SALOMEDS_IORAttribute) anAttr; // postponed removing of CORBA objects
-  if(_lab.FindAttribute(SALOMEDS_IORAttribute::GetID(),anAttr)){
-    _study->AddPostponed(TCollection_AsciiString(anAttr->Get()).ToCString());
-  }
-
-  //myAttrMap.clear();
-
-  //SALOMEDS_Study_i::TSObjectMap& anSObjectMap = _study->GetSObjectMap();
-  //anSObjectMap.erase(_lab);
+#ifdef WIN32
+  long pid = (long)_getpid();
+#else
+  long pid = (long)getpid();
+#endif
+  isLocal = (strcmp(theHostname, GetHostname().c_str()) == 0 && pid == thePID)?1:0;
+  SALOMEDSImpl_SObject* local_impl = _impl.operator->();
+  return ((long)local_impl);
 }
index c5f534180e85248607f5567ac8327b86f723266b..812e130597f95a0d9ff4db12a3d4f929c4ca3e2e 100644 (file)
-//  SALOME SALOMEDS : data structure of SALOME and sources of Salome data server 
-//
-//  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
-// 
-//  This library is free software; you can redistribute it and/or 
-//  modify it under the terms of the GNU Lesser General Public 
-//  License as published by the Free Software Foundation; either 
-//  version 2.1 of the License. 
-// 
-//  This library is distributed in the hope that it will be useful, 
-//  but WITHOUT ANY WARRANTY; without even the implied warranty of 
-//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
-//  Lesser General Public License for more details. 
-// 
-//  You should have received a copy of the GNU Lesser General Public 
-//  License along with this library; if not, write to the Free Software 
-//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
-// 
-//  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
-//
-//
-//
 //  File   : SALOMEDS_SObject_i.hxx
-//  Author : Yves FRICAUD
+//  Author : Sergey RUIN
 //  Module : SALOME
-//  $Header$
 
 #ifndef __SALOMEDS_SOBJECT_I_H__
 #define __SALOMEDS_SOBJECT_I_H__
 
-#include <map>
-#include <string>
-
-// Cascade headers
-#include <TDF_Label.hxx>
-#include <TDocStd_Document.hxx>
-#include <Standard_GUID.hxx>
-
-#include "SALOMEDS_Study_i.hxx"
+// std C++ headers
+#include <iostream>
 
 // IDL headers
 #include <SALOMEconfig.h>
 #include CORBA_SERVER_HEADER(SALOMEDS)
+#include <SALOME_GenericObj_i.hh>
 
-class SALOMEDS_GenericAttribute_i;
+// Cascade headers
+#include "SALOMEDSImpl_SObject.hxx"
 
+#ifdef GetObject
+#undef GetObject
+#endif
 
-namespace SALOMEDS
+class Standard_EXPORT SALOMEDS_SObject_i: public virtual POA_SALOMEDS::SObject,
+                         public virtual PortableServer::RefCountServantBase,
+                         public virtual SALOME::GenericObj_i
 {
-  const char* Str(const TCollection_ExtendedString& theString);
-
-  std::string GetType(const Handle(TDF_Attribute)& theAttr);
-
-  Standard_GUID GetGUID(const char* theType);
-
-}
-
+protected:
+  CORBA::ORB_ptr                _orb;
+  Handle(SALOMEDSImpl_SObject)  _impl;
 
-class SALOMEDS_SObject_i: public virtual POA_SALOMEDS::SObject,
-                         public virtual PortableServer::RefCountServantBase 
-{
 public:
-  static 
-  SALOMEDS_Study_i::TSObjectHolder 
-  New(SALOMEDS_Study_i* theStudy,
-      const TDF_Label& theLabel);
 
-  static 
-  SALOMEDS_SObject_i* 
-  NewPtr(SALOMEDS_Study_i* theStudy,
-        const TDF_Label& theLabel);
-
-  static 
-  SALOMEDS::SObject_var 
-  NewRef(SALOMEDS_Study_i* theStudy,
-        const TDF_Label& theLabel);
-
-  virtual SALOMEDS::SObject_ptr GetFather() ;
+  static SALOMEDS::SObject_ptr New(const Handle(SALOMEDSImpl_SObject)&, CORBA::ORB_ptr); 
+  
+  SALOMEDS_SObject_i(const Handle(SALOMEDSImpl_SObject)&, CORBA::ORB_ptr);
+  
+  virtual ~SALOMEDS_SObject_i();
+  
+  virtual char* GetID();
   virtual SALOMEDS::SComponent_ptr GetFatherComponent();
-  virtual CORBA::Boolean ReferencedObject(SALOMEDS::SObject_out theSObject);
-  virtual CORBA::Boolean FindSubObject(CORBA::Long theTag, SALOMEDS::SObject_out theSObject);
+  virtual SALOMEDS::SObject_ptr    GetFather() ;
+  virtual CORBA::Boolean FindAttribute(SALOMEDS::GenericAttribute_out anAttribute, const char* aTypeOfAttribute);
+  virtual CORBA::Boolean ReferencedObject(SALOMEDS::SObject_out obj) ;
+  virtual CORBA::Boolean FindSubObject(long atag, SALOMEDS::SObject_out obj );
 
-  virtual SALOMEDS::Study_ptr GetStudy();
+  virtual SALOMEDS::Study_ptr    GetStudy() ;
+  virtual char* Name();
+  virtual void  Name(const char*);
   virtual SALOMEDS::ListOfAttributes* GetAllAttributes();
 
   virtual CORBA::Object_ptr GetObject();
 
-  virtual char* GetID();
-  virtual CORBA::Short Tag();
-  virtual CORBA::Short Depth();
-
-  virtual char* Name();
-  virtual void Name(const char* theName);
-
   virtual char* GetName();
   virtual char* GetComment();
   virtual char* GetIOR();
 
-  CORBA::Boolean 
-  FindAttribute(SALOMEDS::GenericAttribute_out theAttribute, 
-               const char* theTypeOfAttribute);
-  
-  SALOMEDS::GenericAttribute_ptr 
-  FindOrCreateAttribute(const char* theTypeOfAttribute);
-
-  void RemoveAttribute(const char* theTypeOfAttribute);
-  void OnRemove();
-
-  SALOMEDS_Study_i* GetStudyServant(){ return _study;}
-
-  TDF_Label GetLabel(){ return _lab;}
-  TDF_Label GetFatherLabel(){ return _lab.Father();}
-  TDF_Label GetFatherComponentLabel();
-
-  CORBA::ORB_var GetORB() const;
-
-  PortableServer::POA_var GetPOA() const;
-  
-protected:
-  friend class SALOMEDS_GenericAttribute_i;
-
-  typedef std::string TAttributeID;
-  typedef std::pair<SALOMEDS_GenericAttribute_i*,SALOMEDS::GenericAttribute_var> TAttrHolder;
-  typedef std::map<TAttributeID,TAttrHolder> TAttrMap;
-  TAttrMap myAttrMap;
-
-  TAttrHolder 
-  _FindGenAttribute(const Handle(TDF_Attribute)& theAttr);
-
-  TAttrHolder 
-  _CreateGenAttribute(const Handle(TDF_Attribute)& theAttr,
-                     const char* theTypeOfAttribute);
-
-  TAttrHolder 
-  _FindGenAttribute(const char* theTypeOfAttribute);
-
-  Handle(TDF_Attribute) 
-    _AddAttribute(const char* theTypeOfAttribute);
-
-  SALOMEDS_Study_i* _study;
-  std::string _name;
-  TDF_Label _lab;
-
-  SALOMEDS_SObject_i(SALOMEDS_Study_i* theStudy, 
-                    const TDF_Label& theLabel);
-  
-  ~SALOMEDS_SObject_i();
-
-private:
-  SALOMEDS_SObject_i(); // Not implemented
-  void operator=(const SALOMEDS_SObject_i&); // Not implemented
+  virtual CORBA::Short Tag();
+  virtual CORBA::Short Depth();
 
+  virtual long GetLocalImpl(const char* theHostname, CORBA::Long thePID, CORBA::Boolean& isLocal);
 };
 
-
 #endif
index 70919bba0ca431d2d28d824fbb3e715d9968f758..d39465cbe1e5dee78d14ba4c2c0a7de9b6d58a1e 100644 (file)
@@ -53,10 +53,14 @@ int main(int argc, char** argv)
   try 
     {
       // Initialise the ORB.
+#if OMNIORB_VERSION >= 4
+      const char* options[][2] = { { "giopMaxMsgSize", "104857600" }, { 0, 0 } };
+      CORBA::ORB_var orb = CORBA::ORB_init( argc , argv , "omniORB4", options) ;
+#else
       CORBA::ORB_var orb = CORBA::ORB_init(argc, argv, "omniORB3");
       omniORB::MaxMessageSize(100 * 1024 * 1024);
+#endif      
       // Obtain a reference to the root POA.
-      //
       long TIMESleep = 500000000;
       int NumberOfTries = 40;
       int a;
@@ -83,7 +87,11 @@ int main(int argc, char** argv)
       for (int i = 1; i<=NumberOfTries; i++)
        {
          if (i!=1) 
+#ifndef WNT
            a=nanosleep(&ts_req,&ts_rem);
+#else
+               Sleep(TIMESleep/1000000);
+#endif
          try
            { 
              obj = orb->resolve_initial_references("RootPOA");
@@ -106,7 +114,11 @@ int main(int argc, char** argv)
                        for(int j=1; j<=NumberOfTries; j++)
                          {
                            if (j!=1) 
+#ifndef WNT
                              a=nanosleep(&ts_req, &ts_rem);
+#else
+                             Sleep(TIMESleep/1000000);
+#endif
                            try
                              {
                                object = inc->resolve(name);
diff --git a/src/SALOMEDS/SALOMEDS_Study.cxx b/src/SALOMEDS/SALOMEDS_Study.cxx
new file mode 100644 (file)
index 0000000..4f202ba
--- /dev/null
@@ -0,0 +1,571 @@
+//  File   : SALOMEDS_Study.cxx
+//  Author : Sergey RUIN
+//  Module : SALOME
+
+
+
+#include "utilities.h" 
+
+#include "SALOMEDS_Study.hxx"
+#include "SALOMEDS_SComponent.hxx"
+#include "SALOMEDSImpl_SComponent.hxx"
+#include "SALOMEDS_SObject.hxx"
+#include "SALOMEDSImpl_SObject.hxx"
+#include "SALOMEDS_StudyBuilder.hxx"
+#include "SALOMEDSImpl_StudyBuilder.hxx"
+#include "SALOMEDS_ChildIterator.hxx"
+#include "SALOMEDSImpl_ChildIterator.hxx"
+#include "SALOMEDS_SComponentIterator.hxx"
+#include "SALOMEDSImpl_SComponentIterator.hxx"
+#include "SALOMEDS_AttributeStudyProperties.hxx"
+#include "SALOMEDSImpl_AttributeStudyProperties.hxx"
+#include "SALOMEDS_UseCaseBuilder.hxx"
+#include "SALOMEDSImpl_UseCaseBuilder.hxx"
+
+#include "SALOMEDS_Driver_i.hxx"
+#include "SALOMEDS_Study_i.hxx"
+
+#include <TCollection_AsciiString.hxx> 
+#include <TColStd_HSequenceOfAsciiString.hxx>
+#include <TColStd_HSequenceOfTransient.hxx>
+
+#include "Utils_ORB_INIT.hxx" 
+#include "Utils_SINGLETON.hxx" 
+
+#ifdef WIN32
+#include <process.h>
+#else
+#include <sys/types.h>
+#include <unistd.h>
+#endif
+
+#include "OpUtil.hxx"
+
+using namespace std; 
+
+SALOMEDS_Study::SALOMEDS_Study(const Handle(SALOMEDSImpl_Study)& theStudy)
+{
+  _isLocal = true;
+  _local_impl = theStudy;
+  _corba_impl = SALOMEDS::Study::_nil();
+  init_orb();
+}
+
+SALOMEDS_Study::SALOMEDS_Study(SALOMEDS::Study_ptr theStudy)
+{
+#ifdef WIN32
+  long pid =  (long)_getpid();
+#else
+  long pid =  (long)getpid();
+#endif  
+
+  long addr = theStudy->GetLocalImpl(GetHostname().c_str(), pid, _isLocal);
+  if(_isLocal) {
+    _local_impl = ((SALOMEDSImpl_Study*)(addr));
+    _corba_impl = SALOMEDS::Study::_duplicate(theStudy);
+  }
+  else {
+    _local_impl = NULL;
+    _corba_impl = SALOMEDS::Study::_duplicate(theStudy);
+  }
+
+  init_orb();
+}
+
+SALOMEDS_Study::~SALOMEDS_Study()
+{
+}
+
+std::string SALOMEDS_Study::GetPersistentReference()
+{
+  std::string aRef;
+  if(_isLocal) aRef = _local_impl->GetPersistentReference().ToCString();
+  else aRef = _corba_impl->GetPersistentReference();
+  return aRef;
+}
+
+std::string SALOMEDS_Study::GetTransientReference()
+{
+  std::string aRef;
+  if(_isLocal) aRef = _local_impl->GetTransientReference().ToCString();
+  else aRef = _corba_impl->GetTransientReference();
+  return aRef;
+}
+bool SALOMEDS_Study::IsEmpty()
+{
+  bool ret;
+  if(_isLocal) ret = _local_impl->IsEmpty();
+  else ret = _corba_impl->IsEmpty();
+  return ret;
+}
+
+_PTR(SComponent) SALOMEDS_Study::FindComponent (const std::string& aComponentName)
+{
+  SALOMEDSClient_SComponent* aSCO = NULL;
+  if(_isLocal) {
+    Handle(SALOMEDSImpl_SComponent) aSCO_impl =_local_impl->FindComponent((char*)aComponentName.c_str());
+    if(aSCO_impl.IsNull()) return _PTR(SComponent)(aSCO);
+    aSCO = new SALOMEDS_SComponent(aSCO_impl);
+  }
+  else {
+    SALOMEDS::SComponent_var aSCO_impl = _corba_impl->FindComponent((char*)aComponentName.c_str());
+    if(CORBA::is_nil(aSCO_impl)) return _PTR(SComponent)(aSCO);
+    aSCO = new SALOMEDS_SComponent(aSCO_impl);
+  }
+  return _PTR(SComponent)(aSCO);
+}
+_PTR(SComponent) SALOMEDS_Study::FindComponentID(const std::string& aComponentID)
+{  
+  SALOMEDSClient_SComponent* aSCO = NULL;
+  if(_isLocal) {
+    Handle(SALOMEDSImpl_SComponent) aSCO_impl =_local_impl->FindComponentID((char*)aComponentID.c_str());
+    if(aSCO_impl.IsNull()) return _PTR(SComponent)(aSCO);
+    aSCO = new SALOMEDS_SComponent(aSCO_impl);
+  }
+  else {
+    SALOMEDS::SComponent_var aSCO_impl = _corba_impl->FindComponentID((char*)aComponentID.c_str());
+    if(CORBA::is_nil(aSCO_impl)) return _PTR(SComponent)(aSCO);
+    aSCO = new SALOMEDS_SComponent(aSCO_impl);
+  }
+  return _PTR(SComponent)(aSCO);
+  
+}
+_PTR(SObject) SALOMEDS_Study::FindObject(const std::string& anObjectName)
+{
+  SALOMEDSClient_SObject* aSO = NULL;
+
+  if(_isLocal) {
+    Handle(SALOMEDSImpl_SObject) aSO_impl = _local_impl->FindObject((char*)anObjectName.c_str());
+    if(aSO_impl.IsNull()) return _PTR(SObject)(aSO);
+    Handle(SALOMEDSImpl_SComponent) aSCO_impl = Handle(SALOMEDSImpl_SComponent)::DownCast(aSO_impl);
+    if(!aSCO_impl.IsNull()) return _PTR(SObject)(new SALOMEDS_SComponent(aSCO_impl));
+    aSO = new SALOMEDS_SObject(aSO_impl);
+  }
+  else { 
+    SALOMEDS::SObject_var aSO_impl = _corba_impl->FindObject((char*)anObjectName.c_str());
+    if(CORBA::is_nil(aSO_impl)) return _PTR(SObject)(aSO);
+    SALOMEDS::SComponent_var aSCO_impl = SALOMEDS::SComponent::_narrow(aSO_impl);
+    if(!CORBA::is_nil(aSCO_impl)) return _PTR(SObject)(new SALOMEDS_SComponent(aSCO_impl));
+    aSO = new SALOMEDS_SObject(aSO_impl);
+  }
+
+  return _PTR(SObject)(aSO);
+}
+std::vector<_PTR(SObject)> SALOMEDS_Study::FindObjectByName(const std::string& anObjectName, 
+                                                                     const std::string& aComponentName)   
+{
+  std::vector<_PTR(SObject)> aVector;
+  int i, aLength = 0;
+  
+  if(_isLocal) {
+    Handle(TColStd_HSequenceOfTransient) aSeq = _local_impl->FindObjectByName((char*)anObjectName.c_str(), (char*)aComponentName.c_str());
+    aLength = aSeq->Length();
+    for(i = 1; i<= aLength; i++) 
+      aVector.push_back(_PTR(SObject)(new SALOMEDS_SObject(Handle(SALOMEDSImpl_SObject)::DownCast(aSeq->Value(i)))));
+  }
+  else {
+    SALOMEDS::Study::ListOfSObject_var aSeq = _corba_impl->FindObjectByName((char*)anObjectName.c_str(), 
+                                                                           (char*)aComponentName.c_str());
+    aLength = aSeq->length();
+    for(i = 0; i< aLength; i++) aVector.push_back(_PTR(SObject)(new SALOMEDS_SObject(aSeq[i])));
+  }
+
+  return aVector;
+}
+_PTR(SObject) SALOMEDS_Study::FindObjectID(const std::string& anObjectID)
+{
+  SALOMEDSClient_SObject* aSO = NULL;
+  if(_isLocal) {
+    Handle(SALOMEDSImpl_SObject) aSO_impl = _local_impl->FindObjectID((char*)anObjectID.c_str());
+    if(aSO_impl.IsNull()) return _PTR(SObject)(aSO);
+    return _PTR(SObject)(new SALOMEDS_SObject(aSO_impl));
+  }
+  else { 
+    SALOMEDS::SObject_var aSO_impl = _corba_impl->FindObjectID((char*)anObjectID.c_str());
+    if(CORBA::is_nil(aSO_impl)) return _PTR(SObject)(aSO);
+    return _PTR(SObject)(new SALOMEDS_SObject(aSO_impl));
+  }
+  return _PTR(SObject)(aSO);
+}
+_PTR(SObject) SALOMEDS_Study::CreateObjectID(const std::string& anObjectID)
+{
+  SALOMEDSClient_SObject* aSO = NULL;
+  if(_isLocal) aSO = new SALOMEDS_SObject(_local_impl->CreateObjectID((char*)anObjectID.c_str()));
+  else aSO = new SALOMEDS_SObject(_corba_impl->CreateObjectID((char*)anObjectID.c_str())); 
+  return _PTR(SObject)(aSO);
+}
+_PTR(SObject) SALOMEDS_Study::FindObjectIOR(const std::string& anObjectIOR)
+{
+  SALOMEDSClient_SObject* aSO = NULL;
+  if(_isLocal) {
+    Handle(SALOMEDSImpl_SObject) aSO_impl = _local_impl->FindObjectIOR((char*)anObjectIOR.c_str());
+    if(aSO_impl.IsNull()) return _PTR(SObject)(aSO);
+    aSO = new SALOMEDS_SObject(aSO_impl);
+  }
+  else { 
+    SALOMEDS::SObject_var aSO_impl = _corba_impl->FindObjectIOR((char*)anObjectIOR.c_str());
+    if(CORBA::is_nil(aSO_impl)) return _PTR(SObject)(aSO);
+    aSO = new SALOMEDS_SObject(aSO_impl);
+  }
+  return _PTR(SObject)(aSO);
+}
+
+_PTR(SObject) SALOMEDS_Study::FindObjectByPath(const std::string& thePath)
+{
+  SALOMEDSClient_SObject* aSO = NULL;
+  if(_isLocal) {
+    Handle(SALOMEDSImpl_SObject) aSO_impl = _local_impl->FindObjectByPath((char*)thePath.c_str());
+    if(aSO_impl.IsNull()) return _PTR(SObject)(aSO);
+    aSO = new SALOMEDS_SObject(aSO_impl);
+  }
+  else {
+    SALOMEDS::SObject_var aSO_impl = _corba_impl->FindObjectByPath((char*)thePath.c_str());
+    if(CORBA::is_nil(aSO_impl)) return _PTR(SObject)(aSO);
+    aSO = new SALOMEDS_SObject(aSO_impl);
+  }
+  return _PTR(SObject)(aSO);
+}
+
+std::string SALOMEDS_Study::GetObjectPath(const _PTR(SObject)& theSO)
+{
+  SALOMEDS_SObject* aSO = dynamic_cast<SALOMEDS_SObject*>(theSO.get());
+  std::string aPath;
+  if(_isLocal) aPath = _local_impl->GetObjectPath(aSO->GetLocalImpl()).ToCString();
+  else aPath = _corba_impl->GetObjectPath(aSO->GetCORBAImpl());
+  return aPath;
+}
+
+void SALOMEDS_Study::SetContext(const std::string& thePath)
+{
+  if(_isLocal) _local_impl->SetContext((char*)thePath.c_str());
+  else _corba_impl->SetContext((char*)thePath.c_str());
+}
+
+std::string SALOMEDS_Study::GetContext()  
+{
+  std::string aPath;
+  if(_isLocal) aPath = _local_impl->GetContext().ToCString();
+  else aPath = _corba_impl->GetContext();
+  return aPath;
+}
+
+std::vector<std::string> SALOMEDS_Study::GetObjectNames(const std::string& theContext)
+{
+  std::vector<std::string> aVector;
+  int aLength, i;
+  if(_isLocal) {
+    Handle(TColStd_HSequenceOfAsciiString) aSeq = _local_impl->GetObjectNames((char*)theContext.c_str());
+    aLength = aSeq->Length();
+    for(i = 1; i<=aLength; i++) aVector.push_back(aSeq->Value(i).ToCString());
+  }
+  else {
+    SALOMEDS::ListOfStrings_var aSeq = _corba_impl->GetObjectNames((char*)theContext.c_str());
+    aLength = aSeq->length();
+    for(i = 0; i<aLength; i++) aVector.push_back(std::string((std::string)aSeq[i].in()));
+  }
+  return aVector;
+}
+std::vector<std::string> SALOMEDS_Study::GetDirectoryNames(const std::string& theContext)
+{
+  std::vector<std::string> aVector;
+  int aLength, i;
+  if(_isLocal) {
+    Handle(TColStd_HSequenceOfAsciiString) aSeq = _local_impl->GetDirectoryNames((char*)theContext.c_str());
+    aLength = aSeq->Length();
+    for(i = 1; i<=aLength; i++) aVector.push_back(aSeq->Value(i).ToCString());
+  }
+  else {
+    SALOMEDS::ListOfStrings_var aSeq = _corba_impl->GetDirectoryNames((char*)theContext.c_str());
+    aLength = aSeq->length();
+    for(i = 0; i<aLength; i++) aVector.push_back((char*)aSeq[i].in());
+  }
+  return aVector;
+}
+std::vector<std::string> SALOMEDS_Study::GetFileNames(const std::string& theContext)
+{
+  std::vector<std::string> aVector;
+  int aLength, i;
+  if(_isLocal) {
+    Handle(TColStd_HSequenceOfAsciiString) aSeq = _local_impl->GetFileNames((char*)theContext.c_str());
+    aLength = aSeq->Length();
+    for(i = 1; i<=aLength; i++) aVector.push_back(aSeq->Value(i).ToCString());
+  }
+  else {
+    SALOMEDS::ListOfStrings_var aSeq = _corba_impl->GetFileNames((char*)theContext.c_str());
+    aLength = aSeq->length();
+
+    for(i = 0; i<aLength; i++) aVector.push_back((char*)aSeq[i].in());
+  }
+  return aVector;
+}
+std::vector<std::string> SALOMEDS_Study::GetComponentNames(const std::string& theContext)
+{
+  std::vector<std::string> aVector;
+  int aLength, i;
+  if(_isLocal) {
+    Handle(TColStd_HSequenceOfAsciiString) aSeq = _local_impl->GetComponentNames((char*)theContext.c_str());
+    aLength = aSeq->Length();
+    for(i = 1; i<=aLength; i++) aVector.push_back(aSeq->Value(i).ToCString());
+  }
+  else {
+    SALOMEDS::ListOfStrings_var aSeq = _corba_impl->GetComponentNames((char*)theContext.c_str());
+    aLength = aSeq->length();
+    for(i = 0; i<aLength; i++) aVector.push_back((char*)aSeq[i].in());
+  }
+  return aVector;
+}
+
+_PTR(ChildIterator) SALOMEDS_Study::NewChildIterator(const _PTR(SObject)& theSO)
+{
+  SALOMEDS_SObject* aSO = dynamic_cast<SALOMEDS_SObject*>(theSO.get());
+  SALOMEDSClient_ChildIterator* aCI = NULL; 
+  if(_isLocal) {
+    Handle(SALOMEDSImpl_ChildIterator) aCIimpl = _local_impl->NewChildIterator(aSO->GetLocalImpl());
+    aCI = new SALOMEDS_ChildIterator(aCIimpl);
+  }
+  else {
+    SALOMEDS::ChildIterator_var aCIimpl = _corba_impl->NewChildIterator(aSO->GetCORBAImpl());
+    aCI = new SALOMEDS_ChildIterator(aCIimpl);
+  }
+
+  return _PTR(ChildIterator)(aCI);
+}
+
+_PTR(SComponentIterator) SALOMEDS_Study::NewComponentIterator()
+{
+  SALOMEDSClient_SComponentIterator* aCI = NULL; 
+  if(_isLocal) {
+    SALOMEDSImpl_SComponentIterator aCIimpl = _local_impl->NewComponentIterator();
+    aCI = new SALOMEDS_SComponentIterator(aCIimpl);
+  }
+  else {
+    SALOMEDS::SComponentIterator_var aCIimpl = _corba_impl->NewComponentIterator();
+    aCI = new SALOMEDS_SComponentIterator(aCIimpl);
+  }
+
+  return _PTR(SComponentIterator)(aCI);
+}
+_PTR(StudyBuilder) SALOMEDS_Study::NewBuilder()
+{
+  SALOMEDSClient_StudyBuilder* aSB = NULL; 
+  if(_isLocal) {
+    Handle(SALOMEDSImpl_StudyBuilder) aSBimpl = _local_impl->NewBuilder();
+    aSB = new SALOMEDS_StudyBuilder(aSBimpl);
+  }
+  else {
+    SALOMEDS::StudyBuilder_var aSBimpl = _corba_impl->NewBuilder();
+    aSB = new SALOMEDS_StudyBuilder(aSBimpl);
+  }
+
+  return _PTR(StudyBuilder)(aSB);
+}
+
+std::string SALOMEDS_Study::Name()
+{
+  std::string aName;
+  if(_isLocal) aName = _local_impl->Name().ToCString();
+  else aName = _corba_impl->Name();
+  return aName;
+}
+void SALOMEDS_Study::Name(const std::string& theName)
+{
+  if(_isLocal) _local_impl->Name((char*)theName.c_str());
+  else _corba_impl->Name((char*)theName.c_str());
+}
+
+bool SALOMEDS_Study::IsSaved()
+{
+  bool isSaved;
+  if(_isLocal) isSaved = _local_impl->IsSaved();
+  else isSaved = _corba_impl->IsSaved();
+  return isSaved;
+}
+
+void SALOMEDS_Study::IsSaved(bool save)
+{
+  if(_isLocal) _local_impl->IsSaved(save);
+  else _corba_impl->IsSaved(save);
+}
+
+bool SALOMEDS_Study::IsModified()
+{
+  bool isModified;
+  if(_isLocal) isModified = _local_impl->IsModified();
+  else isModified = _corba_impl->IsModified();
+  return isModified;
+}
+std::string SALOMEDS_Study::URL()
+{
+  std::string aURL;
+  if(_isLocal) aURL = _local_impl->URL().ToCString();
+  else aURL = _corba_impl->URL();
+  return aURL;
+}
+
+void SALOMEDS_Study::URL(const std::string& url)
+{
+  if(_isLocal) _local_impl->URL((char*)url.c_str());
+  else _corba_impl->URL((char*)url.c_str());
+}
+
+int SALOMEDS_Study::StudyId()
+{
+  int anID;
+  if(_isLocal) anID = _local_impl->StudyId();
+  else anID = _corba_impl->StudyId();
+  return anID;
+}
+void SALOMEDS_Study::StudyId(int id) 
+{
+  if(_isLocal) _local_impl->StudyId(id);
+  else _corba_impl->StudyId(id);  
+}
+
+std::vector<_PTR(SObject)> SALOMEDS_Study::FindDependances(const _PTR(SObject)& theSO)
+{
+  std::vector<_PTR(SObject)> aVector;
+  SALOMEDS_SObject* aSO = dynamic_cast<SALOMEDS_SObject*>(theSO.get());
+  int aLength, i;
+  if(_isLocal) {
+    Handle(TColStd_HSequenceOfTransient) aSeq = _local_impl->FindDependances(aSO->GetLocalImpl());
+    if ( !aSeq.IsNull() )
+    {
+      aLength = aSeq->Length();
+      for(i=1; i<=aLength; i++) 
+        aVector.push_back(_PTR(SObject)(
+          new SALOMEDS_SObject(Handle(SALOMEDSImpl_SObject)::DownCast(aSeq->Value(i)))));
+    }
+  }
+  else {
+    SALOMEDS::Study::ListOfSObject_var aSeq = _corba_impl->FindDependances(aSO->GetCORBAImpl());
+    aLength = aSeq->length();
+    for(i=0; i<aLength; i++) aVector.push_back(_PTR(SObject)(new SALOMEDS_SObject(aSeq[i])));
+  }
+  return aVector;
+}
+_PTR(AttributeStudyProperties) SALOMEDS_Study::GetProperties()
+{
+  SALOMEDSClient_AttributeStudyProperties* aProp;
+  if(_isLocal) aProp = new SALOMEDS_AttributeStudyProperties(_local_impl->GetProperties());
+  else aProp = new SALOMEDS_AttributeStudyProperties(_corba_impl->GetProperties());
+  return _PTR(AttributeStudyProperties)(aProp);
+}
+std::string SALOMEDS_Study::GetLastModificationDate() 
+{
+  std::string aDate;
+  if(_isLocal) aDate = _local_impl->GetLastModificationDate().ToCString();
+  else aDate = _corba_impl->GetLastModificationDate();
+  return aDate;
+}
+
+std::vector<std::string> SALOMEDS_Study::GetModificationsDate()
+{
+  std::vector<std::string> aVector;
+  int aLength, i;
+  if(_isLocal) {
+    Handle(TColStd_HSequenceOfAsciiString) aSeq = _local_impl->GetModificationsDate();
+    aLength = aSeq->Length();
+    for(i=1; i<=aLength; i++) aVector.push_back(aSeq->Value(i).ToCString());
+  }
+  else {
+    SALOMEDS::ListOfDates_var aSeq = _corba_impl->GetModificationsDate();
+    aLength = aSeq->length();
+    for(i=0; i<aLength; i++) aVector.push_back((char*)aSeq[i].in());
+  }
+  return aVector;
+}
+
+_PTR(UseCaseBuilder) SALOMEDS_Study::GetUseCaseBuilder()
+{
+  SALOMEDSClient_UseCaseBuilder* aUB = NULL;
+  if(_isLocal) {
+    Handle(SALOMEDSImpl_UseCaseBuilder) aUBimpl = _local_impl->GetUseCaseBuilder();
+    aUB = new SALOMEDS_UseCaseBuilder(aUBimpl);
+  }
+  else {
+    SALOMEDS::UseCaseBuilder_var aUBimpl = _corba_impl->GetUseCaseBuilder();
+    aUB = new SALOMEDS_UseCaseBuilder(aUBimpl);
+  }
+
+  return _PTR(UseCaseBuilder)(aUB);
+}
+
+void SALOMEDS_Study::Close()
+{
+  if(_isLocal) _local_impl->Close();
+  else _corba_impl->Close();
+}
+
+void SALOMEDS_Study::EnableUseCaseAutoFilling(bool isEnabled)
+{
+  if(_isLocal) _local_impl->EnableUseCaseAutoFilling(isEnabled);
+  else _corba_impl->EnableUseCaseAutoFilling(isEnabled);
+}
+
+bool SALOMEDS_Study::DumpStudy(const std::string& thePath, const std::string& theBaseName, bool isPublished)
+{
+  bool ret;
+  if(_isLocal) {
+    SALOMEDS_DriverFactory_i* aFactory = new SALOMEDS_DriverFactory_i(_orb);
+    ret = _local_impl->DumpStudy((char*)thePath.c_str(), (char*)theBaseName.c_str(), isPublished, aFactory);
+    delete aFactory;
+  }
+  else ret = _corba_impl->DumpStudy((char*)thePath.c_str(), (char*)theBaseName.c_str(), isPublished);
+  return ret;
+}     
+
+std::string SALOMEDS_Study::ConvertObjectToIOR(CORBA::Object_ptr theObject) 
+{
+  return _orb->object_to_string(theObject); 
+}
+
+CORBA::Object_ptr SALOMEDS_Study::ConvertIORToObject(const std::string& theIOR) 
+{ 
+  return _orb->string_to_object(theIOR.c_str()); 
+} 
+
+void SALOMEDS_Study::init_orb()
+{
+  ORB_INIT &init = *SINGLETON_<ORB_INIT>::Instance() ;
+  ASSERT(SINGLETON_<ORB_INIT>::IsAlreadyExisting()); 
+  _orb = init(0 , 0 ) ;     
+}
+
+SALOMEDS::Study_ptr SALOMEDS_Study::GetStudy()
+{
+  if(_isLocal) {
+    if(!CORBA::is_nil(_corba_impl)) return _corba_impl;
+    std::string anIOR = _local_impl->GetTransientReference().ToCString();
+    SALOMEDS::Study_var aStudy;
+    if(!_local_impl->IsError() && anIOR != "") {
+      aStudy = SALOMEDS::Study::_narrow(_orb->string_to_object(anIOR.c_str()));
+    }
+    else {
+      SALOMEDS_Study_i *aStudy_servant = new SALOMEDS_Study_i(_local_impl, _orb);
+      aStudy = aStudy_servant->_this();
+      _local_impl->SetTransientReference(_orb->object_to_string(aStudy));
+    }
+    return aStudy._retn();
+  }
+  else {
+    return _corba_impl;
+  }
+   
+  return SALOMEDS::Study::_nil();
+}
diff --git a/src/SALOMEDS/SALOMEDS_Study.hxx b/src/SALOMEDS/SALOMEDS_Study.hxx
new file mode 100644 (file)
index 0000000..83f1ec4
--- /dev/null
@@ -0,0 +1,81 @@
+//  File   : SALOMEDS_Study.hxx
+//  Author : Sergey RUIN
+//  Module : SALOME
+
+#ifndef __SALOMEDS_STUDY_H__
+#define __SALOMEDS_STUDY_H__
+
+#include <vector>
+#include <string>
+
+#include "SALOMEDSClient.hxx"
+#include "SALOMEDSImpl_Study.hxx"
+
+// IDL headers
+#include <SALOMEconfig.h>
+#include CORBA_SERVER_HEADER(SALOMEDS)
+
+class Standard_EXPORT SALOMEDS_Study: public SALOMEDSClient_Study
+{
+
+private:
+  bool                       _isLocal;
+  Handle(SALOMEDSImpl_Study) _local_impl;
+  SALOMEDS::Study_var        _corba_impl;
+  CORBA::ORB_var             _orb;
+
+public:
+
+  SALOMEDS_Study(const Handle(SALOMEDSImpl_Study)& theStudy);
+  SALOMEDS_Study(SALOMEDS::Study_ptr theStudy);
+  ~SALOMEDS_Study();
+
+  virtual std::string GetPersistentReference();
+  virtual std::string GetTransientReference();
+  virtual bool IsEmpty();
+  virtual _PTR(SComponent) FindComponent (const std::string& aComponentName);
+  virtual _PTR(SComponent) FindComponentID(const std::string& aComponentID);
+  virtual _PTR(SObject) FindObject(const std::string& anObjectName);
+  virtual std::vector<_PTR(SObject)> FindObjectByName( const std::string& anObjectName, const std::string& aComponentName ) ;  
+  virtual _PTR(SObject) FindObjectID(const std::string& anObjectID);
+  virtual _PTR(SObject) CreateObjectID(const std::string& anObjectID);
+  virtual _PTR(SObject) FindObjectIOR(const std::string& anObjectIOR);
+  virtual _PTR(SObject) FindObjectByPath(const std::string& thePath);
+  virtual std::string GetObjectPath(const _PTR(SObject)& theSO);
+  virtual void SetContext(const std::string& thePath);
+  virtual std::string GetContext();  
+  virtual std::vector<std::string> GetObjectNames(const std::string& theContext);
+  virtual std::vector<std::string> GetDirectoryNames(const std::string& theContext);
+  virtual std::vector<std::string> GetFileNames(const std::string& theContext);
+  virtual std::vector<std::string> GetComponentNames(const std::string& theContext);
+  virtual _PTR(ChildIterator) NewChildIterator(const _PTR(SObject)& theSO);
+  virtual _PTR(SComponentIterator) NewComponentIterator();
+  virtual _PTR(StudyBuilder) NewBuilder();
+  virtual std::string Name();
+  virtual void  Name(const std::string& name);
+  virtual bool IsSaved();
+  virtual void  IsSaved(bool save);
+  virtual bool IsModified();
+  virtual std::string URL();
+  virtual void  URL(const std::string& url);
+  virtual int StudyId();
+  virtual void  StudyId(int id);
+  virtual std::vector<_PTR(SObject)> FindDependances(const _PTR(SObject)& theSO);
+  virtual _PTR(AttributeStudyProperties) GetProperties();
+  virtual std::string GetLastModificationDate();
+  virtual std::vector<std::string> GetModificationsDate();
+  virtual _PTR(UseCaseBuilder) GetUseCaseBuilder();
+  virtual void Close();
+  virtual void EnableUseCaseAutoFilling(bool isEnabled);
+  virtual bool DumpStudy(const std::string& thePath, const std::string& theBaseName, bool isPublished); 
+
+  std::string ConvertObjectToIOR(CORBA::Object_ptr theObject);
+  CORBA::Object_ptr ConvertIORToObject(const std::string& theIOR);     
+
+  SALOMEDS::Study_ptr GetStudy();
+
+private:
+  void init_orb();
+
+};
+#endif
diff --git a/src/SALOMEDS/SALOMEDS_StudyBuilder.cxx b/src/SALOMEDS/SALOMEDS_StudyBuilder.cxx
new file mode 100644 (file)
index 0000000..df622bb
--- /dev/null
@@ -0,0 +1,423 @@
+//  File   : SALOMEDS_StudyBuilder.cxx
+//  Author : Sergey RUIN
+//  Module : SALOME
+
+
+
+#include "utilities.h"
+
+#include "SALOMEDS_StudyBuilder.hxx"
+#include "SALOMEDS_SObject.hxx"
+#include "SALOMEDSImpl_SObject.hxx"
+#include "SALOMEDS_SComponent.hxx"
+#include "SALOMEDSImpl_SComponent.hxx"
+#include "SALOMEDS_Driver_i.hxx"
+#include "SALOMEDS_GenericAttribute.hxx"
+#include "SALOMEDSImpl_GenericAttribute.hxx"
+#include <string>
+#include <TCollection_AsciiString.hxx> 
+#include <TDF_Attribute.hxx>
+#include "SALOMEDS_StudyManager.hxx"
+
+#include "Utils_CorbaException.hxx"
+#include "Utils_ORB_INIT.hxx" 
+#include "Utils_SINGLETON.hxx" 
+
+using namespace std; 
+
+SALOMEDS_StudyBuilder::SALOMEDS_StudyBuilder(const Handle(SALOMEDSImpl_StudyBuilder)& theBuilder)
+{
+  _isLocal = true;
+  _local_impl = theBuilder;
+  _corba_impl = SALOMEDS::StudyBuilder::_nil();
+
+  init_orb();
+}
+
+SALOMEDS_StudyBuilder::SALOMEDS_StudyBuilder(SALOMEDS::StudyBuilder_ptr theBuilder)
+{
+  _isLocal = false;
+  _local_impl = NULL;
+  _corba_impl = SALOMEDS::StudyBuilder::_duplicate(theBuilder);
+
+  init_orb();
+}
+
+SALOMEDS_StudyBuilder::~SALOMEDS_StudyBuilder() 
+{
+}
+
+_PTR(SComponent) SALOMEDS_StudyBuilder::NewComponent(const std::string& ComponentDataType)
+{
+  CheckLocked();
+
+  SALOMEDSClient_SComponent* aSCO = NULL;
+  
+  if(_isLocal) {
+    Handle(SALOMEDSImpl_SComponent) aSCO_impl =_local_impl->NewComponent((char*)ComponentDataType.c_str());
+    if(aSCO_impl.IsNull()) return _PTR(SComponent)(aSCO);
+    aSCO = new SALOMEDS_SComponent(aSCO_impl);
+  }
+  else {
+    SALOMEDS::SComponent_var aSCO_impl = _corba_impl->NewComponent((char*)ComponentDataType.c_str());
+    if(CORBA::is_nil(aSCO_impl)) return _PTR(SComponent)(aSCO);
+    aSCO = new SALOMEDS_SComponent(aSCO_impl);
+  }
+  return _PTR(SComponent)(aSCO);
+}
+
+void SALOMEDS_StudyBuilder::DefineComponentInstance (const _PTR(SComponent)& theSCO, 
+                                                    const std::string& ComponentIOR)
+{
+  CheckLocked();
+
+  SALOMEDS_SComponent* aSCO = dynamic_cast<SALOMEDS_SComponent*>(theSCO.get());
+  if(_isLocal) _local_impl->DefineComponentInstance(Handle(SALOMEDSImpl_SComponent)::DownCast(aSCO->GetLocalImpl()),
+                                                    (char*)ComponentIOR.c_str());
+  else {
+    CORBA::Object_var obj = _orb->string_to_object(ComponentIOR.c_str());
+    _corba_impl->DefineComponentInstance(SALOMEDS::SComponent::_narrow(aSCO->GetCORBAImpl()), obj);
+  }
+}
+
+void SALOMEDS_StudyBuilder::RemoveComponent(const _PTR(SComponent)& theSCO)
+{
+  CheckLocked();
+
+  SALOMEDS_SComponent* aSCO = dynamic_cast<SALOMEDS_SComponent*>(theSCO.get());
+  if(_isLocal) _local_impl->RemoveComponent(Handle(SALOMEDSImpl_SComponent)::DownCast(aSCO->GetLocalImpl()));
+  else _corba_impl->RemoveComponent(SALOMEDS::SComponent::_narrow(aSCO->GetCORBAImpl()));
+}
+
+_PTR(SObject) SALOMEDS_StudyBuilder::NewObject(const _PTR(SObject)& theFatherObject)
+{
+  CheckLocked();
+
+  SALOMEDSClient_SObject* aSO = NULL;
+  SALOMEDS_SObject* father = dynamic_cast< SALOMEDS_SObject*>(theFatherObject.get());
+  if(father == NULL) return _PTR(SObject)(aSO);
+  if(_isLocal) {
+    Handle(SALOMEDSImpl_SObject) aSO_impl = _local_impl->NewObject(father->GetLocalImpl());
+    if(aSO_impl.IsNull()) return _PTR(SObject)(aSO);
+    aSO = new SALOMEDS_SObject(aSO_impl);
+  }
+  else {
+    SALOMEDS::SObject_var aSO_impl = _corba_impl->NewObject(father->GetCORBAImpl());
+    if(CORBA::is_nil(aSO_impl)) return _PTR(SObject)(aSO);
+    aSO = new SALOMEDS_SObject(aSO_impl);
+  }
+
+  return _PTR(SObject)(aSO);
+}
+
+_PTR(SObject) SALOMEDS_StudyBuilder::NewObjectToTag(const _PTR(SObject)& theFatherObject, int theTag)
+{  
+  CheckLocked();
+
+  SALOMEDSClient_SObject* aSO = NULL;
+  SALOMEDS_SObject* father = dynamic_cast< SALOMEDS_SObject*>(theFatherObject.get());
+  if(father == NULL) return _PTR(SObject)(aSO);
+  if(_isLocal) {
+    Handle(SALOMEDSImpl_SObject) aSO_impl = _local_impl->NewObjectToTag(father->GetLocalImpl(), theTag);
+    if(aSO_impl.IsNull()) return _PTR(SObject)(aSO);
+    aSO = new SALOMEDS_SObject(aSO_impl);
+  }
+  else {
+    SALOMEDS::SObject_var aSO_impl = _corba_impl->NewObjectToTag(father->GetCORBAImpl(), theTag);
+    if(CORBA::is_nil(aSO_impl)) return _PTR(SObject)(aSO);
+    aSO = new SALOMEDS_SObject(aSO_impl);
+  }
+
+  return _PTR(SObject)(aSO);
+  
+}
+
+void SALOMEDS_StudyBuilder::AddDirectory(const std::string& thePath)
+{
+  CheckLocked();
+
+  if(_isLocal) {
+    _local_impl->AddDirectory((char*)thePath.c_str());
+    if(_local_impl->IsError()) {
+      std::string anErrorCode = _local_impl->GetErrorCode().ToCString();
+      if(anErrorCode == "StudyNameAlreadyUsed") throw SALOMEDS::Study::StudyNameAlreadyUsed(); 
+      if(anErrorCode == "StudyInvalidDirectory") throw SALOMEDS::Study::StudyInvalidDirectory(); 
+      if(anErrorCode == "StudyInvalidComponent") throw SALOMEDS::Study::StudyInvalidComponent();  
+    }
+  }
+  else _corba_impl->AddDirectory((char*)thePath.c_str());
+}
+
+void SALOMEDS_StudyBuilder::LoadWith(const _PTR(SComponent)& theSCO, const std::string& theIOR)
+{
+  SALOMEDS_SComponent* aSCO = dynamic_cast<SALOMEDS_SComponent*>(theSCO.get());
+  CORBA::Object_var obj = _orb->string_to_object(theIOR.c_str());
+  SALOMEDS::Driver_var aDriver = SALOMEDS::Driver::_narrow(obj);
+  
+  if(_isLocal) {
+    SALOMEDS_Driver_i* drv = new SALOMEDS_Driver_i(aDriver, _orb);    
+    Handle(SALOMEDSImpl_SComponent) aSCO_impl = Handle(SALOMEDSImpl_SComponent)::DownCast(aSCO->GetLocalImpl());
+    bool isDone = _local_impl->LoadWith(aSCO_impl, drv);
+    delete drv;
+    if(!isDone && _local_impl->IsError()) 
+      THROW_SALOME_CORBA_EXCEPTION(_local_impl->GetErrorCode().ToCString(),SALOME::BAD_PARAM);
+  }
+  else {
+    _corba_impl->LoadWith(SALOMEDS::SComponent::_narrow(aSCO->GetCORBAImpl()), aDriver);
+  }
+}
+
+void SALOMEDS_StudyBuilder::Load(const _PTR(SObject)& theSCO)
+{
+  SALOMEDS_SComponent* aSCO = dynamic_cast<SALOMEDS_SComponent*>(theSCO.get());
+  if(_isLocal) _local_impl->Load(Handle(SALOMEDSImpl_SComponent)::DownCast(aSCO->GetLocalImpl()));
+  else _corba_impl->Load(SALOMEDS::SComponent::_narrow(aSCO->GetCORBAImpl()));
+}
+
+void SALOMEDS_StudyBuilder::RemoveObject(const _PTR(SObject)& theSO)
+{
+  CheckLocked();
+
+  SALOMEDS_SObject* aSO = dynamic_cast<SALOMEDS_SObject*>(theSO.get());
+  if(_isLocal) _local_impl->RemoveObject(aSO->GetLocalImpl());
+  else _corba_impl->RemoveObject(aSO->GetCORBAImpl());
+}
+
+void SALOMEDS_StudyBuilder::RemoveObjectWithChildren(const _PTR(SObject)& theSO)
+{
+  CheckLocked();
+
+  SALOMEDS_SObject* aSO = dynamic_cast<SALOMEDS_SObject*>(theSO.get());
+  if(_isLocal) _local_impl->RemoveObjectWithChildren(aSO->GetLocalImpl());
+  else _corba_impl->RemoveObjectWithChildren(aSO->GetCORBAImpl());
+}
+_PTR(GenericAttribute) SALOMEDS_StudyBuilder::FindOrCreateAttribute(const _PTR(SObject)& theSO, 
+                                                                   const std::string& aTypeOfAttribute)
+{
+  SALOMEDS_SObject* aSO = dynamic_cast<SALOMEDS_SObject*>(theSO.get());
+  SALOMEDSClient_GenericAttribute* anAttr = NULL;
+  if(_isLocal) {
+    Handle(SALOMEDSImpl_GenericAttribute) aGA;
+    try {
+      aGA=Handle(SALOMEDSImpl_GenericAttribute)::DownCast(_local_impl->FindOrCreateAttribute(aSO->GetLocalImpl(),
+                                                                                             (char*)aTypeOfAttribute.c_str()));
+     }
+    catch (...) {
+      throw SALOMEDS::StudyBuilder::LockProtection();
+    }  
+    anAttr = SALOMEDS_GenericAttribute::CreateAttribute(aGA);
+  }
+  else {
+    SALOMEDS::GenericAttribute_var aGA = _corba_impl->FindOrCreateAttribute(aSO->GetCORBAImpl(), (char*)aTypeOfAttribute.c_str());
+    anAttr = SALOMEDS_GenericAttribute::CreateAttribute(aGA);
+  }
+
+  return _PTR(GenericAttribute)(anAttr);
+}
+
+bool SALOMEDS_StudyBuilder::FindAttribute(const _PTR(SObject)& theSO, 
+                                         _PTR(GenericAttribute)& anAttribute, 
+                                         const std::string& aTypeOfAttribute)
+{
+  bool ret;
+  SALOMEDS_SObject* aSO = dynamic_cast<SALOMEDS_SObject*>(theSO.get());
+  if(_isLocal) {
+    Handle(SALOMEDSImpl_GenericAttribute) aGA;
+    ret = _local_impl->FindAttribute(aSO->GetLocalImpl(), aGA, (char*)aTypeOfAttribute.c_str());
+    if(ret) anAttribute = _PTR(GenericAttribute)(SALOMEDS_GenericAttribute::CreateAttribute(aGA));
+  }
+  else {
+    SALOMEDS::GenericAttribute_var aGA;
+    ret = _corba_impl->FindAttribute(aSO->GetCORBAImpl(), aGA.out(), (char*)aTypeOfAttribute.c_str()); 
+    if(ret) anAttribute = _PTR(GenericAttribute)(SALOMEDS_GenericAttribute::CreateAttribute(aGA));
+  }
+
+  return ret;
+}
+void SALOMEDS_StudyBuilder::RemoveAttribute(const _PTR(SObject)& theSO, const std::string& aTypeOfAttribute)
+{
+  CheckLocked();
+
+  SALOMEDS_SObject* aSO = dynamic_cast<SALOMEDS_SObject*>(theSO.get());
+  if(_isLocal) _local_impl->RemoveAttribute(aSO->GetLocalImpl(), (char*)aTypeOfAttribute.c_str());
+  else _corba_impl->RemoveAttribute(aSO->GetCORBAImpl(), (char*)aTypeOfAttribute.c_str()); 
+}
+
+void SALOMEDS_StudyBuilder::Addreference(const _PTR(SObject)& me, const _PTR(SObject)& thereferencedObject)
+{
+  CheckLocked();
+
+  SALOMEDS_SObject* aSO = dynamic_cast<SALOMEDS_SObject*>(me.get());
+  SALOMEDS_SObject* aRefSO = dynamic_cast<SALOMEDS_SObject*>(thereferencedObject.get());
+  if(_isLocal) _local_impl->Addreference(aSO->GetLocalImpl(), aRefSO->GetLocalImpl());
+  else _corba_impl->Addreference(aSO->GetCORBAImpl(), aRefSO->GetCORBAImpl());
+}
+
+void SALOMEDS_StudyBuilder::RemoveReference(const _PTR(SObject)& me)
+{
+  CheckLocked();
+
+  SALOMEDS_SObject* aSO = dynamic_cast<SALOMEDS_SObject*>(me.get());
+  if(_isLocal) _local_impl->RemoveReference(aSO->GetLocalImpl());
+  else _corba_impl->RemoveReference(aSO->GetCORBAImpl());
+}
+
+void SALOMEDS_StudyBuilder::SetGUID(const _PTR(SObject)& theSO, const std::string& theGUID)
+{
+  CheckLocked();
+
+  SALOMEDS_SObject* aSO = dynamic_cast<SALOMEDS_SObject*>(theSO.get());
+  if(_isLocal) _local_impl->SetGUID(aSO->GetLocalImpl(), (char*)theGUID.c_str());
+  else _corba_impl->SetGUID(aSO->GetCORBAImpl(), (char*)theGUID.c_str());
+}
+bool SALOMEDS_StudyBuilder::IsGUID(const _PTR(SObject)& theSO, const std::string& theGUID)
+{
+  SALOMEDS_SObject* aSO = dynamic_cast<SALOMEDS_SObject*>(theSO.get());
+  bool ret;
+  if(_isLocal) ret = _local_impl->IsGUID(aSO->GetLocalImpl(), (char*)theGUID.c_str());
+  else ret = _corba_impl->IsGUID(aSO->GetCORBAImpl(), (char*)theGUID.c_str());
+
+  return ret;
+}
+
+void SALOMEDS_StudyBuilder::NewCommand()
+{
+  if(_isLocal) _local_impl->NewCommand();
+  else _corba_impl->NewCommand();
+}
+void SALOMEDS_StudyBuilder::CommitCommand()
+{
+  if(_isLocal) {
+    try {
+      _local_impl->CommitCommand();
+    }
+    catch(...) {
+      throw SALOMEDS::StudyBuilder::LockProtection();
+    }
+  }
+  else _corba_impl->CommitCommand();
+}
+
+bool SALOMEDS_StudyBuilder::HasOpenCommand()
+{
+  bool ret;
+  if(_isLocal) ret = _local_impl->HasOpenCommand();
+  else ret = _corba_impl->HasOpenCommand();
+  return ret;
+}
+
+void SALOMEDS_StudyBuilder::AbortCommand()
+{
+  if(_isLocal) _local_impl->AbortCommand();
+  else _corba_impl->AbortCommand();
+}
+
+void SALOMEDS_StudyBuilder::Undo()
+{
+  if(_isLocal) {
+    try {
+      _local_impl->Undo();
+    }
+    catch(...) {
+      throw SALOMEDS::StudyBuilder::LockProtection();
+    }
+  }
+  else _corba_impl->Undo();
+}
+void SALOMEDS_StudyBuilder::Redo()
+{
+  if(_isLocal) {
+    try {
+      _local_impl->Redo();
+    }
+    catch(...) {
+      throw SALOMEDS::StudyBuilder::LockProtection();
+    }
+  }
+  else _corba_impl->Redo(); 
+}
+bool SALOMEDS_StudyBuilder::GetAvailableUndos()
+{
+  bool ret;
+  if(_isLocal) ret = _local_impl->GetAvailableUndos();
+  else ret = _corba_impl->GetAvailableUndos();
+  return ret;
+}
+
+bool SALOMEDS_StudyBuilder::GetAvailableRedos()
+{
+  bool ret;
+  if(_isLocal) ret = _local_impl->GetAvailableRedos();
+  else ret = _corba_impl->GetAvailableRedos();
+  return ret; 
+}
+
+int SALOMEDS_StudyBuilder::UndoLimit()
+{
+  int aLimit;
+  if(_isLocal) aLimit = _local_impl->UndoLimit();
+  else aLimit = _corba_impl->UndoLimit();
+  return aLimit;
+}
+void SALOMEDS_StudyBuilder::UndoLimit(int theLimit)
+{
+  CheckLocked();
+
+  if(_isLocal) _local_impl->UndoLimit(theLimit);
+  else _corba_impl->UndoLimit(theLimit);
+}
+void SALOMEDS_StudyBuilder::CheckLocked()
+{
+  //There is only local part as CORBA part throws the correct exeception
+  if(_isLocal) {
+    try {
+      _local_impl->CheckLocked();
+    }
+    catch(...) {
+      throw SALOMEDS::StudyBuilder::LockProtection();
+    }
+  }
+}
+
+void SALOMEDS_StudyBuilder::SetName(const _PTR(SObject)& theSO, const std::string& theValue)
+{
+  CheckLocked();
+
+  SALOMEDS_SObject* aSO = dynamic_cast<SALOMEDS_SObject*>(theSO.get());
+  if(_isLocal) _local_impl->SetName(aSO->GetLocalImpl(), (char*)theValue.c_str());
+  else _corba_impl->SetName(aSO->GetCORBAImpl(), (char*)theValue.c_str());
+}
+
+void SALOMEDS_StudyBuilder::SetComment(const _PTR(SObject)& theSO, const std::string& theValue)
+{
+  CheckLocked();
+
+  SALOMEDS_SObject* aSO = dynamic_cast<SALOMEDS_SObject*>(theSO.get());
+  if(_isLocal) _local_impl->SetComment(aSO->GetLocalImpl(), (char*)theValue.c_str());
+  else _corba_impl->SetComment(aSO->GetCORBAImpl(), (char*)theValue.c_str());
+}
+
+void SALOMEDS_StudyBuilder::SetIOR(const _PTR(SObject)& theSO, const std::string& theValue)
+{
+  CheckLocked();
+
+  SALOMEDS_SObject* aSO = dynamic_cast<SALOMEDS_SObject*>(theSO.get());
+  if(_isLocal) _local_impl->SetIOR(aSO->GetLocalImpl(), (char*)theValue.c_str());
+  else _corba_impl->SetIOR(aSO->GetCORBAImpl(), (char*)theValue.c_str());
+}
+
+void SALOMEDS_StudyBuilder::init_orb()
+{
+  ORB_INIT &init = *SINGLETON_<ORB_INIT>::Instance() ;
+  ASSERT(SINGLETON_<ORB_INIT>::IsAlreadyExisting()); 
+  _orb = init(0 , 0 ) ;     
+}
diff --git a/src/SALOMEDS/SALOMEDS_StudyBuilder.hxx b/src/SALOMEDS/SALOMEDS_StudyBuilder.hxx
new file mode 100644 (file)
index 0000000..f135613
--- /dev/null
@@ -0,0 +1,68 @@
+//  File   : SALOMEDS_StudyBuilder.hxx
+//  Author : Sergey RUIN
+//  Module : SALOME
+
+#ifndef __SALOMEDS_STUDYBUILDER_H__
+#define __SALOMEDS_STUDYBUILDER_H__
+
+#include "SALOMEDSClient.hxx"
+#include "SALOMEDSImpl_StudyBuilder.hxx"
+
+// IDL headers
+#include <SALOMEconfig.h>
+#include CORBA_SERVER_HEADER(SALOMEDS)
+
+
+class SALOMEDS_StudyBuilder: public SALOMEDSClient_StudyBuilder
+{
+private:
+  bool _isLocal;
+  Handle(SALOMEDSImpl_StudyBuilder) _local_impl;
+  SALOMEDS::StudyBuilder_var        _corba_impl;
+  CORBA::ORB_var                    _orb;
+
+public:
+
+  SALOMEDS_StudyBuilder(const Handle(SALOMEDSImpl_StudyBuilder)& theBuilder);
+  SALOMEDS_StudyBuilder(SALOMEDS::StudyBuilder_ptr theBuilder);
+  ~SALOMEDS_StudyBuilder();
+
+  virtual _PTR(SComponent) NewComponent(const std::string& ComponentDataType);
+  virtual void DefineComponentInstance (const _PTR(SComponent)&, const std::string& ComponentIOR);
+  virtual void RemoveComponent(const _PTR(SComponent)& theSCO);
+  virtual _PTR(SObject) NewObject(const _PTR(SObject)& theFatherObject);
+  virtual _PTR(SObject) NewObjectToTag(const _PTR(SObject)& theFatherObject, int theTag);
+  virtual void AddDirectory(const std::string& thePath);
+  virtual void LoadWith(const _PTR(SComponent)& theSCO, const std::string& theIOR);
+  virtual void Load(const _PTR(SObject)& theSCO);
+  virtual void RemoveObject(const _PTR(SObject)& theSO);
+  virtual void RemoveObjectWithChildren(const _PTR(SObject)& theSO);
+  virtual _PTR(GenericAttribute) FindOrCreateAttribute(const _PTR(SObject)& theSO, 
+                                                      const std::string& aTypeOfAttribute);
+  virtual bool FindAttribute(const _PTR(SObject)& theSO, 
+                             _PTR(GenericAttribute)& theAttribute, 
+                            const std::string& aTypeOfAttribute);
+  virtual void RemoveAttribute(const _PTR(SObject)& theSO, const std::string& aTypeOfAttribute);
+  virtual void Addreference(const _PTR(SObject)& me, const _PTR(SObject)& thereferencedObject);
+  virtual void RemoveReference(const _PTR(SObject)& me);
+  virtual void SetGUID(const _PTR(SObject)& theSO, const std::string& theGUID);
+  virtual bool IsGUID(const _PTR(SObject)& theSO, const std::string& theGUID);
+  virtual void NewCommand();
+  virtual void CommitCommand();
+  virtual bool HasOpenCommand();
+  virtual void AbortCommand();
+  virtual void Undo();
+  virtual void Redo();
+  virtual bool GetAvailableUndos();
+  virtual bool GetAvailableRedos();
+  virtual int UndoLimit();
+  virtual void UndoLimit(int theLimit);
+  virtual void SetName(const _PTR(SObject)& theSO, const std::string& theValue);
+  virtual void SetComment(const _PTR(SObject)& theSO, const std::string& theValue);
+  virtual void SetIOR(const _PTR(SObject)& theSO, const std::string& theValue);
+
+private:
+  void CheckLocked();
+  void init_orb();
+};
+#endif
index 42aefe220b73c65b09706de678d7ddaa08d4bfa8..a020990f53e7b05b578c99ef4d6038bd74a44b99 100644 (file)
@@ -1,71 +1,27 @@
-//  SALOME SALOMEDS : data structure of SALOME and sources of Salome data server 
-//
-//  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
-// 
-//  This library is free software; you can redistribute it and/or 
-//  modify it under the terms of the GNU Lesser General Public 
-//  License as published by the Free Software Foundation; either 
-//  version 2.1 of the License. 
-// 
-//  This library is distributed in the hope that it will be useful, 
-//  but WITHOUT ANY WARRANTY; without even the implied warranty of 
-//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
-//  Lesser General Public License for more details. 
-// 
-//  You should have received a copy of the GNU Lesser General Public 
-//  License along with this library; if not, write to the Free Software 
-//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
-// 
-//  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
-//
-//
-//
 //  File   : SALOMEDS_StudyBuilder_i.cxx
-//  Author : Yves FRICAUD
+//  Author : Seregy RUIN
 //  Module : SALOME
-//  $Header$
 
+
+#include "utilities.h"
 #include "SALOMEDS_StudyBuilder_i.hxx"
-#include "SALOMEDS_StudyManager_i.hxx"
 #include "SALOMEDS_Study_i.hxx"
-
 #include "SALOMEDS_SObject_i.hxx"
 #include "SALOMEDS_SComponent_i.hxx"
-#include "SALOMEDS_ChildIterator_i.hxx"
+#include "SALOMEDS_GenericAttribute_i.hxx"
+#include "SALOMEDS_Driver_i.hxx"
+#include "SALOMEDS.hxx"
 
-#include "SALOMEDS_TargetAttribute.hxx"
-#include "SALOMEDS_IORAttribute.hxx"
-#include "SALOMEDS_PersRefAttribute.hxx"
-#include "SALOMEDS_LocalIDAttribute.hxx"
-#include "SALOMEDS_StudyPropertiesAttribute.hxx"
-
-#include "SALOMEDS_Tool.hxx"
+#include "SALOMEDSImpl_Study.hxx"
+#include "SALOMEDSImpl_SObject.hxx"
+#include "SALOMEDSImpl_SComponent.hxx"
 
 #include "Utils_CorbaException.hxx"
 #include "Utils_ExceptHandlers.hxx"
 
-#include <TDF_ChildIterator.hxx>
-#include <TDF_Label.hxx>
-#include <TDataStd_Name.hxx>
-#include <TDataStd_Comment.hxx>
-#include <TDataStd_UAttribute.hxx>
-#include <TDataStd_Real.hxx>
-#include <TDF_Tool.hxx>
-#include <TDF_Reference.hxx>
-#include <TDF_Data.hxx>
-#include <TDataStd_ChildNodeIterator.hxx>
-#include <TDF_ListIteratorOfAttributeList.hxx>
-
-#include <HDFOI.hxx>
+#include <TDF_Attribute.hxx>
 #include <stdlib.h> 
 
-#define USE_CASE_LABEL_TAG            2
-#define DIRECTORYID 16661
-#define FILELOCALID 26662 
-
-#include "utilities.h"
-
 using namespace std;
 
 UNEXPECT_CATCH(SBSalomeException, SALOME::SALOME_Exception);
@@ -76,11 +32,11 @@ UNEXPECT_CATCH(SBLockProtection, SALOMEDS::StudyBuilder::LockProtection);
  *  Purpose  :
  */
 //============================================================================
-SALOMEDS_StudyBuilder_i::SALOMEDS_StudyBuilder_i(SALOMEDS_Study_i* theStudy,
-                                                const Handle(TDocStd_Document)& theDocument):
-  _study(theStudy),
-  _doc(theDocument)
+SALOMEDS_StudyBuilder_i::SALOMEDS_StudyBuilder_i(const Handle(SALOMEDSImpl_StudyBuilder) theImpl, 
+                                                CORBA::ORB_ptr orb) 
 {
+  _orb = CORBA::ORB::_duplicate(orb);
+  _impl = theImpl;
 }
 
 //============================================================================
@@ -89,54 +45,24 @@ SALOMEDS_StudyBuilder_i::SALOMEDS_StudyBuilder_i(SALOMEDS_Study_i* theStudy,
  */
 //============================================================================
 SALOMEDS_StudyBuilder_i::~SALOMEDS_StudyBuilder_i()
-{
-}
-
-
-//============================================================================
-CORBA::ORB_var SALOMEDS_StudyBuilder_i::GetORB() const
-{
-  return _study->GetORB();
-}
-
-
-//============================================================================
-PortableServer::POA_var SALOMEDS_StudyBuilder_i::GetPOA() const
-{
-  return _study->GetPOA();
-}
-
+{}
 
 //============================================================================
 /*! Function : NewComponent
  *  Purpose  : Create a new component (Scomponent)
  */
 //============================================================================
-SALOMEDS::SComponent_ptr 
-SALOMEDS_StudyBuilder_i::NewComponent(const char* DataType)
+SALOMEDS::SComponent_ptr SALOMEDS_StudyBuilder_i::NewComponent(const char* DataType)
 {
+  SALOMEDS::Locker lock;
   CheckLocked();
-  //Always create component under main label.
-  TDF_Label L  = _doc->Main();
-
-  // YFR DEBUG : 13/02/2002 TDF_Label NL = L.NewChild();
-  
-  Standard_Integer imax = 0;
-  for (TDF_ChildIterator it(L); it.More(); it.Next()) {
-    if (it.Value().Tag() > imax)
-      imax = it.Value().Tag();
-  }
-  imax++;
-  TDF_Label NL = L.FindChild(imax);
+  //char* aDataType = CORBA::string_dup(DataType);
+  Handle(SALOMEDSImpl_SComponent) aSCO = _impl->NewComponent(TCollection_AsciiString((char*)DataType));
+  //CORBA::free_string(aDataType);
+  if(aSCO.IsNull()) return SALOMEDS::SComponent::_nil();
 
-   TDataStd_Comment::Set(NL,Standard_CString(DataType));
-   //  TDataStd_Comment::Set(NL,Standard_CString(CORBA::string_dup(DataType)));
-
-  SALOMEDS::SComponent_var aSComponent = SALOMEDS_SComponent_i::NewRef(_study,NL); 
-
-  OnAddSObject(aSComponent);
-
-  return aSComponent._retn();
+  SALOMEDS::SComponent_var sco = SALOMEDS_SComponent_i::New (aSCO,_orb);
+  return sco._retn();
 }
 
 //============================================================================
@@ -144,22 +70,16 @@ SALOMEDS_StudyBuilder_i::NewComponent(const char* DataType)
  *  Purpose  : Add IOR attribute of a Scomponent
  */
 //============================================================================
-void SALOMEDS_StudyBuilder_i::DefineComponentInstance(SALOMEDS::SComponent_ptr theComponent,
-                                                     CORBA::Object_ptr theObject)
+void SALOMEDS_StudyBuilder_i::DefineComponentInstance(SALOMEDS::SComponent_ptr aComponent,
+                                                     CORBA::Object_ptr IOR)
 {
+  SALOMEDS::Locker lock;
   CheckLocked();
+  Handle(SALOMEDSImpl_SComponent) aSCO;
+  aSCO = Handle(SALOMEDSImpl_Study)::DownCast(_impl->GetOwner())->GetSComponent((char*)aComponent->GetID());
 
-  if(CORBA::is_nil(theComponent) || CORBA::is_nil(theObject))
-    return;
-
-  //Find label
-  TDF_Label Lab;
-  CORBA::String_var aString = theComponent->GetID();
-  TDF_Tool::Label(_doc->GetData(),const_cast<char*>(aString.in()),Lab);
-
-  //add theObject definition 
-  aString = GetORB()->object_to_string(theObject);
-  SALOMEDS_IORAttribute::Set(Lab,const_cast<char*>(aString.in()),_study);
+  CORBA::String_var iorstr = _orb->object_to_string(IOR);
+  _impl->DefineComponentInstance(aSCO, (char*)iorstr);
 }
 
 //============================================================================
@@ -167,11 +87,14 @@ void SALOMEDS_StudyBuilder_i::DefineComponentInstance(SALOMEDS::SComponent_ptr t
  *  Purpose  : Delete a Scomponent
  */
 //============================================================================
-void 
-SALOMEDS_StudyBuilder_i::RemoveComponent(SALOMEDS::SComponent_ptr theComponent)
+void SALOMEDS_StudyBuilder_i::RemoveComponent(SALOMEDS::SComponent_ptr aComponent)
 {
+  SALOMEDS::Locker lock;
   CheckLocked();
-  RemoveObject(theComponent);
+  ASSERT(!CORBA::is_nil(aComponent));
+  Handle(SALOMEDSImpl_SComponent) aSCO;
+  aSCO = Handle(SALOMEDSImpl_Study)::DownCast(_impl->GetOwner())->GetSComponent((char*)aComponent->GetID());
+  _impl->RemoveComponent(aSCO);
 }
 
 //============================================================================
@@ -179,36 +102,18 @@ SALOMEDS_StudyBuilder_i::RemoveComponent(SALOMEDS::SComponent_ptr theComponent)
  *  Purpose  : Create a new SObject
  */
 //============================================================================
-SALOMEDS::SObject_ptr 
-SALOMEDS_StudyBuilder_i::NewObject(SALOMEDS::SObject_ptr theFatherObject)
+SALOMEDS::SObject_ptr SALOMEDS_StudyBuilder_i::NewObject(SALOMEDS::SObject_ptr theFatherObject)
 {
+  SALOMEDS::Locker lock;
   CheckLocked();
-
-  if(CORBA::is_nil(theFatherObject)) 
-    return SALOMEDS::SObject::_nil();
-
-  //Find label of father
-  TDF_Label aLabel;
-  TCollection_AsciiString anEntry;
-  
-  CORBA::String_var aFatherID = theFatherObject->GetID();
-  TDF_Tool::Label(_doc->GetData(),aFatherID,aLabel);
-
-  //Create a new label
-  //YFR DEBUG : 13/02/2002  TDF_Label NewLab = Lab.NewChild();
-  Standard_Integer imax = 0;
-  for (TDF_ChildIterator it(aLabel); it.More(); it.Next()) {
-    if (it.Value().Tag() > imax)
-      imax = it.Value().Tag();
-  }
-  imax++;
-  TDF_Label aNewLabel = aLabel.FindChild(imax);
   
-  SALOMEDS::SObject_var aSObject = SALOMEDS_SObject_i::NewRef(_study,aNewLabel); 
+  Handle(SALOMEDSImpl_SObject) aFO, aSO;
+  aFO = Handle(SALOMEDSImpl_Study)::DownCast(_impl->GetOwner())->GetSObject((char*)theFatherObject->GetID());
+  aSO = _impl->NewObject(aFO);
+  if(aSO.IsNull()) return SALOMEDS::SObject::_nil();
+  SALOMEDS::SObject_var so = SALOMEDS_SObject_i::New (aSO,_orb);
 
-  OnAddSObject(aSObject);
-
-  return aSObject._retn();
+  return so._retn();
 }
 
 //============================================================================
@@ -216,28 +121,17 @@ SALOMEDS_StudyBuilder_i::NewObject(SALOMEDS::SObject_ptr theFatherObject)
  *  Purpose  :
  */
 //============================================================================
-SALOMEDS::SObject_ptr 
-SALOMEDS_StudyBuilder_i::NewObjectToTag(SALOMEDS::SObject_ptr theFatherObject,
-                                       CORBA::Long theTag)
+SALOMEDS::SObject_ptr SALOMEDS_StudyBuilder_i::NewObjectToTag(SALOMEDS::SObject_ptr theFatherObject,
+                                                             CORBA::Long atag)
 {
+  SALOMEDS::Locker lock;
   CheckLocked();
-
-  if(CORBA::is_nil(theFatherObject)) 
-    return SALOMEDS::SObject::_nil();
-
-  //Find label of father
-  TDF_Label Lab;
-  CORBA::String_var aFatherID = theFatherObject->GetID();
-  TDF_Tool::Label(_doc->GetData(),aFatherID,Lab);
-
-  //Create or find label
-  TDF_Label aNewLab = Lab.FindChild(theTag,1);
-
-  SALOMEDS::SObject_var aSObject = SALOMEDS_SObject_i::NewRef(_study,aNewLab); 
-
-  OnAddSObject(aSObject);
-
-  return aSObject._retn();
+  Handle(SALOMEDSImpl_SObject) aFO, aSO;
+  aFO = Handle(SALOMEDSImpl_Study)::DownCast(_impl->GetOwner())->GetSObject((char*)theFatherObject->GetID());
+  aSO = _impl->NewObjectToTag(aFO, atag);
+  if(aSO.IsNull()) return SALOMEDS::SObject::_nil();
+  SALOMEDS::SObject_var so = SALOMEDS_SObject_i::New (aSO, _orb);
+  return so._retn();
 }
 
 //============================================================================
@@ -245,28 +139,13 @@ SALOMEDS_StudyBuilder_i::NewObjectToTag(SALOMEDS::SObject_ptr theFatherObject,
  *  Purpose  :
  */
 //============================================================================
-void SALOMEDS_StudyBuilder_i::RemoveObject(SALOMEDS::SObject_ptr theSObject)
-{
-  RemoveSObject(theSObject);
-}
-
-SALOMEDS_SObject_i*
-SALOMEDS_StudyBuilder_i::RemoveSObject(SALOMEDS::SObject_ptr theSObject,
-                                      bool theIsForgetAllAttributes)
+void SALOMEDS_StudyBuilder_i::RemoveObject(SALOMEDS::SObject_ptr anObject)
 {
+  SALOMEDS::Locker lock;
   CheckLocked();
-
-  if(SALOMEDS_SObject_i* aSObject = _study->DownCast(theSObject)){
-    OnRemoveSObject(theSObject);
-    aSObject->OnRemove();
-    if(theIsForgetAllAttributes){
-      TDF_Label aLabel = aSObject->GetLabel();
-      aLabel.ForgetAllAttributes();
-    }
-    return aSObject;
-  }
-
-  return NULL;
+  Handle(SALOMEDSImpl_SObject) aSO;
+  aSO = Handle(SALOMEDSImpl_Study)::DownCast(_impl->GetOwner())->GetSObject((char*)anObject->GetID());
+  _impl->RemoveObject(aSO);
 }
 
 //============================================================================
@@ -274,53 +153,13 @@ SALOMEDS_StudyBuilder_i::RemoveSObject(SALOMEDS::SObject_ptr theSObject,
  *  Purpose  :
  */
 //============================================================================
-void SALOMEDS_StudyBuilder_i::RemoveObjectWithChildren(SALOMEDS::SObject_ptr theSObject)
+void SALOMEDS_StudyBuilder_i::RemoveObjectWithChildren(SALOMEDS::SObject_ptr anObject)
 {
-  if(SALOMEDS_SObject_i* aSObject = RemoveSObject(theSObject,false)){
-    SALOMEDS_ChildIterator_i aChildIter(_study,aSObject->GetLabel(),true);
-    for(; aChildIter.More(); aChildIter.Next()){
-      if(SALOMEDS_SObject_i* aSObj = aChildIter.GetValue())
-       aSObj->OnRemove();
-    }
-    TDF_Label aLabel = aSObject->GetLabel();
-    aLabel.ForgetAllAttributes(Standard_True);
-  }
-}
-
-//============================================================================
-/*! Function : Translate_persistentID_to_IOR
- *  Purpose  :
- */
-//============================================================================
-static void  Translate_persistentID_to_IOR(TDF_Label theLabel,
-                                          SALOMEDS::Driver_ptr theDriver,
-                                          SALOMEDS_Study_i* theStudy,
-                                          CORBA::Boolean theIsMultiFile,
-                                          CORBA::Boolean theIsASCII)
-{
-  if(CORBA::is_nil(theDriver))
-    return;
-
-  for (TDF_ChildIterator  aChildIter (theLabel); aChildIter.More(); aChildIter.Next()){
-    TDF_Label aCurrentLabel = aChildIter.Value();
-    Handle(TDF_Attribute) anAttr;
-    if(aCurrentLabel.FindAttribute(SALOMEDS_PersRefAttribute::GetID(),anAttr)){
-      Handle(SALOMEDS_LocalIDAttribute) anID;
-      if (aCurrentLabel.FindAttribute(SALOMEDS_LocalIDAttribute::GetID(),anID)) 
-       if (anID->Get() == FILELOCALID) continue;        //SRN: This attribute store a file name, skip it 
-
-      TCollection_ExtendedString res = Handle(TDataStd_Comment)::DownCast(anAttr)->Get();
-      TCollection_AsciiString ch(res);
-      
-      SALOMEDS::SObject_var aSObject = SALOMEDS_SObject_i::NewRef(theStudy,aCurrentLabel); 
-
-      CORBA::String_var anIOR = 
-       theDriver->LocalPersistentIDToIOR(aSObject,ch.ToCString(),theIsMultiFile,theIsASCII);
-      SALOMEDS_IORAttribute::Set(aCurrentLabel,const_cast<char*>(anIOR.in()),theStudy); 
-    }
-
-    Translate_persistentID_to_IOR(aCurrentLabel,theDriver,theStudy,theIsMultiFile,theIsASCII);
-  }
+  SALOMEDS::Locker lock;
+  CheckLocked();
+  Handle(SALOMEDSImpl_SObject) aSO;
+  aSO = Handle(SALOMEDSImpl_Study)::DownCast(_impl->GetOwner())->GetSObject((char*)anObject->GetID());
+  _impl->RemoveObjectWithChildren(aSO);
 }
 
 //============================================================================
@@ -328,153 +167,21 @@ static void  Translate_persistentID_to_IOR(TDF_Label theLabel,
  *  Purpose  : 
  */
 //============================================================================
-
-//============================================================================
-void SALOMEDS_StudyBuilder_i::LoadWith(SALOMEDS::SComponent_ptr theSComponent, 
-                                      SALOMEDS::Driver_ptr theDriver) 
-  throw(SALOME::SALOME_Exception)
+void SALOMEDS_StudyBuilder_i::LoadWith(SALOMEDS::SComponent_ptr anSCO, 
+                                      SALOMEDS::Driver_ptr aDriver) throw(SALOME::SALOME_Exception)
 {
+  SALOMEDS::Locker lock;
   Unexpect aCatch(SBSalomeException);
 
-  if(CORBA::is_nil(theSComponent))
-    return;
+  Handle(SALOMEDSImpl_SComponent) aSCO;
+  aSCO = Handle(SALOMEDSImpl_Study)::DownCast(_impl->GetOwner())->GetSComponent((char*)anSCO->GetID());
+  SALOMEDS_Driver_i* driver = new SALOMEDS_Driver_i(aDriver, _orb);
+   bool isDone = _impl->LoadWith(aSCO, driver); 
+  delete driver;
 
-  TDF_Label Lab;
-  CORBA::String_var aString = theSComponent->GetID();
-  TDF_Tool::Label(_doc->GetData(),const_cast<char*>(aString.in()),Lab);
-  
-  //Find the current Url of the study  
-  Handle(TDF_Attribute) Att;
-  if (_doc->Main().FindAttribute(SALOMEDS_PersRefAttribute::GetID(),Att)) {
-    if(CORBA::is_nil(theDriver))
-      return;
-
-    int aLocked = _study->GetProperties()->IsLocked();
-    if(aLocked) 
-      _study->GetProperties()->SetLocked(false);
-    
-    // mpv 06.03.2003: SAL1927 - if component data if already loaded, it is not necessary to do it again
-    if (Lab.FindAttribute(SALOMEDS_IORAttribute::GetID(), Att)) {
-      if(aLocked) 
-       _study->GetProperties()->SetLocked(true);
-      return;
-    }
-    DefineComponentInstance (theSComponent,theDriver);
-    
-    TCollection_AsciiString aHDFPath(Handle(TDataStd_Comment)::DownCast(Att)->Get());
-    
-    bool isASCII = false;
-    std::ostringstream anURLStream;
-    if(HDFascii::isASCII(aHDFPath.ToCString())){
-      isASCII = true;
-      auto_ptr<char> aResultPath(HDFascii::ConvertFromASCIIToHDF(aHDFPath.ToCString()));
-      anURLStream<<aResultPath.get()<<"hdf_from_ascii.hdf";
-    } else {
-      anURLStream<<aHDFPath.ToCString();
-    }
-    std::string aHDFUrl = anURLStream.str();
-
-    //Open the Study HDF file 
-    auto_ptr<HDFfile> hdf_file(new HDFfile(const_cast<char*>(aHDFUrl.c_str())));
-    
-    char aMultifileState[2];
-    char ASCIIfileState[2];
-    try {
-      CORBA::String_var scoid = theSComponent->GetID();
-      hdf_file->OpenOnDisk(HDF_RDONLY);
-      HDFgroup *hdf_group = new HDFgroup("DATACOMPONENT",hdf_file.get());
-      hdf_group->OpenOnDisk();
-      HDFgroup *hdf_sco_group = new HDFgroup(scoid, hdf_group);
-      hdf_sco_group->OpenOnDisk();
-       
-      SALOMEDS::TMPFile_var aStreamFile;
-      if (hdf_sco_group->ExistInternalObject("FILE_STREAM")) {
-       HDFdataset *hdf_dataset = new HDFdataset("FILE_STREAM", hdf_sco_group);
-       hdf_dataset->OpenOnDisk();
-       int aStreamSize = hdf_dataset->GetSize();
-       unsigned char* aBuffer = new unsigned char[aStreamSize];
-       if(aBuffer == NULL) 
-         throw HDFexception("Unable to open dataset FILE_STREAM");
-       hdf_dataset->ReadFromDisk(aBuffer);
-       aStreamFile = new SALOMEDS::TMPFile(aStreamSize, aStreamSize, aBuffer, 1);
-       hdf_dataset->CloseOnDisk();
-       hdf_dataset = 0;
-      } else 
-       aStreamFile = new SALOMEDS::TMPFile(0);
-      
-      HDFdataset *multifile_hdf_dataset = new HDFdataset("MULTIFILE_STATE", hdf_sco_group);
-      multifile_hdf_dataset->OpenOnDisk();
-      multifile_hdf_dataset->ReadFromDisk(aMultifileState);
-      
-      HDFdataset *ascii_hdf_dataset = new HDFdataset("ASCII_STATE", hdf_sco_group);
-      ascii_hdf_dataset->OpenOnDisk();
-      ascii_hdf_dataset->ReadFromDisk(ASCIIfileState);
-      
-      // set path without file name from URL 
-      std::string aDir(aHDFPath.ToCString());
-      aDir = aDir.substr(0,aDir.rfind('/') + 1);
-      
-      CORBA::Boolean aResult = (ASCIIfileState[0]=='A')?
-       theDriver->LoadASCII(theSComponent, aStreamFile.in(), aDir.c_str(), aMultifileState[0]=='M'):
-         theDriver->Load(theSComponent, aStreamFile.in(), aDir.c_str(), aMultifileState[0]=='M');
-      if(!aResult) {
-       RemoveAttribute( theSComponent, "AttributeIOR" );
-       if (isASCII) {
-         SALOMEDS::ListOfFileNames_var aFilesToRemove = new SALOMEDS::ListOfFileNames;
-         aFilesToRemove->length(1);
-         std::string aDir = SALOMEDS_Tool::GetDirFromPath(aHDFUrl);
-         aFilesToRemove[0] = CORBA::string_dup(&aHDFUrl[strlen(aDir.c_str())]);
-         SALOMEDS_Tool::RemoveTemporaryFiles(aDir,aFilesToRemove,true);
-       }
-       MESSAGE("Can't load component");
-       THROW_SALOME_CORBA_EXCEPTION("Unable to load component data",SALOME::BAD_PARAM);
-      }
-      
-      multifile_hdf_dataset->CloseOnDisk();
-      multifile_hdf_dataset = 0;
-      ascii_hdf_dataset->CloseOnDisk();
-      ascii_hdf_dataset = 0;
-      hdf_sco_group->CloseOnDisk();
-      hdf_sco_group = 0;
-      hdf_group->CloseOnDisk();
-      hdf_group = 0;
-      hdf_file->CloseOnDisk();
-      
-      if (isASCII) {
-       SALOMEDS::ListOfFileNames_var aFilesToRemove = new SALOMEDS::ListOfFileNames;
-       aFilesToRemove->length(1);
-       std::string aDir = SALOMEDS_Tool::GetDirFromPath(aHDFUrl);
-       aFilesToRemove[0] = CORBA::string_dup(&aHDFUrl[strlen(aDir.c_str())]);
-       SALOMEDS_Tool::RemoveTemporaryFiles(aDir,aFilesToRemove,true);
-      }
-    }
-    catch (HDFexception) {
-      INFOS("No persistent file Name");
-      if (isASCII) {
-       SALOMEDS::ListOfFileNames_var aFilesToRemove = new SALOMEDS::ListOfFileNames;
-       aFilesToRemove->length(1);
-       std::string aDir = SALOMEDS_Tool::GetDirFromPath(aHDFUrl);
-       aFilesToRemove[0] = CORBA::string_dup(&aHDFUrl[strlen(aDir.c_str())]);
-       SALOMEDS_Tool::RemoveTemporaryFiles(aDir,aFilesToRemove,true);
-      }
-      if(aLocked)
-       _study->GetProperties()->SetLocked(true);
-      THROW_SALOME_CORBA_EXCEPTION("No persistent file Name found",SALOME::BAD_PARAM);
-    }
-    
-    try {
-      Translate_persistentID_to_IOR(Lab,theDriver,_study,aMultifileState[0]=='M',ASCIIfileState[0] == 'A');
-    } catch (SALOME::SALOME_Exception) {
-      INFOS("Can't translate PersRef to IOR");
-      if (aLocked) 
-       _study->GetProperties()->SetLocked(true);
-      THROW_SALOME_CORBA_EXCEPTION("Unable to convert component persistent data to the transient",SALOME::BAD_PARAM);
-      //        throw HDFexception("Unable to load component data");
-    }
-    if(aLocked)
-      _study->GetProperties()->SetLocked(true);
-  } else
-    MESSAGE("No persistent file Name");
+  if(!isDone && _impl->IsError()) {
+    THROW_SALOME_CORBA_EXCEPTION(_impl->GetErrorCode().ToCString(),SALOME::BAD_PARAM);
+  }
 }
 
 
@@ -494,14 +201,26 @@ void SALOMEDS_StudyBuilder_i::Load(SALOMEDS::SObject_ptr sco)
  *  existing one
  */
 //============================================================================
-SALOMEDS::GenericAttribute_ptr 
-SALOMEDS_StudyBuilder_i::FindOrCreateAttribute(SALOMEDS::SObject_ptr theObject, 
-                                              const char* theTypeOfAttribute)
+SALOMEDS::GenericAttribute_ptr SALOMEDS_StudyBuilder_i::FindOrCreateAttribute(SALOMEDS::SObject_ptr anObject, 
+                                                                             const char* aTypeOfAttribute)
 {
-  if(SALOMEDS_SObject_i* aSObject = _study->DownCast(theObject))
-    return aSObject->FindOrCreateAttribute(theTypeOfAttribute);
+  SALOMEDS::Locker lock;
+  Handle(SALOMEDSImpl_SObject) aSO;
+  char* anID = anObject->GetID();  
+  aSO = Handle(SALOMEDSImpl_Study)::DownCast(_impl->GetOwner())->GetSObject(anID);
+  delete [] anID;
+  Handle(TDF_Attribute) anAttr;
+  try {
+     anAttr = _impl->FindOrCreateAttribute(aSO, TCollection_AsciiString((char*)aTypeOfAttribute));
+  }
+  catch (...) {
+    throw SALOMEDS::StudyBuilder::LockProtection();
+  }
+
+  SALOMEDS::GenericAttribute_var anAttribute;
+  anAttribute = SALOMEDS::GenericAttribute::_duplicate(SALOMEDS_GenericAttribute_i::CreateAttribute(anAttr, _orb));
 
-  return SALOMEDS::GenericAttribute::_nil();
+  return anAttribute._retn();
 }
 
 //============================================================================
@@ -510,14 +229,20 @@ SALOMEDS_StudyBuilder_i::FindOrCreateAttribute(SALOMEDS::SObject_ptr theObject,
  */
 //============================================================================
 
-CORBA::Boolean SALOMEDS_StudyBuilder_i::FindAttribute(SALOMEDS::SObject_ptr theObject, 
-                                                     SALOMEDS::GenericAttribute_out theAttr
-                                                     const char* theTypeOfAttribute)
+CORBA::Boolean SALOMEDS_StudyBuilder_i::FindAttribute(SALOMEDS::SObject_ptr anObject, 
+                                                     SALOMEDS::GenericAttribute_out anAttribute
+                                                     const char* aTypeOfAttribute)
 {
-  if(SALOMEDS_SObject_i* aSObject = _study->DownCast(theObject))
-    return aSObject->FindAttribute(theAttr,theTypeOfAttribute);
+  SALOMEDS::Locker lock;
+  ASSERT(!CORBA::is_nil(anObject));
+  Handle(SALOMEDSImpl_SObject) aSO;
+  aSO = Handle(SALOMEDSImpl_Study)::DownCast(_impl->GetOwner())->GetSObject((char*)anObject->GetID());
+  Handle(TDF_Attribute) anAttr;
 
-  return Standard_False;
+  if(!_impl->FindAttribute(aSO, anAttr, TCollection_AsciiString((char*)aTypeOfAttribute))) return false;
+    
+  anAttribute = SALOMEDS::GenericAttribute::_duplicate(SALOMEDS_GenericAttribute_i::CreateAttribute(anAttr, _orb));
+  return true;  
 }
 
 //============================================================================
@@ -526,27 +251,15 @@ CORBA::Boolean SALOMEDS_StudyBuilder_i::FindAttribute(SALOMEDS::SObject_ptr theO
  */
 //============================================================================
 
-void SALOMEDS_StudyBuilder_i::RemoveAttribute(SALOMEDS::SObject_ptr theSObject, 
+void SALOMEDS_StudyBuilder_i::RemoveAttribute(SALOMEDS::SObject_ptr anObject, 
                                              const char* aTypeOfAttribute)
 {
+  SALOMEDS::Locker lock;
   CheckLocked();
-
-  if(CORBA::is_nil(theSObject))
-    return;
-
-  TDF_Label Lab;
-  CORBA::String_var anobid = theSObject->GetID();
-  TDF_Tool::Label(_doc->GetData(),anobid,Lab);
-  
-  if (strcmp(aTypeOfAttribute, "AttributeIOR") == 0) { // postponed removing of CORBA objects
-    Handle(SALOMEDS_IORAttribute) anAttr;
-    if (Lab.FindAttribute(SALOMEDS_IORAttribute::GetID(), anAttr))
-      _study->AddPostponed(TCollection_AsciiString(anAttr->Get()).ToCString());
-    else
-      return;
-  }
-
-  Lab.ForgetAttribute(SALOMEDS::GetGUID(aTypeOfAttribute));
+  ASSERT(!CORBA::is_nil(anObject));
+  Handle(SALOMEDSImpl_SObject) aSO;
+  aSO = Handle(SALOMEDSImpl_Study)::DownCast(_impl->GetOwner())->GetSObject((char*)anObject->GetID());
+  _impl->RemoveAttribute(aSO, TCollection_AsciiString((char*)aTypeOfAttribute));
 }
 
 //============================================================================
@@ -554,27 +267,18 @@ void SALOMEDS_StudyBuilder_i::RemoveAttribute(SALOMEDS::SObject_ptr theSObject,
  *  Purpose  : 
  */
 //============================================================================
-void 
-SALOMEDS_StudyBuilder_i::Addreference(SALOMEDS::SObject_ptr me, 
-                                     SALOMEDS::SObject_ptr theReferencedObject)
+void SALOMEDS_StudyBuilder_i::Addreference(SALOMEDS::SObject_ptr me, 
+                                          SALOMEDS::SObject_ptr theReferencedObject)
 {
+  SALOMEDS::Locker lock;
   CheckLocked();
-  if(CORBA::is_nil(me) || CORBA::is_nil(theReferencedObject))
-    return;
-
-  TDF_Label Lab;
-  CORBA::String_var meid = me->GetID();
-  TDF_Tool::Label(_doc->GetData(),meid,Lab);  
-
-  TDF_Label RefLab;
-  CORBA::String_var roid = theReferencedObject->GetID();
-  TDF_Tool::Label(_doc->GetData(),roid,RefLab);
-
-  TDF_Reference::Set(Lab,RefLab);
-  SALOMEDS_TargetAttribute::Set(RefLab)->Append(Lab);
-
-  if(Lab.IsDescendant(_doc->Main())) 
-    OnRemoveSObject(me);
+  ASSERT(!CORBA::is_nil(me));
+  ASSERT(!CORBA::is_nil(theReferencedObject));
+  Handle(SALOMEDSImpl_SObject) aSO, aRefSO;
+  aSO = Handle(SALOMEDSImpl_Study)::DownCast(_impl->GetOwner())->GetSObject((char*)me->GetID());
+  aRefSO = Handle(SALOMEDSImpl_Study)::DownCast(_impl->GetOwner())->GetSObject((char*)theReferencedObject->GetID());
+  _impl->Addreference(aSO, aRefSO);
 }
 
 //============================================================================
@@ -584,28 +288,15 @@ SALOMEDS_StudyBuilder_i::Addreference(SALOMEDS::SObject_ptr me,
 //============================================================================
 void SALOMEDS_StudyBuilder_i::RemoveReference(SALOMEDS::SObject_ptr me)
 {
-  SALOMEDS::SObject_var theReferencedObject;
-  if(!me->ReferencedObject(theReferencedObject)) return;  //No reference is found
-
-  if(CORBA::is_nil(me) || CORBA::is_nil(theReferencedObject))
-    return;
-
+  SALOMEDS::Locker lock;
   CheckLocked();
-  TDF_Label Lab;
-  CORBA::String_var meid = me->GetID();
-  TDF_Tool::Label(_doc->GetData(),meid,Lab);  
-
-  Lab.ForgetAttribute(TDF_Reference::GetID());  
-
-  TDF_Label RefLab;  
-  CORBA::String_var roid = theReferencedObject->GetID();
-  TDF_Tool::Label(_doc->GetData(),roid,RefLab);
-
-  RemoveAttribute(theReferencedObject, "AttributeTarget");
+  ASSERT(!CORBA::is_nil(me));
+  Handle(SALOMEDSImpl_SObject) aSO;
+  aSO = Handle(SALOMEDSImpl_Study)::DownCast(_impl->GetOwner())->GetSObject((char*)me->GetID());
+  _impl->RemoveReference(aSO);
 }
 
 
-
 //============================================================================
 /*! Function : AddDirectory
  *  Purpose  : adds a new directory with a path = thePath
@@ -613,62 +304,15 @@ void SALOMEDS_StudyBuilder_i::RemoveReference(SALOMEDS::SObject_ptr me)
 //============================================================================
 void SALOMEDS_StudyBuilder_i::AddDirectory(const char* thePath) 
 {
+  SALOMEDS::Locker lock;
   CheckLocked();
   if(thePath == NULL || strlen(thePath) == 0) throw SALOMEDS::Study::StudyInvalidDirectory();
-
-  TCollection_AsciiString aPath(CORBA::string_dup(thePath)), aContext(""), aFatherPath;
-  Handle(TDataStd_Name) aName;
-  TDF_Label aLabel;
-  SALOMEDS::SObject_var anObject = SALOMEDS_SObject_i::NewRef(_study,_doc->Main()); 
-
-  try { 
-    anObject = _study->FindObjectByPath(thePath); //Check if the directory already exists
+  if(!_impl->AddDirectory(TCollection_AsciiString((char*)thePath))) {
+    TCollection_AsciiString anErrorCode = _impl->GetErrorCode();
+    if(anErrorCode == "StudyNameAlreadyUsed") throw SALOMEDS::Study::StudyNameAlreadyUsed(); 
+    if(anErrorCode == "StudyInvalidDirectory") throw SALOMEDS::Study::StudyInvalidDirectory(); 
+    if(anErrorCode == "StudyInvalidComponent") throw SALOMEDS::Study::StudyInvalidComponent();  
   }
-  catch(...) { }
-
-  if(!anObject->_is_nil()) throw SALOMEDS::Study::StudyNameAlreadyUsed(); 
-
-  if(aPath.Value(1) != '/') { //Relative path 
-    aPath.Prepend('/');
-    aPath = TCollection_AsciiString(_study->GetContext()) + aPath;
-  }
-
-  TCollection_AsciiString aToken = aPath.Token("/", 1);
-  if(aToken.Length() == 0) aFatherPath = "/";
-
-  int i = 1;  
-  while(aToken.Length() != 0) {
-    if(aPath.Token("/", i+1).Length() > 0) {
-      aFatherPath += "/";
-      aFatherPath += aToken;
-    }
-    aToken = aPath.Token("/", ++i);
-  }
-
-  anObject = SALOMEDS::SObject::_nil();
-  try { 
-    anObject = _study->FindObjectByPath(aFatherPath.ToCString()); //Check if the father directory exists
-  }
-  catch(...) { ; }
-  if(anObject->_is_nil()) 
-    throw SALOMEDS::Study::StudyInvalidDirectory(); 
-
-  SALOMEDS::SObject_var aNewObject = NewObject(anObject);
-  TDF_Tool::Label(_doc->GetData(), aNewObject->GetID(), aLabel);
-  if(aLabel.IsNull()) {
-    MESSAGE("### NULL label");
-    throw SALOMEDS::Study::StudyInvalidComponent();      
-  }
-
-  TDataStd_Name::Set(aLabel, aPath.Token("/", i-1));
-
-  //Set LocalID attribute to identify the directory object
-  SALOMEDS::GenericAttribute_var anAttr = FindOrCreateAttribute(aNewObject, "AttributeLocalID");
-  SALOMEDS::AttributeLocalID_var aPersRef = SALOMEDS::AttributeLocalID::_narrow(anAttr);
-  if(aPersRef->_is_nil()) 
-    throw SALOMEDS::Study::StudyInvalidDirectory();
-
-  aPersRef->SetValue(DIRECTORYID);
 }
 
 
@@ -679,15 +323,12 @@ void SALOMEDS_StudyBuilder_i::AddDirectory(const char* thePath)
 //============================================================================
 void SALOMEDS_StudyBuilder_i::SetGUID(SALOMEDS::SObject_ptr anObject, const char* theGUID)
 {
+  SALOMEDS::Locker lock;
   CheckLocked();
-
-  if(CORBA::is_nil(anObject))
-    return;
-
-  TDF_Label aLabel;
-  CORBA::String_var anEntry = anObject->GetID();
-  TDF_Tool::Label(_doc->GetData(), anEntry, aLabel);
-  TDataStd_UAttribute::Set(aLabel, (char*)theGUID);
+  ASSERT(!CORBA::is_nil(anObject));
+  Handle(SALOMEDSImpl_SObject) aSO;
+  aSO = Handle(SALOMEDSImpl_Study)::DownCast(_impl->GetOwner())->GetSObject((char*)anObject->GetID());
+  _impl->SetGUID(aSO, TCollection_AsciiString((char*)theGUID));
 }
 
 //============================================================================
@@ -697,13 +338,11 @@ void SALOMEDS_StudyBuilder_i::SetGUID(SALOMEDS::SObject_ptr anObject, const char
 //============================================================================
 bool SALOMEDS_StudyBuilder_i::IsGUID(SALOMEDS::SObject_ptr anObject, const char* theGUID)
 {
-  if(CORBA::is_nil(anObject))
-    return false;
-
-  TDF_Label aLabel;
-  CORBA::String_var anEntry = anObject->GetID();
-  TDF_Tool::Label(_doc->GetData(), anEntry, aLabel);
-  return aLabel.IsAttribute((char*)theGUID);
+  SALOMEDS::Locker lock;
+  ASSERT(!CORBA::is_nil(anObject));
+  Handle(SALOMEDSImpl_SObject) aSO;
+  aSO = Handle(SALOMEDSImpl_Study)::DownCast(_impl->GetOwner())->GetSObject((char*)anObject->GetID());
+  return _impl->IsGUID(aSO, TCollection_AsciiString((char*)theGUID));
 }
 
 
@@ -714,15 +353,8 @@ bool SALOMEDS_StudyBuilder_i::IsGUID(SALOMEDS::SObject_ptr anObject, const char*
 //============================================================================
 void SALOMEDS_StudyBuilder_i::NewCommand()
 {
-  // mpv: for SAL2114 - unset "lock changed" flag at the operation start
-  Handle(SALOMEDS_StudyPropertiesAttribute) anAttr;
-  if (!_doc->Main().FindAttribute(SALOMEDS_StudyPropertiesAttribute::GetID(), anAttr)) {
-    anAttr = new SALOMEDS_StudyPropertiesAttribute;
-    _doc->Main().AddAttribute(anAttr);
-  }
-  anAttr->IsLockChanged(true);
-  
-  _doc->NewCommand();
+  SALOMEDS::Locker lock;
+  _impl->NewCommand();
 }
 
 //============================================================================
@@ -732,23 +364,14 @@ void SALOMEDS_StudyBuilder_i::NewCommand()
 //============================================================================
 void SALOMEDS_StudyBuilder_i::CommitCommand() throw (SALOMEDS::StudyBuilder::LockProtection)
 {
+  SALOMEDS::Locker lock;
   Unexpect aCatch(SBLockProtection);
-  Handle(SALOMEDS_StudyPropertiesAttribute) anAttr;
-  if (!_doc->Main().FindAttribute(SALOMEDS_StudyPropertiesAttribute::GetID(), anAttr)) {
-    anAttr = new SALOMEDS_StudyPropertiesAttribute;
-    _doc->Main().AddAttribute(anAttr);
+  try {
+    _impl->CommitCommand();
   }
-  if (anAttr->IsLocked() && !anAttr->IsLockChanged(true)) {
+  catch(...) {
     MESSAGE("Locked document modification !!!");
-    AbortCommand();
     throw SALOMEDS::StudyBuilder::LockProtection();
-  } else {
-    _study->RemovePostponed(_doc->GetUndoLimit());
-
-    int aModif = anAttr->GetModified();
-    if (aModif < 0) aModif = 1000; // if user make undo and then - new transaction "modify" will never be zero
-    anAttr->SetModified(aModif+1);
-    _doc->CommitCommand();
   }
 }
 
@@ -759,7 +382,8 @@ void SALOMEDS_StudyBuilder_i::CommitCommand() throw (SALOMEDS::StudyBuilder::Loc
 //============================================================================
 CORBA::Boolean SALOMEDS_StudyBuilder_i::HasOpenCommand()
 {
-  return _doc->HasOpenCommand();
+  SALOMEDS::Locker lock;
+  return _impl->HasOpenCommand();
 }
 
 //============================================================================
@@ -769,9 +393,8 @@ CORBA::Boolean SALOMEDS_StudyBuilder_i::HasOpenCommand()
 //============================================================================
 void SALOMEDS_StudyBuilder_i::AbortCommand()
 {
-  _study->UndoPostponed(0);
-  
-  _doc->AbortCommand();
+  SALOMEDS::Locker lock;
+  _impl->AbortCommand();
 }
 
 //============================================================================
@@ -781,19 +404,14 @@ void SALOMEDS_StudyBuilder_i::AbortCommand()
 //============================================================================
 void SALOMEDS_StudyBuilder_i::Undo() throw (SALOMEDS::StudyBuilder::LockProtection)
 {
+  SALOMEDS::Locker lock;
   Unexpect aCatch(SBLockProtection);
-  Handle(SALOMEDS_StudyPropertiesAttribute) anAttr;
-  if (!_doc->Main().FindAttribute(SALOMEDS_StudyPropertiesAttribute::GetID(), anAttr)) {
-    anAttr = new SALOMEDS_StudyPropertiesAttribute;
-    _doc->Main().AddAttribute(anAttr);
-    }
-  if (anAttr->IsLocked()) {
+  try {
+    _impl->Undo();
+  }
+  catch(...) {
     MESSAGE("Locked document modification !!!");
     throw SALOMEDS::StudyBuilder::LockProtection();
-  } else {
-    _study->UndoPostponed(1);
-    _doc->Undo();
-    anAttr->SetModified(anAttr->GetModified()-1);
   }
 }
 
@@ -804,22 +422,16 @@ void SALOMEDS_StudyBuilder_i::Undo() throw (SALOMEDS::StudyBuilder::LockProtecti
 //============================================================================
 void SALOMEDS_StudyBuilder_i::Redo() throw (SALOMEDS::StudyBuilder::LockProtection)
 {
+  SALOMEDS::Locker lock;
   Unexpect aCatch(SBLockProtection);
-  Handle(SALOMEDS_StudyPropertiesAttribute) anAttr;
-  if (!_doc->Main().FindAttribute(SALOMEDS_StudyPropertiesAttribute::GetID(), anAttr)) {
-    anAttr = new SALOMEDS_StudyPropertiesAttribute;
-    _doc->Main().AddAttribute(anAttr);
+  try {
+    _impl->Redo();
   }
-  
-  if (anAttr->IsLocked()) {
+  catch(...) {
     MESSAGE("Locked document modification !!!");
     throw SALOMEDS::StudyBuilder::LockProtection();
-  } else {
-    _doc->Redo();
-    _study->UndoPostponed(-1);
-    anAttr->SetModified(anAttr->GetModified()+1);
   }
- }
+}
 
 //============================================================================
 /*! Function : GetAvailableUndos
@@ -828,7 +440,8 @@ void SALOMEDS_StudyBuilder_i::Redo() throw (SALOMEDS::StudyBuilder::LockProtecti
 //============================================================================
 CORBA::Boolean SALOMEDS_StudyBuilder_i::GetAvailableUndos()
 {
-  return _doc->GetAvailableUndos();
+  SALOMEDS::Locker lock;
+  return _impl->GetAvailableUndos();
 }
 
 //============================================================================
@@ -838,7 +451,8 @@ CORBA::Boolean SALOMEDS_StudyBuilder_i::GetAvailableUndos()
 //============================================================================
 CORBA::Boolean  SALOMEDS_StudyBuilder_i::GetAvailableRedos()
 {
-  return _doc->GetAvailableRedos();
+  SALOMEDS::Locker lock;
+  return _impl->GetAvailableRedos();
 }
 
 //============================================================================
@@ -848,7 +462,8 @@ CORBA::Boolean  SALOMEDS_StudyBuilder_i::GetAvailableRedos()
 //============================================================================
 CORBA::Long  SALOMEDS_StudyBuilder_i::UndoLimit()
 {
-  return _doc->GetUndoLimit();
+  SALOMEDS::Locker lock;
+  return _impl->UndoLimit();
 }
 
 //============================================================================
@@ -858,38 +473,9 @@ CORBA::Long  SALOMEDS_StudyBuilder_i::UndoLimit()
 //============================================================================
 void  SALOMEDS_StudyBuilder_i::UndoLimit(CORBA::Long n)
 {
+  SALOMEDS::Locker lock;
   CheckLocked();
-  _doc->SetUndoLimit (n);
-}
-
-//============================================================================
-/*! Function : SetOnAddSObject
- *  Purpose  : 
- */
-//============================================================================
-SALOMEDS::Callback_ptr SALOMEDS_StudyBuilder_i::SetOnAddSObject(SALOMEDS::Callback_ptr theCallback)
-{
-  return _study->SetOnAddSObject(theCallback);
-}
-
-void SALOMEDS_StudyBuilder_i::OnAddSObject(SALOMEDS::SObject_ptr theObject)
-{
-  _study->OnAddSObject(theObject);
-}
-
-//============================================================================
-/*! Function : SetOnNewSObject
- *  Purpose  : 
- */
-//============================================================================
-SALOMEDS::Callback_ptr SALOMEDS_StudyBuilder_i::SetOnRemoveSObject(SALOMEDS::Callback_ptr theCallback)
-{
-  return _study->SetOnRemoveSObject(theCallback);
-}
-
-void SALOMEDS_StudyBuilder_i::OnRemoveSObject(SALOMEDS::SObject_ptr theObject)
-{
-  _study->OnRemoveSObject(theObject);
+  _impl->UndoLimit(n);
 }
 
 //============================================================================
@@ -897,8 +483,16 @@ void SALOMEDS_StudyBuilder_i::OnRemoveSObject(SALOMEDS::SObject_ptr theObject)
  *  Purpose  : 
  */
 //============================================================================
-void SALOMEDS_StudyBuilder_i::CheckLocked() throw (SALOMEDS::StudyBuilder::LockProtection) {
-  _study->CheckLocked();
+void SALOMEDS_StudyBuilder_i::CheckLocked() throw (SALOMEDS::StudyBuilder::LockProtection) 
+{
+  SALOMEDS::Locker lock;
+  Unexpect aCatch(SBLockProtection);
+  try {
+    _impl->CheckLocked();
+  }
+  catch(...) {
+    throw SALOMEDS::StudyBuilder::LockProtection();
+  }
 }
 
 //============================================================================
@@ -909,17 +503,13 @@ void SALOMEDS_StudyBuilder_i::CheckLocked() throw (SALOMEDS::StudyBuilder::LockP
 void SALOMEDS_StudyBuilder_i::SetName(SALOMEDS::SObject_ptr theSO, const char* theValue)
      throw(SALOMEDS::StudyBuilder::LockProtection)
 {
+  SALOMEDS::Locker lock;
   Unexpect aCatch(SBLockProtection);
   CheckLocked();
-
-  if(CORBA::is_nil(theSO))
-    return;
-
-  //Find label
-  TDF_Label aLabel;
-  CORBA::String_var aSOID = theSO->GetID();
-  TDF_Tool::Label(_doc->GetData(), aSOID, aLabel);
-  TDataStd_Name::Set(aLabel, (char*)theValue);
+  Handle(SALOMEDSImpl_SObject) aSO;
+  aSO = Handle(SALOMEDSImpl_Study)::DownCast(_impl->GetOwner())->GetSObject((char*)theSO->GetID());  
+  _impl->SetName(aSO, TCollection_AsciiString((char*)theValue));
 }
 
 //============================================================================
@@ -928,19 +518,15 @@ void SALOMEDS_StudyBuilder_i::SetName(SALOMEDS::SObject_ptr theSO, const char* t
  */
 //============================================================================
 void SALOMEDS_StudyBuilder_i::SetComment(SALOMEDS::SObject_ptr theSO, const char* theValue)
- throw(SALOMEDS::StudyBuilder::LockProtection)
    throw(SALOMEDS::StudyBuilder::LockProtection)
 {
+  SALOMEDS::Locker lock;
   Unexpect aCatch(SBLockProtection);
   CheckLocked();
 
-  if(CORBA::is_nil(theSO))
-    return;
-
-   //Find label
-  TDF_Label aLabel;
-  CORBA::String_var aSOID = theSO->GetID();
-  TDF_Tool::Label(_doc->GetData(), aSOID, aLabel);
-  TDataStd_Comment::Set(aLabel, (char*)theValue);
+  Handle(SALOMEDSImpl_SObject) aSO;
+  aSO = Handle(SALOMEDSImpl_Study)::DownCast(_impl->GetOwner())->GetSObject((char*)theSO->GetID());  
+  _impl->SetComment(aSO, TCollection_AsciiString((char*)theValue));
 }
 
 //============================================================================
@@ -951,15 +537,11 @@ void SALOMEDS_StudyBuilder_i::SetComment(SALOMEDS::SObject_ptr theSO, const char
 void SALOMEDS_StudyBuilder_i::SetIOR(SALOMEDS::SObject_ptr theSO, const char* theValue)
  throw(SALOMEDS::StudyBuilder::LockProtection)
 {
+  SALOMEDS::Locker lock;
   Unexpect aCatch(SBLockProtection);
   CheckLocked();
 
-  if(CORBA::is_nil(theSO))
-    return;
-
-  //Find label
-  TDF_Label aLabel;
-  CORBA::String_var aSOID = theSO->GetID();
-  TDF_Tool::Label(_doc->GetData(), aSOID, aLabel);
-  SALOMEDS_IORAttribute::Set(aLabel, TCollection_ExtendedString((char*)theValue),_study);
+  Handle(SALOMEDSImpl_SObject) aSO;
+  aSO = Handle(SALOMEDSImpl_Study)::DownCast(_impl->GetOwner())->GetSObject((char*)theSO->GetID());  
+  _impl->SetIOR(aSO, TCollection_AsciiString((char*)theValue));
 }
index 38f29b44078d34e8752fd7ba4918414d7b1fb1b0..77a24578b773114e5f38d27a9b4735da441cc808 100644 (file)
@@ -1,67 +1,35 @@
-//  SALOME SALOMEDS : data structure of SALOME and sources of Salome data server 
-//
-//  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
-// 
-//  This library is free software; you can redistribute it and/or 
-//  modify it under the terms of the GNU Lesser General Public 
-//  License as published by the Free Software Foundation; either 
-//  version 2.1 of the License. 
-// 
-//  This library is distributed in the hope that it will be useful, 
-//  but WITHOUT ANY WARRANTY; without even the implied warranty of 
-//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
-//  Lesser General Public License for more details. 
-// 
-//  You should have received a copy of the GNU Lesser General Public 
-//  License along with this library; if not, write to the Free Software 
-//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
-// 
-//  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
-//
-//
-//
 //  File   : SALOMEDS_StudyBuilder_i.hxx
-//  Author : Yves FRICAUD
+//  Author : Sergey RUIN
 //  Module : SALOME
-//  $Header$
 
-#ifndef __SALOMEDS_STUDYBUIlDER_I_H__
+#ifndef __SALOMEDS_STUDYBUILDER_I_H__
 #define __SALOMEDS_STUDYBUILDER_I_H__
 
+// std C++ headers
+#include <iostream>
+
 // IDL headers
 #include <SALOMEconfig.h>
 #include CORBA_SERVER_HEADER(SALOMEDS)
 #include CORBA_SERVER_HEADER(SALOMEDS_Attributes)
 
+#include "SALOMEDSImpl_StudyBuilder.hxx"
+
 // Cascade header
 #include <TDocStd_Document.hxx>
 
-class SALOMEDS_Study_i;
-class SALOMEDS_SObject_i;
-class SALOMEDS_Callback_i;
-
-class SALOMEDS_StudyBuilder_i: public virtual POA_SALOMEDS::StudyBuilder,
-                              public virtual PortableServer::RefCountServantBase 
+class SALOMEDS_StudyBuilder_i: public POA_SALOMEDS::StudyBuilder,
+                               public PortableServer::RefCountServantBase 
 {
-  SALOMEDS_StudyBuilder_i(); // Not implemented
-  void operator=(const SALOMEDS_StudyBuilder_i&); // Not implemented
-
-  SALOMEDS_Study_i*        _study;
-  Handle(TDocStd_Document) _doc;  // OCAF Document
-
-  void OnAddSObject(SALOMEDS::SObject_ptr theObject);
-  void OnRemoveSObject(SALOMEDS::SObject_ptr theObject);
-
+private:
+  CORBA::ORB_ptr                    _orb;
+  Handle(SALOMEDSImpl_StudyBuilder) _impl;  // OCAF Document
 public:
-  SALOMEDS_StudyBuilder_i(SALOMEDS_Study_i* theStudy,
-                         const Handle(TDocStd_Document)& theDocument);
+    
+  SALOMEDS_StudyBuilder_i(const Handle(SALOMEDSImpl_StudyBuilder), CORBA::ORB_ptr);
 
   ~SALOMEDS_StudyBuilder_i();
 
-  CORBA::ORB_var GetORB() const;
-  PortableServer::POA_var GetPOA() const;
-
   //! NewComponent
   /*!
     \param ComponentDataType    
@@ -111,8 +79,6 @@ public:
     throw(SALOME::SALOME_Exception);
   virtual void Load(SALOMEDS::SObject_ptr sco);
 
-  SALOMEDS_SObject_i* RemoveSObject(SALOMEDS::SObject_ptr theSObject,
-                                   bool theIsForgetAllAttributes = true);
   virtual void RemoveObject(SALOMEDS::SObject_ptr anObject);
   virtual void RemoveObjectWithChildren(SALOMEDS::SObject_ptr anObject);
 
@@ -142,9 +108,6 @@ public:
 
   void CheckLocked() throw (SALOMEDS::StudyBuilder::LockProtection);
 
-  virtual SALOMEDS::Callback_ptr SetOnAddSObject(SALOMEDS::Callback_ptr theCallback);
-  virtual SALOMEDS::Callback_ptr SetOnRemoveSObject(SALOMEDS::Callback_ptr theCallback);
-
   virtual void SetName(SALOMEDS::SObject_ptr theSO, const char* theValue) throw(SALOMEDS::StudyBuilder::LockProtection);
   virtual void SetComment(SALOMEDS::SObject_ptr theSO, const char* theValue) throw(SALOMEDS::StudyBuilder::LockProtection);
   virtual void SetIOR(SALOMEDS::SObject_ptr theSO, const char* theValue) throw(SALOMEDS::StudyBuilder::LockProtection);
diff --git a/src/SALOMEDS/SALOMEDS_StudyManager.cxx b/src/SALOMEDS/SALOMEDS_StudyManager.cxx
new file mode 100644 (file)
index 0000000..9374f0b
--- /dev/null
@@ -0,0 +1,294 @@
+//  File   : SALOMEDSClient_StudyManager.cxx
+//  Author : Sergey RUIN
+//  Module : SALOME
+
+
+#include "SALOMEDS_StudyManager.hxx"
+
+#include "SALOMEDSImpl_Study.hxx"
+#include "SALOMEDS_Study.hxx"
+#include "SALOMEDS_SObject.hxx"
+#include "SALOMEDS_Driver_i.hxx"
+
+#include "Utils_ORB_INIT.hxx" 
+#include "Utils_SINGLETON.hxx" 
+
+#ifdef WIN32
+#include <process.h>
+#else
+#include <sys/types.h>
+#include <unistd.h>
+#endif
+
+#include <string>
+#include <TCollection_AsciiString.hxx> 
+#include <TColStd_HSequenceOfTransient.hxx>
+
+#include "OpUtil.hxx"
+
+using namespace std; 
+
+SALOMEDS_Driver_i* GetDriver(const Handle(SALOMEDSImpl_SObject)& theObject, CORBA::ORB_ptr orb);
+
+SALOMEDS_StudyManager::SALOMEDS_StudyManager(SALOMEDS::StudyManager_ptr theManager)
+{
+
+#ifdef WIN32
+  long pid =  (long)_getpid();
+#else
+  long pid =  (long)getpid();
+#endif  
+
+  long addr = theManager->GetLocalImpl(GetHostname().c_str(), pid, _isLocal);
+  if(_isLocal) {
+    _local_impl = ((SALOMEDSImpl_StudyManager*)(addr));
+    _corba_impl = SALOMEDS::StudyManager::_duplicate(theManager);
+  }
+  else {
+    _local_impl = NULL;
+    _corba_impl = SALOMEDS::StudyManager::_duplicate(theManager);
+  }
+
+  init_orb();
+}
+
+SALOMEDS_StudyManager::SALOMEDS_StudyManager()
+{
+  init_orb();
+
+  SALOME_NamingService namingService(_orb);
+  CORBA::Object_var obj = namingService.Resolve( "/myStudyManager" );
+  SALOMEDS::StudyManager_var theManager = SALOMEDS::StudyManager::_narrow( obj );
+  ASSERT( !CORBA::is_nil(theManager) );
+
+#ifdef WIN32
+  long pid =  (long)_getpid();
+#else
+  long pid =  (long)getpid();
+#endif  
+
+  long addr = theManager->GetLocalImpl(GetHostname().c_str(), pid, _isLocal);
+  if(_isLocal) {
+    _local_impl = ((SALOMEDSImpl_StudyManager*)(addr));
+    _corba_impl = SALOMEDS::StudyManager::_duplicate(theManager);
+  }
+  else {
+    _local_impl = NULL;
+    _corba_impl = SALOMEDS::StudyManager::_duplicate(theManager);
+  }
+}
+
+SALOMEDS_StudyManager::~SALOMEDS_StudyManager()
+{
+}
+
+_PTR(Study) SALOMEDS_StudyManager::NewStudy(const std::string& study_name)
+{
+  //SRN: Pure CORBA NewStudy as it does more initialization than the local one   
+  SALOMEDSClient_Study* aStudy = NULL;
+
+  SALOMEDS::Study_var aStudy_impl = _corba_impl->NewStudy((char*)study_name.c_str());
+  if(CORBA::is_nil(aStudy_impl)) return _PTR(Study)(aStudy); 
+  aStudy = new SALOMEDS_Study(aStudy_impl);
+
+  return _PTR(Study)(aStudy);
+}
+
+_PTR(Study) SALOMEDS_StudyManager::Open(const std::string& theStudyUrl)
+{
+  //SRN: Pure CORBA Open as it does more initialization than the local one   
+  SALOMEDSClient_Study* aStudy = NULL;
+
+  SALOMEDS::Study_var aStudy_impl = _corba_impl->Open((char*)theStudyUrl.c_str());
+  if(CORBA::is_nil(aStudy_impl)) return  _PTR(Study)(aStudy); 
+    
+  aStudy = new SALOMEDS_Study(aStudy_impl.in());
+
+  return _PTR(Study)(aStudy);
+}
+void SALOMEDS_StudyManager::Close(const _PTR(Study)& theStudy)
+{
+  //SRN: Pure CORBA close as it does more cleaning than the local one
+  SALOMEDS::Study_var aStudy = _corba_impl->GetStudyByID(theStudy->StudyId());
+  _corba_impl->Close(aStudy);
+}
+void SALOMEDS_StudyManager::Save(const _PTR(Study)& theStudy, bool theMultiFile)
+{
+  //SRN: Pure CORBA save as the save operation require CORBA in any case 
+  SALOMEDS::Study_var aStudy = _corba_impl->GetStudyByID(theStudy->StudyId());
+  _corba_impl->Save(aStudy, theMultiFile);
+}
+void SALOMEDS_StudyManager::SaveASCII(const _PTR(Study)& theStudy, bool theMultiFile)
+{
+  //SRN: Pure CORBA save as the save operation require CORBA in any case 
+  SALOMEDS::Study_var aStudy = _corba_impl->GetStudyByID(theStudy->StudyId());
+  _corba_impl->SaveASCII(aStudy, theMultiFile);
+}
+void SALOMEDS_StudyManager::SaveAs(const std::string& theUrl,  const _PTR(Study)& theStudy, bool theMultiFile)
+{
+  //SRN: Pure CORBA save as the save operation require CORBA in any case 
+  SALOMEDS::Study_var aStudy = _corba_impl->GetStudyByID(theStudy->StudyId());
+  _corba_impl->SaveAs((char*)theUrl.c_str(), aStudy, theMultiFile);
+}
+void SALOMEDS_StudyManager::SaveAsASCII(const std::string& theUrl,  const _PTR(Study)& theStudy, bool theMultiFile)
+{
+  //SRN: Pure CORBA save as the save operation require CORBA in any case 
+  SALOMEDS::Study_var aStudy = _corba_impl->GetStudyByID(theStudy->StudyId());
+  _corba_impl->SaveAsASCII((char*)theUrl.c_str(), aStudy, theMultiFile);
+}
+
+std::vector<std::string> SALOMEDS_StudyManager::GetOpenStudies()
+{
+  std::vector<std::string> aVector;
+  int aLength, i;
+
+  if(_isLocal) {
+    Handle(TColStd_HSequenceOfTransient) aSeq = _local_impl->GetOpenStudies();
+    aLength = aSeq->Length();
+    for(i = 1; i <= aLength; i++) 
+      aVector.push_back(Handle(SALOMEDSImpl_Study)::DownCast(aSeq->Value(i))->Name().ToCString());
+  }
+  else {
+    SALOMEDS::ListOfOpenStudies_var aSeq = _corba_impl->GetOpenStudies();
+    aLength = aSeq->length();
+    for(i = 0; i < aLength; i++) 
+      aVector.push_back(aSeq[i].in());
+  }
+  return aVector;
+}
+_PTR(Study) SALOMEDS_StudyManager::GetStudyByName(const std::string& theStudyName) 
+{
+  SALOMEDSClient_Study* aStudy = NULL;
+  if(_isLocal) {
+    Handle(SALOMEDSImpl_Study) aStudy_impl = _local_impl->GetStudyByName((char*)theStudyName.c_str());
+    if(aStudy_impl.IsNull()) return _PTR(Study)(aStudy);
+    aStudy = new SALOMEDS_Study(aStudy_impl);
+  }
+  else  {
+    SALOMEDS::Study_var aStudy_impl = _corba_impl->GetStudyByName((char*)theStudyName.c_str());
+    if(CORBA::is_nil(aStudy_impl)) return _PTR(Study)(aStudy); 
+    aStudy = new SALOMEDS_Study(aStudy_impl);
+  }
+  return _PTR(Study)(aStudy);
+}
+
+_PTR(Study) SALOMEDS_StudyManager::GetStudyByID(int theStudyID) 
+{
+  SALOMEDSClient_Study* aStudy = NULL;
+  if(_isLocal) {
+    Handle(SALOMEDSImpl_Study) aStudy_impl = _local_impl->GetStudyByID(theStudyID);
+    if(aStudy_impl.IsNull()) return _PTR(Study)(aStudy);
+    aStudy = new SALOMEDS_Study(aStudy_impl);
+  }
+  else { 
+    SALOMEDS::Study_var aStudy_impl = _corba_impl->GetStudyByID(theStudyID);
+    if(CORBA::is_nil(aStudy_impl)) return _PTR(Study)(aStudy); 
+    aStudy = new SALOMEDS_Study(aStudy_impl);
+  }
+  return _PTR(Study)(aStudy); 
+}
+bool SALOMEDS_StudyManager::CanCopy(const _PTR(SObject)& theSO)
+{
+  SALOMEDS_SObject* aSO = dynamic_cast<SALOMEDS_SObject*>(theSO.get());
+  bool ret;
+
+  if(_isLocal) {
+    Handle(SALOMEDSImpl_SObject) aSO_impl = aSO->GetLocalImpl();
+    SALOMEDS_Driver_i* aDriver = GetDriver(aSO_impl, _orb);
+    ret = _local_impl->CanCopy(aSO_impl, aDriver);
+    delete aDriver;
+  }
+  else {
+    ret = _corba_impl->CanCopy(aSO->GetCORBAImpl());
+  }
+
+  return ret;
+}
+bool SALOMEDS_StudyManager::Copy(const _PTR(SObject)& theSO)
+{
+  SALOMEDS_SObject* aSO = dynamic_cast<SALOMEDS_SObject*>(theSO.get());
+  bool ret;
+  if(_isLocal) {
+    Handle(SALOMEDSImpl_SObject) aSO_impl = aSO->GetLocalImpl();
+    SALOMEDS_Driver_i* aDriver = GetDriver(aSO_impl, _orb);
+    ret = _local_impl->Copy(aSO_impl, aDriver);
+    delete aDriver;
+  }
+  else {
+    ret = _corba_impl->Copy(aSO->GetCORBAImpl());
+  }
+  return ret;
+}
+bool SALOMEDS_StudyManager::CanPaste(const _PTR(SObject)& theSO)
+{
+  SALOMEDS_SObject* aSO = dynamic_cast<SALOMEDS_SObject*>(theSO.get());
+  bool ret;
+
+  if(_isLocal) {
+    Handle(SALOMEDSImpl_SObject) aSO_impl = aSO->GetLocalImpl();
+    SALOMEDS_Driver_i* aDriver = GetDriver(aSO_impl, _orb);
+    ret = _local_impl->CanPaste(aSO_impl, aDriver);
+    delete aDriver;
+  }
+  else {
+    ret = _corba_impl->CanPaste(aSO->GetCORBAImpl());
+  }
+
+  return ret;
+}
+_PTR(SObject) SALOMEDS_StudyManager::Paste(const _PTR(SObject)& theSO)
+{
+  SALOMEDS_SObject* aSO = dynamic_cast<SALOMEDS_SObject*>(theSO.get());
+  SALOMEDSClient_SObject* aResult = NULL;
+
+  if(_isLocal) {
+    Handle(SALOMEDSImpl_SObject) aSO_impl = aSO->GetLocalImpl();
+    SALOMEDS_Driver_i* aDriver = GetDriver(aSO_impl, _orb);
+    Handle(SALOMEDSImpl_SObject) aNewSO = _local_impl->Paste(aSO_impl, aDriver);
+    delete aDriver;
+    if(aNewSO.IsNull()) return _PTR(SObject)(aResult);
+    aResult = new SALOMEDS_SObject(aNewSO);
+  }
+  else {
+    SALOMEDS::SObject_ptr aNewSO = _corba_impl->Paste(aSO->GetCORBAImpl());
+    if(CORBA::is_nil(aNewSO)) return _PTR(SObject)(aResult);
+    aResult = new SALOMEDS_SObject(aNewSO);
+  }
+
+  return _PTR(SObject)(aResult);
+}
+
+
+void SALOMEDS_StudyManager::init_orb()
+{
+  ORB_INIT &init = *SINGLETON_<ORB_INIT>::Instance() ;
+  ASSERT(SINGLETON_<ORB_INIT>::IsAlreadyExisting()); 
+  _orb = init(0 , 0 ) ;     
+}
+
+SALOMEDS_Driver_i* GetDriver(const Handle(SALOMEDSImpl_SObject)& theObject, CORBA::ORB_ptr orb)
+{
+  SALOMEDS_Driver_i* driver = NULL;
+  
+  Handle(SALOMEDSImpl_SComponent) aSCO = theObject->GetFatherComponent();
+  if(!aSCO.IsNull()) {
+    TCollection_AsciiString IOREngine = aSCO->GetIOR();
+    if(!IOREngine.IsEmpty()) {
+      CORBA::Object_var obj = orb->string_to_object(IOREngine.ToCString());
+      SALOMEDS::Driver_var Engine = SALOMEDS::Driver::_narrow(obj) ;
+      driver = new SALOMEDS_Driver_i(Engine, orb);
+    }
+  }  
+
+  return driver;
+}
diff --git a/src/SALOMEDS/SALOMEDS_StudyManager.hxx b/src/SALOMEDS/SALOMEDS_StudyManager.hxx
new file mode 100644 (file)
index 0000000..8aeaf4a
--- /dev/null
@@ -0,0 +1,52 @@
+//  File   : SALOMEDS_StudyManager.hxx
+//  Author : Sergey RUIN
+//  Module : SALOME
+
+#ifndef __SALOMEDS_STUDYMANAGER_H__
+#define __SALOMEDS_STUDYMANAGER_H__
+
+#include <vector>
+#include <string>
+
+#include "SALOMEDSClient.hxx"
+#include "SALOMEDSImpl_StudyManager.hxx"
+
+// IDL headers
+
+#include <SALOMEconfig.h>
+#include CORBA_SERVER_HEADER(SALOMEDS)
+
+class Standard_EXPORT SALOMEDS_StudyManager: public SALOMEDSClient_StudyManager
+{
+private:
+  bool                              _isLocal;
+  Handle(SALOMEDSImpl_StudyManager) _local_impl;
+  SALOMEDS::StudyManager_var        _corba_impl;  
+  CORBA::ORB_var                    _orb;
+
+public:
+
+  SALOMEDS_StudyManager(SALOMEDS::StudyManager_ptr theManager);
+  SALOMEDS_StudyManager();
+  ~SALOMEDS_StudyManager();
+
+  virtual _PTR(Study) NewStudy(const std::string& study_name);
+  virtual _PTR(Study) Open(const std::string& theStudyUrl);
+  virtual void Close(const _PTR(Study)& theStudy);
+  virtual void Save(const _PTR(Study)& theStudy, bool theMultiFile);
+  virtual void SaveASCII(const _PTR(Study)& theStudy, bool theMultiFile);
+  virtual void SaveAs(const std::string& theUrl,  const _PTR(Study)& theStudy, bool theMultiFile);
+  virtual void SaveAsASCII(const std::string& theUrl,  const _PTR(Study)& theStudy, bool theMultiFile);
+  virtual std::vector<std::string> GetOpenStudies();
+  virtual _PTR(Study) GetStudyByName(const std::string& theStudyName) ;
+  virtual _PTR(Study) GetStudyByID(int theStudyID) ;
+  virtual bool CanCopy(const _PTR(SObject)& theSO);
+  virtual bool Copy(const _PTR(SObject)& theSO);
+  virtual bool CanPaste(const _PTR(SObject)& theSO);
+  virtual _PTR(SObject) Paste(const _PTR(SObject)& theSO); 
+
+private:
+  void init_orb();
+};
+
+#endif 
index 588019be2d76bea0b75cc2640d8264fe267d4c69..872c753c9ec118a4ca7d5fb3de1a13e26c75c145 100644 (file)
-//  SALOME SALOMEDS : data structure of SALOME and sources of Salome data server 
-//
-//  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
-// 
-//  This library is free software; you can redistribute it and/or 
-//  modify it under the terms of the GNU Lesser General Public 
-//  License as published by the Free Software Foundation; either 
-//  version 2.1 of the License. 
-// 
-//  This library is distributed in the hope that it will be useful, 
-//  but WITHOUT ANY WARRANTY; without even the implied warranty of 
-//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
-//  Lesser General Public License for more details. 
-// 
-//  You should have received a copy of the GNU Lesser General Public 
-//  License along with this library; if not, write to the Free Software 
-//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
-// 
-//  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
-//
-//
-//
 //  File   : SALOMEDS_StudyManager_i.cxx
-//  Author : Yves FRICAUD 
+//  Author : Sergey RUIN
 //  Module : SALOME
-//  $Header$
-
-#include <memory>
-#include <sstream>
-
-#include <OSD_Process.hxx>
-#include <Quantity_Date.hxx>
-
-#include <TDF_Label.hxx>
-#include <TDataStd_Name.hxx>
-#include <TDataStd_Comment.hxx>
-#include <TDataStd_Integer.hxx>
-#include <TDataStd_TreeNode.hxx>
-#include <TDataStd_UAttribute.hxx> 
-#include <TDF_ChildIterator.hxx>
-#include <TDF_Tool.hxx>
-#include <TDF_Reference.hxx>
-#include <TDF_Data.hxx>
-#include <TDF_RelocationTable.hxx>
-#include <TDF_AttributeIterator.hxx>
-#include <TCollection_ExtendedString.hxx>
-#include <TCollection_AsciiString.hxx>
 
-#include "SALOMEDS_StudyManager_i.hxx"
+#include "utilities.h"
 #include "SALOME_LifeCycleCORBA.hxx"
-
+#include "SALOMEDS_StudyManager_i.hxx"
 #include "SALOMEDS_Study_i.hxx"
-#include "SALOMEDS_SObject_i.hxx"
-#include "SALOMEDS_StudyBuilder_i.hxx"
+#include "SALOMEDS_SComponent_i.hxx"
+#include "SALOMEDS_Driver_i.hxx"
+#include "SALOMEDS.hxx"
 
-#include "SALOMEDS_IORAttribute.hxx"
-#include "SALOMEDS_PersRefAttribute.hxx"
-#include "SALOMEDS_TargetAttribute.hxx"
+#include "SALOMEDSImpl_Study.hxx"
+#include "SALOMEDSImpl_SObject.hxx"
+#include "SALOMEDSImpl_SComponent.hxx"
+#include "SALOMEDSImpl_AttributeIOR.hxx"
 
-#include "SALOMEDS_Tool.hxx"
-#include "HDFexplorer.hxx"
-
-// IDL headers
-#include <SALOMEconfig.h>
-#include CORBA_SERVER_HEADER(SALOMEDS_Attributes)
+#include <TColStd_HArray1OfCharacter.hxx>
+#include <TCollection_ExtendedString.hxx>
+#include <TCollection_AsciiString.hxx>
 
-#include "SALOME_GenericObj_i.hh"
 #include "Utils_CorbaException.hxx"
-#include "Utils_ExceptHandlers.hxx"
-
-UNEXPECT_CATCH(SalomeException,SALOME::SALOME_Exception);
-UNEXPECT_CATCH(LockProtection, SALOMEDS::StudyBuilder::LockProtection);
-
-#define USE_CASE_LABEL_ID             "0:2"
-#define AUTO_SAVE_GUID                "128268A3-71C9-4036-89B1-F81BD6A4FCF2"
-#define AUTO_SAVE_TAG                 "0:8"
-#define AUTO_SAVE_TIME_OUT_IN_SECONDS 1200
-
-#include "utilities.h"
 
+#include <strstream>
+#include <map>
 using namespace std;
 
-//===========================================================================
-namespace SALOMEDS{
-
-  CORBA::Object_var 
-  GetObject(const TDF_Label& theLabel, CORBA::ORB_ptr theORB)
-  {
-    try {
-      Handle(SALOMEDS_IORAttribute) anAttr;
-      if(theLabel.FindAttribute(SALOMEDS_IORAttribute::GetID(),anAttr))
-       return theORB->string_to_object(TCollection_AsciiString(anAttr->Get()).ToCString());
-    }catch(...){
-    }
-    return CORBA::Object::_nil();
-  }
+#ifdef WIN32
+#include <process.h>
+#else
+#include <sys/types.h>
+#include <unistd.h>
+#endif
 
+#include "OpUtil.hxx"
 
-  PortableServer::ServantBase_var 
-  GetServant(CORBA::Object_ptr theObject, PortableServer::POA_ptr thePOA)
-  {
-    if(CORBA::is_nil(theObject))
-      return NULL;
-    try{
-      return thePOA->reference_to_servant(theObject);
-    }catch(...){
-      return NULL;
-    }
-  }
-
-}
-
-//===========================================================================
-//Function : LoadAttributes
-//===========================================================================
-static 
-void 
-ReadAttributes(SALOMEDS_Study_i* theStudy,
-              SALOMEDS::SObject_ptr aSO,
-              HDFdataset* hdf_dataset)
-{
-  hdf_dataset->OpenOnDisk();
-
-  SALOMEDS::GenericAttribute_var anAttr;
-
-  char* current_string = new char[hdf_dataset->GetSize()];
-  hdf_dataset->ReadFromDisk(current_string);
-
-  if (!strcmp(hdf_dataset->GetName(),"COMPONENTDATATYPE")) {
-    anAttr = theStudy->GetBuilder()->FindOrCreateAttribute(aSO, "AttributeComment");
-  } else if (!strcmp(hdf_dataset->GetName(),"Reference")) {
-    theStudy->GetBuilder()->Addreference(aSO, theStudy->CreateObjectID(current_string));
-    delete(current_string);
-    hdf_dataset->CloseOnDisk();
-    return;
-  } else {
-    MESSAGE("Read attribute "<<hdf_dataset->GetName())
-    anAttr = theStudy->GetBuilder()->FindOrCreateAttribute(aSO, hdf_dataset->GetName());
-  }
-
-  if (!CORBA::is_nil(anAttr)) {
-    anAttr->Restore(current_string);
-    MESSAGE("Restoring attribute "<<hdf_dataset->GetName()<<" by string '"<<current_string<<"' done")
-  } else {
-    MESSAGE(hdf_dataset->GetName());
-    MESSAGE("LoadAttributes: unknown types");
-  }
-  delete(current_string);
-  hdf_dataset->CloseOnDisk();
-}
+#include "SALOME_GenericObj_i.hh"
 
-//============================================================================
-//Function : Translate_IOR_to_persistentID
-//============================================================================
-static void Translate_IOR_to_persistentID(SALOMEDS_Study_i* theStudy,
-                                         SALOMEDS_StudyBuilder_i* theBuilder,
-                                         SALOMEDS::SObject_ptr theSObject,
-                                         SALOMEDS::Driver_ptr theEngine,
-                                         CORBA::Boolean theIsMultiFile,
-                                         CORBA::Boolean theIsASCII)
-{
-  MESSAGE("In Translate_IOR_to_persistentID");
-  SALOMEDS_ChildIterator_i anIter = theStudy->GetChildIterator(theSObject);
-  for(; anIter.More(); anIter.Next()){
-    SALOMEDS::GenericAttribute_var anAttr;
-    SALOMEDS::SObject_var aSObject = anIter.Value();
-    if(aSObject->FindAttribute(anAttr,"AttributeIOR")){
-      SALOMEDS::AttributeIOR_var anIOR = SALOMEDS::AttributeIOR::_narrow(anAttr);
-      CORBA::String_var aString = anIOR->Value();
-      CORBA::String_var aPersistentID = 
-       theEngine->IORToLocalPersistentID(aSObject,aString,theIsMultiFile,theIsASCII);
-      anAttr = theBuilder->FindOrCreateAttribute(aSObject,"AttributePersistentRef");
-      SALOMEDS::AttributePersistentRef_var aPersistentRef = SALOMEDS::AttributePersistentRef::_narrow(anAttr);
-      aPersistentRef->SetValue(aPersistentID);
-      aString = aSObject->GetID();
-    }
-    Translate_IOR_to_persistentID(theStudy,theBuilder,aSObject,theEngine,theIsMultiFile,theIsASCII);
-  }
-}
+#include "Utils_ExceptHandlers.hxx"
 
-//============================================================================
-//Function : BuildlTree
-//============================================================================
-static 
-void 
-BuildTree(SALOMEDS_Study_i* theStudy, HDFgroup* hdf_current_group)
-{
-  hdf_current_group->OpenOnDisk();
-  
-  SALOMEDS::SObject_var aSO;
-  char* Entry = hdf_current_group->GetName();
-  if (strcmp(Entry,"STUDY_STRUCTURE") == 0) {
-    MESSAGE("find the root of the document");
-    aSO = theStudy->CreateObjectID("0:1");
-  }
-  else {
-    aSO = theStudy->CreateObjectID(Entry);
-    MESSAGE("BuildTree : Create a new label"<<Entry);
-  }
-  char name[HDF_NAME_MAX_LEN+1];
-  Standard_Integer nbsons = hdf_current_group->nInternalObjects(); 
-  
-  for (Standard_Integer i=0; i<nbsons; i++) {
-    hdf_current_group->InternalObjectIndentify(i,name);
-    if (strncmp(name, "INTERNAL_COMPLEX",16) == 0) continue;
-    hdf_object_type type = hdf_current_group->InternalObjectType(name);
-
-    if  (type == HDF_DATASET) {
-      MESSAGE("--> Dataset: Internal Object Name : " << name);
-      HDFdataset* new_dataset = new HDFdataset(name,hdf_current_group);
-      ReadAttributes(theStudy,aSO,new_dataset);      
-      new_dataset = 0; // will be deleted by father destructor
+UNEXPECT_CATCH(SalomeException,SALOME::SALOME_Exception);
+UNEXPECT_CATCH(LockProtection, SALOMEDS::StudyBuilder::LockProtection);
 
-    }
-    else if (type == HDF_GROUP)   {
-      MESSAGE( "--> Group: Internal Object Name : " << name);
-      HDFgroup* new_group = new HDFgroup(name,hdf_current_group);
-      BuildTree(theStudy, new_group);
-      new_group = 0; // will be deleted by father destructor
-    }
-  }
-  hdf_current_group->CloseOnDisk();
-}
+static SALOMEDS_Driver_i* GetDriver(const Handle(SALOMEDSImpl_SObject)& theObject, CORBA::ORB_ptr orb);
 
+static std::map<int, PortableServer::POA_ptr> _mapOfPOA;
 
 //============================================================================
 /*! Function : SALOMEDS_StudyManager_i
- *  Purpose  : SALOMEDS_StudyManager_i constructor 
+ *  Purpose  : SALOMEDS_StudyManager_i constructor
  */
 //============================================================================
-SALOMEDS_StudyManager_i::SALOMEDS_StudyManager_i(CORBA::ORB_ptr theORB, 
-                                                PortableServer::POA_ptr thePOA):
-  _orb(CORBA::ORB::_duplicate(theORB)),
-  _poa(PortableServer::POA::_duplicate(thePOA)),
-  _OCAFApp(new SALOMEDS_OCAFApplication()),
-  _name_service(theORB)
-{ 
+SALOMEDS_StudyManager_i::SALOMEDS_StudyManager_i(CORBA::ORB_ptr orb, PortableServer::POA_ptr thePOA)
+{
+  _orb = CORBA::ORB::_duplicate(orb);
+  _poa = PortableServer::POA::_duplicate(thePOA);
+  _name_service = new SALOME_NamingService(_orb);
   // Study directory creation in the naming service : to register all
   // open studies in the session
-  _name_service.Create_Directory("/Study");
-  _IDcounter = 0;
+  _name_service->Create_Directory("/Study");
+  _impl = new SALOMEDSImpl_StudyManager;
+  _factory = new SALOMEDS_DriverFactory_i(_orb);
 }
 
 //============================================================================
@@ -250,30 +70,20 @@ SALOMEDS_StudyManager_i::SALOMEDS_StudyManager_i(CORBA::ORB_ptr theORB,
 SALOMEDS_StudyManager_i::~SALOMEDS_StudyManager_i()
 {
   // Destroy directory to register open studies
-  _name_service.Destroy_Directory("/Study");
-}
-
-SALOMEDS_Study_i* 
-SALOMEDS_StudyManager_i::DownCast(SALOMEDS::Study_ptr theStudy) const
-{
-  if(!CORBA::is_nil(theStudy)){
-    PortableServer::POA_var aPOA = GetPOA();
-    PortableServer::ServantBase_var aServant = SALOMEDS::GetServant(theStudy,aPOA);
-    if(aServant.in())
-      return dynamic_cast<SALOMEDS_Study_i*>(aServant.in());
-  }
-  return NULL;
+  _name_service->Destroy_Directory("/Study");
+  delete _factory;
 }
 
 //============================================================================
 /*! Function : register_name
- *  Purpose  : Register the study Manager in the naming service under the  
+ *  Purpose  : Register the study Manager in the naming service under the
  *             context name
  */
 //============================================================================
-void SALOMEDS_StudyManager_i::register_name(char * theName) {
+void SALOMEDS_StudyManager_i::register_name(char * name)
+{
   SALOMEDS::StudyManager_var aManager(_this());
-  _name_service.Register(aManager.in(),theName);
+  _name_service->Register(aManager.in(), name);
 }
 
 
@@ -282,45 +92,36 @@ void SALOMEDS_StudyManager_i::register_name(char * theName) {
  *  Purpose  : Create a New Study of name study_name
  */
 //============================================================================
-SALOMEDS::Study_ptr SALOMEDS_StudyManager_i::NewStudy(const char* theStudyName) 
+SALOMEDS::Study_ptr SALOMEDS_StudyManager_i::NewStudy(const char* study_name)
 {
-  Handle(TDocStd_Document) aDocument;
-  _OCAFApp->NewDocument("SALOME_STUDY",aDocument); 
+  SALOMEDS::Locker lock;
+
+  Handle(SALOMEDSImpl_Study) aStudyImpl = _impl->NewStudy(TCollection_AsciiString((char*)study_name));
+  if(aStudyImpl.IsNull()) {
+    MESSAGE("NewStudy : Error : " << _impl->GetErrorCode());
+    return SALOMEDS::Study::_nil();
+  }
 
   MESSAGE("NewStudy : Creating the CORBA servant holding it... ");
-  SALOMEDS_Study_i* aStudyServant = new SALOMEDS_Study_i(this,aDocument,theStudyName); 
-  SALOMEDS::Study_var aStudy = aStudyServant->_this();
 
-  //Study->StudyId( _OCAFApp->NbDocuments() ); 
-  _IDcounter++;
-  aStudyServant->StudyId( _IDcounter );
+  SALOMEDS_Study_i *Study_servant = new SALOMEDS_Study_i(aStudyImpl, _orb);
+  SALOMEDS::Study_var Study = SALOMEDS::Study::_narrow(Study_servant->_this());
 
   // Register study in the naming service
   // Path to acces the study
-  if(!_name_service.Change_Directory("/Study")){
-    MESSAGE( "Unable to access the study directory" );
-  }else
-    _name_service.Register(aStudy, theStudyName);
-                                                  
+  if(!_name_service->Change_Directory("/Study"))
+      MESSAGE( "Unable to access the study directory" )
+  else
+      _name_service->Register(Study, study_name);
+
   // Assign the value of the IOR in the study->root
-  CORBA::String_var anIOR = _orb->object_to_string(aStudy);
-  SALOMEDS_IORAttribute::Set(aDocument->Main().Root(),
-                            const_cast<char*>(anIOR.in()),
-                            aStudyServant);
-
-  // set Study properties
-  SALOMEDS::AttributeStudyProperties_var aProp = aStudyServant->GetProperties();
-  OSD_Process aProcess;
-  Quantity_Date aDate = aProcess.SystemDate();
-  aProp->SetCreationDate(CORBA::Long(aDate.Minute()), 
-                        CORBA::Long(aDate.Hour()), 
-                        CORBA::Long(aDate.Day()),
-                        CORBA::Long(aDate.Month()), 
-                        CORBA::Long(aDate.Year()));
-  aProp->SetCreationMode("from scratch");
-  aProp->SetUserName(aProcess.UserName().ToCString());
+  const char*  IORStudy = _orb->object_to_string(Study);
 
-  return aStudy._retn();
+  aStudyImpl->SetTransientReference((char*)IORStudy);
+
+  _mapOfPOA[Study->StudyId()] = _poa;
+
+  return Study;
 }
 
 //============================================================================
@@ -328,98 +129,32 @@ SALOMEDS::Study_ptr SALOMEDS_StudyManager_i::NewStudy(const char* theStudyName)
  *  Purpose  : Open a Study from it's persistent reference
  */
 //============================================================================
-SALOMEDS::Study_ptr  SALOMEDS_StudyManager_i::Open(const char* theURL)
+SALOMEDS::Study_ptr  SALOMEDS_StudyManager_i::Open(const char* aUrl)
      throw(SALOME::SALOME_Exception)
 {
+  SALOMEDS::Locker lock;
+
   Unexpect aCatch(SalomeException);
   MESSAGE("Begin of SALOMEDS_StudyManager_i::Open");
 
-  bool isASCII = false;
-  std::ostringstream anURLStream;
-  if (HDFascii::isASCII(theURL)) {
-    isASCII = true;
-    auto_ptr<char> aResultPath(HDFascii::ConvertFromASCIIToHDF(theURL));
-    anURLStream<<aResultPath.get()<<"hdf_from_ascii.hdf";
-  } else {
-    anURLStream<<theURL;
-  }
-  std::string aHDFUrl = anURLStream.str();
-
-  // open the HDFFile (all related hdf objects will be deleted     )
-  auto_ptr<HDFfile> hdf_file(new HDFfile(const_cast<char*>(aHDFUrl.c_str())));
+  Handle(SALOMEDSImpl_Study) aStudyImpl = _impl->Open(TCollection_AsciiString((char*)aUrl));
 
-  try {
-    hdf_file->OpenOnDisk(HDF_RDONLY);// mpv: was RDWR, but opened file can be write-protected too
-  }catch(HDFexception){
-    std::ostringstream aStream;
-    aStream<<"Can't open file "<<theURL;
-    std::string eStr = aStream.str();
-    THROW_SALOME_CORBA_EXCEPTION(eStr.c_str(),SALOME::BAD_PARAM);
-  } 
   MESSAGE("Open : Creating the CORBA servant holding it... ");
 
   // Temporary aStudyUrl in place of study name
-  Handle(TDocStd_Document) Doc;
-  _OCAFApp->NewDocument("SALOME_STUDY",Doc); 
-
-  SALOMEDS_Study_i* aStudyServant = new SALOMEDS_Study_i(this,Doc,theURL);  
-  SALOMEDS::Study_var aStudy = aStudyServant->_this(); 
-
-  //  aStudy->StudyId( _OCAFApp->NbDocuments() ); 
-  _IDcounter++;
-  aStudy->StudyId( _IDcounter );
-
-  // Assign the value of the URL in the study object
-  aStudyServant->URL(theURL);
-  SCRUTE(theURL);
+  SALOMEDS_Study_i * Study_servant = new SALOMEDS_Study_i(aStudyImpl, _orb);
+  SALOMEDS::Study_var Study = SALOMEDS::Study::_narrow(Study_servant->_this());
 
   // Assign the value of the IOR in the study->root
-  CORBA::String_var anIOR = _orb->object_to_string(aStudy);
-  SALOMEDS_IORAttribute::Set(Doc->Main().Root(),
-                            const_cast<char*>(anIOR.in()),
-                            aStudyServant);
-
-  SALOMEDS_PersRefAttribute::Set(Doc->Main(),const_cast<char*>(theURL)); 
-
-  if (!hdf_file->ExistInternalObject("STUDY_STRUCTURE")) {
-    MESSAGE("SALOMEDS_StudyManager::Open : the study is empty");
-    return aStudy._retn();
-  }
-
-  //Create  the Structure of the OCAF Document
-  HDFgroup *hdf_group_study_structure = new HDFgroup("STUDY_STRUCTURE",hdf_file.get());
-
-  Handle(TDF_Data) DF = Doc->GetData();
-
-  try{
-    BuildTree(aStudyServant,hdf_group_study_structure);
-  }catch(HDFexception){
-    std::ostringstream aStream;
-    aStream<<"Can't open file "<<theURL;
-    std::string eStr = aStream.str();
-    THROW_SALOME_CORBA_EXCEPTION(eStr.c_str(),SALOME::BAD_PARAM);
-  } 
-  
-  hdf_file->CloseOnDisk();
+  CORBA::String_var IORStudy = _orb->object_to_string(Study);
+  aStudyImpl->SetTransientReference((char*)IORStudy);
 
   // Register study in the naming service
   // Path to acces the study
-  if(!_name_service.Change_Directory("/Study")){
-    MESSAGE( "Unable to access the study directory" );
-  }else{
-    CORBA::String_var aString(aStudyServant->Name());
-    _name_service.Register(aStudy,aString.in());
-  }
-
-  if (isASCII) {
-    SALOMEDS::ListOfFileNames_var aFilesToRemove = new SALOMEDS::ListOfFileNames;
-    aFilesToRemove->length(1);
-    std::string aDir = SALOMEDS_Tool::GetDirFromPath(aHDFUrl);
-    aFilesToRemove[0] = CORBA::string_dup(&aHDFUrl[strlen(aDir.c_str())]);
-    SALOMEDS_Tool::RemoveTemporaryFiles(aDir,aFilesToRemove,true);
-  }
+  if(!_name_service->Change_Directory("/Study")) MESSAGE( "Unable to access the study directory" )
+  else _name_service->Register(Study, CORBA::string_dup(aStudyImpl->Name().ToCString()));
 
-  return aStudy._retn();
+  return Study;
 }
 
 
@@ -428,22 +163,24 @@ SALOMEDS::Study_ptr  SALOMEDS_StudyManager_i::Open(const char* theURL)
 /*! Function : Close
  *  Purpose  : Close a study.
  *             If the study hasn't been saved, ask the user to confirm the
- *             close action without saving 
+ *             close action without saving
  */
 //============================================================================
-void  SALOMEDS_StudyManager_i::Close(SALOMEDS::Study_ptr aStudy)
+void SALOMEDS_StudyManager_i::Close(SALOMEDS::Study_ptr aStudy)
 {
+  SALOMEDS::Locker lock;
+
   if(aStudy->_is_nil()) return;
-  
-  aStudy->RemovePostponed(-1);
-  
+
   // Destroy study name in the naming service
-  if(_name_service.Change_Directory("/Study")){
+  if(_name_service->Change_Directory("/Study")){
     CORBA::String_var aString(aStudy->Name());
-    _name_service.Destroy_Name(aString.in());
+    _name_service->Destroy_Name(aString.in());
   }
 
+  SALOMEDS::unlock();
   aStudy->Close();
+  SALOMEDS::lock();
 }
 
 //============================================================================
@@ -451,24 +188,30 @@ void  SALOMEDS_StudyManager_i::Close(SALOMEDS::Study_ptr aStudy)
  *  Purpose  : Save a Study to it's persistent reference
  */
 //============================================================================
-void SALOMEDS_StudyManager_i::Save(SALOMEDS::Study_ptr theStudy, CORBA::Boolean theMultiFile)
+void SALOMEDS_StudyManager_i::Save(SALOMEDS::Study_ptr aStudy, CORBA::Boolean theMultiFile)
 {
-  CORBA::String_var anURL = theStudy->URL();
-  if(strcmp(anURL.in(),"") == 0){
-    MESSAGE( "No path specified to save the study. Nothing done");
-  }else{
-    _SaveAs(anURL,theStudy,theMultiFile,false);
+  SALOMEDS::Locker lock;
+
+  if(aStudy->_is_nil()) {
+    MESSAGE("Save error: Study is null");
+    return;
   }
+
+  Handle(SALOMEDSImpl_Study) aStudyImpl = _impl->GetStudyByID(aStudy->StudyId());
+  _impl->Save(aStudyImpl, _factory, theMultiFile);
 }
 
-void SALOMEDS_StudyManager_i::SaveASCII(SALOMEDS::Study_ptr theStudy, CORBA::Boolean theMultiFile)
+void SALOMEDS_StudyManager_i::SaveASCII(SALOMEDS::Study_ptr aStudy, CORBA::Boolean theMultiFile)
 {
-  CORBA::String_var anURL = theStudy->URL();
-  if(strcmp(anURL.in(),"") == 0){
-    MESSAGE( "No path specified to save the study. Nothing done");
-  }else{
-    _SaveAs(anURL,theStudy,theMultiFile,true);
+  SALOMEDS::Locker lock;
+
+  if(aStudy->_is_nil()) {
+    MESSAGE("SaveASCII error: Study is null");
+    return;
   }
+
+  Handle(SALOMEDSImpl_Study) aStudyImpl = _impl->GetStudyByID(aStudy->StudyId());
+  _impl->SaveASCII(aStudyImpl, _factory, theMultiFile);
 }
 
 //=============================================================================
@@ -476,15 +219,30 @@ void SALOMEDS_StudyManager_i::SaveASCII(SALOMEDS::Study_ptr theStudy, CORBA::Boo
  *  Purpose  : Save a study to the persistent reference aUrl
  */
 //============================================================================
-void SALOMEDS_StudyManager_i::SaveAs(const char* aUrl, SALOMEDS::Study_ptr theStudy, CORBA::Boolean theMultiFile)
+void SALOMEDS_StudyManager_i::SaveAs(const char* aUrl, SALOMEDS::Study_ptr aStudy, CORBA::Boolean theMultiFile)
 {
-  _SaveAs(aUrl,theStudy,theMultiFile, false);
+  SALOMEDS::Locker lock;
+
+  if(aStudy->_is_nil()) {
+    MESSAGE("SaveASCII error: Study is null");
+    return;
+  }
 
+  Handle(SALOMEDSImpl_Study) aStudyImpl = _impl->GetStudyByID(aStudy->StudyId());
+  _impl->SaveAs(TCollection_AsciiString((char*)aUrl), aStudyImpl, _factory, theMultiFile);
 }
 
-void SALOMEDS_StudyManager_i::SaveAsASCII(const char* aUrl, SALOMEDS::Study_ptr theStudy, CORBA::Boolean theMultiFile)
+void SALOMEDS_StudyManager_i::SaveAsASCII(const char* aUrl, SALOMEDS::Study_ptr aStudy, CORBA::Boolean theMultiFile)
 {
-  _SaveAs(aUrl,theStudy,theMultiFile, true);
+  SALOMEDS::Locker lock;
+
+  if(aStudy->_is_nil()) {
+    MESSAGE("SaveASCII error: Study is null");
+    return;
+  }
+
+  Handle(SALOMEDSImpl_Study) aStudyImpl = _impl->GetStudyByID(aStudy->StudyId());
+  _impl->SaveAsASCII(TCollection_AsciiString((char*)aUrl), aStudyImpl, _factory, theMultiFile);
 }
 
 //============================================================================
@@ -494,21 +252,28 @@ void SALOMEDS_StudyManager_i::SaveAsASCII(const char* aUrl, SALOMEDS::Study_ptr
 //============================================================================
 SALOMEDS::ListOfOpenStudies*  SALOMEDS_StudyManager_i::GetOpenStudies()
 {
-  // MESSAGE("Begin of GetOpenStudies");
-  SALOMEDS::ListOfOpenStudies_var aStudyList = new SALOMEDS::ListOfOpenStudies;
-
-  if(!_name_service.Change_Directory("/Study")){
-    MESSAGE("No active study in this session");
-  }else{
-    vector<string> aList = _name_service.list_directory();
-    aStudyList->length(aList.size());
-    for(unsigned int ind = 0; ind < aList.size(); ind++){
-      aStudyList[ind] = CORBA::string_dup(aList[ind].c_str());
-      SCRUTE(aStudyList[ind]) ;
-    }
-  }
+  SALOMEDS::Locker lock;
+
+  Handle(TColStd_HSequenceOfTransient) anOpened = _impl->GetOpenStudies();
+  int aLength = anOpened->Length();
+
+  SALOMEDS::ListOfOpenStudies_var _list_open_studies = new SALOMEDS::ListOfOpenStudies;
+  _list_open_studies->length(aLength);
 
-  return aStudyList._retn();
+  if(!aLength)
+    {
+      MESSAGE("No active study in this session");
+    }
+  else
+    {
+      for (unsigned int ind=1; ind <= aLength; ind++)
+       {
+         Handle(SALOMEDSImpl_Study) aStudy = Handle(SALOMEDSImpl_Study)::DownCast(anOpened->Value(ind));
+         _list_open_studies[ind-1] = CORBA::string_dup(aStudy->Name().ToCString());
+         SCRUTE(_list_open_studies[ind-1]) ;
+       }
+    }
+  return _list_open_studies._retn();
 }
 
 //============================================================================
@@ -516,25 +281,22 @@ SALOMEDS::ListOfOpenStudies*  SALOMEDS_StudyManager_i::GetOpenStudies()
  *  Purpose  : Get a study from its name
  */
 //============================================================================
-SALOMEDS::Study_ptr  
-SALOMEDS_StudyManager_i::GetStudyByName(const char* theStudyName) 
+SALOMEDS::Study_ptr SALOMEDS_StudyManager_i::GetStudyByName(const char* aStudyName)
 {
-  SALOMEDS::Study_var aStudy;
+  SALOMEDS::Locker lock;
 
-  // Go to study directory and look for aStudyName
-  if(!_name_service.Change_Directory("/Study")){
-    MESSAGE("No active study in this session");
-    ASSERT(false); // Stop here...
-  }
-  
-  if(_name_service.Find(theStudyName) > 0){
-    // Study found
-    CORBA::Object_ptr anObj = _name_service.Resolve(theStudyName) ;
-    aStudy = SALOMEDS::Study::_narrow(anObj);
-    MESSAGE("Study " << theStudyName << " found in the naming service");
-  }else{
-    MESSAGE("Study " << theStudyName << " not found in the naming service");
+  Handle(SALOMEDSImpl_Study) aStudyImpl =
+    _impl->GetStudyByName(TCollection_AsciiString((char*)aStudyName));
+
+  if (aStudyImpl.IsNull())
+  {
+    MESSAGE(_impl->GetErrorCode().ToCString());
+    return SALOMEDS::Study::_nil();
   }
+
+  SALOMEDS_Study_i* aStudy_servant = new SALOMEDS_Study_i(aStudyImpl, _orb);
+  SALOMEDS::Study_var aStudy = SALOMEDS::Study::_narrow(aStudy_servant->_this());
+
   return aStudy._retn();
 }
 
@@ -543,552 +305,42 @@ SALOMEDS_StudyManager_i::GetStudyByName(const char* theStudyName)
  *  Purpose  : Get a study from its ID
  */
 //============================================================================
-SALOMEDS::Study_ptr  
-SALOMEDS_StudyManager_i::GetStudyByID(CORBA::Short aStudyID) 
+SALOMEDS::Study_ptr SALOMEDS_StudyManager_i::GetStudyByID(CORBA::Short aStudyID)
 {
-  SALOMEDS::Study_var aStudy;
-
-  if(!_name_service.Change_Directory("/Study")){
-    MESSAGE("No active study in this session");
-  }else{
-    vector<string> aList = _name_service.list_directory();
-    for(unsigned int ind = 0; ind < aList.size(); ind++){
-      const char* aStudyName = aList[ind].c_str();
-      MESSAGE( "GetStudyByID = " << aStudyName );
-      if(_name_service.Find(aStudyName) > 0){
-       CORBA::Object_ptr anObj = _name_service.Resolve(aStudyName) ;
-       aStudy = SALOMEDS::Study::_narrow(anObj);
-       MESSAGE( " aStudyID : " << aStudyID << "-" << aStudy->StudyId() );
-       if(aStudyID == aStudy->StudyId()){
-         MESSAGE("Study with studyID = " << aStudyID << " found in the naming service");
-         return aStudy._retn();
-       }
-      }else{
-       MESSAGE("Study " << aStudyName << " not found in the naming service");
-      }
-    }
-  }
-  
-  return aStudy._retn();
-}
-//============================================================================
-/*! Function : SaveAttributes
- *  Purpose  : Save attributes for object
- */
-//============================================================================
-static void SaveAttributes(SALOMEDS::SObject_ptr SO, HDFgroup *hdf_group_sobject) {
-  int a;
-  hdf_size size[1];
-  SALOMEDS::ListOfAttributes_var anAttrList = SO->GetAllAttributes();
-  for(a = anAttrList->length() - 1; a >= 0; a--) {
-    if (strcmp(anAttrList[a]->Type(), "AttributeIOR") == 0) continue; // never write AttributeIOR to file
-    if (strcmp(anAttrList[a]->Type(), "AttributeExternalFileDef") == 0) continue; // never write ExternalFileDef to file
-    if (strcmp(anAttrList[a]->Type(), "AttributeFileType") == 0) continue; // never write FileType to file
-    CORBA::String_var aSaveStr(anAttrList[a]->Store());
-    size[0] = (hdf_int32) strlen(aSaveStr.in()) + 1;
-    HDFdataset *hdf_dataset = new HDFdataset(anAttrList[a]->Type(),hdf_group_sobject,HDF_STRING,size,1);
-    hdf_dataset->CreateOnDisk();
-    hdf_dataset->WriteOnDisk(aSaveStr);
-    hdf_dataset->CloseOnDisk();
-    //cout<<"********** Write Attribute "<<anAttrList[a]->Type()<<" : "<<aSaveStr<<" done"<<endl;
-    hdf_dataset = 0; //will be deleted by hdf_sco_group destructor
-  }
+  SALOMEDS::Locker lock;
 
-  // Reference attribute has no CORBA attribute representation, so, GetAllAttributes can not return this attribute
-  SALOMEDS::SObject_var RefSO;
-  if(SO->ReferencedObject(RefSO)) {
-    CORBA::String_var attribute_reference(RefSO->GetID());
-    size[0] = strlen(attribute_reference) + 1 ; 
-    HDFdataset *hdf_dataset = new HDFdataset("Reference",hdf_group_sobject,HDF_STRING,size,1);
-    hdf_dataset->CreateOnDisk();
-    hdf_dataset->WriteOnDisk(attribute_reference);
-    hdf_dataset->CloseOnDisk();
-    hdf_dataset = 0; // will be deleted by father hdf object destructor
-  }
-}
+  Handle(SALOMEDSImpl_Study) aStudyImpl = _impl->GetStudyByID(aStudyID);
 
-//=============================================================================
-/*! Function : _SaveProperties
- *  Purpose  : save the study properties in HDF file
- */
-//============================================================================
-void SALOMEDS_StudyManager_i::_SaveProperties(SALOMEDS_Study_i* theStudy, HDFgroup *hdf_group) 
-{
-  // add modifications list (user and date of save)
-  SALOMEDS::AttributeStudyProperties_ptr aProp = theStudy->GetProperties();
-  int aLocked = aProp->IsLocked();
-  if (aLocked) 
-    aProp->SetLocked(Standard_False);
-  OSD_Process aProcess;
-  Quantity_Date aDate = aProcess.SystemDate();
-  aProp->SetModification(aProcess.UserName().ToCString(),
-                        CORBA::Long(aDate.Minute()), 
-                        CORBA::Long(aDate.Hour()), 
-                        CORBA::Long(aDate.Day()),
-                        CORBA::Long(aDate.Month()), 
-                        CORBA::Long(aDate.Year()));
-  if(aLocked) 
-    aProp->SetLocked(Standard_True);
-
-  SALOMEDS::StringSeq_var aNames;
-  SALOMEDS::LongSeq_var aMinutes, aHours, aDays, aMonths, aYears;
-  aProp->GetModificationsList(aNames,aMinutes,aHours,aDays,aMonths,aYears,true);
-
-  std::ostringstream aPropertyList;
-  aPropertyList<<(strlen(aProp->GetCreationMode()) != 0? aProp->GetCreationMode()[0] : '0');
-  aPropertyList<<(aProp->IsLocked()? 'l': 'u');
-
-  int aLength = aNames->length();
-  for(int anIndex = 0; anIndex  < aLength; anIndex++) {
-    aPropertyList<<std::setw(2)<<aMinutes[anIndex];
-    aPropertyList<<std::setw(2)<<aHours[anIndex];
-    aPropertyList<<std::setw(2)<<aDays[anIndex];
-    aPropertyList<<std::setw(2)<<aMonths[anIndex];
-    aPropertyList<<std::setw(4)<<aYears[anIndex];
-    aPropertyList<<aNames[anIndex];
-    aPropertyList<<char(0x1);
+  if (aStudyImpl.IsNull())
+  {
+    MESSAGE(_impl->GetErrorCode().ToCString());
+    return SALOMEDS::Study::_nil();
   }
-  std::string aProperty = aPropertyList.str();
-
-  hdf_size size[] = {aProperty.size() + 1};
-  HDFdataset *hdf_dataset = new HDFdataset("AttributeStudyProperties",hdf_group,HDF_STRING,size,1);
-  hdf_dataset->CreateOnDisk();
-  hdf_dataset->WriteOnDisk(const_cast<char*>(aProperty.c_str()));
-  MESSAGE("attribute StudyProperties " <<  aProperty << " wrote on file");
-  hdf_dataset->CloseOnDisk();
-  hdf_dataset = 0; //will be deleted by hdf_sco_group destructor
-  aProp->SetModified(0);
-}
 
-//=============================================================================
-/*! Function : _SaveAs
- *  Purpose  : save the study in HDF file
- */
-//============================================================================
-void SALOMEDS_StudyManager_i::_SaveAs(const char* aUrl, 
-                                     SALOMEDS::Study_ptr theStudy,
-                                     CORBA::Boolean theMultiFile,
-                                     CORBA::Boolean theASCII)
-{
-  // HDF File will be composed of differents part :
-  // * For each ComponentDataType, all data created by the component
-  //   Informations in data group hdf_group_datacomponent
-  // * Study Structure -> Exactly what is contained in OCAF document
-  //   Informations in data group hdf_group_study_structure
-
-  if(SALOMEDS_Study_i* aStudy = DownCast(theStudy)){
-    HDFfile *hdf_file=0;         
-    HDFgroup *hdf_group_study_structure =0;
-    HDFgroup *hdf_sco_group =0;
-    HDFgroup *hdf_sco_group2 =0;
-
-    HDFgroup *hdf_group_datacomponent =0;
-    HDFdataset *hdf_dataset =0;
-    hdf_size size[1];
-    hdf_int32 name_len = 0;
-  
-    int aLocked = aStudy->GetProperties()->IsLocked();
-    if(aLocked) 
-      aStudy->GetProperties()->SetLocked(false);
-
-    SALOMEDS_StudyBuilder_i* SB= aStudy->GetBuilder();
-    try{
-      // mpv 15.12.2003: for saving components we have to load all data from all modules
-      SALOMEDS_SComponentIterator_i aComponentIter = aStudy->GetComponentIterator();
-      for(; aComponentIter.More(); aComponentIter.Next()){
-       SALOMEDS::SComponent_var sco = aComponentIter.Value();
-       // if there is an associated Engine call its method for saving
-       CORBA::String_var IOREngine;
-       try{
-         if(!sco->ComponentIOR(IOREngine)){
-           SALOMEDS::GenericAttribute_var aGeneric;
-           SALOMEDS::AttributeName_var aName;
-           if(sco->FindAttribute(aGeneric, "AttributeName"))
-             aName = SALOMEDS::AttributeName::_narrow(aGeneric);
-           
-           if(!aName->_is_nil()){
-             CORBA::String_var aCompType = aName->Value();
-
-             CORBA::String_var aFactoryType;
-             if(strcmp(aCompType, "SUPERV") == 0) 
-               aFactoryType = "SuperVisionContainer";
-             else
-               aFactoryType = "FactoryServer";
-             
-             Engines::Component_var aComp =
-               SALOME_LifeCycleCORBA(&_name_service).FindOrLoad_Component(aFactoryType, aCompType);
-               
-             if(aComp->_is_nil()){
-               Engines::Component_var aComp =
-                 SALOME_LifeCycleCORBA(&_name_service).FindOrLoad_Component("FactoryServerPy", aCompType);
-             }
-               
-             if(!aComp->_is_nil()){
-               SALOMEDS::Driver_var aDriver = SALOMEDS::Driver::_narrow(aComp);
-               if (!CORBA::is_nil(aDriver)) {
-                 SB->LoadWith(sco, aDriver);
-               }
-             }
-           }
-         }
-       }catch(...){
-         MESSAGE("Can not restore information to resave it");
-         return;
-       }
-      }
-
-      CORBA::String_var anOldName = aStudy->Name();
-      aStudy->URL(aUrl);
-
-      // To change for Save 
-      // Do not have to do a new file but just a Open??? Rewrite all informations after erasing evrything??
-      hdf_file = new HDFfile((char *)aUrl);
-      hdf_file->CreateOnDisk();
-      MESSAGE("File " << aUrl << " created");
-
-      //-----------------------------------------------------------------------
-      // 1 - Create a groupe for each SComponent and Update the PersistanceRef
-      //-----------------------------------------------------------------------
-      hdf_group_datacomponent = new HDFgroup("DATACOMPONENT",hdf_file);
-      hdf_group_datacomponent->CreateOnDisk();
-
-      //SRN: Added 17 Nov, 2003
-      SALOMEDS::SObject_var anAutoSaveSO = aStudy->FindObjectID(AUTO_SAVE_TAG);
-      //SRN: End
-
-      aComponentIter.Init();
-      for(; aComponentIter.More(); aComponentIter.Next()){
-       SALOMEDS::SComponent_var sco = aComponentIter.Value();
-         
-       CORBA::String_var scoid = sco->GetID();
-       hdf_sco_group = new HDFgroup(scoid,hdf_group_datacomponent);
-       hdf_sco_group->CreateOnDisk();
-       
-       CORBA::String_var componentDataType = sco->ComponentDataType();
-       MESSAGE ( "Look for  an engine for data type :"<< componentDataType);
-       
-       //SRN: Added 17 Nov 2003: If there is a specified attribute, the component peforms a special save         
-       if(!CORBA::is_nil(anAutoSaveSO) && SB->IsGUID(sco, AUTO_SAVE_GUID)){        
-         SALOMEDS::GenericAttribute_var aGeneric;
-         SALOMEDS::AttributeTableOfString_var aTable;
-         if(anAutoSaveSO->FindAttribute(aGeneric, "AttributeTableOfString")){
-           aTable = SALOMEDS::AttributeTableOfString::_narrow(aGeneric);
-           Standard_Integer nbRows = aTable->GetNbRows(), k, aTimeOut = 0;
-           if(nbRows > 0 && aTable->GetNbColumns() > 1) {      
-             SALOMEDS::StringSeq_var aRow;
-             for(k=1; k<=nbRows; k++){
-               aRow = aTable->GetRow(k);
-               if(strcmp(aRow[0], componentDataType) == 0){
-                 CORBA::String_var anEntry = CORBA::string_dup(aRow[1]);
-                 SALOMEDS::SObject_var aCompSpecificSO = aStudy->FindObjectID(anEntry);
-                 if(!CORBA::is_nil(aCompSpecificSO)) {
-                   SALOMEDS::AttributeInteger_var anInteger;
-                   if(aCompSpecificSO->FindAttribute(aGeneric, "AttributeInteger")) {
-                     anInteger = SALOMEDS::AttributeInteger::_narrow(aGeneric);
-                     anInteger->SetValue(-1);
-                     while(anInteger->Value() < 0) { sleep(2); if(++aTimeOut > AUTO_SAVE_TIME_OUT_IN_SECONDS) break; }
-                   }  // if(aCompSpecificSO->FindAttribute(anInteger, "AttributeInteger"))
-                 }  // if(!CORBA::is_nil(aCompSpecificSO)) 
-               }  // if (strcmp(aRow[0], componentDataType) == 0)
-             }  // for
-             
-           }  // if(nbRows > 0 && aTable->GetNbColumns() > 1)
-           
-         }  // if(anAutoSaveSO->FindAttribute(aTable, "AttributeTableOfString")
-         
-       }  // if(SB->IsGUID(AUTO_SAVE_GUID)
-       
-       //SRN: End
-       
-       CORBA::String_var IOREngine;
-       if(sco->ComponentIOR(IOREngine)){
-         // we have found the associated engine to write the data 
-         MESSAGE ( "We have found an engine for data type :"<< componentDataType);
-         CORBA::Object_var obj = _orb->string_to_object(IOREngine);
-         SALOMEDS::Driver_var Engine = SALOMEDS::Driver::_narrow(obj) ;
-         
-         if(!CORBA::is_nil(Engine)){
-           MESSAGE ( "Save the data of type:"<< componentDataType);
-           MESSAGE("Engine :"<<Engine->ComponentDataType());
-           
-           SALOMEDS::TMPFile_var aStream;
-           
-           if(theASCII) 
-             aStream = Engine->SaveASCII(sco,SALOMEDS_Tool::GetDirFromPath(aUrl).c_str(),theMultiFile);
-           else
-             aStream = Engine->Save(sco,SALOMEDS_Tool::GetDirFromPath(aUrl).c_str(),theMultiFile);
-
-           HDFdataset *hdf_dataset;
-           hdf_size aHDFSize[1];
-           if(aStream->length() > 0){  //The component saved some auxiliary files, then put them into HDF file 
-             
-             aHDFSize[0] = aStream->length();
-             
-             HDFdataset *hdf_dataset = new HDFdataset("FILE_STREAM", hdf_sco_group, HDF_STRING, aHDFSize, 1);
-             hdf_dataset->CreateOnDisk();
-             hdf_dataset->WriteOnDisk((unsigned char*) &aStream[0]);  //Save the stream in the HDF file
-             hdf_dataset->CloseOnDisk();
-           }
-           // store multifile state
-           aHDFSize[0] = 2;
-           hdf_dataset = new HDFdataset("MULTIFILE_STATE", hdf_sco_group, HDF_STRING, aHDFSize, 1);
-           hdf_dataset->CreateOnDisk();
-           hdf_dataset->WriteOnDisk((void*)(theMultiFile?"M":"S")); // save: multi or single
-           hdf_dataset->CloseOnDisk();
-           hdf_dataset=0; //will be deleted by hdf_sco_AuxFiles destructor              
-           
-           // store ASCII state
-           aHDFSize[0] = 2;
-           hdf_dataset = new HDFdataset("ASCII_STATE", hdf_sco_group, HDF_STRING, aHDFSize, 1);
-           hdf_dataset->CreateOnDisk();
-           hdf_dataset->WriteOnDisk((void*)(theASCII?"A":"B")); // save: ASCII or BINARY
-           hdf_dataset->CloseOnDisk();
-           hdf_dataset=0; //will be deleted by hdf_sco_AuxFiles destructor              
-           
-           Translate_IOR_to_persistentID(aStudy,SB,sco,Engine,theMultiFile, theASCII);
-           MESSAGE("After Translate_IOR_to_persistentID");
-                 
-           // Creation of the persistance reference  attribute
-         }
-       }
-       hdf_sco_group->CloseOnDisk();
-       hdf_sco_group=0; // will be deleted by hdf_group_datacomponent destructor
-      }
-      hdf_group_datacomponent->CloseOnDisk();
-      hdf_group_datacomponent =0;  // will be deleted by hdf_file destructor
-      
-      
-      //-----------------------------------------------------------------------
-      //3 - Write the Study Structure
-      //-----------------------------------------------------------------------
-      hdf_group_study_structure = new HDFgroup("STUDY_STRUCTURE",hdf_file);
-      hdf_group_study_structure->CreateOnDisk();
-
-      // save component attributes
-      aComponentIter.Init();
-      for(; aComponentIter.More(); aComponentIter.Next()){
-       SALOMEDS::SComponent_var SC = aComponentIter.Value();
-       
-       CORBA::String_var scid = SC->GetID();
-       hdf_sco_group2 = new HDFgroup(scid,hdf_group_study_structure);
-       hdf_sco_group2->CreateOnDisk();
-       SaveAttributes(SC, hdf_sco_group2);
-       // ComponentDataType treatment
-       CORBA::String_var component_name = SC->ComponentDataType();
-       MESSAGE("Component data type " << component_name << " treated");
-       
-       name_len = (hdf_int32) strlen(component_name.in());
-       size[0] = name_len +1 ; 
-       hdf_dataset = new HDFdataset("COMPONENTDATATYPE",hdf_sco_group2,HDF_STRING,size,1);
-       hdf_dataset->CreateOnDisk();
-       hdf_dataset->WriteOnDisk(const_cast<char*>(component_name.in()));
-       MESSAGE("component name " <<  component_name << " wrote on file");
-       hdf_dataset->CloseOnDisk();
-       hdf_dataset=0; //will be deleted by hdf_sco_group destructor
-       _SaveObject(aStudy, SC, hdf_sco_group2);
-       hdf_sco_group2->CloseOnDisk();
-       hdf_sco_group2=0; // will be deleted by hdf_group_study_structure destructor
-      }
-      //-----------------------------------------------------------------------
-      //4 - Write the Study UseCases Structure
-      //-----------------------------------------------------------------------
-      SALOMEDS::SObject_var aSO = aStudy->FindObjectID(USE_CASE_LABEL_ID);
-      if(!aSO->_is_nil()){
-       HDFgroup *hdf_soo_group = new HDFgroup(USE_CASE_LABEL_ID,hdf_group_study_structure);
-       hdf_soo_group->CreateOnDisk();
-       SaveAttributes(aSO, hdf_soo_group);
-       _SaveObject(aStudy, aSO, hdf_soo_group);
-       MESSAGE("Use cases data structure writed");
-       hdf_soo_group->CloseOnDisk();
-       hdf_soo_group=0; // will be deleted by hdf_group_study_structure destructor
-      }
-
-      if (aLocked) 
-       aStudy->GetProperties()->SetLocked(true);
-      //-----------------------------------------------------------------------
-      //5 - Write the Study Properties
-      //-----------------------------------------------------------------------
-      name_len = (hdf_int32) strlen(aStudy->Name());
-      size[0] = name_len +1 ; 
-      hdf_dataset = new HDFdataset("STUDY_NAME",hdf_group_study_structure,HDF_STRING,size,1);
-      hdf_dataset->CreateOnDisk();
-      CORBA::String_var studid = aStudy->Name();
-      hdf_dataset->WriteOnDisk(studid);
-      MESSAGE("study name " << studid << " wrote on file");
-      hdf_dataset->CloseOnDisk();
-      hdf_dataset=0; // will be deleted by hdf_group_study_structure destructor
-
-      _SaveProperties(aStudy, hdf_group_study_structure);
-
-      hdf_group_study_structure->CloseOnDisk();
-      hdf_file->CloseOnDisk();
-
-      _name_service.Change_Directory("/Study");
-      _name_service.Destroy_Name(anOldName);
-      _name_service.Register(theStudy, aStudy->Name());
-
-      aStudy->IsSaved(true);
-      hdf_group_study_structure =0; // will be deleted by hdf_file destructor
-      delete hdf_file; // recursively deletes all hdf objects...
-    }catch(HDFexception){
-      MESSAGE( "HDFexception ! " );
-    }
-    if(theASCII){ // save file in ASCII format
-      HDFascii::ConvertFromHDFToASCII(aUrl, true);
-    }
-  }
-}
+  SALOMEDS_Study_i* aStudy_servant = new SALOMEDS_Study_i(aStudyImpl, _orb);
+  SALOMEDS::Study_var aStudy = SALOMEDS::Study::_narrow(aStudy_servant->_this());
 
-//============================================================================
-/*! Function : _SaveObject
- *  Purpose  :
- */
-//============================================================================
-void SALOMEDS_StudyManager_i::_SaveObject(SALOMEDS_Study_i* theStudy, 
-                                         SALOMEDS::SObject_ptr theSObject, 
-                                         HDFgroup *hdf_group_datatype)
-{
-  // Write in group hdf_group_datatype all informations of SObject SC
-  // Iterative function to parse all SObjects under a SComponent
-  SALOMEDS::SObject_var RefSO;
-  HDFgroup *hdf_group_sobject = 0;
-
-  SALOMEDS_ChildIterator_i aChildIter = theStudy->GetChildIterator(theSObject);
-  for(; aChildIter.More(); aChildIter.Next()){
-    SALOMEDS::SObject_var aSObject = aChildIter.Value();
-    SALOMEDS::ListOfAttributes_var anAllAttributes = aSObject->GetAllAttributes();
-    
-    // mpv: don't save empty labels
-    if(anAllAttributes->length() == 0 && !aSObject->ReferencedObject(RefSO)){
-      SALOMEDS_ChildIterator_i aSubChildIter = theStudy->GetChildIterator(theSObject);
-      if(!aSubChildIter.More())
-       continue;
-
-      aSubChildIter.InitEx(true);
-      bool anEmpty = true;
-      for(; aSubChildIter.More() && anEmpty; aSubChildIter.Next()){
-       SALOMEDS::SObject_var aSObj = aSubChildIter.Value();
-       SALOMEDS::ListOfAttributes_var anAllAttr = aSObj->GetAllAttributes();
-       if(anAllAttr->length() != 0 || aSObj->ReferencedObject(RefSO)) 
-         anEmpty = false;
-      }
-      if(anEmpty)
-       continue;
-    }
-
-    CORBA::String_var scoid(aSObject->GetID());
-    hdf_group_sobject = new HDFgroup(scoid,hdf_group_datatype);
-    hdf_group_sobject->CreateOnDisk();
-    SaveAttributes(aSObject, hdf_group_sobject);
-    _SaveObject(theStudy,aSObject, hdf_group_sobject);
-    hdf_group_sobject->CloseOnDisk();
-    hdf_group_sobject =0; // will be deleted by father hdf object destructor
-  }
+  return aStudy._retn();
 }
 
-//============================================================================
-/*! Function : _SubstituteSlash
- *  Purpose  :
- */
-//============================================================================
-
-std::string SALOMEDS_StudyManager_i::_SubstituteSlash(const char *theUrl)
-{
-  ASSERT(1==0);
-  TCollection_ExtendedString aUrl(const_cast<char*>(theUrl));
-  aUrl.ChangeAll(ToExtCharacter('/'),ToExtCharacter(':'));
-  TCollection_AsciiString ch(aUrl);
-  return ch.ToCString();
-}
 
 //============================================================================
 /*! Function : CanCopy
- *  Purpose  : 
+ *  Purpose  :
  */
 //============================================================================
-CORBA::Boolean SALOMEDS_StudyManager_i::CanCopy(SALOMEDS::SObject_ptr theObject) {
-  SALOMEDS::SComponent_var aComponent = theObject->GetFatherComponent();
-
-  if(aComponent->_is_nil()) 
-    return false;
-
-  if(aComponent == theObject) 
-    return false;
-
-  CORBA::String_var IOREngine;
-  if(!aComponent->ComponentIOR(IOREngine)) 
-    return false;
+CORBA::Boolean SALOMEDS_StudyManager_i::CanCopy(SALOMEDS::SObject_ptr theObject)
+{
+  SALOMEDS::Locker lock;
 
-  CORBA::Object_var obj = _orb->string_to_object(IOREngine);
-  SALOMEDS::Driver_var Engine = SALOMEDS::Driver::_narrow(obj) ;
-  if (CORBA::is_nil(Engine)) 
-    return false;
+  SALOMEDS::Study_var aStudy = theObject->GetStudy();
+  Handle(SALOMEDSImpl_Study) aStudyImpl = _impl->GetStudyByID(aStudy->StudyId());
+  Handle(SALOMEDSImpl_SObject) anObject = aStudyImpl->GetSObject((char*)theObject->GetID());
 
-  return Engine->CanCopy(theObject);
-}
-
-//============================================================================
-/*! Function : CopyLabel
- *  Purpose  : 
- */
-//============================================================================
-void SALOMEDS_StudyManager_i::CopyLabel(SALOMEDS_Study_i* theSourceStudy,
-                                       const SALOMEDS::Driver_ptr theEngine,
-                                       const Standard_Integer theSourceStartDepth,
-                                       const TDF_Label& theSource,
-                                       const TDF_Label& theDestinationMain) 
-{
-  int a;
-  TDF_Label aTargetLabel = theDestinationMain;
-  TDF_Label aAuxTargetLabel = theDestinationMain.Father().FindChild(2);
-  for(a = theSource.Depth() - theSourceStartDepth; a > 0 ; a--) {
-    TDF_Label aSourceLabel = theSource;
-    for(int aNbFather = 1; aNbFather < a; aNbFather++) aSourceLabel = aSourceLabel.Father();
-    aTargetLabel = aTargetLabel.FindChild(aSourceLabel.Tag());
-    aAuxTargetLabel = aAuxTargetLabel.FindChild(aSourceLabel.Tag());
-  }
-  // iterate attributes
-  TDF_AttributeIterator anAttrIterator(theSource);
-  Handle(TDF_RelocationTable) aRT = new TDF_RelocationTable();
-  for(; anAttrIterator.More(); anAttrIterator.Next()) {
-    Handle(TDF_Attribute) anAttr = anAttrIterator.Value();
-    if (!Handle(TDataStd_TreeNode)::DownCast(anAttr).IsNull()) continue; // never copy tree node attribute
-    if (!Handle(SALOMEDS_TargetAttribute)::DownCast(anAttr).IsNull()) continue; // and target attribute
-    
-    if (!Handle(TDF_Reference)::DownCast(anAttr).IsNull()) { // reference copied as Comment in auxiliary tree
-      TDF_Label aReferenced = Handle(TDF_Reference)::DownCast(anAttr)->Get();
-      TCollection_AsciiString anEntry;
-      TDF_Tool::Entry(aReferenced, anEntry);
-      // store the value of name attribute of referenced label
-      Handle(TDataStd_Name) aNameAttribute;
-      if (aReferenced.FindAttribute(TDataStd_Name::GetID(), aNameAttribute)) {
-       anEntry += " ";
-       anEntry += aNameAttribute->Get();
-      }
-      TDataStd_Comment::Set(aAuxTargetLabel, TCollection_ExtendedString(anEntry));
-      continue;
-    }
-    
-    if (!Handle(SALOMEDS_IORAttribute)::DownCast(anAttr).IsNull()) { // IOR => ID and TMPFile of Engine
-      TCollection_AsciiString anEntry;
-      TDF_Tool::Entry(theSource, anEntry);
-      SALOMEDS::SObject_var aSO = theSourceStudy->FindObjectID(anEntry.ToCString());
-      CORBA::Long anObjID;
-      SALOMEDS::TMPFile_var aStream = theEngine->CopyFrom(aSO, anObjID);
-      int aLen = aStream->length();
-      TCollection_ExtendedString aResStr("");
-      for(a = 0; a < aLen; a++) {
-       aResStr += TCollection_ExtendedString(ToExtCharacter((Standard_Character)aStream[a]));
-      }
-      TDataStd_Integer::Set(aAuxTargetLabel, anObjID);
-      TDataStd_Name::Set(aAuxTargetLabel, aResStr);
-      continue;
-    }
-    Handle(TDF_Attribute) aNewAttribute = anAttr->NewEmpty();
-    aTargetLabel.AddAttribute(aNewAttribute);
-    anAttr->Paste(aNewAttribute, aRT);
-//      aRT->SetRelocation(anAttr, aNewAttribute);
-  }
+  SALOMEDS_Driver_i* aDriver = GetDriver(anObject, _orb);
+  bool ret = _impl->CanCopy(anObject, aDriver);
+  delete aDriver;
+  return ret;
 }
 
 //============================================================================
@@ -1096,201 +348,39 @@ void SALOMEDS_StudyManager_i::CopyLabel(SALOMEDS_Study_i* theSourceStudy,
  *  Purpose  :
  */
 //============================================================================
-CORBA::Boolean SALOMEDS_StudyManager_i::Copy(SALOMEDS::SObject_ptr theObject) {
-  // adoptation for alliances datamodel copy: without IOR attributes !!!
-  // copy only SObjects and attributes without component help
-  SALOMEDS::GenericAttribute_var anAttribute;
-  bool aStructureOnly = !theObject->FindAttribute(anAttribute, "AttributeIOR");
-
-  PortableServer::ServantBase_var aServant = GetServant(theObject,_poa);
-  SALOMEDS_SObject_i* aSObject = dynamic_cast<SALOMEDS_SObject_i*>(aServant.in());
-  if(aSObject == NULL) 
-    return false;
-
-  SALOMEDS_Study_i* aStudy = aSObject->GetStudyServant();
-  SALOMEDS::Driver_var anEngine;
-  CORBA::String_var aString;
-  if (!aStructureOnly) {
-    SALOMEDS::SComponent_var aComponent = theObject->GetFatherComponent();
-    if(!aComponent->ComponentIOR(aString)) 
-      return false;
-
-    CORBA::Object_var anObj = _orb->string_to_object(aString);
-    anEngine = SALOMEDS::Driver::_narrow(anObj) ;
-  }
-
-  // CAF document of current study usage
-  Handle(TDocStd_Document) aDocument = aStudy->GetDocument();
-  if(aDocument.IsNull()) 
-    return false;
-
-  // create new document for clipboard
-  Handle(TDocStd_Document) aTargetDocument;
-  _OCAFApp->NewDocument("SALOME_STUDY", aTargetDocument);
-  // set component data type to the name attribute of root label
-  if(!aStructureOnly){
-    aString = anEngine->ComponentDataType();
-    TDataStd_Comment::Set(aTargetDocument->Main().Root(),const_cast<char*>(aString.in()));
-  }
-  // set to the Root label integer attribute: study id
-  TDataStd_Integer::Set(aTargetDocument->Main().Root(),aStudy->StudyId());
-
-  // iterate all theObject's label children
-  TDF_Label aStartLabel;
-  aString = theObject->GetID();
-  TDF_Tool::Label(aDocument->GetData(),const_cast<char*>(aString.in()),aStartLabel);
-  Standard_Integer aSourceStartDepth = aStartLabel.Depth();
-  
-  // copy main source label
-  CopyLabel(aStudy,anEngine,aSourceStartDepth,aStartLabel,aTargetDocument->Main());
-
-  // copy all subchildren of the main source label (all levels)
-  TDF_ChildIterator anIterator(aStartLabel,Standard_True);
-  for(; anIterator.More(); anIterator.Next()){
-    CopyLabel(aStudy,anEngine,aSourceStartDepth,anIterator.Value(),aTargetDocument->Main());
-  }
-
-  // done: free old clipboard document and 
-  if (!_clipboard.IsNull()) {
-//      Handle(TDocStd_Owner) anOwner;
-//      if (_clipboard->Main().Root().FindAttribute(TDocStd_Owner::GetID(), anOwner)) {
-//        Handle(TDocStd_Document) anEmptyDoc;
-//        anOwner->SetDocument(anEmptyDoc);
-//      }
-    _OCAFApp->Close(_clipboard);
-  }
+CORBA::Boolean SALOMEDS_StudyManager_i::Copy(SALOMEDS::SObject_ptr theObject)
+{
+  SALOMEDS::Locker lock;
 
-  _clipboard = aTargetDocument;
+  SALOMEDS::Study_var aStudy = theObject->GetStudy();
+  Handle(SALOMEDSImpl_Study) aStudyImpl = _impl->GetStudyByID(aStudy->StudyId());
+  Handle(SALOMEDSImpl_SObject) anObject = aStudyImpl->GetSObject((char*)theObject->GetID());
 
-  return true;
+  SALOMEDS_Driver_i* aDriver = GetDriver(anObject, _orb);
+  bool ret = _impl->Copy(anObject, aDriver);
+  delete aDriver;
+  return ret;
 }
+
 //============================================================================
 /*! Function : CanPaste
  *  Purpose  :
  */
 //============================================================================
-CORBA::Boolean SALOMEDS_StudyManager_i::CanPaste(SALOMEDS::SObject_ptr theObject) {
-  if (_clipboard.IsNull()) return false;
-
-  Handle(TDataStd_Comment) aCompName;
-  if (!_clipboard->Main().Root().FindAttribute(TDataStd_Comment::GetID(), aCompName)) return false;
-  Handle(TDataStd_Integer) anObjID;
-  if (!_clipboard->Main().Father().FindChild(2).FindAttribute(TDataStd_Integer::GetID(), anObjID))
-    return false;
-
-  SALOMEDS::SComponent_var aComponent = theObject->GetFatherComponent();
-  if(aComponent->_is_nil()) 
-    return false;
-  
-  CORBA::String_var IOREngine;
-  if(!aComponent->ComponentIOR(IOREngine)) 
-    return false;
-  
-  CORBA::Object_var obj = _orb->string_to_object(IOREngine);
-  SALOMEDS::Driver_var Engine = SALOMEDS::Driver::_narrow(obj) ;
-  if (CORBA::is_nil(Engine)) 
-    return false;
-
-  return Engine->CanPaste(TCollection_AsciiString(aCompName->Get()).ToCString(),anObjID->Get());
-}
-//============================================================================
-/*! Function : PasteLabel
- *  Purpose  :
- */
-//============================================================================
-TDF_Label SALOMEDS_StudyManager_i::PasteLabel(SALOMEDS_Study_i* theDestinationStudy,
-                                             const SALOMEDS::Driver_ptr theEngine,
-                                             const TDF_Label& theSource,
-                                             const TDF_Label& theDestinationStart,
-                                             const int theCopiedStudyID,
-                                             const bool isFirstElement) 
+CORBA::Boolean SALOMEDS_StudyManager_i::CanPaste(SALOMEDS::SObject_ptr theObject)
 {
+  SALOMEDS::Locker lock;
 
-  // get corresponding source, target and auxiliary labels
-  TDF_Label aTargetLabel = theDestinationStart;
-  TDF_Label aAuxSourceLabel = theSource.Root().FindChild(2);
-  int a;
-  if (!isFirstElement) {
-    for(a = theSource.Depth() - 1; a > 0 ; a--) {
-      TDF_Label aSourceLabel = theSource;
-      for(int aNbFather = 1; aNbFather < a; aNbFather++)
-       aSourceLabel = aSourceLabel.Father();
-      aTargetLabel = aTargetLabel.FindChild(aSourceLabel.Tag());
-      aAuxSourceLabel = aAuxSourceLabel.FindChild(aSourceLabel.Tag());
-    }
-  }
-
-  // check auxiliary label for TMPFile => IOR
-  Handle(TDataStd_Name) aNameAttribute;
-  if (aAuxSourceLabel.FindAttribute(TDataStd_Name::GetID(), aNameAttribute)) {
-    Handle(TDataStd_Integer) anObjID;
-
-    aAuxSourceLabel.FindAttribute(TDataStd_Integer::GetID(), anObjID);
-    Handle(TDataStd_Comment) aComponentName;
-    theSource.Root().FindAttribute(TDataStd_Comment::GetID(), aComponentName);
-    std::string aCompName = TCollection_AsciiString(aComponentName->Get()).ToCString();
-    if (theEngine->CanPaste(aCompName.c_str(),anObjID->Get())) {
-      SALOMEDS::TMPFile_var aTMPFil = new SALOMEDS::TMPFile();
-      TCollection_ExtendedString aTMPStr = aNameAttribute->Get();
-      int aLen = aTMPStr.Length();
-      aTMPFil->length(aLen);
-      for(a = 0; a < aLen; a++) {
-       aTMPFil[a] = ToCharacter(aTMPStr.Value(a+1));
-      }
-      TCollection_AsciiString anEntry;
-      TDF_Tool::Entry(aTargetLabel, anEntry);
-      SALOMEDS::SObject_var aPastedSO = theDestinationStudy->FindObjectID(anEntry.ToCString());
-      if(isFirstElement){
-       SALOMEDS::SObject_var aDestSO =
-         theEngine->PasteInto(aTMPFil.in(),
-                              anObjID->Get(),
-                              aPastedSO->GetFatherComponent());
-       TDF_Tool::Label(theDestinationStart.Data(), aDestSO->GetID(), aTargetLabel);
-      }else 
-       theEngine->PasteInto(aTMPFil.in(),anObjID->Get(),aPastedSO);
-    }
-  }
+  SALOMEDS::Study_var aStudy = theObject->GetStudy();
+  Handle(SALOMEDSImpl_Study) aStudyImpl = _impl->GetStudyByID(aStudy->StudyId());
+  Handle(SALOMEDSImpl_SObject) anObject = aStudyImpl->GetSObject((char*)theObject->GetID());
 
-  // iterate attributes
-  TDF_AttributeIterator anAttrIterator(theSource);
-  Handle(TDF_RelocationTable) aRT = new TDF_RelocationTable();
-  for(; anAttrIterator.More(); anAttrIterator.Next()) {
-    Handle(TDF_Attribute) anAttr = anAttrIterator.Value();
-    if (aTargetLabel.FindAttribute(anAttr->ID(), anAttr)) {
-      aTargetLabel.ForgetAttribute(anAttr->ID());
-      anAttr = anAttrIterator.Value();
-    }
-    Handle(TDF_Attribute) aNewAttribute = anAttr->NewEmpty();
-    aTargetLabel.AddAttribute(aNewAttribute);
-    anAttr->Paste(aNewAttribute, aRT);
-//      aRT->SetRelocation(anAttr, aNewAttribute);
-  }
-  // check auxiliary label for Comment => reference or name attribute of the referenced object
-  Handle(TDataStd_Comment) aCommentAttribute;
-  if (aAuxSourceLabel.FindAttribute(TDataStd_Comment::GetID(), aCommentAttribute)) {
-    std::string anEntry(TCollection_AsciiString(aCommentAttribute->Get()).ToCString());
-    std::size_t aNameStart = anEntry.find(' ');
-    std::string aName;
-    if(aNameStart != std::string::npos){
-      aName = anEntry.substr(aNameStart+1);
-      anEntry = anEntry.substr(0,aNameStart);
-    }
-    if (theCopiedStudyID == theDestinationStudy->StudyId()) { // if copy to the same study, reanimate reference
-      TDF_Label aRefLabel;
-      TDF_Tool::Label(aTargetLabel.Data(),&anEntry[0],aRefLabel);
-      TDF_Reference::Set(aTargetLabel, aRefLabel);
-      SALOMEDS_TargetAttribute::Set(aRefLabel)->Append(aTargetLabel); // target attributes structure support
-    } else {
-      if(aNameStart != std::string::npos)
-       TDataStd_Name::Set(aTargetLabel, &aName[0]);
-      else
-       TDataStd_Name::Set(aTargetLabel, 
-                          TCollection_ExtendedString("Reference to:") + &anEntry[0]);
-    }
-  }
-
-  return aTargetLabel;
+  SALOMEDS_Driver_i* aDriver = GetDriver(anObject, _orb);
+  bool ret = _impl->CanPaste(anObject, aDriver);
+  delete aDriver;
+  return ret;
 }
+
 //============================================================================
 /*! Function : Paste
  *  Purpose  :
@@ -1299,56 +389,95 @@ TDF_Label SALOMEDS_StudyManager_i::PasteLabel(SALOMEDS_Study_i* theDestinationSt
 SALOMEDS::SObject_ptr SALOMEDS_StudyManager_i::Paste(SALOMEDS::SObject_ptr theObject)
      throw(SALOMEDS::StudyBuilder::LockProtection)
 {
-  Unexpect aCatch(LockProtection);
+  SALOMEDS::Locker lock;
 
-  PortableServer::ServantBase_var aServant = GetServant(theObject,_poa);
-  SALOMEDS_SObject_i* aSObject = dynamic_cast<SALOMEDS_SObject_i*>(aServant.in());
-  if(aSObject == NULL) 
-    return false;
+  Unexpect aCatch(LockProtection);
+  SALOMEDS::Study_var aStudy = theObject->GetStudy();
 
-  SALOMEDS_Study_i* aStudy = aSObject->GetStudyServant();
+  Handle(SALOMEDSImpl_Study) aStudyImpl = _impl->GetStudyByID(aStudy->StudyId());
+  Handle(SALOMEDSImpl_SObject) anObject = aStudyImpl->GetSObject((char*)theObject->GetID());
+  Handle(SALOMEDSImpl_SObject) aNewSO;
 
-  // if study is locked, then paste can't be done
-  if (aStudy->GetProperties()->IsLocked())
+  try {
+    SALOMEDS_Driver_i* aDriver = GetDriver(anObject, _orb);
+    aNewSO =  _impl->Paste(anObject, aDriver);
+    delete aDriver;
+  }
+  catch (...) {
     throw SALOMEDS::StudyBuilder::LockProtection();
+  }
 
-  // if there is no component name, then paste only SObjects and attributes: without component help
-  Handle(TDataStd_Comment) aComponentName;
-  bool aStructureOnly = !_clipboard->Main().Root().FindAttribute(TDataStd_Comment::GetID(), aComponentName);
-
-  // get copied study ID
-  Handle(TDataStd_Integer) aStudyIDAttribute;
-  if (!_clipboard->Main().Root().FindAttribute(TDataStd_Integer::GetID(), aStudyIDAttribute))
-    return SALOMEDS::SObject::_nil();
-
-  // get component-engine
-  SALOMEDS::SComponent_var aComponent;
-  SALOMEDS::Driver_var anEngine;
-  CORBA::String_var aString;
-  if (!aStructureOnly) {
-    aComponent = theObject->GetFatherComponent();
-    if(!aComponent->ComponentIOR(aString)) 
-      return SALOMEDS::SObject::_nil();
-
-    CORBA::Object_var anObj = _orb->string_to_object(aString);
-    anEngine = SALOMEDS::Driver::_narrow(anObj) ;
+  SALOMEDS::SObject_var so = SALOMEDS_SObject_i::New (aNewSO, _orb);
+  return so._retn();
+}
+
+
+SALOMEDS_Driver_i* GetDriver(const Handle(SALOMEDSImpl_SObject)& theObject, CORBA::ORB_ptr orb)
+{
+  SALOMEDS_Driver_i* driver = NULL;
+
+  Handle(SALOMEDSImpl_SComponent) aSCO = theObject->GetFatherComponent();
+  if(!aSCO.IsNull()) {
+    TCollection_AsciiString IOREngine = aSCO->GetIOR();
+    if(!IOREngine.IsEmpty()) {
+      CORBA::Object_var obj = orb->string_to_object(IOREngine.ToCString());
+      SALOMEDS::Driver_var Engine = SALOMEDS::Driver::_narrow(obj) ;
+      driver = new SALOMEDS_Driver_i(Engine, orb);
+    }
   }
 
-  // CAF document of current study usage
-  Handle(TDocStd_Document) aDocument = aStudy->GetDocument();
-  if (aDocument.IsNull()) 
-    return SALOMEDS::SObject::_nil();
+  return driver;
+}
+
+PortableServer::POA_ptr SALOMEDS_StudyManager_i::GetPOA(const SALOMEDS::Study_ptr theStudy) {
+  if (_mapOfPOA.find(theStudy->StudyId()) != _mapOfPOA.end()) return _mapOfPOA[theStudy->StudyId()];
+  return PortableServer::POA::_nil();
+}
 
-  // fill root inserted SObject
-  int aCStudyID = aStudyIDAttribute->Get();
-  TDF_Label aLabel = aStructureOnly? aSObject->GetLabel(): aSObject->GetFatherComponentLabel();
-  TDF_Label aStartLabel = PasteLabel(aStudy,anEngine,_clipboard->Main(),aLabel,aCStudyID,true);
+//===========================================================================
+//   PRIVATE FUNCTIONS
+//===========================================================================
+long SALOMEDS_StudyManager_i::GetLocalImpl(const char* theHostname, CORBA::Long thePID, CORBA::Boolean& isLocal)
+{
+#ifdef WIN32
+  long pid = (long)_getpid();
+#else
+  long pid = (long)getpid();
+#endif
+  isLocal = (strcmp(theHostname, GetHostname().c_str()) == 0 && pid == thePID)?1:0;
+  SALOMEDSImpl_StudyManager* aManager = _impl.operator->();
+  return ((long)aManager);
+}
 
-  // paste all sublebels
-  TDF_ChildIterator anIterator(_clipboard->Main(),Standard_True);
-  for(; anIterator.More(); anIterator.Next()) {
-    PasteLabel(aStudy,anEngine,anIterator.Value(),aStartLabel,aCStudyID,false);
+//===========================================================================
+namespace SALOMEDS
+{
+/*
+  CORBA::Object_var
+  GetObject(const TDF_Label& theLabel, CORBA::ORB_ptr theORB)
+  {
+    try {
+      Handle(SALOMEDS_IORAttribute) anAttr;
+      if(theLabel.FindAttribute(SALOMEDS_IORAttribute::GetID(),anAttr))
+        return theORB->string_to_object(TCollection_AsciiString(anAttr->Get()).ToCString());
+    }catch(...){
+    }
+    return CORBA::Object::_nil();
+  }
+*/
+
+  PortableServer::ServantBase_var
+  GetServant(CORBA::Object_ptr theObject, PortableServer::POA_ptr thePOA)
+  {
+    if(CORBA::is_nil(theObject))
+      return NULL;
+    try{
+      return thePOA->reference_to_servant(theObject);
+    }catch(...){
+      return NULL;
+    }
   }
 
-  return SALOMEDS_SObject_i::NewRef(aStudy,aStartLabel)._retn();
 }
+
+//===========================================================================
index a6e4c9e6cb748880cb0603ead29b89cdb3090187..beb62ba7b45e19568bf87e0bf4fd91ca717d2ba8 100644 (file)
-//  SALOME SALOMEDS : data structure of SALOME and sources of Salome data server 
-//
-//  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
-// 
-//  This library is free software; you can redistribute it and/or 
-//  modify it under the terms of the GNU Lesser General Public 
-//  License as published by the Free Software Foundation; either 
-//  version 2.1 of the License. 
-// 
-//  This library is distributed in the hope that it will be useful, 
-//  but WITHOUT ANY WARRANTY; without even the implied warranty of 
-//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
-//  Lesser General Public License for more details. 
-// 
-//  You should have received a copy of the GNU Lesser General Public 
-//  License along with this library; if not, write to the Free Software 
-//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
-// 
-//  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
-//
-//
-//
 //  File   : SALOMEDS_StudyManager_i.hxx
-//  Author : Yves FRICAUD
+//  Author : Sergey RUIN
 //  Module : SALOME
-//  $Header$
 
 #ifndef __SALOMEDS_STUDYMANAGER_I_H__
 #define __SALOMEDS_STUDYMANAGER_I_H__
 
 // std C++ headers
-#include <iostream.h>
-#include <stdlib.h>
+#include <iostream>
 
 // IDL headers
 #include <SALOMEconfig.h>
 #include CORBA_SERVER_HEADER(SALOMEDS)
 
-// Cascade headers
-#include <TDocStd_Document.hxx>
-#include <TDF_Attribute.hxx>
-#include <TDataStd_Name.hxx>
-#include <TDF_Label.hxx>
-#include <TDocStd_Document.hxx>
-#include <Standard_NotImplemented.hxx>
-
-#include "SALOMEDS_OCAFApplication.hxx"
+// Naming Service header
 #include "SALOME_NamingService.hxx"
 
-// HDF
-#include "HDFOI.hxx"
+#include <stdlib.h>
 
-class SALOMEDS_Study_i;
+//Standard not implemented
+#include <Standard_NotImplemented.hxx>
+#include "SALOMEDS_Driver_i.hxx"
+#include "SALOMEDSImpl_StudyManager.hxx"
 
 namespace SALOMEDS{
 
   // To convert IOR from SALOMEDS_IORAttribute to CORBA::Object
-  CORBA::Object_var 
-  GetObject(const TDF_Label&, CORBA::ORB_ptr);
-  
-  // To convert CORBA::Object to  PortableServer::ServantBase
-  PortableServer::ServantBase_var 
-  GetServant(CORBA::Object_ptr, PortableServer::POA_ptr);
-  
-}
+  /* CORBA::Object_var GetObject(const TDF_Label&, CORBA::ORB_ptr); */
 
+  // To convert CORBA::Object to  PortableServer::ServantBase
+  PortableServer::ServantBase_var GetServant(CORBA::Object_ptr, PortableServer::POA_ptr);
 
-class SALOMEDS_StudyManager_i: 
-  public virtual POA_SALOMEDS::StudyManager,
-  public virtual PortableServer::RefCountServantBase 
-{
-  SALOMEDS_StudyManager_i(); // Not implemented
-  void operator=(const SALOMEDS_StudyManager_i&); // Not implemented
+}    
 
+class Standard_EXPORT SALOMEDS_StudyManager_i: public POA_SALOMEDS::StudyManager,
+                              public PortableServer::RefCountServantBase {
 private:
-  CORBA::ORB_var _orb;
-  PortableServer::POA_var _poa;
-  SALOME_NamingService _name_service;
-  Handle (SALOMEDS_OCAFApplication) _OCAFApp;  
-  Handle(TDocStd_Document) _clipboard;
-  int _IDcounter;
-
-  // _SaveAs private function called by Save and SaveAs
-  virtual void _SaveAs(const char* aUrl,
-                      SALOMEDS::Study_ptr aStudy,
-                      CORBA::Boolean theMultiFile,
-                      CORBA::Boolean theASCII);
-  // _SaveObject private function called by _SaveAs
-  void _SaveObject(SALOMEDS_Study_i* theStudy, 
-                  SALOMEDS::SObject_ptr SC, 
-                  HDFgroup *hdf_group_datatype);
-  // _SubstituteSlash function called by Open and GetStudyByName
-  virtual std::string _SubstituteSlash(const char *aUrl);
-
-  void _SaveProperties(SALOMEDS_Study_i* theStudy, HDFgroup *hdf_group);
+
+  CORBA::ORB_ptr                    _orb;
+  PortableServer::POA_var           _poa;
+  Handle(SALOMEDSImpl_StudyManager) _impl;  
+  SALOME_NamingService*             _name_service;
+  SALOMEDS_DriverFactory_i*         _factory; 
 
 public:
+
   //! standard constructor
-  SALOMEDS_StudyManager_i(CORBA::ORB_ptr theORB, PortableServer::POA_ptr thePOA);
+  SALOMEDS_StudyManager_i(CORBA::ORB_ptr orb, PortableServer::POA_ptr thePOA);
 
   //! standard destructor
   virtual  ~SALOMEDS_StudyManager_i(); 
 
-  CORBA::ORB_var GetORB() const { return _orb; }
-
-  PortableServer::POA_var GetPOA() const { return _poa; }
-
-  SALOMEDS_Study_i* DownCast(SALOMEDS::Study_ptr theStudy) const;
-
  //! method to Register study Manager in the naming service
   /*!
     \param char* arguments, the context to register the study manager in the NS
@@ -170,26 +112,20 @@ public:
     \return Study_ptr arguments
   */ 
   virtual SALOMEDS::Study_ptr GetStudyByID(CORBA::Short aStudyID) ;
-
-  void CopyLabel(SALOMEDS_Study_i* theSourceStudy, 
-                const SALOMEDS::Driver_ptr theEngine,
-                const Standard_Integer theSourceStartDepth,
-                const TDF_Label& theSource,
-                const TDF_Label& theDestinationMain);
-
-  TDF_Label PasteLabel(SALOMEDS_Study_i* theDestinationStudy,
-                      const SALOMEDS::Driver_ptr theEngine,
-                      const TDF_Label& theSource,
-                      const TDF_Label& theDestinationStart,
-                      const int theCopiedStudyID,
-                      const bool isFirstElement);
   
   virtual CORBA::Boolean CanCopy(SALOMEDS::SObject_ptr theObject);
   virtual CORBA::Boolean Copy(SALOMEDS::SObject_ptr theObject);
   virtual CORBA::Boolean CanPaste(SALOMEDS::SObject_ptr theObject);
   virtual SALOMEDS::SObject_ptr Paste(SALOMEDS::SObject_ptr theObject) throw(SALOMEDS::StudyBuilder::LockProtection);
+
+  virtual char* ConvertObjectToIOR(CORBA::Object_ptr theObject) {return _orb->object_to_string(theObject); }
+  virtual CORBA::Object_ptr ConvertIORToObject(const char* theIOR) { return _orb->string_to_object(theIOR); };  
   
   void ping(){};
+
+  virtual long GetLocalImpl(const char* theHostname, CORBA::Long thePID, CORBA::Boolean& isLocal);
+
+  static PortableServer::POA_ptr GetPOA(const SALOMEDS::Study_ptr theStudy);
 };
 
 #endif 
index 1f8e0aa75067bc52597819a1a6e0a3bb702dd13a..32e0cfc9b37b9114af671bb3687cea2351ab25c6 100644 (file)
-//  SALOME SALOMEDS : data structure of SALOME and sources of Salome data server 
-//
-//  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
-// 
-//  This library is free software; you can redistribute it and/or 
-//  modify it under the terms of the GNU Lesser General Public 
-//  License as published by the Free Software Foundation; either 
-//  version 2.1 of the License. 
-// 
-//  This library is distributed in the hope that it will be useful, 
-//  but WITHOUT ANY WARRANTY; without even the implied warranty of 
-//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
-//  Lesser General Public License for more details. 
-// 
-//  You should have received a copy of the GNU Lesser General Public 
-//  License along with this library; if not, write to the Free Software 
-//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
-// 
-//  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
-//
-//
-//
 //  File   : SALOMEDS_Study_i.cxx
-//  Author : Yves FRICAUD
+//  Author : Sergey RUIN
 //  Module : SALOME
-//  $Header$
 
-#include <TDataStd_ChildNodeIterator.hxx>
-#include <TDocStd_Application.hxx>
-#include <TDocStd_Owner.hxx>
-#include <CDM_Document.hxx>
-#include <CDM_Application.hxx>
-#include <TDF_ChildIDIterator.hxx>
-
-#include <TColStd_SequenceOfExtendedString.hxx>
-#include <TCollection_ExtendedString.hxx>
-#include <TCollection_AsciiString.hxx>
-
-#include <TColStd_ListIteratorOfListOfInteger.hxx>
-#include <TColStd_ListOfInteger.hxx>
 
+#include "utilities.h"
 #include "SALOMEDS_Study_i.hxx"
-
-#include "SALOMEDS_StudyManager_i.hxx"
-#include "SALOMEDS_Callback_i.hxx"
-
-#include "SALOMEDS_SComponent_i.hxx"
-#include "SALOMEDS_SObject_i.hxx"
-
-#include "SALOMEDS_StudyBuilder_i.hxx"
+#include "SALOMEDS_UseCaseIterator_i.hxx"
+#include "SALOMEDS_GenericAttribute_i.hxx"
+#include "SALOMEDS_AttributeStudyProperties_i.hxx"
 #include "SALOMEDS_ChildIterator_i.hxx"
+#include "SALOMEDS_Driver_i.hxx"
+#include "SALOMEDS.hxx"
 
-#include "SALOMEDS_UseCaseBuilder_i.hxx"
-#include "SALOMEDS_SComponentIterator_i.hxx"
+#include "SALOMEDSImpl_SObject.hxx"
+#include "SALOMEDSImpl_SComponent.hxx"
+#include "SALOMEDSImpl_UseCaseBuilder.hxx"
+#include "SALOMEDSImpl_AttributeStudyProperties.hxx"
+#include "SALOMEDSImpl_ChildIterator.hxx"
 
-#include "SALOME_GenericObj_i.hh"
-#include "SALOMEDS_LocalIDAttribute.hxx"
-#include "SALOMEDS_PersRefAttribute.hxx"
+#include <TColStd_SequenceOfExtendedString.hxx>
+#include <TColStd_HSequenceOfAsciiString.hxx>
+#include <TColStd_HSequenceOfTransient.hxx>
+#include <TCollection_AsciiString.hxx>
+#include <TCollection_ExtendedString.hxx>
 
-#include "SALOMEDS_StudyPropertiesAttribute.hxx"
-#include "SALOMEDS_DataMapIteratorOfDataMapStringLabel.hxx"
+#include <TDF_Label.hxx>
+#include <TDF_Attribute.hxx>
 
-#include "utilities.h"
+#ifdef WIN32
+#include <process.h>
+#else
+#include <sys/types.h>
+#include <unistd.h>
+#endif
 
-#define DIRECTORYID 16661
-#define FILEID "FILE: "
-#define FILELOCALID 26662 
+#include "OpUtil.hxx"
 
 using namespace std;
 
-bool operator<(const TDF_Label& theLeft, const TDF_Label& theRight)
-{
-  TColStd_ListOfInteger aTagLeftList;
-  TDF_Tool::TagList(theLeft,aTagLeftList);
-  TColStd_ListIteratorOfListOfInteger anLeftIter(aTagLeftList);
-  
-  TColStd_ListOfInteger aTagRightList;
-  TDF_Tool::TagList(theRight,aTagRightList);
-  TColStd_ListIteratorOfListOfInteger anRightIter(aTagRightList);
-  
-  for(;;){
-    Standard_Boolean aLeftMore = anLeftIter.More();
-    Standard_Boolean aRightMore = anRightIter.More();
-    
-    if(!aLeftMore && !aRightMore)
-      return Standard_False;
-    
-    if(!aLeftMore)
-      return Standard_True;
-    
-    if(!aRightMore)
-      return Standard_False;
-    
-    Standard_Integer aLeftTag = anLeftIter.Value();
-    anLeftIter.Next();
-    
-    Standard_Integer aRightTag = anRightIter.Value();
-    anRightIter.Next();
-    
-    if(aLeftTag == aRightTag)
-      continue;
-    
-    return aLeftTag < aRightTag;
-  }
-  
-  return Standard_False;
-}
-
-  
 //============================================================================
 /*! Function : SALOMEDS_Study_i
  *  Purpose  : SALOMEDS_Study_i constructor
  */
 //============================================================================
-SALOMEDS_Study_i::SALOMEDS_Study_i(SALOMEDS_StudyManager_i* theStudyManager,
-                                  const Handle(TDocStd_Document)& theDoc,
-                                  const char* theStudyName):
-  _StudyManager(theStudyManager),
-  _doc(theDoc),
-  _isSaved(false),
-  _URL(NULL),
-  _StudyId(-1),
-  _autoFill(true),
-  myNbUndos(0)
+SALOMEDS_Study_i::SALOMEDS_Study_i(const Handle(SALOMEDSImpl_Study) theImpl,
+                                  CORBA::ORB_ptr orb)
 {
-  _UseCaseBuilder = new SALOMEDS_UseCaseBuilder_i(this,_doc);
-  SALOMEDS::UseCaseBuilder_var aUseCaseBuilder = _UseCaseBuilder->_this();
-
-  _Builder = new SALOMEDS_StudyBuilder_i(this,_doc);
-  SALOMEDS::StudyBuilder_var aStudyBuilder = _Builder->_this(); 
-
-  SALOMEDS_Callback_i* aCallBackServant = new SALOMEDS_Callback_i(aUseCaseBuilder);
-  _callbackOnAdd = aCallBackServant->_this();
-  _callbackOnRemove = _callbackOnAdd;
+  _orb = CORBA::ORB::_duplicate(orb);
+  _impl = theImpl;
 
-  _name = new char[strlen(theStudyName) +1];
-  strcpy(_name,theStudyName);
-  myNbPostponed.Append(0);
+  _builder = new SALOMEDS_StudyBuilder_i(_impl->NewBuilder(), _orb);  
 }
   
 //============================================================================
@@ -146,100 +59,8 @@ SALOMEDS_Study_i::SALOMEDS_Study_i(SALOMEDS_StudyManager_i* theStudyManager,
 //============================================================================
 SALOMEDS_Study_i::~SALOMEDS_Study_i()
 {
-  delete [] _name ;
-  delete [] _URL ;
 }  
 
-//============================================================================
-CORBA::ORB_var SALOMEDS_Study_i::GetORB() const
-{
-  return _StudyManager->GetORB();
-}
-
-//============================================================================
-PortableServer::POA_var SALOMEDS_Study_i::GetPOA() const
-{
-  return _StudyManager->GetPOA();
-}
-
-
-SALOMEDS_SObject_i* 
-SALOMEDS_Study_i::DownCast(SALOMEDS::SObject_ptr theSObject) const
-{
-  if(!CORBA::is_nil(theSObject)){
-    PortableServer::POA_var aPOA = GetPOA();
-    PortableServer::ServantBase_var aServant = SALOMEDS::GetServant(theSObject,aPOA);
-    if(aServant.in())
-      return dynamic_cast<SALOMEDS_SObject_i*>(aServant.in());
-  }
-  return NULL;
-}
-
-//============================================================================
-/*! Function : SetOnAddSObject
- *  Purpose  : 
- */
-//============================================================================
-SALOMEDS::Callback_ptr SALOMEDS_Study_i::SetOnAddSObject(SALOMEDS::Callback_ptr theCallback)
-{
-  SALOMEDS::Callback_var aRet = _callbackOnAdd;
-  _callbackOnAdd = SALOMEDS::Callback::_duplicate(theCallback);
-  return aRet._retn();
-}
-
-//============================================================================
-/*! Function : SetOnNewSObject
- *  Purpose  : 
- */
-//============================================================================
-SALOMEDS::Callback_ptr SALOMEDS_Study_i::SetOnRemoveSObject(SALOMEDS::Callback_ptr theCallback)
-{
-  SALOMEDS::Callback_var aRet = _callbackOnRemove;
-  _callbackOnAdd = SALOMEDS::Callback::_duplicate(theCallback);
-  return aRet._retn();
-}
-
-//============================================================================
-void SALOMEDS_Study_i::OnAddSObject(SALOMEDS::SObject_ptr theObject)
-{
-  if(!CORBA::is_nil(_callbackOnAdd.in()))
-    _callbackOnAdd->OnAddSObject(theObject);
-}
-
-//============================================================================
-void SALOMEDS_Study_i::OnRemoveSObject(SALOMEDS::SObject_ptr theObject)
-{
-  if(!CORBA::is_nil(_callbackOnRemove.in()))
-    _callbackOnRemove->OnRemoveSObject(theObject);
-}
-
-//============================================================================
-void SALOMEDS_Study_i::CheckLocked()
-{
-  if(_doc->HasOpenCommand()) 
-    return;
-
-  Handle(SALOMEDS_StudyPropertiesAttribute) anAttr;
-  if(_doc->Main().FindAttribute(SALOMEDS_StudyPropertiesAttribute::GetID(),anAttr))
-    if(anAttr->IsLocked())
-      throw SALOMEDS::StudyBuilder::LockProtection();
-}
-
-
-//============================================================================
-char* SALOMEDS_Study_i::ConvertObjectToIOR(CORBA::Object_ptr theObject)
-{
-  return GetORB()->object_to_string(theObject); 
-}
-
-
-//============================================================================
-CORBA::Object_ptr SALOMEDS_Study_i::ConvertIORToObject(const char* theIOR) 
-{ 
-  return GetORB()->string_to_object(theIOR); 
-}
-
-
 //============================================================================
 /*! Function : GetPersistentReference
  *  Purpose  : Get persistent reference of study (idem URL())
@@ -247,7 +68,8 @@ CORBA::Object_ptr SALOMEDS_Study_i::ConvertIORToObject(const char* theIOR)
 //============================================================================
 char* SALOMEDS_Study_i::GetPersistentReference()
 {
-  return URL();
+  SALOMEDS::Locker lock; 
+  return CORBA::string_dup(_impl->GetPersistentReference().ToCString());
 }
 //============================================================================
 /*! Function : GetTransientReference
@@ -256,18 +78,8 @@ char* SALOMEDS_Study_i::GetPersistentReference()
 //============================================================================
 char* SALOMEDS_Study_i::GetTransientReference()
 {
-  CORBA::String_var IOR;
-
-  Handle(SALOMEDS_IORAttribute) Att;
-  TDF_Label _lab = _doc->GetData()->Root();
-  if (!_lab.FindAttribute(SALOMEDS_IORAttribute::GetID(),Att)){
-
-    TCollection_AsciiString ch(Att->Get());
-    IOR = CORBA::string_dup(ch.ToCString());
-  }
-  else IOR = CORBA::string_dup(""); // NULL ?
-
-  return CORBA::string_dup(IOR); 
+  SALOMEDS::Locker lock; 
+  return CORBA::string_dup(_impl->GetTransientReference().ToCString()); 
 }
 
 //============================================================================
@@ -277,8 +89,8 @@ char* SALOMEDS_Study_i::GetTransientReference()
 //============================================================================
 CORBA::Boolean SALOMEDS_Study_i::IsEmpty()
 {
-  if (_doc.IsNull()) return true;
-  return _doc->IsEmpty();
+  SALOMEDS::Locker lock; 
+  return _impl->IsEmpty();
 }
 
 //============================================================================
@@ -286,21 +98,15 @@ CORBA::Boolean SALOMEDS_Study_i::IsEmpty()
  *  Purpose  : Find a Component with ComponentDataType = aComponentName
  */
 //============================================================================
-SALOMEDS::SComponent_ptr 
-SALOMEDS_Study_i::FindComponent(const char* theComponentName)
+SALOMEDS::SComponent_ptr SALOMEDS_Study_i::FindComponent (const char* aComponentName)
 {
-  bool anIsFound = false;
-  SALOMEDS::SComponent_var aSComponent;
-  SALOMEDS_SComponentIterator_i aComponentIter(this,_doc);
-  for(; aComponentIter.More() && !anIsFound; aComponentIter.Next()){
-    SALOMEDS::SComponent_var aSComp = aComponentIter.Value();
-    CORBA::String_var aName = aSComp->ComponentDataType();
-    if(strcmp(theComponentName,aName.in()) == 0){
-      aSComponent = aSComp;
-      anIsFound = true;
-    }
-  }
-  return aSComponent._retn();
+  SALOMEDS::Locker lock; 
+  
+  Handle(SALOMEDSImpl_SComponent) aCompImpl = _impl->FindComponent(TCollection_AsciiString((char*)aComponentName));
+  if(aCompImpl.IsNull()) return SALOMEDS::SComponent::_nil();
+
+  SALOMEDS::SComponent_var sco = SALOMEDS_SComponent_i::New (aCompImpl, _orb);
+  return sco._retn();
 }
 
 //============================================================================
@@ -310,28 +116,13 @@ SALOMEDS_Study_i::FindComponent(const char* theComponentName)
 //============================================================================
 SALOMEDS::SComponent_ptr SALOMEDS_Study_i::FindComponentID(const char* aComponentID)
 {
-  // Iterate on each components defined in the study
-  // Get the component ID and compare with aComponentID 
-  bool _find = false;
-  char *ID;
-  SALOMEDS::SComponent_ptr compo;
-
-  SALOMEDS_SComponentIterator_i itcomp(this,_doc);
-  for (; itcomp.More(); itcomp.Next()) {
-    SALOMEDS::SComponent_var SC = itcomp.Value();
-    ID = SC->GetID();
-    if(strcmp(aComponentID,ID)==0)
-      {
-       // ComponentID found
-       _find = true;
-        compo = SALOMEDS::SComponent::_narrow(SC);
-      }
-  }
-  if(!_find)
-    {
-      compo = SALOMEDS::SComponent::_nil();
-    }
-  return compo;
+  SALOMEDS::Locker lock; 
+  
+  Handle(SALOMEDSImpl_SComponent) aCompImpl = _impl->FindComponentID(TCollection_AsciiString((char*)aComponentID));
+  if(aCompImpl.IsNull()) return SALOMEDS::SComponent::_nil();
+
+  SALOMEDS::SComponent_var sco = SALOMEDS_SComponent_i::New (aCompImpl, _orb);
+  return sco._retn();
 }
 
 //============================================================================
@@ -339,29 +130,22 @@ SALOMEDS::SComponent_ptr SALOMEDS_Study_i::FindComponentID(const char* aComponen
  *  Purpose  : Find an Object with SALOMEDS::Name = anObjectName
  */
 //============================================================================
-SALOMEDS::SObject_ptr SALOMEDS_Study_i::FindObject(const char* theObjectName)
+SALOMEDS::SObject_ptr SALOMEDS_Study_i::FindObject(const char* anObjectName)
 {
-  // Iterate to all components defined in the study
-  // After testing the component name, iterate in all objects defined under
-  // components (function _FindObject)
-  bool aIsFound = false;
-  SALOMEDS::SObject_var aRefSO;
-  SALOMEDS_SComponentIterator_i aComponentIter(this,_doc);
-  for(; aComponentIter.More() && !aIsFound; aComponentIter.Next()){
-    TDF_Label aLab = aComponentIter.GetValue();
-    Handle(TDataStd_Name) anAttr;
-    if(aLab.FindAttribute(TDataStd_Name::GetID(),anAttr)){
-      TCollection_AsciiString aString(anAttr->Get());
-      if(strcmp(aString.ToCString(),theObjectName) == 0){
-       aRefSO = SALOMEDS_SComponent_i::NewRef(this,aLab)._retn();
-       aIsFound = true;
-      }
-    }
-    if(!aIsFound) 
-      aRefSO = _FindObject(aLab,theObjectName,aIsFound);
-  }
+  SALOMEDS::Locker lock; 
 
-  return aRefSO._retn();
+  Handle(SALOMEDSImpl_SObject) aSO = _impl->FindObject(TCollection_AsciiString((char*)anObjectName));
+  if(aSO.IsNull()) return SALOMEDS::SObject::_nil();
+
+  if(aSO->DynamicType() == STANDARD_TYPE(SALOMEDSImpl_SComponent)) {
+    Handle(SALOMEDSImpl_SComponent) aSCO = Handle(SALOMEDSImpl_SComponent)::DownCast(aSO);
+    SALOMEDS::SComponent_var sco = SALOMEDS_SComponent_i::New (aSCO, _orb);
+    return sco._retn();
+  }
+   
+  SALOMEDS::SObject_var so = SALOMEDS_SObject_i::New (aSO, _orb);
+ return so._retn();
 }
 
 //============================================================================
@@ -371,15 +155,12 @@ SALOMEDS::SObject_ptr SALOMEDS_Study_i::FindObject(const char* theObjectName)
 //============================================================================
 SALOMEDS::SObject_ptr SALOMEDS_Study_i::FindObjectID(const char* anObjectID)
 {
-  // Convert aSO->GetID in TDF_Label.
-  TDF_Label Lab;
-  TDF_Tool::Label(_doc->GetData(), (char*)anObjectID, Lab);
-  
-  if (Lab.IsNull()) 
-    return SALOMEDS::SObject::_nil();
-
-  return SALOMEDS_SObject_i::NewRef(this,Lab)._retn();
+  SALOMEDS::Locker lock; 
 
+  Handle(SALOMEDSImpl_SObject) aSO = _impl->FindObjectID(TCollection_AsciiString((char*)anObjectID));
+  if(aSO.IsNull()) return SALOMEDS::SObject::_nil();
+  SALOMEDS::SObject_var so = SALOMEDS_SObject_i::New (aSO, _orb);
+  return so._retn();
 }
 
 //============================================================================
@@ -389,14 +170,13 @@ SALOMEDS::SObject_ptr SALOMEDS_Study_i::FindObjectID(const char* anObjectID)
 //============================================================================
 SALOMEDS::SObject_ptr SALOMEDS_Study_i::CreateObjectID(const char* anObjectID)
 {
-  // Convert aSO->GetID in TDF_Label.
-  TDF_Label Lab;
-  TDF_Tool::Label(_doc->GetData(), (char*)anObjectID, Lab, Standard_True);
-  
-  if (Lab.IsNull()) 
-    return SALOMEDS::SObject::_nil();
+  SALOMEDS::Locker lock; 
 
-  return SALOMEDS_SObject_i::NewRef(this,Lab)._retn();
+  Handle(SALOMEDSImpl_SObject) aSO = _impl->CreateObjectID((char*)anObjectID);
+  if(aSO.IsNull()) return SALOMEDS::SObject::_nil();
+
+  SALOMEDS::SObject_var so = SALOMEDS_SObject_i::New (aSO, _orb);
+  return so._retn();
 }
 
 //============================================================================
@@ -405,95 +185,38 @@ SALOMEDS::SObject_ptr SALOMEDS_Study_i::CreateObjectID(const char* anObjectID)
  *           : with ComponentDataType = aComponentName
  */
 //============================================================================
-SALOMEDS::Study::ListOfSObject* 
-SALOMEDS_Study_i::FindObjectByName(const char* theObjectName,
-                                  const char* theComponentName)
+SALOMEDS::Study::ListOfSObject* SALOMEDS_Study_i::FindObjectByName( const char* anObjectName,
+                                                                   const char* aComponentName )
 {
-  SALOMEDS::Study::ListOfSObject_var aListOfSObj = new SALOMEDS::Study::ListOfSObject ;
-  aListOfSObj->length(0);
-
-  SALOMEDS::SComponent_ptr aSComponent = FindComponent(theComponentName) ;
-  if(aSComponent->_is_nil()){
-    MESSAGE ("In FindObjectByName() :  Component named " << theComponentName << " not found ");
-    return aListOfSObj._retn();
-  }
+  SALOMEDS::Locker lock; 
 
-  // Iterate on each object and subobject of the component
-  // If objectName is found add it to the list of SObjects 
-  TDF_Label aLabel;
-  CORBA::String_var anEntry = aSComponent->GetID();
-  TDF_Tool::Label(_doc->GetData(),const_cast<char*>(anEntry.in()),aLabel);
-  
-  int aLength = 0 ;
-  SALOMEDS::SObject_var aRefSO;
-  TDF_ChildIterator aChildIter(aLabel,true);
-  for(; aChildIter.More(); aChildIter.Next()){
-    TDF_Label aLab = aChildIter.Value();
-    Handle(TDataStd_Name) anAttr;
-    if(aLab.FindAttribute(TDataStd_Name::GetID(),anAttr)){
-      TCollection_AsciiString aString(anAttr->Get());
-      if(strcmp(aString.ToCString(),theObjectName) == 0){
-       aRefSO = SALOMEDS_SObject_i::NewRef(this,aLab)._retn();
-       /* add to list */
-       aLength++ ;
-       aListOfSObj->length(aLength);
-       aListOfSObj[aLength-1] = aRefSO;
-      }
-    }
+  Handle(TColStd_HSequenceOfTransient) aSeq = _impl->FindObjectByName(TCollection_AsciiString((char*)anObjectName),
+                                                                     TCollection_AsciiString((char*)aComponentName));
+  int aLength = aSeq->Length();
+  SALOMEDS::Study::ListOfSObject_var listSO = new SALOMEDS::Study::ListOfSObject ;
+  listSO->length(aLength);
+  for(int i = 1; i<=aLength; i++) {
+    Handle(SALOMEDSImpl_SObject) aSO = Handle(SALOMEDSImpl_SObject)::DownCast(aSeq->Value(i));
+    SALOMEDS::SObject_var so = SALOMEDS_SObject_i::New (aSO, _orb);
+    listSO[i-1] = so ;
   }
-
-  return aListOfSObj._retn() ;
+  return listSO._retn() ;
 }
 
-
-
 //============================================================================
 /*! Function : FindObjectIOR
  *  Purpose  : Find an Object with IOR = anObjectIOR
  */
 //============================================================================
-SALOMEDS::SObject_ptr SALOMEDS_Study_i::FindObjectIOR(const char* theObjectIOR)
+SALOMEDS::SObject_ptr SALOMEDS_Study_i::FindObjectIOR(const char* anObjectIOR)
 {
-  // firstly searching in the datamap for optimization
-  char* anIOR = const_cast<char*>(theObjectIOR);
-  if(myIORLabels.IsBound(anIOR)){
-    TDF_Label aLabel = myIORLabels.Find(anIOR);
-    TSObjectHolder aSObjectHolder = SALOMEDS_SObject_i::New(this,aLabel);
-    SALOMEDS_SObject_i* aSObjectPtr = aSObjectHolder.first;
-    SALOMEDS::SObject_var aSObject = aSObjectHolder.second;
-    // 11 oct 2002: forbidden attributes must be checked here
-    SALOMEDS::GenericAttribute_var anAttr;
-    if(!aSObjectPtr->FindAttribute(anAttr,"AttributeIOR")){
-      myIORLabels.UnBind(anIOR);
-    }else{
-      return aSObject._retn();
-    }
-  }
+  SALOMEDS::Locker lock; 
 
-  // Iterate to all components defined in the study
-  // After testing the component name, iterate in all objects defined under
-  // components (function _FindObject)
-  bool aIsFound = false;
-  SALOMEDS::SObject_var aRefSO;
-  SALOMEDS_SComponentIterator_i aComponentIter(this,_doc);
-  for(; aComponentIter.More() && !aIsFound; aComponentIter.Next()){
-    TDF_Label aLab = aComponentIter.GetValue();
-    Handle(SALOMEDS_IORAttribute) anAttr;
-    if(aLab.FindAttribute(SALOMEDS_IORAttribute::GetID(),anAttr)){
-      TCollection_AsciiString aString(anAttr->Get());
-      if(strcmp(aString.ToCString(),theObjectIOR) == 0){
-       aRefSO = SALOMEDS_SComponent_i::NewRef(this,aLab);
-       aIsFound = true;
-      }
-    }
-    if(!aIsFound) 
-      aRefSO = _FindObjectIOR(aLab,theObjectIOR,aIsFound);
-  }
-
-  if(!aRefSO->_is_nil()) 
-    MESSAGE("SALOMEDS_Study_i::FindObjectIOR: found label with old methods");
+  Handle(SALOMEDSImpl_SObject) aSO = _impl->FindObjectIOR(TCollection_AsciiString((char*)anObjectIOR));
+  if(aSO.IsNull()) return SALOMEDS::SObject::_nil();
 
-  return aRefSO._retn();
+  SALOMEDS::SObject_var so = SALOMEDS_SObject_i::New (aSO, _orb);
+  return so._retn();
 }
 
 //============================================================================
@@ -503,57 +226,13 @@ SALOMEDS::SObject_ptr SALOMEDS_Study_i::FindObjectIOR(const char* theObjectIOR)
 //============================================================================
 SALOMEDS::SObject_ptr SALOMEDS_Study_i::FindObjectByPath(const char* thePath)
 {
-  TCollection_AsciiString aPath(CORBA::string_dup(thePath)), aToken;
-  SALOMEDS::SObject_var aSO = SALOMEDS::SObject::_nil();
-  int i = 1, aLength = aPath.Length();
-  bool isRelative = false;
-
-  if(aLength == 0) {  //Empty path - return the current context
-    return SALOMEDS_SObject_i::NewRef(this,_current)._retn();
-  }
-
-  if(aPath.Value(1) != '/')  //Relative path 
-    isRelative = true;
-
-  TDF_ChildIterator anIterator;
-  TDF_Label aLabel;
-  Handle(TDataStd_Name) anAttr;
-
-  if(isRelative) {
-    if(_current.IsNull()) throw SALOMEDS::Study::StudyInvalidContext(); 
-    anIterator.Initialize(_current, Standard_False);
-  }
-  else {
-    if(aPath.Length() == 1 && aPath.Value(1) == '/') {    //Root
-      return SALOMEDS_SObject_i::NewRef(this,_doc->Main())._retn();
-    }
-    anIterator.Initialize(_doc->Main(), Standard_False);
-  }
-
-  while(i <= aLength) {
+  SALOMEDS::Locker lock; 
 
-    aToken = aPath.Token("/", i);
-    if(aToken.Length() == 0) break;
+  Handle(SALOMEDSImpl_SObject) aSO = _impl->FindObjectByPath(TCollection_AsciiString((char*)thePath));
+  if(aSO.IsNull()) return SALOMEDS::SObject::_nil();
 
-    for ( ; anIterator.More(); anIterator.Next() ) {
-      aLabel = anIterator.Value();
-      if(aLabel.FindAttribute(TDataStd_Name::GetID(), anAttr)) {
-       if(anAttr->Get() == aToken) {
-         aToken = aPath.Token("/", i+1); //Check if it was the last part of the path
-         if(aToken.Length() == 0) {  //The searched label is found (no part of the path is left)
-           return SALOMEDS_SObject_i::NewRef(this,aLabel)._retn();
-         }
-
-         anIterator.Initialize(aLabel, Standard_False);
-         break;
-       }
-      }
-    }
-
-    i++;
-  }
-
-  return aSO._retn();
+  SALOMEDS::SObject_var so = SALOMEDS_SObject_i::New (aSO, _orb);
+  return so._retn();
 }
 
 //============================================================================
@@ -563,39 +242,23 @@ SALOMEDS::SObject_ptr SALOMEDS_Study_i::FindObjectByPath(const char* thePath)
 //============================================================================
 char* SALOMEDS_Study_i::GetObjectPath(CORBA::Object_ptr theObject)
 {
+  SALOMEDS::Locker lock; 
+
   TCollection_AsciiString aPath("");
-  if(CORBA::is_nil(theObject)) 
-    return CORBA::string_dup(aPath.ToCString());
-
-  SALOMEDS::SObject_var anObject = SALOMEDS::SObject::_narrow(theObject);
-  if(anObject->_is_nil()) {
-    CORBA::String_var anIOR = GetORB()->object_to_string(theObject);
-    anObject = FindObjectIOR(anIOR);
-    if(anObject->_is_nil()) 
-      return CORBA::string_dup(aPath.ToCString());
-  }
+  if(CORBA::is_nil(theObject)) return CORBA::string_dup(aPath.ToCString());
+  Handle(SALOMEDSImpl_SObject) aSO;
+  SALOMEDS::SObject_var aSObj = SALOMEDS::SObject::_narrow(theObject);
 
-  SALOMEDS::GenericAttribute_var anAttr;
-  if(anObject->FindAttribute(anAttr, "AttributeName")) {
-    SALOMEDS::AttributeName_var aName = SALOMEDS::AttributeName::_narrow(anAttr);
-    if(anAttr->_is_nil()) 
-      return CORBA::string_dup(aPath.ToCString());
-    TCollection_AsciiString aValue(aName->Value());
-    aValue.Prepend("/");
-    aValue += aPath;
-    aPath = aValue;
-    SALOMEDS::SObject_ptr aFather = anObject->GetFather();
-    if(!aFather->_is_nil()) {
-      TDF_Label aLabel;
-      Handle(TDataStd_Name) aNameAttrib;
-      TDF_Tool::Label(_doc->GetData(), aFather->GetID(), aLabel);
-      if(aLabel.FindAttribute(TDataStd_Name::GetID(), aNameAttrib)) {
-         aValue = GetObjectPath(aFather);
-         aPath = aValue + aPath;
-      }
-    }
+  if(!CORBA::is_nil(aSObj)) {
+    aSO = _impl->FindObjectID(aSObj->GetID());
   }
-
+  else {
+    aSO  = _impl->FindObjectIOR(_orb->object_to_string(theObject));
+  }
+   
+  if(aSO.IsNull()) return CORBA::string_dup(aPath.ToCString());
+  
+  aPath = _impl->GetObjectPath(aSO);
   return  CORBA::string_dup(aPath.ToCString());
 }
 
@@ -607,34 +270,11 @@ char* SALOMEDS_Study_i::GetObjectPath(CORBA::Object_ptr theObject)
 //============================================================================
 void SALOMEDS_Study_i::SetContext(const char* thePath) 
 {
-  if(thePath == NULL || strlen(thePath) == 0) throw SALOMEDS::Study::StudyInvalidDirectory();
-  TCollection_AsciiString aPath(CORBA::string_dup(thePath)), aContext("");
-  bool isInvalid = false;
-  SALOMEDS::SObject_var aSO;
-  
-  if(aPath.Value(1) != '/') { //Relative path 
-    aContext = TCollection_AsciiString(GetContext());
-    aContext += '/';
-    aContext += aPath;
-  }
-  else
-    aContext = aPath;
-  
-  try {
-    aSO = FindObjectByPath(aContext.ToCString());
-  }
-  catch( ... ) {
-    isInvalid = true;
-  }
+  SALOMEDS::Locker lock; 
 
-  if(isInvalid || aSO->_is_nil()) throw SALOMEDS::Study::StudyInvalidContext();
-
-  TDF_Label aLabel;
-  TDF_Tool::Label(_doc->GetData(), aSO->GetID(), aLabel);
-  if(aLabel.IsNull()) throw SALOMEDS::Study::StudyInvalidContext();
-  else
-    _current = aLabel;  //Set the current context
-  
+  _impl->SetContext(TCollection_AsciiString((char*)thePath));
+  if(_impl->IsError() && _impl->GetErrorCode() == "InvalidContext") 
+    throw SALOMEDS::Study::StudyInvalidContext();  
 }
 
 //============================================================================
@@ -644,11 +284,10 @@ void SALOMEDS_Study_i::SetContext(const char* thePath)
 //============================================================================
 char* SALOMEDS_Study_i::GetContext() 
 {
-  if(_current.IsNull()) 
-    throw SALOMEDS::Study::StudyInvalidContext();   
+  SALOMEDS::Locker lock; 
 
-  SALOMEDS::SObject_var aSObject = SALOMEDS_SObject_i::NewRef(this,_current);
-  return GetObjectPath(aSObject);
+  if(!_impl->HasCurrentContext()) throw SALOMEDS::Study::StudyInvalidContext();   
+  return CORBA::string_dup(_impl->GetContext().ToCString());
 }
 
 //============================================================================
@@ -656,34 +295,17 @@ char* SALOMEDS_Study_i::GetContext()
  *  Purpose  : method to get all object names in the given context (or in the current context, if 'theContext' is empty)
  */
 //============================================================================
-SALOMEDS::ListOfStrings* SALOMEDS_Study_i::GetObjectNames(const char* theContext) {
-  TColStd_SequenceOfExtendedString aResultSeq;
+SALOMEDS::ListOfStrings* SALOMEDS_Study_i::GetObjectNames(const char* theContext) 
+{
+  SALOMEDS::Locker lock; 
+
   SALOMEDS::ListOfStrings_var aResult = new SALOMEDS::ListOfStrings;
-  TDF_Label aLabel;
-  if (strlen(theContext) == 0) {
-    if(_current.IsNull()) throw SALOMEDS::Study::StudyInvalidContext();   
-    aLabel = _current;
-  } else {
-    TDF_Label aTmp = _current;
-    SetContext(theContext);
-    aLabel = _current;
-    _current = aTmp;
-  }
-  TDF_ChildIterator anIter(aLabel, Standard_False); // iterate all subchildren at all sublevels
-  for(; anIter.More(); anIter.Next()) {
-    TDF_Label aLabel = anIter.Value();
-//      Handle(TDF_Attribute) anAttribute;
-//      if (aLabel.FindAttribute(SALOMEDS_IORAttribute::GetID(), anAttribute) ||
-//     aLabel.FindAttribute(SALOMEDS_LocalIDAttribute::GetID(), anAttribute)) {
-    Handle(TDataStd_Name) aName;
-    if (aLabel.FindAttribute(TDataStd_Name::GetID(), aName)) aResultSeq.Append(aName->Get());
-//    }
-  }
-  // fill the result table
-  int anIndex, aLength = aResultSeq.Length();
+  if (strlen(theContext) == 0 && !_impl->HasCurrentContext()) throw SALOMEDS::Study::StudyInvalidContext();   
+  Handle(TColStd_HSequenceOfAsciiString) aSeq = _impl->GetObjectNames(TCollection_AsciiString((char*)theContext));
+  int aLength = aSeq->Length();
   aResult->length(aLength);
-  for(anIndex = 0; anIndex < aLength; anIndex++) {
-    aResult[anIndex] = CORBA::string_dup(TCollection_AsciiString(aResultSeq.Value(anIndex + 1)).ToCString());
+  for(int anIndex = 1; anIndex <= aLength; anIndex++) {
+    aResult[anIndex-1] = CORBA::string_dup(TCollection_AsciiString(aSeq->Value(anIndex)).ToCString());
   }
   return aResult._retn();
 }
@@ -693,37 +315,17 @@ SALOMEDS::ListOfStrings* SALOMEDS_Study_i::GetObjectNames(const char* theContext
  *  Purpose  : method to get all directory names in the given context (or in the current context, if 'theContext' is empty)
  */
 //============================================================================
-SALOMEDS::ListOfStrings* SALOMEDS_Study_i::GetDirectoryNames(const char* theContext) {
-  TColStd_SequenceOfExtendedString aResultSeq;
+SALOMEDS::ListOfStrings* SALOMEDS_Study_i::GetDirectoryNames(const char* theContext) 
+{
+  SALOMEDS::Locker lock; 
+
   SALOMEDS::ListOfStrings_var aResult = new SALOMEDS::ListOfStrings;
-  TDF_Label aLabel;
-  if (strlen(theContext) == 0) {
-    if(_current.IsNull()) throw SALOMEDS::Study::StudyInvalidContext();   
-    aLabel = _current;
-  } else {
-    TDF_Label aTmp = _current;
-    SetContext(theContext);
-    aLabel = _current;
-    _current = aTmp;
-  }
-  TDF_ChildIterator anIter(aLabel, Standard_False); // iterate first-level children at all sublevels
-  for(; anIter.More(); anIter.Next()) {
-    TDF_Label aLabel = anIter.Value();
-    Handle(SALOMEDS_LocalIDAttribute) anID;
-    if (aLabel.FindAttribute(SALOMEDS_LocalIDAttribute::GetID(), anID)) {
-      if (anID->Get() == DIRECTORYID) {
-       Handle(TDataStd_Name) aName;
-       if (aLabel.FindAttribute(TDataStd_Name::GetID(), aName)) {
-         aResultSeq.Append(aName->Get());
-       }
-      }
-    }
-  }
-  // fill the result table
-  int anIndex, aLength = aResultSeq.Length();
+  if (strlen(theContext) == 0 && !_impl->HasCurrentContext()) throw SALOMEDS::Study::StudyInvalidContext();   
+  Handle(TColStd_HSequenceOfAsciiString) aSeq = _impl->GetDirectoryNames(TCollection_AsciiString((char*)theContext));
+  int aLength = aSeq->Length();
   aResult->length(aLength);
-  for(anIndex = 0; anIndex < aLength; anIndex++) {
-    aResult[anIndex] = CORBA::string_dup(TCollection_AsciiString(aResultSeq.Value(anIndex + 1)).ToCString());
+  for(int anIndex = 1; anIndex <= aLength; anIndex++) {
+    aResult[anIndex-1] = CORBA::string_dup(TCollection_AsciiString(aSeq->Value(anIndex)).ToCString());
   }
   return aResult._retn();
 }
@@ -733,40 +335,17 @@ SALOMEDS::ListOfStrings* SALOMEDS_Study_i::GetDirectoryNames(const char* theCont
  *  Purpose  : method to get all file names in the given context (or in the current context, if 'theContext' is empty)
  */
 //============================================================================
-SALOMEDS::ListOfStrings* SALOMEDS_Study_i::GetFileNames(const char* theContext) {
-  TColStd_SequenceOfExtendedString aResultSeq;
+SALOMEDS::ListOfStrings* SALOMEDS_Study_i::GetFileNames(const char* theContext) 
+{
+  SALOMEDS::Locker lock; 
+
   SALOMEDS::ListOfStrings_var aResult = new SALOMEDS::ListOfStrings;
-  TDF_Label aLabel;
-  if (strlen(theContext) == 0) {
-    if(_current.IsNull()) throw SALOMEDS::Study::StudyInvalidContext();   
-    aLabel = _current;
-  } else {
-    TDF_Label aTmp = _current;
-    SetContext(theContext);
-    aLabel = _current;
-    _current = aTmp;
-  }
-  TDF_ChildIterator anIter(aLabel, Standard_False); // iterate all subchildren at all sublevels
-  for(; anIter.More(); anIter.Next()) {
-    TDF_Label aLabel = anIter.Value();
-    Handle(SALOMEDS_LocalIDAttribute) anID;
-    if (aLabel.FindAttribute(SALOMEDS_LocalIDAttribute::GetID(), anID)) {
-      if (anID->Get() == FILELOCALID) {
-       Handle(SALOMEDS_PersRefAttribute) aName;
-       if(aLabel.FindAttribute(SALOMEDS_PersRefAttribute::GetID(), aName)) {
-         TCollection_ExtendedString aFileName = aName->Get();
-         if(aFileName.Length() > 0)
-           aResultSeq.Append(aFileName.Split(strlen(FILEID)));
-       }
-      }
-    }
-//      }
-  }
-  // fill the result table
-  int anIndex, aLength = aResultSeq.Length();
+  if (strlen(theContext) == 0 && !_impl->HasCurrentContext()) throw SALOMEDS::Study::StudyInvalidContext();   
+  Handle(TColStd_HSequenceOfAsciiString) aSeq = _impl->GetFileNames(TCollection_AsciiString((char*)theContext));
+  int aLength = aSeq->Length();
   aResult->length(aLength);
-  for(anIndex = 0; anIndex < aLength; anIndex++) {
-    aResult[anIndex] = CORBA::string_dup(TCollection_AsciiString(aResultSeq.Value(anIndex + 1)).ToCString());
+  for(int anIndex = 1; anIndex <= aLength; anIndex++) {
+    aResult[anIndex-1] = CORBA::string_dup(TCollection_AsciiString(aSeq->Value(anIndex)).ToCString());
   }
   return aResult._retn();
 }
@@ -776,20 +355,17 @@ SALOMEDS::ListOfStrings* SALOMEDS_Study_i::GetFileNames(const char* theContext)
  *  Purpose  : method to get all components names
  */
 //============================================================================
-SALOMEDS::ListOfStrings* SALOMEDS_Study_i::GetComponentNames(const char* theContext) {
-  TColStd_SequenceOfExtendedString aResultSeq;
+SALOMEDS::ListOfStrings* SALOMEDS_Study_i::GetComponentNames(const char* theContext) 
+{
+  SALOMEDS::Locker lock; 
+
   SALOMEDS::ListOfStrings_var aResult = new SALOMEDS::ListOfStrings;
-  TDF_ChildIterator anIter(_doc->Main(), Standard_False); // iterate all subchildren at first level
-  for(; anIter.More(); anIter.Next()) {
-    TDF_Label aLabel = anIter.Value();
-    Handle(TDataStd_Name) aName;
-    if (aLabel.FindAttribute(TDataStd_Name::GetID(), aName)) aResultSeq.Append(aName->Get());
-  }
-  // fill the result table
-  int anIndex, aLength = aResultSeq.Length();
+  if (strlen(theContext) == 0 && !_impl->HasCurrentContext()) throw SALOMEDS::Study::StudyInvalidContext();   
+  Handle(TColStd_HSequenceOfAsciiString) aSeq = _impl->GetComponentNames(TCollection_AsciiString((char*)theContext));
+  int aLength = aSeq->Length();
   aResult->length(aLength);
-  for(anIndex = 0; anIndex < aLength; anIndex++) {
-    aResult[anIndex] = CORBA::string_dup(TCollection_AsciiString(aResultSeq.Value(anIndex + 1)).ToCString());
+  for(int anIndex = 1; anIndex <= aLength; anIndex++) {
+    aResult[anIndex-1] = CORBA::string_dup(TCollection_AsciiString(aSeq->Value(anIndex)).ToCString());
   }
   return aResult._retn();
 }
@@ -799,66 +375,44 @@ SALOMEDS::ListOfStrings* SALOMEDS_Study_i::GetComponentNames(const char* theCont
  *  Purpose  : Create a ChildIterator from an SObject
  */
 //============================================================================
-SALOMEDS::ChildIterator_ptr 
-SALOMEDS_Study_i::NewChildIterator(SALOMEDS::SObject_ptr theSObject)
+SALOMEDS::ChildIterator_ptr SALOMEDS_Study_i::NewChildIterator(SALOMEDS::SObject_ptr theSO)
 {
-  SALOMEDS_ChildIterator_i* aServant = 
-    new SALOMEDS_ChildIterator_i(GetChildIterator(theSObject));
+  SALOMEDS::Locker lock; 
 
-  return aServant->_this();
-}
+  Handle(SALOMEDSImpl_SObject) aSO = _impl->GetSObject(theSO->GetID());
+  Handle(SALOMEDSImpl_ChildIterator) anItr = new SALOMEDSImpl_ChildIterator(aSO);
 
-SALOMEDS_ChildIterator_i 
-SALOMEDS_Study_i::GetChildIterator(SALOMEDS::SObject_ptr theSObject)
-{
-  TDF_Label aLab;
-  TDF_Tool::Label(_doc->GetData(),theSObject->GetID(),aLab);
-  return SALOMEDS_ChildIterator_i(this,aLab);
+  //Create iterator
+  SALOMEDS_ChildIterator_i* it_servant = new SALOMEDS_ChildIterator_i(anItr, _orb);
+  SALOMEDS::ChildIterator_var it = SALOMEDS::ChildIterator::_narrow(it_servant->_this()); 
+
+  return it;
 }
 
+
 //============================================================================
 /*! Function : NewComponentIterator
  *  Purpose  : Create a SComponentIterator
  */
 //============================================================================
-SALOMEDS::SComponentIterator_ptr 
-SALOMEDS_Study_i::NewComponentIterator()
+SALOMEDS::SComponentIterator_ptr SALOMEDS_Study_i::NewComponentIterator()
 {
-  SALOMEDS_SComponentIterator_i* aServant = 
-    new SALOMEDS_SComponentIterator_i(GetComponentIterator());
-
-  return aServant->_this();
+  SALOMEDS::Locker lock; 
+  SALOMEDS_SComponentIterator_i* _it = new SALOMEDS_SComponentIterator_i(_impl->NewComponentIterator(), _orb);
+  _it->Init();
+  return _it->_this();
 }
 
-SALOMEDS_SComponentIterator_i 
-SALOMEDS_Study_i::GetComponentIterator()
-{
-  return SALOMEDS_SComponentIterator_i(this,_doc);
-}
-
-//============================================================================
-/*! Function : GetUseCaseBuilder
- *  Purpose  : Returns a UseCase builder
- */
-//============================================================================
-SALOMEDS::UseCaseBuilder_ptr SALOMEDS_Study_i::GetUseCaseBuilder() 
-{
-  return _UseCaseBuilder->_this();
-}
 
 //============================================================================
 /*! Function : NewBuilder
  *  Purpose  : Create a StudyBuilder
  */
 //============================================================================
-SALOMEDS_StudyBuilder_i* SALOMEDS_Study_i::GetBuilder()
-{
-  return _Builder;
-}
 SALOMEDS::StudyBuilder_ptr SALOMEDS_Study_i::NewBuilder()
 {
-  return GetBuilder()->_this();
+  SALOMEDS::Locker lock; 
+  return _builder->_this();
 }
  
 //============================================================================
@@ -868,7 +422,8 @@ SALOMEDS::StudyBuilder_ptr SALOMEDS_Study_i::NewBuilder()
 //============================================================================
 char* SALOMEDS_Study_i::Name()
 {
-  return CORBA::string_dup(_name);
+  SALOMEDS::Locker lock; 
+  return CORBA::string_dup(_impl->Name().ToCString());
 }
 
 //============================================================================
@@ -878,8 +433,8 @@ char* SALOMEDS_Study_i::Name()
 //============================================================================
 void SALOMEDS_Study_i::Name(const char* name)
 {
-  _name = new char[strlen(name) +1];
-  strcpy(_name,name);
+  SALOMEDS::Locker lock;  
+  _impl->Name(TCollection_AsciiString((char*)name));
 }
 
 //============================================================================
@@ -889,7 +444,8 @@ void SALOMEDS_Study_i::Name(const char* name)
 //============================================================================
 CORBA::Boolean  SALOMEDS_Study_i::IsSaved()
 {
-  return _isSaved;
+  SALOMEDS::Locker lock; 
+  return _impl->IsSaved();
 }
 
 //============================================================================
@@ -899,7 +455,8 @@ CORBA::Boolean  SALOMEDS_Study_i::IsSaved()
 //============================================================================
 void SALOMEDS_Study_i::IsSaved(CORBA::Boolean save)
 {
-  _isSaved = save;
+  SALOMEDS::Locker lock; 
+  _impl->IsSaved(save);
 }
 
 //============================================================================
@@ -909,11 +466,8 @@ void SALOMEDS_Study_i::IsSaved(CORBA::Boolean save)
 //============================================================================
 CORBA::Boolean  SALOMEDS_Study_i::IsModified()
 {
-  // True if is modified and not saved
-  if (_doc->IsModified())
-    if (!_isSaved) return true;
-    else return false;
-  else return false;
+  SALOMEDS::Locker lock; 
+  return _impl->IsModified();
 }
 
 //============================================================================
@@ -923,11 +477,8 @@ CORBA::Boolean  SALOMEDS_Study_i::IsModified()
 //============================================================================
 char* SALOMEDS_Study_i::URL()
 {
-  if(!_URL) {
-    _URL = new char[1];
-    _URL[0] = (char)0;
-  }
-  return CORBA::string_dup(_URL);
+  SALOMEDS::Locker lock; 
+  return CORBA::string_dup(_impl->URL().ToCString());
 }
 
 //============================================================================
@@ -937,107 +488,56 @@ char* SALOMEDS_Study_i::URL()
 //============================================================================
 void SALOMEDS_Study_i::URL(const char* url)
 {
-  if (_URL) delete [] _URL;
-  _URL = new char[strlen(url) +1];
-  strcpy(_URL,url);
-  SCRUTE(_URL);
-
-  char *aName = _URL;
-  char *adr = strtok(aName, "/");
-  while (adr)
-    {
-      aName = adr;
-      adr = strtok(NULL, "/");
-    }
-  strcpy(_URL,url);
-  Name(aName);
+  SALOMEDS::Locker lock; 
+  _impl->URL(TCollection_AsciiString((char*)url));
 }
 
 
-//============================================================================
-/*! Function : _FindObject
- *  Purpose  : Find an Object with SALOMEDS::Name = anObjectName
- */
-//============================================================================
-SALOMEDS::SObject_ptr 
-SALOMEDS_Study_i::_FindObject(TDF_Label theLabel,
-                             const char* theObjectName, 
-                             bool& theIsFound)
+CORBA::Short SALOMEDS_Study_i::StudyId()
 {
-  theIsFound = false;
-  // Iterate on each objects and subobjects of the component
-  // If objectName find, stop the loop and get the object reference
-  SALOMEDS::SObject_var aRefSO;
-  TDF_ChildIterator aChildIter(theLabel,true);
-  for(; aChildIter.More() && !theIsFound; aChildIter.Next()){
-    TDF_Label aLab = aChildIter.Value();
-    Handle(TDataStd_Name) anAttr;
-    if(aLab.FindAttribute(TDataStd_Name::GetID(),anAttr)){
-      TCollection_AsciiString aString(anAttr->Get());
-      if(strcmp(aString.ToCString(),theObjectName) == 0){
-       aRefSO = SALOMEDS_SObject_i::NewRef(this,aLab);
-       theIsFound = true;
-      }
-    }
-  }
-  return aRefSO._retn();
+  SALOMEDS::Locker lock; 
+  return _impl->StudyId();
 }
 
-//============================================================================
-/*! Function : _FindObject
- *  Purpose  : Find an Object with SALOMEDS::IOR = anObjectIOR
- */
-//============================================================================
-SALOMEDS::SObject_ptr 
-SALOMEDS_Study_i::_FindObjectIOR(TDF_Label theLabel,
-                                const char* theObjectIOR, 
-                                bool& theIsFound)
-{
-  // Iterate on each objects and subobjects of the component
-  // If objectName find, stop the loop and get the object reference
-  SALOMEDS::SObject_var aRefSO;
-  TDF_ChildIterator aChildIter(theLabel,true);
-  for(; aChildIter.More() && !theIsFound; aChildIter.Next()){
-    TDF_Label aLab = aChildIter.Value();
-    Handle(SALOMEDS_IORAttribute) anAttr;
-    if(aLab.FindAttribute(SALOMEDS_IORAttribute::GetID(),anAttr)){
-      TCollection_AsciiString aString(anAttr->Get());
-      if(strcmp(aString.ToCString(),theObjectIOR) == 0){
-       aRefSO = SALOMEDS_SObject_i::NewRef(this,aLab);
-       theIsFound = true;
-      }
-    }
-  }
-  return aRefSO._retn();
+void SALOMEDS_Study_i::StudyId(CORBA::Short id)
+{ 
+  SALOMEDS::Locker lock; 
+  _impl->StudyId(id);
 }
 
-CORBA::Short SALOMEDS_Study_i::StudyId()
+void SALOMEDS_Study_i::UpdateIORLabelMap(const char* anIOR,const char* anEntry) 
 {
-  return _StudyId;
+  SALOMEDS::Locker lock; 
+  _impl->UpdateIORLabelMap(TCollection_AsciiString((char*)anIOR), TCollection_AsciiString((char*)anEntry));
 }
 
-void SALOMEDS_Study_i::StudyId(CORBA::Short id)
+SALOMEDS::Study_ptr SALOMEDS_Study_i::GetStudy(const TDF_Label theLabel, CORBA::ORB_ptr orb) 
 {
-  _StudyId = id;
-}
+  SALOMEDS::Locker lock; 
 
-void SALOMEDS_Study_i::UpdateIORLabelMap(const char* anIOR,const char* anEntry) {
-  TDF_Label aLabel;
-  CORBA::String_var anEn = CORBA::string_dup(anEntry);
-  CORBA::String_var IOR = CORBA::string_dup(anIOR);
-  TDF_Tool::Label(_doc->GetData(),anEn,aLabel, Standard_True);
-  if (myIORLabels.IsBound(TCollection_ExtendedString(IOR))) myIORLabels.UnBind(TCollection_ExtendedString(IOR));
-  myIORLabels.Bind(TCollection_ExtendedString(IOR), aLabel);
+  Handle(SALOMEDSImpl_AttributeIOR) Att;
+  if (theLabel.Root().FindAttribute(SALOMEDSImpl_AttributeIOR::GetID(),Att)){
+    char* IOR = CORBA::string_dup(TCollection_AsciiString(Att->Value()).ToCString());
+    CORBA::Object_var obj = orb->string_to_object(IOR);
+    SALOMEDS::Study_ptr aStudy = SALOMEDS::Study::_narrow(obj) ;
+    ASSERT(!CORBA::is_nil(aStudy));
+    return SALOMEDS::Study::_duplicate(aStudy);
+  } else {
+    MESSAGE("GetStudy: Problem to get study");
+  }
+  return SALOMEDS::Study::_nil();
 }
 
-void SALOMEDS_Study_i::IORUpdated(const Handle(SALOMEDS_IORAttribute) theAttribute) {
-  TCollection_AsciiString aString;
-  TDF_Tool::Entry(theAttribute->Label(),aString);
-  TCollection_AsciiString aValue(theAttribute->Get());
-  UpdateIORLabelMap(aValue.ToCString(),aString.ToCString());
+void SALOMEDS_Study_i::IORUpdated(const Handle(SALOMEDSImpl_AttributeIOR) theAttribute) 
+{
+  SALOMEDS::Locker lock; 
+  SALOMEDSImpl_Study::IORUpdated(theAttribute);
 }
 
-SALOMEDS::Study::ListOfSObject* SALOMEDS_Study_i::FindDependances(SALOMEDS::SObject_ptr anObject) {
+SALOMEDS::Study::ListOfSObject* SALOMEDS_Study_i::FindDependances(SALOMEDS::SObject_ptr anObject) 
+{
+  SALOMEDS::Locker lock; 
+
   SALOMEDS::GenericAttribute_ptr aTarget;
   if (anObject->FindAttribute(aTarget,"AttributeTarget")) {
     return SALOMEDS::AttributeTarget::_narrow(aTarget)->Get();
@@ -1048,49 +548,51 @@ SALOMEDS::Study::ListOfSObject* SALOMEDS_Study_i::FindDependances(SALOMEDS::SObj
 }
 
 
-SALOMEDS::AttributeStudyProperties_ptr SALOMEDS_Study_i::GetProperties(){
-  SALOMEDS::SObject_var aSObject = FindObjectID("0:1");
-
-  SALOMEDS::GenericAttribute_var anAttr =  
-    GetBuilder()->FindOrCreateAttribute(aSObject,"AttributeStudyProperties");
-
-  return SALOMEDS::AttributeStudyProperties::_narrow(anAttr);
+SALOMEDS::AttributeStudyProperties_ptr SALOMEDS_Study_i::GetProperties() 
+{
+  SALOMEDS::Locker lock; 
+  
+  Handle(SALOMEDSImpl_AttributeStudyProperties) anAttr = _impl->GetProperties();
+  SALOMEDS_AttributeStudyProperties_i* SP = new SALOMEDS_AttributeStudyProperties_i(anAttr, _orb);
+  return SP->AttributeStudyProperties::_this();
 }
 
-char* SALOMEDS_Study_i::GetLastModificationDate() {
-  SALOMEDS::AttributeStudyProperties_var aProp = GetProperties();
-  SALOMEDS::StringSeq_var aNames;
-  SALOMEDS::LongSeq_var aMinutes, aHours, aDays, aMonths, aYears;
-  aProp->GetModificationsList(aNames , aMinutes ,aHours, aDays, aMonths, aYears, true);
-  int aLastIndex = aNames->length() - 1;
-  char aResult[20];
-  sprintf(aResult, "%2.2d/%2.2d/%4.4d %2.2d:%2.2d", (int)(aDays[aLastIndex]),(int)(aMonths[aLastIndex]),
-         (int)(aYears[aLastIndex]), (int)(aHours[aLastIndex]), (int)(aMinutes[aLastIndex]));
-  CORBA::String_var aResStr = CORBA::string_dup(aResult);
-  return aResStr._retn();
+char* SALOMEDS_Study_i::GetLastModificationDate() 
+{
+  SALOMEDS::Locker lock; 
+  return CORBA::string_dup(_impl->GetLastModificationDate().ToCString());
 }
 
-SALOMEDS::ListOfDates* SALOMEDS_Study_i::GetModificationsDate() {
-  SALOMEDS::AttributeStudyProperties_var aProp = GetProperties();
-  SALOMEDS::StringSeq_var aNames;
-  SALOMEDS::LongSeq_var aMinutes, aHours, aDays, aMonths, aYears;
-  aProp->GetModificationsList(aNames , aMinutes ,aHours, aDays, aMonths, aYears, false);
-
-  int anIndex, aLength = aNames->length();
+SALOMEDS::ListOfDates* SALOMEDS_Study_i::GetModificationsDate() 
+{
+  SALOMEDS::Locker lock; 
+  
+  Handle(TColStd_HSequenceOfAsciiString) aSeq = _impl->GetModificationsDate();
+  int aLength = aSeq->Length();
   SALOMEDS::ListOfDates_var aDates = new SALOMEDS::ListOfDates;
   aDates->length(aLength);
 
-  for(anIndex = 0; anIndex < aLength; anIndex++) {
-    char aDate[20];
-    sprintf(aDate, "%2.2d/%2.2d/%4.4d %2.2d:%2.2d", (int)(aDays[anIndex]), (int)(aMonths[anIndex]),
-           (int)(aYears[anIndex]), (int)(aHours[anIndex]), (int)(aMinutes[anIndex]));
-    aDates[anIndex] = CORBA::string_dup(aDate);
+  for(int anIndex = 1; anIndex <= aLength; anIndex++) {
+    aDates[anIndex-1] = CORBA::string_dup(aSeq->Value(anIndex).ToCString());
   }
   return aDates._retn();
 }
 
 
 
+//============================================================================
+/*! Function : GetUseCaseBuilder
+ *  Purpose  : Returns a UseCase builder
+ */
+//============================================================================
+SALOMEDS::UseCaseBuilder_ptr SALOMEDS_Study_i::GetUseCaseBuilder() 
+{
+  SALOMEDS::Locker lock; 
+  SALOMEDS_UseCaseBuilder_i* UCBuilder = new SALOMEDS_UseCaseBuilder_i(_impl->GetUseCaseBuilder(), _orb);
+  return UCBuilder->_this();
+}
+
+
 //============================================================================
 /*! Function : Close
  *  Purpose  : 
@@ -1098,11 +600,14 @@ SALOMEDS::ListOfDates* SALOMEDS_Study_i::GetModificationsDate() {
 //============================================================================
 void SALOMEDS_Study_i::Close()
 {
-  SALOMEDS_SComponentIterator_i itcomponent(this,_doc);
+  SALOMEDS::Locker lock; 
+  
+  RemovePostponed(-1);
+
+  SALOMEDS::SComponentIterator_var itcomponent = NewComponentIterator();
 
-  const CORBA::ORB_var& anORB = GetORB();
-  for (; itcomponent.More(); itcomponent.Next()) {
-    SALOMEDS::SComponent_var sco = itcomponent.Value();
+  for (; itcomponent->More(); itcomponent->Next()) {
+    SALOMEDS::SComponent_var sco = itcomponent->Value();
          
     MESSAGE ( "Look for an engine for data type :"<< sco->ComponentDataType());
     // if there is an associated Engine call its method for closing
@@ -1110,24 +615,19 @@ void SALOMEDS_Study_i::Close()
     if (sco->ComponentIOR(IOREngine)) {
       // we have found the associated engine to write the data 
       MESSAGE ( "We have found an engine for data type :"<< sco->ComponentDataType());
-      CORBA::Object_var obj = anORB->string_to_object(IOREngine);
+      CORBA::Object_var obj = _orb->string_to_object(IOREngine);
       if (!CORBA::is_nil(obj)) {
        SALOMEDS::Driver_var anEngine = SALOMEDS::Driver::_narrow(obj) ;
-       
-       if (!anEngine->_is_nil())  
+
+       if (!anEngine->_is_nil()) { 
+         SALOMEDS::unlock();
          anEngine->Close(sco);
+         SALOMEDS::lock();
+       }
       }
     }
   }
-
-  Handle(TDocStd_Application) anApp = Handle(TDocStd_Application)::DownCast(_doc->Application());
-//    Handle(TDocStd_Owner) anOwner;
-//    if (_doc->Main().Root().FindAttribute(TDocStd_Owner::GetID(), anOwner)) {
-//      Handle(TDocStd_Document) anEmptyDoc;
-//      anOwner->SetDocument(anEmptyDoc);
-//    }
-  if(!anApp.IsNull()) anApp->Close(_doc);
-  _doc.Nullify();
+  _impl->Close();
 }
 
 //============================================================================
@@ -1135,36 +635,26 @@ void SALOMEDS_Study_i::Close()
  *  Purpose  : 
  */
  //============================================================================
-void SALOMEDS_Study_i::AddPostponed(const char* theIOR) {
-  if (!GetBuilder()->HasOpenCommand()) return;
-  try {
-    CORBA::Object_var obj = GetORB()->string_to_object(theIOR);
-    if (!CORBA::is_nil(obj)) {
-      SALOME::GenericObj_var aGeneric = SALOME::GenericObj::_narrow(obj) ;
-      if (!CORBA::is_nil(aGeneric)) {
-       TCollection_AsciiString anIOR(const_cast<char*>(theIOR));
-       anIOR.Prepend("d");
-       myPostponedIORs.Append(anIOR); // add prefix: deleted
-       myNbPostponed.SetValue(myNbPostponed.Length(), myNbPostponed.Last() + 1);
-      }
-    }
-  } catch(...) {}
+void SALOMEDS_Study_i::AddPostponed(const char* theIOR) 
+{
+  SALOMEDS::Locker lock; 
+  CORBA::Object_var obj = _orb->string_to_object(theIOR);
+  if (!CORBA::is_nil(obj)) {
+    SALOME::GenericObj_var aGeneric = SALOME::GenericObj::_narrow(obj) ;
+    if (!CORBA::is_nil(aGeneric)) _impl->AddPostponed((char*)theIOR);     
+  }
 }
 
-void SALOMEDS_Study_i::AddCreatedPostponed(const char* theIOR) {
-  if (!GetBuilder()->HasOpenCommand()) return;
-  try {
-    CORBA::Object_var obj = GetORB()->string_to_object(theIOR);
-    if (!CORBA::is_nil(obj)) {
-      SALOME::GenericObj_var aGeneric = SALOME::GenericObj::_narrow(obj) ;
-      if (!CORBA::is_nil(aGeneric)) {
-       TCollection_AsciiString anIOR(const_cast<char*>(theIOR));
-       anIOR.Prepend("c");
-       myPostponedIORs.Append(anIOR); // add prefix: created
-       myNbPostponed.SetValue(myNbPostponed.Length(), myNbPostponed.Last() + 1);
-      }
-    }
-  } catch(...) {}
+void SALOMEDS_Study_i::AddCreatedPostponed(const char* theIOR) 
+{
+  SALOMEDS::Locker lock; 
+
+  CORBA::Object_var obj = _orb->string_to_object(theIOR);
+  if (!CORBA::is_nil(obj)) {
+    SALOME::GenericObj_var aGeneric = SALOME::GenericObj::_narrow(obj) ;
+    if (!CORBA::is_nil(aGeneric)) _impl->AddCreatedPostponed((char*)theIOR);
+  }
 }
 
 //============================================================================
@@ -1172,62 +662,38 @@ void SALOMEDS_Study_i::AddCreatedPostponed(const char* theIOR) {
  *  Purpose  : 
  */
 //============================================================================
-void SALOMEDS_Study_i::RemovePostponed(const CORBA::Long theUndoLimit) {
-  int anIndex;
-  int anOld;
-
-  int aUndoLimit = theUndoLimit;
-  if (theUndoLimit < 0) aUndoLimit = 0;
-
-  const CORBA::ORB_var& anORB = GetORB();
-  if (myNbUndos > 0) { // remove undone
-    anOld = 0;
-    for(anIndex = 1; anIndex < myNbPostponed.Length() - myNbUndos; anIndex++)
-      anOld += myNbPostponed(anIndex);
-    int aNew = myPostponedIORs.Length() - myNbPostponed.Last();
-
-    for(anIndex = anOld + 1; anIndex <= aNew; anIndex++) {
-      TCollection_AsciiString anIOR = myPostponedIORs(anIndex);
-      if (anIOR.Value(1) == 'c') {
-       CORBA::Object_var obj = anORB->string_to_object(anIOR.Split(1).ToCString());
-       SALOME::GenericObj_var aGeneric = SALOME::GenericObj::_narrow(obj);
-       if (!CORBA::is_nil(aGeneric)) aGeneric->Destroy();
-      }
+#ifndef WNT
+void SALOMEDS_Study_i::RemovePostponed(const CORBA::Long theUndoLimit) 
+#else
+void SALOMEDS_Study_i::RemovePostponed(CORBA::Long theUndoLimit) 
+#endif
+{  
+  SALOMEDS::Locker lock; 
+
+  Handle(TColStd_HSequenceOfAsciiString) aSeq = _impl->RemovePostponed(theUndoLimit);
+  int aLegth = aSeq->Length();
+  for(int i = 1; i <= aLegth; i++) {
+    TCollection_AsciiString anIOR = aSeq->Value(i);
+    //mkr : fix for bug IPAL9408 : check the length of anIOR
+    //                             before take value from it
+    if ( !anIOR.IsEmpty() && anIOR.Value(1) == 'c') {
+      CORBA::Object_var obj = _orb->string_to_object(anIOR.Split(1).ToCString());
+      SALOME::GenericObj_var aGeneric = SALOME::GenericObj::_narrow(obj);
+      if (!CORBA::is_nil(aGeneric)) aGeneric->Destroy();
     }
-    if (anOld < aNew) myPostponedIORs.Remove(anOld + 1, aNew);
-    if (myNbPostponed.Length() > 0) myNbPostponed.Remove(myNbPostponed.Length() - myNbUndos, myNbPostponed.Length() - 1);
-
-    myNbUndos = 0;
-  }
-
-  if (myNbPostponed.Length() > aUndoLimit) { // remove objects, that can not be undone
-    anOld = 0;
-    for(anIndex = myNbPostponed.Length() - aUndoLimit; anIndex >= 1; anIndex--)
-      anOld += myNbPostponed(anIndex);
-    for(anIndex = 1; anIndex <= anOld; anIndex++) {
-      TCollection_AsciiString anIOR = myPostponedIORs(anIndex);
-      if (anIOR.Value(1) == 'd') {
-       CORBA::Object_var obj = anORB->string_to_object(anIOR.Split(1).ToCString());
-       SALOME::GenericObj_var aGeneric = SALOME::GenericObj::_narrow(obj);
-       if (!CORBA::is_nil(aGeneric)) aGeneric->Destroy();
-      }
+    else if ( !anIOR.IsEmpty() && anIOR.Value(1) == 'd') {
+      CORBA::Object_var obj = _orb->string_to_object(anIOR.Split(1).ToCString());
+      SALOME::GenericObj_var aGeneric = SALOME::GenericObj::_narrow(obj);
+      if (!CORBA::is_nil(aGeneric)) aGeneric->Destroy();
     }
-    if (anOld > 0) myPostponedIORs.Remove(1, anOld);
-    myNbPostponed.Remove(1, myNbPostponed.Length() - aUndoLimit);
-  }
-
-  if (theUndoLimit == -1) { // remove all IORs from the study on the study close
-    TDF_ChildIDIterator anIter(_doc->GetData()->Root(), SALOMEDS_IORAttribute::GetID(), Standard_True);
-    for(; anIter.More(); anIter.Next()) {
-      Handle(SALOMEDS_IORAttribute) anAttr = Handle(SALOMEDS_IORAttribute)::DownCast(anIter.Value());
-      CORBA::String_var anIOR = CORBA::string_dup(TCollection_AsciiString(anAttr->Get()).ToCString());
+    else {
       try {
-       CORBA::Object_var obj = anORB->string_to_object(anIOR);
+       CORBA::Object_var obj = _orb->string_to_object(anIOR.ToCString());
        SALOME::GenericObj_var aGeneric = SALOME::GenericObj::_narrow(obj);
        if (!CORBA::is_nil(aGeneric)) aGeneric->Destroy();
       } catch (...) {}
     }
-  } else myNbPostponed.Append(0);
+  }
 }
 
 //============================================================================
@@ -1235,10 +701,45 @@ void SALOMEDS_Study_i::RemovePostponed(const CORBA::Long theUndoLimit) {
  *  Purpose  : 
  */
 //============================================================================
-void SALOMEDS_Study_i::UndoPostponed(const CORBA::Long theWay) {
-  myNbUndos += theWay;
-  // remove current postponed
-  if (myNbPostponed.Last() > 0)
-    myPostponedIORs.Remove(myPostponedIORs.Length() - myNbPostponed.Last() + 1, myPostponedIORs.Length());
-  myNbPostponed(myNbPostponed.Length()) = 0;
+#ifndef WNT
+void SALOMEDS_Study_i::UndoPostponed(const CORBA::Long theWay) 
+#else
+void SALOMEDS_Study_i::UndoPostponed(CORBA::Long theWay) 
+#endif
+{
+  SALOMEDS::Locker lock; 
+
+  _impl->UndoPostponed(theWay);
+}
+
+
+//============================================================================
+/*! Function : DumpStudy
+ *  Purpose  : 
+ */
+//============================================================================
+CORBA::Boolean SALOMEDS_Study_i::DumpStudy(const char* thePath, const char* theBaseName, CORBA::Boolean isPublished)
+{
+  SALOMEDS::Locker lock; 
+
+  TCollection_AsciiString aPath((char*)thePath), aBaseName((char*)theBaseName);
+  SALOMEDS_DriverFactory_i* factory = new SALOMEDS_DriverFactory_i(_orb);
+  CORBA::Boolean ret = _impl->DumpStudy(aPath, aBaseName, isPublished, factory);
+  delete factory;
+  return ret;
+}
+
+//===========================================================================
+//   PRIVATE FUNCTIONS
+//===========================================================================
+long SALOMEDS_Study_i::GetLocalImpl(const char* theHostname, CORBA::Long thePID, CORBA::Boolean& isLocal)
+{
+#ifdef WIN32
+  long pid = (long)_getpid();
+#else
+  long pid = (long)getpid();
+#endif  
+  isLocal = (strcmp(theHostname, GetHostname().c_str()) == 0 && pid == thePID)?1:0;
+  SALOMEDSImpl_Study* local_impl = _impl.operator->();
+  return ((long)local_impl);
 }
index 18b9ef8fbc2cbbdb74eb7b0205374440bcc3d092..3cb4954236a0afe2aa2f1b54b10daa804fad5837 100644 (file)
-//  SALOME SALOMEDS : data structure of SALOME and sources of Salome data server 
-//
-//  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
-// 
-//  This library is free software; you can redistribute it and/or 
-//  modify it under the terms of the GNU Lesser General Public 
-//  License as published by the Free Software Foundation; either 
-//  version 2.1 of the License. 
-// 
-//  This library is distributed in the hope that it will be useful, 
-//  but WITHOUT ANY WARRANTY; without even the implied warranty of 
-//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
-//  Lesser General Public License for more details. 
-// 
-//  You should have received a copy of the GNU Lesser General Public 
-//  License along with this library; if not, write to the Free Software 
-//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
-// 
-//  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
-//
-//
-//
 //  File   : SALOMEDS_Study_i.hxx
-//  Author : Yves FRICAUD
+//  Author : Sergey RUIN
 //  Module : SALOME
-//  $Header$
 
 #ifndef __SALOMEDS_STUDY_I_H__
 #define __SALOMEDS_STUDY_I_H__
 
 // std C++ headers
-#include <map>
-#include <string>
+#include <iostream>
 
 // IDL headers
 #include <SALOMEconfig.h>
+#include CORBA_SERVER_HEADER(SALOME_GenericObj)
 #include CORBA_SERVER_HEADER(SALOMEDS)
 
-// Cascade headers
-#include <TDF_Tool.hxx>
-#include <TDF_Data.hxx>
-#include <TDF_Label.hxx>
-#include <TDocStd_Document.hxx>
-#include <TColStd_SequenceOfInteger.hxx>
-#include <TColStd_SequenceOfAsciiString.hxx>
+#include <stdio.h>
 
 //SALOMEDS headers
-#include "SALOMEDS_DataMapStringLabel.hxx"
-#include "SALOMEDS_IORAttribute.hxx"
-
 #include "SALOMEDS_SComponentIterator_i.hxx"
-#include "SALOMEDS_ChildIterator_i.hxx"
-
-class SALOMEDS_StudyManager_i;
-class SALOMEDS_UseCaseBuilder_i;
-class SALOMEDS_StudyBuilder_i;
-class SALOMEDS_SObject_i;
-
+#include "SALOMEDS_StudyBuilder_i.hxx"
+#include "SALOMEDS_SObject_i.hxx"
+#include "SALOMEDS_UseCaseBuilder_i.hxx"
 
-bool operator<(const TDF_Label& theLeft, const TDF_Label& theRight);
+#include "SALOMEDSImpl_Study.hxx"
+#include "SALOMEDSImpl_AttributeIOR.hxx"
 
-
-class SALOMEDS_Study_i: public virtual POA_SALOMEDS::Study,
-                       public virtual PortableServer::RefCountServantBase 
+class Standard_EXPORT SALOMEDS_Study_i: public POA_SALOMEDS::Study,
+                       public PortableServer::RefCountServantBase 
 {
+private:
+  CORBA::ORB_ptr                 _orb;
+  Handle(SALOMEDSImpl_Study)     _impl;  
+  SALOMEDS_StudyBuilder_i*       _builder;    
+
 public:
-  typedef TDF_Label TSObjectID;
-  typedef std::pair<SALOMEDS_SObject_i*,SALOMEDS::SObject_var> TSObjectHolder;
-  typedef std::map<TSObjectID,TSObjectHolder> TSObjectMap;
 
-  SALOMEDS_Study_i(SALOMEDS_StudyManager_i* theStudyManager,
-                  const Handle(TDocStd_Document)& theDoc,
-                  const char* theStudyName);
+  //! standard constructor
+  SALOMEDS_Study_i(const Handle(SALOMEDSImpl_Study), CORBA::ORB_ptr);
   
+  //! standard destructor
   virtual ~SALOMEDS_Study_i(); 
   
-
-  SALOMEDS_StudyManager_i* GetStudyManager(){ return _StudyManager; }
-
-  Handle(TDocStd_Document) GetDocument(){ return _doc; }
-
-  TSObjectMap& GetSObjectMap(){ return mySObjectMap;}
-
-  CORBA::ORB_var GetORB() const;
-
-  PortableServer::POA_var GetPOA() const;
-
-  SALOMEDS_SObject_i* DownCast(SALOMEDS::SObject_ptr theSObject) const;
-
-  SALOMEDS::Callback_ptr SetOnAddSObject(SALOMEDS::Callback_ptr theCallback);
-
-  SALOMEDS::Callback_ptr SetOnRemoveSObject(SALOMEDS::Callback_ptr theCallback);
-
-  void OnAddSObject(SALOMEDS::SObject_ptr theObject);
-
-  void OnRemoveSObject(SALOMEDS::SObject_ptr theObject);
-
-  void CheckLocked();
-
-
-  virtual char* ConvertObjectToIOR(CORBA::Object_ptr theObject);
-
-  virtual CORBA::Object_ptr ConvertIORToObject(const char* theIOR);
-
   //! method to Get persistent reference of study (idem URL())
   /*!
     \sa URL()
@@ -225,20 +162,17 @@ public:
     \return ChildIterator_ptr arguments, the created ChildIterator
   */  
   virtual SALOMEDS::ChildIterator_ptr NewChildIterator(SALOMEDS::SObject_ptr aSO);
-  SALOMEDS_ChildIterator_i GetChildIterator(SALOMEDS::SObject_ptr theSObject);
 
   //! method to Create a SComponentIterator 
   /*!
     \return SComponentIterator_ptr arguments, the created SComponentIterator
   */  
   virtual SALOMEDS::SComponentIterator_ptr NewComponentIterator();
-  SALOMEDS_SComponentIterator_i GetComponentIterator();
 
   //! method to Create a StudyBuilder
   /*!
     \return StudyBuilder_ptr arguments, the created StudyBuilder
   */  
-  SALOMEDS_StudyBuilder_i* GetBuilder();
   virtual SALOMEDS::StudyBuilder_ptr NewBuilder();
  
   //! method to get study name
@@ -286,7 +220,9 @@ public:
   virtual CORBA::Short StudyId();
   virtual void  StudyId(CORBA::Short id);
 
-  void IORUpdated(const Handle(SALOMEDS_IORAttribute) theAttribute);
+  static SALOMEDS::Study_ptr GetStudy(const TDF_Label theLabel, CORBA::ORB_ptr orb);
+
+  static void IORUpdated(const Handle(SALOMEDSImpl_AttributeIOR) theAttribute);
 
   virtual void UpdateIORLabelMap(const char* anIOR, const char* aLabel);
   
@@ -298,61 +234,36 @@ public:
 
   virtual SALOMEDS::ListOfDates* GetModificationsDate();
 
+  virtual char* ConvertObjectToIOR(CORBA::Object_ptr theObject) {return _orb->object_to_string(theObject); }
+  virtual CORBA::Object_ptr ConvertIORToObject(const char* theIOR) { return _orb->string_to_object(theIOR); };
+
   virtual SALOMEDS::UseCaseBuilder_ptr GetUseCaseBuilder();
 
   virtual void Close();
 
-  void EnableUseCaseAutoFilling(CORBA::Boolean isEnabled) { _autoFill = isEnabled; }
+  void EnableUseCaseAutoFilling(CORBA::Boolean isEnabled) { _impl->EnableUseCaseAutoFilling(isEnabled); }
 
   // postponed destroying of CORBA object functionality
   virtual void AddPostponed(const char* theIOR);
 
   virtual void AddCreatedPostponed(const char* theIOR);
 
+#ifndef WNT
   virtual void RemovePostponed(const CORBA::Long theUndoLimit); // removes postponed IORs of old transaction
                                                         // if theUndoLimit==0, removes all
   virtual void UndoPostponed(const CORBA::Long theWay); // theWay = 1: resurrect objects,
                                                 // theWay = -1: get back to the list of postponed
-private:
-  friend class SALOMEDS_StudyBuilder_i;
-  friend class SALOMEDS_SObject_i;
-  SALOMEDS_StudyManager_i* _StudyManager;
-
-  TSObjectMap mySObjectMap;
-
-  SALOMEDS_UseCaseBuilder_i* _UseCaseBuilder;
-  SALOMEDS_StudyBuilder_i* _Builder;
-  SALOMEDS::Callback_var   _callbackOnAdd;
-  SALOMEDS::Callback_var   _callbackOnRemove;
-
-  char*                    _name;  
-  Handle(TDocStd_Document) _doc;  // OCAF Document
-  CORBA::Boolean           _isSaved; // True if the Study is saved
-  char*                    _URL; //URL of the persistent reference of the study
-  CORBA::Short             _StudyId;
-
-  SALOMEDS_DataMapStringLabel myIORLabels;
-
-  // data structures for postponed destroying of CORBA object functionality
-  TColStd_SequenceOfAsciiString myPostponedIORs; // ordered set of IORs
-  TColStd_SequenceOfInteger myNbPostponed; // number of IOR in the each transaction
-  int myNbUndos; // number of current Undos, made by user
-
-  TDF_Label                _current;
-  bool                     _autoFill;  
+#else
+  virtual void RemovePostponed(CORBA::Long theUndoLimit); // removes postponed IORs of old transaction
+                                                        // if theUndoLimit==0, removes all
+  virtual void UndoPostponed(CORBA::Long theWay); // theWay = 1: resurrect objects,
+                                                // theWay = -1: get back to the list of postponed
+#endif
 
-  SALOMEDS::SObject_ptr    _FindObject(TDF_Label theLabel,
-                                      const char* theObjectIOR, 
-                                      bool& theIsFound);
-  SALOMEDS::SObject_ptr    _FindObjectIOR(TDF_Label theLabel,
-                                         const char* theObjectIOR, 
-                                         bool& theIsFound);
+  virtual CORBA::Boolean DumpStudy(const char* thePath, const char* theBaseName, CORBA::Boolean isPublished); 
 
-  SALOMEDS_Study_i(); // Not implemented
-  void operator=(const SALOMEDS_Study_i&); // Not implemented
+  virtual Handle(SALOMEDSImpl_Study) GetImpl() { return _impl; }
 
+  virtual long GetLocalImpl(const char* theHostname, CORBA::Long thePID, CORBA::Boolean& isLocal);
 };
-
-
 #endif
diff --git a/src/SALOMEDS/SALOMEDS_UseCaseBuilder.cxx b/src/SALOMEDS/SALOMEDS_UseCaseBuilder.cxx
new file mode 100644 (file)
index 0000000..b31f5c4
--- /dev/null
@@ -0,0 +1,149 @@
+//  File   : SALOMEDS_UseCaseBuilder.cxx
+//  Author : Sergey RUIN
+//  Module : SALOME
+
+
+
+#include "SALOMEDS_UseCaseBuilder.hxx"
+
+#include "SALOMEDSImpl_SObject.hxx"
+#include "SALOMEDS_SObject.hxx"
+#include "SALOMEDSImpl_UseCaseIterator.hxx"
+#include "SALOMEDS_UseCaseIterator.hxx"
+#include <TCollection_AsciiString.hxx> 
+#include <string>
+
+using namespace std; 
+
+SALOMEDS_UseCaseBuilder::SALOMEDS_UseCaseBuilder(const Handle(SALOMEDSImpl_UseCaseBuilder)& theBuilder)
+{
+  _isLocal = true;
+  _local_impl = theBuilder;
+  _corba_impl = SALOMEDS::UseCaseBuilder::_nil();
+}
+
+SALOMEDS_UseCaseBuilder::SALOMEDS_UseCaseBuilder(SALOMEDS::UseCaseBuilder_ptr theBuilder)
+{
+  _isLocal = false;
+  _local_impl = NULL;
+  _corba_impl = SALOMEDS::UseCaseBuilder::_duplicate(theBuilder);
+}
+
+SALOMEDS_UseCaseBuilder::~SALOMEDS_UseCaseBuilder()
+{
+  if(!_isLocal) _corba_impl->Destroy(); 
+}  
+
+bool SALOMEDS_UseCaseBuilder::Append(const _PTR(SObject)& theObject)
+{
+  bool ret;
+  SALOMEDS_SObject* obj = dynamic_cast<SALOMEDS_SObject*>(theObject.get());
+  if(_isLocal) ret = _local_impl->Append(obj->GetLocalImpl());
+  else ret = _corba_impl->Append(obj->GetCORBAImpl());
+  return ret;
+}
+
+bool SALOMEDS_UseCaseBuilder::Remove(const _PTR(SObject)& theObject)
+{
+  bool ret;
+  SALOMEDS_SObject* obj = dynamic_cast<SALOMEDS_SObject*>(theObject.get());
+  if(_isLocal) ret = _local_impl->Remove(obj->GetLocalImpl());
+  else ret = _corba_impl->Remove(obj->GetCORBAImpl());
+  return ret;
+}
+
+bool SALOMEDS_UseCaseBuilder::AppendTo(const _PTR(SObject)& theFather, _PTR(SObject) theObject)
+{
+  bool ret;
+  SALOMEDS_SObject* father = dynamic_cast<SALOMEDS_SObject*>(theFather.get());
+  SALOMEDS_SObject* obj = dynamic_cast<SALOMEDS_SObject*>(theObject.get());
+  if(_isLocal) ret = _local_impl->AppendTo(father->GetLocalImpl(), obj->GetLocalImpl());
+  else ret = _corba_impl->AppendTo(father->GetCORBAImpl(), obj->GetCORBAImpl());
+  return ret;
+}
+
+bool SALOMEDS_UseCaseBuilder::InsertBefore(const _PTR(SObject)& theFirst, _PTR(SObject) theNext)
+{
+  bool ret;
+  SALOMEDS_SObject* first = dynamic_cast<SALOMEDS_SObject*>(theFirst.get());
+  SALOMEDS_SObject* next = dynamic_cast<SALOMEDS_SObject*>(theNext.get());
+  if(_isLocal) ret = _local_impl->InsertBefore(first->GetLocalImpl(), next->GetLocalImpl());
+  else ret = _corba_impl->InsertBefore(first->GetCORBAImpl(), next->GetCORBAImpl());
+  return ret;
+}
+
+bool SALOMEDS_UseCaseBuilder::SetCurrentObject(const _PTR(SObject)& theObject)
+{
+  bool ret;
+  SALOMEDS_SObject* obj = dynamic_cast<SALOMEDS_SObject*>(theObject.get());
+  if(_isLocal) ret = _local_impl->SetCurrentObject(obj->GetLocalImpl());
+  else ret = _corba_impl->SetCurrentObject(obj->GetCORBAImpl());
+  return ret;
+}
+
+bool SALOMEDS_UseCaseBuilder::SetRootCurrent()
+{
+  bool ret;
+  if(_isLocal) ret = _local_impl->SetRootCurrent();
+  else ret = _corba_impl->SetRootCurrent();
+  return ret;
+}
+
+bool SALOMEDS_UseCaseBuilder::HasChildren(const _PTR(SObject)& theObject)
+{
+  bool ret;
+  SALOMEDS_SObject* obj = dynamic_cast<SALOMEDS_SObject*>(theObject.get());
+  if(_isLocal) ret = _local_impl->HasChildren(obj->GetLocalImpl());
+  else ret = _corba_impl->HasChildren(obj->GetCORBAImpl());
+  return ret;
+}
+
+bool SALOMEDS_UseCaseBuilder::IsUseCase(const _PTR(SObject)& theObject)
+{
+  bool ret;
+  SALOMEDS_SObject* obj = dynamic_cast<SALOMEDS_SObject*>(theObject.get());
+  if(_isLocal) ret = _local_impl->IsUseCase(obj->GetLocalImpl());
+  else ret = _corba_impl->IsUseCase(obj->GetCORBAImpl());
+  return ret;
+}
+
+bool SALOMEDS_UseCaseBuilder::SetName(const std::string& theName)
+{
+  bool ret;
+  if(_isLocal) ret = _local_impl->SetName((char*)theName.c_str());
+  else ret = _corba_impl->SetName((char*)theName.c_str());
+  return ret;
+}
+
+_PTR(SObject) SALOMEDS_UseCaseBuilder::GetCurrentObject()
+{
+  SALOMEDS_SObject* obj = NULL;
+  if(_isLocal) obj = new SALOMEDS_SObject(_local_impl->GetCurrentObject());
+  else obj = new SALOMEDS_SObject(_corba_impl->GetCurrentObject());
+  return _PTR(SObject)(obj);
+}
+
+std::string SALOMEDS_UseCaseBuilder::GetName()
+{
+  std::string aName;
+  if(_isLocal) aName = _local_impl->GetName().ToCString();
+  else aName = _corba_impl->GetName();
+  return aName;
+}
+
+_PTR(SObject) SALOMEDS_UseCaseBuilder::AddUseCase(const std::string& theName)
+{
+  SALOMEDS_SObject* obj = NULL;
+  if(_isLocal) obj = new SALOMEDS_SObject(_local_impl->AddUseCase((char*)theName.c_str()));
+  else obj = new SALOMEDS_SObject(_corba_impl->AddUseCase((char*)theName.c_str()));
+  return _PTR(SObject)(obj);
+}
+
+_PTR(UseCaseIterator) SALOMEDS_UseCaseBuilder::GetUseCaseIterator(const _PTR(SObject)& theObject) 
+{
+  SALOMEDS_UseCaseIterator* it = NULL;
+  SALOMEDS_SObject* obj = dynamic_cast<SALOMEDS_SObject*>(theObject.get());
+  if(_isLocal) it = new SALOMEDS_UseCaseIterator(_local_impl->GetUseCaseIterator(obj->GetLocalImpl()));
+  else it = new SALOMEDS_UseCaseIterator(_corba_impl->GetUseCaseIterator(obj->GetCORBAImpl()));
+  return _PTR(UseCaseIterator)(it);
+}
diff --git a/src/SALOMEDS/SALOMEDS_UseCaseBuilder.hxx b/src/SALOMEDS/SALOMEDS_UseCaseBuilder.hxx
new file mode 100644 (file)
index 0000000..2907267
--- /dev/null
@@ -0,0 +1,44 @@
+//  File   : SALOMEDS_UseCaseBuilder.hxx
+//  Author : Sergey RUIN
+//  Module : SALOME
+
+#ifndef __SALOMEDS_USECaseBuilder_H__
+#define __SALOMEDS_USECaseBuilder_H__
+
+#include "SALOMEDSClient.hxx"
+#include "SALOMEDSImpl_UseCaseBuilder.hxx"
+
+// IDL headers
+#include <SALOMEconfig.h>
+#include CORBA_SERVER_HEADER(SALOMEDS)
+
+class SALOMEDS_UseCaseBuilder: public SALOMEDSClient_UseCaseBuilder
+{
+
+private: 
+  bool _isLocal;
+  Handle(SALOMEDSImpl_UseCaseBuilder) _local_impl;
+  SALOMEDS::UseCaseBuilder_var        _corba_impl;
+
+public:
+  
+  SALOMEDS_UseCaseBuilder(const Handle(SALOMEDSImpl_UseCaseBuilder)& theBuilder);
+  SALOMEDS_UseCaseBuilder(SALOMEDS::UseCaseBuilder_ptr theBuilder);
+  ~SALOMEDS_UseCaseBuilder();
+
+  virtual bool Append(const _PTR(SObject)& theObject);
+  virtual bool Remove(const _PTR(SObject)& theObject);
+  virtual bool AppendTo(const _PTR(SObject)& theFather, _PTR(SObject) theObject);
+  virtual bool InsertBefore(const _PTR(SObject)& theFirst, _PTR(SObject) theNext);
+  virtual bool  SetCurrentObject(const _PTR(SObject)& theObject);
+  virtual bool SetRootCurrent();
+  virtual bool  HasChildren(const _PTR(SObject)& theObject);
+  virtual bool  IsUseCase(const _PTR(SObject)& theObject);
+  virtual bool SetName(const std::string& theName);
+  virtual _PTR(SObject) GetCurrentObject();
+  virtual std::string GetName();
+  virtual _PTR(SObject) AddUseCase(const std::string& theName);
+  virtual _PTR(UseCaseIterator) GetUseCaseIterator(const _PTR(SObject)& anObject);
+
+};
+#endif
index c35e2f560283d1db9e0edea2c1d716311476c765..543b81304ec4b05b55fa2cac8ff244e2746b7505 100644 (file)
@@ -1,34 +1,12 @@
-//  SALOME SALOMEDS : data structure of SALOME and sources of Salome data server 
-//
-//  Copyright (C) 2003  CEA/DEN, EDF R&D
-//
-//
-//
 //  File   : SALOMEDS_UseCaseBuilder_i.cxx
-//  Author : Yves FRICAUD
+//  Author : Sergey RUIN
 //  Module : SALOME
 
+
 #include "SALOMEDS_UseCaseBuilder_i.hxx"
-#include "SALOMEDS_Study_i.hxx"
-#include "SALOMEDS_SObject_i.hxx"
 #include "SALOMEDS_UseCaseIterator_i.hxx"
-
-#include <TDF_Label.hxx>
-#include <TDF_Tool.hxx>
-#include <TDF_Data.hxx>
-#include <TDF_Reference.hxx>
-#include <TDF_AttributeList.hxx>
-#include <TDF_ListIteratorOfAttributeList.hxx>
-#include <TDataStd_ChildNodeIterator.hxx>
-#include <TCollection_AsciiString.hxx>
-#include <TDF_ChildIterator.hxx>
-
-#include <TDataStd_Integer.hxx>
-#include <TDataStd_Name.hxx>
-#include <Standard_GUID.hxx>
-
-#define USE_CASE_LABEL_TAG           2
-#define USE_CASE_GUID                "AA43BB12-D9CD-11d6-945D-0050DA506788"
+#include "SALOMEDS_SObject_i.hxx"  
+#include "SALOMEDS.hxx"
 
 #include "utilities.h"
 
@@ -39,28 +17,11 @@ using namespace std;
  *  Purpose  :
  */
 //============================================================================
-SALOMEDS_UseCaseBuilder_i::SALOMEDS_UseCaseBuilder_i(SALOMEDS_Study_i* theStudy,
-                                                    const Handle(TDocStd_Document)& theDocument):
-  _doc(theDocument),
-  _study(theStudy)
+SALOMEDS_UseCaseBuilder_i::SALOMEDS_UseCaseBuilder_i(const Handle(SALOMEDSImpl_UseCaseBuilder)& theImpl,
+                                                    CORBA::ORB_ptr orb)
 {
-  if(_doc.IsNull()) return;
-
-  TDF_Label aLabel = _doc->Main().Root().FindChild(USE_CASE_LABEL_TAG); //Iterate all use cases
-  if(!aLabel.FindAttribute(Standard_GUID(USE_CASE_GUID), _root)) {
-    _root = TDataStd_TreeNode::Set(aLabel, Standard_GUID(USE_CASE_GUID));
-  }
-
-  Handle(TDF_Reference) aRef;
-  if(!_root->FindAttribute(TDF_Reference::GetID(), aRef)) {
-    aRef = TDF_Reference::Set(_root->Label(), _root->Label());  
-  }  
-
-  Handle(TDataStd_Name) aNameAttr;
-  if(!aLabel.FindAttribute(TDataStd_Name::GetID(), aNameAttr)) { 
-    aNameAttr = TDataStd_Name::Set(aLabel, "Use cases"); 
-  }
-
+  _orb = CORBA::ORB::_duplicate(orb);
+  _impl = theImpl;
 }
 
 //============================================================================
@@ -73,21 +34,6 @@ SALOMEDS_UseCaseBuilder_i::~SALOMEDS_UseCaseBuilder_i()
 }
 
 
-//============================================================================
-CORBA::ORB_var SALOMEDS_UseCaseBuilder_i::GetORB() const
-{
-  return _study->GetORB();
-}
-
-
-//============================================================================
-PortableServer::POA_var SALOMEDS_UseCaseBuilder_i::GetPOA() const
-{
-  return _study->GetPOA();
-}
-
-
-//============================================================================
 //============================================================================
 /*! Function : Append
  *  Purpose  : 
@@ -95,27 +41,9 @@ PortableServer::POA_var SALOMEDS_UseCaseBuilder_i::GetPOA() const
 //============================================================================
 CORBA::Boolean SALOMEDS_UseCaseBuilder_i::Append(SALOMEDS::SObject_ptr theObject)
 {
-  if(_root.IsNull() || theObject->_is_nil()) return 0;
-
-  TDF_Label aLabel;
-
-  TDF_Tool::Label(_root->Label().Data(), theObject->GetID(), aLabel);
-  if(aLabel.IsNull()) return 0;
-
-  Handle(TDataStd_TreeNode) aNode, aCurrentNode;
-  aNode = TDataStd_TreeNode::Set(aLabel, _root->ID());
-  aNode->Remove();
-
-  Handle(TDF_Reference) aRef;
-  if(!_root->FindAttribute(TDF_Reference::GetID(), aRef)) {
-    aRef = TDF_Reference::Set(_root->Label(), _root->Label());  
-  }  
-  TDF_Label aCurrent = aRef->Get();
-
-  if(aCurrent.IsNull() || !aCurrent.FindAttribute(_root->ID(), aCurrentNode)) 
-    aCurrentNode = _root;
-
-  return aCurrentNode->Append(aNode);
+  SALOMEDS::Locker lock;
+  if(_impl.IsNull() || theObject->_is_nil()) return 0;
+  return _impl->Append(_impl->GetSObject(theObject->GetID()));
 }
 
  //============================================================================
@@ -125,39 +53,9 @@ CORBA::Boolean SALOMEDS_UseCaseBuilder_i::Append(SALOMEDS::SObject_ptr theObject
 //============================================================================
 CORBA::Boolean SALOMEDS_UseCaseBuilder_i::Remove(SALOMEDS::SObject_ptr theObject)
 {
-  if(_root.IsNull() || theObject->_is_nil()) return 0;
-
-  TDF_Label aLabel;
-  TDF_Tool::Label(_root->Label().Data(), theObject->GetID(), aLabel);
-  if(aLabel.IsNull()) return 0;
-
-  Handle(TDataStd_TreeNode) aNode;
-  if(!aLabel.FindAttribute(_root->ID(), aNode)) return 0;
-
-  aNode->Remove();
-
-  TDF_AttributeList aList;
-  aList.Append(aNode);
-
-  Handle(TDF_Reference) aRef;
-  if(!_root->FindAttribute(TDF_Reference::GetID(), aRef)) {
-    aRef = TDF_Reference::Set(_root->Label(), _root->Label());  
-  }  
-  TDF_Label aCurrent = aRef->Get();
-
-  TDataStd_ChildNodeIterator aChildItr(aNode, Standard_True);
-  for(; aChildItr.More(); aChildItr.Next()) 
-    aList.Append(aChildItr.Value());
-
-  TDF_ListIteratorOfAttributeList anIterator(aList);
-  for(; anIterator.More(); anIterator.Next()) {
-    if(anIterator.Value()->Label() ==  aCurrent) { //The current node is removed
-      aRef->Set(_root->Label()); //Reset the current node to the root
-    }
-    anIterator.Value()->Label().ForgetAttribute(_root->ID());
-  }
-
-  return 1;
+  SALOMEDS::Locker lock;
+  if(_impl.IsNull() || theObject->_is_nil()) return 0;
+  return _impl->Remove(_impl->GetSObject(theObject->GetID()));
 }
 
 
@@ -169,24 +67,9 @@ CORBA::Boolean SALOMEDS_UseCaseBuilder_i::Remove(SALOMEDS::SObject_ptr theObject
 CORBA::Boolean SALOMEDS_UseCaseBuilder_i::AppendTo(SALOMEDS::SObject_ptr theFather, 
                                                   SALOMEDS::SObject_ptr theObject)
 {
-  if(_root.IsNull() || theFather->_is_nil() || theObject->_is_nil()) return 0;
-
-  TDF_Label aFatherLabel, aLabel;
-  Handle(TDataStd_TreeNode) aFather, aNode;
-  
-  TDF_Tool::Label(_root->Label().Data(), theFather->GetID(), aFatherLabel);
-  if(aFatherLabel.IsNull()) return 0;
-  if(!aFatherLabel.FindAttribute(_root->ID(), aFather)) return 0;
-
-  TDF_Tool::Label(_root->Label().Data(), theObject->GetID(), aLabel);
-  if(aLabel.IsNull()) return 0;
-  if(!aLabel.FindAttribute(_root->ID(), aNode)) {
-    aNode = TDataStd_TreeNode::Set(aLabel, _root->ID());
-  }
-  else
-    aNode->Remove();
-
-  return aFather->Append(aNode);
+  SALOMEDS::Locker lock;
+  if(_impl.IsNull() || theFather->_is_nil() || theObject->_is_nil()) return 0;
+  return _impl->AppendTo(_impl->GetSObject(theFather->GetID()), _impl->GetSObject(theObject->GetID()));
 }
 
 //============================================================================
@@ -197,26 +80,9 @@ CORBA::Boolean SALOMEDS_UseCaseBuilder_i::AppendTo(SALOMEDS::SObject_ptr theFath
 CORBA::Boolean SALOMEDS_UseCaseBuilder_i::InsertBefore(SALOMEDS::SObject_ptr theFirst, 
                                                       SALOMEDS::SObject_ptr theNext)
 {
-  if(_root.IsNull() || theFirst->_is_nil() || theNext->_is_nil()) return 0;
-
-  TDF_Label aFirstLabel, aLabel;
-  Handle(TDataStd_TreeNode) aFirstNode, aNode;
-  
-  TDF_Tool::Label(_root->Label().Data(), theFirst->GetID(), aFirstLabel);
-  if(aFirstLabel.IsNull()) return 0;
-  if(aFirstLabel.FindAttribute(_root->ID(), aFirstNode)) {
-    aFirstNode->Remove();
-    aFirstLabel.ForgetAttribute(aFirstNode->ID());
-  }
-
-  aFirstNode = TDataStd_TreeNode::Set(aFirstLabel, _root->ID());
-  
-
-  TDF_Tool::Label(_root->Label().Data(), theNext->GetID(), aLabel);
-  if(aLabel.IsNull()) return 0;
-  if(!aLabel.FindAttribute(_root->ID(), aNode)) return 0;
-
-  return aNode->InsertBefore(aFirstNode);
+  SALOMEDS::Locker lock;
+  if(_impl.IsNull() || theFirst->_is_nil() || theNext->_is_nil()) return 0;
+  return _impl->AppendTo(_impl->GetSObject(theFirst->GetID()), _impl->GetSObject(theNext->GetID()));
 }
 
 
@@ -227,23 +93,9 @@ CORBA::Boolean SALOMEDS_UseCaseBuilder_i::InsertBefore(SALOMEDS::SObject_ptr the
 //============================================================================
 CORBA::Boolean SALOMEDS_UseCaseBuilder_i::SetCurrentObject(SALOMEDS::SObject_ptr theObject)
 {
-  if(_root.IsNull() || theObject->_is_nil()) return 0;
-
-  TDF_Label aLabel;
-  Handle(TDataStd_TreeNode) aNode;
-  TDF_Tool::Label(_root->Label().Data(), theObject->GetID(), aLabel);
-  if(aLabel.IsNull()) return 0;
-  if(!aLabel.FindAttribute(_root->ID(), aNode)) return 0;
-
-
-  Handle(TDF_Reference) aRef;
-  if(!_root->FindAttribute(TDF_Reference::GetID(), aRef)) {
-    aRef = TDF_Reference::Set(_root->Label(), aNode->Label());  
-  }
-  
-  aRef->Set(aNode->Label());
-
-  return 1;
+  SALOMEDS::Locker lock;
+  if(_impl.IsNull() || theObject->_is_nil()) return 0;
+  return _impl->SetCurrentObject(_impl->GetSObject(theObject->GetID()));
 }
 
 //============================================================================
@@ -253,14 +105,9 @@ CORBA::Boolean SALOMEDS_UseCaseBuilder_i::SetCurrentObject(SALOMEDS::SObject_ptr
 //============================================================================
 CORBA::Boolean SALOMEDS_UseCaseBuilder_i::SetRootCurrent()
 {
-  if(_root.IsNull()) return 0;
-   
-  Handle(TDF_Reference) aRef;
-  if(!_root->FindAttribute(TDF_Reference::GetID(), aRef)) 
-    aRef = TDF_Reference::Set(_root->Label(), _root->Label());  
-
-  aRef->Set(_root->Label());
-  return 1;
+  SALOMEDS::Locker lock;
+  if(_impl.IsNull()) return 0;
+  return _impl->SetRootCurrent();
 }
 
 //============================================================================
@@ -270,17 +117,9 @@ CORBA::Boolean SALOMEDS_UseCaseBuilder_i::SetRootCurrent()
 //============================================================================
 CORBA::Boolean SALOMEDS_UseCaseBuilder_i::HasChildren(SALOMEDS::SObject_ptr theObject)
 {
-  if(_root.IsNull()) return 0;
-
-  TDF_Label aLabel;
-  if (theObject->_is_nil()) aLabel = _root->Label();
-  else TDF_Tool::Label(_root->Label().Data(), theObject->GetID(), aLabel);
-  if(aLabel.IsNull()) return 0;
-
-  Handle(TDataStd_TreeNode) aNode;
-  if(!aLabel.FindAttribute(_root->ID(), aNode)) return 0;
-
-  return !(aNode->First().IsNull());
+  SALOMEDS::Locker lock;
+  if(_impl.IsNull()) return 0;
+  return _impl->HasChildren(_impl->GetSObject(theObject->GetID()));
 }
 
 //============================================================================
@@ -288,18 +127,11 @@ CORBA::Boolean SALOMEDS_UseCaseBuilder_i::HasChildren(SALOMEDS::SObject_ptr theO
  *  Purpose  :
  */
 //============================================================================
-CORBA::Boolean SALOMEDS_UseCaseBuilder_i::SetName(const char* theName) {
-  if(_root.IsNull()) return 0;
-
-  Handle(TDataStd_Name) aNameAttrib;
-  TCollection_ExtendedString aName(const_cast<char*>(theName));
-
-  if (!_root->FindAttribute(TDataStd_Name::GetID(), aNameAttrib))
-    aNameAttrib = TDataStd_Name::Set(_root->Label(), aName);
-  else    
-    aNameAttrib->Set(aName);
-    
-  return 1;
+CORBA::Boolean SALOMEDS_UseCaseBuilder_i::SetName(const char* theName) 
+{
+  SALOMEDS::Locker lock;
+  if(_impl.IsNull()) return 0;
+  return _impl->SetName((char*)theName);
 }
 
 
@@ -310,16 +142,12 @@ CORBA::Boolean SALOMEDS_UseCaseBuilder_i::SetName(const char* theName) {
 //============================================================================
 SALOMEDS::SObject_ptr SALOMEDS_UseCaseBuilder_i::GetCurrentObject()
 {
-  if(_root.IsNull()) return NULL;
-
-  Handle(TDF_Reference) aRef;
-  if(!_root->FindAttribute(TDF_Reference::GetID(), aRef)) {
-    aRef = TDF_Reference::Set(_root->Label(), _root->Label());  
-  }  
-  TDF_Label aCurrent = aRef->Get();  
-  if(aCurrent.IsNull()) return NULL;
-
-  return SALOMEDS_SObject_i::NewRef(_study,aCurrent)._retn();
+  SALOMEDS::Locker lock; 
+  
+  if(_impl.IsNull()) return NULL;
+  Handle(SALOMEDSImpl_SObject) aSO = _impl->GetCurrentObject();
+  SALOMEDS::SObject_var so = SALOMEDS_SObject_i::New (aSO, _orb);
+  return so._retn();
 }
 
 //============================================================================
@@ -327,14 +155,10 @@ SALOMEDS::SObject_ptr SALOMEDS_UseCaseBuilder_i::GetCurrentObject()
  *  Purpose  :
  */
 //============================================================================
-char* SALOMEDS_UseCaseBuilder_i::GetName() {
-  CORBA::String_var aString;
-  if(_root.IsNull()) return aString._retn();
-
-  Handle(TDataStd_Name) aName;
-  if (!_root->FindAttribute(TDataStd_Name::GetID(), aName)) return aString._retn();
-  aString = CORBA::string_dup(TCollection_AsciiString(aName->Get()).ToCString());
-  return aString._retn();
+char* SALOMEDS_UseCaseBuilder_i::GetName() 
+{
+  SALOMEDS::Locker lock;
+  return CORBA::string_dup(_impl->GetName().ToCString());
 }
 
 //============================================================================ 
@@ -344,12 +168,10 @@ char* SALOMEDS_UseCaseBuilder_i::GetName() {
 //============================================================================ 
 CORBA::Boolean SALOMEDS_UseCaseBuilder_i::IsUseCase(SALOMEDS::SObject_ptr theObject)
 {
-  if(theObject->_is_nil()) return false;
-  TDF_Label aFather, aLabel; 
-  TDF_Tool::Label(_doc->GetData(), theObject->GetID(), aLabel);
-  aFather = _doc->Main().Root().FindChild(USE_CASE_LABEL_TAG);
-  if(aLabel.Father() == aFather) return true;
-  return false;
+  SALOMEDS::Locker lock;
+  
+  if(_impl.IsNull() || theObject->_is_nil()) return false;
+  return _impl->IsUseCase(_impl->GetSObject(theObject->GetID()));
 }
 
 //============================================================================ 
@@ -359,36 +181,12 @@ CORBA::Boolean SALOMEDS_UseCaseBuilder_i::IsUseCase(SALOMEDS::SObject_ptr theObj
 //============================================================================ 
 SALOMEDS::SObject_ptr SALOMEDS_UseCaseBuilder_i::AddUseCase(const char* theName)
 {
-  Standard_GUID aBasicGUID(USE_CASE_GUID);
-
-  //Create a use cases structure if it not exists 
-
-  Handle(TDataStd_TreeNode) aFatherNode, aNode;
-  Handle(TDataStd_Integer) anInteger;
-  Handle(TDF_Reference) aRef;
-
-  TDF_Label aLabel = _doc->Main().Root().FindChild(USE_CASE_LABEL_TAG);
-
-  if(!_root->FindAttribute(TDF_Reference::GetID(), aRef)) {
-    aRef = TDF_Reference::Set(aLabel, aLabel);
-  }
-  if(!aRef->Get().FindAttribute(aBasicGUID, aFatherNode)) {
-    aFatherNode = TDataStd_TreeNode::Set(aRef->Get());
-  }
-
-  if(!_root->FindAttribute(TDataStd_Integer::GetID(), anInteger)) {
-    anInteger = TDataStd_Integer::Set(aLabel, 0);
-  }
-
-  //Create a new use case
-  anInteger->Set(anInteger->Get()+1);
-  TDF_Label aChild = aLabel.FindChild(anInteger->Get());
-  aNode = TDataStd_TreeNode::Set(aChild, aBasicGUID);
-  aFatherNode->Append(aNode);
-  TDataStd_Name::Set(aChild, TCollection_ExtendedString(const_cast<char*>(theName)));
-
-  return SALOMEDS_SObject_i::NewRef(_study,aChild)._retn();
+  SALOMEDS::Locker lock;
+  
+  if(_impl.IsNull()) return SALOMEDS::SObject::_nil();
+  Handle(SALOMEDSImpl_SObject) aSO = _impl->AddUseCase((char*)theName);
+  SALOMEDS::SObject_var so = SALOMEDS_SObject_i::New (aSO, _orb);
+  return so._retn();
 }
 
 //============================================================================
@@ -396,17 +194,13 @@ SALOMEDS::SObject_ptr SALOMEDS_UseCaseBuilder_i::AddUseCase(const char* theName)
  *  Purpose  : Creates a new UseCase iterator, if anObject is null all use cases are iterated 
  */
 //============================================================================
-SALOMEDS::UseCaseIterator_ptr SALOMEDS_UseCaseBuilder_i::GetUseCaseIterator(SALOMEDS::SObject_ptr anObject) 
+SALOMEDS::UseCaseIterator_ptr SALOMEDS_UseCaseBuilder_i::GetUseCaseIterator(SALOMEDS::SObject_ptr theObject) 
 {
-  TDF_Label aLabel;
-
-  if(!anObject->_is_nil()) {
-    TDF_Tool::Label(_doc->GetData(), anObject->GetID(), aLabel); //Iterate only sub tree in the use case
-  }
-  else {
-    aLabel = _doc->Main().Root().FindChild(USE_CASE_LABEL_TAG); //Iterate all use cases
-  }
-
-  SALOMEDS_UseCaseIterator_i* aServant = new SALOMEDS_UseCaseIterator_i(_study,aLabel,USE_CASE_GUID,Standard_False);
-  return aServant->_this(); 
+  SALOMEDS::Locker lock;
+  
+  if(_impl.IsNull()) return SALOMEDS::UseCaseIterator::_nil();
+  Handle(SALOMEDSImpl_UseCaseIterator) anItr = _impl->GetUseCaseIterator(_impl->GetSObject(theObject->GetID()));
+  SALOMEDS_UseCaseIterator_i* aServant = new SALOMEDS_UseCaseIterator_i(anItr, _orb);
+  SALOMEDS::UseCaseIterator_var anIterator = SALOMEDS::UseCaseIterator::_narrow(aServant->_this());
+  return anIterator._retn(); 
 }
index 796c803794533ccb4ee77c0b28c951f97a7b915d..6b2ab147e77450d4d9039379c6178416f04e98a7 100644 (file)
@@ -1,47 +1,44 @@
-//  SALOME SALOMEDS : data structure of SALOME and sources of Salome data server 
-//
-//  Copyright (C) 2003  CEA/DEN, EDF R&D
-//
-//
-//
 //  File   : SALOMEDS_UseCaseBuilder_i.hxx
-//  Author : Yves FRICAUD
+//  Author : Sergey RUIN
 //  Module : SALOME
 
 #ifndef __SALOMEDS_USECaseBuilder_I_H__
 #define __SALOMEDS_USECaseBuilder_I_H__
 
+// std C++ headers
+#include <iostream>
+
 // IDL headers
 #include <SALOMEconfig.h>
 #include CORBA_SERVER_HEADER(SALOMEDS)
 #include CORBA_SERVER_HEADER(SALOMEDS_Attributes)
+#include <SALOME_GenericObj_i.hh>
 
 // Cascade headers
-#include <TDataStd_TreeNode.hxx>
-#include <TDocStd_Document.hxx>
+#include <Standard_GUID.hxx>
+#include <stdio.h>
 
-class SALOMEDS_Study_i;
+#include "SALOMEDSImpl_UseCaseIterator.hxx"
+#include "SALOMEDSImpl_UseCaseBuilder.hxx"
 
-class SALOMEDS_UseCaseBuilder_i: public POA_SALOMEDS::UseCaseBuilder,
-                                public PortableServer::RefCountServantBase 
+class SALOMEDS_UseCaseBuilder_i: public virtual POA_SALOMEDS::UseCaseBuilder,
+                                public virtual PortableServer::RefCountServantBase,
+                                public virtual SALOME::GenericObj_i
 {
-  SALOMEDS_UseCaseBuilder_i(); // Not implemented
-  void operator=(const SALOMEDS_UseCaseBuilder_i&); // Not implemented
-
 private:
-  Handle(TDataStd_TreeNode)     _root;
-  Handle(TDocStd_Document)      _doc;
-  SALOMEDS_Study_i*             _study;
+
+  CORBA::ORB_ptr                      _orb;
+  Handle(SALOMEDSImpl_UseCaseBuilder) _impl;
 
 public:
-  SALOMEDS_UseCaseBuilder_i(SALOMEDS_Study_i* theStudy,
-                           const Handle(TDocStd_Document)& theDocument);
+
+  //! standard constructor  
+  SALOMEDS_UseCaseBuilder_i(const Handle(SALOMEDSImpl_UseCaseBuilder)& theDocument,
+                           CORBA::ORB_ptr);
   
+  //! standard destructor
   ~SALOMEDS_UseCaseBuilder_i();
   
-  CORBA::ORB_var GetORB() const;
-  PortableServer::POA_var GetPOA() const;
-
   virtual CORBA::Boolean Append(SALOMEDS::SObject_ptr theObject);
 
   virtual CORBA::Boolean Remove(SALOMEDS::SObject_ptr theObject);
diff --git a/src/SALOMEDS/SALOMEDS_UseCaseIterator.cxx b/src/SALOMEDS/SALOMEDS_UseCaseIterator.cxx
new file mode 100644 (file)
index 0000000..36bbb0c
--- /dev/null
@@ -0,0 +1,57 @@
+//  File   : SALOMEDS_UseCaseIterator.cxx
+//  Author : Sergey RUIN
+//  Module : SALOME
+
+
+
+#include "SALOMEDS_UseCaseIterator.hxx"
+#include "SALOMEDS_SObject.hxx"
+
+using namespace std; 
+
+SALOMEDS_UseCaseIterator::SALOMEDS_UseCaseIterator(const Handle(SALOMEDSImpl_UseCaseIterator)& theIterator)
+{
+  _isLocal = true;
+  _local_impl = theIterator;
+  _corba_impl = SALOMEDS::UseCaseIterator::_nil();
+}
+
+SALOMEDS_UseCaseIterator::SALOMEDS_UseCaseIterator(SALOMEDS::UseCaseIterator_ptr theIterator)
+{
+  _isLocal = false;
+  _local_impl = NULL;
+  _corba_impl = SALOMEDS::UseCaseIterator::_duplicate(theIterator);
+}
+
+SALOMEDS_UseCaseIterator::~SALOMEDS_UseCaseIterator()
+{
+  if(!_isLocal) _corba_impl->Destroy();    
+}
+
+void SALOMEDS_UseCaseIterator::Init(bool theAllLevels)
+{
+  if(_isLocal) _local_impl->Init(theAllLevels);
+  else _corba_impl->Init(theAllLevels);
+}
+
+bool SALOMEDS_UseCaseIterator::More()
+{
+  bool ret;
+  if(_isLocal) ret = _local_impl->More();
+  else ret = _corba_impl->More();
+  return ret;
+}
+
+void SALOMEDS_UseCaseIterator::Next()
+{
+  if(_isLocal) _local_impl->Next();
+  else _corba_impl->Next();
+}
+
+_PTR(SObject) SALOMEDS_UseCaseIterator::Value()
+{
+  SALOMEDS_SObject* aSO;
+  if(_isLocal) aSO = new SALOMEDS_SObject(_local_impl->Value());
+  else aSO = new SALOMEDS_SObject(_corba_impl->Value());
+  return _PTR(SObject)(aSO);
+}
diff --git a/src/SALOMEDS/SALOMEDS_UseCaseIterator.hxx b/src/SALOMEDS/SALOMEDS_UseCaseIterator.hxx
new file mode 100644 (file)
index 0000000..687ba85
--- /dev/null
@@ -0,0 +1,35 @@
+//  File   : SALOMEDS_UseCaseIterator.hxx
+//  Author : Sergey RUIN
+//  Module : SALOME
+
+#ifndef __SALOMEDS_USECASEITERATOR_H__
+#define __SALOMEDS_USECASEITERATOR_H__
+
+#include "SALOMEDSClient_UseCaseIterator.hxx"
+#include "SALOMEDSClient_SObject.hxx"
+#include "SALOMEDSImpl_UseCaseIterator.hxx"
+
+// IDL headers
+#include <SALOMEconfig.h>
+#include CORBA_SERVER_HEADER(SALOMEDS)
+
+class SALOMEDS_UseCaseIterator: public SALOMEDSClient_UseCaseIterator
+{
+private:
+  bool _isLocal;
+  Handle(SALOMEDSImpl_UseCaseIterator) _local_impl;
+  SALOMEDS::UseCaseIterator_var        _corba_impl;
+
+public:
+  
+  SALOMEDS_UseCaseIterator(const Handle(SALOMEDSImpl_UseCaseIterator)& theIterator);
+  SALOMEDS_UseCaseIterator(SALOMEDS::UseCaseIterator_ptr theIterator);
+  ~SALOMEDS_UseCaseIterator();
+
+  virtual void Init(bool theAllLevels);
+  virtual bool More();
+  virtual void Next();
+  virtual _PTR(SObject) Value();
+};
+
+#endif
index 38dbd0568f403f2fd229defb7ba15959214b788a..4a89352cee0ed6a94a0814575e70eae079158cc0 100644 (file)
@@ -1,36 +1,27 @@
-//  SALOME SALOMEDS : data structure of SALOME and sources of Salome data server 
-//
-//  Copyright (C) 2003  CEA/DEN, EDF R&D
-//
-//
-//
 //  File   : SALOMEDS_UseCaseIterator_i.cxx
-//  Author : Yves FRICAUD
+//  Author : Sergey RUIN
 //  Module : SALOME
 
-using namespace std;
+
 #include "SALOMEDS_UseCaseIterator_i.hxx"
 #include "SALOMEDS_SObject_i.hxx"
-#include "utilities.h"
+#include "SALOMEDS.hxx"
 
+#include "SALOMEDSImpl_SObject.hxx"
+#include "utilities.h"
 
+using namespace std;
 
 //============================================================================
 /*! Function : constructor
  *  Purpose  :
  */
 //============================================================================
-SALOMEDS_UseCaseIterator_i::SALOMEDS_UseCaseIterator_i(SALOMEDS_Study_i* theStudy,
-                                                      const TDF_Label& theLabel, 
-                                                      const Standard_GUID& theGUID, 
-                                                      const Standard_Boolean theIsAllLevels):
-  _guid(theGUID), 
-  _levels(theIsAllLevels),
-  _study(theStudy)
+SALOMEDS_UseCaseIterator_i::SALOMEDS_UseCaseIterator_i(const Handle(SALOMEDSImpl_UseCaseIterator)& theImpl, 
+                                                      CORBA::ORB_ptr orb)
 {
-  if(theLabel.FindAttribute(_guid, _node)) {
-    _it.Initialize (_node, _levels);
-  }
+  _orb = CORBA::ORB::_duplicate(orb);
+  _impl = theImpl;
 }
 
 //============================================================================
@@ -49,7 +40,8 @@ SALOMEDS_UseCaseIterator_i::~SALOMEDS_UseCaseIterator_i()
 //============================================================================
 void SALOMEDS_UseCaseIterator_i::Init(CORBA::Boolean allLevels)
 { 
-  _it.Initialize (_node, allLevels);
+  SALOMEDS::Locker lock;
+  _impl->Init(allLevels);
 }
 
 //============================================================================
@@ -59,17 +51,19 @@ void SALOMEDS_UseCaseIterator_i::Init(CORBA::Boolean allLevels)
 //============================================================================
 CORBA::Boolean SALOMEDS_UseCaseIterator_i::More()
 {
-  return _it.More();
+  SALOMEDS::Locker lock;
+  return _impl->More();
 }
 
- //============================================================================
+//============================================================================
 /*! Function : Next
  * 
  */
 //============================================================================
 void SALOMEDS_UseCaseIterator_i::Next()
 {
-  _it.Next();
+  SALOMEDS::Locker lock;
+  _impl->Next();
 }
 
 
@@ -78,10 +72,11 @@ void SALOMEDS_UseCaseIterator_i::Next()
  *  Purpose  :
  */
 //============================================================================
-
 SALOMEDS::SObject_ptr SALOMEDS_UseCaseIterator_i::Value()
 {
-  TDF_Label L = _it.Value()->Label();
-  return SALOMEDS_SObject_i::NewRef(_study,L)._retn();
+  SALOMEDS::Locker lock;
+  Handle(SALOMEDSImpl_SObject) aSO = _impl->Value();
+  SALOMEDS::SObject_var so = SALOMEDS_SObject_i::New (aSO, _orb);
+  return so._retn();
 }
 
index 3e17772073ef39a4049bbeff405a9dc8405a3117..94ccf379dfa6d922c839af2f1a6bf5018ef45856 100644 (file)
@@ -1,46 +1,33 @@
-//  SALOME SALOMEDS : data structure of SALOME and sources of Salome data server 
-//
-//  Copyright (C) 2003  CEA/DEN, EDF R&D
-//
-//
-//
 //  File   : SALOMEDS_UseCaseIterator_i.hxx
-//  Author : Yves FRICAUD
+//  Author : Sergey RUIN
 //  Module : SALOME
 
 #ifndef __SALOMEDS_USECASEITERATOR_I_H__
 #define __SALOMEDS_USECASEITERATOR_I_H__
 
+// std C++ headers
+#include <iostream>
+
 // IDL headers
 #include <SALOMEconfig.h>
 #include CORBA_SERVER_HEADER(SALOMEDS)
+#include <SALOME_GenericObj_i.hh>
 
-// Cascade headers
-#include <TDataStd_ChildNodeIterator.hxx>
-#include <TDataStd_TreeNode.hxx>
-#include <Standard_GUID.hxx>
-
-class SALOMEDS_Study_i;
+#include "SALOMEDSImpl_UseCaseIterator.hxx"
 
-class SALOMEDS_UseCaseIterator_i: public POA_SALOMEDS::UseCaseIterator,
-                                 public PortableServer::RefCountServantBase 
+class SALOMEDS_UseCaseIterator_i: public virtual POA_SALOMEDS::UseCaseIterator,
+                                 public virtual PortableServer::RefCountServantBase, 
+                                 public virtual SALOME::GenericObj_i
 {
-  SALOMEDS_UseCaseIterator_i(); // Not implemented
-  void operator=(const SALOMEDS_UseCaseIterator_i&); // Not implemented
-
 private:
-  Standard_GUID                 _guid;
-  Standard_Boolean              _levels;
-  Handle(TDataStd_TreeNode)     _node;
-  TDataStd_ChildNodeIterator    _it;
-  SALOMEDS_Study_i*             _study;
+  CORBA::ORB_ptr                        _orb;
+  Handle(SALOMEDSImpl_UseCaseIterator) _impl;
 
 public:
+
   //! standard constructor  
-  SALOMEDS_UseCaseIterator_i(SALOMEDS_Study_i* theStudy,
-                            const TDF_Label& theLabel, 
-                            const Standard_GUID& theGUID, 
-                            const Standard_Boolean theIsAllLevels);
+  SALOMEDS_UseCaseIterator_i(const Handle(SALOMEDSImpl_UseCaseIterator)& theImpl, 
+                            CORBA::ORB_ptr);
   
   //! standard destructor
   ~SALOMEDS_UseCaseIterator_i();
@@ -50,6 +37,4 @@ public:
   virtual void Next();
   virtual SALOMEDS::SObject_ptr Value();
 };
-
-
 #endif
diff --git a/src/SALOMEDS/SALOME_DriverPy.py b/src/SALOMEDS/SALOME_DriverPy.py
new file mode 100644 (file)
index 0000000..8728ffa
--- /dev/null
@@ -0,0 +1,44 @@
+import SALOMEDS__POA
+
+class SALOME_DriverPy_i(SALOMEDS__POA.Driver):
+    """
+    """
+    _ComponentDataType = None
+
+    def __init__ (self, componentDataType):
+        print "SALOME_DriverPy.__init__: ",componentDataType
+        _ComponentDataType = componentDataType
+
+    def IORToLocalPersistentID(self, theSObject, IORString, isMultiFile, isASCII):
+        return theSObject.GetID()
+
+    def LocalPersistentIDToIOR(self, theSObject, PersistentID, isMultiFile, isASCII):
+        return ""
+
+    def ComponentDataType(self):
+        return _ComponentDataType
+
+    def Save(self, theComponent, theURL, isMultiFile):
+        return NULL
+
+    def SaveASCII(self, theComponent, theURL, isMultiFile):
+        return self.Save(theComponent, theURL, isMultiFile)
+
+    def Load(self, theComponent, theStream, theURL, isMultiFile):
+        return 1
+
+    def LoadASCII(self, theComponent, theStream, theURL, isMultiFile):
+        return self.Load(theComponent, theStream, theURL, isMultiFile)
+
+    def Close(self, theComponent):
+        pass
+
+    def CanPublishInStudy(self, theIOR):
+        return 1
+
+    def PublishInStudy(self, theStudy, theSObject, theObject, theName):
+        return NULL
+
+    def CanCopy(self, theObject):
+        return 0
+
diff --git a/src/SALOMEDSClient/Makefile.in b/src/SALOMEDSClient/Makefile.in
new file mode 100644 (file)
index 0000000..c3c92b5
--- /dev/null
@@ -0,0 +1,55 @@
+#  File   : Makefile.in
+#  Author : Sergey RUIN
+#  Module : SALOME
+
+top_srcdir=@top_srcdir@
+top_builddir=../..
+srcdir=@srcdir@
+VPATH=.:@srcdir@:@top_srcdir@/idl:$(top_srcdir)/idl
+
+
+@COMMENCE@ 
+
+EXPORT_HEADERS= SALOMEDSClient_definitions.hxx \
+                SALOMEDSClient_AttributeComment.hxx \
+               SALOMEDSClient_AttributeDrawable.hxx \
+                SALOMEDSClient_AttributeExpandable.hxx \
+                SALOMEDSClient_AttributeExternalFileDef.hxx \
+                SALOMEDSClient_AttributeFileType.hxx \
+                SALOMEDSClient_AttributeFlags.hxx \
+                SALOMEDSClient_AttributeGraphic.hxx \
+                SALOMEDSClient_AttributeIOR.hxx \
+                SALOMEDSClient_AttributeInteger.hxx \
+                SALOMEDSClient_AttributeLocalID.hxx \
+                SALOMEDSClient_AttributeName.hxx \
+                SALOMEDSClient_AttributeOpened.hxx \
+                SALOMEDSClient_AttributePersistentRef.hxx \
+                SALOMEDSClient_AttributePixMap.hxx \
+                SALOMEDSClient_AttributePythonObject.hxx \
+                SALOMEDSClient_AttributeReal.hxx \
+                SALOMEDSClient_AttributeSelectable.hxx \
+                SALOMEDSClient_AttributeSequenceOfInteger.hxx \
+                SALOMEDSClient_AttributeSequenceOfReal.hxx \
+                SALOMEDSClient_AttributeStudyProperties.hxx \
+                SALOMEDSClient_AttributeTableOfInteger.hxx \
+                SALOMEDSClient_AttributeTableOfReal.hxx \
+                SALOMEDSClient_AttributeTableOfString.hxx \
+                SALOMEDSClient_AttributeTarget.hxx \
+                SALOMEDSClient_AttributeTextColor.hxx \
+                SALOMEDSClient_AttributeTextHighlightColor.hxx \
+                SALOMEDSClient_AttributeTreeNode.hxx \
+                SALOMEDSClient_AttributeUserID.hxx \
+                SALOMEDSClient_ChildIterator.hxx \
+                SALOMEDSClient_GenericAttribute.hxx \
+                SALOMEDSClient_SComponent.hxx \
+                SALOMEDSClient_SComponentIterator.hxx \
+                SALOMEDSClient_SObject.hxx \
+                SALOMEDSClient_Study.hxx \
+                SALOMEDSClient_StudyBuilder.hxx \
+                SALOMEDSClient_StudyManager.hxx \
+                SALOMEDSClient_UseCaseBuilder.hxx \
+                SALOMEDSClient_UseCaseIterator.hxx \
+               SALOMEDSClient.hxx
+
+@CONCLUDE@
+
diff --git a/src/SALOMEDSClient/SALOMEDSClient.hxx b/src/SALOMEDSClient/SALOMEDSClient.hxx
new file mode 100644 (file)
index 0000000..e64da14
--- /dev/null
@@ -0,0 +1,44 @@
+#ifndef  SALOMEDSCLIENT_HXX
+#define  SALOMEDSCLIENT_HXX
+
+#include "SALOMEDSClient_definitions.hxx"
+#include "SALOMEDSClient_AttributeComment.hxx"
+#include "SALOMEDSClient_AttributeDrawable.hxx"
+#include "SALOMEDSClient_AttributeExpandable.hxx"
+#include "SALOMEDSClient_AttributeExternalFileDef.hxx"
+#include "SALOMEDSClient_AttributeFileType.hxx"
+#include "SALOMEDSClient_AttributeFlags.hxx"
+#include "SALOMEDSClient_AttributeGraphic.hxx"
+#include "SALOMEDSClient_AttributeIOR.hxx"
+#include "SALOMEDSClient_AttributeInteger.hxx"
+#include "SALOMEDSClient_AttributeLocalID.hxx"
+#include "SALOMEDSClient_AttributeName.hxx"
+#include "SALOMEDSClient_AttributeOpened.hxx"
+#include "SALOMEDSClient_AttributePersistentRef.hxx"
+#include "SALOMEDSClient_AttributePixMap.hxx"
+#include "SALOMEDSClient_AttributePythonObject.hxx"
+#include "SALOMEDSClient_AttributeReal.hxx"
+#include "SALOMEDSClient_AttributeSelectable.hxx"
+#include "SALOMEDSClient_AttributeSequenceOfInteger.hxx"
+#include "SALOMEDSClient_AttributeSequenceOfReal.hxx"
+#include "SALOMEDSClient_AttributeStudyProperties.hxx"
+#include "SALOMEDSClient_AttributeTableOfInteger.hxx"
+#include "SALOMEDSClient_AttributeTableOfReal.hxx"
+#include "SALOMEDSClient_AttributeTableOfString.hxx"
+#include "SALOMEDSClient_AttributeTarget.hxx"
+#include "SALOMEDSClient_AttributeTextColor.hxx"
+#include "SALOMEDSClient_AttributeTextHighlightColor.hxx"
+#include "SALOMEDSClient_AttributeTreeNode.hxx"
+#include "SALOMEDSClient_AttributeUserID.hxx"
+#include "SALOMEDSClient_ChildIterator.hxx"
+#include "SALOMEDSClient_GenericAttribute.hxx"
+#include "SALOMEDSClient_SComponent.hxx"
+#include "SALOMEDSClient_SComponentIterator.hxx"
+#include "SALOMEDSClient_SObject.hxx"
+#include "SALOMEDSClient_Study.hxx"
+#include "SALOMEDSClient_StudyBuilder.hxx"
+#include "SALOMEDSClient_StudyManager.hxx"
+#include "SALOMEDSClient_UseCaseBuilder.hxx"
+#include "SALOMEDSClient_UseCaseIterator.hxx"
+
+#endif
diff --git a/src/SALOMEDSClient/SALOMEDSClient_AttributeComment.hxx b/src/SALOMEDSClient/SALOMEDSClient_AttributeComment.hxx
new file mode 100644 (file)
index 0000000..2f01b00
--- /dev/null
@@ -0,0 +1,19 @@
+//  File   : SALOMEDSClient_AttributeComment.hxx
+//  Author : Sergey RUIN
+//  Module : SALOME
+
+#ifndef SALOMEDSClient_AttributeComment_HeaderFile
+#define SALOMEDSClient_AttributeComment_HeaderFile
+
+#include "SALOMEDSClient_definitions.hxx" 
+#include "SALOMEDSClient_GenericAttribute.hxx" 
+#include <string>
+
+class SALOMEDSClient_AttributeComment: public virtual SALOMEDSClient_GenericAttribute
+{
+public:  
+  virtual std::string Value() = 0;
+  virtual void SetValue(const std::string& value) = 0;
+};
+
+#endif
diff --git a/src/SALOMEDSClient/SALOMEDSClient_AttributeDrawable.hxx b/src/SALOMEDSClient/SALOMEDSClient_AttributeDrawable.hxx
new file mode 100644 (file)
index 0000000..b5d424a
--- /dev/null
@@ -0,0 +1,18 @@
+//  File   : SALOMEDSClient_AttributeDrawable.hxx
+//  Author : Sergey RUIN
+//  Module : SALOME
+
+#ifndef SALOMEDSClient_AttributeDrawable_HeaderFile
+#define SALOMEDSClient_AttributeDrawable_HeaderFile
+
+#include "SALOMEDSClient_definitions.hxx" 
+#include "SALOMEDSClient_GenericAttribute.hxx" 
+
+class SALOMEDSClient_AttributeDrawable: public virtual SALOMEDSClient_GenericAttribute
+{
+public: 
+  virtual bool IsDrawable() = 0;
+  virtual void SetDrawable(bool value) = 0;
+};
+
+#endif
diff --git a/src/SALOMEDSClient/SALOMEDSClient_AttributeExpandable.hxx b/src/SALOMEDSClient/SALOMEDSClient_AttributeExpandable.hxx
new file mode 100644 (file)
index 0000000..e16aa10
--- /dev/null
@@ -0,0 +1,21 @@
+//  File   : SALOMEDSClient_AttributeExpandable.hxx
+//  Author : Sergey RUIN
+//  Module : SALOME
+//  $Header:
+
+#ifndef SALOMEDSClient_AttributeExpandable_HeaderFile
+#define SALOMEDSClient_AttributeExpandable_HeaderFile
+
+#include "SALOMEDSClient_definitions.hxx" 
+#include "SALOMEDSClient_GenericAttribute.hxx" 
+
+class SALOMEDSClient_AttributeExpandable: public virtual SALOMEDSClient_GenericAttribute
+{
+public:  
+  virtual bool IsExpandable() = 0;
+  virtual void SetExpandable(bool value) = 0;
+};
+
+
+
+#endif
diff --git a/src/SALOMEDSClient/SALOMEDSClient_AttributeExternalFileDef.hxx b/src/SALOMEDSClient/SALOMEDSClient_AttributeExternalFileDef.hxx
new file mode 100644 (file)
index 0000000..c2b6bba
--- /dev/null
@@ -0,0 +1,21 @@
+//  File   : SALOMEDSClient_AttributeExternalFileDef.hxx
+//  Author : Sergey RUIN
+//  Module : SALOME
+
+#ifndef SALOMEDSClient_AttributeExternalFileDef_HeaderFile
+#define SALOMEDSClient_AttributeExternalFileDef_HeaderFile
+
+#include "SALOMEDSClient_definitions.hxx" 
+#include "SALOMEDSClient_GenericAttribute.hxx" 
+#include <string>
+
+class SALOMEDSClient_AttributeExternalFileDef: public virtual SALOMEDSClient_GenericAttribute
+{
+public:
+  virtual std::string Value() = 0;
+  virtual void SetValue(const std::string& value) = 0;
+};
+
+
+
+#endif
diff --git a/src/SALOMEDSClient/SALOMEDSClient_AttributeFileType.hxx b/src/SALOMEDSClient/SALOMEDSClient_AttributeFileType.hxx
new file mode 100644 (file)
index 0000000..cc20773
--- /dev/null
@@ -0,0 +1,22 @@
+//  File   : SALOMEDSClient_AttributeFileType.hxx
+//  Author : Sergey RUIN
+//  Module : SALOME
+
+#ifndef SALOMEDSClient_AttributeFileType_HeaderFile
+#define SALOMEDSClient_AttributeFileType_HeaderFile
+
+#include "SALOMEDSClient_definitions.hxx" 
+#include "SALOMEDSClient_GenericAttribute.hxx" 
+#include <string>
+
+class SALOMEDSClient_AttributeFileType: public virtual SALOMEDSClient_GenericAttribute
+{
+public:
+  virtual std::string Value() = 0;
+  virtual void SetValue(const std::string& value) = 0;
+  
+};
+
+
+
+#endif
diff --git a/src/SALOMEDSClient/SALOMEDSClient_AttributeFlags.hxx b/src/SALOMEDSClient/SALOMEDSClient_AttributeFlags.hxx
new file mode 100644 (file)
index 0000000..712fd2f
--- /dev/null
@@ -0,0 +1,24 @@
+//  File   : SALOMEDSClient_AttributeFlags.hxx
+//  Author : Sergey RUIN
+//  Module : SALOME
+//  $Header:
+
+#ifndef SALOMEDSClient_AttributeFlags_HeaderFile
+#define SALOMEDSClient_AttributeFlags_HeaderFile
+
+#include "SALOMEDSClient_definitions.hxx" 
+#include "SALOMEDSClient_GenericAttribute.hxx" 
+
+class SALOMEDSClient_AttributeFlags: public virtual SALOMEDSClient_GenericAttribute
+{
+public:
+
+  virtual int   GetFlags() = 0;
+  virtual void  SetFlags(int theFlags) = 0;
+
+  virtual bool  Get(int theFlag) = 0;
+  virtual void  Set(int theFlag, bool theValue) = 0;
+  
+};
+
+#endif
diff --git a/src/SALOMEDSClient/SALOMEDSClient_AttributeGraphic.hxx b/src/SALOMEDSClient/SALOMEDSClient_AttributeGraphic.hxx
new file mode 100644 (file)
index 0000000..3de00de
--- /dev/null
@@ -0,0 +1,21 @@
+//  File   : SALOMEDSClient_AttributeFlags.hxx
+//  Author : Sergey RUIN
+//  Module : SALOME
+//  $Header:
+
+#ifndef SALOMEDSClient_AttributeGraphic_HeaderFile
+#define SALOMEDSClient_AttributeGraphic_HeaderFile
+
+#include "SALOMEDSClient_definitions.hxx" 
+#include "SALOMEDSClient_GenericAttribute.hxx" 
+
+class SALOMEDSClient_AttributeGraphic: public virtual SALOMEDSClient_GenericAttribute
+{
+public:
+  
+  virtual void  SetVisibility(int theViewId, bool theValue) = 0;
+  virtual bool GetVisibility(int theViewId) = 0;
+
+};
+
+#endif
diff --git a/src/SALOMEDSClient/SALOMEDSClient_AttributeIOR.hxx b/src/SALOMEDSClient/SALOMEDSClient_AttributeIOR.hxx
new file mode 100644 (file)
index 0000000..920f97f
--- /dev/null
@@ -0,0 +1,22 @@
+//  File   : SALOMEDSClient_AttributeIOR.hxx
+//  Author : Sergey RUIN
+//  Module : SALOME
+
+#ifndef SALOMEDSClient_AttributeIOR_HeaderFile
+#define SALOMEDSClient_AttributeIOR_HeaderFile
+
+#include "SALOMEDSClient_definitions.hxx" 
+#include "SALOMEDSClient_GenericAttribute.hxx" 
+#include <string>
+
+class SALOMEDSClient_AttributeIOR: public virtual SALOMEDSClient_GenericAttribute
+{
+public:
+  
+  virtual std::string Value() = 0;
+  virtual void SetValue(const std::string& value) = 0;
+  
+};
+
+
+#endif
diff --git a/src/SALOMEDSClient/SALOMEDSClient_AttributeInteger.hxx b/src/SALOMEDSClient/SALOMEDSClient_AttributeInteger.hxx
new file mode 100644 (file)
index 0000000..1b177df
--- /dev/null
@@ -0,0 +1,21 @@
+//  File   : SALOMEDSClient_AttributeInteger.hxx
+//  Author : Sergey RUIN
+//  Module : SALOME
+
+#ifndef SALOMEDSClient_AttributeInteger_HeaderFile
+#define SALOMEDSClient_AttributeInteger_HeaderFile
+
+#include "SALOMEDSClient_definitions.hxx" 
+#include "SALOMEDSClient_GenericAttribute.hxx" 
+
+class SALOMEDSClient_AttributeInteger: public virtual SALOMEDSClient_GenericAttribute
+{
+public:
+  
+  virtual int Value() = 0;
+  virtual void SetValue(int value) = 0;
+};
+
+
+
+#endif
diff --git a/src/SALOMEDSClient/SALOMEDSClient_AttributeLocalID.hxx b/src/SALOMEDSClient/SALOMEDSClient_AttributeLocalID.hxx
new file mode 100644 (file)
index 0000000..705b490
--- /dev/null
@@ -0,0 +1,22 @@
+//  File   : SALOMEDSClient_AttributeLocalID.hxx
+//  Author : Sergey RUIN
+//  Module : SALOME
+//  $Header:
+
+#ifndef SALOMEDSClient_AttributeLocalID_HeaderFile
+#define SALOMEDSClient_AttributeLocalID_HeaderFile
+
+#include "SALOMEDSClient_definitions.hxx" 
+#include "SALOMEDSClient_GenericAttribute.hxx" 
+
+class SALOMEDSClient_AttributeLocalID: public virtual SALOMEDSClient_GenericAttribute
+{
+public:
+  virtual int Value() = 0;
+  virtual void SetValue(int value) = 0;
+
+};
+
+
+
+#endif
diff --git a/src/SALOMEDSClient/SALOMEDSClient_AttributeName.hxx b/src/SALOMEDSClient/SALOMEDSClient_AttributeName.hxx
new file mode 100644 (file)
index 0000000..1d19e84
--- /dev/null
@@ -0,0 +1,25 @@
+//  File   : SALOMEDSClient_AttributeName.hxx
+//  Author : Sergey RUIN
+//  Module : SALOME
+//  $Header:
+
+#ifndef SALOMEDSClient_AttributeName_HeaderFile
+#define SALOMEDSClient_AttributeName_HeaderFile
+
+#include "SALOMEDSClient_definitions.hxx" 
+#include "SALOMEDSClient_GenericAttribute.hxx" 
+#include <string>
+
+class SALOMEDSClient_AttributeName: public virtual SALOMEDSClient_GenericAttribute
+{
+public:
+
+  virtual std::string Value() = 0;
+  virtual void SetValue(const std::string& value) = 0;
+
+};
+
+
+
+
+#endif
diff --git a/src/SALOMEDSClient/SALOMEDSClient_AttributeOpened.hxx b/src/SALOMEDSClient/SALOMEDSClient_AttributeOpened.hxx
new file mode 100644 (file)
index 0000000..fb9266d
--- /dev/null
@@ -0,0 +1,22 @@
+//  File   : SALOMEDSClient_AttributeOpened.hxx
+//  Author : Sergey RUIN
+//  Module : SALOME
+//  $Header:
+
+#ifndef SALOMEDSClient_AttributeOpened_HeaderFile
+#define SALOMEDSClient_AttributeOpened_HeaderFile
+
+#include "SALOMEDSClient_definitions.hxx" 
+#include "SALOMEDSClient_GenericAttribute.hxx" 
+
+class SALOMEDSClient_AttributeOpened: public virtual SALOMEDSClient_GenericAttribute
+{
+public:
+  
+  virtual bool IsOpened() = 0;
+  virtual void SetOpened(bool value) = 0;
+};
+
+
+
+#endif
diff --git a/src/SALOMEDSClient/SALOMEDSClient_AttributePersistentRef.hxx b/src/SALOMEDSClient/SALOMEDSClient_AttributePersistentRef.hxx
new file mode 100644 (file)
index 0000000..6efa09c
--- /dev/null
@@ -0,0 +1,23 @@
+//  File   : SALOMEDSClient_AttributePersistentRef.hxx
+//  Author : Sergey RUIN
+//  Module : SALOME
+
+#ifndef SALOMEDSClient_AttributePersistentRef_HeaderFile
+#define SALOMEDSClient_AttributePersistentRef_HeaderFile
+
+#include "SALOMEDSClient_definitions.hxx" 
+#include "SALOMEDSClient_GenericAttribute.hxx" 
+#include <string>
+
+class SALOMEDSClient_AttributePersistentRef: public virtual SALOMEDSClient_GenericAttribute
+{
+public:
+  
+  virtual std::string Value() = 0;
+  virtual void SetValue(const std::string& value) = 0;
+
+};
+
+
+
+#endif
diff --git a/src/SALOMEDSClient/SALOMEDSClient_AttributePixMap.hxx b/src/SALOMEDSClient/SALOMEDSClient_AttributePixMap.hxx
new file mode 100644 (file)
index 0000000..530380e
--- /dev/null
@@ -0,0 +1,23 @@
+//  File   : SALOMEDSClient_AttributePixMap.hxx
+//  Author : Sergey RUIN
+//  Module : SALOME
+
+#ifndef SALOMEDSClient_AttributePixMap_HeaderFile
+#define SALOMEDSClient_AttributePixMap_HeaderFile
+
+#include "SALOMEDSClient_definitions.hxx" 
+#include "SALOMEDSClient_GenericAttribute.hxx" 
+#include <string> 
+
+class SALOMEDSClient_AttributePixMap: public virtual SALOMEDSClient_GenericAttribute
+{
+public:
+
+  virtual bool HasPixMap() = 0;
+  virtual std::string GetPixMap() = 0;
+  virtual void SetPixMap(const std::string& value) = 0;
+
+};
+
+
+#endif
diff --git a/src/SALOMEDSClient/SALOMEDSClient_AttributePythonObject.hxx b/src/SALOMEDSClient/SALOMEDSClient_AttributePythonObject.hxx
new file mode 100644 (file)
index 0000000..ee0318b
--- /dev/null
@@ -0,0 +1,25 @@
+//  File   : SALOMEDSClient_AttributePythonObject.hxx
+//  Author : Sergey RUIN
+//  Module : SALOME
+
+#ifndef SALOMEDSClient_AttributePythonObject_HeaderFile
+#define SALOMEDSClient_AttributePythonObject_HeaderFile
+
+#include "SALOMEDSClient_definitions.hxx" 
+#include "SALOMEDSClient_GenericAttribute.hxx" 
+#include <string> 
+
+class SALOMEDSClient_AttributePythonObject: public virtual SALOMEDSClient_GenericAttribute
+{
+public:
+
+  virtual void SetObject(const std::string& theSequence, bool IsScript) = 0;
+  virtual std::string GetObject() = 0;
+  virtual bool IsScript() = 0;
+
+};
+
+
+
+
+#endif
diff --git a/src/SALOMEDSClient/SALOMEDSClient_AttributeReal.hxx b/src/SALOMEDSClient/SALOMEDSClient_AttributeReal.hxx
new file mode 100644 (file)
index 0000000..e5360aa
--- /dev/null
@@ -0,0 +1,20 @@
+//  File   : SALOMEDSClient_AttributeReal.hxx
+//  Author : Sergey RUIN
+//  Module : SALOME
+
+#ifndef SALOMEDSClient_AttributeReal_HeaderFile
+#define SALOMEDSClient_AttributeReal_HeaderFile
+
+#include "SALOMEDSClient_definitions.hxx" 
+#include "SALOMEDSClient_GenericAttribute.hxx" 
+
+class SALOMEDSClient_AttributeReal: public virtual SALOMEDSClient_GenericAttribute
+{
+public:
+  
+  virtual double Value() = 0;
+  virtual void SetValue(double value) = 0;
+};
+
+
+#endif
diff --git a/src/SALOMEDSClient/SALOMEDSClient_AttributeSelectable.hxx b/src/SALOMEDSClient/SALOMEDSClient_AttributeSelectable.hxx
new file mode 100644 (file)
index 0000000..257860e
--- /dev/null
@@ -0,0 +1,22 @@
+//  File   : SALOMEDSClient_AttributeSelectable.hxx
+//  Author : Sergey RUIN
+//  Module : SALOME
+
+#ifndef SALOMEDSClient_AttributeSelectable_HeaderFile
+#define SALOMEDSClient_AttributeSelectable_HeaderFile
+
+#include "SALOMEDSClient_definitions.hxx" 
+#include "SALOMEDSClient_GenericAttribute.hxx" 
+
+class SALOMEDSClient_AttributeSelectable: public virtual SALOMEDSClient_GenericAttribute
+{
+public:
+  
+  virtual bool IsSelectable() = 0;
+  virtual void SetSelectable(bool value) = 0;
+
+};
+
+
+
+#endif
diff --git a/src/SALOMEDSClient/SALOMEDSClient_AttributeSequenceOfInteger.hxx b/src/SALOMEDSClient/SALOMEDSClient_AttributeSequenceOfInteger.hxx
new file mode 100644 (file)
index 0000000..4fbd458
--- /dev/null
@@ -0,0 +1,26 @@
+//  File   : SALOMEDSClient_AttributeSequenceOfInteger.hxx
+//  Author : Sergey RUIN
+//  Module : SALOME
+
+#ifndef SALOMEDSClient_AttributeSequenceOfInteger_HeaderFile
+#define SALOMEDSClient_AttributeSequenceOfInteger_HeaderFile
+
+#include <vector>
+#include "SALOMEDSClient_definitions.hxx" 
+#include "SALOMEDSClient_GenericAttribute.hxx" 
+
+class SALOMEDSClient_AttributeSequenceOfInteger: public virtual SALOMEDSClient_GenericAttribute
+{    
+public:
+  
+  virtual void Assign(const std::vector<int>& other) = 0;
+  virtual std::vector<int> CorbaSequence() = 0;
+  virtual void Add(int value) = 0;
+  virtual void Remove(int index) = 0;
+  virtual void ChangeValue(int index, int value) = 0;
+  virtual int Value(int index) = 0;
+  virtual int Length() = 0;
+
+};
+
+#endif
diff --git a/src/SALOMEDSClient/SALOMEDSClient_AttributeSequenceOfReal.hxx b/src/SALOMEDSClient/SALOMEDSClient_AttributeSequenceOfReal.hxx
new file mode 100644 (file)
index 0000000..e30df3b
--- /dev/null
@@ -0,0 +1,28 @@
+//  File   : SALOMEDSClient_AttributeSequenceOfSequenceOfReal.hxx
+//  Author : Sergey RUIN
+//  Module : SALOME
+
+#ifndef SALOMEDSClient_AttributeSequenceOfSequenceOfReal_HeaderFile
+#define SALOMEDSClient_AttributeSequenceOfSequenceOfReal_HeaderFile
+
+#include <vector>
+#include "SALOMEDSClient_definitions.hxx" 
+#include "SALOMEDSClient_GenericAttribute.hxx" 
+
+class SALOMEDSClient_AttributeSequenceOfReal: public virtual SALOMEDSClient_GenericAttribute
+{
+public:
+
+  virtual void Assign(const std::vector<double>& other) = 0;
+  virtual std::vector<double> CorbaSequence() = 0;
+  virtual void Add(double value) = 0;
+  virtual void Remove(int index) = 0;
+  virtual void ChangeValue(int index, double value) = 0;
+  virtual double Value(int index) = 0;
+  virtual int Length() = 0;
+
+};
+
+
+
+#endif
diff --git a/src/SALOMEDSClient/SALOMEDSClient_AttributeStudyProperties.hxx b/src/SALOMEDSClient/SALOMEDSClient_AttributeStudyProperties.hxx
new file mode 100644 (file)
index 0000000..db7c35d
--- /dev/null
@@ -0,0 +1,45 @@
+//  File   : SALOMEDSClient_AttributeStudyProperties.hxx
+//  Author : Sergey RUIN
+//  Module : SALOME
+
+#ifndef SALOMEDSClient_AttributeStudyProperties_HeaderFile
+#define SALOMEDSClient_AttributeStudyProperties_HeaderFile
+
+#include <vector>
+#include <string>
+#include "SALOMEDSClient_definitions.hxx" 
+#include "SALOMEDSClient_GenericAttribute.hxx"
+
+class SALOMEDSClient_AttributeStudyProperties: public virtual SALOMEDSClient_GenericAttribute
+{
+public:
+  
+  virtual void SetUserName(const std::string& theName) = 0;
+  virtual std::string GetUserName() = 0;
+  virtual void SetCreationDate(int theMinute, int theHour, int theDay, int theMonth, int theYear) = 0;
+  virtual bool GetCreationDate(int& theMinute, int& theHour, int& theDay, int& theMonth, int& theYear) = 0;
+  virtual void SetCreationMode(const std::string& theMode) = 0;
+  virtual std::string GetCreationMode() = 0;
+  virtual void SetModified(int theModified) = 0;
+  virtual bool IsModified() = 0;
+  virtual int GetModified() = 0;
+  virtual void SetLocked(bool theLocked) = 0;
+  virtual bool IsLocked() = 0;
+  virtual void SetModification(const std::string& theName,
+                              int theMinute,
+                              int theHour,
+                              int theDay,
+                              int theMonth,
+                              int theYear) = 0;
+  virtual void GetModificationsList(std::vector<std::string>& theNames,
+                                   std::vector<int>& theMinutes,
+                                   std::vector<int>& theHours,
+                                   std::vector<int>& theDays,
+                                   std::vector<int>& theMonths,
+                                   std::vector<int>& theYears,
+                                   bool theWithCreator) = 0;
+
+};
+
+
+#endif
diff --git a/src/SALOMEDSClient/SALOMEDSClient_AttributeTableOfInteger.hxx b/src/SALOMEDSClient/SALOMEDSClient_AttributeTableOfInteger.hxx
new file mode 100644 (file)
index 0000000..2bdeb30
--- /dev/null
@@ -0,0 +1,48 @@
+//  File   : SALOMEDSClient_AttributeTableOfInteger.hxx
+//  Author : Sergey RUIN
+//  Module : SALOME
+
+#ifndef SALOMEDSClient_AttributeTableOfInteger_HeaderFile
+#define SALOMEDSClient_AttributeTableOfInteger_HeaderFile
+
+#include <vector>
+#include <string>
+#include "SALOMEDSClient_definitions.hxx" 
+#include "SALOMEDSClient_GenericAttribute.hxx" 
+
+class SALOMEDSClient_AttributeTableOfInteger: public virtual SALOMEDSClient_GenericAttribute
+{
+    
+public:
+  
+  virtual void SetTitle(const std::string& theTitle) = 0;
+  virtual std::string GetTitle() = 0;
+  virtual void SetRowTitle(int theIndex, const std::string& theTitle) = 0;
+  virtual void SetRowTitles(const std::vector<std::string>& theTitles) = 0;
+  virtual std::vector<std::string> GetRowTitles() = 0;
+  virtual void SetColumnTitle(int theIndex, const std::string& theTitle) = 0;
+  virtual void SetColumnTitles(const std::vector<std::string>& theTitles) = 0;
+  virtual std::vector<std::string> GetColumnTitles() = 0;
+
+  virtual void SetRowUnit(int theIndex, const std::string& theUnit) = 0;
+  virtual void SetRowUnits(const std::vector<std::string>& theUnits) = 0;
+  virtual std::vector<std::string> GetRowUnits() = 0;
+
+  virtual int GetNbRows() = 0;
+  virtual int GetNbColumns() = 0;
+  virtual void AddRow(const std::vector<int>& theData) = 0;
+  virtual void SetRow(int theRow, const std::vector<int>& theData) = 0;
+  virtual std::vector<int> GetRow(int theRow) = 0;
+  virtual void AddColumn(const std::vector<int>& theData) = 0;
+  virtual void SetColumn(int theColumn, const std::vector<int>& theData) = 0;
+  virtual std::vector<int> GetColumn(int theColumn) = 0;
+  virtual void PutValue(int theValue, int theRow, int theColumn) = 0;
+  virtual bool HasValue(int theRow, int theColumn) = 0;
+  virtual int GetValue(int theRow, int theColumn) = 0;
+
+  virtual std::vector<int> GetRowSetIndices(int theRow) = 0;
+  virtual void SetNbColumns(int theNbColumns) = 0;
+
+};
+
+#endif
diff --git a/src/SALOMEDSClient/SALOMEDSClient_AttributeTableOfReal.hxx b/src/SALOMEDSClient/SALOMEDSClient_AttributeTableOfReal.hxx
new file mode 100644 (file)
index 0000000..22df706
--- /dev/null
@@ -0,0 +1,47 @@
+//  File   : SALOMEDSClient_AttributeTableOfReal.hxx
+//  Author : Michael Ponikarov
+//  Module : SALOME
+
+#ifndef SALOMEDSClient_AttributeTableOfReal_HeaderFile
+#define SALOMEDSClient_AttributeTableOfReal_HeaderFile
+
+#include <vector>
+#include <string>
+#include "SALOMEDSClient_definitions.hxx" 
+#include "SALOMEDSClient_GenericAttribute.hxx" 
+
+class SALOMEDSClient_AttributeTableOfReal: public virtual SALOMEDSClient_GenericAttribute
+{
+    
+public:
+  
+  virtual void SetTitle(const std::string& theTitle) = 0;
+  virtual std::string GetTitle() = 0;
+  virtual void SetRowTitle(int theIndex, const std::string& theTitle) = 0;
+  virtual void SetRowTitles(const std::vector<std::string>& theTitles) = 0;
+  virtual std::vector<std::string> GetRowTitles() = 0;
+  virtual void SetColumnTitle(int theIndex, const std::string& theTitle) = 0;
+  virtual void SetColumnTitles(const std::vector<std::string>& theTitles) = 0;
+  virtual std::vector<std::string> GetColumnTitles() = 0;
+  virtual void SetRowUnit(int theIndex, const std::string& theUnit) = 0;
+  virtual void SetRowUnits(const std::vector<std::string>& theUnits) = 0;
+  virtual std::vector<std::string> GetRowUnits() = 0;
+
+  virtual int GetNbRows() = 0;
+  virtual int GetNbColumns() = 0;
+  virtual void AddRow(const std::vector<double>& theData) = 0;
+  virtual void SetRow(int theRow, const std::vector<double>& theData) = 0;
+  virtual std::vector<double> GetRow(int theRow) = 0; 
+  virtual void AddColumn(const std::vector<double>& theData) = 0;
+  virtual void SetColumn(int theColumn, const std::vector<double>& theData) = 0;
+  virtual std::vector<double> GetColumn(int theColumn) = 0;
+  virtual void PutValue(double theValue, int theRow, int theColumn) = 0;
+  virtual bool HasValue(int theRow, int theColumn) = 0;
+  virtual double GetValue(int theRow, int theColumn) = 0;
+
+  virtual std::vector<int> GetRowSetIndices(int theRow) = 0;
+  virtual void SetNbColumns(int theNbColumns) = 0;
+
+};
+
+#endif
diff --git a/src/SALOMEDSClient/SALOMEDSClient_AttributeTableOfString.hxx b/src/SALOMEDSClient/SALOMEDSClient_AttributeTableOfString.hxx
new file mode 100644 (file)
index 0000000..ddb7b69
--- /dev/null
@@ -0,0 +1,47 @@
+//  File   : SALOMEDSClient_AttributeTableOfString.hxx
+//  Author : Sergey RUIN
+//  Module : SALOME
+
+#ifndef SALOMEDSClient_AttributeTableOfString_HeaderFile
+#define SALOMEDSClient_AttributeTableOfString_HeaderFile
+
+#include <vector>
+#include <string>
+#include "SALOMEDSClient_definitions.hxx" 
+#include "SALOMEDSClient_GenericAttribute.hxx" 
+
+class SALOMEDSClient_AttributeTableOfString: public virtual SALOMEDSClient_GenericAttribute
+{    
+public:
+
+  virtual void SetTitle(const std::string& theTitle) = 0;
+  virtual std::string GetTitle() = 0;
+  virtual void SetRowTitle(int theIndex, const std::string& theTitle) = 0;
+  virtual void SetRowTitles(const std::vector<std::string>& theTitles) = 0;
+  virtual std::vector<std::string> GetRowTitles() = 0;
+  virtual void SetColumnTitle(int theIndex, const std::string& theTitle) = 0;
+  virtual void SetColumnTitles(const std::vector<std::string>& theTitles) = 0;
+  virtual std::vector<std::string> GetColumnTitles() = 0; 
+
+  virtual void SetRowUnit(int theIndex, const std::string& theUnit) = 0;
+  virtual void SetRowUnits(const std::vector<std::string>& theUnits) = 0;
+  virtual std::vector<std::string> GetRowUnits() = 0;
+
+  virtual int GetNbRows() = 0;
+  virtual int GetNbColumns() = 0;
+  virtual void AddRow(const std::vector<std::string>& theData) = 0;
+  virtual void SetRow(int theRow, const std::vector<std::string>& theData) = 0;
+  virtual std::vector<std::string> GetRow(int theRow) = 0;
+  virtual void AddColumn(const std::vector<std::string>& theData) = 0;
+  virtual void SetColumn(int theColumn, const std::vector<std::string>& theData) = 0;
+  virtual std::vector<std::string> GetColumn(int theColumn) = 0;
+  virtual void PutValue(const std::string& theValue, int theRow, int theColumn) = 0;
+  virtual bool HasValue(int theRow, int theColumn) = 0;
+  virtual std::string GetValue(int theRow, int theColumn) = 0;
+
+  virtual std::vector<int> GetRowSetIndices(int theRow) = 0;
+  virtual void SetNbColumns(int theNbColumns) = 0;
+
+};
+
+#endif
diff --git a/src/SALOMEDSClient/SALOMEDSClient_AttributeTarget.hxx b/src/SALOMEDSClient/SALOMEDSClient_AttributeTarget.hxx
new file mode 100644 (file)
index 0000000..bb221ed
--- /dev/null
@@ -0,0 +1,21 @@
+//  File   : SALOMEDSClient_AttributeTarget.hxx
+//  Author : Sergey RUIN
+//  Module : SALOME
+
+#ifndef SALOMEDSClient_AttributeTarget_HeaderFile
+#define SALOMEDSClient_AttributeTarget_HeaderFile
+
+#include <vector>
+#include "SALOMEDSClient_definitions.hxx" 
+#include "SALOMEDSClient_SObject.hxx"
+#include "SALOMEDSClient_GenericAttribute.hxx" 
+
+class SALOMEDSClient_AttributeTarget: public virtual SALOMEDSClient_GenericAttribute
+{
+public:
+  virtual void Add(const _PTR(SObject)& theObject) = 0;
+  virtual std::vector<_PTR(SObject)> Get() = 0;
+  virtual void Remove(const _PTR(SObject)& theObject) = 0;
+};
+
+#endif
diff --git a/src/SALOMEDSClient/SALOMEDSClient_AttributeTextColor.hxx b/src/SALOMEDSClient/SALOMEDSClient_AttributeTextColor.hxx
new file mode 100644 (file)
index 0000000..84f722c
--- /dev/null
@@ -0,0 +1,23 @@
+//  File   : SALOMEDSClient_AttributeTextColor.hxx
+//  Author : Sergey RUIN
+//  Module : SALOME
+
+#ifndef SALOMEDSClient_AttributeTextColor_HeaderFile
+#define SALOMEDSClient_AttributeTextColor_HeaderFile
+
+#include <vector>
+#include "SALOMEDSClient_definitions.hxx" 
+#include "SALOMEDSClient_GenericAttribute.hxx" 
+#include "SALOMEDSClient_definitions.hxx"
+
+class SALOMEDSClient_AttributeTextColor: public virtual SALOMEDSClient_GenericAttribute
+{
+public:
+
+  virtual STextColor TextColor() = 0;
+  virtual void SetTextColor(STextColor value) = 0;
+
+};
+
+
+#endif
diff --git a/src/SALOMEDSClient/SALOMEDSClient_AttributeTextHighlightColor.hxx b/src/SALOMEDSClient/SALOMEDSClient_AttributeTextHighlightColor.hxx
new file mode 100644 (file)
index 0000000..ecc03a7
--- /dev/null
@@ -0,0 +1,21 @@
+//  File   : SALOMEDSClient_AttributeTextHighlightColor.hxx
+//  Author : Sergey RUIN
+//  Module : SALOME
+
+#ifndef SALOMEDSClient_AttributeTextHighlightColor_HeaderFile
+#define SALOMEDSClient_AttributeTextHighlightColor_HeaderFile
+
+#include <vector>
+#include "SALOMEDSClient_definitions.hxx" 
+#include "SALOMEDSClient_GenericAttribute.hxx" 
+#include "SALOMEDSClient_definitions.hxx"
+
+class SALOMEDSClient_AttributeTextHighlightColor: public virtual SALOMEDSClient_GenericAttribute
+{
+public:
+  virtual STextColor TextHighlightColor() = 0;
+  virtual void SetTextHighlightColor(STextColor value) = 0;
+};
+
+
+#endif
diff --git a/src/SALOMEDSClient/SALOMEDSClient_AttributeTreeNode.hxx b/src/SALOMEDSClient/SALOMEDSClient_AttributeTreeNode.hxx
new file mode 100644 (file)
index 0000000..8cfe771
--- /dev/null
@@ -0,0 +1,43 @@
+//  File   : SALOMEDSClient_AttributeTreeNode.hxx
+//  Author : Sergey RUIN
+//  Module : SALOME
+
+#ifndef SALOMEDSClient_AttributeTreeNode_HeaderFile
+#define SALOMEDSClient_AttributeTreeNode_HeaderFile
+
+#include "SALOMEDSClient_definitions.hxx" 
+#include "SALOMEDSClient_GenericAttribute.hxx" 
+
+class SALOMEDSClient_AttributeTreeNode
+{
+public:
+  
+  virtual void SetFather(const _PTR(AttributeTreeNode)& value) = 0;
+  virtual bool HasFather() = 0;
+  virtual _PTR(AttributeTreeNode) GetFather() = 0;
+  virtual void SetPrevious(const _PTR(AttributeTreeNode)& value) = 0;
+  virtual bool HasPrevious() = 0;
+  virtual _PTR(AttributeTreeNode) GetPrevious() = 0;
+  virtual void SetNext(const _PTR(AttributeTreeNode)& value) = 0;
+  virtual bool HasNext() = 0;
+  virtual _PTR(AttributeTreeNode) GetNext() = 0;
+  virtual void SetFirst(const _PTR(AttributeTreeNode)& value) = 0;
+  virtual bool HasFirst() = 0;
+  virtual _PTR(AttributeTreeNode) GetFirst() = 0;
+  virtual void SetTreeID(const std::string& value) = 0;
+  virtual std::string GetTreeID() = 0;
+  virtual void Append(const _PTR(AttributeTreeNode)& value) = 0;
+  virtual void Prepend(const _PTR(AttributeTreeNode)& value) = 0;
+  virtual void InsertBefore(const _PTR(AttributeTreeNode)& value) = 0;
+  virtual void InsertAfter(const _PTR(AttributeTreeNode)& value) = 0;
+  virtual void Remove() = 0;
+  virtual int Depth() = 0;
+  virtual bool IsRoot() = 0;
+  virtual bool IsDescendant(const _PTR(AttributeTreeNode)& value) = 0;
+  virtual bool IsFather(const _PTR(AttributeTreeNode)& value) = 0;
+  virtual bool IsChild(const _PTR(AttributeTreeNode)& value) = 0;
+  virtual std::string Label() = 0;
+
+};
+
+#endif
diff --git a/src/SALOMEDSClient/SALOMEDSClient_AttributeUserID.hxx b/src/SALOMEDSClient/SALOMEDSClient_AttributeUserID.hxx
new file mode 100644 (file)
index 0000000..6e90070
--- /dev/null
@@ -0,0 +1,24 @@
+//  File   : SALOMEDSClient_AttributeUserID.hxx
+//  Author : Sergey RUIN
+//  Module : SALOME
+
+#ifndef SALOMEDSClient_AttributeUserID_HeaderFile
+#define SALOMEDSClient_AttributeUserID_HeaderFile
+
+#include "SALOMEDSClient_definitions.hxx" 
+#include "SALOMEDSClient_GenericAttribute.hxx" 
+#include <string> 
+
+class SALOMEDSClient_AttributeUserID: public virtual SALOMEDSClient_GenericAttribute
+{
+public:
+  
+  virtual std::string Value() = 0;
+  virtual void SetValue(const std::string& value) = 0;
+
+};
+
+
+
+
+#endif
diff --git a/src/SALOMEDSClient/SALOMEDSClient_ChildIterator.hxx b/src/SALOMEDSClient/SALOMEDSClient_ChildIterator.hxx
new file mode 100644 (file)
index 0000000..6fa3720
--- /dev/null
@@ -0,0 +1,22 @@
+//  File   : SALOMEDSClient_ChildIterator.hxx
+//  Author : Sergey RUIN
+//  Module : SALOME
+
+#ifndef __SALOMEDSClient_CHILDITERATOR_H__
+#define __SALOMEDSClient_CHILDITERATOR_H__
+
+#include "SALOMEDSClient_definitions.hxx"
+#include "SALOMEDSClient_SObject.hxx"
+
+class SALOMEDSClient_ChildIterator
+{
+public:
+  virtual ~SALOMEDSClient_ChildIterator() {}
+
+  virtual void Init() = 0;
+  virtual void InitEx(bool) = 0;
+  virtual bool More() = 0;
+  virtual void Next() = 0;
+  virtual _PTR(SObject) Value() = 0;
+};
+#endif
diff --git a/src/SALOMEDSClient/SALOMEDSClient_GenericAttribute.hxx b/src/SALOMEDSClient/SALOMEDSClient_GenericAttribute.hxx
new file mode 100644 (file)
index 0000000..4d1f234
--- /dev/null
@@ -0,0 +1,23 @@
+//  File   : SALOMEDSClient__GenericAttribute.hxx
+//  Author : Sergey RUIN
+//  Module : SALOME
+
+#ifndef _GENERICCLIENT_ATTRIBUTE_HXX_
+#define _GENERICCLIENT_ATTRIBUTE_HXX_
+
+#include <string> 
+#include "SALOMEDSClient_definitions.hxx"
+#include "SALOMEDSClient_SObject.hxx"
+
+class SALOMEDSClient_GenericAttribute
+{
+public:
+  virtual ~SALOMEDSClient_GenericAttribute() {}
+  
+  virtual void CheckLocked() = 0;
+  virtual std::string Type() = 0;
+  virtual std::string GetClassType() = 0;
+  virtual _PTR(SObject) GetSObject() = 0;
+};
+
+#endif
diff --git a/src/SALOMEDSClient/SALOMEDSClient_SComponent.hxx b/src/SALOMEDSClient/SALOMEDSClient_SComponent.hxx
new file mode 100644 (file)
index 0000000..dc2a5c0
--- /dev/null
@@ -0,0 +1,21 @@
+//  File   : SALOMEDSClient_SComponent.hxx
+//  Author : Sergey RUIN
+//  Module : SALOME
+
+#ifndef __SALOMEDSCLIENT_SCOMPONENT_H__
+#define __SALOMEDSCLIENT_SCOMPONENT_H__
+
+#include "SALOMEDSClient_definitions.hxx"
+#include "SALOMEDSClient_SObject.hxx"
+#include <string> 
+
+class SALOMEDSClient_SComponent: public virtual SALOMEDSClient_SObject
+{
+public:
+  virtual ~SALOMEDSClient_SComponent() {}
+  
+  virtual std::string ComponentDataType() = 0;
+  virtual bool ComponentIOR(std::string& theID) = 0;    
+
+};
+#endif
diff --git a/src/SALOMEDSClient/SALOMEDSClient_SComponentIterator.hxx b/src/SALOMEDSClient/SALOMEDSClient_SComponentIterator.hxx
new file mode 100644 (file)
index 0000000..40cd3ce
--- /dev/null
@@ -0,0 +1,22 @@
+//  File   : SALOMEDSClient_SComponentIterator.hxx
+//  Author : Sergey RUIN
+//  Module : SALOME
+
+#ifndef __SALOMEDSClient_SCOMPONENTITERATOR_H__
+#define __SALOMEDSClient_SCOMPONENTITERATOR_H__
+
+#include "SALOMEDSClient_definitions.hxx"
+#include "SALOMEDSClient_SComponent.hxx"
+
+class SALOMEDSClient_SComponentIterator
+{
+public:
+  virtual ~SALOMEDSClient_SComponentIterator() {}
+
+  virtual void Init() = 0;
+  virtual bool More() = 0;
+  virtual void Next() = 0;
+  virtual _PTR(SComponent) Value() = 0;  
+};
+
+#endif
diff --git a/src/SALOMEDSClient/SALOMEDSClient_SObject.hxx b/src/SALOMEDSClient/SALOMEDSClient_SObject.hxx
new file mode 100644 (file)
index 0000000..7bc4e7a
--- /dev/null
@@ -0,0 +1,40 @@
+//  File   : SALOMEDSClient_SObject.hxx
+//  Author : Sergey RUIN
+//  Module : SALOME
+
+#ifndef __SALOMEDSCLIENT_SOBJECT_H__
+#define __SALOMEDSCLIENT_SOBJECT_H__
+
+// std C++ headers
+#include <vector>
+#include <string> 
+
+#include "SALOMEDSClient_definitions.hxx"
+
+class SALOMEDSClient_Study;
+class SALOMEDSClient_SComponent;
+class SALOMEDSClient_GenericAttribute;
+
+class SALOMEDSClient_SObject
+{
+public:
+  virtual ~SALOMEDSClient_SObject() {}
+
+  virtual std::string GetID()  = 0;
+  virtual _PTR(SComponent) GetFatherComponent() = 0;
+  virtual _PTR(SObject)    GetFather() = 0;
+  virtual bool FindAttribute(_PTR(GenericAttribute)& anAttribute, const std::string& aTypeOfAttribute) = 0;
+  virtual bool ReferencedObject(_PTR(SObject)& theObject) = 0;
+  virtual bool FindSubObject(int theTag, _PTR(SObject)& theObject) = 0;
+  virtual _PTR(Study) GetStudy() = 0;
+  virtual std::string Name() = 0;
+  virtual void  Name(const std::string& theName)  = 0;
+  virtual std::vector<_PTR(GenericAttribute)> GetAllAttributes() = 0;
+  virtual std::string GetName() = 0;
+  virtual std::string GetComment() = 0;
+  virtual std::string GetIOR() = 0;
+  virtual int   Tag() = 0;
+  virtual int   Depth() = 0;
+};
+
+#endif
diff --git a/src/SALOMEDSClient/SALOMEDSClient_Study.hxx b/src/SALOMEDSClient/SALOMEDSClient_Study.hxx
new file mode 100644 (file)
index 0000000..2140d33
--- /dev/null
@@ -0,0 +1,67 @@
+//  File   : SALOMEDSClient_Study.hxx
+//  Author : Sergey RUIN
+//  Module : SALOME
+
+#ifndef __SALOMEDSClient_STUDY_H__
+#define __SALOMEDSClient_STUDY_H__
+
+#include <vector>
+#include <string>
+
+#include "SALOMEDSClient_definitions.hxx"
+#include "SALOMEDSClient_SComponentIterator.hxx"
+#include "SALOMEDSClient_StudyBuilder.hxx"
+#include "SALOMEDSClient_SObject.hxx"
+#include "SALOMEDSClient_SComponent.hxx"
+#include "SALOMEDSClient_UseCaseBuilder.hxx"
+#include "SALOMEDSClient_AttributeStudyProperties.hxx"
+#include "SALOMEDSClient_ChildIterator.hxx"
+
+class SALOMEDSClient_Study
+{
+
+public:
+  virtual ~SALOMEDSClient_Study() {}
+
+  virtual std::string GetPersistentReference() = 0;
+  virtual std::string GetTransientReference() = 0;
+  virtual bool IsEmpty() = 0;
+  virtual _PTR(SComponent) FindComponent (const std::string& aComponentName) = 0;
+  virtual _PTR(SComponent) FindComponentID(const std::string& aComponentID) = 0;
+  virtual _PTR(SObject) FindObject(const std::string& anObjectName) = 0;
+  virtual std::vector<_PTR(SObject)> FindObjectByName( const std::string& anObjectName, const std::string& aComponentName ) = 0;  
+  virtual _PTR(SObject) FindObjectID(const std::string& anObjectID) = 0;
+  virtual _PTR(SObject) CreateObjectID(const std::string& anObjectID) = 0;
+  virtual _PTR(SObject) FindObjectIOR(const std::string& anObjectIOR) = 0;
+  virtual _PTR(SObject) FindObjectByPath(const std::string& thePath) = 0;
+  virtual std::string GetObjectPath(const _PTR(SObject)& theSO) = 0;
+  virtual void SetContext(const std::string& thePath) = 0;
+  virtual std::string GetContext() = 0;  
+  virtual std::vector<std::string> GetObjectNames(const std::string& theContext) = 0;
+  virtual std::vector<std::string> GetDirectoryNames(const std::string& theContext) = 0;
+  virtual std::vector<std::string> GetFileNames(const std::string& theContext) = 0;
+  virtual std::vector<std::string> GetComponentNames(const std::string& theContext) = 0;
+  virtual _PTR(ChildIterator) NewChildIterator(const _PTR(SObject)& theSO) = 0;
+  virtual _PTR(SComponentIterator) NewComponentIterator() = 0;
+  virtual _PTR(StudyBuilder) NewBuilder() = 0;
+  virtual std::string Name() = 0;
+  virtual void  Name(const std::string& name) = 0;
+  virtual bool IsSaved() = 0;
+  virtual void  IsSaved(bool save) = 0;
+  virtual bool IsModified() = 0;
+  virtual std::string URL() = 0;
+  virtual void  URL(const std::string& url) = 0;
+  virtual int StudyId() = 0;
+  virtual void  StudyId(int id) = 0;
+  virtual std::vector<_PTR(SObject)> FindDependances(const _PTR(SObject)& theSO) = 0;
+  virtual _PTR(AttributeStudyProperties) GetProperties() = 0;
+  virtual std::string GetLastModificationDate() = 0;
+  virtual std::vector<std::string> GetModificationsDate() = 0;
+  virtual _PTR(UseCaseBuilder) GetUseCaseBuilder() = 0;
+  virtual void Close() = 0;
+  virtual void EnableUseCaseAutoFilling(bool isEnabled) = 0;
+  virtual bool DumpStudy(const std::string& thePath, const std::string& theBaseName, bool isPublished) = 0; 
+};
+
+
+#endif
diff --git a/src/SALOMEDSClient/SALOMEDSClient_StudyBuilder.hxx b/src/SALOMEDSClient/SALOMEDSClient_StudyBuilder.hxx
new file mode 100644 (file)
index 0000000..9066fb4
--- /dev/null
@@ -0,0 +1,53 @@
+//  File   : SALOMEDSClient_StudyBuilder.hxx
+//  Author : Sergey RUIN
+//  Module : SALOME
+
+#ifndef __SALOMEDSClient_STUDYBUILDER_H__
+#define __SALOMEDSClient_STUDYBUILDER_H__
+
+#include "SALOMEDSClient_definitions.hxx"
+#include "SALOMEDSClient_SObject.hxx"
+#include "SALOMEDSClient_SComponent.hxx"
+#include "SALOMEDSClient_GenericAttribute.hxx"
+#include <string> 
+
+class SALOMEDSClient_StudyBuilder
+{
+public:
+  virtual ~SALOMEDSClient_StudyBuilder() {}
+
+  virtual _PTR(SComponent) NewComponent(const std::string& ComponentDataType) = 0;
+  virtual void DefineComponentInstance (const _PTR(SComponent)&, const std::string& ComponentIOR) = 0;
+  virtual void RemoveComponent(const _PTR(SComponent)& theSCO) = 0;
+  virtual _PTR(SObject) NewObject(const _PTR(SObject)& theFatherObject) = 0;
+  virtual _PTR(SObject) NewObjectToTag(const _PTR(SObject)& theFatherObject, int theTag) = 0;
+  virtual void AddDirectory(const std::string& thePath) = 0;
+  virtual void LoadWith(const _PTR(SComponent)& theSCO, const std::string& theIOR) = 0;
+  virtual void Load(const _PTR(SObject)& theSCO) = 0;
+  virtual void RemoveObject(const _PTR(SObject)& theSO) = 0;
+  virtual void RemoveObjectWithChildren(const _PTR(SObject)& theSO) = 0;
+  virtual _PTR(GenericAttribute) FindOrCreateAttribute(const _PTR(SObject)& theSO, const std::string& aTypeOfAttribute) = 0;
+  virtual bool FindAttribute(const _PTR(SObject)& theSO, 
+                             _PTR(GenericAttribute)& theAttribute, 
+                            const std::string& aTypeOfAttribute) = 0;
+  virtual void RemoveAttribute(const _PTR(SObject)& theSO, const std::string& aTypeOfAttribute) = 0;
+  virtual void Addreference(const _PTR(SObject)& me, const _PTR(SObject)& thereferencedObject) = 0;
+  virtual void RemoveReference(const _PTR(SObject)& me) = 0;
+  virtual void SetGUID(const _PTR(SObject)& theSO, const std::string& theGUID) = 0;
+  virtual bool IsGUID(const _PTR(SObject)& theSO, const std::string& theGUID) = 0;
+  virtual void NewCommand() = 0;
+  virtual void CommitCommand()= 0;
+  virtual bool HasOpenCommand() = 0;
+  virtual void AbortCommand() = 0;
+  virtual void Undo() = 0;
+  virtual void Redo() = 0;
+  virtual bool GetAvailableUndos() = 0;
+  virtual bool GetAvailableRedos() = 0;
+  virtual int UndoLimit() = 0;
+  virtual void UndoLimit(int theLimit) = 0;
+  virtual void SetName(const _PTR(SObject)& theSO, const std::string& theValue) = 0;
+  virtual void SetComment(const _PTR(SObject)& theSO, const std::string& theValue) = 0;
+  virtual void SetIOR(const _PTR(SObject)& theSO, const std::string& theValue) = 0;
+};
+
+#endif
diff --git a/src/SALOMEDSClient/SALOMEDSClient_StudyManager.hxx b/src/SALOMEDSClient/SALOMEDSClient_StudyManager.hxx
new file mode 100644 (file)
index 0000000..9e50d0a
--- /dev/null
@@ -0,0 +1,36 @@
+//  File   : SALOMEDSClient_StudyManager.hxx
+//  Author : Sergey RUIN
+//  Module : SALOME
+
+#ifndef __SALOMEDSClient_STUDYMANAGER_H__
+#define __SALOMEDSClient_STUDYMANAGER_H__
+
+#include <vector>
+#include <string>
+
+#include "SALOMEDSClient_definitions.hxx"
+#include "SALOMEDSClient_Study.hxx"
+
+class SALOMEDSClient_StudyManager
+{
+public:
+  virtual ~SALOMEDSClient_StudyManager() {}
+
+  virtual _PTR(Study) NewStudy(const std::string& study_name) = 0;
+  virtual _PTR(Study) Open(const std::string& theStudyUrl) = 0;
+  virtual void Close(const _PTR(Study)& theStudy) = 0;
+  virtual void Save(const _PTR(Study)& theStudy, bool theMultiFile) = 0;
+  virtual void SaveASCII(const _PTR(Study)& theStudy, bool theMultiFile) = 0;
+  virtual void SaveAs(const std::string& theUrl,  const _PTR(Study)& theStudy, bool theMultiFile) = 0;
+  virtual void SaveAsASCII(const std::string& theUrl,  const _PTR(Study)& theStudy, bool theMultiFile) = 0;
+  virtual std::vector<std::string> GetOpenStudies() = 0;
+  virtual _PTR(Study) GetStudyByName(const std::string& theStudyName) = 0;
+  virtual _PTR(Study) GetStudyByID(int theStudyID) = 0;
+  virtual bool CanCopy(const _PTR(SObject)& theSO) = 0;
+  virtual bool Copy(const _PTR(SObject)& theSO) = 0;
+  virtual bool CanPaste(const _PTR(SObject)& theSO) = 0;
+  virtual _PTR(SObject) Paste(const _PTR(SObject)& theSO) = 0;
+  
+};
+
+#endif 
diff --git a/src/SALOMEDSClient/SALOMEDSClient_UseCaseBuilder.hxx b/src/SALOMEDSClient/SALOMEDSClient_UseCaseBuilder.hxx
new file mode 100644 (file)
index 0000000..e535f06
--- /dev/null
@@ -0,0 +1,35 @@
+//  File   : SALOMEDSClient_UseCaseBuilder.hxx
+//  Author : Sergey RUIN
+//  Module : SALOME
+
+#ifndef __SALOMEDSClient_USECaseBuilder_H__
+#define __SALOMEDSClient_USECaseBuilder_H__
+
+#include <string>
+#include "SALOMEDSClient_definitions.hxx"
+#include "SALOMEDSClient_UseCaseIterator.hxx"
+#include "SALOMEDSClient_SObject.hxx"
+
+class SALOMEDSClient_UseCaseBuilder
+{
+public:
+  virtual ~SALOMEDSClient_UseCaseBuilder() {}
+  
+  virtual bool Append(const _PTR(SObject)& theObject) = 0;
+  virtual bool Remove(const _PTR(SObject)& theObject) = 0;
+  virtual bool AppendTo(const _PTR(SObject)& theFather, _PTR(SObject) theObject) = 0;
+  virtual bool InsertBefore(const _PTR(SObject)& theFirst, _PTR(SObject) theNext) = 0;
+  virtual bool SetCurrentObject(const _PTR(SObject)& theObject) = 0;
+  virtual bool SetRootCurrent() = 0;
+  virtual bool HasChildren(const _PTR(SObject)& theObject) = 0;
+  virtual bool IsUseCase(const _PTR(SObject)& theObject) = 0;
+  virtual bool SetName(const std::string& theName) = 0;
+  virtual _PTR(SObject) GetCurrentObject() = 0;
+  virtual std::string GetName() = 0;
+  virtual _PTR(SObject) AddUseCase(const std::string& theName) = 0;
+  virtual _PTR(UseCaseIterator) GetUseCaseIterator(const _PTR(SObject)& anObject) = 0;
+
+};
+
+
+#endif
diff --git a/src/SALOMEDSClient/SALOMEDSClient_UseCaseIterator.hxx b/src/SALOMEDSClient/SALOMEDSClient_UseCaseIterator.hxx
new file mode 100644 (file)
index 0000000..41376b5
--- /dev/null
@@ -0,0 +1,23 @@
+//  File   : SALOMEDSClient_UseCaseIterator.hxx
+//  Author : Sergey RUIN
+//  Module : SALOME
+
+#ifndef __SALOMEDSClient_USECASEITERATOR_H__
+#define __SALOMEDSClient_USECASEITERATOR_H__
+
+#include "SALOMEDSClient_definitions.hxx"
+#include "SALOMEDSClient_SObject.hxx"
+
+class SALOMEDSClient_UseCaseIterator
+{
+
+public:
+  virtual ~SALOMEDSClient_UseCaseIterator() {}
+
+  virtual void Init(bool) = 0;
+  virtual bool More() = 0;
+  virtual void Next() = 0;
+  virtual _PTR(SObject) Value() = 0;
+};
+
+#endif
diff --git a/src/SALOMEDSClient/SALOMEDSClient_definitions.hxx b/src/SALOMEDSClient/SALOMEDSClient_definitions.hxx
new file mode 100644 (file)
index 0000000..2176ff1
--- /dev/null
@@ -0,0 +1,50 @@
+#ifndef  SALOMEDSCLIENT_DEF_HXX
+#define  SALOMEDSCLIENT_DEF_HXX
+
+#include <boost/shared_ptr.hpp> 
+
+template<class T> class clt_shared_ptr: public boost::shared_ptr<T>
+{
+public:
+  clt_shared_ptr() {}
+  
+  template<class Y>
+    explicit clt_shared_ptr(Y * p)
+      {
+       reset(p);
+      }
+  
+  template<class Y>
+    clt_shared_ptr(clt_shared_ptr<Y> const & r):
+      boost::shared_ptr<T>(r,boost::detail::dynamic_cast_tag())
+       {}
+  
+  template<class Y>
+    clt_shared_ptr & operator=(clt_shared_ptr<Y> const & r)
+      {
+       clt_shared_ptr<T>(r).swap(*this);
+       return *this;
+      }
+  
+  template<class Y> clt_shared_ptr& operator()(Y * p) // Y must be complete
+    {
+      if(T* pt = dynamic_cast<T*>(p))
+       boost::shared_ptr<T>::reset(pt);
+      else
+       boost::throw_exception(std::bad_cast());
+      return *this;
+    }
+    
+};
+
+#define _PTR(Class) clt_shared_ptr<SALOMEDSClient_##Class>
+#define _CAST(Class, shared_ptr_Obj) dynamic_cast<SALOMEDS_##Class*>(shared_ptr_Obj.get())
+
+struct STextColor
+{
+    double R;
+    double G;
+    double B;
+};
+
+#endif
diff --git a/src/SALOMEDSImpl/Makefile.in b/src/SALOMEDSImpl/Makefile.in
new file mode 100644 (file)
index 0000000..de9c3e5
--- /dev/null
@@ -0,0 +1,133 @@
+#  File   : Makefile.in
+#  Author : Sergey RUIN
+#  Module : SALOME
+
+top_srcdir=@top_srcdir@
+top_builddir=../..
+srcdir=@srcdir@
+VPATH=.:@srcdir@:@top_srcdir@/idl:$(top_srcdir)/idl
+
+
+@COMMENCE@
+
+EXPORT_HEADERS= \
+       SALOMEDSImpl_Attributes.hxx \
+       SALOMEDSImpl_SObject.hxx \
+       SALOMEDSImpl_SComponent.hxx \
+       SALOMEDSImpl_Driver.hxx \
+       SALOMEDSImpl_Callback.hxx \
+       SALOMEDSImpl_ChildIterator.hxx \
+       SALOMEDSImpl_GenericAttribute.hxx \
+       SALOMEDSImpl_AttributeIOR.hxx \
+       SALOMEDSImpl_AttributeExternalFileDef.hxx \
+       SALOMEDSImpl_AttributeFileType.hxx \
+       SALOMEDSImpl_AttributePersistentRef.hxx \
+       SALOMEDSImpl_AttributeSequenceOfReal.hxx \
+       SALOMEDSImpl_AttributeSequenceOfInteger.hxx \
+       SALOMEDSImpl_AttributeDrawable.hxx \
+       SALOMEDSImpl_AttributeSelectable.hxx \
+       SALOMEDSImpl_AttributeExpandable.hxx  \
+       SALOMEDSImpl_AttributeOpened.hxx \
+       SALOMEDSImpl_AttributeFlags.hxx \
+       SALOMEDSImpl_AttributeGraphic.hxx \
+       SALOMEDSImpl_AttributeTextColor.hxx \
+       SALOMEDSImpl_AttributeTextHighlightColor.hxx \
+       SALOMEDSImpl_AttributePixMap.hxx \
+       SALOMEDSImpl_AttributeLocalID.hxx \
+       SALOMEDSImpl_AttributeTarget.hxx \
+       SALOMEDSImpl_AttributeTableOfInteger.hxx \
+       SALOMEDSImpl_AttributeTableOfReal.hxx \
+       SALOMEDSImpl_AttributeTableOfString.hxx \
+       SALOMEDSImpl_AttributeStudyProperties.hxx \
+       SALOMEDSImpl_AttributePythonObject.hxx \
+       SALOMEDSImpl_AttributeReal.hxx \
+       SALOMEDSImpl_AttributeInteger.hxx \
+       SALOMEDSImpl_AttributeUserID.hxx \
+       SALOMEDSImpl_AttributeTreeNode.hxx \
+       SALOMEDSImpl_AttributeName.hxx \
+       SALOMEDSImpl_AttributeComment.hxx \
+       SALOMEDSImpl_AttributeReference.hxx \
+       SALOMEDSImpl_UseCaseBuilder.hxx \
+       SALOMEDSImpl_UseCaseIterator.hxx \
+       SALOMEDSImpl_SComponentIterator.hxx \
+       SALOMEDSImpl_StudyBuilder.hxx \
+       SALOMEDSImpl_Study.hxx \
+       SALOMEDSImpl_StudyManager.hxx \
+       SALOMEDSImpl_OCAFApplication.hxx \
+       SALOMEDSImpl_ChildNodeIterator.hxx \
+
+LIB_CLIENT_IDL =
+LIB_SERVER_IDL =
+
+# Executables targets
+BIN = testDS
+BIN_SRC =
+BIN_CLIENT_IDL =
+BIN_SERVER_IDL =   
+
+# Libraries targets
+
+LIB = libSalomeDSImpl.la
+LIB_SRC =        SALOMEDSImpl_Tool.cxx \
+                 SALOMEDSImpl_Callback.cxx \
+                 SALOMEDSImpl_StudyHandle.cxx \
+                 SALOMEDSImpl_GenericAttribute.cxx \
+                 SALOMEDSImpl_SObject.cxx \
+                 SALOMEDSImpl_SComponent.cxx \
+                 SALOMEDSImpl_ChildIterator.cxx \
+                 SALOMEDSImpl_OCAFApplication.cxx \
+                 SALOMEDSImpl_AttributeIOR.cxx \
+                 SALOMEDSImpl_AttributeExternalFileDef.cxx \
+                 SALOMEDSImpl_AttributeFileType.cxx \
+                 SALOMEDSImpl_AttributePersistentRef.cxx \
+                 SALOMEDSImpl_AttributeSequenceOfReal.cxx \
+                 SALOMEDSImpl_AttributeSequenceOfInteger.cxx \
+                 SALOMEDSImpl_AttributeDrawable.cxx \
+                 SALOMEDSImpl_AttributeSelectable.cxx \
+                 SALOMEDSImpl_AttributeExpandable.cxx  \
+                 SALOMEDSImpl_AttributeOpened.cxx \
+                 SALOMEDSImpl_AttributeFlags.cxx \
+                 SALOMEDSImpl_AttributeGraphic.cxx \
+                 SALOMEDSImpl_AttributeTextColor.cxx \
+                 SALOMEDSImpl_AttributeTextHighlightColor.cxx \
+                 SALOMEDSImpl_AttributePixMap.cxx \
+                 SALOMEDSImpl_AttributeLocalID.cxx \
+                 SALOMEDSImpl_AttributeTarget.cxx \
+                 SALOMEDSImpl_AttributeTableOfInteger.cxx \
+                 SALOMEDSImpl_AttributeTableOfReal.cxx \
+                 SALOMEDSImpl_AttributeTableOfString.cxx \
+                 SALOMEDSImpl_AttributeStudyProperties.cxx \
+                 SALOMEDSImpl_AttributePythonObject.cxx \
+                 SALOMEDSImpl_AttributeReal.cxx \
+                 SALOMEDSImpl_AttributeInteger.cxx \
+                 SALOMEDSImpl_AttributeUserID.cxx \
+                 SALOMEDSImpl_AttributeTreeNode.cxx \
+                 SALOMEDSImpl_AttributeName.cxx \
+                 SALOMEDSImpl_AttributeComment.cxx \
+                 SALOMEDSImpl_AttributeReference.cxx \
+                 SALOMEDSImpl_ChildNodeIterator.cxx \
+                 SALOMEDSImpl_UseCaseBuilder.cxx \
+                 SALOMEDSImpl_UseCaseIterator.cxx \
+                 SALOMEDSImpl_SComponentIterator.cxx \
+                 SALOMEDSImpl_StudyBuilder.cxx \
+                 SALOMEDSImpl_Study.cxx \
+                 SALOMEDSImpl_StudyManager.cxx
+
+
+
+CPPFLAGS+=$(OCC_INCLUDES) $(HDF5_INCLUDES)
+CXXFLAGS+=$(OCC_CXXFLAGS)
+LDFLAGS+= $(HDF5_LIBS) -lSalomeHDFPersist $(CAS_LDPATH) -lTKCAF -lTKBO -lTKLCAF -lTKMath -lTKStdSchema -lTKernel
+
+# _CS_gbo_090604 Ajout Spécifique Calibre 3, pour l'utilisation de la version 5.12 de la bibliothèque OCC.
+# La bibliothèque OCC5.12 a été compilée sur Calibre 3 avec l'extention Xmu (impossible de compiler sans).
+# On est donc obligé ici, pour permettre l'édition de lien avec les bibliothèques OCC, de spécifier le
+# chemin d'accès aux bibliothèques Xmu
+#
+LDXMUFLAGS= -L/usr/X11R6/lib -lXmu
+LDFLAGS+=$(LDXMUFLAGS)
+LDFLAGSFORBIN=$(LDFLAGS) -lSalomeHDFPersist
+
+@CONCLUDE@
+
+
diff --git a/src/SALOMEDSImpl/SALOMEDSImpl_AttributeComment.cxx b/src/SALOMEDSImpl/SALOMEDSImpl_AttributeComment.cxx
new file mode 100644 (file)
index 0000000..d31c4b4
--- /dev/null
@@ -0,0 +1,88 @@
+//  File   : SALOMEDSImpl_AttributeComment.cxx
+//  Author : Sergey RUIN
+//  Module : SALOME
+
+#ifndef WNT
+using namespace std;
+#endif
+#include "SALOMEDSImpl_AttributeComment.hxx"
+
+IMPLEMENT_STANDARD_HANDLE( SALOMEDSImpl_AttributeComment, SALOMEDSImpl_GenericAttribute )
+IMPLEMENT_STANDARD_RTTIEXT( SALOMEDSImpl_AttributeComment, SALOMEDSImpl_GenericAttribute )
+
+//=======================================================================
+//function : GetID
+//purpose  :
+//=======================================================================
+const Standard_GUID& SALOMEDSImpl_AttributeComment::GetID ()
+{
+  static Standard_GUID CommentID ("7AF2F7CC-1CA2-4476-BE95-8ACC996BC7B9");
+  return CommentID;
+}   
+
+Handle(SALOMEDSImpl_AttributeComment) SALOMEDSImpl_AttributeComment::Set (const TDF_Label& L, 
+                                                                         const TCollection_ExtendedString& Val) 
+{
+  Handle(SALOMEDSImpl_AttributeComment) A;
+  if (!L.FindAttribute(SALOMEDSImpl_AttributeComment::GetID(), A)) {
+    A = new  SALOMEDSImpl_AttributeComment(); 
+    L.AddAttribute(A);
+  }
+
+  A->SetValue(Val);     
+    
+  return A;
+}
+
+//=======================================================================
+//function : SetValue
+//purpose  :
+//=======================================================================
+void SALOMEDSImpl_AttributeComment::SetValue (const TCollection_ExtendedString& S)
+{
+  CheckLocked();
+
+  if(myString == S) return;
+
+  Backup();
+
+  myString = S;
+  
+  SetModifyFlag(); //SRN: Mark the study as being modified, so it could be saved 
+}
+           
+
+//=======================================================================
+//function : ID
+//purpose  :
+//=======================================================================
+const Standard_GUID& SALOMEDSImpl_AttributeComment::ID () const { return GetID(); } 
+
+//=======================================================================
+//function : NewEmpty
+//purpose  : 
+//=======================================================================
+Handle(TDF_Attribute) SALOMEDSImpl_AttributeComment::NewEmpty () const
+{  
+  return new SALOMEDSImpl_AttributeComment(); 
+}
+
+//=======================================================================
+//function : Restore
+//purpose  : 
+//=======================================================================
+void SALOMEDSImpl_AttributeComment::Restore(const Handle(TDF_Attribute)& with) 
+{
+  myString = Handle(SALOMEDSImpl_AttributeComment)::DownCast (with)->Value ();
+}
+
+//=======================================================================
+//function : Paste
+//purpose  : 
+//=======================================================================
+
+void SALOMEDSImpl_AttributeComment::Paste (const Handle(TDF_Attribute)& into,
+                                          const Handle(TDF_RelocationTable)& RT) const
+{
+  Handle(SALOMEDSImpl_AttributeComment)::DownCast (into)->SetValue(myString);
+}
diff --git a/src/SALOMEDSImpl/SALOMEDSImpl_AttributeComment.hxx b/src/SALOMEDSImpl/SALOMEDSImpl_AttributeComment.hxx
new file mode 100644 (file)
index 0000000..86c5aee
--- /dev/null
@@ -0,0 +1,51 @@
+//  File   : SALOMEDSImpl_AttributeIOR.hxx
+//  Author : Sergey RUIN
+//  Module : SALOME
+
+#ifndef _SALOMEDSImpl_AttributeComment_HeaderFile
+#define _SALOMEDSImpl_AttributeComment_HeaderFile
+
+#include <Standard_DefineHandle.hxx>
+#include <TDF_Attribute.hxx>
+#include <TCollection_AsciiString.hxx>
+#include <TCollection_ExtendedString.hxx>
+#include <TDF_Label.hxx> 
+#include <Standard_GUID.hxx> 
+#include "SALOMEDSImpl_GenericAttribute.hxx"
+
+class Handle(TDF_Attribute);
+class Handle(TDF_RelocationTable);
+
+DEFINE_STANDARD_HANDLE( SALOMEDSImpl_AttributeComment, SALOMEDSImpl_GenericAttribute )
+
+class SALOMEDSImpl_AttributeComment : public SALOMEDSImpl_GenericAttribute 
+{
+private:
+
+ TCollection_ExtendedString myString;
+
+public:
+
+Standard_EXPORT static const Standard_GUID& GetID() ;
+
+Standard_EXPORT  SALOMEDSImpl_AttributeComment() :SALOMEDSImpl_GenericAttribute("AttributeComment") {}
+
+Standard_EXPORT  static Handle(SALOMEDSImpl_AttributeComment) Set(const TDF_Label& L, const TCollection_ExtendedString& Val); 
+Standard_EXPORT  void SetValue (const TCollection_ExtendedString& S);
+Standard_EXPORT  TCollection_ExtendedString Value() const { return myString; }
+
+Standard_EXPORT  virtual TCollection_AsciiString Save() { return myString; }
+Standard_EXPORT  virtual void Load(const TCollection_AsciiString& theValue) { myString = theValue; }
+
+Standard_EXPORT  const Standard_GUID& ID() const;
+Standard_EXPORT  void Restore(const Handle(TDF_Attribute)& with) ;
+Standard_EXPORT  Handle_TDF_Attribute NewEmpty() const;
+Standard_EXPORT  void Paste(const Handle(TDF_Attribute)& into,const Handle(TDF_RelocationTable)& RT) const;
+
+Standard_EXPORT ~SALOMEDSImpl_AttributeComment() {}
+
+public:
+  DEFINE_STANDARD_RTTI( SALOMEDSImpl_AttributeComment )
+};
+
+#endif
diff --git a/src/SALOMEDSImpl/SALOMEDSImpl_AttributeDrawable.cxx b/src/SALOMEDSImpl/SALOMEDSImpl_AttributeDrawable.cxx
new file mode 100644 (file)
index 0000000..e7c9350
--- /dev/null
@@ -0,0 +1,105 @@
+//  File   : SALOMEDSImpl_AttributeDrawable.cxx
+//  Author : Sergey RUIN
+//  Module : SALOME
+
+#ifndef WNT
+using namespace std;
+#endif
+#include "SALOMEDSImpl_AttributeDrawable.hxx"
+
+IMPLEMENT_STANDARD_HANDLE( SALOMEDSImpl_AttributeDrawable, SALOMEDSImpl_GenericAttribute )
+IMPLEMENT_STANDARD_RTTIEXT( SALOMEDSImpl_AttributeDrawable, SALOMEDSImpl_GenericAttribute )
+
+//=======================================================================
+//function : GetID
+//purpose  : 
+//=======================================================================
+const Standard_GUID& SALOMEDSImpl_AttributeDrawable::GetID () 
+{
+  static Standard_GUID SALOMEDSImpl_AttributeDrawableID ("12837184-8F52-11d6-A8A3-0001021E8C7F");
+  return SALOMEDSImpl_AttributeDrawableID;
+}
+
+
+//=======================================================================
+//function : Set
+//purpose  : 
+//=======================================================================
+
+Handle(SALOMEDSImpl_AttributeDrawable) SALOMEDSImpl_AttributeDrawable::Set (const TDF_Label& L,
+                                                                           const Standard_Integer value) 
+{
+  Handle(SALOMEDSImpl_AttributeDrawable) A;
+  if (!L.FindAttribute(SALOMEDSImpl_AttributeDrawable::GetID(),A)) {
+    A = new  SALOMEDSImpl_AttributeDrawable(); 
+    L.AddAttribute(A);
+  }
+  
+  A->SetDrawable (value); 
+  return A;
+}
+
+
+//=======================================================================
+//function : constructor
+//purpose  : 
+//=======================================================================
+SALOMEDSImpl_AttributeDrawable::SALOMEDSImpl_AttributeDrawable()
+:SALOMEDSImpl_GenericAttribute("AttributeDrawable") 
+{
+  myValue = 0;
+}
+
+//=======================================================================
+//function : SetDrawable
+//purpose  :
+//=======================================================================
+void SALOMEDSImpl_AttributeDrawable::SetDrawable(const Standard_Integer theValue)
+{
+  CheckLocked();
+
+  Backup();
+
+  (theValue!=0)?myValue=1:myValue=0;
+}
+           
+
+//=======================================================================
+//function : ID
+//purpose  : 
+//=======================================================================
+
+const Standard_GUID& SALOMEDSImpl_AttributeDrawable::ID () const { return GetID(); }
+
+
+//=======================================================================
+//function : NewEmpty
+//purpose  : 
+//=======================================================================
+
+Handle(TDF_Attribute) SALOMEDSImpl_AttributeDrawable::NewEmpty () const
+{  
+  return new SALOMEDSImpl_AttributeDrawable(); 
+}
+
+//=======================================================================
+//function : Restore
+//purpose  : 
+//=======================================================================
+
+void SALOMEDSImpl_AttributeDrawable::Restore(const Handle(TDF_Attribute)& with) 
+{
+  myValue = Handle(SALOMEDSImpl_AttributeDrawable)::DownCast (with)->IsDrawable ();
+}
+
+//=======================================================================
+//function : Paste
+//purpose  : 
+//=======================================================================
+
+void SALOMEDSImpl_AttributeDrawable::Paste (const Handle(TDF_Attribute)& into,
+                                    const Handle(TDF_RelocationTable)& RT) const
+{
+  Handle(SALOMEDSImpl_AttributeDrawable)::DownCast (into)->SetDrawable (myValue);
+}
+
diff --git a/src/SALOMEDSImpl/SALOMEDSImpl_AttributeDrawable.hxx b/src/SALOMEDSImpl/SALOMEDSImpl_AttributeDrawable.hxx
new file mode 100644 (file)
index 0000000..4ae0851
--- /dev/null
@@ -0,0 +1,48 @@
+//  File   : SALOMEDSImpl_AttributeDrawable.hxx
+//  Author : Sergey RUIN
+//  Module : SALOME
+
+#ifndef _SALOMEDSImpl_AttributeDrawable_HeaderFile
+#define _SALOMEDSImpl_AttributeDrawable_HeaderFile
+
+#include <Standard_DefineHandle.hxx>
+#include <TDF_Attribute.hxx>
+#include <TCollection_AsciiString.hxx>
+#include <Standard_GUID.hxx>
+#include <TDF_Label.hxx>      
+#include "SALOMEDSImpl_GenericAttribute.hxx"
+class Handle(TDF_Attribute);
+class Handle(TDF_RelocationTable);
+
+
+DEFINE_STANDARD_HANDLE( SALOMEDSImpl_AttributeDrawable, SALOMEDSImpl_GenericAttribute )
+
+
+class SALOMEDSImpl_AttributeDrawable :  public SALOMEDSImpl_GenericAttribute 
+{
+private:
+Standard_Integer myValue;
+
+public:
+Standard_EXPORT  virtual TCollection_AsciiString Save() { return (myValue == 0)?(char*)"0":(char*)"1"; }
+Standard_EXPORT  virtual void Load(const TCollection_AsciiString& theValue) { (theValue == "0")?myValue=0:myValue=1; }
+Standard_EXPORT static const Standard_GUID& GetID() ;
+Standard_EXPORT static  Handle_SALOMEDSImpl_AttributeDrawable Set(const TDF_Label& label,const Standard_Integer value) ;
+
+Standard_EXPORT void SetDrawable(const Standard_Integer theValue); 
+Standard_EXPORT Standard_Integer IsDrawable() const { return myValue; }
+Standard_EXPORT SALOMEDSImpl_AttributeDrawable();
+Standard_EXPORT  const Standard_GUID& ID() const;
+Standard_EXPORT   void Restore(const Handle(TDF_Attribute)& with) ;
+Standard_EXPORT   Handle_TDF_Attribute NewEmpty() const;
+Standard_EXPORT   void Paste(const Handle(TDF_Attribute)& into,const Handle(TDF_RelocationTable)& RT) const;
+Standard_EXPORT ~SALOMEDSImpl_AttributeDrawable() {}
+
+public:
+  DEFINE_STANDARD_RTTI( SALOMEDSImpl_AttributeDrawable )
+
+};
+
+#endif
diff --git a/src/SALOMEDSImpl/SALOMEDSImpl_AttributeExpandable.cxx b/src/SALOMEDSImpl/SALOMEDSImpl_AttributeExpandable.cxx
new file mode 100644 (file)
index 0000000..7688f77
--- /dev/null
@@ -0,0 +1,104 @@
+//  File   : SALOMEDSImpl_AttributeExpandable.cxx
+//  Author : Sergey RUIN
+//  Module : SALOME
+
+#ifndef WNT
+using namespace std;
+#endif
+#include "SALOMEDSImpl_AttributeExpandable.hxx"
+
+IMPLEMENT_STANDARD_HANDLE( SALOMEDSImpl_AttributeExpandable, SALOMEDSImpl_GenericAttribute )
+IMPLEMENT_STANDARD_RTTIEXT( SALOMEDSImpl_AttributeExpandable, SALOMEDSImpl_GenericAttribute )
+
+//=======================================================================
+//function : GetID
+//purpose  : 
+//=======================================================================
+const Standard_GUID& SALOMEDSImpl_AttributeExpandable::GetID () 
+{
+  static Standard_GUID SALOMEDSImpl_AttributeExpandableID ("12837185-8F52-11d6-A8A3-0001021E8C7F");
+  return SALOMEDSImpl_AttributeExpandableID;
+}
+
+
+
+//=======================================================================
+//function : Set
+//purpose  : 
+//=======================================================================
+Handle(SALOMEDSImpl_AttributeExpandable) SALOMEDSImpl_AttributeExpandable::Set (const TDF_Label& L,
+                                                                               const Standard_Integer value) 
+{
+  Handle(SALOMEDSImpl_AttributeExpandable) A;
+  if (!L.FindAttribute(SALOMEDSImpl_AttributeExpandable::GetID(),A)) {
+    A = new  SALOMEDSImpl_AttributeExpandable(); 
+    L.AddAttribute(A);
+  }
+  
+  A->SetExpandable(value); 
+  return A;
+}
+
+
+//=======================================================================
+//function : constructor
+//purpose  : 
+//=======================================================================
+SALOMEDSImpl_AttributeExpandable::SALOMEDSImpl_AttributeExpandable()
+:SALOMEDSImpl_GenericAttribute("AttributeExpandable")
+{
+  myValue = 0;
+}
+
+//=======================================================================
+//function : SetExpandable
+//purpose  :
+//=======================================================================
+void SALOMEDSImpl_AttributeExpandable::SetExpandable(const Standard_Integer theValue)
+{
+  CheckLocked();
+
+  Backup();
+
+  (theValue!=0)?myValue=1:myValue=0;
+}
+
+//=======================================================================
+//function : ID
+//purpose  : 
+//=======================================================================
+
+const Standard_GUID& SALOMEDSImpl_AttributeExpandable::ID () const { return GetID(); }
+
+
+//=======================================================================
+//function : NewEmpty
+//purpose  : 
+//=======================================================================
+
+Handle(TDF_Attribute) SALOMEDSImpl_AttributeExpandable::NewEmpty () const
+{  
+  return new SALOMEDSImpl_AttributeExpandable(); 
+}
+
+//=======================================================================
+//function : Restore
+//purpose  : 
+//=======================================================================
+
+void SALOMEDSImpl_AttributeExpandable::Restore(const Handle(TDF_Attribute)& with) 
+{
+  myValue = Handle(SALOMEDSImpl_AttributeExpandable)::DownCast (with)->IsExpandable ();
+}
+
+//=======================================================================
+//function : Paste
+//purpose  : 
+//=======================================================================
+
+void SALOMEDSImpl_AttributeExpandable::Paste (const Handle(TDF_Attribute)& into,
+                                    const Handle(TDF_RelocationTable)& RT) const
+{
+  Handle(SALOMEDSImpl_AttributeExpandable)::DownCast (into)->SetExpandable (myValue);
+}
+
diff --git a/src/SALOMEDSImpl/SALOMEDSImpl_AttributeExpandable.hxx b/src/SALOMEDSImpl/SALOMEDSImpl_AttributeExpandable.hxx
new file mode 100644 (file)
index 0000000..a31cf02
--- /dev/null
@@ -0,0 +1,47 @@
+//  File   : SALOMEDSImpl_AttributeExpandable.hxx
+//  Author : Sergey RUIN
+//  Module : SALOME
+
+#ifndef _SALOMEDSImpl_AttributeExpandable_HeaderFile
+#define _SALOMEDSImpl_AttributeExpandable_HeaderFile
+
+#include <Standard_DefineHandle.hxx>
+#include <TDF_Attribute.hxx>
+#include <TDF_Label.hxx>       
+#include <TCollection_AsciiString.hxx> 
+#include <Standard_GUID.hxx>
+#include "SALOMEDSImpl_GenericAttribute.hxx"
+
+class Handle(TDF_Attribute);
+class Handle(TDF_RelocationTable);
+
+
+DEFINE_STANDARD_HANDLE( SALOMEDSImpl_AttributeExpandable, SALOMEDSImpl_GenericAttribute )
+
+
+class SALOMEDSImpl_AttributeExpandable : public SALOMEDSImpl_GenericAttribute 
+{
+private:
+Standard_Integer myValue;
+
+public:
+
+Standard_EXPORT virtual TCollection_AsciiString Save() { return (myValue == 0)?(char*)"0":(char*)"1"; }
+Standard_EXPORT virtual void Load(const TCollection_AsciiString& theValue) { (theValue == "0")?myValue=0:myValue=1; } 
+
+Standard_EXPORT static const Standard_GUID& GetID() ;
+Standard_EXPORT static  Handle_SALOMEDSImpl_AttributeExpandable Set(const TDF_Label& label,const Standard_Integer value) ;
+Standard_EXPORT SALOMEDSImpl_AttributeExpandable();
+Standard_EXPORT void SetExpandable(const Standard_Integer value); 
+Standard_EXPORT int IsExpandable() const { return myValue; }
+Standard_EXPORT  const Standard_GUID& ID() const;
+Standard_EXPORT   void Restore(const Handle(TDF_Attribute)& with) ;
+Standard_EXPORT   Handle_TDF_Attribute NewEmpty() const;
+Standard_EXPORT   void Paste(const Handle(TDF_Attribute)& into,const Handle(TDF_RelocationTable)& RT) const;
+Standard_EXPORT ~SALOMEDSImpl_AttributeExpandable() {}
+
+public:
+  DEFINE_STANDARD_RTTI( SALOMEDSImpl_AttributeExpandable )
+};
+
+#endif
diff --git a/src/SALOMEDSImpl/SALOMEDSImpl_AttributeExternalFileDef.cxx b/src/SALOMEDSImpl/SALOMEDSImpl_AttributeExternalFileDef.cxx
new file mode 100644 (file)
index 0000000..68564df
--- /dev/null
@@ -0,0 +1,104 @@
+//  File   : SALOMEDSImpl_AttributeExternalFileDef.cxx
+//  Author : Sergey RUIN
+//  Module : SALOME
+
+#include "SALOMEDSImpl_AttributeExternalFileDef.hxx"
+
+using namespace std;
+
+IMPLEMENT_STANDARD_HANDLE( SALOMEDSImpl_AttributeExternalFileDef, SALOMEDSImpl_GenericAttribute )
+IMPLEMENT_STANDARD_RTTIEXT( SALOMEDSImpl_AttributeExternalFileDef, SALOMEDSImpl_GenericAttribute )
+
+//=======================================================================
+//function : GetID
+//purpose  : 
+//=======================================================================
+const Standard_GUID& SALOMEDSImpl_AttributeExternalFileDef::GetID () 
+{
+  static Standard_GUID SALOMEDSImpl_AttributeExternalFileDefID ("7123AD4C-ACDB-4e3a-8FDC-70EA164D2CBE");
+  return SALOMEDSImpl_AttributeExternalFileDefID;
+}
+
+//=======================================================================
+//function : Set
+//purpose  : 
+//=======================================================================
+Handle(SALOMEDSImpl_AttributeExternalFileDef) 
+SALOMEDSImpl_AttributeExternalFileDef::Set (const TDF_Label& L, const TCollection_ExtendedString& S) 
+{
+
+  Handle(SALOMEDSImpl_AttributeExternalFileDef) A;
+  if (!L.FindAttribute(SALOMEDSImpl_AttributeExternalFileDef::GetID(),A)) {
+    A = new  SALOMEDSImpl_AttributeExternalFileDef(); 
+    L.AddAttribute(A);
+  }
+  
+  A->SetValue (S); 
+  return A;
+}
+
+
+//=======================================================================
+//function : constructor
+//purpose  : 
+//=======================================================================
+SALOMEDSImpl_AttributeExternalFileDef::SALOMEDSImpl_AttributeExternalFileDef()
+:SALOMEDSImpl_GenericAttribute("AttributeExternalFileDef")
+{
+}
+
+//=======================================================================
+//function : SetValue
+//purpose  :
+//=======================================================================
+void SALOMEDSImpl_AttributeExternalFileDef::SetValue (const TCollection_ExtendedString& S)
+{
+  CheckLocked();
+
+  if(myString == S) return;
+
+  Backup();
+
+  myString = S;
+
+  SetModifyFlag(); //SRN: Mark the study as being modified, so it could be saved 
+}
+           
+
+
+//=======================================================================
+//function : ID
+//purpose  : 
+//=======================================================================
+const Standard_GUID& SALOMEDSImpl_AttributeExternalFileDef::ID () const { return GetID(); }
+
+
+//=======================================================================
+//function : NewEmpty
+//purpose  : 
+//=======================================================================
+Handle(TDF_Attribute) SALOMEDSImpl_AttributeExternalFileDef::NewEmpty () const
+{  
+  return new SALOMEDSImpl_AttributeExternalFileDef(); 
+}
+
+//=======================================================================
+//function : Restore
+//purpose  : 
+//=======================================================================
+void SALOMEDSImpl_AttributeExternalFileDef::Restore(const Handle(TDF_Attribute)& with) 
+{
+  myString = Handle(SALOMEDSImpl_AttributeExternalFileDef)::DownCast (with)->Value ();
+}
+
+//=======================================================================
+//function : Paste
+//purpose  : 
+//=======================================================================
+void SALOMEDSImpl_AttributeExternalFileDef::Paste (const Handle(TDF_Attribute)& into,
+                                                  const Handle(TDF_RelocationTable)& RT) const
+{
+  Handle(SALOMEDSImpl_AttributeExternalFileDef) anAttr = Handle(SALOMEDSImpl_AttributeExternalFileDef)::DownCast(into); 
+  anAttr->SetValue(myString);
+}
+
diff --git a/src/SALOMEDSImpl/SALOMEDSImpl_AttributeExternalFileDef.hxx b/src/SALOMEDSImpl/SALOMEDSImpl_AttributeExternalFileDef.hxx
new file mode 100644 (file)
index 0000000..6e74704
--- /dev/null
@@ -0,0 +1,44 @@
+
+#ifndef _SALOMEDSImpl_AttributeExternalFileDef_HeaderFile
+#define _SALOMEDSImpl_AttributeExternalFileDef_HeaderFile
+
+#include <Standard_DefineHandle.hxx>
+#include <TDF_Attribute.hxx>
+#include <Standard_GUID.hxx>
+#include <TDF_Label.hxx>       
+#include <TCollection_ExtendedString.hxx>
+#include "SALOMEDSImpl_GenericAttribute.hxx"
+
+class Handle(TDF_Attribute);
+class Handle(TDF_RelocationTable);
+
+
+DEFINE_STANDARD_HANDLE( SALOMEDSImpl_AttributeExternalFileDef, SALOMEDSImpl_GenericAttribute )
+
+class SALOMEDSImpl_AttributeExternalFileDef : public SALOMEDSImpl_GenericAttribute 
+{
+private:
+
+ TCollection_ExtendedString myString;
+
+public:
+Standard_EXPORT static const Standard_GUID& GetID() ;
+Standard_EXPORT static  Handle_SALOMEDSImpl_AttributeExternalFileDef Set(const TDF_Label& label,
+                                                                        const TCollection_ExtendedString& Name);
+Standard_EXPORT SALOMEDSImpl_AttributeExternalFileDef();
+Standard_EXPORT void SetValue(const TCollection_ExtendedString& value); 
+Standard_EXPORT TCollection_ExtendedString Value() const { return myString; }
+Standard_EXPORT  const Standard_GUID& ID() const;
+Standard_EXPORT   void Restore(const Handle(TDF_Attribute)& with) ;
+Standard_EXPORT   Handle_TDF_Attribute NewEmpty() const;
+Standard_EXPORT   void Paste(const Handle(TDF_Attribute)& into,const Handle(TDF_RelocationTable)& RT) const;
+Standard_EXPORT ~SALOMEDSImpl_AttributeExternalFileDef() {}
+
+Standard_EXPORT  virtual TCollection_AsciiString Save() { return myString; }
+Standard_EXPORT  virtual void Load(const TCollection_AsciiString& theValue) { myString = theValue; } 
+
+public:
+  DEFINE_STANDARD_RTTI( SALOMEDSImpl_AttributeExternalFileDef )
+};
+
+#endif
diff --git a/src/SALOMEDSImpl/SALOMEDSImpl_AttributeFileType.cxx b/src/SALOMEDSImpl/SALOMEDSImpl_AttributeFileType.cxx
new file mode 100644 (file)
index 0000000..004592b
--- /dev/null
@@ -0,0 +1,109 @@
+//  File   : SALOMEDSImpl_AttributeFileType.cxx
+//  Author : Sergey RUIN
+//  Module : SALOME
+
+#include "SALOMEDSImpl_AttributeFileType.hxx"
+
+using namespace std;
+
+IMPLEMENT_STANDARD_HANDLE( SALOMEDSImpl_AttributeFileType, SALOMEDSImpl_GenericAttribute )
+IMPLEMENT_STANDARD_RTTIEXT( SALOMEDSImpl_AttributeFileType, SALOMEDSImpl_GenericAttribute )
+
+//=======================================================================
+//function : GetID
+//purpose  : 
+//=======================================================================
+
+const Standard_GUID& SALOMEDSImpl_AttributeFileType::GetID () 
+{
+  static Standard_GUID SALOMEDSImpl_AttributeFileTypeID ("0181B525-3F15-4ab2-9DE3-5E2F54B5F340");
+  return SALOMEDSImpl_AttributeFileTypeID;
+}
+
+
+
+//=======================================================================
+//function : Set
+//purpose  : 
+//=======================================================================
+
+Handle(SALOMEDSImpl_AttributeFileType) SALOMEDSImpl_AttributeFileType::Set (const TDF_Label& L,
+                                                                           const TCollection_ExtendedString& S) 
+{
+
+  Handle(SALOMEDSImpl_AttributeFileType) A;
+  if (!L.FindAttribute(SALOMEDSImpl_AttributeFileType::GetID(),A)) {
+    A = new  SALOMEDSImpl_AttributeFileType(); 
+    L.AddAttribute(A);
+  }
+  
+  A->SetValue (S); 
+  return A;
+}
+
+
+//=======================================================================
+//function : constructor
+//purpose  : 
+//=======================================================================
+SALOMEDSImpl_AttributeFileType::SALOMEDSImpl_AttributeFileType()
+:SALOMEDSImpl_GenericAttribute("AttributeFileType")
+{
+}
+
+//=======================================================================
+//function : SetValue
+//purpose  :
+//=======================================================================
+void SALOMEDSImpl_AttributeFileType::SetValue (const TCollection_ExtendedString& S)
+{
+  CheckLocked();
+
+  if(myString == S) return;
+
+  Backup();
+
+  myString = S;
+
+  SetModifyFlag(); //SRN: Mark the study as being modified, so it could be saved 
+}
+
+//=======================================================================
+//function : ID
+//purpose  : 
+//=======================================================================
+
+const Standard_GUID& SALOMEDSImpl_AttributeFileType::ID () const { return GetID(); }
+
+
+//=======================================================================
+//function : NewEmpty
+//purpose  : 
+//=======================================================================
+
+Handle(TDF_Attribute) SALOMEDSImpl_AttributeFileType::NewEmpty () const
+{  
+  return new SALOMEDSImpl_AttributeFileType(); 
+}
+
+//=======================================================================
+//function : Restore
+//purpose  : 
+//=======================================================================
+
+void SALOMEDSImpl_AttributeFileType::Restore(const Handle(TDF_Attribute)& with) 
+{
+  myString = Handle(SALOMEDSImpl_AttributeFileType)::DownCast (with)->Value ();
+}
+
+//=======================================================================
+//function : Paste
+//purpose  : 
+//=======================================================================
+
+void SALOMEDSImpl_AttributeFileType::Paste (const Handle(TDF_Attribute)& into,
+                                           const Handle(TDF_RelocationTable)& RT) const
+{
+  Handle(SALOMEDSImpl_AttributeFileType)::DownCast (into)->SetValue (myString);
+}
+
diff --git a/src/SALOMEDSImpl/SALOMEDSImpl_AttributeFileType.hxx b/src/SALOMEDSImpl/SALOMEDSImpl_AttributeFileType.hxx
new file mode 100644 (file)
index 0000000..3e643b1
--- /dev/null
@@ -0,0 +1,45 @@
+
+#ifndef _SALOMEDSImpl_AttributeFileType_HeaderFile
+#define _SALOMEDSImpl_AttributeFileType_HeaderFile
+
+#include <Standard_DefineHandle.hxx>
+#include <TDF_Attribute.hxx>
+#include <TDF_Label.hxx>       
+#include <Standard_GUID.hxx>
+#include <TCollection_ExtendedString.hxx>
+#include "SALOMEDSImpl_GenericAttribute.hxx"
+
+class Handle(TDF_Attribute);
+class Handle(TDF_RelocationTable);
+
+
+DEFINE_STANDARD_HANDLE( SALOMEDSImpl_AttributeFileType, SALOMEDSImpl_GenericAttribute )
+
+class SALOMEDSImpl_AttributeFileType : public SALOMEDSImpl_GenericAttribute 
+{
+private:
+
+ TCollection_ExtendedString myString;
+
+public:
+Standard_EXPORT static const Standard_GUID& GetID() ;
+Standard_EXPORT static  Handle_SALOMEDSImpl_AttributeFileType Set(const TDF_Label& label,
+                                                                 const TCollection_ExtendedString& Name) ;
+Standard_EXPORT SALOMEDSImpl_AttributeFileType();
+Standard_EXPORT void SetValue(const TCollection_ExtendedString& value);  
+Standard_EXPORT TCollection_ExtendedString Value() const { return myString; }  
+Standard_EXPORT  const Standard_GUID& ID() const;
+Standard_EXPORT   void Restore(const Handle(TDF_Attribute)& with) ;
+Standard_EXPORT   Handle_TDF_Attribute NewEmpty() const;
+Standard_EXPORT   void Paste(const Handle(TDF_Attribute)& into,const Handle(TDF_RelocationTable)& RT) const;
+Standard_EXPORT ~SALOMEDSImpl_AttributeFileType() {}
+
+Standard_EXPORT  virtual TCollection_AsciiString Save() { return myString; }
+Standard_EXPORT  virtual void Load(const TCollection_AsciiString& theValue) { myString = theValue; } 
+
+public:
+  DEFINE_STANDARD_RTTI( SALOMEDSImpl_AttributeFileType )
+};
+
+
+#endif
diff --git a/src/SALOMEDSImpl/SALOMEDSImpl_AttributeFlags.cxx b/src/SALOMEDSImpl/SALOMEDSImpl_AttributeFlags.cxx
new file mode 100644 (file)
index 0000000..0406fef
--- /dev/null
@@ -0,0 +1,138 @@
+//  File   : SALOMEDSImpl_AttributeFlags.cxx
+//  Author : Sergey LITONIN
+//  Module : SALOME
+
+#include "SALOMEDSImpl_AttributeFlags.hxx"
+#include <Standard_GUID.hxx>
+
+using namespace std;
+
+
+/*
+  Class       : SALOMEDSImpl_AttributeFlags
+  Description : This class is intended for storing different object attributes that
+                have only two states (0 and 1).
+*/
+
+IMPLEMENT_STANDARD_HANDLE( SALOMEDSImpl_AttributeFlags, SALOMEDSImpl_GenericAttribute )
+IMPLEMENT_STANDARD_RTTIEXT( SALOMEDSImpl_AttributeFlags, SALOMEDSImpl_GenericAttribute )
+
+//=======================================================================
+//function : SALOMEDSImpl_AttributeFlags::GetID
+//purpose  : Get GUID of this attribute
+//=======================================================================
+const Standard_GUID& SALOMEDSImpl_AttributeFlags::GetID ()
+{
+  static Standard_GUID SALOMEDSImpl_AttributeFlagsID( "866EEC9F-A517-4cb4-88E6-E208DB8FC96F" );
+  return SALOMEDSImpl_AttributeFlagsID;                
+}
+
+//=======================================================================
+//function : SALOMEDSImpl_AttributeFlags::Set
+//purpose  : Set value of the attribute
+//=======================================================================
+Handle(SALOMEDSImpl_AttributeFlags) SALOMEDSImpl_AttributeFlags::Set(const TDF_Label& L,
+                                                                    const Standard_Integer value )
+{
+  Handle(SALOMEDSImpl_AttributeFlags) A;
+  if ( !L.FindAttribute(SALOMEDSImpl_AttributeFlags::GetID(),A ) )
+  {
+    A = new  SALOMEDSImpl_AttributeFlags();
+    L.AddAttribute( A );
+  }
+
+  A->Set( value );
+  return A;
+}
+
+//=======================================================================
+//function : SALOMEDSImpl_AttributeFlags::SALOMEDSImpl_AttributeFlags
+//purpose  : Constructor
+//=======================================================================
+SALOMEDSImpl_AttributeFlags::SALOMEDSImpl_AttributeFlags()
+:SALOMEDSImpl_GenericAttribute("AttributeFlags")
+{
+  myValue = 0;
+}
+
+SALOMEDSImpl_AttributeFlags::~SALOMEDSImpl_AttributeFlags()
+{
+}
+
+//=======================================================================
+//function : SALOMEDSImpl_AttributeFlags::ID
+//purpose  : Get GUID of this attribute
+//=======================================================================
+const Standard_GUID& SALOMEDSImpl_AttributeFlags::ID () const
+{
+  return GetID();
+}
+
+//=======================================================================
+//function : SALOMEDSImpl_AttributeFlags::NewEmpty
+//purpose  : Create new empty attribute
+//=======================================================================
+
+Handle(TDF_Attribute) SALOMEDSImpl_AttributeFlags::NewEmpty () const
+{
+  return new SALOMEDSImpl_AttributeFlags();
+}
+
+//=======================================================================
+//function : SALOMEDSImpl_AttributeFlags::Restore
+//purpose  : Assign given value to the attribute
+//=======================================================================
+void SALOMEDSImpl_AttributeFlags::Restore( const Handle(TDF_Attribute)& with )
+{
+  myValue = Handle(SALOMEDSImpl_AttributeFlags)::DownCast( with )->Get();
+  return;
+}
+
+//=======================================================================
+//function : SALOMEDSImpl_AttributeFlags::Paste
+//purpose  : Assign internal value to the given attribute
+//=======================================================================
+void SALOMEDSImpl_AttributeFlags::Paste(const Handle(TDF_Attribute)& into,
+                                       const Handle(TDF_RelocationTable)& RT ) const
+{
+  Handle(SALOMEDSImpl_AttributeFlags)::DownCast( into )->Set( myValue );
+}
+
+//=======================================================================
+//function : SALOMEDSImpl_AttributeFlags::Set
+//purpose  : Set value
+//=======================================================================
+void SALOMEDSImpl_AttributeFlags::Set( const Standard_Integer v )
+{
+  Backup();
+  myValue=v;
+}
+
+//=======================================================================
+//function : SALOMEDSImpl_AttributeFlags::Get
+//purpose  : GetValue
+//=======================================================================
+Standard_Integer SALOMEDSImpl_AttributeFlags::Get() const
+{
+  return myValue;
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/SALOMEDSImpl/SALOMEDSImpl_AttributeFlags.hxx b/src/SALOMEDSImpl/SALOMEDSImpl_AttributeFlags.hxx
new file mode 100644 (file)
index 0000000..a865bb2
--- /dev/null
@@ -0,0 +1,54 @@
+//  File   : SALOMEDSImpl_AttributeFlags.hxx
+//  Author : Sergey LITONIN
+//  Module : SALOME
+
+#ifndef SALOMEDSImpl_AttributeFlags_HeaderFile
+#define SALOMEDSImpl_AttributeFlags_HeaderFile
+
+#include <Standard_DefineHandle.hxx>
+#include <TDF_Attribute.hxx>
+#include <TDF_Label.hxx>       
+#include "SALOMEDSImpl_GenericAttribute.hxx"
+
+class Standard_GUID;
+class Handle(TDF_Attribute);
+class Handle(TDF_RelocationTable);
+
+
+/*
+  Class       : SALOMEDSImpl_AttributeFlags
+  Description : This class is intended for storing different object attributes that
+                have only two states (0 and 1).
+*/
+
+DEFINE_STANDARD_HANDLE( SALOMEDSImpl_AttributeFlags, SALOMEDSImpl_GenericAttribute )
+
+#ifndef WNT
+class Standard_EXPORT SALOMEDSImpl_AttributeFlags :  public SALOMEDSImpl_GenericAttribute
+#else
+class SALOMEDSImpl_AttributeFlags :  public SALOMEDSImpl_GenericAttribute
+#endif
+{
+private:
+Standard_Integer myValue;
+
+public:
+Standard_EXPORT  static const Standard_GUID&            GetID() ;
+Standard_EXPORT  static Handle(SALOMEDSImpl_AttributeFlags) Set(const TDF_Label&, const Standard_Integer );
+                                                               
+                                       SALOMEDSImpl_AttributeFlags();
+Standard_EXPORT  virtual                                ~SALOMEDSImpl_AttributeFlags();
+
+Standard_EXPORT  const Standard_GUID&                   ID() const;
+Standard_EXPORT  void                                   Restore( const Handle(TDF_Attribute)& with );
+Standard_EXPORT  Handle_TDF_Attribute                   NewEmpty() const;
+Standard_EXPORT  void                                   Paste( const Handle(TDF_Attribute)& into,
+                                              const Handle(TDF_RelocationTable)& RT ) const;
+Standard_EXPORT  void                                   Set( const Standard_Integer );
+Standard_EXPORT  Standard_Integer                       Get() const;
+
+public:
+  DEFINE_STANDARD_RTTI( SALOMEDSImpl_AttributeFlags )
+};
+
+#endif
diff --git a/src/SALOMEDSImpl/SALOMEDSImpl_AttributeGraphic.cxx b/src/SALOMEDSImpl/SALOMEDSImpl_AttributeGraphic.cxx
new file mode 100644 (file)
index 0000000..062a6c7
--- /dev/null
@@ -0,0 +1,161 @@
+//  File   : SALOMEDSImpl_AttributeGraphic.cxx
+//  Author : Sergey LITONIN
+//  Module : SALOME
+
+#include "SALOMEDSImpl_AttributeGraphic.hxx"
+#include <TDF_Attribute.hxx>
+#include <Standard_GUID.hxx>
+#include <TColStd_DataMapIteratorOfDataMapOfIntegerInteger.hxx>
+
+/*
+  Class       : SALOMEDSImpl_AttributeGraphic
+  Description : This class is intended for storing information about
+                graphic representation of objects in dirrent views
+*/
+
+IMPLEMENT_STANDARD_HANDLE( SALOMEDSImpl_AttributeGraphic, SALOMEDSImpl_GenericAttribute )
+IMPLEMENT_STANDARD_RTTIEXT( SALOMEDSImpl_AttributeGraphic, SALOMEDSImpl_GenericAttribute )
+
+//=======================================================================
+//function : GetID
+//purpose  : Get GUID of this attribute
+//=======================================================================
+const Standard_GUID& SALOMEDSImpl_AttributeGraphic::GetID()
+{
+  static Standard_GUID SALOMEDSImpl_AttributeGraphicID( "F17AE8F0-E354-4d6f-8E42-38385C36E67E" );
+  return SALOMEDSImpl_AttributeGraphicID;
+}
+
+//=======================================================================
+//function : SALOMEDSImpl_AttributeGraphic
+//purpose  : Empty Constructor
+//=======================================================================
+SALOMEDSImpl_AttributeGraphic::SALOMEDSImpl_AttributeGraphic()
+:SALOMEDSImpl_GenericAttribute("AttributeGraphic")
+{
+}
+
+//=======================================================================
+//function : ~SALOMEDSImpl_AttributeGraphic
+//purpose  : Destructor
+//=======================================================================
+SALOMEDSImpl_AttributeGraphic::~SALOMEDSImpl_AttributeGraphic()
+{
+}
+
+//=======================================================================
+//function : SetVisibility
+//purpose  : Set visibility of object in given view
+//=======================================================================
+void SALOMEDSImpl_AttributeGraphic::SetVisibility(const Standard_Integer theViewId,
+                                                 const Standard_Boolean theValue )
+{
+  if ( myVisibility.IsBound( theViewId ) && myVisibility( theViewId ) == theValue )
+    return;
+
+  Backup();
+  if ( myVisibility.IsBound( theViewId ) )
+    myVisibility.ChangeFind( theViewId ) = theValue ? 1 : 0;
+  else
+    myVisibility.Bind( theViewId, theValue ? 1 : 0 );
+}
+
+
+//=======================================================================
+//function : Get
+//purpose  : Get visibility of object in given view
+//=======================================================================
+Standard_Boolean SALOMEDSImpl_AttributeGraphic::GetVisibility(const Standard_Integer theViewId ) const
+{
+  return myVisibility.IsBound( theViewId ) ? myVisibility( theViewId ) : false;
+}
+
+
+//=======================================================================
+//function : ID
+//purpose  : Get GUID of this attribute
+//=======================================================================
+const Standard_GUID& SALOMEDSImpl_AttributeGraphic::ID () const
+{
+  return GetID();
+}
+
+
+//=======================================================================
+//function : NewEmpty
+//purpose  : Create new empty attribute
+//=======================================================================
+Handle(TDF_Attribute) SALOMEDSImpl_AttributeGraphic::NewEmpty () const
+{
+  return new SALOMEDSImpl_AttributeGraphic ();
+}
+
+//=======================================================================
+//function : SetVisibility
+//purpose  : Set visibility of object in all views
+//=======================================================================
+void SALOMEDSImpl_AttributeGraphic::SetVisibility( const TColStd_DataMapOfIntegerInteger& theMap )
+{
+  myVisibility = theMap;
+}
+
+//=======================================================================
+//function : SetVisibility
+//purpose  : Get visibility of object in all views
+//=======================================================================
+const TColStd_DataMapOfIntegerInteger& SALOMEDSImpl_AttributeGraphic::GetVisibility()
+{
+  return myVisibility;
+}
+
+//=======================================================================
+//function : Restore
+//purpose  : Restore value of attribute with value of theWith one
+//=======================================================================
+void SALOMEDSImpl_AttributeGraphic::Restore( const Handle(TDF_Attribute)& theWith )
+{
+  Handle(SALOMEDSImpl_AttributeGraphic) anAttr =
+    Handle(SALOMEDSImpl_AttributeGraphic)::DownCast( theWith );
+
+  if ( !anAttr.IsNull() )
+    SetVisibility( anAttr->GetVisibility() );
+}
+
+//=======================================================================
+//function : Paste
+//purpose  : Paste value of current attribute to the value of entry one
+//=======================================================================
+void SALOMEDSImpl_AttributeGraphic::Paste( const Handle(TDF_Attribute)& theInto,
+                                       const Handle(TDF_RelocationTable)& ) const
+{
+  Handle(SALOMEDSImpl_AttributeGraphic) anAttr =
+    Handle(SALOMEDSImpl_AttributeGraphic)::DownCast( theInto );
+
+  if ( !anAttr.IsNull() )
+    anAttr->SetVisibility( myVisibility );
+}
+
+//=======================================================================
+//function : Dump
+//purpose  : Dump
+//=======================================================================
+Standard_OStream& SALOMEDSImpl_AttributeGraphic::Dump( Standard_OStream& anOS ) const
+{
+  anOS << "Visibility of object:" << endl;
+  TColStd_DataMapIteratorOfDataMapOfIntegerInteger anIter( myVisibility );
+  for ( ; anIter.More(); anIter.Next() )
+  {
+    char str[ 100 ];
+    
+    if ( GetVisibility( anIter.Key() ) )
+      sprintf( str, "Viewer ID = 0x%X State = VISIBLE\n", anIter.Key() );
+    else
+      sprintf( str, "Viewer ID = 0x%X State = INVISIBLE\n", anIter.Key() );
+      
+    anOS << str;
+  }
+  
+  anOS << "Integer";
+  return anOS;
+}
+
diff --git a/src/SALOMEDSImpl/SALOMEDSImpl_AttributeGraphic.hxx b/src/SALOMEDSImpl/SALOMEDSImpl_AttributeGraphic.hxx
new file mode 100644 (file)
index 0000000..700e0bb
--- /dev/null
@@ -0,0 +1,62 @@
+//  File   : SALOMEDSImpl_AttributeGraphic.hxx
+//  Author : Sergey LITONIN
+//  Module : SALOME
+
+#ifndef SALOMEDSImpl_AttributeGraphic_HeaderFile
+#define SALOMEDSImpl_AttributeGraphic_HeaderFile
+
+#include <Standard_DefineHandle.hxx>
+#include <TDF_Attribute.hxx>
+#include <TColStd_DataMapOfIntegerInteger.hxx>
+#include <TDF_Label.hxx>       
+#include "SALOMEDSImpl_GenericAttribute.hxx"
+
+class Standard_GUID;
+class Handle(TDF_Attribute);
+class Handle(TDF_RelocationTable);
+
+/*
+  Class       : SALOMEDSImpl_AttributeGraphic
+  Description : This class is intended for storing information about
+                graphic representation of objects in dirrent views
+*/
+
+DEFINE_STANDARD_HANDLE( SALOMEDSImpl_AttributeGraphic,  SALOMEDSImpl_GenericAttribute)
+
+
+
+#ifndef WNT
+class Standard_EXPORT SALOMEDSImpl_AttributeGraphic : public SALOMEDSImpl_GenericAttribute
+#else
+class SALOMEDSImpl_AttributeGraphic : public SALOMEDSImpl_GenericAttribute
+#endif
+{
+
+public:
+Standard_EXPORT                                    SALOMEDSImpl_AttributeGraphic();
+Standard_EXPORT                                    ~SALOMEDSImpl_AttributeGraphic();
+                                 
+Standard_EXPORT    static const                    Standard_GUID& GetID() ;
+
+Standard_EXPORT    void                            SetVisibility( const Standard_Integer,
+                                                 const Standard_Boolean );
+Standard_EXPORT    Standard_Boolean                GetVisibility( const Standard_Integer ) const;
+Standard_EXPORT    const Standard_GUID&            ID() const;
+Standard_EXPORT    void                            Restore( const Handle(TDF_Attribute)& theWith );
+Standard_EXPORT    Handle(TDF_Attribute)           NewEmpty() const;
+Standard_EXPORT    void                            Paste( const Handle(TDF_Attribute)& theInto,
+                                         const Handle(TDF_RelocationTable)& ) const;
+Standard_EXPORT    virtual Standard_OStream&       Dump( Standard_OStream& anOS ) const;
+
+Standard_EXPORT    void                            SetVisibility( const TColStd_DataMapOfIntegerInteger& );
+
+Standard_EXPORT    const TColStd_DataMapOfIntegerInteger& GetVisibility();
+  
+private:
+  TColStd_DataMapOfIntegerInteger myVisibility;
+
+public:
+  DEFINE_STANDARD_RTTI( SALOMEDSImpl_AttributeGraphic )
+};
+
+#endif
diff --git a/src/SALOMEDSImpl/SALOMEDSImpl_AttributeIOR.cxx b/src/SALOMEDSImpl/SALOMEDSImpl_AttributeIOR.cxx
new file mode 100644 (file)
index 0000000..ab6b6f1
--- /dev/null
@@ -0,0 +1,126 @@
+//  File   : SALOMEDSImpl_AttributeIOR.cxx
+//  Author : Sergey RUIN
+//  Module : SALOME
+
+#ifndef WNT
+using namespace std;
+#endif
+#include "SALOMEDSImpl_AttributeIOR.hxx"
+#include <TCollection_AsciiString.hxx>
+#include "SALOMEDSImpl_Study.hxx"
+#include <Standard_GUID.hxx>
+
+IMPLEMENT_STANDARD_HANDLE( SALOMEDSImpl_AttributeIOR, SALOMEDSImpl_GenericAttribute )
+IMPLEMENT_STANDARD_RTTIEXT( SALOMEDSImpl_AttributeIOR, SALOMEDSImpl_GenericAttribute )
+
+
+//=======================================================================
+//function : GetID
+//purpose  : 
+//=======================================================================
+
+const Standard_GUID& SALOMEDSImpl_AttributeIOR::GetID () 
+{
+  static Standard_GUID SALOMEDSImpl_AttributeIORID ("92888E01-7074-11d5-A690-0800369C8A03");
+  return SALOMEDSImpl_AttributeIORID;
+}
+
+
+
+//=======================================================================
+//function : Set
+//purpose  : 
+//=======================================================================
+
+Handle(SALOMEDSImpl_AttributeIOR) SALOMEDSImpl_AttributeIOR::Set (const TDF_Label& L,
+                                                                 const TCollection_ExtendedString& S) 
+{
+  Handle(SALOMEDSImpl_AttributeIOR) A;
+  if (!L.FindAttribute(SALOMEDSImpl_AttributeIOR::GetID(),A)) {
+    A = new  SALOMEDSImpl_AttributeIOR(); 
+    L.AddAttribute(A);
+  }
+
+  A->SetValue(S); 
+  SALOMEDSImpl_Study::IORUpdated(A);
+  return A;
+}
+
+//=======================================================================
+//function : SetValue
+//purpose  : 
+//=======================================================================
+void SALOMEDSImpl_AttributeIOR::SetValue(const TCollection_ExtendedString& theValue)
+{
+  CheckLocked();
+
+  Handle(SALOMEDSImpl_Study) aStudy = SALOMEDSImpl_Study::GetStudy(Label());
+  aStudy->AddCreatedPostponed(theValue);
+  aStudy->AddPostponed(theValue);
+
+  Backup();
+  myString = theValue;
+
+  SALOMEDSImpl_Study::IORUpdated(this);
+
+  //SetModifyFlag(); //SRN: Mark the study as being modified, so it could be saved 
+}
+
+//=======================================================================
+//function : Value
+//purpose  : 
+//=======================================================================
+TCollection_ExtendedString SALOMEDSImpl_AttributeIOR::Value() const
+{
+  return myString;
+}
+
+//=======================================================================
+//function : constructor
+//purpose  : 
+//=======================================================================
+SALOMEDSImpl_AttributeIOR::SALOMEDSImpl_AttributeIOR()
+:SALOMEDSImpl_GenericAttribute("AttributeIOR")
+{
+}
+
+//=======================================================================
+//function : ID
+//purpose  : 
+//=======================================================================
+
+const Standard_GUID& SALOMEDSImpl_AttributeIOR::ID () const { return GetID(); }
+
+
+//=======================================================================
+//function : NewEmpty
+//purpose  : 
+//=======================================================================
+
+Handle(TDF_Attribute) SALOMEDSImpl_AttributeIOR::NewEmpty () const
+{  
+  return new SALOMEDSImpl_AttributeIOR(); 
+}
+
+//=======================================================================
+//function : Restore
+//purpose  : 
+//=======================================================================
+
+void SALOMEDSImpl_AttributeIOR::Restore(const Handle(TDF_Attribute)& with) 
+{
+  myString = Handle(SALOMEDSImpl_AttributeIOR)::DownCast (with)->Value();
+  return;
+}
+
+//=======================================================================
+//function : Paste
+//purpose  : 
+//=======================================================================
+
+void SALOMEDSImpl_AttributeIOR::Paste (const Handle(TDF_Attribute)& into,
+                                      const Handle(TDF_RelocationTable)& RT) const
+{
+  Handle(SALOMEDSImpl_AttributeIOR)::DownCast (into)->SetValue(myString);
+}
+
diff --git a/src/SALOMEDSImpl/SALOMEDSImpl_AttributeIOR.hxx b/src/SALOMEDSImpl/SALOMEDSImpl_AttributeIOR.hxx
new file mode 100644 (file)
index 0000000..692701f
--- /dev/null
@@ -0,0 +1,45 @@
+//  File   : SALOMEDSImpl_AttributeIOR.hxx
+//  Author : Sergey RUIN
+//  Module : SALOME
+
+#ifndef _SALOMEDSImpl_AttributeIOR_HeaderFile
+#define _SALOMEDSImpl_AttributeIOR_HeaderFile
+
+#include <Standard_DefineHandle.hxx>
+#include <TDF_Attribute.hxx>
+#include <TCollection_ExtendedString.hxx>
+#include <TDF_Label.hxx>       
+#include "SALOMEDSImpl_GenericAttribute.hxx"
+
+class Standard_GUID;
+class Handle(TDF_Attribute);
+class Handle(TDF_RelocationTable);
+
+
+DEFINE_STANDARD_HANDLE( SALOMEDSImpl_AttributeIOR, SALOMEDSImpl_GenericAttribute )
+
+class SALOMEDSImpl_AttributeIOR : public SALOMEDSImpl_GenericAttribute 
+{
+private:
+
+ TCollection_ExtendedString myString;
+
+public:
+
+Standard_EXPORT static const Standard_GUID& GetID() ;
+Standard_EXPORT static Handle_SALOMEDSImpl_AttributeIOR Set(const TDF_Label& label,
+                                                           const TCollection_ExtendedString& string);
+Standard_EXPORT SALOMEDSImpl_AttributeIOR();
+Standard_EXPORT const Standard_GUID& ID() const;
+Standard_EXPORT void SetValue(const TCollection_ExtendedString& theValue);
+Standard_EXPORT TCollection_ExtendedString Value() const ;
+Standard_EXPORT void Restore(const Handle(TDF_Attribute)& with) ;
+Standard_EXPORT Handle_TDF_Attribute NewEmpty() const;
+Standard_EXPORT void Paste(const Handle(TDF_Attribute)& into,const Handle(TDF_RelocationTable)& RT) const;
+Standard_EXPORT ~SALOMEDSImpl_AttributeIOR() {}
+
+public:
+  DEFINE_STANDARD_RTTI( SALOMEDSImpl_AttributeIOR )
+};
+
+#endif
diff --git a/src/SALOMEDSImpl/SALOMEDSImpl_AttributeInteger.cxx b/src/SALOMEDSImpl/SALOMEDSImpl_AttributeInteger.cxx
new file mode 100644 (file)
index 0000000..7b80aa4
--- /dev/null
@@ -0,0 +1,83 @@
+//  File   : SALOMEDSImpl_AttributeInteger.cxx
+//  Author : Sergey RUIN
+//  Module : SALOME
+
+#ifndef WNT
+using namespace std;
+#endif
+#include "SALOMEDSImpl_AttributeInteger.hxx"
+
+IMPLEMENT_STANDARD_HANDLE( SALOMEDSImpl_AttributeInteger,  SALOMEDSImpl_GenericAttribute)
+IMPLEMENT_STANDARD_RTTIEXT( SALOMEDSImpl_AttributeInteger, SALOMEDSImpl_GenericAttribute )
+
+
+//=======================================================================
+//function : GetID
+//purpose  :
+//=======================================================================
+const Standard_GUID& SALOMEDSImpl_AttributeInteger::GetID ()
+{
+  static Standard_GUID IntegerID ("8CC3E213-C9B4-47e4-8496-DD5E62E22018");
+  return IntegerID;
+}   
+
+Handle(SALOMEDSImpl_AttributeInteger) SALOMEDSImpl_AttributeInteger::Set (const TDF_Label& L, Standard_Integer Val) 
+{
+  Handle(SALOMEDSImpl_AttributeInteger) A;
+  if (!L.FindAttribute(SALOMEDSImpl_AttributeInteger::GetID(), A)) {
+    A = new  SALOMEDSImpl_AttributeInteger(); 
+    L.AddAttribute(A);
+  }
+
+  A->SetValue(Val); 
+  return A;
+}
+
+//=======================================================================
+//function : SetValue
+//purpose  :
+//=======================================================================
+void SALOMEDSImpl_AttributeInteger::SetValue(const Standard_Integer v)
+{
+  if(myValue == v) return;
+
+  Backup();
+  myValue = v;
+
+  SetModifyFlag(); //SRN: Mark the study as being modified, so it could be saved 
+}
+
+//=======================================================================
+//function : ID
+//purpose  :
+//=======================================================================
+const Standard_GUID& SALOMEDSImpl_AttributeInteger::ID () const { return GetID(); }
+
+
+//=======================================================================
+//function : NewEmpty
+//purpose  :
+//=======================================================================
+Handle(TDF_Attribute) SALOMEDSImpl_AttributeInteger::NewEmpty () const
+{
+  return new SALOMEDSImpl_AttributeInteger();
+}
+
+//=======================================================================
+//function : Restore
+//purpose  :
+//=======================================================================
+void SALOMEDSImpl_AttributeInteger::Restore(const Handle(TDF_Attribute)& With)
+{
+  myValue = Handle(SALOMEDSImpl_AttributeInteger)::DownCast (With)->Value();
+}
+
+//=======================================================================
+//function : Paste
+//purpose  :
+//=======================================================================
+void SALOMEDSImpl_AttributeInteger::Paste (const Handle(TDF_Attribute)& Into,
+                                          const Handle(TDF_RelocationTable)& RT) const
+{
+  Handle(SALOMEDSImpl_AttributeInteger)::DownCast(Into)->SetValue(myValue);
+}             
diff --git a/src/SALOMEDSImpl/SALOMEDSImpl_AttributeInteger.hxx b/src/SALOMEDSImpl/SALOMEDSImpl_AttributeInteger.hxx
new file mode 100644 (file)
index 0000000..c9113ba
--- /dev/null
@@ -0,0 +1,48 @@
+//  File   : SALOMEDSImpl_AttributeInteger.hxx
+//  Author : Sergey RUIN
+//  Module : SALOME
+
+#ifndef _SALOMEDSImpl_AttributeInteger_HeaderFile
+#define _SALOMEDSImpl_AttributeInteger_HeaderFile
+
+#include <Standard_DefineHandle.hxx>
+#include <TDF_Attribute.hxx>
+#include <TCollection_AsciiString.hxx>
+#include <TDF_Label.hxx>
+#include "SALOMEDSImpl_GenericAttribute.hxx"
+
+class Standard_GUID;
+class Handle(TDF_Attribute);
+class Handle(TDF_RelocationTable);
+
+
+DEFINE_STANDARD_HANDLE( SALOMEDSImpl_AttributeInteger, SALOMEDSImpl_GenericAttribute )
+
+
+class SALOMEDSImpl_AttributeInteger : public SALOMEDSImpl_GenericAttribute 
+{
+private:
+Standard_Integer myValue;
+
+public:
+Standard_EXPORT static const Standard_GUID& GetID() ;
+
+Standard_EXPORT  SALOMEDSImpl_AttributeInteger():SALOMEDSImpl_GenericAttribute("AttributeInteger") {} 
+Standard_EXPORT  static Handle(SALOMEDSImpl_AttributeInteger) Set (const TDF_Label& L, Standard_Integer Val); 
+Standard_EXPORT  void SetValue(const Standard_Integer theVal);
+Standard_EXPORT  Standard_Integer Value() const { return myValue; } 
+Standard_EXPORT  virtual TCollection_AsciiString Save() { return TCollection_AsciiString(myValue); }
+Standard_EXPORT  virtual void Load(const TCollection_AsciiString& theValue) { myValue = theValue.IntegerValue(); } 
+
+Standard_EXPORT  const Standard_GUID& ID() const;
+Standard_EXPORT  void Restore(const Handle(TDF_Attribute)& with) ;
+Standard_EXPORT  Handle_TDF_Attribute NewEmpty() const;
+Standard_EXPORT  void Paste(const Handle(TDF_Attribute)& into,const Handle(TDF_RelocationTable)& RT) const;
+Standard_EXPORT ~SALOMEDSImpl_AttributeInteger() {}
+
+public:
+  DEFINE_STANDARD_RTTI( SALOMEDSImpl_AttributeInteger )
+
+};
+
+#endif
diff --git a/src/SALOMEDSImpl/SALOMEDSImpl_AttributeLocalID.cxx b/src/SALOMEDSImpl/SALOMEDSImpl_AttributeLocalID.cxx
new file mode 100644 (file)
index 0000000..240a953
--- /dev/null
@@ -0,0 +1,110 @@
+//  File   : SALOMEDSImpl_AttributeLocalID.cxx
+//  Author : Sergey RUIN
+//  Module : SALOME
+
+
+#include "SALOMEDSImpl_AttributeLocalID.hxx"
+#include <Standard_GUID.hxx>
+
+using namespace std;
+
+IMPLEMENT_STANDARD_HANDLE( SALOMEDSImpl_AttributeLocalID, SALOMEDSImpl_GenericAttribute )
+IMPLEMENT_STANDARD_RTTIEXT( SALOMEDSImpl_AttributeLocalID, SALOMEDSImpl_GenericAttribute )
+
+//=======================================================================
+//function : GetID
+//purpose  : 
+//=======================================================================
+
+const Standard_GUID& SALOMEDSImpl_AttributeLocalID::GetID () 
+{
+  static Standard_GUID SALOMEDSImpl_AttributeLocalID ("12837196-8F52-11d6-A8A3-0001021E8C7F");
+  return SALOMEDSImpl_AttributeLocalID;
+}
+
+
+
+//=======================================================================
+//function : Set
+//purpose  : 
+//=======================================================================
+
+Handle(SALOMEDSImpl_AttributeLocalID) SALOMEDSImpl_AttributeLocalID::Set (const TDF_Label& L,
+                                                                         const Standard_Integer value) 
+{
+  Handle(SALOMEDSImpl_AttributeLocalID) A;
+  if (!L.FindAttribute(SALOMEDSImpl_AttributeLocalID::GetID(),A)) {
+    A = new  SALOMEDSImpl_AttributeLocalID(); 
+    L.AddAttribute(A);
+  }
+  
+  A->SetValue(value); 
+  return A;
+}
+
+
+//=======================================================================
+//function : constructor
+//purpose  : 
+//=======================================================================
+SALOMEDSImpl_AttributeLocalID::SALOMEDSImpl_AttributeLocalID()
+:SALOMEDSImpl_GenericAttribute("AttributeLocalID")
+{
+  myValue = 0; 
+}
+
+//=======================================================================
+//function : Set
+//purpose  :
+//=======================================================================
+void SALOMEDSImpl_AttributeLocalID::SetValue(const Standard_Integer theValue)
+{
+  CheckLocked();
+
+  Backup();
+
+  myValue = theValue;
+
+  SetModifyFlag(); //SRN: Mark the study as being modified, so it could be saved 
+}
+    
+
+//=======================================================================
+//function : ID
+//purpose  : 
+//=======================================================================
+
+const Standard_GUID& SALOMEDSImpl_AttributeLocalID::ID () const { return GetID(); }
+
+
+//=======================================================================
+//function : NewEmpty
+//purpose  : 
+//=======================================================================
+
+Handle(TDF_Attribute) SALOMEDSImpl_AttributeLocalID::NewEmpty () const
+{  
+  return new SALOMEDSImpl_AttributeLocalID(); 
+}
+
+//=======================================================================
+//function : Restore
+//purpose  : 
+//=======================================================================
+
+void SALOMEDSImpl_AttributeLocalID::Restore(const Handle(TDF_Attribute)& with) 
+{
+  myValue = Handle(SALOMEDSImpl_AttributeLocalID)::DownCast (with)->Value();
+}
+
+//=======================================================================
+//function : Paste
+//purpose  : 
+//=======================================================================
+
+void SALOMEDSImpl_AttributeLocalID::Paste (const Handle(TDF_Attribute)& into,
+                                          const Handle(TDF_RelocationTable)& RT) const
+{
+  Handle(SALOMEDSImpl_AttributeLocalID)::DownCast (into)->SetValue(myValue);
+}
+
diff --git a/src/SALOMEDSImpl/SALOMEDSImpl_AttributeLocalID.hxx b/src/SALOMEDSImpl/SALOMEDSImpl_AttributeLocalID.hxx
new file mode 100644 (file)
index 0000000..78dadd8
--- /dev/null
@@ -0,0 +1,48 @@
+//  File   : SALOMEDSImpl_AttributeLocalID.hxx
+//  Author : Sergey RUIN
+//  Module : SALOME
+
+#ifndef _SALOMEDSImpl_AttributeLocalID_HeaderFile
+#define _SALOMEDSImpl_AttributeLocalID_HeaderFile
+
+#include <Standard_DefineHandle.hxx>
+#include <TDF_Attribute.hxx>
+#include <TCollection_AsciiString.hxx> 
+#include <TDF_Label.hxx>       
+#include "SALOMEDSImpl_GenericAttribute.hxx"
+
+class Standard_GUID;
+class Handle(TDF_Attribute);
+class Handle(TDF_RelocationTable);
+
+
+DEFINE_STANDARD_HANDLE( SALOMEDSImpl_AttributeLocalID, SALOMEDSImpl_GenericAttribute )
+
+
+
+class SALOMEDSImpl_AttributeLocalID : public SALOMEDSImpl_GenericAttribute 
+{
+private:
+Standard_Integer myValue;
+
+public:
+
+Standard_EXPORT  virtual TCollection_AsciiString Save() { return TCollection_AsciiString(myValue); }
+Standard_EXPORT  virtual void Load(const TCollection_AsciiString& theValue) { myValue = theValue.IntegerValue(); }  
+
+Standard_EXPORT static const Standard_GUID& GetID() ;
+Standard_EXPORT static  Handle_SALOMEDSImpl_AttributeLocalID Set(const TDF_Label& label,const Standard_Integer value) ;
+Standard_EXPORT  void SetValue(const Standard_Integer value);  
+Standard_EXPORT Standard_Integer Value() const { return myValue; }  
+Standard_EXPORT SALOMEDSImpl_AttributeLocalID();
+Standard_EXPORT  const Standard_GUID& ID() const;
+Standard_EXPORT   void Restore(const Handle(TDF_Attribute)& with) ;
+Standard_EXPORT   Handle_TDF_Attribute NewEmpty() const;
+Standard_EXPORT   void Paste(const Handle(TDF_Attribute)& into,const Handle(TDF_RelocationTable)& RT) const;
+Standard_EXPORT ~SALOMEDSImpl_AttributeLocalID() {}
+
+public:
+  DEFINE_STANDARD_RTTI( SALOMEDSImpl_AttributeLocalID )
+};
+
+#endif
diff --git a/src/SALOMEDSImpl/SALOMEDSImpl_AttributeName.cxx b/src/SALOMEDSImpl/SALOMEDSImpl_AttributeName.cxx
new file mode 100644 (file)
index 0000000..55718b7
--- /dev/null
@@ -0,0 +1,87 @@
+//  File   : SALOMEDSImpl_AttributeName.cxx
+//  Author : Sergey RUIN
+//  Module : SALOME
+
+
+#include "SALOMEDSImpl_AttributeName.hxx"
+
+using namespace std;
+
+IMPLEMENT_STANDARD_HANDLE( SALOMEDSImpl_AttributeName, SALOMEDSImpl_GenericAttribute )
+IMPLEMENT_STANDARD_RTTIEXT( SALOMEDSImpl_AttributeName, SALOMEDSImpl_GenericAttribute )
+
+//=======================================================================
+//function : GetID
+//purpose  :
+//=======================================================================
+const Standard_GUID& SALOMEDSImpl_AttributeName::GetID ()
+{
+  static Standard_GUID NameID ("8650000D-63A0-4651-B621-CC95C9308598");
+  return NameID;
+}   
+
+Handle(SALOMEDSImpl_AttributeName) SALOMEDSImpl_AttributeName::Set (const TDF_Label& L, 
+                                                                   const TCollection_ExtendedString& Val) 
+{
+  Handle(SALOMEDSImpl_AttributeName) A;
+  if (!L.FindAttribute(SALOMEDSImpl_AttributeName::GetID(), A)) {
+    A = new  SALOMEDSImpl_AttributeName(); 
+    L.AddAttribute(A);
+  }
+
+  A->SetValue(Val);   
+  return A;
+}
+
+//=======================================================================
+//function : SetValue
+//purpose  :
+//=======================================================================
+void SALOMEDSImpl_AttributeName::SetValue (const TCollection_ExtendedString& S)
+{
+  CheckLocked();
+
+  if(myString == S) return;
+
+  Backup();
+
+  myString = S;
+
+  SetModifyFlag(); //SRN: Mark the study as being modified, so it could be saved 
+}
+           
+
+//=======================================================================
+//function : ID
+//purpose  :
+//=======================================================================
+const Standard_GUID& SALOMEDSImpl_AttributeName::ID () const { return GetID(); } 
+
+//=======================================================================
+//function : NewEmpty
+//purpose  : 
+//=======================================================================
+Handle(TDF_Attribute) SALOMEDSImpl_AttributeName::NewEmpty () const
+{  
+  return new SALOMEDSImpl_AttributeName(); 
+}
+
+//=======================================================================
+//function : Restore
+//purpose  : 
+//=======================================================================
+void SALOMEDSImpl_AttributeName::Restore(const Handle(TDF_Attribute)& with) 
+{
+  myString = Handle(SALOMEDSImpl_AttributeName)::DownCast (with)->Value ();
+}
+
+//=======================================================================
+//function : Paste
+//purpose  : 
+//=======================================================================
+
+void SALOMEDSImpl_AttributeName::Paste (const Handle(TDF_Attribute)& into,
+                                          const Handle(TDF_RelocationTable)& RT) const
+{
+  Handle(SALOMEDSImpl_AttributeName)::DownCast (into)->SetValue(myString);
+}
diff --git a/src/SALOMEDSImpl/SALOMEDSImpl_AttributeName.hxx b/src/SALOMEDSImpl/SALOMEDSImpl_AttributeName.hxx
new file mode 100644 (file)
index 0000000..299db5f
--- /dev/null
@@ -0,0 +1,52 @@
+//  File   : SALOMEDSImpl_AttributeIOR.hxx
+//  Author : Sergey RUIN
+//  Module : SALOME
+
+#ifndef _SALOMEDSImpl_AttributeName_HeaderFile
+#define _SALOMEDSImpl_AttributeName_HeaderFile
+
+#include <Standard_DefineHandle.hxx>
+#include <TDF_Attribute.hxx>
+#include <TCollection_AsciiString.hxx>
+#include <TCollection_ExtendedString.hxx>
+#include <TDF_Label.hxx> 
+#include "SALOMEDSImpl_GenericAttribute.hxx"
+
+class Standard_GUID;
+class Handle(TDF_Attribute);
+class Handle(TDF_RelocationTable);
+
+
+DEFINE_STANDARD_HANDLE( SALOMEDSImpl_AttributeName, SALOMEDSImpl_GenericAttribute )
+
+
+class SALOMEDSImpl_AttributeName : public SALOMEDSImpl_GenericAttribute 
+{
+
+private:
+
+ TCollection_ExtendedString myString;
+
+public:
+Standard_EXPORT static const Standard_GUID& GetID() ;
+
+Standard_EXPORT  SALOMEDSImpl_AttributeName():SALOMEDSImpl_GenericAttribute("AttributeName") {}
+Standard_EXPORT  static Handle(SALOMEDSImpl_AttributeName) Set (const TDF_Label& L, const TCollection_ExtendedString& Val);
+Standard_EXPORT  void SetValue(const TCollection_ExtendedString& theVal);
+Standard_EXPORT  TCollection_ExtendedString Value() const { return myString; }  
+
+Standard_EXPORT  virtual TCollection_AsciiString Save() { return myString; }
+Standard_EXPORT  virtual void Load(const TCollection_AsciiString& theValue) { myString = theValue; } 
+
+Standard_EXPORT  const Standard_GUID& ID() const;
+Standard_EXPORT  void Restore(const Handle(TDF_Attribute)& with) ;
+Standard_EXPORT  Handle_TDF_Attribute NewEmpty() const;
+Standard_EXPORT  void Paste(const Handle(TDF_Attribute)& into,const Handle(TDF_RelocationTable)& RT) const;
+
+Standard_EXPORT ~SALOMEDSImpl_AttributeName() {}
+
+public:
+  DEFINE_STANDARD_RTTI( SALOMEDSImpl_AttributeName )
+};
+
+#endif
diff --git a/src/SALOMEDSImpl/SALOMEDSImpl_AttributeOpened.cxx b/src/SALOMEDSImpl/SALOMEDSImpl_AttributeOpened.cxx
new file mode 100644 (file)
index 0000000..2f818b4
--- /dev/null
@@ -0,0 +1,105 @@
+//  File   : SALOMEDSImpl_AttributeOpened.cxx
+//  Author : Sergey RUIN
+//  Module : SALOME
+
+
+#include "SALOMEDSImpl_AttributeOpened.hxx"
+#include <Standard_GUID.hxx>
+
+using namespace std;
+
+IMPLEMENT_STANDARD_HANDLE( SALOMEDSImpl_AttributeOpened, SALOMEDSImpl_GenericAttribute )
+IMPLEMENT_STANDARD_RTTIEXT( SALOMEDSImpl_AttributeOpened, SALOMEDSImpl_GenericAttribute )
+
+//=======================================================================
+//function : GetID
+//purpose  : 
+//=======================================================================
+
+const Standard_GUID& SALOMEDSImpl_AttributeOpened::GetID () 
+{
+  static Standard_GUID SALOMEDSImpl_AttributeOpenedID ("12837186-8F52-11d6-A8A3-0001021E8C7F");
+  return SALOMEDSImpl_AttributeOpenedID;
+}
+
+
+
+//=======================================================================
+//function : Set
+//purpose  : 
+//=======================================================================
+
+Handle(SALOMEDSImpl_AttributeOpened) SALOMEDSImpl_AttributeOpened::Set (const TDF_Label& L,
+                                                                       const Standard_Integer value) 
+{
+  Handle(SALOMEDSImpl_AttributeOpened) A;
+  if (!L.FindAttribute(SALOMEDSImpl_AttributeOpened::GetID(),A)) {
+    A = new  SALOMEDSImpl_AttributeOpened(); 
+    L.AddAttribute(A);
+  }
+  
+  A->SetOpened (value); 
+  return A;
+}
+
+
+//=======================================================================
+//function : constructor
+//purpose  : 
+//=======================================================================
+SALOMEDSImpl_AttributeOpened::SALOMEDSImpl_AttributeOpened()
+:SALOMEDSImpl_GenericAttribute("AttributeOpened")
+{
+  myValue = 0; 
+}
+
+//=======================================================================
+//function : SetOpened
+//purpose  :
+//=======================================================================
+void SALOMEDSImpl_AttributeOpened::SetOpened(const Standard_Integer theValue)
+{
+  Backup();
+
+  (theValue!=0)?myValue=1:myValue=0;
+}
+
+//=======================================================================
+//function : ID
+//purpose  : 
+//=======================================================================
+
+const Standard_GUID& SALOMEDSImpl_AttributeOpened::ID () const { return GetID(); }
+
+
+//=======================================================================
+//function : NewEmpty
+//purpose  : 
+//=======================================================================
+
+Handle(TDF_Attribute) SALOMEDSImpl_AttributeOpened::NewEmpty () const
+{  
+  return new SALOMEDSImpl_AttributeOpened(); 
+}
+
+//=======================================================================
+//function : Restore
+//purpose  : 
+//=======================================================================
+
+void SALOMEDSImpl_AttributeOpened::Restore(const Handle(TDF_Attribute)& with) 
+{
+  myValue = Handle(SALOMEDSImpl_AttributeOpened)::DownCast (with)->IsOpened ();
+}
+
+//=======================================================================
+//function : Paste
+//purpose  : 
+//=======================================================================
+
+void SALOMEDSImpl_AttributeOpened::Paste (const Handle(TDF_Attribute)& into,
+                                         const Handle(TDF_RelocationTable)& RT) const
+{
+  Handle(SALOMEDSImpl_AttributeOpened)::DownCast (into)->SetOpened (myValue);
+}
+
diff --git a/src/SALOMEDSImpl/SALOMEDSImpl_AttributeOpened.hxx b/src/SALOMEDSImpl/SALOMEDSImpl_AttributeOpened.hxx
new file mode 100644 (file)
index 0000000..e729182
--- /dev/null
@@ -0,0 +1,46 @@
+//  File   : SALOMEDSImpl_AttributeOpened.hxx
+//  Author : Sergey RUIN
+//  Module : SALOME
+
+#ifndef _SALOMEDSImpl_AttributeOpened_HeaderFile
+#define _SALOMEDSImpl_AttributeOpened_HeaderFile
+
+#include <Standard_DefineHandle.hxx>
+#include <TDF_Attribute.hxx>
+#include <TCollection_AsciiString.hxx>
+#include <TDF_Label.hxx>       
+#include "SALOMEDSImpl_GenericAttribute.hxx"
+
+class Standard_GUID;
+class Handle(TDF_Attribute);
+class Handle(TDF_RelocationTable);
+
+
+DEFINE_STANDARD_HANDLE( SALOMEDSImpl_AttributeOpened, SALOMEDSImpl_GenericAttribute )
+
+class SALOMEDSImpl_AttributeOpened : public SALOMEDSImpl_GenericAttribute 
+{
+private:
+Standard_Integer myValue;
+
+public:
+
+Standard_EXPORT virtual TCollection_AsciiString Save() { return (myValue == 0)?(char*)"0":(char*)"1"; }
+Standard_EXPORT virtual void Load(const TCollection_AsciiString& theValue) { (theValue == "0")?myValue=0:myValue=1; } 
+
+Standard_EXPORT static const Standard_GUID& GetID() ;
+Standard_EXPORT static  Handle_SALOMEDSImpl_AttributeOpened Set(const TDF_Label& label,const Standard_Integer value) ;
+Standard_EXPORT SALOMEDSImpl_AttributeOpened();
+Standard_EXPORT void SetOpened(const Standard_Integer value); 
+Standard_EXPORT int IsOpened() const { return myValue; }  
+Standard_EXPORT  const Standard_GUID& ID() const;
+Standard_EXPORT   void Restore(const Handle(TDF_Attribute)& with) ;
+Standard_EXPORT   Handle_TDF_Attribute NewEmpty() const;
+Standard_EXPORT   void Paste(const Handle(TDF_Attribute)& into,const Handle(TDF_RelocationTable)& RT) const;
+Standard_EXPORT ~SALOMEDSImpl_AttributeOpened() {}
+
+public:
+  DEFINE_STANDARD_RTTI( SALOMEDSImpl_AttributeOpened )
+};
+
+#endif
diff --git a/src/SALOMEDSImpl/SALOMEDSImpl_AttributePersistentRef.cxx b/src/SALOMEDSImpl/SALOMEDSImpl_AttributePersistentRef.cxx
new file mode 100644 (file)
index 0000000..2db2b40
--- /dev/null
@@ -0,0 +1,110 @@
+//  File   : SALOMEDSImpl_AttributePersistentRef.cxx
+//  Author : Sergey RUIN
+//  Module : SALOME
+
+
+#include "SALOMEDSImpl_AttributePersistentRef.hxx"
+#include <Standard_GUID.hxx>
+
+using namespace std;
+
+IMPLEMENT_STANDARD_HANDLE( SALOMEDSImpl_AttributePersistentRef, SALOMEDSImpl_GenericAttribute )
+IMPLEMENT_STANDARD_RTTIEXT( SALOMEDSImpl_AttributePersistentRef, SALOMEDSImpl_GenericAttribute )
+
+//=======================================================================
+//function : GetID
+//purpose  : 
+//=======================================================================
+
+const Standard_GUID& SALOMEDSImpl_AttributePersistentRef::GetID () 
+{
+  static Standard_GUID SALOMEDSImpl_AttributePersistentRefID ("92888E06-7074-11d5-A690-0800369C8A03");
+  return SALOMEDSImpl_AttributePersistentRefID;
+}
+
+
+
+//=======================================================================
+//function : Set
+//purpose  : 
+//=======================================================================
+
+Handle(SALOMEDSImpl_AttributePersistentRef) SALOMEDSImpl_AttributePersistentRef::Set (const TDF_Label& L,
+                                                                                     const TCollection_ExtendedString& S)
+{
+  Handle(SALOMEDSImpl_AttributePersistentRef) A;
+  if (!L.FindAttribute(SALOMEDSImpl_AttributePersistentRef::GetID(),A)) {
+    A = new  SALOMEDSImpl_AttributePersistentRef(); 
+    L.AddAttribute(A);
+  }
+  
+  A->SetValue (S); 
+  return A;
+}
+
+
+//=======================================================================
+//function : constructor
+//purpose  : 
+//=======================================================================
+SALOMEDSImpl_AttributePersistentRef::SALOMEDSImpl_AttributePersistentRef()
+:SALOMEDSImpl_GenericAttribute("AttributePersistentRef")
+{
+}
+
+//=======================================================================
+//function : ID
+//purpose  : 
+//=======================================================================
+
+const Standard_GUID& SALOMEDSImpl_AttributePersistentRef::ID () const { return GetID(); }
+
+
+//=======================================================================
+//function : SetValue
+//purpose  :
+//=======================================================================
+void SALOMEDSImpl_AttributePersistentRef::SetValue (const TCollection_ExtendedString& S)
+{
+  CheckLocked();
+
+  if(myString == S) return;
+
+  Backup();
+
+  myString = S;
+  
+  SetModifyFlag(); //SRN: Mark the study as being modified, so it could be saved 
+}
+
+//=======================================================================
+//function : NewEmpty
+//purpose  : 
+//=======================================================================
+
+Handle(TDF_Attribute) SALOMEDSImpl_AttributePersistentRef::NewEmpty () const
+{  
+  return new SALOMEDSImpl_AttributePersistentRef(); 
+}
+
+//=======================================================================
+//function : Restore
+//purpose  : 
+//=======================================================================
+
+void SALOMEDSImpl_AttributePersistentRef::Restore(const Handle(TDF_Attribute)& with) 
+{
+  myString = Handle(SALOMEDSImpl_AttributePersistentRef)::DownCast (with)->Value ();
+}
+
+//=======================================================================
+//function : Paste
+//purpose  : 
+//=======================================================================
+
+void SALOMEDSImpl_AttributePersistentRef::Paste (const Handle(TDF_Attribute)& into,
+                                                const Handle(TDF_RelocationTable)& RT) const
+{
+  Handle(SALOMEDSImpl_AttributePersistentRef)::DownCast (into)->SetValue(myString);
+}
+
diff --git a/src/SALOMEDSImpl/SALOMEDSImpl_AttributePersistentRef.hxx b/src/SALOMEDSImpl/SALOMEDSImpl_AttributePersistentRef.hxx
new file mode 100644 (file)
index 0000000..f660a28
--- /dev/null
@@ -0,0 +1,48 @@
+//  File   : SALOMEDSImpl_AttributePersistentRef.hxx
+//  Author : Sergey RUIN
+//  Module : SALOME
+
+#ifndef _SALOMEDSImpl_AttributePersistentRef_HeaderFile
+#define _SALOMEDSImpl_AttributePersistentRef_HeaderFile
+
+#include <Standard_DefineHandle.hxx>
+#include <TDF_Attribute.hxx>
+#include <TCollection_AsciiString.hxx>
+#include <TCollection_ExtendedString.hxx>
+#include <TDF_Label.hxx>       
+#include "SALOMEDSImpl_GenericAttribute.hxx"
+
+class Standard_GUID;
+class Handle(TDF_Attribute);
+class Handle(TDF_RelocationTable);
+
+
+DEFINE_STANDARD_HANDLE( SALOMEDSImpl_AttributePersistentRef, SALOMEDSImpl_GenericAttribute )
+
+class SALOMEDSImpl_AttributePersistentRef : public SALOMEDSImpl_GenericAttribute 
+{
+private:
+ TCollection_ExtendedString myString;
+
+public:
+
+Standard_EXPORT virtual TCollection_AsciiString Save() { return myString; }
+Standard_EXPORT virtual void Load(const TCollection_AsciiString& theValue) { myString = theValue; } 
+
+Standard_EXPORT static const Standard_GUID& GetID() ;
+Standard_EXPORT static  Handle_SALOMEDSImpl_AttributePersistentRef Set(const TDF_Label& label,
+                                                                      const TCollection_ExtendedString& string) ;
+Standard_EXPORT SALOMEDSImpl_AttributePersistentRef();
+Standard_EXPORT  const Standard_GUID& ID() const;
+Standard_EXPORT void SetValue(const TCollection_ExtendedString& value); 
+Standard_EXPORT TCollection_ExtendedString Value() const { return myString; }
+Standard_EXPORT   void Restore(const Handle(TDF_Attribute)& with) ;
+Standard_EXPORT   Handle_TDF_Attribute NewEmpty() const;
+Standard_EXPORT   void Paste(const Handle(TDF_Attribute)& into,const Handle(TDF_RelocationTable)& RT) const;
+Standard_EXPORT ~SALOMEDSImpl_AttributePersistentRef() {}
+
+public:
+  DEFINE_STANDARD_RTTI( SALOMEDSImpl_AttributePersistentRef )
+};
+
+#endif
diff --git a/src/SALOMEDSImpl/SALOMEDSImpl_AttributePixMap.cxx b/src/SALOMEDSImpl/SALOMEDSImpl_AttributePixMap.cxx
new file mode 100644 (file)
index 0000000..6b9b3a3
--- /dev/null
@@ -0,0 +1,111 @@
+//  File   : SALOMEDSImpl_AttributePixMap.cxx
+//  Author : Sergey RUIN
+//  Module : SALOME
+
+#include "SALOMEDSImpl_AttributePixMap.hxx"
+#include <TCollection_ExtendedString.hxx>
+#include <Standard_GUID.hxx>
+
+using namespace std;
+
+IMPLEMENT_STANDARD_HANDLE( SALOMEDSImpl_AttributePixMap, SALOMEDSImpl_GenericAttribute )
+IMPLEMENT_STANDARD_RTTIEXT( SALOMEDSImpl_AttributePixMap, SALOMEDSImpl_GenericAttribute )
+
+//=======================================================================
+//function : GetID
+//purpose  : 
+//=======================================================================
+
+const Standard_GUID& SALOMEDSImpl_AttributePixMap::GetID () 
+{
+  static Standard_GUID SALOMEDSImpl_AttributePixMapID ("12837187-8F52-11d6-A8A3-0001021E8C7F");
+  return SALOMEDSImpl_AttributePixMapID;
+}
+
+
+
+//=======================================================================
+//function : Set
+//purpose  : 
+//=======================================================================
+
+Handle(SALOMEDSImpl_AttributePixMap) SALOMEDSImpl_AttributePixMap::Set (const TDF_Label& L,
+                                                                       const TCollection_ExtendedString& S) 
+{
+  Handle(SALOMEDSImpl_AttributePixMap) A;
+  if (!L.FindAttribute(SALOMEDSImpl_AttributePixMap::GetID(),A)) {
+    A = new  SALOMEDSImpl_AttributePixMap(); 
+    L.AddAttribute(A);
+  }
+  
+  A->SetPixMap (S); 
+  return A;
+}
+
+
+//=======================================================================
+//function : constructor
+//purpose  : 
+//=======================================================================
+SALOMEDSImpl_AttributePixMap::SALOMEDSImpl_AttributePixMap()
+:SALOMEDSImpl_GenericAttribute("AttributePixMap")
+{
+  myString = "None";
+}
+
+//=======================================================================
+//function : SetPixMap
+//purpose  :
+//=======================================================================
+void SALOMEDSImpl_AttributePixMap::SetPixMap (const TCollection_ExtendedString& S)
+{
+  CheckLocked();
+
+  if(myString == S) return;
+
+  Backup();
+
+  myString = S;
+
+  SetModifyFlag(); //SRN: Mark the study as being modified, so it could be saved 
+}
+
+//=======================================================================
+//function : ID
+//purpose  : 
+//=======================================================================
+
+const Standard_GUID& SALOMEDSImpl_AttributePixMap::ID () const { return GetID(); }
+
+
+//=======================================================================
+//function : NewEmpty
+//purpose  : 
+//=======================================================================
+
+Handle(TDF_Attribute) SALOMEDSImpl_AttributePixMap::NewEmpty () const
+{  
+  return new SALOMEDSImpl_AttributePixMap(); 
+}
+
+//=======================================================================
+//function : Restore
+//purpose  : 
+//=======================================================================
+
+void SALOMEDSImpl_AttributePixMap::Restore(const Handle(TDF_Attribute)& with) 
+{
+  myString = Handle(SALOMEDSImpl_AttributePixMap)::DownCast (with)->GetPixMap ();
+}
+
+//=======================================================================
+//function : Paste
+//purpose  : 
+//=======================================================================
+
+void SALOMEDSImpl_AttributePixMap::Paste (const Handle(TDF_Attribute)& into,
+                          const Handle(TDF_RelocationTable)& RT) const
+{
+  Handle(SALOMEDSImpl_AttributePixMap)::DownCast (into)->SetPixMap (myString);
+}
+
diff --git a/src/SALOMEDSImpl/SALOMEDSImpl_AttributePixMap.hxx b/src/SALOMEDSImpl/SALOMEDSImpl_AttributePixMap.hxx
new file mode 100644 (file)
index 0000000..521c79f
--- /dev/null
@@ -0,0 +1,51 @@
+//  File   : SALOMEDSImpl_AttributePixMap.hxx
+//  Author : Sergey RUIN
+//  Module : SALOME
+
+#ifndef _SALOMEDSImpl_AttributePixMap_HeaderFile
+#define _SALOMEDSImpl_AttributePixMap_HeaderFile
+
+#include <Standard_DefineHandle.hxx>
+#include <TDF_Attribute.hxx>
+#include <TCollection_AsciiString.hxx>    
+#include <TCollection_ExtendedString.hxx> 
+#include <TDF_Label.hxx>       
+#include "SALOMEDSImpl_GenericAttribute.hxx"
+
+class Standard_GUID;
+class Handle(TDF_Attribute);
+class Handle(TDF_RelocationTable);
+
+
+DEFINE_STANDARD_HANDLE( SALOMEDSImpl_AttributePixMap, SALOMEDSImpl_GenericAttribute )
+
+
+
+class SALOMEDSImpl_AttributePixMap : public SALOMEDSImpl_GenericAttribute 
+{
+private:
+
+ TCollection_ExtendedString myString;
+public:
+
+Standard_EXPORT virtual TCollection_AsciiString Save() { return myString; }
+Standard_EXPORT virtual void Load(const TCollection_AsciiString& theValue) { myString = theValue; }  
+
+Standard_EXPORT static const Standard_GUID& GetID() ;
+Standard_EXPORT static  Handle_SALOMEDSImpl_AttributePixMap Set(const TDF_Label& label,
+                                                               const TCollection_ExtendedString& string) ;
+Standard_EXPORT SALOMEDSImpl_AttributePixMap();
+Standard_EXPORT  const Standard_GUID& ID() const;
+Standard_EXPORT void SetPixMap(const TCollection_ExtendedString& value); 
+Standard_EXPORT TCollection_ExtendedString GetPixMap() const { return myString; }
+Standard_EXPORT Standard_Boolean HasPixMap() const { return (myString != "None"); } 
+Standard_EXPORT   void Restore(const Handle(TDF_Attribute)& with) ;
+Standard_EXPORT   Handle_TDF_Attribute NewEmpty() const;
+Standard_EXPORT   void Paste(const Handle(TDF_Attribute)& into,const Handle(TDF_RelocationTable)& RT) const;
+Standard_EXPORT ~SALOMEDSImpl_AttributePixMap() {}
+
+public:
+  DEFINE_STANDARD_RTTI( SALOMEDSImpl_AttributePixMap )
+};
+
+#endif
diff --git a/src/SALOMEDSImpl/SALOMEDSImpl_AttributePythonObject.cxx b/src/SALOMEDSImpl/SALOMEDSImpl_AttributePythonObject.cxx
new file mode 100644 (file)
index 0000000..a6f9db1
--- /dev/null
@@ -0,0 +1,101 @@
+//  File   : SALOMEDSImpl_AttributePythonObject.cxx
+//  Author : Michael Ponikarov
+//  Module : SALOME
+
+#include "SALOMEDSImpl_AttributePythonObject.hxx"
+#include <Standard_GUID.hxx>
+#include <string>
+
+using namespace std;
+
+IMPLEMENT_STANDARD_HANDLE( SALOMEDSImpl_AttributePythonObject, SALOMEDSImpl_GenericAttribute )
+IMPLEMENT_STANDARD_RTTIEXT( SALOMEDSImpl_AttributePythonObject, SALOMEDSImpl_GenericAttribute )
+
+const Standard_GUID& SALOMEDSImpl_AttributePythonObject::GetID() 
+{
+  static Standard_GUID SALOMEDSImpl_AttributePythonObjectID ("128371A3-8F52-11d6-A8A3-0001021E8C7F");
+  return SALOMEDSImpl_AttributePythonObjectID;
+}
+
+Handle(SALOMEDSImpl_AttributePythonObject) SALOMEDSImpl_AttributePythonObject::Set(const TDF_Label& label) 
+{
+  Handle(SALOMEDSImpl_AttributePythonObject) anAttr;
+  if (!label.FindAttribute(SALOMEDSImpl_AttributePythonObject::GetID(),anAttr)) {
+    anAttr = new SALOMEDSImpl_AttributePythonObject();
+    label.AddAttribute(anAttr);
+  }
+  return anAttr;
+}
+
+SALOMEDSImpl_AttributePythonObject::SALOMEDSImpl_AttributePythonObject()
+:SALOMEDSImpl_GenericAttribute("AttributePythonObject")
+{
+}
+
+void SALOMEDSImpl_AttributePythonObject::SetObject(const TCollection_AsciiString& theSequence,
+                                                  const bool theScript) 
+{
+  CheckLocked();    
+  Backup();
+  mySequence = theSequence;
+  myIsScript = theScript;
+
+  SetModifyFlag(); //SRN: Mark the study as being modified, so it could be saved 
+}
+
+TCollection_AsciiString SALOMEDSImpl_AttributePythonObject::GetObject() const
+{
+  return mySequence;
+}
+
+bool SALOMEDSImpl_AttributePythonObject::IsScript() const
+{
+  return myIsScript;
+}
+
+int SALOMEDSImpl_AttributePythonObject::GetLength() const
+{
+  return mySequence.Length();
+}
+
+const Standard_GUID& SALOMEDSImpl_AttributePythonObject::ID() const
+{
+  return GetID();
+}
+
+void SALOMEDSImpl_AttributePythonObject::Restore(const Handle(TDF_Attribute)& with) 
+{
+  Handle(SALOMEDSImpl_AttributePythonObject) anObj = Handle(SALOMEDSImpl_AttributePythonObject)::DownCast(with);
+  SetObject(anObj->GetObject(),anObj->IsScript());
+}
+
+Handle(TDF_Attribute) SALOMEDSImpl_AttributePythonObject::NewEmpty() const
+{
+  return new SALOMEDSImpl_AttributePythonObject();
+}
+
+void SALOMEDSImpl_AttributePythonObject::Paste(const Handle(TDF_Attribute)& into,
+                                              const Handle(TDF_RelocationTable)&) const
+{
+  Handle(SALOMEDSImpl_AttributePythonObject) anObj = Handle(SALOMEDSImpl_AttributePythonObject)::DownCast(into);
+  anObj->SetObject(GetObject(),IsScript());
+}
+
+
+TCollection_AsciiString SALOMEDSImpl_AttributePythonObject::Save() 
+{
+  char* aString = (char*)GetObject().ToCString();
+  char* aResult = new char[strlen(aString) + 2];
+  aResult[0] = IsScript()?'s':'n';
+  strcpy(aResult+1, aString);
+  TCollection_AsciiString ret(aResult);
+  
+  delete aResult;
+  return ret;
+}
+         
+void SALOMEDSImpl_AttributePythonObject::Load(const TCollection_AsciiString& value) 
+{
+  char* aString = value.ToCString();
+  SetObject(aString + 1, aString[0]=='s');
+}   
diff --git a/src/SALOMEDSImpl/SALOMEDSImpl_AttributePythonObject.hxx b/src/SALOMEDSImpl/SALOMEDSImpl_AttributePythonObject.hxx
new file mode 100644 (file)
index 0000000..00d4927
--- /dev/null
@@ -0,0 +1,56 @@
+//  File   : SALOMEDSImpl_AttributePythonObject.hxx
+//  Author : Michael Ponikarov
+//  Module : SALOME
+
+#ifndef _SALOMEDSImpl_AttributePythonObject_HeaderFile
+#define _SALOMEDSImpl_AttributePythonObject_HeaderFile
+
+#include <Standard_DefineHandle.hxx>
+#include <Standard.hxx>
+#include <TDF_Attribute.hxx>
+#include <TDF_Label.hxx>       
+#include <TCollection_AsciiString.hxx>
+#include "SALOMEDSImpl_GenericAttribute.hxx"
+
+class Standard_GUID;
+class Handle(TDF_Attribute);
+class Handle(TDF_RelocationTable);
+
+
+DEFINE_STANDARD_HANDLE( SALOMEDSImpl_AttributePythonObject, SALOMEDSImpl_GenericAttribute )
+
+#ifdef GetObject
+#undef GetObject
+#endif
+
+class SALOMEDSImpl_AttributePythonObject : public SALOMEDSImpl_GenericAttribute 
+{
+
+public:
+Standard_EXPORT virtual TCollection_AsciiString Save();
+Standard_EXPORT virtual void Load(const TCollection_AsciiString&); 
+
+Standard_EXPORT static const Standard_GUID& GetID() ;
+Standard_EXPORT static  Handle_SALOMEDSImpl_AttributePythonObject Set(const TDF_Label& label) ;
+Standard_EXPORT SALOMEDSImpl_AttributePythonObject();
+Standard_EXPORT   void SetObject(const TCollection_AsciiString& theSequence, const bool theScript) ;
+Standard_EXPORT   TCollection_AsciiString GetObject() const;
+Standard_EXPORT   bool IsScript() const;
+Standard_EXPORT   int GetLength() const;
+Standard_EXPORT   const Standard_GUID& ID() const;
+Standard_EXPORT   void Restore(const Handle(TDF_Attribute)& with) ;
+Standard_EXPORT   Handle_TDF_Attribute NewEmpty() const;
+Standard_EXPORT   void Paste(const Handle(TDF_Attribute)& into,const Handle(TDF_RelocationTable)& RT) const;
+Standard_EXPORT ~SALOMEDSImpl_AttributePythonObject() {}
+
+private:
+
+TCollection_AsciiString mySequence;
+bool   myIsScript;
+
+public:
+  DEFINE_STANDARD_RTTI( SALOMEDSImpl_AttributePythonObject )
+
+};
+
+#endif
diff --git a/src/SALOMEDSImpl/SALOMEDSImpl_AttributeReal.cxx b/src/SALOMEDSImpl/SALOMEDSImpl_AttributeReal.cxx
new file mode 100644 (file)
index 0000000..45ddd22
--- /dev/null
@@ -0,0 +1,85 @@
+//  File   : SALOMEDSImpl_AttributeReal.cxx
+//  Author : Sergey RUIN
+//  Module : SALOME
+
+#include "SALOMEDSImpl_AttributeReal.hxx"
+
+using namespace std;
+
+IMPLEMENT_STANDARD_HANDLE( SALOMEDSImpl_AttributeReal, SALOMEDSImpl_GenericAttribute )
+IMPLEMENT_STANDARD_RTTIEXT( SALOMEDSImpl_AttributeReal, SALOMEDSImpl_GenericAttribute )
+
+//=======================================================================
+//function : GetID
+//purpose  :
+//=======================================================================
+const Standard_GUID& SALOMEDSImpl_AttributeReal::GetID ()
+{
+  static Standard_GUID realID ("1D1992F0-56F4-46b4-8065-CDEA68061CAB");
+  return realID;
+}   
+
+Handle(SALOMEDSImpl_AttributeReal) SALOMEDSImpl_AttributeReal::Set (const TDF_Label& L, const Standard_Real Val) 
+{
+  Handle(SALOMEDSImpl_AttributeReal) A;
+  if (!L.FindAttribute(SALOMEDSImpl_AttributeReal::GetID(), A)) {
+    A = new  SALOMEDSImpl_AttributeReal(); 
+    L.AddAttribute(A);
+  }
+
+  A->SetValue(Val); 
+  return A;
+}
+
+//=======================================================================
+//function : SetValue
+//purpose  :
+//=======================================================================
+void SALOMEDSImpl_AttributeReal::SetValue(const Standard_Real v)
+{
+  CheckLocked();
+
+  if( myValue == v) return;
+
+  Backup();
+  myValue = v;  
+
+  SetModifyFlag(); //SRN: Mark the study as being modified, so it could be saved 
+}
+
+//=======================================================================
+//function : ID
+//purpose  :
+//=======================================================================
+const Standard_GUID& SALOMEDSImpl_AttributeReal::ID () const 
+{ 
+  return GetID(); 
+} 
+
+//=======================================================================
+//function : NewEmpty
+//purpose  : 
+//=======================================================================
+Handle(TDF_Attribute) SALOMEDSImpl_AttributeReal::NewEmpty () const
+{  
+  return new SALOMEDSImpl_AttributeReal(); 
+}
+
+//=======================================================================
+//function : Restore
+//purpose  : 
+//=======================================================================
+void SALOMEDSImpl_AttributeReal::Restore(const Handle(TDF_Attribute)& with) 
+{
+  myValue = Handle(SALOMEDSImpl_AttributeReal)::DownCast (with)->Value ();
+}
+
+//=======================================================================
+//function : Paste
+//purpose  : 
+//=======================================================================
+void SALOMEDSImpl_AttributeReal::Paste (const Handle(TDF_Attribute)& into,
+                                       const Handle(TDF_RelocationTable)& RT) const
+{
+  Handle(SALOMEDSImpl_AttributeReal)::DownCast (into)->SetValue(myValue);
+}
diff --git a/src/SALOMEDSImpl/SALOMEDSImpl_AttributeReal.hxx b/src/SALOMEDSImpl/SALOMEDSImpl_AttributeReal.hxx
new file mode 100644 (file)
index 0000000..9f1c66c
--- /dev/null
@@ -0,0 +1,48 @@
+//  File   : SALOMEDSImpl_AttributeReal.hxx
+//  Author : Sergey RUIN
+//  Module : SALOME
+
+#ifndef _SALOMEDSImpl_AttributeReal_HeaderFile
+#define _SALOMEDSImpl_AttributeReal_HeaderFile
+
+#include <Standard_DefineHandle.hxx>
+#include <TDF_Attribute.hxx>
+#include <TCollection_AsciiString.hxx>
+#include <TDF_Label.hxx>
+#include "SALOMEDSImpl_GenericAttribute.hxx"
+
+class Standard_GUID;
+class Handle(TDF_Attribute);
+class Handle(TDF_RelocationTable);
+
+
+DEFINE_STANDARD_HANDLE( SALOMEDSImpl_AttributeReal, SALOMEDSImpl_GenericAttribute )
+
+
+class SALOMEDSImpl_AttributeReal : public SALOMEDSImpl_GenericAttribute 
+{
+private:
+  Standard_Real myValue;
+public:
+
+Standard_EXPORT static const Standard_GUID& GetID() ;
+
+Standard_EXPORT  SALOMEDSImpl_AttributeReal():SALOMEDSImpl_GenericAttribute("AttributeReal") {}
+Standard_EXPORT  static Handle(SALOMEDSImpl_AttributeReal) Set (const TDF_Label& L, const Standard_Real Val);
+Standard_EXPORT  void SetValue(const Standard_Real theVal);
+Standard_EXPORT  Standard_Real Value() const { return myValue; }  
+Standard_EXPORT  virtual TCollection_AsciiString Save() { return TCollection_AsciiString(myValue); }
+Standard_EXPORT  virtual void Load(const TCollection_AsciiString& theValue) { myValue = theValue.RealValue(); } 
+
+Standard_EXPORT  const Standard_GUID& ID() const;
+Standard_EXPORT  void Restore(const Handle(TDF_Attribute)& with) ;
+Standard_EXPORT  Handle_TDF_Attribute NewEmpty() const;
+Standard_EXPORT  void Paste(const Handle(TDF_Attribute)& into,const Handle(TDF_RelocationTable)& RT) const;
+Standard_EXPORT ~SALOMEDSImpl_AttributeReal() {}
+
+public:
+  DEFINE_STANDARD_RTTI( SALOMEDSImpl_AttributeReal )
+
+};
+
+#endif
diff --git a/src/SALOMEDSImpl/SALOMEDSImpl_AttributeReference.cxx b/src/SALOMEDSImpl/SALOMEDSImpl_AttributeReference.cxx
new file mode 100644 (file)
index 0000000..019835c
--- /dev/null
@@ -0,0 +1,108 @@
+//  File   : SALOMEDSImpl_AttributeReference.cxx
+//  Author : Sergey RUIN
+//  Module : SALOME
+
+#include "SALOMEDSImpl_AttributeReference.hxx"
+#include <TDF_Tool.hxx>
+#include <TDF_Data.hxx>
+#include <TDF_RelocationTable.hxx>
+
+using namespace std;
+
+IMPLEMENT_STANDARD_HANDLE( SALOMEDSImpl_AttributeReference, SALOMEDSImpl_GenericAttribute )
+IMPLEMENT_STANDARD_RTTIEXT( SALOMEDSImpl_AttributeReference, SALOMEDSImpl_GenericAttribute )
+
+
+//=======================================================================
+//function : GetID
+//purpose  :
+//=======================================================================
+const Standard_GUID& SALOMEDSImpl_AttributeReference::GetID ()
+{
+  static Standard_GUID refID ("D913E0B3-0A9F-4ea6-9480-18A9B72D9D86");
+  return refID;
+} 
+
+Handle(SALOMEDSImpl_AttributeReference) SALOMEDSImpl_AttributeReference::Set(const TDF_Label& theLabel, 
+                                                                            const TDF_Label& theRefLabel)
+{
+  Handle(SALOMEDSImpl_AttributeReference) A;
+  if (!theLabel.FindAttribute(SALOMEDSImpl_AttributeReference::GetID(), A)) {
+    A = new  SALOMEDSImpl_AttributeReference(); 
+    theLabel.AddAttribute(A);
+  }
+
+  A->Set(theRefLabel);  
+  return A;  
+}
+
+//=======================================================================
+//function : Set
+//purpose  :
+//=======================================================================
+void SALOMEDSImpl_AttributeReference::Set(const TDF_Label& Origin)
+{
+  CheckLocked();
+
+  if(myLabel == Origin) return;
+
+  Backup();
+  myLabel = Origin;
+
+  SetModifyFlag(); //SRN: Mark the study as being modified, so it could be saved 
+}  
+
+//=======================================================================
+//function : ID
+//purpose  :
+//=======================================================================
+const Standard_GUID& SALOMEDSImpl_AttributeReference::ID () const { return GetID(); } 
+
+
+TCollection_AsciiString SALOMEDSImpl_AttributeReference::Save() 
+{
+  TCollection_AsciiString anEntry;
+  TDF_Tool::Entry(myLabel, anEntry);
+  return anEntry;
+}
+
+void SALOMEDSImpl_AttributeReference::Load(const TCollection_AsciiString& value) 
+{
+  TDF_Label aLabel;
+  TDF_Tool::Label(Label().Data(), value, aLabel);
+  myLabel = aLabel;
+}
+
+//=======================================================================
+//function : NewEmpty
+//purpose  : 
+//=======================================================================
+Handle(TDF_Attribute) SALOMEDSImpl_AttributeReference::NewEmpty () const
+{  
+  return new SALOMEDSImpl_AttributeReference(); 
+}
+
+//=======================================================================
+//function : Restore
+//purpose  :
+//=======================================================================
+
+void SALOMEDSImpl_AttributeReference::Restore(const Handle(TDF_Attribute)& With)
+{
+  myLabel = Handle(SALOMEDSImpl_AttributeReference)::DownCast (With)->Get ();
+}
+
+//=======================================================================
+//function : Paste
+//purpose  :
+//=======================================================================
+
+void SALOMEDSImpl_AttributeReference::Paste (const Handle(TDF_Attribute)& Into,
+                                            const Handle(TDF_RelocationTable)& RT) const
+{
+  TDF_Label tLab;
+  if (!myLabel.IsNull()) {
+    if (!RT->HasRelocation(myLabel,tLab)) tLab = myLabel;
+  }
+  Handle(SALOMEDSImpl_AttributeReference)::DownCast(Into)->Set(tLab);
+} 
diff --git a/src/SALOMEDSImpl/SALOMEDSImpl_AttributeReference.hxx b/src/SALOMEDSImpl/SALOMEDSImpl_AttributeReference.hxx
new file mode 100644 (file)
index 0000000..6468c71
--- /dev/null
@@ -0,0 +1,50 @@
+//  File   : SALOMEDSImpl_AttributeIOR.hxx
+//  Author : Sergey RUIN
+//  Module : SALOME
+
+#ifndef _SALOMEDSImpl_AttributeReference_HeaderFile
+#define _SALOMEDSImpl_AttributeReference_HeaderFile
+
+#include <Standard_DefineHandle.hxx>
+#include <TDF_Attribute.hxx>
+#include <TDF_Label.hxx>       
+#include <TCollection_AsciiString.hxx> 
+#include "SALOMEDSImpl_GenericAttribute.hxx"
+
+class Standard_GUID;
+class Handle(TDF_Attribute);
+class Handle(TDF_RelocationTable);
+
+
+DEFINE_STANDARD_HANDLE( SALOMEDSImpl_AttributeReference, SALOMEDSImpl_GenericAttribute )
+
+
+
+class SALOMEDSImpl_AttributeReference : public SALOMEDSImpl_GenericAttribute 
+{
+private:
+ TDF_Label myLabel;
+
+public:
+
+Standard_EXPORT static const Standard_GUID& GetID() ;
+
+Standard_EXPORT SALOMEDSImpl_AttributeReference():SALOMEDSImpl_GenericAttribute("AttributeReference") {}
+Standard_EXPORT static Handle(SALOMEDSImpl_AttributeReference) Set(const TDF_Label& theLabel, const TDF_Label& theRefLabel);
+Standard_EXPORT void Set(const TDF_Label& theLabel);
+Standard_EXPORT TDF_Label Get() const { return myLabel; }
+Standard_EXPORT virtual TCollection_AsciiString Save();
+Standard_EXPORT virtual void Load(const TCollection_AsciiString& theValue);
+
+Standard_EXPORT  const Standard_GUID& ID() const;
+Standard_EXPORT  void Restore(const Handle(TDF_Attribute)& with) ;
+Standard_EXPORT  Handle_TDF_Attribute NewEmpty() const;
+Standard_EXPORT  void Paste(const Handle(TDF_Attribute)& into,const Handle(TDF_RelocationTable)& RT) const;
+
+Standard_EXPORT ~SALOMEDSImpl_AttributeReference() {}
+
+public:
+  DEFINE_STANDARD_RTTI( SALOMEDSImpl_AttributeReference )
+};
+
+#endif
diff --git a/src/SALOMEDSImpl/SALOMEDSImpl_AttributeSelectable.cxx b/src/SALOMEDSImpl/SALOMEDSImpl_AttributeSelectable.cxx
new file mode 100644 (file)
index 0000000..db93d3c
--- /dev/null
@@ -0,0 +1,104 @@
+//  File   : SALOMEDSImpl_AttributeSelectable.cxx
+//  Author : Sergey RUIN
+//  Module : SALOME
+
+#include "SALOMEDSImpl_AttributeSelectable.hxx"
+#include <Standard_GUID.hxx>
+
+using namespace std;
+
+IMPLEMENT_STANDARD_HANDLE( SALOMEDSImpl_AttributeSelectable, SALOMEDSImpl_GenericAttribute )
+IMPLEMENT_STANDARD_RTTIEXT( SALOMEDSImpl_AttributeSelectable, SALOMEDSImpl_GenericAttribute )
+
+//=======================================================================
+//function : GetID
+//purpose  : 
+//=======================================================================
+
+const Standard_GUID& SALOMEDSImpl_AttributeSelectable::GetID () 
+{
+  static Standard_GUID SALOMEDSImpl_AttributeSelectableID ("12837188-8F52-11d6-A8A3-0001021E8C7F");
+  return SALOMEDSImpl_AttributeSelectableID;
+}
+
+
+
+//=======================================================================
+//function : Set
+//purpose  : 
+//=======================================================================
+
+Handle(SALOMEDSImpl_AttributeSelectable) SALOMEDSImpl_AttributeSelectable::Set (const TDF_Label& L,
+                                                                               const Standard_Integer value) 
+{
+  Handle(SALOMEDSImpl_AttributeSelectable) A;
+  if (!L.FindAttribute(SALOMEDSImpl_AttributeSelectable::GetID(),A)) {
+    A = new  SALOMEDSImpl_AttributeSelectable(); 
+    L.AddAttribute(A);
+  }
+  
+  A->SetSelectable (value); 
+  return A;
+}
+
+
+//=======================================================================
+//function : constructor
+//purpose  : 
+//=======================================================================
+SALOMEDSImpl_AttributeSelectable::SALOMEDSImpl_AttributeSelectable()
+:SALOMEDSImpl_GenericAttribute("AttributeSelectable")
+{
+  myValue = 0;
+}
+
+//=======================================================================
+//function : SetSelectable
+//purpose  :
+//=======================================================================
+void SALOMEDSImpl_AttributeSelectable::SetSelectable(const Standard_Integer theValue)
+{
+  Backup();
+
+  (theValue!=0)?myValue=1:myValue=0;
+}
+
+//=======================================================================
+//function : ID
+//purpose  : 
+//=======================================================================
+
+const Standard_GUID& SALOMEDSImpl_AttributeSelectable::ID () const { return GetID(); }
+
+
+//=======================================================================
+//function : NewEmpty
+//purpose  : 
+//=======================================================================
+
+Handle(TDF_Attribute) SALOMEDSImpl_AttributeSelectable::NewEmpty () const
+{  
+  return new SALOMEDSImpl_AttributeSelectable(); 
+}
+
+//=======================================================================
+//function : Restore
+//purpose  : 
+//=======================================================================
+
+void SALOMEDSImpl_AttributeSelectable::Restore(const Handle(TDF_Attribute)& with) 
+{
+  myValue = Handle(SALOMEDSImpl_AttributeSelectable)::DownCast (with)->IsSelectable ();
+}
+
+//=======================================================================
+//function : Paste
+//purpose  : 
+//=======================================================================
+
+void SALOMEDSImpl_AttributeSelectable::Paste (const Handle(TDF_Attribute)& into,
+                                              const Handle(TDF_RelocationTable)& RT) const
+{
+  Handle(SALOMEDSImpl_AttributeSelectable)::DownCast (into)->SetSelectable (myValue);
+}
+
diff --git a/src/SALOMEDSImpl/SALOMEDSImpl_AttributeSelectable.hxx b/src/SALOMEDSImpl/SALOMEDSImpl_AttributeSelectable.hxx
new file mode 100644 (file)
index 0000000..5f6ee4f
--- /dev/null
@@ -0,0 +1,49 @@
+//  File   : SALOMEDSImpl_AttributeSelectable.hxx
+//  Author : Sergey RUIN
+//  Module : SALOME
+
+#ifndef _SALOMEDSImpl_AttributeSelectable_HeaderFile
+#define _SALOMEDSImpl_AttributeSelectable_HeaderFile
+
+#include <Standard_DefineHandle.hxx>
+#include <TDF_Attribute.hxx>
+#include <TDF_Label.hxx>       
+#include <TCollection_AsciiString.hxx>
+#include "SALOMEDSImpl_GenericAttribute.hxx"
+
+class Standard_GUID;
+class Handle(TDF_Attribute);
+class Handle(TDF_RelocationTable);
+
+
+DEFINE_STANDARD_HANDLE( SALOMEDSImpl_AttributeSelectable, SALOMEDSImpl_GenericAttribute )
+
+
+
+class SALOMEDSImpl_AttributeSelectable : public SALOMEDSImpl_GenericAttribute 
+{
+private:
+Standard_Integer myValue;
+
+public:
+
+Standard_EXPORT virtual TCollection_AsciiString Save() { return (myValue == 0)?(char*)"0":(char*)"1"; }
+Standard_EXPORT virtual void Load(const TCollection_AsciiString& theValue) { (theValue == "0")?myValue=0:myValue=1; }  
+
+Standard_EXPORT static const Standard_GUID& GetID() ;
+Standard_EXPORT static  Handle_SALOMEDSImpl_AttributeSelectable Set(const TDF_Label& label,const Standard_Integer value) ;
+Standard_EXPORT SALOMEDSImpl_AttributeSelectable();
+Standard_EXPORT void SetSelectable(const Standard_Integer value);
+Standard_EXPORT Standard_Integer IsSelectable() const { return myValue; } 
+Standard_EXPORT  const Standard_GUID& ID() const;
+Standard_EXPORT   void Restore(const Handle(TDF_Attribute)& with) ;
+Standard_EXPORT   Handle_TDF_Attribute NewEmpty() const;
+Standard_EXPORT   void Paste(const Handle(TDF_Attribute)& into,const Handle(TDF_RelocationTable)& RT) const;
+Standard_EXPORT ~SALOMEDSImpl_AttributeSelectable() {}
+
+public:
+  DEFINE_STANDARD_RTTI( SALOMEDSImpl_AttributeDrawable )
+
+};
+
+#endif
diff --git a/src/SALOMEDSImpl/SALOMEDSImpl_AttributeSequenceOfInteger.cxx b/src/SALOMEDSImpl/SALOMEDSImpl_AttributeSequenceOfInteger.cxx
new file mode 100644 (file)
index 0000000..ca16677
--- /dev/null
@@ -0,0 +1,179 @@
+//  File   : SALOMEDSImpl_AttributeSequenceOfInteger.cxx
+//  Author : Sergey RUIN
+//  Module : SALOME
+
+#include "SALOMEDSImpl_AttributeSequenceOfInteger.hxx"
+#include <Standard_GUID.hxx>
+
+using namespace std;
+
+IMPLEMENT_STANDARD_HANDLE( SALOMEDSImpl_AttributeSequenceOfInteger, SALOMEDSImpl_GenericAttribute )
+IMPLEMENT_STANDARD_RTTIEXT( SALOMEDSImpl_AttributeSequenceOfInteger, SALOMEDSImpl_GenericAttribute )
+
+
+//=======================================================================
+//function : GetID
+//purpose  : 
+//=======================================================================
+
+const Standard_GUID& SALOMEDSImpl_AttributeSequenceOfInteger::GetID () 
+{
+  static Standard_GUID SALOMEDSImpl_AttributeSequenceOfIntegerID ("12837182-8F52-11d6-A8A3-0001021E8C7F");
+  return SALOMEDSImpl_AttributeSequenceOfIntegerID;
+}
+
+
+
+//=======================================================================
+//function : Set
+//purpose  : 
+//=======================================================================
+
+Handle(SALOMEDSImpl_AttributeSequenceOfInteger) SALOMEDSImpl_AttributeSequenceOfInteger::Set (const TDF_Label& L) 
+{
+  Handle(SALOMEDSImpl_AttributeSequenceOfInteger) A;
+  if (!L.FindAttribute(SALOMEDSImpl_AttributeSequenceOfInteger::GetID(),A)) {
+    A = new  SALOMEDSImpl_AttributeSequenceOfInteger(); 
+    L.AddAttribute(A);
+  }
+  return A;
+}
+
+
+//=======================================================================
+//function : constructor
+//purpose  : 
+//=======================================================================
+SALOMEDSImpl_AttributeSequenceOfInteger::SALOMEDSImpl_AttributeSequenceOfInteger()
+:SALOMEDSImpl_GenericAttribute("AttributeSequenceOfInteger")
+{ 
+  myValue = new TColStd_HSequenceOfInteger();
+}
+
+//=======================================================================
+//function : ID
+//purpose  : 
+//=======================================================================
+
+const Standard_GUID& SALOMEDSImpl_AttributeSequenceOfInteger::ID () const { return GetID(); }
+
+
+//=======================================================================
+//function : NewEmpty
+//purpose  : 
+//=======================================================================
+
+Handle(TDF_Attribute) SALOMEDSImpl_AttributeSequenceOfInteger::NewEmpty () const
+{  
+  return new SALOMEDSImpl_AttributeSequenceOfInteger(); 
+}
+
+//=======================================================================
+//function : Restore
+//purpose  : 
+//=======================================================================
+
+void SALOMEDSImpl_AttributeSequenceOfInteger::Restore(const Handle(TDF_Attribute)& with) 
+{
+  Standard_Integer i;
+  Handle(SALOMEDSImpl_AttributeSequenceOfInteger) anSeq = Handle(SALOMEDSImpl_AttributeSequenceOfInteger)::DownCast(with);
+  if(!anSeq->myValue.IsNull()) {
+    myValue = new TColStd_HSequenceOfInteger();
+    Standard_Integer Len = anSeq->Length();
+    for(i = 1; i<=Len; i++) Add(anSeq->Value(i)); 
+  }
+  else
+    myValue.Nullify();
+  return;
+}
+
+//=======================================================================
+//function : Paste
+//purpose  : 
+//=======================================================================
+
+void SALOMEDSImpl_AttributeSequenceOfInteger::Paste (const Handle(TDF_Attribute)& into,
+                                    const Handle(TDF_RelocationTable)& ) const
+{
+  if(!myValue.IsNull()) {
+    Handle(SALOMEDSImpl_AttributeSequenceOfInteger)::DownCast (into)->Assign(myValue);
+  }
+}
+
+void SALOMEDSImpl_AttributeSequenceOfInteger::Assign(const Handle(TColStd_HSequenceOfInteger)& other) 
+{
+  CheckLocked();
+  Backup();
+  if (myValue.IsNull()) myValue = new TColStd_HSequenceOfInteger;
+  myValue->ChangeSequence() = other->Sequence();
+
+  SetModifyFlag(); //SRN: Mark the study as being modified, so it could be saved 
+}
+
+void SALOMEDSImpl_AttributeSequenceOfInteger::ChangeValue(const Standard_Integer Index,const Standard_Integer Value) 
+{
+  CheckLocked();  
+  Backup();
+  myValue->SetValue(Index, Value);
+  
+  SetModifyFlag(); //SRN: Mark the study as being modified, so it could be saved 
+}
+
+void SALOMEDSImpl_AttributeSequenceOfInteger::Add(const Standard_Integer Value) 
+{
+  CheckLocked();  
+  Backup();
+  myValue->Append(Value);
+  
+  SetModifyFlag(); //SRN: Mark the study as being modified, so it could be saved 
+}
+
+void SALOMEDSImpl_AttributeSequenceOfInteger::Remove(const Standard_Integer Index) 
+{
+  CheckLocked();  
+  Backup();
+  myValue->Remove(Index);
+  
+  SetModifyFlag(); //SRN: Mark the study as being modified, so it could be saved 
+}
+
+Standard_Integer SALOMEDSImpl_AttributeSequenceOfInteger::Length() 
+{
+  return myValue->Length();
+}
+Standard_Integer SALOMEDSImpl_AttributeSequenceOfInteger::Value(const Standard_Integer Index) 
+{
+  return myValue->Value(Index);
+}
+
+
+
+TCollection_AsciiString SALOMEDSImpl_AttributeSequenceOfInteger::Save() 
+{
+  Standard_Integer aLength = Length();
+  char* aResult = new char[aLength * 25];
+  aResult[0] = 0;
+  Standard_Integer aPosition = 0;
+  for (int i = 1; i <= aLength; i++) {
+    sprintf(aResult + aPosition , "%d ", Value(i));
+    aPosition += strlen(aResult + aPosition);
+  }
+  TCollection_AsciiString ret(aResult);
+  delete aResult;
+  
+  return ret;
+}
+                       
+void SALOMEDSImpl_AttributeSequenceOfInteger::Load(const TCollection_AsciiString& value) 
+{
+  Handle(TColStd_HSequenceOfInteger) CasCadeSeq = new TColStd_HSequenceOfInteger;
+                         
+  char* aCopy = value.ToCString();
+  char* adr = strtok(aCopy, " ");
+  while (adr) {
+    int l =  atol(adr);
+    CasCadeSeq->Append(l);
+    adr = strtok(NULL, " ");
+  }
+  Assign(CasCadeSeq);
+}
diff --git a/src/SALOMEDSImpl/SALOMEDSImpl_AttributeSequenceOfInteger.hxx b/src/SALOMEDSImpl/SALOMEDSImpl_AttributeSequenceOfInteger.hxx
new file mode 100644 (file)
index 0000000..a24aa56
--- /dev/null
@@ -0,0 +1,54 @@
+//  File   : SALOMEDSImpl_AttributeSequenceOfInteger.hxx
+//  Author : Sergey RUIN
+//  Module : SALOME
+
+#ifndef _SALOMEDSImpl_AttributeSequenceOfInteger_HeaderFile
+#define _SALOMEDSImpl_AttributeSequenceOfInteger_HeaderFile
+
+#include <Standard_DefineHandle.hxx>
+#include <TDF_Attribute.hxx>
+#include <TColStd_HSequenceOfInteger.hxx>
+#include <TDF_Label.hxx>       
+#include <TCollection_AsciiString.hxx>
+#include "SALOMEDSImpl_GenericAttribute.hxx"
+
+class Standard_GUID;
+class Handle(TDF_Attribute);
+class Handle(TDF_RelocationTable);
+
+
+DEFINE_STANDARD_HANDLE( SALOMEDSImpl_AttributeSequenceOfInteger, SALOMEDSImpl_GenericAttribute )
+
+class SALOMEDSImpl_AttributeSequenceOfInteger : public SALOMEDSImpl_GenericAttribute 
+{
+
+public:
+
+Standard_EXPORT virtual TCollection_AsciiString Save();
+Standard_EXPORT virtual void Load(const TCollection_AsciiString&);
+Standard_EXPORT static const Standard_GUID& GetID() ;
+Standard_EXPORT static  Handle_SALOMEDSImpl_AttributeSequenceOfInteger Set(const TDF_Label& label) ;
+Standard_EXPORT SALOMEDSImpl_AttributeSequenceOfInteger();
+Standard_EXPORT   void Assign(const Handle(TColStd_HSequenceOfInteger)& other) ;
+Standard_EXPORT   void ChangeValue(const Standard_Integer Index,const Standard_Integer Value) ;
+Standard_EXPORT   void Add(const Standard_Integer value) ;
+Standard_EXPORT   Standard_Integer Value(const Standard_Integer Index) ;
+Standard_EXPORT   void Remove(const Standard_Integer Index) ;
+Standard_EXPORT   Standard_Integer Length() ;
+Standard_EXPORT  const Standard_GUID& ID() const;
+Standard_EXPORT   void Restore(const Handle(TDF_Attribute)& with) ;
+Standard_EXPORT   Handle_TDF_Attribute NewEmpty() const;
+Standard_EXPORT   void Paste(const Handle(TDF_Attribute)& into,const Handle(TDF_RelocationTable)& RT) const;
+Standard_EXPORT ~SALOMEDSImpl_AttributeSequenceOfInteger() {}
+
+private: 
+
+Handle_TColStd_HSequenceOfInteger myValue;
+
+public:
+  DEFINE_STANDARD_RTTI( SALOMEDSImpl_AttributeSequenceOfInteger )
+
+};
+
+#endif
diff --git a/src/SALOMEDSImpl/SALOMEDSImpl_AttributeSequenceOfReal.cxx b/src/SALOMEDSImpl/SALOMEDSImpl_AttributeSequenceOfReal.cxx
new file mode 100644 (file)
index 0000000..fa7caff
--- /dev/null
@@ -0,0 +1,179 @@
+//  File   : SALOMEDSImpl_AttributeSequenceOfReal.cxx
+//  Author : Sergey RUIN
+//  Module : SALOME
+
+#include "SALOMEDSImpl_AttributeSequenceOfReal.hxx"
+#include <Standard_GUID.hxx>
+
+using namespace std;
+
+IMPLEMENT_STANDARD_HANDLE( SALOMEDSImpl_AttributeSequenceOfReal, SALOMEDSImpl_GenericAttribute )
+IMPLEMENT_STANDARD_RTTIEXT( SALOMEDSImpl_AttributeSequenceOfReal, SALOMEDSImpl_GenericAttribute )
+
+//=======================================================================
+//function : GetID
+//purpose  : 
+//=======================================================================
+
+const Standard_GUID& SALOMEDSImpl_AttributeSequenceOfReal::GetID () 
+{
+  static Standard_GUID SALOMEDSImpl_AttributeSequenceOfRealID ("12837183-8F52-11d6-A8A3-0001021E8C7F");
+  return SALOMEDSImpl_AttributeSequenceOfRealID;
+}
+
+
+
+//=======================================================================
+//function : Set
+//purpose  : 
+//=======================================================================
+
+Handle(SALOMEDSImpl_AttributeSequenceOfReal) SALOMEDSImpl_AttributeSequenceOfReal::Set (const TDF_Label& L) 
+{
+  Handle(SALOMEDSImpl_AttributeSequenceOfReal) A;
+  if (!L.FindAttribute(SALOMEDSImpl_AttributeSequenceOfReal::GetID(),A)) {
+    A = new  SALOMEDSImpl_AttributeSequenceOfReal(); 
+    L.AddAttribute(A);
+  }
+  return A;
+}
+
+
+//=======================================================================
+//function : constructor
+//purpose  : 
+//=======================================================================
+SALOMEDSImpl_AttributeSequenceOfReal::SALOMEDSImpl_AttributeSequenceOfReal()
+:SALOMEDSImpl_GenericAttribute("AttributeSequenceOfReal")
+{
+  myValue = new TColStd_HSequenceOfReal();
+}
+
+//=======================================================================
+//function : ID
+//purpose  : 
+//=======================================================================
+
+const Standard_GUID& SALOMEDSImpl_AttributeSequenceOfReal::ID () const { return GetID(); }
+
+
+//=======================================================================
+//function : NewEmpty
+//purpose  : 
+//=======================================================================
+
+Handle(TDF_Attribute) SALOMEDSImpl_AttributeSequenceOfReal::NewEmpty () const
+{  
+  return new SALOMEDSImpl_AttributeSequenceOfReal(); 
+}
+
+//=======================================================================
+//function : Restore
+//purpose  : 
+//=======================================================================
+
+void SALOMEDSImpl_AttributeSequenceOfReal::Restore(const Handle(TDF_Attribute)& with) 
+{
+  Standard_Integer i;
+  Handle(SALOMEDSImpl_AttributeSequenceOfReal) anSeq = Handle(SALOMEDSImpl_AttributeSequenceOfReal)::DownCast(with);
+  if(!anSeq->myValue.IsNull()) {
+    myValue = new TColStd_HSequenceOfReal();
+    Standard_Integer Len = anSeq->Length();
+    for(i = 1; i<=Len; i++) Add(anSeq->Value(i)); 
+  }
+  else
+    myValue.Nullify();
+  return;
+}
+
+//=======================================================================
+//function : Paste
+//purpose  : 
+//=======================================================================
+
+void SALOMEDSImpl_AttributeSequenceOfReal::Paste (const Handle(TDF_Attribute)& into,
+                                    const Handle(TDF_RelocationTable)& ) const
+{
+  if(!myValue.IsNull()) {
+    Handle(SALOMEDSImpl_AttributeSequenceOfReal)::DownCast (into)->Assign(myValue);
+  }
+}
+
+void SALOMEDSImpl_AttributeSequenceOfReal::Assign(const Handle(TColStd_HSequenceOfReal)& other) 
+{
+  CheckLocked();  
+  Backup();
+  if (myValue.IsNull()) myValue = new TColStd_HSequenceOfReal;
+  myValue->ChangeSequence() = other->Sequence();
+
+  SetModifyFlag(); //SRN: Mark the study as being modified, so it could be saved 
+}
+
+void SALOMEDSImpl_AttributeSequenceOfReal::ChangeValue(const Standard_Integer Index,const Standard_Real Value) 
+{
+  CheckLocked();  
+  Backup();
+  myValue->SetValue(Index, Value);
+  
+  SetModifyFlag(); //SRN: Mark the study as being modified, so it could be saved 
+}
+
+void SALOMEDSImpl_AttributeSequenceOfReal::Add(const Standard_Real Value) 
+{
+  CheckLocked();  
+  Backup();
+  myValue->Append(Value);
+  
+  SetModifyFlag(); //SRN: Mark the study as being modified, so it could be saved 
+}
+
+void SALOMEDSImpl_AttributeSequenceOfReal::Remove(const Standard_Integer Index) 
+{
+  CheckLocked();  
+  Backup();
+  myValue->Remove(Index);
+  
+  SetModifyFlag(); //SRN: Mark the study as being modified, so it could be saved 
+}
+
+Standard_Integer SALOMEDSImpl_AttributeSequenceOfReal::Length() 
+{
+  return myValue->Length();
+}
+
+Standard_Real SALOMEDSImpl_AttributeSequenceOfReal::Value(const Standard_Integer Index) 
+{
+  return myValue->Value(Index);
+}
+
+
+TCollection_AsciiString SALOMEDSImpl_AttributeSequenceOfReal::Save()
+{
+  Standard_Integer aLength = Length();
+  char* aResult = new char[aLength * 25];
+  aResult[0] = 0;
+  Standard_Integer aPosition = 0;
+  for (int i = 1; i <= aLength; i++) {
+    sprintf(aResult + aPosition , "%f ", Value(i));
+    aPosition += strlen(aResult + aPosition);
+  }
+  TCollection_AsciiString ret(aResult);
+  delete aResult;
+                         
+  return ret;
+}
+                           
+void SALOMEDSImpl_AttributeSequenceOfReal::Load(const TCollection_AsciiString& value)
+{
+  Handle(TColStd_HSequenceOfReal) CasCadeSeq = new TColStd_HSequenceOfReal;
+                             
+  char* aCopy = value.ToCString();
+  char* adr = strtok(aCopy, " ");
+  char *err = NULL; 
+  while (adr) {
+    Standard_Real r =  strtod(adr, &err); 
+    CasCadeSeq->Append(r);
+    adr = strtok(NULL, " ");
+  }
+  Assign(CasCadeSeq);
+}    
diff --git a/src/SALOMEDSImpl/SALOMEDSImpl_AttributeSequenceOfReal.hxx b/src/SALOMEDSImpl/SALOMEDSImpl_AttributeSequenceOfReal.hxx
new file mode 100644 (file)
index 0000000..a7c9371
--- /dev/null
@@ -0,0 +1,53 @@
+//  File   : SALOMEDSImpl_AttributeSequenceOfReal.hxx
+//  Author : Sergey RUIN
+//  Module : SALOME
+
+#ifndef _SALOMEDSImpl_AttributeSequenceOfReal_HeaderFile
+#define _SALOMEDSImpl_AttributeSequenceOfReal_HeaderFile
+
+#include <Standard_DefineHandle.hxx>
+#include <TDF_Attribute.hxx>
+#include <TColStd_HSequenceOfReal.hxx>
+#include <TDF_Label.hxx>       
+#include <TCollection_AsciiString.hxx>
+#include "SALOMEDSImpl_GenericAttribute.hxx"
+
+class Standard_GUID;
+class Handle(TDF_Attribute);
+class Handle(TDF_RelocationTable);
+
+
+DEFINE_STANDARD_HANDLE( SALOMEDSImpl_AttributeSequenceOfReal, SALOMEDSImpl_GenericAttribute )
+
+class SALOMEDSImpl_AttributeSequenceOfReal : public SALOMEDSImpl_GenericAttribute 
+{
+
+public:
+
+Standard_EXPORT virtual TCollection_AsciiString Save();
+Standard_EXPORT virtual void Load(const TCollection_AsciiString&);
+Standard_EXPORT static const Standard_GUID& GetID() ;
+Standard_EXPORT static  Handle_SALOMEDSImpl_AttributeSequenceOfReal Set(const TDF_Label& label) ;
+Standard_EXPORT SALOMEDSImpl_AttributeSequenceOfReal();
+Standard_EXPORT   void Assign(const Handle(TColStd_HSequenceOfReal)& other) ;
+Standard_EXPORT   void ChangeValue(const Standard_Integer Index,const Standard_Real Value) ;
+Standard_EXPORT   void Add(const Standard_Real Value) ;
+Standard_EXPORT   Standard_Real Value(const Standard_Integer Index) ;
+Standard_EXPORT   void Remove(const Standard_Integer Index) ;
+Standard_EXPORT   Standard_Integer Length() ;
+Standard_EXPORT  const Standard_GUID& ID() const;
+Standard_EXPORT   void Restore(const Handle(TDF_Attribute)& with) ;
+Standard_EXPORT   Handle_TDF_Attribute NewEmpty() const;
+Standard_EXPORT   void Paste(const Handle(TDF_Attribute)& into,const Handle(TDF_RelocationTable)& RT) const;
+Standard_EXPORT ~SALOMEDSImpl_AttributeSequenceOfReal() {}
+
+private: 
+Handle_TColStd_HSequenceOfReal myValue;
+
+public:
+  DEFINE_STANDARD_RTTI( SALOMEDSImpl_AttributeSequenceOfReal )
+
+};
+
+#endif
diff --git a/src/SALOMEDSImpl/SALOMEDSImpl_AttributeStudyProperties.cxx b/src/SALOMEDSImpl/SALOMEDSImpl_AttributeStudyProperties.cxx
new file mode 100644 (file)
index 0000000..3093a7a
--- /dev/null
@@ -0,0 +1,301 @@
+//  File   : SALOMEDSImpl_AttributeStudyProperties.cxx
+//  Author : Sergey RUIN
+//  Module : SALOME
+
+#include <SALOMEDSImpl_AttributeStudyProperties.hxx>
+#include <Standard_GUID.hxx>
+#include <TCollection_ExtendedString.hxx>
+
+using namespace std;
+
+IMPLEMENT_STANDARD_HANDLE( SALOMEDSImpl_AttributeStudyProperties, SALOMEDSImpl_GenericAttribute )
+IMPLEMENT_STANDARD_RTTIEXT( SALOMEDSImpl_AttributeStudyProperties, SALOMEDSImpl_GenericAttribute )
+
+const Standard_GUID& SALOMEDSImpl_AttributeStudyProperties::GetID()
+{
+  static Standard_GUID SALOMEDSImpl_AttributeStudyPropertiesID ("128371A2-8F52-11d6-A8A3-0001021E8C7F");
+  return SALOMEDSImpl_AttributeStudyPropertiesID;
+}
+
+Handle(SALOMEDSImpl_AttributeStudyProperties) SALOMEDSImpl_AttributeStudyProperties::Set(const TDF_Label& label)
+{
+  Handle(SALOMEDSImpl_AttributeStudyProperties) anAttr;
+  if (!label.FindAttribute(SALOMEDSImpl_AttributeStudyProperties::GetID(),anAttr)) {
+    anAttr = new SALOMEDSImpl_AttributeStudyProperties();
+    label.AddAttribute(anAttr);
+  }
+  return anAttr;
+}
+
+SALOMEDSImpl_AttributeStudyProperties::SALOMEDSImpl_AttributeStudyProperties()
+:SALOMEDSImpl_GenericAttribute("AttributeStudyProperties")
+{
+  myLocked = Standard_False;
+  myLockChanged = Standard_False;
+  Init();
+}
+
+void SALOMEDSImpl_AttributeStudyProperties::Init()
+{
+  myUserName = new TColStd_HSequenceOfExtendedString();
+  myMinute = new TColStd_HSequenceOfInteger();
+  myHour = new TColStd_HSequenceOfInteger();
+  myDay = new TColStd_HSequenceOfInteger();
+  myMonth = new TColStd_HSequenceOfInteger();
+  myYear = new TColStd_HSequenceOfInteger();
+//  myModified = 0;
+  myMode = 0; // none
+}
+
+void SALOMEDSImpl_AttributeStudyProperties::SetModification(const TCollection_ExtendedString& theUserName,
+                                                            const Standard_Integer            theMinute,
+                                                            const Standard_Integer            theHour,
+                                                            const Standard_Integer            theDay,
+                                                            const Standard_Integer            theMonth,
+                                                            const Standard_Integer            theYear)
+{
+  if (theMinute<0 || theMinute>60 || theHour<0 || theHour>24 ||
+      theDay<0 || theDay>31 || theMonth<0 || theMonth>12)
+    return;
+
+  CheckLocked();
+  Backup();
+
+  myUserName->Append(theUserName);
+  myMinute->Append(theMinute);
+  myHour->Append(theHour);
+  myDay->Append(theDay);
+  myMonth->Append(theMonth);
+  myYear->Append(theYear);
+}
+
+void SALOMEDSImpl_AttributeStudyProperties::GetModifications
+                  (Handle(TColStd_HSequenceOfExtendedString)& theUserNames,
+                   Handle(TColStd_HSequenceOfInteger)&        theMinutes,
+                   Handle(TColStd_HSequenceOfInteger)&        theHours,
+                   Handle(TColStd_HSequenceOfInteger)&        theDays,
+                   Handle(TColStd_HSequenceOfInteger)&        theMonths,
+                   Handle(TColStd_HSequenceOfInteger)&        theYears) const
+{
+  theUserNames = myUserName;
+  theMinutes = myMinute;
+  theHours = myHour;
+  theDays = myDay;
+  theMonths = myMonth;
+  theYears = myYear;
+}
+
+TCollection_ExtendedString SALOMEDSImpl_AttributeStudyProperties::GetCreatorName() const
+{
+  if (myUserName->Length() == 0)
+    return TCollection_ExtendedString("");
+  return myUserName->Value(1);
+}
+
+Standard_Boolean SALOMEDSImpl_AttributeStudyProperties::GetCreationDate
+                              (Standard_Integer&           theMinute,
+                               Standard_Integer&           theHour,
+                               Standard_Integer&           theDay,
+                               Standard_Integer&           theMonth,
+                               Standard_Integer&           theYear) const
+{
+  if (myMinute->Length() != 0) {
+    theMinute = myMinute->Value(1);
+    theHour = myHour->Value(1);
+    theDay = myDay->Value(1);
+    theMonth = myMonth->Value(1);
+    theYear = myYear->Value(1);
+    return Standard_True;
+  }
+  return Standard_False;
+}
+
+void SALOMEDSImpl_AttributeStudyProperties::ChangeCreatorName(const TCollection_ExtendedString& theName)
+{
+  if (myUserName->Length() > 0) {
+    CheckLocked();
+    Backup();
+    myUserName->SetValue(1, theName);
+  }
+}
+
+void SALOMEDSImpl_AttributeStudyProperties::SetCreationMode(const Standard_Integer theMode)
+{
+  CheckLocked();
+  Backup();
+  myMode = theMode;
+}
+
+Standard_Integer SALOMEDSImpl_AttributeStudyProperties::GetCreationMode() const
+{
+  return myMode;
+}
+
+void SALOMEDSImpl_AttributeStudyProperties::SetModified(const Standard_Integer theModified)
+{
+  myModified = theModified;
+}
+
+Standard_Boolean SALOMEDSImpl_AttributeStudyProperties::IsModified() const
+{
+  return (myModified != 0);
+}
+
+Standard_Integer SALOMEDSImpl_AttributeStudyProperties::GetModified() const
+{
+  return myModified;
+}
+
+void SALOMEDSImpl_AttributeStudyProperties::SetLocked(const Standard_Boolean theLocked)
+{
+//  Backup();
+  if (myLocked != theLocked) {
+    myLockChanged = Standard_True;
+    myLocked = theLocked;
+  }
+}
+
+Standard_Boolean SALOMEDSImpl_AttributeStudyProperties::IsLocked() const
+{
+  return myLocked;
+}
+
+Standard_Boolean SALOMEDSImpl_AttributeStudyProperties::IsLockChanged(const Standard_Boolean theErase) {
+  if (!myLockChanged) return Standard_False;
+  if (theErase) myLockChanged = Standard_False;
+  return Standard_True;
+}
+
+const Standard_GUID& SALOMEDSImpl_AttributeStudyProperties::ID() const
+{
+  return GetID();
+}
+
+void SALOMEDSImpl_AttributeStudyProperties::Restore(const Handle(TDF_Attribute)& with)
+{
+  Handle(SALOMEDSImpl_AttributeStudyProperties) aProp =
+    Handle(SALOMEDSImpl_AttributeStudyProperties)::DownCast(with);
+  Init();
+  Standard_Integer i;
+  Handle(TColStd_HSequenceOfExtendedString) aNames;
+  Handle(TColStd_HSequenceOfInteger) aMinutes, aHours, aDays, aMonths, aYears;
+  aProp->GetModifications(aNames, aMinutes, aHours, aDays, aMonths, aYears);
+  for (i = aNames->Length(); i > 0; i--) {
+    myUserName->Prepend(aNames->Value(i));
+    myMinute->Prepend(aMinutes->Value(i));
+    myHour->Prepend(aHours->Value(i));
+    myDay->Prepend(aDays->Value(i));
+    myMonth->Prepend(aMonths->Value(i));
+    myYear->Prepend(aYears->Value(i));
+  }
+  myMode = aProp->GetCreationMode();
+//  myModified = aProp->GetModified();
+//  myLocked = aProp->IsLocked();
+}
+
+Handle(TDF_Attribute) SALOMEDSImpl_AttributeStudyProperties::NewEmpty() const
+{
+  return new SALOMEDSImpl_AttributeStudyProperties();
+}
+
+void SALOMEDSImpl_AttributeStudyProperties::Paste(const Handle(TDF_Attribute)& into,
+                                                  const Handle(TDF_RelocationTable)&) const
+{
+  Handle(SALOMEDSImpl_AttributeStudyProperties) aProp =
+    Handle(SALOMEDSImpl_AttributeStudyProperties)::DownCast(into);
+  aProp->Init();
+
+  Standard_Integer i;
+  for(i = 1; i <= myUserName->Length(); i++) {
+    aProp->SetModification(myUserName->Value(i),
+                           myMinute->Value(i), myHour->Value(i),
+                           myDay->Value(i), myMonth->Value(i), myYear->Value(i));
+  }
+
+  aProp->SetCreationMode(myMode);
+//  aProp->SetModified(myModified);
+//  aProp->SetLocked(myLocked);
+}
+
+
+TCollection_AsciiString SALOMEDSImpl_AttributeStudyProperties::Save()
+{
+  Handle(TColStd_HSequenceOfExtendedString) aNames;
+  Handle(TColStd_HSequenceOfInteger) aMinutes, aHours, aDays, aMonths, aYears;
+  GetModifications(aNames, aMinutes, aHours, aDays, aMonths, aYears);
+
+  int aLength, anIndex;
+  for (aLength = 0, anIndex = aNames->Length(); anIndex > 0; anIndex--)
+    aLength += aNames->Value(anIndex).Length() + 1;
+
+  char* aProperty = new char[3 + aLength + 12 * aNames->Length()];
+
+  char crMode = (char)GetCreationMode();
+
+  sprintf(aProperty,"%c%c", crMode, IsLocked()?'l':'u');
+
+  aLength = aNames->Length();
+  int a = 2;
+  for (anIndex = 1; anIndex  <= aLength; anIndex++) {
+    sprintf(&(aProperty[a]),"%2d%2d%2d%2d%4d%s",
+           (int)(aMinutes->Value(anIndex)),
+           (int)(aHours->Value(anIndex)),
+           (int)(aDays->Value(anIndex)),
+           (int)(aMonths->Value(anIndex)),
+           (int)(aYears->Value(anIndex)),
+           (char*)(TCollection_AsciiString(aNames->Value(anIndex)).ToCString()));
+    a = strlen(aProperty);
+    aProperty[a++] = 1;
+  }
+  aProperty[a] = 0;
+  TCollection_AsciiString prop(aProperty);
+  delete aProperty;
+
+  return prop;
+}
+
+void SALOMEDSImpl_AttributeStudyProperties::Load(const TCollection_AsciiString& value)
+{
+  char* aCopy = value.ToCString();
+
+  int crMode = (int)aCopy[0];
+  SetCreationMode(crMode);
+
+  int anIndex;
+  for (anIndex = 2; anIndex + 2 < value.Length() ;) {
+    char str[10];
+    Standard_Integer aMinute, aHour, aDay, aMonth, aYear;
+    str[0] = aCopy[anIndex++];
+    str[1] = aCopy[anIndex++];
+    str[2] = 0;
+    aMinute = atoi(str);
+    str[0] = aCopy[anIndex++];
+    str[1] = aCopy[anIndex++];
+    aHour =  atoi(str);
+    str[0] = aCopy[anIndex++];
+    str[1] = aCopy[anIndex++];
+    aDay =  atoi(str);
+    str[0] = aCopy[anIndex++];
+    str[1] = aCopy[anIndex++];
+    aMonth =  atoi(str);
+    str[0] = aCopy[anIndex++];
+    str[1] = aCopy[anIndex++];
+    str[2] = aCopy[anIndex++];
+    str[3] = aCopy[anIndex++];
+    str[4] = 0;
+    aYear = atoi(str);
+
+    int aNameSize;
+    for(aNameSize = 0; aCopy[anIndex+aNameSize]!=1; aNameSize++);
+    char *aName = new char[aNameSize+1];
+    strncpy(aName, &(aCopy[anIndex]), aNameSize);
+    aName[aNameSize] = 0;
+    SetModification(aName,aMinute,aHour,aDay,aMonth,aYear);
+    delete(aName);
+    anIndex += aNameSize + 1;
+  }
+  if (aCopy[1] == 'l') {
+    SetLocked(Standard_True);
+  }
+  SetModified(0);
+}
diff --git a/src/SALOMEDSImpl/SALOMEDSImpl_AttributeStudyProperties.hxx b/src/SALOMEDSImpl/SALOMEDSImpl_AttributeStudyProperties.hxx
new file mode 100644 (file)
index 0000000..19fc22d
--- /dev/null
@@ -0,0 +1,97 @@
+//  File   : SALOMEDSImpl_AttributeStudyProperties.hxx
+//  Author : Sergey RUIN
+//  Module : SALOME
+
+#ifndef _SALOMEDSImpl_AttributeStudyProperties_HeaderFile
+#define _SALOMEDSImpl_AttributeStudyProperties_HeaderFile
+
+#include <Standard_DefineHandle.hxx>
+#include <Standard.hxx>
+#include <TDF_Attribute.hxx>
+#include <TDF_Label.hxx>
+#include <TCollection_AsciiString.hxx>
+#include "SALOMEDSImpl_GenericAttribute.hxx"
+
+class Standard_GUID;
+class Handle(TDF_Attribute);
+class Handle(TDF_RelocationTable);
+
+
+DEFINE_STANDARD_HANDLE( SALOMEDSImpl_AttributeStudyProperties, SALOMEDSImpl_GenericAttribute )
+
+#include <TColStd_HSequenceOfExtendedString.hxx>
+#include <TColStd_HSequenceOfInteger.hxx>
+
+class SALOMEDSImpl_AttributeStudyProperties : public SALOMEDSImpl_GenericAttribute
+{
+public:
+Standard_EXPORT SALOMEDSImpl_AttributeStudyProperties();
+Standard_EXPORT ~SALOMEDSImpl_AttributeStudyProperties() {}
+
+Standard_EXPORT static const Standard_GUID& GetID();
+Standard_EXPORT        const Standard_GUID&    ID() const;
+
+Standard_EXPORT static  Handle_SALOMEDSImpl_AttributeStudyProperties Set(const TDF_Label& label);
+
+Standard_EXPORT void Init();
+
+Standard_EXPORT virtual TCollection_AsciiString Save();
+Standard_EXPORT virtual void Load(const TCollection_AsciiString&);
+
+Standard_EXPORT   void SetModification(const TCollection_ExtendedString& theUserName,
+                                       const Standard_Integer            theMinute,
+                                       const Standard_Integer            theHour,
+                                       const Standard_Integer            theDay,
+                                       const Standard_Integer            theMonth,
+                                       const Standard_Integer            theYear);
+Standard_EXPORT   void GetModifications(Handle(TColStd_HSequenceOfExtendedString)& theUserNames,
+                                        Handle(TColStd_HSequenceOfInteger)&        theMinutes,
+                                        Handle(TColStd_HSequenceOfInteger)&        theHours,
+                                        Handle(TColStd_HSequenceOfInteger)&        theDays,
+                                        Handle(TColStd_HSequenceOfInteger)&        theMonths,
+                                        Handle(TColStd_HSequenceOfInteger)&        theYears) const;
+
+Standard_EXPORT   TCollection_ExtendedString GetCreatorName() const;
+Standard_EXPORT   Standard_Boolean GetCreationDate(Standard_Integer&           theMinute,
+                                                  Standard_Integer&           theHour,
+                                                  Standard_Integer&           theDay,
+                                                  Standard_Integer&           theMonth,
+                                                  Standard_Integer&           theYear) const;
+
+Standard_EXPORT   void ChangeCreatorName(const TCollection_ExtendedString& theUserName);
+
+Standard_EXPORT   void SetCreationMode(const Standard_Integer theMode);
+Standard_EXPORT   Standard_Integer GetCreationMode() const;
+
+Standard_EXPORT   void SetModified(const Standard_Integer theModified);
+Standard_EXPORT   Standard_Boolean IsModified() const;
+Standard_EXPORT   Standard_Integer GetModified() const;
+
+Standard_EXPORT   void SetLocked(const Standard_Boolean theLocked);
+Standard_EXPORT   Standard_Boolean IsLocked() const;
+Standard_EXPORT   Standard_Boolean IsLockChanged(const Standard_Boolean theErase);
+
+Standard_EXPORT   void Restore(const Handle(TDF_Attribute)& with);
+Standard_EXPORT   Handle_TDF_Attribute NewEmpty() const;
+Standard_EXPORT   void Paste(const Handle(TDF_Attribute)& into,
+                             const Handle(TDF_RelocationTable)& RT) const;
+
+private:
+
+Handle_TColStd_HSequenceOfExtendedString myUserName;
+Handle_TColStd_HSequenceOfInteger myMinute;
+Handle_TColStd_HSequenceOfInteger myHour;
+Handle_TColStd_HSequenceOfInteger myDay;
+Handle_TColStd_HSequenceOfInteger myMonth;
+Handle_TColStd_HSequenceOfInteger myYear;
+Standard_Integer myMode;
+Standard_Integer myModified;
+Standard_Boolean myLocked;
+Standard_Boolean myLockChanged;
+
+public:
+  DEFINE_STANDARD_RTTI( SALOMEDSImpl_AttributeStudyProperties )
+
+};
+
+#endif
diff --git a/src/SALOMEDSImpl/SALOMEDSImpl_AttributeTableOfInteger.cxx b/src/SALOMEDSImpl/SALOMEDSImpl_AttributeTableOfInteger.cxx
new file mode 100644 (file)
index 0000000..33c6cd9
--- /dev/null
@@ -0,0 +1,542 @@
+//  File   : SALOMEDSImpl_AttributeTableOfInteger.cxx
+//  Author : Michael Ponikarov
+//  Module : SALOME
+
+#include <SALOMEDSImpl_AttributeTableOfInteger.hxx>
+#include <Standard_Failure.hxx>
+#include <TColStd_DataMapIteratorOfDataMapOfIntegerInteger.hxx>
+#include <Standard_GUID.hxx>
+#include <TColStd_HSequenceOfExtendedString.hxx>
+
+using namespace std;
+
+IMPLEMENT_STANDARD_HANDLE( SALOMEDSImpl_AttributeTableOfInteger, SALOMEDSImpl_GenericAttribute )
+IMPLEMENT_STANDARD_RTTIEXT( SALOMEDSImpl_AttributeTableOfInteger, SALOMEDSImpl_GenericAttribute )
+
+#define SEPARATOR '\1'
+
+static TCollection_ExtendedString getUnit(TCollection_ExtendedString theString)
+{
+  TCollection_ExtendedString aString(theString);
+  int aPos = aString.Search(SEPARATOR);
+  if(aPos <= 0 || aPos == aString.Length() ) return TCollection_ExtendedString();
+  return aString.Split(aPos);
+}
+
+static TCollection_ExtendedString getTitle(TCollection_ExtendedString theString)
+{
+  TCollection_ExtendedString aString(theString);
+  int aPos = aString.Search(SEPARATOR);
+  if(aPos < 1) return aString;
+  if(aPos == 1) return TCollection_ExtendedString();
+  aString.Split(aPos-1);
+  return aString;
+}
+
+const Standard_GUID& SALOMEDSImpl_AttributeTableOfInteger::GetID() 
+{
+  static Standard_GUID SALOMEDSImpl_AttributeTableOfIntegerID ("128371A0-8F52-11d6-A8A3-0001021E8C7F");
+  return SALOMEDSImpl_AttributeTableOfIntegerID;
+}
+
+Handle(SALOMEDSImpl_AttributeTableOfInteger) SALOMEDSImpl_AttributeTableOfInteger::Set(const TDF_Label& label) 
+{
+  Handle(SALOMEDSImpl_AttributeTableOfInteger) anAttr;
+  if (!label.FindAttribute(SALOMEDSImpl_AttributeTableOfInteger::GetID(),anAttr)) {
+    anAttr = new SALOMEDSImpl_AttributeTableOfInteger();
+    label.AddAttribute(anAttr);
+  }
+  return anAttr;
+}
+
+SALOMEDSImpl_AttributeTableOfInteger::SALOMEDSImpl_AttributeTableOfInteger() 
+:SALOMEDSImpl_GenericAttribute("AttributeTableOfInteger")
+{
+  myRows = new TColStd_HSequenceOfExtendedString();
+  myCols = new TColStd_HSequenceOfExtendedString();
+  myNbRows = 0;
+  myNbColumns = 0;
+}
+
+void SALOMEDSImpl_AttributeTableOfInteger::SetNbColumns(const Standard_Integer theNbColumns)
+{
+  CheckLocked();  
+  Backup();
+  
+  TColStd_DataMapOfIntegerInteger aMap;
+  aMap = myTable;
+  myTable.Clear();
+
+  TColStd_DataMapIteratorOfDataMapOfIntegerInteger anIterator(aMap);
+  for(; anIterator.More(); anIterator.Next()) {
+    int aRow = (int)(anIterator.Key()/myNbColumns) + 1;
+    int aCol = (int)(anIterator.Key() - myNbColumns*(aRow-1));
+    if(aCol == 0) { aCol = myNbColumns; aRow--; }
+    if(aCol > theNbColumns) continue;
+    int aKey = (aRow-1)*theNbColumns+aCol;
+    myTable.Bind(aKey, anIterator.Value());
+  }
+
+  myNbColumns = theNbColumns;
+
+  while (myCols->Length() < myNbColumns) { // append empty columns titles
+    myCols->Append(TCollection_ExtendedString(""));
+  }
+
+  SetModifyFlag(); //SRN: Mark the study as being modified, so it could be saved 
+
+}
+
+void SALOMEDSImpl_AttributeTableOfInteger::SetTitle(const TCollection_ExtendedString& theTitle) 
+{
+  CheckLocked();  
+  Backup();
+  myTitle = theTitle;
+  
+  SetModifyFlag(); //SRN: Mark the study as being modified, so it could be saved 
+}
+
+TCollection_ExtendedString SALOMEDSImpl_AttributeTableOfInteger::GetTitle() const 
+{
+  return myTitle;
+}
+
+void SALOMEDSImpl_AttributeTableOfInteger::SetRowData(const Standard_Integer theRow,
+                                                 const Handle(TColStd_HSequenceOfInteger)& theData) 
+{
+  CheckLocked();  
+  if(theData->Length() > myNbColumns) SetNbColumns(theData->Length());
+
+  Backup();
+
+  while (myRows->Length() < theRow) { // append new row titles
+    myRows->Append(TCollection_ExtendedString(""));
+  }
+
+  Standard_Integer i, aShift = (theRow-1)*myNbColumns, aLength = theData->Length();
+  for(i = 1; i <= aLength; i++) {
+    myTable.Bind(aShift + i, theData->Value(i));
+  }
+
+  if(theRow > myNbRows) myNbRows = theRow;
+  
+  SetModifyFlag(); //SRN: Mark the study as being modified, so it could be saved 
+}
+
+Handle(TColStd_HSequenceOfInteger) SALOMEDSImpl_AttributeTableOfInteger::GetRowData(const Standard_Integer theRow)
+{
+  Handle(TColStd_HSequenceOfInteger) aSeq = new TColStd_HSequenceOfInteger();
+  Standard_Integer i, aShift = (theRow-1)*myNbColumns;
+  for(i = 1; i <= myNbColumns; i++) {
+     if(myTable.IsBound(aShift+i)) 
+       aSeq->Append(myTable.Find(aShift+i));
+     else
+       aSeq->Append(0);
+  }
+  
+  return aSeq;
+}
+
+void SALOMEDSImpl_AttributeTableOfInteger::SetRowTitle(const Standard_Integer theRow,
+                                                      const TCollection_ExtendedString& theTitle) 
+{
+  CheckLocked();  
+  Backup();
+  TCollection_ExtendedString aTitle(theTitle), aUnit = GetRowUnit(theRow);
+  if(aUnit.Length()>0) {
+    aTitle += SEPARATOR;
+    aTitle += aUnit;
+  }
+  myRows->SetValue(theRow, aTitle);
+  
+  SetModifyFlag(); //SRN: Mark the study as being modified, so it could be saved 
+}
+
+void SALOMEDSImpl_AttributeTableOfInteger::SetRowUnit(const Standard_Integer theRow,
+                                                     const TCollection_ExtendedString& theUnit) 
+{
+  CheckLocked();  
+  Backup();
+  TCollection_ExtendedString aTitle = GetRowTitle(theRow);
+  aTitle += SEPARATOR;
+  aTitle += theUnit;
+
+  myRows->SetValue(theRow, aTitle);
+  
+  SetModifyFlag(); //SRN: Mark the study as being modified, so it could be saved 
+}
+
+void SALOMEDSImpl_AttributeTableOfInteger::SetRowUnits(const Handle(TColStd_HSequenceOfExtendedString)& theUnits)
+{
+  if (theUnits->Length() != GetNbRows()) Standard_Failure::Raise("Invalid number of rows");
+  int aLength = theUnits->Length(), i;
+  for(i = 1; i <= aLength; i++) SetRowUnit(i, theUnits->Value(i));
+  
+  SetModifyFlag(); //SRN: Mark the study as being modified, so it could be saved 
+}
+
+Handle(TColStd_HSequenceOfExtendedString) SALOMEDSImpl_AttributeTableOfInteger::GetRowUnits()
+{
+  Handle(TColStd_HSequenceOfExtendedString) aSeq = new TColStd_HSequenceOfExtendedString;
+  int aLength = myRows->Length(), i;
+  for(i=1; i<=aLength; i++) aSeq->Append(getUnit(myRows->Value(i)));
+  return aSeq;
+}
+
+void SALOMEDSImpl_AttributeTableOfInteger::SetRowTitles(const Handle(TColStd_HSequenceOfExtendedString)& theTitles)
+{
+  if (theTitles->Length() != GetNbRows()) Standard_Failure::Raise("Invalid number of rows");
+  int aLength = theTitles->Length(), i;
+  for(i = 1; i <= aLength; i++) SetRowTitle(i, theTitles->Value(i));
+  
+  SetModifyFlag(); //SRN: Mark the study as being modified, so it could be saved 
+}
+
+Handle(TColStd_HSequenceOfExtendedString) SALOMEDSImpl_AttributeTableOfInteger::GetRowTitles()
+{
+  Handle(TColStd_HSequenceOfExtendedString) aSeq = new TColStd_HSequenceOfExtendedString;
+  int aLength = myRows->Length(), i;
+  for(i=1; i<=aLength; i++) aSeq->Append(getTitle(myRows->Value(i)));
+  return aSeq;
+}
+
+
+TCollection_ExtendedString SALOMEDSImpl_AttributeTableOfInteger::GetRowTitle(const Standard_Integer theRow) const 
+{
+  return getTitle(myRows->Value(theRow));
+}
+
+
+TCollection_ExtendedString SALOMEDSImpl_AttributeTableOfInteger::GetRowUnit(const Standard_Integer theRow) const 
+{
+  return getUnit(myRows->Value(theRow));
+}
+
+
+void SALOMEDSImpl_AttributeTableOfInteger::SetColumnData(const Standard_Integer theColumn,
+                                                    const Handle(TColStd_HSequenceOfInteger)& theData) 
+{
+  CheckLocked();  
+  if(theColumn > myNbColumns) SetNbColumns(theColumn);
+
+  Backup();
+
+  Standard_Integer i, aLength = theData->Length();
+  for(i = 1; i <= aLength; i++) {
+    myTable.Bind(myNbColumns*(i-1)+theColumn, theData->Value(i));
+  }
+
+  if(aLength > myNbRows) {
+    myNbRows = aLength;
+    while (myRows->Length() < myNbRows) { // append empty row titles
+      myRows->Append(TCollection_ExtendedString(""));
+    }
+  }
+  
+  SetModifyFlag(); //SRN: Mark the study as being modified, so it could be saved 
+}
+
+
+Handle(TColStd_HSequenceOfInteger) SALOMEDSImpl_AttributeTableOfInteger::GetColumnData(const Standard_Integer theColumn)
+{
+  Handle(TColStd_HSequenceOfInteger) aSeq = new TColStd_HSequenceOfInteger;
+  
+  Standard_Integer i, anIndex;
+  for(i = 1; i <= myNbRows; i++) {
+    anIndex = myNbColumns*(i-1) + theColumn;
+    if(myTable.IsBound(anIndex)) 
+      aSeq->Append(myTable.Find(anIndex));
+    else
+      aSeq->Append(0);
+  }
+  
+  return aSeq;
+}
+
+void SALOMEDSImpl_AttributeTableOfInteger::SetColumnTitle(const Standard_Integer theColumn,
+                                                     const TCollection_ExtendedString& theTitle) 
+{
+  CheckLocked();                                                     
+  Backup();
+  while(myCols->Length() < theColumn) myCols->Append(TCollection_ExtendedString(""));
+  myCols->SetValue(theColumn,theTitle);
+  
+  SetModifyFlag(); //SRN: Mark the study as being modified, so it could be saved 
+}
+
+TCollection_ExtendedString SALOMEDSImpl_AttributeTableOfInteger::GetColumnTitle(const Standard_Integer theColumn) const 
+{
+  if(myCols.IsNull()) return "";
+  if(myCols->Length() < theColumn) return "";
+  return myCols->Value(theColumn);
+}
+
+void SALOMEDSImpl_AttributeTableOfInteger::SetColumnTitles(const Handle(TColStd_HSequenceOfExtendedString)& theTitles)
+{
+  if (theTitles->Length() != myNbColumns) Standard_Failure::Raise("Invalid number of columns");
+  int aLength = theTitles->Length(), i;
+  for(i = 1; i <= aLength; i++)  myCols->SetValue(i, theTitles->Value(i));
+  
+  SetModifyFlag(); //SRN: Mark the study as being modified, so it could be saved 
+}
+
+Handle(TColStd_HSequenceOfExtendedString) SALOMEDSImpl_AttributeTableOfInteger::GetColumnTitles()
+{
+  Handle(TColStd_HSequenceOfExtendedString) aSeq = new TColStd_HSequenceOfExtendedString;
+  int aLength = myCols->Length(), i;
+  for(i=1; i<=aLength; i++) aSeq->Append(myCols->Value(i));
+  return aSeq;
+}
+
+Standard_Integer SALOMEDSImpl_AttributeTableOfInteger::GetNbRows() const
+{
+  return myNbRows;
+}
+
+Standard_Integer SALOMEDSImpl_AttributeTableOfInteger::GetNbColumns() const
+{
+  return myNbColumns;
+}
+
+void SALOMEDSImpl_AttributeTableOfInteger::PutValue(const Standard_Integer theValue,
+                                               const Standard_Integer theRow,
+                                               const Standard_Integer theColumn) 
+{
+  CheckLocked();  
+  if(theColumn > myNbColumns) SetNbColumns(theColumn);
+
+  Standard_Integer anIndex = (theRow-1)*myNbColumns + theColumn;
+  myTable.Bind(anIndex, theValue);
+
+  if(theRow > myNbRows) {
+    while (myRows->Length() < theRow) { // append empty row titles
+      myRows->Append(TCollection_ExtendedString(""));
+    }
+    myNbRows = theRow;
+  }
+  
+  SetModifyFlag(); //SRN: Mark the study as being modified, so it could be saved 
+}
+
+Standard_Boolean SALOMEDSImpl_AttributeTableOfInteger::HasValue(const Standard_Integer theRow,
+                                                           const Standard_Integer theColumn) 
+{
+  if(theRow > myNbRows || theRow < 1) return Standard_False;
+  if(theColumn > myNbColumns || theColumn < 1) return Standard_False;
+  Standard_Integer anIndex = (theRow-1)*myNbColumns + theColumn;
+  return myTable.IsBound(anIndex); 
+}
+
+Standard_Integer SALOMEDSImpl_AttributeTableOfInteger::GetValue(const Standard_Integer theRow,
+                                                           const Standard_Integer theColumn) 
+{
+  if(theRow > myNbRows || theRow < 1) Standard_Failure::Raise("Invalid cell index");
+  if(theColumn > myNbColumns || theColumn < 1) Standard_Failure::Raise("Invalid cell index");
+
+  Standard_Integer anIndex = (theRow-1)*myNbColumns + theColumn;
+  if(myTable.IsBound(anIndex)) return myTable.Find(anIndex);
+  
+  Standard_Failure::Raise("Invalid cell index");
+  return 0;
+}
+
+const Standard_GUID& SALOMEDSImpl_AttributeTableOfInteger::ID() const
+{
+  return GetID();
+}
+
+void SALOMEDSImpl_AttributeTableOfInteger::Restore(const Handle(TDF_Attribute)& with) 
+{
+  Standard_Integer anIndex;
+  Handle(SALOMEDSImpl_AttributeTableOfInteger) aTable = Handle(SALOMEDSImpl_AttributeTableOfInteger)::DownCast(with);
+
+  myTable.Clear();
+  myCols->Clear();
+  myRows->Clear();
+
+  myTable = aTable->myTable;
+  myNbRows = aTable->myNbRows;
+  myNbColumns = aTable->myNbColumns;
+  myTitle = aTable->myTitle;
+  
+  for(anIndex = 1; anIndex <= aTable->GetNbRows();anIndex++)
+    myRows->Append(aTable->GetRowTitle(anIndex));
+
+  for(anIndex = 1; anIndex <= aTable->GetNbColumns(); anIndex++) 
+    myCols->Append(aTable->GetColumnTitle(anIndex));
+}
+
+Handle(TDF_Attribute) SALOMEDSImpl_AttributeTableOfInteger::NewEmpty() const
+{
+  return new SALOMEDSImpl_AttributeTableOfInteger();
+}
+
+void SALOMEDSImpl_AttributeTableOfInteger::Paste(const Handle(TDF_Attribute)& into,
+                                            const Handle(TDF_RelocationTable)&) const
+{
+  Standard_Integer anIndex;
+  Handle(SALOMEDSImpl_AttributeTableOfInteger) aTable = Handle(SALOMEDSImpl_AttributeTableOfInteger)::DownCast(into);
+
+  aTable->myTable.Clear();
+  aTable->myCols->Clear();
+  aTable->myRows->Clear();
+
+  aTable->myTable = myTable;
+  aTable->myTitle = myTitle;
+  aTable->myNbRows = myNbRows;
+  aTable->myNbColumns = myNbColumns;
+
+  for(anIndex = 1; anIndex <= GetNbRows();anIndex++)
+    aTable->myRows->Append(GetRowTitle(anIndex));
+  for(anIndex = 1; anIndex <= GetNbColumns(); anIndex++) 
+    aTable->myCols->Append(GetColumnTitle(anIndex));
+}
+
+
+Handle_TColStd_HSequenceOfInteger SALOMEDSImpl_AttributeTableOfInteger::GetSetRowIndices(const Standard_Integer theRow)
+{
+  Handle(TColStd_HSequenceOfInteger) aSeq = new TColStd_HSequenceOfInteger;
+
+  Standard_Integer i, aShift = myNbColumns*(theRow-1);
+  for(i = 1; i <= myNbColumns; i++) {
+    if(myTable.IsBound(aShift + i)) aSeq->Append(i);
+  }
+  
+  return aSeq;
+}
+
+Handle_TColStd_HSequenceOfInteger SALOMEDSImpl_AttributeTableOfInteger::GetSetColumnIndices(const Standard_Integer theColumn)
+{
+  Handle(TColStd_HSequenceOfInteger) aSeq = new TColStd_HSequenceOfInteger;
+
+  Standard_Integer i, anIndex;
+  for(i = 1; i <= myNbRows; i++) {
+    anIndex = myNbColumns*(i-1)+theColumn;
+    if(myTable.IsBound(anIndex)) aSeq->Append(i);
+  }
+  
+  return aSeq;
+}
+
+
+void SALOMEDSImpl_AttributeTableOfInteger::ConvertToString(ostrstream& theStream)
+{
+  int i, j, l;
+
+  theStream.precision(64);
+  
+  //Title
+  l = myTitle.Length();
+  theStream << l << "\n";
+  for(i=1; i<=l; i++)
+    theStream << myTitle.Value(i) << "\n";
+
+  //Nb rows
+  theStream << myNbRows << "\n";
+
+  //Rows titles
+  for(i=1; i<=myNbRows; i++) {
+    l = myRows->Value(i).Length();
+    theStream << l << "\n";
+    for(j=1; j<=l; j++)
+      theStream << myRows->Value(i).Value(j) << "\n";
+  }
+
+  //Nb columns
+  theStream << myNbColumns << "\n";
+
+  //Columns titles
+  for(i=1; i<=myNbColumns; i++) {
+    l = myCols->Value(i).Length();
+    theStream << l << "\n";
+    for(j=1; j<=l; j++)
+      theStream << myCols->Value(i).Value(j) << "\n";
+  }
+
+  //Store the table values
+  l = myTable.Extent();
+  theStream << l << "\n";
+  TColStd_DataMapIteratorOfDataMapOfIntegerInteger anIterator(myTable);
+  for(; anIterator.More(); anIterator.Next()) {
+    theStream << anIterator.Key() << "\n";
+    theStream << anIterator.Value() << "\n";
+  }
+
+  return;
+}
+
+bool SALOMEDSImpl_AttributeTableOfInteger::RestoreFromString(istrstream& theStream)
+{
+  Backup();
+
+  int i, j, l;
+
+  Standard_ExtCharacter anExtChar;
+  TCollection_ExtendedString aStr;
+
+  //Title
+  theStream >> l;
+
+  myTitle = TCollection_ExtendedString(l, 0);
+  for(i=1; i<=l; i++) {
+    theStream >> anExtChar;
+    myTitle.SetValue(i, anExtChar);
+  }
+
+  //Nb rows
+  theStream >> myNbRows;
+
+  //Rows titles
+  myRows->Clear();  
+  for(i=1; i<=myNbRows; i++) { 
+    theStream >> l;
+    aStr = TCollection_ExtendedString(l,0);
+    for(j=1; j<=l; j++) {
+      theStream >> anExtChar;
+      aStr.SetValue(j, anExtChar);
+    }
+    myRows->Append(aStr);
+  }
+
+  //Nb columns
+  theStream >> myNbColumns;
+
+  //Columns titles
+  myCols->Clear();
+  for(i=1; i<=myNbColumns; i++) {
+    theStream >> l;
+    aStr = TCollection_ExtendedString(l,0);
+    for(j=1; j<=l; j++) {
+      theStream >> anExtChar;
+      aStr.SetValue(j, anExtChar);
+    }
+    myCols->Append(aStr);
+  }
+
+  //Restore the table values
+  theStream >> l;
+  myTable.Clear();
+  for(i=1; i<=l; i++) {
+    int aKey, aValue;
+    theStream >> aKey;
+    theStream >> aValue;
+    myTable.Bind(aKey, aValue);
+  }
+
+  return true;
+}
+
+
+TCollection_AsciiString SALOMEDSImpl_AttributeTableOfInteger::Save() 
+{
+  ostrstream ostr;
+  ConvertToString(ostr);
+  TCollection_AsciiString aString((char*)ostr.rdbuf()->str());
+  return aString;
+}
+
+void SALOMEDSImpl_AttributeTableOfInteger::Load(const TCollection_AsciiString& value) 
+{
+  istrstream aStream(value.ToCString(), strlen(value.ToCString()));
+  RestoreFromString(aStream);
+}
diff --git a/src/SALOMEDSImpl/SALOMEDSImpl_AttributeTableOfInteger.hxx b/src/SALOMEDSImpl/SALOMEDSImpl_AttributeTableOfInteger.hxx
new file mode 100644 (file)
index 0000000..d1c1d40
--- /dev/null
@@ -0,0 +1,94 @@
+//  SALOME SALOMEDSImpl : data structure of SALOME and sources of Salome data server 
+//
+//  Copyright (C) 2003  CEA/DEN, EDF R&D
+//
+//
+//
+//  File   : SALOMEDSImpl_AttributeTableOfInteger.hxx
+//  Author : Michael Ponikarov
+//  Module : SALOME
+
+#ifndef _SALOMEDSImpl_AttributeTableOfInteger_HeaderFile
+#define _SALOMEDSImpl_AttributeTableOfInteger_HeaderFile
+
+#include <Standard_DefineHandle.hxx>
+#include <Standard.hxx>
+#include <TDF_Attribute.hxx>
+#include <TDF_Label.hxx>       
+#include "SALOMEDSImpl_GenericAttribute.hxx"
+
+class Standard_GUID;
+class Handle(TDF_Attribute);
+class Handle(TDF_RelocationTable);
+
+#include <TColStd_SequenceOfTransient.hxx>
+#include <TCollection_ExtendedString.hxx>
+#include <Handle_TColStd_HSequenceOfExtendedString.hxx>
+#include <TColStd_DataMapOfIntegerInteger.hxx>
+#include <TColStd_HSequenceOfInteger.hxx>
+#include <strstream>
+#include <TCollection_AsciiString.hxx>
+
+DEFINE_STANDARD_HANDLE( SALOMEDSImpl_AttributeTableOfInteger, SALOMEDSImpl_GenericAttribute )
+
+class SALOMEDSImpl_AttributeTableOfInteger : public SALOMEDSImpl_GenericAttribute 
+{
+
+public:
+Standard_EXPORT virtual TCollection_AsciiString Save();
+Standard_EXPORT virtual void Load(const TCollection_AsciiString&); 
+Standard_EXPORT static const Standard_GUID& GetID() ;
+Standard_EXPORT static  Handle_SALOMEDSImpl_AttributeTableOfInteger Set(const TDF_Label& label) ;
+Standard_EXPORT SALOMEDSImpl_AttributeTableOfInteger();
+Standard_EXPORT   void SetNbColumns(const Standard_Integer theNbColumns);
+Standard_EXPORT   void SetTitle(const TCollection_ExtendedString& theTitle) ;
+Standard_EXPORT   TCollection_ExtendedString GetTitle() const;
+Standard_EXPORT   void SetRowData(const Standard_Integer theRow,const Handle(TColStd_HSequenceOfInteger)& theData) ;
+Standard_EXPORT   Handle_TColStd_HSequenceOfInteger GetRowData(const Standard_Integer theRow) ;
+Standard_EXPORT   void SetRowTitle(const Standard_Integer theRow,const TCollection_ExtendedString& theTitle) ;
+Standard_EXPORT   void SetRowUnit(const Standard_Integer theRow,const TCollection_ExtendedString& theUnit) ;
+Standard_EXPORT   TCollection_ExtendedString GetRowUnit(const Standard_Integer theRow) const;
+Standard_EXPORT   void SetRowUnits(const Handle(TColStd_HSequenceOfExtendedString)& theUnits) ;
+Standard_EXPORT   Handle(TColStd_HSequenceOfExtendedString) GetRowUnits();
+Standard_EXPORT   void SetRowTitles(const Handle(TColStd_HSequenceOfExtendedString)& theTitles) ;
+Standard_EXPORT   Handle(TColStd_HSequenceOfExtendedString) GetRowTitles();
+Standard_EXPORT   TCollection_ExtendedString GetRowTitle(const Standard_Integer theRow) const;
+Standard_EXPORT   void SetColumnData(const Standard_Integer theColumn,const Handle(TColStd_HSequenceOfInteger)& theData) ;
+Standard_EXPORT   Handle_TColStd_HSequenceOfInteger GetColumnData(const Standard_Integer theColumn) ;
+Standard_EXPORT   void SetColumnTitle(const Standard_Integer theColumn,const TCollection_ExtendedString& theTitle) ;
+Standard_EXPORT   TCollection_ExtendedString GetColumnTitle(const Standard_Integer theColumn) const;
+Standard_EXPORT   void SetColumnTitles(const Handle(TColStd_HSequenceOfExtendedString)& theTitles);
+Standard_EXPORT   Handle(TColStd_HSequenceOfExtendedString) GetColumnTitles();
+Standard_EXPORT   Standard_Integer GetNbRows() const;
+Standard_EXPORT   Standard_Integer GetNbColumns() const;
+
+Standard_EXPORT   void PutValue(const Standard_Integer theValue,const Standard_Integer theRow,const Standard_Integer theColumn) ;
+Standard_EXPORT   Standard_Boolean HasValue(const Standard_Integer theRow,const Standard_Integer theColumn) ;
+Standard_EXPORT   Standard_Integer GetValue(const Standard_Integer theRow,const Standard_Integer theColumn) ;
+Standard_EXPORT  const Standard_GUID& ID() const;
+Standard_EXPORT   void Restore(const Handle(TDF_Attribute)& with) ;
+Standard_EXPORT   Handle_TDF_Attribute NewEmpty() const;
+Standard_EXPORT   void Paste(const Handle(TDF_Attribute)& into,const Handle(TDF_RelocationTable)& RT) const;
+
+Standard_EXPORT   Handle_TColStd_HSequenceOfInteger GetSetRowIndices(const Standard_Integer theRow);
+Standard_EXPORT   Handle_TColStd_HSequenceOfInteger GetSetColumnIndices(const Standard_Integer theColumn);
+
+Standard_EXPORT   void ConvertToString(ostrstream& theStream);
+Standard_EXPORT   bool RestoreFromString(istrstream& theStream);
+
+Standard_EXPORT ~SALOMEDSImpl_AttributeTableOfInteger() {}
+
+private: 
+
+TColStd_DataMapOfIntegerInteger myTable;
+TCollection_ExtendedString myTitle;
+Handle_TColStd_HSequenceOfExtendedString myRows;
+Handle_TColStd_HSequenceOfExtendedString myCols;
+Standard_Integer myNbRows;
+Standard_Integer myNbColumns;
+
+public:
+  DEFINE_STANDARD_RTTI( SALOMEDSImpl_AttributeTableOfInteger )
+};
+
+#endif
diff --git a/src/SALOMEDSImpl/SALOMEDSImpl_AttributeTableOfReal.cxx b/src/SALOMEDSImpl/SALOMEDSImpl_AttributeTableOfReal.cxx
new file mode 100644 (file)
index 0000000..a576764
--- /dev/null
@@ -0,0 +1,546 @@
+//  File   : SALOMEDSImpl_AttributeTableOfReal.cxx
+//  Author : Michael Ponikarov
+//  Module : SALOME
+
+#include <SALOMEDSImpl_AttributeTableOfReal.hxx>
+#include <Standard_Failure.hxx>
+#include <TColStd_DataMapIteratorOfDataMapOfIntegerReal.hxx>
+#include <Standard_GUID.hxx>
+#include <stdio.h>
+#include <TColStd_HSequenceOfExtendedString.hxx>  
+
+using namespace std;
+
+IMPLEMENT_STANDARD_HANDLE( SALOMEDSImpl_AttributeTableOfReal, SALOMEDSImpl_GenericAttribute )
+IMPLEMENT_STANDARD_RTTIEXT( SALOMEDSImpl_AttributeTableOfReal, SALOMEDSImpl_GenericAttribute )
+
+#define SEPARATOR '\1'
+
+static TCollection_ExtendedString getUnit(TCollection_ExtendedString theString)
+{
+  TCollection_ExtendedString aString(theString);
+  int aPos = aString.Search(SEPARATOR);
+  if(aPos <= 0 || aPos == aString.Length() ) return TCollection_ExtendedString();
+  return aString.Split(aPos);
+}
+
+static TCollection_ExtendedString getTitle(TCollection_ExtendedString theString)
+{
+  TCollection_ExtendedString aString(theString);
+  int aPos = aString.Search(SEPARATOR);
+  if(aPos < 1) return aString;
+  if(aPos == 1) return TCollection_ExtendedString();
+  aString.Split(aPos-1);
+  return aString;
+}
+
+const Standard_GUID& SALOMEDSImpl_AttributeTableOfReal::GetID() 
+{
+  static Standard_GUID SALOMEDSImpl_AttributeTableOfRealID ("128371A1-8F52-11d6-A8A3-0001021E8C7F");
+  return SALOMEDSImpl_AttributeTableOfRealID;
+}
+
+Handle(SALOMEDSImpl_AttributeTableOfReal) SALOMEDSImpl_AttributeTableOfReal::Set(const TDF_Label& label) 
+{
+  Handle(SALOMEDSImpl_AttributeTableOfReal) anAttr;
+  if (!label.FindAttribute(SALOMEDSImpl_AttributeTableOfReal::GetID(),anAttr)) {
+    anAttr = new SALOMEDSImpl_AttributeTableOfReal();
+    label.AddAttribute(anAttr);
+  }
+  return anAttr;
+}
+
+SALOMEDSImpl_AttributeTableOfReal::SALOMEDSImpl_AttributeTableOfReal() 
+:SALOMEDSImpl_GenericAttribute("AttributeTableOfReal")
+{
+  myRows = new TColStd_HSequenceOfExtendedString();
+  myCols = new TColStd_HSequenceOfExtendedString();
+  myNbRows = 0;
+  myNbColumns = 0;
+}
+
+void SALOMEDSImpl_AttributeTableOfReal::SetNbColumns(const Standard_Integer theNbColumns)
+{
+  CheckLocked();  
+  Backup();
+  
+  TColStd_DataMapOfIntegerReal aMap;
+  aMap = myTable;
+  myTable.Clear();
+
+  TColStd_DataMapIteratorOfDataMapOfIntegerReal anIterator(aMap);
+  for(; anIterator.More(); anIterator.Next()) {
+    int aRow = (int)(anIterator.Key()/myNbColumns) + 1;
+    int aCol = (int)(anIterator.Key() - myNbColumns*(aRow-1));
+    if(aCol == 0) { aCol = myNbColumns; aRow--; }
+    if(aCol > theNbColumns) continue;
+    int aKey = (aRow-1)*theNbColumns+aCol;
+    myTable.Bind(aKey, anIterator.Value());
+  }
+
+  myNbColumns = theNbColumns;
+
+  while (myCols->Length() < myNbColumns) { // append empty columns titles
+    myCols->Append(TCollection_ExtendedString(""));
+  }
+  
+  SetModifyFlag(); //SRN: Mark the study as being modified, so it could be saved 
+}
+
+void SALOMEDSImpl_AttributeTableOfReal::SetTitle(const TCollection_ExtendedString& theTitle) 
+{
+  CheckLocked();  
+  Backup();
+  myTitle = theTitle;
+  
+  SetModifyFlag(); //SRN: Mark the study as being modified, so it could be saved 
+}
+
+TCollection_ExtendedString SALOMEDSImpl_AttributeTableOfReal::GetTitle() const 
+{
+  return myTitle;
+}
+
+void SALOMEDSImpl_AttributeTableOfReal::SetRowData(const Standard_Integer theRow,
+                                                  const Handle(TColStd_HSequenceOfReal)& theData) 
+{
+  CheckLocked();  
+  if(theData->Length() > myNbColumns) SetNbColumns(theData->Length());
+
+  Backup();
+
+  while (myRows->Length() < theRow) { // append new row titles
+    myRows->Append(TCollection_ExtendedString(""));
+  }
+
+  Standard_Integer i, aShift = (theRow-1)*myNbColumns, aLength = theData->Length();
+  for(i = 1; i <= aLength; i++) {
+    myTable.Bind(aShift + i, theData->Value(i));
+  }
+
+  if(theRow > myNbRows) myNbRows = theRow;
+  
+  SetModifyFlag(); //SRN: Mark the study as being modified, so it could be saved 
+}
+
+Handle(TColStd_HSequenceOfReal) SALOMEDSImpl_AttributeTableOfReal::GetRowData(const Standard_Integer theRow)
+{
+  Handle(TColStd_HSequenceOfReal) aSeq = new TColStd_HSequenceOfReal();
+  Standard_Integer i, aShift = (theRow-1)*myNbColumns;
+  for(i = 1; i <= myNbColumns; i++) {
+     if(myTable.IsBound(aShift+i)) 
+       aSeq->Append(myTable.Find(aShift+i));
+     else
+       aSeq->Append(0.);
+  }
+  
+  return aSeq;
+}
+
+
+void SALOMEDSImpl_AttributeTableOfReal::SetRowTitle(const Standard_Integer theRow,
+                                                      const TCollection_ExtendedString& theTitle) 
+{
+  CheckLocked();  
+  Backup();
+  TCollection_ExtendedString aTitle(theTitle), aUnit = GetRowUnit(theRow);
+  if(aUnit.Length()>0) {
+    aTitle += SEPARATOR;
+    aTitle += aUnit;
+  }
+  myRows->SetValue(theRow, aTitle);
+  
+  SetModifyFlag(); //SRN: Mark the study as being modified, so it could be saved 
+}
+
+void SALOMEDSImpl_AttributeTableOfReal::SetRowUnit(const Standard_Integer theRow,
+                                                     const TCollection_ExtendedString& theUnit) 
+{
+  CheckLocked();  
+  Backup();
+  TCollection_ExtendedString aTitle = GetRowTitle(theRow);
+  aTitle += SEPARATOR;
+  aTitle += theUnit;
+
+  myRows->SetValue(theRow, aTitle);
+  
+  SetModifyFlag(); //SRN: Mark the study as being modified, so it could be saved 
+}
+
+void SALOMEDSImpl_AttributeTableOfReal::SetRowUnits(const Handle(TColStd_HSequenceOfExtendedString)& theUnits)
+{
+  if (theUnits->Length() != GetNbRows()) Standard_Failure::Raise("Invalid number of rows");
+  int aLength = theUnits->Length(), i;
+  for(i = 1; i <= aLength; i++) SetRowUnit(i, theUnits->Value(i));
+  
+  SetModifyFlag(); //SRN: Mark the study as being modified, so it could be saved 
+}
+
+Handle(TColStd_HSequenceOfExtendedString) SALOMEDSImpl_AttributeTableOfReal::GetRowUnits()
+{
+  Handle(TColStd_HSequenceOfExtendedString) aSeq = new TColStd_HSequenceOfExtendedString;
+  int aLength = myRows->Length(), i;
+  for(i=1; i<=aLength; i++) aSeq->Append(getUnit(myRows->Value(i)));
+  return aSeq;
+}
+
+void SALOMEDSImpl_AttributeTableOfReal::SetRowTitles(const Handle(TColStd_HSequenceOfExtendedString)& theTitles)
+{
+  if (theTitles->Length() != GetNbRows()) Standard_Failure::Raise("Invalid number of rows");
+  int aLength = theTitles->Length(), i;
+  for(i = 1; i <= aLength; i++) SetRowTitle(i, theTitles->Value(i));
+  
+  SetModifyFlag(); //SRN: Mark the study as being modified, so it could be saved 
+}
+
+Handle(TColStd_HSequenceOfExtendedString) SALOMEDSImpl_AttributeTableOfReal::GetRowTitles()
+{
+  Handle(TColStd_HSequenceOfExtendedString) aSeq = new TColStd_HSequenceOfExtendedString;
+  int aLength = myRows->Length(), i;
+  for(i=1; i<=aLength; i++) aSeq->Append(getTitle(myRows->Value(i)));
+  return aSeq;
+}
+
+
+TCollection_ExtendedString SALOMEDSImpl_AttributeTableOfReal::GetRowTitle(const Standard_Integer theRow) const 
+{
+  return getTitle(myRows->Value(theRow));
+}
+
+
+TCollection_ExtendedString SALOMEDSImpl_AttributeTableOfReal::GetRowUnit(const Standard_Integer theRow) const 
+{
+  return getUnit(myRows->Value(theRow));
+}
+
+void SALOMEDSImpl_AttributeTableOfReal::SetColumnData(const Standard_Integer theColumn,
+                                                     const Handle(TColStd_HSequenceOfReal)& theData) 
+{
+  CheckLocked();  
+  if(theColumn > myNbColumns) SetNbColumns(theColumn);
+
+  Backup();
+
+  Standard_Integer i, aLength = theData->Length();
+  for(i = 1; i <= aLength; i++) {
+    myTable.Bind(myNbColumns*(i-1)+theColumn, theData->Value(i));
+  }
+
+  if(aLength > myNbRows) {
+    myNbRows = aLength;
+    while (myRows->Length() < myNbRows) { // append empty row titles
+      myRows->Append(TCollection_ExtendedString(""));
+    }
+  }
+  
+  SetModifyFlag(); //SRN: Mark the study as being modified, so it could be saved 
+}
+
+
+Handle(TColStd_HSequenceOfReal) SALOMEDSImpl_AttributeTableOfReal::GetColumnData(const Standard_Integer theColumn)
+{
+  Handle(TColStd_HSequenceOfReal) aSeq = new TColStd_HSequenceOfReal;
+  
+  Standard_Integer i, anIndex;
+  for(i = 1; i <= myNbRows; i++) {
+    anIndex = myNbColumns*(i-1) + theColumn;
+    if(myTable.IsBound(anIndex)) 
+      aSeq->Append(myTable.Find(anIndex));
+    else
+      aSeq->Append(0.);
+  }
+  
+  return aSeq;
+}
+
+void SALOMEDSImpl_AttributeTableOfReal::SetColumnTitle(const Standard_Integer theColumn,
+                                                      const TCollection_ExtendedString& theTitle) 
+{
+  CheckLocked();  
+  Backup();
+  while(myCols->Length() < theColumn) myCols->Append(TCollection_ExtendedString(""));
+  myCols->SetValue(theColumn,theTitle);
+  
+  SetModifyFlag(); //SRN: Mark the study as being modified, so it could be saved 
+}
+
+TCollection_ExtendedString SALOMEDSImpl_AttributeTableOfReal::GetColumnTitle(const Standard_Integer theColumn) const 
+{
+  if(myCols.IsNull()) return "";
+  if(myCols->Length() < theColumn) return "";
+  return myCols->Value(theColumn);
+}
+
+void SALOMEDSImpl_AttributeTableOfReal::SetColumnTitles(const Handle(TColStd_HSequenceOfExtendedString)& theTitles)
+{
+  if (theTitles->Length() != myNbColumns) Standard_Failure::Raise("Invalid number of columns");
+  int aLength = theTitles->Length(), i;
+  for(i = 1; i <= aLength; i++)  myCols->SetValue(i, theTitles->Value(i));
+  
+  SetModifyFlag(); //SRN: Mark the study as being modified, so it could be saved 
+}
+
+Handle(TColStd_HSequenceOfExtendedString) SALOMEDSImpl_AttributeTableOfReal::GetColumnTitles()
+{
+  Handle(TColStd_HSequenceOfExtendedString) aSeq = new TColStd_HSequenceOfExtendedString;
+  int aLength = myCols->Length(), i;
+  for(i=1; i<=aLength; i++) aSeq->Append(myCols->Value(i));
+  return aSeq;
+}
+
+Standard_Integer SALOMEDSImpl_AttributeTableOfReal::GetNbRows() const
+{
+  return myNbRows;
+}
+
+Standard_Integer SALOMEDSImpl_AttributeTableOfReal::GetNbColumns() const
+{
+  return myNbColumns;
+}
+
+void SALOMEDSImpl_AttributeTableOfReal::PutValue(const Standard_Real theValue,
+                                            const Standard_Integer theRow,
+                                            const Standard_Integer theColumn) 
+{
+  CheckLocked();      
+  if(theColumn > myNbColumns) SetNbColumns(theColumn);
+
+  Standard_Integer anIndex = (theRow-1)*myNbColumns + theColumn;
+  myTable.Bind(anIndex, theValue);
+
+  if(theRow > myNbRows) {
+    while (myRows->Length() < theRow) { // append empty row titles
+      myRows->Append(TCollection_ExtendedString(""));
+    }
+    myNbRows = theRow;
+  }
+  
+  SetModifyFlag(); //SRN: Mark the study as being modified, so it could be saved 
+}
+
+Standard_Boolean SALOMEDSImpl_AttributeTableOfReal::HasValue(const Standard_Integer theRow,
+                                                        const Standard_Integer theColumn) 
+{
+  if(theRow > myNbRows || theRow < 1) return Standard_False;
+  if(theColumn > myNbColumns || theColumn < 1) return Standard_False;
+  Standard_Integer anIndex = (theRow-1)*myNbColumns + theColumn;
+  return myTable.IsBound(anIndex); 
+}
+
+Standard_Real SALOMEDSImpl_AttributeTableOfReal::GetValue(const Standard_Integer theRow,
+                                                     const Standard_Integer theColumn) 
+{
+  if(theRow > myNbRows || theRow < 1) Standard_Failure::Raise("Invalid cell index");
+  if(theColumn > myNbColumns || theColumn < 1) Standard_Failure::Raise("Invalid cell index");
+
+  Standard_Integer anIndex = (theRow-1)*myNbColumns + theColumn;
+  if(myTable.IsBound(anIndex)) return myTable.Find(anIndex);
+  
+  Standard_Failure::Raise("Invalid cell index");
+  return 0.;
+}
+
+const Standard_GUID& SALOMEDSImpl_AttributeTableOfReal::ID() const
+{
+  return GetID();
+}
+
+void SALOMEDSImpl_AttributeTableOfReal::Restore(const Handle(TDF_Attribute)& with) 
+{
+  Standard_Integer anIndex;
+  Handle(SALOMEDSImpl_AttributeTableOfReal) aTable = Handle(SALOMEDSImpl_AttributeTableOfReal)::DownCast(with);
+
+  myTable.Clear();
+  myCols->Clear();
+  myRows->Clear();
+
+  myTable = aTable->myTable;
+  myNbRows = aTable->myNbRows;
+  myNbColumns = aTable->myNbColumns;
+  myTitle = aTable->myTitle;
+  
+  for(anIndex = 1; anIndex <= aTable->GetNbRows();anIndex++)
+    myRows->Append(aTable->GetRowTitle(anIndex));
+
+  for(anIndex = 1; anIndex <= aTable->GetNbColumns(); anIndex++) 
+    myCols->Append(aTable->GetColumnTitle(anIndex));
+}
+
+Handle(TDF_Attribute) SALOMEDSImpl_AttributeTableOfReal::NewEmpty() const
+{
+  return new SALOMEDSImpl_AttributeTableOfReal();
+}
+
+void SALOMEDSImpl_AttributeTableOfReal::Paste(const Handle(TDF_Attribute)& into,
+                                            const Handle(TDF_RelocationTable)&) const
+{
+  Standard_Integer anIndex;
+  Handle(SALOMEDSImpl_AttributeTableOfReal) aTable = Handle(SALOMEDSImpl_AttributeTableOfReal)::DownCast(into);
+
+  aTable->myTable.Clear();
+  aTable->myCols->Clear();
+  aTable->myRows->Clear();
+
+  aTable->myTable = myTable;
+  aTable->myTitle = myTitle;
+  aTable->myNbRows = myNbRows;
+  aTable->myNbColumns = myNbColumns;
+
+  for(anIndex = 1; anIndex <= GetNbRows();anIndex++)
+    aTable->myRows->Append(GetRowTitle(anIndex));
+  for(anIndex = 1; anIndex <= GetNbColumns(); anIndex++) 
+    aTable->myCols->Append(GetColumnTitle(anIndex));
+}
+
+
+Handle_TColStd_HSequenceOfInteger SALOMEDSImpl_AttributeTableOfReal::GetSetRowIndices(const Standard_Integer theRow)
+{
+  Handle(TColStd_HSequenceOfInteger) aSeq = new TColStd_HSequenceOfInteger;
+
+  Standard_Integer i, aShift = myNbColumns*(theRow-1);
+  for(i = 1; i <= myNbColumns; i++) {
+    if(myTable.IsBound(aShift + i)) aSeq->Append(i);
+  }
+  
+  return aSeq;
+}
+
+Handle_TColStd_HSequenceOfInteger SALOMEDSImpl_AttributeTableOfReal::GetSetColumnIndices(const Standard_Integer theColumn)
+{
+  Handle(TColStd_HSequenceOfInteger) aSeq = new TColStd_HSequenceOfInteger;
+
+  Standard_Integer i, anIndex;
+  for(i = 1; i <= myNbRows; i++) {
+    anIndex = myNbColumns*(i-1)+theColumn;
+    if(myTable.IsBound(anIndex)) aSeq->Append(i);
+  }
+  
+  return aSeq;
+}
+
+
+
+void SALOMEDSImpl_AttributeTableOfReal::ConvertToString(ostrstream& theStream)
+{
+  int i, j, l;
+
+  
+  //Title
+  l = myTitle.Length();
+  theStream << l << "\n";
+  for(i=1; i<=l; i++)
+    theStream << myTitle.Value(i) << "\n";
+
+  //Nb rows
+  theStream << myNbRows << "\n";
+
+  //Rows titles
+  for(i=1; i<=myNbRows; i++) {
+    l = myRows->Value(i).Length();
+    theStream << l << "\n";
+    for(j=1; j<=l; j++)
+      theStream << myRows->Value(i).Value(j) << "\n";
+  }
+
+  //Nb columns
+  theStream << myNbColumns << "\n";
+
+  //Columns titles
+  for(i=1; i<=myNbColumns; i++) {
+    l = myCols->Value(i).Length();
+    theStream << l << "\n";
+    for(j=1; j<=l; j++)
+      theStream << myCols->Value(i).Value(j) << "\n";
+  }
+
+  //Store the table values
+  l = myTable.Extent();
+  theStream << l << "\n";
+  char *aBuffer = new char[128];
+  TColStd_DataMapIteratorOfDataMapOfIntegerReal anIterator(myTable);
+  for(; anIterator.More(); anIterator.Next()) {
+    theStream << anIterator.Key() << "\n";
+    sprintf(aBuffer, "%.64e", anIterator.Value());
+    theStream << aBuffer << "\n";
+  }
+  
+  delete []aBuffer;
+
+  return;
+}
+
+bool SALOMEDSImpl_AttributeTableOfReal::RestoreFromString(istrstream& theStream)
+{
+  Backup();
+
+  int i, j, l;
+
+  Standard_ExtCharacter anExtChar;
+  TCollection_ExtendedString aStr;
+
+  //Title
+  theStream >> l;
+
+  myTitle = TCollection_ExtendedString(l, 0);
+  for(i=1; i<=l; i++) {
+    theStream >> anExtChar;
+    myTitle.SetValue(i, anExtChar);
+  }
+
+  //Nb rows
+  theStream >> myNbRows;
+
+  //Rows titles
+  myRows->Clear();  
+  for(i=1; i<=myNbRows; i++) { 
+    theStream >> l;
+    aStr = TCollection_ExtendedString(l,0);
+    for(j=1; j<=l; j++) {
+      theStream >> anExtChar;
+      aStr.SetValue(j, anExtChar);
+    }
+    myRows->Append(aStr);
+  }
+
+  //Nb columns
+  theStream >> myNbColumns;
+
+  //Columns titles
+  myCols->Clear();
+  for(i=1; i<=myNbColumns; i++) {
+    theStream >> l;
+    aStr = TCollection_ExtendedString(l,0);
+    for(j=1; j<=l; j++) {
+      theStream >> anExtChar;
+      aStr.SetValue(j, anExtChar);
+    }
+    myCols->Append(aStr);
+  }
+
+  //Restore the table values
+  theStream >> l;
+  myTable.Clear();
+  for(i=1; i<=l; i++) {
+    Standard_Integer aKey;
+    Standard_Real aValue;
+    theStream >> aKey;
+    theStream >> aValue;
+    myTable.Bind(aKey, aValue);
+  }
+
+  return true;
+}
+
+TCollection_AsciiString SALOMEDSImpl_AttributeTableOfReal::Save() 
+{
+  ostrstream ostr;
+  ConvertToString(ostr);
+  TCollection_AsciiString aString((char*)ostr.rdbuf()->str());
+  return aString;
+}
+
+void SALOMEDSImpl_AttributeTableOfReal::Load(const TCollection_AsciiString& value) 
+{
+  istrstream aStream(value.ToCString(), strlen(value.ToCString()));
+  RestoreFromString(aStream);
+}
diff --git a/src/SALOMEDSImpl/SALOMEDSImpl_AttributeTableOfReal.hxx b/src/SALOMEDSImpl/SALOMEDSImpl_AttributeTableOfReal.hxx
new file mode 100644 (file)
index 0000000..2213092
--- /dev/null
@@ -0,0 +1,97 @@
+//  SALOME SALOMEDSImpl : data structure of SALOME and sources of Salome data server 
+//
+//  Copyright (C) 2003  CEA/DEN, EDF R&D
+//
+//
+//
+//  File   : SALOMEDSImpl_AttributeTableOfReal.hxx
+//  Author : Michael Ponikarov
+//  Module : SALOME
+
+#ifndef _SALOMEDSImpl_AttributeTableOfReal_HeaderFile
+#define _SALOMEDSImpl_AttributeTableOfReal_HeaderFile
+
+#include <Standard_DefineHandle.hxx>
+#include <Standard.hxx>
+#include <TDF_Attribute.hxx>
+#include <TDF_Label.hxx>       
+#include "SALOMEDSImpl_GenericAttribute.hxx"
+
+class Standard_GUID;
+class Handle(TDF_Attribute);
+class Handle(TDF_RelocationTable);
+
+
+DEFINE_STANDARD_HANDLE( SALOMEDSImpl_AttributeTableOfReal, SALOMEDSImpl_GenericAttribute )
+
+#include <TColStd_SequenceOfTransient.hxx>
+#include <TCollection_ExtendedString.hxx>
+#include <TColStd_HSequenceOfExtendedString.hxx>
+#include <TColStd_DataMapOfIntegerReal.hxx>
+#include <TColStd_HSequenceOfInteger.hxx>
+#include <TColStd_HSequenceOfReal.hxx>
+
+#include <strstream>
+#include <TCollection_AsciiString.hxx>
+
+class SALOMEDSImpl_AttributeTableOfReal : public SALOMEDSImpl_GenericAttribute 
+{
+
+public:
+Standard_EXPORT virtual TCollection_AsciiString Save();
+Standard_EXPORT virtual void Load(const TCollection_AsciiString&); 
+Standard_EXPORT static const Standard_GUID& GetID() ;
+Standard_EXPORT static  Handle_SALOMEDSImpl_AttributeTableOfReal Set(const TDF_Label& label) ;
+Standard_EXPORT SALOMEDSImpl_AttributeTableOfReal();
+Standard_EXPORT   void SetNbColumns(const Standard_Integer theNbColumns);
+Standard_EXPORT   void SetTitle(const TCollection_ExtendedString& theTitle) ;
+Standard_EXPORT   TCollection_ExtendedString GetTitle() const;
+Standard_EXPORT   void SetRowData(const Standard_Integer theRow,const Handle(TColStd_HSequenceOfReal)& theData) ;
+Standard_EXPORT   Handle_TColStd_HSequenceOfReal GetRowData(const Standard_Integer theRow) ;
+Standard_EXPORT   void SetRowTitle(const Standard_Integer theRow,const TCollection_ExtendedString& theTitle) ;
+Standard_EXPORT   void SetRowUnit(const Standard_Integer theRow,const TCollection_ExtendedString& theUnit) ;
+Standard_EXPORT   TCollection_ExtendedString GetRowUnit(const Standard_Integer theRow) const;
+Standard_EXPORT   void SetRowUnits(const Handle(TColStd_HSequenceOfExtendedString)& theUnits) ;
+Standard_EXPORT   Handle(TColStd_HSequenceOfExtendedString) GetRowUnits();
+Standard_EXPORT   void SetRowTitles(const Handle(TColStd_HSequenceOfExtendedString)& theTitles) ;
+Standard_EXPORT   Handle(TColStd_HSequenceOfExtendedString) GetRowTitles();
+Standard_EXPORT   TCollection_ExtendedString GetRowTitle(const Standard_Integer theRow) const;
+Standard_EXPORT   void SetColumnData(const Standard_Integer theColumn,const Handle(TColStd_HSequenceOfReal)& theData) ;
+Standard_EXPORT   Handle_TColStd_HSequenceOfReal GetColumnData(const Standard_Integer theColumn) ;
+Standard_EXPORT   void SetColumnTitle(const Standard_Integer theColumn,const TCollection_ExtendedString& theTitle) ;
+Standard_EXPORT   void SetColumnTitles(const Handle(TColStd_HSequenceOfExtendedString)& theTitles);
+Standard_EXPORT   Handle(TColStd_HSequenceOfExtendedString) GetColumnTitles();
+Standard_EXPORT   TCollection_ExtendedString GetColumnTitle(const Standard_Integer theColumn) const;
+Standard_EXPORT   Standard_Integer GetNbRows() const;
+Standard_EXPORT   Standard_Integer GetNbColumns() const;
+
+Standard_EXPORT   void PutValue(const Standard_Real theValue,const Standard_Integer theRow,const Standard_Integer theColumn) ;
+Standard_EXPORT   Standard_Boolean HasValue(const Standard_Integer theRow,const Standard_Integer theColumn) ;
+Standard_EXPORT   Standard_Real GetValue(const Standard_Integer theRow,const Standard_Integer theColumn) ;
+Standard_EXPORT  const Standard_GUID& ID() const;
+Standard_EXPORT   void Restore(const Handle(TDF_Attribute)& with) ;
+Standard_EXPORT   Handle_TDF_Attribute NewEmpty() const;
+Standard_EXPORT   void Paste(const Handle(TDF_Attribute)& into,const Handle(TDF_RelocationTable)& RT) const;
+
+Standard_EXPORT   Handle_TColStd_HSequenceOfInteger GetSetRowIndices(const Standard_Integer theRow);
+Standard_EXPORT   Handle_TColStd_HSequenceOfInteger GetSetColumnIndices(const Standard_Integer theColumn);
+
+Standard_EXPORT   void ConvertToString(ostrstream& theStream);
+Standard_EXPORT   bool RestoreFromString(istrstream& theStream);
+
+Standard_EXPORT ~SALOMEDSImpl_AttributeTableOfReal() {}
+
+private: 
+TColStd_DataMapOfIntegerReal myTable;
+TCollection_ExtendedString myTitle;
+Handle_TColStd_HSequenceOfExtendedString myRows;
+Handle_TColStd_HSequenceOfExtendedString myCols;
+Standard_Integer myNbRows;
+Standard_Integer myNbColumns;
+
+public:
+  DEFINE_STANDARD_RTTI( SALOMEDSImpl_AttributeTableOfReal )
+
+};
+
+#endif
diff --git a/src/SALOMEDSImpl/SALOMEDSImpl_AttributeTableOfString.cxx b/src/SALOMEDSImpl/SALOMEDSImpl_AttributeTableOfString.cxx
new file mode 100644 (file)
index 0000000..9aca851
--- /dev/null
@@ -0,0 +1,566 @@
+//  File   : SALOMEDSImpl_AttributeTableOfString.cxx
+//  Author : Sergey Ruin
+//  Module : SALOME
+
+#include <SALOMEDSImpl_AttributeTableOfString.hxx>
+#include <Standard_Failure.hxx>
+#include <Standard_GUID.hxx>
+#include <stdio.h>
+#include <TColStd_HSequenceOfExtendedString.hxx>  
+
+using namespace std;
+
+IMPLEMENT_STANDARD_HANDLE( SALOMEDSImpl_AttributeTableOfString, SALOMEDSImpl_GenericAttribute )
+IMPLEMENT_STANDARD_RTTIEXT( SALOMEDSImpl_AttributeTableOfString, SALOMEDSImpl_GenericAttribute )
+
+typedef NCollection_DataMap<Standard_Integer, TCollection_ExtendedString>::Iterator DataMapIterator;
+
+#define SEPARATOR '\1'
+
+static TCollection_ExtendedString getUnit(TCollection_ExtendedString theString)
+{
+  TCollection_ExtendedString aString(theString);
+  int aPos = aString.Search(SEPARATOR);
+  if(aPos <= 0 || aPos == aString.Length() ) return TCollection_ExtendedString();
+  return aString.Split(aPos);
+}
+
+static TCollection_ExtendedString getTitle(TCollection_ExtendedString theString)
+{
+  TCollection_ExtendedString aString(theString);
+  int aPos = aString.Search(SEPARATOR);
+  if(aPos < 1) return aString;
+  if(aPos == 1) return TCollection_ExtendedString();
+  aString.Split(aPos-1);
+  return aString;
+}
+
+const Standard_GUID& SALOMEDSImpl_AttributeTableOfString::GetID() 
+{
+  static Standard_GUID SALOMEDSImpl_AttributeTableOfStringID ("128371A4-8F52-11d6-A8A3-0001021E8C7F");
+  return SALOMEDSImpl_AttributeTableOfStringID;
+}
+
+Handle(SALOMEDSImpl_AttributeTableOfString) SALOMEDSImpl_AttributeTableOfString::Set(const TDF_Label& label) 
+{
+  Handle(SALOMEDSImpl_AttributeTableOfString) anAttr;
+  if (!label.FindAttribute(SALOMEDSImpl_AttributeTableOfString::GetID(),anAttr)) {
+    anAttr = new SALOMEDSImpl_AttributeTableOfString();
+    label.AddAttribute(anAttr);
+  }
+  return anAttr;
+}
+
+SALOMEDSImpl_AttributeTableOfString::SALOMEDSImpl_AttributeTableOfString() 
+:SALOMEDSImpl_GenericAttribute("AttributeTableOfString")
+{
+  myRows = new TColStd_HSequenceOfExtendedString();
+  myCols = new TColStd_HSequenceOfExtendedString();
+  myNbRows = 0;
+  myNbColumns = 0;
+}
+
+void SALOMEDSImpl_AttributeTableOfString::SetNbColumns(const Standard_Integer theNbColumns)
+{
+  CheckLocked();  
+  Backup();
+  
+  DataMapOfIntegerString aMap;
+  aMap = myTable;
+  myTable.Clear();
+
+  DataMapIterator anIterator(aMap);
+  for(; anIterator.More(); anIterator.Next()) {
+    int aRow = (int)(anIterator.Key()/myNbColumns) + 1;
+    int aCol = (int)(anIterator.Key() - myNbColumns*(aRow-1));
+    if(aCol == 0) { aCol = myNbColumns; aRow--; }
+    if(aCol > theNbColumns) continue;
+    int aKey = (aRow-1)*theNbColumns+aCol;
+    myTable.Bind(aKey, anIterator.Value());
+  }
+
+  myNbColumns = theNbColumns;
+
+  while (myCols->Length() < myNbColumns) { // append empty columns titles
+    myCols->Append(TCollection_ExtendedString(""));
+  }
+
+  SetModifyFlag(); //SRN: Mark the study as being modified, so it could be saved 
+}
+
+void SALOMEDSImpl_AttributeTableOfString::SetRowTitle(const Standard_Integer theRow,
+                                                     const TCollection_ExtendedString& theTitle) 
+{
+  CheckLocked();  
+  Backup();
+  TCollection_ExtendedString aTitle(theTitle), aUnit = GetRowUnit(theRow);
+  if(aUnit.Length()>0) {
+    aTitle += SEPARATOR;
+    aTitle += aUnit;
+  }
+  myRows->SetValue(theRow, aTitle);
+  
+  SetModifyFlag(); //SRN: Mark the study as being modified, so it could be saved 
+}
+
+void SALOMEDSImpl_AttributeTableOfString::SetRowUnit(const Standard_Integer theRow,
+                                                     const TCollection_ExtendedString& theUnit) 
+{
+  CheckLocked();  
+  Backup();
+  TCollection_ExtendedString aTitle = GetRowTitle(theRow);
+  aTitle += SEPARATOR;
+  aTitle += theUnit;
+
+  myRows->SetValue(theRow, aTitle);
+  
+  SetModifyFlag(); //SRN: Mark the study as being modified, so it could be saved 
+}
+
+void SALOMEDSImpl_AttributeTableOfString::SetRowUnits(const Handle(TColStd_HSequenceOfExtendedString)& theUnits)
+{
+  if (theUnits->Length() != GetNbRows()) Standard_Failure::Raise("Invalid number of rows");
+  int aLength = theUnits->Length(), i;
+  for(i = 1; i <= aLength; i++) SetRowUnit(i, theUnits->Value(i));
+}
+
+Handle(TColStd_HSequenceOfExtendedString) SALOMEDSImpl_AttributeTableOfString::GetRowUnits()
+{
+  Handle(TColStd_HSequenceOfExtendedString) aSeq = new TColStd_HSequenceOfExtendedString;
+  int aLength = myRows->Length(), i;
+  for(i=1; i<=aLength; i++) aSeq->Append(getUnit(myRows->Value(i)));
+  return aSeq;
+}
+
+void SALOMEDSImpl_AttributeTableOfString::SetRowTitles(const Handle(TColStd_HSequenceOfExtendedString)& theTitles)
+{
+  if (theTitles->Length() != GetNbRows()) Standard_Failure::Raise("Invalid number of rows");
+  int aLength = theTitles->Length(), i;
+  for(i = 1; i <= aLength; i++) SetRowTitle(i, theTitles->Value(i));
+  
+  SetModifyFlag(); //SRN: Mark the study as being modified, so it could be saved 
+}
+
+Handle(TColStd_HSequenceOfExtendedString) SALOMEDSImpl_AttributeTableOfString::GetRowTitles()
+{
+  Handle(TColStd_HSequenceOfExtendedString) aSeq = new TColStd_HSequenceOfExtendedString;
+  int aLength = myRows->Length(), i;
+  for(i=1; i<=aLength; i++) aSeq->Append(getTitle(myRows->Value(i)));
+  return aSeq;
+}
+
+
+TCollection_ExtendedString SALOMEDSImpl_AttributeTableOfString::GetRowTitle(const Standard_Integer theRow) const 
+{
+  return getTitle(myRows->Value(theRow));
+}
+
+
+TCollection_ExtendedString SALOMEDSImpl_AttributeTableOfString::GetRowUnit(const Standard_Integer theRow) const 
+{
+  return getUnit(myRows->Value(theRow));
+}
+
+void SALOMEDSImpl_AttributeTableOfString::SetRowData(const Standard_Integer theRow,
+                                                    const Handle(TColStd_HSequenceOfExtendedString)& theData) 
+{
+  CheckLocked();  
+  if(theData->Length() > myNbColumns) SetNbColumns(theData->Length());
+
+  Backup();
+
+  while (myRows->Length() < theRow) { // append new row titles
+    myRows->Append(TCollection_ExtendedString(""));
+  }
+
+  Standard_Integer i, aShift = (theRow-1)*myNbColumns, aLength = theData->Length();
+  for(i = 1; i <= aLength; i++) {
+    myTable.Bind(aShift + i, theData->Value(i));
+  }
+
+  if(theRow > myNbRows) myNbRows = theRow;
+  
+  SetModifyFlag(); //SRN: Mark the study as being modified, so it could be saved 
+}
+
+void SALOMEDSImpl_AttributeTableOfString::SetTitle(const TCollection_ExtendedString& theTitle) 
+{
+  CheckLocked();  
+  Backup();
+  myTitle = theTitle;
+  
+  SetModifyFlag(); //SRN: Mark the study as being modified, so it could be saved 
+}
+
+TCollection_ExtendedString SALOMEDSImpl_AttributeTableOfString::GetTitle() const 
+{
+  return myTitle;
+}
+
+Handle(TColStd_HSequenceOfExtendedString) SALOMEDSImpl_AttributeTableOfString::GetRowData(const Standard_Integer theRow)
+{
+  Handle(TColStd_HSequenceOfExtendedString) aSeq = new TColStd_HSequenceOfExtendedString();
+  Standard_Integer i, aShift = (theRow-1)*myNbColumns;
+  for(i = 1; i <= myNbColumns; i++) {
+     if(myTable.IsBound(aShift+i)) 
+       aSeq->Append(myTable.Find(aShift+i));
+     else
+       aSeq->Append(0.);
+  }
+  
+  return aSeq;
+}
+
+void SALOMEDSImpl_AttributeTableOfString::SetColumnData(const Standard_Integer theColumn,
+                                                       const Handle(TColStd_HSequenceOfExtendedString)& theData) 
+{
+  CheckLocked();  
+  if(theColumn > myNbColumns) SetNbColumns(theColumn);
+
+  Backup();
+
+  Standard_Integer i, aLength = theData->Length();
+  for(i = 1; i <= aLength; i++) {
+    myTable.Bind(myNbColumns*(i-1)+theColumn, theData->Value(i));
+  }
+
+  if(aLength > myNbRows) {
+    myNbRows = aLength;
+    while (myRows->Length() < myNbRows) { // append empty row titles
+      myRows->Append(TCollection_ExtendedString(""));
+    }
+  }
+  
+  SetModifyFlag(); //SRN: Mark the study as being modified, so it could be saved 
+}
+
+
+Handle(TColStd_HSequenceOfExtendedString) SALOMEDSImpl_AttributeTableOfString::GetColumnData(const Standard_Integer theColumn)
+{
+  Handle(TColStd_HSequenceOfExtendedString) aSeq = new TColStd_HSequenceOfExtendedString;
+  
+  Standard_Integer i, anIndex;
+  for(i = 1; i <= myNbRows; i++) {
+    anIndex = myNbColumns*(i-1) + theColumn;
+    if(myTable.IsBound(anIndex)) 
+      aSeq->Append(myTable.Find(anIndex));
+    else
+      aSeq->Append(0.);
+  }
+  
+  return aSeq;
+}
+
+void SALOMEDSImpl_AttributeTableOfString::SetColumnTitle(const Standard_Integer theColumn,
+                                                        const TCollection_ExtendedString& theTitle) 
+{
+  CheckLocked();  
+  Backup();
+  while(myCols->Length() < theColumn) myCols->Append(TCollection_ExtendedString(""));
+  myCols->SetValue(theColumn,theTitle);
+  
+  SetModifyFlag(); //SRN: Mark the study as being modified, so it could be saved 
+}
+
+TCollection_ExtendedString SALOMEDSImpl_AttributeTableOfString::GetColumnTitle(const Standard_Integer theColumn) const 
+{
+  if(myCols.IsNull()) return "";
+  if(myCols->Length() < theColumn) return "";
+  return myCols->Value(theColumn);
+}
+
+
+void SALOMEDSImpl_AttributeTableOfString::SetColumnTitles(const Handle(TColStd_HSequenceOfExtendedString)& theTitles)
+{
+  if (theTitles->Length() != myNbColumns) Standard_Failure::Raise("Invalid number of columns");
+  int aLength = theTitles->Length(), i;
+  for(i = 1; i <= aLength; i++)  myCols->SetValue(i, theTitles->Value(i));
+  
+  SetModifyFlag(); //SRN: Mark the study as being modified, so it could be saved 
+}
+
+Handle(TColStd_HSequenceOfExtendedString) SALOMEDSImpl_AttributeTableOfString::GetColumnTitles()
+{
+  Handle(TColStd_HSequenceOfExtendedString) aSeq = new TColStd_HSequenceOfExtendedString;
+  int aLength = myCols->Length(), i;
+  for(i=1; i<=aLength; i++) aSeq->Append(myCols->Value(i));
+  return aSeq;
+}
+
+
+Standard_Integer SALOMEDSImpl_AttributeTableOfString::GetNbRows() const
+{
+  return myNbRows;
+}
+
+Standard_Integer SALOMEDSImpl_AttributeTableOfString::GetNbColumns() const
+{
+  return myNbColumns;
+}
+
+void SALOMEDSImpl_AttributeTableOfString::PutValue(const TCollection_ExtendedString& theValue,
+                                                  const Standard_Integer theRow,
+                                                  const Standard_Integer theColumn) 
+{
+  CheckLocked();  
+  if(theColumn > myNbColumns) SetNbColumns(theColumn);
+
+  Standard_Integer anIndex = (theRow-1)*myNbColumns + theColumn;
+  myTable.Bind(anIndex, theValue);
+
+  if(theRow > myNbRows) {
+    while (myRows->Length() < theRow) { // append empty row titles
+      myRows->Append(TCollection_ExtendedString(""));
+    }
+    myNbRows = theRow;
+  }
+  
+  SetModifyFlag(); //SRN: Mark the study as being modified, so it could be saved 
+}
+
+Standard_Boolean SALOMEDSImpl_AttributeTableOfString::HasValue(const Standard_Integer theRow,
+                                                              const Standard_Integer theColumn) 
+{
+  if(theRow > myNbRows || theRow < 1) return Standard_False;
+  if(theColumn > myNbColumns || theColumn < 1) return Standard_False;
+
+  Standard_Integer anIndex = (theRow-1)*myNbColumns + theColumn;
+  return myTable.IsBound(anIndex); 
+}
+
+TCollection_ExtendedString SALOMEDSImpl_AttributeTableOfString::GetValue(const Standard_Integer theRow,
+                                                                        const Standard_Integer theColumn) 
+{
+  if(theRow > myNbRows || theRow < 1) Standard_Failure::Raise("Invalid cell index");
+  if(theColumn > myNbColumns || theColumn < 1) Standard_Failure::Raise("Invalid cell index");
+
+  Standard_Integer anIndex = (theRow-1)*myNbColumns + theColumn;
+  if(myTable.IsBound(anIndex)) return myTable.Find(anIndex);
+  
+  Standard_Failure::Raise("Invalid cell index");
+  return 0.;
+}
+
+const Standard_GUID& SALOMEDSImpl_AttributeTableOfString::ID() const
+{
+  return GetID();
+}
+
+void SALOMEDSImpl_AttributeTableOfString::Restore(const Handle(TDF_Attribute)& with) 
+{
+  Standard_Integer anIndex;
+  Handle(SALOMEDSImpl_AttributeTableOfString) aTable = Handle(SALOMEDSImpl_AttributeTableOfString)::DownCast(with);
+
+  myTable.Clear();
+  myCols->Clear();
+  myRows->Clear();
+
+  myTable = aTable->myTable;
+  myNbRows = aTable->myNbRows;
+  myNbColumns = aTable->myNbColumns;
+  myTitle = aTable->myTitle;
+  
+  for(anIndex = 1; anIndex <= aTable->GetNbRows();anIndex++)
+    myRows->Append(aTable->GetRowTitle(anIndex));
+
+  for(anIndex = 1; anIndex <= aTable->GetNbColumns(); anIndex++) 
+    myCols->Append(aTable->GetColumnTitle(anIndex));
+}
+
+Handle(TDF_Attribute) SALOMEDSImpl_AttributeTableOfString::NewEmpty() const
+{
+  return new SALOMEDSImpl_AttributeTableOfString();
+}
+
+void SALOMEDSImpl_AttributeTableOfString::Paste(const Handle(TDF_Attribute)& into,
+                                            const Handle(TDF_RelocationTable)&) const
+{
+  Standard_Integer anIndex;
+  Handle(SALOMEDSImpl_AttributeTableOfString) aTable = Handle(SALOMEDSImpl_AttributeTableOfString)::DownCast(into);
+
+  aTable->myTable.Clear();
+  aTable->myCols->Clear();
+  aTable->myRows->Clear();
+
+  aTable->myTable = myTable;
+  aTable->myTitle = myTitle;
+  aTable->myNbRows = myNbRows;
+  aTable->myNbColumns = myNbColumns;
+
+  for(anIndex = 1; anIndex <= GetNbRows();anIndex++)
+    aTable->myRows->Append(GetRowTitle(anIndex));
+  for(anIndex = 1; anIndex <= GetNbColumns(); anIndex++) 
+    aTable->myCols->Append(GetColumnTitle(anIndex));
+}
+
+
+Handle_TColStd_HSequenceOfInteger SALOMEDSImpl_AttributeTableOfString::GetSetRowIndices(const Standard_Integer theRow)
+{
+  Handle(TColStd_HSequenceOfInteger) aSeq = new TColStd_HSequenceOfInteger;
+
+  Standard_Integer i, aShift = myNbColumns*(theRow-1);
+  for(i = 1; i <= myNbColumns; i++) {
+    if(myTable.IsBound(aShift + i)) aSeq->Append(i);
+  }
+  
+  return aSeq;
+}
+
+Handle_TColStd_HSequenceOfInteger SALOMEDSImpl_AttributeTableOfString::GetSetColumnIndices(const Standard_Integer theColumn)
+{
+  Handle(TColStd_HSequenceOfInteger) aSeq = new TColStd_HSequenceOfInteger;
+
+  Standard_Integer i, anIndex;
+  for(i = 1; i <= myNbRows; i++) {
+    anIndex = myNbColumns*(i-1)+theColumn;
+    if(myTable.IsBound(anIndex)) aSeq->Append(i);
+  }
+  
+  return aSeq;
+}
+
+
+
+void SALOMEDSImpl_AttributeTableOfString::ConvertToString(ostrstream& theStream)
+{
+  int i, j, l;
+  
+  //Title
+  l = myTitle.Length();
+  theStream << l << "\n";
+  for(i=1; i<=l; i++)
+    theStream << myTitle.Value(i) << "\n";
+
+  //Nb rows
+  theStream << myNbRows << "\n";
+
+  //Rows titles
+  for(i=1; i<=myNbRows; i++) {
+    l = myRows->Value(i).Length();
+    theStream << l << "\n";
+    for(j=1; j<=l; j++)
+      theStream << myRows->Value(i).Value(j) << "\n";
+  }
+
+  //Nb columns
+  theStream << myNbColumns << "\n";
+
+  //Columns titles
+  for(i=1; i<=myNbColumns; i++) {
+    l = myCols->Value(i).Length();
+    theStream << l << "\n";
+    for(j=1; j<=l; j++)
+      theStream << myCols->Value(i).Value(j) << "\n";
+  }
+
+  //Store the table values
+  l = myTable.Extent();
+  theStream << l << "\n";
+  DataMapIterator anIterator(myTable);
+  for(; anIterator.More(); anIterator.Next()) {
+    if (anIterator.Value().Length()) { // check empty string in the value table
+      theStream << anIterator.Key() << "\n";
+      unsigned long aValueSize = anIterator.Value().Length();
+      theStream<<aValueSize << "\n";
+      theStream.write((TCollection_AsciiString(anIterator.Value()).ToCString()),aValueSize);
+      theStream<<"\n";
+    } else { // write index only of kind: "0key"; "05", for an example
+      theStream << "0" << anIterator.Key() << "\n";
+    }
+  }
+  return;
+}
+
+bool SALOMEDSImpl_AttributeTableOfString::RestoreFromString(istrstream& theStream)
+{
+  Backup();
+
+  theStream.seekg(0, ios::end);
+  long aSize = theStream.tellg();
+  theStream.seekg(0, ios::beg);
+
+  int i, j, l;
+  char *aValueString = new char[aSize];
+
+  Standard_ExtCharacter anExtChar;
+  TCollection_ExtendedString aStr;
+
+  //Title
+  theStream >> l;
+
+  myTitle = TCollection_ExtendedString(l, 0);
+  for(i=1; i<=l; i++) {
+    theStream >> anExtChar;
+    myTitle.SetValue(i, anExtChar);
+  }
+
+  //Nb rows
+  theStream >> myNbRows;
+
+  //Rows titles
+  myRows->Clear();  
+  for(i=1; i<=myNbRows; i++) { 
+    theStream >> l;
+    aStr = TCollection_ExtendedString(l,0);
+    for(j=1; j<=l; j++) {
+      theStream >> anExtChar;
+      aStr.SetValue(j, anExtChar);
+    }
+    myRows->Append(aStr);
+  }
+
+  //Nb columns
+  theStream >> myNbColumns;
+
+  //Columns titles
+  myCols->Clear();
+  for(i=1; i<=myNbColumns; i++) {
+    theStream >> l;
+    aStr = TCollection_ExtendedString(l,0);
+    for(j=1; j<=l; j++) {
+      theStream >> anExtChar;
+      aStr.SetValue(j, anExtChar);
+    }
+    myCols->Append(aStr);
+  }
+
+  //Restore the table values
+  TCollection_AsciiString aValue;
+  theStream >> l;
+  myTable.Clear();
+  theStream.getline(aValueString,aSize,'\n');
+  for(i=1; i<=l; i++) {
+    Standard_Integer aKey;
+
+    theStream.getline(aValueString,aSize,'\n');
+    aValue = aValueString;
+    aKey = aValue.IntegerValue();
+    if (aValue.Value(1) == '0')
+      aValue = "";
+    else {
+      unsigned long aValueSize;
+      theStream >> aValueSize;
+      theStream.read(aValueString, 1); // an '\n' omitting
+      theStream.read(aValueString, aValueSize);
+      theStream.read(aValueString, 1); // an '\n' omitting
+      aValue = aValueString;
+    }
+    myTable.Bind(aKey, aValue);
+  }
+  delete(aValueString);
+  return true;
+}
+
+TCollection_AsciiString SALOMEDSImpl_AttributeTableOfString::Save() 
+{
+  ostrstream ostr;
+  ConvertToString(ostr);
+  TCollection_AsciiString aString((char*)ostr.rdbuf()->str());
+  return aString;
+}
+
+void SALOMEDSImpl_AttributeTableOfString::Load(const TCollection_AsciiString& value) 
+{
+  istrstream aStream(value.ToCString(), strlen(value.ToCString()));
+  RestoreFromString(aStream);
+}
diff --git a/src/SALOMEDSImpl/SALOMEDSImpl_AttributeTableOfString.hxx b/src/SALOMEDSImpl/SALOMEDSImpl_AttributeTableOfString.hxx
new file mode 100644 (file)
index 0000000..3c73a89
--- /dev/null
@@ -0,0 +1,98 @@
+//  SALOME SALOMEDSImpl : data structure of SALOME and sources of Salome data server 
+//
+//  Copyright (C) 2003  CEA/DEN, EDF R&D
+//
+//
+//
+//  File   : SALOMEDSImpl_AttributeTableOfString.hxx
+//  Author : Sergey Ruin
+//  Module : SALOME
+
+#ifndef _SALOMEDSImpl_AttributeTableOfString_HeaderFile
+#define _SALOMEDSImpl_AttributeTableOfString_HeaderFile
+
+#include <Standard_DefineHandle.hxx>
+#include <Standard.hxx>
+#include <TDF_Label.hxx>       
+#include <TDF_Attribute.hxx>
+#include "SALOMEDSImpl_GenericAttribute.hxx"
+
+class Standard_GUID;
+class Handle(TDF_Attribute);
+class Handle(TDF_RelocationTable);
+
+
+DEFINE_STANDARD_HANDLE( SALOMEDSImpl_AttributeTableOfString, SALOMEDSImpl_GenericAttribute )
+
+#include <TColStd_SequenceOfTransient.hxx>
+#include <TCollection_ExtendedString.hxx>
+#include <TColStd_HSequenceOfExtendedString.hxx>
+#include <NCollection_DataMap.hxx>
+#include <TColStd_HSequenceOfInteger.hxx>
+#include <TCollection_AsciiString.hxx>
+#include <strstream>
+
+typedef NCollection_DataMap <Standard_Integer, TCollection_ExtendedString> DataMapOfIntegerString;
+
+class SALOMEDSImpl_AttributeTableOfString : public SALOMEDSImpl_GenericAttribute 
+{
+
+public:
+Standard_EXPORT virtual TCollection_AsciiString Save();
+Standard_EXPORT virtual void Load(const TCollection_AsciiString&); 
+Standard_EXPORT static const Standard_GUID& GetID() ;
+Standard_EXPORT static  Handle_SALOMEDSImpl_AttributeTableOfString Set(const TDF_Label& label) ;
+Standard_EXPORT SALOMEDSImpl_AttributeTableOfString();
+Standard_EXPORT   void SetNbColumns(const Standard_Integer theNbColumns);
+Standard_EXPORT   void SetTitle(const TCollection_ExtendedString& theTitle) ;
+Standard_EXPORT   TCollection_ExtendedString GetTitle() const;
+Standard_EXPORT   void SetRowData(const Standard_Integer theRow,const Handle(TColStd_HSequenceOfExtendedString)& theData) ;
+Standard_EXPORT   Handle_TColStd_HSequenceOfExtendedString GetRowData(const Standard_Integer theRow) ;
+Standard_EXPORT   void SetRowTitle(const Standard_Integer theRow,const TCollection_ExtendedString& theTitle) ;
+Standard_EXPORT   void SetRowUnit(const Standard_Integer theRow,const TCollection_ExtendedString& theUnit) ;
+Standard_EXPORT   TCollection_ExtendedString GetRowUnit(const Standard_Integer theRow) const;
+Standard_EXPORT   void SetRowUnits(const Handle(TColStd_HSequenceOfExtendedString)& theUnits) ;
+Standard_EXPORT   Handle(TColStd_HSequenceOfExtendedString) GetRowUnits();
+Standard_EXPORT   void SetRowTitles(const Handle(TColStd_HSequenceOfExtendedString)& theTitles) ;
+Standard_EXPORT   Handle(TColStd_HSequenceOfExtendedString) GetRowTitles();
+Standard_EXPORT   TCollection_ExtendedString GetRowTitle(const Standard_Integer theRow) const;
+Standard_EXPORT   void SetColumnData(const Standard_Integer theColumn,const Handle(TColStd_HSequenceOfExtendedString)& theData) ;
+Standard_EXPORT   Handle_TColStd_HSequenceOfExtendedString GetColumnData(const Standard_Integer theColumn) ;
+Standard_EXPORT   void SetColumnTitle(const Standard_Integer theColumn,const TCollection_ExtendedString& theTitle) ;
+Standard_EXPORT   TCollection_ExtendedString GetColumnTitle(const Standard_Integer theColumn) const;
+Standard_EXPORT   void SetColumnTitles(const Handle(TColStd_HSequenceOfExtendedString)& theTitles);
+Standard_EXPORT   Handle(TColStd_HSequenceOfExtendedString) GetColumnTitles();
+Standard_EXPORT   Standard_Integer GetNbRows() const;
+Standard_EXPORT   Standard_Integer GetNbColumns() const;
+
+Standard_EXPORT   void PutValue(const TCollection_ExtendedString& theValue,const Standard_Integer theRow,const Standard_Integer theColumn) ;
+Standard_EXPORT   Standard_Boolean HasValue(const Standard_Integer theRow,const Standard_Integer theColumn) ;
+Standard_EXPORT   TCollection_ExtendedString GetValue(const Standard_Integer theRow,const Standard_Integer theColumn) ;
+Standard_EXPORT  const Standard_GUID& ID() const;
+Standard_EXPORT   void Restore(const Handle(TDF_Attribute)& with) ;
+Standard_EXPORT   Handle_TDF_Attribute NewEmpty() const;
+Standard_EXPORT   void Paste(const Handle(TDF_Attribute)& into,const Handle(TDF_RelocationTable)& RT) const;
+
+Standard_EXPORT   Handle_TColStd_HSequenceOfInteger GetSetRowIndices(const Standard_Integer theRow);
+Standard_EXPORT   Handle_TColStd_HSequenceOfInteger GetSetColumnIndices(const Standard_Integer theColumn);
+
+Standard_EXPORT   void ConvertToString(ostrstream& theStream);
+Standard_EXPORT   bool RestoreFromString(istrstream& theStream);
+
+Standard_EXPORT ~SALOMEDSImpl_AttributeTableOfString() {}
+
+private: 
+
+DataMapOfIntegerString myTable;
+TCollection_ExtendedString myTitle;
+Handle_TColStd_HSequenceOfExtendedString myRows;
+Handle_TColStd_HSequenceOfExtendedString myCols;
+Standard_Integer myNbRows;
+Standard_Integer myNbColumns;
+
+public:
+  DEFINE_STANDARD_RTTI( SALOMEDSImpl_AttributeTableOfString )
+
+};
+
+#endif
diff --git a/src/SALOMEDSImpl/SALOMEDSImpl_AttributeTarget.cxx b/src/SALOMEDSImpl/SALOMEDSImpl_AttributeTarget.cxx
new file mode 100644 (file)
index 0000000..b12c653
--- /dev/null
@@ -0,0 +1,166 @@
+//  File   : SALOMEDSImpl_AttributeTarget.cxx
+//  Author : Sergey RUIN
+//  Module : SALOME
+
+
+#include "SALOMEDSImpl_AttributeTarget.hxx"
+#include "SALOMEDSImpl_AttributeReference.hxx"
+#include "SALOMEDSImpl_Study.hxx"
+#include <TDF_RelocationTable.hxx>
+#include <TDF_ListIteratorOfAttributeList.hxx>
+#include <Standard_GUID.hxx>
+
+using namespace std;
+
+
+IMPLEMENT_STANDARD_HANDLE( SALOMEDSImpl_AttributeTarget, SALOMEDSImpl_GenericAttribute )
+IMPLEMENT_STANDARD_RTTIEXT( SALOMEDSImpl_AttributeTarget, SALOMEDSImpl_GenericAttribute )
+
+//=======================================================================
+//function : GetID
+//purpose  : 
+//=======================================================================
+
+const Standard_GUID& SALOMEDSImpl_AttributeTarget::GetID () 
+{
+  static Standard_GUID SALOMEDSImpl_AttributeTargetID ("12837197-8F52-11d6-A8A3-0001021E8C7F");
+  return SALOMEDSImpl_AttributeTargetID;
+}
+
+
+//=======================================================================
+//function : Set
+//purpose  : 
+//=======================================================================
+
+Handle(SALOMEDSImpl_AttributeTarget) SALOMEDSImpl_AttributeTarget::Set (const TDF_Label& L) 
+{
+  Handle(SALOMEDSImpl_AttributeTarget) A;
+  if (!L.FindAttribute(SALOMEDSImpl_AttributeTarget::GetID(),A)) {
+    A = new  SALOMEDSImpl_AttributeTarget(); 
+    L.AddAttribute(A);
+  }
+  return A;
+}
+
+
+//=======================================================================
+//function : constructor
+//purpose  : 
+//=======================================================================
+SALOMEDSImpl_AttributeTarget::SALOMEDSImpl_AttributeTarget()
+:SALOMEDSImpl_GenericAttribute("AttributeTarget")
+{
+}
+
+void SALOMEDSImpl_AttributeTarget::SetRelation(const TCollection_ExtendedString& theRelation)
+{
+  CheckLocked();
+  if(myRelation == theRelation) return;
+
+  Backup();
+  myRelation = theRelation; 
+  
+  SetModifyFlag(); //SRN: Mark the study as being modified, so it could be saved 
+}
+
+//=======================================================================
+//function : Add
+//purpose  : 
+//=======================================================================
+void SALOMEDSImpl_AttributeTarget::Add(const Handle(SALOMEDSImpl_SObject)& theSO) 
+{
+  Backup();
+  TDF_Label aRefLabel = theSO->GetLabel();
+  Handle(SALOMEDSImpl_AttributeReference) aReference;
+  if (aRefLabel.FindAttribute(SALOMEDSImpl_AttributeReference::GetID(),aReference)) {
+    TDF_ListIteratorOfAttributeList anIter(GetVariables());
+    for(;anIter.More();anIter.Next()) if(anIter.Value()->Label() == aRefLabel) return; //BugID: PAL6192    
+    GetVariables().Append(aReference);
+  } 
+  
+  SetModifyFlag(); //SRN: Mark the study as being modified, so it could be saved 
+}
+
+//=======================================================================
+//function : Get
+//purpose  : 
+//=======================================================================
+Handle(TColStd_HSequenceOfTransient) SALOMEDSImpl_AttributeTarget::Get() 
+{
+  Handle(TColStd_HSequenceOfTransient) aSeq = new TColStd_HSequenceOfTransient;
+  
+  TDF_ListIteratorOfAttributeList anIter(GetVariables());
+  for(;anIter.More();anIter.Next()) {
+    const TDF_Label& aLabel = anIter.Value()->Label();
+   aSeq->Append( SALOMEDSImpl_Study::SObject(aLabel));
+  }
+  return aSeq;
+}
+
+//=======================================================================
+//function : Remove
+//purpose  : 
+//=======================================================================
+void SALOMEDSImpl_AttributeTarget::Remove(const Handle(SALOMEDSImpl_SObject)& theSO) 
+{
+  Backup();
+  TDF_Label aRefLabel = theSO->GetLabel();
+  TDF_ListIteratorOfAttributeList anIter(GetVariables());
+  for(;anIter.More();anIter.Next()) {
+    if (anIter.Value()->Label() == aRefLabel) {
+      GetVariables().Remove(anIter);
+      return;
+    }
+  }  
+  
+  SetModifyFlag(); //SRN: Mark the study as being modified, so it could be saved 
+}
+
+//=======================================================================
+//function : ID
+//purpose  : 
+//=======================================================================
+const Standard_GUID& SALOMEDSImpl_AttributeTarget::ID () const { return GetID(); }
+
+//=======================================================================
+//function : Restore
+//purpose  :
+//=======================================================================
+void SALOMEDSImpl_AttributeTarget::Restore(const Handle(TDF_Attribute)& With)
+{
+  Handle(SALOMEDSImpl_AttributeTarget) REL = Handle(SALOMEDSImpl_AttributeTarget)::DownCast (With);
+  myRelation = REL->GetRelation();
+  Handle(SALOMEDSImpl_AttributeReference) V;
+  myVariables.Clear();
+  for (TDF_ListIteratorOfAttributeList it (REL->GetVariables()); it.More(); it.Next()) {
+    V = Handle(SALOMEDSImpl_AttributeReference)::DownCast(it.Value());
+    myVariables.Append(V);
+  }
+}
+
+//=======================================================================
+//function : NewEmpty
+//purpose  :
+//=======================================================================
+Handle(TDF_Attribute) SALOMEDSImpl_AttributeTarget::NewEmpty() const
+{
+  return new SALOMEDSImpl_AttributeTarget();
+}
+
+//=======================================================================
+//function : Paste
+//purpose  :
+//=======================================================================
+void SALOMEDSImpl_AttributeTarget::Paste(const Handle(TDF_Attribute)& Into,
+                                        const Handle(TDF_RelocationTable)& RT) const
+{
+  Handle(SALOMEDSImpl_AttributeTarget) REL = Handle(SALOMEDSImpl_AttributeTarget)::DownCast (Into);
+  REL->SetRelation(myRelation);
+  Handle(SALOMEDSImpl_AttributeReference) V1,V2;
+  for (TDF_ListIteratorOfAttributeList it (myVariables); it.More(); it.Next()) {
+    V1 = Handle(SALOMEDSImpl_AttributeReference)::DownCast(it.Value());
+    RT->HasRelocation (V1,V2);
+    REL->GetVariables().Append(V2);
+  }
+}   
diff --git a/src/SALOMEDSImpl/SALOMEDSImpl_AttributeTarget.hxx b/src/SALOMEDSImpl/SALOMEDSImpl_AttributeTarget.hxx
new file mode 100644 (file)
index 0000000..0eb78bb
--- /dev/null
@@ -0,0 +1,53 @@
+//  File   : SALOMEDSImpl_AttributeTarget.hxx
+//  Author : Sergey RUIN
+//  Module : SALOME
+
+#ifndef _SALOMEDSImpl_AttributeTarget_HeaderFile
+#define _SALOMEDSImpl_AttributeTarget_HeaderFile
+
+#include <Standard_DefineHandle.hxx>
+#include <TDF_Attribute.hxx>
+#include <TDF_LabelList.hxx>
+#include <TDF_Label.hxx>       
+#include <TDF_AttributeList.hxx>
+#include <TCollection_ExtendedString.hxx>
+#include <TColStd_HSequenceOfTransient.hxx>
+#include "SALOMEDSImpl_GenericAttribute.hxx"
+#include "SALOMEDSImpl_SObject.hxx"
+
+class Standard_GUID;
+class Handle(TDF_Attribute);
+class Handle(TDF_RelocationTable);
+
+
+DEFINE_STANDARD_HANDLE( SALOMEDSImpl_AttributeTarget, SALOMEDSImpl_GenericAttribute )
+
+
+class SALOMEDSImpl_AttributeTarget :  public SALOMEDSImpl_GenericAttribute 
+{
+private:
+TCollection_ExtendedString myRelation;
+TDF_AttributeList myVariables;
+
+public:
+Standard_EXPORT static const Standard_GUID& GetID() ;
+Standard_EXPORT static  Handle_SALOMEDSImpl_AttributeTarget Set(const TDF_Label& label) ;
+Standard_EXPORT SALOMEDSImpl_AttributeTarget();
+Standard_EXPORT void SALOMEDSImpl_AttributeTarget::Add(const Handle(SALOMEDSImpl_SObject)& theSO);
+Standard_EXPORT Handle(TColStd_HSequenceOfTransient) SALOMEDSImpl_AttributeTarget::Get();
+Standard_EXPORT void SALOMEDSImpl_AttributeTarget::Remove(const Handle(SALOMEDSImpl_SObject)& theSO);
+Standard_EXPORT TCollection_ExtendedString GetRelation() { return myRelation; }
+Standard_EXPORT void SetRelation(const TCollection_ExtendedString& theRelation); 
+Standard_EXPORT TDF_AttributeList& GetVariables() { return myVariables; }
+Standard_EXPORT  const Standard_GUID& ID() const;
+Standard_EXPORT  void Restore(const Handle(TDF_Attribute)& with) ;
+Standard_EXPORT  Handle_TDF_Attribute NewEmpty() const;
+Standard_EXPORT  void Paste(const Handle(TDF_Attribute)& into,const Handle(TDF_RelocationTable)& RT) const;
+Standard_EXPORT ~SALOMEDSImpl_AttributeTarget() {}
+
+public:
+  DEFINE_STANDARD_RTTI( SALOMEDSImpl_AttributeTarget )
+
+};
+
+#endif
diff --git a/src/SALOMEDSImpl/SALOMEDSImpl_AttributeTextColor.cxx b/src/SALOMEDSImpl/SALOMEDSImpl_AttributeTextColor.cxx
new file mode 100644 (file)
index 0000000..8fd4685
--- /dev/null
@@ -0,0 +1,137 @@
+//  File   : SALOMEDSImpl_AttributeTextColor.cxx
+//  Author : Sergey RUIN
+//  Module : SALOME
+
+
+#include "SALOMEDSImpl_AttributeTextColor.hxx"
+#include <Standard_GUID.hxx>
+
+using namespace std;
+
+IMPLEMENT_STANDARD_HANDLE( SALOMEDSImpl_AttributeTextColor, SALOMEDSImpl_GenericAttribute )
+IMPLEMENT_STANDARD_RTTIEXT( SALOMEDSImpl_AttributeTextColor, SALOMEDSImpl_GenericAttribute )
+
+//=======================================================================
+//function : GetID
+//purpose  : 
+//=======================================================================
+
+const Standard_GUID& SALOMEDSImpl_AttributeTextColor::GetID () 
+{
+  static Standard_GUID SALOMEDSImpl_AttributeTextColorID ("12837189-8F52-11d6-A8A3-0001021E8C7F");
+  return SALOMEDSImpl_AttributeTextColorID;
+}
+
+
+//=======================================================================
+//function : constructor
+//purpose  : 
+//=======================================================================
+SALOMEDSImpl_AttributeTextColor::SALOMEDSImpl_AttributeTextColor()
+:SALOMEDSImpl_GenericAttribute("AttributeTextColor")
+{
+  myValue = new TColStd_HArray1OfReal(1, 3, RealFirst());
+}
+
+//=======================================================================
+//function : SetTextColor
+//purpose  :
+//=======================================================================   
+void SALOMEDSImpl_AttributeTextColor::SetTextColor(const Standard_Real R, const Standard_Real G, const Standard_Real B)
+{
+   CheckLocked();
+   if(myValue.IsNull()) return;  
+   Backup(); 
+
+   myValue->SetValue(1, R);
+   myValue->SetValue(2, G);
+   myValue->SetValue(3, B);
+   
+   SetModifyFlag(); //SRN: Mark the study as being modified, so it could be saved 
+}
+
+//=======================================================================
+//function : TextColor
+//purpose  :
+//=======================================================================
+Handle(TColStd_HArray1OfReal) SALOMEDSImpl_AttributeTextColor::TextColor()
+{
+  return myValue; 
+}
+
+//=======================================================================
+//function : ChangeArray
+//purpose  : 
+//=======================================================================
+void SALOMEDSImpl_AttributeTextColor::ChangeArray(const Handle(TColStd_HArray1OfReal)& newArray)
+{
+  Backup();
+
+  for(int i = 1; i <= 3; i++)
+    myValue->SetValue(i, newArray->Value(i));
+    
+  SetModifyFlag(); //SRN: Mark the study as being modified, so it could be saved     
+}    
+
+//=======================================================================
+//function : ID
+//purpose  : 
+//=======================================================================
+
+const Standard_GUID& SALOMEDSImpl_AttributeTextColor::ID () const { return GetID(); }
+
+
+//=======================================================================
+//function : NewEmpty
+//purpose  : 
+//=======================================================================
+
+Handle(TDF_Attribute) SALOMEDSImpl_AttributeTextColor::NewEmpty () const
+{  
+  return new SALOMEDSImpl_AttributeTextColor(); 
+}
+
+//=======================================================================
+//function : Restore
+//purpose  : 
+//=======================================================================
+
+void SALOMEDSImpl_AttributeTextColor::Restore(const Handle(TDF_Attribute)& with) 
+{
+  Handle(TColStd_HArray1OfReal) s = Handle(SALOMEDSImpl_AttributeTextColor)::DownCast (with)->TextColor ();
+  ChangeArray(s);
+  return;
+}
+
+//=======================================================================
+//function : Paste
+//purpose  : 
+//=======================================================================
+
+void SALOMEDSImpl_AttributeTextColor::Paste (const Handle(TDF_Attribute)& into,
+                                             const Handle(TDF_RelocationTable)& RT) const
+{
+  Handle(SALOMEDSImpl_AttributeTextColor)::DownCast (into)->ChangeArray (myValue);
+}
+
+
+
+TCollection_AsciiString SALOMEDSImpl_AttributeTextColor::Save() 
+{
+  char *Val = new char[75];
+  sprintf(Val, "%f %f %f", (float)myValue->Value(1), 
+                           (float)myValue->Value(2), 
+                          (float)myValue->Value(3));
+  TCollection_AsciiString ret(Val);
+  delete Val;
+  return ret;
+}
+
+void SALOMEDSImpl_AttributeTextColor::Load(const TCollection_AsciiString& value) 
+{
+  float r, g, b;
+  sscanf(value.ToCString(), "%f %f %f", &r, &g, &b);
+  myValue->SetValue(1, r);
+  myValue->SetValue(2, g);
+  myValue->SetValue(3, b);
+}
diff --git a/src/SALOMEDSImpl/SALOMEDSImpl_AttributeTextColor.hxx b/src/SALOMEDSImpl/SALOMEDSImpl_AttributeTextColor.hxx
new file mode 100644 (file)
index 0000000..1601eb0
--- /dev/null
@@ -0,0 +1,45 @@
+//  File   : SALOMEDSImpl_AttributeTextColor.hxx
+//  Author : Sergey RUIN
+//  Module : SALOME
+
+#ifndef _SALOMEDSImpl_AttributeTextColor_HeaderFile
+#define _SALOMEDSImpl_AttributeTextColor_HeaderFile
+
+#include <Standard_DefineHandle.hxx>
+#include <TDF_Attribute.hxx>
+#include <TColStd_HArray1OfReal.hxx>
+#include <TDF_Label.hxx>       
+#include <TCollection_AsciiString.hxx>
+#include "SALOMEDSImpl_GenericAttribute.hxx"
+
+class Standard_GUID;
+class Handle(TDF_Attribute);
+class Handle(TDF_RelocationTable);
+
+
+DEFINE_STANDARD_HANDLE( SALOMEDSImpl_AttributeTextColor, SALOMEDSImpl_GenericAttribute )
+
+class SALOMEDSImpl_AttributeTextColor : public SALOMEDSImpl_GenericAttribute 
+{
+private:
+  Handle(TColStd_HArray1OfReal) myValue;
+
+public:
+Standard_EXPORT virtual TCollection_AsciiString Save();
+Standard_EXPORT virtual void Load(const TCollection_AsciiString&); 
+Standard_EXPORT static const Standard_GUID& GetID() ;
+Standard_EXPORT SALOMEDSImpl_AttributeTextColor();
+Standard_EXPORT  const Standard_GUID& ID() const;
+Standard_EXPORT  void SetTextColor(const Standard_Real R, const Standard_Real G, const Standard_Real B); 
+Standard_EXPORT  Handle(TColStd_HArray1OfReal) TextColor();  
+Standard_EXPORT  void ChangeArray(const Handle(TColStd_HArray1OfReal)& newArray);
+Standard_EXPORT   void Restore(const Handle(TDF_Attribute)& with) ;
+Standard_EXPORT   Handle_TDF_Attribute NewEmpty() const;
+Standard_EXPORT   void Paste(const Handle(TDF_Attribute)& into,const Handle(TDF_RelocationTable)& RT) const;
+Standard_EXPORT ~SALOMEDSImpl_AttributeTextColor() {}
+
+public:
+  DEFINE_STANDARD_RTTI( SALOMEDSImpl_AttributeTextColor )
+};
+
+#endif
diff --git a/src/SALOMEDSImpl/SALOMEDSImpl_AttributeTextHighlightColor.cxx b/src/SALOMEDSImpl/SALOMEDSImpl_AttributeTextHighlightColor.cxx
new file mode 100644 (file)
index 0000000..fd9615b
--- /dev/null
@@ -0,0 +1,139 @@
+//  File   : SALOMEDSImpl_AttributeTextHighlightColor.cxx
+//  Author : Sergey RUIN
+//  Module : SALOME
+
+
+#include "SALOMEDSImpl_AttributeTextHighlightColor.hxx"
+#include <Standard_GUID.hxx>
+
+using namespace std;
+
+IMPLEMENT_STANDARD_HANDLE( SALOMEDSImpl_AttributeTextHighlightColor, SALOMEDSImpl_GenericAttribute )
+IMPLEMENT_STANDARD_RTTIEXT( SALOMEDSImpl_AttributeTextHighlightColor, SALOMEDSImpl_GenericAttribute )
+
+//=======================================================================
+//function : GetID
+//purpose  : 
+//=======================================================================
+
+const Standard_GUID& SALOMEDSImpl_AttributeTextHighlightColor::GetID () 
+{
+  static Standard_GUID SALOMEDSImpl_AttributeTextHighlightColorID ("12837190-8F52-11d6-A8A3-0001021E8C7F");
+  return SALOMEDSImpl_AttributeTextHighlightColorID;
+}
+
+
+
+//=======================================================================
+//function : constructor
+//purpose  : 
+//=======================================================================
+SALOMEDSImpl_AttributeTextHighlightColor::SALOMEDSImpl_AttributeTextHighlightColor()
+:SALOMEDSImpl_GenericAttribute("AttributeTextHighlightColor")
+{ 
+  myValue = new TColStd_HArray1OfReal(1, 3, RealFirst());
+}
+
+//=======================================================================
+//function : ID
+//purpose  : 
+//=======================================================================
+
+const Standard_GUID& SALOMEDSImpl_AttributeTextHighlightColor::ID () const { return GetID(); }
+
+
+//=======================================================================
+//function : SetTextHighlightColor
+//purpose  :
+//=======================================================================
+void SALOMEDSImpl_AttributeTextHighlightColor::SetTextHighlightColor(const Standard_Real R, 
+                                                                    const Standard_Real G, 
+                                                                    const Standard_Real B)
+{
+   CheckLocked();
+   if(myValue.IsNull()) return;  
+   Backup(); 
+
+   myValue->SetValue(1, R);
+   myValue->SetValue(2, G);
+   myValue->SetValue(3, B);
+   
+   SetModifyFlag(); //SRN: Mark the study as being modified, so it could be saved 
+}
+           
+//=======================================================================
+//function : TextHighlightColor
+//purpose  :
+//=======================================================================
+Handle(TColStd_HArray1OfReal) SALOMEDSImpl_AttributeTextHighlightColor::TextHighlightColor()
+{
+   return myValue;
+}      
+
+//=======================================================================
+//function : ChangeArray
+//purpose  : 
+//=======================================================================
+void SALOMEDSImpl_AttributeTextHighlightColor::ChangeArray(const Handle(TColStd_HArray1OfReal)& newArray)
+{
+  Backup();
+
+  for(int i = 1; i <= 3; i++)
+    myValue->SetValue(i, newArray->Value(i));
+
+  SetModifyFlag(); //SRN: Mark the study as being modified, so it could be saved  
+}    
+
+//=======================================================================
+//function : NewEmpty
+//purpose  : 
+//=======================================================================
+
+Handle(TDF_Attribute) SALOMEDSImpl_AttributeTextHighlightColor::NewEmpty () const
+{  
+  return new SALOMEDSImpl_AttributeTextHighlightColor(); 
+}
+
+//=======================================================================
+//function : Restore
+//purpose  : 
+//=======================================================================
+
+void SALOMEDSImpl_AttributeTextHighlightColor::Restore(const Handle(TDF_Attribute)& with) 
+{
+  Handle(TColStd_HArray1OfReal) s = Handle(SALOMEDSImpl_AttributeTextHighlightColor)::DownCast (with)->TextHighlightColor ();
+  ChangeArray(s);
+  return;
+}
+
+//=======================================================================
+//function : Paste
+//purpose  : 
+//=======================================================================
+
+void SALOMEDSImpl_AttributeTextHighlightColor::Paste (const Handle(TDF_Attribute)& into,
+                                                  const Handle(TDF_RelocationTable)& ) const
+{
+  Handle(SALOMEDSImpl_AttributeTextHighlightColor)::DownCast (into)->ChangeArray (myValue);
+}
+
+TCollection_AsciiString SALOMEDSImpl_AttributeTextHighlightColor::Save() 
+{
+  char *Val = new char[75];
+  sprintf(Val, "%f %f %f", (float)myValue->Value(1), 
+                           (float)myValue->Value(2), 
+                          (float)myValue->Value(3));
+  TCollection_AsciiString ret(Val);
+  delete Val;
+  return ret;
+}
+
+void SALOMEDSImpl_AttributeTextHighlightColor::Load(const TCollection_AsciiString& value) 
+{
+  float r, g, b;
+  sscanf(value.ToCString(), "%f %f %f", &r, &g, &b);
+  myValue->SetValue(1, r);
+  myValue->SetValue(2, g);
+  myValue->SetValue(3, b);
+}
+
diff --git a/src/SALOMEDSImpl/SALOMEDSImpl_AttributeTextHighlightColor.hxx b/src/SALOMEDSImpl/SALOMEDSImpl_AttributeTextHighlightColor.hxx
new file mode 100644 (file)
index 0000000..4322c19
--- /dev/null
@@ -0,0 +1,45 @@
+//  File   : SALOMEDSImpl_AttributeTextHighlightColor.hxx
+//  Author : Sergey RUIN
+//  Module : SALOME
+
+#ifndef _SALOMEDSImpl_AttributeTextHighlightColor_HeaderFile
+#define _SALOMEDSImpl_AttributeTextHighlightColor_HeaderFile
+
+#include <Standard_DefineHandle.hxx>
+#include <TDF_Attribute.hxx>
+#include <TColStd_HArray1OfReal.hxx>
+#include <TDF_Label.hxx>       
+#include <TCollection_AsciiString.hxx>
+#include "SALOMEDSImpl_GenericAttribute.hxx"
+
+class Standard_GUID;
+class Handle(TDF_Attribute);
+class Handle(TDF_RelocationTable);
+
+
+DEFINE_STANDARD_HANDLE( SALOMEDSImpl_AttributeTextHighlightColor, SALOMEDSImpl_GenericAttribute )
+
+class SALOMEDSImpl_AttributeTextHighlightColor : public SALOMEDSImpl_GenericAttribute 
+{
+private:
+  Handle(TColStd_HArray1OfReal) myValue;
+
+public:
+Standard_EXPORT virtual TCollection_AsciiString Save();
+Standard_EXPORT virtual void Load(const TCollection_AsciiString&); 
+Standard_EXPORT static const Standard_GUID& GetID() ;
+Standard_EXPORT SALOMEDSImpl_AttributeTextHighlightColor();
+Standard_EXPORT  void SetTextHighlightColor(const Standard_Real R, const Standard_Real G, const Standard_Real B);
+Standard_EXPORT  Handle(TColStd_HArray1OfReal) TextHighlightColor(); 
+Standard_EXPORT  void ChangeArray(const Handle(TColStd_HArray1OfReal)& newArray);
+Standard_EXPORT  const Standard_GUID& ID() const;
+Standard_EXPORT   void Restore(const Handle(TDF_Attribute)& with) ;
+Standard_EXPORT   Handle_TDF_Attribute NewEmpty() const;
+Standard_EXPORT   void Paste(const Handle(TDF_Attribute)& into,const Handle(TDF_RelocationTable)& RT) const;
+Standard_EXPORT ~SALOMEDSImpl_AttributeTextHighlightColor() {}
+
+public:
+  DEFINE_STANDARD_RTTI( SALOMEDSImpl_AttributeTextHighlightColor )
+};
+
+#endif
diff --git a/src/SALOMEDSImpl/SALOMEDSImpl_AttributeTreeNode.cxx b/src/SALOMEDSImpl/SALOMEDSImpl_AttributeTreeNode.cxx
new file mode 100644 (file)
index 0000000..9e82581
--- /dev/null
@@ -0,0 +1,574 @@
+//  File   : SALOMEDSImpl_AttributeTreeNode.cxx
+//  Author : Sergey RUIN
+//  Module : SALOME
+
+
+#include "SALOMEDSImpl_AttributeTreeNode.hxx"
+#include <Standard_DomainError.hxx>
+#include <TDF_Tool.hxx>
+#include <TDF_Data.hxx>
+#include <TDF_DataSet.hxx>
+#include <TDF_RelocationTable.hxx>
+#include <TCollection_AsciiString.hxx> 
+
+using namespace std;
+
+IMPLEMENT_STANDARD_HANDLE( SALOMEDSImpl_AttributeTreeNode, SALOMEDSImpl_GenericAttribute )
+IMPLEMENT_STANDARD_RTTIEXT( SALOMEDSImpl_AttributeTreeNode, SALOMEDSImpl_GenericAttribute )
+
+static char* Entry(const TDF_Label& theLabel) 
+{
+  TCollection_AsciiString anEntry;
+  TDF_Tool::Entry(theLabel, anEntry);
+  return anEntry.ToCString();
+}  
+
+const Standard_GUID&  SALOMEDSImpl_AttributeTreeNode::GetDefaultTreeID()
+{
+  static Standard_GUID TreeNodeID ("0E1C36E6-379B-4d90-AC37-17A14310E648");
+  return TreeNodeID;
+}    
+
+
+SALOMEDSImpl_AttributeTreeNode::SALOMEDSImpl_AttributeTreeNode() 
+:SALOMEDSImpl_GenericAttribute("AttributeTreeNode"), myFather(NULL),  myPrevious(NULL), myNext(NULL), myFirst(NULL) 
+{}
+
+
+Handle(SALOMEDSImpl_AttributeTreeNode) SALOMEDSImpl_AttributeTreeNode::Set (const TDF_Label& L, const Standard_GUID& ID) 
+{
+  Handle(SALOMEDSImpl_AttributeTreeNode) TN;
+
+  if (!L.FindAttribute(ID,TN)) {
+    TN = new SALOMEDSImpl_AttributeTreeNode ();
+    TN->SetTreeID(ID);
+    L.AddAttribute(TN);
+  }
+
+  return TN;    
+}
+
+//=======================================================================
+//TreeNode : ID
+//purpose  : Returns GUID of the TreeNode
+//=======================================================================
+const Standard_GUID& SALOMEDSImpl_AttributeTreeNode::ID() const
+{
+  return myTreeID;
+}  
+
+//=======================================================================
+//function : Append
+//purpose  : Add <TN> as last child of me
+//=======================================================================
+Standard_Boolean SALOMEDSImpl_AttributeTreeNode::Append (const Handle(SALOMEDSImpl_AttributeTreeNode)& TN)
+{
+  CheckLocked();
+
+  if (!(TN->ID() == myTreeID) )
+    Standard_DomainError::Raise("SALOMEDSImpl_AttributeTreeNode::Append : uncompatible GUID");
+
+  Handle(SALOMEDSImpl_AttributeTreeNode) bid;
+  TN->SetNext(bid); // Deconnects from next.
+
+  // Find the last
+  if (!HasFirst()) {
+    SetFirst(TN);
+    TN->SetPrevious(bid); // Deconnects from previous.
+  }
+  else {
+    Handle(SALOMEDSImpl_AttributeTreeNode) Last = GetFirst();
+    while (Last->HasNext()) {
+      Last = Last->GetNext();
+    }
+    Last->SetNext(TN);
+    TN->SetPrevious(Last);
+  }
+  // Set Father
+  TN->SetFather(this);
+  
+  SetModifyFlag(); //SRN: Mark the study as being modified, so it could be saved 
+  
+  return !TN.IsNull();
+}
+
+//=======================================================================
+//function : Prepend
+//purpose  : Add <TN> as first child of me
+//=======================================================================
+Standard_Boolean SALOMEDSImpl_AttributeTreeNode::Prepend (const Handle(SALOMEDSImpl_AttributeTreeNode)& TN)
+{
+  CheckLocked();
+
+  if (!(TN->ID() == myTreeID) )
+    Standard_DomainError::Raise("SALOMEDSImpl_AttributeTreeNode::Prepend : uncompatible GUID");
+
+  Handle(SALOMEDSImpl_AttributeTreeNode) bid;
+  TN->SetPrevious(bid);
+  if (HasFirst()) {
+    TN->SetNext(GetFirst());
+    GetFirst()->SetPrevious(TN);
+  }
+  else {
+    TN->SetNext(bid);
+  }
+  TN->SetFather(this);
+  SetFirst(TN);
+  
+  SetModifyFlag(); //SRN: Mark the study as being modified, so it could be saved 
+  
+  return !TN.IsNull();
+}                     
+
+
+//=======================================================================
+//function : InsertBefore
+//purpose  : Inserts the TreeNode  <TN> before me
+//=======================================================================
+Standard_Boolean SALOMEDSImpl_AttributeTreeNode::InsertBefore (const Handle(SALOMEDSImpl_AttributeTreeNode)& TN)
+{
+  CheckLocked();
+
+  if (!(TN->ID() == myTreeID) )
+    Standard_DomainError::Raise("SALOMEDSImpl_AttributeTreeNode::InsertBefore : uncompatible GUID");
+
+  TN->SetFather(GetFather());
+  TN->SetPrevious(GetPrevious());
+  TN->SetNext(this);
+
+  if (!HasPrevious())
+    GetFather()->SetFirst(TN);
+  else
+    GetPrevious()->SetNext(TN);
+
+  SetPrevious(TN);
+  
+  SetModifyFlag(); //SRN: Mark the study as being modified, so it could be saved 
+  
+  return !TN.IsNull();
+}
+
+//=======================================================================
+//function : InsertAfter
+//purpose  : Inserts the TreeNode  <TN> after me
+//=======================================================================
+Standard_Boolean SALOMEDSImpl_AttributeTreeNode::InsertAfter (const Handle(SALOMEDSImpl_AttributeTreeNode)& TN)
+{
+  CheckLocked();
+
+  if (!(TN->ID() == myTreeID) )
+    Standard_DomainError::Raise("SALOMEDSImpl_AttributeTreeNode::InsertAfter : uncompatible GUID");
+
+  TN->SetFather(GetFather());
+  TN->SetPrevious(this);
+  TN->SetNext(GetNext());
+
+  if (HasNext()) GetNext()->SetPrevious(TN);
+
+  SetNext(TN);
+  
+  SetModifyFlag(); //SRN: Mark the study as being modified, so it could be saved 
+  
+  return !TN.IsNull();
+}         
+
+//=======================================================================
+//function : Remove
+//purpose  : Removees the function from the function tree
+//=======================================================================
+Standard_Boolean SALOMEDSImpl_AttributeTreeNode::Remove ()
+{
+  CheckLocked();
+
+  if (IsRoot()) return Standard_True;
+
+  Handle(SALOMEDSImpl_AttributeTreeNode) bid;
+  if (!HasPrevious())
+    GetFather()->SetFirst(GetNext());
+  else
+    GetPrevious()->SetNext(GetNext());
+
+  if (HasNext()) {
+    if (HasPrevious()) GetNext()->SetPrevious(GetPrevious());
+    else GetNext()->SetPrevious(bid);
+  }
+  else {
+    if (HasPrevious()) GetPrevious()->SetNext(bid);
+  }
+
+  if (GetFather()->HasFirst()) {
+    if (Handle(SALOMEDSImpl_AttributeTreeNode)::DownCast(this) == GetFather()->GetFirst()) {
+      if (HasNext()) {
+        GetFather()->SetFirst(GetNext());
+      }
+      else GetFather()->SetFirst(bid);
+    }
+  }
+
+  SetFather(bid);
+  SetNext(bid);
+  SetPrevious(bid);
+
+  SetModifyFlag(); //SRN: Mark the study as being modified, so it could be saved 
+
+  return Standard_True;
+}         
+
+//=======================================================================
+//function : Depth
+//purpose  :
+//=======================================================================
+Standard_Integer SALOMEDSImpl_AttributeTreeNode::Depth () const
+{
+  Standard_Integer depth = 0;
+  Handle(SALOMEDSImpl_AttributeTreeNode) current = this;
+  while (current->HasFather()) {
+    depth++;
+    current = current->GetFather();
+  }
+  return depth;
+}
+
+//=======================================================================
+//function : SetTreeID
+//purpose  : Finds or creates a TreeNode  attribute with explicit ID
+//         : a driver for it
+//=======================================================================
+void SALOMEDSImpl_AttributeTreeNode::SetTreeID (const Standard_GUID& explicitID)
+{
+  myTreeID = explicitID;
+  
+  SetModifyFlag(); //SRN: Mark the study as being modified, so it could be saved 
+}
+
+
+//=======================================================================
+//function : IsAscendant
+//purpose  :
+//=======================================================================
+Standard_Boolean SALOMEDSImpl_AttributeTreeNode::IsAscendant (const Handle(SALOMEDSImpl_AttributeTreeNode)& ofTN) const
+{
+  return ofTN->IsDescendant(this);
+}                
+
+//=======================================================================
+//function : IsDescendant
+//purpose  :
+//=======================================================================
+
+Standard_Boolean SALOMEDSImpl_AttributeTreeNode::IsDescendant (const Handle(SALOMEDSImpl_AttributeTreeNode)& ofTN) const
+{
+  Handle(SALOMEDSImpl_AttributeTreeNode) current = this;
+  while (current->HasFather()) {
+    if (current->GetFather() == ofTN) return Standard_True;
+    current = current->GetFather();
+  }
+  return Standard_False;
+}
+
+//=======================================================================
+//function : IsFather
+//purpose  :
+//=======================================================================
+
+Standard_Boolean SALOMEDSImpl_AttributeTreeNode::IsFather (const Handle(SALOMEDSImpl_AttributeTreeNode)& ofTN) const
+{
+  return (ofTN->GetFather() == this);
+}
+
+
+//=======================================================================
+//function : IsChild
+//purpose  :
+//=======================================================================
+
+Standard_Boolean SALOMEDSImpl_AttributeTreeNode::IsChild (const Handle(SALOMEDSImpl_AttributeTreeNode)& ofTN) const
+{
+  return (myFather == ofTN);
+}
+
+//=======================================================================
+//TreeNode : IsRoot
+//purpose  : Returns Standard_True if the TreeNode is not attached to a
+//           TreeNode tree or hasn't an Father.
+//=======================================================================
+Standard_Boolean SALOMEDSImpl_AttributeTreeNode::IsRoot() const
+{
+  if (myFather.IsNull() &&
+      myPrevious.IsNull() &&
+      myNext.IsNull())
+    return Standard_True;
+  return Standard_False;
+}
+
+//=======================================================================
+//TreeNode : Root
+//purpose  : Returns the TreeNode which has no Father
+//=======================================================================
+Handle(SALOMEDSImpl_AttributeTreeNode) SALOMEDSImpl_AttributeTreeNode::Root() const
+{
+  Handle(SALOMEDSImpl_AttributeTreeNode) O = this;
+  while (O->HasFather())
+    O = O->GetFather();
+  return O;
+}       
+
+//=======================================================================
+//TreeNode : SetFather
+//purpose  : Sets the TreeNode F as Father of me
+//=======================================================================
+void SALOMEDSImpl_AttributeTreeNode::SetFather(const Handle(SALOMEDSImpl_AttributeTreeNode)& F)
+{
+  CheckLocked();
+  Backup();
+  myFather = F;
+  
+  SetModifyFlag(); //SRN: Mark the study as being modified, so it could be saved 
+}
+
+//=======================================================================
+//TreeNode : SetNext
+//purpose  : Sets the TreeNode F next to me
+//=======================================================================
+void SALOMEDSImpl_AttributeTreeNode::SetNext(const Handle(SALOMEDSImpl_AttributeTreeNode)& F)
+{
+  CheckLocked();
+  Backup();
+  myNext = F;
+  
+  SetModifyFlag(); //SRN: Mark the study as being modified, so it could be saved 
+}
+
+
+//=======================================================================
+//TreeNode : SetPrevious
+//purpose  : Sets the TreeNode F previous to me
+//=======================================================================
+void SALOMEDSImpl_AttributeTreeNode::SetPrevious(const Handle(SALOMEDSImpl_AttributeTreeNode)& F)
+{
+  CheckLocked();
+  Backup();
+  myPrevious = F;
+  
+  SetModifyFlag(); //SRN: Mark the study as being modified, so it could be saved 
+}
+
+//=======================================================================
+//TreeNode : SetFirst
+//purpose  : Sets the TreeNode F as first in the TreeNode tree
+//=======================================================================
+void SALOMEDSImpl_AttributeTreeNode::SetFirst(const Handle(SALOMEDSImpl_AttributeTreeNode)& F)
+{
+  CheckLocked();
+  Backup();
+  myFirst = F;
+  
+  SetModifyFlag(); //SRN: Mark the study as being modified, so it could be saved 
+}         
+
+//=======================================================================
+//TreeNode : AfterAddition
+//purpose  : Connects the TreeNode to the tree.
+//           Backuped attribute must stay disconnected
+//=======================================================================
+void SALOMEDSImpl_AttributeTreeNode::AfterAddition() 
+{
+  if (!IsBackuped()) {
+    if (!myPrevious.IsNull()) {
+      myPrevious->SetNext(this);
+    }
+    else if (!myFather.IsNull()) {
+      myFather->SetFirst(this);
+    }
+    if (!myNext.IsNull())
+      myNext->SetPrevious(this);
+  }
+}
+
+//=======================================================================
+//TreeNode : BeforeForget
+//purpose  : Disconnect the TreeNode from the tree.
+//           Backuped attribute is normaly not concerned by such an operation
+//=======================================================================
+void SALOMEDSImpl_AttributeTreeNode::BeforeForget() 
+{
+  if (!IsBackuped()) {
+    Remove();
+    while (HasFirst()) GetFirst()->Remove();
+  }
+}
+
+//=======================================================================
+//TreeNode : AfterResume
+//purpose  : Connects the TreeNode to the tree
+//=======================================================================
+void SALOMEDSImpl_AttributeTreeNode::AfterResume() 
+{
+  AfterAddition();
+}
+
+//=======================================================================
+//TreeNode : BeforeUndo
+//purpose  : Disconnect the TreeNode from the tree.
+//=======================================================================
+Standard_Boolean SALOMEDSImpl_AttributeTreeNode::BeforeUndo(const Handle(TDF_AttributeDelta)& anAttDelta,
+                                                           const Standard_Boolean forceIt)
+{
+  if (anAttDelta->IsKind(STANDARD_TYPE(TDF_DeltaOnAddition))) BeforeForget(); // Disconnect.
+  return Standard_True;
+}           
+
+//=======================================================================
+//TreeNode : AfterUndo
+//purpose  : Connect the TreeNode from the tree.
+//=======================================================================
+Standard_Boolean SALOMEDSImpl_AttributeTreeNode::AfterUndo(const Handle(TDF_AttributeDelta)& anAttDelta,
+                                                          const Standard_Boolean forceIt)
+{
+  if (anAttDelta->IsKind(STANDARD_TYPE(TDF_DeltaOnRemoval))) AfterAddition(); // Reconnect.
+  return Standard_True;
+}
+
+//=======================================================================
+//TreeNode : Restore
+//purpose  :
+//=======================================================================
+void SALOMEDSImpl_AttributeTreeNode::Restore(const Handle(TDF_Attribute)& other) 
+{
+  Handle(SALOMEDSImpl_AttributeTreeNode) F =  Handle(SALOMEDSImpl_AttributeTreeNode)::DownCast(other);
+  myFather     = F->myFather;
+  myPrevious   = F->myPrevious;
+  myNext       = F->myNext;
+  myFirst      = F->myFirst;
+  myTreeID     = F->myTreeID;
+}       
+
+//=======================================================================
+//TreeNode : Paste
+//purpose  : Method for Copy mechanism
+//=======================================================================
+
+void SALOMEDSImpl_AttributeTreeNode::Paste(const Handle(TDF_Attribute)& into,
+                                          const Handle(TDF_RelocationTable)& RT) const
+{
+  Handle(SALOMEDSImpl_AttributeTreeNode) intof = Handle(SALOMEDSImpl_AttributeTreeNode)::DownCast(into);
+  Handle(SALOMEDSImpl_AttributeTreeNode) func;
+  if (!RT->HasRelocation(myFather, func) && RT->AfterRelocate()) {
+    func.Nullify();
+  }
+  intof->SetFather(func);
+  if (!RT->HasRelocation(myNext, func) && RT->AfterRelocate()) {
+    func.Nullify();
+  }
+  intof->SetNext(func);
+  if (!RT->HasRelocation(myPrevious, func) && RT->AfterRelocate()) {
+    func.Nullify();
+  }
+  intof->SetPrevious(func);
+  if (!RT->HasRelocation(myFirst, func) && RT->AfterRelocate()) {
+    func.Nullify();
+  }
+
+  intof->SetFirst(func);
+  intof->SetTreeID(myTreeID);
+}
+
+//=======================================================================
+//TreeNode : NewEmpty
+//purpose  : Returns new empty TreeNode attribute
+//=======================================================================
+
+Handle(TDF_Attribute) SALOMEDSImpl_AttributeTreeNode::NewEmpty() const
+{
+  Handle(SALOMEDSImpl_AttributeTreeNode) T = new SALOMEDSImpl_AttributeTreeNode();
+  T->SetTreeID(myTreeID);
+  return T;
+}
+
+//=======================================================================
+//TreeNode : References
+//purpose  : Collects the references
+//=======================================================================
+void SALOMEDSImpl_AttributeTreeNode::References(const Handle(TDF_DataSet)& aDataSet) const
+{
+  Handle(SALOMEDSImpl_AttributeTreeNode) fct = myFirst;
+  while (!fct.IsNull()) {
+    aDataSet->AddAttribute(fct);
+    fct = fct->myNext;
+  }
+}          
+
+TCollection_AsciiString SALOMEDSImpl_AttributeTreeNode::Type()
+{
+   char* aNodeName = new char[60];
+   char aGUID[40];
+   ID().ToCString(aGUID);
+   sprintf(aNodeName, "AttributeTreeNodeGUID%s",aGUID);
+   TCollection_AsciiString ret(aNodeName); 
+   delete aNodeName;
+   
+   return ret;                               
+}
+
+TCollection_AsciiString SALOMEDSImpl_AttributeTreeNode::Save() 
+{
+  TCollection_AsciiString aFather, aPrevious, aNext, aFirst;
+
+  if (HasFather()) aFather = Entry(GetFather()->Label()); else aFather = "!";
+  if (HasPrevious()) aPrevious = Entry(GetPrevious()->Label()); else aPrevious = "!";
+  if (HasNext()) aNext = Entry(GetNext()->Label()); else aNext = "!";
+  if (HasFirst()) aFirst = Entry(GetFirst()->Label()); else aFirst = "!";
+
+  int aLength = 4;
+  aLength += aFather.Length() + aPrevious.Length() + aNext.Length() + aFirst.Length();
+  char* aResult = new char[aLength];
+  sprintf(aResult, "%s %s %s %s", aFather.ToCString(), aPrevious.ToCString(), aNext.ToCString(), aFirst.ToCString());
+  TCollection_AsciiString ret(aResult);
+  delete aResult;
+  return ret;
+}
+
+void SALOMEDSImpl_AttributeTreeNode::Load(const TCollection_AsciiString& value) 
+{
+  Handle(TDF_Data) DF = Label().Data();
+  
+  char* aCopy = (char*)value.ToCString();
+  char* adr = strtok(aCopy, " ");
+  
+  TDF_Label aLabel;
+  Handle(SALOMEDSImpl_AttributeTreeNode) aDepNode;
+
+  if (adr && adr[0] != '!') {
+    TDF_Tool::Label(DF, adr, aLabel, 1);
+    if (!aLabel.FindAttribute(ID(), aDepNode)) 
+      aDepNode =  SALOMEDSImpl_AttributeTreeNode::Set(aLabel, ID());
+
+    SetFather(aDepNode);
+  }
+
+  adr = strtok(NULL, " ");
+  if (adr && adr[0] != '!') {
+    TDF_Tool::Label(DF, adr, aLabel, 1);
+    if (!aLabel.FindAttribute(ID(), aDepNode)) 
+      aDepNode = SALOMEDSImpl_AttributeTreeNode::Set(aLabel, ID());
+    SetPrevious(aDepNode);
+  }
+
+  adr = strtok(NULL, " ");
+  if (adr && adr[0] != '!') {
+    TDF_Tool::Label(DF, adr, aLabel, 1);
+    if (!aLabel.FindAttribute(ID(), aDepNode)) 
+      aDepNode = SALOMEDSImpl_AttributeTreeNode::Set(aLabel, ID());
+    SetNext(aDepNode);
+  }
+
+  adr = strtok(NULL, " ");
+  if (adr && adr[0] != '!') {
+    TDF_Tool::Label(DF, adr, aLabel, 1);
+    if (!aLabel.FindAttribute(ID(), aDepNode)) 
+      aDepNode = SALOMEDSImpl_AttributeTreeNode::Set(aLabel, ID());
+    SetFirst(aDepNode);
+  }
+}
+
+
diff --git a/src/SALOMEDSImpl/SALOMEDSImpl_AttributeTreeNode.hxx b/src/SALOMEDSImpl/SALOMEDSImpl_AttributeTreeNode.hxx
new file mode 100644 (file)
index 0000000..c61715f
--- /dev/null
@@ -0,0 +1,94 @@
+//  File   : SALOMEDSImpl_AttributeTreeNode.hxx
+//  Author : Sergey RUIN
+//  Module : SALOME
+
+#ifndef _SALOMEDSImpl_AttributeTreeNode_HeaderFile
+#define _SALOMEDSImpl_AttributeTreeNode_HeaderFile
+
+#include <Standard_DefineHandle.hxx>
+#include <TDF_Attribute.hxx>
+#include <Standard_GUID.hxx>     
+#include <TDF_Label.hxx>
+#include <TDF_AttributeDelta.hxx>
+#include <TCollection_AsciiString.hxx>
+#include "SALOMEDSImpl_GenericAttribute.hxx"
+
+class Handle_TDF_DataSet;
+class Handle(TDF_Attribute);
+class Handle(TDF_RelocationTable);
+class SALOMEDSImpl_ChildNodeIterator;
+
+DEFINE_STANDARD_HANDLE( SALOMEDSImpl_AttributeTreeNode, SALOMEDSImpl_GenericAttribute )
+
+class SALOMEDSImpl_AttributeTreeNode : public SALOMEDSImpl_GenericAttribute 
+{
+public:
+
+Standard_EXPORT const static Standard_GUID& GetDefaultTreeID();
+Standard_EXPORT static  Handle_SALOMEDSImpl_AttributeTreeNode Set(const TDF_Label& L, const Standard_GUID& ID);
+
+Standard_EXPORT SALOMEDSImpl_AttributeTreeNode();
+Standard_EXPORT void SetFather(const Handle(SALOMEDSImpl_AttributeTreeNode)& value);
+Standard_EXPORT void SetPrevious(const Handle(SALOMEDSImpl_AttributeTreeNode)& value);
+Standard_EXPORT void SetNext(const Handle(SALOMEDSImpl_AttributeTreeNode)& value);
+Standard_EXPORT void SetFirst(const Handle(SALOMEDSImpl_AttributeTreeNode)& value);
+Standard_EXPORT void SetTreeID(const Standard_GUID& value);
+
+Standard_EXPORT Standard_Boolean Append(const Handle(SALOMEDSImpl_AttributeTreeNode)& value);  
+Standard_EXPORT Standard_Boolean Prepend(const Handle(SALOMEDSImpl_AttributeTreeNode)& value);
+Standard_EXPORT Standard_Boolean Remove();
+Standard_EXPORT Standard_Boolean InsertBefore(const Handle(SALOMEDSImpl_AttributeTreeNode)& value);
+Standard_EXPORT Standard_Boolean InsertAfter(const Handle(SALOMEDSImpl_AttributeTreeNode)& value);
+
+Standard_EXPORT Handle(SALOMEDSImpl_AttributeTreeNode) GetFather() { return myFather; }
+Standard_EXPORT Handle(SALOMEDSImpl_AttributeTreeNode) GetPrevious() { return myPrevious; }
+Standard_EXPORT Handle(SALOMEDSImpl_AttributeTreeNode) GetNext() { return myNext; }
+Standard_EXPORT Handle(SALOMEDSImpl_AttributeTreeNode) GetFirst() { return myFirst; }
+
+Standard_EXPORT Standard_Boolean HasFather() { return (!myFather.IsNull()); }
+Standard_EXPORT Standard_Boolean HasPrevious() { return (!myPrevious.IsNull()); }
+Standard_EXPORT Standard_Boolean HasNext() {return (!myNext.IsNull()); }
+Standard_EXPORT Standard_Boolean HasFirst() { return (!myFirst.IsNull()); }
+Standard_EXPORT const Standard_GUID& GetTreeID() { return ID(); }
+Standard_EXPORT Standard_Integer Depth() const;
+Standard_EXPORT Standard_Boolean IsRoot() const ;
+Standard_EXPORT Handle(SALOMEDSImpl_AttributeTreeNode) Root() const;
+Standard_EXPORT Standard_Boolean IsAscendant (const Handle(SALOMEDSImpl_AttributeTreeNode)& ofTN) const;
+Standard_EXPORT Standard_Boolean IsDescendant(const Handle(SALOMEDSImpl_AttributeTreeNode)& value) const;
+Standard_EXPORT Standard_Boolean IsFather(const Handle(SALOMEDSImpl_AttributeTreeNode)& value) const;
+Standard_EXPORT Standard_Boolean IsChild(const Handle(SALOMEDSImpl_AttributeTreeNode)& value) const;
+
+Standard_EXPORT virtual TCollection_AsciiString Save();
+Standard_EXPORT virtual void Load(const TCollection_AsciiString&); 
+Standard_EXPORT virtual TCollection_AsciiString Type(); 
+
+Standard_EXPORT virtual  void AfterAddition() ;
+Standard_EXPORT virtual  void BeforeForget() ;
+Standard_EXPORT virtual  void AfterResume() ;
+Standard_EXPORT virtual  Standard_Boolean BeforeUndo(const Handle(TDF_AttributeDelta)& anAttDelta,
+                                                    const Standard_Boolean forceIt = Standard_False) ;
+Standard_EXPORT virtual  Standard_Boolean AfterUndo(const Handle(TDF_AttributeDelta)& anAttDelta,
+                                                   const Standard_Boolean forceIt = Standard_False) ;   
+Standard_EXPORT  const Standard_GUID& ID() const;
+Standard_EXPORT  void Restore(const Handle(TDF_Attribute)& with) ;
+Standard_EXPORT  void Paste(const Handle(TDF_Attribute)& into,const Handle(TDF_RelocationTable)& RT) const;
+Standard_EXPORT  Handle(TDF_Attribute) NewEmpty() const;
+Standard_EXPORT  void References(const Handle(TDF_DataSet)& aDataSet) const;  
+Standard_EXPORT ~SALOMEDSImpl_AttributeTreeNode() {}
+
+public:
+  DEFINE_STANDARD_RTTI( SALOMEDSImpl_AttributeTreeNode )
+
+private:
+
+Standard_GUID myTreeID; 
+Handle(SALOMEDSImpl_AttributeTreeNode) myFather;
+Handle(SALOMEDSImpl_AttributeTreeNode) myPrevious;
+Handle(SALOMEDSImpl_AttributeTreeNode) myNext;
+Handle(SALOMEDSImpl_AttributeTreeNode) myFirst;
+
+friend class SALOMEDSImpl_ChildNodeIterator;
+
+};
+
+#endif
diff --git a/src/SALOMEDSImpl/SALOMEDSImpl_AttributeUserID.cxx b/src/SALOMEDSImpl/SALOMEDSImpl_AttributeUserID.cxx
new file mode 100644 (file)
index 0000000..41fcd0c
--- /dev/null
@@ -0,0 +1,91 @@
+//  File   : SALOMEDSImpl_AttributeUAttribute.cxx
+//  Author : Sergey RUIN
+//  Module : SALOME
+
+
+#include "SALOMEDSImpl_AttributeUserID.hxx"
+
+using namespace std;
+
+IMPLEMENT_STANDARD_HANDLE( SALOMEDSImpl_AttributeUserID, SALOMEDSImpl_GenericAttribute )
+IMPLEMENT_STANDARD_RTTIEXT( SALOMEDSImpl_AttributeUserID, SALOMEDSImpl_GenericAttribute )
+
+Handle(SALOMEDSImpl_AttributeUserID) SALOMEDSImpl_AttributeUserID::Set (const TDF_Label& L, const Standard_GUID& ID) 
+{
+  Handle(SALOMEDSImpl_AttributeUserID) A;
+  if (!L.FindAttribute(ID, A)) {
+    A = new  SALOMEDSImpl_AttributeUserID(); 
+    A->SetValue(ID);
+    L.AddAttribute(A);
+  }
+  return A;
+}
+
+//=======================================================================
+//function : ID
+//purpose  :
+//=======================================================================
+const Standard_GUID& SALOMEDSImpl_AttributeUserID::ID() const
+{ return myID; }
+
+
+//=======================================================================
+//function : SetValue
+//purpose  :
+//=======================================================================
+void SALOMEDSImpl_AttributeUserID::SetValue( const Standard_GUID&  guid)
+{
+  CheckLocked();
+  if(myID == guid) return;
+
+  Backup();
+  myID = guid;
+  
+  SetModifyFlag(); //SRN: Mark the study as being modified, so it could be saved 
+}        
+
+//=======================================================================
+//function : NewEmpty
+//purpose  :
+//=======================================================================
+Handle(TDF_Attribute) SALOMEDSImpl_AttributeUserID::NewEmpty () const
+{
+  Handle(SALOMEDSImpl_AttributeUserID) A = new SALOMEDSImpl_AttributeUserID();
+  A->SetValue(myID);
+  return A;
+}
+
+//=======================================================================
+//function : Restore
+//purpose  :
+//=======================================================================
+void SALOMEDSImpl_AttributeUserID::Restore(const Handle(TDF_Attribute)& with)
+{
+  Handle(SALOMEDSImpl_AttributeUserID) A = Handle(SALOMEDSImpl_AttributeUserID)::DownCast(with);
+  SetValue( A->ID() );
+}
+
+//=======================================================================
+//function : Paste
+//purpose  :
+//=======================================================================
+void SALOMEDSImpl_AttributeUserID::Paste (const Handle(TDF_Attribute)& into,
+                                         const Handle(TDF_RelocationTable)& RT) const
+{
+  Handle(SALOMEDSImpl_AttributeUserID) A = Handle(SALOMEDSImpl_AttributeUserID)::DownCast(into);
+  A->SetValue( myID );
+}    
+
+TCollection_AsciiString SALOMEDSImpl_AttributeUserID::Type() 
+{
+
+  char* aUAttrName = new char[60];
+  char aGUID[40];
+  ID().ToCString(aGUID);
+  sprintf(aUAttrName, "AttributeUserID_%s",aGUID);
+
+  TCollection_AsciiString ret(aUAttrName);
+  delete aUAttrName;
+
+  return ret;
+}
diff --git a/src/SALOMEDSImpl/SALOMEDSImpl_AttributeUserID.hxx b/src/SALOMEDSImpl/SALOMEDSImpl_AttributeUserID.hxx
new file mode 100644 (file)
index 0000000..106c973
--- /dev/null
@@ -0,0 +1,51 @@
+//  File   : SALOMEDSImpl_AttributeUAttribute.hxx
+//  Author : Sergey RUIN
+//  Module : SALOME
+
+#ifndef _SALOMEDSImpl_AttributeUserID_HeaderFile
+#define _SALOMEDSImpl_AttributeUserID_HeaderFile
+
+#include <Standard_DefineHandle.hxx>
+#include <TDF_Attribute.hxx>
+#include <Standard_GUID.hxx>
+#include <TDF_Label.hxx>       
+#include <TCollection_AsciiString.hxx>
+#include "SALOMEDSImpl_GenericAttribute.hxx"
+
+class Handle(TDF_Attribute);
+class Handle(TDF_RelocationTable);
+
+
+DEFINE_STANDARD_HANDLE( SALOMEDSImpl_AttributeUserID, SALOMEDSImpl_GenericAttribute )
+
+class SALOMEDSImpl_AttributeUserID : public SALOMEDSImpl_GenericAttribute 
+{
+private:
+Standard_GUID myID;   
+
+public:
+SALOMEDSImpl_AttributeUserID():SALOMEDSImpl_GenericAttribute("AttributeUserID") {}
+static Handle(SALOMEDSImpl_AttributeUserID) Set (const TDF_Label& L, const Standard_GUID& ID);
+static const Standard_GUID& DefaultID() 
+{
+  static Standard_GUID SALOMEDSImpl_DefaultUserAttributeID ("FFFFFFFF-D9CD-11d6-945D-1050DA506788");
+  return SALOMEDSImpl_DefaultUserAttributeID;
+}   
+
+Standard_EXPORT  const Standard_GUID& Value() const { return ID(); }
+Standard_EXPORT  void SetValue(const Standard_GUID& value);
+
+Standard_EXPORT  virtual TCollection_AsciiString Type(); 
+
+Standard_EXPORT  const Standard_GUID& ID() const;
+Standard_EXPORT  void Restore(const Handle(TDF_Attribute)& with) ;
+Standard_EXPORT  Handle_TDF_Attribute NewEmpty() const;
+Standard_EXPORT  void Paste(const Handle(TDF_Attribute)& into,const Handle(TDF_RelocationTable)& RT) const;
+Standard_EXPORT ~SALOMEDSImpl_AttributeUserID() {}
+
+public:
+  DEFINE_STANDARD_RTTI( SALOMEDSImpl_AttributeUserID )
+
+};
+
+#endif
diff --git a/src/SALOMEDSImpl/SALOMEDSImpl_Attributes.hxx b/src/SALOMEDSImpl/SALOMEDSImpl_Attributes.hxx
new file mode 100644 (file)
index 0000000..c37e2a1
--- /dev/null
@@ -0,0 +1,128 @@
+//  File   : SALOMEDSImpl_Attributes.hxx
+//  Author : Sergey RUIN
+//  Module : SALOME
+
+#ifndef __SALOMEDSIMPL_ATTRIBUTES__H__
+#define __SALOMEDSIMPL_ATTRIBUTES__H__
+
+#include <iostream>
+class LockProtection
+{
+public :
+  LockProtection(const char *message) {
+    std::cerr << message << std::endl;
+  }
+}; 
+
+#include "SALOMEDSImpl_GenericAttribute.hxx"
+#include "SALOMEDSImpl_AttributeName.hxx"
+#include "SALOMEDSImpl_AttributeComment.hxx"
+#include "SALOMEDSImpl_AttributeInteger.hxx"
+#include "SALOMEDSImpl_AttributeReal.hxx"
+#include "SALOMEDSImpl_AttributeTreeNode.hxx"
+#include "SALOMEDSImpl_AttributeUserID.hxx"
+#include "SALOMEDSImpl_AttributeReference.hxx"
+#include "SALOMEDSImpl_AttributeSequenceOfReal.hxx"
+#include "SALOMEDSImpl_AttributeSequenceOfInteger.hxx" 
+#include "SALOMEDSImpl_AttributeIOR.hxx"
+#include "SALOMEDSImpl_AttributePersistentRef.hxx" 
+#include "SALOMEDSImpl_AttributeDrawable.hxx"
+#include "SALOMEDSImpl_AttributeSelectable.hxx"
+#include "SALOMEDSImpl_AttributeExpandable.hxx"
+#include "SALOMEDSImpl_AttributeOpened.hxx"
+#include "SALOMEDSImpl_AttributeTextColor.hxx"
+#include "SALOMEDSImpl_AttributeTextHighlightColor.hxx"
+#include "SALOMEDSImpl_AttributePixMap.hxx"
+#include "SALOMEDSImpl_AttributeLocalID.hxx"
+#include "SALOMEDSImpl_AttributeTarget.hxx"
+#include "SALOMEDSImpl_AttributeTableOfInteger.hxx"
+#include "SALOMEDSImpl_AttributeTableOfReal.hxx"
+#include "SALOMEDSImpl_AttributeTableOfString.hxx"
+#include "SALOMEDSImpl_AttributeStudyProperties.hxx"
+#include "SALOMEDSImpl_AttributePythonObject.hxx"
+#include "SALOMEDSImpl_AttributeExternalFileDef.hxx"
+#include "SALOMEDSImpl_AttributeFileType.hxx"
+#include "SALOMEDSImpl_AttributeFlags.hxx"
+#include "SALOMEDSImpl_AttributeGraphic.hxx"
+
+
+#define __AttributeTypeToGUIDForSObject \
+       if(theType == "AttributeReal") return SALOMEDSImpl_AttributeReal::GetID(); \
+       if(theType == "AttributeInteger") return SALOMEDSImpl_AttributeInteger::GetID(); \
+       if(theType == "AttributeSequenceOfReal") return SALOMEDSImpl_AttributeSequenceOfReal::GetID(); \
+       if(theType == "AttributeSequenceOfInteger") return SALOMEDSImpl_AttributeSequenceOfInteger::GetID(); \
+       if(theType == "AttributeName") return SALOMEDSImpl_AttributeName::GetID(); \
+        if(theType == "AttributeComment") return SALOMEDSImpl_AttributeComment::GetID(); \
+        if(theType == "AttributeIOR") return SALOMEDSImpl_AttributeIOR::GetID(); \
+        if(theType == "AttributePersistentRef") return SALOMEDSImpl_AttributePersistentRef::GetID(); \
+        if(theType == "AttributeDrawable") return SALOMEDSImpl_AttributeDrawable::GetID(); \
+        if(theType == "AttributeSelectable") return SALOMEDSImpl_AttributeSelectable::GetID(); \
+       if(theType == "AttributeExpandable") return SALOMEDSImpl_AttributeExpandable::GetID(); \
+       if(theType == "AttributeOpened") return SALOMEDSImpl_AttributeOpened::GetID(); \
+       if(theType == "AttributeTextColor") return SALOMEDSImpl_AttributeTextColor::GetID(); \
+       if(theType == "AttributeTextHighlightColor") return SALOMEDSImpl_AttributeTextHighlightColor::GetID(); \
+       if(theType == "AttributePixMap") return SALOMEDSImpl_AttributePixMap::GetID(); \
+       if(theType == "AttributeLocalID") return SALOMEDSImpl_AttributeLocalID::GetID(); \
+       if(theType == "AttributeTarget") return SALOMEDSImpl_AttributeTarget::GetID(); \
+       if(theType == "AttributeTableOfInteger") return SALOMEDSImpl_AttributeTableOfInteger::GetID(); \
+       if(theType == "AttributeTableOfReal") return SALOMEDSImpl_AttributeTableOfReal::GetID();  \
+        if(theType == "AttributeTableOfString") return SALOMEDSImpl_AttributeTableOfString::GetID(); \
+       if(theType == "AttributeStudyProperties") return SALOMEDSImpl_AttributeStudyProperties::GetID(); \
+       if(theType == "AttributePythonObject") return SALOMEDSImpl_AttributePythonObject::GetID(); \
+       if(theType == "AttributeUserID") return Standard_GUID("FFFFFFFF-D9CD-11d6-945D-1050DA506788"); \
+       if(theType == "AttributeExternalFileDef") return SALOMEDSImpl_AttributeExternalFileDef::GetID(); \
+       if(theType == "AttributeFileType") return SALOMEDSImpl_AttributeFileType::GetID(); \
+       if(theType == "AttributeFlags") return SALOMEDSImpl_AttributeFlags::GetID(); \
+        if(theType == "AttributeGraphic") return SALOMEDSImpl_AttributeGraphic::GetID(); \
+       if(theType == "AttributeReference") return SALOMEDSImpl_AttributeReference::GetID();
+
+
+#define __FindOrCreateAttributeLocked(ClassName) if (strcmp(aTypeOfAttribute.ToCString(), #ClassName) == 0) { \
+    Handle(SALOMEDSImpl_##ClassName) anAttr; \
+    if (!Lab.FindAttribute(SALOMEDSImpl_##ClassName::GetID(), anAttr)) { \
+      CheckLocked(); \
+      anAttr = new SALOMEDSImpl_##ClassName; \
+      Lab.AddAttribute(anAttr); \
+    } \
+    return anAttr; \
+  }   
+
+#define __FindOrCreateAttribute(ClassName) if (strcmp(aTypeOfAttribute.ToCString(), #ClassName) == 0) { \
+    Handle(SALOMEDSImpl_##ClassName) anAttr; \
+    if (!Lab.FindAttribute(SALOMEDSImpl_##ClassName::GetID(), anAttr)) { \
+      anAttr = new SALOMEDSImpl_##ClassName; \
+      Lab.AddAttribute(anAttr); \
+    } \
+    return anAttr; \
+  }      
+
+#define __FindOrCreateAttributeForBuilder \
+__FindOrCreateAttributeLocked(AttributeReal) \
+__FindOrCreateAttributeLocked(AttributeInteger) \
+__FindOrCreateAttributeLocked(AttributeSequenceOfReal) \
+__FindOrCreateAttributeLocked(AttributeSequenceOfInteger) \
+__FindOrCreateAttributeLocked(AttributeName) \
+__FindOrCreateAttributeLocked(AttributeComment) \
+__FindOrCreateAttributeLocked(AttributeIOR) \
+__FindOrCreateAttributeLocked(AttributePixMap) \
+__FindOrCreateAttributeLocked(AttributeLocalID) \
+__FindOrCreateAttributeLocked(AttributeTableOfInteger) \
+__FindOrCreateAttributeLocked(AttributeTableOfReal) \
+__FindOrCreateAttributeLocked(AttributeTableOfString) \
+__FindOrCreateAttributeLocked(AttributePythonObject) \
+__FindOrCreateAttribute(AttributePersistentRef) \
+__FindOrCreateAttribute(AttributeDrawable) \
+__FindOrCreateAttribute(AttributeSelectable) \
+__FindOrCreateAttribute(AttributeExpandable) \
+__FindOrCreateAttribute(AttributeOpened) \
+__FindOrCreateAttribute(AttributeTextColor) \
+__FindOrCreateAttribute(AttributeTextHighlightColor) \
+__FindOrCreateAttribute(AttributeTarget) \
+__FindOrCreateAttribute(AttributeStudyProperties) \
+__FindOrCreateAttribute(AttributeExternalFileDef) \
+__FindOrCreateAttribute(AttributeFileType) \
+__FindOrCreateAttribute(AttributeFlags) \
+__FindOrCreateAttribute(AttributeGraphic)
+
+
+#endif
diff --git a/src/SALOMEDSImpl/SALOMEDSImpl_Callback.cxx b/src/SALOMEDSImpl/SALOMEDSImpl_Callback.cxx
new file mode 100644 (file)
index 0000000..8b55639
--- /dev/null
@@ -0,0 +1,9 @@
+//  File   : SALOMEDSImpl_Callback.cxx
+//  Author : Sergey RUIN
+//  Module : SALOME
+
+#include "SALOMEDSImpl_Callback.hxx"
+
+IMPLEMENT_STANDARD_HANDLE( SALOMEDSImpl_Callback, MMgt_TShared )
+IMPLEMENT_STANDARD_RTTIEXT( SALOMEDSImpl_Callback, MMgt_TShared )
+
diff --git a/src/SALOMEDSImpl/SALOMEDSImpl_Callback.hxx b/src/SALOMEDSImpl/SALOMEDSImpl_Callback.hxx
new file mode 100644 (file)
index 0000000..c78054b
--- /dev/null
@@ -0,0 +1,42 @@
+//  File   : SALOMEDSImpl_Callback.hxx
+//  Author : Sergey RUIN
+//  Module : SALOME
+
+#ifndef __SALOMEDSIMPL_CALLBACK_H__
+#define __SALOMEDSIMPL_CALLBACK_H__
+
+//Handle definition
+#include <Handle_MMgt_TShared.hxx>
+#include <Standard_DefineHandle.hxx>
+DEFINE_STANDARD_HANDLE( SALOMEDSImpl_Callback, MMgt_TShared )
+
+#include "SALOMEDSImpl_UseCaseBuilder.hxx"
+
+class SALOMEDSImpl_Callback : public MMgt_TShared  
+{
+private:
+  Handle(SALOMEDSImpl_UseCaseBuilder) _builder;
+
+public:
+
+ SALOMEDSImpl_Callback(const Handle(SALOMEDSImpl_UseCaseBuilder)& builder) 
+ {
+   _builder = builder;
+ }
+
+ virtual void OnAddSObject(Handle(SALOMEDSImpl_SObject) theObject) 
+ {
+   if(_builder != NULL && theObject != NULL) _builder->Append(theObject);
+ }
+
+ virtual void OnRemoveSObject(Handle(SALOMEDSImpl_SObject) theObject) 
+ {
+   if(_builder != NULL && theObject != NULL) _builder->Remove(theObject);
+ }
+
+public:
+  DEFINE_STANDARD_RTTI( SALOMEDSImpl_Callback )
+
+};
+
+#endif
diff --git a/src/SALOMEDSImpl/SALOMEDSImpl_ChildIterator.cxx b/src/SALOMEDSImpl/SALOMEDSImpl_ChildIterator.cxx
new file mode 100644 (file)
index 0000000..79a21af
--- /dev/null
@@ -0,0 +1,62 @@
+//  File   : SALOMEDSImpl_ChildIterator.cxx
+//  Author : Sergey RUIN
+//  Module : SALOME
+
+
+#include "SALOMEDSImpl_ChildIterator.hxx"
+#include "SALOMEDSImpl_Study.hxx"
+
+IMPLEMENT_STANDARD_HANDLE( SALOMEDSImpl_ChildIterator, MMgt_TShared )
+IMPLEMENT_STANDARD_RTTIEXT( SALOMEDSImpl_ChildIterator, MMgt_TShared )
+
+SALOMEDSImpl_ChildIterator::SALOMEDSImpl_ChildIterator(const Handle(SALOMEDSImpl_SObject)& theSO)
+{
+  _so  = theSO;
+  _it = TDF_ChildIterator(_so->GetLabel());
+}
+
+SALOMEDSImpl_ChildIterator::SALOMEDSImpl_ChildIterator(const TDF_Label& theLabel)
+{
+  _so  = SALOMEDSImpl_Study::SObject(theLabel);
+  _it = TDF_ChildIterator(theLabel);
+}
+
+void SALOMEDSImpl_ChildIterator::Init()
+{
+  _it.Initialize(_so->GetLabel(), Standard_False);
+}
+
+void SALOMEDSImpl_ChildIterator::Init(const TDF_Label& theLabel)
+{
+  _it.Initialize(theLabel, Standard_False);
+}
+
+void SALOMEDSImpl_ChildIterator::InitEx(bool theAllLevels)
+{
+  _it.Initialize(_so->GetLabel(), theAllLevels);
+}
+
+void SALOMEDSImpl_ChildIterator::InitEx(const TDF_Label& theLabel, bool theAllLevels)
+{
+  _it.Initialize(theLabel, theAllLevels);
+}
+
+bool SALOMEDSImpl_ChildIterator::More()
+{
+  return _it.More();
+}
+
+void SALOMEDSImpl_ChildIterator::Next() 
+{
+  _it.Next();
+}
+
+Handle(SALOMEDSImpl_SObject) SALOMEDSImpl_ChildIterator::Value()
+{
+  return SALOMEDSImpl_Study::SObject(_it.Value());
+}
+
+TDF_Label SALOMEDSImpl_ChildIterator::Label()
+{
+  return _it.Value();
+}
diff --git a/src/SALOMEDSImpl/SALOMEDSImpl_ChildIterator.hxx b/src/SALOMEDSImpl/SALOMEDSImpl_ChildIterator.hxx
new file mode 100644 (file)
index 0000000..6cbb185
--- /dev/null
@@ -0,0 +1,41 @@
+//  File   : SALOMEDSImpl_ChildIterator.hxx
+//  Author : Sergey RUIN
+//  Module : SALOME
+
+#ifndef __SALOMEDSImpl_CHILDITERATOR_H__
+#define __SALOMEDSImpl_CHILDITERATOR_H__
+
+//Handle definition
+#include <Handle_MMgt_TShared.hxx>
+#include <Standard_DefineHandle.hxx>
+DEFINE_STANDARD_HANDLE( SALOMEDSImpl_ChildIterator, MMgt_TShared )
+
+#include "SALOMEDSImpl_SObject.hxx"
+#include "TDF_ChildIterator.hxx"
+#include "TDF_Label.hxx"
+
+class SALOMEDSImpl_ChildIterator: public MMgt_TShared 
+{
+private:
+  TDF_ChildIterator _it;
+  Handle(SALOMEDSImpl_SObject) _so;
+
+public:
+
+  Standard_EXPORT SALOMEDSImpl_ChildIterator(const Handle(SALOMEDSImpl_SObject)& theSO);
+  Standard_EXPORT SALOMEDSImpl_ChildIterator(const TDF_Label& theLabel);
+  Standard_EXPORT ~SALOMEDSImpl_ChildIterator() {};
+
+  Standard_EXPORT virtual void Init();
+  Standard_EXPORT virtual void Init(const TDF_Label& theLabel);
+  Standard_EXPORT virtual void InitEx(bool theAllLevels);
+  Standard_EXPORT virtual void InitEx(const TDF_Label& theLabel, bool theAllLevels);
+  Standard_EXPORT virtual bool More();
+  Standard_EXPORT virtual void Next();
+  Standard_EXPORT virtual Handle(SALOMEDSImpl_SObject) Value();
+  Standard_EXPORT virtual TDF_Label Label();
+
+public:
+  DEFINE_STANDARD_RTTI( SALOMEDSImpl_SObject )
+};
+#endif
diff --git a/src/SALOMEDSImpl/SALOMEDSImpl_ChildNodeIterator.cxx b/src/SALOMEDSImpl/SALOMEDSImpl_ChildNodeIterator.cxx
new file mode 100644 (file)
index 0000000..11ce37b
--- /dev/null
@@ -0,0 +1,75 @@
+// File:       SALOMEDSImpl_ChildNodeIterator.cxx
+// Created:    Wed Jan 26 16:43:08 2000
+// Author:     Denis PASCAL
+//             <dp@dingox.paris1.matra-dtv.fr>
+
+
+#include <SALOMEDSImpl_ChildNodeIterator.hxx>
+
+#define ChildNodeIterator_UpToBrother \
+{ \
+    while (!myNode.IsNull() && (myNode->Depth() > myFirstLevel) && myNode->myNext == NULL) \
+      myNode = myNode->myFather; \
+       if (!myNode.IsNull() && (myNode->Depth() > myFirstLevel) && myNode->myFather != NULL) \
+         myNode = myNode->myNext; \
+       else \
+         myNode = NULL; \
+}
+
+//=======================================================================
+//function : SALOMEDSImpl_ChildNodeIterator
+//purpose  : 
+//=======================================================================
+SALOMEDSImpl_ChildNodeIterator::SALOMEDSImpl_ChildNodeIterator()
+     : myFirstLevel(0)
+{}
+
+//=======================================================================
+//function : SALOMEDSImpl_ChildNodeIterator
+//purpose  : 
+//=======================================================================
+
+SALOMEDSImpl_ChildNodeIterator::SALOMEDSImpl_ChildNodeIterator (const Handle(SALOMEDSImpl_AttributeTreeNode)& aNode,
+                                                               const Standard_Boolean allLevels)
+: myNode(aNode->myFirst),
+  myFirstLevel(allLevels ? aNode->Depth() : -1)
+{}
+
+//=======================================================================
+//function : Initialize
+//purpose  : 
+//=======================================================================
+
+void SALOMEDSImpl_ChildNodeIterator::Initialize(const Handle(SALOMEDSImpl_AttributeTreeNode)& aNode,
+                                               const Standard_Boolean allLevels)
+{
+  myNode = aNode->myFirst;
+  myFirstLevel = allLevels ? aNode->Depth() : -1;
+}
+
+//=======================================================================
+//function : Next
+//purpose  : 
+//=======================================================================
+
+void SALOMEDSImpl_ChildNodeIterator::Next() 
+{
+  if (myFirstLevel == -1) {
+    myNode = myNode->myNext;
+  }
+  else {
+    if (myNode->myFirst != NULL) myNode = myNode->myFirst;
+    else ChildNodeIterator_UpToBrother;
+  }
+}
+
+//=======================================================================
+//function : NextBrother
+//purpose  : 
+//=======================================================================
+
+void SALOMEDSImpl_ChildNodeIterator::NextBrother() 
+{
+  if (myNode->myNext != NULL) myNode = myNode->myNext;
+  else ChildNodeIterator_UpToBrother;
+}
diff --git a/src/SALOMEDSImpl/SALOMEDSImpl_ChildNodeIterator.hxx b/src/SALOMEDSImpl/SALOMEDSImpl_ChildNodeIterator.hxx
new file mode 100644 (file)
index 0000000..5b7b592
--- /dev/null
@@ -0,0 +1,45 @@
+
+#ifndef _SALOMEDSImpl_ChildNodeIterator_HeaderFile
+#define _SALOMEDSImpl_ChildNodeIterator_HeaderFile
+
+#ifndef _Standard_Integer_HeaderFile
+#include <Standard_Integer.hxx>
+#endif
+#ifndef _Standard_Boolean_HeaderFile
+#include <Standard_Boolean.hxx>
+#endif
+
+#include "SALOMEDSImpl_AttributeTreeNode.hxx"
+
+
+#ifndef _Standard_HeaderFile
+#include <Standard.hxx>
+#endif
+#ifndef _Standard_Macro_HeaderFile
+#include <Standard_Macro.hxx>
+#endif
+
+class SALOMEDSImpl_ChildNodeIterator  
+{
+
+public:
+
+Standard_EXPORT SALOMEDSImpl_ChildNodeIterator();
+Standard_EXPORT SALOMEDSImpl_ChildNodeIterator(const Handle(SALOMEDSImpl_AttributeTreeNode)& aTreeNode,
+                                              const Standard_Boolean allLevels = Standard_False);
+Standard_EXPORT void Initialize(const Handle(SALOMEDSImpl_AttributeTreeNode)& aTreeNode,
+                               const Standard_Boolean allLevels = Standard_False) ;
+Standard_EXPORT Standard_Boolean More() const { return !myNode.IsNull(); }
+Standard_EXPORT void Next() ;
+Standard_EXPORT void NextBrother() ;
+Standard_EXPORT Handle_SALOMEDSImpl_AttributeTreeNode Value() const { return myNode; }
+
+private: 
+
+Handle_SALOMEDSImpl_AttributeTreeNode myNode;
+Standard_Integer myFirstLevel;
+
+};
+
+
+#endif
diff --git a/src/SALOMEDSImpl/SALOMEDSImpl_Driver.hxx b/src/SALOMEDSImpl/SALOMEDSImpl_Driver.hxx
new file mode 100644 (file)
index 0000000..000b0ac
--- /dev/null
@@ -0,0 +1,80 @@
+#ifndef __SALOMEDSIMPL_DRIVER_H__
+#define __SALOMEDSIMPL_DRIVER_H__
+
+#include <TCollection_AsciiString.hxx>
+#include <SALOMEDSImpl_SComponent.hxx>
+#include <SALOMEDSImpl_SObject.hxx>
+
+
+class SALOMEDSImpl_Driver
+{
+public:
+
+  virtual TCollection_AsciiString GetIOR() = 0;
+
+  virtual unsigned char* Save(const Handle(SALOMEDSImpl_SComponent)& theComponent,
+                             const TCollection_AsciiString& theURL,
+                             long& theStreamLength,
+                             bool isMultiFile) = 0;
+
+  virtual unsigned char* SaveASCII(const Handle(SALOMEDSImpl_SComponent)& theComponent,
+                                  const TCollection_AsciiString& theURL,
+                                  long& theStreamLength,
+                                  bool isMultiFile) = 0;
+  
+  virtual bool Load(const Handle(SALOMEDSImpl_SComponent)& theComponent,
+                   const unsigned char* theStream,
+                   const long theStreamLength,
+                   const TCollection_AsciiString& theURL,
+                   bool isMultiFile) = 0;
+
+  virtual bool LoadASCII(const Handle(SALOMEDSImpl_SComponent)& theComponent,
+                        const unsigned char* theStream,
+                        const long theStreamLength,
+                        const TCollection_AsciiString& theURL,
+                        bool isMultiFile) = 0;
+
+  virtual void Close(const Handle(SALOMEDSImpl_SComponent)& theComponent) = 0;
+  virtual TCollection_AsciiString ComponentDataType() = 0;
+
+
+  virtual TCollection_AsciiString IORToLocalPersistentID(const Handle(SALOMEDSImpl_SObject)& theSObject,
+                                                        const TCollection_AsciiString& IORString,
+                                                        bool isMultiFile,
+                                                        bool isASCII) = 0;
+
+  virtual TCollection_AsciiString LocalPersistentIDToIOR(const Handle(SALOMEDSImpl_SObject)& theSObject,
+                                                        const TCollection_AsciiString& aLocalPersistentID,
+                                                        bool isMultiFile,
+                                                        bool isASCII) = 0;
+
+  virtual bool CanCopy(const Handle(SALOMEDSImpl_SObject)& theObject) = 0;
+
+  virtual unsigned char* CopyFrom(const Handle(SALOMEDSImpl_SObject)& theObject, 
+                                 int& theObjectID,
+                                 long& theStreamLength) = 0;
+
+  virtual bool CanPaste(const TCollection_AsciiString& theComponentName, int theObjectID) = 0;
+
+  virtual TCollection_AsciiString PasteInto(const unsigned char* theStream,
+                                           const long theStreamLength,
+                                           int theObjectID,
+                                           const Handle(SALOMEDSImpl_SObject)& theObject) = 0;
+
+  virtual unsigned char* DumpPython(const Handle(SALOMEDSImpl_Study)& theStudy, 
+                                    bool isPublished, 
+                                   bool& isValidScript,
+                                   long& theStreamLength) = 0;
+};
+
+class SALOMEDSImpl_DriverFactory
+{
+public:
+  
+  virtual SALOMEDSImpl_Driver* GetDriverByType(const TCollection_AsciiString& theComponentType) = 0;
+
+  virtual SALOMEDSImpl_Driver* GetDriverByIOR(const TCollection_AsciiString& theIOR) = 0;
+};
+
+#endif 
diff --git a/src/SALOMEDSImpl/SALOMEDSImpl_GenericAttribute.cxx b/src/SALOMEDSImpl/SALOMEDSImpl_GenericAttribute.cxx
new file mode 100644 (file)
index 0000000..6f2384f
--- /dev/null
@@ -0,0 +1,67 @@
+//  File   : SALOMEDSImpl_GenericAttribute.hxx
+//  Author : SERGEY_RUIN
+//  Module : SALOME
+
+
+#include "SALOMEDSImpl_Attributes.hxx"
+#include "SALOMEDSImpl_Study.hxx"
+#include "SALOMEDSImpl_StudyBuilder.hxx"
+
+using namespace std;
+
+IMPLEMENT_STANDARD_HANDLE( SALOMEDSImpl_GenericAttribute, TDF_Attribute )
+IMPLEMENT_STANDARD_RTTIEXT( SALOMEDSImpl_GenericAttribute, TDF_Attribute )
+
+char* SALOMEDSImpl_GenericAttribute::Impl_GetType(const Handle(TDF_Attribute)& theAttr)
+{
+  Handle(SALOMEDSImpl_GenericAttribute) ga = Handle(SALOMEDSImpl_GenericAttribute)::DownCast(theAttr);  
+  return ga->Type().ToCString();
+}
+
+char* SALOMEDSImpl_GenericAttribute::Impl_GetClassType(const Handle(TDF_Attribute)& theAttr)
+{
+  Handle(SALOMEDSImpl_GenericAttribute) ga = Handle(SALOMEDSImpl_GenericAttribute)::DownCast(theAttr);
+  return ga->GetClassType().ToCString();
+} 
+
+void SALOMEDSImpl_GenericAttribute::Impl_CheckLocked(const Handle(TDF_Attribute)& theAttr)
+{
+  Handle(SALOMEDSImpl_GenericAttribute) ga = Handle(SALOMEDSImpl_GenericAttribute)::DownCast(theAttr);
+  ga->CheckLocked();
+}
+
+TCollection_AsciiString SALOMEDSImpl_GenericAttribute::Type() 
+{ 
+    return _type; 
+}
+
+
+void SALOMEDSImpl_GenericAttribute::CheckLocked()
+{
+  TDF_Label aLabel = Label();
+  if(aLabel.IsNull()) return;
+
+  Handle(SALOMEDSImpl_Study) aStudy = SALOMEDSImpl_Study::GetStudy(aLabel);
+  if(aStudy.IsNull() || aStudy->NewBuilder()->HasOpenCommand()) return;
+  if(aStudy->IsLocked()) {
+    aStudy->_errorCode = "LockProtection";
+    throw LockProtection("LockProtection");
+  }                                         
+}
+
+Handle(SALOMEDSImpl_SObject) SALOMEDSImpl_GenericAttribute::GetSObject()
+{
+  TDF_Label aLabel = Label();
+  if(aLabel.IsNull()) return NULL;
+  return SALOMEDSImpl_Study::SObject(aLabel);
+}
+
+void SALOMEDSImpl_GenericAttribute::SetModifyFlag()
+{
+   TDF_Label aLabel = Label();
+   if(aLabel.IsNull()) return; 
+
+  Handle(SALOMEDSImpl_Study) aStudy = SALOMEDSImpl_Study::GetStudy(aLabel);
+  if(!aStudy.IsNull()) aStudy->Modify();
+}
+
diff --git a/src/SALOMEDSImpl/SALOMEDSImpl_GenericAttribute.hxx b/src/SALOMEDSImpl/SALOMEDSImpl_GenericAttribute.hxx
new file mode 100644 (file)
index 0000000..47c1cc9
--- /dev/null
@@ -0,0 +1,52 @@
+//  File   : SALOMEDSImpl_GenericAttribute.hxx
+//  Author : SERGEY_RUIN
+//  Module : SALOME
+
+#ifndef _GENERICIMPL_ATTRIBUTE_HXX_
+#define _GENERICIMPL_ATTRIBUTE_HXX_
+
+#include <TDF_Label.hxx>
+#include <TCollection_AsciiString.hxx>
+#include <Standard_DefineHandle.hxx>
+#include <TDF_Attribute.hxx>
+#include <Standard_GUID.hxx>     
+
+#include "SALOMEDSImpl_SObject.hxx"
+
+class Handle(TDF_Attribute);
+class Handle(TDF_RelocationTable);
+
+
+DEFINE_STANDARD_HANDLE( SALOMEDSImpl_GenericAttribute, TDF_Attribute )
+
+class SALOMEDSImpl_GenericAttribute: public TDF_Attribute
+{
+protected:
+
+  TCollection_AsciiString _type; //This field must be filled in each attribute that inherits from this class.
+
+public:
+
+Standard_EXPORT SALOMEDSImpl_GenericAttribute(const TCollection_AsciiString& theType) 
+:_type(theType)
+{}
+
+Standard_EXPORT virtual TCollection_AsciiString Save() { return ""; } 
+Standard_EXPORT virtual void Load(const TCollection_AsciiString&) {}
+Standard_EXPORT virtual TCollection_AsciiString Type();
+Standard_EXPORT virtual void CheckLocked();
+Standard_EXPORT TCollection_AsciiString GetClassType() { return _type; }
+Standard_EXPORT Handle(SALOMEDSImpl_SObject) GetSObject();
+Standard_EXPORT void SetModifyFlag();
+
+Standard_EXPORT static char* Impl_GetType(const Handle(TDF_Attribute)& theAttr); 
+Standard_EXPORT static char* Impl_GetClassType(const Handle(TDF_Attribute)& theAttr);
+Standard_EXPORT static void Impl_CheckLocked(const Handle(TDF_Attribute)& theAttr);
+
+public:
+  DEFINE_STANDARD_RTTI( SALOMEDSImpl_GenericAttribute )
+
+};
+
+
+#endif
diff --git a/src/SALOMEDSImpl/SALOMEDSImpl_OCAFApplication.cxx b/src/SALOMEDSImpl/SALOMEDSImpl_OCAFApplication.cxx
new file mode 100644 (file)
index 0000000..4dcdedf
--- /dev/null
@@ -0,0 +1,46 @@
+//  File   : SALOMEDSImpl_OCAFApplication.cxx
+//  Author : Sergey RUIN
+//  Module : SALOME
+
+#include "SALOMEDSImpl_OCAFApplication.hxx"
+
+using namespace std;
+
+IMPLEMENT_STANDARD_HANDLE( SALOMEDSImpl_OCAFApplication, TDocStd_Application )
+IMPLEMENT_STANDARD_RTTIEXT( SALOMEDSImpl_OCAFApplication, TDocStd_Application )
+
+//=======================================================================
+//function : SALOMEDSImpl_OCAFApplication
+//purpose  : 
+//=======================================================================
+
+SALOMEDSImpl_OCAFApplication::SALOMEDSImpl_OCAFApplication() 
+{
+}
+
+
+//=======================================================================
+//function : Formats
+//purpose  : 
+//=======================================================================
+
+void SALOMEDSImpl_OCAFApplication::Formats(TColStd_SequenceOfExtendedString& Formats) 
+{  
+  Formats.Append(TCollection_ExtendedString ("SALOME_STUDY"));
+}
+
+
+//=======================================================================
+//function : ResourcesName
+//purpose  : 
+//=======================================================================
+
+Standard_CString SALOMEDSImpl_OCAFApplication::ResourcesName() 
+{
+  return Standard_CString ("SALOMEDSImpl_Resources");
+}
+
+
+
+
+
diff --git a/src/SALOMEDSImpl/SALOMEDSImpl_OCAFApplication.hxx b/src/SALOMEDSImpl/SALOMEDSImpl_OCAFApplication.hxx
new file mode 100644 (file)
index 0000000..e34a1fa
--- /dev/null
@@ -0,0 +1,32 @@
+//  File   : SALOMEDSImpl_OCAFApplication.hxx
+//  Author : Sergey RUIN
+//  Module : SALOME
+
+#ifndef _SALOMEDSImpl_OCAFApplication_HeaderFile
+#define _SALOMEDSImpl_OCAFApplication_HeaderFile
+
+
+//Handle definition
+#include <TDocStd_Application.hxx>
+#include <Standard_DefineHandle.hxx>
+DEFINE_STANDARD_HANDLE( SALOMEDSImpl_OCAFApplication,  TDocStd_Application)
+
+#include <Standard_CString.hxx>
+#include <TColStd_SequenceOfExtendedString.hxx>
+
+
+class SALOMEDSImpl_OCAFApplication : public TDocStd_Application {
+
+public:
+
+Standard_EXPORT SALOMEDSImpl_OCAFApplication();
+Standard_EXPORT virtual  void Formats(TColStd_SequenceOfExtendedString& Formats) ;
+Standard_EXPORT   Standard_CString ResourcesName() ;
+Standard_EXPORT ~SALOMEDSImpl_OCAFApplication() {}
+
+public:
+  DEFINE_STANDARD_RTTI( SALOMEDSImpl_OCAFApplication )
+
+};
+
+#endif
diff --git a/src/SALOMEDSImpl/SALOMEDSImpl_SComponent.cxx b/src/SALOMEDSImpl/SALOMEDSImpl_SComponent.cxx
new file mode 100644 (file)
index 0000000..ed4eaef
--- /dev/null
@@ -0,0 +1,78 @@
+//  File   : SALOMEDSImpl_SComponent.cxx
+//  Author : Sergey RUIN
+//  Module : SALOME
+
+
+#include "SALOMEDSImpl_SComponent.hxx"
+#include "SALOMEDSImpl_AttributeComment.hxx"
+#include "SALOMEDSImpl_AttributeIOR.hxx" 
+
+using namespace std;
+
+IMPLEMENT_STANDARD_HANDLE( SALOMEDSImpl_SComponent, SALOMEDSImpl_SObject )
+IMPLEMENT_STANDARD_RTTIEXT( SALOMEDSImpl_SComponent, SALOMEDSImpl_SObject )
+
+//============================================================================
+/*! Function : constructor
+ *  Purpose  : 
+ */
+//============================================================================
+SALOMEDSImpl_SComponent::SALOMEDSImpl_SComponent(const TDF_Label& theLabel)
+  :SALOMEDSImpl_SObject(theLabel)
+{
+}
+  
+//============================================================================
+/*! Function : destructor
+ *  Purpose  : 
+ */
+//============================================================================
+SALOMEDSImpl_SComponent::~SALOMEDSImpl_SComponent()
+{}
+  
+  
+//============================================================================
+/*! Function : ComponentDataType
+ *  Purpose  : 
+ */
+//============================================================================
+TCollection_AsciiString SALOMEDSImpl_SComponent::ComponentDataType()
+{
+  TCollection_AsciiString res = "";
+  Handle(SALOMEDSImpl_AttributeComment) type;
+  if ( _lab.FindAttribute(SALOMEDSImpl_AttributeComment::GetID(),type) ) {
+    res = type->Value();
+  }
+
+  return res;
+}
+  
+
+//============================================================================
+/*! Function : ComponentIOR
+ *  Purpose  : 
+ */
+//============================================================================
+bool SALOMEDSImpl_SComponent::ComponentIOR(TCollection_AsciiString& IOR)
+{
+  Handle(SALOMEDSImpl_AttributeIOR) ior;
+  if (!_lab.FindAttribute(SALOMEDSImpl_AttributeIOR::GetID(),ior) )
+      return false;
+  IOR = ior->Value();
+  return true;
+}
+  
+
+//============================================================================
+/*! Function : IsA
+ *  Purpose  : 
+ */
+//============================================================================
+bool SALOMEDSImpl_SComponent::IsA(const TDF_Label& theLabel)
+{
+  // scomponent must contain comment and belong to the 2th depth label
+  if ( theLabel.IsAttribute(SALOMEDSImpl_AttributeComment::GetID()) && theLabel.Depth() == 2) {
+    return true;
+  }
+  return false;
+}
diff --git a/src/SALOMEDSImpl/SALOMEDSImpl_SComponent.hxx b/src/SALOMEDSImpl/SALOMEDSImpl_SComponent.hxx
new file mode 100644 (file)
index 0000000..af7317d
--- /dev/null
@@ -0,0 +1,41 @@
+//  File   : SALOMEDSImpl_SComponent.hxx
+//  Author : Sergey RUIN
+//  Module : SALOME
+
+#ifndef __SALOMEDSIMPL_SCOMPONENT_H__
+#define __SALOMEDSIMPL_SCOMPONENT_H__
+
+//SALOMEDSImpl headers
+#include "SALOMEDSImpl_SObject.hxx"
+
+//Handle definition
+#include <Standard_DefineHandle.hxx>
+DEFINE_STANDARD_HANDLE( SALOMEDSImpl_SComponent, SALOMEDSImpl_SObject )
+
+// std C++ headers
+#include <iostream>
+
+// Cascade headers
+#include <TDF_Label.hxx>
+#include <SALOMEDSImpl_SObject.hxx>
+#include <TCollection_AsciiString.hxx> 
+#include <TDF_Tool.hxx>
+#include <stdio.h>
+
+class SALOMEDSImpl_SComponent : public SALOMEDSImpl_SObject
+{
+public:
+  
+  SALOMEDSImpl_SComponent(const TDF_Label& lab);
+  
+  ~SALOMEDSImpl_SComponent();
+  virtual TCollection_AsciiString ComponentDataType();
+  virtual bool ComponentIOR(TCollection_AsciiString& theID);
+  static bool IsA(const TDF_Label& theLabel);
+
+public:
+  DEFINE_STANDARD_RTTI( SALOMEDSImpl_SComponent )    
+
+};
+#endif
diff --git a/src/SALOMEDSImpl/SALOMEDSImpl_SComponentIterator.cxx b/src/SALOMEDSImpl/SALOMEDSImpl_SComponentIterator.cxx
new file mode 100644 (file)
index 0000000..85aa537
--- /dev/null
@@ -0,0 +1,68 @@
+//  File   : SALOMEDSImpl_SComponentIterator.cxx
+//  Author : Sergey RUIN
+//  Module : SALOME
+
+
+#include "SALOMEDSImpl_SComponentIterator.hxx"
+#include "SALOMEDSImpl_Study.hxx"
+
+using namespace std;
+
+//============================================================================
+/*! Function : constructor
+ * 
+ */
+//============================================================================
+
+SALOMEDSImpl_SComponentIterator::SALOMEDSImpl_SComponentIterator(const Handle(TDocStd_Document)& theDocument)
+{
+  _lab = theDocument->Main();
+  _it.Initialize (_lab);
+}
+
+//============================================================================
+/*! Function : Init
+ * 
+ */
+//============================================================================
+void SALOMEDSImpl_SComponentIterator::Init()
+{ 
+  _it.Initialize (_lab);
+}
+
+//============================================================================
+/*! Function : More
+ * 
+ */
+//============================================================================
+bool SALOMEDSImpl_SComponentIterator::More()
+{
+  if (!_it.More())
+    return false;
+  TDF_Label L = _it.Value();
+  if (SALOMEDSImpl_SComponent::IsA(L))
+     return true;
+
+  return _it.More();
+}
+
+ //============================================================================
+/*! Function : Next
+  */
+//============================================================================
+void SALOMEDSImpl_SComponentIterator::Next()
+{
+  _it.Next();
+}
+
+
+//============================================================================
+/*! Function : Value
+ * 
+ */
+//============================================================================
+Handle(SALOMEDSImpl_SComponent) SALOMEDSImpl_SComponentIterator::Value()
+{
+  return SALOMEDSImpl_Study::SComponent(_it.Value());
+}
+
diff --git a/src/SALOMEDSImpl/SALOMEDSImpl_SComponentIterator.hxx b/src/SALOMEDSImpl/SALOMEDSImpl_SComponentIterator.hxx
new file mode 100644 (file)
index 0000000..b165844
--- /dev/null
@@ -0,0 +1,44 @@
+//  File   : SALOMEDSImpl_SComponentIterator_i.hxx
+//  Author : Sergey RUIN
+//  Module : SALOME
+
+#ifndef __SALOMEDSIMPL_SCOMPONENTITERATOR_H__
+#define __SALOMEDSIMPL_SCOMPONENTITERATOR_H__
+
+
+//SALOMEDSImpl headers
+#include "SALOMEDSImpl_SComponent.hxx"
+
+// Cascade headers
+#include <TDocStd_Document.hxx>
+#include <TDF_ChildIterator.hxx>
+#include <TDF_Label.hxx>
+#include <stdio.h>
+
+class Standard_EXPORT SALOMEDSImpl_SComponentIterator
+{
+private:
+
+  TDF_ChildIterator        _it;
+  TDF_Label                _lab;
+
+public:
+  
+  SALOMEDSImpl_SComponentIterator(const SALOMEDSImpl_SComponentIterator& theIterator) 
+  {
+    _it = theIterator._it;
+    _lab = theIterator._lab;
+  } 
+
+  SALOMEDSImpl_SComponentIterator() {};
+  
+  SALOMEDSImpl_SComponentIterator(const Handle(TDocStd_Document)& theDocument);
+  ~SALOMEDSImpl_SComponentIterator() {};
+  
+  virtual void Init();
+  virtual bool More();
+  virtual void Next();
+  virtual Handle(SALOMEDSImpl_SComponent) Value();  
+};
+#endif
diff --git a/src/SALOMEDSImpl/SALOMEDSImpl_SObject.cxx b/src/SALOMEDSImpl/SALOMEDSImpl_SObject.cxx
new file mode 100644 (file)
index 0000000..6d967b3
--- /dev/null
@@ -0,0 +1,221 @@
+//  SALOME SALOMEDS : data structure of SALOME and sources of Salome data server 
+//  File   : SALOMEDSImpl_SObject.cxx
+//  Author : Sergey RUIN
+//  Module : SALOME
+
+
+
+#include "SALOMEDSImpl_SObject.hxx"
+#include "SALOMEDSImpl_Attributes.hxx"
+#include "SALOMEDSImpl_SComponent.hxx"
+#include "SALOMEDSImpl_Study.hxx"
+
+using namespace std;
+
+#include <TDF_AttributeIterator.hxx>
+#include <map>
+
+IMPLEMENT_STANDARD_HANDLE( SALOMEDSImpl_SObject, MMgt_TShared )
+IMPLEMENT_STANDARD_RTTIEXT( SALOMEDSImpl_SObject, MMgt_TShared )
+
+//============================================================================
+/*! Function : constructor
+ *  Purpose  : 
+ */
+//============================================================================
+SALOMEDSImpl_SObject::SALOMEDSImpl_SObject(const TDF_Label& theLabel)
+  :_lab(theLabel)
+{
+  _value = "";
+  _type = "";
+  _name = "";
+}
+
+//============================================================================
+/*! Function : Desctructor
+ *  Purpose  : 
+ */
+//============================================================================    
+SALOMEDSImpl_SObject::~SALOMEDSImpl_SObject() 
+{}
+
+//============================================================================
+/*! Function : GetID
+ *  Purpose  : 
+ */
+//============================================================================
+TCollection_AsciiString SALOMEDSImpl_SObject::GetID()
+{
+  TCollection_AsciiString anEntry;
+  TDF_Tool::Entry (_lab,anEntry);
+  return anEntry;
+}
+  
+//============================================================================
+/*! Function : GetFatherComponent
+ *  Purpose  : 
+ */
+//============================================================================
+Handle(SALOMEDSImpl_SComponent) SALOMEDSImpl_SObject::GetFatherComponent()
+{
+  TDF_Label LF = _lab;
+  while (!SALOMEDSImpl_SComponent::IsA(LF) && !LF.IsRoot()) {
+    LF = LF.Father();
+  }
+  
+  if(LF.IsRoot()) return NULL;
+  
+  return GetStudy()->GetSComponent(LF);
+}
+  
+//============================================================================
+/*! Function : GetFather
+ *  Purpose  : 
+ */
+//============================================================================
+Handle(SALOMEDSImpl_SObject) SALOMEDSImpl_SObject::GetFather()
+{
+  return GetStudy()->GetSObject(_lab.Father());    
+}
+
+
+//============================================================================
+/*! Function : GetStudy
+ *  Purpose  : 
+ */
+//============================================================================
+Handle(SALOMEDSImpl_Study) SALOMEDSImpl_SObject::GetStudy()
+{
+  return SALOMEDSImpl_Study::GetStudy(_lab);
+}
+
+//============================================================================
+/*! Function : FindAttribute
+ *  Purpose  : Find attribute of given type on this SObject
+ */
+//============================================================================
+bool SALOMEDSImpl_SObject::FindAttribute(Handle(TDF_Attribute)& theAttribute, 
+                                        const TCollection_AsciiString& theTypeOfAttribute)
+{
+  if(_lab.IsNull()) return Standard_False;
+  Standard_GUID aGUID = GetGUID(theTypeOfAttribute);
+  if (_lab.FindAttribute(aGUID, theAttribute)) return Standard_True;
+  return Standard_False;
+}
+
+
+
+//============================================================================
+/*! Function : GetAllAttributes
+ *  Purpose  : Returns list of all attributes for this sobject
+ */
+//============================================================================
+Handle(TColStd_HSequenceOfTransient) SALOMEDSImpl_SObject::GetAllAttributes()
+{
+  Standard_Integer NumAttr = _lab.NbAttributes();
+  Handle(TColStd_HSequenceOfTransient) SeqOfAttr = new TColStd_HSequenceOfTransient();
+  Handle(SALOMEDSImpl_GenericAttribute) anAttr;
+  if (NumAttr != 0) {
+    for(TDF_AttributeIterator iter(_lab);iter.More();iter.Next()) {
+      anAttr = Handle(SALOMEDSImpl_GenericAttribute)::DownCast(iter.Value());
+      if(!anAttr.IsNull() && anAttr->Type() != "AttributeReference")
+       SeqOfAttr->Append(anAttr);
+    }
+  }
+  return SeqOfAttr;
+}
+
+
+//============================================================================
+/*! Function : ReferencedObject
+ *  Purpose  : 
+ */
+//============================================================================
+bool SALOMEDSImpl_SObject::ReferencedObject(Handle(SALOMEDSImpl_SObject)& theObject)
+{
+  Handle(SALOMEDSImpl_AttributeReference) Ref;
+  if (!_lab.FindAttribute(SALOMEDSImpl_AttributeReference::GetID(),Ref))
+    return false;
+  
+  theObject =  GetStudy()->GetSObject(Ref->Get());
+  return true;
+}
+
+//============================================================================
+/*! Function : FindSubObject
+ *  Purpose  : 
+ */
+//============================================================================
+bool SALOMEDSImpl_SObject::FindSubObject(int theTag, Handle(SALOMEDSImpl_SObject)& theObject)
+{
+  TDF_Label L = _lab.FindChild(theTag, false);
+  if (L.IsNull()) return false;
+  
+  theObject = GetStudy()->GetSObject(L);
+  return true;
+    
+}  
+
+  
+//============================================================================
+/*! Function : GetName
+ *  Purpose  : 
+ */
+//============================================================================
+TCollection_AsciiString SALOMEDSImpl_SObject::GetName() 
+{
+  TCollection_AsciiString aStr = "";
+  Handle(SALOMEDSImpl_AttributeName) aName;
+  if (_lab.FindAttribute(SALOMEDSImpl_AttributeName::GetID(), aName)) {
+    aStr = aName->Value();
+  }
+  return aStr;
+}
+
+//============================================================================
+/*! Function : GetComment
+ *  Purpose  : 
+ */
+//============================================================================
+TCollection_AsciiString SALOMEDSImpl_SObject::GetComment() 
+{
+  TCollection_AsciiString aStr = "";
+  Handle(SALOMEDSImpl_AttributeComment) aComment;
+  if (_lab.FindAttribute(SALOMEDSImpl_AttributeComment::GetID(), aComment)) {
+    aStr = aComment->Value();
+  }
+  return aStr;
+}
+
+//============================================================================
+/*! Function : GetIOR
+ *  Purpose  : 
+ */
+//============================================================================
+TCollection_AsciiString SALOMEDSImpl_SObject::GetIOR() 
+{
+  TCollection_AsciiString aStr = "";
+  Handle(SALOMEDSImpl_AttributeIOR) anIOR;
+  if (_lab.FindAttribute(SALOMEDSImpl_AttributeIOR::GetID(), anIOR)) {
+    aStr = anIOR->Value();
+  }
+  return aStr;
+}
+
+
+Standard_GUID SALOMEDSImpl_SObject::GetGUID(const TCollection_AsciiString& theType) 
+{
+  __AttributeTypeToGUIDForSObject
+
+  if (strncmp(theType.ToCString(), "AttributeTreeNodeGUID",21) == 0) {
+    const char* aCType = theType.ToCString();
+    char* aGUIDString = new char[40]; 
+    sprintf(aGUIDString, &(aCType[21]));
+    Standard_GUID aGUID = Standard_GUID(aGUIDString); // create tree node GUID by name
+    delete(aGUIDString);
+    return aGUID;
+  }
+  return Standard_GUID();
+}
+
+
diff --git a/src/SALOMEDSImpl/SALOMEDSImpl_SObject.hxx b/src/SALOMEDSImpl/SALOMEDSImpl_SObject.hxx
new file mode 100644 (file)
index 0000000..0e01455
--- /dev/null
@@ -0,0 +1,66 @@
+//  File   : SALOMEDSImpl_SObject.hxx
+//  Author : Sergey RUIN
+//  Module : SALOME
+
+#ifndef __SALOMEDSIMPL_SOBJECT_H__
+#define __SALOMEDSIMPL_SOBJECT_H__
+
+//Handle definition
+#include <Handle_MMgt_TShared.hxx>
+#include <Standard_DefineHandle.hxx>
+DEFINE_STANDARD_HANDLE( SALOMEDSImpl_SObject, MMgt_TShared )
+
+class SALOMEDSImpl_SComponent;
+class Handle_SALOMEDSImpl_SComponent;
+class SALOMEDSImpl_Study;
+class Handle_SALOMEDSImpl_Study;
+
+// Cascade headers
+#include <TDF_Label.hxx>
+#include <TDF_Tool.hxx>
+#include <TDF_Attribute.hxx>
+#include <Standard_GUID.hxx>
+#include <Standard_NoSuchObject.hxx>
+#include <TCollection_AsciiString.hxx>
+#include <TColStd_HSequenceOfTransient.hxx>
+
+class SALOMEDSImpl_SObject : public MMgt_TShared 
+{
+protected:
+  TDF_Label                _lab;
+  TCollection_AsciiString  _name;  
+  TCollection_AsciiString  _value;
+  TCollection_AsciiString  _type;
+
+public:
+  
+  Standard_EXPORT SALOMEDSImpl_SObject(const TDF_Label& theLabel);
+  Standard_EXPORT ~SALOMEDSImpl_SObject();
+  
+  Standard_EXPORT virtual TCollection_AsciiString GetID();
+  Standard_EXPORT virtual Handle(SALOMEDSImpl_SComponent) GetFatherComponent();
+  Standard_EXPORT virtual Handle(SALOMEDSImpl_SObject) GetFather() ;
+  Standard_EXPORT virtual bool FindAttribute(Handle(TDF_Attribute)& theAttribute, const TCollection_AsciiString& theTypeOfAttribute);
+  Standard_EXPORT virtual bool ReferencedObject(Handle(SALOMEDSImpl_SObject)& theObject) ;
+  Standard_EXPORT virtual bool FindSubObject(int theTag, Handle(SALOMEDSImpl_SObject)& theObject);
+
+  Standard_EXPORT virtual Handle(SALOMEDSImpl_Study) GetStudy() ;
+  Standard_EXPORT virtual TCollection_AsciiString Name() { return _name; }
+  Standard_EXPORT virtual void Name(const TCollection_AsciiString& theName) { _name = theName; }
+  Standard_EXPORT virtual Handle(TColStd_HSequenceOfTransient) GetAllAttributes();
+
+  Standard_EXPORT virtual TCollection_AsciiString GetName();
+  Standard_EXPORT virtual TCollection_AsciiString GetComment();
+  Standard_EXPORT virtual TCollection_AsciiString GetIOR();
+
+  Standard_EXPORT virtual int Tag() { return _lab.Tag(); }
+  Standard_EXPORT virtual int Depth() { return _lab.Depth(); }
+
+  Standard_EXPORT virtual TDF_Label GetLabel() { return _lab; }   
+
+  Standard_EXPORT static Standard_GUID GetGUID(const TCollection_AsciiString& theTypeOfAttribute);
+
+public:
+  DEFINE_STANDARD_RTTI( SALOMEDSImpl_SObject )
+};
+#endif
diff --git a/src/SALOMEDSImpl/SALOMEDSImpl_Study.cxx b/src/SALOMEDSImpl/SALOMEDSImpl_Study.cxx
new file mode 100644 (file)
index 0000000..82a2cf4
--- /dev/null
@@ -0,0 +1,1476 @@
+//  File   : SALOMEDSImpl_Study.cxx
+//  Author : Sergey RUIN
+//  Module : SALOME
+
+
+#include "SALOMEDSImpl_Study.hxx"
+
+using namespace std;
+
+#include <TColStd_SequenceOfExtendedString.hxx>
+#include <TCollection_ExtendedString.hxx>
+
+#include <TColStd_HSequenceOfAsciiString.hxx>
+#include <TDocStd_Application.hxx>
+#include <TDocStd_Owner.hxx>
+#include <TDF_LabelList.hxx>
+#include <TDF_ListIteratorOfLabelList.hxx>
+#include <CDM_Document.hxx>
+#include <CDM_Application.hxx>
+#include <TDF_ChildIDIterator.hxx>
+#include <TDF_ChildIterator.hxx>
+#include <TDF_AttributeIterator.hxx>
+
+#include "SALOMEDSImpl_ChildNodeIterator.hxx"
+#include "SALOMEDSImpl_Attributes.hxx"
+#include "SALOMEDSImpl_UseCaseIterator.hxx"
+#include "SALOMEDSImpl_AttributeReference.hxx"
+#include "SALOMEDSImpl_StudyHandle.hxx"
+#include "SALOMEDSImpl_Tool.hxx"
+
+IMPLEMENT_STANDARD_HANDLE( SALOMEDSImpl_Study, MMgt_TShared )
+IMPLEMENT_STANDARD_RTTIEXT( SALOMEDSImpl_Study, MMgt_TShared )
+
+#define DIRECTORYID       16661
+#define FILELOCALID       26662
+#define FILEID            "FILE: "
+
+//============================================================================
+/*! Function : SALOMEDSImpl_Study
+ *  Purpose  : SALOMEDSImpl_Study constructor
+ */
+//============================================================================
+SALOMEDSImpl_Study::SALOMEDSImpl_Study(const Handle(TDocStd_Document)& doc,
+                                      const TCollection_AsciiString& study_name)
+{
+  doc->SetUndoLimit(1); // mpv (IPAL9237): if there is no undo limit, operations mechanism couldn't work
+  _name = study_name;
+  _doc = doc;
+  _Saved = false ;
+  _URL = "";
+  _StudyId = -1;
+  _autoFill = true;
+  myNbPostponed.Append(0);
+  myNbUndos = 0;
+  _errorCode = "";
+  _useCaseBuilder = new SALOMEDSImpl_UseCaseBuilder(_doc);
+  _builder = new SALOMEDSImpl_StudyBuilder(this);
+  _cb = new SALOMEDSImpl_Callback(_useCaseBuilder);
+  //Put on the root label a StudyHandle attribute to store the address of this object
+  //It will be used to retrieve the study object by TDF_Label that belongs to the study
+  SALOMEDSImpl_StudyHandle::Set(_doc->Main().Root(), this);
+}
+
+
+//============================================================================
+/*! Function : ~SALOMEDSImpl_Study
+ *  Purpose  : SALOMEDSImpl_Study destructor
+ */
+//============================================================================
+SALOMEDSImpl_Study::~SALOMEDSImpl_Study()
+{}
+
+//============================================================================
+/*! Function : GetPersistentReference
+ *  Purpose  : Get persistent reference of study (idem URL())
+ */
+//============================================================================
+TCollection_AsciiString SALOMEDSImpl_Study::GetPersistentReference()
+{
+  _errorCode = "";
+  return URL();
+}
+//============================================================================
+/*! Function : GetTransientReference
+ *  Purpose  : Get IOR of the Study (registred in OCAF document in doc->Root)
+ */
+//============================================================================
+TCollection_AsciiString SALOMEDSImpl_Study::GetTransientReference()
+{
+  _errorCode = "";
+  TCollection_AsciiString IOR = "";
+
+  Handle(SALOMEDSImpl_AttributeIOR) Att;
+  TDF_Label _lab = _doc->GetData()->Root();
+  if (_lab.FindAttribute(SALOMEDSImpl_AttributeIOR::GetID(),Att)) {
+    IOR = Att->Value();
+  }
+  else {
+    _errorCode = "IOR is empty";
+  }
+
+  return IOR;
+}
+
+void SALOMEDSImpl_Study::SetTransientReference(const TCollection_AsciiString& theIOR)
+{
+  _errorCode = "";
+
+  Handle(SALOMEDSImpl_AttributeStudyProperties) aProp = GetProperties();
+  int aLocked = aProp->IsLocked();
+  if (aLocked) aProp->SetLocked(Standard_False);
+
+  // Assign the value of the IOR in the study->root
+  SALOMEDSImpl_AttributeIOR::Set(_doc->Main().Root(), theIOR);
+
+  if (aLocked) aProp->SetLocked(Standard_True);
+}
+
+//============================================================================
+/*! Function : IsEmpty
+ *  Purpose  : Detect if study is empty
+ */
+//============================================================================
+bool SALOMEDSImpl_Study::IsEmpty()
+{
+  _errorCode = "";
+  if (_doc.IsNull()) return true;
+  return _doc->IsEmpty();
+}
+
+//============================================================================
+/*! Function : FindComponent
+ *  Purpose  : Find a Component with ComponentDataType = aComponentName
+ */
+//============================================================================
+Handle(SALOMEDSImpl_SComponent) SALOMEDSImpl_Study::FindComponent (const TCollection_AsciiString& aComponentName)
+{
+  _errorCode = "";
+  bool _find = false;
+  TCollection_AsciiString name;
+  SALOMEDSImpl_SComponentIterator itcomp = NewComponentIterator();
+  Handle(SALOMEDSImpl_SComponent) compo;
+
+  for (; itcomp.More(); itcomp.Next()) {
+    Handle(SALOMEDSImpl_SComponent) SC = itcomp.Value();
+    name = SC->ComponentDataType();
+    if(aComponentName == name) {
+      _find = true;
+      return SC;
+    }
+  }
+
+  if(!_find)
+    {
+      _errorCode = "No component was found";
+      return NULL;
+    }
+  return compo;
+}
+
+//============================================================================
+/*! Function : FindComponentID
+ *  Purpose  : Find a Component from it's ID
+ */
+//============================================================================
+Handle(SALOMEDSImpl_SComponent) SALOMEDSImpl_Study::FindComponentID(const TCollection_AsciiString& aComponentID)
+{
+  _errorCode = "";
+
+  // Iterate on each components defined in the study
+  // Get the component ID and compare with aComponentID
+  bool _find = false;
+  TCollection_AsciiString ID;
+  Handle(SALOMEDSImpl_SComponent) compo;
+
+  SALOMEDSImpl_SComponentIterator itcomp = NewComponentIterator();
+  for (; itcomp.More(); itcomp.Next()) {
+    Handle(SALOMEDSImpl_SComponent) SC = itcomp.Value();
+    ID = SC->GetID();
+    if(aComponentID == ID)
+      {
+       // ComponentID found
+       _find = true;
+        compo = SC;
+      }
+  }
+  if(!_find)
+    {
+      _errorCode = "No component was found";
+      compo = NULL;
+    }
+
+  return compo;
+}
+
+//============================================================================
+/*! Function : FindObject
+ *  Purpose  : Find an Object with SALOMEDSImpl_Name = anObjectName
+ */
+//============================================================================
+Handle(SALOMEDSImpl_SObject) SALOMEDSImpl_Study::FindObject(const TCollection_AsciiString& anObjectName)
+{
+  _errorCode = "";
+
+  // Iterate to all components defined in the study
+  // After testing the component name, iterate in all objects defined under
+  // components (function _FindObject)
+  bool _find = false;
+  Handle(SALOMEDSImpl_SObject) RefSO = NULL;
+
+  SALOMEDSImpl_SComponentIterator it = NewComponentIterator();
+  for (; it.More();it.Next()){
+    if(!_find)
+      {
+       Handle(SALOMEDSImpl_SComponent) SC = it.Value();
+       if (SC->GetName() == anObjectName)
+       {
+           _find = true;
+           RefSO = SC;
+
+       }
+       if (!_find) RefSO =  _FindObject(SC, anObjectName, _find);
+      }
+  }
+  if(RefSO.IsNull()) _errorCode = "No object was found";
+  return RefSO;
+}
+
+//============================================================================
+/*! Function : FindObjectID
+ *  Purpose  : Find an Object with ID = anObjectID
+ */
+//============================================================================
+Handle(SALOMEDSImpl_SObject) SALOMEDSImpl_Study::FindObjectID(const TCollection_AsciiString& anObjectID)
+{
+  _errorCode = "";
+
+  // Convert aSO->GetID in TDF_Label.
+  TDF_Label Lab;
+  TDF_Tool::Label(_doc->Main().Data(), anObjectID, Lab);
+
+  if (Lab.IsNull()) {
+    _errorCode = "No label was found by ID";
+    return NULL;
+  }
+  return GetSObject(Lab);
+
+}
+
+//============================================================================
+/*! Function : CreateObjectID
+ *  Purpose  : Creates an Object with ID = anObjectID
+ */
+//============================================================================
+Handle(SALOMEDSImpl_SObject) SALOMEDSImpl_Study::CreateObjectID(const TCollection_AsciiString& anObjectID)
+{
+  _errorCode = "";
+
+  // Convert aSO->GetID in TDF_Label.
+  TDF_Label Lab;
+  TDF_Tool::Label(_doc->Main().Data(), anObjectID, Lab, Standard_True);
+
+  if (Lab.IsNull()) {
+    _errorCode = "Can not create a label";
+    return NULL;
+  }
+  return GetSObject(Lab);
+
+}
+
+//============================================================================
+/*! Function : FindObjectByName
+ *  Purpose  : Find Objects with SALOMEDSImpl_Name = anObjectName in a Component
+ *           : with ComponentDataType = aComponentName
+ */
+//============================================================================
+Handle(TColStd_HSequenceOfTransient) SALOMEDSImpl_Study::FindObjectByName(const TCollection_AsciiString& anObjectName,
+                                                                         const TCollection_AsciiString& aComponentName)
+{
+  _errorCode = "";
+
+  Handle(TColStd_HSequenceOfTransient) listSO = new TColStd_HSequenceOfTransient();
+
+  Handle(SALOMEDSImpl_SComponent) compo = FindComponent(aComponentName) ;
+  if ( compo.IsNull() ) {
+    _errorCode = "Can not find the component";
+    return listSO;
+  }
+
+  // Iterate on each object and subobject of the component
+  // If objectName is found add it to the list of SObjects
+  TCollection_AsciiString childName ;
+
+  TCollection_AsciiString compoId = compo->GetID();
+  Handle(SALOMEDSImpl_ChildIterator) it = NewChildIterator(compo);
+  for ( ; it->More(); it->Next() ) {
+
+    Handle(SALOMEDSImpl_SObject) CSO = it->Value();
+    if ( CSO->GetName() == anObjectName ) {
+       /* add to list */
+       listSO->Append(CSO) ;
+    }
+
+    /* looks also for eventual children */
+    bool found = false ;
+    CSO = _FindObject( CSO, anObjectName, found ) ;
+    if( found) {
+      listSO->Append(CSO) ;
+    }
+  }
+
+  return listSO;
+}
+
+
+
+//============================================================================
+/*! Function : FindObjectIOR
+ *  Purpose  : Find an Object with IOR = anObjectIOR
+ */
+//============================================================================
+Handle(SALOMEDSImpl_SObject) SALOMEDSImpl_Study::FindObjectIOR(const TCollection_AsciiString& anObjectIOR)
+{
+  _errorCode = "";
+
+  // firstly searching in the datamap for optimization
+  if (myIORLabels.IsBound(anObjectIOR)) {
+    Handle(SALOMEDSImpl_SObject) aResult = GetSObject(myIORLabels.Find(anObjectIOR));
+    // 11 oct 2002: forbidden attributes must be checked here
+    if (!aResult->GetLabel().IsAttribute(SALOMEDSImpl_AttributeIOR::GetID())) {
+      myIORLabels.UnBind(anObjectIOR);
+    } else
+      return aResult;
+  }
+  // Iterate to all components defined in the study
+  // After testing the component name, iterate in all objects defined under
+  // components (function _FindObject)
+  bool _find = false;
+  Handle(SALOMEDSImpl_SObject) RefSO = NULL;
+
+  SALOMEDSImpl_SComponentIterator it = NewComponentIterator();
+  Handle(SALOMEDSImpl_SComponent) SC;
+  for (; it.More();it.Next()){
+    if(!_find)
+      {
+       SC = it.Value();
+       TCollection_AsciiString ior = SC->GetIOR();
+       if (ior != "")
+       {
+         if (ior ==  anObjectIOR)
+           {
+             _find = true;
+             RefSO = SC;
+           }
+       }
+       if (!_find)
+         RefSO =  _FindObjectIOR(SC, anObjectIOR, _find);
+      }
+  }
+
+  if(RefSO.IsNull()) _errorCode = "No object was found";
+  return RefSO;
+}
+
+//============================================================================
+/*! Function : FindObjectByPath
+ *  Purpose  : Find an Object by its path = thePath
+ */
+//============================================================================
+Handle(SALOMEDSImpl_SObject) SALOMEDSImpl_Study::FindObjectByPath(const TCollection_AsciiString& thePath)
+{
+  _errorCode = "";
+
+  TCollection_AsciiString aPath(thePath), aToken;
+  Handle(SALOMEDSImpl_SObject) aSO = NULL;
+  int i = 1, aLength = aPath.Length();
+  bool isRelative = false;
+
+  if(aLength == 0) {  //Empty path - return the current context
+    return GetSObject(_current);
+  }
+
+  if(aPath.Value(1) != '/')  //Relative path
+    isRelative = true;
+
+  TDF_ChildIterator anIterator;
+  TDF_Label aLabel;
+  Handle(SALOMEDSImpl_AttributeName) anAttr;
+
+  if(isRelative) {
+    if(_current.IsNull()) return NULL;
+    anIterator.Initialize(_current, Standard_False);
+  }
+  else {
+    if(aPath.Length() == 1 && aPath.Value(1) == '/') {    //Root
+      return GetSObject(_doc->Main());
+    }
+    anIterator.Initialize(_doc->Main(), Standard_False);
+  }
+
+  while(i <= aLength) {
+
+    aToken = aPath.Token("/", i);
+    if(aToken.Length() == 0) break;
+
+    for ( ; anIterator.More(); anIterator.Next() ) {
+      aLabel = anIterator.Value();
+      if(aLabel.FindAttribute(SALOMEDSImpl_AttributeName::GetID(), anAttr)) {
+       if(anAttr->Value() == aToken) {
+         aToken = aPath.Token("/", i+1); //Check if it was the last part of the path
+         if(aToken.Length() == 0) {  //The searched label is found (no part of the path is left)
+             return GetSObject(aLabel);
+         }
+
+         anIterator.Initialize(aLabel, Standard_False);
+         break;
+       }
+      }
+    }
+
+    i++;
+  }
+
+  if(aSO.IsNull()) _errorCode = "No object was found";
+  return aSO;
+}
+
+//============================================================================
+/*! Function : GetObjectPath
+ *  Purpose  :
+ */
+//============================================================================
+TCollection_AsciiString SALOMEDSImpl_Study::GetObjectPath(const Handle(SALOMEDSImpl_SObject)& theObject)
+{
+  _errorCode = "";
+
+  TCollection_AsciiString aPath("");
+  if(theObject.IsNull()) {
+    _errorCode = "Null object";
+    return aPath.ToCString();
+  }
+
+  TCollection_AsciiString aName = theObject->GetName();
+  if(!aName.IsEmpty() && aName != "" ) {
+    TCollection_AsciiString aValue((char*)aName.ToCString());
+    aValue.Prepend("/");
+    aValue += aPath;
+    aPath = aValue;
+    Handle(SALOMEDSImpl_SObject) aFather = theObject->GetFather();
+    if(!aFather.IsNull()) {
+       aName = aFather->GetName();
+       if(!aName.IsEmpty() && aName != "") {
+         aValue = (char*)GetObjectPath(aFather).ToCString();
+         aPath = aValue + aPath;
+       }
+    }
+  }
+
+  return aPath;
+}
+
+
+//============================================================================
+/*! Function : GetObjectPathByIOR
+ *  Purpose  :
+ */
+//============================================================================
+TCollection_AsciiString SALOMEDSImpl_Study::GetObjectPathByIOR(const TCollection_AsciiString& theIOR)
+{
+  _errorCode = "";
+
+  TCollection_AsciiString aPath;
+  Handle(SALOMEDSImpl_SObject) so = FindObjectIOR(theIOR);
+  if(so.IsNull()) {
+    _errorCode = "No SObject was found by IOR";
+    return aPath;
+  }
+
+  return GetObjectPath(so);
+}
+
+
+//============================================================================
+/*! Function : SetContext
+ *  Purpose  : Sets the current context
+ */
+//============================================================================
+bool SALOMEDSImpl_Study::SetContext(const TCollection_AsciiString& thePath)
+{
+  _errorCode = "";
+  if(thePath.IsEmpty()) {
+    _errorCode = "InvalidPath";
+    return false;
+  }
+
+  TCollection_AsciiString aPath(thePath), aContext("");
+  bool isInvalid = false;
+  Handle(SALOMEDSImpl_SObject) aSO;
+
+  if(aPath.Value(1) != '/') { //Relative path
+    aContext = GetContext();
+    aContext += '/';
+    aContext += aPath;
+  }
+  else
+    aContext = aPath;
+
+  try {
+    aSO = FindObjectByPath(aContext.ToCString());
+  }
+  catch( ... ) {
+    isInvalid = true;
+  }
+
+  if(isInvalid || aSO.IsNull()) {
+    _errorCode = "InvalidContext";
+    return false;
+  }
+
+  TDF_Label aLabel = aSO->GetLabel();
+  if(aLabel.IsNull()) {
+    _errorCode = "InvalidContext";
+    return false;
+  }
+  else
+    _current = aLabel;  //Set the current context
+
+  return true;
+}
+
+//============================================================================
+/*! Function : GetContext
+ *  Purpose  : Gets the current context
+ */
+//============================================================================
+TCollection_AsciiString SALOMEDSImpl_Study::GetContext()
+{
+  _errorCode = "";
+
+  if(_current.IsNull()) {
+    _errorCode = "InvaidContext";
+    return "";
+  }
+  Handle(SALOMEDSImpl_SObject) so = GetSObject(_current);
+  return GetObjectPath(so);
+}
+
+//============================================================================
+/*! Function : GetObjectNames
+ *  Purpose  : method to get all object names in the given context (or in the current context, if 'theContext' is empty)
+ */
+//============================================================================
+Handle(TColStd_HSequenceOfAsciiString) SALOMEDSImpl_Study::GetObjectNames(const TCollection_AsciiString& theContext)
+{
+  _errorCode = "";
+
+  Handle(TColStd_HSequenceOfAsciiString) aResultSeq = new TColStd_HSequenceOfAsciiString;
+  TDF_Label aLabel;
+  if (theContext.IsEmpty()) {
+    if(_current.IsNull()) {
+      _errorCode = "InvalidContext";
+      return aResultSeq;
+    }
+    aLabel = _current;
+  } else {
+    TDF_Label aTmp = _current;
+    SetContext(theContext);
+    aLabel = _current;
+    _current = aTmp;
+  }
+  TDF_ChildIterator anIter(aLabel, Standard_False); // iterate all subchildren at all sublevels
+  for(; anIter.More(); anIter.Next()) {
+    TDF_Label aLabel = anIter.Value();
+    Handle(SALOMEDSImpl_AttributeName) aName;
+    if (aLabel.FindAttribute(SALOMEDSImpl_AttributeName::GetID(), aName)) aResultSeq->Append(aName->Value());
+  }
+
+  return aResultSeq;
+}
+
+//============================================================================
+/*! Function : GetDirectoryNames
+ *  Purpose  : method to get all directory names in the given context (or in the current context, if 'theContext' is empty)
+ */
+//============================================================================
+Handle(TColStd_HSequenceOfAsciiString) SALOMEDSImpl_Study::GetDirectoryNames(const TCollection_AsciiString& theContext)
+{
+  _errorCode = "";
+
+  Handle(TColStd_HSequenceOfAsciiString) aResultSeq = new TColStd_HSequenceOfAsciiString;
+  TDF_Label aLabel;
+  if (theContext.IsEmpty()) {
+    if(_current.IsNull()) {
+      _errorCode = "InvalidContext";
+      return aResultSeq;
+    }
+    aLabel = _current;
+  } else {
+    TDF_Label aTmp = _current;
+    SetContext(theContext);
+    aLabel = _current;
+    _current = aTmp;
+  }
+  TDF_ChildIterator anIter(aLabel, Standard_False); // iterate first-level children at all sublevels
+  for(; anIter.More(); anIter.Next()) {
+    TDF_Label aLabel = anIter.Value();
+    Handle(SALOMEDSImpl_AttributeLocalID) anID;
+    if (aLabel.FindAttribute(SALOMEDSImpl_AttributeLocalID::GetID(), anID)) {
+      if (anID->Value() == DIRECTORYID) {
+       Handle(SALOMEDSImpl_AttributeName) aName;
+       if (aLabel.FindAttribute(SALOMEDSImpl_AttributeName::GetID(), aName)) {
+         aResultSeq->Append(aName->Value());
+       }
+      }
+    }
+  }
+
+  return aResultSeq;
+}
+
+//============================================================================
+/*! Function : GetFileNames
+ *  Purpose  : method to get all file names in the given context (or in the current context, if 'theContext' is empty)
+ */
+//============================================================================
+Handle(TColStd_HSequenceOfAsciiString) SALOMEDSImpl_Study::GetFileNames(const TCollection_AsciiString& theContext)
+{
+  _errorCode = "";
+
+  Handle(TColStd_HSequenceOfAsciiString) aResultSeq = new TColStd_HSequenceOfAsciiString;
+  TDF_Label aLabel;
+  if (theContext.IsEmpty()) {
+    if(_current.IsNull()) {
+      _errorCode = "InvalidContext";
+      return aResultSeq;
+    }
+    aLabel = _current;
+  } else {
+    TDF_Label aTmp = _current;
+    SetContext(theContext);
+    aLabel = _current;
+    _current = aTmp;
+  }
+  TDF_ChildIterator anIter(aLabel, Standard_False); // iterate all subchildren at all sublevels
+  for(; anIter.More(); anIter.Next()) {
+    TDF_Label aLabel = anIter.Value();
+    Handle(SALOMEDSImpl_AttributeLocalID) anID;
+    if (aLabel.FindAttribute(SALOMEDSImpl_AttributeLocalID::GetID(), anID)) {
+      if (anID->Value() == FILELOCALID) {
+       Handle(SALOMEDSImpl_AttributePersistentRef) aName;
+       if(aLabel.FindAttribute(SALOMEDSImpl_AttributePersistentRef::GetID(), aName)) {
+         TCollection_ExtendedString aFileName = aName->Value();
+         if(aFileName.Length() > 0)
+           aResultSeq->Append(aFileName.Split(strlen(FILEID)));
+       }
+      }
+    }
+  }
+
+  return aResultSeq;
+}
+
+//============================================================================
+/*! Function : GetComponentNames
+ *  Purpose  : method to get all components names
+ */
+//============================================================================
+Handle(TColStd_HSequenceOfAsciiString) SALOMEDSImpl_Study::GetComponentNames(const TCollection_AsciiString& theContext)
+{
+  _errorCode = "";
+
+  Handle(TColStd_HSequenceOfAsciiString) aResultSeq = new TColStd_HSequenceOfAsciiString;
+  TDF_ChildIterator anIter(_doc->Main(), Standard_False); // iterate all subchildren at first level
+  for(; anIter.More(); anIter.Next()) {
+    TDF_Label aLabel = anIter.Value();
+    Handle(SALOMEDSImpl_AttributeName) aName;
+    if (aLabel.FindAttribute(SALOMEDSImpl_AttributeName::GetID(), aName)) aResultSeq->Append(aName->Value());
+  }
+
+  return aResultSeq;
+}
+
+//============================================================================
+/*! Function : NewChildIterator
+ *  Purpose  : Create a ChildIterator from an SObject
+ */
+//============================================================================
+Handle(SALOMEDSImpl_ChildIterator) SALOMEDSImpl_Study::NewChildIterator(const Handle(SALOMEDSImpl_SObject)& aSO)
+{
+  _errorCode = "";
+  return new SALOMEDSImpl_ChildIterator(aSO);
+}
+
+
+//============================================================================
+/*! Function : NewComponentIterator
+ *  Purpose  : Create a SComponentIterator
+ */
+//============================================================================
+SALOMEDSImpl_SComponentIterator SALOMEDSImpl_Study::NewComponentIterator()
+{
+  _errorCode = "";
+  return SALOMEDSImpl_SComponentIterator(_doc);
+}
+
+
+//============================================================================
+/*! Function : NewBuilder
+ *  Purpose  : Create a StudyBuilder
+ */
+//============================================================================
+Handle(SALOMEDSImpl_StudyBuilder) SALOMEDSImpl_Study::NewBuilder()
+{
+  _errorCode = "";
+  if(_autoFill) {
+    _builder->SetOnAddSObject(_cb);
+    _builder->SetOnRemoveSObject(_cb);
+  }
+  return _builder;
+
+}
+
+//============================================================================
+/*! Function : Name
+ *  Purpose  : get study name
+ */
+//============================================================================
+TCollection_AsciiString SALOMEDSImpl_Study::Name()
+{
+  _errorCode = "";
+  return _name;
+}
+
+//============================================================================
+/*! Function : Name
+ *  Purpose  : set study name
+ */
+//============================================================================
+void SALOMEDSImpl_Study::Name(const TCollection_AsciiString& name)
+{
+  _errorCode = "";
+  _name = name;
+}
+
+//============================================================================
+/*! Function : IsSaved
+ *  Purpose  : get if study has been saved
+ */
+//============================================================================
+bool SALOMEDSImpl_Study::IsSaved()
+{
+  _errorCode = "";
+  return _Saved;
+}
+
+//============================================================================
+/*! Function : IsSaved
+ *  Purpose  : set if study has been saved
+ */
+//============================================================================
+void SALOMEDSImpl_Study::IsSaved(bool save)
+{
+  _errorCode = "";
+  _Saved = save;
+  if(save) _doc->UnModify();
+}
+
+//============================================================================
+/*! Function : IsModified
+ *  Purpose  : Detect if a Study has been modified since it has been saved
+ */
+//============================================================================
+bool SALOMEDSImpl_Study::IsModified()
+{
+  _errorCode = "";
+
+  // True if is modified
+  if (_doc->IsModified()) return true;
+
+  return false;
+}
+
+//============================================================================
+/*! Function : URL
+ *  Purpose  : get URL of the study (persistent reference of the study)
+ */
+//============================================================================
+TCollection_AsciiString SALOMEDSImpl_Study::URL()
+{
+  _errorCode = "";
+  return _URL;
+}
+
+//============================================================================
+/*! Function : URL
+ *  Purpose  : set URL of the study (persistent reference of the study)
+ */
+//============================================================================
+void SALOMEDSImpl_Study::URL(const TCollection_AsciiString& url)
+{
+  _errorCode = "";
+  _URL = url;
+
+  /*jfa: Now name of SALOMEDS study will correspond to name of SalomeApp study
+  TCollection_AsciiString tmp(_URL);
+
+  char *aName = (char*)tmp.ToCString();
+  char *adr = strtok(aName, "/");
+  while (adr)
+    {
+      aName = adr;
+      adr = strtok(NULL, "/");
+    }
+  Name(aName);*/
+  Name(url);
+}
+
+
+//============================================================================
+/*! Function : _FindObject
+ *  Purpose  : Find an Object with SALOMEDSImpl_Name = anObjectName
+ */
+//============================================================================
+Handle(SALOMEDSImpl_SObject) SALOMEDSImpl_Study::_FindObject(const Handle(SALOMEDSImpl_SObject)& SO,
+                                                            const TCollection_AsciiString& theObjectName,
+                                                            bool& _find)
+{
+  if(SO.IsNull()) return NULL;
+
+  // Iterate on each objects and subobjects of the component
+  // If objectName find, stop the loop and get the object reference
+  Handle(SALOMEDSImpl_SObject) RefSO;
+  Handle(SALOMEDSImpl_AttributeName) anAttr;
+
+  TCollection_AsciiString soid = SO->GetID();
+  TDF_ChildIterator it(SO->GetLabel());
+  for (; it.More(); it.Next()){
+    if(!_find)
+      {
+       if (it.Value().FindAttribute(SALOMEDSImpl_AttributeName::GetID(), anAttr))
+       {
+          TCollection_AsciiString Val(anAttr->Value());
+         if (Val == theObjectName)
+           {
+             RefSO = GetSObject(it.Value());
+             _find = true;
+           }
+       }
+       if (!_find) RefSO = _FindObject(GetSObject(it.Value()), theObjectName, _find);
+      }
+  }
+  return RefSO;
+}
+
+//============================================================================
+/*! Function : _FindObjectIOR
+ *  Purpose  : Find an Object with SALOMEDSImpl_IOR = anObjectIOR
+ */
+//============================================================================
+Handle(SALOMEDSImpl_SObject)
+SALOMEDSImpl_Study::_FindObjectIOR(const Handle(SALOMEDSImpl_SObject)& SO,
+                                  const TCollection_AsciiString& theObjectIOR,
+                                  bool& _find)
+{
+  if(SO.IsNull()) return NULL;
+
+  // Iterate on each objects and subobjects of the component
+  // If objectName find, stop the loop and get the object reference
+  Handle(SALOMEDSImpl_SObject) RefSO, aSO;
+  Handle(SALOMEDSImpl_AttributeIOR) anAttr;
+
+  TDF_ChildIterator it(SO->GetLabel());
+  for (; it.More();it.Next()){
+    if(!_find)
+      {
+       if (it.Value().FindAttribute(SALOMEDSImpl_AttributeIOR::GetID(), anAttr))
+       {
+          TCollection_AsciiString Val(anAttr->Value());
+         if (Val == theObjectIOR)
+           {
+             RefSO = GetSObject(it.Value());
+             _find = true;
+           }
+       }
+       aSO = GetSObject(it.Value());
+       if (!_find) RefSO =  _FindObjectIOR(aSO, theObjectIOR, _find);
+      }
+  }
+  return RefSO;
+}
+
+bool SALOMEDSImpl_Study::IsLocked()
+{
+  _errorCode = "";
+  return GetProperties()->IsLocked();
+}
+
+int SALOMEDSImpl_Study::StudyId()
+{
+  _errorCode = "";
+  return _StudyId;
+}
+
+void SALOMEDSImpl_Study::StudyId(int id)
+{
+  _errorCode = "";
+  _StudyId = id;
+}
+
+void SALOMEDSImpl_Study::UpdateIORLabelMap(const TCollection_AsciiString& anIOR,const TCollection_AsciiString& anEntry)
+{
+  _errorCode = "";
+  TDF_Label aLabel;
+  char* anEn = (char*)anEntry.ToCString();
+  char* IOR = (char*)anIOR.ToCString();
+  TDF_Tool::Label(_doc->GetData(),anEn, aLabel, Standard_True);
+  if (myIORLabels.IsBound(TCollection_ExtendedString(IOR))) myIORLabels.UnBind(TCollection_ExtendedString(IOR));
+  myIORLabels.Bind(TCollection_ExtendedString(IOR), aLabel);
+}
+
+Handle(SALOMEDSImpl_Study) SALOMEDSImpl_Study::GetStudy(const TDF_Label& theLabel)
+{
+  Handle(SALOMEDSImpl_StudyHandle) Att;
+  if (theLabel.Root().FindAttribute(SALOMEDSImpl_StudyHandle::GetID(),Att)) {
+    return Att->GetHandle();
+  }
+  return NULL;
+}
+
+Handle(SALOMEDSImpl_SObject) SALOMEDSImpl_Study::SObject(const TDF_Label& theLabel)
+{
+  return GetStudy(theLabel)->GetSObject(theLabel);
+}
+
+Handle(SALOMEDSImpl_SComponent) SALOMEDSImpl_Study::SComponent(const TDF_Label& theLabel)
+{
+  return GetStudy(theLabel)->GetSComponent(theLabel);
+}
+
+
+void SALOMEDSImpl_Study::IORUpdated(const Handle(SALOMEDSImpl_AttributeIOR)& theAttribute)
+{
+  TCollection_AsciiString aString;
+  TDF_Tool::Entry(theAttribute->Label(), aString);
+  GetStudy(theAttribute->Label())->UpdateIORLabelMap(theAttribute->Value(), aString);
+}
+
+Handle(TColStd_HSequenceOfTransient) SALOMEDSImpl_Study::FindDependances(const Handle(SALOMEDSImpl_SObject)& anObject)
+{
+  _errorCode = "";
+  Handle(TColStd_HSequenceOfTransient) aSeq;
+
+  Handle(SALOMEDSImpl_AttributeTarget) aTarget;
+  if (anObject->GetLabel().FindAttribute(SALOMEDSImpl_AttributeTarget::GetID(), aTarget)) {
+    return aTarget->Get();
+  }
+
+  return aSeq;
+}
+
+
+Handle(SALOMEDSImpl_AttributeStudyProperties) SALOMEDSImpl_Study::GetProperties()
+{
+  _errorCode = "";
+  return SALOMEDSImpl_AttributeStudyProperties::Set(_doc->Main());
+}
+
+TCollection_AsciiString SALOMEDSImpl_Study::GetLastModificationDate()
+{
+  _errorCode = "";
+  Handle(SALOMEDSImpl_AttributeStudyProperties) aProp = GetProperties();
+
+  Handle(TColStd_HSequenceOfExtendedString) aNames;
+  Handle(TColStd_HSequenceOfInteger) aMinutes, aHours, aDays, aMonths, aYears;
+  aProp->GetModifications(aNames, aMinutes, aHours, aDays, aMonths, aYears);
+
+  int aLastIndex = aNames->Length();
+  char aResult[20];
+  sprintf(aResult, "%2.2d/%2.2d/%4.4d %2.2d:%2.2d",
+          (int)(aDays->Value(aLastIndex)),(int)(aMonths->Value(aLastIndex)), (int)(aYears->Value(aLastIndex)),
+          (int)(aHours->Value(aLastIndex)), (int)(aMinutes->Value(aLastIndex)));
+  TCollection_AsciiString aResStr (aResult);
+  return aResStr;
+}
+
+Handle(TColStd_HSequenceOfAsciiString) SALOMEDSImpl_Study::GetModificationsDate()
+{
+  _errorCode = "";
+  Handle(SALOMEDSImpl_AttributeStudyProperties) aProp = GetProperties();
+
+  Handle(TColStd_HSequenceOfExtendedString) aNames;
+  Handle(TColStd_HSequenceOfInteger) aMinutes, aHours, aDays, aMonths, aYears;
+  aProp->GetModifications(aNames, aMinutes, aHours, aDays, aMonths, aYears);
+
+  int anIndex, aLength = aNames->Length();
+  Handle(TColStd_HSequenceOfAsciiString) aDates = new TColStd_HSequenceOfAsciiString;
+
+  for (anIndex = 2; anIndex <= aLength; anIndex++) {
+    char aDate[20];
+    sprintf(aDate, "%2.2d/%2.2d/%4.4d %2.2d:%2.2d",
+            (int)(aDays->Value(anIndex)), (int)(aMonths->Value(anIndex)), (int)(aYears->Value(anIndex)),
+           (int)(aHours->Value(anIndex)), (int)(aMinutes->Value(anIndex)));
+    aDates->Append(aDate);
+  }
+  return aDates;
+}
+
+
+
+//============================================================================
+/*! Function : GetUseCaseBuilder
+ *  Purpose  : Returns a UseCase builder
+ */
+//============================================================================
+Handle(SALOMEDSImpl_UseCaseBuilder) SALOMEDSImpl_Study::GetUseCaseBuilder()
+{
+  _errorCode = "";
+  return _useCaseBuilder;
+}
+
+
+//============================================================================
+/*! Function : Close
+ *  Purpose  :
+ */
+//============================================================================
+void SALOMEDSImpl_Study::Close()
+{
+  _errorCode = "";
+  Handle(TDocStd_Application) anApp = Handle(TDocStd_Application)::DownCast(_doc->Application());
+  if(!anApp.IsNull()) anApp->Close(_doc);
+  _doc.Nullify();
+  _mapOfSO.Clear();
+  _mapOfSCO.Clear();
+}
+
+//============================================================================
+/*! Function : AddPostponed
+ *  Purpose  :
+ */
+ //============================================================================
+void SALOMEDSImpl_Study::AddPostponed(const TCollection_AsciiString& theIOR)
+{
+  _errorCode = "";
+  if (!NewBuilder()->HasOpenCommand()) return;
+  TCollection_AsciiString anIOR(theIOR);
+  anIOR.Prepend("d");
+  myPostponedIORs.Append(anIOR); // add prefix: deleted
+  myNbPostponed.SetValue(myNbPostponed.Length(), myNbPostponed.Last() + 1);
+}
+
+//============================================================================
+/*! Function : AddCreatedPostponed
+ *  Purpose  :
+ */
+ //============================================================================
+void SALOMEDSImpl_Study::AddCreatedPostponed(const TCollection_AsciiString& theIOR)
+{
+  _errorCode = "";
+  if (!NewBuilder()->HasOpenCommand()) return;
+  TCollection_AsciiString anIOR(theIOR);
+  anIOR.Prepend("c");
+  myPostponedIORs.Append(anIOR); // add prefix: created
+  myNbPostponed.SetValue(myNbPostponed.Length(), myNbPostponed.Last() + 1);
+}
+
+//============================================================================
+/*! Function : RemovePostponed
+ *  Purpose  :
+ */
+//============================================================================
+Handle(TColStd_HSequenceOfAsciiString) SALOMEDSImpl_Study::RemovePostponed(const int theUndoLimit)
+{
+  _errorCode = "";
+
+  int anIndex;
+  int anOld;
+
+  int aUndoLimit = theUndoLimit;
+  if (theUndoLimit < 0) aUndoLimit = 0;
+
+  Handle(TColStd_HSequenceOfAsciiString) aSeq = new TColStd_HSequenceOfAsciiString;
+
+  if (myNbUndos > 0) { // remove undone
+    anOld = 0;
+    for(anIndex = 1; anIndex < myNbPostponed.Length() - myNbUndos; anIndex++)
+      anOld += myNbPostponed(anIndex);
+    int aNew = myPostponedIORs.Length() - myNbPostponed.Last();
+
+    for(anIndex = anOld + 1; anIndex <= aNew; anIndex++) {
+      TCollection_AsciiString anIOR = myPostponedIORs(anIndex);
+      if (anIOR.Value(1) == 'c') {
+       aSeq->Append(anIOR.Split(1).ToCString());
+      }
+    }
+    if (anOld < aNew) myPostponedIORs.Remove(anOld + 1, aNew);
+    if (myNbPostponed.Length() > 0) myNbPostponed.Remove(myNbPostponed.Length() - myNbUndos, myNbPostponed.Length() - 1);
+
+    myNbUndos = 0;
+  }
+
+  if (myNbPostponed.Length() > aUndoLimit) { // remove objects, that can not be undone
+    anOld = 0;
+    for(anIndex = myNbPostponed.Length() - aUndoLimit; anIndex >= 1; anIndex--)
+      anOld += myNbPostponed(anIndex);
+    for(anIndex = 1; anIndex <= anOld; anIndex++) {
+      TCollection_AsciiString anIOR = myPostponedIORs(anIndex);
+      if (anIOR.Value(1) == 'd') {
+       aSeq->Append(anIOR.Split(1).ToCString());
+      }
+    }
+    if (anOld > 0) myPostponedIORs.Remove(1, anOld);
+    myNbPostponed.Remove(1, myNbPostponed.Length() - aUndoLimit);
+  }
+
+  if (theUndoLimit == -1) { // remove all IORs from the study on the study close
+    TDF_ChildIDIterator anIter(_doc->GetData()->Root(), SALOMEDSImpl_AttributeIOR::GetID(), Standard_True);
+    for(; anIter.More(); anIter.Next()) {
+      Handle(SALOMEDSImpl_AttributeIOR) anAttr = Handle(SALOMEDSImpl_AttributeIOR)::DownCast(anIter.Value());
+      aSeq->Append(anAttr->Value());
+    }
+  } else myNbPostponed.Append(0);
+
+  return aSeq;
+}
+
+//============================================================================
+/*! Function : UndoPostponed
+ *  Purpose  :
+ */
+//============================================================================
+void SALOMEDSImpl_Study::UndoPostponed(const int theWay)
+{
+  _errorCode = "";
+
+  myNbUndos += theWay;
+  // remove current postponed
+  if (myNbPostponed.Last() > 0)
+    myPostponedIORs.Remove(myPostponedIORs.Length() - myNbPostponed.Last() + 1, myPostponedIORs.Length());
+  myNbPostponed(myNbPostponed.Length()) = 0;
+}
+
+
+//============================================================================
+/*! Function : GetSComponent
+ *  Purpose  :
+ */
+//============================================================================
+Handle(SALOMEDSImpl_SComponent) SALOMEDSImpl_Study::GetSComponent(const TCollection_AsciiString& theEntry)
+{
+  Handle(SALOMEDSImpl_SComponent) aSCO;
+  if(_mapOfSCO.IsBound(theEntry))
+    aSCO = Handle(SALOMEDSImpl_SComponent)::DownCast(_mapOfSCO.Find(theEntry));
+  else {
+    TDF_Label aLabel;
+    TDF_Tool::Label(_doc->GetData(), theEntry, aLabel);
+    aSCO = new SALOMEDSImpl_SComponent(aLabel);
+    _mapOfSCO.Bind(theEntry, aSCO);
+  }
+
+  return aSCO;
+}
+
+//============================================================================
+/*! Function : GetSComponent
+ *  Purpose  :
+ */
+//============================================================================
+Handle(SALOMEDSImpl_SComponent) SALOMEDSImpl_Study::GetSComponent(const TDF_Label& theLabel)
+{
+  TCollection_AsciiString anEntry;
+  TDF_Tool::Entry(theLabel, anEntry);
+  return GetSComponent(anEntry);
+}
+
+//============================================================================
+/*! Function : GetSObject
+ *  Purpose  :
+ */
+//============================================================================
+Handle(SALOMEDSImpl_SObject) SALOMEDSImpl_Study::GetSObject(const TCollection_AsciiString& theEntry)
+{
+  Handle(SALOMEDSImpl_SObject) aSO;
+  if(_mapOfSO.IsBound(theEntry))
+    aSO = Handle(SALOMEDSImpl_SObject)::DownCast(_mapOfSO.Find(theEntry));
+  else {
+    TDF_Label aLabel;
+    TDF_Tool::Label(_doc->GetData(), theEntry, aLabel);
+    aSO = new SALOMEDSImpl_SObject(aLabel);
+    _mapOfSO.Bind(theEntry, aSO);
+  }
+
+  return aSO;
+}
+
+//============================================================================
+/*! Function : GetSObject
+ *  Purpose  :
+ */
+//============================================================================
+Handle(SALOMEDSImpl_SObject) SALOMEDSImpl_Study::GetSObject(const TDF_Label& theLabel)
+{
+  TCollection_AsciiString anEntry;
+  TDF_Tool::Entry(theLabel, anEntry);
+  return GetSObject(anEntry);
+}
+
+//============================================================================
+/*! Function : GetAttribute
+ *  Purpose  :
+ */
+//============================================================================
+Handle(TDF_Attribute) SALOMEDSImpl_Study::GetAttribute(const TCollection_AsciiString& theEntry,
+                                                      const TCollection_AsciiString& theType)
+{
+  Handle(SALOMEDSImpl_SObject) aSO = GetSObject(theEntry);
+  Handle(TDF_Attribute) anAttr;
+  aSO->FindAttribute(anAttr, theType);
+  return anAttr;
+}
+
+//============================================================================
+/*! Function : DumpStudy
+ *  Purpose  :
+ */
+//============================================================================
+bool SALOMEDSImpl_Study::DumpStudy(const TCollection_AsciiString& thePath,
+                                  const TCollection_AsciiString& theBaseName,
+                                  bool isPublished,
+                                  SALOMEDSImpl_DriverFactory* theFactory)
+{
+  _errorCode = "";
+
+  if(theFactory == NULL) {
+    _errorCode = "Null factory for creation of Engines";
+    return false;
+  }
+
+  TColStd_SequenceOfExtendedString aSeq;
+  TCollection_AsciiString aCompType, aFactoryType;
+
+  //Build a list of all components in the Study
+  SALOMEDSImpl_SComponentIterator itcomponent = NewComponentIterator();
+
+  for (; itcomponent.More(); itcomponent.Next()) {
+    Handle(SALOMEDSImpl_SComponent) sco = itcomponent.Value();
+    aCompType = sco->ComponentDataType();
+    //GEOM and MED are independent components
+    if(aCompType == "GEOM" || aCompType == "MED") aSeq.Prepend(TCollection_ExtendedString(aCompType));
+    else aSeq.Append(TCollection_ExtendedString(aCompType));
+  }
+
+#ifdef WIN32
+  TCollection_AsciiString aFileName=thePath+TCollection_AsciiString("\\")+theBaseName+TCollection_AsciiString(".py");
+#else
+  TCollection_AsciiString aFileName=thePath+TCollection_AsciiString("/")+theBaseName+TCollection_AsciiString(".py");
+#endif
+
+  //Create a file that will contain a main Study script
+  fstream fp;
+  fp.open(aFileName.ToCString(), ios::out);
+
+#ifdef WIN32
+  bool isOpened = fp.is_open();
+#else
+  bool isOpened = fp.rdbuf()->is_open();
+#endif
+
+  if(!isOpened) {
+    _errorCode = TCollection_AsciiString("Can't create a file ")+aFileName;
+    return false;
+  }
+
+  TCollection_AsciiString aBatchModeScript = "salome";
+
+  //Output to the main Study script required Python modules import, set sys.path and add a creation of the study.
+  fp << GetDumpStudyComment().ToCString() << endl << endl;
+  fp << "import sys" << endl;
+  fp << "import " << aBatchModeScript << "\n" << endl;
+  fp << "sys.path.insert( 0, \'" << thePath << "\')\n" << endl;
+
+  Handle(TColStd_HSequenceOfAsciiString) aSeqOfFileNames = new TColStd_HSequenceOfAsciiString;
+
+  //Iterate all components and create the componponents specific scripts.
+  bool isOk = true;
+  int aLength = aSeq.Length();
+  for(int i = 1; i <= aLength; i++) {
+
+    aCompType = aSeq.Value(i);
+    Handle(SALOMEDSImpl_SComponent) sco = FindComponent(aCompType);
+    SALOMEDSImpl_Driver* aDriver = NULL;
+    // if there is an associated Engine call its method for saving
+    TCollection_AsciiString IOREngine;
+    try {
+      if (!sco->ComponentIOR(IOREngine)) {
+       if (!aCompType.IsEmpty()) {
+
+         aDriver = theFactory->GetDriverByType(aCompType);
+
+         if (aDriver != NULL) {
+           Handle(SALOMEDSImpl_StudyBuilder) SB = NewBuilder();
+           cout << "Before SB" << endl;
+           if(!SB->LoadWith(sco, aDriver)) {
+             _errorCode = SB->GetErrorCode();
+             return false;
+           }
+           cout << "After SB" << endl;
+         }
+         else continue;
+       }
+      }
+      else {
+       aDriver = theFactory->GetDriverByIOR(IOREngine);
+      }
+    } catch(...) {
+      _errorCode = "Can not restore information to dump it";
+      return false;
+    }
+
+    if(aDriver == NULL) continue;
+
+    bool isValidScript;
+    long aStreamLength  = 0;
+    unsigned char* aStream = aDriver->DumpPython(this, isPublished, isValidScript, aStreamLength);
+    if ( !isValidScript )
+      isOk = false;
+
+    //Create a file that will contain the component specific script
+    fstream fp2;
+#ifdef WIN32
+    aFileName=thePath+TCollection_AsciiString("\\");
+#else
+    aFileName=thePath+TCollection_AsciiString("/");
+#endif
+    TCollection_AsciiString aScriptName;
+    aScriptName += theBaseName;
+    aScriptName += "_";
+    aScriptName += aCompType;
+
+    aFileName += aScriptName+ TCollection_AsciiString(".py");
+    aSeqOfFileNames->Append(aFileName);
+
+    fp2.open(aFileName.ToCString(), ios::out);
+
+#ifdef WIN32
+    isOpened = fp.is_open();
+#else
+    isOpened = fp.rdbuf()->is_open();
+#endif
+
+    if(!isOpened) {
+      _errorCode = TCollection_AsciiString("Can't create a file ")+aFileName;
+      SALOMEDSImpl_Tool::RemoveTemporaryFiles(thePath, aSeqOfFileNames, false);
+      return false;
+    }
+
+    //Output the Python script generated by the component in the newly created file.
+    fp2 << aStream;
+    fp2.close();
+
+    //Add to the main script a call to RebuildData of the generated by the component the Python script
+    fp << "import " << aScriptName << endl;
+    fp << aScriptName << ".RebuildData(" << aBatchModeScript << ".myStudy)" << endl;
+  }
+
+  fp << "salome.sg.updateObjBrowser(1)" << endl;
+
+  fp.close();
+  return isOk;
+}
+
+//=======================================================================
+//function : GetDumpStudyComment
+//purpose  : return a header comment for a DumpStudy script
+//=======================================================================
+
+TCollection_AsciiString SALOMEDSImpl_Study::GetDumpStudyComment(const char* theComponentName)
+{
+  TCollection_AsciiString txt
+    ("### This file is generated by SALOME automatically by dump python functionality");
+  if ( theComponentName )
+    txt += TCollection_AsciiString(" of ") + (char*) theComponentName + " component";
+  return txt;
+}
+
+void dumpSO(const Handle(SALOMEDSImpl_SObject)& theSO,
+           fstream& fp,
+           const TCollection_AsciiString& Tab,
+           const Handle(SALOMEDSImpl_Study) theStudy);
+//============================================================================
+/*! Function : dump
+ *  Purpose  :
+ */
+//============================================================================
+void SALOMEDSImpl_Study::dump(const TCollection_AsciiString& theFileName)
+{
+  //Create a file that will contain a main Study script
+  fstream fp;
+  fp.open(theFileName.ToCString(), ios::out);
+
+#ifdef WIN32
+  bool isOpened = fp.is_open();
+#else
+  bool isOpened = fp.rdbuf()->is_open();
+#endif
+
+  if(!isOpened) {
+    _errorCode = TCollection_AsciiString("Can't create a file ")+theFileName;
+    cout << "### SALOMEDSImpl_Study::dump Error: " << _errorCode << endl;
+    return;
+  }
+
+  Handle(SALOMEDSImpl_SObject) aSO = FindObjectID("0:1");
+  fp << "0:1" << endl;
+  Handle(SALOMEDSImpl_ChildIterator) Itr = NewChildIterator(aSO);
+  TCollection_AsciiString aTab("   ");
+  for(; Itr->More(); Itr->Next()) {
+    dumpSO(Itr->Value(), fp, aTab, this);
+  }
+
+  fp.close();
+}
+
+
+void dumpSO(const Handle(SALOMEDSImpl_SObject)& theSO,
+           fstream& fp,
+           const TCollection_AsciiString& Tab,
+           const Handle(SALOMEDSImpl_Study) theStudy)
+{
+  TCollection_AsciiString aTab(Tab), anID(theSO->GetID());
+  fp << aTab << anID << endl;
+  TDF_AttributeIterator anItr(theSO->GetLabel());
+  for(; anItr.More(); anItr.Next()) {
+    Handle(SALOMEDSImpl_GenericAttribute) anAttr = Handle(SALOMEDSImpl_GenericAttribute)::DownCast(anItr.Value());
+
+    if(anAttr.IsNull()) {
+      fp << Tab << "  -- " << anItr.Value()->DynamicType();
+      continue;
+    }
+
+    TCollection_AsciiString aType = anAttr->GetClassType();
+    fp << Tab << "  -- " << aType;
+
+    if(aType == "AttributeReal") {
+      fp << " : " << Handle(SALOMEDSImpl_AttributeReal)::DownCast(anAttr)->Value();
+    }
+    else if(aType == "AttributeInteger") {
+      fp << " : " << Handle(SALOMEDSImpl_AttributeInteger)::DownCast(anAttr)->Value();
+    }
+    else if(aType ==  "AttributeName") {
+      fp << " : " << Handle(SALOMEDSImpl_AttributeName)::DownCast(anAttr)->Value();
+    }
+    else if(aType == "AttributeComment") {
+      fp << " : " << Handle(SALOMEDSImpl_AttributeComment)::DownCast(anAttr)->Value();
+    }
+    else if(aType == "AttributeReference") {
+      fp << " : " << Handle(SALOMEDSImpl_AttributeReference)::DownCast(anAttr)->Save();
+    }
+    fp << endl;
+  }
+
+  Handle(SALOMEDSImpl_ChildIterator) Itr = theStudy->NewChildIterator(theSO);
+  TCollection_AsciiString aNewTab("   ");
+  aNewTab+=aTab;
+  for(; Itr->More(); Itr->Next()) {
+    dumpSO(Itr->Value(), fp, aNewTab, theStudy);
+  }
+
+  return;
+}
+
+void SALOMEDSImpl_Study::Modify()
+{
+  _errorCode = "";
+  _doc->Modify();
+}
diff --git a/src/SALOMEDSImpl/SALOMEDSImpl_Study.hxx b/src/SALOMEDSImpl/SALOMEDSImpl_Study.hxx
new file mode 100644 (file)
index 0000000..dd986a7
--- /dev/null
@@ -0,0 +1,258 @@
+//  File   : SALOMEDSImpl_Study.hxx
+//  Author : Sergey RUIN
+//  Module : SALOME
+
+#ifndef __SALOMEDSIMPL_STUDY_I_H__
+#define __SALOMEDSIMPL_STUDY_I_H__
+
+//Handle definition
+#include <Handle_MMgt_TShared.hxx>
+#include <Standard_DefineHandle.hxx>
+DEFINE_STANDARD_HANDLE( SALOMEDSImpl_Study, MMgt_TShared )
+
+// std C++ headers
+#include <iostream>
+
+// Cascade headers
+#include <TDocStd_Document.hxx>
+#include <TDF_Tool.hxx>
+#include <TDF_Data.hxx>
+#include <TDF_Label.hxx>
+#include <stdio.h>
+#include <TCollection_AsciiString.hxx>
+#include <TColStd_SequenceOfInteger.hxx>
+#include <TColStd_SequenceOfAsciiString.hxx>
+#include <TColStd_HSequenceOfAsciiString.hxx>
+#include <TColStd_HSequenceOfTransient.hxx>
+#ifndef WNT
+#include <NCollection_DataMap.hxx>
+#else
+#include <NCollection_DataMap1.hxx>
+#endif
+
+//SALOMEDSImpl headers
+#include "SALOMEDSImpl_SComponentIterator.hxx"
+#include "SALOMEDSImpl_SObject.hxx"
+#include "SALOMEDSImpl_StudyBuilder.hxx"
+#include "SALOMEDSImpl_UseCaseBuilder.hxx"
+#include "SALOMEDSImpl_AttributeStudyProperties.hxx"
+#include "SALOMEDSImpl_AttributeIOR.hxx"
+#include "SALOMEDSImpl_Callback.hxx"
+#include "SALOMEDSImpl_Driver.hxx" 
+#include "SALOMEDSImpl_ChildIterator.hxx" 
+
+class SALOMEDSImpl_StudyManager;
+class SALOMEDSImpl_GenericAttribute;
+
+#ifndef WNT
+typedef NCollection_DataMap <TCollection_AsciiString, Handle_Standard_Transient> DataMapOfAsciiStringTransient;
+typedef NCollection_DataMap <TCollection_AsciiString, TDF_Label> DataMapAsciiStringLabel;
+#else
+typedef NCollection_DataMap1 <TCollection_AsciiString, Handle_Standard_Transient> DataMapOfAsciiStringTransient;
+typedef NCollection_DataMap1 <TCollection_AsciiString, TDF_Label> DataMapAsciiStringLabel;
+#endif
+
+class SALOMEDSImpl_Study : public MMgt_TShared 
+{
+private:
+  TCollection_AsciiString              _name;  
+  Handle(TDocStd_Document) _doc;  // OCAF Document
+  bool                     _Saved; // True if the Study is saved
+  TCollection_AsciiString  _URL; //URL of the persistent reference of the study
+  int                      _StudyId; 
+  TDF_Label                _current;
+  bool                     _autoFill; 
+  TCollection_AsciiString  _errorCode;
+  Handle(SALOMEDSImpl_Callback)       _cb;
+  Handle(SALOMEDSImpl_StudyBuilder)   _builder;
+  Handle(SALOMEDSImpl_UseCaseBuilder) _useCaseBuilder;
+
+  DataMapOfAsciiStringTransient _mapOfSO;
+  DataMapOfAsciiStringTransient _mapOfSCO;
+
+  // data structures for postponed destroying of object functionality
+  TColStd_SequenceOfAsciiString myPostponedIORs; // ordered set of IORs
+  TColStd_SequenceOfInteger myNbPostponed; // number of IOR in the each transaction
+  int myNbUndos; // number of current Undos, made by user
+  DataMapAsciiStringLabel myIORLabels;
+
+  Handle(SALOMEDSImpl_SObject)    _FindObject(const Handle(SALOMEDSImpl_SObject)& SO,
+                                             const TCollection_AsciiString& anObjectName,
+                                             bool& _find);
+                                      
+  Handle(SALOMEDSImpl_SObject)   _FindObjectIOR(const Handle(SALOMEDSImpl_SObject)& SO,
+                                               const TCollection_AsciiString& anObjectIOR,
+                                               bool& _find);
+
+public:
+
+  Standard_EXPORT static Handle(SALOMEDSImpl_Study) GetStudy(const TDF_Label& theLabel);
+  Standard_EXPORT static Handle(SALOMEDSImpl_SObject) SObject(const TDF_Label& theLabel);
+  Standard_EXPORT static Handle(SALOMEDSImpl_SComponent) SComponent(const TDF_Label& theLabel);
+  Standard_EXPORT static void IORUpdated(const Handle(SALOMEDSImpl_AttributeIOR)& theAttribute);
+
+  //! standard constructor
+  Standard_EXPORT SALOMEDSImpl_Study(const Handle(TDocStd_Document)&, const TCollection_AsciiString& study_name);
+  
+  //! standard destructor
+  Standard_EXPORT virtual ~SALOMEDSImpl_Study(); 
+  
+  //! method to Get persistent reference of study (idem URL())
+  Standard_EXPORT virtual TCollection_AsciiString GetPersistentReference();
+
+  //! method to Get transient reference of study
+  Standard_EXPORT virtual TCollection_AsciiString GetTransientReference();
+
+  Standard_EXPORT virtual void SetTransientReference(const TCollection_AsciiString& theIOR);
+
+  //! method to detect if a study is empty
+  Standard_EXPORT virtual bool IsEmpty();
+
+  //! method to Find a Component with ComponentDataType = aComponentName
+  Standard_EXPORT virtual Handle(SALOMEDSImpl_SComponent) FindComponent (const TCollection_AsciiString& aComponentName);
+
+  //! method to Find a Component Find a Component from it's ID
+  Standard_EXPORT virtual Handle(SALOMEDSImpl_SComponent) FindComponentID(const TCollection_AsciiString& aComponentID);
+
+  //! method to  Find an Object with SALOMEDSImpl::Name = anObjectName 
+  Standard_EXPORT virtual Handle(SALOMEDSImpl_SObject) FindObject(const TCollection_AsciiString& anObjectName);
+
+
+  //! method to Find Object(s) with SALOMEDSImpl::Name=anObjectName in a component with ComponentDataType = aComponentName
+  Standard_EXPORT virtual Handle(TColStd_HSequenceOfTransient) FindObjectByName( const TCollection_AsciiString& anObjectName, 
+                                                                 const TCollection_AsciiString& aComponentName ) ;
+  
+  //! method to Find an Object with ID = anObjectID 
+  Standard_EXPORT virtual Handle(SALOMEDSImpl_SObject) FindObjectID(const TCollection_AsciiString& anObjectID);
+
+  //! method to Create an Object with ID = anObjectID 
+  Standard_EXPORT virtual Handle(SALOMEDSImpl_SObject) CreateObjectID(const TCollection_AsciiString& anObjectID);
+
+  //! method to Find an Object with ID = anObjectIOR 
+  Standard_EXPORT virtual Handle(SALOMEDSImpl_SObject) FindObjectIOR(const TCollection_AsciiString& anObjectIOR);
+
+  //! method to Find an Object by its path
+  Standard_EXPORT virtual Handle(SALOMEDSImpl_SObject) FindObjectByPath(const TCollection_AsciiString& thePath);
+
+  //! method to get a path of SObject
+  Standard_EXPORT virtual TCollection_AsciiString GetObjectPath(const Handle(SALOMEDSImpl_SObject)& theObject);
+
+  Standard_EXPORT TCollection_AsciiString GetObjectPathByIOR(const TCollection_AsciiString& theIOR);
+
+  //! method to set a context: root ('/') is UserData component
+  Standard_EXPORT virtual bool SetContext(const TCollection_AsciiString& thePath);
+
+  //! method to get a context
+  Standard_EXPORT virtual TCollection_AsciiString GetContext();  
+
+  //! method to get all object names in the given context (or in the current context, if 'theContext' is empty)
+  Standard_EXPORT virtual Handle(TColStd_HSequenceOfAsciiString) GetObjectNames(const TCollection_AsciiString& theContext);
+
+  //! method to get all directory names in the given context (or in the current context, if 'theContext' is empty)
+  Standard_EXPORT virtual Handle(TColStd_HSequenceOfAsciiString) GetDirectoryNames(const TCollection_AsciiString& theContext);
+
+  //! method to get all file names in the given context (or in the current context, if 'theContext' is empty)
+  Standard_EXPORT virtual Handle(TColStd_HSequenceOfAsciiString) GetFileNames(const TCollection_AsciiString& theContext);
+
+  //! method to get all components names
+  Standard_EXPORT virtual Handle(TColStd_HSequenceOfAsciiString) GetComponentNames(const TCollection_AsciiString& theContext);
+
+  //! method to Create a ChildIterator from an SObject 
+  Standard_EXPORT virtual Handle(SALOMEDSImpl_ChildIterator) NewChildIterator(const Handle(SALOMEDSImpl_SObject)& aSO);
+
+  //! method to Create a SComponentIterator 
+  Standard_EXPORT virtual SALOMEDSImpl_SComponentIterator NewComponentIterator();
+
+  //! method to Create a StudyBuilder
+  Standard_EXPORT virtual Handle(SALOMEDSImpl_StudyBuilder) NewBuilder();
+  //! method to get study name
+  Standard_EXPORT virtual TCollection_AsciiString Name();
+
+  //! method to set study name
+  Standard_EXPORT virtual void  Name(const TCollection_AsciiString& name);
+
+  //! method to get if study has been saved
+  Standard_EXPORT virtual bool IsSaved();
+
+  //! method to set if study has been saved
+  Standard_EXPORT virtual void  IsSaved(bool save);
+
+  //! method to Detect if a Study has been modified since it has been saved
+  Standard_EXPORT virtual bool IsModified();
+
+  //! method to get URL of the study (idem GetPersistentReference) 
+  Standard_EXPORT virtual TCollection_AsciiString URL();
+
+  //! method to set URL of the study
+  Standard_EXPORT virtual void  URL(const TCollection_AsciiString& url);
+
+  Standard_EXPORT virtual bool IsLocked();
+
+  Standard_EXPORT virtual int StudyId();
+
+  Standard_EXPORT virtual void  StudyId(int id);
+
+  Standard_EXPORT virtual void UpdateIORLabelMap(const TCollection_AsciiString& anIOR, const TCollection_AsciiString& aLabel);
+  
+  Standard_EXPORT virtual Handle(TColStd_HSequenceOfTransient) FindDependances(const Handle(SALOMEDSImpl_SObject)& anObject);
+
+  Standard_EXPORT virtual Handle(SALOMEDSImpl_AttributeStudyProperties) SALOMEDSImpl_Study::GetProperties();
+
+  Standard_EXPORT virtual TCollection_AsciiString GetLastModificationDate();
+
+  Standard_EXPORT virtual Handle(TColStd_HSequenceOfAsciiString) GetModificationsDate();
+
+  Standard_EXPORT virtual Handle(SALOMEDSImpl_UseCaseBuilder) GetUseCaseBuilder();
+
+  Standard_EXPORT virtual void Close();
+
+  Standard_EXPORT void EnableUseCaseAutoFilling(bool isEnabled) { _errorCode = ""; _autoFill = isEnabled; }
+
+  // postponed destroying of object functionality
+  Standard_EXPORT virtual void AddPostponed(const TCollection_AsciiString& theIOR);
+
+  Standard_EXPORT virtual void AddCreatedPostponed(const TCollection_AsciiString& theIOR);
+
+  Standard_EXPORT virtual Handle(TColStd_HSequenceOfAsciiString) RemovePostponed(const int theUndoLimit); 
+                                              // removes postponed IORs of old transaction
+                                              // if theUndoLimit==0, removes all
+  Standard_EXPORT virtual void UndoPostponed(const int theWay); // theWay = 1: resurrect objects,
+                                                // theWay = -1: get back to the list of postponed
+
+
+  Standard_EXPORT virtual TCollection_AsciiString GetErrorCode() { return _errorCode; }
+  Standard_EXPORT virtual bool IsError() { return _errorCode != ""; }
+
+  Standard_EXPORT virtual Handle(SALOMEDSImpl_SComponent) GetSComponent(const TCollection_AsciiString& theEntry);
+  Standard_EXPORT virtual Handle(SALOMEDSImpl_SComponent) GetSComponent(const TDF_Label& theLabel);
+  Standard_EXPORT virtual Handle(SALOMEDSImpl_SObject) GetSObject(const TCollection_AsciiString& theEntry);
+  Standard_EXPORT virtual Handle(SALOMEDSImpl_SObject) GetSObject(const TDF_Label& theEntryLabel);
+  Standard_EXPORT virtual Handle(TDF_Attribute) GetAttribute(const TCollection_AsciiString& theEntry, 
+                                            const TCollection_AsciiString& theType);
+
+  Standard_EXPORT virtual bool HasCurrentContext() { return !_current.IsNull(); }
+
+  Standard_EXPORT virtual bool DumpStudy(const TCollection_AsciiString& thePath, 
+                        const TCollection_AsciiString& theBaseName, 
+                        bool isPublished,
+                        SALOMEDSImpl_DriverFactory* theFactory);
+
+  Standard_EXPORT static TCollection_AsciiString GetDumpStudyComment(const char* theComponentName = 0);
+
+  Standard_EXPORT virtual Handle(TDocStd_Document) GetDocument() { return _doc; } 
+
+  //The method dump creates a txt file that contain a dump of the study, for debug use
+  Standard_EXPORT void dump(const TCollection_AsciiString& theFileName);
+
+  //This method marks the study as being modified
+  Standard_EXPORT void Modify();
+
+public:
+  DEFINE_STANDARD_RTTI( SALOMEDSImpl_Study )
+
+friend class SALOMEDSImpl_StudyManager;    
+friend class SALOMEDSImpl_GenericAttribute;
+};
+#endif
diff --git a/src/SALOMEDSImpl/SALOMEDSImpl_StudyBuilder.cxx b/src/SALOMEDSImpl/SALOMEDSImpl_StudyBuilder.cxx
new file mode 100644 (file)
index 0000000..5f782eb
--- /dev/null
@@ -0,0 +1,1028 @@
+//  File   : SALOMEDSImpl_StudyBuilder.cxx
+//  Author : Sergey RUIN
+//  Module : SALOME
+
+
+
+#include "SALOMEDSImpl_Attributes.hxx"
+
+using namespace std;
+
+#include "SALOMEDSImpl_Study.hxx"
+#include "SALOMEDSImpl_StudyBuilder.hxx"
+#include "SALOMEDSImpl_SObject.hxx"
+#include "SALOMEDSImpl_SComponent.hxx"
+#include "SALOMEDSImpl_Tool.hxx"
+
+#include <TDF_ChildIterator.hxx>
+#include <TDF_Label.hxx>
+#include <TDF_Tool.hxx>
+#include <TDF_Data.hxx>
+#include <SALOMEDSImpl_ChildNodeIterator.hxx>
+#include <TDF_ListIteratorOfAttributeList.hxx>
+
+#include <HDFOI.hxx>
+#include <stdlib.h> 
+
+IMPLEMENT_STANDARD_HANDLE( SALOMEDSImpl_StudyBuilder, MMgt_TShared )
+IMPLEMENT_STANDARD_RTTIEXT( SALOMEDSImpl_StudyBuilder, MMgt_TShared )
+
+#define USE_CASE_LABEL_TAG            2
+#define DIRECTORYID                   16661
+#define FILELOCALID                   26662 
+
+static void Translate_persistentID_to_IOR(TDF_Label& Lab, SALOMEDSImpl_Driver* driver, bool isMultiFile, bool isASCII);
+
+//============================================================================
+/*! Function : constructor
+ *  Purpose  :
+ */
+//============================================================================
+SALOMEDSImpl_StudyBuilder::SALOMEDSImpl_StudyBuilder(const Handle(Standard_Transient)& theOwner)
+{
+   _errorCode = "";
+   _study = theOwner;
+   _doc = Handle(SALOMEDSImpl_Study)::DownCast(theOwner)->GetDocument();
+}
+
+//============================================================================
+/*! Function : destructor
+ *  Purpose  :
+ */
+//============================================================================
+SALOMEDSImpl_StudyBuilder::~SALOMEDSImpl_StudyBuilder()
+{}
+
+//============================================================================
+/*! Function : NewComponent
+ *  Purpose  : Create a new component (Scomponent)
+ */
+//============================================================================
+Handle(SALOMEDSImpl_SComponent) SALOMEDSImpl_StudyBuilder::NewComponent(const TCollection_AsciiString& DataType)
+{
+  _errorCode = "";
+  CheckLocked();
+  //Always create component under main label.
+  TDF_Label L  = _doc->Main();
+
+  int imax = 0;
+  for (TDF_ChildIterator it(L); it.More(); it.Next()) {
+    if (it.Value().Tag() > imax)
+      imax = it.Value().Tag();
+  }
+  imax++;
+  TDF_Label NL = L.FindChild(imax);
+
+  SALOMEDSImpl_AttributeComment::Set(NL, DataType);
+
+  Handle(SALOMEDSImpl_SComponent) so =  Handle(SALOMEDSImpl_Study)::DownCast(_study)->GetSComponent (NL);
+
+  if(!_callbackOnAdd.IsNull()) _callbackOnAdd->OnAddSObject(so);
+
+  _doc->Modify();
+
+  return so;
+}
+
+//============================================================================
+/*! Function : DefineComponentInstance
+ *  Purpose  : Add IOR attribute of a Scomponent
+ */
+//============================================================================
+bool SALOMEDSImpl_StudyBuilder::DefineComponentInstance(const Handle(SALOMEDSImpl_SComponent)& aComponent,
+                                                       const TCollection_AsciiString& IOR)
+{
+   _errorCode = "";
+
+  CheckLocked();
+  if(aComponent.IsNull() || IOR.IsEmpty()) {
+    _errorCode = "Invalid arguments";
+    return false;
+  }
+  //add IOR definition 
+  SALOMEDSImpl_AttributeIOR::Set(aComponent->GetLabel(), IOR);  
+
+  //_doc->Modify();
+
+  return true;
+}
+
+//============================================================================
+/*! Function : RemoveComponent
+ *  Purpose  : Delete a Scomponent
+ */
+//============================================================================
+bool SALOMEDSImpl_StudyBuilder::RemoveComponent(const Handle(SALOMEDSImpl_SComponent)& aComponent)
+{
+   _errorCode = "";
+  CheckLocked();
+  return RemoveObject(aComponent);
+}
+
+//============================================================================
+/*! Function : NewObject
+ *  Purpose  : Create a new SObject
+ */
+//============================================================================
+Handle(SALOMEDSImpl_SObject) SALOMEDSImpl_StudyBuilder::NewObject(const Handle(SALOMEDSImpl_SObject)& theFatherObject)
+{
+   _errorCode = "";
+  CheckLocked();
+
+  //Find label of father
+  TDF_Label Lab = theFatherObject->GetLabel();
+  
+  //Create a new label
+  int imax = 0;
+  for (TDF_ChildIterator it(Lab); it.More(); it.Next()) {
+    if (it.Value().Tag() > imax)
+      imax = it.Value().Tag();
+  }
+  imax++;
+  TDF_Label NewLab = Lab.FindChild(imax);
+  
+  Handle(SALOMEDSImpl_SObject) so = Handle(SALOMEDSImpl_Study)::DownCast(_study)->GetSObject(NewLab);
+  if(!_callbackOnAdd.IsNull()) _callbackOnAdd->OnAddSObject(so);
+
+  _doc->Modify();  
+  return so;
+}
+
+//============================================================================
+/*! Function : NewObjectToTag
+ *  Purpose  :
+ */
+//============================================================================
+Handle(SALOMEDSImpl_SObject) SALOMEDSImpl_StudyBuilder::NewObjectToTag(const Handle(SALOMEDSImpl_SObject)& theFatherObject,
+                                                                      const int theTag)
+{
+  _errorCode = "";
+  CheckLocked();
+  //Find label of father
+  TDF_Label Lab = theFatherObject->GetLabel();
+
+  //Create or find label
+  TDF_Label NewLab = Lab.FindChild(theTag, 1);
+
+  Handle(SALOMEDSImpl_SObject) so = Handle(SALOMEDSImpl_Study)::DownCast(_study)->GetSObject(NewLab);
+
+  if(!_callbackOnAdd.IsNull()) _callbackOnAdd->OnAddSObject(so);
+
+  _doc->Modify();  
+  return so;
+}
+
+//============================================================================
+/*! Function : RemoveObject
+ *  Purpose  :
+ */
+//============================================================================
+bool SALOMEDSImpl_StudyBuilder::RemoveObject(const Handle(SALOMEDSImpl_SObject)& anObject)
+{
+   _errorCode = "";
+  CheckLocked();
+  if(anObject.IsNull()) {
+    _errorCode = "Null object";
+    return false;
+  }
+
+  if(!_callbackOnRemove.IsNull()) _callbackOnRemove->OnRemoveSObject(anObject);
+
+  TDF_Label Lab = anObject->GetLabel();
+
+  Handle(SALOMEDSImpl_AttributeReference) aReference;
+  if (Lab.FindAttribute(SALOMEDSImpl_AttributeReference::GetID(), aReference)) {
+    Handle(SALOMEDSImpl_AttributeTarget) aTarget;
+    if (aReference->Get().FindAttribute(SALOMEDSImpl_AttributeTarget::GetID(),aTarget))
+      aTarget->Remove(SALOMEDSImpl_Study::SObject(Lab));
+  }
+
+  Handle(SALOMEDSImpl_AttributeIOR) anAttr; // postponed removing of CORBA objects
+  if (Lab.FindAttribute(SALOMEDSImpl_AttributeIOR::GetID(), anAttr))
+    SALOMEDSImpl_Study::GetStudy(_doc->Main())->AddPostponed(TCollection_AsciiString(anAttr->Value()).ToCString());
+
+  Lab.ForgetAllAttributes();
+  _doc->Modify();  
+    
+  return true;
+}
+
+//============================================================================
+/*! Function : RemoveObjectWithChildren
+ *  Purpose  :
+ */
+//============================================================================
+bool SALOMEDSImpl_StudyBuilder::RemoveObjectWithChildren(const Handle(SALOMEDSImpl_SObject)& anObject)
+{
+   _errorCode = "";
+  CheckLocked();
+  if(anObject.IsNull()) {
+    _errorCode = "Null object";
+    return false;
+  }
+
+  if(!_callbackOnRemove.IsNull()) _callbackOnRemove->OnRemoveSObject(anObject);
+
+  TDF_Label Lab = anObject->GetLabel();
+
+  Handle(SALOMEDSImpl_AttributeReference) aReference;
+  if (Lab.FindAttribute(SALOMEDSImpl_AttributeReference::GetID(), aReference)) {
+    Handle(SALOMEDSImpl_AttributeTarget) aTarget;
+    if (aReference->Get().FindAttribute(SALOMEDSImpl_AttributeTarget::GetID(),aTarget))
+      aTarget->Remove(SALOMEDSImpl_Study::SObject(Lab));
+  }
+  Handle(SALOMEDSImpl_AttributeIOR) anAttr; // postponed removing of CORBA objects
+  if (Lab.FindAttribute(SALOMEDSImpl_AttributeIOR::GetID(), anAttr))
+    SALOMEDSImpl_Study::GetStudy(_doc->Main())->AddPostponed(TCollection_AsciiString(anAttr->Value()).ToCString());
+
+  TDF_ChildIterator it(Lab, Standard_True);
+  for(;it.More();it.Next()) {
+    TDF_Label aLabel = it.Value();
+    if (aLabel.FindAttribute(SALOMEDSImpl_AttributeReference::GetID(), aReference)) {
+      Handle(SALOMEDSImpl_AttributeTarget) aTarget;
+      if (aReference->Get().FindAttribute(SALOMEDSImpl_AttributeTarget::GetID(),aTarget))
+       aTarget->Remove(SALOMEDSImpl_Study::SObject(aLabel));
+    }
+    Handle(SALOMEDSImpl_AttributeIOR) anAttr; // postponed removing of CORBA objects
+    if (aLabel.FindAttribute(SALOMEDSImpl_AttributeIOR::GetID(), anAttr))
+      SALOMEDSImpl_Study::GetStudy(_doc->Main())->AddPostponed(TCollection_AsciiString(anAttr->Value()).ToCString());
+  }
+
+  Lab.ForgetAllAttributes(Standard_True);
+
+  _doc->Modify();  
+  
+  return true;
+}
+
+//============================================================================
+/*! Function : LoadWith
+ *  Purpose  : 
+ */
+//============================================================================
+bool SALOMEDSImpl_StudyBuilder::LoadWith(const Handle(SALOMEDSImpl_SComponent)& anSCO, SALOMEDSImpl_Driver* aDriver) 
+{
+  _errorCode = "";
+
+  TDF_Label Lab = anSCO->GetLabel();
+  Handle(SALOMEDSImpl_AttributePersistentRef) Att;
+
+  //Find the current Url of the study  
+  if (_doc->Main().FindAttribute(SALOMEDSImpl_AttributePersistentRef::GetID(),Att)) {
+    int aLocked = anSCO->GetStudy()->GetProperties()->IsLocked();
+    if (aLocked) anSCO->GetStudy()->GetProperties()->SetLocked(false);
+    
+    TCollection_ExtendedString Res(Att->Value());
+
+    Handle(SALOMEDSImpl_AttributeComment) type;
+    TCollection_ExtendedString DataType;
+    if (Lab.FindAttribute(SALOMEDSImpl_AttributeComment::GetID(),type))
+      DataType = type->Value();
+
+    // associate the driver to the SComponent
+    if(aDriver == NULL) {
+      _errorCode = "Driver is null";
+      return false;
+    }
+
+    // mpv 06.03.2003: SAL1927 - if component data if already loaded, it is not necessary to do it again
+    Handle(SALOMEDSImpl_AttributeIOR) attrIOR;
+    if (Lab.FindAttribute(SALOMEDSImpl_AttributeIOR::GetID(), attrIOR)) {
+      if (aLocked) anSCO->GetStudy()->GetProperties()->SetLocked(true);
+      return true;
+    }
+
+    DefineComponentInstance (anSCO, aDriver->GetIOR());
+    
+    TCollection_AsciiString aHDFPath(Res);
+    
+    char* aHDFUrl;
+    bool isASCII = false;
+    if (HDFascii::isASCII(aHDFPath.ToCString())) {
+      isASCII = true;
+      char* aResultPath = HDFascii::ConvertFromASCIIToHDF(aHDFPath.ToCString());
+      aHDFUrl = new char[strlen(aResultPath) + 19];
+      sprintf(aHDFUrl, "%shdf_from_ascii.hdf", aResultPath);
+      delete(aResultPath);
+    } else {
+      aHDFUrl = aHDFPath.ToCString();
+    }
+
+    //Open the Study HDF file 
+    HDFfile *hdf_file = new HDFfile(aHDFUrl); 
+    
+    char aMultifileState[2];
+    char ASCIIfileState[2];
+    try {
+      TCollection_AsciiString scoid = anSCO->GetID();
+      hdf_file->OpenOnDisk(HDF_RDONLY);
+      HDFgroup *hdf_group = new HDFgroup("DATACOMPONENT",hdf_file);
+      hdf_group->OpenOnDisk();
+      HDFgroup *hdf_sco_group = new HDFgroup(scoid.ToCString(), hdf_group);
+      hdf_sco_group->OpenOnDisk();
+       
+      unsigned char* aStreamFile = NULL;
+      int aStreamSize = 0;
+
+      if (hdf_sco_group->ExistInternalObject("FILE_STREAM")) {
+       HDFdataset *hdf_dataset = new HDFdataset("FILE_STREAM", hdf_sco_group);
+       hdf_dataset->OpenOnDisk();
+       aStreamSize = hdf_dataset->GetSize();
+       aStreamFile  = new unsigned char[aStreamSize];
+       if(aStreamFile == NULL) throw HDFexception("Unable to open dataset FILE_STREAM");
+       hdf_dataset->ReadFromDisk(aStreamFile);
+       hdf_dataset->CloseOnDisk();
+       hdf_dataset = 0;
+      } else aStreamFile = NULL;
+     
+      HDFdataset *multifile_hdf_dataset = new HDFdataset("MULTIFILE_STATE", hdf_sco_group);
+      multifile_hdf_dataset->OpenOnDisk();
+      multifile_hdf_dataset->ReadFromDisk(aMultifileState);
+      
+      HDFdataset *ascii_hdf_dataset = new HDFdataset("ASCII_STATE", hdf_sco_group);
+      ascii_hdf_dataset->OpenOnDisk();
+      ascii_hdf_dataset->ReadFromDisk(ASCIIfileState);
+      
+      // set path without file name from URL 
+      int aFileNameSize = Res.Length();
+      char* aDir = new char[aFileNameSize];
+      memcpy(aDir, TCollection_AsciiString(Res).ToCString(), aFileNameSize);
+      for(int aCounter = aFileNameSize-1; aCounter>=0; aCounter--)
+       if (aDir[aCounter] == '/') {
+         aDir[aCounter+1] = 0;
+         break;
+       }
+      
+      bool aResult = (ASCIIfileState[0]=='A')?
+       aDriver->LoadASCII(anSCO, aStreamFile, aStreamSize, aDir, aMultifileState[0]=='M'):
+       aDriver->Load(anSCO, aStreamFile, aStreamSize, aDir, aMultifileState[0]=='M');
+
+      if(aStreamFile != NULL) delete []aStreamFile; 
+
+      if(!aResult) {
+       RemoveAttribute( anSCO, "AttributeIOR" );
+
+       _errorCode = "Can't load component";
+       throw HDFexception("Unable to load component");
+      }
+   
+      if(aDir != NULL) delete []aDir;
+
+      multifile_hdf_dataset->CloseOnDisk();
+      multifile_hdf_dataset = 0;
+      ascii_hdf_dataset->CloseOnDisk();
+      ascii_hdf_dataset = 0;
+   
+      hdf_sco_group->CloseOnDisk();
+      hdf_sco_group = 0;
+      hdf_group->CloseOnDisk();
+      hdf_group = 0;
+      hdf_file->CloseOnDisk();
+      delete hdf_file;
+
+      if (isASCII) {
+       Handle(TColStd_HSequenceOfAsciiString) aFilesToRemove = new TColStd_HSequenceOfAsciiString;
+       aFilesToRemove->Append(aHDFUrl);
+       SALOMEDSImpl_Tool::RemoveTemporaryFiles(SALOMEDSImpl_Tool::GetDirFromPath(aHDFUrl), aFilesToRemove, true);
+      }      
+
+      delete aHDFUrl;
+    }
+    catch (HDFexception) {
+      delete hdf_file;
+
+      if (isASCII) {
+       Handle(TColStd_HSequenceOfAsciiString) aFilesToRemove = new TColStd_HSequenceOfAsciiString;
+       aFilesToRemove->Append(aHDFUrl);
+       SALOMEDSImpl_Tool::RemoveTemporaryFiles(SALOMEDSImpl_Tool::GetDirFromPath(aHDFUrl), aFilesToRemove, true);
+      }
+      delete aHDFUrl;
+
+      if (aLocked) anSCO->GetStudy()->GetProperties()->SetLocked(true);
+      _errorCode = "No persistent file";   
+      return false;
+    }
+
+    try {
+      Translate_persistentID_to_IOR (Lab, aDriver, aMultifileState[0]=='M', ASCIIfileState[0] == 'A');
+    } catch(...) {
+      _errorCode = "Can not convert persistent IDs to IORs";
+      return false;
+    }
+
+    if (aLocked) anSCO->GetStudy()->GetProperties()->SetLocked(true);
+  } else {
+    _errorCode = "No persistent file";   
+  }
+
+  return true;
+}
+
+
+//============================================================================
+/*! Function : Load
+ *  Purpose  : 
+ */
+//============================================================================
+bool SALOMEDSImpl_StudyBuilder::Load(const Handle(SALOMEDSImpl_SObject)& sco)
+{
+  _errorCode = "Not implemented";
+  return false;
+}
+
+//============================================================================
+/*! Function : FindOrCreateAttribute
+ *  Purpose  : Add attribute of given type to SObject, if there is attribute of such type, returns
+ *  existing one
+ */
+//============================================================================
+Handle(TDF_Attribute) SALOMEDSImpl_StudyBuilder::FindOrCreateAttribute(const Handle(SALOMEDSImpl_SObject)& anObject, 
+                                                                      const TCollection_AsciiString& aTypeOfAttribute)
+{
+  _errorCode = "";
+  if(anObject.IsNull()) {
+    _errorCode = "Invalid arguments";
+    return NULL;
+  }
+
+  TDF_Label Lab = anObject->GetLabel();
+  if(Lab.IsNull()) {
+    _errorCode = "Null label";
+    return NULL;
+  }
+
+  _doc->Modify();  
+
+  //The macro adds all necessary checks for standardly behaiving attributes
+  __FindOrCreateAttributeForBuilder
+  
+  //Add checks for TreeNode and UserID attributes  
+  if (strncmp(aTypeOfAttribute.ToCString(), "AttributeTreeNode",17) == 0 ) {
+    Standard_GUID aTreeNodeGUID;
+    if (strcmp(aTypeOfAttribute.ToCString(), "AttributeTreeNode") == 0) {
+      aTreeNodeGUID = SALOMEDSImpl_AttributeTreeNode::GetDefaultTreeID();
+    } else {
+      char* aGUIDString = new char[40];
+      char* aType = (char*)aTypeOfAttribute.ToCString();
+      sprintf(aGUIDString, &(aType[21]));
+      aTreeNodeGUID = Standard_GUID(aGUIDString); // create tree node GUID by name
+      delete(aGUIDString);
+    }
+    Handle(SALOMEDSImpl_AttributeTreeNode) anAttr;
+    if (!Lab.FindAttribute(aTreeNodeGUID, anAttr)) {
+      CheckLocked();
+      anAttr = SALOMEDSImpl_AttributeTreeNode::Set(Lab, aTreeNodeGUID);
+    }
+    return anAttr;
+  }
+
+  if (strncmp(aTypeOfAttribute.ToCString(), "AttributeUserID",15) == 0 ) {
+    Handle(SALOMEDSImpl_AttributeUserID) anAttr;
+    if (!Lab.FindAttribute(SALOMEDSImpl_AttributeUserID::DefaultID(), anAttr)) {
+      CheckLocked();
+      anAttr = SALOMEDSImpl_AttributeUserID::Set(Lab, SALOMEDSImpl_AttributeUserID::DefaultID());
+    }
+    return anAttr;
+  }
+  _errorCode = "Can not create an attribute";
+
+  return NULL;
+}
+
+//============================================================================
+/*! Function : FindAttribute
+ *  Purpose  : Find attribute of given type assigned SObject, returns Standard_True if it is found
+ */
+//============================================================================
+
+bool SALOMEDSImpl_StudyBuilder::FindAttribute(const Handle(SALOMEDSImpl_SObject)& anObject, 
+                                             Handle(TDF_Attribute)& anAttribute, 
+                                             const TCollection_AsciiString& aTypeOfAttribute)
+{
+  _errorCode = "";
+  if(anObject.IsNull()) {
+    _errorCode = "Invalid arguments";
+    return false;
+  }
+  TDF_Label Lab = anObject->GetLabel();
+  if (Lab.FindAttribute(SALOMEDSImpl_SObject::GetGUID(aTypeOfAttribute), anAttribute)) {
+    _doc->Modify();  
+    return Standard_True;
+  }
+  return Standard_False;
+}
+
+//============================================================================
+/*! Function : RemoveAttribute
+ *  Purpose  : Remove attribute of given type assigned SObject
+ */
+//============================================================================
+
+bool SALOMEDSImpl_StudyBuilder::RemoveAttribute(const Handle(SALOMEDSImpl_SObject)& anObject, 
+                                               const TCollection_AsciiString& aTypeOfAttribute)
+{
+  _errorCode = "";
+  CheckLocked();
+  if(anObject.IsNull()) {
+    _errorCode = "Invalid arguments";
+    return false;
+  }
+  TDF_Label Lab = anObject->GetLabel();
+  
+  if (aTypeOfAttribute == "AttributeIOR") { // postponed removing of CORBA objects
+    Handle(SALOMEDSImpl_AttributeIOR) anAttr;
+    if (Lab.FindAttribute(SALOMEDSImpl_AttributeIOR::GetID(), anAttr))
+      SALOMEDSImpl_Study::GetStudy(_doc->Main())->AddPostponed(anAttr->Value());
+  }
+
+  Lab.ForgetAttribute (SALOMEDSImpl_SObject::GetGUID(aTypeOfAttribute));
+    
+  _doc->Modify();  
+    
+  return true;
+}
+
+//============================================================================
+/*! Function : Addreference
+ *  Purpose  : 
+ */
+//============================================================================
+bool SALOMEDSImpl_StudyBuilder::Addreference(const Handle(SALOMEDSImpl_SObject)& me, 
+                                            const Handle(SALOMEDSImpl_SObject)& theReferencedObject)
+{
+  _errorCode = "";
+  if(me.IsNull() || theReferencedObject.IsNull()) {
+   _errorCode = "Invalid arguments";
+   return false;
+  }
+  CheckLocked();
+  TDF_Label Lab = me->GetLabel();
+  TDF_Label RefLab = theReferencedObject->GetLabel();
+  SALOMEDSImpl_AttributeReference::Set(Lab,RefLab);
+
+  SALOMEDSImpl_AttributeTarget::Set(RefLab)->Add(SALOMEDSImpl_Study::SObject(Lab));
+
+  if(!_callbackOnRemove.IsNull() && Lab.IsDescendant(_doc->Main())) _callbackOnRemove->OnRemoveSObject(me);
+  
+  return true;
+}
+
+//============================================================================
+/*! Function : RemoveReference
+ *  Purpose  : 
+ */
+//============================================================================
+bool SALOMEDSImpl_StudyBuilder::RemoveReference(const Handle(SALOMEDSImpl_SObject)& me)
+{
+  _errorCode = "";
+  Handle(SALOMEDSImpl_SObject) theReferencedObject;
+  if(!me->ReferencedObject(theReferencedObject)) return false;  //No reference is found
+
+  CheckLocked();
+  TDF_Label Lab = me->GetLabel();
+
+  Lab.ForgetAttribute(SALOMEDSImpl_AttributeReference::GetID());  
+
+  //SRN: 30 Aug, 2004 : fix from Ecole l'ete version 
+
+  TDF_Label RefLab = theReferencedObject->GetLabel();
+       
+  Handle(SALOMEDSImpl_AttributeTarget) aTarget;
+  if(RefLab.FindAttribute(SALOMEDSImpl_AttributeTarget::GetID(), aTarget)) 
+    aTarget->Remove(SALOMEDSImpl_Study::SObject(Lab));
+  
+  _doc->Modify();  
+  
+  return true;
+}
+
+
+
+//============================================================================
+/*! Function : AddDirectory
+ *  Purpose  : adds a new directory with a path = thePath
+ */
+//============================================================================
+bool SALOMEDSImpl_StudyBuilder::AddDirectory(const TCollection_AsciiString& thePath) 
+{
+  _errorCode = "";
+  CheckLocked();
+  if(thePath.IsEmpty() || thePath == "") {
+    _errorCode = "Invalid path";
+    return false;
+  }
+
+  TCollection_AsciiString aPath(thePath), aContext(""), aFatherPath;
+  TDF_Label aLabel;
+  Handle(SALOMEDSImpl_Study) aStudy = SALOMEDSImpl_Study::GetStudy(_doc->Main());
+  Handle(SALOMEDSImpl_SObject) anObject;
+
+  try { 
+    anObject = aStudy->FindObjectByPath(thePath); //Check if the directory already exists
+  }
+  catch(...) { }
+
+  if(!anObject.IsNull()) {
+    _errorCode = "StudyNameAlreadyUsed";
+    return false; 
+  }
+
+  if(aPath.Value(1) != '/') { //Relative path 
+    aPath.Prepend('/');
+    aPath = aStudy->GetContext() + aPath;
+  }
+
+  TCollection_AsciiString aToken = aPath.Token("/", 1);
+  if(aToken.Length() == 0) aFatherPath = "/";
+
+  int i = 1;  
+  while(aToken.Length() != 0) {
+    if(aPath.Token("/", i+1).Length() > 0) {
+      aFatherPath += "/";
+      aFatherPath += aToken;
+    }
+    aToken = aPath.Token("/", ++i);
+  }
+
+  anObject.Nullify();
+  try { 
+    anObject = aStudy->FindObjectByPath(aFatherPath); //Check if the father directory exists
+  }
+  catch(...) { ; }
+  if(anObject.IsNull()) {
+    _errorCode = "StudyInvalidDirectory";
+    return false; 
+  }
+
+  Handle(SALOMEDSImpl_SObject) aNewObject = NewObject(anObject);
+  aLabel = aNewObject->GetLabel();
+  if(aLabel.IsNull()) {
+    _errorCode = "StudyInvalidComponent";
+    return false;
+  }
+
+  SALOMEDSImpl_AttributeName::Set(aLabel, aPath.Token("/", i-1));
+
+  //Set LocalID attribute to identify the directory object
+  Handle(SALOMEDSImpl_AttributeLocalID) aLocalID = SALOMEDSImpl_AttributeLocalID::Set(aLabel, DIRECTORYID);
+  
+  _doc->Modify(); 
+  
+  return true;
+}
+
+
+//============================================================================
+/*! Function : SetGUID
+ *  Purpose  : 
+ */
+//============================================================================
+bool SALOMEDSImpl_StudyBuilder::SetGUID(const Handle(SALOMEDSImpl_SObject)& anObject, 
+                                       const TCollection_AsciiString& theGUID)
+{
+  _errorCode = "";
+  CheckLocked();
+  if(anObject.IsNull()) {
+    _errorCode = "Invalid arguments";
+    return false;
+  }
+
+  TDF_Label aLabel = anObject->GetLabel();
+  SALOMEDSImpl_AttributeUserID::Set(aLabel, theGUID.ToCString());
+
+  _doc->Modify();  
+
+  return true;
+}
+
+//============================================================================
+/*! Function : IsGUID
+ *  Purpose  : 
+ */
+//============================================================================
+bool SALOMEDSImpl_StudyBuilder::IsGUID(const Handle(SALOMEDSImpl_SObject)& anObject, 
+                                      const TCollection_AsciiString& theGUID)
+{
+  _errorCode = "";
+  if(anObject.IsNull()) {
+    _errorCode = "Invalid arguments";
+    return false;
+  }
+  TDF_Label aLabel = anObject->GetLabel();
+  return aLabel.IsAttribute(theGUID.ToCString());
+}
+
+
+//============================================================================
+/*! Function : NewCommand
+ *  Purpose  : 
+ */
+//============================================================================
+void SALOMEDSImpl_StudyBuilder::NewCommand()
+{
+  _errorCode = "";
+  // mpv: for SAL2114 - unset "lock changed" flag at the operation start
+  Handle(SALOMEDSImpl_AttributeStudyProperties) anAttr;
+  if (!_doc->Main().FindAttribute(SALOMEDSImpl_AttributeStudyProperties::GetID(), anAttr)) {
+    anAttr = new SALOMEDSImpl_AttributeStudyProperties;
+    _doc->Main().AddAttribute(anAttr);
+  }
+  anAttr->IsLockChanged(true);
+  
+  _doc->NewCommand();
+}
+
+//============================================================================
+/*! Function : CommitCommand
+ *  Purpose  : 
+ */
+//============================================================================
+void SALOMEDSImpl_StudyBuilder::CommitCommand()
+{
+  _errorCode = "";
+  Handle(SALOMEDSImpl_AttributeStudyProperties) anAttr;
+  if (!_doc->Main().FindAttribute(SALOMEDSImpl_AttributeStudyProperties::GetID(), anAttr)) {
+    anAttr = new SALOMEDSImpl_AttributeStudyProperties;
+    _doc->Main().AddAttribute(anAttr);
+  }
+  if (anAttr->IsLocked() && !anAttr->IsLockChanged(true)) {
+    AbortCommand();
+    _errorCode = "LockProtection";
+    throw LockProtection("LockProtection");
+  } else {
+    SALOMEDSImpl_Study::GetStudy(_doc->Main())->RemovePostponed(_doc->GetUndoLimit());
+
+    int aModif = anAttr->GetModified();
+    if (aModif < 0) aModif = 1000; // if user make undo and then - new transaction "modify" will never be zero
+    anAttr->SetModified(aModif+1);
+    _doc->CommitCommand();
+  }
+  
+  _doc->Modify();  
+}
+
+//============================================================================
+/*! Function : HasOpenCommand
+ *  Purpose  : 
+ */
+//============================================================================
+bool SALOMEDSImpl_StudyBuilder::HasOpenCommand()
+{
+  _errorCode = "";
+  return _doc->HasOpenCommand();
+}
+
+//============================================================================
+/*! Function : AbortCommand
+ *  Purpose  : 
+ */
+//============================================================================
+void SALOMEDSImpl_StudyBuilder::AbortCommand()
+{
+  _errorCode = "";
+  SALOMEDSImpl_Study::GetStudy(_doc->Main())->UndoPostponed(0);
+  
+  _doc->AbortCommand();
+}
+
+//============================================================================
+/*! Function : Undo
+ *  Purpose  : 
+ */
+//============================================================================
+void SALOMEDSImpl_StudyBuilder::Undo()
+{
+  _errorCode = "";
+  Handle(SALOMEDSImpl_AttributeStudyProperties) anAttr;
+  if (!_doc->Main().FindAttribute(SALOMEDSImpl_AttributeStudyProperties::GetID(), anAttr)) {
+    anAttr = new SALOMEDSImpl_AttributeStudyProperties;
+    _doc->Main().AddAttribute(anAttr);
+    }
+  if (anAttr->IsLocked()) {
+    _errorCode = "LockProtection";
+    throw LockProtection("LockProtection");
+  } else {
+    SALOMEDSImpl_Study::GetStudy(_doc->Main())->UndoPostponed(1);
+    _doc->Undo();
+    anAttr->SetModified(anAttr->GetModified()-1);
+  }
+
+  _doc->Modify();  
+}
+
+//============================================================================
+/*! Function : Redo
+ *  Purpose  : 
+ */
+//============================================================================
+void SALOMEDSImpl_StudyBuilder::Redo() 
+{
+  _errorCode = "";
+  Handle(SALOMEDSImpl_AttributeStudyProperties) anAttr;
+  if (!_doc->Main().FindAttribute(SALOMEDSImpl_AttributeStudyProperties::GetID(), anAttr)) {
+    anAttr = new SALOMEDSImpl_AttributeStudyProperties;
+    _doc->Main().AddAttribute(anAttr);
+  }
+  
+  if (anAttr->IsLocked()) {
+    _errorCode = "LockProtection";
+    throw LockProtection("LockProtection");
+  } else {
+    _doc->Redo();
+    SALOMEDSImpl_Study::GetStudy(_doc->Main())->UndoPostponed(-1);
+    anAttr->SetModified(anAttr->GetModified()+1);
+  }
+   
+  _doc->Modify();  
+}
+
+//============================================================================
+/*! Function : GetAvailableUndos
+ *  Purpose  : 
+ */
+//============================================================================
+bool SALOMEDSImpl_StudyBuilder::GetAvailableUndos()
+{
+  _errorCode = "";
+  return _doc->GetAvailableUndos();
+}
+
+//============================================================================
+/*! Function : GetAvailableRedos
+ *  Purpose  : 
+ */
+//============================================================================
+bool  SALOMEDSImpl_StudyBuilder::GetAvailableRedos()
+{
+  _errorCode = "";
+  return _doc->GetAvailableRedos();
+}
+
+//============================================================================
+/*! Function : UndoLimit
+ *  Purpose  : 
+ */
+//============================================================================
+int  SALOMEDSImpl_StudyBuilder::UndoLimit()
+{
+  _errorCode = "";
+  return _doc->GetUndoLimit();
+}
+
+//============================================================================
+/*! Function : UndoLimit
+ *  Purpose  : 
+ */
+//============================================================================
+void SALOMEDSImpl_StudyBuilder::UndoLimit(int n)
+{
+  _errorCode = "";
+  CheckLocked();
+  _doc->SetUndoLimit (n);
+}
+
+//============================================================================
+/*! Function : SetOnAddSObject
+ *  Purpose  : 
+ */
+//============================================================================
+Handle(SALOMEDSImpl_Callback) 
+SALOMEDSImpl_StudyBuilder::SetOnAddSObject(const Handle(SALOMEDSImpl_Callback)& theCallback)
+{
+  _errorCode = "";
+  Handle(SALOMEDSImpl_Callback) aRet = _callbackOnAdd;
+  _callbackOnAdd = theCallback;
+  return aRet;
+}
+
+//============================================================================
+/*! Function : SetOnNewSObject
+ *  Purpose  : 
+ */
+//============================================================================
+Handle(SALOMEDSImpl_Callback) 
+SALOMEDSImpl_StudyBuilder::SetOnRemoveSObject(const Handle(SALOMEDSImpl_Callback)& theCallback)
+{
+  _errorCode = "";
+  Handle(SALOMEDSImpl_Callback) aRet = _callbackOnRemove;
+  _callbackOnRemove = theCallback;
+  return aRet;
+}
+
+//============================================================================
+/*! Function : CheckLocked
+ *  Purpose  : 
+ */
+//============================================================================
+void SALOMEDSImpl_StudyBuilder::CheckLocked()
+{
+  _errorCode = "";
+  if (_doc->HasOpenCommand()) return;
+  Handle(SALOMEDSImpl_AttributeStudyProperties) anAttr;
+  if (!_doc->Main().FindAttribute(SALOMEDSImpl_AttributeStudyProperties::GetID(), anAttr)) {
+    anAttr = new SALOMEDSImpl_AttributeStudyProperties;
+    _doc->Main().AddAttribute(anAttr);
+    }
+  if (anAttr->IsLocked()) {
+    _errorCode = "LockProtection";
+    throw LockProtection("LockProtection");
+  }
+}
+
+//============================================================================
+/*! Function : SetName
+ *  Purpose  : 
+ */
+//============================================================================
+bool SALOMEDSImpl_StudyBuilder::SetName(const Handle(SALOMEDSImpl_SObject)& theSO, 
+                                       const TCollection_AsciiString& theValue)
+{
+  _errorCode = "";
+  CheckLocked();
+  if(theSO.IsNull()) {
+    _errorCode = "Invalid arguments";
+    return false;
+  }
+  SALOMEDSImpl_AttributeName::Set(theSO->GetLabel(), theValue);
+
+  _doc->Modify();  
+
+  return true;
+}
+
+//============================================================================
+/*! Function : SetComment
+ *  Purpose  : 
+ */
+//============================================================================
+bool SALOMEDSImpl_StudyBuilder::SetComment(const Handle(SALOMEDSImpl_SObject)& theSO, 
+                                          const TCollection_AsciiString& theValue)
+{
+  _errorCode = "";
+  CheckLocked();
+  if(theSO.IsNull()) {
+    _errorCode = "Invalid arguments";
+    return false;
+  }
+  SALOMEDSImpl_AttributeComment::Set(theSO->GetLabel(), theValue);
+
+  _doc->Modify();  
+
+  return true;
+}
+
+//============================================================================
+/*! Function : SetIOR
+ *  Purpose  : 
+ */
+//============================================================================
+bool SALOMEDSImpl_StudyBuilder::SetIOR(const Handle(SALOMEDSImpl_SObject)& theSO, 
+                                      const TCollection_AsciiString& theValue)
+{
+  _errorCode = "";
+  CheckLocked();
+  if(theSO.IsNull()) {
+    _errorCode = "Invalid arguments";
+    return false;
+  }
+  SALOMEDSImpl_AttributeIOR::Set(theSO->GetLabel(), theValue);
+
+  _doc->Modify();  
+
+  return true;
+}
+
+
+//============================================================================
+/*! Function : Translate_persistentID_to_IOR
+ *  Purpose  :
+ */
+//============================================================================
+static void Translate_persistentID_to_IOR(TDF_Label& Lab, SALOMEDSImpl_Driver* driver, bool isMultiFile, bool isASCII)
+{
+  if(driver == NULL) return;
+  TDF_ChildIterator  itchild (Lab);
+  
+  for (; itchild.More(); itchild.Next()) {
+    TDF_Label current = itchild.Value();
+    Handle(SALOMEDSImpl_AttributePersistentRef) Att;
+    if (current.FindAttribute(SALOMEDSImpl_AttributePersistentRef::GetID(),Att)) {  
+
+      Handle(SALOMEDSImpl_AttributeLocalID) anID;
+      if (current.FindAttribute(SALOMEDSImpl_AttributeLocalID::GetID(), anID)) 
+       if (anID->Value() == FILELOCALID) continue;        //SRN: This attribute store a file name, skip it 
+
+      TCollection_AsciiString persist_ref(Att->Value());
+      Handle(SALOMEDSImpl_SObject) so = SALOMEDSImpl_Study::SObject(current);
+      TCollection_AsciiString ior_string = driver->LocalPersistentIDToIOR(so, 
+                                                                         persist_ref, 
+                                                                         isMultiFile, 
+                                                                         isASCII);
+      SALOMEDSImpl_AttributeIOR::Set (current, ior_string); 
+     
+    }
+    Translate_persistentID_to_IOR (current, driver, isMultiFile, isASCII);
+  }
+}
+
diff --git a/src/SALOMEDSImpl/SALOMEDSImpl_StudyBuilder.hxx b/src/SALOMEDSImpl/SALOMEDSImpl_StudyBuilder.hxx
new file mode 100644 (file)
index 0000000..619ed7e
--- /dev/null
@@ -0,0 +1,106 @@
+//  File   : SALOMEDSImpl_StudyBuilder.hxx
+//  Author : Sergey RUIN
+//  Module : SALOME
+
+#ifndef __SALOMEDSImpl_STUDYBUILDER_H__
+#define __SALOMEDSImpl_STUDYBUILDER_H__
+
+//Handle definition
+#include <Handle_MMgt_TShared.hxx>
+#include <Standard_DefineHandle.hxx>
+DEFINE_STANDARD_HANDLE( SALOMEDSImpl_StudyBuilder, MMgt_TShared )
+
+// std C++ headers
+#include <iostream>
+
+// Cascade header
+#include <TCollection_AsciiString.hxx>
+#include <TDocStd_Document.hxx>
+#include "SALOMEDSImpl_Callback.hxx"
+#include "SALOMEDSImpl_Driver.hxx"
+
+class SALOMEDSImpl_StudyBuilder : public MMgt_TShared 
+{
+private:
+  Handle(TDocStd_Document)        _doc;
+  Handle(Standard_Transient)      _study;  
+  Handle(SALOMEDSImpl_Callback)   _callbackOnAdd;
+  Handle(SALOMEDSImpl_Callback)   _callbackOnRemove;
+  TCollection_AsciiString         _errorCode;
+
+public:
+    
+  Standard_EXPORT SALOMEDSImpl_StudyBuilder(const Handle(Standard_Transient)& theOwner);
+
+  Standard_EXPORT ~SALOMEDSImpl_StudyBuilder();
+
+  Standard_EXPORT virtual Handle(SALOMEDSImpl_SComponent) NewComponent(const TCollection_AsciiString& ComponentDataType);
+
+  Standard_EXPORT virtual bool DefineComponentInstance (const Handle(SALOMEDSImpl_SComponent)&, const TCollection_AsciiString& ComponentIOR);
+  
+  Standard_EXPORT virtual bool RemoveComponent(const Handle(SALOMEDSImpl_SComponent)& aComponent);
+
+  Standard_EXPORT virtual Handle(SALOMEDSImpl_SObject) NewObject(const Handle(SALOMEDSImpl_SObject)& theFatherObject);
+
+  Standard_EXPORT virtual Handle(SALOMEDSImpl_SObject) NewObjectToTag(const Handle(SALOMEDSImpl_SObject)& theFatherObject, 
+                                                      const int theTag);
+
+  //! The methods adds a new subdirectory, the path can be absolute or relative (then the current context is used)
+  Standard_EXPORT virtual bool AddDirectory(const TCollection_AsciiString& thePath);
+
+  Standard_EXPORT virtual bool LoadWith(const Handle(SALOMEDSImpl_SComponent)& sco, SALOMEDSImpl_Driver* Engine);
+  Standard_EXPORT virtual bool Load(const Handle(SALOMEDSImpl_SObject)& sco);
+
+  Standard_EXPORT virtual bool RemoveObject(const Handle(SALOMEDSImpl_SObject)& anObject);
+  Standard_EXPORT virtual bool RemoveObjectWithChildren(const Handle(SALOMEDSImpl_SObject)& anObject);
+
+  Standard_EXPORT virtual Handle(TDF_Attribute) FindOrCreateAttribute(const Handle(SALOMEDSImpl_SObject)& anObject, 
+                                                      const TCollection_AsciiString& aTypeOfAttribute);
+  Standard_EXPORT virtual bool FindAttribute(const Handle(SALOMEDSImpl_SObject)& anObject, 
+                             Handle(TDF_Attribute)& anAttribute, 
+                             const TCollection_AsciiString& aTypeOfAttribute);
+
+  Standard_EXPORT virtual bool RemoveAttribute(const Handle(SALOMEDSImpl_SObject)& anObject, const TCollection_AsciiString& aTypeOfAttribute);
+
+  Standard_EXPORT virtual bool Addreference(const Handle(SALOMEDSImpl_SObject)& me, 
+                            const Handle(SALOMEDSImpl_SObject)& thereferencedObject);
+
+  Standard_EXPORT virtual bool RemoveReference(const Handle(SALOMEDSImpl_SObject)& me);
+
+  Standard_EXPORT virtual bool SetGUID(const Handle(SALOMEDSImpl_SObject)& anObject, const TCollection_AsciiString& theGUID);
+  Standard_EXPORT virtual bool IsGUID(const Handle(SALOMEDSImpl_SObject)& anObject, const TCollection_AsciiString& theGUID);
+
+  Standard_EXPORT virtual void NewCommand();
+  Standard_EXPORT virtual void CommitCommand();
+  Standard_EXPORT virtual bool HasOpenCommand();
+  Standard_EXPORT virtual void AbortCommand();
+  Standard_EXPORT virtual void Undo();
+  Standard_EXPORT virtual void Redo();
+  Standard_EXPORT bool GetAvailableUndos();
+  Standard_EXPORT bool GetAvailableRedos();
+  Standard_EXPORT bool IsSaved();
+  Standard_EXPORT bool IsModified();
+  Standard_EXPORT virtual int UndoLimit();
+  Standard_EXPORT virtual void UndoLimit(const int);
+
+  Standard_EXPORT void CheckLocked();
+
+  Standard_EXPORT virtual Handle(SALOMEDSImpl_Callback) SetOnAddSObject(const Handle(SALOMEDSImpl_Callback)& theCallback);
+  Standard_EXPORT virtual Handle(SALOMEDSImpl_Callback) SetOnRemoveSObject(const Handle(SALOMEDSImpl_Callback)& theCallback);
+
+  Standard_EXPORT virtual bool SetName(const Handle(SALOMEDSImpl_SObject)& theSO, const TCollection_AsciiString& theValue);
+
+  Standard_EXPORT virtual bool SetComment(const Handle(SALOMEDSImpl_SObject)& theSO, const TCollection_AsciiString& theValue);
+
+  Standard_EXPORT virtual bool SetIOR(const Handle(SALOMEDSImpl_SObject)& theSO, const TCollection_AsciiString& theValue);
+
+  Standard_EXPORT virtual TCollection_AsciiString GetErrorCode() { return _errorCode; }
+  Standard_EXPORT virtual bool IsError() { return _errorCode != ""; }
+
+  Standard_EXPORT virtual Handle(Standard_Transient) GetOwner() { return _study; }
+
+public:
+  DEFINE_STANDARD_RTTI( SALOMEDSImpl_StudyBuilder )
+};
+#endif
diff --git a/src/SALOMEDSImpl/SALOMEDSImpl_StudyHandle.cxx b/src/SALOMEDSImpl/SALOMEDSImpl_StudyHandle.cxx
new file mode 100644 (file)
index 0000000..4952318
--- /dev/null
@@ -0,0 +1,95 @@
+//  File   : SALOMEDSImpl_StudyHandle.cxx
+//  Author : Sergey LITONIN
+//  Module : SALOME
+
+#include "SALOMEDSImpl_StudyHandle.hxx"
+#include <TDF_Attribute.hxx>
+#include <Standard_GUID.hxx>
+
+/*
+  Class       : SALOMEDSImpl_StudyHandle
+  Description : This class is intended for storing information about
+                graphic representation of objects in dirrent views
+*/
+
+IMPLEMENT_STANDARD_HANDLE( SALOMEDSImpl_StudyHandle, TDF_Attribute )
+IMPLEMENT_STANDARD_RTTIEXT( SALOMEDSImpl_StudyHandle, TDF_Attribute )
+
+//=======================================================================
+//function : GetID
+//purpose  : Get GUID of this attribute
+//=======================================================================
+const Standard_GUID& SALOMEDSImpl_StudyHandle::GetID()
+{
+  static Standard_GUID SALOMEDSImpl_StudyHandleID( "050C9555-4BA8-49bf-8F1C-086F0469A40B" );
+  return SALOMEDSImpl_StudyHandleID;
+}
+
+//=======================================================================
+//function : SALOMEDSImpl_StudyHandle
+//purpose  : Empty Constructor
+//=======================================================================
+SALOMEDSImpl_StudyHandle::SALOMEDSImpl_StudyHandle()
+{
+  myHandle.Nullify();
+}
+
+//=======================================================================
+//function : Set
+//purpose  : 
+//=======================================================================
+Handle(SALOMEDSImpl_StudyHandle) SALOMEDSImpl_StudyHandle::Set(const TDF_Label& theLabel, 
+                                                              const Handle(SALOMEDSImpl_Study)& theStudy)
+{
+  Handle(SALOMEDSImpl_StudyHandle) A;
+  if (!theLabel.FindAttribute(GetID(), A)) {
+    A = new  SALOMEDSImpl_StudyHandle(); 
+    theLabel.AddAttribute(A);
+  }
+
+  A->SetHandle(theStudy);
+  return A;  
+}
+
+
+//=======================================================================
+//function : ID
+//purpose  : Get GUID of this attribute
+//=======================================================================
+const Standard_GUID& SALOMEDSImpl_StudyHandle::ID () const
+{
+  return GetID();
+}
+
+
+//=======================================================================
+//function : NewEmpty
+//purpose  : Create new empty attribute
+//=======================================================================
+Handle(TDF_Attribute) SALOMEDSImpl_StudyHandle::NewEmpty () const
+{
+  return new SALOMEDSImpl_StudyHandle ();
+}
+
+
+//=======================================================================
+//function : Restore
+//purpose  : Restore value of attribute with value of theWith one
+//=======================================================================
+void SALOMEDSImpl_StudyHandle::Restore( const Handle(TDF_Attribute)& theWith )
+{
+  Handle(SALOMEDSImpl_StudyHandle) anAttr = Handle(SALOMEDSImpl_StudyHandle)::DownCast( theWith );
+  if ( !anAttr.IsNull() ) SetHandle( anAttr->GetHandle() );
+}
+
+//=======================================================================
+//function : Paste
+//purpose  : Paste value of current attribute to the value of entry one
+//=======================================================================
+void SALOMEDSImpl_StudyHandle::Paste( const Handle(TDF_Attribute)& theInto,
+                                       const Handle(TDF_RelocationTable)& ) const
+{
+  Handle(SALOMEDSImpl_StudyHandle) anAttr =  Handle(SALOMEDSImpl_StudyHandle)::DownCast( theInto );
+  if ( !anAttr.IsNull() ) anAttr->SetHandle( myHandle );
+}
+
diff --git a/src/SALOMEDSImpl/SALOMEDSImpl_StudyHandle.hxx b/src/SALOMEDSImpl/SALOMEDSImpl_StudyHandle.hxx
new file mode 100644 (file)
index 0000000..578d594
--- /dev/null
@@ -0,0 +1,54 @@
+//  File   : SALOMEDSImpl_StudyHandle.hxx
+//  Author : Sergey RUIN
+//  Module : SALOME
+
+#ifndef SALOMEDSImpl_StudyHandle_HeaderFile
+#define SALOMEDSImpl_StudyHandle_HeaderFile
+
+#include <Standard_DefineHandle.hxx>
+#include <TDF_Attribute.hxx>
+#include <TDF_Label.hxx>
+
+class Standard_GUID;
+class Handle(TDF_Attribute);
+class Handle(TDF_RelocationTable);
+
+/*
+  Class       : SALOMEDSImpl_StudyHandle
+  Description : PRIVATE: This class is intended for storing of the study handle 
+*/
+
+DEFINE_STANDARD_HANDLE( SALOMEDSImpl_StudyHandle, TDF_Attribute )
+
+#include "SALOMEDSImpl_Study.hxx"
+
+#ifndef WNT
+class Standard_EXPORT SALOMEDSImpl_StudyHandle : public TDF_Attribute
+#else
+class SALOMEDSImpl_StudyHandle : public TDF_Attribute
+#endif
+{
+
+public:
+Standard_EXPORT                                  SALOMEDSImpl_StudyHandle();
+Standard_EXPORT                                  ~SALOMEDSImpl_StudyHandle() { myHandle.Nullify(); }
+
+Standard_EXPORT  static Handle(SALOMEDSImpl_StudyHandle) Set(const TDF_Label& theLabel, const Handle(SALOMEDSImpl_Study)& theStudy); 
+Standard_EXPORT  static const                    Standard_GUID& GetID() ;
+
+Standard_EXPORT  void                            SetHandle(const Handle(SALOMEDSImpl_Study)& theStudy) { myHandle = theStudy; }
+Standard_EXPORT  Handle(SALOMEDSImpl_Study)      GetHandle() { return myHandle; }
+Standard_EXPORT  const Standard_GUID&            ID() const;
+Standard_EXPORT  void                            Restore( const Handle(TDF_Attribute)& theWith );
+Standard_EXPORT  Handle(TDF_Attribute)           NewEmpty() const;
+Standard_EXPORT  void                            Paste( const Handle(TDF_Attribute)& theInto,
+                                                                                   const Handle(TDF_RelocationTable)& ) const;
+  
+private:
+  Handle(SALOMEDSImpl_Study) myHandle;
+
+public:
+  DEFINE_STANDARD_RTTI( SALOMEDSImpl_StudyHandle )
+};
+
+#endif
diff --git a/src/SALOMEDSImpl/SALOMEDSImpl_StudyManager.cxx b/src/SALOMEDSImpl/SALOMEDSImpl_StudyManager.cxx
new file mode 100644 (file)
index 0000000..71adc5a
--- /dev/null
@@ -0,0 +1,1278 @@
+//  File   : SALOMEDSImpl_StudyManager.cxx
+//  Author : Sergey RUIN
+//  Module : SALOME
+
+#include "SALOMEDSImpl_StudyManager.hxx"
+
+using namespace std;
+
+#include <CDF_Session.hxx>
+#include <CDF_DirectoryIterator.hxx>
+#include <TDF_Label.hxx>
+#include <TDF_Tool.hxx>
+#include <TDF_Data.hxx>
+#include <TDF_RelocationTable.hxx>
+#include <TDF_ChildIterator.hxx>
+#include <TDF_AttributeIterator.hxx>
+#include <TColStd_HSequenceOfReal.hxx>
+#include <TColStd_HSequenceOfInteger.hxx>
+#include <TColStd_HArray1OfCharacter.hxx>
+#include <TColStd_HSequenceOfAsciiString.hxx>
+#include <TColStd_HSequenceOfExtendedString.hxx>
+#include <TCollection_ExtendedString.hxx>
+#include <OSD_Process.hxx>
+#include <Quantity_Date.hxx>
+#include "HDFexplorer.hxx"
+
+#include "SALOMEDSImpl_Attributes.hxx"
+#include "SALOMEDSImpl_Tool.hxx"
+#include "SALOMEDSImpl_SComponent.hxx"
+#include <map>
+
+#include "HDFOI.hxx"
+#include <iostream>
+#include <stdlib.h>
+
+IMPLEMENT_STANDARD_HANDLE( SALOMEDSImpl_StudyManager, MMgt_TShared )
+IMPLEMENT_STANDARD_RTTIEXT( SALOMEDSImpl_StudyManager, MMgt_TShared )
+
+#define USE_CASE_LABEL_ID                       "0:2"
+#define AUTO_SAVE_GUID                          "128268A3-71C9-4036-89B1-F81BD6A4FCF2"
+#define AUTO_SAVE_TAG                           "0:8"
+#define AUTO_SAVE_TIME_OUT_IN_SECONDS           1200
+
+static void SaveAttributes(Handle(SALOMEDSImpl_SObject) SO, HDFgroup *hdf_group_sobject);
+static void ReadAttributes(const Handle(SALOMEDSImpl_Study)&, const Handle(SALOMEDSImpl_SObject)&, HDFdataset* );
+static void BuildTree (const Handle(SALOMEDSImpl_Study)&, HDFgroup*);
+static void Translate_IOR_to_persistentID (const Handle(SALOMEDSImpl_SObject)&,
+                                          SALOMEDSImpl_Driver*, bool isMultiFile, bool isASCII);
+
+//============================================================================
+/*! Function : SALOMEDSImpl_StudyManager
+ *  Purpose  : SALOMEDSImpl_StudyManager constructor
+ */
+//============================================================================
+SALOMEDSImpl_StudyManager::SALOMEDSImpl_StudyManager()
+{
+  _errorCode = "";
+  _OCAFApp = new SALOMEDSImpl_OCAFApplication();
+  _IDcounter = 0;
+  _OCAFApp->NewDocument("SALOME_STUDY", _clipboard);
+}
+
+//============================================================================
+/*! Function : ~SALOMEDSImpl_StudyManager
+ *  Purpose  : SALOMEDSImpl_StudyManager destructor
+ */
+//============================================================================
+SALOMEDSImpl_StudyManager::~SALOMEDSImpl_StudyManager()
+{
+  // Destroy OCAF application
+  _OCAFApp.Nullify();
+}
+
+
+//============================================================================
+/*! Function : NewStudy
+ *  Purpose  : Create a New Study of name study_name
+ */
+//==================================================T==========================
+Handle(SALOMEDSImpl_Study) SALOMEDSImpl_StudyManager::NewStudy(const TCollection_AsciiString& study_name)
+{
+  _errorCode = "";
+
+  Handle(TDocStd_Document) Doc;
+  _OCAFApp->NewDocument("SALOME_STUDY",Doc);
+
+  Handle(SALOMEDSImpl_Study) Study = new SALOMEDSImpl_Study(Doc, study_name);
+
+  _IDcounter++;
+  Study->StudyId( _IDcounter );
+
+  // set Study properties
+  Handle(SALOMEDSImpl_AttributeStudyProperties) aProp = Study->GetProperties();
+  OSD_Process aProcess;
+  Quantity_Date aDate = aProcess.SystemDate();
+  aProp->SetModification(aProcess.UserName().ToCString(),
+                         aDate.Minute(), aDate.Hour(), aDate.Day(), aDate.Month(), aDate.Year());
+  aProp->SetCreationMode(1);  //"from scratch"
+
+  return Study;
+}
+
+//============================================================================
+/*! Function : Open
+ *  Purpose  : Open a Study from it's persistent reference
+ */
+//============================================================================
+Handle(SALOMEDSImpl_Study) SALOMEDSImpl_StudyManager::Open(const TCollection_AsciiString& aUrl)
+{
+  _errorCode = "";
+
+  // open the HDFFile
+  HDFfile *hdf_file =0;
+  HDFgroup *hdf_group_study_structure =0;
+
+  char* aC_HDFUrl;
+  TCollection_AsciiString aHDFUrl;
+  bool isASCII = false;
+  if (HDFascii::isASCII(aUrl.ToCString())) {
+    isASCII = true;
+    char* aResultPath = HDFascii::ConvertFromASCIIToHDF(aUrl.ToCString());
+    aC_HDFUrl = new char[strlen(aResultPath) + 19];
+    sprintf(aC_HDFUrl, "%shdf_from_ascii.hdf", aResultPath);
+    delete(aResultPath);
+    aHDFUrl = aC_HDFUrl;
+    delete aC_HDFUrl;
+  } else {
+    aHDFUrl = aUrl;
+  }
+
+  hdf_file = new HDFfile((char*)aHDFUrl.ToCString());
+  try {
+    hdf_file->OpenOnDisk(HDF_RDONLY);// mpv: was RDWR, but opened file can be write-protected too
+  }
+  catch (HDFexception)
+    {
+#ifndef WNT
+      char eStr[strlen(aUrl.ToCString())+17];
+#else
+         char *eStr;
+         eStr = new char[strlen(aUrl.ToCString())+17];
+#endif
+      sprintf(eStr,"Can't open file %s",aUrl.ToCString());
+#ifdef WNT
+         delete [] eStr;
+#endif
+      _errorCode = TCollection_AsciiString(eStr);
+      return NULL;
+    }
+
+  // Temporary aStudyUrl in place of study name
+  Handle(TDocStd_Document) Doc;
+  _OCAFApp->NewDocument("SALOME_STUDY",Doc);
+
+  Handle(SALOMEDSImpl_Study) Study = new SALOMEDSImpl_Study(Doc, aUrl);
+
+  _IDcounter++;
+  Study->StudyId( _IDcounter );
+
+  // Assign the value of the URL in the study object
+  Study->URL (aUrl);
+
+  SALOMEDSImpl_AttributePersistentRef::Set(Doc->Main(), aUrl);
+
+  if (!hdf_file->ExistInternalObject("STUDY_STRUCTURE")) {
+     _errorCode = "Study is empty";
+    return Study;
+  }
+
+  //Create  the Structure of the OCAF Document
+  hdf_group_study_structure = new HDFgroup("STUDY_STRUCTURE",hdf_file);
+
+  Handle(TDF_Data) DF = Doc->GetData();
+  try {
+    BuildTree (Study, hdf_group_study_structure);
+  }
+  catch (HDFexception)
+    {
+#ifndef WNT
+      char eStr[strlen(aUrl.ToCString())+17];
+#else
+         char *eStr = new char [strlen(aUrl.ToCString())+17];
+#endif
+      sprintf(eStr,"Can't open file %s", aUrl.ToCString());
+      _errorCode = TCollection_AsciiString(eStr);
+      return NULL;
+    }
+
+  hdf_file->CloseOnDisk();
+
+  if (isASCII) {
+    Handle(TColStd_HSequenceOfAsciiString) aFilesToRemove = new TColStd_HSequenceOfAsciiString;
+    aFilesToRemove->Append(aHDFUrl);
+    SALOMEDSImpl_Tool::RemoveTemporaryFiles(SALOMEDSImpl_Tool::GetDirFromPath(aHDFUrl), aFilesToRemove, true);
+  }
+
+  delete hdf_file; // all related hdf objects will be deleted
+
+  return Study;
+}
+
+
+
+//============================================================================
+/*! Function : Close
+ *  Purpose  : Close a study.
+ *             If the study hasn't been saved, ask the user to confirm the
+ *             close action without saving
+ */
+
+//============================================================================
+void  SALOMEDSImpl_StudyManager::Close(const Handle(SALOMEDSImpl_Study)& aStudy)
+{
+  _errorCode = "";
+
+  if(aStudy.IsNull()) {
+    _errorCode = "Study is null";
+    return;
+  }
+
+  aStudy->Close();
+}
+
+//============================================================================
+/*! Function : Save
+ *  Purpose  : Save a Study to it's persistent reference
+ */
+//============================================================================
+bool SALOMEDSImpl_StudyManager::Save(const Handle(SALOMEDSImpl_Study)& aStudy,
+                                    SALOMEDSImpl_DriverFactory* aFactory,
+                                    bool theMultiFile)
+{
+  _errorCode = "";
+
+  TCollection_AsciiString url = aStudy->URL();
+  if (url.IsEmpty()) {
+    _errorCode = "No path specified to save the study. Nothing done";
+    return false;
+  }
+  else {
+    return Impl_SaveAs(url,aStudy, aFactory, theMultiFile, false);
+  }
+
+  return false;
+}
+
+bool SALOMEDSImpl_StudyManager::SaveASCII(const Handle(SALOMEDSImpl_Study)& aStudy,
+                                         SALOMEDSImpl_DriverFactory* aFactory,
+                                         bool theMultiFile)
+{
+  _errorCode = "";
+
+  TCollection_AsciiString url = aStudy->URL();
+  if (url.IsEmpty()) {
+    _errorCode = "No path specified to save the study. Nothing done";
+    return false;
+  }
+  else {
+    return Impl_SaveAs(url,aStudy, aFactory, theMultiFile, true);
+  }
+
+  return false;
+}
+
+//=============================================================================
+/*! Function : SaveAs
+ *  Purpose  : Save a study to the persistent reference aUrl
+ */
+//============================================================================
+bool SALOMEDSImpl_StudyManager::SaveAs(const TCollection_AsciiString& aUrl,
+                                      const Handle(SALOMEDSImpl_Study)& aStudy,
+                                      SALOMEDSImpl_DriverFactory* aFactory,
+                                      bool theMultiFile)
+{
+  _errorCode = "";
+  return Impl_SaveAs(aUrl,aStudy, aFactory, theMultiFile, false);
+}
+
+bool SALOMEDSImpl_StudyManager::SaveAsASCII(const TCollection_AsciiString& aUrl,
+                                           const Handle(SALOMEDSImpl_Study)& aStudy,
+                                           SALOMEDSImpl_DriverFactory* aFactory,
+                                           bool theMultiFile)
+{
+  _errorCode = "";
+  return Impl_SaveAs(aUrl,aStudy, aFactory, theMultiFile, true);
+}
+
+//============================================================================
+/*! Function : GetOpenStudies
+ *  Purpose  : Get name list of open studies in the session
+ */
+//============================================================================
+Handle(TColStd_HSequenceOfTransient) SALOMEDSImpl_StudyManager::GetOpenStudies()
+{
+  _errorCode = "";
+  Handle(TColStd_HSequenceOfTransient) aList = new TColStd_HSequenceOfTransient;
+
+  int nbDocs = _OCAFApp->NbDocuments();
+
+  if(nbDocs == 0) {
+    _errorCode = "No active study in this session";
+    return aList;
+  }
+  else {
+    Handle(SALOMEDSImpl_Study) aStudy;
+    Handle(CDF_Session) S = CDF_Session::CurrentSession();
+    CDF_DirectoryIterator it (S->Directory());
+    for (;it.MoreDocument();it.NextDocument()) {
+      Handle(TDocStd_Document) D = Handle(TDocStd_Document)::DownCast(it.Document());
+      if(D == _clipboard) continue;
+      aStudy = SALOMEDSImpl_Study::GetStudy(D->Main());
+      if(aStudy.IsNull()) continue;
+      aList->Append(aStudy);
+    }
+  }
+
+  return aList;
+}
+
+//============================================================================
+/*! Function : GetStudyByName
+ *  Purpose  : Get a study from its name
+ */
+//============================================================================
+Handle(SALOMEDSImpl_Study) SALOMEDSImpl_StudyManager::GetStudyByName
+                                   (const TCollection_AsciiString& aStudyName)
+{
+  _errorCode = "";
+  int nbDocs = _OCAFApp->NbDocuments();
+
+  if (nbDocs == 0) {
+    _errorCode = "No active study in this session";
+    return NULL;
+  }
+  else {
+    Handle(SALOMEDSImpl_Study) aStudy;
+    Handle(CDF_Session) S = CDF_Session::CurrentSession();
+    CDF_DirectoryIterator it (S->Directory());
+    for (; it.MoreDocument(); it.NextDocument()) {
+      Handle(TDocStd_Document) D = Handle(TDocStd_Document)::DownCast(it.Document());
+      if (D == _clipboard) continue;
+      aStudy = SALOMEDSImpl_Study::GetStudy(D->Main());
+      if (aStudy.IsNull()) continue;
+      if (aStudy->Name() == aStudyName) return aStudy;
+    }
+  }
+
+  _errorCode = TCollection_AsciiString("Found no study with the name ") + aStudyName;
+  return NULL;
+}
+
+//============================================================================
+/*! Function : GetStudyByID
+ *  Purpose  : Get a study from its ID
+ */
+//============================================================================
+Handle(SALOMEDSImpl_Study) SALOMEDSImpl_StudyManager::GetStudyByID(int aStudyID)
+{
+  _errorCode = "";
+  int nbDocs = _OCAFApp->NbDocuments();
+
+  if (nbDocs == 0) {
+    _errorCode = "No active study in this session";
+    return NULL;
+  }
+  else {
+    Handle(SALOMEDSImpl_Study) aStudy;
+    Handle(CDF_Session) S = CDF_Session::CurrentSession();
+    CDF_DirectoryIterator it (S->Directory());
+    for (; it.MoreDocument(); it.NextDocument()) {
+      Handle(TDocStd_Document) D = Handle(TDocStd_Document)::DownCast(it.Document());
+      if (D == _clipboard) continue;
+      aStudy = SALOMEDSImpl_Study::GetStudy(D->Main());
+      if (aStudy.IsNull()) continue;
+      if (aStudy->StudyId() == aStudyID) return aStudy;
+    }
+  }
+
+  _errorCode = "Found no study with the given ID";
+  return NULL;
+}
+
+//=============================================================================
+/*! Function : _SaveProperties
+ *  Purpose  : save the study properties in HDF file
+ */
+//============================================================================
+bool SALOMEDSImpl_StudyManager::Impl_SaveProperties(const Handle(SALOMEDSImpl_Study)& aStudy,
+                                                    HDFgroup *hdf_group)
+{
+  _errorCode = "";
+
+  HDFdataset *hdf_dataset = 0;
+  hdf_size size[1];
+  hdf_int32 name_len;
+
+  // add modifications list (user and date of save)
+  Handle(SALOMEDSImpl_AttributeStudyProperties) aProp = aStudy->GetProperties();
+  Handle(SALOMEDSImpl_StudyBuilder) SB= aStudy->NewBuilder();
+  int aLocked = aProp->IsLocked();
+  if (aLocked) aProp->SetLocked(Standard_False);
+
+  OSD_Process aProcess;
+  Quantity_Date aDate = aProcess.SystemDate();
+  aProp->SetModification(aProcess.UserName().ToCString(),
+                         aDate.Minute(), aDate.Hour(), aDate.Day(), aDate.Month(), aDate.Year());
+
+  if (aLocked) aProp->SetLocked(Standard_True);
+
+  Handle(TColStd_HSequenceOfExtendedString) aNames;
+  Handle(TColStd_HSequenceOfInteger) aMinutes, aHours, aDays, aMonths, aYears;
+
+  aProp->GetModifications(aNames, aMinutes, aHours, aDays, aMonths, aYears);
+
+  int aLength = 0, anIndex, i;
+  for(i=1; i<=aNames->Length(); i++)
+    aLength += aNames->Value(i).Length() + 1;
+
+  //string length: 1 byte = locked flag, 1 byte = modified flag, (12 + name length + 1) for each name and date, "zero" byte
+  char* aProperty = new char[3 + aLength + 12 * aNames->Length()];
+
+
+  sprintf(aProperty,"%c%c", (char)aProp->GetCreationMode(),  (aProp->IsLocked())?'l':'u');
+
+  aLength = aNames->Length();
+  int a = 2;
+  for(anIndex = 1; anIndex  <= aLength; anIndex++) {
+    sprintf(&(aProperty[a]),"%2d%2d%2d%2d%4d%s",
+           (int)(aMinutes->Value(anIndex)),
+           (int)(aHours->Value(anIndex)),
+           (int)(aDays->Value(anIndex)),
+           (int)(aMonths->Value(anIndex)),
+           (int)(aYears->Value(anIndex)),
+           TCollection_AsciiString(aNames->Value(anIndex)).ToCString());
+    a = strlen(aProperty);
+    aProperty[a++] = 1;
+  }
+  aProperty[a] = 0;
+
+  name_len = (hdf_int32) a;
+  size[0] = name_len + 1 ;
+  hdf_dataset = new HDFdataset("AttributeStudyProperties",hdf_group,HDF_STRING,size,1);
+  hdf_dataset->CreateOnDisk();
+  hdf_dataset->WriteOnDisk(aProperty);
+  hdf_dataset->CloseOnDisk();
+  hdf_dataset=0; //will be deleted by hdf_sco_group destructor
+  delete [] aProperty;
+
+  aProp->SetModified(0);
+  return true;
+}
+
+//=============================================================================
+/*! Function : _SaveAs
+ *  Purpose  : save the study in HDF file
+ */
+//============================================================================
+bool SALOMEDSImpl_StudyManager::Impl_SaveAs(const TCollection_AsciiString& aUrl,
+                                           const Handle(SALOMEDSImpl_Study)& aStudy,
+                                           SALOMEDSImpl_DriverFactory* aFactory,
+                                           bool theMultiFile,
+                                           bool theASCII)
+{
+  // HDF File will be composed of differents part :
+  // * For each ComponentDataType, all data created by the component
+  //   Informations in data group hdf_group_datacomponent
+  // * Study Structure -> Exactly what is contained in OCAF document
+  //   Informations in data group hdf_group_study_structure
+
+  _errorCode = "";
+
+  HDFfile *hdf_file=0;
+  HDFgroup *hdf_group_study_structure =0;
+  HDFgroup *hdf_sco_group =0;
+  HDFgroup *hdf_sco_group2 =0;
+
+  HDFgroup *hdf_group_datacomponent =0;
+  HDFdataset *hdf_dataset =0;
+  hdf_size size[1];
+  hdf_int32 name_len = 0;
+  char *component_name = 0;
+
+  int aLocked = aStudy->GetProperties()->IsLocked();
+  if (aLocked) aStudy->GetProperties()->SetLocked(false);
+
+  Handle(SALOMEDSImpl_StudyBuilder) SB= aStudy->NewBuilder();
+  map<char*, SALOMEDSImpl_Driver*> aMapTypeDriver;
+
+  if(aStudy.IsNull()) {
+    _errorCode = "Study is null";
+    return false;
+  }
+
+  try
+    {
+      // mpv 15.12.2003: for saving components we have to load all data from all modules
+      SALOMEDSImpl_SComponentIterator itcomponent1 = aStudy->NewComponentIterator();
+      for (; itcomponent1.More(); itcomponent1.Next())
+       {
+         Handle(SALOMEDSImpl_SComponent) sco = itcomponent1.Value();
+
+         // if there is an associated Engine call its method for saving
+         TCollection_AsciiString IOREngine;
+         try {
+           if (!sco->ComponentIOR(IOREngine)) {
+             TCollection_AsciiString aCompType = sco->GetComment();
+             if (!aCompType.IsEmpty()) {
+
+               SALOMEDSImpl_Driver* aDriver = aFactory->GetDriverByType(aCompType);
+               aMapTypeDriver[aCompType.ToCString()] = aDriver;
+
+               if (aDriver != NULL) {
+                 if(!SB->LoadWith(sco, aDriver)) {
+                   _errorCode = SB->GetErrorCode();
+                   return false;
+                 }
+               }
+             }
+           }
+         } catch(...) {
+           _errorCode = "Can not restore information to resave it";
+           return false;
+         }
+       }
+
+      TCollection_AsciiString anOldName = aStudy->Name();
+      aStudy->URL(aUrl);
+
+      // To change for Save
+      // Do not have to do a new file but just a Open??? Rewrite all informations after erasing evrything??
+      hdf_file = new HDFfile(aUrl.ToCString());
+      hdf_file->CreateOnDisk();
+
+      //-----------------------------------------------------------------------
+      // 1 - Create a groupe for each SComponent and Update the PersistanceRef
+      //-----------------------------------------------------------------------
+      hdf_group_datacomponent = new HDFgroup("DATACOMPONENT",hdf_file);
+      hdf_group_datacomponent->CreateOnDisk();
+
+      SALOMEDSImpl_SComponentIterator itcomponent = aStudy->NewComponentIterator();
+
+      //SRN: Added 17 Nov, 2003
+      Handle(SALOMEDSImpl_SObject) anAutoSaveSO = aStudy->FindObjectID(AUTO_SAVE_TAG);
+      //SRN: End
+      for (; itcomponent.More(); itcomponent.Next())
+       {
+         Handle(SALOMEDSImpl_SComponent) sco = itcomponent.Value();
+
+         TCollection_AsciiString scoid = sco->GetID();
+         hdf_sco_group = new HDFgroup(scoid.ToCString(), hdf_group_datacomponent);
+         hdf_sco_group->CreateOnDisk();
+
+         TCollection_AsciiString componentDataType = sco->ComponentDataType();
+
+         //SRN: Added 17 Nov 2003: If there is a specified attribute, the component peforms a special save
+         if(!anAutoSaveSO.IsNull() && SB->IsGUID(sco, AUTO_SAVE_GUID)) {
+
+           Handle(SALOMEDSImpl_AttributeTableOfString) aTable;
+           if(anAutoSaveSO->GetLabel().FindAttribute(SALOMEDSImpl_AttributeTableOfString::GetID(), aTable)) {
+             Standard_Integer nbRows = aTable->GetNbRows(), k, aTimeOut = 0;
+              if(nbRows > 0 && aTable->GetNbColumns() > 1) {
+
+               Handle(TColStd_HSequenceOfExtendedString) aRow;
+               for(k=1; k<=nbRows; k++) {
+                 aRow = aTable->GetRowData(k);
+                 if (aRow->Value(1) ==  componentDataType) {
+                   TCollection_AsciiString anEntry = TCollection_AsciiString(aRow->Value(2));
+                   Handle(SALOMEDSImpl_SObject) aCompSpecificSO = aStudy->FindObjectID(anEntry);
+                   if(!aCompSpecificSO.IsNull()) {
+                     Handle(SALOMEDSImpl_AttributeInteger) anInteger;
+                     if(aCompSpecificSO->GetLabel().FindAttribute(SALOMEDSImpl_AttributeInteger::GetID(), anInteger)) {
+                       anInteger->SetValue(-1);
+                       while(anInteger->Value() < 0) {
+#ifndef WNT
+                               sleep(2);
+#else
+                               Sleep(2);
+#endif
+                               if(++aTimeOut > AUTO_SAVE_TIME_OUT_IN_SECONDS)
+                                       break;
+                       }
+                     }  // if(aCompSpecificSO->FindAttribute(anInteger, "AttributeInteger"))
+                   }  // if(!CORBA::is_nil(aCompSpecificSO))
+                 }  // if (strcmp(aRow[0], componentDataType) == 0)
+               }  // for
+
+             }  // if(nbRows > 0 && aTable->GetNbColumns() > 1)
+
+           }  // if(anAutoSaveSO->FindAttribute(aTable, "AttributeTableOfString")
+
+         }  // if(SB->IsGUID(AUTO_SAVE_GUID)
+
+         //SRN: End
+         TCollection_AsciiString IOREngine;
+         if (sco->ComponentIOR(IOREngine))
+           {
+             SALOMEDSImpl_Driver* Engine = NULL;
+             if(aMapTypeDriver.find(componentDataType.ToCString()) != aMapTypeDriver.end()) {
+               // we have found the associated engine to write the data
+               Engine = aMapTypeDriver[componentDataType.ToCString()];
+             }
+             else {
+               Engine = aFactory->GetDriverByIOR(IOREngine);
+             }
+
+             if (Engine != NULL)
+               {
+                 unsigned char* aStream;
+                 long length;
+
+                  if (theASCII) aStream = Engine->SaveASCII(sco,
+                                                           SALOMEDSImpl_Tool::GetDirFromPath(aUrl),
+                                                           length,
+                                                           theMultiFile);
+                 else aStream = Engine->Save(sco,
+                                             SALOMEDSImpl_Tool::GetDirFromPath(aUrl),
+                                             length,
+                                             theMultiFile);
+                 HDFdataset *hdf_dataset;
+                 hdf_size aHDFSize[1];
+                 if(length > 0) {  //The component saved some auxiliary files, then put them into HDF file
+
+                   aHDFSize[0] = length;
+
+                   HDFdataset *hdf_dataset = new HDFdataset("FILE_STREAM", hdf_sco_group, HDF_STRING, aHDFSize, 1);
+                   hdf_dataset->CreateOnDisk();
+                   hdf_dataset->WriteOnDisk(aStream);  //Save the stream in the HDF file
+                   hdf_dataset->CloseOnDisk();
+                 }
+
+                 // store multifile state
+                 aHDFSize[0] = 2;
+                 hdf_dataset = new HDFdataset("MULTIFILE_STATE", hdf_sco_group, HDF_STRING, aHDFSize, 1);
+                 hdf_dataset->CreateOnDisk();
+                 hdf_dataset->WriteOnDisk((void*)(theMultiFile?"M":"S")); // save: multi or single
+                 hdf_dataset->CloseOnDisk();
+                 hdf_dataset=0; //will be deleted by hdf_sco_AuxFiles destructor
+                 // store ASCII state
+                 aHDFSize[0] = 2;
+                 hdf_dataset = new HDFdataset("ASCII_STATE", hdf_sco_group, HDF_STRING, aHDFSize, 1);
+                 hdf_dataset->CreateOnDisk();
+                 hdf_dataset->WriteOnDisk((void*)(theASCII?"A":"B")); // save: ASCII or BINARY
+                 hdf_dataset->CloseOnDisk();
+                 hdf_dataset=0; //will be deleted by hdf_sco_AuxFiles destructor
+                 // Creation of the persistance reference  attribute
+                 Translate_IOR_to_persistentID (sco, Engine, theMultiFile, theASCII);
+
+                 if(aStream != NULL) delete [] aStream;
+               }
+           }
+         hdf_sco_group->CloseOnDisk();
+         hdf_sco_group=0; // will be deleted by hdf_group_datacomponent destructor
+       }
+      hdf_group_datacomponent->CloseOnDisk();
+      hdf_group_datacomponent =0;  // will be deleted by hdf_file destructor
+
+      //-----------------------------------------------------------------------
+      //3 - Write the Study Structure
+      //-----------------------------------------------------------------------
+      hdf_group_study_structure = new HDFgroup("STUDY_STRUCTURE",hdf_file);
+      hdf_group_study_structure->CreateOnDisk();
+      // save component attributes
+      SALOMEDSImpl_SComponentIterator itcomp = aStudy->NewComponentIterator();
+      for (; itcomp.More(); itcomp.Next())
+       {
+         Handle(SALOMEDSImpl_SComponent) SC = itcomp.Value();
+         TCollection_AsciiString scid = SC->GetID();
+         hdf_sco_group2 = new HDFgroup(scid.ToCString(), hdf_group_study_structure);
+         hdf_sco_group2->CreateOnDisk();
+          SaveAttributes(SC, hdf_sco_group2);
+         // ComponentDataType treatment
+         component_name = SC->ComponentDataType().ToCString();
+         name_len = (hdf_int32)strlen(component_name);
+         size[0] = name_len +1 ;
+         hdf_dataset = new HDFdataset("COMPONENTDATATYPE",hdf_sco_group2,HDF_STRING,size,1);
+         hdf_dataset->CreateOnDisk();
+         hdf_dataset->WriteOnDisk(component_name);
+         hdf_dataset->CloseOnDisk();
+         hdf_dataset=0; //will be deleted by hdf_sco_group destructor
+         Impl_SaveObject(SC, hdf_sco_group2);
+         hdf_sco_group2->CloseOnDisk();
+         hdf_sco_group2=0; // will be deleted by hdf_group_study_structure destructor
+       }
+
+      //-----------------------------------------------------------------------
+      //4 - Write the Study UseCases Structure
+      //-----------------------------------------------------------------------
+      Handle(SALOMEDSImpl_SObject) aSO = aStudy->FindObjectID(USE_CASE_LABEL_ID);
+      if (!aSO.IsNull()) {
+       HDFgroup *hdf_soo_group = new HDFgroup(USE_CASE_LABEL_ID,hdf_group_study_structure);
+       hdf_soo_group->CreateOnDisk();
+       SaveAttributes(aSO, hdf_soo_group);
+       Impl_SaveObject(aSO, hdf_soo_group);
+       hdf_soo_group->CloseOnDisk();
+       hdf_soo_group=0; // will be deleted by hdf_group_study_structure destructor
+      }
+
+      if (aLocked) aStudy->GetProperties()->SetLocked(true);
+      //-----------------------------------------------------------------------
+      //5 - Write the Study Properties
+      //-----------------------------------------------------------------------
+      name_len = (hdf_int32) aStudy->Name().Length();
+      size[0] = name_len +1 ;
+      hdf_dataset = new HDFdataset("STUDY_NAME",hdf_group_study_structure,HDF_STRING,size,1);
+      hdf_dataset->CreateOnDisk();
+      char* studid = aStudy->Name().ToCString();
+      hdf_dataset->WriteOnDisk(studid);
+      hdf_dataset->CloseOnDisk();
+      hdf_dataset=0; // will be deleted by hdf_group_study_structure destructor
+
+      Impl_SaveProperties(aStudy, hdf_group_study_structure);
+
+      hdf_group_study_structure->CloseOnDisk();
+      hdf_file->CloseOnDisk();
+
+      aStudy->IsSaved(true);
+      hdf_group_study_structure =0; // will be deleted by hdf_file destructor
+      delete hdf_file; // recursively deletes all hdf objects...
+    }
+  catch (HDFexception)
+    {
+      _errorCode = "HDFexception ! ";
+      return false;
+    }
+  if (theASCII) { // save file in ASCII format
+    HDFascii::ConvertFromHDFToASCII(aUrl.ToCString(), true);
+  }
+
+  return true;
+}
+
+//============================================================================
+/*! Function : Impl_SaveObject
+ *  Purpose  :
+ */
+//============================================================================
+bool SALOMEDSImpl_StudyManager::Impl_SaveObject(const Handle(SALOMEDSImpl_SObject)& SC,
+                                               HDFgroup *hdf_group_datatype)
+{
+  _errorCode = "";
+
+  // Write in group hdf_group_datatype all informations of SObject SC
+  // Iterative function to parse all SObjects under a SComponent
+
+  HDFgroup *hdf_group_sobject = 0;
+
+  TDF_ChildIterator itchild(SC->GetLabel());
+  for (; itchild.More(); itchild.Next())
+    {
+
+      // mpv: don't save empty labels
+      TDF_AttributeIterator AI1(itchild.Value());
+      if (!AI1.More()) {  //No attributes on the label
+       TDF_ChildIterator subchild(SC->GetLabel());
+       if (!subchild.More()) {
+         continue;
+       }
+       subchild.Initialize(SC->GetLabel(), true);
+       bool anEmpty = true;
+       for (; subchild.More() && anEmpty; subchild.Next()) {
+         TDF_AttributeIterator AI2(subchild.Value());
+         if (AI2.More()) anEmpty = false;  //There are attributes on the child label
+       }
+       if (anEmpty) continue;
+      }
+
+      Handle(SALOMEDSImpl_SObject) SO = SALOMEDSImpl_Study::SObject(itchild.Value());
+
+      char* scoid = (char*) SO->GetID().ToCString();
+      hdf_group_sobject = new HDFgroup(scoid, hdf_group_datatype);
+      hdf_group_sobject->CreateOnDisk();
+      SaveAttributes(SO, hdf_group_sobject);
+      Impl_SaveObject(SO, hdf_group_sobject);
+      hdf_group_sobject->CloseOnDisk();
+      hdf_group_sobject =0; // will be deleted by father hdf object destructor
+    }
+
+  return true;
+}
+
+//============================================================================
+/*! Function : Impl_SubstituteSlash
+ *  Purpose  :
+ */
+//============================================================================
+TCollection_AsciiString SALOMEDSImpl_StudyManager::Impl_SubstituteSlash(const TCollection_AsciiString& aUrl)
+{
+  _errorCode = "";
+
+  TCollection_ExtendedString theUrl(aUrl);
+  Standard_ExtCharacter val1 = ToExtCharacter('/');
+  Standard_ExtCharacter val2 = ToExtCharacter(':');
+  theUrl.ChangeAll(val1,val2);
+  return theUrl;
+}
+
+//============================================================================
+/*! Function : GetDocumentOfStudy
+ *  Purpose  :
+ */
+//============================================================================
+Handle(TDocStd_Document) SALOMEDSImpl_StudyManager::GetDocumentOfStudy(const Handle(SALOMEDSImpl_Study)& theStudy)
+{
+  _errorCode = "";
+  return theStudy->_doc;
+}
+
+//============================================================================
+/*! Function : CanCopy
+ *  Purpose  :
+ */
+//============================================================================
+bool SALOMEDSImpl_StudyManager::CanCopy(const Handle(SALOMEDSImpl_SObject)& theObject,
+                                       SALOMEDSImpl_Driver* theEngine)
+{
+  _errorCode = "";
+  Handle(SALOMEDSImpl_SComponent) aComponent = theObject->GetFatherComponent();
+  if (aComponent.IsNull()) return false;
+  if (aComponent->GetLabel() == theObject->GetLabel()) return false;
+  TCollection_AsciiString IOREngine;
+  if (!aComponent->ComponentIOR(IOREngine)) return false;
+  if (theEngine == NULL) return false;
+  return theEngine->CanCopy(theObject);
+}
+
+//============================================================================
+/*! Function : CopyLabel
+ *  Purpose  :
+ */
+//============================================================================
+bool SALOMEDSImpl_StudyManager::CopyLabel(const Handle(SALOMEDSImpl_Study)& theSourceStudy,
+                                         SALOMEDSImpl_Driver* theEngine,
+                                         const Standard_Integer theSourceStartDepth,
+                                         const TDF_Label& theSource,
+                                         const TDF_Label& theDestinationMain)
+{
+  _errorCode = "";
+
+  int a;
+  TDF_Label aTargetLabel = theDestinationMain;
+  TDF_Label aAuxTargetLabel = theDestinationMain.Father().FindChild(2);
+  for(a = theSource.Depth() - theSourceStartDepth; a > 0 ; a--) {
+    TDF_Label aSourceLabel = theSource;
+    for(int aNbFather = 1; aNbFather < a; aNbFather++) aSourceLabel = aSourceLabel.Father();
+    aTargetLabel = aTargetLabel.FindChild(aSourceLabel.Tag());
+    aAuxTargetLabel = aAuxTargetLabel.FindChild(aSourceLabel.Tag());
+  }
+  // iterate attributes
+  TDF_AttributeIterator anAttrIterator(theSource);
+  Handle(TDF_RelocationTable) aRT = new TDF_RelocationTable();
+  for(; anAttrIterator.More(); anAttrIterator.Next()) {
+    Handle(TDF_Attribute) anAttr = anAttrIterator.Value();
+    if (!Handle(SALOMEDSImpl_AttributeTreeNode)::DownCast(anAttr).IsNull()) continue; // never copy tree node attribute
+    if (!Handle(SALOMEDSImpl_AttributeTarget)::DownCast(anAttr).IsNull()) continue; // and target attribute
+
+    if (!Handle(SALOMEDSImpl_AttributeReference)::DownCast(anAttr).IsNull()) { // reference copied as Comment in aux tree
+      TDF_Label aReferenced = Handle(SALOMEDSImpl_AttributeReference)::DownCast(anAttr)->Get();
+      TCollection_AsciiString anEntry;
+      TDF_Tool::Entry(aReferenced, anEntry);
+      // store the value of name attribute of referenced label
+      Handle(SALOMEDSImpl_AttributeName) aNameAttribute;
+      if (aReferenced.FindAttribute(SALOMEDSImpl_AttributeName::GetID(), aNameAttribute)) {
+       anEntry += " ";
+       anEntry += aNameAttribute->Value();
+      }
+      SALOMEDSImpl_AttributeComment::Set(aAuxTargetLabel, TCollection_ExtendedString(anEntry));
+      continue;
+    }
+
+    if (!Handle(SALOMEDSImpl_AttributeIOR)::DownCast(anAttr).IsNull()) { // IOR => ID and TMPFile of Engine
+      TCollection_AsciiString anEntry;
+      TDF_Tool::Entry(theSource, anEntry);
+      Handle(SALOMEDSImpl_SObject) aSO = theSourceStudy->FindObjectID(anEntry.ToCString());
+      int anObjID;
+      long aLen;
+      unsigned char* aStream = theEngine->CopyFrom(aSO, anObjID, aLen);
+      TCollection_ExtendedString aResStr("");
+      for(a = 0; a < aLen; a++) {
+       aResStr += TCollection_ExtendedString(ToExtCharacter((Standard_Character)aStream[a]));
+      }
+      if(aStream != NULL) delete [] aStream;
+      SALOMEDSImpl_AttributeInteger::Set(aAuxTargetLabel, anObjID);
+      SALOMEDSImpl_AttributeName::Set(aAuxTargetLabel, aResStr);
+      continue;
+    }
+    Handle(TDF_Attribute) aNewAttribute = anAttr->NewEmpty();
+    aTargetLabel.AddAttribute(aNewAttribute);
+    anAttr->Paste(aNewAttribute, aRT);
+  }
+
+  return true;
+}
+
+//============================================================================
+/*! Function : Copy
+ *  Purpose  :
+ */
+//============================================================================
+bool SALOMEDSImpl_StudyManager::Copy(const Handle(SALOMEDSImpl_SObject)& theObject,
+                                    SALOMEDSImpl_Driver* theEngine)
+{
+  _errorCode = "";
+
+  // adoptation for alliances datamodel copy: without IOR attributes !!!
+  bool aStructureOnly; // copy only SObjects and attributes without component help
+  aStructureOnly = !theObject->GetLabel().IsAttribute(SALOMEDSImpl_AttributeIOR::GetID());
+
+  // get component-engine
+  Handle(SALOMEDSImpl_Study) aStudy = theObject->GetStudy();
+
+  // CAF document of current study usage
+  Handle(TDocStd_Document) aDocument = GetDocumentOfStudy(aStudy);
+  if (aDocument.IsNull()) {
+    _errorCode = "OCAF document is null";
+    return false;
+  }
+
+  //Clear the clipboard
+  _clipboard->Main().Root().ForgetAllAttributes(Standard_True);
+  _OCAFApp->Close(_clipboard);
+  Handle(TDocStd_Document) aDoc;
+  _OCAFApp->NewDocument("SALOME_STUDY", aDoc);
+  _clipboard = aDoc;
+
+  // set component data type to the name attribute of root label
+  if (!aStructureOnly) {
+    SALOMEDSImpl_AttributeComment::Set(_clipboard->Main().Root(),
+                                      TCollection_ExtendedString(theEngine->ComponentDataType()));
+  }
+  // set to the Root label integer attribute: study id
+  SALOMEDSImpl_AttributeInteger::Set(_clipboard->Main().Root(), aStudy->StudyId());
+  // iterate all theObject's label children
+  TDF_Label aStartLabel = theObject->GetLabel();
+  Standard_Integer aSourceStartDepth = aStartLabel.Depth();
+
+  // copy main source label
+  CopyLabel(aStudy, theEngine, aSourceStartDepth, aStartLabel, _clipboard->Main());
+
+  // copy all subchildren of the main source label (all levels)
+  TDF_ChildIterator anIterator(aStartLabel, Standard_True);
+  for(; anIterator.More(); anIterator.Next()) {
+    CopyLabel(aStudy, theEngine, aSourceStartDepth, anIterator.Value(), _clipboard->Main());
+  }
+
+  return true;
+}
+//============================================================================
+/*! Function : CanPaste
+ *  Purpose  :
+ */
+//============================================================================
+bool SALOMEDSImpl_StudyManager::CanPaste(const Handle(SALOMEDSImpl_SObject)& theObject,
+                                        SALOMEDSImpl_Driver* theEngine)
+{
+  _errorCode = "";
+
+  if (_clipboard.IsNull()) {
+    _errorCode = "Clipboard is null";
+    return false;
+  }
+
+  Handle(SALOMEDSImpl_AttributeComment) aCompName;
+  if (!_clipboard->Main().Root().FindAttribute(SALOMEDSImpl_AttributeComment::GetID(), aCompName)) {
+    _errorCode = "Clipboard has no component type";
+    return false;
+  }
+  Handle(SALOMEDSImpl_AttributeInteger) anObjID;
+  if (!_clipboard->Main().Father().FindChild(2).FindAttribute(SALOMEDSImpl_AttributeInteger::GetID(), anObjID)) {
+    _errorCode = "Clipboard has no object id";
+    return false;
+  }
+  Handle(SALOMEDSImpl_SComponent) aComponent = theObject->GetFatherComponent();
+  if (aComponent.IsNull()) {
+    _errorCode = "Object doesn't belong to component";
+    return false;
+  }
+
+  TCollection_AsciiString IOREngine;
+  if (!aComponent->ComponentIOR(IOREngine)) {
+    _errorCode = "component has no IOR";
+    return false;
+  }
+  return theEngine->CanPaste(aCompName->Value(), anObjID->Value());
+}
+
+//============================================================================
+/*! Function : PasteLabel
+ *  Purpose  :
+ */
+//============================================================================
+TDF_Label SALOMEDSImpl_StudyManager::PasteLabel(const Handle(SALOMEDSImpl_Study)& theDestinationStudy,
+                                               SALOMEDSImpl_Driver* theEngine,
+                                               const TDF_Label& theSource,
+                                               const TDF_Label& theDestinationStart,
+                                               const int theCopiedStudyID,
+                                               const bool isFirstElement)
+{
+  _errorCode = "";
+
+  // get corresponding source, target and auxiliary labels
+  TDF_Label aTargetLabel = theDestinationStart;
+
+  TDF_Label aAuxSourceLabel = theSource.Root().FindChild(2);
+  int a;
+  if (!isFirstElement) {
+    for(a = theSource.Depth() - 1; a > 0 ; a--) {
+      TDF_Label aSourceLabel = theSource;
+      for(int aNbFather = 1; aNbFather < a; aNbFather++) aSourceLabel = aSourceLabel.Father();
+      aTargetLabel = aTargetLabel.FindChild(aSourceLabel.Tag());
+      aAuxSourceLabel = aAuxSourceLabel.FindChild(aSourceLabel.Tag());
+    }
+  }
+
+  // check auxiliary label for TMPFile => IOR
+  Handle(SALOMEDSImpl_AttributeName) aNameAttribute;
+  if (aAuxSourceLabel.FindAttribute(SALOMEDSImpl_AttributeName::GetID(), aNameAttribute)) {
+    Handle(SALOMEDSImpl_AttributeInteger) anObjID;
+
+    aAuxSourceLabel.FindAttribute(SALOMEDSImpl_AttributeInteger::GetID(), anObjID);
+    Handle(SALOMEDSImpl_AttributeComment) aComponentName;
+    theSource.Root().FindAttribute(SALOMEDSImpl_AttributeComment::GetID(), aComponentName);
+    TCollection_AsciiString aCompName = aComponentName->Value();
+
+    if (theEngine->CanPaste(aCompName, anObjID->Value())) {
+      TCollection_ExtendedString aTMPStr = aNameAttribute->Value();
+      int aLen = aTMPStr.Length();
+      unsigned char* aStream = NULL;
+      if(aLen > 0) {
+       aStream = new unsigned char[aLen+10];
+       for(a = 0; a < aLen; a++) {
+         aStream[a] = ToCharacter(aTMPStr.Value(a+1));
+       }
+      }
+
+      TCollection_AsciiString anEntry;
+      TDF_Tool::Entry(aTargetLabel, anEntry);
+      Handle(SALOMEDSImpl_SObject) aPastedSO = theDestinationStudy->FindObjectID(anEntry);
+
+      if (isFirstElement) {
+       TCollection_AsciiString aDestEntry = theEngine->PasteInto(aStream,
+                                                                 aLen,
+                                                                 anObjID->Value(),
+                                                                 aPastedSO->GetFatherComponent());
+       TDF_Tool::Label(theDestinationStart.Data(), aDestEntry, aTargetLabel);
+      } else
+       theEngine->PasteInto(aStream, aLen, anObjID->Value(), aPastedSO);
+
+      if(aStream != NULL) delete []aStream;
+    }
+  }
+
+  // iterate attributes
+  TDF_AttributeIterator anAttrIterator(theSource);
+  Handle(TDF_RelocationTable) aRT = new TDF_RelocationTable();
+  for(; anAttrIterator.More(); anAttrIterator.Next()) {
+    Handle(TDF_Attribute) anAttr = anAttrIterator.Value();
+    if (aTargetLabel.FindAttribute(anAttr->ID(), anAttr)) {
+      aTargetLabel.ForgetAttribute(anAttr->ID());
+      anAttr = anAttrIterator.Value();
+    }
+    Handle(TDF_Attribute) aNewAttribute = anAttr->NewEmpty();
+    aTargetLabel.AddAttribute(aNewAttribute);
+    anAttr->Paste(aNewAttribute, aRT);
+  }
+
+  // check auxiliary label for Comment => reference or name attribute of the referenced object
+  Handle(SALOMEDSImpl_AttributeComment) aCommentAttribute;
+  if (aAuxSourceLabel.FindAttribute(SALOMEDSImpl_AttributeComment::GetID(), aCommentAttribute)) {
+    char * anEntry = new char[aCommentAttribute->Value().Length() + 1];
+    strcpy(anEntry, TCollection_AsciiString(aCommentAttribute->Value()).ToCString());
+    char* aNameStart = strchr(anEntry, ' ');
+    if (aNameStart) {
+      *aNameStart = '\0';
+      aNameStart++;
+    }
+    if (theCopiedStudyID == theDestinationStudy->StudyId()) { // if copy to the same study, reanimate reference
+      TDF_Label aRefLabel;
+      TDF_Tool::Label(aTargetLabel.Data(), anEntry, aRefLabel);
+      SALOMEDSImpl_AttributeReference::Set(aTargetLabel, aRefLabel);
+      // target attributes structure support
+      SALOMEDSImpl_AttributeTarget::Set(aRefLabel)->Add(SALOMEDSImpl_Study::SObject(aTargetLabel));
+    } else {
+      if (aNameStart) SALOMEDSImpl_AttributeName::Set(aTargetLabel, aNameStart);
+      else SALOMEDSImpl_AttributeName::Set(aTargetLabel, TCollection_ExtendedString("Reference to:")+anEntry);
+    }
+    delete [] anEntry;
+  }
+
+  return aTargetLabel;
+}
+
+//============================================================================
+/*! Function : Paste
+ *  Purpose  :
+ */
+//============================================================================
+Handle(SALOMEDSImpl_SObject) SALOMEDSImpl_StudyManager::Paste(const Handle(SALOMEDSImpl_SObject)& theObject,
+                                                             SALOMEDSImpl_Driver* theEngine)
+{
+  _errorCode = "";
+
+  Handle(SALOMEDSImpl_Study) aStudy = theObject->GetStudy();
+
+  // if study is locked, then paste can't be done
+  if (aStudy->GetProperties()->IsLocked()) {
+    _errorCode = "LockProtection";
+    throw LockProtection("LockProtection");
+  }
+
+  // if there is no component name, then paste only SObjects and attributes: without component help
+  Handle(SALOMEDSImpl_AttributeComment) aComponentName;
+  bool aStructureOnly = !_clipboard->Main().Root().FindAttribute(SALOMEDSImpl_AttributeComment::GetID(), aComponentName);
+
+  // get copied study ID
+  Handle(SALOMEDSImpl_AttributeInteger) aStudyIDAttribute;
+  if (!_clipboard->Main().Root().FindAttribute(SALOMEDSImpl_AttributeInteger::GetID(), aStudyIDAttribute)) {
+    _errorCode = "No study ID was found";
+    return NULL;
+  }
+  int aCStudyID = aStudyIDAttribute->Value();
+
+  // CAF document of current study usage
+  Handle(TDocStd_Document) aDocument = GetDocumentOfStudy(aStudy);
+  if (aDocument.IsNull()) {
+    _errorCode = "OCAF document is null";
+    return NULL;
+  }
+
+  Handle(SALOMEDSImpl_SComponent) aComponent = theObject->GetFatherComponent();
+
+  // fill root inserted SObject
+  TDF_Label aStartLabel;
+  if (aStructureOnly) {
+    TDF_Label anObjectLabel;
+    TDF_Tool::Label(aDocument->GetData(), theObject->GetID(), anObjectLabel);
+    aStartLabel = PasteLabel(aStudy, theEngine, _clipboard->Main(), anObjectLabel, aCStudyID, false);
+  } else {
+    TDF_Label aComponentLabel;
+    TDF_Tool::Label(aDocument->GetData(), aComponent->GetID(), aComponentLabel);
+    aStartLabel = PasteLabel(aStudy, theEngine, _clipboard->Main(), aComponentLabel, aCStudyID, true);
+  }
+
+  // paste all sublebels
+  TDF_ChildIterator anIterator(_clipboard->Main(), Standard_True);
+  for(; anIterator.More(); anIterator.Next()) {
+    PasteLabel(aStudy, theEngine, anIterator.Value(), aStartLabel, aCStudyID, false);
+  }
+
+  return SALOMEDSImpl_Study::SObject(aStartLabel);
+}
+
+//#######################################################################################################
+//#                                     STATIC PRIVATE FUNCTIONS
+//#######################################################################################################
+
+//============================================================================
+/*! Function : SaveAttributes
+ *  Purpose  : Save attributes for object
+ */
+//============================================================================
+static void SaveAttributes(Handle(SALOMEDSImpl_SObject) aSO, HDFgroup *hdf_group_sobject)
+{
+  hdf_size size[1];
+  TDF_AttributeIterator Itr(aSO->GetLabel());
+  Handle(TDF_Attribute) anAttr;
+  for(; Itr.More(); Itr.Next()) {
+    anAttr = Itr.Value();
+    //The following attributes are not supposed to be written to the file
+    if(anAttr->DynamicType() == STANDARD_TYPE(SALOMEDSImpl_AttributeIOR)) continue; //IOR attribute is not saved
+    Handle(SALOMEDSImpl_GenericAttribute) ga = Handle(SALOMEDSImpl_GenericAttribute)::DownCast(anAttr);
+    TCollection_AsciiString aSaveStr = ga->Save();
+    //cout << "Saving: " << aSO->GetID() << " "<< ga->Type() << " value: " << aSaveStr << endl;
+    size[0] = (hdf_int32) strlen(aSaveStr.ToCString()) + 1;
+    HDFdataset *hdf_dataset = new HDFdataset((char*)ga->Type().ToCString(), hdf_group_sobject,HDF_STRING,size,1);
+    hdf_dataset->CreateOnDisk();
+    hdf_dataset->WriteOnDisk((char*)aSaveStr.ToCString());
+    hdf_dataset->CloseOnDisk();
+    hdf_dataset=0; //will be deleted by hdf_sco_group destructor
+  }
+}
+
+//===========================================================================
+//Function : ReadAttributes
+//===========================================================================
+static void ReadAttributes(const Handle(SALOMEDSImpl_Study)& theStudy,
+                          const Handle(SALOMEDSImpl_SObject)& aSO,
+                          HDFdataset* hdf_dataset)
+{
+  hdf_dataset->OpenOnDisk();
+
+  Handle(TDF_Attribute) anAttr;
+
+  char* current_string = new char[hdf_dataset->GetSize()];
+  hdf_dataset->ReadFromDisk(current_string);
+
+  if (!strcmp(hdf_dataset->GetName(),"COMPONENTDATATYPE")) {
+    anAttr = theStudy->NewBuilder()->FindOrCreateAttribute(aSO, "AttributeComment");
+  } else if (!strcmp(hdf_dataset->GetName(),"AttributeReference")) {
+    theStudy->NewBuilder()->Addreference(aSO, theStudy->CreateObjectID(current_string));
+    delete(current_string);
+    hdf_dataset->CloseOnDisk();
+    return;
+  } else {
+    anAttr = theStudy->NewBuilder()->FindOrCreateAttribute(aSO, hdf_dataset->GetName());
+  }
+
+  if (!anAttr.IsNull()) {
+
+    Handle(SALOMEDSImpl_GenericAttribute) ga = Handle(SALOMEDSImpl_GenericAttribute)::DownCast(anAttr);
+    ga->Load(current_string);
+    //cout << "Reading: " << aSO->GetID() << " "<< ga->Type() << " value: " << current_string << endl;
+  }
+
+  delete(current_string);
+  hdf_dataset->CloseOnDisk();
+}
+
+//============================================================================
+//Function : BuildlTree
+//============================================================================
+static void BuildTree (const Handle(SALOMEDSImpl_Study)& theStudy, HDFgroup* hdf_current_group)
+{
+  hdf_current_group->OpenOnDisk();
+  Handle(SALOMEDSImpl_SObject) aSO;
+  char* Entry = hdf_current_group->GetName();
+  if (strcmp(Entry,"STUDY_STRUCTURE") == 0) {
+    aSO = theStudy->CreateObjectID("0:1");
+  }
+  else {
+    aSO = theStudy->CreateObjectID(Entry);
+  }
+
+  char name[HDF_NAME_MAX_LEN+1];
+  Standard_Integer nbsons = hdf_current_group->nInternalObjects();
+  for (Standard_Integer i=0; i<nbsons; i++) {
+    hdf_current_group->InternalObjectIndentify(i,name);
+    if (strncmp(name, "INTERNAL_COMPLEX",16) == 0) continue;
+    hdf_object_type type = hdf_current_group->InternalObjectType(name);
+
+    if  (type == HDF_DATASET) {
+      HDFdataset* new_dataset = new HDFdataset(name,hdf_current_group);
+      ReadAttributes(theStudy,aSO,new_dataset);
+      new_dataset = 0; // will be deleted by father destructor
+
+    }
+    else if (type == HDF_GROUP)   {
+      HDFgroup* new_group = new HDFgroup(name,hdf_current_group);
+      BuildTree (theStudy, new_group);
+      new_group = 0; // will be deleted by father destructor
+    }
+  }
+  hdf_current_group->CloseOnDisk();
+}
+
+
+//============================================================================
+//Function : Translate_IOR_to_persistentID
+//============================================================================
+static void Translate_IOR_to_persistentID (const Handle(SALOMEDSImpl_SObject)& so,
+                                          SALOMEDSImpl_Driver*                engine,
+                                          bool                                isMultiFile,
+                                          bool                                isASCII)
+{
+  TDF_ChildIterator itchild(so->GetLabel());
+  TCollection_AsciiString ior_string,  persistent_string, curid;
+
+  for (; itchild.More(); itchild.Next()) {
+    Handle(SALOMEDSImpl_SObject) current = SALOMEDSImpl_Study::SObject(itchild.Value());
+    Handle(SALOMEDSImpl_AttributeIOR) IOR;
+    if (current->GetLabel().FindAttribute(SALOMEDSImpl_AttributeIOR::GetID(), IOR)) {
+      ior_string = IOR->Value();
+
+      persistent_string = engine->IORToLocalPersistentID (current, ior_string, isMultiFile, isASCII);
+      SALOMEDSImpl_AttributePersistentRef::Set(current->GetLabel(), persistent_string);
+    }
+    Translate_IOR_to_persistentID (current, engine, isMultiFile, isASCII);
+  }
+}
diff --git a/src/SALOMEDSImpl/SALOMEDSImpl_StudyManager.hxx b/src/SALOMEDSImpl/SALOMEDSImpl_StudyManager.hxx
new file mode 100644 (file)
index 0000000..23fea19
--- /dev/null
@@ -0,0 +1,129 @@
+//  File   : SALOMEDSImpl_StudyManager.hxx
+//  Author : Sergey RUIN
+//  Module : SALOME
+
+#ifndef __SALOMEDSImpl_STUDYMANAGER_I_H__
+#define __SALOMEDSImpl_STUDYMANAGER_I_H__
+
+//Handle definition
+#include <Handle_MMgt_TShared.hxx>
+#include <Standard_DefineHandle.hxx>
+DEFINE_STANDARD_HANDLE( SALOMEDSImpl_StudyManager, MMgt_TShared )
+
+// std C++ headers
+#include <strstream>
+
+// Cascade headers
+#include "SALOMEDSImpl_OCAFApplication.hxx"
+#include "SALOMEDSImpl_Study.hxx"
+#include "SALOMEDSImpl_SObject.hxx"
+#include "SALOMEDSImpl_Driver.hxx"
+#include <TCollection_AsciiString.hxx>
+#include <TDF_Attribute.hxx>
+#include <TDF_Label.hxx>
+#include <TDocStd_Document.hxx>
+#include <TColStd_HSequenceOfTransient.hxx>
+
+class HDFgroup;
+
+class SALOMEDSImpl_StudyManager : public MMgt_TShared 
+{
+
+private:
+
+  Handle (SALOMEDSImpl_OCAFApplication) _OCAFApp;  
+  int _IDcounter;
+  Handle(TDocStd_Document) _clipboard;
+  TCollection_AsciiString  _errorCode;
+
+public:
+
+  //! standard constructor
+  Standard_EXPORT SALOMEDSImpl_StudyManager();
+
+  //! standard destructor
+  Standard_EXPORT virtual  ~SALOMEDSImpl_StudyManager(); 
+
+  //! method to Create a New Study of name study_name
+  Standard_EXPORT virtual Handle(SALOMEDSImpl_Study) NewStudy(const TCollection_AsciiString& study_name);
+
+  //! method to Open a Study from it's persistent reference
+  Standard_EXPORT virtual Handle(SALOMEDSImpl_Study) Open(const TCollection_AsciiString& aStudyUrl);
+
+  //! method to close a Study 
+  Standard_EXPORT virtual void Close(const Handle(SALOMEDSImpl_Study)& aStudy);
+
+  //! method to save a Study 
+  Standard_EXPORT virtual bool Save(const Handle(SALOMEDSImpl_Study)& aStudy, SALOMEDSImpl_DriverFactory* aFactory, bool theMultiFile);
+
+  Standard_EXPORT virtual bool SaveASCII(const Handle(SALOMEDSImpl_Study)& aStudy, 
+                        SALOMEDSImpl_DriverFactory* aFactory, 
+                        bool theMultiFile);
+
+  //! method to save a Study to the persistent reference aUrl
+  Standard_EXPORT virtual bool SaveAs(const TCollection_AsciiString& aUrl,  
+                     const Handle(SALOMEDSImpl_Study)& aStudy, 
+                     SALOMEDSImpl_DriverFactory* aFactory,
+                     bool theMultiFile);
+
+  Standard_EXPORT virtual bool SaveAsASCII(const TCollection_AsciiString& aUrl, 
+                          const Handle(SALOMEDSImpl_Study)& aStudy, 
+                          SALOMEDSImpl_DriverFactory* aFactory,
+                          bool theMultiFile);
+
+  //! method to Get name list of open studies in the session
+  Standard_EXPORT virtual Handle(TColStd_HSequenceOfTransient) GetOpenStudies();
+
+  //! method to get a Study from it's name
+  Standard_EXPORT virtual Handle(SALOMEDSImpl_Study) GetStudyByName(const TCollection_AsciiString& aStudyName) ;
+
+  //! method to get a Study from it's ID
+  Standard_EXPORT virtual Handle(SALOMEDSImpl_Study) GetStudyByID(int aStudyID) ;
+
+
+  Standard_EXPORT Handle(TDocStd_Document) GetDocumentOfStudy(const Handle(SALOMEDSImpl_Study)& theStudy);
+
+  Standard_EXPORT Handle(TDocStd_Document) GetClipboard() { return _clipboard; }
+  
+  Standard_EXPORT bool CopyLabel(const Handle(SALOMEDSImpl_Study)& theSourceStudy, 
+                SALOMEDSImpl_Driver* theEngine,
+                const int theSourceStartDepth,
+                const TDF_Label& theSource,
+                const TDF_Label& theDestinationMain);
+
+  Standard_EXPORT TDF_Label PasteLabel(const Handle(SALOMEDSImpl_Study)& theDestinationStudy,
+                      SALOMEDSImpl_Driver* theEngine,
+                      const TDF_Label& theSource,
+                      const TDF_Label& theDestinationStart,
+                      const int theCopiedStudyID,
+                      const bool isFirstElement);
+  
+  Standard_EXPORT virtual bool CanCopy(const Handle(SALOMEDSImpl_SObject)& theObject, SALOMEDSImpl_Driver* Engine);
+  Standard_EXPORT virtual bool Copy(const Handle(SALOMEDSImpl_SObject)& theObject, SALOMEDSImpl_Driver* Engine);
+  Standard_EXPORT virtual bool CanPaste(const Handle(SALOMEDSImpl_SObject)& theObject, SALOMEDSImpl_Driver* Engine);
+  Standard_EXPORT virtual Handle(SALOMEDSImpl_SObject) Paste(const Handle(SALOMEDSImpl_SObject)& theObject, SALOMEDSImpl_Driver* Engine);
+
+  // _SaveAs private function called by Save and SaveAs
+  Standard_EXPORT virtual bool Impl_SaveAs(const TCollection_AsciiString& aUrl,
+                          const Handle(SALOMEDSImpl_Study)& aStudy,
+                          SALOMEDSImpl_DriverFactory* aFactory,
+                          bool theMultiFile,
+                          bool theASCII);
+
+  // _SaveObject private function called by _SaveAs
+  Standard_EXPORT virtual bool Impl_SaveObject(const Handle(SALOMEDSImpl_SObject)& SC, HDFgroup *hdf_group_datatype);
+
+  // _SubstituteSlash function called by Open and GetStudyByName
+  Standard_EXPORT virtual TCollection_AsciiString Impl_SubstituteSlash(const TCollection_AsciiString& aUrl);
+
+  Standard_EXPORT virtual bool Impl_SaveProperties(const Handle(SALOMEDSImpl_Study)& aStudy, HDFgroup *hdf_group);
+
+  Standard_EXPORT TCollection_AsciiString GetErrorCode() { return _errorCode; }
+  Standard_EXPORT virtual bool IsError() { return _errorCode != ""; }
+
+public:
+  DEFINE_STANDARD_RTTI( SALOMEDSImpl_StudyManager )
+  
+};
+
+#endif 
diff --git a/src/SALOMEDSImpl/SALOMEDSImpl_Tool.cxx b/src/SALOMEDSImpl/SALOMEDSImpl_Tool.cxx
new file mode 100644 (file)
index 0000000..1751be6
--- /dev/null
@@ -0,0 +1,155 @@
+//  File      : SALOMEDSImpl_Tool.cxx
+//  Created   : Mon Oct 21 16:24:34 2002
+//  Author    : Sergey RUIN
+
+//  Project   : SALOME
+//  Module    : SALOMEDSImpl
+//  Copyright : Open CASCADE
+
+#include "SALOMEDSImpl_Tool.hxx"
+
+#include <stdio.h>
+#include <iostream> 
+#include <fstream>
+#include <OSD_Path.hxx>
+#include <OSD_File.hxx>
+#include <OSD_Directory.hxx>
+#include <OSD_Process.hxx>
+#include <OSD_Directory.hxx>
+#include <OSD_Protection.hxx>
+#include <OSD_SingleProtection.hxx>
+#include <OSD_FileIterator.hxx>
+
+#ifndef WNT
+#include <sys/time.h>
+#else
+#include <time.h>
+#endif
+#include <stdlib.h>
+
+using namespace std;
+
+
+//============================================================================
+// function : GetTempDir
+// purpose  : Return a temp directory to store created files like "/tmp/sub_dir/" 
+//============================================================================ 
+TCollection_AsciiString SALOMEDSImpl_Tool::GetTmpDir()
+{
+  //Find a temporary directory to store a file
+
+  TCollection_AsciiString aTmpDir;
+
+  char *Tmp_dir = getenv("SALOME_TMP_DIR");
+  if(Tmp_dir != NULL) {
+    aTmpDir = TCollection_AsciiString(Tmp_dir);
+#ifdef WIN32
+    if(aTmpDir.Value(aTmpDir.Length()) != '\\') aTmpDir+='\\';
+#else
+    if(aTmpDir.Value(aTmpDir.Length()) != '/') aTmpDir+='/';
+#endif      
+  }
+  else {
+#ifdef WIN32
+    aTmpDir = TCollection_AsciiString("C:\\");
+#else
+    aTmpDir = TCollection_AsciiString("/tmp/");
+#endif
+  }
+
+  srand((unsigned int)time(NULL));
+  int aRND = 999 + (int)(100000.0*rand()/(RAND_MAX+1.0)); //Get a random number to present a name of a sub directory
+  TCollection_AsciiString aSubDir(aRND);
+  if(aSubDir.Length() <= 1) aSubDir = TCollection_AsciiString("123409876");
+
+  aTmpDir += aSubDir; //Get RND sub directory
+
+#ifdef WIN32
+  if(aTmpDir.Value(aTmpDir.Length()) != '\\') aTmpDir+='\\';
+#else
+  if(aTmpDir.Value(aTmpDir.Length()) != '/') aTmpDir+='/';
+#endif
+
+  OSD_Path aPath(aTmpDir);
+  OSD_Directory aDir(aPath);
+
+  for(aRND = 0; aDir.Exists(); aRND++) {
+    aTmpDir.Insert((aTmpDir.Length() - 1), TCollection_AsciiString(aRND));  //Build a unique directory name
+    aPath = OSD_Path(aTmpDir);
+    aDir = OSD_Directory(aPath);
+  }
+
+  OSD_Protection aProtection(OSD_RW, OSD_RWX, OSD_RX, OSD_RX);
+  aDir.Build(aProtection);
+
+  return aTmpDir;
+}
+
+//============================================================================
+// function : RemoveTemporaryFiles
+// purpose  : Removes files listed in theFileList
+//============================================================================
+void SALOMEDSImpl_Tool::RemoveTemporaryFiles(const TCollection_AsciiString& theDirectory, 
+                                            const Handle(TColStd_HSequenceOfAsciiString)& theFiles,
+                                            const bool IsDirDeleted)
+{
+  TCollection_AsciiString aDirName = theDirectory;
+
+  int i, aLength = theFiles->Length();
+  for(i=1; i<=aLength; i++) {
+    TCollection_AsciiString aFile(aDirName);
+    aFile += theFiles->Value(i);
+    OSD_Path anOSDPath(aFile);
+    OSD_File anOSDFile(anOSDPath);
+    if(!anOSDFile.Exists()) continue;
+
+    OSD_Protection aProtection = anOSDFile.Protection();
+    aProtection.SetUser(OSD_RW);
+    anOSDFile.SetProtection(aProtection);
+
+    anOSDFile.Remove();
+  }
+
+  if(IsDirDeleted) {
+    OSD_Path aPath(aDirName);
+    OSD_Directory aDir(aPath);
+    OSD_FileIterator anIterator(aPath, '*');
+
+    if(aDir.Exists() && !anIterator.More()) aDir.Remove();
+  }
+
+}
+
+//============================================================================
+// function : GetNameFromPath
+// purpose  : Returns the name by the path
+//============================================================================
+TCollection_AsciiString SALOMEDSImpl_Tool::GetNameFromPath(const TCollection_AsciiString& thePath) {
+  if (thePath.IsEmpty()) return "";
+  OSD_Path aPath = OSD_Path(thePath);
+  TCollection_AsciiString aNameString(aPath.Name());
+  return aNameString;
+}
+
+//============================================================================
+// function : GetDirFromPath
+// purpose  : Returns the dir by the path
+//============================================================================
+TCollection_AsciiString SALOMEDSImpl_Tool::GetDirFromPath(const TCollection_AsciiString& thePath) {
+  if (thePath.IsEmpty()) return "";
+  OSD_Path aPath = OSD_Path(thePath);
+  TCollection_AsciiString aDirString(aPath.Trek());
+  aDirString.ChangeAll('|','/');
+  return aDirString;
+}
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/SALOMEDSImpl/SALOMEDSImpl_Tool.hxx b/src/SALOMEDSImpl/SALOMEDSImpl_Tool.hxx
new file mode 100644 (file)
index 0000000..f842370
--- /dev/null
@@ -0,0 +1,62 @@
+//  File      : SALOMEDSImpl_Tool.hxx
+//  Created   : Mon Oct 21 16:24:50 2002
+//  Author    : Sergey RUIN
+
+//  Project   : SALOME
+//  Module    : SALOMEDSImpl
+//  Copyright : Open CASCADE
+
+
+#ifndef __SALOMEDSIMPL_TOOL_H__
+#define __SALOMEDSIMPL_TOOL_H__
+
+#include <TCollection_AsciiString.hxx>
+#include <TDF_Label.hxx>
+#include <TColStd_HSequenceOfAsciiString.hxx>
+
+class SALOMEDSImpl_Tool                                
+{
+
+public:
+  // Returns the unique temporary directory, that is defined in SALOME_TMP_DIR if this variable is set
+  // otherwise return /tmp/something/ for Unix or c:\something\ for WNT
+  static TCollection_AsciiString GetTmpDir();
+
+  // Removes files which are in <theDirectory>, the files for deletion are listed in <theFiles>
+  // if <IsDirDeleted> is true <theDirectory> is also deleted if it is empty
+  static void RemoveTemporaryFiles(const TCollection_AsciiString& theDirectory,
+                                  const Handle(TColStd_HSequenceOfAsciiString)& theFiles,
+                                  const bool IsDirDeleted);
+
+  // Returns the name by the path
+  // for an example: if thePath = "/tmp/aaa/doc1.hdf" the function returns "doc1"
+  static TCollection_AsciiString GetNameFromPath(const TCollection_AsciiString& thePath);
+
+  // Returns the directory by the path
+  // for an example: if thePath = "/tmp/aaa/doc1.hdf" the function returns "/tmp/aaa"
+  static TCollection_AsciiString GetDirFromPath(const TCollection_AsciiString& thePath);
+
+};
+#endif
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/SALOMEDSImpl/SALOMEDSImpl_UseCaseBuilder.cxx b/src/SALOMEDSImpl/SALOMEDSImpl_UseCaseBuilder.cxx
new file mode 100644 (file)
index 0000000..3670067
--- /dev/null
@@ -0,0 +1,391 @@
+//  File   : SALOMEDSImpl_UseCaseBuilder.cxx
+//  Author : Sergey RUIN
+//  Module : SALOME
+
+
+#include "SALOMEDSImpl_UseCaseBuilder.hxx"
+#include "SALOMEDSImpl_SObject.hxx"
+#include "SALOMEDSImpl_SComponent.hxx"
+#include "SALOMEDSImpl_Study.hxx"
+#include "SALOMEDSImpl_Attributes.hxx"
+
+#include <TDF_Label.hxx>
+#include <TDF_Tool.hxx>
+#include <TDF_Data.hxx>
+#include <TDF_AttributeList.hxx>
+#include <TDF_ListIteratorOfAttributeList.hxx>
+#include <TCollection_AsciiString.hxx>
+#include <TDF_ChildIterator.hxx>
+
+using namespace std;
+
+IMPLEMENT_STANDARD_HANDLE( SALOMEDSImpl_UseCaseBuilder, MMgt_TShared )
+IMPLEMENT_STANDARD_RTTIEXT( SALOMEDSImpl_UseCaseBuilder, MMgt_TShared )
+
+
+#define USE_CASE_LABEL_TAG           2
+#define USE_CASE_GUID                "AA43BB12-D9CD-11d6-945D-0050DA506788"
+
+
+//============================================================================
+/*! Function : constructor
+ *  Purpose  :
+ */
+//============================================================================
+SALOMEDSImpl_UseCaseBuilder::SALOMEDSImpl_UseCaseBuilder(const Handle(TDocStd_Document)& theDocument)
+:_doc(theDocument)
+{
+  if(_doc.IsNull()) return;
+  
+  TDF_Label aLabel = _doc->Main().Root().FindChild(USE_CASE_LABEL_TAG); //Iterate all use cases
+  if(!aLabel.FindAttribute(Standard_GUID(USE_CASE_GUID), _root)) {
+    _root = SALOMEDSImpl_AttributeTreeNode::Set(aLabel, Standard_GUID(USE_CASE_GUID));
+  }
+  Handle(SALOMEDSImpl_AttributeReference) aRef;
+  if(!_root->FindAttribute(SALOMEDSImpl_AttributeReference::GetID(), aRef)) {
+    aRef = SALOMEDSImpl_AttributeReference::Set(_root->Label(), _root->Label());  
+  }  
+
+  Handle(SALOMEDSImpl_AttributeName) aNameAttr;
+  if(!aLabel.FindAttribute(SALOMEDSImpl_AttributeName::GetID(), aNameAttr)) { 
+    aNameAttr = SALOMEDSImpl_AttributeName::Set(aLabel, "Use cases"); 
+  }  
+}
+
+//============================================================================
+/*! Function : destructor
+ *  Purpose  :
+ */
+//============================================================================
+SALOMEDSImpl_UseCaseBuilder::~SALOMEDSImpl_UseCaseBuilder()
+{
+}
+
+
+//============================================================================
+/*! Function : Append
+ *  Purpose  : 
+ */
+//============================================================================
+bool SALOMEDSImpl_UseCaseBuilder::Append(const Handle(SALOMEDSImpl_SObject)& theObject)
+{
+  if(_root.IsNull() || theObject.IsNull()) return false;
+
+  TDF_Label aLabel = theObject->GetLabel();
+  if(aLabel.IsNull()) return false;
+
+  Handle(SALOMEDSImpl_AttributeTreeNode) aNode, aCurrentNode;
+  aNode = SALOMEDSImpl_AttributeTreeNode::Set(aLabel, _root->ID());
+  aNode->Remove();
+
+  Handle(SALOMEDSImpl_AttributeReference) aRef;
+  if(!_root->FindAttribute(SALOMEDSImpl_AttributeReference::GetID(), aRef)) {
+    aRef = SALOMEDSImpl_AttributeReference::Set(_root->Label(), _root->Label());  
+  }  
+
+  TDF_Label aCurrent = aRef->Get();
+  if(aCurrent.IsNull() || !aCurrent.FindAttribute(_root->ID(), aCurrentNode)) 
+    aCurrentNode = _root;
+
+  aCurrentNode->Append(aNode);
+
+  return true;
+}
+
+ //============================================================================
+/*! Function : Remove
+ *  Purpose  :
+ */
+//============================================================================
+bool SALOMEDSImpl_UseCaseBuilder::Remove(const Handle(SALOMEDSImpl_SObject)& theObject)
+{
+  if(_root.IsNull() || theObject.IsNull()) return false;
+
+  TDF_Label aLabel = theObject->GetLabel();   
+  if(aLabel.IsNull()) return false;
+
+  Handle(SALOMEDSImpl_AttributeTreeNode) aNode;
+  if(!aLabel.FindAttribute(_root->ID(), aNode)) return false;
+
+  aNode->Remove();
+
+  TDF_AttributeList aList;
+  aList.Append(aNode);
+
+  Handle(SALOMEDSImpl_AttributeReference) aRef;
+  if(!_root->FindAttribute(SALOMEDSImpl_AttributeReference::GetID(), aRef)) {
+    aRef = SALOMEDSImpl_AttributeReference::Set(_root->Label(), _root->Label());  
+  }  
+  TDF_Label aCurrent = aRef->Get();
+
+  SALOMEDSImpl_ChildNodeIterator aChildItr(aNode, Standard_True);
+  for(; aChildItr.More(); aChildItr.Next()) 
+    aList.Append(aChildItr.Value());
+
+  TDF_ListIteratorOfAttributeList anIterator(aList);
+  for(; anIterator.More(); anIterator.Next()) {
+    if(anIterator.Value()->Label() ==  aCurrent) { //The current node is removed
+      aRef->Set(_root->Label()); //Reset the current node to the root
+    }
+    anIterator.Value()->Label().ForgetAttribute(_root->ID());
+  }
+
+  return true;
+}
+
+
+//============================================================================
+/*! Function : AppendTo
+ *  Purpose  :
+ */
+//============================================================================
+bool SALOMEDSImpl_UseCaseBuilder::AppendTo(const Handle(SALOMEDSImpl_SObject)& theFather, 
+                                          const Handle(SALOMEDSImpl_SObject)& theObject)
+{
+  if(_root.IsNull() || theFather.IsNull() || theObject.IsNull()) return false;
+
+  TDF_Label aFatherLabel = theFather->GetLabel(), aLabel = theObject->GetLabel();
+  Handle(SALOMEDSImpl_AttributeTreeNode) aFather, aNode;
+  
+  if(aFatherLabel.IsNull()) return false;
+  if(!aFatherLabel.FindAttribute(_root->ID(), aFather)) return false;
+
+  if(aLabel.IsNull()) return false;
+  if(!aLabel.FindAttribute(_root->ID(), aNode)) {
+    aNode = SALOMEDSImpl_AttributeTreeNode::Set(aLabel, _root->ID());
+  }
+
+  aNode->Remove();
+
+  return aFather->Append(aNode);
+}
+
+//============================================================================
+/*! Function : InsertBefore
+ *  Purpose  :
+ */
+//============================================================================
+bool SALOMEDSImpl_UseCaseBuilder::InsertBefore(const Handle(SALOMEDSImpl_SObject)& theFirst, 
+                                              const Handle(SALOMEDSImpl_SObject)& theNext)
+{
+  if(_root.IsNull() || theFirst.IsNull() || theNext.IsNull()) return false;
+
+  TDF_Label aFirstLabel = theFirst->GetLabel(), aLabel= theNext->GetLabel();
+  Handle(SALOMEDSImpl_AttributeTreeNode) aFirstNode, aNode;
+  
+  if(aFirstLabel.IsNull()) return false;
+  if(aFirstLabel.FindAttribute(_root->ID(), aFirstNode)) {
+    aFirstNode->Remove();
+    aFirstLabel.ForgetAttribute(aFirstNode->ID());
+  }
+
+  aFirstNode = SALOMEDSImpl_AttributeTreeNode::Set(aFirstLabel, _root->ID());
+  
+  if(aLabel.IsNull()) return false;
+  if(!aLabel.FindAttribute(_root->ID(), aNode)) return false;
+
+  aFirstNode->Remove();
+
+  return aNode->InsertBefore(aFirstNode);
+}
+
+
+//============================================================================
+/*! Function : SetCurrentObject
+ *  Purpose  :
+ */
+//============================================================================
+bool SALOMEDSImpl_UseCaseBuilder::SetCurrentObject(const Handle(SALOMEDSImpl_SObject)& theObject)
+{
+  if(_root.IsNull() || theObject.IsNull()) return false;
+
+  TDF_Label aLabel = theObject->GetLabel();
+  Handle(SALOMEDSImpl_AttributeTreeNode) aNode;
+  if(aLabel.IsNull()) return false;
+  if(!aLabel.FindAttribute(_root->ID(), aNode)) return false;
+
+
+  Handle(SALOMEDSImpl_AttributeReference) aRef;
+  if(!_root->FindAttribute(SALOMEDSImpl_AttributeReference::GetID(), aRef)) {
+    aRef = SALOMEDSImpl_AttributeReference::Set(_root->Label(), aNode->Label());  
+  }
+  
+  aRef->Set(aNode->Label());
+
+  return true;
+}
+
+//============================================================================
+/*! Function : SetRootCurrent
+ *  Purpose  :
+ */
+//============================================================================
+bool SALOMEDSImpl_UseCaseBuilder::SetRootCurrent()
+{
+  if(_root.IsNull()) return false;
+   
+  Handle(SALOMEDSImpl_AttributeReference) aRef;
+  if(!_root->FindAttribute(SALOMEDSImpl_AttributeReference::GetID(), aRef)) 
+    aRef = SALOMEDSImpl_AttributeReference::Set(_root->Label(), _root->Label());  
+
+  aRef->Set(_root->Label());
+  return true;
+}
+
+//============================================================================
+/*! Function : HasChildren
+ *  Purpose  :
+ */
+//============================================================================
+bool SALOMEDSImpl_UseCaseBuilder::HasChildren(const Handle(SALOMEDSImpl_SObject)& theObject)
+{
+  if(_root.IsNull()) return false;
+
+  TDF_Label aLabel;
+  if (theObject.IsNull()) aLabel = _root->Label();
+  else 
+    aLabel = theObject->GetLabel(); 
+  if(aLabel.IsNull()) return false;
+
+  Handle(SALOMEDSImpl_AttributeTreeNode) aNode;
+  if(!aLabel.FindAttribute(_root->ID(), aNode)) return false;
+
+  return !(aNode->GetFirst().IsNull());
+}
+
+//============================================================================
+/*! Function : SetName
+ *  Purpose  :
+ */
+//============================================================================
+bool SALOMEDSImpl_UseCaseBuilder::SetName(const TCollection_AsciiString& theName) {
+  if(_root.IsNull()) return false;
+
+  Handle(SALOMEDSImpl_AttributeName) aNameAttrib;
+
+  if (!_root->FindAttribute(SALOMEDSImpl_AttributeName::GetID(), aNameAttrib))
+    aNameAttrib = SALOMEDSImpl_AttributeName::Set(_root->Label(), theName);
+  else    
+    aNameAttrib->SetValue(theName);
+    
+  return true;
+}
+
+
+//============================================================================
+/*! Function : GetCurrentObject
+ *  Purpose  :
+ */
+//============================================================================
+Handle(SALOMEDSImpl_SObject) SALOMEDSImpl_UseCaseBuilder::GetCurrentObject()
+{
+  if(_root.IsNull()) return NULL;
+
+  Handle(SALOMEDSImpl_AttributeReference) aRef;
+  if(!_root->FindAttribute(SALOMEDSImpl_AttributeReference::GetID(), aRef)) {
+    aRef = SALOMEDSImpl_AttributeReference::Set(_root->Label(), _root->Label());  
+  }  
+  TDF_Label aCurrent = aRef->Get();  
+  if(aCurrent.IsNull()) return NULL;
+
+  return SALOMEDSImpl_Study::SObject(aCurrent);
+}
+
+//============================================================================
+/*! Function : GetName
+ *  Purpose  :
+ */
+//============================================================================
+TCollection_AsciiString SALOMEDSImpl_UseCaseBuilder::GetName() 
+{
+  TCollection_AsciiString aString;
+  if(_root.IsNull()) return aString;
+
+  Handle(SALOMEDSImpl_AttributeName) aName;
+  if (!_root->FindAttribute(SALOMEDSImpl_AttributeName::GetID(), aName)) return aString;
+  aString = TCollection_AsciiString(aName->Value());
+  return aString;
+}
+
+//============================================================================ 
+/*! Function :  IsUseCase
+ *  Purpose  :  
+ */ 
+//============================================================================ 
+bool SALOMEDSImpl_UseCaseBuilder::IsUseCase(const Handle(SALOMEDSImpl_SObject)& theObject)
+{
+  if(theObject.IsNull()) return false;
+  TDF_Label aFather, aLabel = theObject->GetLabel(); 
+  aFather = _doc->Main().Root().FindChild(USE_CASE_LABEL_TAG);
+  if(aLabel.Father() == aFather) return true;
+  return false;
+}
+
+//============================================================================ 
+/*! Function : NewUseCase 
+ *  Purpose  :  
+ */ 
+//============================================================================ 
+Handle(SALOMEDSImpl_SObject) SALOMEDSImpl_UseCaseBuilder::AddUseCase(const TCollection_AsciiString& theName)
+{
+  Standard_GUID aBasicGUID(USE_CASE_GUID);
+
+  //Create a use cases structure if it not exists 
+
+  Handle(SALOMEDSImpl_AttributeTreeNode) aFatherNode, aNode;
+  Handle(SALOMEDSImpl_AttributeInteger) anInteger;
+  Handle(SALOMEDSImpl_AttributeReference) aRef;
+
+  TDF_Label aLabel = _doc->Main().Root().FindChild(USE_CASE_LABEL_TAG);
+
+  if(!_root->FindAttribute(SALOMEDSImpl_AttributeReference::GetID(), aRef)) {
+    aRef = SALOMEDSImpl_AttributeReference::Set(aLabel, aLabel);
+  }
+  if(!aRef->Get().FindAttribute(aBasicGUID, aFatherNode)) {
+    aFatherNode = SALOMEDSImpl_AttributeTreeNode::Set(aRef->Get(), aBasicGUID);
+  }
+
+  if(!_root->FindAttribute(SALOMEDSImpl_AttributeInteger::GetID(), anInteger)) {
+    anInteger = SALOMEDSImpl_AttributeInteger::Set(aLabel, 0);
+  }
+
+  //Create a new use case
+  anInteger->SetValue(anInteger->Value()+1);
+  TDF_Label aChild = aLabel.FindChild(anInteger->Value());
+  aNode = SALOMEDSImpl_AttributeTreeNode::Set(aChild, aBasicGUID);
+  aNode->Remove();
+  aFatherNode->Append(aNode);
+  SALOMEDSImpl_AttributeName::Set(aChild, theName);
+
+  return SALOMEDSImpl_Study::SObject(aChild);
+}
+
+//============================================================================
+/*! Function : GetUseCaseIterator
+ *  Purpose  : Creates a new UseCase iterator, if anObject is null all use cases are iterated 
+ */
+//============================================================================
+Handle(SALOMEDSImpl_UseCaseIterator) 
+SALOMEDSImpl_UseCaseBuilder::GetUseCaseIterator(const Handle(SALOMEDSImpl_SObject)& theObject) 
+{
+  TDF_Label aLabel;
+
+  if(!theObject.IsNull()) {
+    aLabel = theObject->GetLabel(); //Iterate only sub tree in the use case
+  }
+  else {
+    aLabel = _doc->Main().Root().FindChild(USE_CASE_LABEL_TAG); //Iterate all use cases
+  }
+
+  return new SALOMEDSImpl_UseCaseIterator(aLabel, USE_CASE_GUID, false); 
+}
+
+
+Handle(SALOMEDSImpl_SObject) SALOMEDSImpl_UseCaseBuilder::GetSObject(const TCollection_AsciiString& theEntry)
+{
+   TDF_Label aLabel;    
+   TDF_Tool::Label(_doc->GetData(), theEntry, aLabel);
+   return SALOMEDSImpl_Study::SObject(aLabel);    
+}
diff --git a/src/SALOMEDSImpl/SALOMEDSImpl_UseCaseBuilder.hxx b/src/SALOMEDSImpl/SALOMEDSImpl_UseCaseBuilder.hxx
new file mode 100644 (file)
index 0000000..a0a0d93
--- /dev/null
@@ -0,0 +1,67 @@
+//  File   : SALOMEDSImpl_UseCaseBuilder.hxx
+//  Author : Sergey RUIN
+//  Module : SALOME
+
+#ifndef __SALOMEDSIMPL_USECaseBuilder_H__
+#define __SALOMEDSIMPL_USECaseBuilder_H__
+
+//Handle definition
+#include <Handle_MMgt_TShared.hxx>
+#include <Standard_DefineHandle.hxx>
+DEFINE_STANDARD_HANDLE( SALOMEDSImpl_UseCaseBuilder, MMgt_TShared )
+
+// Cascade headers
+#include <SALOMEDSImpl_AttributeTreeNode.hxx>
+#include <TDocStd_Document.hxx>
+#include <TCollection_AsciiString.hxx>
+#include <Standard_GUID.hxx>
+
+#include "SALOMEDSImpl_UseCaseIterator.hxx"
+
+class SALOMEDSImpl_UseCaseBuilder : public MMgt_TShared
+{
+private:
+
+  Handle(SALOMEDSImpl_AttributeTreeNode)     _root;
+  Handle(TDocStd_Document)                   _doc;
+
+public:
+
+  //! standard constructor  
+  Standard_EXPORT SALOMEDSImpl_UseCaseBuilder(const Handle(TDocStd_Document)& theDocument);
+  
+  //! standard destructor
+  Standard_EXPORT ~SALOMEDSImpl_UseCaseBuilder();
+  
+  Standard_EXPORT virtual bool Append(const Handle(SALOMEDSImpl_SObject)& theObject);
+
+  Standard_EXPORT virtual bool Remove(const Handle(SALOMEDSImpl_SObject)& theObject);
+
+  Standard_EXPORT virtual bool AppendTo(const Handle(SALOMEDSImpl_SObject)& theFather, const Handle(SALOMEDSImpl_SObject)& theObject);
+
+  Standard_EXPORT virtual bool InsertBefore(const Handle(SALOMEDSImpl_SObject)& theFirst, const Handle(SALOMEDSImpl_SObject)& theNext);
+
+  Standard_EXPORT virtual bool  SetCurrentObject(const Handle(SALOMEDSImpl_SObject)& theObject);
+  
+  Standard_EXPORT virtual bool SetRootCurrent();
+
+  Standard_EXPORT virtual bool  HasChildren(const Handle(SALOMEDSImpl_SObject)& theObject);
+
+  Standard_EXPORT virtual bool  IsUseCase(const Handle(SALOMEDSImpl_SObject)& theObject);
+
+  Standard_EXPORT virtual bool SetName(const TCollection_AsciiString& theName);
+
+  Standard_EXPORT virtual Handle(SALOMEDSImpl_SObject) GetCurrentObject();
+
+  Standard_EXPORT virtual TCollection_AsciiString GetName();
+
+  Standard_EXPORT virtual Handle(SALOMEDSImpl_SObject) AddUseCase(const TCollection_AsciiString& theName);
+
+  Standard_EXPORT virtual Handle(SALOMEDSImpl_UseCaseIterator) GetUseCaseIterator(const Handle(SALOMEDSImpl_SObject)& anObject);
+
+  Standard_EXPORT Handle(SALOMEDSImpl_SObject) GetSObject(const TCollection_AsciiString& theEntry);    
+
+public:
+  DEFINE_STANDARD_RTTI( SALOMEDSImpl_UseCaseBuilder )
+};
+#endif
diff --git a/src/SALOMEDSImpl/SALOMEDSImpl_UseCaseIterator.cxx b/src/SALOMEDSImpl/SALOMEDSImpl_UseCaseIterator.cxx
new file mode 100644 (file)
index 0000000..7c32150
--- /dev/null
@@ -0,0 +1,80 @@
+//  File   : SALOMEDSImpl_UseCaseIterator.cxx
+//  Author : Serge RUIN
+//  Module : SALOME
+
+#include "SALOMEDSImpl_UseCaseIterator.hxx"
+#include "SALOMEDSImpl_SObject.hxx"
+#include "SALOMEDSImpl_Study.hxx"
+
+using namespace std;
+
+IMPLEMENT_STANDARD_HANDLE( SALOMEDSImpl_UseCaseIterator, MMgt_TShared )
+IMPLEMENT_STANDARD_RTTIEXT( SALOMEDSImpl_UseCaseIterator, MMgt_TShared )
+
+//============================================================================
+/*! Function : constructor
+ *  Purpose  :
+ */
+//============================================================================
+SALOMEDSImpl_UseCaseIterator::SALOMEDSImpl_UseCaseIterator(const TDF_Label& theLabel, 
+                                                          const Standard_GUID& theGUID,
+                                                          const bool allLevels)
+:_guid(theGUID), _levels(allLevels)
+{
+  if(theLabel.FindAttribute(_guid, _node)) {
+    _it.Initialize (_node, _levels);
+  }
+}
+
+//============================================================================
+/*! Function : destructor
+ *  Purpose  :
+ */
+//============================================================================
+SALOMEDSImpl_UseCaseIterator::~SALOMEDSImpl_UseCaseIterator()
+{
+}
+
+//============================================================================
+/*! Function :Init
+ * 
+ */
+//============================================================================
+void SALOMEDSImpl_UseCaseIterator::Init(bool allLevels)
+{ 
+  _it.Initialize (_node, allLevels);
+}
+
+//============================================================================
+/*! Function : More
+ * 
+ */
+//============================================================================
+bool SALOMEDSImpl_UseCaseIterator::More()
+{
+  return _it.More();
+}
+
+ //============================================================================
+/*! Function : Next
+ * 
+ */
+//============================================================================
+void SALOMEDSImpl_UseCaseIterator::Next()
+{
+  _it.Next();
+}
+
+
+//============================================================================
+/*! Function :
+ *  Purpose  :
+ */
+//============================================================================
+
+Handle(SALOMEDSImpl_SObject) SALOMEDSImpl_UseCaseIterator::Value()
+{
+  TDF_Label L = _it.Value()->Label();
+  return SALOMEDSImpl_Study::SObject(L);
+}
+
diff --git a/src/SALOMEDSImpl/SALOMEDSImpl_UseCaseIterator.hxx b/src/SALOMEDSImpl/SALOMEDSImpl_UseCaseIterator.hxx
new file mode 100644 (file)
index 0000000..171bcc5
--- /dev/null
@@ -0,0 +1,47 @@
+//  File   : SALOMEDSImpl_UseCaseIterator.hxx
+//  Author : Sergey RUIN
+//  Module : SALOME
+
+#ifndef __SALOMEDSIMPL_USECASEITERATOR_H__
+#define __SALOMEDSIMPL_USECASEITERATOR_H__
+
+//Handle definition
+#include <Handle_MMgt_TShared.hxx>
+#include <Standard_DefineHandle.hxx>
+DEFINE_STANDARD_HANDLE( SALOMEDSImpl_UseCaseIterator, MMgt_TShared )
+
+#include "SALOMEDSImpl_SObject.hxx"
+
+// Cascade headers
+#include <TDF_ChildIterator.hxx>
+#include <SALOMEDSImpl_ChildNodeIterator.hxx>
+#include <Standard_GUID.hxx>
+
+class SALOMEDSImpl_UseCaseIterator : public MMgt_TShared 
+{
+
+private:
+  Standard_GUID                              _guid;
+  bool                                       _levels;
+  Handle(SALOMEDSImpl_AttributeTreeNode)     _node;
+  SALOMEDSImpl_ChildNodeIterator             _it;
+
+public:
+
+  //! standard constructor  
+  SALOMEDSImpl_UseCaseIterator(const TDF_Label& theLabel, 
+                              const Standard_GUID& theGUID, 
+                              const bool allLevels);
+  
+  //! standard destructor
+  ~SALOMEDSImpl_UseCaseIterator();
+  
+  virtual void Init(bool);
+  virtual bool More();
+  virtual void Next();
+  virtual Handle(SALOMEDSImpl_SObject) Value();
+
+public:
+  DEFINE_STANDARD_RTTI( SALOMEDSImpl_UseCaseIterator )
+};
+#endif
diff --git a/src/SALOMEDSImpl/testDS.cxx b/src/SALOMEDSImpl/testDS.cxx
new file mode 100644 (file)
index 0000000..ddc1bfd
--- /dev/null
@@ -0,0 +1,78 @@
+//File:    testDS.cxx
+//Author:  Sergey RUIN
+
+#include <stdio.h>
+#include <iostream> 
+
+#include <TColStd_HSequenceOfTransient.hxx>
+#include <TCollection_AsciiString.hxx>
+#include <TDocStd_Document.hxx>
+#include <TDF_Attribute.hxx>
+#include <TDF_Label.hxx>
+#include <TDF_Data.hxx>
+#include <TDF_Tool.hxx>
+
+#include "SALOMEDSImpl_Attributes.hxx"
+#include "SALOMEDSImpl_StudyManager.hxx"
+#include "SALOMEDSImpl_Study.hxx"
+#include "SALOMEDSImpl_StudyBuilder.hxx"
+#include "SALOMEDSImpl_SObject.hxx"
+#include "SALOMEDSImpl_SComponent.hxx"
+//#include "SALOMEDSImpl_.hxx"
+
+int main (int argc, char * argv[])
+{
+  cout << "Test started " << endl;
+
+  Handle(SALOMEDSImpl_StudyManager) aSM = new SALOMEDSImpl_StudyManager();
+  cout << "Manager is created " << endl;
+  Handle(SALOMEDSImpl_Study) aStudy = aSM->NewStudy("SRN");
+  cout << "Study with id = " << aStudy->StudyId() << " is created " << endl; 
+  Handle(SALOMEDSImpl_StudyBuilder) aBuilder = aStudy->NewBuilder();
+  cout << "StudyBuilder is created " << endl;
+  Handle(SALOMEDSImpl_SComponent) aSC = aBuilder->NewComponent("TEST");
+  cout << "New component with type " << aSC->ComponentDataType() << " is created " << endl;
+  Handle(SALOMEDSImpl_SObject) aSO = aBuilder->NewObject(aSC);
+  cout << "New SObject with  ID = " << aSO->GetID() << " is created"  << endl;
+  TCollection_AsciiString anEntry;
+  TDF_Tool::Entry(aSO->GetLabel(), anEntry);
+  cout << "An entry of newly created SO is "  << anEntry << endl;
+  Handle(SALOMEDSImpl_AttributeIOR) aIORA = SALOMEDSImpl_AttributeIOR::Set(aSO->GetLabel(), "ior1234");
+  cout << "New AttributeIOR is created, it contains " << aIORA->Value() << endl;
+  Handle(SALOMEDSImpl_GenericAttribute) ga = Handle(SALOMEDSImpl_GenericAttribute)::DownCast(aIORA);
+  cout << "Attribute has type: " << ga->Type() << " and value: " << ga->Save() << endl; 
+  cout << "Just another way to create an attribute: official one :) " << endl;
+  Handle(TDF_Attribute) aTDFAttr =  aBuilder->FindOrCreateAttribute(aSO, "AttributeName");  
+  Handle(SALOMEDSImpl_AttributeName) aRN = Handle(SALOMEDSImpl_AttributeName)::DownCast(aTDFAttr);
+  aRN->SetValue("name_attribute");
+  cout << " The type = " << aRN->Type() << endl;
+  ga = Handle(SALOMEDSImpl_GenericAttribute)::DownCast(aRN);
+  cout << "Attribute has type: " << ga->Type() << " and value: " << ga->Save() << endl;   
+  cout << "Check GetObjectPath: " << aStudy->GetObjectPath(aSO) << endl;
+  
+  Handle(SALOMEDSImpl_SObject) aSubSO = aBuilder->NewObject(aSO);
+  aTDFAttr =  aBuilder->FindOrCreateAttribute(aSubSO, "AttributeIOR");  
+  Handle(SALOMEDSImpl_AttributeIOR) aIOR2 = Handle(SALOMEDSImpl_AttributeIOR)::DownCast(aTDFAttr);
+  aIOR2->SetValue("some ior");
+  aBuilder->Addreference(aSubSO, aSO);
+  Handle(SALOMEDSImpl_SObject) aRefObject;
+  aSubSO->ReferencedObject(aRefObject);
+  cout << "Check reference : ReferencedObject is " << aRefObject->GetID() << endl;
+  cout << "Check : Remove object: " << endl;
+  aBuilder->RemoveObject(aSubSO);
+  cout << "Remove: done" << endl;
+
+  cout << "Check the attributes on SObject" << endl;
+  Handle(TColStd_HSequenceOfTransient) aSeq = aSO->GetAllAttributes();
+  for(int i = 1; i <= aSeq->Length(); i++) 
+    cout << "Found: " << Handle(SALOMEDSImpl_GenericAttribute)::DownCast(aSeq->Value(i))->Type() << endl;
+
+  cout << "Check AttributeTreeNode " << endl;
+  aTDFAttr =  aBuilder->FindOrCreateAttribute(aSO, "AttributeTreeNode");  
+  cout << Handle(SALOMEDSImpl_GenericAttribute)::DownCast(aTDFAttr)->Type() << endl;
+  cout << "Check AttributeTreeNode : done " << endl;
+
+  cout << "Test finished " << endl;    
+  return 0;
+}
+
diff --git a/src/SALOMELocalTrace/BaseTraceCollector.cxx b/src/SALOMELocalTrace/BaseTraceCollector.cxx
new file mode 100644 (file)
index 0000000..de61218
--- /dev/null
@@ -0,0 +1,68 @@
+//  Copyright (C) 2004  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
+//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
+// 
+//  This library is free software; you can redistribute it and/or 
+//  modify it under the terms of the GNU Lesser General Public 
+//  License as published by the Free Software Foundation; either 
+//  version 2.1 of the License. 
+// 
+//  This library is distributed in the hope that it will be useful, 
+//  but WITHOUT ANY WARRANTY; without even the implied warranty of 
+//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
+//  Lesser General Public License for more details. 
+// 
+//  You should have received a copy of the GNU Lesser General Public 
+//  License along with this library; if not, write to the Free Software 
+//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
+// 
+//  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
+//
+//
+//
+//  File   : BaseTraceCollector.cxx
+//  Author : Paul RASCLE (EDF)
+//  Module : KERNEL
+//  $Header$
+
+#include <iostream>
+#include <sstream>
+#include <fstream>
+#include <cstdlib>
+
+using namespace std;
+
+#include "BaseTraceCollector.hxx"
+#include "LocalTraceBufferPool.hxx"
+
+// Class attributes initialisation, for class method BaseTraceCollector::run
+
+BaseTraceCollector* BaseTraceCollector::_singleton = 0;
+pthread_mutex_t BaseTraceCollector::_singletonMutex;
+sem_t BaseTraceCollector::_sem;
+int BaseTraceCollector::_threadToClose = 0;
+pthread_t* BaseTraceCollector::_threadId = 0; // used to control single run
+
+// ============================================================================
+/*!
+ *  Destructor: virtual, implemented in derived classes.
+ *  Wait until printing thread ends (BaseTraceCollector::run)
+ */
+// ============================================================================
+
+BaseTraceCollector:: ~BaseTraceCollector()
+{
+}
+
+// ============================================================================
+/*!
+ * Constructor: no need of LocalTraceBufferPool object initialization here,
+ * thread safe singleton used in LocalTraceBufferPool::instance()
+ * See derived classes.
+ */
+// ============================================================================
+
+BaseTraceCollector::BaseTraceCollector()
+{
+}
+
+
diff --git a/src/SALOMELocalTrace/BaseTraceCollector.hxx b/src/SALOMELocalTrace/BaseTraceCollector.hxx
new file mode 100644 (file)
index 0000000..dad4d9e
--- /dev/null
@@ -0,0 +1,66 @@
+//  Copyright (C) 2004  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
+//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
+// 
+//  This library is free software; you can redistribute it and/or 
+//  modify it under the terms of the GNU Lesser General Public 
+//  License as published by the Free Software Foundation; either 
+//  version 2.1 of the License. 
+// 
+//  This library is distributed in the hope that it will be useful, 
+//  but WITHOUT ANY WARRANTY; without even the implied warranty of 
+//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
+//  Lesser General Public License for more details. 
+// 
+//  You should have received a copy of the GNU Lesser General Public 
+//  License along with this library; if not, write to the Free Software 
+//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
+// 
+//  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
+//
+//
+//
+//  File   : BaseTraceCollector.hxx
+//  Author : Paul RASCLE (EDF)
+//  Module : KERNEL
+//  $Header$
+
+#ifndef _BASETRACECOLLECTOR_HXX_
+#define _BASETRACECOLLECTOR_HXX_
+
+#include <pthread.h>
+#include <semaphore.h>
+
+
+#if defined SALOMELOCALTRACE_EXPORTS
+#if defined WIN32
+#define SALOMELOCALTRACE_EXPORT __declspec( dllexport )
+#else
+#define SALOMELOCALTRACE_EXPORT
+#endif
+#else
+#if defined WNT
+#define SALOMELOCALTRACE_EXPORT __declspec( dllimport )
+#else
+#define SALOMELOCALTRACE_EXPORT
+#endif
+#endif
+
+//! See derived Classes in SALOMELocalTrace for usage without CORBA,
+//! see derived Classes in SALOMETraceCollector for usage with CORBA.
+
+class SALOMELOCALTRACE_EXPORT BaseTraceCollector
+{
+ public:
+  virtual ~BaseTraceCollector();
+
+ protected:
+  BaseTraceCollector();
+
+  static int _threadToClose;
+  static BaseTraceCollector* _singleton;
+  static pthread_mutex_t _singletonMutex;
+  static pthread_t* _threadId;
+  static sem_t _sem;
+};
+
+#endif
diff --git a/src/SALOMELocalTrace/FileTraceCollector.cxx b/src/SALOMELocalTrace/FileTraceCollector.cxx
new file mode 100644 (file)
index 0000000..ce19840
--- /dev/null
@@ -0,0 +1,202 @@
+//  Copyright (C) 2004  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
+//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
+// 
+//  This library is free software; you can redistribute it and/or 
+//  modify it under the terms of the GNU Lesser General Public 
+//  License as published by the Free Software Foundation; either 
+//  version 2.1 of the License. 
+// 
+//  This library is distributed in the hope that it will be useful, 
+//  but WITHOUT ANY WARRANTY; without even the implied warranty of 
+//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
+//  Lesser General Public License for more details. 
+// 
+//  You should have received a copy of the GNU Lesser General Public 
+//  License along with this library; if not, write to the Free Software 
+//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
+// 
+//  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
+//
+//
+//
+//  File   : FileTraceCollector.cxx
+//  Author : Paul RASCLE (EDF)
+//  Module : KERNEL
+//  $Header$
+
+#include <iostream>
+#include <sstream>
+#include <fstream>
+#include <cstdlib>
+
+using namespace std;
+
+#include "FileTraceCollector.hxx"
+
+// Class attributes initialisation, for class method FileTraceCollector::run
+
+std::string FileTraceCollector::_fileName = "";
+
+// ============================================================================
+/*!
+ *  This class is for use without CORBA, inside or outside SALOME.
+ *  SALOME uses SALOMETraceCollector, to allow trace collection via CORBA.
+ *  Type of trace (and corresponding class) is choosen in LocalTraceBufferPool.
+ *
+ *  Guarantees a unique object instance of the class (singleton thread safe)
+ *  a separate thread for loop to print traces is launched.
+ */
+// ============================================================================
+
+BaseTraceCollector* FileTraceCollector::instance(const char *fileName)
+{
+  if (_singleton == 0) // no need of lock when singleton already exists
+    {
+      int ret;
+      ret = pthread_mutex_lock(&_singletonMutex); // acquire lock to be alone
+      if (_singleton == 0)                     // another thread may have got
+       {                                      // the lock after the first test
+         DEVTRACE("FileTraceCollector:: instance()");
+         _singleton = new FileTraceCollector();
+         _fileName = fileName;
+         DEVTRACE(" _fileName: " << _fileName);
+
+         sem_init(&_sem,0,0); // to wait until run thread is initialized
+         pthread_t traceThread;
+         int bid;
+         int re2 = pthread_create(&traceThread, NULL,
+                                  FileTraceCollector::run, (void *)bid);
+         sem_wait(&_sem);
+         DEVTRACE("FileTraceCollector:: instance()-end");
+       }
+      ret = pthread_mutex_unlock(&_singletonMutex); // release lock
+    }
+  return _singleton;
+}
+
+// ============================================================================
+/*!
+ *  In a separate thread, loop to print traces.
+ *  Mutex garantees intialisation on instance method is done and only one run
+ *  allowed (double check ...)
+ *  Loop until there is no more buffer to print,
+ *  and no ask for end from destructor.
+ *  Get a buffer. If type = ABORT then exit application with message.
+ */
+// ============================================================================
+
+void* FileTraceCollector::run(void *bid)
+{
+  _threadId = new pthread_t;
+  *_threadId = pthread_self();
+  sem_post(&_sem); // unlock instance
+
+  LocalTraceBufferPool* myTraceBuffer = LocalTraceBufferPool::instance();
+  LocalTrace_TraceInfo myTrace;
+
+  // --- opens a file with append mode
+  //     so, several processes can share the same file
+
+  ofstream traceFile;
+  const char *theFileName = _fileName.c_str();
+  traceFile.open(theFileName, ios::out | ios::app);
+  if (!traceFile)
+    {
+      cerr << "impossible to open trace file "<< theFileName << endl;
+      exit (1);
+    }
+
+  // --- Loop until there is no more buffer to print,
+  //     and no ask for end from destructor.
+
+  while ((!_threadToClose) || myTraceBuffer->toCollect() )
+    {
+      if (_threadToClose)
+       {
+         DEVTRACE("FileTraceCollector _threadToClose");
+         //break;
+       }
+
+      int fullBuf = myTraceBuffer->retrieve(myTrace);
+      if (myTrace.traceType == ABORT_MESS)
+       {
+#ifndef WNT
+         traceFile << "INTERRUPTION from thread " << myTrace.threadId
+                   << " : " <<  myTrace.trace;
+#else
+         traceFile << "INTERRUPTION from thread "
+                   << (void*)(&myTrace.threadId)
+                   << " : " <<  myTrace.trace;
+#endif
+         traceFile.close();
+         cout << flush ;
+#ifndef WNT
+         cerr << "INTERRUPTION from thread " << myTrace.threadId
+              << " : " <<  myTrace.trace;
+#else
+         cerr << "INTERRUPTION from thread " << (void*)(&myTrace.threadId)
+              << " : " <<  myTrace.trace;
+#endif
+         cerr << flush ; 
+         exit(1);     
+       }
+      else
+       {
+#ifndef WNT
+         traceFile << "th. " << myTrace.threadId
+                   << " " << myTrace.trace;
+#else
+         traceFile << "th. " << (void*)(&myTrace.threadId)
+                   << " " << myTrace.trace;
+#endif
+       }
+    }
+  DEVTRACE("traceFile.close()");
+  traceFile.close();
+  DEVTRACE("traceFile.close()_end");
+  pthread_exit(NULL);
+}
+
+// ============================================================================
+/*!
+ *  Destructor: wait until printing thread ends (FileTraceCollector::run)
+ */
+// ============================================================================
+
+FileTraceCollector:: ~FileTraceCollector()
+{
+  int ret;
+  ret = pthread_mutex_lock(&_singletonMutex); // acquire lock to be alone
+  if (_singleton)
+    {
+      DEVTRACE("FileTraceCollector:: ~FileTraceCollector()");
+      LocalTraceBufferPool* myTraceBuffer = LocalTraceBufferPool::instance();
+      _threadToClose = 1;
+      myTraceBuffer->insert(NORMAL_MESS,"end of trace\n"); // to wake up thread
+      if (_threadId)
+       {
+         int ret = pthread_join(*_threadId, NULL);
+         if (ret) cerr << "error close FileTraceCollector : "<< ret << endl;
+         else DEVTRACE("FileTraceCollector destruction OK");
+         _threadId = 0;
+         _threadToClose = 0;
+       }
+      _singleton = 0;
+      ret = pthread_mutex_unlock(&_singletonMutex); // release lock
+    }
+}
+
+// ============================================================================
+/*!
+ * Constructor: no need of LocalTraceBufferPool object initialization here,
+ * thread safe singleton used in LocalTraceBufferPool::instance()
+ */
+// ============================================================================
+
+FileTraceCollector::FileTraceCollector()
+{
+  _threadId=0;
+  _threadToClose = 0;
+}
+
+
diff --git a/src/SALOMELocalTrace/FileTraceCollector.hxx b/src/SALOMELocalTrace/FileTraceCollector.hxx
new file mode 100644 (file)
index 0000000..e25a3a1
--- /dev/null
@@ -0,0 +1,50 @@
+//  Copyright (C) 2004  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
+//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
+// 
+//  This library is free software; you can redistribute it and/or 
+//  modify it under the terms of the GNU Lesser General Public 
+//  License as published by the Free Software Foundation; either 
+//  version 2.1 of the License. 
+// 
+//  This library is distributed in the hope that it will be useful, 
+//  but WITHOUT ANY WARRANTY; without even the implied warranty of 
+//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
+//  Lesser General Public License for more details. 
+// 
+//  You should have received a copy of the GNU Lesser General Public 
+//  License along with this library; if not, write to the Free Software 
+//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
+// 
+//  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
+//
+//
+//
+//  File   : FileTraceCollector.hxx
+//  Author : Paul RASCLE (EDF)
+//  Module : KERNEL
+//  $Header$
+
+#ifndef _FILETRACECOLLECTOR_HXX_
+#define _FILETRACECOLLECTOR_HXX_
+
+#include <string>
+#include "LocalTraceBufferPool.hxx"
+#include "BaseTraceCollector.hxx"
+
+//! See also other derived Classes in SALOMELocalTrace for usage without CORBA,
+//! see also derived Classes in SALOMETraceCollector for usage with CORBA.
+
+class SALOMELOCALTRACE_EXPORT FileTraceCollector : public BaseTraceCollector
+{
+ public:
+  static BaseTraceCollector* instance(const char *fileName);
+  static void *run(void *bid);
+  ~FileTraceCollector();
+
+ protected:
+  FileTraceCollector();
+
+  static std::string _fileName;
+};
+
+#endif
index 8a997221a423b19e5e946bf704c8ba89f886fb6c..d875fe5bee8572ed42f6758b866ac8de2da65814 100644 (file)
 
 #include <iostream>
 #include <limits.h>
+#include <cassert>
+
+#ifndef WNT
+#include <dlfcn.h>
+#else
+#endif
 
 #include "LocalTraceBufferPool.hxx"
+#include "BaseTraceCollector.hxx"
+#include "LocalTraceCollector.hxx"
+#include "FileTraceCollector.hxx"
+#include "BasicsGenericDestructor.hxx"
 #include "utilities.h"
 
 using namespace std;
 
 // In case of truncated message, end of trace contains "...\n\0"
+
 #define TRUNCATED_MESSAGE "...\n"
 #define MAXMESS_LENGTH MAX_TRACE_LENGTH-5
 
+// Class static attributes initialisation
+
 LocalTraceBufferPool* LocalTraceBufferPool::_singleton = 0;
+#ifndef WNT
 pthread_mutex_t LocalTraceBufferPool::_singletonMutex;
+#else
+pthread_mutex_t LocalTraceBufferPool::_singletonMutex =
+  PTHREAD_MUTEX_INITIALIZER;
+#endif
+BaseTraceCollector *LocalTraceBufferPool::_myThreadTrace = 0;
 
 // ============================================================================
 /*!
- *  guarantees a unique object instance of the class (singleton thread safe)
+ *  Guarantees a unique object instance of the class (singleton thread safe).
+ *  When the LocalTraceBufferPool instance is created, the trace collector is
+ *  also created (singleton). Type of trace collector to create depends on 
+ *  environment variable "SALOME_trace":
+ *  - "local" implies standard err trace, LocalTraceCollector is launched.
+ *  - "file" implies trace in /tmp/tracetest.log
+ *  - "file:pathname" implies trace in file pathname
+ *  - anything else like "other" : try to load dynamically a library named
+ *    otherTraceCollector, and invoque C method instance() to start a singleton
+ *    instance of the trace collector. Example: with_loggerTraceCollector, for
+ *    CORBA Log.
  */
 // ============================================================================
 
@@ -54,6 +83,63 @@ LocalTraceBufferPool* LocalTraceBufferPool::instance()
       if (_singleton == 0)                     // another thread may have got
        {                                      // the lock after the first test
          _singleton = new LocalTraceBufferPool(); 
+
+         DESTRUCTOR_OF<LocalTraceBufferPool> *ptrDestroy =
+           new DESTRUCTOR_OF<LocalTraceBufferPool> (*_singleton);
+
+         // --- start a trace Collector
+
+         char* traceKind = getenv("SALOME_trace");
+         assert(traceKind);
+         //cerr<<"SALOME_trace="<<traceKind<<endl;
+
+         if (strcmp(traceKind,"local")==0)
+           {
+             _myThreadTrace = LocalTraceCollector::instance();
+           }
+         else if (strncmp(traceKind,"file",strlen("file"))==0)
+           {
+             char *fileName;
+             if (strlen(traceKind) > strlen("file"))
+               fileName = &traceKind[strlen("file")+1];
+             else
+               fileName = "/tmp/tracetest.log";
+             
+             _myThreadTrace = FileTraceCollector::instance(fileName);
+           }
+         else // --- try a dynamic library
+           {
+             void* handle;
+#ifndef WNT
+             string impl_name = string ("lib") + traceKind 
+               + string("TraceCollector.so");
+             handle = dlopen( impl_name.c_str() , RTLD_LAZY ) ;
+#else
+             string impl_name = string ("lib") + traceKind + string(".dll");
+             handle = dlopen( impl_name.c_str() , 0 ) ;
+#endif
+             if ( handle )
+               {
+                 typedef BaseTraceCollector * (*FACTORY_FUNCTION) (void);
+                 FACTORY_FUNCTION TraceCollectorFactory =
+                   (FACTORY_FUNCTION) dlsym(handle, "SingletonInstance");
+                 char *error ;
+                 if ( (error = dlerror() ) != NULL)
+                   {
+                     cerr << "Can't resolve symbol: SingletonInstance" <<endl;
+                     cerr << "dlerror: " << error << endl;
+                     assert(error == NULL); // to give file and line
+                     exit(1);               // in case assert is deactivated
+                   }
+                 _myThreadTrace = (TraceCollectorFactory) ();
+               }
+             else
+               {
+                 cerr << "library: " << impl_name << " not found !" << endl;
+                 assert(handle); // to give file and line
+                 exit(1);        // in case assert is deactivated
+               }             
+           }
        }
       ret = pthread_mutex_unlock(&_singletonMutex); // release lock
     }
@@ -168,7 +254,7 @@ unsigned long LocalTraceBufferPool::toCollect()
 
 LocalTraceBufferPool::LocalTraceBufferPool()
 {
-  //cout << "LocalTraceBufferPool::LocalTraceBufferPool()" << endl;
+  //cerr << "LocalTraceBufferPool::LocalTraceBufferPool()" << endl;
 
   _insertPos   = ULONG_MAX;  // first increment will give 0
   _retrievePos = ULONG_MAX;
@@ -184,6 +270,8 @@ LocalTraceBufferPool::LocalTraceBufferPool()
   if (ret!=0) IMMEDIATE_ABORT(ret);
   ret=pthread_mutex_init(&_incrementMutex,NULL); // default = fast mutex
   if (ret!=0) IMMEDIATE_ABORT(ret);
+
+  //cerr << "LocalTraceBufferPool::LocalTraceBufferPool()-end" << endl;
 }
 
 // ============================================================================
@@ -194,10 +282,20 @@ LocalTraceBufferPool::LocalTraceBufferPool()
 
 LocalTraceBufferPool::~LocalTraceBufferPool()
 {
-  int ret;
-  ret=sem_destroy(&_freeBufferSemaphore);
-  ret=sem_destroy(&_fullBufferSemaphore);
-  ret=pthread_mutex_destroy(&_incrementMutex);
+  int ret = pthread_mutex_lock(&_singletonMutex); // acquire lock to be alone
+  if (_singleton)
+    {
+      DEVTRACE("LocalTraceBufferPool::~LocalTraceBufferPool()");
+      delete (_myThreadTrace);
+      _myThreadTrace = 0;
+      int ret;
+      ret=sem_destroy(&_freeBufferSemaphore);
+      ret=sem_destroy(&_fullBufferSemaphore);
+      ret=pthread_mutex_destroy(&_incrementMutex);
+      DEVTRACE("LocalTraceBufferPool::~LocalTraceBufferPool()-end");
+      _singleton = 0;
+      ret = pthread_mutex_unlock(&_singletonMutex); // release lock
+    }
 }
 
 // ============================================================================
index 597b218e8355343e2865f7fd63995075712ca648..444730111aead7c7bfda6e9e57a10962695cc5f5 100644 (file)
 
 #include <pthread.h>
 #include <semaphore.h>
+#include "BaseTraceCollector.hxx"
+#include "BasicsGenericDestructor.hxx"
 
 #define ABORT_MESS  1   // for traceType field in struct LocalTrace_TraceInfo
 #define NORMAL_MESS 0
 
-struct LocalTrace_TraceInfo
+struct SALOMELOCALTRACE_EXPORT LocalTrace_TraceInfo
 {
   char trace[MAX_TRACE_LENGTH];
   pthread_t threadId;
@@ -42,22 +44,24 @@ struct LocalTrace_TraceInfo
   int position;                  // to check sequence
 };
 
-class LocalTraceBufferPool
+class SALOMELOCALTRACE_EXPORT LocalTraceBufferPool : public PROTECTED_DELETE
 {
  public:
   static LocalTraceBufferPool* instance();
   int insert(int traceType, const char* msg);
   int retrieve(LocalTrace_TraceInfo& aTrace);
   unsigned long toCollect();
-  ~LocalTraceBufferPool();
 
  protected:
   LocalTraceBufferPool();
+  virtual ~LocalTraceBufferPool();
   unsigned long lockedIncrement(unsigned long& pos);
 
  private:
   static LocalTraceBufferPool* _singleton;
   static pthread_mutex_t _singletonMutex;
+  static BaseTraceCollector *_myThreadTrace;
+
   LocalTrace_TraceInfo _myBuffer[TRACE_BUFFER_SIZE];
   sem_t _freeBufferSemaphore;       // to wait until there is a free buffer
   sem_t _fullBufferSemaphore;       // to wait until there is a buffer to print
@@ -65,7 +69,6 @@ class LocalTraceBufferPool
   unsigned long _position;
   unsigned long _insertPos;
   unsigned long _retrievePos;
-  pthread_t _threadId;
 };
 
 #endif
index e150db6d9b0560c5f5ecf22817cc19919fe54bc6..36f4fea933bef225e5f9bdfeb63a05808f78edaa 100644 (file)
@@ -33,31 +33,18 @@ using namespace std;
 
 #include "LocalTraceCollector.hxx"
 
-// Class attributes initialisation, for class method LocalTraceCollector::run
-
-LocalTraceCollector* LocalTraceCollector::_singleton = 0;
-pthread_mutex_t LocalTraceCollector::_singletonMutex;
-int LocalTraceCollector::_threadToClose = 0;
-pthread_t LocalTraceCollector::_threadId = 0; // used to control single run
-int LocalTraceCollector::_toFile = 0;
-std::string LocalTraceCollector::_fileName = "";
-
 // ============================================================================
 /*!
- *  This class is for use without CORBA, outside SALOME.
+ *  This class is for use without CORBA, inside or outside SALOME.
  *  SALOME uses SALOMETraceCollector, to allow trace collection via CORBA.
+ *  Type of trace (and corresponding class) is choosen in LocalTraceBufferPool.
  *
- *  guarantees a unique object instance of the class (singleton thread safe)
+ *  Guarantees a unique object instance of the class (singleton thread safe)
  *  a separate thread for loop to print traces is launched.
- *  \param typeTrace 0=standard out, 1=file(/tmp/tracetest.log)
- *  If typeTrace=0, checks environment for "SALOME_trace". Test values in
- *  the following order:
- *  - "local"  standard out
- *  - anything else is kept as a file name
  */
 // ============================================================================
 
-LocalTraceCollector* LocalTraceCollector::instance(int typeTrace)
+BaseTraceCollector* LocalTraceCollector::instance()
 {
   if (_singleton == 0) // no need of lock when singleton already exists
     {
@@ -67,32 +54,12 @@ LocalTraceCollector* LocalTraceCollector::instance(int typeTrace)
        {                                      // the lock after the first test
          _singleton = new LocalTraceCollector();
 
-         _fileName = "/tmp/tracetest.log";
-         _toFile=0;
-
-         if (typeTrace)       // caller sets a value different from default=0
-           _toFile = typeTrace; 
-         else                 // check environment
-           {
-             char* traceKind = getenv("SALOME_trace");
-             //cout<<"SALOME_trace="<<traceKind<<endl;
-             if (traceKind)
-               {
-                 if (strcmp(traceKind,"local")==0) _toFile=0;
-
-                 else
-                   {
-                     _toFile=1;
-                     _fileName = traceKind;
-                   }       
-               }
-           }
-         //cout <<"_toFile: "<<_toFile<<" _fileName: "<<_fileName<<endl;
-
+         sem_init(&_sem,0,0); // to wait until run thread is initialized
          pthread_t traceThread;
          int bid;
          int re2 = pthread_create(&traceThread, NULL,
                                   LocalTraceCollector::run, (void *)bid);
+         sem_wait(&_sem);
        }
       ret = pthread_mutex_unlock(&_singletonMutex); // release lock
     }
@@ -112,91 +79,52 @@ LocalTraceCollector* LocalTraceCollector::instance(int typeTrace)
 
 void* LocalTraceCollector::run(void *bid)
 {
-  int isOKtoRun = 0;
-  int ret = pthread_mutex_lock(&_singletonMutex); // acquire lock to be alone
-  if (! _threadId)  // only one run
-    {
-      isOKtoRun = 1;
-      _threadId = pthread_self();
-    }
-  else cout << "----- Comment est-ce possible de passer la ? -------" <<endl;
-  ret = pthread_mutex_unlock(&_singletonMutex); // release lock
-
-  if (isOKtoRun)
-    { 
-      _threadId = pthread_self();
-      LocalTraceBufferPool* myTraceBuffer = LocalTraceBufferPool::instance();
-      LocalTrace_TraceInfo myTrace;
-
-      // if trace in file requested, opens a file with append mode
-      // so, several processes can share the same file
+  _threadId = new pthread_t;
+  *_threadId = pthread_self();
+  sem_post(&_sem); // unlock instance
 
+  LocalTraceBufferPool* myTraceBuffer = LocalTraceBufferPool::instance();
+  LocalTrace_TraceInfo myTrace;
 
-      ofstream traceFile;
+  // --- Loop until there is no more buffer to print,
+  //     and no ask for end from destructor.
 
-      switch (_toFile)
+  while ((!_threadToClose) || myTraceBuffer->toCollect() )
+    {
+      if (_threadToClose)
        {
-       case 1 :  // --- trace to file
-         {
-           const char *fileName = _fileName.c_str();
-           traceFile.open(fileName, ios::out | ios::app);
-           if (!traceFile)
-             {
-               cerr << "impossible to open trace file "<< fileName << endl;
-               exit (1);
-             }
-         }
-         break;
-
-       case 0 : ; // --- trace to standard output
-       default :  // --- on standard output, too
-         break;
+         DEVTRACE("FileTraceCollector _threadToClose");
+         //break;
        }
 
-      // Loop until there is no more buffer to print,
-      // and no ask for end from destructor.
-
-      while ((!_threadToClose) || myTraceBuffer->toCollect() )
+      int fullBuf = myTraceBuffer->retrieve(myTrace);
+      if (myTrace.traceType == ABORT_MESS)
        {
-         int fullBuf = myTraceBuffer->retrieve(myTrace);
-         if (myTrace.traceType == ABORT_MESS)
-           {
-             switch (_toFile)
-               {
-               case 1 :  // --- trace to file
-                 traceFile << "INTERRUPTION from thread " << myTrace.threadId
-                           << " : " <<  myTrace.trace;
-                 traceFile.close();
-                 // no break here !
-               case 0 :  // --- trace to standard output
-               default : // --- on standard output, too
-                 cout << flush ;
-                 cerr << "INTERRUPTION from thread " << myTrace.threadId
-                      << " : " <<  myTrace.trace;
-                 cerr << flush ; 
-                 exit(1);     
-                 break;
-               }
-           }
-         else
-           {
-             switch (_toFile)
-               {
-               case 1 :  // --- trace to file
-                 traceFile << "th. " << myTrace.threadId
-                           << " " << myTrace.trace;
-                 break;
-               case 0 :  // --- trace to standard output
-               default : // --- on standard output, too
-                 cout << "th. " << myTrace.threadId << " " << myTrace.trace;
-                 break;
-               }
-           }
+         cout << flush ;
+#ifndef WNT
+         cerr << "INTERRUPTION from thread " << myTrace.threadId
+              << " : " <<  myTrace.trace;
+#else
+         cerr << "INTERRUPTION from thread " << (void*)(&myTrace.threadId)
+              << " : " <<  myTrace.trace;
+#endif
+         cerr << flush ; 
+         exit(1);     
+       }
+      else
+       {
+         cout << flush ;
+#ifndef WNT
+         cerr << "th. " << myTrace.threadId << " " << myTrace.trace;
+#else
+         cerr << "th. " << (void*)(&myTrace.threadId)
+              << " " << myTrace.trace;
+#endif
+         cerr << flush ; 
        }
-
-      if (_toFile==1) traceFile.close();
     }
   pthread_exit(NULL);
+  return NULL;
 }
 
 // ============================================================================
@@ -207,16 +135,25 @@ void* LocalTraceCollector::run(void *bid)
 
 LocalTraceCollector:: ~LocalTraceCollector()
 {
-  LocalTraceBufferPool* myTraceBuffer = LocalTraceBufferPool::instance();
-  _threadToClose = 1;
-  myTraceBuffer->insert(NORMAL_MESS,"end of trace "); //needed to wake up thread
-  if (_threadId)
+  int ret;
+  ret = pthread_mutex_lock(&_singletonMutex); // acquire lock to be alone
+  if (_singleton)
     {
-      int ret = pthread_join(_threadId, NULL);
-      if (ret) cout << "error close LocalTraceCollector : "<< ret << endl;
-      else cout << "LocalTraceCollector destruction OK" << endl;
+      DEVTRACE("LocalTraceCollector:: ~LocalTraceCollector()");
+      LocalTraceBufferPool* myTraceBuffer = LocalTraceBufferPool::instance();
+      _threadToClose = 1;
+      myTraceBuffer->insert(NORMAL_MESS,"end of trace\n"); // to wake up thread
+      if (_threadId)
+       {
+         int ret = pthread_join(*_threadId, NULL);
+         if (ret) cerr << "error close LocalTraceCollector : "<< ret << endl;
+         else DEVTRACE("LocalTraceCollector destruction OK");
+         _threadId = 0;
+         _threadToClose = 0;
+       }
+      _singleton = 0;
+      ret = pthread_mutex_unlock(&_singletonMutex); // release lock
     }
-  delete myTraceBuffer;
 }
 
 // ============================================================================
@@ -229,6 +166,7 @@ LocalTraceCollector:: ~LocalTraceCollector()
 LocalTraceCollector::LocalTraceCollector()
 {
   _threadId=0;
+  _threadToClose = 0;
 }
 
 
index d9ce36f5ffcb08c87e003fb0ac5bc112f07fb4a5..610e40f033d78cba352a923df85fedb3cbefa314 100644 (file)
 
 #include <string>
 #include "LocalTraceBufferPool.hxx"
+#include "BaseTraceCollector.hxx"
 
-//! See SALOMETraceCollector instead of LocalTraceCollector for SALOME usage
+//! See also other derived Classes in SALOMELocalTrace for usage without CORBA,
+//! see also derived Classes in SALOMETraceCollector for usage with CORBA.
 
-class LocalTraceCollector
+class SALOMELOCALTRACE_EXPORT LocalTraceCollector : public BaseTraceCollector
 {
  public:
-  static LocalTraceCollector* instance(int typeTrace=0);
+  static BaseTraceCollector* instance();
   static void *run(void *bid);
   ~LocalTraceCollector();
 
  protected:
   LocalTraceCollector();
-
- private:
-  static int _threadToClose;
-  static int _toFile;
-  static LocalTraceCollector* _singleton;
-  static pthread_mutex_t _singletonMutex;
-  static pthread_t _threadId;
-  static std::string _fileName;
 };
 
 #endif
index 7894a23c02dcdfd1a908141e9e0ad337af6ede74..daf7c9d193299243057135f1113b6bfa790658ff 100644 (file)
@@ -37,18 +37,20 @@ VPATH=.:@srcdir@:@top_srcdir@/idl
 # header files  
 EXPORT_HEADERS= utilities.h \
                LocalTraceBufferPool.hxx \
-               LocalTraceCollector.hxx
+               BaseTraceCollector.hxx
 
 EXPORT_PYSCRIPTS = 
 
 # Libraries targets
 
 LIB = libSALOMELocalTrace.la 
-LIB_SRC = LocalTraceCollector.cxx \
+LIB_SRC = BaseTraceCollector.cxx \
+         LocalTraceCollector.cxx \
+         FileTraceCollector.cxx \
          LocalTraceBufferPool.cxx
 
 LIBS= @LIBS@ 
-#LDFLAGS+= 
+LDFLAGS+= -lSALOMEBasics
 
 
 @CONCLUDE@
diff --git a/src/SALOMELocalTrace/Test/Makefile.in b/src/SALOMELocalTrace/Test/Makefile.in
new file mode 100644 (file)
index 0000000..172313e
--- /dev/null
@@ -0,0 +1,62 @@
+#  SALOMELocalTrace : log on local machine
+#
+#  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
+#  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
+# 
+#  This library is free software; you can redistribute it and/or 
+#  modify it under the terms of the GNU Lesser General Public 
+#  License as published by the Free Software Foundation; either 
+#  version 2.1 of the License. 
+# 
+#  This library is distributed in the hope that it will be useful, 
+#  but WITHOUT ANY WARRANTY; without even the implied warranty of 
+#  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
+#  Lesser General Public License for more details. 
+# 
+#  You should have received a copy of the GNU Lesser General Public 
+#  License along with this library; if not, write to the Free Software 
+#  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
+# 
+#  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
+#
+#
+#
+#  File   : Makefile.in
+#  Author : Paul RASCLE (EDF)
+#  Module : SALOME
+#  $Header$
+
+top_srcdir=@top_srcdir@
+top_builddir=../../..
+srcdir=@srcdir@
+VPATH=.:@srcdir@:@top_srcdir@/idl
+
+
+@COMMENCE@
+
+# header files  
+EXPORT_HEADERS= SALOMELocalTraceTest.hxx
+
+EXPORT_PYSCRIPTS = TestSALOMELocalTrace.py
+
+# Libraries targets
+
+LIB = libSALOMELocalTraceTest.la 
+LIB_SRC = SALOMELocalTraceTest.cxx
+
+# Executables targets
+
+BIN = TestSALOMELocalTrace
+BIN_SRC = 
+
+CXXFLAGS += @CPPUNIT_INCLUDES@
+CPPFLAGS += @CPPUNIT_INCLUDES@
+
+LIBS= @LIBS@ @CPPUNIT_LIBS@
+
+LDFLAGS+= -lSALOMELocalTrace
+
+LDFLAGSFORBIN+= \
+ -lSALOMELocalTraceTest -lSALOMELocalTrace -lSALOMEBasics 
+
+@CONCLUDE@
diff --git a/src/SALOMELocalTrace/Test/SALOMELocalTraceTest.cxx b/src/SALOMELocalTrace/Test/SALOMELocalTraceTest.cxx
new file mode 100644 (file)
index 0000000..087ef94
--- /dev/null
@@ -0,0 +1,169 @@
+
+#include "SALOMELocalTraceTest.hxx"
+
+#include <iostream>
+#include <fstream>
+#include <string>
+#include <cstdlib>
+#include "LocalTraceBufferPool.hxx"
+#include "utilities.h"
+
+using namespace std;
+
+
+// ============================================================================
+/*!
+ *
+ */
+// ============================================================================
+
+void 
+SALOMELocalTraceTest::setUp()
+{
+}
+
+// ============================================================================
+/*!
+ *
+ */
+// ============================================================================
+
+void 
+SALOMELocalTraceTest::tearDown()
+{
+}
+
+#define TRACEFILE "/tmp/traceUnitTest.log"
+
+// ============================================================================
+/*!
+ *  Open and close a trace on a file, test singleton
+ */
+// ============================================================================
+
+void 
+SALOMELocalTraceTest::testSingletonBufferPool()
+{
+  // --- trace on file
+  char *theFileName = TRACEFILE;
+
+  string s = "file:";
+  s += theFileName;
+  CPPUNIT_ASSERT(! setenv("SALOME_trace",s.c_str(),1)); // 1: overwrite
+
+  ofstream traceFile;
+  traceFile.open(theFileName, ios::out | ios::app);
+  CPPUNIT_ASSERT(traceFile); // file created empty, then closed
+  traceFile.close();
+
+  LocalTraceBufferPool* bp1 = LocalTraceBufferPool::instance();
+  CPPUNIT_ASSERT(bp1);
+  LocalTraceBufferPool* bp2 = LocalTraceBufferPool::instance();
+  CPPUNIT_ASSERT(bp1 == bp2);
+  bp1->deleteInstance(bp1);
+}
+
+
+
+#define NUM_THREADS  2
+#define NUM_MESSAGES 5
+void *PrintHello(void *threadid);
+
+// ============================================================================
+/*!
+ *  open a trace on console, multithread writing on file, close
+ */
+// ============================================================================
+
+void 
+SALOMELocalTraceTest::testLoadBufferPoolLocal()
+{
+  string s = "local";
+  CPPUNIT_ASSERT(! setenv("SALOME_trace",s.c_str(),1)); // 1: overwrite
+
+  // --- numThread thread creation for trace generation.
+  int numThread = 2;
+  pthread_t threads[numThread];
+  int rc, t;
+  for(t=0;t<numThread;t++)
+    {
+      MESSAGE("Creating thread " << t);
+      rc = pthread_create(&threads[t], NULL, PrintHello, (void *)t) ;
+      CPPUNIT_ASSERT( !rc);
+    }
+
+  // --- wait for end of each thread producing trace.
+
+  for(t=0;t<numThread;t++)
+    {
+      int ret = pthread_join(threads[t], NULL);
+      MESSAGE("--------------------- end of PrintHello thread " << t);
+    }
+  MESSAGE(" ---- end of PrintHello threads ---- ");
+
+  LocalTraceBufferPool* bp1 = LocalTraceBufferPool::instance();
+  CPPUNIT_ASSERT(bp1);
+  bp1->deleteInstance(bp1);
+}
+
+// ============================================================================
+/*!
+ *  open a trace on a file, multithread writing on file, close
+ */
+// ============================================================================
+
+void 
+SALOMELocalTraceTest::testLoadBufferPoolFile()
+{
+  char *theFileName = TRACEFILE;
+
+  string s = "file:";
+  s += theFileName;
+  //s = "local";
+  CPPUNIT_ASSERT(! setenv("SALOME_trace",s.c_str(),1)); // 1: overwrite
+
+  ofstream traceFile;
+  traceFile.open(theFileName, ios::out | ios::trunc);
+  CPPUNIT_ASSERT(traceFile); // file created empty, then closed
+  traceFile.close();
+
+  // --- NUM_THREADS thread creation for trace generation.
+
+  pthread_t threads[NUM_THREADS];
+  int rc, t;
+  for(t=0;t<NUM_THREADS;t++)
+    {
+      MESSAGE("Creating thread " << t);
+      rc = pthread_create(&threads[t], NULL, PrintHello, (void *)t) ;
+      CPPUNIT_ASSERT( !rc);
+    }
+
+  // --- wait for end of each thread producing trace.
+
+  for(t=0;t<NUM_THREADS;t++)
+    {
+      int ret = pthread_join(threads[t], NULL);
+      MESSAGE("--------------------- end of PrintHello thread " << t);
+    }
+  MESSAGE(" ---- end of PrintHello threads ---- ");
+
+  LocalTraceBufferPool* bp1 = LocalTraceBufferPool::instance();
+  CPPUNIT_ASSERT(bp1);
+  bp1->deleteInstance(bp1);
+}
+
+// ============================================================================
+/*!
+ * NUM_THREAD are created with function PrintHello,
+ * which produces NUM_MESSAGES traces.
+ */
+// ============================================================================
+
+void *PrintHello(void *threadid)
+{
+  int id_thread = (int)threadid;
+  for (int i=0; i<NUM_MESSAGES;i++)
+    MESSAGE("Hello World! This is a trace test : " << id_thread 
+           << " - iter " << i);
+  pthread_exit(NULL);
+}
diff --git a/src/SALOMELocalTrace/Test/SALOMELocalTraceTest.hxx b/src/SALOMELocalTrace/Test/SALOMELocalTraceTest.hxx
new file mode 100644 (file)
index 0000000..660c097
--- /dev/null
@@ -0,0 +1,24 @@
+
+#ifndef _SALOMELOCALTRACETEST_HXX_
+#define _SALOMELOCALTRACETEST_HXX_
+
+#include <cppunit/extensions/HelperMacros.h>
+
+class SALOMELocalTraceTest : public CppUnit::TestFixture
+{
+  CPPUNIT_TEST_SUITE( SALOMELocalTraceTest );
+  CPPUNIT_TEST( testSingletonBufferPool );
+  CPPUNIT_TEST( testLoadBufferPoolLocal );
+  CPPUNIT_TEST( testLoadBufferPoolFile );
+  CPPUNIT_TEST_SUITE_END();
+
+public:
+  void setUp();
+  void tearDown();
+
+  void testSingletonBufferPool();
+  void testLoadBufferPoolLocal();
+  void testLoadBufferPoolFile();
+};
+
+#endif
diff --git a/src/SALOMELocalTrace/Test/TestSALOMELocalTrace.cxx b/src/SALOMELocalTrace/Test/TestSALOMELocalTrace.cxx
new file mode 100644 (file)
index 0000000..3af9746
--- /dev/null
@@ -0,0 +1,12 @@
+
+// --- include all Unit Test from basics until the present directory
+
+#include "SALOMELocalTraceTest.hxx"
+
+// --- Registers the fixture into the 'registry'
+
+CPPUNIT_TEST_SUITE_REGISTRATION( SALOMELocalTraceTest );
+
+// --- generic Main program from Basic/Test
+
+#include "BasicMainTest.hxx"
diff --git a/src/SALOMELocalTrace/Test/TestSALOMELocalTrace.py b/src/SALOMELocalTrace/Test/TestSALOMELocalTrace.py
new file mode 100644 (file)
index 0000000..b909fa4
--- /dev/null
@@ -0,0 +1,16 @@
+
+import sys, os,signal,string,commands
+import runSalome
+
+# get SALOME environment :
+# here we need KERNEL_ROOT_DIR, PATH, LD_LIBRARY_PATH
+
+args, modules_list, modules_root_dir = runSalome.get_config()
+runSalome.set_env(args, modules_list, modules_root_dir)
+
+# execute Unit Test
+
+command = ['TestSALOMELocalTrace']
+ret = os.spawnvp(os.P_WAIT, command[0], command)
+
+# no process to kill
index 40238630f67bf6d49af0bf362f883b2f12253f9a..654f615066cabadb6344341f622b3051dd70d3c8 100644 (file)
 
 #define MESS_INIT(deb) std::ostringstream os; os<<deb
 #define MESS_BEGIN(deb) MESS_INIT(deb)<<__FILE__ <<" ["<<__LINE__<<"] : "
-#define MESS_END endl; LocalTraceBufferPool::instance()->insert(NORMAL_MESS, os.str().c_str());
-#define MESS_ABORT endl; LocalTraceBufferPool::instance()->insert(ABORT_MESS, os.str().c_str());
+#define MESS_END std::endl; LocalTraceBufferPool::instance()->insert(NORMAL_MESS, os.str().c_str());
+#define MESS_ABORT std::endl; LocalTraceBufferPool::instance()->insert(ABORT_MESS, os.str().c_str());
 
 // --- Some macros are always defined (without _DEBUG_): for use with release version
 
 #define INFOS(msg) {MESS_BEGIN("- Trace ") << msg << MESS_END}
 #define PYSCRIPT(msg) {MESS_INIT("---PYSCRIPT--- ") << msg << MESS_END}
 #define INTERRUPTION(msg) {MESS_BEGIN("- INTERRUPTION: ")<< msg << MESS_ABORT}
-#define IMMEDIATE_ABORT(code) {cout <<std::flush; \
-                               cerr << "- ABORT " << __FILE__ << " [" <<__LINE__<< "] : " << flush; \
-                               cerr << "ABORT return code= "<< code << endl; \
+#ifdef WNT
+#define IMMEDIATE_ABORT(code) {std::cout <<std::flush; \
+                               std::cerr << "- ABORT " << __FILE__ << " [" <<__LINE__<< "] : " << flush; \
+                               std::cerr << "ABORT return code= "<< code << std::endl; \
+                               /*std::*/exit(code);}
+#else
+#define IMMEDIATE_ABORT(code) {std::cout <<std::flush; \
+                               std::cerr << "- ABORT " << __FILE__ << " [" <<__LINE__<< "] : " << flush; \
+                               std::cerr << "ABORT return code= "<< code << std::endl; \
                                std::exit(code);}
+#endif
 
 /* --- To print date and time of compilation of current source --- */
 
index 3df7820fdcc332bce319a0f96f6104a35a1e6e01..a05ab828c015d069fe12afa538bd5eb4d1f2f3cb 100644 (file)
@@ -42,11 +42,11 @@ EXPORT_PYSCRIPTS =
 
 # Libraries targets
 
-LIB = libSALOMETraceCollector.la 
+LIB = libwith_loggerTraceCollector.la 
 LIB_SRC = SALOMETraceCollector.cxx \
          TraceCollector_WaitForServerReadiness.cxx
 
 LIB_CLIENT_IDL = Logger.idl 
-LDFLAGS+= 
+LDFLAGS+= -lSALOMELocalTrace
 
 @CONCLUDE@
index 1c070984869bc95190154f320a421a54873c7166..bc1e71ad711bde023f261877b386e8c39935632c 100644 (file)
@@ -34,38 +34,24 @@ using namespace std;
 
 #include "SALOMETraceCollector.hxx"
 #include "TraceCollector_WaitForServerReadiness.hxx"
-//#include "SALOME_Log.hxx"
 #include <SALOMEconfig.h>
 #include CORBA_CLIENT_HEADER(Logger)
 
 // Class attributes initialisation, for class method SALOMETraceCollector::run
 
-SALOMETraceCollector* SALOMETraceCollector::_singleton = 0;
-pthread_mutex_t SALOMETraceCollector::_singletonMutex;
-int SALOMETraceCollector::_threadToClose = 0;
-pthread_t SALOMETraceCollector::_threadId = 0; // used to control single run
-int SALOMETraceCollector::_toFile = 0;
-std::string SALOMETraceCollector::_fileName = "";
 CORBA::ORB_ptr SALOMETraceCollector::_orb = 0;
 
 // ============================================================================
 /*!
- *  This class replaces LocalTraceCollector, which is to use outside SALOME,
- *  without CORBA.
+ *  This class is for use with CORBA, inside SALOME.
+ *  Type of trace (and corresponding class) is choosen in LocalTraceBufferPool.
  *
- *  guarantees a unique object instance of the class (singleton thread safe)
+ *  Guarantees a unique object instance of the class (singleton thread safe)
  *  a separate thread for loop to print traces is launched.
- *  \param typeTrace 0=standard out, 1=file(/tmp/tracetest.log), 2=CORBA log
- *  If typeTrace=0, checks environment for "SALOME_trace". Test values in
- *  the following order:
- *  - "local"  standard out
- *  - "with_logger" CORBA log
- *  - anything else is kept as a file name
  */
 // ============================================================================
 
-SALOMETraceCollector* SALOMETraceCollector::instance(CORBA::ORB_ptr theOrb,
-                                                  int typeTrace)
+BaseTraceCollector* SALOMETraceCollector::instance()
 {
   if (_singleton == 0) // no need of lock when singleton already exists
     {
@@ -74,33 +60,17 @@ SALOMETraceCollector* SALOMETraceCollector::instance(CORBA::ORB_ptr theOrb,
       if (_singleton == 0)                     // another thread may have got
        {                                      // the lock after the first test
          _singleton = new SALOMETraceCollector();
+         int argc=0;
+         char *_argv=0;
+         char ** argv = &_argv;
+         _orb = CORBA::ORB_init (argc, argv);
 
-         _fileName = "/tmp/tracetest.log";
-         _toFile=0;
-         _orb = theOrb;
-         if (typeTrace)       // caller sets a value different from default=0
-           _toFile = typeTrace; 
-         else                 // check environment
-           {
-             char* traceKind = getenv("SALOME_trace");
-             //cout<<"SALOME_trace="<<traceKind<<endl;
-             if (traceKind)
-               {
-                 if (strcmp(traceKind,"local")==0) _toFile=0;
-                 else if (strcmp(traceKind,"with_logger")==0) _toFile=2;
-                 else
-                   {
-                     _toFile=1;
-                     _fileName = traceKind;
-                   }       
-               }
-           }
-         //cout <<"_toFile: "<<_toFile<<" _fileName: "<<_fileName<<endl;
-
+         sem_init(&_sem,0,0); // to wait until run thread is initialized
          pthread_t traceThread;
          int bid;
          int re2 = pthread_create(&traceThread, NULL,
                                   SALOMETraceCollector::run, (void *)bid);
+         sem_wait(&_sem);
        }
       ret = pthread_mutex_unlock(&_singletonMutex); // release lock
     }
@@ -120,131 +90,80 @@ SALOMETraceCollector* SALOMETraceCollector::instance(CORBA::ORB_ptr theOrb,
 
 void* SALOMETraceCollector::run(void *bid)
 {
-  int isOKtoRun = 0;
-  int ret = pthread_mutex_lock(&_singletonMutex); // acquire lock to be alone
-  if (! _threadId)  // only one run
-    {
-      isOKtoRun = 1;
-      _threadId = pthread_self();
-    }
-  else cout << "----- Comment est-ce possible de passer la ? -------" <<endl;
-  ret = pthread_mutex_unlock(&_singletonMutex); // release lock
+  _threadId = new pthread_t;
+  *_threadId = pthread_self();
+  sem_post(&_sem); // unlock instance
 
-  if (isOKtoRun)
-    { 
-      _threadId = pthread_self();
-      LocalTraceBufferPool* myTraceBuffer = LocalTraceBufferPool::instance();
-      LocalTrace_TraceInfo myTrace;
+  LocalTraceBufferPool* myTraceBuffer = LocalTraceBufferPool::instance();
+  LocalTrace_TraceInfo myTrace;
 
-      // if trace in file requested, opens a file with append mode
-      // so, several processes can share the same file
-      // if CORBA collection requested, wait for Logger server readiness
+  SALOME_Logger::Logger_var m_pInterfaceLogger;
+  CORBA::Object_var obj;
 
-      ofstream traceFile;
-      SALOME_Logger::Logger_var m_pInterfaceLogger;
-      CORBA::Object_var obj;
+  obj = TraceCollector_WaitForServerReadiness(_orb,"Logger");
+  if (!CORBA::is_nil(obj))
+    m_pInterfaceLogger = SALOME_Logger::Logger::_narrow(obj);
+  if (CORBA::is_nil(m_pInterfaceLogger))
+    {
+      cerr << "Logger server not found ! Abort" << endl;
+      cerr << flush ; 
+      exit(1);
+    } 
+  else
+    {
+      CORBA::String_var LogMsg =
+       CORBA::string_dup("\n---Init logger trace---\n");
+      m_pInterfaceLogger->putMessage(LogMsg);
+      DEVTRACE("Logger server found");
+    }
 
-      switch (_toFile)
+  // --- Loop until there is no more buffer to print,
+  //     and no ask for end from destructor.
+
+  while ((!_threadToClose) || myTraceBuffer->toCollect() )
+    {
+      if (_threadToClose)
        {
-       case 1 :  // --- trace to file
-         {
-           const char *fileName = _fileName.c_str();
-           traceFile.open(fileName, ios::out | ios::app);
-           if (!traceFile)
-             {
-               cerr << "impossible to open trace file "<< fileName << endl;
-               exit (1);
-             }
-         }
-         break;
-       case 2 :  // --- trace collection via CORBA
-         obj = TraceCollector_WaitForServerReadiness(_orb,"Logger");
-         if (!CORBA::is_nil(obj))
-           m_pInterfaceLogger = SALOME_Logger::Logger::_narrow(obj);
-         if (CORBA::is_nil(m_pInterfaceLogger))
-           {
-             cerr << "Logger server not found ! Abort" << endl;
-             cerr << flush ; 
-             exit(1);
-           } 
-         else
-           {
-             CORBA::String_var LogMsg =
-               CORBA::string_dup("\n---Init logger trace---\n");
-             m_pInterfaceLogger->putMessage(LogMsg);
-             //cout << " Logger server found" << endl;
-           }
-         break;
-       case 0 : ; // --- trace to standard output
-       default :  // --- on standard output, too
-         break;
+         DEVTRACE("SALOMETraceCollector _threadToClose");
+         //break;
        }
 
-      // Loop until there is no more buffer to print,
-      // and no ask for end from destructor.
-
-      while ((!_threadToClose) || myTraceBuffer->toCollect() )
+      int fullBuf = myTraceBuffer->retrieve(myTrace);
+      if (!CORBA::is_nil(_orb))
        {
-         int fullBuf = myTraceBuffer->retrieve(myTrace);
          if (myTrace.traceType == ABORT_MESS)
            {
-             switch (_toFile)
-               {
-               case 2 :  // --- trace collection via CORBA
-                 {
-                   stringstream abortMessage("");
-                   abortMessage << "INTERRUPTION from thread "
-                                << myTrace.threadId << " : " << myTrace.trace;
-                   CORBA::String_var LogMsg =
-                     CORBA::string_dup(abortMessage.str().c_str());
-                   m_pInterfaceLogger->putMessage(LogMsg);
-                   exit(1);
-                 }
-                 break;
-               case 1 :  // --- trace to file
-                 traceFile << "INTERRUPTION from thread " << myTrace.threadId
-                           << " : " <<  myTrace.trace;
-                 traceFile.close();
-                 // no break here !
-               case 0 :  // --- trace to standard output
-               default : // --- on standard output, too
-                 cout << flush ;
-                 cerr << "INTERRUPTION from thread " << myTrace.threadId
-                      << " : " <<  myTrace.trace;
-                 cerr << flush ; 
-                 exit(1);     
-                 break;
-               }
+             stringstream abortMessage("");
+#ifndef WNT
+             abortMessage << "INTERRUPTION from thread "
+                          << myTrace.threadId << " : " << myTrace.trace;
+#else
+             abortMessage << "INTERRUPTION from thread "
+                          << (void*)&myTrace.threadId 
+                          << " : " << myTrace.trace;
+#endif
+             CORBA::String_var LogMsg =
+               CORBA::string_dup(abortMessage.str().c_str());
+             m_pInterfaceLogger->putMessage(LogMsg);
+             exit(1);
            }
          else
            {
-             switch (_toFile)
-               {
-               case 2 :  // --- trace collection via CORBA
-                 {
-                   stringstream aMessage("");
-                   aMessage << "th. " << myTrace.threadId
-                            << " " << myTrace.trace;
-                   CORBA::String_var LogMsg =
-                     CORBA::string_dup(aMessage.str().c_str());
-                   m_pInterfaceLogger->putMessage(LogMsg);
-                 }
-                 break;
-               case 1 :  // --- trace to file
-                 traceFile << "th. " << myTrace.threadId
-                           << " " << myTrace.trace;
-                 break;
-               case 0 :  // --- trace to standard output
-               default : // --- on standard output, too
-                 cout << "th. " << myTrace.threadId << " " << myTrace.trace;
-                 break;
-               }
+             stringstream aMessage("");
+#ifndef WNT
+             aMessage << "th. " << myTrace.threadId
+#else
+               aMessage << "th. " << (void*)&myTrace.threadId
+#endif
+                      << " " << myTrace.trace;
+             CORBA::String_var LogMsg =
+               CORBA::string_dup(aMessage.str().c_str());
+             m_pInterfaceLogger->putMessage(LogMsg);
            }
        }
-
-      if (_toFile==1) traceFile.close();
     }
   pthread_exit(NULL);
+  return NULL;
 }
 
 // ============================================================================
@@ -255,16 +174,25 @@ void* SALOMETraceCollector::run(void *bid)
 
 SALOMETraceCollector:: ~SALOMETraceCollector()
 {
-  LocalTraceBufferPool* myTraceBuffer = LocalTraceBufferPool::instance();
-  _threadToClose = 1;
-  myTraceBuffer->insert(NORMAL_MESS,"end of trace "); //needed to wake up thread
-  if (_threadId)
+  int ret;
+  ret = pthread_mutex_lock(&_singletonMutex); // acquire lock to be alone
+  if (_singleton)
     {
-      int ret = pthread_join(_threadId, NULL);
-      if (ret) cout << "error close SALOMETraceCollector : "<< ret << endl;
-      else cout << "SALOMETraceCollector destruction OK" << endl;
+      DEVTRACE("SALOMETraceCollector:: ~SALOMETraceCollector()");
+      LocalTraceBufferPool* myTraceBuffer = LocalTraceBufferPool::instance();
+      _threadToClose = 1;
+      myTraceBuffer->insert(NORMAL_MESS,"end of trace\n"); // to wake up thread
+      if (_threadId)
+       {
+         int ret = pthread_join(*_threadId, NULL);
+         if (ret) cerr << "error close SALOMETraceCollector : "<< ret << endl;
+         else DEVTRACE("SALOMETraceCollector destruction OK");
+         _threadId = 0;
+         _threadToClose = 0;
+       }
+      _singleton = 0;
+      ret = pthread_mutex_unlock(&_singletonMutex); // release lock
     }
-  delete myTraceBuffer;
 }
 
 // ============================================================================
@@ -277,6 +205,20 @@ SALOMETraceCollector:: ~SALOMETraceCollector()
 SALOMETraceCollector::SALOMETraceCollector()
 {
   _threadId=0;
+  _threadToClose = 0;
 }
 
+// ============================================================================
+/*!
+ * 
+ */
+// ============================================================================
 
+extern "C"
+{
+  BaseTraceCollector *SingletonInstance(void)
+  {
+    BaseTraceCollector *instance = SALOMETraceCollector::instance();
+    return instance;
+  }
+}
index 7d1b4bbb801185abfb14746bc6113540820d80e6..35139f6b654adfd21d3e4f5a163d27b83c1d77be 100644 (file)
 
 #include <string>
 #include <CORBA.h>
+#include "BaseTraceCollector.hxx"
 #include "LocalTraceBufferPool.hxx"
 
-//! See LocalTraceCollector instead of SALOMETraceCollector for usage without CORBA
+//! See LocalTraceCollector instead of SALOMETraceCollector,
+//! for usage without CORBA
 
-class SALOMETraceCollector
+#if defined SALOMETRACECOLLECTOR_EXPORTS
+#if defined WIN32
+#define SALOMETRACECOLLECTOR_EXPORT __declspec( dllexport )
+#else
+#define SALOMETRACECOLLECTOR_EXPORT
+#endif
+#else
+#if defined WNT
+#define SALOMETRACECOLLECTOR_EXPORT __declspec( dllimport )
+#else
+#define SALOMETRACECOLLECTOR_EXPORT
+#endif
+#endif
+
+class SALOMETRACECOLLECTOR_EXPORT SALOMETraceCollector:
+  public BaseTraceCollector
 {
  public:
-  static SALOMETraceCollector* instance(CORBA::ORB_ptr theOrb, int typeTrace=0);
+  static BaseTraceCollector* instance();
   static void *run(void *bid);
   ~SALOMETraceCollector();
 
@@ -44,12 +61,6 @@ class SALOMETraceCollector
   SALOMETraceCollector();
 
  private:
-  static int _threadToClose;
-  static int _toFile;
-  static SALOMETraceCollector* _singleton;
-  static pthread_mutex_t _singletonMutex;
-  static pthread_t _threadId;
-  static std::string _fileName;
   static CORBA::ORB_ptr _orb;
 };
 
diff --git a/src/SALOMETraceCollector/Test/Makefile.in b/src/SALOMETraceCollector/Test/Makefile.in
new file mode 100644 (file)
index 0000000..ddc7c53
--- /dev/null
@@ -0,0 +1,64 @@
+#  SALOMELocalTrace : log on local machine
+#
+#  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
+#  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
+# 
+#  This library is free software; you can redistribute it and/or 
+#  modify it under the terms of the GNU Lesser General Public 
+#  License as published by the Free Software Foundation; either 
+#  version 2.1 of the License. 
+# 
+#  This library is distributed in the hope that it will be useful, 
+#  but WITHOUT ANY WARRANTY; without even the implied warranty of 
+#  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
+#  Lesser General Public License for more details. 
+# 
+#  You should have received a copy of the GNU Lesser General Public 
+#  License along with this library; if not, write to the Free Software 
+#  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
+# 
+#  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
+#
+#
+#
+#  File   : Makefile.in
+#  Author : Paul RASCLE (EDF)
+#  Module : SALOME
+#  $Header$
+
+top_srcdir=@top_srcdir@
+top_builddir=../../..
+srcdir=@srcdir@
+VPATH=.:@srcdir@:@top_srcdir@/idl
+
+
+@COMMENCE@
+
+# header files  
+EXPORT_HEADERS= SALOMETraceCollectorTest.hxx
+
+EXPORT_PYSCRIPTS = TestSALOMETraceCollector.py
+
+# Libraries targets
+
+LIB = libSALOMETraceCollectorTest.la 
+LIB_SRC = SALOMETraceCollectorTest.cxx
+
+# Executables targets
+
+BIN = TestSALOMETraceCollector
+BIN_SRC = 
+
+
+CXXFLAGS += @CPPUNIT_INCLUDES@
+CPPFLAGS += @CPPUNIT_INCLUDES@
+
+LIBS= @LIBS@ @CPPUNIT_LIBS@
+
+LDFLAGS+=
+
+LDFLAGSFORBIN+= \
+ -lSALOMELocalTraceTest -lSALOMELocalTrace -lSALOMEBasics \
+ -lSALOMETraceCollectorTest
+
+@CONCLUDE@
diff --git a/src/SALOMETraceCollector/Test/SALOMETraceCollectorTest.cxx b/src/SALOMETraceCollector/Test/SALOMETraceCollectorTest.cxx
new file mode 100644 (file)
index 0000000..2a84b4b
--- /dev/null
@@ -0,0 +1,90 @@
+
+#include "SALOMETraceCollectorTest.hxx"
+
+#include <iostream>
+#include <fstream>
+#include <string>
+#include <cstdlib>
+#include "LocalTraceBufferPool.hxx"
+#include "utilities.h"
+
+using namespace std;
+
+// ============================================================================
+/*!
+ *
+ */
+// ============================================================================
+
+void 
+SALOMETraceCollectorTest::setUp()
+{
+}
+
+// ============================================================================
+/*!
+ *
+ */
+// ============================================================================
+
+void 
+SALOMETraceCollectorTest::tearDown()
+{
+}
+
+#define NUM_THREADS  20
+#define NUM_MESSAGES 20
+void *PrintHello(void *threadid);
+
+// ============================================================================
+/*!
+ *  open a trace on a CORBA, multithread writing on file, close
+ */
+// ============================================================================
+
+void 
+SALOMETraceCollectorTest::testLoadBufferPoolCORBA()
+{
+  string s = "with_logger";
+  CPPUNIT_ASSERT(! setenv("SALOME_trace",s.c_str(),1)); // 1: overwrite
+
+  // --- NUM_THREADS thread creation for trace generation.
+
+  pthread_t threads[NUM_THREADS];
+  int rc, t;
+  for(t=0;t<NUM_THREADS;t++)
+    {
+      MESSAGE("Creating thread " << t);
+      rc = pthread_create(&threads[t], NULL, PrintHello, (void *)t) ;
+      CPPUNIT_ASSERT( !rc);
+    }
+
+  // --- wait for end of each thread producing trace.
+
+  for(t=0;t<NUM_THREADS;t++)
+    {
+      int ret = pthread_join(threads[t], NULL);
+      MESSAGE("--------------------- end of PrintHello thread " << t);
+    }
+  MESSAGE(" ---- end of PrintHello threads ---- ");
+
+  LocalTraceBufferPool* bp1 = LocalTraceBufferPool::instance();
+  CPPUNIT_ASSERT(bp1);
+  bp1->deleteInstance(bp1);
+}
+
+// ============================================================================
+/*!
+ * NUM_THREAD are created with function PrintHello,
+ * which produces NUM_MESSAGES traces.
+ */
+// ============================================================================
+
+void *PrintHello(void *threadid)
+{
+  int id_thread = (int)threadid;
+  for (int i=0; i<NUM_MESSAGES;i++)
+    MESSAGE("Hello World! This is a trace test : " << id_thread 
+           << " - iter " << i);
+  pthread_exit(NULL);
+}
diff --git a/src/SALOMETraceCollector/Test/SALOMETraceCollectorTest.hxx b/src/SALOMETraceCollector/Test/SALOMETraceCollectorTest.hxx
new file mode 100644 (file)
index 0000000..ed25198
--- /dev/null
@@ -0,0 +1,20 @@
+
+#ifndef _SALOMETRACECOLLECTORTTEST_HXX_
+#define _SALOMETRACECOLLECTORTTEST_HXX_
+
+#include <cppunit/extensions/HelperMacros.h>
+
+class SALOMETraceCollectorTest : public CppUnit::TestFixture
+{
+  CPPUNIT_TEST_SUITE( SALOMETraceCollectorTest );
+  CPPUNIT_TEST( testLoadBufferPoolCORBA );
+  CPPUNIT_TEST_SUITE_END();
+
+public:
+  void setUp();
+  void tearDown();
+
+  void testLoadBufferPoolCORBA();
+};
+
+#endif
diff --git a/src/SALOMETraceCollector/Test/TestSALOMETraceCollector.cxx b/src/SALOMETraceCollector/Test/TestSALOMETraceCollector.cxx
new file mode 100644 (file)
index 0000000..2be9c0c
--- /dev/null
@@ -0,0 +1,14 @@
+
+// --- include all Unit Test from basics until the present directory
+
+#include "SALOMELocalTraceTest.hxx"
+#include "SALOMETraceCollectorTest.hxx"
+
+// --- Registers the fixture into the 'registry'
+
+CPPUNIT_TEST_SUITE_REGISTRATION( SALOMELocalTraceTest );
+CPPUNIT_TEST_SUITE_REGISTRATION( SALOMETraceCollectorTest );
+
+// --- generic Main program from Basic/Test
+
+#include "BasicMainTest.hxx"
diff --git a/src/SALOMETraceCollector/Test/TestSALOMETraceCollector.py b/src/SALOMETraceCollector/Test/TestSALOMETraceCollector.py
new file mode 100644 (file)
index 0000000..2ae9f8d
--- /dev/null
@@ -0,0 +1,29 @@
+
+import sys, os,signal,string,commands
+import runSalome
+import orbmodule
+import TestKiller
+
+# get SALOME environment :
+
+args, modules_list, modules_root_dir = runSalome.get_config()
+runSalome.set_env(args, modules_list, modules_root_dir)
+
+# launch CORBA naming server
+
+clt=orbmodule.client()
+
+# launch CORBA logger server
+
+myServer=runSalome.LoggerServer(args)
+myServer.run()
+clt.waitLogger("Logger")
+
+# execute Unit Test
+
+command = ['TestSALOMETraceCollector']
+ret = os.spawnvp(os.P_WAIT, command[0], command)
+
+# kill Test process 
+
+TestKiller.killProcess(runSalome.process_id)
index 9e91b71d9db7148a44a10ae60b7ab48574173de5..56321a0478f1d5f3012996ff9901fd16019b3c30 100644 (file)
 #include <iostream>
 #include <ctime>
 
+#ifdef WNT
+#include <omnithread/pthread_nt.h>
+#endif
+
 using namespace std;
 
 // ============================================================================
@@ -79,10 +83,10 @@ CORBA::Object_ptr TraceCollector_WaitForServerReadiness(CORBA::ORB_ptr orb,
              if (!CORBA::is_nil(theObj))
                inc = CosNaming::NamingContext::_narrow(theObj);
            }  
-         catch( CORBA::COMM_FAILURE& )
+         catch( CORBA::SystemException& )
            {
              cout << "TraceCollector_WaitForServerReadiness: "
-                  << "CORBA::COMM_FAILURE: "
+                  << "CORBA::SystemException: "
                   << "Unable to contact the Naming Service" << endl;
            }
           catch(...)
@@ -99,8 +103,8 @@ CORBA::Object_ptr TraceCollector_WaitForServerReadiness(CORBA::ORB_ptr orb,
                  obj = inc->resolve(name);
                  if (!CORBA::is_nil(obj))
                    {
-                     cout << "TraceCollector_WaitForServerReadiness: "
-                          << serverName << " found in CORBA Name Service" << endl;
+                     //cout << "TraceCollector_WaitForServerReadiness: "
+                     //           << serverName << " found in CORBA Name Service" << endl;
                      break;
                    }
                }
@@ -109,7 +113,11 @@ CORBA::Object_ptr TraceCollector_WaitForServerReadiness(CORBA::ORB_ptr orb,
                  cout << "Caught exception: Naming Service can't found Logger";
                }
            }
+#ifndef WNT
          int a = nanosleep(&ts_req,&ts_rem);
+#else
+         Sleep(TIMESleep / 1000000);
+#endif
          cout << "TraceCollector_WaitForServerReadiness: retry look for"
               << serverName << endl;
        }          
index a3d0a4fdcedd42df54962a0567c1ebd21fa4d055..866f491f1576a405d83ec0388d22e5b86f9d488a 100644 (file)
@@ -23,12 +23,12 @@ LIB_SRC =   \
 # Executables targets
 BIN = 
 BIN_SRC = 
-LIB_SERVER_IDL = SALOMEDS.idl SALOMEDS_Attributes.idl SALOME_Exception.idl
+LIB_SERVER_IDL = SALOMEDS.idl SALOMEDS_Attributes.idl SALOME_Exception.idl SALOME_GenericObj.idl
 BIN_SERVER_IDL = SALOMEDS.idl SALOMEDS_Attributes.idl
 BIN_CLIENT_IDL = 
 
-CPPFLAGS+=$(OCC_INCLUDES) $(HDF5_INCLUDES)
-CXXFLAGS+=$(OCC_CXXFLAGS)
+CPPFLAGS+=$(OCC_INCLUDES) $(HDF5_INCLUDES) $(BOOST_CPPFLAGS) 
+CXXFLAGS+=$(OCC_CXXFLAGS) $(BOOST_CPPFLAGS) 
 LDFLAGS+= -lOpUtil $(CAS_LDPATH) -lTKernel
 
 @CONCLUDE@
index e250257af13543478515d606348f082965e72b12..8c292d49376556979e982be82cf15e538150cd7e 100644 (file)
@@ -11,9 +11,7 @@
 #include "utilities.h"
 
 #include <TCollection_AsciiString.hxx> 
-#include <stdio.h>
-#include <iostream.h> 
-#include <fstream.h>
+
 #include <OSD_Path.hxx>
 #include <OSD_File.hxx>
 #include <OSD_Directory.hxx>
 #include <OSD_SingleProtection.hxx>
 #include <OSD_FileIterator.hxx>
 
+#ifndef WNT
+#include <stdio.h>
+#include <iostream.h> 
+#include <fstream.h>
 #include <sys/time.h>
+#else
+#endif
 #include <stdlib.h>
 
 #include CORBA_SERVER_HEADER(SALOMEDS_Attributes)
@@ -62,8 +66,6 @@ std::string SALOMEDS_Tool::GetTmpDir()
   TCollection_AsciiString aSubDir(aRND);
   if(aSubDir.Length() <= 1) aSubDir = TCollection_AsciiString("123409876");
 
-  MESSAGE("#### RND "  << aRND);
-
   aTmpDir += aSubDir; //Get RND sub directory
 
 #ifdef WIN32
@@ -409,11 +411,3 @@ void SALOMEDS_Tool::GetAllChildren( SALOMEDS::Study_var               theStudy,
 
 
 
-
-
-
-
-
-
-
-
index e3d1d39930add8b3e25f9c14ff6fcf5b3523ba8c..517a1daa4fffecd65d08bafee3b1eb59b7a75a73 100644 (file)
 #include <string>
 #include <list> 
 
+
 // IDL headers
 #include "SALOMEconfig.h"
 #include CORBA_SERVER_HEADER(SALOMEDS)
 
-class SALOMEDS_Tool                                
+#ifdef WNT
+#include <SALOME_WNT.hxx>
+#else
+#define SALOME_WNT_EXPORT
+#endif
+
+class SALOME_WNT_EXPORT SALOMEDS_Tool                                
 {
 
 public:
index c5b22b104f1f706e98b5f5ade45b54e521f1f37a..40a5e8e626bf004b3be700d5e5ee627148eb25bb 100644 (file)
@@ -39,14 +39,14 @@ EXPORT_PYSCRIPTS = SALOME_TestComponentPy.py TestComponentPy.py
 
 LIB = libSalomeTestComponentEngine.la 
 LIB_SRC = SALOME_TestComponent_i.cxx
-LIB_CLIENT_IDL = SALOME_Component.idl SALOME_TestComponent.idl
+LIB_CLIENT_IDL = SALOME_Component.idl SALOME_TestComponent.idl SALOME_Exception.idl
 
 # Executables targets
 BIN = TestContainer TestLogger
 BIN_SRC = 
 
 LDFLAGS+= -lSalomeNotification -lSalomeNS -lSalomeContainer -lRegistry -lOpUtil -lSALOMELocalTrace -lSalomeResourcesManager
-LDFLAGSFORBIN= $(LDFLAGS) -lSALOMETraceCollector
+LDFLAGSFORBIN+= -lSalomeNotification -lSalomeNS -lSalomeContainer -lRegistry -lOpUtil -lSALOMELocalTrace -lSalomeResourcesManager -lSALOMEBasics
 
 
 @CONCLUDE@
index 413fd2fa04bfecbc49d694c2d70ca6c6cdd66272..64772b14e21b8c234f8321dda49f46044d83c842 100644 (file)
@@ -26,6 +26,7 @@
 //  Module : SALOME
 //  $Header$
 
+#define private protected
 #include "utilities.h"
 #include "SALOME_TestComponent_i.hxx"
 #include <stdio.h>
@@ -40,10 +41,10 @@ Engines_TestComponent_i::Engines_TestComponent_i(CORBA::ORB_ptr orb,
                                                 const char *interfaceName) :
   Engines_Component_i(orb, poa, contId, instanceName, interfaceName)
 {
-  MESSAGE("activate object")
+  MESSAGE("activate object");
   _thisObj = this ;
   _id = _poa->activate_object(_thisObj);
-  //SCRUTE(this)
+  SCRUTE(pd_refCount);
 }
 
 Engines_TestComponent_i::Engines_TestComponent_i()
@@ -52,12 +53,14 @@ Engines_TestComponent_i::Engines_TestComponent_i()
 
 Engines_TestComponent_i::~Engines_TestComponent_i()
 {
+  MESSAGE("~Engines_TestComponent_i()");
 }
 
 char* Engines_TestComponent_i::Coucou(CORBA::Long L)
 {
   char s[100];
   sprintf(s, "TestComponent_i : L = %ld", (long) L);
+  SCRUTE(pd_refCount);
 
   return CORBA::string_dup(s);
 }
index b6c2484631b151d525e25ecd96dcd7dd083f7e21..2dacf6dbbd5e886165a12cbda5abebbef970e5d8 100755 (executable)
@@ -34,7 +34,6 @@ import string
 from omniORB import CORBA
 import CosNaming
 import Engines
-from Utils_Identity import getShortHostName
 
 
 #initialise the ORB
@@ -49,7 +48,8 @@ if rootContext is None:
     sys.exit(1)
 
 #resolve the name /Containers.dir/FactoryServerPy.object
-machineName= getShortHostName()
+myMachine=string.split(os.getenv( "HOSTNAME" ),'.')
+machineName= myMachine[0]
 containerName = "FactoryServerPy"
 name = [CosNaming.NameComponent("Containers","dir"),
         CosNaming.NameComponent(machineName,"dir"),
index e8492fb6e94c77cfa2f00e17346f97a63bc5dcee..de2de52a08023a6b49900feb5cd31be575567f38 100644 (file)
@@ -34,6 +34,7 @@
 #include CORBA_CLIENT_HEADER(SALOME_TestComponent)
 
 #include "SALOME_NamingService.hxx"
+#include "NamingService_WaitForServerReadiness.hxx"
 #include "OpUtil.hxx"
 #include "Utils_ORB_INIT.hxx"
 #include "Utils_SINGLETON.hxx"
@@ -59,126 +60,56 @@ static ostream& operator<<(ostream& os, const CORBA::Exception& e)
   return os;
 }
 
+Engines::TestComponent_ptr create_instance(Engines::Container_ptr iGenFact,
+                                          string componenttName)
+{
+  bool isLib =
+    iGenFact->load_component_Library(componenttName.c_str());
+  //    iGenFact->load_component_Library("SalomeTestComponent");
+  ASSERT(isLib);
+  CORBA::Object_var obj =
+    //    iGenFact->create_component_instance("SalomeTestComponent",
+    iGenFact->create_component_instance(componenttName.c_str(),
+                                       0);
+  Engines::TestComponent_var anInstance = Engines::TestComponent::_narrow(obj);
+  MESSAGE("create anInstance");
+  SCRUTE(anInstance->instanceName());
+  return anInstance._retn();
+}
 
 int main (int argc, char * argv[])
 {
-
   // Initializing omniORB
   ORB_INIT &init = *SINGLETON_<ORB_INIT>::Instance() ;
   CORBA::ORB_var &orb = init( argc , argv ) ;
-  SALOMETraceCollector *myThreadTrace = SALOMETraceCollector::instance(orb);
+  //  LocalTraceCollector *myThreadTrace = SALOMETraceCollector::instance(orb);
 
   try
     {
-
-
-    
-      // use IOR to find container
-      //if (argc != 2) { return 1; }
-      //CORBA::Object_var obj = orb->string_to_object(argv[1]);
-      //Engines::Container_var iGenFact = Engines::Container::_narrow(obj);
-
-      // Obtain a reference to the root POA
-      //
-      long TIMESleep = 250000000;
-      int NumberOfTries = 40;
-      int a;
-      timespec ts_req;
-      ts_req.tv_nsec=TIMESleep;
-      ts_req.tv_sec=0;
-      timespec ts_rem;
-      ts_rem.tv_nsec=0;
-      ts_rem.tv_sec=0;
-      CosNaming::NamingContext_var inc;
-      PortableServer::POA_var poa;
-      CORBA::Object_var theObj;
-      CORBA::Object_var obj;
-      CORBA::Object_var object;
-      SALOME_NamingService &naming = *SINGLETON_<SALOME_NamingService>::Instance() ;
-      int TEST_CONTAINER=0;
-      const char * Env = getenv("USE_LOGGER"); 
-      int EnvL =0;
-      if ((Env!=NULL) && (strlen(Env)))
-       EnvL=1;
-      CosNaming::Name name;
-      name.length(1);
-      name[0].id=CORBA::string_dup("Logger");    
-      PortableServer::POAManager_var manager; 
-      for (int i = 1; i<=NumberOfTries; i++)
-       {
-         if (i!=1) 
-           a=nanosleep(&ts_req,&ts_rem);
-         try
-           { 
-             obj = orb->resolve_initial_references("RootPOA");
-             if(!CORBA::is_nil(obj))
-               poa = PortableServer::POA::_narrow(obj);
-             if(!CORBA::is_nil(poa))
-               manager = poa->the_POAManager();
-             if(!CORBA::is_nil(orb)) 
-               theObj = orb->resolve_initial_references("NameService");
-             if (!CORBA::is_nil(theObj))
-               inc = CosNaming::NamingContext::_narrow(theObj);
-           }
-         catch( CORBA::COMM_FAILURE& )
-           {
-             INFOS( "Test Container: CORBA::COMM_FAILURE: Unable to contact the Naming Service" )
-               }
-         if(!CORBA::is_nil(inc))
-           {
-             MESSAGE( "Test Container: Naming Service was found" )
-               if(EnvL==1)
-                 {
-                   for(int j=1; j<=NumberOfTries; j++)
-                     {
-                       if (j!=1) 
-                         a=nanosleep(&ts_req, &ts_rem);
-                       try
-                         {
-                           object = inc->resolve(name);
-                         }
-                       catch(CosNaming::NamingContext::NotFound)
-                         {
-                           INFOS( "Test Container: Logger Server wasn't found" );
-                         }
-                       catch(...)
-                         {
-                           INFOS( "Test Container: Unknown exception" );
-                         }
-                       if (!CORBA::is_nil(object))
-                         {
-                           MESSAGE( "Test Container: Loger Server was found" );
-                           TEST_CONTAINER=1;
-                           break;
-                         }
-                     }
-                 }
-           }
-         if ((TEST_CONTAINER==1)||((EnvL==0)&&(!CORBA::is_nil(inc))))
-            break;
-       }
-
-      // Use Name Service to find container
       SALOME_NamingService _NS(orb) ;
       string containerName = "/Containers/" ;
       string hostName = GetHostname();
       containerName += hostName + "/FactoryServer";
+      NamingService_WaitForServerReadiness(&_NS,containerName);
 
-      obj = _NS.Resolve(containerName.c_str()) ;
+      CORBA::Object_var obj = _NS.Resolve(containerName.c_str()) ;
       Engines::Container_var iGenFact = Engines::Container::_narrow(obj);
 
-      Engines::TestComponent_var m1;
+      int nbInstances = 5;
+
+      vector<Engines::TestComponent_var> instances(nbInstances);
     
-      for (int iter = 0; iter < 3 ; iter++)
+      MESSAGE("------------------------------- create instances ");
+      for (int iter = 0; iter < nbInstances ; iter++)
        {
-         MESSAGE("----------------------------------------------------" << iter);   
-          string dirn = getenv("KERNEL_ROOT_DIR");
-          dirn += "/lib/salome/libSalomeTestComponentEngine.so";
-          obj = iGenFact->load_impl("SalomeTestComponent",dirn.c_str());
-         m1 = Engines::TestComponent::_narrow(obj);
-         MESSAGE("recup m1");
-         SCRUTE(m1->instanceName());
+         instances[iter] = create_instance(iGenFact,"SalomeTestComponent");
+       }
 
+      MESSAGE("------------------------------ set env instances ");
+      for (int iter = 0; iter < nbInstances ; iter++)
+       {
+         Engines::TestComponent_var anInstance = instances[iter];
+         SCRUTE(anInstance->instanceName());
          Engines::FieldsDict_var dico = new Engines::FieldsDict;
          dico->length(3);
          dico[0].key=CORBA::string_dup("key_0");
@@ -186,14 +117,18 @@ int main (int argc, char * argv[])
          dico[1].key=CORBA::string_dup("key_1");
          dico[1].value <<=(CORBA::UShort)72;
          dico[2].key=CORBA::string_dup("key_2");
-         dico[2].value <<="value_2";
-         m1->setProperties(dico);
-
-         MESSAGE("Coucou " << m1->Coucou(1L));
-
-         m1->Setenv();
+         dico[2].value <<=(CORBA::ULong)iter;
+         anInstance->setProperties(dico);
+         MESSAGE("Coucou " << anInstance->Coucou(iter));
+         anInstance->Setenv();
+       }
 
-         Engines::FieldsDict_var dico2 =  m1->getProperties();
+      MESSAGE("---------------------------------- get instances ");
+      for (int iter = 0; iter < nbInstances ; iter++)
+       {
+         Engines::TestComponent_var anInstance = instances[iter];
+         SCRUTE(anInstance->instanceName());
+         Engines::FieldsDict_var dico2 =  anInstance->getProperties();
          for (CORBA::ULong i=0; i<dico2->length(); i++)
            {
              MESSAGE("dico2["<<i<<"].key="<<dico2[i].key);
@@ -205,14 +140,46 @@ int main (int argc, char * argv[])
                  MESSAGE("dico2["<<i<<"].value="<<value);
                }
            }
+       }
 
-         iGenFact->remove_impl(m1) ;
+      MESSAGE("------------------------------- remove instances ");
+      for (int iter = 0; iter < nbInstances ; iter++)
+       {
+         Engines::TestComponent_var anInstance = instances[iter];
+         SCRUTE(anInstance->instanceName());
+         iGenFact->remove_impl(anInstance) ;
          //iGenFact->finalize_removal() ; // unpredictable results ...
-          sleep(5);
-       }    
+       } 
+      MESSAGE("------------------------------- PYTHON ");
+      {
+//     bool isLib =
+//       iGenFact->load_component_Library("SALOME_TestComponentPy");
+//     ASSERT(isLib);
+//     CORBA::Object_var obj =
+//       iGenFact->create_component_instance("SALOME_TestComponentPy",
+//                                           0);
+//     Engines::TestComponent_var anInstance =
+//       Engines::TestComponent::_narrow(obj);
+//     MESSAGE("create anInstance");
+//     SCRUTE(anInstance->instanceName());
+      MESSAGE("------------------------------- create instances ");
+      for (int iter = 0; iter < nbInstances ; iter++)
+       {
+         instances[iter] = create_instance(iGenFact,"SALOME_TestComponentPy");
+       }
+
+      MESSAGE("---------------------------------- get instances ");
+      for (int iter = 0; iter < nbInstances ; iter++)
+       {
+         Engines::TestComponent_var anInstance = instances[iter];
+         SCRUTE(anInstance->instanceName());
+         MESSAGE("Coucou " << anInstance->Coucou(iter));
+       }
+      }
+   
       // Clean-up.
       iGenFact->finalize_removal() ;
-      orb->destroy();
+      orb->shutdown(0);
     }
   catch(CORBA::COMM_FAILURE& ex) {
     INFOS("Caught system exception COMM_FAILURE -- unable to contact the object.")
@@ -227,7 +194,7 @@ int main (int argc, char * argv[])
     INFOS("Caught unknown exception.")
       }
 
-  delete myThreadTrace;
+  //  delete myThreadTrace;
   return 0;
 }
 
index b268fd20e47117e0ef1943f61b4c4e417ffa1102..451d9d20f912790be42294b205bd19b3aff3b34e 100644 (file)
@@ -31,7 +31,7 @@ BIN_SRC =
 BIN_CLIENT_IDL = Logger.idl SALOME_MPIObject.idl SALOME_MPIContainer.idl SALOME_TestMPIComponent.idl
 BIN_SERVER_IDL = 
 
-LDFLAGS+= -lSalomeNotification -lSalomeNS -lSalomeMPILifeCycleCORBA -lSalomeLifeCycleCORBA -lSalomeMPIContainer -lSalomeContainer -lRegistry -lOpUtil -lSALOMELocalTrace ${MPI_LIBS}
+LDFLAGSFORBIN+= -lSalomeNotification -lSalomeNS -lSalomeLifeCycleCORBA -lSalomeMPIContainer -lSalomeContainer -lRegistry -lOpUtil -lSALOMELocalTrace  -lSalomeResourcesManager ${MPI_LIBS}
 
 CXXFLAGS+=${MPI_INCLUDES}
 CXX_DEPEND_FLAG+=${MPI_INCLUDES}
index 8980074879dea70df07bec5e4d0b4c6f88d91c97..6ee329eaec43d7860b49245d926d141a36da235e 100644 (file)
@@ -20,7 +20,7 @@
 # include "Utils_SINGLETON.hxx"
 #include "SALOME_NamingService.hxx"
 #include "OpUtil.hxx"
-#include "LocalTraceCollector.hxx"
+#include "SALOMETraceCollector.hxx"
 using namespace std;
 
 int main (int argc, char * argv[])
@@ -29,7 +29,7 @@ int main (int argc, char * argv[])
   // Initializing omniORB
   ORB_INIT &init = *SINGLETON_<ORB_INIT>::Instance() ;
   CORBA::ORB_var &orb = init( argc , argv ) ;
-  LocalTraceCollector *myThreadTrace = LocalTraceCollector::instance(orb);
+  //  SALOMETraceCollector *myThreadTrace = SALOMETraceCollector::instance(orb);
     
   BEGIN_OF(argv[0])
   try{
@@ -115,7 +115,7 @@ int main (int argc, char * argv[])
 //     // Clean-up.
 // //     iGenFact->finalize_removal() ;
 // //     sleep(5);
-    iGenFact->MPIShutdown();
+    iGenFact->Shutdown();
 //     INFOS("shut down corba server for Test MPI Container");
 //     orb->destroy();
   }
@@ -133,6 +133,6 @@ int main (int argc, char * argv[])
   }
 
   END_OF(argv[0]);
-  delete myThreadTrace;
+  //  delete myThreadTrace;
   return 0 ;
 }
diff --git a/src/UnitTests/Makefile.in b/src/UnitTests/Makefile.in
new file mode 100644 (file)
index 0000000..a0c1540
--- /dev/null
@@ -0,0 +1,68 @@
+#
+#  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
+#  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
+# 
+#  This library is free software; you can redistribute it and/or 
+#  modify it under the terms of the GNU Lesser General Public 
+#  License as published by the Free Software Foundation; either 
+#  version 2.1 of the License. 
+# 
+#  This library is distributed in the hope that it will be useful, 
+#  but WITHOUT ANY WARRANTY; without even the implied warranty of 
+#  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
+#  Lesser General Public License for more details. 
+# 
+#  You should have received a copy of the GNU Lesser General Public 
+#  License along with this library; if not, write to the Free Software 
+#  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
+# 
+#  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
+#
+#
+#
+#  File   : Makefile.in
+#  Author : Paul RASCLE (EDF)
+#  Module : SALOME
+#  $Header$
+
+top_srcdir=@top_srcdir@
+top_builddir=../..
+srcdir=@srcdir@
+VPATH=.:@srcdir@:@top_srcdir@/idl
+
+
+@COMMENCE@
+
+# header files  
+EXPORT_HEADERS= 
+
+EXPORT_PYSCRIPTS = UnitTests.py
+
+# Libraries targets
+
+LIB = 
+LIB_SRC =
+
+# Executables targets
+
+BIN = UnitTests
+BIN_SRC = 
+BIN_CLIENT_IDL = SALOME_Component.idl SALOME_TestComponent.idl \
+                SALOME_Exception.idl
+
+CXXFLAGS += @CPPUNIT_INCLUDES@
+CPPFLAGS += @CPPUNIT_INCLUDES@
+
+LIBS= @LIBS@ @CPPUNIT_LIBS@
+
+LDFLAGSFORBIN+= \
+ -lSALOMELocalTraceTest -lSALOMELocalTrace -lSALOMEBasics \
+ -lSALOMETraceCollectorTest \
+ -lUtilsTest -lOpUtil \
+ -lSalomeNS -lSalomeContainer -lSalomeResourcesManager \
+ -lRegistry -lSalomeNotification \
+ -lLifeCycleCORBATest -lSalomeLifeCycleCORBA \
+
+
+
+@CONCLUDE@
diff --git a/src/UnitTests/UnitTests.cxx b/src/UnitTests/UnitTests.cxx
new file mode 100644 (file)
index 0000000..987e304
--- /dev/null
@@ -0,0 +1,18 @@
+
+// --- include all Unit Test from basics until the present directory
+
+#include "SALOMELocalTraceTest.hxx"
+#include "SALOMETraceCollectorTest.hxx"
+#include "UtilsTest.hxx"
+#include "LifeCycleCORBATest.hxx"
+
+// --- Registers the fixture into the 'registry'
+
+CPPUNIT_TEST_SUITE_REGISTRATION( SALOMELocalTraceTest );
+CPPUNIT_TEST_SUITE_REGISTRATION( SALOMETraceCollectorTest );
+CPPUNIT_TEST_SUITE_REGISTRATION( UtilsTest );
+CPPUNIT_TEST_SUITE_REGISTRATION( LifeCycleCORBATest );
+
+// --- generic Main program from Basic/Test
+
+#include "BasicMainTest.hxx"
diff --git a/src/UnitTests/UnitTests.py b/src/UnitTests/UnitTests.py
new file mode 100644 (file)
index 0000000..9731efc
--- /dev/null
@@ -0,0 +1,67 @@
+
+import sys, os,signal,string,commands
+import runSalome
+import orbmodule
+import TestKiller
+
+# get SALOME environment :
+
+args, modules_list, modules_root_dir = runSalome.get_config()
+runSalome.set_env(args, modules_list, modules_root_dir)
+
+# set environment for trace in logger
+# (with file, servers may be killed before the write to the file...)
+
+#os.environ["SALOME_trace"] = "file:/tmp/traceUnitTest.log"
+#os.environ["SALOME_trace"] = "local"
+os.environ["SALOME_trace"] = "with_logger"
+
+# launch CORBA naming server
+
+clt=orbmodule.client()
+
+# launch CORBA logger server
+
+myServer=runSalome.LoggerServer(args)
+myServer.run()
+clt.waitLogger("Logger")
+
+# launch notify server
+
+myServer=runSalome.NotifyServer(args,modules_root_dir)
+myServer.run()
+
+# launch registry server
+
+myServer=runSalome.RegistryServer(args)
+myServer.run()
+clt.waitNS("/Registry")
+
+# launch module catalog server
+
+cataServer=runSalome.CatalogServer(args)
+cataServer.setpath(modules_list,modules_root_dir)
+cataServer.run()
+clt.waitNS("/Kernel/ModulCatalog")
+
+# launch container manager server
+
+myCmServer = runSalome.ContainerManagerServer(args)
+myCmServer.setpath(modules_list,modules_root_dir)
+myCmServer.run()
+clt.waitNS("/ContainerManager")
+
+# execute Unit Test
+
+command = ['UnitTests']
+ret = os.spawnvp(os.P_WAIT, command[0], command)
+
+# kill containers created by the Container Manager
+
+import Engines
+containerManager = clt.waitNS("/ContainerManager",Engines.ContainerManager)
+containerManager.Shutdown()
+
+# kill Test process 
+
+TestKiller.killProcess(runSalome.process_id)
index f7f5d5a65967114fb023744f0f9ac1d999402cd5..c862428f3e43507b43738955f0bebd7b5cfb5031 100644 (file)
@@ -46,7 +46,8 @@ EXPORT_HEADERS= \
        Utils_SINGLETON.hxx \
        Utils_DESTRUCTEUR_GENERIQUE.hxx \
        Utils_ExceptHandlers.hxx \
-       Utils_SignalsHandler.h
+       Utils_SignalsHandler.h \
+       Utils_Mutex.hxx
 
 EXPORT_PYSCRIPTS = Utils_Identity.py SALOME_utilities.py
 # Libraries targets
@@ -58,7 +59,8 @@ LIB_SRC = OpUtil.cxx Utils_Timer.cxx duplicate.cxx \
        Utils_Identity.cxx Utils_ORB_INIT.cxx \
        Utils_DESTRUCTEUR_GENERIQUE.cxx \
        Utils_ExceptHandlers.cxx \
-       Utils_SignalsHandler.cxx
+       Utils_SignalsHandler.cxx \
+       Utils_Mutex.cxx
 
 LIB_SERVER_IDL = SALOME_Exception.idl
 
index 00ed5a66da050e9e762631262bc50db09706acbf..28f95b6605baec85cbe6556e5e7c6661239d2c63 100644 (file)
 
 #include "utilities.h" 
 #include "OpUtil.hxx"
-#include <unistd.h>
 #include <errno.h>
 #include <string.h>
-using namespace std;
 
-int gethostname(char *name, size_t len);
+#ifndef WNT
+#include <unistd.h>
+#else
+#include <winsock2.h>
+#endif
+using namespace std;
+//int gethostname(char *name, size_t len);
 
-string GetHostname()
+std::string GetHostname()
 {
-  int ls = 100, r = 0;
+  int ls = 100, r = 1;
   char *s;
 
-  while (ls < 10000) {
+  while (ls < 10000 && r) {
     ls *= 2;
     s = new char[ls];
     r = gethostname(s, ls-1);
index 086aa00405144aa49fe1b9a327f2de22fe065481..7c3293b7c37e114b70a3619c380537b246a0ac89 100644 (file)
 #ifndef _OPUTIL_HXX
 #define _OPUTIL_HXX
 
+#if defined UTILS_EXPORTS
+#if defined WIN32
+#define UTILS_EXPORT __declspec( dllexport )
+#else
+#define UTILS_EXPORT
+#endif
+#else
+#if defined WNT
+#define UTILS_EXPORT __declspec( dllimport )
+#else
+#define UTILS_EXPORT
+#endif
+#endif
+
 #include <string>
 
-std::string GetHostname();
-const char *duplicate(const char * const);
+UTILS_EXPORT std::string GetHostname();
+UTILS_EXPORT const char *duplicate(const char * const);
 
 #endif
diff --git a/src/Utils/Test/Makefile.in b/src/Utils/Test/Makefile.in
new file mode 100644 (file)
index 0000000..c01a6a2
--- /dev/null
@@ -0,0 +1,64 @@
+#  SALOMELocalTrace : log on local machine
+#
+#  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
+#  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
+# 
+#  This library is free software; you can redistribute it and/or 
+#  modify it under the terms of the GNU Lesser General Public 
+#  License as published by the Free Software Foundation; either 
+#  version 2.1 of the License. 
+# 
+#  This library is distributed in the hope that it will be useful, 
+#  but WITHOUT ANY WARRANTY; without even the implied warranty of 
+#  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
+#  Lesser General Public License for more details. 
+# 
+#  You should have received a copy of the GNU Lesser General Public 
+#  License along with this library; if not, write to the Free Software 
+#  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
+# 
+#  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
+#
+#
+#
+#  File   : Makefile.in
+#  Author : Paul RASCLE (EDF)
+#  Module : SALOME
+#  $Header$
+
+top_srcdir=@top_srcdir@
+top_builddir=../../..
+srcdir=@srcdir@
+VPATH=.:@srcdir@:@top_srcdir@/idl
+
+
+@COMMENCE@
+
+# header files  
+EXPORT_HEADERS= UtilsTest.hxx
+
+EXPORT_PYSCRIPTS = TestUtils.py
+
+# Libraries targets
+
+LIB = libUtilsTest.la 
+LIB_SRC = UtilsTest.cxx
+
+# Executables targets
+
+BIN = TestUtils
+BIN_SRC = 
+
+CXXFLAGS += @CPPUNIT_INCLUDES@
+CPPFLAGS += @CPPUNIT_INCLUDES@
+
+LIBS= @LIBS@ @CPPUNIT_LIBS@
+
+LDFLAGS+=
+
+LDFLAGSFORBIN+= \
+ -lSALOMELocalTraceTest -lSALOMELocalTrace -lSALOMEBasics \
+ -lSALOMETraceCollectorTest \
+ -lUtilsTest -lOpUtil
+
+@CONCLUDE@
diff --git a/src/Utils/Test/TestUtils.cxx b/src/Utils/Test/TestUtils.cxx
new file mode 100644 (file)
index 0000000..117e417
--- /dev/null
@@ -0,0 +1,16 @@
+
+// --- include all Unit Test from basics until the present directory
+
+#include "SALOMELocalTraceTest.hxx"
+#include "SALOMETraceCollectorTest.hxx"
+#include "UtilsTest.hxx"
+
+// --- Registers the fixture into the 'registry'
+
+CPPUNIT_TEST_SUITE_REGISTRATION( SALOMELocalTraceTest );
+CPPUNIT_TEST_SUITE_REGISTRATION( SALOMETraceCollectorTest );
+CPPUNIT_TEST_SUITE_REGISTRATION( UtilsTest );
+
+// --- generic Main program from Basic/Test
+
+#include "BasicMainTest.hxx"
diff --git a/src/Utils/Test/TestUtils.py b/src/Utils/Test/TestUtils.py
new file mode 100644 (file)
index 0000000..226eba3
--- /dev/null
@@ -0,0 +1,29 @@
+
+import sys, os,signal,string,commands
+import runSalome
+import orbmodule
+import TestKiller
+
+# get SALOME environment :
+
+args, modules_list, modules_root_dir = runSalome.get_config()
+runSalome.set_env(args, modules_list, modules_root_dir)
+
+# launch CORBA naming server
+
+clt=orbmodule.client()
+
+# launch CORBA logger server
+
+myServer=runSalome.LoggerServer(args)
+myServer.run()
+clt.waitLogger("Logger")
+
+# execute Unit Test
+
+command = ['TestUtils']
+ret = os.spawnvp(os.P_WAIT, command[0], command)
+
+# kill Test process 
+
+TestKiller.killProcess(runSalome.process_id)
diff --git a/src/Utils/Test/UtilsTest.cxx b/src/Utils/Test/UtilsTest.cxx
new file mode 100644 (file)
index 0000000..a82e9d5
--- /dev/null
@@ -0,0 +1,97 @@
+
+#include "UtilsTest.hxx"
+
+#include <iostream>
+#include <fstream>
+#include <string>
+#include <cstdlib>
+#include "Utils_SALOME_Exception.hxx"
+#include "utilities.h"
+
+using namespace std;
+
+#define TRACEFILE "/tmp/traceUnitTest.log"
+
+// ============================================================================
+/*!
+ * Set Trace mecanism
+ * - delete preexisting trace classes if any
+ * - set trace on file
+ */
+// ============================================================================
+
+void 
+UtilsTest::setUp()
+{
+  LocalTraceBufferPool* bp1 = LocalTraceBufferPool::instance();
+  CPPUNIT_ASSERT(bp1);
+  bp1->deleteInstance(bp1);
+
+  // --- trace on file
+  char *theFileName = TRACEFILE;
+
+  string s = "file:";
+  s += theFileName;
+  CPPUNIT_ASSERT(! setenv("SALOME_trace",s.c_str(),1)); // 1: overwrite
+
+  ofstream traceFile;
+  traceFile.open(theFileName, ios::out | ios::app);
+  CPPUNIT_ASSERT(traceFile); // file created empty, then closed
+  traceFile.close();
+
+  bp1 = LocalTraceBufferPool::instance();
+  CPPUNIT_ASSERT(bp1);
+}
+
+// ============================================================================
+/*!
+ *  - delete trace classes
+ */
+// ============================================================================
+
+void 
+UtilsTest::tearDown()
+{
+  LocalTraceBufferPool* bp1 = LocalTraceBufferPool::instance();
+  CPPUNIT_ASSERT(bp1);
+  bp1->deleteInstance(bp1);
+}
+
+int genExcept()
+{
+  throw SALOME_Exception("a message");
+};
+
+// ============================================================================
+/*!
+ * Check basic SALOME_exception mecanism
+ */
+// ============================================================================
+
+void
+UtilsTest::testSALOME_ExceptionThrow()
+{
+  CPPUNIT_ASSERT_THROW(genExcept(), SALOME_Exception);
+}
+
+// ============================================================================
+/*!
+ * Check message on catch
+ */
+// ============================================================================
+
+void
+UtilsTest::testSALOME_ExceptionMessage()
+{
+#define EXAMPLE_EXCEPTION_MESSAGE "something for the end user"
+  try
+    {
+      throw SALOME_Exception(EXAMPLE_EXCEPTION_MESSAGE);
+    }
+  catch (const SALOME_Exception &ex)
+    {
+      string expectedMessage = EXAMPLE_EXCEPTION_MESSAGE;
+      string actualMessage = ex.what();
+      CPPUNIT_ASSERT(actualMessage.find(expectedMessage) != string::npos);
+    }
+}
diff --git a/src/Utils/Test/UtilsTest.hxx b/src/Utils/Test/UtilsTest.hxx
new file mode 100644 (file)
index 0000000..ffb23e1
--- /dev/null
@@ -0,0 +1,23 @@
+
+#ifndef _UTILSTEST_HXX_
+#define _UTILSTEST_HXX_
+
+#include <cppunit/extensions/HelperMacros.h>
+
+class UtilsTest : public CppUnit::TestFixture
+{
+  CPPUNIT_TEST_SUITE( UtilsTest );
+  CPPUNIT_TEST( testSALOME_ExceptionThrow );
+  CPPUNIT_TEST( testSALOME_ExceptionMessage );
+  CPPUNIT_TEST_SUITE_END();
+
+public:
+
+  void setUp();
+  void tearDown();
+
+  void testSALOME_ExceptionThrow();
+  void testSALOME_ExceptionMessage();
+};
+
+#endif
index c559355d4580f3bd24c9add25d3d52465ffb3f9f..388445bfc4cf602cc43e84f49b2b49ae1378b640 100644 (file)
@@ -31,7 +31,7 @@
 
 # include "Utils_SALOME_Exception.hxx"
 
-class CommException : public SALOME_Exception
+class UTILS_EXPORT CommException : public SALOME_Exception
 {
 public :
        CommException( void );
index 5d6d5bf514785a3bee222e2b144228d58c57b68a..c05e8e50ac70e1dbb169cf341976726f05de1010 100644 (file)
@@ -45,7 +45,7 @@
                 throw SALOME::SALOME_Exception(ExDescription); \
               }
 
-#include <ostream.h>
+#include <ostream>
 
 //Dump the CORBA exception type.
 inline std::ostream& operator<<(std::ostream& os, const CORBA::Exception& e)
index 62ce955efcf89946da8ca849203b912f95551eb8..ff8c7e64a8938b21978b45e25c0d5906c386fd7b 100644 (file)
@@ -35,9 +35,7 @@ extern "C"
 }
 
 # include "Utils_DESTRUCTEUR_GENERIQUE.hxx"
-# include "utilities.h"
-using namespace std;
-
+//# include "utilities.h"
 void Nettoyage();
 
 #ifdef _DEBUG_
@@ -46,17 +44,19 @@ static int MYDEBUG = 0;
 static int MYDEBUG = 0;
 #endif
 
-static list<DESTRUCTEUR_GENERIQUE_*> *Destructeurs=0 ;
+using namespace std;
+
+std::list<DESTRUCTEUR_GENERIQUE_*> *DESTRUCTEUR_GENERIQUE_::Destructeurs=0 ;
 
 /*! \class ATEXIT_
  *
- * Mécanisme pour faire exécuter une seule fois DESTRUCTEUR_GENERIQUE_::Nettoyage
- * à la fin du traitement : creation d'un singleton statique de l'objet
+ * Mecanisme pour faire executer une seule fois DESTRUCTEUR_GENERIQUE_::Nettoyage
+ * a la fin du traitement : creation d'un singleton statique de l'objet
  * tres specialise ATEXIT_.
  *
- * La création d'un objet de type ATEXIT_ entraîne l'inscription de la fonction
- * Nettoyage() par atexit(). Il suffit donc de créer un singleton statique du type ATEXIT_
- * pour effectuer cet enregistrement une seule fois indépendament de l'utilisateur.
+ * La creation d'un objet de type ATEXIT_ entraine l'inscription de la fonction
+ * Nettoyage() par atexit(). Il suffit donc de creer un singleton statique du type ATEXIT_
+ * pour effectuer cet enregistrement une seule fois independament de l'utilisateur.
  */
 
 //CCRT
@@ -67,30 +67,31 @@ class ATEXIT_
 {
 public :
        /*!
-        * Allocation dynamique de Destructeurs, une liste chaînée de DESTRUCTEUR_GENERIQUE_* et enregistrement
+        * Allocation dynamique de Destructeurs, une liste chainee de DESTRUCTEUR_GENERIQUE_* et enregistrement
         * de la fonction Nettoyage() par atexit().
         *
-        * La liste chaînée Destructeurs est détruite dans la fonction Nettoyage.
+        * La liste chainee Destructeurs est detruite dans la fonction Nettoyage.
         */
-        //CCRT ATEXIT_( void )
+        //CCRT  ATEXIT_( void )
         ATEXIT_( bool Make_ATEXIT )
        {
          //CCRT
          if ( Make_ATEXIT && !ATEXIT_Done ) {
            //CCRT
-               ASSERT (Destructeurs==0);
-               if(MYDEBUG) MESSAGE("Construction ATEXIT"); // message necessaire pour utiliser logger dans Nettoyage (cf.BUG KERNEL4561)
-               Destructeurs = new list<DESTRUCTEUR_GENERIQUE_*> ; // Destructeurs alloué dynamiquement (cf. ci-dessous) ,
-                                                                  // il est utilisé puis détruit par la fonction Nettoyage
-               int cr = atexit( Nettoyage );                      // exécute Nettoyage lors de exit, après la destruction des données statiques !
-               ASSERT(cr==0) ;
+               assert (DESTRUCTEUR_GENERIQUE_::Destructeurs==0);
+               //cerr << "ATEXIT_::ATEXIT_ Construction ATEXIT" << endl;// message necessaire pour utiliser logger dans Nettoyage (cf.BUG KERNEL4561)
+               DESTRUCTEUR_GENERIQUE_::Destructeurs = 
+                      new std::list<DESTRUCTEUR_GENERIQUE_*> ; // Destructeur alloue dynamiquement (cf. ci-dessous) ,
+                                                                  // il est utilise puis detruit par la fonction Nettoyage
+               int cr = atexit( Nettoyage );                      // execute Nettoyage lors de exit, aprs la destruction des donnees statiques !
+               assert(cr==0) ;
                ATEXIT_Done = true ;
          }
        }
 
        ~ATEXIT_( )
        {
-               if(MYDEBUG) MESSAGE("Destruction ATEXIT") ;
+         //cerr << "ATEXIT_::~ATEXIT_ Destruction ATEXIT" << endl;
        }
 };
 
@@ -101,41 +102,42 @@ static ATEXIT_ nettoyage = ATEXIT_( false );      /* singleton statique */
 
 
 /*!
- * traitement effectué :
- * -# exécution de tous les objets de type DESTRUCTEUR_DE_ stockés dans la liste Destructeurs (ce qui détruit les
+ * traitement effectue :
+ * -# execution de tous les objets de type DESTRUCTEUR_DE_ stockes dans la liste Destructeurs (ce qui detruit les
  *    singletons correspondant) ;
- * -# puis destruction de tous les objets de type DESTRUCTEUR_DE_ stockés dans la liste Destructeurs;
+ * -# puis destruction de tous les objets de type DESTRUCTEUR_DE_ stockes dans la liste Destructeurs;
  * -# destruction de la liste Destructeurs.
  */
 
 void Nettoyage( void )
 {
-       if(MYDEBUG) BEGIN_OF("Nettoyage( void )") ;
-       ASSERT(Destructeurs) ;
-       if(MYDEBUG) SCRUTE( Destructeurs->size() ) ;
-       if( Destructeurs->size() )
+  //cerr << "Nettoyage()" << endl;
+  //if(MYDEBUG) BEGIN_OF("Nettoyage( void )") ;
+       assert(DESTRUCTEUR_GENERIQUE_::Destructeurs) ;
+       //if(MYDEBUG) SCRUTE( DESTRUCTEUR_GENERIQUE_::Destructeurs->size() ) ;
+       if( DESTRUCTEUR_GENERIQUE_::Destructeurs->size() )
        {
-               list<DESTRUCTEUR_GENERIQUE_*>::iterator it = Destructeurs->end() ;
+               std::list<DESTRUCTEUR_GENERIQUE_*>::iterator it = DESTRUCTEUR_GENERIQUE_::Destructeurs->end() ;
 
                do
                {
-                       if(MYDEBUG) MESSAGE( "DESTRUCTION d'un SINGLETON");
+                 //if(MYDEBUG) MESSAGE( "DESTRUCTION d'un SINGLETON");
                        it-- ;
                        DESTRUCTEUR_GENERIQUE_* ptr = *it ;
-                       //Destructeurs->remove( *it ) ;
+                       //DESTRUCTEUR_GENERIQUE_::Destructeurs->remove( *it ) ;
                        (*ptr)() ;
                        delete ptr ;
-               }while( it!=  Destructeurs->begin() ) ;
+               }while( it!=  DESTRUCTEUR_GENERIQUE_::Destructeurs->begin() ) ;
 
-               Destructeurs->clear() ;
-               if(MYDEBUG) SCRUTE( Destructeurs->size() ) ;
-               ASSERT( Destructeurs->size()==0 ) ;
-               ASSERT( Destructeurs->empty() ) ;
+               DESTRUCTEUR_GENERIQUE_::Destructeurs->clear() ;
+               //if(MYDEBUG) SCRUTE( DESTRUCTEUR_GENERIQUE_::Destructeurs->size() ) ;
+               assert( DESTRUCTEUR_GENERIQUE_::Destructeurs->size()==0 ) ;
+               assert( DESTRUCTEUR_GENERIQUE_::Destructeurs->empty() ) ;
        }
 
-       delete Destructeurs;
-       Destructeurs=0;
-       if(MYDEBUG) END_OF("Nettoyage( void )") ;
+       delete DESTRUCTEUR_GENERIQUE_::Destructeurs;
+       DESTRUCTEUR_GENERIQUE_::Destructeurs=0;
+       //if(MYDEBUG) END_OF("Nettoyage( void )") ;
        return ;
 }
 
@@ -155,7 +157,7 @@ const int DESTRUCTEUR_GENERIQUE_::Ajout( DESTRUCTEUR_GENERIQUE_ &objet )
           nettoyage = ATEXIT_( true ) ;
        }
        //CCRT
-       ASSERT(Destructeurs) ;
+       assert(Destructeurs) ;
        Destructeurs->push_back( &objet ) ;
        return Destructeurs->size() ;
 }
index 6cf3432c1a46a8a7e2fc43a7826dd11dbc2dc0f7..68fb9ce6e116dc1e79c2c77b21cb5cc24700a3b0 100644 (file)
 # if !defined( __DESTRUCTEUR_GENERIQUE__H__ )
 # define __DESTRUCTEUR_GENERIQUE__H__
 
+# include <list>
+#include <cassert>
 # include <CORBA.h>
-# include "utilities.h"
+//# include "utilities.h"
 
 /*!\class DESTRUCTEUR_GENERIQUE_
  *
  *     -# an object method to execute the destruction : operator()().
  */
 
+#if defined UTILS_EXPORTS
+#if defined WIN32
+#define UTILS_EXPORT __declspec( dllexport )
+#else
+#define UTILS_EXPORT
+#endif
+#else
+#if defined WNT
+#define UTILS_EXPORT __declspec( dllimport )
+#else
+#define UTILS_EXPORT
+#endif
+#endif
+
 class DESTRUCTEUR_GENERIQUE_
 {
 public :
+  UTILS_EXPORT static std::list<DESTRUCTEUR_GENERIQUE_*> *Destructeurs;
+
   virtual ~DESTRUCTEUR_GENERIQUE_() {}//!< virtual destructor
-  static const int Ajout( DESTRUCTEUR_GENERIQUE_ &objet );//!< adds a destruction object to the list of destructions
-  virtual void operator()( void )=0 ;//!< performs the destruction
+  UTILS_EXPORT static const int Ajout( DESTRUCTEUR_GENERIQUE_ &objet );//!< adds a destruction object to the list of destructions
+  UTILS_EXPORT virtual void operator()( void )=0 ;//!< performs the destruction
 } ;
 
 
@@ -94,7 +112,7 @@ public :
   DESTRUCTEUR_DE_(TYPE &objet):
     _PtrObjet( &objet )
   {
-    ASSERT(DESTRUCTEUR_GENERIQUE_::Ajout( *this ) >= 0) ;
+    assert(DESTRUCTEUR_GENERIQUE_::Ajout( *this ) >= 0) ;
   }
 
   /* Performs the destruction of the object.
@@ -105,13 +123,13 @@ public :
     typedef PortableServer::ServantBase TServant;
     if(_PtrObjet){
       if(TServant* aServant = dynamic_cast<TServant*>(_PtrObjet)){
-       MESSAGE("deleting ServantBase's _PtrObjet");
+       //cerr << "DESTRUCTEUR_GENERIQUE_::operator() deleting ServantBase's _PtrObjet" << endl;
        PortableServer::POA_var aPOA = aServant->_default_POA();
        PortableServer::ObjectId_var anObjectId = aPOA->servant_to_id(aServant);
        aPOA->deactivate_object(anObjectId.in());
        aServant->_remove_ref();
       }else{
-       MESSAGE("deleting _PtrObjet");
+       //cerr << "DESTRUCTEUR_GENERIQUE_::operator() deleting _PtrObjet" << endl;
        TYPE* aPtr = static_cast<TYPE*>(_PtrObjet);
        delete aPtr;
       }
@@ -120,7 +138,7 @@ public :
   } 
 
   virtual ~DESTRUCTEUR_DE_(){
-    ASSERT(!_PtrObjet) ;
+    assert(!_PtrObjet) ;
   }
 
 private :
index 7996ae9221bb70665e17e3c354a4d7c1eca4f0dd..61b588055f8aab89c3cf94f7cecea441a4314405 100644 (file)
 
 #include <stdexcept>
 
+#if defined UTILS_EXPORTS
+#if defined WIN32
+#define UTILS_EXPORT __declspec( dllexport )
+#else
+#define UTILS_EXPORT
+#endif
+#else
+#if defined WNT
+#define UTILS_EXPORT __declspec( dllimport )
+#else
+#define UTILS_EXPORT
+#endif
+#endif
+
 typedef void (*PVF)();
 
-class Unexpect { //save / retrieve unexpected exceptions treatment
+class UTILS_EXPORT Unexpect { //save / retrieve unexpected exceptions treatment
   PVF old;
   public :
+#ifndef WNT
     Unexpect( PVF f ) 
       { old = std::set_unexpected(f); }
   ~Unexpect() { std::set_unexpected(old); }
+#else
+    Unexpect( PVF f ) 
+      { old = ::set_unexpected(f); }
+  ~Unexpect() { ::set_unexpected(old); }
+#endif
 };
 
-class Terminate {//save / retrieve terminate function
+class UTILS_EXPORT Terminate {//save / retrieve terminate function
   
   PVF old;
   public :
+#ifndef WNT
     Terminate( PVF f ) 
       { old = std::set_terminate(f); }
   ~Terminate() { std::set_terminate(old); }
+#else
+    Terminate( PVF f ) 
+      { old = ::set_terminate(f); }
+  ~Terminate() { ::set_terminate(old); }
+#endif
 };
 
 #define UNEXPECT_CATCH(FuncName, ExceptionConstructor) \
@@ -69,7 +95,7 @@ inline void FuncName () {\
 
 
 //Definitions :
-extern void SalomeException();
-extern void SALOME_SalomeException();
+UTILS_EXPORT extern void SalomeException();
+UTILS_EXPORT extern void SALOME_SalomeException();
 
 #endif
index 570839bfa3ad993b957158de24ed40d5603a1298..daa27b0ee3f5c04386af493f1b178396b8578ffe 100644 (file)
 //  $Header$
 
 # include <iostream>
-# include <arpa/inet.h>
-# include <netinet/in.h>
-# include <sys/types.h>
-# include <netdb.h>
 # include "utilities.h"
 # include "Utils_Identity.hxx"
-using namespace std;
+
 extern "C"
 {
 # include <string.h>
+
+#ifndef WNT /* unix functionality */
 # include <pwd.h>
+#endif
 }
 
+#ifndef WNT /* unix functionality */
+
+# include <arpa/inet.h>
+# include <netinet/in.h>
+# include <sys/types.h>
+# include <netdb.h>
+
 const char* duplicate( const char *const str ) ;
 
 const struct utsname get_uname( void )
@@ -67,6 +73,59 @@ const char* const get_pwname( void )
        return papa->pw_name ;
 }
 
+#else /* Windows functionality */
+
+#include <windows.h>
+#include <direct.h>
+#include <process.h>
+
+const char* duplicate( const char *const str ) ;
+
+const char* get_uname( void )
+{
+       char* hostName = new char[256];
+       DWORD nSize = 256;
+       ASSERT(GetComputerName(hostName, &nSize));
+       return hostName;
+}
+
+const char* get_adip( void )
+{
+  return get_uname();
+}
+
+const char* const get_pwname( void )
+{
+  DWORD                   dwSize = 256 + 1;
+  char* retVal = new char[256];
+  ASSERT(GetUserName ( retVal, &dwSize ));
+  return retVal;
+}
+
+PSID getuid() {
+       PSID         retVal        = NULL;
+       HANDLE       hProcessToken = INVALID_HANDLE_VALUE;
+       PTOKEN_OWNER pTKowner      = NULL;
+       LPVOID buffer = NULL;
+       DWORD dwsize = 0;
+       
+       if (  !OpenProcessToken ( GetCurrentProcess (), TOKEN_QUERY, &hProcessToken )) return 0;
+       if (!GetTokenInformation(hProcessToken, TokenOwner, buffer, dwsize, &dwsize)) return 0;
+       pTKowner = (PTOKEN_OWNER)buffer;
+       if ( pTKowner != NULL ) {
+               retVal = pTKowner->Owner;
+       }
+       if ( hProcessToken != INVALID_HANDLE_VALUE ) CloseHandle ( hProcessToken );
+       
+       return retVal;
+}
+
+#define getcwd _getcwd
+#define getpid _getpid
+
+#endif /* WNT */
+
+
 Identity::Identity( const char *name ):        _name(duplicate(name)),\
                                                        _hostid(get_uname()),\
                                                        _adip(get_adip()),\
@@ -103,15 +162,29 @@ const char* const Identity::name (void) const
 {
        return  _name ;
 }
-const pid_t &Identity::pid(void) const
+#ifndef WNT
+       const pid_t& Identity::pid(void) const
+#else
+       const DWORD& Identity::pid(void) const
+#endif
 {
        return _pid ;
 }
-const struct utsname &Identity::hostid(void) const
+
+#ifndef WNT
+        const struct utsname &Identity::hostid(void) const
+#else
+        const char* const Identity::hostid(void) const
+#endif
 {
-       return _hostid ;
+    return _hostid ;
 }
-const uid_t &Identity::uid(void) const
+
+#ifndef WNT
+       const uid_t& Identity::uid(void) const
+#else
+       const PSID& Identity::uid(void) const
+#endif
 {
        return _uid ;
 }
@@ -138,7 +211,11 @@ const char* const Identity::adip (void) const
 
 const char* Identity::host_char( void ) const
 {
-       return _hostid.nodename;
+#ifndef WNT
+        return _hostid.nodename;
+#else
+       return _hostid;
+#endif
 }
 
 const char* Identity::start_char(void) const
@@ -146,18 +223,22 @@ const char* Identity::start_char(void) const
        return ctime(&_start) ;
 }
 
-ostream & operator<< ( ostream& os , const Identity& monid )
+std::ostream & operator<< ( std::ostream& os , const Identity& monid )
 {
        ASSERT(monid._name!=NULL) ;
-       os << "Identity :" << endl ;
-       os << '\t' << "Component name : " << monid._name << endl ;
-       os << '\t' << "Numero de PID :  " << monid._pid << endl;
-       os << '\t' << "Uid utilisateur  : "   << monid._uid << endl;
-       os << '\t' << "nom utilisateur  : "   << monid._pwname << endl;
-       os << '\t' << "Nom de machine : " << (monid._hostid).nodename << endl;
-       os << '\t' << "Adresse IP : " << monid._adip << endl;
+        os << "Identity :" << std::endl ;
+       os << '\t' << "Component name : " << monid._name << std::endl ;
+       os << '\t' << "Numero de PID :  " << monid._pid << std::endl;
+       os << '\t' << "Uid utilisateur  : "   << monid._uid << std::endl;
+       os << '\t' << "nom utilisateur  : "   << monid._pwname << std::endl;
+#ifndef WNT
+       os << '\t' << "Nom de machine : " << monid._hostid.nodename << std::endl;
+#else
+       os << '\t' << "Nom de machine : " << monid._hostid << std::endl;
+#endif
+       os << '\t' << "Adresse IP : " << monid._adip << std::endl;
        os << '\t' << "Heure de lancement : " << monid._cstart ; //ctime(&monid._start) ;
-       os << '\t' << "Dans le repertoire : " << monid._dir << endl;
+       os << '\t' << "Dans le repertoire : " << monid._dir << std::endl;
 
        return os ;
 }
index 78d4ab8e2f35511aadfadc677111d3f19d023efb..9dd4db08025fd23c3b89db2aa4ac6b5a476c65e4 100644 (file)
 extern "C"
 {
 # include <stdlib.h>
-# include <unistd.h>
 # include <time.h>
+#ifndef WNT
+# include <unistd.h>
 # include <sys/utsname.h>
+#else
+# include <windows.h>
+#endif
 }
 
-class Identity
+#if defined UTILS_EXPORTS
+#if defined WIN32
+#define UTILS_EXPORT __declspec( dllexport )
+#else
+#define UTILS_EXPORT
+#endif
+#else
+#if defined WNT
+#define UTILS_EXPORT __declspec( dllimport )
+#else
+#define UTILS_EXPORT
+#endif
+#endif
+class UTILS_EXPORT Identity
 {
 
 protected :
        const char* const       _name ;
-       const struct utsname    _hostid;
        const char* const       _adip; // Internet address
+
+#ifndef WNT
+        const struct utsname    _hostid;        
+       const pid_t             _pid ;
        const uid_t             _uid ;
-       const char* const       _pwname ;
+#else
+       const char* const       _hostid;
+       const DWORD             _pid ;
+       const PSID              _uid ;
+#endif 
+        const char* const      _pwname ;
        const char* const       _dir ;
-       const pid_t             _pid ;
        const time_t            _start;
        const char* const       _cstart ;
 
-
 private :
        Identity( void );
        Identity( const Identity &monid );
 
-
 public :
        Identity(const char *name);
        ~Identity();
        friend std::ostream & operator<< ( std::ostream& os , const Identity& monid );
 
+#ifndef WNT
+       const pid_t&            pid(void) const;
+        const struct utsname&  hostid(void) const;
+       const uid_t&            uid(void) const;
+#else
+       const DWORD&            pid(void) const;
+        const char* const       hostid(void) const;
+       const PSID&             uid(void) const;
+#endif
+
        const char* const       name( void ) const;
-       const pid_t&            pid(void) const;
-       const struct utsname&   hostid(void) const;
        const char* const       adip(void) const;
-       const uid_t&            uid(void) const;
        const char* const       pwname(void) const;
        const time_t&           start(void) const;
        const char* const       rep (void) const;
diff --git a/src/Utils/Utils_Mutex.cxx b/src/Utils/Utils_Mutex.cxx
new file mode 100644 (file)
index 0000000..ef58812
--- /dev/null
@@ -0,0 +1,93 @@
+//  SALOME Utils : general SALOME's definitions and tools
+//
+//  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
+//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
+// 
+//  This library is free software; you can redistribute it and/or 
+//  modify it under the terms of the GNU Lesser General Public 
+//  License as published by the Free Software Foundation; either 
+//  version 2.1 of the License. 
+// 
+//  This library is distributed in the hope that it will be useful, 
+//  but WITHOUT ANY WARRANTY; without even the implied warranty of 
+//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
+//  Lesser General Public License for more details. 
+// 
+//  You should have received a copy of the GNU Lesser General Public 
+//  License along with this library; if not, write to the Free Software 
+//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
+// 
+//  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
+//
+//
+//  File:      Utils_Mutex.cxx
+//  Author:    Sergey ANIKIN
+//  Module :    SALOME
+//  $Header$
+
+
+#include <Utils_Mutex.hxx>
+
+Utils_Mutex::Utils_Mutex() 
+: myCount( 0 )
+{
+  pthread_mutex_init( &myMutex, 0 );
+  pthread_mutex_init( &myHelperMutex, 0 );
+}
+
+Utils_Mutex::~Utils_Mutex()
+{
+  pthread_mutex_destroy( &myHelperMutex );
+  pthread_mutex_destroy( &myMutex );
+}
+
+void Utils_Mutex::lock()
+{
+  pthread_mutex_lock( &myHelperMutex );
+
+#ifndef WNT 
+  if ( myCount > 0 && myThread == pthread_self() ) {
+#else
+  if ( myCount > 0 && myThread.p == pthread_self().p ) {
+#endif
+    myCount++;
+  }
+  else {
+    pthread_mutex_unlock( &myHelperMutex );
+    pthread_mutex_lock( &myMutex );
+    pthread_mutex_lock( &myHelperMutex );
+    myCount = 1;
+    myThread = pthread_self();
+  }
+  
+  pthread_mutex_unlock( &myHelperMutex );
+}
+
+void Utils_Mutex::unlock()
+{
+  pthread_mutex_lock( &myHelperMutex );
+
+#ifndef WNT  
+  if ( myThread == pthread_self() ) {
+#else
+  if ( myThread.p == pthread_self().p ) {
+#endif
+    if ( myCount && (--myCount) < 1 ) {
+      myCount = 0;
+      pthread_mutex_unlock( &myMutex );          
+    }
+  }
+  
+  pthread_mutex_unlock( &myHelperMutex );
+}
+
+Utils_Locker::Utils_Locker( Utils_Mutex* mutex )
+: myMutex( mutex ) 
+{ 
+  if ( myMutex ) myMutex->lock(); 
+}
+
+Utils_Locker::~Utils_Locker() 
+{
+  if ( myMutex ) myMutex->unlock(); 
+}
diff --git a/src/Utils/Utils_Mutex.hxx b/src/Utils/Utils_Mutex.hxx
new file mode 100644 (file)
index 0000000..0d69209
--- /dev/null
@@ -0,0 +1,73 @@
+//  SALOME Utils : general SALOME's definitions and tools
+//
+//  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
+//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
+// 
+//  This library is free software; you can redistribute it and/or 
+//  modify it under the terms of the GNU Lesser General Public 
+//  License as published by the Free Software Foundation; either 
+//  version 2.1 of the License. 
+// 
+//  This library is distributed in the hope that it will be useful, 
+//  but WITHOUT ANY WARRANTY; without even the implied warranty of 
+//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
+//  Lesser General Public License for more details. 
+// 
+//  You should have received a copy of the GNU Lesser General Public 
+//  License along with this library; if not, write to the Free Software 
+//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
+// 
+//  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
+//
+//  File:      Utils_Mutex.hxx
+//  Author:    Sergey ANIKIN
+//  Module :    SALOME
+//  $Header$
+
+
+#ifndef Utils_Mutex_HeaderFile
+#define Utils_Mutex_HeaderFile
+
+#include <pthread.h>
+
+#if defined UTILS_EXPORTS
+#if defined WIN32
+#define UTILS_EXPORT __declspec( dllexport )
+#else
+#define UTILS_EXPORT
+#endif
+#else
+#if defined WNT
+#define UTILS_EXPORT __declspec( dllimport )
+#else
+#define UTILS_EXPORT
+#endif
+#endif
+
+class UTILS_EXPORT Utils_Mutex
+{
+public:
+  Utils_Mutex();
+  ~Utils_Mutex();
+
+  void lock();
+  void unlock();
+    
+private:
+  pthread_mutex_t myMutex;
+  pthread_mutex_t myHelperMutex;
+  pthread_t       myThread;
+  int             myCount;
+};
+
+class UTILS_EXPORT Utils_Locker
+{
+public:
+  Utils_Locker( Utils_Mutex* );
+  virtual ~Utils_Locker();
+
+private:
+  Utils_Mutex* myMutex;
+};
+
+#endif
index 5ac63924653aa1ae1119ea7942f621ce9a0466c0..7c774711c7bc17834d7189677996ccd993d9ace2 100644 (file)
 
 # include "Utils_ORB_INIT.hxx" 
 # include "utilities.h" 
-using namespace std;
+
+# include "SALOMEconfig.h"
 
 ORB_INIT::ORB_INIT( void ): _orb( CORBA::ORB::_nil() )
 {
-       ;
 }
 
 
 ORB_INIT::~ORB_INIT()
 {
-       if ( ! CORBA::is_nil( _orb ) )
-       {
-               MESSAGE("appel _orb->destroy()") ;
-               _orb->destroy() ;
-               MESSAGE("retour _orb->destroy()") ;
-       }
+  if ( ! CORBA::is_nil( _orb ) )
+  {
+    //std::cerr << "appel _orb->destroy()" << std::endl;
+    _orb->destroy() ;
+    //std::cerr << "retour _orb->destroy()" << std::endl;
+  }
 }
 
 
index 1a5c822db23ffbe4e6f2c0dde60ac126352a5325..345e2a2921bdeac141217004e74e768ba87505c1 100644 (file)
 #include "Utils_CommException.hxx"
 
 
+#if defined UTILS_EXPORTS
+#if defined WIN32
+#define UTILS_EXPORT __declspec( dllexport )
+#else
+#define UTILS_EXPORT
+#endif
+#else
+#if defined WNT
+#define UTILS_EXPORT __declspec( dllimport )
+#else
+#define UTILS_EXPORT
+#endif
+#endif
+
 /*!
  * Ce composant prend en charge la connexion et la deconnexion a l'orb
  * Il est souhaitable de l'utiliser dans un SINGLETON.
  */
 
-class ORB_INIT
+class UTILS_EXPORT ORB_INIT
 {
 
 private :
index 6db802be820ad49a9ba10f7a0b64edf8cdabb3cb..b8cb4267d777a563295b6f8e5adb06e98a9112f4 100644 (file)
 #include <iostream>
 #include "Utils_SALOME_Exception.hxx"
 #include "utilities.h"
-using namespace std;
+
+#ifndef WNT
 extern "C"
 {
+#endif
 #include <math.h>
 #include <stdio.h>
 #include <string.h>
+#ifndef WNT
 }
+#endif
 
 
 const char* duplicate( const char *const str ) ;
@@ -89,8 +93,9 @@ SALOME_Exception::~SALOME_Exception() throw ()
 {
        if ( _text )
        {
-               delete [] _text ;
-               _text = 0 ;
+               delete [] ((char*)_text);
+               char** pRef = (char**)&_text;
+               *pRef = 0;
        }
        ASSERT(_text==NULL) ;
 }
@@ -103,7 +108,7 @@ SALOME_Exception::SALOME_Exception( const SALOME_Exception &ex ): _text(duplicat
 }
 
 
-ostream & operator<<( ostream &os , const SALOME_Exception &ex )
+std::ostream & operator<<( std::ostream &os , const SALOME_Exception &ex )
 {
        os << ex._text ;
        return os ;
index 9ab9c9c3c11a0740842ae31200eb2b7e3a04b882..c870618aae1719ef383891205248107c8e7104b1 100644 (file)
 
 # define LOCALIZED(message) #message , __FILE__ , __LINE__
 
+#if defined UTILS_EXPORTS
+#if defined WIN32
+#define UTILS_EXPORT __declspec( dllexport )
+#else
+#define UTILS_EXPORT
+#endif
+#else
+#if defined WNT
+#define UTILS_EXPORT __declspec( dllimport )
+#else
+#define UTILS_EXPORT
+#endif
+#endif
 
-class SALOME_Exception : public std::exception
+class UTILS_EXPORT SALOME_Exception : public std::exception
 {
 
 private :
index 79d4843891e54b56d29957014cce2639135c8f64..8921e17b7449e28e971712a30d5511e2ae037aaf 100644 (file)
@@ -140,32 +140,32 @@ template <class TYPE> SINGLETON_<TYPE>::SINGLETON_( void )
 template <class TYPE> int SINGLETON_<TYPE>::Destruction( void )
 {
        int k = - 1 ;
-       BEGIN_OF("SINGLETON_<TYPE>::Destruction( void )") ;
+       //BEGIN_OF("SINGLETON_<TYPE>::Destruction( void )") ;
        if ( PtrSingleton )
        {
-               MESSAGE("Destruction du SINGLETON_") ;
+         //MESSAGE("Destruction du SINGLETON_") ;
 
 
                std::list<DESTRUCTEUR_GENERIQUE_ *>::iterator k ;
-               for( k=DESTRUCTEUR_GENERIQUE_::Destructeurs.begin() ; k!=DESTRUCTEUR_GENERIQUE_::Destructeurs.end();k++)
+               for( k=DESTRUCTEUR_GENERIQUE_::Destructeurs->begin() ; k!=DESTRUCTEUR_GENERIQUE_::Destructeurs->end();k++)
                {
                        if ( *k == PtrSingleton->_Instance )
                        {
-                               DESTRUCTEUR_GENERIQUE_::Destructeurs.erase( k ) ;
+                               DESTRUCTEUR_GENERIQUE_::Destructeurs->erase( k ) ;
                                break ;
                        }
                }
                delete PtrSingleton ;
                PtrSingleton = NULL ;
        }
-       END_OF("SINGLETON_<TYPE>::Destruction( void )") ;
+       //END_OF("SINGLETON_<TYPE>::Destruction( void )") ;
        return k ;
 }
 
 
 template <class TYPE> SINGLETON_<TYPE>::~SINGLETON_()
 {
-       MESSAGE("passage dans SINGLETON_<TYPE>::~SINGLETON_( void )") ;
+  //MESSAGE("passage dans SINGLETON_<TYPE>::~SINGLETON_( void )") ;
 }
 
 # endif                /* # if !defined( __SINGLETON__H__ ) */
index e0940bfdacd39ab2f6ebb85ecaabde562b9d19a6..c96747334c6e902cfcf845b5758733a2171b7a62 100644 (file)
@@ -24,7 +24,6 @@
 #include <signal.h>
 
 #include "Utils_SignalsHandler.h"
-using namespace std;
 
 
 //============================================================================
@@ -78,12 +77,15 @@ static void RestoreSigHandler(TSigHandler theSigHandler,
 //=======================================================================
 Utils_SignalsHandler::Utils_SignalsHandler()
 {
-  StoreSignalHandler(mySigHandlerCont,SIGHUP); // end of leader process
-  StoreSignalHandler(mySigHandlerCont,SIGFPE); // floating point exception
-  
-  StoreSignalHandler(mySigHandlerCont,SIGINT); // interrupt
+  // asv 28.02.05 : some signals are not defined on Windows.. why?  I don't know..
+#ifndef WNT
+  StoreSignalHandler(mySigHandlerCont,SIGHUP); // floating point exception
   StoreSignalHandler(mySigHandlerCont,SIGQUIT); // quit
   StoreSignalHandler(mySigHandlerCont,SIGBUS); // bus error
+  StoreSignalHandler(mySigHandlerCont,SIGSTKFLT); // stack fault.
+#endif
+  StoreSignalHandler(mySigHandlerCont,SIGFPE); // floating point exception  
+  StoreSignalHandler(mySigHandlerCont,SIGINT); // interrupt
   StoreSignalHandler(mySigHandlerCont,SIGILL); // illegal instruction
   StoreSignalHandler(mySigHandlerCont,SIGTERM); // termination
   StoreSignalHandler(mySigHandlerCont,SIGSEGV); // segmentation 
index 475dcf18eac56e5d94174ecfbbb1ef2245116b72..44228ba879caca483c38703d30368e24b95767b0 100644 (file)
 #define _UTILS_SIGNALSHANDLER_H_
 
 
+#if defined UTILS_EXPORTS
+#if defined WIN32
+#define UTILS_EXPORT __declspec( dllexport )
+#else
+#define UTILS_EXPORT
+#endif
+#else
+#if defined WNT
+#define UTILS_EXPORT __declspec( dllimport )
+#else
+#define UTILS_EXPORT
+#endif
+#endif
+
 #include <map>
 typedef void (*TSigHandler)(int);
 
 
-class Utils_SignalsHandler{
+class UTILS_EXPORT Utils_SignalsHandler{
  public:
   Utils_SignalsHandler();
   ~Utils_SignalsHandler();
@@ -40,7 +54,7 @@ class Utils_SignalsHandler{
 };
 
 
-class Utils_CASSignalsHandler: private Utils_SignalsHandler{
+class UTILS_EXPORT Utils_CASSignalsHandler: private Utils_SignalsHandler{
  public:
   Utils_CASSignalsHandler();
 };
index 67153429ee3c715d27d0cf8bbcfe4195232bd652..65325f103047bed0d812cc620f71932dce610d5a 100644 (file)
 //  Module : SALOME
 
 # include "Utils_Timer.hxx"
+
 # include <iostream>
 
 #include "utilities.h"
-using namespace std;
 
+#ifndef WNT
 static struct timezone *tz=(struct timezone*) malloc(sizeof(struct timezone));
+#else
+//timezone *tz=_timezone;
+#endif
 
 #ifndef CLK_TCK
 # define CLK_TCK      CLOCKS_PER_SEC
 #endif
 
 Utils_Timer::Utils_Timer() {
+#ifndef WNT
   RefToInitialTMS = new tms;
   RefToCurrentTMS = new tms;
 
   RefToInitialTimeB = new timeval;
   RefToCurrentTimeB = new timeval;
+#else
+  RefToInitialTMS = new FILETIME;
+  RefToCurrentTMS = new FILETIME;
+
+  RefToInitialTimeB = new time_t;
+  RefToCurrentTimeB = new time_t;
+#endif
 
   Cumul_user      = Cumul_sys = 0.;
   Stopped         = 1;
@@ -58,22 +70,37 @@ Utils_Timer::~Utils_Timer() {
 void Utils_Timer::Start() {
   if (Stopped) {
     Stopped = 0;
+#ifndef WNT
     times(RefToInitialTMS);
     gettimeofday(RefToInitialTimeB,tz);
+#else
+    SYSTEMTIME st;
+    GetSystemTime(&st);
+    SystemTimeToFileTime(&st, RefToInitialTMS);
+         time(RefToCurrentTimeB);
+#endif
   }
 }
 
 void Utils_Timer::Stop() {
   if (!Stopped) {
+#ifndef WNT
     times(RefToCurrentTMS);
     int diffr_user = RefToCurrentTMS->tms_utime - RefToInitialTMS->tms_utime;
     int diffr_sys  = RefToCurrentTMS->tms_stime - RefToInitialTMS->tms_stime;
     gettimeofday(RefToCurrentTimeB,tz);
-     
+
     Cumul_user += (double) diffr_user / CLK_TCK ;
     Cumul_sys  += (double) diffr_sys  / CLK_TCK ;
-    
-    Stopped = 1;
+#else
+    SYSTEMTIME st;
+    GetSystemTime(&st);
+    SystemTimeToFileTime(&st, RefToCurrentTMS);
+    Cumul_user += (int)(((ULARGE_INTEGER*)(RefToCurrentTMS))->QuadPart - ((ULARGE_INTEGER*)(RefToInitialTMS))->QuadPart) / 10000000;
+         Cumul_sys = Cumul_user;
+         time(RefToCurrentTimeB);
+#endif
+   Stopped = 1;
   }
 }
 
@@ -91,6 +118,10 @@ void Utils_Timer::Reset() {
 }
 
 void Utils_Timer::ShowAbsolute(){
+#ifndef WNT
     unsigned long Absolute_user = (unsigned long) ((timeval*)RefToCurrentTimeB)->tv_sec ;
+#else
+    unsigned long Absolute_user = *RefToCurrentTimeB;
+#endif
     MESSAGE("Absolute time: "   << Absolute_user  << " seconds ");
 }
index 06e10671bf589b5650dcceabb8706702c8400576..603323e4d140b84fcd72b8251db825bcc15f9815 100644 (file)
 #include <stdlib.h>
 #include <time.h>
 
+#ifndef WNT
 # include <sys/times.h>
 # include <sys/time.h>
 # include <unistd.h>
+#else
+# include <windows.h>
+# include <time.h>
+# include <sys/timeb.h>
+#define _POSIX_
+#endif
 
 class Utils_Timer {
  public:
@@ -44,6 +51,11 @@ class Utils_Timer {
   double Cumul_user;
   double Cumul_sys;
   bool Stopped;
+#ifndef WNT
   tms *RefToCurrentTMS, *RefToInitialTMS;
   timeval *RefToCurrentTimeB, *RefToInitialTimeB;
+#else
+  FILETIME *RefToCurrentTMS, *RefToInitialTMS;
+  time_t *RefToCurrentTimeB, *RefToInitialTimeB;
+#endif
 };
index fa6cff73770f45f7f4b0946588875c67e4af7b15..b611ba64c7515649fd68b85c82004998c90ef0e6 100644 (file)
  *     It is strongly (and only) used in the Registry environment
  *     (RegistryService, RegistryConnexion, Identity, ...)
  */
-
-#include <cstdlib>
-#include <cstring>
-
+extern "C"
+{
+#include <stdlib.h>
+#include <string.h>
+}
 #include  "utilities.h"
+#include "OpUtil.hxx"
 
 using namespace std;