ENABLE_TESTING()
SET(VERSION "6.5.0")
SET(VERSION_DEV "1")
+SET(WITH_MEDMEMGUI "0")
SET(KERNEL_ROOT_DIR $ENV{KERNEL_ROOT_DIR})
-FILE(TO_CMAKE_PATH $ENV{KERNEL_ROOT_DIR} KERNEL_ROOT_DIR)
-
IF(KERNEL_ROOT_DIR)
+ FILE(TO_CMAKE_PATH $ENV{KERNEL_ROOT_DIR} KERNEL_ROOT_DIR)
SET(MED_ENABLE_KERNEL ON)
+
+ SET(SALOME_MACROS_DIR ${KERNEL_ROOT_DIR}/salome_adm/cmake_files)
+
INCLUDE(${KERNEL_ROOT_DIR}/salome_adm/cmake_files/FindPLATFORM.cmake)
INCLUDE(${KERNEL_ROOT_DIR}/salome_adm/cmake_files/FindPYTHON.cmake)
INCLUDE(${KERNEL_ROOT_DIR}/salome_adm/cmake_files/FindMPI.cmake)
INCLUDE(${KERNEL_ROOT_DIR}/salome_adm/cmake_files/FindSWIG.cmake)
INCLUDE(${KERNEL_ROOT_DIR}/salome_adm/cmake_files/FindCPPUNIT.cmake)
INCLUDE(${KERNEL_ROOT_DIR}/salome_adm/cmake_files/FindDOXYGEN.cmake)
+ INCLUDE(${KERNEL_ROOT_DIR}/salome_adm/cmake_files/FindSPHINX.cmake)
INCLUDE(${KERNEL_ROOT_DIR}/salome_adm/cmake_files/FindLIBBATCH.cmake)
INCLUDE(${KERNEL_ROOT_DIR}/salome_adm/cmake_files/FindKERNEL.cmake)
-ELSE(KERNEL_ROOT_DIR)
- INCLUDE(${CMAKE_SOURCE_DIR}/adm_local_without_kernel/cmake_files/FindPLATFORM.cmake)
- INCLUDE(${CMAKE_SOURCE_DIR}/adm_local_without_kernel/cmake_files/FindMPI.cmake)
-ENDIF(KERNEL_ROOT_DIR)
-
-SET(GUI_ROOT_DIR $ENV{GUI_ROOT_DIR})
-FILE(TO_CMAKE_PATH $ENV{GUI_ROOT_DIR} GUI_ROOT_DIR)
-IF(GUI_ROOT_DIR)
+ SET(GUI_ROOT_DIR $ENV{GUI_ROOT_DIR})
+ FILE(TO_CMAKE_PATH $ENV{GUI_ROOT_DIR} GUI_ROOT_DIR)
+ IF(GUI_ROOT_DIR)
SET(MED_ENABLE_GUI ON)
INCLUDE(${GUI_ROOT_DIR}/adm_local/cmake_files/FindCAS.cmake)
INCLUDE(${GUI_ROOT_DIR}/adm_local/cmake_files/FindQT4.cmake)
INCLUDE(${GUI_ROOT_DIR}/adm_local/cmake_files/FindQWT.cmake)
INCLUDE(${GUI_ROOT_DIR}/adm_local/cmake_files/FindSIPPYQT.cmake)
INCLUDE(${GUI_ROOT_DIR}/adm_local/cmake_files/FindGUI.cmake)
-ENDIF(GUI_ROOT_DIR)
+ ENDIF(GUI_ROOT_DIR)
+ELSE(KERNEL_ROOT_DIR)
+ SET(SALOME_MACROS_DIR ${CMAKE_SOURCE_DIR}/adm_local_without_kernel/cmake_files)
+
+ INCLUDE(${CMAKE_SOURCE_DIR}/adm_local_without_kernel/cmake_files/FindPLATFORM.cmake)
+ INCLUDE(${CMAKE_SOURCE_DIR}/adm_local_without_kernel/cmake_files/FindMPI.cmake)
+ INCLUDE(${CMAKE_SOURCE_DIR}/adm_local_without_kernel/cmake_files/FindBOOST.cmake)
+ INCLUDE(${CMAKE_SOURCE_DIR}/adm_local_without_kernel/cmake_files/FindCPPUNIT.cmake)
+ INCLUDE(${CMAKE_SOURCE_DIR}/adm_local_without_kernel/cmake_files/FindHDF5.cmake)
+ INCLUDE(${CMAKE_SOURCE_DIR}/adm_local_without_kernel/cmake_files/FindPYTHON.cmake)
+ INCLUDE(${CMAKE_SOURCE_DIR}/adm_local_without_kernel/cmake_files/FindLIBXML2.cmake)
+ INCLUDE(${CMAKE_SOURCE_DIR}/adm_local_without_kernel/cmake_files/FindPTHREADS.cmake)
+ INCLUDE(${CMAKE_SOURCE_DIR}/adm_local_without_kernel/cmake_files/FindSWIG.cmake)
+
+ENDIF(KERNEL_ROOT_DIR)
INCLUDE(${CMAKE_SOURCE_DIR}/adm_local/cmake_files/FindPARMETIS.cmake)
INCLUDE(${CMAKE_SOURCE_DIR}/adm_local/cmake_files/FindMETIS.cmake)
IF(MED_ENABLE_KERNEL)
ADD_SUBDIRECTORY(idl)
+ELSE(MED_ENABLE_KERNEL)
+ ADD_SUBDIRECTORY(adm_local_without_kernel)
ENDIF(MED_ENABLE_KERNEL)
ADD_SUBDIRECTORY(adm_local)
ADD_SUBDIRECTORY(src)
AM_CXXFLAGS = @KERNEL_CXXFLAGS@ -include SALOMEconfig.h
AM_CPPFLAGS = @KERNEL_CXXFLAGS@ -include SALOMEconfig.h
else !MED_ENABLE_KERNEL
- AM_CXXFLAGS = -I$(top_builddir)/adm_local_without_kernel/unix -include SALOMEconfig.h
- AM_CPPFLAGS = -I$(top_builddir)/adm_local_without_kernel/unix -include SALOMEconfig.h
+ AM_CXXFLAGS = -I$(top_builddir)/adm_local_without_kernel -include SALOMEconfig.h
+ AM_CPPFLAGS = -I$(top_builddir)/adm_local_without_kernel -include SALOMEconfig.h
endif
# ============================================================
# Documentation directory
docdir = $(datadir)/doc/salome
-# common rules
-
-# meta object implementation files generation (moc)
-%_moc.cxx: %.h
- $(MOC) $< -o $@
-
-# translation (*.qm) files generation (lrelease)
-%.qm: %.ts
- $(LRELEASE) $< -qm $@
-
-EXTRA_DIST = $(MOC_FILES:%_moc.cxx=%.h) $(nodist_salomeres_DATA:%.qm=%.ts)
-
-# customize clean operation
-mostlyclean-local:
- rm -f @builddir@/*_moc.cxx
- rm -f @builddir@/*.qm
+EXTRA_DIST =
# tests
tests: unittest
--- /dev/null
+# Copyright (C) 2007-2012 CEA/DEN, EDF R&D
+#
+# 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.salome-platform.org/ or email : webmaster.salome@opencascade.com
+#
+
+SET(input ${CMAKE_CURRENT_SOURCE_DIR}/SALOMEconfig.h.in)
+SET(output ${CMAKE_CURRENT_BINARY_DIR}/SALOMEconfig.h)
+MESSAGE(STATUS "Creation of ${output}")
+CONFIGURE_FILE(${input} ${output})
+INSTALL(FILES ${output} DESTINATION ${MED_salomeinclude_HEADERS})
SUBDIRS = unix
-EXTRA_DIST += cmake_files
\ No newline at end of file
+EXTRA_DIST += cmake_files
+
+EXTRA_DIST += SALOMEconfig.h.in
+
+if !MED_ENABLE_KERNEL
+ nodist_salomeinclude_HEADERS = SALOMEconfig.h
+endif
--- /dev/null
+// Copyright (C) 2007-2012 CEA/DEN, EDF R&D, OPEN CASCADE
+//
+// Copyright (C) 2003-2007 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.salome-platform.org/ or email : webmaster.salome@opencascade.com
+//
+
+/* Debug mode ??? */
+#ifndef DEBUG
+# define DEBUG
+#endif
+
+/* CORBA headers include rules */
+#ifndef CORBA_CLIENT_HEADER
+# define QUOTE(x) #x
+# define CORBA_CLIENT_HEADER(x) QUOTE(x@IDL_CLN_H@)
+# define CORBA_SERVER_HEADER(x) QUOTE(x@IDL_SRV_H@)
+#endif
+
+/* Platform definition */
+#ifndef @MACHINE@
+ #define @MACHINE@
+#endif
+
+// This is only to suppress warning messages with defines redefined (cause of omniORB that exports these names)
+#ifdef PACKAGE
+#undef PACKAGE
+#endif
+#ifdef PACKAGE_BUGREPORT
+#undef PACKAGE_BUGREPORT
+#endif
+#ifdef PACKAGE_NAME
+#undef PACKAGE_NAME
+#endif
+#ifdef PACKAGE_STRING
+#undef PACKAGE_STRING
+#endif
+#ifdef PACKAGE_TARNAME
+#undef PACKAGE_TARNAME
+#endif
+#ifdef PACKAGE_VERSION
+#undef PACKAGE_VERSION
+#endif
+#ifdef VERSION
+#undef VERSION
+#endif
+
+#ifdef _POSIX_C_SOURCE
+#undef _POSIX_C_SOURCE
+#endif
--- /dev/null
+# Copyright (C) 2007-2012 CEA/DEN, EDF R&D, OPEN CASCADE
+#
+# Copyright (C) 2003-2007 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.salome-platform.org/ or email : webmaster.salome@opencascade.com
+#
+
+# ------
+
+MESSAGE(STATUS "Check for boost ...")
+
+# ------
+
+IF(BOOST_IS_MANDATORY STREQUAL 0)
+ SET(BOOST_IS_MANDATORY 0)
+ SET(BOOST_IS_OPTIONAL 1)
+ENDIF(BOOST_IS_MANDATORY STREQUAL 0)
+IF(BOOST_IS_OPTIONAL STREQUAL 0)
+ SET(BOOST_IS_MANDATORY 1)
+ SET(BOOST_IS_OPTIONAL 0)
+ENDIF(BOOST_IS_OPTIONAL STREQUAL 0)
+IF(NOT BOOST_IS_MANDATORY AND NOT BOOST_IS_OPTIONAL)
+ SET(BOOST_IS_MANDATORY 1)
+ SET(BOOST_IS_OPTIONAL 0)
+ENDIF(NOT BOOST_IS_MANDATORY AND NOT BOOST_IS_OPTIONAL)
+
+# ------
+
+SET(BOOST_STATUS 1)
+IF(WITHOUT_BOOST OR WITH_BOOST STREQUAL 0)
+ SET(BOOST_STATUS 0)
+ MESSAGE(STATUS "boost disabled from command line.")
+ENDIF(WITHOUT_BOOST OR WITH_BOOST STREQUAL 0)
+
+# ------
+
+IF(BOOST_STATUS)
+ IF(WITH_BOOST)
+ SET(BOOST_ROOT_USER ${WITH_BOOST})
+ ELSE(WITH_BOOST)
+ SET(BOOST_ROOT_USER $ENV{BOOST_ROOT})
+ IF(NOT BOOST_ROOT_USER)
+ SET(BOOST_ROOT_USER $ENV{BOOSTDIR})
+ ENDIF(NOT BOOST_ROOT_USER)
+ ENDIF(WITH_BOOST)
+ENDIF(BOOST_STATUS)
+
+# -----
+
+IF(BOOST_STATUS)
+ IF(BOOST_ROOT_USER)
+ SET(BOOST_FIND_PATHS_OPTION NO_DEFAULT_PATH)
+ ELSE(BOOST_ROOT_USER)
+ SET(BOOST_FIND_PATHS_OPTION)
+ ENDIF(BOOST_ROOT_USER)
+ENDIF(BOOST_STATUS)
+
+# -----
+
+IF(BOOST_STATUS)
+ IF(BOOST_ROOT_USER)
+ SET(BOOST_INCLUDE_PATHS ${BOOST_ROOT_USER} ${BOOST_ROOT_USER}/include)
+ ELSE(BOOST_ROOT_USER)
+ SET(BOOST_INCLUDE_PATHS)
+ ENDIF(BOOST_ROOT_USER)
+ SET(BOOST_INCLUDE_TO_FIND boost/shared_ptr.hpp)
+ FIND_PATH(BOOST_INCLUDE_DIR ${BOOST_INCLUDE_TO_FIND} PATHS ${BOOST_INCLUDE_PATHS} ${BOOST_FIND_PATHS_OPTION})
+ IF(BOOST_INCLUDE_DIR)
+ IF(BOOST_ROOT_USER)
+ SET(BOOST_CPPFLAGS -I${BOOST_INCLUDE_DIR})# to be removed
+ SET(BOOST_INCLUDE_DIRS ${BOOST_INCLUDE_DIR})
+ ENDIF(BOOST_ROOT_USER)
+ MESSAGE(STATUS "${BOOST_INCLUDE_TO_FIND} found in ${BOOST_INCLUDE_DIR}")
+ ELSE(BOOST_INCLUDE_DIR)
+ SET(BOOST_STATUS 0)
+ IF(BOOST_ROOT_USER)
+ MESSAGE(STATUS "${BOOST_INCLUDE_TO_FIND} not found in ${BOOST_INCLUDE_PATHS}, check your BOOST installation.")
+ ELSE(BOOST_ROOT_USER)
+ MESSAGE(STATUS "${BOOST_INCLUDE_TO_FIND} not found on system, try to use WITH_BOOST option or BOOST_ROOT environment variable.")
+ ENDIF(BOOST_ROOT_USER)
+ ENDIF(BOOST_INCLUDE_DIR)
+ENDIF(BOOST_STATUS)
+
+# ----
+
+IF(BOOST_STATUS)
+ IF(BOOST_ROOT_USER)
+ SET(BOOST_LIB_PATHS ${BOOST_ROOT_USER}/lib)
+ ELSE(BOOST_ROOT_USER)
+ SET(BOOST_LIB_PATHS)
+ ENDIF(BOOST_ROOT_USER)
+ENDIF(BOOST_STATUS)
+
+IF(WINDOWS)
+ SET(BOOST_ENABLE_DLL 1)
+ELSE(WINDOWS)
+ SET(BOOST_ENABLE_DLL 0)
+ENDIF(WINDOWS)
+
+IF(BOOST_STATUS)
+ SET(BOOST_LIBS)
+ FOREACH(name thread date_time signals filesystem system regex)
+ IF(WINDOWS)
+ IF(CMAKE_BUILD_TYPE STREQUAL Debug)
+ SET(EXTENSION -gd)
+ ELSE(CMAKE_BUILD_TYPE STREQUAL Debug)
+ SET(EXTENSION)
+ ENDIF(CMAKE_BUILD_TYPE STREQUAL Debug)
+ SET(LIB_NAMES)
+ SET(STATIC_LIB_NAMES)
+ FOREACH(version 1_35 1_38 1_42 1_46_1 1_49)
+ SET(LIB_NAMES ${LIB_NAMES} boost_${name}-vc90-mt${EXTENSION}-${version})
+ SET(STATIC_LIB_NAMES ${STATIC_LIB_NAMES} libboost_${name}-vc90-mt${EXTENSION}-${version})
+ ENDFOREACH(version 1_35 1_38 1_42 1_46_1 1_49)
+ FIND_LIBRARY(BOOST_LIB_${name} NAMES ${LIB_NAMES} PATHS ${BOOST_LIB_PATHS} ${BOOST_FIND_PATHS_OPTION})
+ SET(BOOST_LIB_${name}_FOUNDED ${BOOST_LIB_${name}})
+ IF(NOT BOOST_LIB_${name})
+ FIND_LIBRARY(STATIC_BOOST_LIB_${name} NAMES ${STATIC_LIB_NAMES} PATHS ${BOOST_LIB_PATHS} ${BOOST_FIND_PATHS_OPTION})
+ SET(BOOST_LIB_${name}_FOUNDED ${STATIC_BOOST_LIB_${name}})
+ SET(BOOST_ENABLE_DLL 0)
+ ENDIF(NOT BOOST_LIB_${name})
+ ELSE(WINDOWS)
+ FIND_LIBRARY(BOOST_LIB_${name} NAMES boost_${name} boost_${name}-mt PATHS ${BOOST_LIB_PATHS} ${BOOST_FIND_PATHS_OPTION})
+ SET(BOOST_LIB_${name}_FOUNDED ${BOOST_LIB_${name}})
+ ENDIF(WINDOWS)
+ IF(NOT BOOST_LIB_${name}_FOUNDED)
+ MESSAGE(STATUS "boost lib ${name} not found")
+ SET(BOOST_STATUS 0)
+ ENDIF(NOT BOOST_LIB_${name}_FOUNDED)
+ STRING(TOUPPER ${name} upname)
+ SET(BOOST_LIB_${upname} ${BOOST_LIB_${name}_FOUNDED})
+ SET(BOOST_LIBS ${BOOST_LIBS} ${BOOST_LIB_${name}_FOUNDED})
+ ENDFOREACH(name thread date_time signals filesystem system)
+ENDIF(BOOST_STATUS)
+
+# ------
+
+IF(BOOST_STATUS)
+ IF(WINDOWS)
+ SET(BOOST_CPPFLAGS ${BOOST_CPPFLAGS} -DBOOST_DISABLE_ASSERTS)# to be removed
+ SET(BOOST_DEFINITIONS -DBOOST_DISABLE_ASSERTS)
+ IF(BOOST_ENABLE_DLL)
+ SET(BOOST_CPPFLAGS ${BOOST_CPPFLAGS} -DBOOST_ALL_DYN_LINK)# to be removed
+ SET(BOOST_DEFINITIONS "${BOOST_DEFINITIONS} -DBOOST_ALL_DYN_LINK")
+ ENDIF(BOOST_ENABLE_DLL)
+ ENDIF(WINDOWS)
+ELSE(BOOST_STATUS)
+ IF(BOOST_IS_MANDATORY)
+ MESSAGE(FATAL_ERROR "boost not found ... mandatory ... abort")
+ ELSE(BOOST_IS_MANDATORY)
+ MESSAGE(STATUS "boost not found ... optional ... disabled")
+ ENDIF(BOOST_IS_MANDATORY)
+ENDIF(BOOST_STATUS)
+
+# ------
--- /dev/null
+# Copyright (C) 2007-2012 CEA/DEN, EDF R&D, OPEN CASCADE
+#
+# Copyright (C) 2003-2007 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.salome-platform.org/ or email : webmaster.salome@opencascade.com
+#
+
+# ------
+
+MESSAGE(STATUS "Check for cppunit ...")
+
+# ------
+
+IF(CPPUNIT_IS_MANDATORY STREQUAL 0)
+ SET(CPPUNIT_IS_MANDATORY 0)
+ SET(CPPUNIT_IS_OPTIONAL 1)
+ENDIF(CPPUNIT_IS_MANDATORY STREQUAL 0)
+IF(CPPUNIT_IS_OPTIONAL STREQUAL 0)
+ SET(CPPUNIT_IS_MANDATORY 1)
+ SET(CPPUNIT_IS_OPTIONAL 0)
+ENDIF(CPPUNIT_IS_OPTIONAL STREQUAL 0)
+IF(NOT CPPUNIT_IS_MANDATORY AND NOT CPPUNIT_IS_OPTIONAL)
+ SET(CPPUNIT_IS_MANDATORY 0)
+ SET(CPPUNIT_IS_OPTIONAL 1)
+ENDIF(NOT CPPUNIT_IS_MANDATORY AND NOT CPPUNIT_IS_OPTIONAL)
+
+# ------
+
+SET(CPPUNIT_STATUS 1)
+IF(WITHOUT_CPPUNIT OR WITH_CPPUNIT STREQUAL 0)
+ SET(CPPUNIT_STATUS 0)
+ MESSAGE(STATUS "cppunit disabled from command line.")
+ENDIF(WITHOUT_CPPUNIT OR WITH_CPPUNIT STREQUAL 0)
+
+# ------
+
+IF(CPPUNIT_STATUS)
+ IF(WITH_CPPUNIT)
+ SET(CPPUNIT_ROOT_USER ${WITH_CPPUNIT})
+ ELSE(WITH_CPPUNIT)
+ SET(CPPUNIT_ROOT_USER $ENV{CPPUNIT_ROOT})
+ ENDIF(WITH_CPPUNIT)
+ENDIF(CPPUNIT_STATUS)
+
+# -----
+
+IF(CPPUNIT_STATUS)
+ IF(CPPUNIT_ROOT_USER)
+ SET(CPPUNIT_FIND_PATHS_OPTION NO_DEFAULT_PATH)
+ ELSE(CPPUNIT_ROOT_USER)
+ SET(CPPUNIT_FIND_PATHS_OPTION)
+ ENDIF(CPPUNIT_ROOT_USER)
+ENDIF(CPPUNIT_STATUS)
+
+# -----
+
+IF(CPPUNIT_STATUS)
+ IF(CPPUNIT_ROOT_USER)
+ SET(CPPUNIT_INCLUDE_PATHS ${CPPUNIT_ROOT_USER} ${CPPUNIT_ROOT_USER}/include)
+ ELSE(CPPUNIT_ROOT_USER)
+ SET(CPPUNIT_INCLUDE_PATHS)
+ ENDIF(CPPUNIT_ROOT_USER)
+ SET(CPPUNIT_INCLUDE_TO_FIND cppunit/extensions/HelperMacros.h)
+ FIND_PATH(CPPUNIT_INCLUDE_DIR ${CPPUNIT_INCLUDE_TO_FIND} PATHS ${CPPUNIT_INCLUDE_PATHS} ${CPPUNIT_FIND_PATHS_OPTION})
+ IF(CPPUNIT_INCLUDE_DIR)
+ IF(CPPUNIT_ROOT_USER)
+ SET(CPPUNIT_INCLUDES -I${CPPUNIT_INCLUDE_DIR})# to be removed
+ IF(${CPPUNIT_INCLUDE_DIR} STREQUAL /usr/include)
+ SET(CPPUNIT_INCLUDE_DIRS)
+ ELSE(${CPPUNIT_INCLUDE_DIR} STREQUAL /usr/include)
+ SET(CPPUNIT_INCLUDE_DIRS ${CPPUNIT_INCLUDE_DIR})
+ ENDIF(${CPPUNIT_INCLUDE_DIR} STREQUAL /usr/include)
+ ENDIF(CPPUNIT_ROOT_USER)
+ MESSAGE(STATUS "${CPPUNIT_INCLUDE_TO_FIND} found in ${CPPUNIT_INCLUDE_DIR}")
+ ELSE(CPPUNIT_INCLUDE_DIR)
+ SET(CPPUNIT_STATUS 0)
+ IF(CPPUNIT_ROOT_USER)
+ MESSAGE(STATUS "${CPPUNIT_INCLUDE_TO_FIND} not found in ${CPPUNIT_INCLUDE_PATHS}, check your CPPUNIT installation.")
+ ELSE(CPPUNIT_ROOT_USER)
+ MESSAGE(STATUS "${CPPUNIT_INCLUDE_TO_FIND} not found on system, try to use WITH_CPPUNIT option or CPPUNIT_ROOT environment variable.")
+ ENDIF(CPPUNIT_ROOT_USER)
+ ENDIF(CPPUNIT_INCLUDE_DIR)
+ENDIF(CPPUNIT_STATUS)
+
+# ----
+
+IF(CPPUNIT_STATUS)
+ IF(CPPUNIT_ROOT_USER)
+ SET(CPPUNIT_LIB_PATHS ${CPPUNIT_ROOT_USER}/lib)
+ ELSE(CPPUNIT_ROOT_USER)
+ SET(CPPUNIT_LIB_PATHS)
+ ENDIF(CPPUNIT_ROOT_USER)
+ENDIF(CPPUNIT_STATUS)
+
+IF(CPPUNIT_STATUS)
+ IF(WINDOWS)
+ IF(CMAKE_BUILD_TYPE STREQUAL Debug)
+ FIND_LIBRARY(CPPUNIT_LIB cppunitd_dll PATHS ${CPPUNIT_LIB_PATHS} ${CPPUNIT_FIND_PATHS_OPTION})
+ ELSE(CMAKE_BUILD_TYPE STREQUAL Debug)
+ FIND_LIBRARY(CPPUNIT_LIB cppunit_dll PATHS ${CPPUNIT_LIB_PATHS} ${CPPUNIT_FIND_PATHS_OPTION})
+ ENDIF(CMAKE_BUILD_TYPE STREQUAL Debug)
+ ELSE(WINDOWS)
+ FIND_LIBRARY(CPPUNIT_LIB cppunit PATHS ${CPPUNIT_LIB_PATHS} ${CPPUNIT_FIND_PATHS_OPTION})
+ ENDIF(WINDOWS)
+ SET(CPPUNIT_LIBS)
+ IF(CPPUNIT_LIB)
+ SET(CPPUNIT_LIBS ${CPPUNIT_LIBS} ${CPPUNIT_LIB})
+ MESSAGE(STATUS "cppunit lib found: ${CPPUNIT_LIB}")
+ ELSE(CPPUNIT_LIB)
+ SET(CPPUNIT_STATUS 0)
+ IF(CPPUNIT_ROOT_USER)
+ MESSAGE(STATUS "cppunit lib not found in ${CPPUNIT_LIB_PATHS}, check your CPPUNIT installation.")
+ ELSE(CPPUNIT_ROOT_USER)
+ MESSAGE(STATUS "cppunit lib not found on system, try to use WITH_CPPUNIT option or CPPUNIT_ROOT environment variable.")
+ ENDIF(CPPUNIT_ROOT_USER)
+ ENDIF(CPPUNIT_LIB)
+ENDIF(CPPUNIT_STATUS)
+
+# ----
+
+IF(CPPUNIT_STATUS)
+ SET(CPPUNIT_IS_OK 1)
+ SET(CPPUNIT_DEFINITIONS)
+ IF(WINDOWS)
+ SET(CPPUNIT_INCLUDES ${CPPUNIT_INCLUDES} -DCPPUNIT_DLL)
+ SET(CPPUNIT_DEFINITIONS "-DCPPUNIT_DLL")
+ ENDIF(WINDOWS)
+ELSE(CPPUNIT_STATUS)
+ IF(CPPUNIT_IS_MANDATORY)
+ MESSAGE(FATAL_ERROR "cppunit not found ... mandatory ... abort")
+ ELSE(CPPUNIT_IS_MANDATORY)
+ MESSAGE(STATUS "cppunit not found ... optional ... disabled")
+ ENDIF(CPPUNIT_IS_MANDATORY)
+ENDIF(CPPUNIT_STATUS)
+
+# ------
--- /dev/null
+# Copyright (C) 2007-2012 CEA/DEN, EDF R&D, OPEN CASCADE
+#
+# Copyright (C) 2003-2007 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.salome-platform.org/ or email : webmaster.salome@opencascade.com
+#
+
+# ------
+
+MESSAGE(STATUS "Check for hdf5 ...")
+
+# ------
+
+IF(HDF5_IS_MANDATORY STREQUAL 0)
+ SET(HDF5_IS_MANDATORY 0)
+ SET(HDF5_IS_OPTIONAL 1)
+ENDIF(HDF5_IS_MANDATORY STREQUAL 0)
+IF(HDF5_IS_OPTIONAL STREQUAL 0)
+ SET(HDF5_IS_MANDATORY 1)
+ SET(HDF5_IS_OPTIONAL 0)
+ENDIF(HDF5_IS_OPTIONAL STREQUAL 0)
+IF(NOT HDF5_IS_MANDATORY AND NOT HDF5_IS_OPTIONAL)
+ SET(HDF5_IS_MANDATORY 1)
+ SET(HDF5_IS_OPTIONAL 0)
+ENDIF(NOT HDF5_IS_MANDATORY AND NOT HDF5_IS_OPTIONAL)
+
+# ------
+
+SET(HDF5_STATUS 1)
+IF(WITHOUT_HDF5 OR WITH_HDF5 STREQUAL 0)
+ SET(HDF5_STATUS 0)
+ MESSAGE(STATUS "hdf5 disabled from command line.")
+ENDIF(WITHOUT_HDF5 OR WITH_HDF5 STREQUAL 0)
+
+# ------
+
+IF(HDF5_STATUS)
+ IF(WITH_HDF5)
+ SET(HDF5_ROOT_USER ${WITH_HDF5})
+ ENDIF(WITH_HDF5)
+ IF(NOT HDF5_ROOT_USER)
+ SET(HDF5_ROOT_USER $ENV{HDF5_ROOT})
+ ENDIF(NOT HDF5_ROOT_USER)
+ IF(NOT HDF5_ROOT_USER)
+ SET(HDF5_ROOT_USER $ENV{HDF5HOME})
+ ENDIF(NOT HDF5_ROOT_USER)
+ENDIF(HDF5_STATUS)
+
+# ------
+
+IF(HDF5_STATUS)
+ IF(NOT HDF5_ROOT_USER)
+ FIND_PROGRAM(HDF5_DUMP h5dump)
+ IF(HDF5_DUMP)
+ MESSAGE(STATUS "h5dump found: ${HDF5_DUMP}")
+ IF(HDF5_DUMP STREQUAL /usr/bin/h5dump)
+ ELSE(HDF5_DUMP STREQUAL /usr/bin/h5dump)
+ SET(HDF5_ROOT_USER ${HDF5_DUMP})
+ GET_FILENAME_COMPONENT(HDF5_ROOT_USER ${HDF5_ROOT_USER} PATH)
+ GET_FILENAME_COMPONENT(HDF5_ROOT_USER ${HDF5_ROOT_USER} PATH)
+ ENDIF(HDF5_DUMP STREQUAL /usr/bin/h5dump)
+ ELSE(HDF5_DUMP)
+ MESSAGE(STATUS "h5dump not found, try to use WITH_HDF5 option or HDF5_ROOT (or HDF5HOME) environment variable")
+ SET(HDF5_STATUS 0)
+ ENDIF(HDF5_DUMP)
+ ENDIF(NOT HDF5_ROOT_USER)
+ENDIF(HDF5_STATUS)
+
+# ------
+
+IF(HDF5_STATUS)
+ IF(HDF5_ROOT_USER)
+ SET(HDF5_FIND_PATHS_OPTION NO_DEFAULT_PATH)
+ ELSE(HDF5_ROOT_USER)
+ SET(HDF5_FIND_PATHS_OPTION)
+ ENDIF(HDF5_ROOT_USER)
+ENDIF(HDF5_STATUS)
+
+# ------
+
+IF(HDF5_STATUS)
+ IF(HDF5_ROOT_USER)
+ SET(HDF5_INCLUDE_PATHS ${HDF5_ROOT_USER}/include)
+ ELSE(HDF5_ROOT_USER)
+ SET(HDF5_INCLUDE_PATHS)
+ ENDIF(HDF5_ROOT_USER)
+ SET(HDF5_INCLUDE_TO_FIND H5public.h)
+ FIND_PATH(HDF5_INCLUDE_DIR ${HDF5_INCLUDE_TO_FIND} PATHS ${HDF5_INCLUDE_PATHS} ${HDF5_FIND_PATHS_OPTION})
+ IF(HDF5_INCLUDE_DIR)
+ IF(HDF5_ROOT_USER)
+ SET(HDF5_INCLUDES -I${HDF5_INCLUDE_DIR})# to be removed
+ IF(${HDF5_INCLUDE_DIR} STREQUAL /usr/include)
+ SET(HDF5_INCLUDE_DIRS)
+ ELSE(${HDF5_INCLUDE_DIR} STREQUAL /usr/include)
+ SET(HDF5_INCLUDE_DIRS ${HDF5_INCLUDE_DIR})
+ ENDIF(${HDF5_INCLUDE_DIR} STREQUAL /usr/include)
+ ENDIF(HDF5_ROOT_USER)
+ SET(HDF5_DEFINITIONS "-DH5_USE_16_API -D_HDF5USEDLL_")
+ SET(HDF5_INCLUDES -DH5_USE_16_API -D_HDF5USEDLL_ ${HDF5_INCLUDES})# to be removed
+ MESSAGE(STATUS "${HDF5_INCLUDE_TO_FIND} found in ${HDF5_INCLUDE_DIR}")
+ ELSE(HDF5_INCLUDE_DIR)
+ SET(HDF5_STATUS 0)
+ IF(HDF5_ROOT_USER)
+ MESSAGE(STATUS "${HDF5_INCLUDE_TO_FIND} not found in ${HDF5_INCLUDE_PATHS}, check your HDF5 installation.")
+ ELSE(HDF5_ROOT_USER)
+ MESSAGE(STATUS "${HDF5_INCLUDE_TO_FIND} not found on system, try to use WITH_HDF5 option or HDF5_ROOT (or HDF5HOME) environment variable.")
+ ENDIF(HDF5_ROOT_USER)
+ ENDIF(HDF5_INCLUDE_DIR)
+ENDIF(HDF5_STATUS)
+
+# ----
+
+IF(HDF5_STATUS)
+ IF(HDF5_ROOT_USER)
+ IF(WINDOWS)
+ SET(HDF5_LIB_PATHS ${HDF5_ROOT_USER}/dll ${HDF5_ROOT_USER}/lib)
+ ELSE(WINDOWS)
+ SET(HDF5_LIB_PATHS ${HDF5_ROOT_USER}/lib)
+ ENDIF(WINDOWS)
+ ELSE(HDF5_ROOT_USER)
+ SET(HDF5_LIB_PATHS)
+ ENDIF(HDF5_ROOT_USER)
+ IF(WINDOWS)
+ IF(CMAKE_BUILD_TYPE STREQUAL Release)
+ FIND_LIBRARY(HDF5_LIB hdf5dll PATHS ${HDF5_LIB_PATHS} ${HDF5_FIND_PATHS_OPTION})
+ ELSE(CMAKE_BUILD_TYPE STREQUAL Release)
+ FIND_LIBRARY(HDF5_LIB hdf5ddll PATHS ${HDF5_LIB_PATHS} ${HDF5_FIND_PATHS_OPTION})
+ ENDIF(CMAKE_BUILD_TYPE STREQUAL Release)
+ ELSE(WINDOWS)
+ FIND_LIBRARY(HDF5_LIB hdf5 PATHS ${HDF5_LIB_PATHS} ${HDF5_FIND_PATHS_OPTION})
+ ENDIF(WINDOWS)
+ SET(HDF5_LIBS)
+ IF(HDF5_LIB)
+ SET(HDF5_LIBS ${HDF5_LIBS} ${HDF5_LIB})
+ MESSAGE(STATUS "hdf5 lib found: ${HDF5_LIB}")
+ ELSE(HDF5_LIB)
+ SET(HDF5_STATUS 0)
+ IF(HDF5_ROOT_USER)
+ MESSAGE(STATUS "hdf5 lib not found in ${HDF5_LIB_PATHS}, check your HDF5 installation.")
+ ELSE(HDF5_ROOT_USER)
+ MESSAGE(STATUS "hdf5 lib not found on system, try to use WITH_HDF5 option or HDF5_ROOT (or HDF5HOME) environment variable.")
+ ENDIF(HDF5_ROOT_USER)
+ ENDIF(HDF5_LIB)
+ENDIF(HDF5_STATUS)
+
+IF(HDF5_STATUS)
+ FILE(TO_NATIVE_PATH "${HDF5_INCLUDE_DIR}/H5public.h" HDF5_H5PUBLIC_FILE)
+ EXECUTE_PROCESS(
+ COMMAND ${PYTHON_EXECUTABLE} -c "import re,sys ; f=file(sys.argv[1]) ; s=f.read() ; c=re.compile('^#[\\s]*include[\\s]*\\\"(?P<nm>[A-Za-z0-9\\-]+\\.h)\\\"',re.M) ; sys.stdout.write(c.search(s).group('nm'))"
+ ${HDF5_H5PUBLIC_FILE}
+ OUTPUT_VARIABLE HDF5_H5PUBLIC_DEFS_FILE
+ )
+ FILE(TO_NATIVE_PATH "${HDF5_INCLUDE_DIR}/${HDF5_H5PUBLIC_DEFS_FILE}" HDF5_H5PUBLIC_DEFS_FILE)
+ EXECUTE_PROCESS(
+ COMMAND ${PYTHON_EXECUTABLE} -c "import re,sys ; f=file(sys.argv[1]) ; s=f.read() ; c=re.compile('^#[\\s]*define[\\s]+H5_HAVE_PARALLEL[\\s]+(?P<nm>[\\d]+)',re.M) ; m=c.search(s); exec('if m: sys.stdout.write(m.group(\\'nm\\'))') ; exec('if not m: sys.stdout.write(\\'0\\')')"
+ ${HDF5_H5PUBLIC_DEFS_FILE}
+ OUTPUT_VARIABLE HDF5_HAVE_PARALLEL
+ )
+ IF(HDF5_HAVE_PARALLEL)
+ MESSAGE(STATUS "hdf5 is parallel")
+ SET(HDF5_INCLUDES ${HDF5_INCLUDES} -I${MPI_INCLUDE_DIRS}) # to remove after "cmakeization"
+ SET(HDF5_INCLUDE_DIRS ${HDF5_INCLUDE_DIRS} ${MPI_INCLUDE_DIRS})
+ SET(HDF5_DEFINITIONS "${HDF5_DEFINITIONS} ${MPI_DEFINITIONS}")
+ SET(HDF5_LIBS ${HDF5_LIBS} ${MPI_LIBS})
+ ENDIF(HDF5_HAVE_PARALLEL)
+ENDIF(HDF5_STATUS)
+
+# ----
+
+IF(HDF5_STATUS)
+ SET(HDF5_CPPFLAGS ${HDF5_INCLUDES})# to be removed
+ELSE(HDF5_STATUS)
+ IF(HDF5_IS_MANDATORY)
+ MESSAGE(FATAL_ERROR "hdf5 not found ... mandatory ... abort")
+ ELSE(HDF5_IS_MANDATORY)
+ MESSAGE(STATUS "hdf5 not found ... optional ... disabled")
+ ENDIF(HDF5_IS_MANDATORY)
+ENDIF(HDF5_STATUS)
+
+# ------
+
+#SET(ZLIB_ROOT $ENV{ZLIB_ROOT})
+#STRING(LENGTH "${ZLIB_ROOT}" NB)
+#IF(${NB} GREATER 0)
+# FIND_LIBRARY(ZLIB_LIBS zlib ${ZLIB_ROOT}/lib)
+# SET(HDF5_LIBS ${HDF5_LIBS} ${ZLIB_LIBS})
+#ENDIF(${NB} GREATER 0)
+
+#SET(SZIP_ROOT $ENV{SZIP_ROOT})
+#STRING(LENGTH "${SZIP_ROOT}" NB)
+#IF(${NB} GREATER 0)
+# FIND_LIBRARY(SZIP_LIBS szlib ${SZIP_ROOT}/lib)
+# SET(HDF5_LIBS ${HDF5_LIBS} ${SZIP_LIBS})
+#ENDIF(${NB} GREATER 0)
+
+# ------
--- /dev/null
+# Copyright (C) 2007-2012 CEA/DEN, EDF R&D, OPEN CASCADE
+#
+# Copyright (C) 2003-2007 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.salome-platform.org/ or email : webmaster.salome@opencascade.com
+#
+
+# ------
+
+MESSAGE(STATUS "Check for libxml2 ...")
+
+# ------
+
+IF(LIBXML2_IS_MANDATORY STREQUAL 0)
+ SET(LIBXML2_IS_MANDATORY 0)
+ SET(LIBXML2_IS_OPTIONAL 1)
+ENDIF(LIBXML2_IS_MANDATORY STREQUAL 0)
+IF(LIBXML2_IS_OPTIONAL STREQUAL 0)
+ SET(LIBXML2_IS_MANDATORY 1)
+ SET(LIBXML2_IS_OPTIONAL 0)
+ENDIF(LIBXML2_IS_OPTIONAL STREQUAL 0)
+IF(NOT LIBXML2_IS_MANDATORY AND NOT LIBXML2_IS_OPTIONAL)
+ SET(LIBXML2_IS_MANDATORY 1)
+ SET(LIBXML2_IS_OPTIONAL 0)
+ENDIF(NOT LIBXML2_IS_MANDATORY AND NOT LIBXML2_IS_OPTIONAL)
+
+# ------
+
+SET(LIBXML2_STATUS 1)
+IF(WITHOUT_LIBXML2 OR WITH_LIBXML2 STREQUAL 0)
+ SET(LIBXML2_STATUS 0)
+ MESSAGE(STATUS "libxml2 disabled from command line.")
+ENDIF(WITHOUT_LIBXML2 OR WITH_LIBXML2 STREQUAL 0)
+
+# ------
+
+IF(LIBXML2_STATUS)
+ IF(WITH_LIBXML2)
+ SET(LIBXML2_ROOT_USER ${WITH_LIBXML2})
+ ELSE(WITH_LIBXML2)
+ SET(LIBXML2_ROOT_USER $ENV{LIBXML2_ROOT})
+ IF(NOT LIBXML2_ROOT_USER)
+ SET(LIBXML2_ROOT_USER $ENV{LIBXML_DIR})
+ ENDIF(NOT LIBXML2_ROOT_USER)
+ ENDIF(WITH_LIBXML2)
+ENDIF(LIBXML2_STATUS)
+
+# -----
+
+IF(LIBXML2_STATUS)
+ IF(LIBXML2_ROOT_USER)
+ SET(LIBXML2_FIND_PATHS_OPTION NO_DEFAULT_PATH)
+ ELSE(LIBXML2_ROOT_USER)
+ SET(LIBXML2_FIND_PATHS_OPTION)
+ ENDIF(LIBXML2_ROOT_USER)
+ENDIF(LIBXML2_STATUS)
+
+# -----
+
+IF(LIBXML2_STATUS)
+ IF(LIBXML2_ROOT_USER)
+ IF(WINDOWS)
+ SET(LIBXML2_INCLUDE_PATHS ${LIBXML2_ROOT_USER}/include)
+ ELSE(WINDOWS)
+ SET(LIBXML2_INCLUDE_PATHS ${LIBXML2_ROOT_USER}/include/libxml2)
+ ENDIF(WINDOWS)
+ ELSE(LIBXML2_ROOT_USER)
+ SET(LIBXML2_INCLUDE_PATHS /usr/include/libxml2)
+ ENDIF(LIBXML2_ROOT_USER)
+ SET(LIBXML2_INCLUDE_TO_FIND libxml/parser.h)
+ FIND_PATH(LIBXML2_INCLUDE_DIR ${LIBXML2_INCLUDE_TO_FIND} PATHS ${LIBXML2_INCLUDE_PATHS} ${LIBXML2_FIND_PATHS_OPTION})
+ IF(LIBXML2_INCLUDE_DIR)
+ SET(LIBXML2_INCLUDES -I${LIBXML2_INCLUDE_DIR})# to remove
+ SET(LIBXML_INCLUDE_DIRS ${LIBXML2_INCLUDE_DIR})
+ MESSAGE(STATUS "${LIBXML2_INCLUDE_TO_FIND} found in ${LIBXML2_INCLUDE_DIR}")
+ ELSE(LIBXML2_INCLUDE_DIR)
+ SET(LIBXML2_STATUS 0)
+ IF(LIBXML2_ROOT_USER)
+ MESSAGE(STATUS "${LIBXML2_INCLUDE_TO_FIND} not found in ${LIBXML2_INCLUDE_PATHS}, check your LIBXML2 installation.")
+ ELSE(LIBXML2_ROOT_USER)
+ MESSAGE(STATUS "${LIBXML2_INCLUDE_TO_FIND} not found on system, try to use WITH_LIBXML2 option or LIBXML2_ROOT environment variable.")
+ ENDIF(LIBXML2_ROOT_USER)
+ ENDIF(LIBXML2_INCLUDE_DIR)
+ENDIF(LIBXML2_STATUS)
+
+# ----
+
+IF(LIBXML2_STATUS)
+ IF(LIBXML2_ROOT_USER)
+ SET(LIBXML2_LIB_PATHS ${LIBXML2_ROOT_USER}/lib)
+ ELSE(LIBXML2_ROOT_USER)
+ SET(LIBXML2_LIB_PATHS)
+ ENDIF(LIBXML2_ROOT_USER)
+ENDIF(LIBXML2_STATUS)
+
+IF(LIBXML2_STATUS)
+ IF(WINDOWS)
+ FIND_LIBRARY(LIBXML2_LIB libxml2 PATHS ${LIBXML2_LIB_PATHS} ${LIBXML2_FIND_PATHS_OPTION})
+ ELSE(WINDOWS)
+ FIND_LIBRARY(LIBXML2_LIB xml2 PATHS ${LIBXML2_LIB_PATHS} ${LIBXML2_FIND_PATHS_OPTION})
+ ENDIF(WINDOWS)
+ SET(LIBXML2_LIBS)
+ IF(LIBXML2_LIB)
+ SET(LIBXML2_LIBS ${LIBXML2_LIBS} ${LIBXML2_LIB})
+ MESSAGE(STATUS "libxml2 lib found: ${LIBXML2_LIB}")
+ ELSE(LIBXML2_LIB)
+ SET(LIBXML2_STATUS 0)
+ IF(LIBXML2_ROOT_USER)
+ MESSAGE(STATUS "libxml2 lib not found in ${LIBXML2_LIB_PATHS}, check your LIBXML2 installation.")
+ ELSE(LIBXML2_ROOT_USER)
+ MESSAGE(STATUS "libxml2 lib not found on system, try to use WITH_LIBXML2 option or LIBXML2_ROOT environment variable.")
+ ENDIF(LIBXML2_ROOT_USER)
+ ENDIF(LIBXML2_LIB)
+ENDIF(LIBXML2_STATUS)
+
+# ----
+
+IF(WINDOWS)
+ SET(ICONV_ROOT $ENV{ICONV_ROOT})
+ IF(ICONV_ROOT)
+ FIND_PATH(ICONV_INCLUDE_DIR iconv.h ${ICONV_ROOT}/include)
+ FIND_LIBRARY(ICONV_LIBS iconv ${ICONV_ROOT}/lib)
+ SET(LIBXML2_INCLUDES ${LIBXML2_INCLUDES} -I${ICONV_INCLUDE_DIR})# to remove
+ SET(LIBXML_INCLUDE_DIRS ${LIBXML2_INCLUDE_DIRS} ${ICONV_INCLUDE_DIR})
+ SET(LIBXML2_LIBS ${LIBXML2_LIBS} ${ICONV_LIBS})
+ ENDIF(ICONV_ROOT)
+ENDIF(WINDOWS)
+
+# ------
+IF(LIBXML2_STATUS)
+ SET(LIBXML_INCLUDES ${LIBXML2_INCLUDES})# to remove
+ SET(LIBXML_CPPFLAGS ${LIBXML2_INCLUDES})
+ SET(LIBXML_DEFINITIONS)
+ SET(LIBXML_LIBS ${LIBXML2_LIBS})
+ELSE(LIBXML2_STATUS)
+ IF(LIBXML2_IS_MANDATORY)
+ MESSAGE(FATAL_ERROR "libxml2 not found ... mandatory ... abort")
+ ELSE(LIBXML2_IS_MANDATORY)
+ MESSAGE(STATUS "libxml2 not found ... optional ... disabled")
+ ENDIF(LIBXML2_IS_MANDATORY)
+ENDIF(LIBXML2_STATUS)
+
+# ------
MESSAGE(STATUS "MPI include ${MPI_INCLUDE_TO_FIND} found in ${MPI_INCLUDES}")
SET(MPI_INCLUDE_DIR ${MPI_INCLUDES})
- SET(MPI_INCLUDES -I${MPI_INCLUDES})
+ SET(MPI_INCLUDE_DIRS ${MPI_INCLUDES})
+ SET(MPI_INCLUDES -I${MPI_INCLUDES})# to remove
# ------
FIND_LIBRARY(MPI_LIB_THREAD libboost_thread-vc90-mt-gd-1_35 ${MPI_ROOT}/lib)
FIND_LIBRARY(MPI_LIB_DATE_TIME libboost_date_time-vc90-mt-gd-1_35 ${MPI_ROOT}/lib)
ELSE(WINDOWS)
+ SET(MPI_LIB_FOUND 0)
FOREACH(lib mpi_cxx mpi mpich)
- FIND_LIBRARY(MPI_LIB ${lib} ${MPI_ROOT}/lib)
- IF(MPI_LIB)
- IF(lib STREQUAL mpi_cxx)
- SET(MPI_INCLUDES ${MPI_INCLUDES} -DOMPI_IGNORE_CXX_SEEK)
- ENDIF(lib STREQUAL mpi_cxx)
- IF(lib STREQUAL mpich)
- SET(MPI_INCLUDES ${MPI_INCLUDES} -DMPICH_IGNORE_CXX_SEEK)
- ENDIF(lib STREQUAL mpich)
- BREAK()
- ENDIF(MPI_LIB)
+ FIND_LIBRARY(MPI_LIB_${lib} ${lib} ${MPI_ROOT}/lib)
+ IF(MPI_LIB_${lib})
+ SET(MPI_LIB_FOUND 1)
+ ENDIF(MPI_LIB_${lib})
ENDFOREACH(lib mpi_cxx mpi mpich)
- IF(NOT MPI_LIB)
+ IF(MPI_LIB_FOUND)
+ IF(MPI_LIB_mpi_cxx AND MPI_LIB_mpi)
+ SET(MPI_LIBS ${MPI_LIB_mpi_cxx} ${MPI_LIB_mpi})
+ SET(MPI_INCLUDES ${MPI_INCLUDES} -DOMPI_IGNORE_CXX_SEEK)# to remove
+ SET(MPI_DEFINITIONS -DOMPI_IGNORE_CXX_SEEK)
+ ELSEIF(MPI_LIB_mpi_cxx)
+ SET(MPI_LIBS ${MPI_LIB_mpi_cxx})
+ SET(MPI_INCLUDES ${MPI_INCLUDES} -DOMPI_IGNORE_CXX_SEEK)# to remove
+ SET(MPI_DEFINITIONS -DOMPI_IGNORE_CXX_SEEK)
+ ELSEIF(MPI_LIB_mpi)
+ SET(MPI_LIBS ${MPI_LIB_mpi})
+ SET(MPI_INCLUDES ${MPI_INCLUDES} -DOMPI_IGNORE_CXX_SEEK)# to remove
+ SET(MPI_DEFINITIONS -DOMPI_IGNORE_CXX_SEEK)
+ ELSEIF(MPI_LIB_mpich)
+ SET(MPI_LIBS ${MPI_LIB_mpich})
+ SET(MPI_INCLUDES ${MPI_INCLUDES} -DMPICH_IGNORE_CXX_SEEK)# to remove
+ SET(MPI_DEFINITIONS -DMPICH_IGNORE_CXX_SEEK)
+ ENDIF()
+ ELSE(MPI_LIB_FOUND)
MESSAGE(STATUS "MPI lib not found, check your MPI installation.")
SET(MPI_STATUS 0)
- ENDIF(NOT MPI_LIB)
- MESSAGE(STATUS "MPI lib : ${MPI_LIB}")
+ ENDIF(MPI_LIB_FOUND)
ENDIF(WINDOWS)
-
- SET(MPI_LIBS ${MPI_LIB})
-
MESSAGE(STATUS "MPI libs: ${MPI_LIBS}")
ENDIF(MPI_STATUS)
CHECK_SYMBOL_EXISTS(MPI_Publish_name ${MPI_INCLUDE_DIR}/mpi.h MPI2_IS_OK)
IF(MPI2_IS_OK)
MESSAGE(STATUS "Your mpi implemtentation is compatible with mpi2 ... adding -DHAVE_MPI2")
- SET(MPI_INCLUDES ${MPI_INCLUDES} -DHAVE_MPI2)
+ SET(MPI_INCLUDES ${MPI_INCLUDES} -DHAVE_MPI2)# to remove
+ SET(MPI_DEFINITIONS "${MPI_DEFINITIONS} -DHAVE_MPI2")
ENDIF(MPI2_IS_OK)
ENDIF(MPI_STATUS)
ENDIF(WINDOWS)
ENDIF(CMAKE_BUILD_TYPE)
-SET(PLATFORM_CPPFLAGS)
-SET(PLATFORM_LDFLAGS)
-SET(PLATFORM_LIBADD)
+SET(PLATFORM_CPPFLAGS) # to be removed
+SET(PLATFORM_LDFLAGS) # to be removed
+SET(PLATFORM_LIBADD) # to be removed
+
+SET(PLATFORM_LIBS)
+SET(PLATFORM_DEFINITIONS)
+
IF(WINDOWS)
- SET(PLATFORM_CPPFLAGS ${PLATFORM_CPPFLAGS} /W0)
- SET(PLATFORM_CPPFLAGS ${PLATFORM_CPPFLAGS} -D_CRT_SECURE_NO_WARNINGS) # To disable windows warnings for strcpy, fopen, ...
- SET(PLATFORM_CPPFLAGS ${PLATFORM_CPPFLAGS} -D_SCL_SECURE_NO_WARNINGS) # To disable windows warnings std::copy, std::transform, ...
- SET(PLATFORM_CPPFLAGS ${PLATFORM_CPPFLAGS} -DWNT)
- SET(PLATFORM_CPPFLAGS ${PLATFORM_CPPFLAGS} -DPPRO_NT) # For medfile
- SET(PLATFORM_CPPFLAGS ${PLATFORM_CPPFLAGS} -D_USE_MATH_DEFINES) # At least for MEDMEM
- SET(PLATFORM_CPPFLAGS ${PLATFORM_CPPFLAGS} -D_WIN32_WINNT=0x0500) # Windows 2000 or later API is required
- SET(PLATFORM_LIBADD ${PLATFORM_LIBADD} Ws2_32.lib)
- SET(PLATFORM_LIBADD ${PLATFORM_LIBADD} Userenv.lib) # At least for GEOM suit
+ SET(PLATFORM_CPPFLAGS ${PLATFORM_CPPFLAGS} /W0) # to be removed
+ SET(PLATFORM_CPPFLAGS ${PLATFORM_CPPFLAGS} -D_CRT_SECURE_NO_WARNINGS) # To disable windows warnings for strcpy, fopen, ... # to be removed
+ SET(PLATFORM_CPPFLAGS ${PLATFORM_CPPFLAGS} -D_SCL_SECURE_NO_WARNINGS) # To disable windows warnings std::copy, std::transform, ... # to be removed
+ SET(PLATFORM_CPPFLAGS ${PLATFORM_CPPFLAGS} -DWNT) # to be removed
+ SET(PLATFORM_CPPFLAGS ${PLATFORM_CPPFLAGS} -DPPRO_NT) # For medfile # to be removed
+ SET(PLATFORM_CPPFLAGS ${PLATFORM_CPPFLAGS} -D_USE_MATH_DEFINES) # At least for MEDMEM # to be removed
+ SET(PLATFORM_CPPFLAGS ${PLATFORM_CPPFLAGS} -D_WIN32_WINNT=0x0500) # Windows 2000 or later API is required # to be removed
+ SET(PLATFORM_LIBADD ${PLATFORM_LIBADD} Ws2_32.lib) # to be removed
+ SET(PLATFORM_LIBADD ${PLATFORM_LIBADD} Userenv.lib) # At least for GEOM suit # to be removed
+
+ SET(PLATFORM_DEFINITIONS "${PLATFORM_DEFINITIONS} /W0")
+ SET(PLATFORM_DEFINITIONS "${PLATFORM_DEFINITIONS} -D_CRT_SECURE_NO_WARNINGS") # To disable windows warnings for strcpy, fopen, ...
+ SET(PLATFORM_DEFINITIONS "${PLATFORM_DEFINITIONS} -D_SCL_SECURE_NO_WARNINGS") # To disable windows warnings std::copy, std::transform, ...
+ SET(PLATFORM_DEFINITIONS "${PLATFORM_DEFINITIONS} -DWNT")
+ SET(PLATFORM_DEFINITIONS "${PLATFORM_DEFINITIONS} -DPPRO_NT") # For medfile
+ SET(PLATFORM_DEFINITIONS "${PLATFORM_DEFINITIONS} -D_USE_MATH_DEFINES") # At least for MEDMEM
+ SET(PLATFORM_DEFINITIONS "${PLATFORM_DEFINITIONS} -D_WIN32_WINNT=0x0500") # Windows 2000 or later API is required
+
+ SET(PLATFORM_LIBS ${PLATFORM_LIBS} Ws2_32.lib)
+ SET(PLATFORM_LIBS ${PLATFORM_LIBS} Userenv.lib) # At least for GEOM suit
+
ELSE(WINDOWS)
# SET(PLATFORM_CPPFLAGS ${PLATFORM_CPPFLAGS} -Wparentheses)
# SET(PLATFORM_CPPFLAGS ${PLATFORM_CPPFLAGS} -Wreturn-type)
# SET(PLATFORM_CPPFLAGS ${PLATFORM_CPPFLAGS} -Wmissing-declarations)
# SET(PLATFORM_CPPFLAGS ${PLATFORM_CPPFLAGS} -Wunused)
# SET(PLATFORM_CPPFLAGS ${PLATFORM_CPPFLAGS} -Wall)
- SET(PLATFORM_LIBADD ${PLATFORM_LIBADD} -ldl)
+ SET(PLATFORM_LIBADD ${PLATFORM_LIBADD} -ldl) # to be removed
+ SET(PLATFORM_LIBS ${PLATFORM_LIBS} -ldl)
ENDIF(WINDOWS)
-SET(PLATFORM_CPPFLAGS ${PLATFORM_CPPFLAGS} -DSIZEOF_FORTRAN_INTEGER=4 -DSIZEOF_LONG=${CMAKE_SIZEOF_VOID_P} -DSIZEOF_INT=4)
+SET(PLATFORM_CPPFLAGS "${PLATFORM_CPPFLAGS} -DSIZEOF_FORTRAN_INTEGER=4 -DSIZEOF_LONG=${CMAKE_SIZEOF_VOID_P} -DSIZEOF_INT=4") # to be removed
+SET(PLATFORM_DEFINITIONS "${PLATFORM_DEFINITIONS} -DSIZEOF_FORTRAN_INTEGER=4 -DSIZEOF_LONG=${CMAKE_SIZEOF_VOID_P} -DSIZEOF_INT=4")
SET(COMPILATION_WITH_CMAKE ON)
--- /dev/null
+# Copyright (C) 2007-2012 CEA/DEN, EDF R&D, OPEN CASCADE
+#
+# Copyright (C) 2003-2007 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.salome-platform.org/ or email : webmaster.salome@opencascade.com
+#
+
+# ------
+
+MESSAGE(STATUS "Check for pthreads ...")
+
+# ------
+
+IF(PTHREADS_IS_MANDATORY STREQUAL 0)
+ SET(PTHREADS_IS_MANDATORY 0)
+ SET(PTHREADS_IS_OPTIONAL 1)
+ENDIF(PTHREADS_IS_MANDATORY STREQUAL 0)
+IF(PTHREADS_IS_OPTIONAL STREQUAL 0)
+ SET(PTHREADS_IS_MANDATORY 1)
+ SET(PTHREADS_IS_OPTIONAL 0)
+ENDIF(PTHREADS_IS_OPTIONAL STREQUAL 0)
+IF(NOT PTHREADS_IS_MANDATORY AND NOT PTHREADS_IS_OPTIONAL)
+ SET(PTHREADS_IS_MANDATORY 1)
+ SET(PTHREADS_IS_OPTIONAL 0)
+ENDIF(NOT PTHREADS_IS_MANDATORY AND NOT PTHREADS_IS_OPTIONAL)
+
+# ------
+
+SET(PTHREADS_STATUS 1)
+IF(WITHOUT_PTHREADS OR WITH_PTHREADS STREQUAL 0)
+ SET(PTHREADS_STATUS 0)
+ MESSAGE(STATUS "pthreads disabled from command line.")
+ENDIF(WITHOUT_PTHREADS OR WITH_PTHREADS STREQUAL 0)
+
+# ------
+
+IF(PTHREADS_STATUS)
+ IF(WITH_PTHREADS)
+ SET(PTHREADS_ROOT_USER ${WITH_PTHREADS})
+ ELSE(WITH_PTHREADS)
+ SET(PTHREADS_ROOT_USER $ENV{PTHREADS_ROOT})
+ ENDIF(WITH_PTHREADS)
+ENDIF(PTHREADS_STATUS)
+
+# -----
+
+IF(PTHREADS_STATUS)
+ IF(PTHREADS_ROOT_USER)
+ SET(PTHREADS_FIND_PATHS_OPTION NO_DEFAULT_PATH)
+ ELSE(PTHREADS_ROOT_USER)
+ SET(PTHREADS_FIND_PATHS_OPTION)
+ ENDIF(PTHREADS_ROOT_USER)
+ENDIF(PTHREADS_STATUS)
+
+# -----
+
+IF(PTHREADS_STATUS)
+ IF(PTHREADS_ROOT_USER)
+ SET(PTHREADS_INCLUDE_PATHS ${PTHREADS_ROOT_USER}/include)
+ ELSE(PTHREADS_ROOT_USER)
+ SET(PTHREADS_INCLUDE_PATHS)
+ ENDIF(PTHREADS_ROOT_USER)
+ SET(PTHREADS_INCLUDE_TO_FIND pthread.h)
+ FIND_PATH(PTHREADS_INCLUDE_DIR ${PTHREADS_INCLUDE_TO_FIND} PATHS ${PTHREADS_INCLUDE_PATHS} ${PTHREADS_FIND_PATHS_OPTION})
+ IF(PTHREADS_INCLUDE_DIR)
+ IF(PTHREADS_ROOT_USER)
+ SET(PTHREAD_CFLAGS -I${PTHREADS_INCLUDE_DIR}) # to remove
+ SET(PTHREAD_INCLUDE_DIRS ${PTHREADS_INCLUDE_DIR})
+ ENDIF(PTHREADS_ROOT_USER)
+ MESSAGE(STATUS "${PTHREADS_INCLUDE_TO_FIND} found in ${PTHREADS_INCLUDE_DIR}")
+ ELSE(PTHREADS_INCLUDE_DIR)
+ SET(PTHREADS_STATUS 0)
+ IF(PTHREADS_ROOT_USER)
+ MESSAGE(STATUS "${PTHREADS_INCLUDE_TO_FIND} not found in ${PTHREADS_INCLUDE_PATHS}, check your PTHREADS installation.")
+ ELSE(PTHREADS_ROOT_USER)
+ MESSAGE(STATUS "${PTHREADS_INCLUDE_TO_FIND} not found on system, try to use WITH_PTHREADS option or PTHREADS_ROOT environment variable.")
+ ENDIF(PTHREADS_ROOT_USER)
+ ENDIF(PTHREADS_INCLUDE_DIR)
+ENDIF(PTHREADS_STATUS)
+
+# ----
+
+IF(PTHREADS_STATUS)
+ IF(PTHREADS_ROOT_USER)
+ SET(PTHREADS_LIB_PATHS ${PTHREADS_ROOT_USER}/lib)
+ ELSE(PTHREADS_ROOT_USER)
+ SET(PTHREADS_LIB_PATHS)
+ ENDIF(PTHREADS_ROOT_USER)
+ENDIF(PTHREADS_STATUS)
+
+IF(PTHREADS_STATUS)
+ IF(WINDOWS)
+ IF(CMAKE_BUILD_TYPE STREQUAL Release)
+ FIND_LIBRARY(PTHREAD_LIB pthreadVSE2 pthreadVC2 PATHS ${PTHREADS_LIB_PATHS} ${PTHREADS_FIND_PATHS_OPTION})
+ ELSE(CMAKE_BUILD_TYPE STREQUAL Release)
+ FIND_LIBRARY(PTHREAD_LIB pthreadVSE2d pthreadVC2d PATHS ${PTHREADS_LIB_PATHS} ${PTHREADS_FIND_PATHS_OPTION})
+ ENDIF(CMAKE_BUILD_TYPE STREQUAL Release)
+ ELSE(WINDOWS)
+ FIND_LIBRARY(PTHREAD_LIB pthread PATHS ${PTHREADS_LIB_PATHS} ${PTHREADS_FIND_PATHS_OPTION})
+ ENDIF(WINDOWS)
+ SET(PTHREAD_LIBS)
+ IF(PTHREAD_LIB)
+ SET(PTHREAD_LIBS ${PTHREAD_LIBS} ${PTHREAD_LIB})
+ MESSAGE(STATUS "pthread lib found: ${PTHREAD_LIB}")
+ ELSE(PTHREAD_LIB)
+ SET(PTHREADS_STATUS 0)
+ IF(PTHREADS_ROOT_USER)
+ MESSAGE(STATUS "pthread lib not found in ${PTHREADS_LIB_PATHS}, check your PTHREADS installation.")
+ ELSE(PTHREADS_ROOT_USER)
+ MESSAGE(STATUS "pthread lib not found on system, try to use WITH_PTHREADS option or PTHREADS_ROOT environment variable.")
+ ENDIF(PTHREADS_ROOT_USER)
+ ENDIF(PTHREAD_LIB)
+ENDIF(PTHREADS_STATUS)
+
+# ----
+
+IF(PTHREADS_STATUS)
+ELSE(PTHREADS_STATUS)
+ IF(PTHREADS_IS_MANDATORY)
+ MESSAGE(FATAL_ERROR "pthreads not found ... mandatory ... abort")
+ ELSE(PTHREADS_IS_MANDATORY)
+ MESSAGE(STATUS "pthreads not found ... optional ... disabled")
+ ENDIF(PTHREADS_IS_MANDATORY)
+ENDIF(PTHREADS_STATUS)
--- /dev/null
+# Copyright (C) 2007-2012 CEA/DEN, EDF R&D, OPEN CASCADE
+#
+# Copyright (C) 2003-2007 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.salome-platform.org/ or email : webmaster.salome@opencascade.com
+#
+
+# ------
+
+MESSAGE(STATUS "Check for python ...")
+
+# ------
+
+IF(PYTHON_IS_MANDATORY STREQUAL 0)
+ SET(PYTHON_IS_MANDATORY 0)
+ SET(PYTHON_IS_OPTIONAL 1)
+ENDIF(PYTHON_IS_MANDATORY STREQUAL 0)
+IF(PYTHON_IS_OPTIONAL STREQUAL 0)
+ SET(PYTHON_IS_MANDATORY 1)
+ SET(PYTHON_IS_OPTIONAL 0)
+ENDIF(PYTHON_IS_OPTIONAL STREQUAL 0)
+IF(NOT PYTHON_IS_MANDATORY AND NOT PYTHON_IS_OPTIONAL)
+ SET(PYTHON_IS_MANDATORY 1)
+ SET(PYTHON_IS_OPTIONAL 0)
+ENDIF(NOT PYTHON_IS_MANDATORY AND NOT PYTHON_IS_OPTIONAL)
+
+# ------
+
+SET(PYTHON_STATUS 1)
+IF(WITHOUT_PYTHON OR WITH_PYTHON STREQUAL 0)
+ SET(PYTHON_STATUS 0)
+ MESSAGE(STATUS "python disabled from command line.")
+ENDIF(WITHOUT_PYTHON OR WITH_PYTHON STREQUAL 0)
+
+# ------
+
+IF(PYTHON_STATUS)
+ IF(WITH_PYTHON)
+ SET(PYTHON_ROOT_USER ${WITH_PYTHON})
+ ENDIF(WITH_PYTHON)
+ IF(NOT PYTHON_ROOT_USER)
+ SET(PYTHON_ROOT_USER $ENV{PYTHON_ROOT})
+ ENDIF(NOT PYTHON_ROOT_USER)
+ IF(NOT PYTHON_ROOT_USER)
+ SET(PYTHON_ROOT_USER $ENV{PYTHONHOME})
+ ENDIF(NOT PYTHON_ROOT_USER)
+ENDIF(PYTHON_STATUS)
+
+# ------
+
+IF(PYTHON_STATUS)
+ IF(PYTHON_ROOT_USER)
+ SET(PYTHON_FIND_PATHS_OPTION NO_DEFAULT_PATH)
+ ELSE(PYTHON_ROOT_USER)
+ SET(PYTHON_FIND_PATHS_OPTION)
+ ENDIF(PYTHON_ROOT_USER)
+ENDIF(PYTHON_STATUS)
+
+# ------
+
+IF(PYTHON_STATUS)
+ IF(WINDOWS)
+ IF(CMAKE_BUILD_TYPE STREQUAL Release)
+ SET(PYTHON_EXECUTABLE_TO_FIND python)
+ ELSE(CMAKE_BUILD_TYPE STREQUAL Release)
+ SET(PYTHON_EXECUTABLE_TO_FIND python_d)
+ ENDIF(CMAKE_BUILD_TYPE STREQUAL Release)
+ ELSE(WINDOWS)
+ SET(PYTHON_EXECUTABLE_TO_FIND python)
+ ENDIF(WINDOWS)
+ IF(NOT PYTHON_ROOT_USER)
+ SET(PYTHON_EXECUTABLE_PATHS)
+ ELSE(NOT PYTHON_ROOT_USER)
+ IF(WINDOWS)
+ SET(PYTHON_EXECUTABLE_PATHS ${PYTHON_ROOT_USER})
+ ELSE(WINDOWS)
+ SET(PYTHON_EXECUTABLE_PATHS ${PYTHON_ROOT_USER}/bin)
+ ENDIF(WINDOWS)
+ ENDIF(NOT PYTHON_ROOT_USER)
+ FIND_PROGRAM(PYTHON_EXECUTABLE ${PYTHON_EXECUTABLE_TO_FIND} PATHS ${PYTHON_EXECUTABLE_PATHS} ${PYTHON_FIND_PATHS_OPTION})
+ IF(PYTHON_EXECUTABLE)
+ MESSAGE(STATUS "python found: ${PYTHON_EXECUTABLE}")
+ IF(PYTHON_EXECUTABLE STREQUAL /usr/bin/python)
+ ELSE(PYTHON_EXECUTABLE STREQUAL /usr/bin/python)
+ SET(PYTHON_ROOT_USER ${PYTHON_EXECUTABLE})
+ GET_FILENAME_COMPONENT(PYTHON_ROOT_USER ${PYTHON_ROOT_USER} PATH)
+ IF(NOT WINDOWS)
+ GET_FILENAME_COMPONENT(PYTHON_ROOT_USER ${PYTHON_ROOT_USER} PATH)
+ ENDIF(NOT WINDOWS)
+ ENDIF(PYTHON_EXECUTABLE STREQUAL /usr/bin/python)
+ ELSE(PYTHON_EXECUTABLE)
+ IF(PYTHON_ROOT_USER)
+ MESSAGE(STATUS "${PYTHON_EXECUTABLE_TO_FIND} not found in ${PYTHON_EXECUTABLE_PATHS}, check your PYTHON installation.")
+ ELSE(PYTHON_ROOT_USER)
+ MESSAGE(STATUS "${PYTHON_EXECUTABLE_TO_FIND} not found on system, try to use WITH_PYTHON option or PYTHON_ROOT environment variable.")
+ ENDIF(PYTHON_ROOT_USER)
+ SET(PYTHON_STATUS 0)
+ ENDIF(PYTHON_EXECUTABLE)
+ENDIF(PYTHON_STATUS)
+
+# ------
+
+IF(PYTHON_STATUS)
+ EXECUTE_PROCESS(
+ COMMAND ${PYTHON_EXECUTABLE} -c "import sys; sys.stdout.write(sys.version[:3])"
+ OUTPUT_VARIABLE PYTHON_VERSION
+ )
+ENDIF(PYTHON_STATUS)
+
+# ------
+
+IF(PYTHON_STATUS)
+ IF(PYTHON_ROOT_USER)
+ SET(PYTHON_FIND_PATHS_OPTION NO_DEFAULT_PATH)
+ ELSE(PYTHON_ROOT_USER)
+ SET(PYTHON_FIND_PATHS_OPTION)
+ ENDIF(PYTHON_ROOT_USER)
+ENDIF(PYTHON_STATUS)
+
+# ------
+
+IF(PYTHON_STATUS)
+ IF(PYTHON_ROOT_USER)
+ SET(PYTHON_INCLUDE_PATHS ${PYTHON_ROOT_USER}/include ${PYTHON_ROOT_USER}/include/python${PYTHON_VERSION})
+ ELSE(PYTHON_ROOT_USER)
+ SET(PYTHON_INCLUDE_PATHS /usr/include/python${PYTHON_VERSION})
+ ENDIF(PYTHON_ROOT_USER)
+ SET(PYTHON_INCLUDE_TO_FIND Python.h)
+ FIND_PATH(PYTHON_INCLUDE_DIR ${PYTHON_INCLUDE_TO_FIND} PATHS ${PYTHON_INCLUDE_PATHS} ${PYTHON_FIND_PATHS_OPTION})
+ SET(PYTHON_DEFINITIONS)
+ IF(PYTHON_INCLUDE_DIR)
+ SET(PYTHON_INCLUDES -I${PYTHON_INCLUDE_DIR})# to remove
+ SET(PYTHON_INCLUDE_DIRS ${PYTHON_INCLUDE_DIR})
+ IF(WINDOWS)
+ IF(CMAKE_BUILD_TYPE STREQUAL Release)
+ ELSE(CMAKE_BUILD_TYPE STREQUAL Release)
+ SET(PYTHON_INCLUDES ${PYTHON_INCLUDES} -DHAVE_DEBUG_PYTHON)# to remove
+ SET(PYTHON_DEFINITIONS "-DHAVE_DEBUG_PYTHON")
+ ENDIF(CMAKE_BUILD_TYPE STREQUAL Release)
+ ENDIF(WINDOWS)
+ MESSAGE(STATUS "${PYTHON_INCLUDE_TO_FIND} found in ${PYTHON_INCLUDE_DIR}")
+ ELSE(PYTHON_INCLUDE_DIR)
+ SET(PYTHON_STATUS 0)
+ IF(PYTHON_ROOT_USER)
+ MESSAGE(STATUS "${PYTHON_INCLUDE_TO_FIND} not found in ${PYTHON_INCLUDE_PATHS}, check your PYTHON installation.")
+ ELSE(PYTHON_ROOT_USER)
+ MESSAGE(STATUS "${PYTHON_INCLUDE_TO_FIND} not found on system, try to use WITH_PYTHON option or PYTHON_ROOT environment variable.")
+ ENDIF(PYTHON_ROOT_USER)
+ ENDIF(PYTHON_INCLUDE_DIR)
+ENDIF(PYTHON_STATUS)
+
+# ----
+
+IF(PYTHON_STATUS)
+ IF(PYTHON_ROOT_USER)
+ IF(WINDOWS)
+ SET(PYTHON_LIB_PATHS ${PYTHON_ROOT_USER}/libs)
+ ELSE(WINDOWS)
+ SET(PYTHON_LIB_PATHS ${PYTHON_ROOT_USER}/lib ${PYTHON_ROOT_USER}/lib/python${PYTHON_VERSION}/config)
+ ENDIF(WINDOWS)
+ ELSE(PYTHON_ROOT_USER)
+ SET(PYTHON_LIB_PATHS)
+ ENDIF(PYTHON_ROOT_USER)
+ IF(WINDOWS)
+ STRING(REPLACE "." "" PYTHON_VERSION_WITHOUT_DOT ${PYTHON_VERSION})
+ IF(CMAKE_BUILD_TYPE STREQUAL Release)
+ FIND_LIBRARY(PYTHON_LIB python${PYTHON_VERSION_WITHOUT_DOT} PATHS ${PYTHON_LIB_PATHS} ${PYTHON_FIND_PATHS_OPTION})
+ ELSE(CMAKE_BUILD_TYPE STREQUAL Release)
+ FIND_LIBRARY(PYTHON_LIB python${PYTHON_VERSION_WITHOUT_DOT}_d PATHS ${PYTHON_LIB_PATHS} ${PYTHON_FIND_PATHS_OPTION})
+ ENDIF(CMAKE_BUILD_TYPE STREQUAL Release)
+ ELSE(WINDOWS)
+ FIND_LIBRARY(PYTHON_LIB python${PYTHON_VERSION} PATHS ${PYTHON_LIB_PATHS} ${PYTHON_FIND_PATHS_OPTION})
+ ENDIF(WINDOWS)
+ SET(PYTHON_LIBS)
+ IF(PYTHON_LIB)
+ SET(PYTHON_LIBS ${PYTHON_LIBS} ${PYTHON_LIB})
+ MESSAGE(STATUS "python lib found: ${PYTHON_LIB}")
+ ELSE(PYTHON_LIB)
+ SET(PYTHON_STATUS 0)
+ IF(PYTHON_ROOT_USER)
+ MESSAGE(STATUS "python lib not found in ${PYTHON_LIB_PATHS}, check your PYTHON installation.")
+ ELSE(PYTHON_ROOT_USER)
+ MESSAGE(STATUS "python lib not found on system, try to use WITH_PYTHON option or PYTHON_ROOT environment variable.")
+ ENDIF(PYTHON_ROOT_USER)
+ ENDIF(PYTHON_LIB)
+ENDIF(PYTHON_STATUS)
+
+# ----
+
+SET(NUMPY_STATUS 0)
+IF(PYTHON_STATUS)
+ EXECUTE_PROCESS(
+ COMMAND ${PYTHON_EXECUTABLE} -c "import numpy ; import sys ; sys.stdout.write(numpy.get_include())"
+ OUTPUT_VARIABLE NUMPY_INCLUDE_DIR
+ ERROR_QUIET
+ )
+ IF(NUMPY_INCLUDE_DIR)
+ SET(NUMPY_STATUS 1)
+ ENDIF(NUMPY_INCLUDE_DIR)
+ IF(NUMPY_STATUS)
+ SET(PYTHON_INCLUDES ${PYTHON_INCLUDES} -DWITH_NUMPY -I${NUMPY_INCLUDE_DIR})# to remove
+ SET(PYTHON_INCLUDE_DIRS ${PYTHON_INCLUDE_DIRS} ${NUMPY_INCLUDE_DIR})
+ SET(PYTHON_DEFINITIONS "${PYTHON_DEFINITIONS} -DWITH_NUMPY")
+ MESSAGE(STATUS "numpy found : ${NUMPY_INCLUDE_DIR}")
+ ELSE(NUMPY_STATUS)
+ MESSAGE(STATUS "numpy not found")
+ ENDIF(NUMPY_STATUS)
+ENDIF(PYTHON_STATUS)
+
+# ----
+
+IF(PYTHON_STATUS)
+ SET(PYTHON_CPPFLAGS ${PYTHON_INCLUDES})# to remove
+ SET(PYLOGLEVEL WARNING)
+ELSE(PYTHON_STATUS)
+ IF(PYTHON_IS_MANDATORY)
+ MESSAGE(FATAL_ERROR "python not found ... mandatory ... abort")
+ ELSE(PYTHON_IS_MANDATORY)
+ MESSAGE(STATUS "python not found ... optional ... disabled")
+ ENDIF(PYTHON_IS_MANDATORY)
+ENDIF(PYTHON_STATUS)
--- /dev/null
+# Copyright (C) 2007-2012 CEA/DEN, EDF R&D, OPEN CASCADE
+#
+# Copyright (C) 2003-2007 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.salome-platform.org/ or email : webmaster.salome@opencascade.com
+#
+
+# ------
+
+MESSAGE(STATUS "Check for swig ...")
+
+# ------
+
+IF(SWIG_IS_MANDATORY STREQUAL 0)
+ SET(SWIG_IS_MANDATORY 0)
+ SET(SWIG_IS_OPTIONAL 1)
+ENDIF(SWIG_IS_MANDATORY STREQUAL 0)
+IF(SWIG_IS_OPTIONAL STREQUAL 0)
+ SET(SWIG_IS_MANDATORY 1)
+ SET(SWIG_IS_OPTIONAL 0)
+ENDIF(SWIG_IS_OPTIONAL STREQUAL 0)
+IF(NOT SWIG_IS_MANDATORY AND NOT SWIG_IS_OPTIONAL)
+ SET(SWIG_IS_MANDATORY 1)
+ SET(SWIG_IS_OPTIONAL 0)
+ENDIF(NOT SWIG_IS_MANDATORY AND NOT SWIG_IS_OPTIONAL)
+
+# ------
+
+SET(SWIG_STATUS 1)
+IF(WITHOUT_SWIG OR WITH_SWIG STREQUAL 0)
+ SET(SWIG_STATUS 0)
+ MESSAGE(STATUS "swig disabled from command line.")
+ENDIF(WITHOUT_SWIG OR WITH_SWIG STREQUAL 0)
+
+# ------
+
+IF(SWIG_STATUS)
+ IF(WITH_SWIG)
+ SET(SWIG_ROOT_USER ${WITH_SWIG})
+ ENDIF(WITH_SWIG)
+ IF(NOT SWIG_ROOT_USER)
+ SET(SWIG_ROOT_USER $ENV{SWIG_ROOT})
+ ENDIF(NOT SWIG_ROOT_USER)
+ IF(NOT SWIG_ROOT_USER)
+ SET(SWIG_ROOT_USER $ENV{SWIGHOME})
+ ENDIF(NOT SWIG_ROOT_USER)
+ENDIF(SWIG_STATUS)
+
+# ------
+
+IF(SWIG_STATUS)
+ SET(SWIG_EXECUTABLE_TO_FIND swig)
+ IF(SWIG_ROOT_USER)
+ FIND_PROGRAM(SWIG_EXECUTABLE ${SWIG_EXECUTABLE_TO_FIND} PATHS ${SWIG_ROOT_USER}/bin NO_DEFAULT_PATH)
+ ELSE(SWIG_ROOT_USER)
+ FIND_PROGRAM(SWIG_EXECUTABLE ${SWIG_EXECUTABLE_TO_FIND})
+ ENDIF(SWIG_ROOT_USER)
+ IF(SWIG_EXECUTABLE)
+ MESSAGE(STATUS "${SWIG_EXECUTABLE_TO_FIND} found: ${SWIG_EXECUTABLE}")
+ ELSE(SWIG_EXECUTABLE)
+ MESSAGE(STATUS "${SWIG_EXECUTABLE_TO_FIND} not found, try to use WITH_SWIG option or SWIG_ROOT (or SWIGHOME) environment variable")
+ SET(SWIG_STATUS 0)
+ ENDIF(SWIG_EXECUTABLE)
+ENDIF(SWIG_STATUS)
+
+# ----
+
+IF(SWIG_STATUS)
+ SET(SWIG_FLAGS -c++ -python -shadow)
+ELSE(SWIG_STATUS)
+ IF(SWIG_IS_MANDATORY)
+ MESSAGE(FATAL_ERROR "swig not found ... mandatory ... abort")
+ ELSE(SWIG_IS_MANDATORY)
+ MESSAGE(STATUS "swig not found ... optional ... disabled")
+ ENDIF(SWIG_IS_MANDATORY)
+ENDIF(SWIG_STATUS)
+
+# ----
+
+IF(NUMPY_STATUS)
+ SET(SWIG_FLAGS ${SWIG_FLAGS} -DWITH_NUMPY=WITH_NUMPY)
+ENDIF(NUMPY_STATUS)
+
+# ----
--- /dev/null
+# Copyright (C) 2007-2012 CEA/DEN, EDF R&D, OPEN CASCADE
+#
+# Copyright (C) 2003-2007 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.salome-platform.org/ or email : webmaster.salome@opencascade.com
+#
+
+MACRO(INSTALL_AND_COMPILE_PYTHON_FILE PYFILE2COMPINST PYFILELOC)
+ INSTALL(CODE "SET(PYTHON_FILE ${f})")
+ FOREACH(input ${PYFILE2COMPINST})
+ GET_FILENAME_COMPONENT(inputname ${input} NAME)
+ INSTALL(FILES ${input} DESTINATION ${CMAKE_INSTALL_PREFIX}/${PYFILELOC})
+ INSTALL(CODE "MESSAGE(STATUS \"py compiling ${CMAKE_INSTALL_PREFIX}/${PYFILELOC}/${inputname}\")")
+ INSTALL(CODE "SET(CMD \"import py_compile ; py_compile.compile('${CMAKE_INSTALL_PREFIX}/${PYFILELOC}/${inputname}')\")")
+ INSTALL(CODE "EXECUTE_PROCESS(COMMAND ${PYTHON_EXECUTABLE} -c \"\${CMD}\")")
+ INSTALL(CODE "EXECUTE_PROCESS(COMMAND ${PYTHON_EXECUTABLE} -O -c \"\${CMD}\")")
+ ENDFOREACH(input ${PYFILE2COMPINST})
+ENDMACRO(INSTALL_AND_COMPILE_PYTHON_FILE PYFILE2COMPINST PYFILELOC)
include $(top_srcdir)/adm_local/unix/make_common_starter.am
SUBDIRS = config_files
-
-EXTRA_DIST += SALOMEconfig.h.in
-
-if !MED_ENABLE_KERNEL
- nodist_salomeinclude_HEADERS = SALOMEconfig.h
-endif
-
-##################################
-# not-used (obsolete?) files
-##################################
-# depend.in make_module.in sstream.in
\ No newline at end of file
+++ /dev/null
-// Copyright (C) 2007-2012 CEA/DEN, EDF R&D, OPEN CASCADE
-//
-// Copyright (C) 2003-2007 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.salome-platform.org/ or email : webmaster.salome@opencascade.com
-//
-
-/* Debug mode ??? */
-#ifndef DEBUG
-# define DEBUG
-#endif
-
-/* CORBA headers include rules */
-#ifndef CORBA_CLIENT_HEADER
-# define QUOTE(x) #x
-# define CORBA_CLIENT_HEADER(x) QUOTE(x@IDL_CLN_H@)
-# define CORBA_SERVER_HEADER(x) QUOTE(x@IDL_SRV_H@)
-#endif
-
-/* Platform definition */
-#ifndef @MACHINE@
- #define @MACHINE@
-#endif
-
-// This is only to suppress warning messages with defines redefined (cause of omniORB that exports these names)
-#ifdef PACKAGE
-#undef PACKAGE
-#endif
-#ifdef PACKAGE_BUGREPORT
-#undef PACKAGE_BUGREPORT
-#endif
-#ifdef PACKAGE_NAME
-#undef PACKAGE_NAME
-#endif
-#ifdef PACKAGE_STRING
-#undef PACKAGE_STRING
-#endif
-#ifdef PACKAGE_TARNAME
-#undef PACKAGE_TARNAME
-#endif
-#ifdef PACKAGE_VERSION
-#undef PACKAGE_VERSION
-#endif
-#ifdef VERSION
-#undef VERSION
-#endif
-
-#ifdef _POSIX_C_SOURCE
-#undef _POSIX_C_SOURCE
-#endif
--- /dev/null
+dnl Copyright (C) 2006-2012 CEA/DEN, EDF R&D, OPEN CASCADE
+dnl
+dnl This library is free software; you can redistribute it and/or
+dnl modify it under the terms of the GNU Lesser General Public
+dnl License as published by the Free Software Foundation; either
+dnl version 2.1 of the License.
+dnl
+dnl This library is distributed in the hope that it will be useful,
+dnl but WITHOUT ANY WARRANTY; without even the implied warranty of
+dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+dnl Lesser General Public License for more details.
+dnl
+dnl You should have received a copy of the GNU Lesser General Public
+dnl License along with this library; if not, write to the Free Software
+dnl Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+dnl
+dnl See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+dnl
+AC_DEFUN([CHECK_SPHINX],[
+
+AC_CHECKING(for sphinx doc generator)
+
+sphinx_ok=yes
+dnl where is sphinx ?
+AC_PATH_PROG(SPHINX,sphinx-build)
+if test "x$SPHINX" = "x"
+then
+ AC_MSG_WARN(sphinx not found)
+ sphinx_ok=no
+fi
+
+AM_CONDITIONAL(SPHINX_IS_OK, [test x"$sphinx_ok" = xyes])
+
+])dnl
+dnl
echo ---------------------------------------------
echo
+CHECK_SPHINX
CHECK_HTML_GENERATORS
###
WITHIHM="no"
+# This flags should be used to switch between the MEDMEM GUI (defined
+# in the MEDGUI package) and the MEDOP GUI (defined in the MEDOP
+# package). In any case the module factory function is provided by the
+# MEDOP GUI library (package MEDOP/gui) and this factory function
+# creates weither a MedGUI instance or a MEDOPModule instance,
+# depending on the value of this flags. The default is to use the new
+# MEDOP GUI.
+AM_CONDITIONAL(WITH_MEDMEMGUI,test "1" = "0")
+
###
# Other tests should be performed only in --with-interp-kernel-only=no mode
###
else
# --with-interp-kernel-only=no mode
obligatory_vars="$obligatory_vars python_ok boost_ok swig_ok hdf5_ok med3_ok $splitter_obligatory_vars"
+ optional_vars="$optional_vars $splitter_optional_vars $renumber_optional_vars"
fi
fi
],[])
AC_OUTPUT([ \
- adm_local_without_kernel/unix/SALOMEconfig.h \
+ adm_local_without_kernel/SALOMEconfig.h \
Makefile \
MED_version.h \
adm_local/unix/config_files/Makefile \
src/MedClient/test/test1/Makefile \
src/MedClient/test/test2/Makefile \
src/MEDGUI/Makefile \
+ src/MEDOP/Makefile \
+ src/MEDOP/cmp/Makefile \
+ src/MEDOP/tui/Makefile \
+ src/MEDOP/tui/xmedpy/Makefile \
+ src/MEDOP/res/Makefile \
+ src/MEDOP/res/testfiles/Makefile \
+ src/MEDOP/gui/dialogs/Makefile \
+ src/MEDOP/gui/Makefile \
+ src/MEDOP/exe/Makefile \
+ src/MEDOP/exe/appligen/Makefile \
+ src/MEDOP/exe/appligen/config_appli_model.xml \
+ src/MEDOP/exe/appligen/appligen.sh \
+ src/MEDOP/exe/image2med/Makefile \
+ src/MEDOP/doc/sphinx/conf.py \
+ src/MEDOP/doc/sphinx/Makefile \
doc/Makefile \
doc/MEDMEM/Makefile \
doc/MEDMEM/MEDMEM_Content.tex \
/*!\mainpage MEDMEM user's guide
-\image html MED_small.png
-\image latex MED_small.eps
-\anchor fig_MED_small
-
\section intro Introduction
-This document constitutes the user guide of the %MEDMEM library and of its related tools.
+This document is the user guide of the %MED SALOME module. The MED
+module consists in:
+
+- \ref S1 to manipulate meshes and fields that conform
+ to the MED data model. This library can be used in C++ programs as
+ in python script for data processing on meshes and fields.
+- \ref S2 that exhibits some useful functions of the
+ library for a graphical manipulation of data in standard use cases.
+- \ref S3 that can be used to process MED data files
+
+\section S1 A library of functions for data processing
+
+The figure below represents the layer structure of the packages of the
+library:
+
+\image html medlayers_70pc.png
+
+The fondamentals consists in three atomic libraries:
+
+- \ref medcoupling that describes DataStructures used for cross process exchange of meshes and fields.
+- \ref medloader that provides I/O functions to the MED file format
+- \ref interptools (INTERP_KERNEL + REMAPPER) that provides
+ mathematical structures and algorithms for interpolation and
+ localization.
+
+You should be warned that the MEDMEM library still exists in the MED
+module but is considered as deprecated:
+
+- \ref medmem covers the %MEDMEM core library, i.e. the implementation
+ of meshes, supports and fields and the associated drivers (for
+ MED-file, VTK, GIBI).
+
+\section S2 A graphical interface for standard use cases
+
+The MED module in SALOME comes with a graphical interface that helps
+you to deal with most standard use case of fields manipulation. The
+user guide can be found here:
+
+- <a class="el" target="_new"
+ href="../../dev/MED/xmed-userguide.html">User guide of the MED Graphical Interface</a>
+
+You could also be interested to read the software specifications and
+requirements for this graphical module, and even the technical
+considerations for development:
+
+- <a class="el" target="_new"
+ href="../../dev/MED/xmed-specifications.html">Software
+ specifications and requirements of the MED Graphical Interface</a>
+- <a class="el" target="_new"
+ href="../../dev/MED/xmed-develguide.html">Developer guide of the MED Graphical Interface</a>
+
+\section S3 A set of tools for file manipulation
-\section install Installation
-The install procedure of the %MEDMEM library can handle a variety of configurations
-to suit the needs of its user. Instructions for configuring and installing the library can be found in \ref medmem_install.
-
-\section outline Outline
-This user guide contains five different chapters that cover the core %MEDMEM and MEDCoupling libraries, the interpolation library and the associated tools:
-- Chapter \ref medcoupling describes DataStructures used for cross
-process exchange of meshes and fields.
-- Chapter \ref medloader describes API for I/O from or to a MED file
-coming from a \ref medcoupling data structure.
-- Chapter \ref interptools describes the interpolation and localization library.
-- Chapter \ref medmem covers the %MEDMEM core library, i.e. the implementation of meshes, supports and fields and the associated drivers (for MED-file, VTK, GIBI).
- Chapter \ref tools describes various tools based on MEDMEM that can
be helpful for handling MED files (conversion tools and splitting tools).
+\section install Installation
+The install procedure of the %MED SALOME module can handle a variety of configurations
+to suit the needs of its user. Instructions for configuring and
+installing the module an be found in \ref medmem_install.
+
*/
#
# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
#
+# Author : Anthony Geay (CEA/DEN)
INCLUDE(${KERNEL_ROOT_DIR}/salome_adm/cmake_files/UseOMNIORB.cmake)
${OMNIORB_INCLUDE_DIRS}
${KERNEL_ROOT_DIR}/include/salome
${CMAKE_CURRENT_BINARY_DIR}
- )
+)
SET(SalomeIDLMED_IDLSOURCES
MED.idl
Compo1Py.idl
MEDCouplingCorbaServant.idl
ParaMEDCouplingCorbaServant.idl
- )
+ MEDDataManager.idl
+ MEDCalculator.idl
+ MEDEventListener.idl
+ MEDOPFactory.idl
+)
IF(MPI_IS_OK)
SET(SalomeIDLMED_IDLSOURCES ${SalomeIDLMED_IDLSOURCES} ParaMEDMEMComponent.idl)
SET(SalomeIDLMEDTests_IDLSOURCES
MEDCouplingCorbaServantTest.idl
- )
+)
SET(IDL_INCLUDE_DIRS
${CMAKE_CURRENT_SOURCE_DIR}
${KERNEL_ROOT_DIR}/idl/salome
- )
+)
-OMNIORB_ADD_MODULE(SalomeIDLMED "${SalomeIDLMED_IDLSOURCES}" "${IDL_INCLUDE_DIRS}")
+SET(TYPE)
+IF(WINDOWS)
+ SET(TYPE STATIC)
+ELSE(WINDOWS)
+ SET(TYPE SHARED)
+ENDIF(WINDOWS
+)
+OMNIORB_ADD_MODULE(SalomeIDLMED "${SalomeIDLMED_IDLSOURCES}" "${IDL_INCLUDE_DIRS}" ${TYPE})
TARGET_LINK_LIBRARIES(SalomeIDLMED ${CORBA_LIBS} ${KERNEL_LDFLAGS} ${SalomeIDLKernel})
-SET_TARGET_PROPERTIES(SalomeIDLMED PROPERTIES COMPILE_FLAGS "${OMNIORB_DEFINITIONS}")
+SET_TARGET_PROPERTIES(SalomeIDLMED PROPERTIES COMPILE_FLAGS "${OMNIORB_DEFINITIONS} ${PLATFORM_DEFINITIONS}")
-OMNIORB_ADD_MODULE(SalomeIDLMEDTests "${SalomeIDLMEDTests_IDLSOURCES}" "${IDL_INCLUDE_DIRS}")
-TARGET_LINK_LIBRARIES(SalomeIDLMEDTests ${CORBA_LIBS} ${KERNEL_LDFLAGS} ${SalomeIDLKernel})
-SET_TARGET_PROPERTIES(SalomeIDLMEDTests PROPERTIES COMPILE_FLAGS "${OMNIORB_DEFINITIONS}")
+OMNIORB_ADD_MODULE(SalomeIDLMEDTests "${SalomeIDLMEDTests_IDLSOURCES}" "${IDL_INCLUDE_DIRS}" ${TYPE})
+TARGET_LINK_LIBRARIES(SalomeIDLMEDTests SalomeIDLMED)
+SET_TARGET_PROPERTIES(SalomeIDLMEDTests PROPERTIES COMPILE_FLAGS "${OMNIORB_DEFINITIONS} ${PLATFORM_DEFINITIONS}")
INSTALL(TARGETS SalomeIDLMED SalomeIDLMEDTests DESTINATION ${MED_salomelib_LIBS})
--- /dev/null
+// Copyright (C) 2011 CEA/DEN, EDF R&D, OPEN CASCADE
+//
+// 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.salome-platform.org/ or email : webmaster.salome@opencascade.com
+//
+// Authors : Guillaume Boulant (EDF) - 01/06/2011
+
+#ifndef _MED_CALCULATOR_IDL_
+#define _MED_CALCULATOR_IDL_
+
+#include "SALOME_GenericObj.idl"
+#include "MEDDataManager.idl"
+
+module MEDOP
+{
+
+ /*!
+ * This constants may be used for the value of an argument of a
+ * function of the interface to specify that the function must
+ * consider a default value.
+ */
+ typedef long medopNumber;
+ const medopNumber NBCOMP_DEFAULT=-1;
+
+ interface MEDCalculator: SALOME::GenericObj
+ {
+ /*! Addition of the fields f1 and f2 ( f1+f2) */
+ FieldHandler add(in FieldHandler f1, in FieldHandler f2)
+ raises (SALOME::SALOME_Exception);
+ /*! Substraction of the fields f1 and f2 (f1-f2) */
+ FieldHandler sub(in FieldHandler f1, in FieldHandler f2)
+ raises (SALOME::SALOME_Exception);
+ /*! Multiplication of the fields f1 by f2 (f1*f2) */
+ FieldHandler mul(in FieldHandler f1, in FieldHandler f2)
+ raises (SALOME::SALOME_Exception);
+ /*! Division of the fields f1 by f2 (f1/f2) */
+ FieldHandler div(in FieldHandler f1, in FieldHandler f2)
+ raises (SALOME::SALOME_Exception);
+ /*! Power of the field f (f^power) */
+ FieldHandler pow(in FieldHandler f, in long power)
+ raises (SALOME::SALOME_Exception);
+ /*! Linear transformation of the field f (factor*f+offset) */
+ FieldHandler lin(in FieldHandler f, in double factor, in double offset)
+ raises (SALOME::SALOME_Exception);
+ /*! Dublication of the field f */
+ FieldHandler dup(in FieldHandler f)
+ raises (SALOME::SALOME_Exception);
+
+ /*! Creation of a field whose values are initialized with the specified double */
+ /* FieldHandler ini(in double value) raises (SALOME::SALOME_Exception); */
+
+ /*! Transformation of the field f using a custom function */
+ FieldHandler fct(in FieldHandler f, in string function, in medopNumber nbResComponents)
+ raises (SALOME::SALOME_Exception);
+
+ };
+};
+
+#endif // _MED_CALCULATOR_IDL_
//
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
+// Author : Anthony Geay (CEA/DEN)
#ifndef __MEDCOUPLINGCORBASERVANT_IDL__
#define __MEDCOUPLINGCORBASERVANT_IDL__
//
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
+// Author : Anthony Geay (CEA/DEN)
#ifndef __MEDCOUPLINGCORBASERVANTTEST_IDL__
#define __MEDCOUPLINGCORBASERVANTTEST_IDL__
--- /dev/null
+// Copyright (C) 2007-2012 CEA/DEN, EDF R&D, OPEN CASCADE
+//
+// Copyright (C) 2003-2007 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.salome-platform.org/ or email : webmaster.salome@opencascade.com
+//
+
+// Authors : Guillaume Boulant (EDF) - 01/06/2011
+
+#ifndef _MED_DATAMANAGER_IDL_
+#define _MED_DATAMANAGER_IDL_
+
+#include "SALOME_GenericObj.idl"
+#include "SALOME_Exception.idl"
+
+module MEDOP
+{
+ struct DatasourceHandler {
+ long id;
+ string name;
+ string uri;
+ // The source could be a filepath or the ior of a field servant
+ };
+
+ struct MeshHandler {
+ long id;
+ string name;
+ long sourceid;
+ };
+ typedef sequence<MeshHandler> MeshHandlerList;
+
+ /**
+ * The Fieldseries is a virtal object that does not exist in the MED
+ * data model (at least in the MEDCoupling data model). It is just a
+ * point that aggregate a list of fields that relie on the same mesh
+ * with the same type (the fields in a timeseries differ by their
+ * time step).
+ *
+ * Then you could have a field with no fieldseries associated but
+ * directly associated to a mesh. That is typically the case of
+ * fields created by MED operations: if you operate tow fields
+ * coming from 2 different timeseries (and relying on the same
+ * mesh), you obtain a field that can not be associate to the
+ * original timeseries. Then this new created field must be directly
+ * associated to its underlying mesh (as defined in the MEDCoupling
+ * data model).
+ *
+ * In conclusion, the fieldseries is a facilities for data
+ * management but must not be a structuration of the data model. The
+ * association is not:
+ *
+ * field->fieldseries->mesh
+ *
+ * but:
+ *
+ * field->fieldseries (optional)
+ * ->mesh (mandatory)
+ *
+ * and:
+ *
+ * fieldseries->mesh (mandatory)
+ */
+ struct FieldseriesHandler {
+ long id;
+ string name;
+ long type;
+ long meshid;
+ long nbIter;
+ };
+ typedef sequence<FieldseriesHandler> FieldseriesHandlerList;
+
+ // The FieldHandler structure is a lightweigth data structure that
+ // represents a single field (as understood in MEDCoupling model).
+ struct FieldHandler {
+ long id;
+ long fieldseriesId;
+ string fieldname; // @warn : if fieldseriesId then get from fieldseries->name
+ string meshname; // @deprecated: replace by meshid and get from mesh->name
+ long meshid;
+ long type; // @warn : if fieldseriesId then get from fieldseries->type
+ long iteration;
+ long order;
+ string source; // @deprecated : get from mesh->datasource->uri
+ };
+
+ typedef sequence<FieldHandler> FieldHandlerList;
+ typedef sequence<long> FieldIdList;
+
+ interface MEDDataManager: SALOME::GenericObj
+ {
+
+ //==========================================================
+ // Datasource management
+ //==========================================================
+ DatasourceHandler addDatasource(in string filepath);
+
+ //==========================================================
+ // Mesh data management
+ //==========================================================
+
+ MeshHandler getMesh(in long meshId) raises (SALOME::SALOME_Exception);
+ MeshHandlerList getMeshList(in long datasourceId);
+
+ //==========================================================
+ // Field data management
+ //==========================================================
+ FieldseriesHandlerList getFieldseriesListOnMesh(in long meshId);
+ FieldHandlerList getFieldListInFieldseries(in long fieldseriesId);
+
+ FieldHandler getFieldHandler(in long fieldHandlerId);
+ FieldHandlerList getFieldHandlerList();
+ // __GBO__ Maybe it could be usefull to define a getFieldHandlerList with a datasourceId in argument
+ string getFieldRepresentation(in long fieldHandlerId);
+
+ // Persistency management
+ void saveFields(in string filepath, in FieldIdList list)
+ raises (SALOME::SALOME_Exception);
+ void markAsPersistent(in long fieldHandlerId, in boolean persistent);
+ void savePersistentFields(in string filepath)
+ raises (SALOME::SALOME_Exception);
+
+
+ void updateFieldMetadata(in long fieldHandlerId,
+ in string fieldname,
+ in long iteration,
+ in long order,
+ in string source);
+
+ //void saveFields(in FieldHandlerList fieldHandlerList, in string filepath);
+
+ void changeUnderlyingMesh(in long fieldHandlerId, in long meshHandlerId)
+ raises (SALOME::SALOME_Exception);
+
+ //==========================================================
+ // General purpose data management
+ //==========================================================
+ void setEventListenerIOR(in string ior);
+ string getEventListenerIOR() raises (SALOME::SALOME_Exception);
+
+ // Print out server data
+ void serverlog();
+ };
+};
+
+#endif // _MED_DATAMANAGER_IDL_
--- /dev/null
+// Copyright (C) 2007-2008 CEA/DEN, EDF R&D, OPEN CASCADE
+//
+// Copyright (C) 2003-2007 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.salome-platform.org/ or email : webmaster.salome@opencascade.com
+//
+
+#ifndef _MED_EVENTLISTENER_IDL_
+#define _MED_EVENTLISTENER_IDL_
+
+#include "SALOME_GenericObj.idl"
+
+module MEDOP
+{
+ enum MedEventType {
+ EVENT_ADDNEW_FIELD,
+ EVENT_DELETE_FIELD,
+ EVENT_UPDATE_FIELD,
+ EVENT_UNKNOWN
+ };
+
+ struct MedEvent {
+ MedEventType type;
+ long fieldid;
+ };
+
+ interface MEDEventListener: SALOME::GenericObj {
+ void processMedEvent(in MedEvent event);
+ };
+};
+
+#endif
--- /dev/null
+// Copyright (C) 2005 CEA/DEN, EDF R&D
+//
+// 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.salome-platform.org/ or email : webmaster.salome@opencascade.com
+//
+
+
+#ifndef __MEDOPFactory_IDL_
+#define __MEDOPFactory_IDL_
+
+#include "SALOME_Component.idl"
+#include "SALOME_Exception.idl"
+#include "MEDDataManager.idl"
+#include "MEDCalculator.idl"
+
+/*!
+ * This module contains the interface required for starting with MED
+ * operations. It defines the factory methods to get the main SALOME
+ * MED components for MED field operations.
+ *
+ * WRN: This interface is an EngineComponent so that it could be retrieve
+ * in the CORBA context using the LifeCycleCorba registry.
+*/
+module MEDOP
+{
+ interface MEDOPFactory : Engines::EngineComponent
+ {
+
+ MEDOP::MEDDataManager getDataManager();
+ MEDOP::MEDCalculator getCalculator();
+
+ };
+};
+
+#endif
+
EXTRA_DIST += CMakeLists.txt
-BASEIDL_FILES = MED.idl MED_Gen.idl Compo1Py.idl MEDCouplingCorbaServant.idl MEDCouplingCorbaServantTest.idl ParaMEDCouplingCorbaServant.idl
+BASEIDL_FILES = \
+ MED.idl MED_Gen.idl Compo1Py.idl \
+ MEDCouplingCorbaServant.idl \
+ MEDCouplingCorbaServantTest.idl \
+ ParaMEDCouplingCorbaServant.idl
+
+MEDOPIDL_FILES = \
+ MEDDataManager.idl \
+ MEDCalculator.idl \
+ MEDEventListener.idl \
+ MEDOPFactory.idl
MPIIDL_FILES = ParaMEDMEMComponent.idl
if MPI_IS_OK
IDL_FILES += $(MPIIDL_FILES)
endif
+IDL_FILES += $(MEDOPIDL_FILES)
IDL_FILES_PY=$(IDL_FILES:%.idl=%_idl.py)
lib_LTLIBRARIES = libSalomeIDLMED.la libSalomeIDLMEDTests.la
# Sources built from idl files
-BASEIDL_SOURCES = MEDSK.cc MED_GenSK.cc MEDCouplingCorbaServantSK.cc Compo1PySK.cc ParaMEDCouplingCorbaServantSK.cc
+BASEIDL_SOURCES = \
+ MEDSK.cc MED_GenSK.cc Compo1PySK.cc \
+ MEDCouplingCorbaServantSK.cc \
+ ParaMEDCouplingCorbaServantSK.cc
+
+MEDOPIDL_SOURCES = \
+ MEDDataManagerSK.cc \
+ MEDCalculatorSK.cc \
+ MEDEventListenerSK.cc \
+ MEDOPFactorySK.cc
MPIIDL_SOURCES = ParaMEDMEMComponentSK.cc
if MPI_IS_OK
IDL_SOURCES += $(MPIIDL_SOURCES)
endif
+IDL_SOURCES += $(MEDOPIDL_SOURCES)
nodist_libSalomeIDLMED_la_SOURCES = $(IDL_SOURCES)
# header files must be exported: other modules have to use this library
-nodist_salomeinclude_HEADERS = MED.hh MED_Gen.hh MEDCouplingCorbaServant.hh Compo1Py.hh MEDCouplingCorbaServantTest.hh ParaMEDCouplingCorbaServant.hh
+nodist_salomeinclude_HEADERS = \
+ MED.hh MED_Gen.hh Compo1Py.hh \
+ MEDCouplingCorbaServant.hh \
+ MEDCouplingCorbaServantTest.hh \
+ ParaMEDCouplingCorbaServant.hh
+
if MPI_IS_OK
nodist_salomeinclude_HEADERS += ParaMEDMEMComponent.hh
endif
+nodist_salomeinclude_HEADERS += \
+ MEDDataManager.hh \
+ MEDCalculator.hh \
+ MEDEventListener.hh \
+ MEDOPFactory.hh
+
libSalomeIDLMED_la_CPPFLAGS = \
-I$(top_builddir)/idl \
@CORBA_CXXFLAGS@ @CORBA_INCLUDES@ @KERNEL_CXXFLAGS@
IDLCXXFLAGS = -bcxx @IDLCXXFLAGS@ -I$(top_builddir)/idl/salome -I$(KERNEL_ROOT_DIR)/idl/salome
IDLPYFLAGS = @IDLPYFLAGS@ -I$(KERNEL_ROOT_DIR)/idl/salome
-MEDSK.cc : MED.idl
- $(OMNIORB_IDL) $(IDLCXXFLAGS) $(OMNIORB_IDLCXXFLAGS) $<
-MED.hh : MEDSK.cc
+SUFFIXES = .idl .hh SK.cc
-MED_GenSK.cc : MED_Gen.idl
+%SK.cc %.hh : %.idl
$(OMNIORB_IDL) $(IDLCXXFLAGS) $(OMNIORB_IDLCXXFLAGS) $<
-MED_Gen.hh : MED_GenSK.cc
-ParaMEDMEMComponentSK.cc : ParaMEDMEMComponent.idl
- $(OMNIORB_IDL) $(IDLCXXFLAGS) $(OMNIORB_IDLCXXFLAGS) $<
-ParaMEDMEMComponent.hh : ParaMEDMEMComponentSK.cc
-
-MEDCouplingCorbaServantSK.cc : MEDCouplingCorbaServant.idl
- $(OMNIORB_IDL) $(IDLCXXFLAGS) $(OMNIORB_IDLCXXFLAGS) $<
-MEDCouplingCorbaServant.hh : MEDCouplingCorbaServantSK.cc
-
-ParaMEDCouplingCorbaServantSK.cc : ParaMEDCouplingCorbaServant.idl
- $(OMNIORB_IDL) $(IDLCXXFLAGS) $(OMNIORB_IDLCXXFLAGS) $<
-ParaMEDCouplingCorbaServant.hh : ParaMEDCouplingCorbaServantSK.cc
-
-Compo1PySK.cc : Compo1Py.idl
- $(OMNIORB_IDL) $(IDLCXXFLAGS) $(OMNIORB_IDLCXXFLAGS) $<
-Compo1Py.hh : Compo1PySK.cc
-
-MEDCouplingCorbaServantTestSK.cc : MEDCouplingCorbaServantTest.idl
- $(OMNIORB_IDL) $(IDLCXXFLAGS) $(OMNIORB_IDLCXXFLAGS) $<
-MEDCouplingCorbaServantTest.hh : MEDCouplingCorbaServantTestSK.cc
+# MEDSK.cc : MED.idl
+# $(OMNIORB_IDL) $(IDLCXXFLAGS) $(OMNIORB_IDLCXXFLAGS) $<
+# MED.hh : MEDSK.cc
install-exec-local: $(IDL_FILES:%=$(top_srcdir)/idl/%)
$(INSTALL) -d $(DESTDIR)$(salomepythondir)
# we want to remove only staff generated for IDL files and nothing more
uninstall-local:
- @for modulen in SALOME_MED SALOME_TEST Compo1Py_ORB ; do \
+ @for modulen in SALOME_MED SALOME_TEST Compo1Py_ORB MEDOP ; do \
test -d $(DESTDIR)$(salomepythondir)/$${modulen} && echo "Removing $(DESTDIR)$(salomepythondir)/$${modulen}" && rm -rf $(DESTDIR)$(salomepythondir)/$${modulen} ; \
test -d $(DESTDIR)$(salomepythondir)/$${modulen}__POA && echo "Removing $(DESTDIR)$(salomepythondir)/$${modulen}__POA" && rm -rf $(DESTDIR)$(salomepythondir)/$${modulen}__POA ; \
done ; \
<!-- Component list -->
<component-list>
+
+ <component>
+ <component-name>MEDOPFactory</component-name>
+ <component-username>MEDOP Factory</component-username>
+ <component-type>MED</component-type>
+ <component-author>Guillaume Boulant</component-author>
+ <component-version>@VERSION@</component-version>
+ <component-comment>Factory of SALOME components for MED Field operations</component-comment>
+ <component-multistudy>0</component-multistudy>
+ </component>
+
<component>
<!-- Component identification -->
<component-name>MED</component-name>
<document>
<section name="MED">
<!-- Major module parameters -->
- <parameter name="name" value="Med"/>
- <parameter name="icon" value="ModuleMed.png"/>
+ <parameter name="name" value="MED"/>
+ <parameter name="icon" value="MEDOP.png"/>
<parameter name="documentation" value="med_help"/>
- <parameter name="library" value="MEDGUI"/>
+ <parameter name="library" value="MEDOPGUI"/>
<parameter name="version" value="@VERSION@"/>
</section>
<section name="med_help" >
SET(COMMON_SUBDIRS ${COMMON_SUBDIRS} ParaMEDCouplingCorba ParaMEDMEMComponent)
ENDIF(MPI_IS_OK)
IF(MED_ENABLE_MED3)
- SET(COMMON_SUBDIRS ${COMMON_SUBDIRS} MEDCalculator)
+ SET(COMMON_SUBDIRS ${COMMON_SUBDIRS} MEDCalculator MEDOP)
SET(OLD_COMMON_SUBDIRS ${OLD_COMMON_SUBDIRS} MEDMEM_I)
ENDIF(MED_ENABLE_MED3)
IF(MED_ENABLE_GUI)
//
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
+// Author : Anthony Geay (CEA/DEN)
#ifndef __INTERPKERNELAUTOPTR_HXX__
#define __INTERPKERNELAUTOPTR_HXX__
//
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
+// Author : Anthony Geay (CEA/DEN)
#include "InterpKernelException.hxx"
//
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
+// Author : Anthony Geay (CEA/DEN)
#ifndef __INTERPKERNELEXCEPTION_HXX__
#define __INTERPKERNELEXCEPTION_HXX__
//
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
+// Author : Anthony Geay (CEA/DEN)
#ifndef __NORMALIZEDUNSTRUCTUREDMESH_HXX__
#define __NORMALIZEDUNSTRUCTUREDMESH_HXX__
#
# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
#
+# Author : Anthony Geay (CEA/DEN)
SET(interpkernel_SOURCES
TransformedTriangle.cxx
)
ADD_LIBRARY(interpkernel SHARED ${interpkernel_SOURCES})
-
+SET_TARGET_PROPERTIES(interpkernel PROPERTIES COMPILE_FLAGS "${PLATFORM_DEFINITIONS}")
+TARGET_LINK_LIBRARIES(interpkernel ${PLATFORM_LIBS})
INSTALL(TARGETS interpkernel DESTINATION ${MED_salomelib_LIBS})
FILE(GLOB_RECURSE interpkernel_HEADERS_HXX "${CMAKE_CURRENT_SOURCE_DIR}/*.hxx")
//
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
+// Author : Anthony Geay (CEA/DEN)
#include "CellModel.hxx"
//
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
+// Author : Anthony Geay (CEA/DEN)
#ifndef __CELLMODEL_INTERP_KERNEL_HXX__
#define __CELLMODEL_INTERP_KERNEL_HXX__
//
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
+// Author : Anthony Geay (CEA/DEN)
#ifndef __CONVEXINTERSECTOR_HXX__
#define __CONVEXINTERSECTOR_HXX__
//
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
+// Author : Anthony Geay (CEA/DEN)
#ifndef __CONVEXINTERSECTOR_TXX__
#define __CONVEXINTERSECTOR_TXX__
//
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
+// Author : Anthony Geay (CEA/DEN)
#ifndef __CURVEINTERSECTOR_HXX__
#define __CURVEINTERSECTOR_HXX__
//
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
+// Author : Anthony Geay (CEA/DEN)
#ifndef __CURVEINTERSECTOR_TXX__
#define __CURVEINTERSECTOR_TXX__
//
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
+// Author : Anthony Geay (CEA/DEN)
#ifndef __CURVEINTERSECTORP0P0_HXX__
#define __CURVEINTERSECTORP0P0_HXX__
//
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
+// Author : Anthony Geay (CEA/DEN)
#ifndef __CURVEINTERSECTORP0P0_TXX__
#define __CURVEINTERSECTORP0P0_TXX__
//
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
+// Author : Anthony Geay (CEA/DEN)
#ifndef __CURVEINTERSECTORP0P1_HXX__
#define __CURVEINTERSECTORP0P1_HXX__
//
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
+// Author : Anthony Geay (CEA/DEN)
#ifndef __CurveIntersectorP0P1_TXX__
#define __CurveIntersectorP0P1_TXX__
//
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
+// Author : Anthony Geay (CEA/DEN)
#ifndef __CURVEINTERSECTORP1P0_HXX__
#define __CURVEINTERSECTORP1P0_HXX__
//
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
+// Author : Anthony Geay (CEA/DEN)
#ifndef __CurveIntersectorP1P0_TXX__
#define __CurveIntersectorP1P0_TXX__
//
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
+// Author : Anthony Geay (CEA/DEN)
#ifndef __CURVEINTERSECTORP1P1_HXX__
#define __CURVEINTERSECTORP1P1_HXX__
//
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
+// Author : Anthony Geay (CEA/DEN)
#ifndef __CurveIntersectorP1P1_TXX__
#define __CurveIntersectorP1P1_TXX__
//
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
+// Author : Anthony Geay (CEA/DEN)
#include "InterpKernelAsmX86.hxx"
#ifdef _POSIX_MAPPED_FILES
#include <sys/mman.h>
#else
-#ifdef WNT
+#ifdef WIN32
#include <windows.h>
#endif
#endif
#ifdef _POSIX_MAPPED_FILES
ret=(char *)mmap(0,lgth,PROT_EXEC | PROT_WRITE,MAP_ANONYMOUS | MAP_PRIVATE,-1,0);
#else
-#ifdef WNT
+#ifdef WIN32
HANDLE h=CreateFileMapping(INVALID_HANDLE_VALUE,NULL,PAGE_EXECUTE_READWRITE,0,lgth,NULL);
ret=(char *)MapViewOfFile(h,FILE_MAP_EXECUTE | FILE_MAP_READ | FILE_MAP_WRITE,0,0,lgth);
#endif
//
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
+// Author : Anthony Geay (CEA/DEN)
#ifndef __INTERPKERNELASMX86_HXX__
#define __INTERPKERNELASMX86_HXX__
//
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
+// Author : Anthony Geay (CEA/DEN)
#include "InterpKernelExprParser.hxx"
#include "InterpKernelValue.hxx"
//
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
+// Author : Anthony Geay (CEA/DEN)
#ifndef __INTERPKERNELEXPRPARSER_HXX__
#define __INTERPKERNELEXPRPARSER_HXX__
//
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
+// Author : Anthony Geay (CEA/DEN)
#include "InterpKernelFunction.hxx"
#include "InterpKernelValue.hxx"
//
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
+// Author : Anthony Geay (CEA/DEN)
#ifndef __INTERPKERNELFUNCTION_HXX__
#define __INTERPKERNELFUNCTION_HXX__
//
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
+// Author : Anthony Geay (CEA/DEN)
#include "InterpKernelUnit.hxx"
#include "InterpKernelExprParser.hxx"
//
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
+// Author : Anthony Geay (CEA/DEN)
#ifndef __INTERPKERNELUNIT_HXX__
#define __INTERPKERNELUNIT_HXX__
//
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
+// Author : Anthony Geay (CEA/DEN)
#include "InterpKernelValue.hxx"
#include "InterpKernelFunction.hxx"
//
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
+// Author : Anthony Geay (CEA/DEN)
#ifndef __INTERPKERNELVALUE_HXX__
#define __INTERPKERNELVALUE_HXX__
//
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
+// Author : Anthony Geay (CEA/DEN)
#ifndef __GENMATHFORMULAE_HXX__
#define __GENMATHFORMULAE_HXX__
//
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
+// Author : Anthony Geay (CEA/DEN)
#include "InterpKernelGeo2DAbstractEdge.hxx"
#include "InterpKernelGeo2DComposedEdge.hxx"
//
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
+// Author : Anthony Geay (CEA/DEN)
#ifndef __INTERPKERNELGEO2DABSTRACTEDGE_HXX__
#define __INTERPKERNELGEO2DABSTRACTEDGE_HXX__
//
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
+// Author : Anthony Geay (CEA/DEN)
#include "InterpKernelGeo2DBounds.hxx"
#include "InterpKernelException.hxx"
//
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
+// Author : Anthony Geay (CEA/DEN)
#ifndef __INTERPKERNELGEO2DBOUNDS_HXX__
#define __INTERPKERNELGEO2DBOUNDS_HXX__
//
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
+// Author : Anthony Geay (CEA/DEN)
#include "InterpKernelGeo2DComposedEdge.hxx"
#include "InterpKernelGeo2DElementaryEdge.hxx"
//
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
+// Author : Anthony Geay (CEA/DEN)
#ifndef __INTERPKERNELGEO2DCOMPOSEDNODE_HXX__
#define __INTERPKERNELGEO2DCOMPOSEDNODE_HXX__
//
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
+// Author : Anthony Geay (CEA/DEN)
#include "InterpKernelGeo2DEdge.hxx"
#include "InterpKernelGeo2DEdgeLin.hxx"
//
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
+// Author : Anthony Geay (CEA/DEN)
#ifndef __INTERPKERNELGEO2DEDGE_HXX__
#define __INTERPKERNELGEO2DEDGE_HXX__
//
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
+// Author : Anthony Geay (CEA/DEN)
#ifndef __INTERPKERNELGEO2DEDGE_TXX__
#define __INTERPKERNELGEO2DEDGE_TXX__
//
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
+// Author : Anthony Geay (CEA/DEN)
#include "InterpKernelGeo2DEdgeArcCircle.hxx"
#include "InterpKernelGeo2DEdgeLin.hxx"
//
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
+// Author : Anthony Geay (CEA/DEN)
#ifndef __INTERPKERNELGEO2DEDGEARCCIRCLE_HXX__
#define __INTERPKERNELGEO2DEDGEARCCIRCLE_HXX__
//
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
+// Author : Anthony Geay (CEA/DEN)
#include "InterpKernelGeo2DEdgeInfLin.hxx"
//
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
+// Author : Anthony Geay (CEA/DEN)
#ifndef __INTERPKERNELGEO2DEDGEINFLIN_HXX__
#define __INTERPKERNELGEO2DEDGEINFLIN_HXX__
//
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
+// Author : Anthony Geay (CEA/DEN)
#include "InterpKernelGeo2DEdgeLin.hxx"
#include "InterpKernelGeo2DNode.hxx"
//
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
+// Author : Anthony Geay (CEA/DEN)
#ifndef __INTERPKERNELGEO2DEDGELIN_HXX__
#define __INTERPKERNELGEO2DEDGELIN_HXX__
//
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
+// Author : Anthony Geay (CEA/DEN)
#include "InterpKernelGeo2DElementaryEdge.hxx"
#include "InterpKernelException.hxx"
//
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
+// Author : Anthony Geay (CEA/DEN)
#ifndef __INTERPKERNELGEO2DELEMENTARYEDGE_HXX__
#define __INTERPKERNELGEO2DELEMENTARYEDGE_HXX__
//
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
+// Author : Anthony Geay (CEA/DEN)
#include "InterpKernelGeo2DNode.hxx"
#include "InterpKernelGeo2DEdgeArcCircle.hxx"
//
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
+// Author : Anthony Geay (CEA/DEN)
#ifndef __INTERPKERNELGEO2DNODE_HXX__
#define __INTERPKERNELGEO2DNODE_HXX__
//
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
+// Author : Anthony Geay (CEA/DEN)
#include "InterpKernelGeo2DPrecision.hxx"
//
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
+// Author : Anthony Geay (CEA/DEN)
#ifndef __INTERPKERNELGEO2DPRECISION_HXX__
#define __INTERPKERNELGEO2DPRECISION_HXX__
//
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
+// Author : Anthony Geay (CEA/DEN)
#include "InterpKernelGeo2DQuadraticPolygon.hxx"
#include "InterpKernelGeo2DElementaryEdge.hxx"
//
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
+// Author : Anthony Geay (CEA/DEN)
#ifndef __INTERPKERNELGEO2DQUADRATICPOLYGON_HXX__
#define __INTERPKERNELGEO2DQUADRATICPOLYGON_HXX__
//
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
+// Author : Anthony Geay (CEA/DEN)
#ifndef __GEOMETRIC2DINTERSECTOR_HXX__
#define __GEOMETRIC2DINTERSECTOR_HXX__
//
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
+// Author : Anthony Geay (CEA/DEN)
#ifndef __GEOMETRIC2DINTERSECTOR_TXX__
#define __GEOMETRIC2DINTERSECTOR_TXX__
//
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
+// Author : Anthony Geay (CEA/DEN)
#ifndef __INTEGRALUNIFORMINTERSECTOR_HXX__
#define __INTEGRALUNIFORMINTERSECTOR_HXX__
//
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
+// Author : Anthony Geay (CEA/DEN)
#ifndef __INTEGRALUNIFORMINTERSECTOR_TXX__
#define __INTEGRALUNIFORMINTERSECTOR_TXX__
//
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
+// Author : Anthony Geay (CEA/DEN)
#include "InterpKernelCellSimplify.hxx"
#include "CellModel.hxx"
//
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
+// Author : Anthony Geay (CEA/DEN)
#ifndef __INTERPKERNELCELLSIMPLIFY_HXX__
#define __INTERPKERNELCELLSIMPLIFY_HXX__
//
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
+// Author : Anthony Geay (CEA/DEN)
#include "InterpKernelMatrixTools.hxx"
#include "InterpKernelAutoPtr.hxx"
//
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
+// Author : Anthony Geay (CEA/DEN)
#ifndef __INTERPKERNELMATRIXTOOLS_HXX__
#define __INTERPKERNELMATRIXTOOLS_HXX__
//
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
+// Author : Anthony Geay (CEA/DEN)
#include "InterpKernelMeshQuality.hxx"
//
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
+// Author : Anthony Geay (CEA/DEN)
#ifndef __INTERPKERNELMESHQUALITY_HXX_
#define __INTERPKERNELMESHQUALITY_HXX__
//
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
+// Author : Anthony Geay (CEA/DEN)
#ifndef __INTERPOLATION_HXX__
#define __INTERPOLATION_HXX__
//
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
+// Author : Anthony Geay (CEA/DEN)
#ifndef __INTERPOLATION_TXX__
#define __INTERPOLATION_TXX__
//
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
+// Author : Anthony Geay (CEA/DEN)
#ifndef __INTERPOLATION1D_HXX__
#define __INTERPOLATION1D_HXX__
//
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
+// Author : Anthony Geay (CEA/DEN)
#ifndef __INTERPOLATION1D_TXX__
#define __INTERPOLATION1D_TXX__
//
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
+// Author : Anthony Geay (CEA/DEN)
#ifndef __INTERPOLATION2D_HXX__
#define __INTERPOLATION2D_HXX__
//
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
+// Author : Anthony Geay (CEA/DEN)
#ifndef __INTERPOLATION2D_TXX__
#define __INTERPOLATION2D_TXX__
//
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
+// Author : Anthony Geay (CEA/DEN)
#ifndef __INTERPOLATION2D1D_HXX__
#define __INTERPOLATION2D1D_HXX__
//
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
+// Author : Anthony Geay (CEA/DEN)
#ifndef __INTERPOLATION2D1D_TXX__
#define __INTERPOLATION2D1D_TXX__
//
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
+// Author : Anthony Geay (CEA/DEN)
#include "Interpolation2DCurve.hxx"
#include "InterpolationCurve.txx"
//
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
+// Author : Anthony Geay (CEA/DEN)
#ifndef __INTERPOLATION2DCURVE_HXX__
#define __INTERPOLATION2DCURVE_HXX__
//
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
+// Author : Anthony Geay (CEA/DEN)
#include "Interpolation3D.hxx"
#include "Interpolation3D.txx"
//
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
+// Author : Anthony Geay (CEA/DEN)
#ifndef __INTERPOLATION3D_HXX__
#define __INTERPOLATION3D_HXX__
//
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
+// Author : Anthony Geay (CEA/DEN)
#ifndef __INTERPOLATION3D_TXX__
#define __INTERPOLATION3D_TXX__
//
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
+// Author : Anthony Geay (CEA/DEN)
#include "Interpolation3DSurf.hxx"
#include "InterpolationPlanar.txx"
//
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
+// Author : Anthony Geay (CEA/DEN)
#ifndef __INTERPOLATION3DSURF_HXX__
#define __INTERPOLATION3DSURF_HXX__
//
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
+// Author : Anthony Geay (CEA/DEN)
#ifndef __INTERPOLATIONCURVE_HXX__
#define __INTERPOLATIONCURVE_HXX__
//
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
+// Author : Anthony Geay (CEA/DEN)
#ifndef __INTERPOLATIONCURVE_TXX__
#define __INTERPOLATIONCURVE_TXX__
//
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
+// Author : Anthony Geay (CEA/DEN)
#include "InterpolationOptions.hxx"
//
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
+// Author : Anthony Geay (CEA/DEN)
#ifndef __INTERPOLATIONOPTIONS_HXX__
#define __INTERPOLATIONOPTIONS_HXX__
//
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
+// Author : Anthony Geay (CEA/DEN)
#ifndef __INTERPOLATIONPLANAR_HXX__
#define __INTERPOLATIONPLANAR_HXX__
//
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
+// Author : Anthony Geay (CEA/DEN)
#ifndef __INTERPOLATIONPLANAR_TXX__
#define __INTERPOLATIONPLANAR_TXX__
//
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
+// Author : Anthony Geay (CEA/DEN)
#ifndef __INTERPOLATIONUTILS_HXX__
#define __INTERPOLATIONUTILS_HXX__
T21 = n[0][_Y]-n[2][_Y], T22 = n[1][_Y]-n[2][_Y];
// matrix determinant
double Tdet = T11*T22 - T12*T21;
- if ( std::fabs( Tdet ) < std::numeric_limits<double>::min() )
+ if ( (std::fabs( Tdet) ) < (std::numeric_limits<double>::min()) )
{
bc[0]=1; bc[1]=bc[2]=0; // no solution
return;
//
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
+// Author : Anthony Geay (CEA/DEN)
#ifndef __INTERSECTOR3D_HXX__
#define __INTERSECTOR3D_HXX__
//
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
+// Author : Anthony Geay (CEA/DEN)
#ifndef __INTERSECTOR3D_TXX__
#define __INTERSECTOR3D_TXX__
//
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
+// Author : Anthony Geay (CEA/DEN)
#ifndef __INTERSECTOR3DP0P0_HXX__
#define __INTERSECTOR3DP0P0_HXX__
//
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
+// Author : Anthony Geay (CEA/DEN)
#ifndef __INTERSECTOR3DP0P0_TXX__
#define __INTERSECTOR3DP0P0_TXX__
//
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
+// Author : Anthony Geay (CEA/DEN)
#ifndef __INTERSECTOR3DP0P1_HXX__
#define __INTERSECTOR3DP0P1_HXX__
//
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
+// Author : Anthony Geay (CEA/DEN)
#ifndef __INTERSECTOR3DP0P1_TXX__
#define __INTERSECTOR3DP0P1_TXX__
//
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
+// Author : Anthony Geay (CEA/DEN)
#ifndef __INTERSECTOR3DP1P0_HXX__
#define __INTERSECTOR3DP1P0_HXX__
//
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
+// Author : Anthony Geay (CEA/DEN)
#ifndef __INTERSECTOR3DP1P0_TXX__
#define __INTERSECTOR3DP1P0_TXX__
//
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
+// Author : Anthony Geay (CEA/DEN)
#ifndef __Intersector3DP1P0Bary_HXX__
#define __Intersector3DP1P0Bary_HXX__
//
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
+// Author : Anthony Geay (CEA/DEN)
#ifndef __Intersector3DP1P0Bary_TXX__
#define __Intersector3DP1P0Bary_TXX__
//
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
+// Author : Anthony Geay (CEA/DEN)
#ifndef __Intersector3DP1P1_HXX__
#define __Intersector3DP1P1_HXX__
//
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
+// Author : Anthony Geay (CEA/DEN)
#ifndef __Intersector3DP1P1_TXX__
#define __Intersector3DP1P1_TXX__
//
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
+// Author : Anthony Geay (CEA/DEN)
#ifndef __PLANAR2D1DINTERSECTORP0P0_HXX__
#define __PLANAR2D1DINTERSECTORP0P0_HXX__
//
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
+// Author : Anthony Geay (CEA/DEN)
#ifndef __PLANAR2D1DINTERSECTORP0P0_TXX__
#define __PLANAR2D1DINTERSECTORP0P0_TXX__
//
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
+// Author : Anthony Geay (CEA/DEN)
#ifndef __PLANARINTERSECTOR_HXX__
#define __PLANARINTERSECTOR_HXX__
//
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
+// Author : Anthony Geay (CEA/DEN)
#ifndef __PLANARINTERSECTOR_TXX__
#define __PLANARINTERSECTOR_TXX__
//
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
+// Author : Anthony Geay (CEA/DEN)
#ifndef __PLANARINTERSECTORP0P0_HXX__
#define __PLANARINTERSECTORP0P0_HXX__
//
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
+// Author : Anthony Geay (CEA/DEN)
#ifndef __PLANARINTERSECTORP0P0_TXX__
#define __PLANARINTERSECTORP0P0_TXX__
//
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
+// Author : Anthony Geay (CEA/DEN)
#ifndef __PLANARINTERSECTORP0P1_HXX__
#define __PLANARINTERSECTORP0P1_HXX__
//
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
+// Author : Anthony Geay (CEA/DEN)
#ifndef __PLANARINTERSECTORP0P1_TXX__
#define __PLANARINTERSECTORP0P1_TXX__
//
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
+// Author : Anthony Geay (CEA/DEN)
#ifndef __PLANARINTERSECTORP0P1PL_HXX__
#define __PLANARINTERSECTORP0P1PL_HXX__
//
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
+// Author : Anthony Geay (CEA/DEN)
#ifndef __PLANARINTERSECTORP0P1PL_TXX__
#define __PLANARINTERSECTORP0P1PL_TXX__
//
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
+// Author : Anthony Geay (CEA/DEN)
#ifndef __PLANARINTERSECTORP1P0_HXX__
#define __PLANARINTERSECTORP1P0_HXX__
//
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
+// Author : Anthony Geay (CEA/DEN)
#ifndef __PLANARINTERSECTORP1P0_TXX__
#define __PLANARINTERSECTORP1P0_TXX__
//
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
+// Author : Anthony Geay (CEA/DEN)
#ifndef __PlanarIntersectorP1P0Bary_HXX__
#define __PlanarIntersectorP1P0Bary_HXX__
//
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
+// Author : Anthony Geay (CEA/DEN)
#ifndef __PlanarIntersectorP1P0Bary_TXX__
#define __PlanarIntersectorP1P0Bary_TXX__
//
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
+// Author : Anthony Geay (CEA/DEN)
#ifndef __PLANARINTERSECTORP1P0PL_HXX__
#define __PLANARINTERSECTORP1P0PL_HXX__
//
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
+// Author : Anthony Geay (CEA/DEN)
#ifndef __PLANARINTERSECTORP1P0PL_TXX__
#define __PLANARINTERSECTORP1P0PL_TXX__
//
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
+// Author : Anthony Geay (CEA/DEN)
#ifndef __PLANARINTERSECTORP1P1_HXX__
#define __PLANARINTERSECTORP1P1_HXX__
//
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
+// Author : Anthony Geay (CEA/DEN)
#ifndef __PLANARINTERSECTORP1P1_TXX__
#define __PLANARINTERSECTORP1P1_TXX__
//
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
+// Author : Anthony Geay (CEA/DEN)
#ifndef __PLANARINTERSECTORP1P1PL_HXX__
#define __PLANARINTERSECTORP1P1PL_HXX__
//
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
+// Author : Anthony Geay (CEA/DEN)
#ifndef __PLANARINTERSECTORP1P1PL_TXX__
#define __PLANARINTERSECTORP1P1PL_TXX__
//
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
+// Author : Anthony Geay (CEA/DEN)
#ifndef __POINTLOCATORINTERSECTOR_HXX__
#define __POINTLOCATORINTERSECTOR_HXX__
//
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
+// Author : Anthony Geay (CEA/DEN)
#ifndef __POINTLOCATORINTERSECTOR_TXX__
#define __POINTLOCATORINTERSECTOR_TXX__
//
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
+// Author : Anthony Geay (CEA/DEN)
#ifndef __POINTLOCATOR3DINTERSECTORP0P0_HXX__
#define __POINTLOCATOR3DINTERSECTORP0P0_HXX__
//
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
+// Author : Anthony Geay (CEA/DEN)
#ifndef __POINTLOCATOR3DINTERSECTORP0P0_TXX__
#define __POINTLOCATOR3DINTERSECTORP0P0_TXX__
//
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
+// Author : Anthony Geay (CEA/DEN)
#ifndef __POINTLOCATOR3DINTERSECTORP0P1_HXX__
#define __POINTLOCATOR3DINTERSECTORP0P1_HXX__
//
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
+// Author : Anthony Geay (CEA/DEN)
#ifndef __POINTLOCATOR3DINTERSECTORP0P1_TXX__
#define __POINTLOCATOR3DINTERSECTORP0P1_TXX__
//
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
+// Author : Anthony Geay (CEA/DEN)
#ifndef __POINTLOCATOR3DINTERSECTORP1P0_HXX__
#define __POINTLOCATOR3DINTERSECTORP1P0_HXX__
//
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
+// Author : Anthony Geay (CEA/DEN)
#ifndef __POINTLOCATOR3DINTERSECTORP1P0_TXX__
#define __POINTLOCATOR3DINTERSECTORP1P0_TXX__
//
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
+// Author : Anthony Geay (CEA/DEN)
#ifndef __POINTLOCATOR3DINTERSECTORP1P1_HXX__
#define __POINTLOCATOR3DINTERSECTORP1P1_HXX__
//
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
+// Author : Anthony Geay (CEA/DEN)
#ifndef __POINTLOCATOR3DINTERSECTORP1P1_TXX__
#define __POINTLOCATOR3DINTERSECTORP1P1_TXX__
//
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
+// Author : Anthony Geay (CEA/DEN)
#ifndef __POINTLOCATORALGOS_TXX__
#define __POINTLOCATORALGOS_TXX__
//
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
+// Author : Anthony Geay (CEA/DEN)
#ifndef __POLYHEDRONINTERSECTORP0P0_HXX__
#define __POLYHEDRONINTERSECTORP0P0_HXX__
//
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
+// Author : Anthony Geay (CEA/DEN)
#ifndef __POLYHEDRONINTERSECTORP0P0_TXX__
#define __POLYHEDRONINTERSECTORP0P0_TXX__
//
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
+// Author : Anthony Geay (CEA/DEN)
#ifndef __POLYHEDRONINTERSECTORP0P1_HXX__
#define __POLYHEDRONINTERSECTORP0P1_HXX__
//
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
+// Author : Anthony Geay (CEA/DEN)
#ifndef __POLYHEDRONINTERSECTORP0P1_TXX__
#define __POLYHEDRONINTERSECTORP0P1_TXX__
//
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
+// Author : Anthony Geay (CEA/DEN)
#ifndef __POLYHEDRONINTERSECTORP1P0_HXX__
#define __POLYHEDRONINTERSECTORP1P0_HXX__
//
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
+// Author : Anthony Geay (CEA/DEN)
#ifndef __POLYHEDRONINTERSECTORP1P0_TXX__
#define __POLYHEDRONINTERSECTORP1P0_TXX__
//
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
+// Author : Anthony Geay (CEA/DEN)
#ifndef __PolyhedronIntersectorP1P0Bary_HXX__
#define __PolyhedronIntersectorP1P0Bary_HXX__
//
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
+// Author : Anthony Geay (CEA/DEN)
#ifndef __PolyhedronIntersectorP1P0Bary_TXX__
#define __PolyhedronIntersectorP1P0Bary_TXX__
//
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
+// Author : Anthony Geay (CEA/DEN)
#ifndef __PolyhedronIntersectorP1P1_HXX__
#define __PolyhedronIntersectorP1P1_HXX__
//
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
+// Author : Anthony Geay (CEA/DEN)
#ifndef __PolyhedronIntersectorP1P1_TXX__
#define __PolyhedronIntersectorP1P1_TXX__
//
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
+// Author : Anthony Geay (CEA/DEN)
#ifndef __TARGETINTERSECTOR__HXX__
#define __TARGETINTERSECTOR__HXX__
#include "Log.hxx"
-#ifdef WNT
+#ifdef WIN32
#pragma warning(disable:4251)
#endif
//
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
+// Author : Anthony Geay (CEA/DEN)
#ifndef __TRIANGULATIONINTERSECTOR_HXX__
#define __TRIANGULATIONINTERSECTOR_HXX__
//
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
+// Author : Anthony Geay (CEA/DEN)
#ifndef __TRIANGULATIONINTERSECTOR_TXX__
#define __TRIANGULATIONINTERSECTOR_TXX__
//
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
+// Author : Anthony Geay (CEA/DEN)
#ifndef __VTKNORMALIZEDUNSTRUCTUREDMESH_HXX__
#define __VTKNORMALIZEDUNSTRUCTUREDMESH_HXX__
//
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
+// Author : Anthony Geay (CEA/DEN)
#ifndef __VTKNORMALIZEDUNSTRUCTUREDMESH_TXX__
#define __VTKNORMALIZEDUNSTRUCTUREDMESH_TXX__
//
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
+// Author : Anthony Geay (CEA/DEN)
#ifndef __VOLSURFFORMULAE_HXX__
#define __VOLSURFFORMULAE_HXX__
//
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
+// Author : Anthony Geay (CEA/DEN)
#ifndef __VOLSURFUSER_HXX__
#define __VOLSURFUSER_HXX__
//
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
+// Author : Anthony Geay (CEA/DEN)
#ifndef __VOLSURFUSER_TXX__
#define __VOLSURFUSER_TXX__
#
# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
#
+# Author : Anthony Geay (CEA/DEN)
INCLUDE_DIRECTORIES(
${CPPUNIT_INCLUDE_DIRS}
PerfTest.cxx
)
ADD_EXECUTABLE(PerfTest ${PerfTest_SOURCES})
- SET_TARGET_PROPERTIES(PerfTest PROPERTIES COMPILE_FLAGS "${HDF5_DEFINITIONS} ${MED3_DEFINITIONS} ${XDR_DEFINITIONS} ${CPPUNIT_DEFINITIONS}")
- TARGET_LINK_LIBRARIES(PerfTest InterpKernelTest ${CPPUNIT_LIBS})
+ SET_TARGET_PROPERTIES(PerfTest PROPERTIES COMPILE_FLAGS "${HDF5_DEFINITIONS} ${MED3_DEFINITIONS} ${XDR_DEFINITIONS} ${CPPUNIT_DEFINITIONS} ${PLATFORM_DEFINITIONS}")
+ TARGET_LINK_LIBRARIES(PerfTest InterpKernelTest ${CPPUNIT_LIBS} ${PLATFORM_LIBS})
+ INSTALL(TARGETS PerfTest DESTINATION ${MED_salomebin_BINS})
ENDIF(NOT MED_ENABLE_MICROMED)
ADD_LIBRARY(InterpKernelTest SHARED ${InterpKernelTest_SOURCES})
-SET_TARGET_PROPERTIES(InterpKernelTest PROPERTIES COMPILE_FLAGS "${HDF5_DEFINITIONS} ${MED3_DEFINITIONS} ${XDR_DEFINITIONS} ${CPPUNIT_DEFINITIONS}")
-TARGET_LINK_LIBRARIES(InterpKernelTest medmem ${CPPUNIT_LIBS})
+SET_TARGET_PROPERTIES(InterpKernelTest PROPERTIES COMPILE_FLAGS "${HDF5_DEFINITIONS} ${MED3_DEFINITIONS} ${XDR_DEFINITIONS} ${CPPUNIT_DEFINITIONS} ${PLATFORM_DEFINITIONS}")
+TARGET_LINK_LIBRARIES(InterpKernelTest medmem interpkernel ${CPPUNIT_LIBS})
ADD_EXECUTABLE(TestINTERP_KERNEL ${TestINTERP_KERNEL_SOURCES})
-SET_TARGET_PROPERTIES(TestINTERP_KERNEL PROPERTIES COMPILE_FLAGS "${HDF5_DEFINITIONS} ${MED3_DEFINITIONS} ${XDR_DEFINITIONS} ${CPPUNIT_DEFINITIONS}")
-TARGET_LINK_LIBRARIES(TestINTERP_KERNEL InterpKernelTest ${CPPUNIT_LIBS})
+SET_TARGET_PROPERTIES(TestINTERP_KERNEL PROPERTIES COMPILE_FLAGS "${HDF5_DEFINITIONS} ${MED3_DEFINITIONS} ${XDR_DEFINITIONS} ${CPPUNIT_DEFINITIONS} ${PLATFORM_DEFINITIONS}")
+TARGET_LINK_LIBRARIES(TestINTERP_KERNEL InterpKernelTest ${CPPUNIT_LIBS} ${PLATFORM_LIBS})
ADD_TEST(TestINTERP_KERNEL TestINTERP_KERNEL)
INSTALL(TARGETS TestINTERP_KERNEL DESTINATION ${MED_salomebin_BINS})
//
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
+// Author : Anthony Geay (CEA/DEN)
#include "ExprEvalInterpTest.hxx"
#include "InterpKernelExprParser.hxx"
//
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
+// Author : Anthony Geay (CEA/DEN)
#ifndef _EXPREVALINTERPTEST_HXX_
#define _EXPREVALINTERPTEST_HXX_
#ifndef _INTERPKERNELTESTEXPORT_HXX_
#define _INTERPKERNELTESTEXPORT_HXX_
-#ifdef WNT
+#ifdef WIN32
# if defined InterpKernelTest_EXPORTS
# define INTERPKERNELTEST_EXPORT __declspec( dllexport )
# else
//
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
+// Author : Anthony Geay (CEA/DEN)
#include "QuadraticPlanarInterpTest.hxx"
#include "InterpKernelGeo2DQuadraticPolygon.hxx"
//
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
+// Author : Anthony Geay (CEA/DEN)
#ifndef _QUADRATICPLANARINTERPTEST_HXX_
#define _QUADRATICPLANARINTERPTEST_HXX_
//
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
+// Author : Anthony Geay (CEA/DEN)
#include "QuadraticPlanarInterpTest.hxx"
#include "InterpKernelGeo2DQuadraticPolygon.hxx"
//
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
+// Author : Anthony Geay (CEA/DEN)
#include "QuadraticPlanarInterpTest.hxx"
#include "InterpKernelGeo2DQuadraticPolygon.hxx"
//
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
+// Author : Anthony Geay (CEA/DEN)
#include "QuadraticPlanarInterpTest.hxx"
#include "InterpKernelGeo2DQuadraticPolygon.hxx"
//
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
+// Author : Anthony Geay (CEA/DEN)
#include "QuadraticPlanarInterpTest.hxx"
#include "InterpKernelGeo2DQuadraticPolygon.hxx"
${OMNIORB_INCLUDE_DIRS}
${HDF5_INCLUDE_DIRS}
${MED3_INCLUDE_DIRS}
+ ${PTHREAD_INCLUDE_DIRS}
${XDR_INCLUDE_DIRS}
${KERNEL_ROOT_DIR}/include/salome
${CMAKE_CURRENT_BINARY_DIR}/../../idl
${CMAKE_CURRENT_SOURCE_DIR}/../INTERP_KERNEL
${CMAKE_CURRENT_SOURCE_DIR}/../INTERP_KERNEL/Bases
${CMAKE_CURRENT_SOURCE_DIR}/../INTERP_KERNEL/GaussPoints
- )
+)
SET(MEDEngine_SOURCES
Med_Gen_i.cxx
Med_Gen_Driver_i.cxx
- )
+)
+
+SET(COMMON_FLAGS "${OMNIORB_DEFINITIONS} ${HDF5_DEFINITIONS} ${MED3_DEFINITIONS} ${XDR_DEFINITIONS} ${PLATFORM_DEFINITIONS}")
+IF(WINDOWS)
+ SET(COMMON_FLAGS "${COMMON_FLAGS} -DNOGDI")
+ENDIF(WINDOWS
+)
ADD_LIBRARY(MEDEngine SHARED ${MEDEngine_SOURCES})
-SET_TARGET_PROPERTIES(MEDEngine PROPERTIES COMPILE_FLAGS "${OMNIORB_DEFINITIONS} ${HDF5_DEFINITIONS} ${MED3_DEFINITIONS} ${XDR_DEFINITIONS}")
-TARGET_LINK_LIBRARIES(MEDEngine MEDMEMImpl SalomeIDLMED ${TOOLSDS} ${SalomeHDFPersist} ${SalomeContainer} ${SalomeCommunication} ${SalomeLifeCycleCORBA})
+SET_TARGET_PROPERTIES(MEDEngine PROPERTIES COMPILE_FLAGS "${COMMON_FLAGS}")
+TARGET_LINK_LIBRARIES(MEDEngine MEDMEMImpl SalomeIDLMED ${TOOLSDS} ${SalomeHDFPersist}
+ ${SalomeContainer} ${SalomeCommunication} ${SalomeLifeCycleCORBA} ${PLATFORM_LIBS})
INSTALL(TARGETS MEDEngine DESTINATION ${MED_salomelib_LIBS})
SET(MED_MED_salomescript_DATA
class MED_i;
}
-#ifdef WNT
+#ifdef WIN32
#if defined MED_EXPORTS || defined MEDEngine_EXPORTS
#if defined WIN32
#define MED_EXPORT __declspec( dllexport )
#
# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
#
+# Author : Anthony Geay (CEA/DEN)
ADD_SUBDIRECTORY(Swig)
ADD_SUBDIRECTORY(Test)
${MED3_INCLUDE_DIRS}
${HDF5_INCLUDE_DIRS}
${OMNIORB_INCLUDE_DIRS}
+ ${PTHREAD_INCLUDE_DIRS}
${KERNEL_ROOT_DIR}/include/salome
${CMAKE_CURRENT_BINARY_DIR}/../../idl
${CMAKE_CURRENT_SOURCE_DIR}/../MEDCouplingCorba
)
ADD_LIBRARY(medcalculator SHARED ${medcalculator_SOURCES})
-SET_TARGET_PROPERTIES(medcalculator PROPERTIES COMPILE_FLAGS "${HDF5_DEFINITIONS} ${MED3_DEFINITIONS}")
-TARGET_LINK_LIBRARIES(medcalculator medloader medcouplingcorba ${KERNEL_LDFLAGS} ${SALOMELocalTrace} ${SalomeNS} ${OpUtil})
+SET_TARGET_PROPERTIES(medcalculator PROPERTIES COMPILE_FLAGS "${HDF5_DEFINITIONS} ${MED3_DEFINITIONS} ${OMNIORB_DEFINITIONS} ${PLATFORM_DEFINITIONS}")
+TARGET_LINK_LIBRARIES(medcalculator medloader medcouplingcorba ${KERNEL_LDFLAGS} ${SALOMELocalTrace} ${SalomeNS} ${OpUtil} ${OMNIORB_LIBS} ${PLATFORM_LIBS})
INSTALL(TARGETS medcalculator DESTINATION ${MED_salomelib_LIBS})
FILE(GLOB medcalculator_HEADERS_HXX "${CMAKE_CURRENT_SOURCE_DIR}/*.hxx")
//
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
+// Author : Anthony Geay (CEA/DEN)
#include "MEDCalculatorBrowserStep.hxx"
#include "MEDCalculatorBrowserField.hxx"
//
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
+// Author : Anthony Geay (CEA/DEN)
#ifndef __MEDCALCULATORBROWSERFIELD_HXX__
#define __MEDCALCULATORBROWSERFIELD_HXX__
//
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
+// Author : Anthony Geay (CEA/DEN)
#include "MEDCalculatorBrowserLiteStruct.hxx"
#include "MEDCalculatorBrowserStep.hxx"
//
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
+// Author : Anthony Geay (CEA/DEN)
#ifndef __MEDCALCULATORBROWSERLITESTRUCT_HXX__
#define __MEDCALCULATORBROWSERLITESTRUCT_HXX__
//
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
+// Author : Anthony Geay (CEA/DEN)
#include "MEDCalculatorBrowserMesh.hxx"
#include <sstream>
//
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
+// Author : Anthony Geay (CEA/DEN)
#ifndef __MEDCALCULATORBROWSERMESH_HXX__
#define __MEDCALCULATORBROWSERMESH_HXX__
//
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
+// Author : Anthony Geay (CEA/DEN)
#include "MEDCalculatorBrowserStep.hxx"
//
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
+// Author : Anthony Geay (CEA/DEN)
#ifndef __MEDCALCULATORBROWSERSTEP_HXX__
#define __MEDCALCULATORBROWSERSTEP_HXX__
//
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
+// Author : Anthony Geay (CEA/DEN)
#include "MEDCalculatorDBField.hxx"
#include "MEDCalculatorBrowserField.hxx"
//
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
+// Author : Anthony Geay (CEA/DEN)
#ifndef __MEDCALCULATORDBFIELD_HXX__
#define __MEDCALCULATORDBFIELD_HXX__
//
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
+// Author : Anthony Geay (CEA/DEN)
#include "MEDCalculatorDBRangeSelection.hxx"
//
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
+// Author : Anthony Geay (CEA/DEN)
#ifndef __MEDCALCULATORDBRANGESELECTION_HXX__
#define __MEDCALCULATORDBRANGESELECTION_HXX__
//
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
+// Author : Anthony Geay (CEA/DEN)
#include "MEDCalculatorDBSliceField.hxx"
#include "MEDCalculatorDBRangeSelection.hxx"
//
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
+// Author : Anthony Geay (CEA/DEN)
#ifndef __MEDCALCULATORDBSLICEFIELD_HXX__
#define __MEDCALCULATORDBSLICEFIELD_HXX__
#
# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
#
+# Author : Anthony Geay (CEA/DEN)
include $(top_srcdir)/adm_local/unix/make_common_starter.am
//
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
+// Author : Anthony Geay (CEA/DEN)
#ifndef __MEDCALCULATORDEFINES_HXX__
#define __MEDCALCULATORDEFINES_HXX__
#
# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
#
+# Author : Anthony Geay (CEA/DEN)
-INCLUDE(${KERNEL_ROOT_DIR}/salome_adm/cmake_files/InstallAndCompilePythonFile.cmake)
+INCLUDE(${SALOME_MACROS_DIR}/InstallAndCompilePythonFile.cmake)
FIND_PACKAGE(SWIG REQUIRED)
INCLUDE(${SWIG_USE_FILE})
SET_SOURCE_FILES_PROPERTIES(MEDCalculator.i PROPERTIES CPLUSPLUS ON)
SET_SOURCE_FILES_PROPERTIES(MEDCalculator.i PROPERTIES SWIG_DEFINITIONS "-shadow")
-
SWIG_ADD_MODULE(MEDCalculator python MEDCalculator.i)
-SWIG_LINK_LIBRARIES(MEDCalculator ${PYTHON_LIBRARIES} medcalculator)
+SWIG_LINK_LIBRARIES(MEDCalculator ${PYTHON_LIBS} medcalculator)
+SET_TARGET_PROPERTIES(_MEDCalculator PROPERTIES COMPILE_FLAGS "${PLATFORM_DEFINITIONS}")
+
+IF(${MACHINE} STREQUAL WINDOWS)
+ SET_TARGET_PROPERTIES(_MEDCalculator PROPERTIES DEBUG_OUTPUT_NAME _MEDCalculator_d)
+ENDIF(${MACHINE} STREQUAL WINDOWS)
FILE(GLOB medcalculatorspython_HEADERS_HXX "${CMAKE_CURRENT_SOURCE_DIR}/*.hxx")
INSTALL(FILES ${medcalculatorspython_HEADERS_HXX} DESTINATION ${MED_salomeinclude_HEADERS})
//
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
+// Author : Anthony Geay (CEA/DEN)
%module MEDCalculator
#
# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
#
+# Author : Anthony Geay (CEA/DEN)
from MEDCalculator import *
import unittest
//
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
+// Author : Anthony Geay (CEA/DEN)
#include <limits>
#
# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
#
+# Author : Anthony Geay (CEA/DEN)
# MED MEDMEM_SWIG : binding of C++ implementation and Python
#
//
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
+// Author : Anthony Geay (CEA/DEN)
#ifndef __MEDCALCULATORSPYTHONDEFINES_HXX__
#define __MEDCALCULATORSPYTHONDEFINES_HXX__
//
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
+// Author : Anthony Geay (CEA/DEN)
#include "SPythonInterpreter.hxx"
#include "SPythonParser.hxx"
//
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
+// Author : Anthony Geay (CEA/DEN)
#ifndef __SPYTHONINTERPRETER_HXX__
#define __SPYTHONINTERPRETER_HXX__
//
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
+// Author : Anthony Geay (CEA/DEN)
#include "SPythonParser.hxx"
//
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
+// Author : Anthony Geay (CEA/DEN)
#ifndef __SPYTHONPARSER_HXX__
#define __SPYTHONPARSER_HXX__
//
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
+// Author : Anthony Geay (CEA/DEN)
#include "SPythonInterpreter.hxx"
#
# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
#
+# Author : Anthony Geay (CEA/DEN)
def f(i):
#
# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
#
+# Author : Anthony Geay (CEA/DEN)
e=MEDCalculatorBrowserLiteStruct("hfile1.med")
f=e.getField(0)
#
# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
#
+# Author : Anthony Geay (CEA/DEN)
INCLUDE_DIRECTORIES(
${PYTHON_INCLUDE_DIRS}
)
ADD_EXECUTABLE(TestMEDCalculator ${TestMEDCalculator_SOURCES})
-SET_TARGET_PROPERTIES(TestMEDCalculator PROPERTIES COMPILE_FLAGS "${HDF5_DEFINITIONS} ${MED3_DEFINITIONS} ${CPPUNIT_DEFINITIONS}")
-TARGET_LINK_LIBRARIES(TestMEDCalculator medcalculatorspython medcalculator ${CPPUNIT_LIBS})
+SET_TARGET_PROPERTIES(TestMEDCalculator PROPERTIES COMPILE_FLAGS "${HDF5_DEFINITIONS} ${MED3_DEFINITIONS} ${CPPUNIT_DEFINITIONS} ${PLATFORM_DEFINITIONS}")
+TARGET_LINK_LIBRARIES(TestMEDCalculator medcalculatorspython medcalculator ${CPPUNIT_LIBS} ${PLATFORM_LIBS})
ADD_TEST(TestMEDCalculator TestMEDCalculator)
INSTALL(TARGETS TestMEDCalculator DESTINATION ${MED_salomebin_BINS})
//
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
+// Author : Anthony Geay (CEA/DEN)
#include "MEDCalculatorBasicsTest.hxx"
#include "MEDCalculatorBrowserLiteStruct.hxx"
//
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
+// Author : Anthony Geay (CEA/DEN)
#ifndef __MEDCALCULATORBASICSTEST_HXX__
#define __MEDCALCULATORBASICSTEST_HXX__
#
# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
#
+# Author : Anthony Geay (CEA/DEN)
include $(top_srcdir)/adm_local/unix/make_common_starter.am
//
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
+// Author : Anthony Geay (CEA/DEN)
#include "CppUnitTest.hxx"
#include "MEDCalculatorBasicsTest.hxx"
#
# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
#
+# Author : Anthony Geay (CEA/DEN)
ADD_SUBDIRECTORY(Test)
)
ADD_LIBRARY(medcoupling SHARED ${medcoupling_SOURCES})
+SET_TARGET_PROPERTIES(medcoupling PROPERTIES COMPILE_FLAGS "${PLATFORM_DEFINITIONS}")
TARGET_LINK_LIBRARIES(medcoupling interpkernel)
INSTALL(TARGETS medcoupling DESTINATION ${MED_salomelib_LIBS})
ADD_LIBRARY(medcouplingremapper SHARED ${medcouplingremapper_SOURCES})
TARGET_LINK_LIBRARIES(medcouplingremapper medcoupling)
+SET_TARGET_PROPERTIES(medcouplingremapper PROPERTIES COMPILE_FLAGS "${PLATFORM_DEFINITIONS}")
INSTALL(TARGETS medcouplingremapper DESTINATION ${MED_salomelib_LIBS})
FILE(GLOB medcoupling_HEADERS_HXX "${CMAKE_CURRENT_SOURCE_DIR}/*.hxx")
//
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
+// Author : Anthony Geay (CEA/DEN)
#ifndef _MEDCOUPLING_HXX_
#define _MEDCOUPLING_HXX_
-#ifdef WNT
+#ifdef WIN32
# if defined medcoupling_EXPORTS
# define MEDCOUPLING_EXPORT __declspec( dllexport )
# else
# define MEDCOUPLING_EXPORT
#endif
-#ifdef WNT
+#ifdef WIN32
# if defined medcouplingremapper_EXPORTS
# define MEDCOUPLINGREMAPPER_EXPORT __declspec( dllexport )
# else
# define MEDCOUPLINGREMAPPER_EXPORT
#endif
-#ifdef WNT
+#ifdef WIN32
#pragma warning( disable : 4290 )
#endif
//
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
+// Author : Anthony Geay (CEA/DEN)
#ifndef __PARAMEDMEM_MEDCOUPLINGAUTOREFCOUNTOBJECTPTR_HXX__
#define __PARAMEDMEM_MEDCOUPLINGAUTOREFCOUNTOBJECTPTR_HXX__
//
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
+// Author : Anthony Geay (CEA/DEN)
#include "MEDCouplingCMesh.hxx"
#include "MEDCouplingUMesh.hxx"
//
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
+// Author : Anthony Geay (CEA/DEN)
#ifndef __PARAMEDMEM_MEDCOUPLINGCMESH_HXX__
#define __PARAMEDMEM_MEDCOUPLINGCMESH_HXX__
//
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
+// Author : Anthony Geay (CEA/DEN)
#include "MEDCouplingDefinitionTime.hxx"
#include "MEDCouplingFieldDouble.hxx"
//
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
+// Author : Anthony Geay (CEA/DEN)
#ifndef __PARAMEDMEM_MEDCOUPLINGDEFINITIONTIME_HXX__
#define __PARAMEDMEM_MEDCOUPLINGDEFINITIONTIME_HXX__
//
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
+// Author : Anthony Geay (CEA/DEN)
#include "MEDCouplingExtrudedMesh.hxx"
#include "MEDCouplingUMesh.hxx"
//
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
+// Author : Anthony Geay (CEA/DEN)
#ifndef __PARAMEDMEM_MEDCOUPLINGEXTRUDEDMESH_HXX__
#define __PARAMEDMEM_MEDCOUPLINGEXTRUDEDMESH_HXX__
//
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
+// Author : Anthony Geay (CEA/DEN)
#include "MEDCouplingField.hxx"
#include "MEDCouplingMesh.hxx"
//
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
+// Author : Anthony Geay (CEA/DEN)
#ifndef __PARAMEDMEM_MEDCOUPLINGFIELD_HXX__
#define __PARAMEDMEM_MEDCOUPLINGFIELD_HXX__
//
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
+// Author : Anthony Geay (CEA/DEN)
#include "MEDCouplingFieldDiscretization.hxx"
#include "MEDCouplingCMesh.hxx"
//
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
+// Author : Anthony Geay (CEA/DEN)
#ifndef __PARAMEDMEM_MEDCOUPLINGFIELDDISCRETIZATION_HXX__
#define __PARAMEDMEM_MEDCOUPLINGFIELDDISCRETIZATION_HXX__
//
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
+// Author : Anthony Geay (CEA/DEN)
#include "MEDCouplingFieldDouble.hxx"
#include "MEDCouplingFieldTemplate.hxx"
//
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
+// Author : Anthony Geay (CEA/DEN)
#ifndef __PARAMEDMEM_MEDCOUPLINGFIELDDOUBLE_HXX__
#define __PARAMEDMEM_MEDCOUPLINGFIELDDOUBLE_HXX__
//
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
+// Author : Anthony Geay (CEA/DEN)
#include "MEDCouplingFieldOverTime.hxx"
#include "MEDCouplingMesh.hxx"
//
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
+// Author : Anthony Geay (CEA/DEN)
#ifndef __PARAMEDMEM_MEDCOUPLINGFIELDOVERTIME_HXX__
#define __PARAMEDMEM_MEDCOUPLINGFIELDOVERTIME_HXX__
//
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
+// Author : Anthony Geay (CEA/DEN)
#include "MEDCouplingFieldTemplate.hxx"
#include "MEDCouplingMesh.hxx"
//
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
+// Author : Anthony Geay (CEA/DEN)
#ifndef __PARAMEDMEM_MEDCOUPLINGFIELDTEMPLATE_HXX__
#define __PARAMEDMEM_MEDCOUPLINGFIELDTEMPLATE_HXX__
//
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
+// Author : Anthony Geay (CEA/DEN)
#include "MEDCouplingGaussLocalization.hxx"
#include "CellModel.hxx"
//
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
+// Author : Anthony Geay (CEA/DEN)
#ifndef __PARAMEDMEM_MEDCOUPLINGGAUSSLOCALIZATION_HXX__
#define __PARAMEDMEM_MEDCOUPLINGGAUSSLOCALIZATION_HXX__
//
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
+// Author : Anthony Geay (CEA/DEN)
#include "MEDCouplingMemArray.txx"
#include "MEDCouplingAutoRefCountObjectPtr.hxx"
void DataArrayDouble::writeVTK(std::ostream& ofs, int indent, const char *nameInFile) const throw(INTERP_KERNEL::Exception)
{
std::string idt(indent,' ');
- ofs.precision(15);
+ ofs.precision(17);
ofs << idt << "<DataArray type=\"Float32\" Name=\"" << nameInFile << "\" NumberOfComponents=\"" << getNumberOfComponents() << "\"";
ofs << " format=\"ascii\" RangeMin=\"" << getMinValueInArray() << "\" RangeMax=\"" << getMaxValueInArray() << "\">\n" << idt;
std::copy(begin(),end(),std::ostream_iterator<double>(ofs," "));
void DataArrayDouble::reprWithoutNameStream(std::ostream& stream) const
{
DataArray::reprWithoutNameStream(stream);
- stream.precision(15);
+ stream.precision(17);
_mem.repr(getNumberOfComponents(),stream);
}
void DataArrayDouble::reprZipWithoutNameStream(std::ostream& stream) const
{
DataArray::reprWithoutNameStream(stream);
- stream.precision(15);
+ stream.precision(17);
_mem.reprZip(getNumberOfComponents(),stream);
}
}
}
-void DataArrayDouble::useArray(const double *array, bool ownership, DeallocType type, int nbOfTuple, int nbOfCompo)
+void DataArrayDouble::useArray(const double *array, bool ownership, DeallocType type, int nbOfTuple, int nbOfCompo)
{
_nb_of_tuples=nbOfTuple;
_info_on_compo.resize(nbOfCompo);
declareAsNew();
}
+void DataArrayDouble::useExternalArrayWithRWAccess(const double *array, int nbOfTuple, int nbOfCompo)
+{
+ _nb_of_tuples=nbOfTuple;
+ _info_on_compo.resize(nbOfCompo);
+ _mem.useExternalArrayWithRWAccess(array,nbOfTuple*nbOfCompo);
+ declareAsNew();
+}
+
void DataArrayDouble::checkNoNullValues() const throw(INTERP_KERNEL::Exception)
{
const double *tmp=getConstPointer();
std::string DataArrayDoubleTuple::repr() const
{
- std::ostringstream oss; oss.precision(15); oss << "(";
+ std::ostringstream oss; oss.precision(17); oss << "(";
for(int i=0;i<_nb_of_compo-1;i++)
oss << _pt[i] << ", ";
oss << _pt[_nb_of_compo-1] << ")";
if((_nb_of_compo==nbOfCompo && nbOfTuples==1) || (_nb_of_compo==nbOfTuples && nbOfCompo==1))
{
DataArrayDouble *ret=DataArrayDouble::New();
- ret->useArray(_pt,false,CPP_DEALLOC,nbOfTuples,nbOfCompo);
+ ret->useExternalArrayWithRWAccess(_pt,nbOfTuples,nbOfCompo);
return ret;
}
else
declareAsNew();
}
+void DataArrayInt::useExternalArrayWithRWAccess(const int *array, int nbOfTuple, int nbOfCompo)
+{
+ _nb_of_tuples=nbOfTuple;
+ _info_on_compo.resize(nbOfCompo);
+ _mem.useExternalArrayWithRWAccess(array,nbOfTuple*nbOfCompo);
+ declareAsNew();
+}
+
DataArrayInt *DataArrayInt::fromNoInterlace() const throw(INTERP_KERNEL::Exception)
{
if(_mem.isNull())
if((_nb_of_compo==nbOfCompo && nbOfTuples==1) || (_nb_of_compo==nbOfTuples && nbOfCompo==1))
{
DataArrayInt *ret=DataArrayInt::New();
- ret->useArray(_pt,false,CPP_DEALLOC,nbOfTuples,nbOfCompo);
+ ret->useExternalArrayWithRWAccess(_pt,nbOfTuples,nbOfCompo);
return ret;
}
else
//
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
+// Author : Anthony Geay (CEA/DEN)
#ifndef __PARAMEDMEM_MEDCOUPLINGMEMARRAY_HXX__
#define __PARAMEDMEM_MEDCOUPLINGMEMARRAY_HXX__
void alloc(int nbOfElements) throw(INTERP_KERNEL::Exception);
void reAlloc(int newNbOfElements) throw(INTERP_KERNEL::Exception);
void useArray(const T *array, bool ownership, DeallocType type, int nbOfElem);
+ void useExternalArrayWithRWAccess(const T *array, int nbOfElem);
void writeOnPlace(int id, T element0, const T *others, int sizeOfOthers);
~MemArray() { destroy(); }
private:
MEDCOUPLING_EXPORT const double *begin() const { return getConstPointer(); }
MEDCOUPLING_EXPORT const double *end() const { return getConstPointer()+getNbOfElems(); }
MEDCOUPLING_EXPORT void useArray(const double *array, bool ownership, DeallocType type, int nbOfTuple, int nbOfCompo);
+ MEDCOUPLING_EXPORT void useExternalArrayWithRWAccess(const double *array, int nbOfTuple, int nbOfCompo);
MEDCOUPLING_EXPORT void writeOnPlace(int id, double element0, const double *others, int sizeOfOthers) { _mem.writeOnPlace(id,element0,others,sizeOfOthers); }
MEDCOUPLING_EXPORT void checkNoNullValues() const throw(INTERP_KERNEL::Exception);
MEDCOUPLING_EXPORT void getMinMaxPerComponent(double *bounds) const throw(INTERP_KERNEL::Exception);
MEDCOUPLING_EXPORT DataArrayInt *duplicateEachTupleNTimes(int nbTimes) const throw(INTERP_KERNEL::Exception);
MEDCOUPLING_EXPORT std::set<int> getDifferentValues() const throw(INTERP_KERNEL::Exception);
MEDCOUPLING_EXPORT void useArray(const int *array, bool ownership, DeallocType type, int nbOfTuple, int nbOfCompo);
+ MEDCOUPLING_EXPORT void useExternalArrayWithRWAccess(const int *array, int nbOfTuple, int nbOfCompo);
MEDCOUPLING_EXPORT void writeOnPlace(int id, int element0, const int *others, int sizeOfOthers) { _mem.writeOnPlace(id,element0,others,sizeOfOthers); }
MEDCOUPLING_EXPORT static DataArrayInt *Add(const DataArrayInt *a1, const DataArrayInt *a2) throw(INTERP_KERNEL::Exception);
MEDCOUPLING_EXPORT void addEqual(const DataArrayInt *other) throw(INTERP_KERNEL::Exception);
//
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
+// Author : Anthony Geay (CEA/DEN)
#ifndef __PARAMEDMEM_MEDCOUPLINGMEMARRAY_TXX__
#define __PARAMEDMEM_MEDCOUPLINGMEMARRAY_TXX__
_dealloc=type;
}
+ template<class T>
+ void MemArray<T>::useExternalArrayWithRWAccess(const T *array, int nbOfElem)
+ {
+ _nb_of_elem=nbOfElem;
+ destroy();
+ _pointer.setInternal(const_cast<T *>(array));
+ _ownership=false;
+ _dealloc=CPP_DEALLOC;
+ }
+
template<class T>
void MemArray<T>::writeOnPlace(int id, T element0, const T *others, int sizeOfOthers)
{
//
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
+// Author : Anthony Geay (CEA/DEN)
#include "MEDCouplingMesh.hxx"
#include "MEDCouplingUMesh.hxx"
//
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
+// Author : Anthony Geay (CEA/DEN)
#ifndef __PARAMEDMEM_MEDCOUPLINGMESH_HXX__
#define __PARAMEDMEM_MEDCOUPLINGMESH_HXX__
//
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
+// Author : Anthony Geay (CEA/DEN)
#include "MEDCouplingMultiFields.hxx"
#include "MEDCouplingFieldTemplate.hxx"
//
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
+// Author : Anthony Geay (CEA/DEN)
#ifndef __PARAMEDMEM_MEDCOUPLINGMULTIFIELDS_HXX__
#define __PARAMEDMEM_MEDCOUPLINGMULTIFIELDS_HXX__
//
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
+// Author : Anthony Geay (CEA/DEN)
#include "MEDCouplingNatureOfField.hxx"
//
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
+// Author : Anthony Geay (CEA/DEN)
#ifndef __PARAMEDMEM_MEDCOUPLINGNATUREOFFIELD_HXX__
#define __PARAMEDMEM_MEDCOUPLINGNATUREOFFIELD_HXX__
//
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
+// Author : Anthony Geay (CEA/DEN)
#ifndef __PARAMEDMEM_MEDCOUPLINGNORMALIZEDCARTESIANMESH_HXX__
#define __PARAMEDMEM_MEDCOUPLINGNORMALIZEDCARTESIANMESH_HXX__
//
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
+// Author : Anthony Geay (CEA/DEN)
#ifndef __PARAMEDMEM_MEDCOUPLINGNORMALIZEDUNSTRUCTUREDMESH_HXX__
#define __PARAMEDMEM_MEDCOUPLINGNORMALIZEDUNSTRUCTUREDMESH_HXX__
//
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
+// Author : Anthony Geay (CEA/DEN)
#ifndef __MEDCOUPLINGNORMALIZEDUNSTRUCTUREDMESH_TXX__
#define __MEDCOUPLINGNORMALIZEDUNSTRUCTUREDMESH_TXX__
//
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
+// Author : Anthony Geay (CEA/DEN)
#include "MEDCouplingPointSet.hxx"
#include "MEDCouplingAutoRefCountObjectPtr.hxx"
//
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
+// Author : Anthony Geay (CEA/DEN)
#ifndef __PARAMEDMEM_MEDCOUPLINGPOINTSET_HXX__
#define __PARAMEDMEM_MEDCOUPLINGPOINTSET_HXX__
//
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
+// Author : Anthony Geay (CEA/DEN)
#include "MEDCouplingRefCountObject.hxx"
//
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
+// Author : Anthony Geay (CEA/DEN)
#ifndef __PARAMEDMEM_MEDCOUPLINGREFCOUNTOBJECT_HXX__
#define __PARAMEDMEM_MEDCOUPLINGREFCOUNTOBJECT_HXX__
//
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
+// Author : Anthony Geay (CEA/DEN)
#include "MEDCouplingRemapper.hxx"
#include "MEDCouplingMemArray.hxx"
{
return _matrix;
}
+
+/*!
+ * This method is supposed to be called , if needed, right after MEDCouplingRemapper::prepare or MEDCouplingRemapper::prepareEx.
+ * If not the behaviour is unpredictable.
+ * This method works on precomputed \a this->_matrix. All coefficients in the matrix is lower than \a maxValAbs this coefficient is
+ * set to 0. That is to say that its entry disappear from the map storing the corresponding row in the data storage of sparse crude matrix.
+ * This method is useful to correct at a high level some problems linked to precision. Indeed, with some \ref NatureOfField "natures of field" some threshold effect
+ * can occur.
+ *
+ * \param [in] maxValAbs is a limit behind which a coefficient is set to 0. \a maxValAbs is expected to be positive, if not this method do nothing.
+ * \return a positive value that tells the number of coefficients put to 0. The 0 returned value means that the matrix has remained unchanged.
+ * \sa MEDCouplingRemapper::nullifiedTinyCoeffInCrudeMatrix
+ */
+int MEDCouplingRemapper::nullifiedTinyCoeffInCrudeMatrixAbs(double maxValAbs) throw(INTERP_KERNEL::Exception)
+{
+ int ret=0;
+ std::vector<std::map<int,double> > matrixNew(_matrix.size());
+ int i=0;
+ for(std::vector<std::map<int,double> >::const_iterator it1=_matrix.begin();it1!=_matrix.end();it1++,i++)
+ {
+ std::map<int,double>& rowNew=matrixNew[i];
+ for(std::map<int,double>::const_iterator it2=(*it1).begin();it2!=(*it1).end();it2++)
+ {
+ if(fabs((*it2).second)>maxValAbs)
+ rowNew[(*it2).first]=(*it2).second;
+ else
+ ret++;
+ }
+ }
+ if(ret>0)
+ _matrix=matrixNew;
+ return ret;
+}
+
+/*!
+ * This method is supposed to be called , if needed, right after MEDCouplingRemapper::prepare or MEDCouplingRemapper::prepareEx.
+ * If not the behaviour is unpredictable.
+ * This method works on precomputed \a this->_matrix. All coefficients in the matrix is lower than delta multiplied by \a scaleFactor this coefficient is
+ * set to 0. That is to say that its entry disappear from the map storing the corresponding row in the data storage of sparse crude matrix.
+ * delta is the value returned by MEDCouplingRemapper::getMaxValueInCrudeMatrix method.
+ * This method is useful to correct at a high level some problems linked to precision. Indeed, with some \ref NatureOfField "natures of field" some threshold effect
+ * can occur.
+ *
+ * \param [in] scaleFactor is the scale factor from which coefficients lower than \a scaleFactor times range width of coefficients are set to zero.
+ * \return a positive value that tells the number of coefficients put to 0. The 0 returned value means that the matrix has remained unchanged. If -1 is returned it means
+ * that all coefficients are null.
+ * \sa MEDCouplingRemapper::nullifiedTinyCoeffInCrudeMatrixAbs
+ */
+int MEDCouplingRemapper::nullifiedTinyCoeffInCrudeMatrix(double scaleFactor) throw(INTERP_KERNEL::Exception)
+{
+ double maxVal=getMaxValueInCrudeMatrix();
+ if(maxVal==0.)
+ return -1;
+ return nullifiedTinyCoeffInCrudeMatrixAbs(scaleFactor*maxVal);
+}
+
+/*!
+ * This method is supposed to be called , if needed, right after MEDCouplingRemapper::prepare or MEDCouplingRemapper::prepareEx.
+ * If not the behaviour is unpredictable.
+ * This method returns the maximum of the absolute values of coefficients into the sparse crude matrix.
+ * The returned value is positive.
+ */
+double MEDCouplingRemapper::getMaxValueInCrudeMatrix() const throw(INTERP_KERNEL::Exception)
+{
+ double ret=0.;
+ for(std::vector<std::map<int,double> >::const_iterator it1=_matrix.begin();it1!=_matrix.end();it1++)
+ for(std::map<int,double>::const_iterator it2=(*it1).begin();it2!=(*it1).end();it2++)
+ if(fabs((*it2).second)>ret)
+ ret=fabs((*it2).second);
+ return ret;
+}
//
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
+// Author : Anthony Geay (CEA/DEN)
#ifndef __PARAMEDMEM_MEDCOUPLINGREMAPPER_HXX__
#define __PARAMEDMEM_MEDCOUPLINGREMAPPER_HXX__
MEDCOUPLINGREMAPPER_EXPORT bool setOptionInt(const std::string& key, int value);
MEDCOUPLINGREMAPPER_EXPORT bool setOptionDouble(const std::string& key, double value);
MEDCOUPLINGREMAPPER_EXPORT bool setOptionString(const std::string& key, const std::string& value);
+ //
+ MEDCOUPLINGREMAPPER_EXPORT int nullifiedTinyCoeffInCrudeMatrixAbs(double maxValAbs) throw(INTERP_KERNEL::Exception);
+ MEDCOUPLINGREMAPPER_EXPORT int nullifiedTinyCoeffInCrudeMatrix(double scaleFactor) throw(INTERP_KERNEL::Exception);
+ MEDCOUPLINGREMAPPER_EXPORT double getMaxValueInCrudeMatrix() const throw(INTERP_KERNEL::Exception);
public:
MEDCOUPLINGREMAPPER_EXPORT const std::vector<std::map<int,double> >& getCrudeMatrix() const;
MEDCOUPLINGREMAPPER_EXPORT static void PrintMatrix(const std::vector<std::map<int,double> >& m);
//
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
+// Author : Anthony Geay (CEA/DEN)
#include "MEDCouplingTimeDiscretization.hxx"
#include "MEDCouplingMemArray.hxx"
//
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
+// Author : Anthony Geay (CEA/DEN)
#ifndef __PARAMEDMEM_MEDCOUPLINGTIMEDISCRETIZATION_HXX__
#define __PARAMEDMEM_MEDCOUPLINGTIMEDISCRETIZATION_HXX__
//
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
+// Author : Anthony Geay (CEA/DEN)
#include "MEDCouplingTimeLabel.hxx"
//
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
+// Author : Anthony Geay (CEA/DEN)
#ifndef __PARAMEDMEM_TIMELABEL_HXX__
#define __PARAMEDMEM_TIMELABEL_HXX__
//
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
+// Author : Anthony Geay (CEA/DEN)
#include "MEDCouplingUMesh.hxx"
#include "MEDCouplingMemArray.txx"
//
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
+// Author : Anthony Geay (CEA/DEN)
#ifndef __PARAMEDMEM_MEDCOUPLINGUMESH_HXX__
#define __PARAMEDMEM_MEDCOUPLINGUMESH_HXX__
//
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
+// Author : Anthony Geay (CEA/DEN)
#include "MEDCouplingUMeshDesc.hxx"
#include "CellModel.hxx"
//
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
+// Author : Anthony Geay (CEA/DEN)
#ifndef __PARAMEDMEM_MEDCOUPLINGUMESHDESC_HXX__
#define __PARAMEDMEM_MEDCOUPLINGUMESHDESC_HXX__
#
# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
#
+# Author : Anthony Geay (CEA/DEN)
include $(top_srcdir)/adm_local/unix/make_common_starter.am
#
# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
#
+# Author : Anthony Geay (CEA/DEN)
INCLUDE_DIRECTORIES(
- $(CPPUNIT_INCLUDE_DIRS)
+ ${CPPUNIT_INCLUDE_DIRS}
+ ${PTHREADS_INCLUDE_DIRS}
${CMAKE_CURRENT_SOURCE_DIR}/..
${CMAKE_CURRENT_SOURCE_DIR}/../../INTERP_KERNEL
${CMAKE_CURRENT_SOURCE_DIR}/../../INTERP_KERNEL/Bases
)
ADD_EXECUTABLE(TestMEDCoupling ${TestMEDCoupling_SOURCES})
-SET_TARGET_PROPERTIES(TestMEDCoupling PROPERTIES COMPILE_FLAGS "${CPPUNIT_DEFINITIONS}")
-TARGET_LINK_LIBRARIES(TestMEDCoupling medcoupling ${CPPUNIT_LIBS})
+SET_TARGET_PROPERTIES(TestMEDCoupling PROPERTIES COMPILE_FLAGS "${CPPUNIT_DEFINITIONS} ${PLATFORM_DEFINITIONS}")
+TARGET_LINK_LIBRARIES(TestMEDCoupling medcoupling ${CPPUNIT_LIBS} ${PLATFORM_LIBS})
ADD_TEST(TestMEDCoupling TestMEDCoupling)
ADD_EXECUTABLE(TestMEDCouplingRemapper ${TestMEDCouplingRemapper_SOURCES})
-SET_TARGET_PROPERTIES(TestMEDCouplingRemapper PROPERTIES COMPILE_FLAGS "${CPPUNIT_DEFINITIONS}")
-TARGET_LINK_LIBRARIES(TestMEDCouplingRemapper medcouplingremapper ${CPPUNIT_LIBS})
+SET_TARGET_PROPERTIES(TestMEDCouplingRemapper PROPERTIES COMPILE_FLAGS "${CPPUNIT_DEFINITIONS} ${PLATFORM_DEFINITIONS}")
+TARGET_LINK_LIBRARIES(TestMEDCouplingRemapper medcouplingremapper ${CPPUNIT_LIBS} ${PLATFORM_LIBS})
ADD_TEST(TestMEDCouplingRemapper TestMEDCouplingRemapper)
ADD_EXECUTABLE(TestMEDCouplingExamples ${TestMEDCouplingExamples_SOURCES})
-SET_TARGET_PROPERTIES(TestMEDCouplingExamples PROPERTIES COMPILE_FLAGS "${CPPUNIT_DEFINITIONS}")
-TARGET_LINK_LIBRARIES(TestMEDCouplingExamples medcoupling ${CPPUNIT_LIBS})
+SET_TARGET_PROPERTIES(TestMEDCouplingExamples PROPERTIES COMPILE_FLAGS "${CPPUNIT_DEFINITIONS} ${PLATFORM_DEFINITIONS}")
+TARGET_LINK_LIBRARIES(TestMEDCouplingExamples medcoupling ${CPPUNIT_LIBS} ${PLATFORM_LIBS})
ADD_TEST(TestMEDCouplingExamples TestMEDCouplingExamples)
INSTALL(TARGETS TestMEDCoupling TestMEDCouplingRemapper DESTINATION ${MED_salomebin_BINS})
//
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
+// Author : Anthony Geay (CEA/DEN)
#ifndef __MEDCOUPLINGBASICSTEST_HXX__
#define __MEDCOUPLINGBASICSTEST_HXX__
//
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
+// Author : Anthony Geay (CEA/DEN)
#include "MEDCouplingBasicsTest.hxx"
#include "MEDCouplingUMesh.hxx"
//
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
+// Author : Anthony Geay (CEA/DEN)
#include "MEDCouplingBasicsTest1.hxx"
#include "MEDCouplingUMesh.hxx"
//
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
+// Author : Anthony Geay (CEA/DEN)
#ifndef __MEDCOUPLINGBASICSTEST1_HXX__
#define __MEDCOUPLINGBASICSTEST1_HXX__
//
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
+// Author : Anthony Geay (CEA/DEN)
#include "MEDCouplingBasicsTest2.hxx"
#include "MEDCouplingUMesh.hxx"
//
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
+// Author : Anthony Geay (CEA/DEN)
#ifndef __MEDCOUPLINGBASICSTEST2_HXX__
#define __MEDCOUPLINGBASICSTEST2_HXX__
//
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
+// Author : Anthony Geay (CEA/DEN)
#include "MEDCouplingBasicsTest3.hxx"
#include "MEDCouplingUMesh.hxx"
//
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
+// Author : Anthony Geay (CEA/DEN)
#ifndef __MEDCOUPLINGBASICSTEST3_HXX__
#define __MEDCOUPLINGBASICSTEST3_HXX__
//
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
+// Author : Anthony Geay (CEA/DEN)
#include "MEDCouplingBasicsTest4.hxx"
#include "MEDCouplingUMesh.hxx"
//
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
+// Author : Anthony Geay (CEA/DEN)
#ifndef __MEDCOUPLINGBASICSTEST4_HXX__
#define __MEDCOUPLINGBASICSTEST4_HXX__
//
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
+// Author : Anthony Geay (CEA/DEN)
#include "MEDCouplingBasicsTest5.hxx"
#include "MEDCouplingUMesh.hxx"
//
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
+// Author : Anthony Geay (CEA/DEN)
#ifndef __MEDCOUPLINGBASICSTEST5_HXX__
#define __MEDCOUPLINGBASICSTEST5_HXX__
//
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
+// Author : Anthony Geay (CEA/DEN)
int connITT[201]={0, 50, 100, 150, 200, 250, 300, 350, 400, 450, 500, 550, 600, 650, 700, 750, 800, 850, 900, 950, 1000, 1029, 1058, 1087, 1116, 1145, 1174, 1203,
1232, 1261, 1290, 1319, 1348, 1377, 1406, 1435, 1464, 1493, 1522, 1551, 1580, 1609, 1638, 1667, 1696, 1725, 1754, 1783, 1812, 1841, 1870, 1899,
//
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
+// Author : Anthony Geay (CEA/DEN)
#include "MEDCouplingBasicsTestInterp.hxx"
#include "MEDCouplingUMesh.hxx"
{
sum += s_v->second;
double vvv;
-#ifdef WNT
+#ifdef WIN32
double vv = s_v->second / precis;
if(vv>=0.0)
{
//
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
+// Author : Anthony Geay (CEA/DEN)
#ifndef __MEDCOUPLINGBASICSTESTINTERP_HXX__
#define __MEDCOUPLINGBASICSTESTINTERP_HXX__
//
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
+// Author : Anthony Geay (CEA/DEN)
#include "MEDCouplingBasicsTest.hxx"
#include "MEDCouplingUMesh.hxx"
//
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
+// Author : Anthony Geay (CEA/DEN)
#include "MEDCouplingRemapperTest.hxx"
#include "MEDCouplingUMesh.hxx"
//
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
+// Author : Anthony Geay (CEA/DEN)
#ifndef __MEDCOUPLINGREMAPPERTEST_HXX__
#define __MEDCOUPLINGREMAPPERTEST_HXX__
#
# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
#
+# Author : Anthony Geay (CEA/DEN)
include $(top_srcdir)/adm_local/unix/make_common_starter.am
//
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
+// Author : Anthony Geay (CEA/DEN)
#include "MEDCouplingBasicsTest1.hxx"
#include "MEDCouplingBasicsTest2.hxx"
//
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
+// Author : Anthony Geay (CEA/DEN)
#include "MEDCouplingRemapperTest.hxx"
#
# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
#
+# Author : Anthony Geay (CEA/DEN)
ADD_SUBDIRECTORY(Client)
-ADD_SUBDIRECTORY(Test)
+
+IF (CPPUNIT_IS_OK)
+ ADD_SUBDIRECTORY(Test)
+ENDIF (CPPUNIT_IS_OK)
INCLUDE_DIRECTORIES(
${OMNIORB_INCLUDE_DIRS}
)
ADD_LIBRARY(medcouplingcorba SHARED ${medcouplingcorba_SOURCES})
-SET_TARGET_PROPERTIES(medcouplingcorba PROPERTIES COMPILE_FLAGS "${OMNIORB_DEFINITIONS}")
-TARGET_LINK_LIBRARIES(medcouplingcorba medcoupling SalomeIDLMED)
+SET_TARGET_PROPERTIES(medcouplingcorba PROPERTIES COMPILE_FLAGS "${OMNIORB_DEFINITIONS} ${PLATFORM_DEFINITIONS}")
+TARGET_LINK_LIBRARIES(medcouplingcorba medcoupling SalomeIDLMED ${PLATFORM_LIBS})
INSTALL(TARGETS medcouplingcorba DESTINATION ${MED_salomelib_LIBS})
FILE(GLOB medcouplingcorba_HEADERS_HXX "${CMAKE_CURRENT_SOURCE_DIR}/*.hxx")
#
# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
#
+# Author : Anthony Geay (CEA/DEN)
INCLUDE_DIRECTORIES(
${OMNIORB_INCLUDE_DIRS}
)
ADD_LIBRARY(medcouplingclient SHARED ${medcouplingclient_SOURCES})
-SET_TARGET_PROPERTIES(medcouplingclient PROPERTIES COMPILE_FLAGS "${OMNIORB_DEFINITIONS}")
-TARGET_LINK_LIBRARIES(medcouplingclient medcoupling SalomeIDLMED ${OMNIORB_LIBS})
+SET_TARGET_PROPERTIES(medcouplingclient PROPERTIES COMPILE_FLAGS "${OMNIORB_DEFINITIONS} ${PLATFORM_DEFINITIONS}")
+TARGET_LINK_LIBRARIES(medcouplingclient medcoupling SalomeIDLMED ${OMNIORB_LIBS} ${PLATFORM_LIBS})
INSTALL(TARGETS medcouplingclient DESTINATION ${MED_salomelib_LIBS})
FILE(GLOB medcouplingclient_HEADERS_HXX "${CMAKE_CURRENT_SOURCE_DIR}/*.hxx")
//
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
+// Author : Anthony Geay (CEA/DEN)
#include "DataArrayDoubleClient.hxx"
#include "MEDCouplingMemArray.hxx"
//
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
+// Author : Anthony Geay (CEA/DEN)
#ifndef __DATAARRAYDOUBLECLIENT_HXX__
#define __DATAARRAYDOUBLECLIENT_HXX__
#include "SALOMEconfig.h"
-#ifdef WNT
+#ifdef WIN32
#define NOMINMAX
#endif
#include CORBA_SERVER_HEADER(MEDCouplingCorbaServant)
//
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
+// Author : Anthony Geay (CEA/DEN)
#include "DataArrayIntClient.hxx"
#include "MEDCouplingMemArray.hxx"
//
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
+// Author : Anthony Geay (CEA/DEN)
#ifndef __DATAARRAYINTCLIENT_HXX__
#define __DATAARRAYINTCLIENT_HXX__
#include "SALOMEconfig.h"
-#ifdef WNT
+#ifdef WIN32
#define NOMINMAX
#endif
#include CORBA_SERVER_HEADER(MEDCouplingCorbaServant)
//
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
+// Author : Anthony Geay (CEA/DEN)
#include "MEDCouplingCMeshClient.hxx"
#include "MEDCouplingMeshClient.hxx"
//
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
+// Author : Anthony Geay (CEA/DEN)
#ifndef __MEDCOUPLINGCMESHCLIENT_HXX__
#define __MEDCOUPLINGCMESHCLIENT_HXX__
#include "SALOMEconfig.h"
-#ifdef WNT
+#ifdef WIN32
#define NOMINMAX
#endif
#include CORBA_SERVER_HEADER(MEDCouplingCorbaServant)
//
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
+// Author : Anthony Geay (CEA/DEN)
#ifndef __MEDCOUPLINGCLIENT_HXX__
#define __MEDCOUPLINGCLIENT_HXX__
-#ifdef WNT
+#ifdef WIN32
# if defined medcouplingclient_EXPORTS
# define MEDCOUPLINGCLIENT_EXPORT __declspec( dllexport )
# else
//
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
+// Author : Anthony Geay (CEA/DEN)
#include "MEDCouplingExtrudedMeshClient.hxx"
#include "MEDCouplingMeshClient.hxx"
//
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
+// Author : Anthony Geay (CEA/DEN)
#ifndef __MEDCOUPLINGEXTRUDEDMESHCLIENT_HXX__
#define __MEDCOUPLINGEXTRUDEDMESHCLIENT_HXX__
#include "SALOMEconfig.h"
-#ifdef WNT
+#ifdef WIN32
#define NOMINMAX
#endif
#include CORBA_SERVER_HEADER(MEDCouplingCorbaServant)
//
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
+// Author : Anthony Geay (CEA/DEN)
#include "MEDCouplingFieldDoubleClient.hxx"
#include "MEDCouplingMeshClient.hxx"
//
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
+// Author : Anthony Geay (CEA/DEN)
#ifndef __MEDCOUPLINGFIELDDOUBLECLIENT_HXX__
#define __MEDCOUPLINGFIELDDOUBLECLIENT_HXX__
#include "SALOMEconfig.h"
-#ifdef WNT
+#ifdef WIN32
#define NOMINMAX
#endif
#include CORBA_SERVER_HEADER(MEDCouplingCorbaServant)
//
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
+// Author : Anthony Geay (CEA/DEN)
#include "MEDCouplingFieldOverTimeClient.hxx"
#include "MEDCouplingMultiFieldsClient.hxx"
//
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
+// Author : Anthony Geay (CEA/DEN)
#ifndef __MEDCOUPLINGFIELDOVERTIMECLIENT_HXX__
#define __MEDCOUPLINGFIELDOVERTIMECLIENT_HXX__
#include "SALOMEconfig.h"
-#ifdef WNT
+#ifdef WIN32
#define NOMINMAX
#endif
#include CORBA_SERVER_HEADER(MEDCouplingCorbaServant)
//
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
+// Author : Anthony Geay (CEA/DEN)
#include "MEDCouplingFieldTemplateClient.hxx"
#include "MEDCouplingMeshClient.hxx"
//
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
+// Author : Anthony Geay (CEA/DEN)
#ifndef __MEDCOUPLINGFIELDTEMPLATECLIENT_HXX__
#define __MEDCOUPLINGFIELDTEMPLATECLIENT_HXX__
#include "SALOMEconfig.h"
-#ifdef WNT
+#ifdef WIN32
#define NOMINMAX
#endif
#include CORBA_SERVER_HEADER(MEDCouplingCorbaServant)
//
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
+// Author : Anthony Geay (CEA/DEN)
#include "MEDCouplingMeshClient.hxx"
#include "MEDCouplingUMeshClient.hxx"
//
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
+// Author : Anthony Geay (CEA/DEN)
#ifndef __MEDCOUPLINGMESHCLIENT_HXX__
#define __MEDCOUPLINGMESHCLIENT_HXX__
#include "SALOMEconfig.h"
-#ifdef WNT
+#ifdef WIN32
#define NOMINMAX
#endif
#include CORBA_SERVER_HEADER(MEDCouplingCorbaServant)
//
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
+// Author : Anthony Geay (CEA/DEN)
#include "MEDCouplingMultiFieldsClient.hxx"
#include "MEDCouplingFieldTemplate.hxx"
//
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
+// Author : Anthony Geay (CEA/DEN)
#ifndef __MEDCOUPLINGMULTIFIELDSCLIENT_HXX__
#define __MEDCOUPLINGMULTIFIELDSCLIENT_HXX__
#include "SALOMEconfig.h"
-#ifdef WNT
+#ifdef WIN32
#define NOMINMAX
#endif
#include CORBA_SERVER_HEADER(MEDCouplingCorbaServant)
//
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
+// Author : Anthony Geay (CEA/DEN)
#include "MEDCouplingUMeshClient.hxx"
#include "MEDCouplingMeshClient.hxx"
//
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
+// Author : Anthony Geay (CEA/DEN)
#ifndef __MEDCOUPLINGUMESHCLIENT_HXX__
#define __MEDCOUPLINGUMESHCLIENT_HXX__
#include "SALOMEconfig.h"
-#ifdef WNT
+#ifdef WIN32
#define NOMINMAX
#endif
#include CORBA_SERVER_HEADER(MEDCouplingCorbaServant)
#
# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
#
+# Author : Anthony Geay (CEA/DEN)
include $(top_srcdir)/adm_local/unix/make_common_starter.am
//
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
+// Author : Anthony Geay (CEA/DEN)
#include "DataArrayDoubleServant.hxx"
#include "MEDCouplingMemArray.hxx"
//
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
+// Author : Anthony Geay (CEA/DEN)
#ifndef __DATAARRAYDOUBLESERVANT_HXX__
#define __DATAARRAYDOUBLESERVANT_HXX__
#include "SALOMEconfig.h"
-#ifdef WNT
+#ifdef WIN32
#define NOMINMAX
#endif
#include CORBA_SERVER_HEADER(MEDCouplingCorbaServant)
//
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
+// Author : Anthony Geay (CEA/DEN)
#include "DataArrayIntServant.hxx"
#include "MEDCouplingMemArray.hxx"
//
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
+// Author : Anthony Geay (CEA/DEN)
#ifndef __DATAARRAYINTSERVANT_HXX__
#define __DATAARRAYINTSERVANT_HXX__
#include "SALOMEconfig.h"
-#ifdef WNT
+#ifdef WIN32
#define NOMINMAX
#endif
#include CORBA_SERVER_HEADER(MEDCouplingCorbaServant)
//
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
+// Author : Anthony Geay (CEA/DEN)
#include "DataArrayServant.hxx"
#include "MEDCouplingMemArray.hxx"
//
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
+// Author : Anthony Geay (CEA/DEN)
#ifndef __DATAARRAYSERVANT_HXX__
#define __DATAARRAYSERVANT_HXX__
#include "SALOMEconfig.h"
-#ifdef WNT
+#ifdef WIN32
#define NOMINMAX
#endif
#include CORBA_SERVER_HEADER(MEDCouplingCorbaServant)
//
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
+// Author : Anthony Geay (CEA/DEN)
#include "MEDCouplingCMeshServant.hxx"
//
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
+// Author : Anthony Geay (CEA/DEN)
#ifndef __MEDCOUPLINGCMESHSERVANT_HXX__
#define __MEDCOUPLINGCMESHSERVANT_HXX__
//
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
+// Author : Anthony Geay (CEA/DEN)
#ifndef __MEDCOUPLINGCORBA_HXX__
#define __MEDCOUPLINGCORBA_HXX__
-#ifdef WNT
+#ifdef WIN32
# if defined medcouplingcorba_EXPORTS
# define MEDCOUPLINGCORBA_EXPORT __declspec( dllexport )
# else
//
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
+// Author : Anthony Geay (CEA/DEN)
#include "MEDCouplingExtrudedMeshServant.hxx"
//
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
+// Author : Anthony Geay (CEA/DEN)
#ifndef __MEDCOUPLINGEXTRUDEDMESHSERVANT_HXX__
#define __MEDCOUPLINGEXTRUDEDMESHSERVANT_HXX__
//
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
+// Author : Anthony Geay (CEA/DEN)
#include "MEDCouplingFieldDoubleServant.hxx"
#include "MEDCouplingFieldDouble.hxx"
//
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
+// Author : Anthony Geay (CEA/DEN)
#ifndef __MEDCOUPLINGFIELDDOUBLESERVANT_HXX__
#define __MEDCOUPLINGFIELDDOUBLESERVANT_HXX__
#include "SALOMEconfig.h"
-#ifdef WNT
+#ifdef WIN32
#define NOMINMAX
#endif
#include CORBA_SERVER_HEADER(MEDCouplingCorbaServant)
//
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
+// Author : Anthony Geay (CEA/DEN)
#include "MEDCouplingFieldOverTimeServant.hxx"
#include "DataArrayDoubleServant.hxx"
//
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
+// Author : Anthony Geay (CEA/DEN)
#ifndef __MEDCOUPLINGFIELDOVERTIMESERVANT_HXX__
#define __MEDCOUPLINGFIELDOVERTIMESERVANT_HXX__
#include "SALOMEconfig.h"
-#ifdef WNT
+#ifdef WIN32
#define NOMINMAX
#endif
#include CORBA_SERVER_HEADER(MEDCouplingCorbaServant)
//
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
+// Author : Anthony Geay (CEA/DEN)
#include "MEDCouplingFieldServant.hxx"
#include "MEDCouplingMeshServant.hxx"
//
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
+// Author : Anthony Geay (CEA/DEN)
#ifndef __MEDCOUPLINGFIELDSERVANT_HXX__
#define __MEDCOUPLINGFIELDSERVANT_HXX__
#include "SALOMEconfig.h"
-#ifdef WNT
+#ifdef WIN32
#define NOMINMAX
#endif
#include CORBA_SERVER_HEADER(MEDCouplingCorbaServant)
//
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
+// Author : Anthony Geay (CEA/DEN)
#include "MEDCouplingFieldTemplateServant.hxx"
#include "MEDCouplingFieldTemplate.hxx"
//
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
+// Author : Anthony Geay (CEA/DEN)
#ifndef __MEDCOUPLINGFIELDTEMPLATESERVANT_HXX__
#define __MEDCOUPLINGFIELDTEMPLATESERVANT_HXX__
#include "SALOMEconfig.h"
-#ifdef WNT
+#ifdef WIN32
#define NOMINMAX
#endif
#include CORBA_SERVER_HEADER(MEDCouplingCorbaServant)
//
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
+// Author : Anthony Geay (CEA/DEN)
#include "MEDCouplingMeshServant.hxx"
#include "InterpKernelException.hxx"
//
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
+// Author : Anthony Geay (CEA/DEN)
#ifndef __MEDCOUPLINGMESHSERVANT_HXX__
#define __MEDCOUPLINGMESHSERVANT_HXX__
#include "SALOMEconfig.h"
-#ifdef WNT
+#ifdef WIN32
#define NOMINMAX
#endif
#include CORBA_SERVER_HEADER(MEDCouplingCorbaServant)
//
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
+// Author : Anthony Geay (CEA/DEN)
#include "MEDCouplingMultiFieldsServant.hxx"
#include "DataArrayDoubleServant.hxx"
//
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
+// Author : Anthony Geay (CEA/DEN)
#ifndef __MEDCOUPLINGMULTIFIELDSSERVANT_HXX__
#define __MEDCOUPLINGMULTIFIELDSSERVANT_HXX__
#include "SALOMEconfig.h"
-#ifdef WNT
+#ifdef WIN32
#define NOMINMAX
#endif
#include CORBA_SERVER_HEADER(MEDCouplingCorbaServant)
//
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
+// Author : Anthony Geay (CEA/DEN)
#include "MEDCouplingPointSetServant.hxx"
#include "MEDCouplingPointSet.hxx"
//
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
+// Author : Anthony Geay (CEA/DEN)
#ifndef __MEDCOUPLINGPOINTSETSERVANT_HXX__
#define __MEDCOUPLINGPOINTSETSERVANT_HXX__
//
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
+// Author : Anthony Geay (CEA/DEN)
#include "MEDCouplingRefCountServant.hxx"
#include "InterpKernelException.hxx"
//
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
+// Author : Anthony Geay (CEA/DEN)
#ifndef __MEDCOUPLINGREFCOUNTSERVANT_HXX__
#define __MEDCOUPLINGREFCOUNTSERVANT_HXX__
//
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
+// Author : Anthony Geay (CEA/DEN)
#include "MEDCouplingUMeshServant.hxx"
#include "MEDCouplingUMesh.hxx"
//
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
+// Author : Anthony Geay (CEA/DEN)
#ifndef __MEDCOUPLINGUMESHSERVANT_HXX__
#define __MEDCOUPLINGUMESHSERVANT_HXX__
#include "SALOMEconfig.h"
-#ifdef WNT
+#ifdef WIN32
#define NOMINMAX
#endif
#include CORBA_SERVER_HEADER(MEDCouplingCorbaServant)
#
# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
#
+# Author : Anthony Geay (CEA/DEN)
include $(top_srcdir)/adm_local/unix/make_common_starter.am
#
# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
#
+# Author : Anthony Geay (CEA/DEN)
INCLUDE_DIRECTORIES(
${OMNIORB_INCLUDE_DIRS}
+ ${PTHREAD_INCLUDE_DIRS}
+ ${CPPUNIT_INCLUDE_DIRS}
${KERNEL_ROOT_DIR}/include/salome
${CMAKE_CURRENT_BINARY_DIR}/../../../idl
${CMAKE_CURRENT_SOURCE_DIR}/..
)
ADD_EXECUTABLE(TestMEDCouplingCorbaServ ${TestMEDCouplingCorbaServ_SOURCES})
-SET_TARGET_PROPERTIES(TestMEDCouplingCorbaServ PROPERTIES COMPILE_FLAGS "${OMNIORB_DEFINITIONS}")
-TARGET_LINK_LIBRARIES(TestMEDCouplingCorbaServ medcouplingcorba SalomeIDLMEDTests ${OMNIORB_LIBS})
+SET_TARGET_PROPERTIES(TestMEDCouplingCorbaServ PROPERTIES COMPILE_FLAGS "${OMNIORB_DEFINITIONS} ${PLATFORM_DEFINITIONS}")
+TARGET_LINK_LIBRARIES(TestMEDCouplingCorbaServ medcouplingcorba SalomeIDLMEDTests ${OMNIORB_LIBS} ${PLATFORM_LIBS})
SET(TestMEDCouplingCorbaClt_SOURCES
TestMEDCouplingCorbaClt.cxx
)
ADD_EXECUTABLE(TestMEDCouplingCorbaClt ${TestMEDCouplingCorbaClt_SOURCES})
-SET_TARGET_PROPERTIES(TestMEDCouplingCorbaClt PROPERTIES COMPILE_FLAGS "${OMNIORB_DEFINITIONS} ${CPPUNIT_DEFINITIONS}")
-TARGET_LINK_LIBRARIES(TestMEDCouplingCorbaClt medcouplingclient SalomeIDLMEDTests ${OMNIORB_LIBS} ${CPPUNIT_LIBS})
+SET_TARGET_PROPERTIES(TestMEDCouplingCorbaClt PROPERTIES COMPILE_FLAGS "${OMNIORB_DEFINITIONS} ${CPPUNIT_DEFINITIONS} ${PLATFORM_DEFINITIONS}")
+TARGET_LINK_LIBRARIES(TestMEDCouplingCorbaClt medcouplingclient SalomeIDLMEDTests ${OMNIORB_LIBS} ${CPPUNIT_LIBS} ${PLATFORM_LIBS} ${PTHREAD_LIBS})
INSTALL(TARGETS TestMEDCouplingCorbaServ TestMEDCouplingCorbaClt DESTINATION ${MED_salomebin_BINS})
//
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
+// Author : Anthony Geay (CEA/DEN)
#include "MEDCouplingMeshFieldFactoryComponent.hxx"
#include "MEDCouplingExtrudedMesh.hxx"
//
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
+// Author : Anthony Geay (CEA/DEN)
#ifndef __MEDCOUPLINGCORBAFIELDFACTORYCOMPONENT_HXX__
#define __MEDCOUPLINGCORBAFIELDFACTORYCOMPONENT_HXX__
//
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
+// Author : Anthony Geay (CEA/DEN)
#include "MEDCouplingMeshFieldFactoryComponentClt.hxx"
#include "MEDCouplingMeshFieldFactoryComponent.hxx"
//
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
+// Author : Anthony Geay (CEA/DEN)
#ifndef __MEDCOUPLINGCORBAFIELDFACTORYCOMPONENTCLT_HXX__
#define __MEDCOUPLINGCORBAFIELDFACTORYCOMPONENTCLT_HXX__
#include "SALOMEconfig.h"
-#ifdef WNT
+#ifdef WIN32
#define NOMINMAX
#endif
#include CORBA_CLIENT_HEADER(MEDCouplingCorbaServantTest)
//
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
+// Author : Anthony Geay (CEA/DEN)
#include "MEDCouplingMeshFieldFactoryComponentServ.hxx"
#include "MEDCouplingMeshFieldFactoryComponent.hxx"
//
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
+// Author : Anthony Geay (CEA/DEN)
#ifndef __MEDCOUPLINGCORBAFIELDFACTORYCOMPONENTSERV_HXX__
#define __MEDCOUPLINGCORBAFIELDFACTORYCOMPONENTSERV_HXX__
#include <cppunit/extensions/HelperMacros.h>
#include "SALOMEconfig.h"
-#ifdef WNT
+#ifdef WIN32
#define NOMINMAX
#endif
#include CORBA_SERVER_HEADER(MEDCouplingCorbaServantTest)
#
# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
#
+# Author : Anthony Geay (CEA/DEN)
include $(top_srcdir)/adm_local/unix/make_common_starter.am
//
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
+// Author : Anthony Geay (CEA/DEN)
#include "MEDCouplingMeshFieldFactoryComponentClt.hxx"
#include "MEDCouplingMeshFieldFactoryComponent.hxx"
//
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
+// Author : Anthony Geay (CEA/DEN)
#include "MEDCouplingMeshFieldFactoryComponentServ.hxx"
#include "MEDCouplingMeshFieldFactoryComponent.hxx"
#
# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
#
+# Author : Anthony Geay (CEA/DEN)
ADD_SUBDIRECTORY(Client)
-INCLUDE(${KERNEL_ROOT_DIR}/salome_adm/cmake_files/InstallAndCompilePythonFile.cmake)
+INCLUDE(${SALOME_MACROS_DIR}/InstallAndCompilePythonFile.cmake)
FIND_PACKAGE(SWIG REQUIRED)
INCLUDE(${SWIG_USE_FILE})
)
SWIG_ADD_MODULE(MEDCouplingCorba python MEDCouplingCorba.i)
-SWIG_LINK_LIBRARIES(MEDCouplingCorba ${PYTHON_LIBRARIES} medcouplingcorba)
-SET_TARGET_PROPERTIES(_MEDCouplingCorba PROPERTIES COMPILE_FLAGS "${OMNIORB_DEFINITIONS}")
+SWIG_LINK_LIBRARIES(MEDCouplingCorba ${PYTHON_LIBS} medcouplingcorba ${PLATFORM_LIBS})
+SET_TARGET_PROPERTIES(_MEDCouplingCorba PROPERTIES COMPILE_FLAGS "${OMNIORB_DEFINITIONS} ${PLATFORM_DEFINITIONS}")
+IF(${MACHINE} STREQUAL WINDOWS)
+ SET_TARGET_PROPERTIES(_MEDCouplingCorba PROPERTIES DEBUG_OUTPUT_NAME _MEDCouplingCorba_d)
+ENDIF(${MACHINE} STREQUAL WINDOWS)
INSTALL(TARGETS _MEDCouplingCorba DESTINATION ${MED_salomepythondir})
INSTALL(FILES MEDCouplingCorba.i MEDCouplingCorbaTypemaps.i DESTINATION ${MED_salomeinclude_HEADERS})
#
# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
#
+# Author : Anthony Geay (CEA/DEN)
-INCLUDE(${KERNEL_ROOT_DIR}/salome_adm/cmake_files/InstallAndCompilePythonFile.cmake)
+INCLUDE(${SALOME_MACROS_DIR}/InstallAndCompilePythonFile.cmake)
FIND_PACKAGE(SWIG REQUIRED)
INCLUDE(${SWIG_USE_FILE})
)
SWIG_ADD_MODULE(MEDCouplingClient python MEDCouplingClient.i)
-SWIG_LINK_LIBRARIES(MEDCouplingClient ${PYTHON_LIBRARIES} medcouplingclient)
-SET_TARGET_PROPERTIES(_MEDCouplingClient PROPERTIES COMPILE_FLAGS "${OMNIORB_DEFINITIONS}")
+SWIG_LINK_LIBRARIES(MEDCouplingClient ${PYTHON_LIBS} medcouplingclient)
+SET_TARGET_PROPERTIES(_MEDCouplingClient PROPERTIES COMPILE_FLAGS "${OMNIORB_DEFINITIONS} ${PLATFORM_DEFINITIONS}")
+IF(${MACHINE} STREQUAL WINDOWS)
+ SET_TARGET_PROPERTIES(_MEDCouplingClient PROPERTIES DEBUG_OUTPUT_NAME _MEDCouplingClient_d)
+ENDIF(${MACHINE} STREQUAL WINDOWS)
INSTALL(TARGETS _MEDCouplingClient DESTINATION ${MED_salomepythondir})
INSTALL(FILES MEDCouplingClient.i DESTINATION ${MED_salomeinclude_HEADERS})
//
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
+// Author : Anthony Geay (CEA/DEN)
%module MEDCouplingClient
def ParaMEDMEMDataArrayIntImod(self,*args):
import _MEDCouplingClient
return _MEDCouplingClient.DataArrayInt____imod___(self, self, *args)
+def ParaMEDMEMDataArrayDoubleTupleIadd(self,*args):
+ import _MEDCouplingClient
+ return _MEDCouplingClient.DataArrayDoubleTuple____iadd___(self, self, *args)
+def ParaMEDMEMDataArrayDoubleTupleIsub(self,*args):
+ import _MEDCouplingClient
+ return _MEDCouplingClient.DataArrayDoubleTuple____isub___(self, self, *args)
+def ParaMEDMEMDataArrayDoubleTupleImul(self,*args):
+ import _MEDCouplingClient
+ return _MEDCouplingClient.DataArrayDoubleTuple____imul___(self, self, *args)
+def ParaMEDMEMDataArrayDoubleTupleIdiv(self,*args):
+ import _MEDCouplingClient
+ return _MEDCouplingClient.DataArrayDoubleTuple____idiv___(self, self, *args)
+def ParaMEDMEMDataArrayIntTupleIadd(self,*args):
+ import _MEDCouplingClient
+ return _MEDCouplingClient.DataArrayIntTuple____iadd___(self, self, *args)
+def ParaMEDMEMDataArrayIntTupleIsub(self,*args):
+ import _MEDCouplingClient
+ return _MEDCouplingClient.DataArrayIntTuple____isub___(self, self, *args)
+def ParaMEDMEMDataArrayIntTupleImul(self,*args):
+ import _MEDCouplingClient
+ return _MEDCouplingClient.DataArrayIntTuple____imul___(self, self, *args)
+def ParaMEDMEMDataArrayIntTupleIdiv(self,*args):
+ import _MEDCouplingClient
+ return _MEDCouplingClient.DataArrayIntTuple____idiv___(self, self, *args)
+def ParaMEDMEMDataArrayIntTupleImod(self,*args):
+ import _MEDCouplingClient
+ return _MEDCouplingClient.DataArrayIntTuple____imod___(self, self, *args)
%}
%include "MEDCouplingFinalize.i"
#
# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
#
+# Author : Anthony Geay (CEA/DEN)
include $(top_srcdir)/adm_local/unix/make_common_starter.am
//
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
+// Author : Anthony Geay (CEA/DEN)
%module MEDCouplingCorba
def ParaMEDMEMDataArrayIntImod(self,*args):
import _MEDCouplingCorba
return _MEDCouplingCorba.DataArrayInt____imod___(self, self, *args)
+def ParaMEDMEMDataArrayDoubleTupleIadd(self,*args):
+ import _MEDCouplingCorba
+ return _MEDCouplingCorba.DataArrayDoubleTuple____iadd___(self, self, *args)
+def ParaMEDMEMDataArrayDoubleTupleIsub(self,*args):
+ import _MEDCouplingCorba
+ return _MEDCouplingCorba.DataArrayDoubleTuple____isub___(self, self, *args)
+def ParaMEDMEMDataArrayDoubleTupleImul(self,*args):
+ import _MEDCouplingCorba
+ return _MEDCouplingCorba.DataArrayDoubleTuple____imul___(self, self, *args)
+def ParaMEDMEMDataArrayDoubleTupleIdiv(self,*args):
+ import _MEDCouplingCorba
+ return _MEDCouplingCorba.DataArrayDoubleTuple____idiv___(self, self, *args)
+def ParaMEDMEMDataArrayIntTupleIadd(self,*args):
+ import _MEDCouplingCorba
+ return _MEDCouplingCorba.DataArrayIntTuple____iadd___(self, self, *args)
+def ParaMEDMEMDataArrayIntTupleIsub(self,*args):
+ import _MEDCouplingCorba
+ return _MEDCouplingCorba.DataArrayIntTuple____isub___(self, self, *args)
+def ParaMEDMEMDataArrayIntTupleImul(self,*args):
+ import _MEDCouplingCorba
+ return _MEDCouplingCorba.DataArrayIntTuple____imul___(self, self, *args)
+def ParaMEDMEMDataArrayIntTupleIdiv(self,*args):
+ import _MEDCouplingCorba
+ return _MEDCouplingCorba.DataArrayIntTuple____idiv___(self, self, *args)
+def ParaMEDMEMDataArrayIntTupleImod(self,*args):
+ import _MEDCouplingCorba
+ return _MEDCouplingCorba.DataArrayIntTuple____imod___(self, self, *args)
%}
%include "MEDCouplingFinalize.i"
#
# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
#
+# Author : Anthony Geay (CEA/DEN)
from MEDCoupling import *
import math
#
# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
#
+# Author : Anthony Geay (CEA/DEN)
import MEDCouplingCorbaSwigTest
from MEDCouplingClient import *
#
# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
#
+# Author : Anthony Geay (CEA/DEN)
import MEDCouplingCorbaSwigTest
import MEDCouplingCorbaServantTest_idl
//
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
+// Author : Anthony Geay (CEA/DEN)
template<class TServant>
static PyObject *buildServantAndActivate(const typename TServant::CppType *pt)
#
# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
#
+# Author : Anthony Geay (CEA/DEN)
include $(top_srcdir)/adm_local/unix/make_common_starter.am
#
# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
#
+# Author : Anthony Geay (CEA/DEN)
import unittest
import CORBA
#
# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
#
+# Author : Anthony Geay (CEA/DEN)
import CORBA
import MEDCouplingCorbaSwigTest
# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
#
-INCLUDE(${KERNEL_ROOT_DIR}/salome_adm/cmake_files/InstallAndCompilePythonFile.cmake)
+INCLUDE(${SALOME_MACROS_DIR}/InstallAndCompilePythonFile.cmake)
FIND_PACKAGE(SWIG REQUIRED)
INCLUDE(${SWIG_USE_FILE})
-#INCLUDE(${KERNEL_ROOT_DIR}/salome_adm/cmake_files/UseSWIG.cmake)
SET_SOURCE_FILES_PROPERTIES(MEDCoupling.i PROPERTIES CPLUSPLUS ON)
SET_SOURCE_FILES_PROPERTIES(MEDCoupling.i PROPERTIES SWIG_DEFINITIONS "-shadow")
INCLUDE_DIRECTORIES(
${PYTHON_INCLUDE_DIRS}
+ ${PTHREAD_INCLUDE_DIRS}
${CMAKE_CURRENT_SOURCE_DIR}
+ ${CMAKE_CURRENT_BINARY_DIR}
+ ${CMAKE_BINARY_DIR}
${CMAKE_CURRENT_SOURCE_DIR}/../MEDCoupling
${CMAKE_CURRENT_SOURCE_DIR}/../INTERP_KERNEL
${CMAKE_CURRENT_SOURCE_DIR}/../INTERP_KERNEL/Bases
)
SWIG_ADD_MODULE(MEDCoupling python MEDCoupling.i)
-SWIG_LINK_LIBRARIES(MEDCoupling ${PYTHON_LIBRARIES} medcoupling)
+SWIG_LINK_LIBRARIES(MEDCoupling ${PYTHON_LIBS} ${PLATFORM_LIBS} medcoupling)
+SET_TARGET_PROPERTIES(_MEDCoupling PROPERTIES COMPILE_FLAGS "${PLATFORM_DEFINITIONS}")
SET_SOURCE_FILES_PROPERTIES(MEDCouplingRemapper.i PROPERTIES CPLUSPLUS ON)
SET_SOURCE_FILES_PROPERTIES(MEDCouplingRemapper.i PROPERTIES SWIG_DEFINITIONS "-shadow")
SWIG_ADD_MODULE(MEDCouplingRemapper python MEDCouplingRemapper.i)
-SWIG_LINK_LIBRARIES(MEDCouplingRemapper ${PYTHON_LIBRARIES} medcouplingremapper)
+SWIG_LINK_LIBRARIES(MEDCouplingRemapper ${PYTHON_LIBS} medcouplingremapper)
+SET_TARGET_PROPERTIES(_MEDCouplingRemapper PROPERTIES COMPILE_FLAGS "${PLATFORM_DEFINITIONS}")
+
+IF(${MACHINE} STREQUAL WINDOWS)
+ SET_TARGET_PROPERTIES(_MEDCouplingRemapper PROPERTIES DEBUG_OUTPUT_NAME _MEDCouplingRemapper_d)
+ SET_TARGET_PROPERTIES(_MEDCoupling PROPERTIES DEBUG_OUTPUT_NAME _MEDCoupling_d)
+ENDIF(${MACHINE} STREQUAL WINDOWS)
+INSTALL(TARGETS _MEDCoupling _MEDCouplingRemapper DESTINATION ${MED_salomelib_LIBS})
SET(PYFILES_TO_INSTALL ${CMAKE_CURRENT_BINARY_DIR}/MEDCoupling.py ${CMAKE_CURRENT_BINARY_DIR}/MEDCouplingRemapper.py ${CMAKE_CURRENT_SOURCE_DIR}/libMEDCoupling_Swig.py)
-INSTALL(TARGETS _MEDCoupling _MEDCouplingRemapper DESTINATION ${MED_salomepythondir})
-INSTALL(FILES MEDCoupling.i MEDCouplingCommon.i MEDCouplingFinalize.i MEDCouplingRemapper.i MEDCouplingTypemaps.i DESTINATION ${MED_salomeinclude_HEADERS})
INSTALL_AND_COMPILE_PYTHON_FILE("${PYFILES_TO_INSTALL}" ${MED_salomescript_PYTHON})
+INSTALL(FILES MEDCoupling.i MEDCouplingCommon.i MEDCouplingFinalize.i MEDCouplingRemapper.i MEDCouplingTypemaps.i DESTINATION ${MED_salomeinclude_HEADERS})
+INSTALL(FILES MEDCouplingBasicsTest.py MEDCouplingRemapperTest.py MEDCouplingDataForTest.py DESTINATION ${MED_salomescript_PYTHON})
+
ADD_TEST(MEDCouplingBasicsTest ${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/MEDCouplingBasicsTest.py)
ADD_TEST(MEDCouplingExamplesTest ${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/MEDCouplingExamplesTest.py)
ADD_TEST(MEDCouplingRemapperTest ${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/MEDCouplingRemapperTest.py)
def ParaMEDMEMDataArrayIntImod(self,*args):
import _MEDCoupling
return _MEDCoupling.DataArrayInt____imod___(self, self, *args)
+def ParaMEDMEMDataArrayDoubleTupleIadd(self,*args):
+ import _MEDCoupling
+ return _MEDCoupling.DataArrayDoubleTuple____iadd___(self, self, *args)
+def ParaMEDMEMDataArrayDoubleTupleIsub(self,*args):
+ import _MEDCoupling
+ return _MEDCoupling.DataArrayDoubleTuple____isub___(self, self, *args)
+def ParaMEDMEMDataArrayDoubleTupleImul(self,*args):
+ import _MEDCoupling
+ return _MEDCoupling.DataArrayDoubleTuple____imul___(self, self, *args)
+def ParaMEDMEMDataArrayDoubleTupleIdiv(self,*args):
+ import _MEDCoupling
+ return _MEDCoupling.DataArrayDoubleTuple____idiv___(self, self, *args)
+def ParaMEDMEMDataArrayIntTupleIadd(self,*args):
+ import _MEDCoupling
+ return _MEDCoupling.DataArrayIntTuple____iadd___(self, self, *args)
+def ParaMEDMEMDataArrayIntTupleIsub(self,*args):
+ import _MEDCoupling
+ return _MEDCoupling.DataArrayIntTuple____isub___(self, self, *args)
+def ParaMEDMEMDataArrayIntTupleImul(self,*args):
+ import _MEDCoupling
+ return _MEDCoupling.DataArrayIntTuple____imul___(self, self, *args)
+def ParaMEDMEMDataArrayIntTupleIdiv(self,*args):
+ import _MEDCoupling
+ return _MEDCoupling.DataArrayIntTuple____idiv___(self, self, *args)
+def ParaMEDMEMDataArrayIntTupleImod(self,*args):
+ import _MEDCoupling
+ return _MEDCoupling.DataArrayIntTuple____imod___(self, self, *args)
%}
%include "MEDCouplingFinalize.i"
pass
pass
+ def testSwigDataTupleIOp1(self):
+ d=DataArrayDouble(10,1)
+ d.iota(7.)
+ for elt in d:
+ elt+=2.
+ pass
+ toTest=DataArrayDouble([9.0,10.0,11.0,12.0,13.0,14.0,15.0,16.0,17.0,18.0])
+ self.assertTrue(toTest.isEqual(d,1e-12))
+ for elt in d:
+ elt-=2.
+ pass
+ toTest=DataArrayDouble([7.0,8.0,9.0,10.0,11.0,12.0,13.0,14.0,15.0,16.0])
+ self.assertTrue(toTest.isEqual(d,1e-12))
+ for elt in d:
+ elt*=2.
+ pass
+ toTest=DataArrayDouble([14.0,16.0,18.0,20.0,22.0,24.0,26.0,28.0,30.0,32.0])
+ self.assertTrue(toTest.isEqual(d,1e-12))
+ for elt in d:
+ elt/=2.
+ pass
+ toTest=DataArrayDouble([7.0,8.0,9.0,10.0,11.0,12.0,13.0,14.0,15.0,16.0])
+ self.assertTrue(toTest.isEqual(d,1e-12))
+ #
+ d=DataArrayInt(10,1)
+ d.iota(7)
+ for elt in d:
+ elt+=2
+ pass
+ self.assertEqual(d.getValues(),[9,10,11,12,13,14,15,16,17,18])
+ for elt in d:
+ elt-=2
+ pass
+ self.assertEqual(d.getValues(),[7,8,9,10,11,12,13,14,15,16])
+ for elt in d:
+ elt*=2
+ pass
+ self.assertEqual(d.getValues(),[14,16,18,20,22,24,26,28,30,32])
+ for elt in d:
+ elt/=2
+ pass
+ self.assertEqual(d.getValues(),[7,8,9,10,11,12,13,14,15,16])
+ for elt in d:
+ elt%=3
+ pass
+ self.assertEqual(d.getValues(),[1,2,0,1,2,0,1,2,0,1])
+ pass
+
def setUp(self):
pass
pass
{
return self->buildDADouble(1,self->getNumberOfCompo());
}
+
+ PyObject *___iadd___(PyObject *trueSelf, PyObject *obj) throw(INTERP_KERNEL::Exception)
+ {
+ MEDCouplingAutoRefCountObjectPtr<DataArrayDouble> ret=self->buildDADouble(1,self->getNumberOfCompo());
+ ParaMEDMEM_DataArrayDouble____iadd___(ret,0,obj);
+ Py_XINCREF(trueSelf);
+ return trueSelf;
+ }
+ PyObject *___isub___(PyObject *trueSelf, PyObject *obj) throw(INTERP_KERNEL::Exception)
+ {
+ MEDCouplingAutoRefCountObjectPtr<DataArrayDouble> ret=self->buildDADouble(1,self->getNumberOfCompo());
+ ParaMEDMEM_DataArrayDouble____isub___(ret,0,obj);
+ Py_XINCREF(trueSelf);
+ return trueSelf;
+ }
+
+ PyObject *___imul___(PyObject *trueSelf, PyObject *obj) throw(INTERP_KERNEL::Exception)
+ {
+ MEDCouplingAutoRefCountObjectPtr<DataArrayDouble> ret=self->buildDADouble(1,self->getNumberOfCompo());
+ ParaMEDMEM_DataArrayDouble____imul___(ret,0,obj);
+ Py_XINCREF(trueSelf);
+ return trueSelf;
+ }
+
+ PyObject *___idiv___(PyObject *trueSelf, PyObject *obj) throw(INTERP_KERNEL::Exception)
+ {
+ MEDCouplingAutoRefCountObjectPtr<DataArrayDouble> ret=self->buildDADouble(1,self->getNumberOfCompo());
+ ParaMEDMEM_DataArrayDouble____idiv___(ret,0,obj);
+ Py_XINCREF(trueSelf);
+ return trueSelf;
+ }
+
PyObject *__getitem__(PyObject *obj) throw(INTERP_KERNEL::Exception)
{
int sw;
{
return self->buildDAInt(1,self->getNumberOfCompo());
}
+
+ PyObject *___iadd___(PyObject *trueSelf, PyObject *obj) throw(INTERP_KERNEL::Exception)
+ {
+ MEDCouplingAutoRefCountObjectPtr<DataArrayInt> ret=self->buildDAInt(1,self->getNumberOfCompo());
+ ParaMEDMEM_DataArrayInt____iadd___(ret,0,obj);
+ Py_XINCREF(trueSelf);
+ return trueSelf;
+ }
+
+ PyObject *___isub___(PyObject *trueSelf, PyObject *obj) throw(INTERP_KERNEL::Exception)
+ {
+ MEDCouplingAutoRefCountObjectPtr<DataArrayInt> ret=self->buildDAInt(1,self->getNumberOfCompo());
+ ParaMEDMEM_DataArrayInt____isub___(ret,0,obj);
+ Py_XINCREF(trueSelf);
+ return trueSelf;
+ }
+
+ PyObject *___imul___(PyObject *trueSelf, PyObject *obj) throw(INTERP_KERNEL::Exception)
+ {
+ MEDCouplingAutoRefCountObjectPtr<DataArrayInt> ret=self->buildDAInt(1,self->getNumberOfCompo());
+ ParaMEDMEM_DataArrayInt____imul___(ret,0,obj);
+ Py_XINCREF(trueSelf);
+ return trueSelf;
+ }
+
+ PyObject *___idiv___(PyObject *trueSelf, PyObject *obj) throw(INTERP_KERNEL::Exception)
+ {
+ MEDCouplingAutoRefCountObjectPtr<DataArrayInt> ret=self->buildDAInt(1,self->getNumberOfCompo());
+ ParaMEDMEM_DataArrayInt____idiv___(ret,0,obj);
+ Py_XINCREF(trueSelf);
+ return trueSelf;
+ }
+
+ PyObject *___imod___(PyObject *trueSelf, PyObject *obj) throw(INTERP_KERNEL::Exception)
+ {
+ MEDCouplingAutoRefCountObjectPtr<DataArrayInt> ret=self->buildDAInt(1,self->getNumberOfCompo());
+ ParaMEDMEM_DataArrayInt____imod___(ret,0,obj);
+ Py_XINCREF(trueSelf);
+ return trueSelf;
+ }
PyObject *__getitem__(PyObject *obj) throw(INTERP_KERNEL::Exception)
{
MEDCouplingFieldDouble.__imul__=ParaMEDMEMMEDCouplingFieldDoubleImul
MEDCouplingFieldDouble.__idiv__=ParaMEDMEMMEDCouplingFieldDoubleIdiv
+DataArrayDoubleTuple.__iadd__=ParaMEDMEMDataArrayDoubleTupleIadd
+DataArrayDoubleTuple.__isub__=ParaMEDMEMDataArrayDoubleTupleIsub
+DataArrayDoubleTuple.__imul__=ParaMEDMEMDataArrayDoubleTupleImul
+DataArrayDoubleTuple.__idiv__=ParaMEDMEMDataArrayDoubleTupleIdiv
+
+DataArrayIntTuple.__iadd__=ParaMEDMEMDataArrayIntTupleIadd
+DataArrayIntTuple.__isub__=ParaMEDMEMDataArrayIntTupleIsub
+DataArrayIntTuple.__imul__=ParaMEDMEMDataArrayIntTupleImul
+DataArrayIntTuple.__idiv__=ParaMEDMEMDataArrayIntTupleIdiv
+DataArrayIntTuple.__imod__=ParaMEDMEMDataArrayIntTupleImod
+
del ParaMEDMEMDataArrayDoubleIadd
del ParaMEDMEMDataArrayDoubleIsub
del ParaMEDMEMDataArrayDoubleImul
del ParaMEDMEMDataArrayIntImul
del ParaMEDMEMDataArrayIntIdiv
del ParaMEDMEMDataArrayIntImod
+del ParaMEDMEMDataArrayDoubleTupleIadd
+del ParaMEDMEMDataArrayDoubleTupleIsub
+del ParaMEDMEMDataArrayDoubleTupleImul
+del ParaMEDMEMDataArrayDoubleTupleIdiv
+del ParaMEDMEMDataArrayIntTupleIadd
+del ParaMEDMEMDataArrayIntTupleIsub
+del ParaMEDMEMDataArrayIntTupleImul
+del ParaMEDMEMDataArrayIntTupleIdiv
+del ParaMEDMEMDataArrayIntTupleImod
%}
bool setOptionInt(const std::string& key, int value);
bool setOptionDouble(const std::string& key, double value);
bool setOptionString(const std::string& key, const std::string& value);
+ //
+ int nullifiedTinyCoeffInCrudeMatrixAbs(double maxValAbs) throw(INTERP_KERNEL::Exception);
+ int nullifiedTinyCoeffInCrudeMatrix(double scaleFactor) throw(INTERP_KERNEL::Exception);
+ double getMaxValueInCrudeMatrix() const throw(INTERP_KERNEL::Exception);
%extend
{
PyObject *getCrudeMatrix() const
def ParaMEDMEMDataArrayIntImod(self,*args):
import _MEDCouplingRemapper
return _MEDCouplingRemapper.DataArrayInt____imod___(self, self, *args)
+def ParaMEDMEMDataArrayDoubleTupleIadd(self,*args):
+ import _MEDCouplingRemapper
+ return _MEDCouplingRemapper.DataArrayDoubleTuple____iadd___(self, self, *args)
+def ParaMEDMEMDataArrayDoubleTupleIsub(self,*args):
+ import _MEDCouplingRemapper
+ return _MEDCouplingRemapper.DataArrayDoubleTuple____isub___(self, self, *args)
+def ParaMEDMEMDataArrayDoubleTupleImul(self,*args):
+ import _MEDCouplingRemapper
+ return _MEDCouplingRemapper.DataArrayDoubleTuple____imul___(self, self, *args)
+def ParaMEDMEMDataArrayDoubleTupleIdiv(self,*args):
+ import _MEDCouplingRemapper
+ return _MEDCouplingRemapper.DataArrayDoubleTuple____idiv___(self, self, *args)
+def ParaMEDMEMDataArrayIntTupleIadd(self,*args):
+ import _MEDCouplingRemapper
+ return _MEDCouplingRemapper.DataArrayIntTuple____iadd___(self, self, *args)
+def ParaMEDMEMDataArrayIntTupleIsub(self,*args):
+ import _MEDCouplingRemapper
+ return _MEDCouplingRemapper.DataArrayIntTuple____isub___(self, self, *args)
+def ParaMEDMEMDataArrayIntTupleImul(self,*args):
+ import _MEDCouplingRemapper
+ return _MEDCouplingRemapper.DataArrayIntTuple____imul___(self, self, *args)
+def ParaMEDMEMDataArrayIntTupleIdiv(self,*args):
+ import _MEDCouplingRemapper
+ return _MEDCouplingRemapper.DataArrayIntTuple____idiv___(self, self, *args)
+def ParaMEDMEMDataArrayIntTupleImod(self,*args):
+ import _MEDCouplingRemapper
+ return _MEDCouplingRemapper.DataArrayIntTuple____imod___(self, self, *args)
%}
%include "MEDCouplingFinalize.i"
${OMNIORB_INCLUDE_DIRS}
${CAS_INCLUDE_DIRS}
${BOOST_INCLUDE_DIRS}
+ ${PTHREAD_INCLUDE_DIRS}
${KERNEL_ROOT_DIR}/include/salome
${GUI_ROOT_DIR}/include/salome
${CMAKE_CURRENT_BINARY_DIR}
MED_images.ts
MED_msg_fr.ts
MED_msg_en.ts
- )
+)
ADD_LIBRARY(MEDGUI SHARED ${MEDGUI_SOURCES} ${MEDGUI_HEADERS_MOC} ${MEDGUI_FORMS_HEADERS})
-SET_TARGET_PROPERTIES(MEDGUI PROPERTIES COMPILE_FLAGS "${HDF5_DEFINITIONS} ${MED3_DEFINITIONS} ${XDR_DEFINITIONS} ${CAS_DEFINITIONS} ${BOOST_DEFINITIONS}")
-TARGET_LINK_LIBRARIES(MEDGUI medcalculator ${QT_MT_LIBS} ${CAS_KERNEL} ${BOOST_LIBS} ${GUI_LDFLAGS} ${SalomeApp} ${CAM} ${LightApp} ${qtx} ${suit} ${SalomeObject})
+SET_TARGET_PROPERTIES(MEDGUI PROPERTIES COMPILE_FLAGS "${HDF5_DEFINITIONS} ${MED3_DEFINITIONS} ${XDR_DEFINITIONS} ${CAS_DEFINITIONS} ${BOOST_DEFINITIONS} ${PLATFORM_DEFINITIONS} ${OMNIORB_DEFINITIONS}")
+TARGET_LINK_LIBRARIES(MEDGUI medcalculator ${QT_MT_LIBS} ${CAS_KERNEL} ${BOOST_LIBS} ${GUI_LDFLAGS} ${SalomeApp} ${CAM} ${LightApp} ${qtx} ${suit} ${SalomeObject} ${PLATFORM_LIBS} ${SalomeLifeCycleCORBA})
INSTALL(TARGETS MEDGUI DESTINATION ${MED_salomelib_LIBS})
QT4_INSTALL_TS_RESOURCES("${MEDGUITS_SOURCES}" "${MED_salomeres_DATA}")
MOC_FILES= MEDGUI_moc.cxx MEDGUIFileContentDial_moc.cxx MEDGUISelectComponents_moc.cxx
+# meta object implementation files generation (moc)
+%_moc.cxx: %.h
+ $(MOC) $< -o $@
+
+# translation (*.qm) files generation (lrelease)
+%.qm: %.ts
+ $(LRELEASE) $< -qm $@
+
+EXTRA_DIST += $(MOC_FILES:%_moc.cxx=%.h) $(nodist_salomeres_DATA:%.qm=%.ts)
+
ui_%.h: %.ui
${QTDIR}/bin/uic $< -o $@
.hxx_moc.cxx :
${QTDIR}/bin/moc -p . -o $@ $<
-%_moc.cxx: %.hxx
- ${QTDIR}/bin/moc $< -o $@
-
.qrc_qrc.cxx :
${QTDIR}/bin/rcc -name $(*F) $< -o $@
clean-local-qt :
- rm -f *_moc.cxx *_qrc.cxx ui_*.h
+ rm -f *_moc.cxx *_qrc.cxx ui_*.h *.qm
clean-local: clean-local-qt
-I$(top_builddir) -I$(top_builddir)/idl -I$(srcdir)/../MEDCoupling -I$(srcdir)/../INTERP_KERNEL -I$(srcdir)/../INTERP_KERNEL/Bases \
-I$(srcdir)/../MEDCoupling -I$(srcdir)/../MEDLoader -I$(srcdir)/../MEDCalculator
-libMEDGUI_la_LDFLAGS= \
+libMEDGUI_la_LDFLAGS = \
$(QT_MT_LIBS) $(CAS_KERNEL) $(BOOST_LIBS) \
- ../../idl/libSalomeIDLMED.la ../MEDCalculator/libmedcalculator.la \
$(KERNEL_LDFLAGS) -lSalomeLifeCycleCORBA -lOpUtil -lSALOMELocalTrace \
$(GUI_LDFLAGS) -lSalomeApp -lCAM -lLightApp -lqtx -lsuit -lSalomeObject
+libMEDGUI_la_LIBADD = \
+ $(top_builddir)/idl/libSalomeIDLMED.la \
+ $(top_builddir)/src/MEDCalculator/libmedcalculator.la
+
+
# .po files to transform in .qm
nodist_salomeres_DATA= \
MED_images.qm \
#
# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
#
+# Author : Anthony Geay (CEA/DEN)
ADD_SUBDIRECTORY(Swig)
ADD_SUBDIRECTORY(Test)
)
ADD_LIBRARY(medloader SHARED ${medloader_SOURCES})
-SET_TARGET_PROPERTIES(medloader PROPERTIES COMPILE_FLAGS "${HDF5_DEFINITIONS} ${MED3_DEFINITIONS}")
+SET_TARGET_PROPERTIES(medloader PROPERTIES COMPILE_FLAGS "${HDF5_DEFINITIONS} ${MED3_DEFINITIONS} ${PLATFORM_DEFINITIONS}")
TARGET_LINK_LIBRARIES(medloader medcoupling ${MED3_LIBS_C_ONLY} ${HDF5_LIBS})
INSTALL(TARGETS medloader DESTINATION ${MED_salomelib_LIBS})
//
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
+// Author : Anthony Geay (CEA/DEN)
#include "MEDFileBasis.hxx"
//
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
+// Author : Anthony Geay (CEA/DEN)
#ifndef __MEDFILEBASIS_HXX__
#define __MEDFILEBASIS_HXX__
//
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
+// Author : Anthony Geay (CEA/DEN)
#include "MEDFileData.hxx"
//
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
+// Author : Anthony Geay (CEA/DEN)
#ifndef __MEDFILEDATA_HXX__
#define __MEDFILEDATA_HXX__
//
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
+// Author : Anthony Geay (CEA/DEN)
#include "MEDFileField.hxx"
#include "MEDFileMesh.hxx"
//
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
+// Author : Anthony Geay (CEA/DEN)
#ifndef __MEDFILEFIELD_HXX__
#define __MEDFILEFIELD_HXX__
void setProfileNameOnLeaf(const char *mName, INTERP_KERNEL::NormalizedCellType typ, int locId, const char *newPflName, bool forceRenameOnGlob=false) throw(INTERP_KERNEL::Exception);
//! underground method see MEDFileField1TSWithoutSDA::setLocNameOnLeaf
void setLocNameOnLeaf(const char *mName, INTERP_KERNEL::NormalizedCellType typ, int locId, const char *newLocName, bool forceRenameOnGlob=false) throw(INTERP_KERNEL::Exception);
- private:
- void writeLL(med_idt fid) const throw(INTERP_KERNEL::Exception);
std::vector<std::string> getPflsReallyUsed() const;
std::vector<std::string> getLocsReallyUsed() const;
std::vector<std::string> getPflsReallyUsedMulti() const;
std::vector<std::string> getLocsReallyUsedMulti() const;
void changePflsRefsNamesGen(const std::vector< std::pair<std::vector<std::string>, std::string > >& mapOfModif) throw(INTERP_KERNEL::Exception);
void changeLocsRefsNamesGen(const std::vector< std::pair<std::vector<std::string>, std::string > >& mapOfModif) throw(INTERP_KERNEL::Exception);
+ private:
+ void writeLL(med_idt fid) const throw(INTERP_KERNEL::Exception);
MEDFileField1TS(const char *fileName, const char *fieldName, int iteration, int order) throw(INTERP_KERNEL::Exception);
MEDFileField1TS(const MEDFileField1TSWithoutSDA& other, bool deepCpy);
MEDFileField1TS();
void destroyFieldAtPos(int i) throw(INTERP_KERNEL::Exception);
bool changeMeshNames(const std::vector< std::pair<std::string,std::string> >& modifTab) throw(INTERP_KERNEL::Exception);
bool renumberEntitiesLyingOnMesh(const char *meshName, const std::vector<int>& oldCode, const std::vector<int>& newCode, const DataArrayInt *renumO2N) throw(INTERP_KERNEL::Exception);
- private:
+ public:
int getPosFromFieldName(const char *fieldName) const throw(INTERP_KERNEL::Exception);
std::vector<std::string> getPflsReallyUsed() const;
std::vector<std::string> getLocsReallyUsed() const;
//
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
+// Author : Anthony Geay (CEA/DEN)
#include "MEDFileMesh.hxx"
#include "MEDFileUtilities.hxx"
//
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
+// Author : Anthony Geay (CEA/DEN)
#ifndef __MEDFILEMESH_HXX__
#define __MEDFILEMESH_HXX__
//
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
+// Author : Anthony Geay (CEA/DEN)
#include "MEDFileMeshElt.hxx"
//
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
+// Author : Anthony Geay (CEA/DEN)
#ifndef __MEDFILEMESHELT_HXX__
#define __MEDFILEMESHELT_HXX__
//
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
+// Author : Anthony Geay (CEA/DEN)
#include "MEDFileMeshLL.hxx"
#include "MEDFileMesh.hxx"
//
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
+// Author : Anthony Geay (CEA/DEN)
#ifndef __MEDFILEMESHLL_HXX__
#define __MEDFILEMESHLL_HXX__
//
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
+// Author : Anthony Geay (CEA/DEN)
#include "MEDFileUtilities.hxx"
#include "MEDLoaderBase.hxx"
//
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
+// Author : Anthony Geay (CEA/DEN)
#ifndef __MEDFILEUTILITIES_HXX__
#define __MEDFILEUTILITIES_HXX__
//
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
+// Author : Anthony Geay (CEA/DEN)
#include "MEDLoader.hxx"
#include "MEDLoaderBase.hxx"
//
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
+// Author : Anthony Geay (CEA/DEN)
#ifndef __MEDLOADER_HXX__
#define __MEDLOADER_HXX__
//
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
+// Author : Anthony Geay (CEA/DEN)
#include "MEDLoaderBase.hxx"
#include "InterpKernelException.hxx"
//
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
+// Author : Anthony Geay (CEA/DEN)
#ifndef __MEDLOADERBASE_HXX__
#define __MEDLOADERBASE_HXX__
//
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
+// Author : Anthony Geay (CEA/DEN)
#ifndef __MEDLOADERDEFINES_HXX__
#define __MEDLOADERDEFINES_HXX__
#
# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
#
+# Author : Anthony Geay (CEA/DEN)
include $(top_srcdir)/adm_local/unix/make_common_starter.am
#include <cstring>
#include <fcntl.h>
-#ifdef WNT
+#ifdef WIN32
#include <io.h>
#endif
-#ifndef WNT
+#ifndef WIN32
#define HAS_XDR
#include <unistd.h>
#endif
//================================================================================
/*!
- * \brief Returns interlace array to transform a quadratic GIBI element to a MED one
+ * \brief Returns interlace array to transform a quadratic GIBI element to a MED one.
+ * i-th array item gives node index in GIBI connectivity for i-th MED node
*/
//================================================================================
bool ASCIIReader::open()
{
-#ifdef WNT
+#ifdef WIN32
_file = ::_open (_fileName.c_str(), _O_RDONLY|_O_BINARY);
#else
_file = ::open (_fileName.c_str(), O_RDONLY);
// 7.70000000000000-100 7.70000000000000+100 7.70000000000000+100
//0123456789012345678901234567890123456789012345678901234567890123456789
const size_t posE = 18;
- if ( _curPos[posE] != 'E' && _curPos[posE] != 'e' )
+ std::string aStr (_curPos);
+ if ( aStr.find('E') < 0 && aStr.find('e') < 0 )
{
- std::string aStr (_curPos);
if ( aStr.size() < posE+1 )
THROW_IK_EXCEPTION("No more doubles (line #" << lineNb() << ")");
aStr.insert( posE, "E", 1 );
std::fstream fileStream;
fileStream.open( fileName, ios::out);
if
-#ifdef WNT
+#ifdef WIN32
( !fileStream || !fileStream.is_open() )
#else
( !fileStream || !fileStream.rdbuf()->is_open() )
if ( toMedConn )
{
for ( unsigned j = 0; j < nbElemNodes; ++j )
- transformedConn[ j ] = cellConn[ toMedConn[ j ]];
+ transformedConn[ toMedConn[ j ]] = cellConn[ j ];
cellConn.swap( transformedConn );
}
for ( unsigned j = 0; j < nbElemNodes; ++j, fcount++ )
#
# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
#
+# Author : Anthony Geay (CEA/DEN)
-INCLUDE(${KERNEL_ROOT_DIR}/salome_adm/cmake_files/InstallAndCompilePythonFile.cmake)
+INCLUDE(${SALOME_MACROS_DIR}/InstallAndCompilePythonFile.cmake)
FIND_PACKAGE(SWIG REQUIRED)
INCLUDE(${SWIG_USE_FILE})
INCLUDE_DIRECTORIES(
${PYTHON_INCLUDE_DIRS}
+ ${MED3_INCLUDE_DIRS}
+ ${HDF5_INCLUDE_DIRS}
${CMAKE_CURRENT_SOURCE_DIR}
+ ${CMAKE_CURRENT_SOURCE_DIR}/..
${CMAKE_CURRENT_SOURCE_DIR}/../../MEDCoupling_Swig
${CMAKE_CURRENT_SOURCE_DIR}/../../MEDCoupling
${CMAKE_CURRENT_SOURCE_DIR}/../../INTERP_KERNEL
${CMAKE_CURRENT_SOURCE_DIR}/../../INTERP_KERNEL/Bases
- )
-
-SWIG_ADD_MODULE(MEDLoader python MEDLoader.i)
-
-SWIG_LINK_LIBRARIES(MEDLoader ${PYTHON_LIBRARIES} medloader)
-
-INCLUDE_DIRECTORIES(
- ${MED3_INCLUDE_DIRS}
- ${HDF5_INCLUDE_DIRS}
- ${CMAKE_CURRENT_SOURCE_DIR}/..
- ${CMAKE_CURRENT_SOURCE_DIR}/../../MEDCoupling
${CMAKE_CURRENT_SOURCE_DIR}/../../INTERP_KERNEL/Geometric2D
${CMAKE_CURRENT_SOURCE_DIR}/../../INTERP_KERNEL/ExprEval
${CMAKE_CURRENT_SOURCE_DIR}/../../INTERP_KERNEL/GaussPoints
- )
+)
+
+SWIG_ADD_MODULE(MEDLoader python MEDLoader.i)
+SWIG_LINK_LIBRARIES(MEDLoader ${PYTHON_LIBS} ${PLATFORM_LIBS} medloader medcoupling)
+SET_TARGET_PROPERTIES(_MEDLoader PROPERTIES COMPILE_FLAGS "${PLATFORM_DEFINITIONS}")
+IF(${MACHINE} STREQUAL WINDOWS)
+ SET_TARGET_PROPERTIES(_MEDLoader PROPERTIES DEBUG_OUTPUT_NAME _MEDLoader_d)
+ENDIF(${MACHINE} STREQUAL WINDOWS)
+INSTALL(TARGETS _MEDLoader DESTINATION ${MED_salomelib_LIBS})
+
+INSTALL(FILES MEDLoader.i MEDLoaderTypemaps.i MEDLoaderCommon.i DESTINATION ${MED_salomeinclude_HEADERS})
-INSTALL(TARGETS _MEDLoader DESTINATION ${MED_salomepythondir})
-INSTALL(FILES MEDLoader.i MEDLoaderCommon.i MEDLoaderTypemaps.i DESTINATION ${MED_salomeinclude_HEADERS})
SET(PYFILES_TO_INSTALL ${CMAKE_CURRENT_BINARY_DIR}/MEDLoader.py ${CMAKE_CURRENT_SOURCE_DIR}/libMEDLoader_Swig.py)
INSTALL_AND_COMPILE_PYTHON_FILE("${PYFILES_TO_INSTALL}" ${MED_salomescript_PYTHON})
+INSTALL(FILES MEDLoaderDataForTest.py MEDLoaderTest.py MEDLoaderTest2.py MEDLoaderTest3.py DESTINATION ${MED_salomescript_PYTHON})
+
ADD_TEST(MEDLoaderTest ${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/MEDLoaderTest.py)
ADD_TEST(MEDLoaderTest2 ${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/MEDLoaderTest2.py)
ADD_TEST(MEDLoaderTest3 ${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/MEDLoaderTest3.py)
//
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
+// Author : Anthony Geay (CEA/DEN)
%include "MEDLoaderCommon.i"
def ParaMEDMEMDataArrayIntImod(self,*args):
import _MEDLoader
return _MEDLoader.DataArrayInt____imod___(self, self, *args)
+def ParaMEDMEMDataArrayDoubleTupleIadd(self,*args):
+ import _MEDLoader
+ return _MEDLoader.DataArrayDoubleTuple____iadd___(self, self, *args)
+def ParaMEDMEMDataArrayDoubleTupleIsub(self,*args):
+ import _MEDLoader
+ return _MEDLoader.DataArrayDoubleTuple____isub___(self, self, *args)
+def ParaMEDMEMDataArrayDoubleTupleImul(self,*args):
+ import _MEDLoader
+ return _MEDLoader.DataArrayDoubleTuple____imul___(self, self, *args)
+def ParaMEDMEMDataArrayDoubleTupleIdiv(self,*args):
+ import _MEDLoader
+ return _MEDLoader.DataArrayDoubleTuple____idiv___(self, self, *args)
+def ParaMEDMEMDataArrayIntTupleIadd(self,*args):
+ import _MEDLoader
+ return _MEDLoader.DataArrayIntTuple____iadd___(self, self, *args)
+def ParaMEDMEMDataArrayIntTupleIsub(self,*args):
+ import _MEDLoader
+ return _MEDLoader.DataArrayIntTuple____isub___(self, self, *args)
+def ParaMEDMEMDataArrayIntTupleImul(self,*args):
+ import _MEDLoader
+ return _MEDLoader.DataArrayIntTuple____imul___(self, self, *args)
+def ParaMEDMEMDataArrayIntTupleIdiv(self,*args):
+ import _MEDLoader
+ return _MEDLoader.DataArrayIntTuple____idiv___(self, self, *args)
+def ParaMEDMEMDataArrayIntTupleImod(self,*args):
+ import _MEDLoader
+ return _MEDLoader.DataArrayIntTuple____imod___(self, self, *args)
%}
%include "MEDCouplingFinalize.i"
//
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
+// Author : Anthony Geay (CEA/DEN)
%module MEDLoader
#
# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
#
+# Author : Anthony Geay (CEA/DEN)
from MEDLoader import *
from math import pi,e,sqrt
#
# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
#
+# Author : Anthony Geay (CEA/DEN)
from MEDLoader import *
import unittest
#
# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
#
+# Author : Anthony Geay (CEA/DEN)
import MEDLoader
import unittest
#
# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
#
+# Author : Anthony Geay (CEA/DEN)
from MEDLoader import *
import unittest
#
# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
#
+# Author : Anthony Geay (CEA/DEN)
from MEDLoader import *
import unittest
//
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
+// Author : Anthony Geay (CEA/DEN)
#include <vector>
#
# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
#
+# Author : Anthony Geay (CEA/DEN)
# MED MEDMEM_SWIG : binding of C++ implementation and Python
#
#
# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
#
+# Author : Edward AGAPOV (eap)
from MEDLoader import *
import unittest, os
#
# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
#
+# Author : Anthony Geay (CEA/DEN)
print """
**********************************************************************
#
# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
#
+# Author : Anthony Geay (CEA/DEN)
INCLUDE_DIRECTORIES(
${CPPUNIT_INCLUDE_DIRS}
)
ADD_EXECUTABLE(TestMEDLoader ${TestMEDLoader_SOURCES})
-SET_TARGET_PROPERTIES(TestMEDLoader PROPERTIES COMPILE_FLAGS "${HDF5_DEFINITIONS} ${MED3_DEFINITIONS} ${CPPUNIT_DEFINITIONS}")
-TARGET_LINK_LIBRARIES(TestMEDLoader medloader ${CPPUNIT_LIBS})
+SET_TARGET_PROPERTIES(TestMEDLoader PROPERTIES COMPILE_FLAGS "${HDF5_DEFINITIONS} ${MED3_DEFINITIONS} ${CPPUNIT_DEFINITIONS} ${PLATFORM_DEFINITIONS}")
+TARGET_LINK_LIBRARIES(TestMEDLoader medloader ${CPPUNIT_LIBS} ${PLATFORM_LIBS})
ADD_TEST(TestMEDLoader TestMEDLoader)
ADD_EXECUTABLE(TestSauvLoader ${TestSauvLoader_SOURCES})
-SET_TARGET_PROPERTIES(TestSauvLoader PROPERTIES COMPILE_FLAGS "${HDF5_DEFINITIONS} ${MED3_DEFINITIONS} ${CPPUNIT_DEFINITIONS}")
-TARGET_LINK_LIBRARIES(TestSauvLoader medloader ${CPPUNIT_LIBS})
+SET_TARGET_PROPERTIES(TestSauvLoader PROPERTIES COMPILE_FLAGS "${HDF5_DEFINITIONS} ${MED3_DEFINITIONS} ${CPPUNIT_DEFINITIONS} ${PLATFORM_DEFINITIONS}")
+
+TARGET_LINK_LIBRARIES(TestSauvLoader medloader ${CPPUNIT_LIBS} ${PLATFORM_LIBS})
ADD_TEST(TestSauvLoader TestSauvLoader)
INSTALL(TARGETS TestMEDLoader TestSauvLoader DESTINATION ${MED_salomebin_BINS})
//
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
+// Author : Anthony Geay (CEA/DEN)
#include "MEDLoaderTest.hxx"
#include "MEDLoader.hxx"
//
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
+// Author : Anthony Geay (CEA/DEN)
#ifndef __MEDLOADERTEST_HXX__
#define __MEDLOADERTEST_HXX__
#
# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
#
+# Author : Anthony Geay (CEA/DEN)
include $(top_srcdir)/adm_local/unix/make_common_starter.am
#include "MEDCouplingFieldDouble.hxx"
#include "MEDCouplingMemArray.hxx"
-#ifdef WNT
+#ifdef WIN32
# include <windows.h>
#else
# include <unistd.h>
const char* fileToRemove[nbFilesToRemove] = { "allPillesTest.med", "pointe.sauv" };
for ( int i = 0; i < nbFilesToRemove; ++i )
{
-#ifdef WNT
+#ifdef WIN32
if (GetFileAttributes(fileToRemove[i]) != INVALID_FILE_ATTRIBUTES)
#else
if (access(fileToRemove[i], F_OK) == 0)
resourceFile += "/share/salome/resources/med/";
}
resourceFile += filename;
-#ifdef WNT
+#ifdef WIN32
std::string fixedpath = resourceFile;
for ( int i=0; i < fixedpath.length(); ++i )
if (fixedpath[i] == '/')
//
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
+// Author : Anthony Geay (CEA/DEN)
#include "CppUnitTest.hxx"
#include "MEDLoaderTest.hxx"
)
ADD_LIBRARY(medmem SHARED ${medmem_SOURCES})
-SET_TARGET_PROPERTIES(medmem PROPERTIES COMPILE_FLAGS "${HDF5_DEFINITIONS} ${MED3_DEFINITIONS} ${XDR_DEFINITIONS}")
-TARGET_LINK_LIBRARIES(medmem interpkernel ${MED3_LIBS_C_ONLY} ${HDF5_LIBS} ${XDR_LIBS})
+SET_TARGET_PROPERTIES(medmem PROPERTIES COMPILE_FLAGS "${HDF5_DEFINITIONS} ${MED3_DEFINITIONS} ${XDR_DEFINITIONS} ${PLATFORM_DEFINITIONS}")
+TARGET_LINK_LIBRARIES(medmem interpkernel ${MED3_LIBS_C_ONLY} ${HDF5_LIBS} ${XDR_LIBS} ${PLATFORM_LIBS})
INSTALL(TARGETS medmem DESTINATION ${MED_salomelib_LIBS})
FILE(GLOB medmem_HEADERS_HXX "${CMAKE_CURRENT_SOURCE_DIR}/*.hxx")
#ifndef _MEDMEM_HXX_
#define _MEDMEM_HXX_
-#ifdef WNT
+#ifdef WIN32
#if defined MEDMEM_EXPORTS || defined medmem_EXPORTS
#if defined WIN32
#define MEDMEM_EXPORT __declspec( dllexport )
#define MEDMEM_EXPORT
#endif
-#ifdef WNT
+#ifdef WIN32
#pragma warning(disable:4251) // Warning DLL Interface ...
#pragma warning(disable:4290) // Warning Exception ...
#endif
sum+=key[i]*(i+key.size());
return sum;
}
-// #ifdef WNT
+// #ifdef WIN32
// static const size_t bucket_size = 4;
// static const size_t min_buckets = 8;
// bool operator()(const vector<int>& key1, const vector<int>& key2) const
*/
const _maille& maille(int index) { return *mailles[index]; }
bool empty() const { return mailles.empty() && groupes.empty(); }
-#ifdef WNT
+#ifdef WIN32
int size() const { return (mailles.size()>relocMap.size())?mailles.size():relocMap.size(); }
#else
int size() const { return std::max( mailles.size(), relocMap.size() ); }
std::string & compName( int i_comp ) { return _comp_names[ i_comp ]; }
bool isValidNbGauss() const { return *std::max_element( _nb_gauss.begin(), _nb_gauss.end() ) ==
*std::min_element( _nb_gauss.begin(), _nb_gauss.end() ); }
-#ifdef WNT
+#ifdef WIN32
int nbGauss() const { return (1>_nb_gauss[0])?1:_nb_gauss[0]; }
#else
int nbGauss() const { return std::max( 1, _nb_gauss[0] ); }
#include <sstream>
#include <iomanip>
-#ifndef WNT
+#ifndef WIN32
#include <fenv.h>
#endif
{
// Read values
-#ifndef WNT
+#ifndef WIN32
int curExcept = fedisableexcept( FE_ALL_EXCEPT ); //!< there may be nan values
#endif
}
}
-#ifndef WNT
+#ifndef WIN32
feclearexcept( FE_ALL_EXCEPT );
if ( curExcept >= 0 )
feenableexcept( curExcept );
#include "MEDMEM_EnsightFieldDriver.hxx"
#include "MEDMEM_DriverTools.hxx"
-#ifdef WNT
+#ifdef WIN32
#include <io.h>
#else
#include <unistd.h>
}
}
-#ifdef WNT
+#ifdef WIN32
#define FILE_SEPARATOR '\\'
#else
#define FILE_SEPARATOR '/'
bool _CaseFileDriver_User::isBinaryDataFile(const string& dataFileName)
{
-#ifdef WNT
+#ifdef WIN32
int _file = ::_open (dataFileName.c_str(), _O_RDONLY|_O_BINARY);
#else
int _file = ::open (dataFileName.c_str(), O_RDONLY);
_ASCIIFileReader::_ASCIIFileReader(const string& fileName) throw (MEDEXCEPTION)
{
-#ifdef WNT
+#ifdef WIN32
_file = ::_open (fileName.c_str(), _O_RDONLY|_O_BINARY);
#else
_file = ::open (fileName.c_str(), O_RDONLY);
_BinaryFileReader::_BinaryFileReader(const string& fileName) throw (MEDEXCEPTION)
: _exception(STRING("Unexpected EOF ") << fileName), _mySwapBytes(false)
{
-#ifdef WNT
+#ifdef WIN32
_file = ::_open (fileName.c_str(), _O_RDONLY|_O_BINARY);
#else
_file = ::open (fileName.c_str(), O_RDONLY);
_BinaryFileWriter::_BinaryFileWriter(const string& fileName) throw (MEDEXCEPTION)
: _exception(STRING("Can't write into ") << fileName)
{
-#ifdef WNT
+#ifdef WIN32
_file = ::_open (fileName.c_str(), _O_WRONLY|_O_BINARY|_O_TRUNC);
#else
_file = ::open (fileName.c_str(), O_WRONLY|O_TRUNC); //length shall be truncated to 0
#include <float.h>
#include <cmath>
-#ifdef WNT
+#ifdef WIN32
# define isnan _isnan
#else
# include <unistd.h>
}
float getReal() throw (MEDEXCEPTION) {
if ( eof() ) throw MEDEXCEPTION("Unexpected EOF");
-#ifdef WNT
+#ifdef WIN32
#else
return strtof(_ptr, &_ptr);
#endif
if ( int(bufSize) > _maxPos - _pos )
throw _exception;
T* buf = new T[ nb ];
-#ifdef WNT
+#ifdef WIN32
#else
ssize_t nBytesRead = ::read (_file, buf, bufSize );
_pos += nBytesRead;
template <typename T>
void add(const T* data, int nbValues) throw (MEDEXCEPTION)
{
-#ifdef WNT
+#ifdef WIN32
#else
ssize_t nbWritten = ::write( _file, (const void *) data, nbValues * sizeof(T));
if ( nbWritten < 0 ) throw _exception;
#include <stdio.h>
#include <fcntl.h>
-#ifdef WNT
+#ifdef WIN32
#include <io.h>
#else
#include <unistd.h>
int pos=fileName.find(ext,0);
int pos1=fileName.rfind('/');
if ( pos < 0 || pos >= (int)fileName.size() ) pos = fileName.size();
-#ifdef WNT
+#ifdef WIN32
if ( pos1 < 0 || pos1 >= (int)fileName.size() ) pos1 = fileName.rfind('\\');
#endif
if ( pos1 < 0 || pos1 >= (int)fileName.size() ) pos1 = -1;
// if ( aMode != MED_EN::MED_LECT && aMode != MED_EN::MED_REMP )
// throw MEDEXCEPTION(LOCALIZED(STRING(LOC) << " Bad file mode access ! " << aMode));
-#ifdef WNT
+#ifdef WIN32
_File = ::_open (_fileName.c_str(), _O_RDONLY|_O_BINARY);
#else
_File = ::open (_fileName.c_str(), O_RDONLY);
xdr_destroy((XDR*)_xdrs);
free((XDR*)_xdrs);
fclose(_xdrs_file);
-#ifdef WNT
+#ifdef WIN32
_File = ::_open (_fileName.c_str(), _O_RDONLY|_O_BINARY);
#else
::close (_File); // ? needed ?
}
//change for windows compilation
if ( !_gibi ||
-#ifdef WNT
+#ifdef WIN32
!_gibi.is_open()
#else
!_gibi.rdbuf()->is_open()
#include <iomanip>
/////
-#ifdef WNT
+#ifdef WIN32
#else
#define HAS_XDR
#endif
if (traceKind == NULL)
{
-#ifndef WNT
+#ifndef WIN32
setenv("SALOME_trace","local",1);
#else
_putenv("SALOME_trace=%TEMP%\\local");
const string ext=".inp"; // expected extension
string::size_type pos=fileName.find(ext,0);
string::size_type pos1=fileName.rfind('/');
-#ifdef WNT
+#ifdef WIN32
if (pos1 == string::npos ) pos1=fileName.rfind('\\');
#endif
if (pos1 != string::npos )
// the directory name will be used to locate the files included in _fileName.
string dirName;
string::size_type pos=_fileName.rfind('/');
-#ifdef WNT
+#ifdef WIN32
if (pos == string::npos ) pos=_fileName.rfind('\\');
#endif
if (pos != string::npos )
#include "MEDMEM_CellModel.hxx"
#include "MEDMEM_VtkMeshDriver.hxx"
-#ifdef WNT
+#ifdef WIN32
#include <io.h>
#else
#include <unistd.h>
// check if dataStr is already present in the file
bool toWriteDataStr = true;
-#ifdef WNT
+#ifdef WIN32
int vtkFile = ::_open (_fileName.c_str(), _O_RDONLY|_O_BINARY);
#else
int vtkFile = ::open (_fileName.c_str(), O_RDONLY);
#endif
if ( vtkFile > 0 )
{
-#ifdef WNT
+#ifdef WIN32
ssize_t fileSize = ::_lseek( vtkFile, 0, SEEK_END); ::lseek( vtkFile, 0, SEEK_SET);
char* buf = new char[ fileSize ];
::_read (vtkFile, buf, fileSize );
while ( ++vtkData < vtkDataEnd && toWriteDataStr )
toWriteDataStr = ( strncmp( dataStr.data(), vtkData, dataStr.size()) != 0 );
delete [] buf;
-#ifdef WNT
+#ifdef WIN32
::_close (vtkFile);
#else
::close (vtkFile);
// opening
_VTK_BinaryWriter* mutableMe =(_VTK_BinaryWriter*) this;
int append_flag = 0;
-#ifdef WNT
+#ifdef WIN32
if ( append ) append_flag = _O_APPEND;
mutableMe->_binaryFile = ::_open (_fileName.c_str(), _O_WRONLY|_O_BINARY|append_flag);
#else
{
if ( _binaryFile )
{
-#ifdef WNT
+#ifdef WIN32
::_close (_binaryFile);
#else
::close (_binaryFile);
while ( ++intBuf < bufEnd )
*intBuf = swapBytes( *intBuf );
}
-#ifdef WNT
+#ifdef WIN32
ssize_t nbWritten = ::_write( _binaryFile, toWrite, nbValues * sizeof(T));
#else
ssize_t nbWritten = ::write( _binaryFile, toWrite, nbValues * sizeof(T));
SET(test_MEDMEM_MeshingFlica_SOURCES test_MEDMEM_MeshingFlica.cxx)
SET(testConvertPolygon_SOURCES testConvertPolygon.cxx)
+SET(create_mesh_SOURCES create_mesh.c)
+SET(create_mesh_c2q4s2_SOURCES create_mesh_c2q4s2.c)
+SET(create_mesh_c3h8q4_SOURCES create_mesh_c3h8q4.c)
+SET(create_mesh_c3h8q4_wrong_SOURCES create_mesh_c3h8q4_wrong.c)
+SET(create_mesh_c2q4s2_wrong_SOURCES create_mesh_c2q4s2_wrong.c)
+SET(create_grid_SOURCES create_grid.c)
+SET(create_mesh_c2q4_SOURCES create_mesh_c2q4.c)
+SET(create_mesh_c3h8_SOURCES create_mesh_c3h8.c)
+SET(create_poly3D_SOURCES create_poly3D.c)
SET(ALLMEDMEMBIN_TESTS
dumpInterpolation
testAnalFile
test_MEDMEM_MeshingFlica
testConvertPolygon
+ create_mesh
+ create_mesh_c2q4s2
+ create_mesh_c3h8q4
+ create_mesh_c3h8q4_wrong
+ create_mesh_c2q4s2_wrong
+ create_grid
+ create_mesh_c2q4
+ create_mesh_c3h8
+ create_poly3D
)
FOREACH(ALLMEDMEMBIN_TEST ${ALLMEDMEMBIN_TESTS})
ADD_EXECUTABLE(${ALLMEDMEMBIN_TEST} ${${ALLMEDMEMBIN_TEST}_SOURCES})
- SET_TARGET_PROPERTIES(${ALLMEDMEMBIN_TEST} PROPERTIES COMPILE_FLAGS "${HDF5_DEFINITIONS} ${MED3_DEFINITIONS} ${XDR_DEFINITIONS}")
- TARGET_LINK_LIBRARIES(${ALLMEDMEMBIN_TEST} medmem)
+ SET_TARGET_PROPERTIES(${ALLMEDMEMBIN_TEST} PROPERTIES COMPILE_FLAGS "${HDF5_DEFINITIONS} ${MED3_DEFINITIONS} ${XDR_DEFINITIONS} ${PLATFORM_DEFINITIONS}")
+ TARGET_LINK_LIBRARIES(${ALLMEDMEMBIN_TEST} medmem ${PLATFORM_LIBS})
ENDFOREACH(ALLMEDMEMBIN_TEST ${ALLMEDMEMBIN_TESTS})
INSTALL(TARGETS ${ALLMEDMEMBIN_TESTS} DESTINATION ${MED_salomebin_BINS})
SET(MEDMEMBINTEST_PYOPT_TEST -c"import sys;import os;import subprocess;os.putenv(\"srcdir\",sys.argv[1]);sys.exit(subprocess.call([\"sh\",sys.argv[2]]))")
+
ADD_TEST(check_convertToPoly ${PYTHON_EXECUTABLE} ${MEDMEMBINTEST_PYOPT_TEST} ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_SOURCE_DIR}/scripts/check_convertToPoly)
ADD_TEST(check_duplicateMED ${PYTHON_EXECUTABLE} ${MEDMEMBINTEST_PYOPT_TEST} ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_SOURCE_DIR}/scripts/check_duplicateMED)
ADD_TEST(check_ensight2med ${PYTHON_EXECUTABLE} ${MEDMEMBINTEST_PYOPT_TEST} ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_SOURCE_DIR}/scripts/check_ensight2med)
//
#include "MEDMEM_Mesh.hxx"
-#ifdef WNT
+#ifdef WIN32
#include <io.h>
#define access _access
#define W_OK 02
#include "MEDMEM_Meshing.hxx"
#include "MEDMEM_Group.hxx"
#include "MEDMEM_Field.hxx"
-#ifdef WNT
+#ifdef WIN32
#include <io.h>
#define access _access
#define W_OK 02
#include "MEDMEM_Meshing.hxx"
#include "MEDMEM_Group.hxx"
-#ifdef WNT
+#ifdef WIN32
#include <io.h>
#define access _access
#define W_OK 02
//
#include "MEDMEM_Meshing.hxx"
#include "MEDMEM_DriverFactory.hxx"
-#ifdef WNT
+#ifdef WIN32
#include <io.h>
#define access _access
#define W_OK 02
)
ADD_LIBRARY(MEDMEMCppTest SHARED ${MEDMEMCppTest_SOURCES})
-SET_TARGET_PROPERTIES(MEDMEMCppTest PROPERTIES COMPILE_FLAGS "${HDF5_DEFINITIONS} ${MED3_DEFINITIONS} ${XDR_DEFINITIONS} ${CPPUNIT_DEFINITIONS}")
+SET_TARGET_PROPERTIES(MEDMEMCppTest PROPERTIES COMPILE_FLAGS "${HDF5_DEFINITIONS} ${MED3_DEFINITIONS} ${XDR_DEFINITIONS} ${CPPUNIT_DEFINITIONS} ${PLATFORM_DEFINITIONS}")
TARGET_LINK_LIBRARIES(MEDMEMCppTest medmem ${CPPUNIT_LIBS})
SET(ALLMEDMEMCPP_TESTS TestMEDMEM MEDMEMTest_Array_fault MEDMEMTest_Connectivity_fault MEDMEMTest_Coordinate_fault MEDMEMTest_Family_fault MEDMEMTest_Field_fault MEDMEMTest_Grid_fault MEDMEMTest_MeshAndMeshing_fault MEDMEMTest_Support_fault MEDMEMTest_VtkFieldDriver_fault MEDMEMTest_VtkMeshDriver_fault)
FOREACH(MEDMEMCPP_TEST ${ALLMEDMEMCPP_TESTS})
ADD_EXECUTABLE(${MEDMEMCPP_TEST} ${${MEDMEMCPP_TEST}_SOURCES})
- SET_TARGET_PROPERTIES(${MEDMEMCPP_TEST} PROPERTIES COMPILE_FLAGS "${HDF5_DEFINITIONS} ${MED3_DEFINITIONS} ${XDR_DEFINITIONS}")
- TARGET_LINK_LIBRARIES(${MEDMEMCPP_TEST} MEDMEMCppTest)
+ SET_TARGET_PROPERTIES(${MEDMEMCPP_TEST} PROPERTIES COMPILE_FLAGS "${HDF5_DEFINITIONS} ${MED3_DEFINITIONS} ${XDR_DEFINITIONS} ${PLATFORM_DEFINITIONS}")
+ TARGET_LINK_LIBRARIES(${MEDMEMCPP_TEST} MEDMEMCppTest ${PLATFORM_LIBS})
ENDFOREACH(MEDMEMCPP_TEST ${ALLMEDMEMCPP_TESTS})
INSTALL(TARGETS MEDMEMCppTest DESTINATION ${MED_salomelib_LIBS})
INSTALL(TARGETS ${ALLMEDMEMCPP_TESTS} DESTINATION ${MED_salomebin_BINS})
+INSTALL(FILES testMEDMEM.py DESTINATION ${MED_salomebin_BINS})
+INSTALL(FILES MEDMEMTest.hxx MEDMEMCppTestExport.hxx DESTINATION ${MED_salomeinclude_HEADERS})
#ifndef _MEDMEMCPPTESTEXPORT_HXX_
#define _MEDMEMCPPTESTEXPORT_HXX_
-#ifdef WNT
+#ifdef WIN32
# if defined MEDMEMCppTest_EXPORTS
# define MEDMEMCPPTEST_EXPORT __declspec( dllexport )
# else
#include <cmath>
#include <stdexcept>
-#ifdef WNT
+#ifdef WIN32
#include <windows.h>
#endif
{
set<string>::iterator it = myTmpFiles.begin();
for (; it != myTmpFiles.end(); it++) {
-#ifdef WNT
+#ifdef WIN32
//if (GetFileAttributes((*it).data()) & FILE_ATTRIBUTE_NORMAL)
if (GetFileAttributes((*it).data()) != INVALID_FILE_ATTRIBUTES)
#else
#include <cppunit/Message.h>
#include <cppunit/TestAssert.h>
-#ifdef WNT
+#ifdef WIN32
#include <windows.h>
#endif
MEDMEM::GIBI_MESH_WRONLY_DRIVER *gibidriver=new MEDMEM::GIBI_MESH_WRONLY_DRIVER(tmpGibiFile,mesh );
id=mesh->addDriver(*gibidriver);
mesh->write(id);
-#ifdef WNT
+#ifdef WIN32
CPPUNIT_ASSERT( GetFileAttributes(tmpGibiFile.c_str()) != INVALID_FILE_ATTRIBUTES );
#else
CPPUNIT_ASSERT( access(tmpGibiFile.c_str(), F_OK) == 0 );
// #include <sstream>
// #include <cmath>
-#ifdef WNT
+#ifdef WIN32
#include <windows.h>
#endif
#include <list>
#include <stdexcept>
-#ifdef WNT
+#ifdef WIN32
#include <windows.h>
#else
#include <unistd.h>
std::string tmpd = "";
for ( std::list<std::string>::iterator dir = dirs.begin(); dir != dirs.end() && tmpd == "" ; ++dir ) {
-#ifdef WNT
+#ifdef WIN32
if ( GetFileAttributes(dir->data()) & FILE_ATTRIBUTE_DIRECTORY )
#else
if ( access( dir->data(), W_OK ) == 0 )
{
std::string tmpf = fixSlashes( getTmpDirectory() + "/" + tmpfile );
if ( srcfile != "" ) {
-#ifdef WNT
+#ifdef WIN32
std::string cmd = "copy " + fixSlashes( srcfile ) + " " + tmpf;
#else
std::string cmd = "cp " + srcfile + " " + tmpf + " ; chmod +w " + tmpf;
std::string fixSlashes( const std::string& path)
{
-#ifdef WNT
+#ifdef WIN32
std::string fixedpath = path;
for ( int i=0; i < path.size(); ++i )
if (path[i] == '/')
INCLUDE_DIRECTORIES(
${OMNIORB_INCLUDE_DIRS}
+ ${PTHREAD_INCLUDE_DIRS}
${MED3_INCLUDE_DIRS}
${HDF5_INCLUDE_DIRS}
${KERNEL_ROOT_DIR}/include/salome
)
ADD_LIBRARY(MEDMEMImpl SHARED ${MEDMEMImpl_SOURCES})
-SET_TARGET_PROPERTIES(MEDMEMImpl PROPERTIES COMPILE_FLAGS "${OMNIORB_DEFINITIONS} ${HDF5_DEFINITIONS} ${MED3_DEFINITIONS} ${XDR_DEFINITIONS}")
-TARGET_LINK_LIBRARIES(MEDMEMImpl medmem SalomeIDLMED)
+SET_TARGET_PROPERTIES(MEDMEMImpl PROPERTIES COMPILE_FLAGS "${OMNIORB_DEFINITIONS} ${HDF5_DEFINITIONS} ${MED3_DEFINITIONS} ${XDR_DEFINITIONS} ${PLATFORM_DEFINITIONS}")
+TARGET_LINK_LIBRARIES(MEDMEMImpl medmem SalomeIDLMED ${PLATFORM_LIBS} ${SalomeLifeCycleCORBA} ${SALOMELocalTrace} ${SalomeCommunication} ${SalomeGenericObj} ${SalomeNS} ${OpUtil})
+
INSTALL(TARGETS MEDMEMImpl DESTINATION ${MED_salomelib_LIBS})
FILE(GLOB MEDMEMImpl_HEADERS_HXX "${CMAKE_CURRENT_SOURCE_DIR}/*.hxx")
#ifndef _MEDMEM_I_HXX_
#define _MEDMEM_I_HXX_
-#ifdef WNT
+#ifdef WIN32
#if defined MEDMEM_I_EXPORTS || defined MEDMEMImpl_EXPORTS
#if defined WIN32
#define MEDMEM_I_EXPORT __declspec( dllexport )
SET_SOURCE_FILES_PROPERTIES(libMEDMEM_Swig.i PROPERTIES CPLUSPLUS ON)
SET_SOURCE_FILES_PROPERTIES(libMEDMEM_Swig.i PROPERTIES SWIG_DEFINITIONS "-shadow")
-SET_SOURCE_FILES_PROPERTIES(libMEDMEM_SwigPYTHON_wrap.cxx PROPERTIES COMPILE_FLAGS "${HDF5_DEFINITIONS} ${MED3_DEFINITIONS} ${XDR_DEFINITIONS}")
+SET_SOURCE_FILES_PROPERTIES(libMEDMEM_SwigPYTHON_wrap.cxx PROPERTIES COMPILE_FLAGS "${HDF5_DEFINITIONS} ${MED3_DEFINITIONS} ${XDR_DEFINITIONS} ${PLATFORM_DEFINITIONS}")
INCLUDE_DIRECTORIES(
${PYTHON_INCLUDE_DIRS}
)
SWIG_ADD_MODULE(libMEDMEM_Swig python libMEDMEM_Swig.i)
-SWIG_LINK_LIBRARIES(libMEDMEM_Swig ${PYTHON_LIBRARIES} medmem)
+SWIG_LINK_LIBRARIES(libMEDMEM_Swig ${PYTHON_LIBS} medmem)
+SET_TARGET_PROPERTIES(_libMEDMEM_Swig PROPERTIES COMPILE_FLAGS "${PLATFORM_DEFINITIONS}")
+IF(${MACHINE} STREQUAL WINDOWS)
+ SET_TARGET_PROPERTIES(_libMEDMEM_Swig PROPERTIES DEBUG_OUTPUT_NAME _libMEDMEM_Swig_d)
+ENDIF(${MACHINE} STREQUAL WINDOWS)
INSTALL(TARGETS _libMEDMEM_Swig DESTINATION ${MED_salomepythondir})
+
INSTALL(FILES libMEDMEM_Swig.i my_typemap.i MEDMEM_SWIG_Templates.hxx DESTINATION ${MED_salomeinclude_HEADERS})
-INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/libMEDMEM_Swig.py DESTINATION ${MED_salomescript_PYTHON})
-INSTALL(FILES med2sauv sauv2med avs2med DESTINATION ${MED_salomescript_PYTHON}
+INSTALL(FILES medutilities.py ${CMAKE_CURRENT_BINARY_DIR}/libMEDMEM_Swig.py DESTINATION ${MED_salomepythondir})
+SET(SCRIPTS
+ medmem.py
+ med_test1.py
+ med_test2.py
+ med_test3.py
+ med_test_grid.py
+ med_test_skin.py
+ medMeshing_test.py
+ med_field_anal.py
+ med_opfield_test.py
+ med_opsupp_test.py
+ test_gibi.py
+ test_porflow.py
+ testDriverAscii.py
+ testGaussLocalization.py
+ test_profil_MedFieldDriver.py
+ testWriteAndFam.py
+ testMedMemGeneral.py
+ testMedMemCxxTests.py
+ dumpMEDMEM.py
+ ensightMedEnsight_test.py
+ medEnsightMed_test.py
+ medNumPy_test.py
+ med2sauv
+ sauv2med
+ avs2med
+)
+INSTALL(FILES ${SCRIPTS} DESTINATION ${MED_salomescript_PYTHON}
PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE)
--- /dev/null
+# Copyright (C) 2007-2012 CEA/DEN, EDF R&D
+#
+# 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.salome-platform.org/ or email : webmaster.salome@opencascade.com
+#
+
+ADD_SUBDIRECTORY(cmp)
+ADD_SUBDIRECTORY(tui)
+ADD_SUBDIRECTORY(res)
+ADD_SUBDIRECTORY(gui)
+ADD_SUBDIRECTORY(exe)
+ADD_SUBDIRECTORY(doc)
--- /dev/null
+# Copyright (C) 2007-2012 CEA/DEN, EDF R&D, OPEN CASCADE
+#
+# 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.salome-platform.org/ or email : webmaster.salome@opencascade.com
+#
+
+# This folder contains the packages for the MED fields operations:
+# - cmp: package containing the SALOME components
+# - tui: package containing the python user interface
+# - gui: package containing the graphical user interface (the GUI part of the MED module)
+# - res: folder containing data files (resources)
+# - exe: folder containing small executable programs for MED data processing
+# - doc: folder containing the documentation of the MEDOP package
+
+SUBDIRS= cmp tui res gui exe doc/sphinx
+
+EXTRA_DIST = README.txt
--- /dev/null
+This folder contains the packages for the MED fields operations:
+- cmp: package containing the SALOME components
+- tui: package containing the python user interface
+- gui: package containing the graphical user interface (the GUI part of the MED module)
+- res: resources files associated to the MEDOP package (icons, config files, data files, ...)
+
--- /dev/null
+# Copyright (C) 2007-2012 CEA/DEN, EDF R&D, OPEN CASCADE
+#
+# 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.salome-platform.org/ or email : webmaster.salome@opencascade.com
+#
+
+INCLUDE_DIRECTORIES(
+ ${OMNIORB_INCLUDE_DIRS}
+ ${MED3_INCLUDE_DIRS}
+ ${HDF5_INCLUDE_DIRS}
+ ${PTHREAD_INCLUDE_DIRS}
+ ${KERNEL_ROOT_DIR}/include/salome
+ ${CMAKE_CURRENT_BINARY_DIR}
+ ${CMAKE_BINARY_DIR}/idl
+ ${CMAKE_SOURCE_DIR}/src/MEDCoupling
+ ${CMAKE_SOURCE_DIR}/src/INTERP_KERNEL/Bases
+ ${CMAKE_SOURCE_DIR}/src/INTERP_KERNEL
+ ${CMAKE_SOURCE_DIR}/src/MEDLoader
+)
+
+SET(MEDOPFactoryEngine_SOURCES
+ MEDDataManager_i.cxx
+ MEDCalculator_i.cxx
+ MEDOPFactory_i.cxx
+)
+SET(COMMON_LIBS
+ medloader
+ SalomeIDLMED
+ ${TOOLSDS}
+ ${SalomeHDFPersist}
+ ${SalomeContainer}
+ ${SalomeCommunication}
+ ${SalomeKernelHelpers}
+ ${SalomeLifeCycleCORBA}
+ ${SALOMELocalTrace}
+ ${SALOMEBasics}
+ ${SalomeGenericObj}
+ medcoupling
+ interpkernel
+ ${MED3_LIBS}
+ ${HDF5_LIBS}
+ ${OMNIORB_LIBS}
+ ${PLATFORM_LIBS}
+)
+SET(COMMON_FLAGS "${HDF5_DEFINITIONS} ${MED3_DEFINITIONS} ${PLATFORM_DEFINITIONS} ${OMNIORB_DEFINITIONS}")
+# This undefines the macros MIN and MAX which are specified in the windows headers
+IF(WINDOWS)
+ SET(COMMON_FLAGS "${COMMON_FLAGS} -DNOMINMAX")
+ENDIF(WINDOWS)
+
+ADD_LIBRARY(MEDOPFactoryEngine SHARED ${MEDOPFactoryEngine_SOURCES})
+SET_TARGET_PROPERTIES(MEDOPFactoryEngine PROPERTIES COMPILE_FLAGS "${COMMON_FLAGS}")
+TARGET_LINK_LIBRARIES(MEDOPFactoryEngine SalomeIDLMED ${COMMON_LIBS})
+
+INSTALL(TARGETS MEDOPFactoryEngine DESTINATION ${MED_salomelib_LIBS})
+
+FILE(GLOB MEDOPFactoryEngine_HEADERS_HXX "${CMAKE_CURRENT_SOURCE_DIR}/*.hxx")
+INSTALL(FILES ${MEDOPFactoryEngine_HEADERS_HXX} DESTINATION ${MED_salomeinclude_HEADERS})
+
+INSTALL(FILES test_medop_components.py PERMISSIONS OWNER_EXECUTE OWNER_WRITE OWNER_READ GROUP_EXECUTE GROUP_READ WORLD_EXECUTE WORLD_READ DESTINATION ${MED_salomebin_BINS}/xmed)
--- /dev/null
+// Copyright (C) 2011 CEA/DEN, EDF R&D, OPEN CASCADE
+//
+// 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.salome-platform.org/ or email : webmaster.salome@opencascade.com
+//
+// Authors : Guillaume Boulant (EDF) - 01/06/2011
+
+#include "MEDCalculator_i.hxx"
+#include "SALOME_KernelServices.hxx"
+#include "Basics_Utils.hxx"
+#include <string>
+
+#include "MEDCouplingFieldDouble.hxx"
+using namespace ParaMEDMEM;
+
+MEDCalculator_i * MEDCalculator_i::_instance = NULL;
+
+MEDCalculator_i * MEDCalculator_i::getInstance() {
+ if ( _instance == NULL ) {
+ _instance = new MEDCalculator_i();
+ }
+ return _instance;
+}
+
+MEDCalculator_i::MEDCalculator_i()
+{
+ LOG("Creating a MEDCalculator_i instance");
+ _medDataManager = MEDDataManager_i::getInstance();
+}
+
+MEDCalculator_i::~MEDCalculator_i()
+{
+ LOG("Deleting MEDCalculator_i instance");
+}
+
+/*!
+ * This function realizes the addition of the MEDCoupling field
+ * objects identified by the FieldHandler objects passed in arguments.
+ *
+ * It returns a FieldHandler that identifies the resulting MEDCoupling
+ * field object. The resulting MEDCoupling field object is physically
+ * in the SALOME MED container and is automatically registered in the
+ * MEDDataManager.
+ */
+MEDOP::FieldHandler * MEDCalculator_i::add(const MEDOP::FieldHandler & f1_hdl,
+ const MEDOP::FieldHandler & f2_hdl)
+{
+ // We first check that both operandes share the same mesh id. Note
+ // that it's not strictly required because the MEDCoupling operation
+ // would raise an exception if the fields does not share the same
+ // mesh support.
+ if ( f1_hdl.meshid != f2_hdl.meshid ) {
+ std::string message =
+ std::string("ERROR: Mesh ids are different for the field operandes ") +
+ std::string(f1_hdl.fieldname) + std::string(" and ") + std::string(f2_hdl.fieldname);
+ throw KERNEL::createSalomeException(message.c_str());
+ }
+
+ MEDCouplingFieldDouble* f1 = _medDataManager->getFieldDouble(&f1_hdl);
+ MEDCouplingFieldDouble* f2 = _medDataManager->getFieldDouble(&f2_hdl);
+
+ MEDCouplingFieldDouble* field_result;
+ // This operation could raise an INTERP_KERNEL exception, for
+ // example, if the fields are not defined on the same support.
+ try {
+ field_result = (*f1) + (*f2);
+ }
+ catch (INTERP_KERNEL::Exception &ex) {
+ throw KERNEL::createSalomeException(ex.what());
+ }
+
+ std::string name = std::string(f1->getName()) + "+" + std::string(f2->getName());
+ field_result->setName(name.c_str());
+
+ //
+ // The field must be registered in the dataManager structure so
+ // that it could be reused in a future operation (in particular for
+ // a manipulation that combine several operation as "r = f1+f2+f3",
+ // the operator will try to make the addition f1+f2 and then
+ // resultof(f1+f2) + f3. This last operation will fail if the field
+ // resultof(f1+f2) is not in the dataManager structure).
+ //
+ // Note that we choose arbitrary the first field operande to get the
+ // meshid (both have the same meshid).
+ //
+ long meshHandlerId = f1_hdl.meshid;
+ MEDOP::FieldHandler * fieldResultHandler = _medDataManager->addField(field_result,
+ meshHandlerId);
+
+ // >>>>>>>>>
+ // _GBO_ We should test here if the iteration and order of the input
+ // files are identical for both operandes. A convention has to be
+ // defined here. By default, we let the iteration and order be
+ // determined by the resulting MEDCouplingFieldDouble instance (see
+ // function addField of the data manager).
+ // <<<<<<<<<
+
+ return fieldResultHandler;
+}
+
+/*!
+ * This function realizes the substraction of the MEDCoupling field
+ * objects identified by the FieldHandler objects passed in arguments.
+ *
+ * It returns a FieldHandler that identifies the resulting MEDCoupling
+ * field object. The resulting MEDCoupling field object is physically
+ * in the SALOME MED container and is automatically registered in the
+ * MEDDataManager.
+ */
+MEDOP::FieldHandler * MEDCalculator_i::sub(const MEDOP::FieldHandler & f1_hdl,
+ const MEDOP::FieldHandler & f2_hdl)
+{
+ if ( f1_hdl.meshid != f2_hdl.meshid ) {
+ std::string message =
+ std::string("ERROR: Mesh ids are different for the field operandes ") +
+ std::string(f1_hdl.fieldname) + std::string(" and ") + std::string(f2_hdl.fieldname);
+ throw KERNEL::createSalomeException(message.c_str());
+ }
+
+ MEDCouplingFieldDouble* f1 = _medDataManager->getFieldDouble(&f1_hdl);
+ MEDCouplingFieldDouble* f2 = _medDataManager->getFieldDouble(&f2_hdl);
+
+ MEDCouplingFieldDouble* field_result;
+ try {
+ field_result = (*f1) - (*f2);
+ }
+ catch (INTERP_KERNEL::Exception &ex) {
+ throw KERNEL::createSalomeException(ex.what());
+ }
+
+ std::string name = std::string(f1->getName()) + "-" + std::string(f2->getName());
+ field_result->setName(name.c_str());
+
+ long meshHandlerId = f1_hdl.meshid;
+ MEDOP::FieldHandler * fieldResultHandler = _medDataManager->addField(field_result,
+ meshHandlerId);
+ return fieldResultHandler;
+}
+
+/*!
+ * This function realizes the multiplication of the MEDCoupling field
+ * objects identified by the FieldHandler objects passed in arguments.
+ *
+ * It returns a FieldHandler that identifies the resulting MEDCoupling
+ * field object. The resulting MEDCoupling field object is physically
+ * in the SALOME MED container and is automatically registered in the
+ * MEDDataManager.
+ */
+MEDOP::FieldHandler * MEDCalculator_i::mul(const MEDOP::FieldHandler & f1_hdl,
+ const MEDOP::FieldHandler & f2_hdl)
+{
+ if ( f1_hdl.meshid != f2_hdl.meshid ) {
+ std::string message =
+ std::string("ERROR: Mesh ids are different for the field operandes ") +
+ std::string(f1_hdl.fieldname) + std::string(" and ") + std::string(f2_hdl.fieldname);
+ throw KERNEL::createSalomeException(message.c_str());
+ }
+
+ MEDCouplingFieldDouble* f1 = _medDataManager->getFieldDouble(&f1_hdl);
+ MEDCouplingFieldDouble* f2 = _medDataManager->getFieldDouble(&f2_hdl);
+
+ MEDCouplingFieldDouble* field_result;
+ try {
+ field_result = (*f1) * (*f2);
+ }
+ catch (INTERP_KERNEL::Exception &ex) {
+ throw KERNEL::createSalomeException(ex.what());
+ }
+ std::string name = std::string(f1->getName()) + "*" + std::string(f2->getName());
+ field_result->setName(name.c_str());
+
+ long meshHandlerId = f1_hdl.meshid;
+ MEDOP::FieldHandler * fieldResultHandler = _medDataManager->addField(field_result,
+ meshHandlerId);
+ return fieldResultHandler;
+}
+
+/*!
+ * This function realizes the division of the MEDCoupling field
+ * objects identified by the FieldHandler objects passed in arguments.
+ *
+ * It returns a FieldHandler that identifies the resulting MEDCoupling
+ * field object. The resulting MEDCoupling field object is physically
+ * in the SALOME MED container and is automatically registered in the
+ * MEDDataManager.
+ */
+MEDOP::FieldHandler * MEDCalculator_i::div(const MEDOP::FieldHandler & f1_hdl,
+ const MEDOP::FieldHandler & f2_hdl)
+{
+ if ( f1_hdl.meshid != f2_hdl.meshid ) {
+ std::string message =
+ std::string("ERROR: Mesh ids are different for the field operandes ") +
+ std::string(f1_hdl.fieldname) + std::string(" and ") + std::string(f2_hdl.fieldname);
+ throw KERNEL::createSalomeException(message.c_str());
+ }
+
+ MEDCouplingFieldDouble* f1 = _medDataManager->getFieldDouble(&f1_hdl);
+ MEDCouplingFieldDouble* f2 = _medDataManager->getFieldDouble(&f2_hdl);
+
+ MEDCouplingFieldDouble* field_result;
+ try {
+ field_result = (*f1) / (*f2);
+ }
+ catch (INTERP_KERNEL::Exception &ex) {
+ throw KERNEL::createSalomeException(ex.what());
+ }
+
+ std::string name = std::string(f1->getName()) + "/" + std::string(f2->getName());
+ field_result->setName(name.c_str());
+
+ long meshHandlerId = f1_hdl.meshid;
+ MEDOP::FieldHandler * fieldResultHandler = _medDataManager->addField(field_result,
+ meshHandlerId);
+ return fieldResultHandler;
+}
+
+/*!
+ * This function realizes the power of the MEDCoupling field
+ * object identified by the FieldHandler object passed in argument.
+ *
+ * It returns a FieldHandler that identifies the resulting MEDCoupling
+ * field object. The resulting MEDCoupling field object is physically
+ * in the SALOME MED container and is automatically registered in the
+ * MEDDataManager.
+ */
+MEDOP::FieldHandler * MEDCalculator_i::pow(const MEDOP::FieldHandler & f_hdl, CORBA::Long power)
+{
+ MEDCouplingFieldDouble* field = _medDataManager->getFieldDouble(&f_hdl);
+
+ // We use the applyFunc function to execute this operation. The
+ // applyFunc function modifies the original field (that is not what
+ // we want). So we have first to make a deep copy.
+ MEDCouplingFieldDouble* field_result;
+ try {
+ field_result = field->clone(true);
+ string functionToApply = "u^"+ToString(power);
+ field_result->applyFunc(functionToApply.c_str());
+ }
+ catch (INTERP_KERNEL::Exception &ex) {
+ throw KERNEL::createSalomeException(ex.what());
+ }
+
+ // Set the name (the default is the same as the original field)
+ string name(field_result->getName());
+ name.append("^");
+ name.append(ToString(power));
+ field_result->setName(name.c_str());
+
+ long meshHandlerId = f_hdl.meshid;
+ MEDOP::FieldHandler * fieldResultHandler = _medDataManager->addField(field_result,
+ meshHandlerId);
+ return fieldResultHandler;
+}
+
+/*!
+ * This function creates a new field as the linear transformation of
+ * the field object identified by the FieldHandler in argument. The
+ * transformation is y= factor*x + offset.
+ *
+ * It returns a FieldHandler that identifies the resulting MEDCoupling
+ * field object. The resulting MEDCoupling field object is physically
+ * in the SALOME MED container and is automatically registered in the
+ * MEDDataManager.
+ */
+MEDOP::FieldHandler * MEDCalculator_i::lin(const MEDOP::FieldHandler & f_hdl, double factor, double offset)
+{
+ MEDCouplingFieldDouble* field = _medDataManager->getFieldDouble(&f_hdl);
+
+ // We use the applyFunc function to execute this operation. The
+ // applyFunc function modifies the original field (that is not what
+ // we want). So we have first to make a deep copy.
+ MEDCouplingFieldDouble* field_result;
+ try {
+ field_result = field->clone(true);
+ string functionToApply = "u*"+ToString(factor)+"+"+ToString(offset);
+ field_result->applyFunc(functionToApply.c_str());
+ }
+ catch (INTERP_KERNEL::Exception &ex) {
+ throw KERNEL::createSalomeException(ex.what());
+ }
+
+ // Set the name (the default is the same as the original field)
+ string name = string("lin(");
+ name.append(field->getName());
+ name.append(",factor=");
+ name.append(ToString(factor));
+ name.append(",offset=");
+ name.append(ToString(offset));
+ name.append(")");
+ field_result->setName(name.c_str());
+
+ long meshHandlerId = f_hdl.meshid;
+ MEDOP::FieldHandler * fieldResultHandler = _medDataManager->addField(field_result,
+ meshHandlerId);
+ return fieldResultHandler;
+
+}
+
+/*!
+ * This function creates a new field as the duplicate of the field
+ * object identified by the FieldHandler in argument.
+ *
+ * It returns a FieldHandler that identifies the resulting MEDCoupling
+ * field object. The resulting MEDCoupling field object is physically
+ * in the SALOME MED container and is automatically registered in the
+ * MEDDataManager.
+ */
+MEDOP::FieldHandler * MEDCalculator_i::dup(const MEDOP::FieldHandler & f_hdl)
+{
+ MEDCouplingFieldDouble* field = _medDataManager->getFieldDouble(&f_hdl);
+
+ // We just make a deep copy of the input field
+ MEDCouplingFieldDouble* field_result;
+ try {
+ field_result = field->clone(true);
+ }
+ catch (INTERP_KERNEL::Exception &ex) {
+ throw KERNEL::createSalomeException(ex.what());
+ }
+
+ // Set the name (the default is the same as the original field)
+ string name = string("dup(");
+ name.append(field->getName());
+ name.append(")");
+ field_result->setName(name.c_str());
+
+ long meshHandlerId = f_hdl.meshid;
+ MEDOP::FieldHandler * fieldResultHandler = _medDataManager->addField(field_result,
+ meshHandlerId);
+ return fieldResultHandler;
+}
+
+/*!
+ * This creates a new field by applying a function on the specified
+ * field. The function is defined by a string of characters
+ * (function), that specifies the litteral equation to apply, and an
+ * integer (nbcomponents), that specifies the number of components to
+ * consider in the resulting field. This is to mimic the interface of
+ * MEDCouplingFieldDouble::applyFunc.
+ * Note that if nbcomponents is not in the range 1..N where N is the
+ * number of components of the specified field, then the function is
+ * apply on the whole field (as if specified N=numberOfComponents).
+ */
+MEDOP::FieldHandler * MEDCalculator_i::fct(const MEDOP::FieldHandler & f_hdl,
+ const char * function, CORBA::Long nbResComponents)
+{
+ MEDCouplingFieldDouble* field = _medDataManager->getFieldDouble(&f_hdl);
+
+ // We first make a deep copy of the input field
+ MEDCouplingFieldDouble* field_result;
+ try {
+ field_result = field->clone(true);
+ if ( (nbResComponents == MEDOP::NBCOMP_DEFAULT ) ||
+ (nbResComponents < 1) || (nbResComponents > field_result->getNumberOfComponents()) ) {
+ field_result->applyFunc(function);
+ }
+ else {
+ field_result->applyFunc(nbResComponents,function);
+ }
+ }
+ catch (INTERP_KERNEL::Exception &ex) {
+ throw KERNEL::createSalomeException(ex.what());
+ }
+
+ string name = string("fct("); name.append(field->getName());
+ name.append(",\""); name.append(function);
+ name.append(",\""); name.append(ToString(nbResComponents)); name.append("\")");
+ field_result->setName(name.c_str());
+
+ long meshHandlerId = f_hdl.meshid;
+ MEDOP::FieldHandler * fieldResultHandler = _medDataManager->addField(field_result,
+ meshHandlerId);
+ return fieldResultHandler;
+}
--- /dev/null
+// Copyright (C) 2007-2012 CEA/DEN, EDF R&D, OPEN CASCADE
+//
+// Copyright (C) 2003-2007 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.salome-platform.org/ or email : webmaster.salome@opencascade.com
+//
+
+// Authors : Guillaume Boulant (EDF) - 01/06/2011
+
+#ifndef _MED_CALCULATOR_I_HXX_
+#define _MED_CALCULATOR_I_HXX_
+
+#include <SALOMEconfig.h>
+#include CORBA_SERVER_HEADER(MEDDataManager)
+#include CORBA_SERVER_HEADER(MEDCalculator)
+#include "SALOME_GenericObj_i.hh"
+
+#include "MEDDataManager_i.hxx"
+
+#include "MEDOP.hxx"
+class MEDOP_EXPORT MEDCalculator_i: public POA_MEDOP::MEDCalculator,
+ public SALOME::GenericObj_i
+{
+public:
+
+ //
+ // ===========================================================
+ // Functions specified in the IDL interface
+ // ===========================================================
+ //
+ MEDOP::FieldHandler * add(const MEDOP::FieldHandler & f1_hdl, const MEDOP::FieldHandler & f2_hdl);
+ MEDOP::FieldHandler * sub(const MEDOP::FieldHandler & f1_hdl, const MEDOP::FieldHandler & f2_hdl);
+ MEDOP::FieldHandler * mul(const MEDOP::FieldHandler & f1_hdl, const MEDOP::FieldHandler & f2_hdl);
+ MEDOP::FieldHandler * div(const MEDOP::FieldHandler & f1_hdl, const MEDOP::FieldHandler & f2_hdl);
+ MEDOP::FieldHandler * pow(const MEDOP::FieldHandler & f_hdl, CORBA::Long power);
+ MEDOP::FieldHandler * lin(const MEDOP::FieldHandler & f_hdl, double factor, double offset);
+ MEDOP::FieldHandler * dup(const MEDOP::FieldHandler & f_hdl);
+
+ MEDOP::FieldHandler * fct(const MEDOP::FieldHandler & f_hdl,
+ const char * function, CORBA::Long nbResComponents);
+
+ //
+ // ===========================================================
+ // Other public functions (non available via CORBA)
+ // ===========================================================
+ //
+ static MEDCalculator_i * getInstance();
+
+private:
+ MEDCalculator_i();
+ ~MEDCalculator_i();
+
+ // The MEDCalculator is a singleton, whose instance can be obtained
+ // using the getInstance static method.
+ static MEDCalculator_i * _instance;
+
+ MEDDataManager_i * _medDataManager;
+};
+
+#endif // _MED_CALCULATOR_I_HXX_
--- /dev/null
+// Copyright (C) 2007-2012 CEA/DEN, EDF R&D, OPEN CASCADE
+//
+// Copyright (C) 2003-2007 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.salome-platform.org/ or email : webmaster.salome@opencascade.com
+//
+
+// Authors : Guillaume Boulant (EDF) - 01/06/2011
+
+#include "MEDDataManager_i.hxx"
+#include "SALOME_KernelServices.hxx"
+#include "Basics_DirUtils.hxx"
+#include "Basics_Utils.hxx"
+
+#include "MEDLoader.hxx"
+using namespace ParaMEDMEM;
+
+#include <string>
+#include <vector>
+using namespace std;
+
+MEDDataManager_i * MEDDataManager_i::_instance = NULL;
+long MEDDataManager_i::LONG_UNDEFINED = -1;
+
+MEDDataManager_i * MEDDataManager_i::getInstance() {
+ // _GBO_ we will certainly need to define one single DataManager per
+ // SALOME study and not one singleton for the whole session
+ if ( _instance == NULL ) {
+ _instance = new MEDDataManager_i();
+ }
+ return _instance;
+}
+
+#define IOR_UNDEF "IOR UNDEFINED"
+MEDDataManager_i::MEDDataManager_i()
+{
+ LOG("Creating a MEDDataManager_i instance");
+ _fieldLastId = 0;
+ _sourceLastId = 0;
+ _meshLastId = 0;
+ _fieldseriesLastId = 0;
+ _medEventListenerIOR = NULL;
+}
+MEDDataManager_i::~MEDDataManager_i()
+{
+ LOG("Deleting MEDDataManager_i instance");
+}
+
+const char * MEDDataManager_i::file_to_source(const char * filepath)
+{
+ string * source = new string("file://");
+ source->append(filepath);
+ return source->c_str();;
+}
+const char * MEDDataManager_i::source_to_file(const char * source)
+{
+ string * filepath = new string(source);
+ filepath->replace(0,7,"");
+ return filepath->c_str();
+}
+
+/*!
+ * This function loads the meta-data from the specified med file and
+ * returns the associated datasource handler. The data source handler
+ * is a key to retrieve all informations concerning the data (meshes,
+ * fields).
+ */
+MEDOP::DatasourceHandler * MEDDataManager_i::addDatasource(const char *filepath) {
+
+ // We first check that this datasource is not already registered
+ long sourceid = getDatasourceId(filepath);
+ if ( sourceid != LONG_UNDEFINED ) {
+ // The file is already registered under the identifier sourceid
+ LOG("WRN: The file "<<filepath<<" is already registered with id="<<ToString(sourceid));
+ return new MEDOP::DatasourceHandler(*_datasourceHandlerMap[sourceid]);
+ }
+
+ // Then we check that the file is readable by MEDLoader
+ MEDLoader::CheckFileForRead(filepath);
+
+ // Initialise the datasource handler
+ MEDOP::DatasourceHandler * datasourceHandler = new MEDOP::DatasourceHandler();
+ datasourceHandler->id = _sourceLastId; _sourceLastId++;
+ datasourceHandler->name = (Kernel_Utils::GetBaseName(filepath)).c_str();
+ datasourceHandler->uri = file_to_source(filepath);
+ _datasourceHandlerMap[datasourceHandler->id] = datasourceHandler;
+
+ // We start by read the list of meshes (spatial supports of fields)
+ vector<string> meshNames = MEDLoader::GetMeshNames(filepath);
+ int nbOfMeshes = meshNames.size();
+ for (int iMesh = 0; iMesh < nbOfMeshes; iMesh++) {
+ const char * meshName = meshNames[iMesh].c_str();
+ LOG("name of mesh " << iMesh << " = " << meshName);
+
+ MEDOP::MeshHandler * meshHandler = new MEDOP::MeshHandler();
+ meshHandler->id = _meshLastId; _meshLastId++;
+ meshHandler->name = meshName;
+ meshHandler->sourceid = datasourceHandler->id;
+
+ _meshHandlerMap[meshHandler->id] = meshHandler;
+
+ // For each mesh, we can read the list of the names of the
+ // associated fields, i.e. fields whose spatial support is this
+ // mesh.
+ vector<string> fieldNames = MEDLoader::GetAllFieldNamesOnMesh(filepath,
+ meshName);
+ int nbOfFields = fieldNames.size();
+ for (int iField = 0; iField < nbOfFields; iField++) {
+ const char * fieldName = fieldNames[iField].c_str();
+ LOG("-- name of field " << iField << " = " << fieldName);
+
+ // A field name could identify several MEDCoupling fields, that
+ // differ by their spatial discretization on the mesh (values on
+ // cells, values on nodes, ...). This spatial discretization is
+ // specified by the TypeOfField that is an integer value in this
+ // list:
+ // 0 = ON_CELLS
+ // 1 = ON_NODES
+ // 2 = ON_GAUSS_PT
+ // 3 = ON_GAUSS_NE
+
+ // As a consequence, before loading values of a field, we have
+ // to determine the types of spatial discretization defined for
+ // this field and to chooose one.
+
+ vector<TypeOfField> listOfTypes = MEDLoader::GetTypesOfField(filepath,
+ meshName,
+ fieldName);
+ int nbOfTypes = listOfTypes.size();
+ for (int iType = 0; iType < nbOfTypes; iType++) {
+ LOG("---- type "<<iType<<" of field "<<iField<< " = " << listOfTypes[iType]);
+
+ // Then, we can get the iterations associated to this field on
+ // this type of spatial discretization:
+ std::vector< std::pair<int,int> > fieldIterations =
+ MEDLoader::GetFieldIterations(listOfTypes[iType],
+ filepath,
+ meshName,
+ fieldName);
+
+ int nbFieldIterations = fieldIterations.size();
+ LOG("---- nb. iterations = " << nbFieldIterations);
+
+ // We can define the timeseries of fields (fieldseries) for
+ // this type. A fieldseries is a macro object that handle the whole
+ // set of time iterations of a field.
+ MEDOP::FieldseriesHandler * fieldseriesHandler = new MEDOP::FieldseriesHandler();
+ fieldseriesHandler->id = _fieldseriesLastId; _fieldseriesLastId++;
+ fieldseriesHandler->name = fieldName;
+ fieldseriesHandler->type = listOfTypes[iType];
+ fieldseriesHandler->meshid = meshHandler->id;
+ fieldseriesHandler->nbIter = nbFieldIterations;
+ _fieldseriesHandlerMap[fieldseriesHandler->id] = fieldseriesHandler;
+
+ // We can then load meta-data concerning all iterations
+ for (int iterationIdx=0; iterationIdx<nbFieldIterations; iterationIdx++) {
+
+ int iteration = fieldIterations[iterationIdx].first;
+ int order = fieldIterations[iterationIdx].second;
+
+ const char * source = datasourceHandler->uri;
+ MEDOP::FieldHandler * fieldHandler = newFieldHandler(fieldName,
+ meshName,
+ listOfTypes[iType],
+ iteration,
+ order,
+ source);
+
+ fieldHandler->meshid = meshHandler->id;
+ fieldHandler->fieldseriesId = fieldseriesHandler->id;
+ _fieldHandlerMap[fieldHandler->id] = fieldHandler;
+ }
+ }
+ }
+ }
+
+ return new MEDOP::DatasourceHandler(*datasourceHandler);
+}
+
+long MEDDataManager_i::getDatasourceId(const char *filepath) {
+ const char * uri = file_to_source(filepath);
+ DatasourceHandlerMapIterator it = _datasourceHandlerMap.begin();
+ while ( it != _datasourceHandlerMap.end() ) {
+ if ( strcmp(it->second->uri,uri) == 0 ) {
+ return it->first;
+ }
+ ++it;
+ }
+ return LONG_UNDEFINED;
+}
+
+
+MEDOP::MeshHandler * MEDDataManager_i::getMesh(CORBA::Long meshId) {
+ if ( _meshHandlerMap.count(meshId) == 0 ) {
+ std::string message =
+ std::string("The mesh of id=") + ToString(meshId) +
+ std::string(" does not exist in the data manager");
+ LOG(message);
+ throw KERNEL::createSalomeException(message.c_str());
+ }
+ return new MEDOP::MeshHandler(*(_meshHandlerMap[meshId]));
+}
+
+
+/*!
+ * This function returns the list of mesh handlers associated to the
+ * specified datasource. It corresponds to the list ofmeshes defined
+ * in the datasource.
+ */
+MEDOP::MeshHandlerList * MEDDataManager_i::getMeshList(CORBA::Long datasourceId) {
+
+ // We initiate a list with the maximum lentgh
+ MEDOP::MeshHandlerList_var meshHandlerList = new MEDOP::MeshHandlerList();
+ meshHandlerList->length(_meshHandlerMap.size());
+
+ // Scan the map looking for meshes associated to the specified datasource
+ int itemIdx = 0;
+ MeshHandlerMapIterator meshIt;
+ for ( meshIt=_meshHandlerMap.begin(); meshIt != _meshHandlerMap.end(); meshIt++) {
+ if ( meshIt->second->sourceid == datasourceId ) {
+ meshHandlerList[itemIdx] = *(meshIt->second);
+ itemIdx++;
+ }
+ }
+
+ // Adjust the length to the real number of elements
+ meshHandlerList->length(itemIdx);
+ return meshHandlerList._retn();
+}
+
+/*!
+ * This function returns the list of fieldseries defined on the
+ * specified mesh.
+ */
+MEDOP::FieldseriesHandlerList * MEDDataManager_i::getFieldseriesListOnMesh(CORBA::Long meshId) {
+ // We initiate a list with the maximum lentgh
+ MEDOP::FieldseriesHandlerList_var
+ fieldseriesHandlerList = new MEDOP::FieldseriesHandlerList();
+ fieldseriesHandlerList->length(_fieldseriesHandlerMap.size());
+
+ // Scan the map looking for fieldseries defined on the specified mesh
+ int itemIdx = 0;
+ FieldseriesHandlerMapIterator it;
+ for ( it=_fieldseriesHandlerMap.begin(); it != _fieldseriesHandlerMap.end(); it++) {
+ if ( it->second->meshid == meshId ) {
+ fieldseriesHandlerList[itemIdx] = *(it->second);
+ itemIdx++;
+ }
+ }
+
+ // Adjust the length to the real number of elements
+ fieldseriesHandlerList->length(itemIdx);
+ return fieldseriesHandlerList._retn();
+}
+
+/*!
+ * A fieldseries is a timeseries of fields. Then the list of fields is
+ * the different time iterations defined for the specified field id.
+ */
+MEDOP::FieldHandlerList * MEDDataManager_i::getFieldListInFieldseries(CORBA::Long fieldseriesId) {
+
+ // We initiate a list with the maximum lentgh
+ MEDOP::FieldHandlerList_var fieldHandlerList = new MEDOP::FieldHandlerList();
+ fieldHandlerList->length(_fieldHandlerMap.size());
+
+ // Scan the map looking for field defined on the specified mesh
+ int itemIdx = 0;
+ FieldHandlerMapIterator it;
+ for ( it=_fieldHandlerMap.begin(); it != _fieldHandlerMap.end(); it++) {
+ if ( it->second->fieldseriesId == fieldseriesId ) {
+ fieldHandlerList[itemIdx] = *(it->second);
+ itemIdx++;
+ }
+ }
+
+ // Adjust the length to the real number of elements
+ fieldHandlerList->length(itemIdx);
+ return fieldHandlerList._retn();
+}
+
+/*!
+ * This returns the whole set of fields handlers for all datasource
+ * that have been loaded using addDatasource.
+ */
+MEDOP::FieldHandlerList * MEDDataManager_i::getFieldHandlerList() {
+ MEDOP::FieldHandlerList_var fieldHandlerSeq = new MEDOP::FieldHandlerList();
+ fieldHandlerSeq->length(_fieldHandlerMap.size());
+
+ int sequenceId = 0;
+ FieldHandlerMapIterator fieldIt;
+ for ( fieldIt=_fieldHandlerMap.begin(); fieldIt != _fieldHandlerMap.end(); fieldIt++) {
+ fieldHandlerSeq[sequenceId] = *(fieldIt->second);
+ sequenceId++;
+ }
+ return fieldHandlerSeq._retn();
+}
+
+/*!
+ * This returns a copy of the fieldHandler associated to the specified id.
+ */
+MEDOP::FieldHandler * MEDDataManager_i::getFieldHandler(CORBA::Long fieldHandlerId) {
+ LOG("getFieldHandler: START")
+
+ FieldHandlerMapIterator fieldIt = _fieldHandlerMap.find(fieldHandlerId);
+ if ( fieldIt != _fieldHandlerMap.end() ) {
+ // >>> WARNING: CORBA struct specification indicates that the
+ // assignement acts as a desctructor for the structure that is
+ // pointed to. The values of the fields are copy first in the new
+ // structure that receives the assignement and finally the initial
+ // structure is destroyed. In the present case, WE WANT to keep
+ // the initial fieldHandler in the map. We must then make a deep
+ // copy of the structure found in the map and return the copy. The
+ // CORBA struct specification indicates that a deep copy can be
+ // done using the copy constructor. <<<
+ return new MEDOP::FieldHandler(*(fieldIt->second));
+ }
+ return NULL;
+}
+
+/*!
+ * This returns a string representation of the field associated to the specified id.
+ */
+char * MEDDataManager_i::getFieldRepresentation(CORBA::Long fieldHandlerId) {
+ LOG("getFieldRepresentation: START")
+ MEDOP::FieldHandler * fieldHandler = getFieldHandler(fieldHandlerId);
+ MEDCouplingFieldDouble* fieldDouble = getFieldDouble(fieldHandler);
+ return CORBA::string_dup(fieldDouble->getArray()->repr().c_str());
+}
+
+void MEDDataManager_i::saveFields(const char * filepath,
+ const MEDOP::FieldIdList & fieldIdList)
+{
+ LOG("saveFields to : " << filepath);
+
+ // We first have to check if the target filepath is writable
+ // (segmentation fault in med otherwise)
+ if (!Kernel_Utils::IsWritable(Kernel_Utils::GetDirName(std::string(filepath)))) {
+ std::string message =
+ std::string("The target filepath ") +
+ std::string(filepath) +
+ std::string(" is not writable");
+ LOG(message);
+ throw KERNEL::createSalomeException(message.c_str());
+ }
+
+ if ( fieldIdList.length() == 0 ) {
+ throw KERNEL::createSalomeException("No fields to save");
+ }
+
+ // Consider the first field to initiate the med file
+ CORBA::Long fieldHandlerId = fieldIdList[0];
+ MEDOP::FieldHandler * fieldHandler = getFieldHandler(fieldHandlerId);
+ MEDCouplingFieldDouble* fieldDouble = getFieldDouble(fieldHandler);
+
+ try {
+ bool writeFromScratch = true;
+ MEDLoader::WriteField(filepath, fieldDouble, writeFromScratch);
+
+ writeFromScratch = false;
+ for(CORBA::ULong i=1; i<fieldIdList.length(); i++) {
+ fieldHandlerId = fieldIdList[i];
+ fieldHandler = getFieldHandler(fieldHandlerId);
+ fieldDouble = getFieldDouble(fieldHandler);
+ MEDLoader::WriteField(filepath, fieldDouble, writeFromScratch);
+ }
+ }
+ catch (INTERP_KERNEL::Exception &ex) {
+ std::string message =
+ std::string("Error when saving file ") +
+ std::string(filepath) + std::string(" : ") + ex.what();
+ throw KERNEL::createSalomeException(message.c_str());
+ }
+ catch (const std::exception& ex) {
+ std::string message =
+ std::string("Error when saving file ") +
+ std::string(filepath) + std::string(" : ") + ex.what();
+ throw KERNEL::createSalomeException(message.c_str());
+ }
+
+}
+
+/*!
+ * This function must be used to indicate that the field with the
+ * specified id must be considered as persistent (if persistent is
+ * true) or not persistent (if persistent is false). If a field is
+ * marked as persistent, then it is automatically saved when the
+ * function savePersistentFields is called.
+ */
+void MEDDataManager_i::markAsPersistent(CORBA::Long fieldHandlerId, bool persistent) {
+ LOG("mark as persistant : id="<<fieldHandlerId);
+ _fieldPersistencyMap[fieldHandlerId] = persistent;
+}
+
+void MEDDataManager_i::savePersistentFields(const char * filepath) {
+ LOG("savePersistentFields to : " << filepath);
+ std::vector<long> listId;
+
+ FieldPersistencyMapIterator mapIt;
+ for ( mapIt = _fieldPersistencyMap.begin(); mapIt != _fieldPersistencyMap.end(); mapIt++) {
+ if ( mapIt->second == true ) {
+ listId.push_back(mapIt->first);
+ }
+ }
+
+ MEDOP::FieldIdList fieldIdList;
+ fieldIdList.length(listId.size());
+ for (int i=0; i<listId.size(); i++) {
+ fieldIdList[i] = CORBA::Long(listId[i]);
+ }
+
+ try {
+ this->saveFields(filepath, fieldIdList);
+ }
+ catch (const SALOME::SALOME_Exception & ex) {
+ throw ex;
+ }
+ catch (const std::exception& ex) {
+ std::string message =
+ std::string("Error when saving file ") +
+ std::string(filepath) + std::string(" : ") + ex.what();
+ throw KERNEL::createSalomeException(message.c_str());
+ }
+}
+
+/*!
+ * This function is responsible for creating the FieldHandler
+ * instances. You must use this function because it manages
+ * automatically the identifier value (autoincrementation of a static
+ * variable)
+ */
+MEDOP::FieldHandler * MEDDataManager_i::newFieldHandler(const char * fieldname,
+ const char * meshname,
+ TypeOfField type,
+ long iteration,
+ long order,
+ const char * source)
+{
+ MEDOP::FieldHandler * fieldHandler = new MEDOP::FieldHandler();
+ fieldHandler->id = _fieldLastId; _fieldLastId++;
+ fieldHandler->fieldname = fieldname;
+ fieldHandler->meshname = meshname;
+ fieldHandler->type = type;
+ fieldHandler->iteration = iteration;
+ fieldHandler->order = order;
+ fieldHandler->source = source;
+ return fieldHandler;
+}
+
+/*!
+ * This updates the metadata of the field identified by its id with
+ * the data of the given field handler. Returns a copy of the updated
+ * handler (that should be identical to the given field handler for
+ * all data but not for the id that is an invariant for all session
+ * long).
+ * WARN: you should be warned that this function could leave the data
+ * model in a non-coherent state, by example if you change the mesh
+ * name while the mesh has not been updated.
+ */
+MEDOP::FieldHandler * MEDDataManager_i::updateFieldHandler(CORBA::Long fieldHandlerId,
+ const char * fieldname,
+ long iteration,
+ long order,
+ const char * source) {
+ FieldHandlerMapIterator fieldIt = _fieldHandlerMap.find(fieldHandlerId);
+ if ( fieldIt != _fieldHandlerMap.end() ) {
+ // Update the attributes
+ // >>> WARN: note that the id of a handler registered in the map
+ // SHOULD NEVER be modified because it is the identifier used in
+ // the whole application for this field all the session long.
+ // <<<
+ fieldIt->second->fieldname = fieldname;
+ fieldIt->second->iteration = iteration;
+ fieldIt->second->order = order;
+ fieldIt->second->source = source;
+ // Return a copy
+ return new MEDOP::FieldHandler(*fieldIt->second);
+ }
+ return NULL;
+}
+
+MEDCouplingUMesh * MEDDataManager_i::getUMesh(long meshHandlerId) {
+
+ LOG("getUMesh: START")
+
+ MEDCouplingUMesh * myMesh = NULL;
+ if ( _meshMap.count(meshHandlerId) > 0 ) {
+ // The mesh has been found in the map
+ myMesh = _meshMap[meshHandlerId];
+ } else {
+ // The mesh is not loaded yet ==> load it and register it in the map
+ LOG("getUMesh: the mesh must be loaded. meshid="<<meshHandlerId);
+ if ( _meshHandlerMap[meshHandlerId] == NULL ) {
+ std::string message =
+ std::string("No mesh for id=") + ToString(meshHandlerId);
+ LOG("getUMesh: "<<message);
+ throw KERNEL::createSalomeException(message.c_str());
+ }
+
+ long sourceid = _meshHandlerMap[meshHandlerId]->sourceid;
+ const char * filepath = source_to_file((_datasourceHandlerMap[sourceid])->uri);
+ const char * meshName = _meshHandlerMap[meshHandlerId]->name;
+ int meshDimRelToMax = 0;
+ myMesh = MEDLoader::ReadUMeshFromFile(filepath,meshName,meshDimRelToMax);
+ _meshMap[meshHandlerId] = myMesh;
+ }
+ return myMesh;
+}
+
+/**
+ * Try to retrieve the id of the specified mesh, i.e. the key it is
+ * registered with in the internal meshes map.
+ */
+long MEDDataManager_i::getUMeshId(const MEDCouplingMesh * mesh) {
+ bool found = false;
+ MeshMapIterator it = _meshMap.begin();
+ while ( it != _meshMap.end() ) {
+ found = (it->second == mesh);
+ if (found) {
+ return it->first;
+ }
+ ++it;
+ }
+ return LONG_UNDEFINED;
+}
+
+/*!
+ * This method returns the physical data of the specified field,
+ * i.e. the MEDCoupling field associated to the specified field
+ * handler. If the field source is a file and the data ar not loaded
+ * yet, the this function load the data from the file in a MEDCoupling
+ * field instance. Otherwize, it just returns the MEDCoupling field
+ * instance.
+ */
+MEDCouplingFieldDouble * MEDDataManager_i::getFieldDouble(const MEDOP::FieldHandler * fieldHandler)
+{
+
+ LOG("getFieldDouble: START with id="<<fieldHandler->id);
+
+ if ( _fieldDoubleMap.count(fieldHandler->id) > 0 ) {
+ // The MEDCoupling field data are already loaded. Just return the
+ // reference of the MEDCouplingFieldDouble pointer
+ return _fieldDoubleMap[fieldHandler->id];
+ }
+
+ // The MEDCoupling field data are not loaded yet. Load the data and
+ // register the MEDCoupling field in our internal map an all the
+ // associated data if needed (i.e. the underlying mesh).
+
+ // At this step, the mesh handler needs a meshid correctly
+ // set. Normally, we should arrive at this step only in the case
+ // where the field is loaded from a file ==> the meshid is defined
+ // (see the addDatasource function).
+ //
+ // >>>> __GBO__ TO BE CHECKED AND SERIOUSLY TESTED. There at least
+ // one case where we can arrive here with no previous call to
+ // addDataSource: for example the field handler list can be obtained
+ // from a call to addFieldsFromFile instead of addDataSource (see
+ // for exemple the getFieldRepresentation service of the
+ // dataManager, that comes here and then calls getUMesh where we
+ // need a map initialized only in addDataSource) <<<<
+ long meshid = fieldHandler->meshid;
+
+ // We first have to check if the associated mesh is already loaded
+ // and to load it if needed. The loaded meshes are registered in a
+ // map whose key is the mesh handler id. This checking is
+ // automatically done by the function getUMesh. It's important to do
+ // it before the loading of field data to prevent from the case
+ // where the mesh would not have been loaded already (in the
+ // previous field loading).
+ MEDCouplingUMesh * myMesh =this->getUMesh(meshid);
+
+ long sourceid = _meshHandlerMap[meshid]->sourceid;
+
+ const char * filepath = source_to_file((_datasourceHandlerMap[sourceid])->uri);
+ const char * meshName = myMesh->getName();
+ LOG("getFieldDouble: field "<<fieldHandler->fieldname<<" loaded from file "<<filepath);
+ TypeOfField type = (TypeOfField)fieldHandler->type;
+ int meshDimRelToMax = 0;
+ MEDCouplingFieldDouble * myField = MEDLoader::ReadField(type,
+ filepath,
+ meshName,
+ meshDimRelToMax,
+ fieldHandler->fieldname,
+ fieldHandler->iteration,
+ fieldHandler->order);
+ myField->setMesh(myMesh);
+ _fieldDoubleMap[fieldHandler->id] = myField;
+ return myField;
+}
+
+/*!
+ * This adds the specified MEDCoupling field in the collection managed
+ * by this DataManager. The associated FieldHandler is returned. This
+ * is typically used in a context where the MEDCoupling field is
+ * created from scratch, for example by operations in the
+ * MEDCalculator.
+ * @param[in] fieldDouble the MEDCouplingFieldDouble instance to add
+ * @param[in] meshHandlerId the id of the meshHandler this filed is associated to.
+ * @return a copy of the FieldHandler registered in the internal map for this field.
+ */
+MEDOP::FieldHandler * MEDDataManager_i::addField(MEDCouplingFieldDouble * fieldDouble,
+ long meshHandlerId)
+{
+ const char * fieldName = fieldDouble->getName();
+ const char * meshName = fieldDouble->getMesh()->getName();
+ TypeOfField type = fieldDouble->getTypeOfField();
+
+ int iteration, order;
+ // WARN: note that the variables "iteration" and "order" are passed
+ // by reference to the function getTime (see documentation of
+ // MEDCouplingField). As a consequence, the values of these
+ // variables are updated by this function call. This is the mean to
+ // retrieve the iteration and order of the field.
+ double timestamp = fieldDouble->getTime(iteration, order);
+
+ // For the fields that are created in memory (by operations for
+ // example), the convention for the source attribute is to specify
+ // the fielddouble name, because this name describes the operation
+ // the field has been created with.
+ string * source = new string("mem://"); source->append(fieldName);
+ MEDOP::FieldHandler * fieldHandler = newFieldHandler(fieldName,
+ meshName,
+ type,
+ iteration,
+ order,
+ source->c_str());
+
+ if ( meshHandlerId == LONG_UNDEFINED ) {
+ // We have to gess the id of the underlying mesh to preserve data
+ // integrity (a fieldHandler must have an attribute that contains
+ // the id of its underlying mesh):
+ //
+ // WARNING: it's better to let the client code (the one who calls the
+ // function addField) to specify this meshid. This guess procedure is
+ // not reliable, it's just to have a second chance.
+ //
+ LOG("addField: The mesh id is not defined. Trying to guess from the mesh name "<<meshName);
+ long meshid = this->getUMeshId(fieldDouble->getMesh());
+ fieldHandler->meshid = meshid;
+ if ( meshid == LONG_UNDEFINED ) {
+ // No mesh has been found in the internal map
+ LOG("addField: The mesh id for the mesh "<<meshName<<" can't be retrieved from the field "<<fieldName);
+ // _GBO_ : Maybe it could be better to raise an exception
+ }
+ }
+ else {
+ fieldHandler->meshid = meshHandlerId;
+ }
+
+ _fieldHandlerMap[fieldHandler->id] = fieldHandler;
+ _fieldDoubleMap[fieldHandler->id] = fieldDouble;
+ // >>> WARNING: CORBA structure assignement specification ==> return
+ // >>> a deep copy to avoid the destruction of the fieldHandler
+ // >>> registered in the map (assignement acts as a destructor for
+ // >>> CORBA struct).
+ return new MEDOP::FieldHandler(*fieldHandler);
+}
+
+/*!
+ * This function updates the meta-data "fieldname" associated to the
+ * specified field.
+ */
+void MEDDataManager_i::updateFieldMetadata(CORBA::Long fieldHandlerId,
+ const char * fieldname,
+ CORBA::Long iteration,
+ CORBA::Long order,
+ const char * source)
+{
+ // We have to update the field handler registered in the internal
+ // map AND the associated fieldDouble loaded in memory.
+ MEDOP::FieldHandler * fieldHandler = getFieldHandler(fieldHandlerId);
+ updateFieldHandler(fieldHandlerId,fieldname,iteration,order,source);
+
+ MEDCouplingFieldDouble* fieldDouble = getFieldDouble(fieldHandler);
+ fieldDouble->setName(fieldname);
+
+ // _GBO_ TO BE IMPLEMENTED: iteration and order
+}
+
+/**
+ * This can be used to associate to the specified field another mesh
+ * support than its current one. This is typically needed to operate 2
+ * fields defined on the same mesh but coming from different med
+ * files. In this case, the underlying meshes are different mesh
+ * objects (from the MEDCoupling point of view) and then no operation
+ * can be allowed by MEDCoupling. The operation of course fails if the
+ * new mesh is not identical to the old one.
+ */
+void MEDDataManager_i::changeUnderlyingMesh(CORBA::Long fieldHandlerId, CORBA::Long meshHandlerId) {
+
+ MEDOP::FieldHandler * fieldHandler = getFieldHandler(fieldHandlerId);
+ MEDCouplingFieldDouble* fieldDouble = getFieldDouble(fieldHandler);
+ MEDCouplingMesh * newMesh = getUMesh(meshHandlerId);
+
+ try {
+ fieldDouble->changeUnderlyingMesh(newMesh,10,1e-12);
+ }
+ catch (INTERP_KERNEL::Exception &ex) {
+ std::string * message = new std::string("Error when changing the underlying mesh : ");
+ message->append(ex.what());
+ throw KERNEL::createSalomeException(message->c_str());
+ }
+
+ // The change of mesh is OK, then we can update the meta-data
+ _fieldHandlerMap[fieldHandlerId]->meshid = meshHandlerId;
+ _fieldHandlerMap[fieldHandlerId]->meshname = _meshHandlerMap[meshHandlerId]->name;
+
+
+ // WARN: if this field has already been request by the tui for
+ // manipulation (in a fieldproxy), then the data should be
+ // synchronized
+}
+
+
+
+/*!
+ * This functions display the internal data of the MEDDataManager on
+ * the server side (data in the SALOME container).
+ */
+void MEDDataManager_i::serverlog() {
+
+ LOG("==== Field Handler Map ====================================================");
+ LOG("Size = "<<_fieldHandlerMap.size());
+ FieldHandlerMapIterator fhmIt;
+ for ( fhmIt = _fieldHandlerMap.begin(); fhmIt != _fieldHandlerMap.end(); fhmIt++) {
+ long id = fhmIt->first;
+ LOG("------------------------------------- id = "<<ToString(id));
+ LOG("- id \t= "<<fhmIt->second->id);
+ LOG("- fieldname \t= "<<fhmIt->second->fieldname);
+ LOG("- meshname \t= "<<fhmIt->second->meshname);
+ }
+
+ LOG("==== Field Double Map ====================================================");
+ LOG("Size = "<<_fieldDoubleMap.size());
+ FieldDoubleMapIterator fdmIt;
+ for ( fdmIt = _fieldDoubleMap.begin(); fdmIt != _fieldDoubleMap.end(); fdmIt++) {
+ long id = (*fdmIt).first;
+ MEDCouplingFieldDouble * fieldDouble = (*fdmIt).second;
+ LOG("------------------------------------- id = "<<ToString(id));
+ LOG("- fieldname \t= "<<fieldDouble->getName());
+ LOG("- meshname \t= "<<fieldDouble->getMesh()->getName());
+ }
+}
+
+/*!
+ * The event listener is created inside the GUI by the
+ * WorkspaceController. This function is called by the WorkspaceController to
+ * store the event listener IOR for the time of the session. Then this
+ * IOR can be available to any point of the application that can
+ * request the data manager (the python console for example).
+ */
+void MEDDataManager_i::setEventListenerIOR(const char * ior) {
+ if ( _medEventListenerIOR != NULL ) {
+ free(_medEventListenerIOR);
+ }
+ _medEventListenerIOR = (char *)malloc(sizeof(char)*strlen(ior));
+ strcpy(_medEventListenerIOR, ior);
+}
+/*!
+ * Return the IOR of the event listener that resides in the
+ * GUI. Having the IOR, you can restore the CORBA object by using:
+ *
+ * In a python SALOME context:
+ *
+ * >>> import salome
+ * >>> salome.salome_init()
+ * >>> myobject = salome.orb.string_to_object(ior)
+ *
+ * In a C++ SALOME context: (to do if needed)
+ */
+char * MEDDataManager_i::getEventListenerIOR() {
+ if ( _medEventListenerIOR == NULL ) {
+ throw KERNEL::createSalomeException("The event listener IOR is not defined");
+ }
+ // WARN: return a copy because the pointer memory will be released
+ // (CORBA specification)
+ char * ior = (char *)malloc(sizeof(char)*strlen(_medEventListenerIOR));
+ strcpy(ior, _medEventListenerIOR);
+ return ior;
+}
--- /dev/null
+// Copyright (C) 2007-2012 CEA/DEN, EDF R&D, OPEN CASCADE
+//
+// Copyright (C) 2003-2007 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.salome-platform.org/ or email : webmaster.salome@opencascade.com
+//
+
+// Authors : Guillaume Boulant (EDF) - 01/06/2011
+
+#ifndef _MED_DATAMANAGER_I_HXX_
+#define _MED_DATAMANAGER_I_HXX_
+
+#include <SALOMEconfig.h>
+#include CORBA_SERVER_HEADER(MEDDataManager)
+#include "SALOME_GenericObj_i.hh"
+
+#include "MEDCouplingUMesh.hxx"
+#include "MEDCouplingFieldDouble.hxx"
+using namespace ParaMEDMEM;
+
+/*! This map is used for lifecycle management of fields used in this operator */
+#include <map>
+#include <string>
+using namespace std;
+
+typedef map<long,MEDOP::DatasourceHandler*> DatasourceHandlerMap;
+typedef map<long,MEDOP::DatasourceHandler*>::iterator DatasourceHandlerMapIterator;
+
+typedef map<long,MEDOP::MeshHandler*> MeshHandlerMap;
+typedef map<long,MEDOP::MeshHandler*>::iterator MeshHandlerMapIterator;
+
+typedef map<long,MEDOP::FieldseriesHandler*> FieldseriesHandlerMap;
+typedef map<long,MEDOP::FieldseriesHandler*>::iterator FieldseriesHandlerMapIterator;
+
+typedef map<long,MEDOP::FieldHandler*> FieldHandlerMap;
+typedef map<long,MEDOP::FieldHandler*>::iterator FieldHandlerMapIterator;
+typedef map<long,bool> FieldPersistencyMap;
+typedef map<long,bool>::iterator FieldPersistencyMapIterator;
+
+typedef map<long,MEDCouplingFieldDouble*> FieldDoubleMap;
+typedef map<long,MEDCouplingFieldDouble*>::iterator FieldDoubleMapIterator;
+
+typedef map<long,MEDCouplingUMesh*> MeshMap;
+typedef map<long,MEDCouplingUMesh*>::iterator MeshMapIterator;
+
+#include "MEDOP.hxx"
+class MEDOP_EXPORT MEDDataManager_i: public POA_MEDOP::MEDDataManager,
+ public SALOME::GenericObj_i
+{
+public:
+
+ //
+ // ===========================================================
+ // Functions specified in the IDL interface
+ // ===========================================================
+ //
+ // -----------------------------------------------------------
+ // Datasource management
+ MEDOP::DatasourceHandler * addDatasource(const char *filepath);
+
+ // -----------------------------------------------------------
+ // Mesh management
+ MEDOP::MeshHandlerList * getMeshList(CORBA::Long datasourceId);
+ MEDOP::MeshHandler * getMesh(CORBA::Long meshId);
+
+ // -----------------------------------------------------------
+ // Field management
+ MEDOP::FieldseriesHandlerList * getFieldseriesListOnMesh(CORBA::Long meshId);
+ MEDOP::FieldHandlerList * getFieldListInFieldseries(CORBA::Long fieldseriesId);
+
+ MEDOP::FieldHandler * getFieldHandler(CORBA::Long fieldHandlerId);
+ char * getFieldRepresentation(CORBA::Long fieldHandlerId);
+ MEDOP::FieldHandlerList * getFieldHandlerList();
+
+ void saveFields(const char * filepath,
+ const MEDOP::FieldIdList & fieldIdList);
+ void markAsPersistent(CORBA::Long fieldHandlerId, bool persistent);
+ void savePersistentFields(const char * filepath);
+
+
+ void updateFieldMetadata(CORBA::Long fieldHandlerId,
+ const char * fieldname,
+ CORBA::Long iteration,
+ CORBA::Long order,
+ const char * source);
+
+ void changeUnderlyingMesh(CORBA::Long fieldHandlerId, CORBA::Long meshHandlerId);
+
+ void setEventListenerIOR(const char * ior);
+ char * getEventListenerIOR();
+
+ void serverlog();
+
+ //
+ // ===========================================================
+ // Other public functions (non available via CORBA)
+ // ===========================================================
+ //
+ static long LONG_UNDEFINED;
+ static MEDDataManager_i * getInstance();
+ MEDCouplingFieldDouble * getFieldDouble(const MEDOP::FieldHandler * fieldHandler);
+ MEDOP::FieldHandler * addField(MEDCouplingFieldDouble * fieldDouble,
+ long meshHandlerId=LONG_UNDEFINED);
+
+private:
+ MEDDataManager_i();
+ ~MEDDataManager_i();
+
+ // The MEDDataManager is a singleton, whose instance can be obtained
+ // using the getInstance static method.
+ static MEDDataManager_i * _instance;
+
+ long _sourceLastId;
+ long _meshLastId;
+ long _fieldseriesLastId;
+ long _fieldLastId;
+ DatasourceHandlerMap _datasourceHandlerMap;
+ MeshHandlerMap _meshHandlerMap;
+ FieldseriesHandlerMap _fieldseriesHandlerMap;
+ FieldHandlerMap _fieldHandlerMap;
+ FieldDoubleMap _fieldDoubleMap;
+ MeshMap _meshMap;
+ FieldPersistencyMap _fieldPersistencyMap;
+
+ char * _medEventListenerIOR;
+
+ MEDOP::FieldHandler * newFieldHandler(const char * fieldname,
+ const char * meshname,
+ TypeOfField type,
+ long iteration,
+ long order,
+ const char * source);
+
+ MEDOP::FieldHandler * updateFieldHandler(CORBA::Long fieldHandlerId,
+ const char * fieldname,
+ long iteration,
+ long order,
+ const char * source);
+
+ const char * file_to_source(const char * filepath);
+ const char * source_to_file(const char * source);
+ long getDatasourceId(const char *filepath);
+
+ MEDCouplingUMesh * getUMesh(long meshHandlerId);
+ long getUMeshId(const MEDCouplingMesh * mesh);
+};
+
+#endif // _MED_DATAMANAGER_I_HXX_
--- /dev/null
+// Copyright (C) 2007-2012 CEA/DEN, EDF R&D
+//
+// 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.salome-platform.org/ or email : webmaster.salome@opencascade.com
+//
+
+#ifndef __MEDOP_HXX__
+#define __MEDOP_HXX__
+
+#ifdef WIN32
+# if defined medop_EXPORTS || defined MEDOPFactoryEngine_EXPORTS || defined MEDOPFACTORYENGINE_EXPORTS
+# define MEDOP_EXPORT __declspec( dllexport )
+# else
+# define MEDOP_EXPORT __declspec( dllimport )
+# endif
+#else
+# define MEDOP_EXPORT
+#endif
+
+#endif
--- /dev/null
+// Copyright (C) 2007-2012 CEA/DEN, EDF R&D, OPEN CASCADE
+//
+// Copyright (C) 2003-2007 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.salome-platform.org/ or email : webmaster.salome@opencascade.com
+//
+
+// Authors : Guillaume Boulant (EDF) - 01/06/2011
+
+#include "MEDOPFactory_i.hxx"
+#include "utilities.h"
+
+#include <string>
+
+#include "MEDDataManager_i.hxx"
+#include "MEDCalculator_i.hxx"
+
+using namespace std;
+
+//=============================================================================
+/*!
+ * standard constructor
+ */
+//=============================================================================
+
+MEDOPFactory_i::MEDOPFactory_i(CORBA::ORB_ptr orb,
+ PortableServer::POA_ptr poa,
+ PortableServer::ObjectId * contId,
+ const char *instanceName,
+ const char *interfaceName) :
+ Engines_Component_i(orb, poa, contId, instanceName, interfaceName)
+{
+ MESSAGE("activate object");
+ _thisObj = this ;
+ _id = _poa->activate_object(_thisObj);
+}
+
+MEDOPFactory_i::~MEDOPFactory_i()
+{
+}
+
+MEDOP::MEDDataManager_ptr MEDOPFactory_i::getDataManager() {
+ MEDDataManager_i * medDataManager = MEDDataManager_i::getInstance();
+ MEDOP::MEDDataManager_ptr medDataManagerPtr = medDataManager->_this();
+ return medDataManagerPtr;
+}
+
+MEDOP::MEDCalculator_ptr MEDOPFactory_i::getCalculator() {
+ MEDCalculator_i * medCalculator = MEDCalculator_i::getInstance();
+ MEDOP::MEDCalculator_ptr medCalculatorPtr = medCalculator->_this();
+ return medCalculatorPtr;
+}
+
+extern "C"
+{
+ PortableServer::ObjectId * MEDOPFactoryEngine_factory(
+ CORBA::ORB_ptr orb,
+ PortableServer::POA_ptr poa,
+ PortableServer::ObjectId * contId,
+ const char *instanceName,
+ const char *interfaceName)
+ {
+ MESSAGE("PortableServer::ObjectId * MEDOPEngine_factory()");
+ SCRUTE(interfaceName);
+ MEDOPFactory_i * factory = new MEDOPFactory_i(orb, poa, contId,
+ instanceName,
+ interfaceName);
+ return factory->getId() ;
+ }
+}
--- /dev/null
+// Copyright (C) 2007-2012 CEA/DEN, EDF R&D, OPEN CASCADE
+//
+// Copyright (C) 2003-2007 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.salome-platform.org/ or email : webmaster.salome@opencascade.com
+//
+
+// Authors : Guillaume Boulant (EDF) - 01/06/2011
+
+#ifndef _MEDOPFactory_HXX_
+#define _MEDOPFactory_HXX_
+
+#include <SALOMEconfig.h>
+#include CORBA_SERVER_HEADER(MEDOPFactory)
+#include CORBA_SERVER_HEADER(MEDDataManager)
+#include CORBA_SERVER_HEADER(MEDCalculator)
+#include "SALOME_Component_i.hxx"
+
+#include "MEDOP.hxx"
+class MEDOP_EXPORT MEDOPFactory_i: public POA_MEDOP::MEDOPFactory,
+ public Engines_Component_i
+{
+
+public:
+ MEDOPFactory_i(CORBA::ORB_ptr orb,
+ PortableServer::POA_ptr poa,
+ PortableServer::ObjectId * contId,
+ const char *instanceName,
+ const char *interfaceName);
+ virtual ~MEDOPFactory_i();
+
+ /*! Returns the singleton instance of the data manager */
+ MEDOP::MEDDataManager_ptr getDataManager();
+ /*! Returns the singleton instance of the calculator */
+ MEDOP::MEDCalculator_ptr getCalculator();
+
+};
+
+extern "C"
+MEDOP_EXPORT PortableServer::ObjectId * MEDOPFactoryEngine_factory(CORBA::ORB_ptr orb,
+ PortableServer::POA_ptr poa,
+ PortableServer::ObjectId * contId,
+ const char *instanceName,
+ const char *interfaceName);
+
+#endif
--- /dev/null
+# Copyright (C) 2007-2012 CEA/DEN, EDF R&D, OPEN CASCADE
+#
+# 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.salome-platform.org/ or email : webmaster.salome@opencascade.com
+#
+
+# author: Guillaume Boulant (EDF/R&D, 2012)
+
+include $(top_srcdir)/adm_local/unix/make_common_starter.am
+
+mypkgpythondir = $(salomescriptdir)/med
+dist_mypkgpython_SCRIPTS = \
+ test_medop_components.py
+
+salomeinclude_HEADERS = \
+ MEDOP.hxx \
+ MEDDataManager_i.hxx \
+ MEDCalculator_i.hxx \
+ MEDOPFactory_i.hxx
+
+lib_LTLIBRARIES = libMEDOPFactoryEngine.la
+libMEDOPFactoryEngine_la_SOURCES = \
+ MEDDataManager_i.cxx \
+ MEDCalculator_i.cxx \
+ MEDOPFactory_i.cxx
+
+libMEDOPFactoryEngine_la_LDFLAGS = -no-undefined -version-info=0:0:0
+
+OMNIORB_CXXFLAGS=@CORBA_CXXFLAGS@ @CORBA_INCLUDES@
+OMNIORB_LIBS=@OMNIORB_LIBS@
+
+libMEDOPFactoryEngine_la_CPPFLAGS = \
+ -I$(top_builddir)/idl \
+ -I$(top_srcdir)/src/MEDCoupling \
+ -I$(top_srcdir)/src/INTERP_KERNEL/Bases \
+ -I$(top_srcdir)/src/INTERP_KERNEL \
+ -I$(top_srcdir)/src/MEDLoader \
+ $(KERNEL_CXXFLAGS) \
+ $(MED2_CXXFLAGS) \
+ $(HDF5_CXXFLAGS) \
+ $(OMNIORB_CXXFLAGS)
+
+libMEDOPFactoryEngine_la_LIBADD = \
+ $(top_builddir)/idl/libSalomeIDLMED.la \
+ $(KERNEL_LDFLAGS) -lSalomeKernelHelpers \
+ $(top_builddir)/src/MEDCoupling/libmedcoupling.la \
+ $(top_builddir)/src/MEDLoader/libmedloader.la \
+ $(top_builddir)/src/INTERP_KERNEL/libinterpkernel.la \
+ $(MED2_LIBS) \
+ $(HDF5_LIBS) \
+ $(OMNIORB_LIBS)
--- /dev/null
+#!/usr/bin/env python
+# -*- coding: iso-8859-1 -*-
+# Copyright (C) 2007-2012 CEA/DEN, EDF R&D, OPEN CASCADE
+#
+# 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.salome-platform.org/ or email : webmaster.salome@opencascade.com
+#
+
+# This file is a set of basic use case to test (from the python
+# context) the functions developped in the MEDOP engine and the
+# associated MEDOP CORBA interface (MEDDataManager and
+# MEDCalaculator).
+#
+# (gboulant - 16/6/2011)
+#
+
+# WARN: this scripts is a unit tests runner for testing the SALOME
+# MEDOP CORBA components and it should stay self-consistent. Then,
+# it's on purpose that the script does not use the xmed python
+# package. Conversely, some (small) parts of this code could be
+# redundant with code from the xmed package.
+
+#
+# ===============================================================
+# Initializing some CORBA stuff
+# ===============================================================
+#
+
+# Remember SALOME definitions:
+# ---------------------------
+#
+# componentName = Name of the component (a library lib<componentName>Engine
+# should exist with a C function named <componentName>Engine_factory, and the
+# component should be registered in the catalog MEDCatalog.xml).
+#
+# corbaModule = Name of the corba module that contains the IDL
+# specifications of the component (name as defined in the idl file)
+#
+# containerType = Name of the container factory
+#
+componentName = "MEDOPFactory"
+corbaModule = "MEDOP"
+containerType = "FactoryServer"
+
+import salome
+if salome.lcc is None:
+ salome.salome_init()
+__import__(corbaModule)
+factory=salome.lcc.FindOrLoadComponent(containerType,componentName)
+# This is not the main CORBA component of the SALOME module MED
+# (i.e. the engine associated to the active study), but the CORBA
+# entry point for MED fields operations (i.e. a CORBA component
+# reachable throught the LifeCycleCORBA). This entry point is used to
+# get the other SALOME CORBA components required for MED field
+# operations, in particular the dataManager and the calculator
+
+#
+# ==================================================
+# Helper functions to localize tests files and get data
+# ==================================================
+#
+import os
+
+try:
+ MED_ROOT_DIR=os.environ["MED_ROOT_DIR"]
+except KeyError, e:
+ raise RuntimeError("MED_ROOT_DIR should be defined to load the test data")
+
+RESDIR=os.path.join(MED_ROOT_DIR,"share","salome","resources","med","medop_testfiles")
+
+def getFilePath(filename):
+ """
+ Returns the absolute path for a given file base name. The base
+ name must match with a file contained in the test files directory.
+ """
+ filepath = os.path.join(RESDIR,filename)
+ if not os.path.exists(filepath):
+ raise RuntimeError("The file %s does not exists"%filepath)
+ return filepath
+
+testFileName = "smallmesh_varfield.med"
+testMeshName = "My2DMesh"
+testFieldName= "testfield2"
+testFieldIt = 1
+testFieldDt = 1
+testTypeOfField = 1 # On nodes
+testFilePath = getFilePath(testFileName)
+
+#
+# ==================================================
+# Basic use cases of the MEDDataManager
+# ==================================================
+#
+def TEST_getDataManager():
+ dataManager = factory.getDataManager()
+ if "addDatasource" not in dir(dataManager):
+ return False
+ return True
+
+def TEST_addDatasource():
+ dataManager = factory.getDataManager()
+ datasource = dataManager.addDatasource(testFilePath)
+ if datasource.name != testFileName:
+ print "ERR: datasource.name=%s (should be %s)"%(datasource.name,testFilePath)
+ return False
+
+ # We try to load the file twice. It should not load twice and
+ # return the same datasource as previously registered (same id).
+ sourceid_ref = datasource.id
+ datasource = dataManager.addDatasource(testFilePath)
+ if datasource.id != sourceid_ref:
+ print "ERR: datasource.id=%s (should be %s)"%(datasource.id,sourceid_ref)
+ return False
+
+ return True
+
+def TEST_getFieldHandlerList():
+ dataManager = factory.getDataManager()
+ datasource = dataManager.addDatasource(testFilePath)
+ fieldHandlerList = dataManager.getFieldHandlerList()
+ if fieldHandlerList is None or len(fieldHandlerList) == 0:
+ return False
+ return True
+
+def TEST_getFieldRepresentation():
+ dataManager = factory.getDataManager()
+ datasource = dataManager.addDatasource(testFilePath)
+ fieldHandlerList = dataManager.getFieldHandlerList()
+ fieldHandler0 = fieldHandlerList[0]
+
+ print dataManager.getFieldRepresentation(fieldHandler0.id)
+ return True
+
+def TEST_updateFieldMetadata():
+ dataManager = factory.getDataManager()
+ datasource = dataManager.addDatasource(testFilePath)
+ fieldHandlerList = dataManager.getFieldHandlerList()
+ fieldHandler0 = fieldHandlerList[0]
+
+ fieldid = fieldHandler0.id
+ newname = fieldHandler0.fieldname + " modified"
+
+ dataManager.updateFieldMetadata(fieldid, newname,
+ fieldHandler0.iteration,
+ fieldHandler0.order,
+ fieldHandler0.source)
+
+ fieldHandlerModified = dataManager.getFieldHandler(fieldid)
+ print fieldHandlerModified
+
+ if fieldHandlerModified.fieldname != newname:
+ print "ERR: the name is %s (should be %s)"%(fieldHandlerModified.fieldname,newname)
+ return False
+ return True
+
+def TEST_saveFields():
+ dataManager = factory.getDataManager()
+ datasource = dataManager.addDatasource(testFilePath)
+ fieldHandlerList = dataManager.getFieldHandlerList()
+ fieldHandler0 = fieldHandlerList[0]
+ fieldIdList = [fieldHandler0.id]
+ filepath = "/tmp/test_xmed_saveFields.med"
+
+ print "fieldIdList = %s"%fieldIdList
+ print "filepath = %s"%filepath
+
+ dataManager.saveFields(filepath,fieldIdList)
+ # We just control that the file exists. But we should reload the
+ # contents to check the fields
+ import os
+ if not os.path.exists(filepath):
+ print "ERR: the file %s does not exist"%(filepath)
+ return False
+ return True
+
+#
+# ==================================================
+# Use cases of the MEDDataManager for data loading
+# ==================================================
+#
+def TEST_MEDDataManager_getMeshList():
+ dataManager = factory.getDataManager()
+ datasourceHandler = dataManager.addDatasource(testFilePath)
+ meshHandlerList = dataManager.getMeshList(datasourceHandler.id)
+ print meshHandlerList
+
+ if len(meshHandlerList) == 0:
+ return False
+ return True
+
+def TEST_MEDDataManager_getMesh():
+ dataManager = factory.getDataManager()
+ datasourceHandler = dataManager.addDatasource(testFilePath)
+ meshHandlerList = dataManager.getMeshList(datasourceHandler.id)
+ for mRef in meshHandlerList:
+ meshId = mRef.id
+ mRes = dataManager.getMesh(meshId)
+ print mRes
+ if ( mRes.name != mRef.name ) or ( mRes.sourceid != mRef.sourceid):
+ return False
+ return True
+
+def TEST_MEDDataManager_getFieldseriesListOnMesh():
+ dataManager = factory.getDataManager()
+ datasourceHandler = dataManager.addDatasource(testFilePath)
+
+ meshHandlerList = dataManager.getMeshList(datasourceHandler.id)
+ # We look for the fieldseries defined on the first mesh of the list
+ meshId = meshHandlerList[0].id
+ fieldseriesList = dataManager.getFieldseriesListOnMesh(meshId)
+ print fieldseriesList
+
+ if len(fieldseriesList) == 0:
+ return False
+ return True
+
+def TEST_MEDDataManager_getFieldListInFieldseries():
+ dataManager = factory.getDataManager()
+ testFilePath = os.path.join(RESDIR,testFileName)
+
+ testFilePath = getFilePath("timeseries.med")
+ datasourceHandler = dataManager.addDatasource(testFilePath)
+
+ meshHandlerList = dataManager.getMeshList(datasourceHandler.id)
+ # We look for the fieldseries defined on the first mesh of the list
+ meshId = meshHandlerList[0].id
+ fieldseriesList = dataManager.getFieldseriesListOnMesh(meshId)
+ # We look for the fields defined in the first fieldseries,
+ # i.e. the time steps for this field.
+ fieldseriesId = fieldseriesList[0].id
+ fieldList = dataManager.getFieldListInFieldseries(fieldseriesId)
+ print fieldList
+
+ if len(fieldList) == 0:
+ return False
+ return True
+
+#
+# ==================================================
+# Use cases of the MEDCalculator
+# ==================================================
+#
+def TEST_Calculator_basics():
+ dataManager = factory.getDataManager()
+ datasource = dataManager.addDatasource(testFilePath)
+ fieldHandlerList = dataManager.getFieldHandlerList()
+
+ # Try to operate on the two first fields
+ fieldHandler0 = fieldHandlerList[0]
+ fieldHandler1 = fieldHandlerList[1]
+ print fieldHandler0
+ print fieldHandler1
+
+ calculator = factory.getCalculator()
+ add = calculator.add(fieldHandler0, fieldHandler1)
+ print add
+ sub = calculator.sub(fieldHandler0, fieldHandler1)
+ print sub
+ mul = calculator.mul(fieldHandler0, fieldHandler1)
+ print mul
+ div = calculator.div(fieldHandler0, fieldHandler1)
+ print div
+ #power = calculator.pow(fieldHandler0, 2)
+ #print power
+ linear = calculator.lin(fieldHandler0, 3,2)
+ print linear
+
+ return True
+
+def TEST_Calculator_applyFunc():
+ dataManager = factory.getDataManager()
+ datasource = dataManager.addDatasource(testFilePath)
+ fieldHandlerList = dataManager.getFieldHandlerList()
+ fieldHandler = fieldHandlerList[0]
+
+ # In this example, "u" stands for the whole field
+ calculator = factory.getCalculator()
+ import MEDOP
+ nbResultingComponent = MEDOP.NBCOMP_DEFAULT
+ res = calculator.fct(fieldHandler,"abs(u)",nbResultingComponent);
+ print res
+
+ # In this example, "a" stands for the first component
+ nbResultingComponent = 1
+ res = calculator.fct(fieldHandler,"a+2",nbResultingComponent)
+ print res
+
+ return True
+
+#
+# ==================================================
+# Use cases of the MEDDataManager that need MEDCalculator
+# ==================================================
+#
+def TEST_markAsPersistent():
+ dataManager = factory.getDataManager()
+ datasource = dataManager.addDatasource(testFilePath)
+ fieldHandlerList = dataManager.getFieldHandlerList()
+ fieldHandler0 = fieldHandlerList[0]
+ fieldHandler1 = fieldHandlerList[1]
+
+ calculator = factory.getCalculator()
+ add = calculator.add(fieldHandler0, fieldHandler1)
+
+ filepath = "/tmp/test_xmed_markAsPersistent.med"
+ dataManager.markAsPersistent(add.id, True)
+ dataManager.savePersistentFields(filepath)
+ import os
+ if not os.path.exists(filepath):
+ print "ERR: the file %s does not exist"%(filepath)
+ return False
+ return True
+
+#
+# =============================================================
+# Unit tests runner
+# =============================================================
+#
+import unittest
+from salome.kernel import pyunittester
+class MyTestSuite(unittest.TestCase):
+
+ # === MEDDataManager (core functions)
+ def test_getDataManager(self):
+ self.assertTrue(TEST_getDataManager())
+
+ def test_addDatasource(self):
+ self.assertTrue(TEST_addDatasource())
+
+ def test_getFieldHandlerList(self):
+ self.assertTrue(TEST_getFieldHandlerList())
+
+ def test_getFieldRepresentation(self):
+ self.assertTrue(TEST_getFieldRepresentation())
+
+ def test_updateFieldMetadata(self):
+ self.assertTrue(TEST_updateFieldMetadata())
+
+ def test_saveFields(self):
+ self.assertTrue(TEST_saveFields())
+
+ # === MEDDataManager (data request functions)
+ def test_MEDDataManager_getMeshList(self):
+ self.assertTrue(TEST_MEDDataManager_getMeshList())
+
+ def test_MEDDataManager_getMesh(self):
+ self.assertTrue(TEST_MEDDataManager_getMesh())
+
+ def test_MEDDataManager_getFieldseriesListOnMesh(self):
+ self.assertTrue(TEST_MEDDataManager_getFieldseriesListOnMesh())
+
+ def test_MEDDataManager_getFieldListInFieldseries(self):
+ self.assertTrue(TEST_MEDDataManager_getFieldListInFieldseries())
+
+ # === MEDCalculator (need MEDDataManager)
+ def test_Calculator_basics(self):
+ self.assertTrue(TEST_Calculator_basics())
+
+ def test_Calculator_applyFunc(self):
+ self.assertTrue(TEST_Calculator_applyFunc())
+
+ # === MEDDataManager (need MEDCalculator)
+ def test_markAsPersistent(self):
+ self.assertTrue(TEST_markAsPersistent())
+
+def myunittests():
+ pyunittester.run(MyTestSuite)
+
+if __name__ == "__main__":
+ myunittests()
--- /dev/null
+# Copyright (C) 2007-2012 CEA/DEN, EDF R&D
+#
+# 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.salome-platform.org/ or email : webmaster.salome@opencascade.com
+#
+
+ADD_SUBDIRECTORY(sphinx)
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<XMI verified="false" xmi.version="1.2" timestamp="2012-09-06T10:36:47" xmlns:UML="http://schema.omg.org/spec/UML/1.3">
+ <XMI.header>
+ <XMI.documentation>
+ <XMI.exporter>umbrello uml modeller http://uml.sf.net</XMI.exporter>
+ <XMI.exporterVersion>1.5.8</XMI.exporterVersion>
+ <XMI.exporterEncoding>UnicodeUTF8</XMI.exporterEncoding>
+ </XMI.documentation>
+ <XMI.metamodel xmi.version="1.3" href="UML.xml" xmi.name="UML"/>
+ </XMI.header>
+ <XMI.content>
+ <UML:Model isSpecification="false" isAbstract="false" isLeaf="false" xmi.id="m1" isRoot="false" name="Modèle UML">
+ <UML:Namespace.ownedElement>
+ <UML:Stereotype visibility="public" isSpecification="false" namespace="m1" isAbstract="false" isLeaf="false" isRoot="false" xmi.id="folder" name="folder"/>
+ <UML:Stereotype visibility="public" isSpecification="false" namespace="m1" isAbstract="false" isLeaf="false" isRoot="false" xmi.id="datatype" name="datatype"/>
+ <UML:Stereotype visibility="public" isSpecification="false" namespace="m1" isAbstract="false" isLeaf="false" isRoot="false" xmi.id="interface" name="interface"/>
+ <UML:Model stereotype="folder" visibility="public" isSpecification="false" namespace="m1" isAbstract="false" isLeaf="false" isRoot="false" xmi.id="Logical View" name="Logical View">
+ <UML:Namespace.ownedElement>
+ <UML:Package stereotype="folder" visibility="public" isSpecification="false" namespace="Logical View" isAbstract="false" isLeaf="false" isRoot="false" xmi.id="Datatypes" name="Datatypes">
+ <UML:Namespace.ownedElement>
+ <UML:DataType stereotype="datatype" visibility="public" isSpecification="false" namespace="Datatypes" isAbstract="false" isLeaf="false" isRoot="false" xmi.id="ZPqOwG3ZaJgC" name="int"/>
+ <UML:DataType stereotype="datatype" visibility="public" isSpecification="false" namespace="Datatypes" isAbstract="false" isLeaf="false" isRoot="false" xmi.id="WVv63G5f9uiL" name="char"/>
+ <UML:DataType stereotype="datatype" visibility="public" isSpecification="false" namespace="Datatypes" isAbstract="false" isLeaf="false" isRoot="false" xmi.id="dHU5JP7qmxEj" name="bool"/>
+ <UML:DataType stereotype="datatype" visibility="public" isSpecification="false" namespace="Datatypes" isAbstract="false" isLeaf="false" isRoot="false" xmi.id="CIGkZvv5QqCT" name="float"/>
+ <UML:DataType stereotype="datatype" visibility="public" isSpecification="false" namespace="Datatypes" isAbstract="false" isLeaf="false" isRoot="false" xmi.id="7F8E7oZk44nN" name="double"/>
+ <UML:DataType stereotype="datatype" visibility="public" isSpecification="false" namespace="Datatypes" isAbstract="false" isLeaf="false" isRoot="false" xmi.id="RuDDqPu2fBmF" name="short"/>
+ <UML:DataType stereotype="datatype" visibility="public" isSpecification="false" namespace="Datatypes" isAbstract="false" isLeaf="false" isRoot="false" xmi.id="6hIUWSwdh4po" name="long"/>
+ <UML:DataType stereotype="datatype" visibility="public" isSpecification="false" namespace="Datatypes" isAbstract="false" isLeaf="false" isRoot="false" xmi.id="rMXvQKIpDT33" name="unsigned int"/>
+ <UML:DataType stereotype="datatype" visibility="public" isSpecification="false" namespace="Datatypes" isAbstract="false" isLeaf="false" isRoot="false" xmi.id="qx3W6plAV1f1" name="unsigned short"/>
+ <UML:DataType stereotype="datatype" visibility="public" isSpecification="false" namespace="Datatypes" isAbstract="false" isLeaf="false" isRoot="false" xmi.id="Ubc9dPySlTNA" name="unsigned long"/>
+ <UML:DataType stereotype="datatype" visibility="public" isSpecification="false" namespace="Datatypes" isAbstract="false" isLeaf="false" isRoot="false" xmi.id="ndz0601vw4R2" name="string"/>
+ </UML:Namespace.ownedElement>
+ </UML:Package>
+ <UML:Package visibility="public" isSpecification="false" namespace="Logical View" isAbstract="false" isLeaf="false" isRoot="false" xmi.id="NBqMfPwp0LlT" name="MEDOP">
+ <UML:Namespace.ownedElement>
+ <UML:Class visibility="public" isSpecification="false" namespace="NBqMfPwp0LlT" isAbstract="false" isLeaf="false" isRoot="false" xmi.id="KO9M6BTsmDX3" name="DatasourceHandler">
+ <UML:Classifier.feature>
+ <UML:Attribute visibility="public" isSpecification="false" xmi.id="IDqrnmQNZzdi" type="ZPqOwG3ZaJgC" name="sourceid"/>
+ <UML:Attribute visibility="public" isSpecification="false" xmi.id="eazbSktruFv5" type="ndz0601vw4R2" name="name"/>
+ <UML:Attribute visibility="public" isSpecification="false" xmi.id="Js2a6sRrdpCC" type="ndz0601vw4R2" name="uri"/>
+ </UML:Classifier.feature>
+ </UML:Class>
+ <UML:Class visibility="public" isSpecification="false" namespace="NBqMfPwp0LlT" isAbstract="false" isLeaf="false" isRoot="false" xmi.id="mpuQQtzqbsfV" name="MeshHandler">
+ <UML:Classifier.feature>
+ <UML:Attribute visibility="public" isSpecification="false" xmi.id="6bYmLOgeEiEK" type="ZPqOwG3ZaJgC" name="meshid"/>
+ <UML:Attribute visibility="public" isSpecification="false" xmi.id="MMCAGaa7ZOiQ" type="ndz0601vw4R2" name="name"/>
+ <UML:Attribute visibility="public" isSpecification="false" xmi.id="4CWdiGy6waJd" type="ZPqOwG3ZaJgC" name="sourceid"/>
+ </UML:Classifier.feature>
+ </UML:Class>
+ <UML:Class visibility="public" isSpecification="false" namespace="NBqMfPwp0LlT" isAbstract="false" isLeaf="false" isRoot="false" xmi.id="Z3sQfH0YJ5g6" name="FieldHandler">
+ <UML:Classifier.feature>
+ <UML:Attribute visibility="public" isSpecification="false" xmi.id="o3IdSrqOde12" type="ZPqOwG3ZaJgC" name="fieldid"/>
+ <UML:Attribute visibility="public" isSpecification="false" xmi.id="HICpfJOiAmOR" type="ZPqOwG3ZaJgC" name="type"/>
+ <UML:Attribute visibility="public" isSpecification="false" xmi.id="kwipcobg6E6w" type="ZPqOwG3ZaJgC" name="iteration"/>
+ <UML:Attribute visibility="public" isSpecification="false" xmi.id="5UZhTZzlr9YW" type="ZPqOwG3ZaJgC" name="order"/>
+ <UML:Attribute visibility="public" isSpecification="false" xmi.id="RuFbeb0OViC7" type="ZPqOwG3ZaJgC" name="meshid"/>
+ </UML:Classifier.feature>
+ </UML:Class>
+ <UML:Class visibility="public" isSpecification="false" namespace="NBqMfPwp0LlT" isAbstract="false" isLeaf="false" isRoot="false" xmi.id="tFFeytJRMARL" name="FieldseriesHandler">
+ <UML:Classifier.feature>
+ <UML:Attribute visibility="public" isSpecification="false" xmi.id="OKYFoL4febk2" type="ZPqOwG3ZaJgC" name="fieldseriesId"/>
+ <UML:Attribute visibility="public" isSpecification="false" xmi.id="dZ9FP4RHHevG" type="ZPqOwG3ZaJgC" name="type"/>
+ <UML:Attribute visibility="public" isSpecification="false" xmi.id="VEhrN6DlOlzB" type="ZPqOwG3ZaJgC" name="nbIterations"/>
+ <UML:Attribute visibility="public" isSpecification="false" xmi.id="41qibbiE8sRX" type="ZPqOwG3ZaJgC" name="meshId"/>
+ </UML:Classifier.feature>
+ </UML:Class>
+ <UML:Class visibility="public" isSpecification="false" namespace="NBqMfPwp0LlT" isAbstract="false" isLeaf="false" isRoot="false" xmi.id="kG3S8XATRqib" name="Factory">
+ <UML:Classifier.feature>
+ <UML:Operation visibility="public" isSpecification="false" isQuery="false" isAbstract="false" isLeaf="false" isRoot="false" xmi.id="CS8eIf5ejE39" name="getDataManager">
+ <UML:BehavioralFeature.parameter>
+ <UML:Parameter kind="return" xmi.id="HO3Z38DlLEsc" type="nSHVdoPkDYFK"/>
+ </UML:BehavioralFeature.parameter>
+ </UML:Operation>
+ <UML:Operation visibility="public" isSpecification="false" isQuery="false" isAbstract="false" isLeaf="false" isRoot="false" xmi.id="52BLkz1CzFrG" name="getCalculator">
+ <UML:BehavioralFeature.parameter>
+ <UML:Parameter kind="return" xmi.id="UD4jBGoER8yQ" type="UsXTM49RP2EE"/>
+ </UML:BehavioralFeature.parameter>
+ </UML:Operation>
+ </UML:Classifier.feature>
+ </UML:Class>
+ <UML:Class visibility="public" isSpecification="false" namespace="NBqMfPwp0LlT" isAbstract="false" isLeaf="false" isRoot="false" xmi.id="nSHVdoPkDYFK" name="DataManager"/>
+ <UML:Class visibility="public" isSpecification="false" namespace="NBqMfPwp0LlT" isAbstract="false" isLeaf="false" isRoot="false" xmi.id="UsXTM49RP2EE" name="Calculator"/>
+ </UML:Namespace.ownedElement>
+ </UML:Package>
+ <UML:Association visibility="public" isSpecification="false" namespace="Logical View" xmi.id="waq19EhXGt1t" name="">
+ <UML:Association.connection>
+ <UML:AssociationEnd changeability="changeable" visibility="public" isNavigable="false" isSpecification="false" multiplicity="1" xmi.id="aIpeEQxrDZ1d" type="KO9M6BTsmDX3" name="" aggregation="none"/>
+ <UML:AssociationEnd changeability="changeable" visibility="public" isNavigable="true" isSpecification="false" multiplicity="n" xmi.id="KLQQ3Six0Wy7" type="mpuQQtzqbsfV" name="" aggregation="none"/>
+ </UML:Association.connection>
+ </UML:Association>
+ <UML:Association visibility="public" isSpecification="false" namespace="Logical View" xmi.id="SJsPpluxXW2y" name="">
+ <UML:Association.connection>
+ <UML:AssociationEnd changeability="changeable" visibility="public" isNavigable="false" isSpecification="false" multiplicity="n" xmi.id="uGVzTJNdzM70" type="mpuQQtzqbsfV" name="" aggregation="none"/>
+ <UML:AssociationEnd changeability="changeable" visibility="public" isNavigable="true" isSpecification="false" multiplicity="1" xmi.id="L0i3AAwcTp0I" type="KO9M6BTsmDX3" name="sourceid" aggregation="none"/>
+ </UML:Association.connection>
+ </UML:Association>
+ <UML:Association visibility="public" isSpecification="false" namespace="Logical View" xmi.id="ld0pX3I6kldh" name="">
+ <UML:Association.connection>
+ <UML:AssociationEnd changeability="changeable" visibility="public" isNavigable="false" isSpecification="false" multiplicity="n" xmi.id="UVr0zGsErWnr" type="Z3sQfH0YJ5g6" name="" aggregation="none"/>
+ <UML:AssociationEnd changeability="changeable" visibility="public" isNavigable="true" isSpecification="false" multiplicity="1" xmi.id="tIX5O3q7eqxB" type="mpuQQtzqbsfV" name="meshId" aggregation="none"/>
+ </UML:Association.connection>
+ </UML:Association>
+ <UML:Association visibility="public" isSpecification="false" namespace="Logical View" xmi.id="oCVhQ0u5qFB3" name="">
+ <UML:Association.connection>
+ <UML:AssociationEnd changeability="changeable" visibility="public" isNavigable="false" isSpecification="false" multiplicity="n" xmi.id="yYmvjqxZZY8F" type="Z3sQfH0YJ5g6" name="" aggregation="none"/>
+ <UML:AssociationEnd changeability="changeable" visibility="public" isNavigable="true" isSpecification="false" multiplicity="0" xmi.id="kG5Bo02aCVGa" type="tFFeytJRMARL" name="fieldseriesId" aggregation="none"/>
+ </UML:Association.connection>
+ </UML:Association>
+ <UML:Association visibility="public" isSpecification="false" namespace="Logical View" xmi.id="ONJtNJsd01tV" name="">
+ <UML:Association.connection>
+ <UML:AssociationEnd changeability="changeable" visibility="public" isNavigable="false" isSpecification="false" multiplicity="n" xmi.id="5vXlBV761AlS" type="tFFeytJRMARL" name="" aggregation="none"/>
+ <UML:AssociationEnd changeability="changeable" visibility="public" isNavigable="true" isSpecification="false" multiplicity="1" xmi.id="uYDM7AmTV5Lr" type="mpuQQtzqbsfV" name="" aggregation="none"/>
+ </UML:Association.connection>
+ </UML:Association>
+ <UML:Package visibility="public" isSpecification="false" namespace="Logical View" isAbstract="false" isLeaf="false" isRoot="false" xmi.id="rEjTH3dMz3kh" name="SALOME">
+ <UML:Namespace.ownedElement>
+ <UML:Interface stereotype="interface" visibility="public" isSpecification="false" namespace="rEjTH3dMz3kh" isAbstract="true" isLeaf="false" isRoot="false" xmi.id="BYw7PBW7PaZW" comment="SALOME CORBA Object that can be requested using the lyfe cycle corba registry" name="EngineComponent"/>
+ <UML:Interface stereotype="interface" visibility="public" isSpecification="false" namespace="rEjTH3dMz3kh" isAbstract="true" isLeaf="false" isRoot="false" xmi.id="tDJT9A2gh9I3" comment="Standard SALOME CORBA Object" name="GenericObject"/>
+ </UML:Namespace.ownedElement>
+ </UML:Package>
+ <UML:Abstraction visibility="public" isSpecification="false" namespace="Logical View" supplier="BYw7PBW7PaZW" xmi.id="OOxclE0ol1ww" client="kG3S8XATRqib" name=""/>
+ <UML:Association visibility="public" isSpecification="false" namespace="Logical View" xmi.id="fUBIKo7DA4LI" name="instancie">
+ <UML:Association.connection>
+ <UML:AssociationEnd changeability="changeable" visibility="public" isNavigable="false" isSpecification="false" multiplicity="1" xmi.id="FsZMpwZ9gj4C" type="kG3S8XATRqib" name="" aggregation="none"/>
+ <UML:AssociationEnd changeability="changeable" visibility="public" isNavigable="true" isSpecification="false" multiplicity="1" xmi.id="50TAtgDYAPqS" type="nSHVdoPkDYFK" name="" aggregation="none"/>
+ </UML:Association.connection>
+ </UML:Association>
+ <UML:Association visibility="public" isSpecification="false" namespace="Logical View" xmi.id="DweL0xdEpAae" name="instancie">
+ <UML:Association.connection>
+ <UML:AssociationEnd changeability="changeable" visibility="public" isNavigable="false" isSpecification="false" multiplicity="1" xmi.id="5AnlrsvxqO7j" type="kG3S8XATRqib" name="" aggregation="none"/>
+ <UML:AssociationEnd changeability="changeable" visibility="public" isNavigable="true" isSpecification="false" multiplicity="1" xmi.id="4JHDg6ft0HE0" type="UsXTM49RP2EE" name="" aggregation="none"/>
+ </UML:Association.connection>
+ </UML:Association>
+ <UML:Abstraction visibility="public" isSpecification="false" namespace="Logical View" supplier="tDJT9A2gh9I3" xmi.id="WqUPF7X6LpZS" client="nSHVdoPkDYFK" name=""/>
+ <UML:Abstraction visibility="public" isSpecification="false" namespace="Logical View" supplier="tDJT9A2gh9I3" xmi.id="AwSTl1vib2NJ" client="UsXTM49RP2EE" name=""/>
+ </UML:Namespace.ownedElement>
+ <XMI.extension xmi.extender="umbrello">
+ <diagrams>
+ <diagram showopsig="1" linecolor="#ff0000" snapx="10" showattribassocs="1" snapy="10" linewidth="0" showattsig="1" isopen="1" showpackage="1" showpubliconly="1" showstereotype="1" name="MEDOP_datamodel" font="Ubuntu,10,-1,5,50,0,0,0,0,0" canvasheight="644" canvaswidth="1201" localid="" snapcsgrid="0" showgrid="0" showops="1" griddotcolor="#000000" backgroundcolor="#ffffff" usefillcolor="1" fillcolor="#ffff00" zoom="100" xmi.id="yesp3EjZ9T3u" documentation="" showscope="1" snapgrid="0" showatts="1" type="1">
+ <widgets>
+ <classwidget linecolor="none" usesdiagramfillcolor="1" linewidth="none" showoperations="1" usesdiagramusefillcolor="1" showpubliconly="1" showpackage="1" x="261" showattsigs="601" showstereotype="1" y="101" showattributes="1" font="Ubuntu,10,-1,5,75,0,0,0,0,0" width="193" isinstance="0" usefillcolor="1" fillcolor="none" xmi.id="KO9M6BTsmDX3" showscope="1" height="67" showopsigs="601"/>
+ <classwidget linecolor="none" usesdiagramfillcolor="1" linewidth="none" showoperations="1" usesdiagramusefillcolor="1" showpubliconly="1" showpackage="1" x="273" showattsigs="601" showstereotype="1" y="220" showattributes="1" font="Ubuntu,10,-1,5,75,0,0,0,0,0" width="155" isinstance="0" usefillcolor="1" fillcolor="none" xmi.id="mpuQQtzqbsfV" showscope="1" height="67" showopsigs="601"/>
+ <classwidget linecolor="none" usesdiagramfillcolor="1" linewidth="none" showoperations="1" usesdiagramusefillcolor="1" showpubliconly="1" showpackage="1" x="268" showattsigs="601" showstereotype="1" y="371" showattributes="1" font="Ubuntu,10,-1,5,75,0,0,0,0,0" width="150" isinstance="0" usefillcolor="1" fillcolor="none" xmi.id="Z3sQfH0YJ5g6" showscope="1" height="97" showopsigs="601"/>
+ <classwidget linecolor="none" usesdiagramfillcolor="1" linewidth="none" showoperations="1" usesdiagramusefillcolor="1" showpubliconly="1" showpackage="1" x="574" showattsigs="601" showstereotype="1" y="218" showattributes="1" font="Ubuntu,10,-1,5,75,0,0,0,0,0" width="190" isinstance="0" usefillcolor="1" fillcolor="none" xmi.id="tFFeytJRMARL" showscope="1" height="82" showopsigs="601"/>
+ <notewidget width="170" showstereotype="1" x="703" noteType="0" usesdiagramusefillcolor="1" y="278" usesdiagramfillcolor="1" isinstance="0" fillcolor="none" height="79" linecolor="none" xmi.id="IxOvY2fRkpkU" usefillcolor="1" linewidth="none" font="Ubuntu,10,-1,5,50,0,0,0,0,0" text="A Fieldseries is a data structure gathering a sequence of fields of same type."/>
+ </widgets>
+ <messages/>
+ <associations>
+ <assocwidget indexa="1" indexb="1" usesdiagramusefillcolor="1" widgetaid="mpuQQtzqbsfV" usesdiagramfillcolor="1" fillcolor="none" linecolor="none" totalcounta="2" xmi.id="SJsPpluxXW2y" widgetbid="KO9M6BTsmDX3" totalcountb="2" type="512" usefillcolor="1" linewidth="none">
+ <linepath>
+ <startpoint startx="323" starty="220"/>
+ <endpoint endx="323" endy="168"/>
+ </linepath>
+ <floatingtext linecolor="none" usesdiagramfillcolor="1" linewidth="none" usesdiagramusefillcolor="1" x="325" showstereotype="1" y="199" text="n" font="Ubuntu,10,-1,5,50,0,0,0,0,0" pretext="" role="701" width="16" isinstance="0" posttext="" usefillcolor="1" fillcolor="none" xmi.id="fLhlJM6afAET" height="19"/>
+ <floatingtext linecolor="none" usesdiagramfillcolor="1" linewidth="none" usesdiagramusefillcolor="1" x="325" showstereotype="1" y="170" text="1" font="Ubuntu,10,-1,5,50,0,0,0,0,0" pretext="" role="702" width="16" isinstance="0" posttext="" usefillcolor="1" fillcolor="none" xmi.id="TQYswJeO30Ac" height="19"/>
+ <floatingtext linecolor="none" usesdiagramfillcolor="1" linewidth="none" usesdiagramusefillcolor="1" x="260" showstereotype="1" y="170" text="sourceid" font="Ubuntu,10,-1,5,50,0,0,0,0,0" pretext="+" role="710" width="67" isinstance="0" posttext="" usefillcolor="1" fillcolor="none" xmi.id="RkMoYLWfIJyZ" height="19"/>
+ </assocwidget>
+ <assocwidget indexa="1" indexb="1" usesdiagramusefillcolor="1" widgetaid="Z3sQfH0YJ5g6" usesdiagramfillcolor="1" fillcolor="none" linecolor="none" totalcounta="2" xmi.id="ld0pX3I6kldh" widgetbid="mpuQQtzqbsfV" totalcountb="2" type="512" usefillcolor="1" linewidth="none">
+ <linepath>
+ <startpoint startx="318" starty="371"/>
+ <endpoint endx="318" endy="287"/>
+ </linepath>
+ <floatingtext linecolor="none" usesdiagramfillcolor="1" linewidth="none" usesdiagramusefillcolor="1" x="320" showstereotype="1" y="350" text="n" font="Ubuntu,10,-1,5,50,0,0,0,0,0" pretext="" role="701" width="16" isinstance="0" posttext="" usefillcolor="1" fillcolor="none" xmi.id="BQQrafI23qu0" height="19"/>
+ <floatingtext linecolor="none" usesdiagramfillcolor="1" linewidth="none" usesdiagramusefillcolor="1" x="320" showstereotype="1" y="289" text="1" font="Ubuntu,10,-1,5,50,0,0,0,0,0" pretext="" role="702" width="16" isinstance="0" posttext="" usefillcolor="1" fillcolor="none" xmi.id="AWMBUWnoA3P5" height="19"/>
+ <floatingtext linecolor="none" usesdiagramfillcolor="1" linewidth="none" usesdiagramusefillcolor="1" x="264" showstereotype="1" y="289" text="meshId" font="Ubuntu,10,-1,5,50,0,0,0,0,0" pretext="+" role="710" width="59" isinstance="0" posttext="" usefillcolor="1" fillcolor="none" xmi.id="KeHcxEAaZpMs" height="19"/>
+ </assocwidget>
+ <assocwidget indexa="1" indexb="1" usesdiagramusefillcolor="1" widgetaid="Z3sQfH0YJ5g6" usesdiagramfillcolor="1" fillcolor="none" linecolor="none" totalcounta="2" xmi.id="oCVhQ0u5qFB3" widgetbid="tFFeytJRMARL" totalcountb="2" type="512" usefillcolor="1" linewidth="none">
+ <linepath>
+ <startpoint startx="418" starty="371"/>
+ <endpoint endx="574" endy="300"/>
+ </linepath>
+ <floatingtext linecolor="none" usesdiagramfillcolor="1" linewidth="none" usesdiagramusefillcolor="1" x="408" showstereotype="1" y="349" text="n" font="Ubuntu,10,-1,5,50,0,0,0,0,0" pretext="" role="701" width="16" isinstance="0" posttext="" usefillcolor="1" fillcolor="none" xmi.id="kd1mStmcP6lr" height="19"/>
+ <floatingtext linecolor="none" usesdiagramfillcolor="1" linewidth="none" usesdiagramusefillcolor="1" x="570" showstereotype="1" y="303" text="0" font="Ubuntu,10,-1,5,50,0,0,0,0,0" pretext="" role="702" width="16" isinstance="0" posttext="" usefillcolor="1" fillcolor="none" xmi.id="aZgic3nraRfw" height="19"/>
+ <floatingtext linecolor="none" usesdiagramfillcolor="1" linewidth="none" usesdiagramusefillcolor="1" x="487" showstereotype="1" y="282" text="fieldseriesId" font="Ubuntu,10,-1,5,50,0,0,0,0,0" pretext="+" role="710" width="90" isinstance="0" posttext="" usefillcolor="1" fillcolor="none" xmi.id="HZgqM0hYQ5Nz" height="19"/>
+ </assocwidget>
+ <assocwidget indexa="1" indexb="1" usesdiagramusefillcolor="1" widgetaid="tFFeytJRMARL" usesdiagramfillcolor="1" fillcolor="none" linecolor="none" totalcounta="2" xmi.id="ONJtNJsd01tV" widgetbid="mpuQQtzqbsfV" totalcountb="2" type="512" usefillcolor="1" linewidth="none">
+ <linepath>
+ <startpoint startx="574" starty="246"/>
+ <endpoint endx="428" endy="246"/>
+ </linepath>
+ <floatingtext linecolor="none" usesdiagramfillcolor="1" linewidth="none" usesdiagramusefillcolor="1" x="556" showstereotype="1" y="225" text="n" font="Ubuntu,10,-1,5,50,0,0,0,0,0" pretext="" role="701" width="16" isinstance="0" posttext="" usefillcolor="1" fillcolor="none" xmi.id="RKSqQnp8Rout" height="19"/>
+ <floatingtext linecolor="none" usesdiagramfillcolor="1" linewidth="none" usesdiagramusefillcolor="1" x="430" showstereotype="1" y="225" text="1" font="Ubuntu,10,-1,5,50,0,0,0,0,0" pretext="" role="702" width="16" isinstance="0" posttext="" usefillcolor="1" fillcolor="none" xmi.id="heT4kEtIlZ0L" height="19"/>
+ </assocwidget>
+ </associations>
+ </diagram>
+ <diagram showopsig="1" linecolor="#ff0000" snapx="10" showattribassocs="1" snapy="10" linewidth="0" showattsig="1" isopen="1" showpackage="1" showpubliconly="1" showstereotype="1" name="MEDOP_componentmodel" font="Ubuntu,10,-1,5,50,0,0,0,0,0" canvasheight="644" canvaswidth="1201" localid="-1" snapcsgrid="0" showgrid="0" showops="1" griddotcolor="#808080" backgroundcolor="#ffffff" usefillcolor="1" fillcolor="#ffffc0" zoom="100" xmi.id="e3MA5ySQiAqG" documentation="" showscope="1" snapgrid="0" showatts="1" type="1">
+ <widgets>
+ <classwidget linecolor="#ff0000" usesdiagramfillcolor="0" linewidth="none" showoperations="1" usesdiagramusefillcolor="0" showpubliconly="1" showpackage="1" x="330" showattsigs="601" showstereotype="1" y="184" showattributes="1" font="Ubuntu,10,-1,5,75,0,0,0,0,0" width="227" isinstance="0" usefillcolor="1" fillcolor="#ffffc0" xmi.id="kG3S8XATRqib" showscope="1" height="52" showopsigs="601"/>
+ <interfacewidget linecolor="none" usesdiagramfillcolor="1" linewidth="none" showoperations="1" usesdiagramusefillcolor="1" showpubliconly="1" showpackage="1" x="342" showstereotype="1" y="87" font="Ubuntu,10,-1,5,75,1,0,0,0,0" drawascircle="0" width="184" isinstance="0" usefillcolor="1" fillcolor="none" xmi.id="BYw7PBW7PaZW" showscope="1" height="44" showopsigs="601"/>
+ <classwidget linecolor="none" usesdiagramfillcolor="1" linewidth="none" showoperations="1" usesdiagramusefillcolor="1" showpubliconly="1" showpackage="1" x="459" showattsigs="601" showstereotype="1" y="300" showattributes="1" font="Ubuntu,10,-1,5,75,0,0,0,0,0" width="133" isinstance="0" usefillcolor="1" fillcolor="none" xmi.id="UsXTM49RP2EE" showscope="1" height="29" showopsigs="601"/>
+ <classwidget linecolor="none" usesdiagramfillcolor="1" linewidth="none" showoperations="1" usesdiagramusefillcolor="1" showpubliconly="1" showpackage="1" x="254" showattsigs="601" showstereotype="1" y="300" showattributes="1" font="Ubuntu,10,-1,5,75,0,0,0,0,0" width="153" isinstance="0" usefillcolor="1" fillcolor="none" xmi.id="nSHVdoPkDYFK" showscope="1" height="29" showopsigs="601"/>
+ <interfacewidget linecolor="none" usesdiagramfillcolor="1" linewidth="none" showoperations="1" usesdiagramusefillcolor="1" showpubliconly="1" showpackage="1" x="367" showstereotype="1" y="388" font="Ubuntu,10,-1,5,75,1,0,0,0,0" drawascircle="0" width="160" isinstance="0" usefillcolor="1" fillcolor="none" xmi.id="tDJT9A2gh9I3" showscope="1" height="44" showopsigs="601"/>
+ </widgets>
+ <messages/>
+ <associations>
+ <assocwidget indexa="1" indexb="1" usesdiagramusefillcolor="0" widgetaid="kG3S8XATRqib" usesdiagramfillcolor="0" fillcolor="#000000" linecolor="none" totalcounta="2" xmi.id="OOxclE0ol1ww" widgetbid="BYw7PBW7PaZW" totalcountb="2" type="511" usefillcolor="0" linewidth="none">
+ <linepath>
+ <startpoint startx="432" starty="184"/>
+ <endpoint endx="432" endy="131"/>
+ </linepath>
+ </assocwidget>
+ <assocwidget indexa="1" indexb="1" usesdiagramusefillcolor="255" widgetaid="kG3S8XATRqib" usesdiagramfillcolor="255" fillcolor="none" linecolor="none" totalcounta="3" xmi.id="fUBIKo7DA4LI" widgetbid="nSHVdoPkDYFK" totalcountb="2" type="512" usefillcolor="255" linewidth="none">
+ <linepath>
+ <startpoint startx="362" starty="236"/>
+ <endpoint endx="362" endy="300"/>
+ </linepath>
+ <floatingtext linecolor="none" usesdiagramfillcolor="1" linewidth="none" usesdiagramusefillcolor="1" x="362" showstereotype="1" y="268" text="instancie" font="Ubuntu,10,-1,5,50,0,0,0,0,0" pretext="" role="703" width="62" isinstance="0" posttext="" usefillcolor="1" fillcolor="none" xmi.id="We8Eh3gTpzBZ" height="19"/>
+ <floatingtext linecolor="none" usesdiagramfillcolor="1" linewidth="none" usesdiagramusefillcolor="1" x="364" showstereotype="1" y="238" text="1" font="Ubuntu,10,-1,5,50,0,0,0,0,0" pretext="" role="701" width="16" isinstance="0" posttext="" usefillcolor="1" fillcolor="none" xmi.id="RukaNOvu336i" height="19"/>
+ <floatingtext linecolor="none" usesdiagramfillcolor="1" linewidth="none" usesdiagramusefillcolor="1" x="364" showstereotype="1" y="279" text="1" font="Ubuntu,10,-1,5,50,0,0,0,0,0" pretext="" role="702" width="16" isinstance="0" posttext="" usefillcolor="1" fillcolor="none" xmi.id="GwYUBCNb75BU" height="19"/>
+ </assocwidget>
+ <assocwidget indexa="2" indexb="1" usesdiagramusefillcolor="0" widgetaid="kG3S8XATRqib" usesdiagramfillcolor="0" fillcolor="#000000" linecolor="none" totalcounta="3" xmi.id="DweL0xdEpAae" widgetbid="UsXTM49RP2EE" totalcountb="2" type="512" usefillcolor="0" linewidth="none">
+ <linepath>
+ <startpoint startx="508" starty="236"/>
+ <endpoint endx="508" endy="300"/>
+ </linepath>
+ <floatingtext linecolor="none" usesdiagramfillcolor="1" linewidth="none" usesdiagramusefillcolor="1" x="508" showstereotype="1" y="269" text="instancie" font="Ubuntu,10,-1,5,50,0,0,0,0,0" pretext="" role="703" width="62" isinstance="0" posttext="" usefillcolor="1" fillcolor="none" xmi.id="s8Nl0cfW6qjS" height="19"/>
+ <floatingtext linecolor="none" usesdiagramfillcolor="1" linewidth="none" usesdiagramusefillcolor="1" x="510" showstereotype="1" y="238" text="1" font="Ubuntu,10,-1,5,50,0,0,0,0,0" pretext="" role="701" width="16" isinstance="0" posttext="" usefillcolor="1" fillcolor="none" xmi.id="wJt1HUa9cvsa" height="19"/>
+ <floatingtext linecolor="none" usesdiagramfillcolor="1" linewidth="none" usesdiagramusefillcolor="1" x="510" showstereotype="1" y="279" text="1" font="Ubuntu,10,-1,5,50,0,0,0,0,0" pretext="" role="702" width="16" isinstance="0" posttext="" usefillcolor="1" fillcolor="none" xmi.id="XyVvibXetPfA" height="19"/>
+ </assocwidget>
+ <assocwidget indexa="1" indexb="1" usesdiagramusefillcolor="0" widgetaid="nSHVdoPkDYFK" usesdiagramfillcolor="0" fillcolor="#000000" linecolor="none" totalcounta="2" xmi.id="WqUPF7X6LpZS" widgetbid="tDJT9A2gh9I3" totalcountb="3" type="511" usefillcolor="0" linewidth="none">
+ <linepath>
+ <startpoint startx="398" starty="329"/>
+ <endpoint endx="398" endy="388"/>
+ </linepath>
+ </assocwidget>
+ <assocwidget indexa="1" indexb="2" usesdiagramusefillcolor="0" widgetaid="UsXTM49RP2EE" usesdiagramfillcolor="0" fillcolor="#000000" linecolor="none" totalcounta="2" xmi.id="AwSTl1vib2NJ" widgetbid="tDJT9A2gh9I3" totalcountb="3" type="511" usefillcolor="58" linewidth="none">
+ <linepath>
+ <startpoint startx="510" starty="329"/>
+ <endpoint endx="510" endy="388"/>
+ </linepath>
+ </assocwidget>
+ </associations>
+ </diagram>
+ </diagrams>
+ </XMI.extension>
+ </UML:Model>
+ <UML:Model stereotype="folder" visibility="public" isSpecification="false" namespace="m1" isAbstract="false" isLeaf="false" isRoot="false" xmi.id="Use Case View" name="Use Case View">
+ <UML:Namespace.ownedElement/>
+ </UML:Model>
+ <UML:Model stereotype="folder" visibility="public" isSpecification="false" namespace="m1" isAbstract="false" isLeaf="false" isRoot="false" xmi.id="Component View" name="Component View">
+ <UML:Namespace.ownedElement/>
+ </UML:Model>
+ <UML:Model stereotype="folder" visibility="public" isSpecification="false" namespace="m1" isAbstract="false" isLeaf="false" isRoot="false" xmi.id="Deployment View" name="Deployment View">
+ <UML:Namespace.ownedElement/>
+ </UML:Model>
+ <UML:Model stereotype="folder" visibility="public" isSpecification="false" namespace="m1" isAbstract="false" isLeaf="false" isRoot="false" xmi.id="Entity Relationship Model" name="Entity Relationship Model">
+ <UML:Namespace.ownedElement/>
+ </UML:Model>
+ </UML:Namespace.ownedElement>
+ </UML:Model>
+ </XMI.content>
+ <XMI.extensions xmi.extender="umbrello">
+ <docsettings viewid="e3MA5ySQiAqG" uniqueid="1YG8dfUmZuFJ" documentation=""/>
+ <listview>
+ <listitem open="1" type="800" id="Views">
+ <listitem open="1" type="836" id="Entity Relationship Model"/>
+ <listitem open="1" type="802" id="Use Case View"/>
+ <listitem open="1" type="821" id="Component View"/>
+ <listitem open="1" type="827" id="Deployment View"/>
+ <listitem open="1" type="801" id="Logical View">
+ <listitem open="1" type="818" id="NBqMfPwp0LlT">
+ <listitem open="1" type="813" id="UsXTM49RP2EE"/>
+ <listitem open="1" type="813" id="nSHVdoPkDYFK"/>
+ <listitem open="0" type="813" id="KO9M6BTsmDX3">
+ <listitem open="0" type="814" id="eazbSktruFv5"/>
+ <listitem open="1" type="814" id="IDqrnmQNZzdi"/>
+ <listitem open="0" type="814" id="Js2a6sRrdpCC"/>
+ </listitem>
+ <listitem open="1" type="813" id="kG3S8XATRqib">
+ <listitem open="0" type="815" id="52BLkz1CzFrG"/>
+ <listitem open="0" type="815" id="CS8eIf5ejE39"/>
+ </listitem>
+ <listitem open="0" type="813" id="Z3sQfH0YJ5g6">
+ <listitem open="0" type="814" id="o3IdSrqOde12"/>
+ <listitem open="0" type="814" id="kwipcobg6E6w"/>
+ <listitem open="0" type="814" id="RuFbeb0OViC7"/>
+ <listitem open="0" type="814" id="5UZhTZzlr9YW"/>
+ <listitem open="0" type="814" id="HICpfJOiAmOR"/>
+ </listitem>
+ <listitem open="0" type="813" id="tFFeytJRMARL">
+ <listitem open="0" type="814" id="OKYFoL4febk2"/>
+ <listitem open="0" type="814" id="41qibbiE8sRX"/>
+ <listitem open="0" type="814" id="VEhrN6DlOlzB"/>
+ <listitem open="0" type="814" id="dZ9FP4RHHevG"/>
+ </listitem>
+ <listitem open="0" type="813" id="mpuQQtzqbsfV">
+ <listitem open="0" type="814" id="6bYmLOgeEiEK"/>
+ <listitem open="0" type="814" id="MMCAGaa7ZOiQ"/>
+ <listitem open="0" type="814" id="4CWdiGy6waJd"/>
+ </listitem>
+ </listitem>
+ <listitem open="0" type="807" id="e3MA5ySQiAqG" label="MEDOP_componentmodel"/>
+ <listitem open="0" type="807" id="yesp3EjZ9T3u" label="MEDOP_datamodel"/>
+ <listitem open="1" type="818" id="rEjTH3dMz3kh">
+ <listitem open="1" type="817" id="BYw7PBW7PaZW"/>
+ <listitem open="1" type="817" id="tDJT9A2gh9I3"/>
+ </listitem>
+ <listitem open="0" type="830" id="Datatypes">
+ <listitem open="1" type="829" id="dHU5JP7qmxEj"/>
+ <listitem open="1" type="829" id="WVv63G5f9uiL"/>
+ <listitem open="1" type="829" id="7F8E7oZk44nN"/>
+ <listitem open="1" type="829" id="CIGkZvv5QqCT"/>
+ <listitem open="1" type="829" id="ZPqOwG3ZaJgC"/>
+ <listitem open="1" type="829" id="6hIUWSwdh4po"/>
+ <listitem open="1" type="829" id="RuDDqPu2fBmF"/>
+ <listitem open="1" type="829" id="ndz0601vw4R2"/>
+ <listitem open="1" type="829" id="rMXvQKIpDT33"/>
+ <listitem open="1" type="829" id="Ubc9dPySlTNA"/>
+ <listitem open="1" type="829" id="qx3W6plAV1f1"/>
+ </listitem>
+ </listitem>
+ </listitem>
+ </listview>
+ <codegeneration>
+ <codegenerator language="C++"/>
+ </codegeneration>
+ </XMI.extensions>
+</XMI>
--- /dev/null
+# Copyright (C) 2007-2012 CEA/DEN, EDF R&D
+#
+# 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.salome-platform.org/ or email : webmaster.salome@opencascade.com
+#
+
+IF(SPHINX_STATUS)
+ SET(srcdir ${CMAKE_CURRENT_SOURCE_DIR})
+ CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/conf.py.in ${CMAKE_CURRENT_BINARY_DIR}/conf.py @ONLY)
+ #FILE(GLOB MEDOP_DOC_RST "${CMAKE_CURRENT_SOURCE_DIR}/*.rst")
+
+ #FOREACH(SRCFNAME ${MEDOP_DOC_RST})
+ # GET_FILENAME_COMPONENT(FNAME ${SRCFNAME} NAME)
+ # CONFIGURE_FILE(${SRCFNAME} ${CMAKE_CURRENT_BINARY_DIR}/${FNAME} COPY_ONLY)
+ #ENDFOREACH(FNAME ${MEDOP_DOC_RST})
+
+ #FILE(MAKE_DIRECTORY _static)
+ #CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/_static/xmed.css ${CMAKE_CURRENT_BINARY_DIR}/_static/xmed.css COPY_ONLY)
+
+ #FILE(GLOB MEDOP_DOC_PNG_RST "${CMAKE_CURRENT_SOURCE_DIR}/images/*.png")
+ #FOREACH(SRCFNAME ${MEDOP_DOC_PNG_RST})
+ # GET_FILENAME_COMPONENT(FNAME ${SRCFNAME} NAME)
+ # CONFIGURE_FILE(${SRCFNAME} ${CMAKE_CURRENT_BINARY_DIR}/images/${FNAME} COPY_ONLY)
+ #ENDFOREACH(FNAME ${MEDOP_DOC_RST})
+
+ INSTALL(CODE "EXECUTE_PROCESS(COMMAND ${SPHINX_EXECUTABLE_TO_FIND} -c ${CMAKE_CURRENT_BINARY_DIR} -b html -d doctrees -D latex_paper_size=a4 ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_BINARY_DIR}/html)")
+
+ INSTALL(DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/html/ DESTINATION share/doc/salome/dev/MED)
+
+ENDIF(SPHINX_STATUS)
--- /dev/null
+# Copyright (C) 2007-2012 CEA/DEN, EDF R&D, OPEN CASCADE
+#
+# 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.salome-platform.org/ or email : webmaster.salome@opencascade.com
+#
+
+# author: Guillaume Boulant (EDF/R&D, 2012)
+
+include $(top_srcdir)/adm_local/unix/make_common_starter.am
+
+tuidocdir = $(docdir)/tui/MED
+devdocdir = $(docdir)/dev/MED
+medopdocdir=$(devdocdir)
+
+.PHONY : latex
+
+if SPHINX_IS_OK
+
+medopdoc_DATA=html/index.html
+html/index.html:$(RSTFILES)
+ make htm
+
+endif
+
+EXTRA_DIST += html
+
+SPHINXOPTS =
+SOURCEDIR = $(srcdir)
+SPHINXBUILD = sphinx-build
+PAPEROPT_a4 = -D latex_paper_size=a4
+ALLSPHINXOPTS = -d doctrees $(PAPEROPT_a4) $(SPHINXOPTS) $(SOURCEDIR)
+SPHINX_PYTHONPATH = $(prefix)/lib/python$(PYTHON_VERSION)/site-packages/salome:$(KERNEL_ROOT_DIR)/lib/python$(PYTHON_VERSION)/site-packages/salome:$(KERNEL_ROOT_DIR)/bin/salome:$(OMNIORB_ROOT)/lib/python$(PYTHON_VERSION)/site-packages
+
+CONF_PATH = $(top_builddir)/src/MEDOP/doc/sphinx
+
+SPHINX_LD_LIBRARY_PATH = $(OMNIORB_ROOT)/lib
+
+htm:
+ mkdir -p html doctrees
+ PYTHONPATH=$(SPHINX_PYTHONPATH):${PYTHONPATH}; \
+ LD_LIBRARY_PATH=$(SPHINX_LD_LIBRARY_PATH):${LD_LIBRARY_PATH}; \
+ $(SPHINXBUILD) -c $(CONF_PATH) -b html $(ALLSPHINXOPTS) html
+ @echo
+ @echo "Build finished. The HTML pages are in html."
+
+latex:
+ mkdir -p latex doctrees
+ PYTHONPATH=$(SPHINX_PYTHONPATH):${PYTHONPATH}; \
+ LD_LIBRARY_PATH=$(SPHINX_LD_LIBRARY_PATH):${LD_LIBRARY_PATH}; \
+ $(SPHINXBUILD) -c $(CONF_PATH) -b latex $(ALLSPHINXOPTS) latex
+ @echo
+ @echo "Build finished; the LaTeX files are in latex."
+ @echo "Run \`make all-pdf' or \`make all-ps' in that directory to" \
+ "run these through (pdf)latex."
+
+html:
+ mkdir -p $@
+
+RSTFILES= \
+ index.rst \
+ xmed-specifications.rst \
+ xmed-develguide.rst \
+ xmed-userguide.rst
+
+# Files on the development of the prototype (version 2010)
+RSTFILES+=\
+ xmed-prototype-overview.rst \
+ xmed-prototype-develguide.rst \
+ xmed-prototype-medmem.rst
+
+# Files containing definitions and references
+RSTFILES+=\
+ xmed-definitions.rst \
+ xmed-references.rst \
+ xmed-workingnotes-2010.rst \
+ xmed-workingnotes-2011.rst \
+ xmed-workingnotes-2012.rst
+
+# Files on annexe topics
+RSTFILES+=\
+ salomedoc.rst
+
+EXTRA_DIST+= $(RSTFILES)
+
+EXTRA_DIST+= \
+ conf.py
+
+install-data-local:
+ $(INSTALL) -d $(DESTDIR)$(medopdocdir)
+ if test -d "html"; then b=; else b="$(srcdir)/"; fi; \
+ cp -rf $$b"html"/* $(DESTDIR)$(medopdocdir) ; \
+ if test -f $$b"latex"/medopdoc.pdf; then cp -f $$b"latex"/medopdoc.pdf $(DESTDIR)$(medopdocdir) ; fi;
+
+uninstall-local:
+ chmod -R +w $(DESTDIR)$(medopdocdir)
+ rm -rf $(DESTDIR)$(medopdocdir)/*
+
+clean-local:
+ -rm -rf html latex doctrees
+ if test -d "html"; then rm -rf html ; fi
+
+pdf: latex
+ cd latex; make all-pdf
+ cp latex/*.pdf html/_static/documents/.
+
+WIKIRELATIVEPATH="pub/userdata/gboulant/data/salome/smodules/xmed/doc"
+WIKIREMOTEPATH="nepal@nepal:/nepal/$(WIKIRELATIVEPATH)"
+deploy: htm pdf
+ rsync -avz html/ $(WIKIREMOTEPATH)
+ @echo "The documentation can be read at URL : http://nepal.der.edf.fr/$(WIKIRELATIVEPATH)/index.html"
--- /dev/null
+@import url("default.css");
+
+body {
+ font-family: {{ 'Liberation', sans-serif }};
+ font-size: 82%;
+ color: #000;
+ background-color: #fff;
+ margin-left: 28px;
+}
+
+ul {
+ margin: 0 0 0 0;
+}
+
+div.related {
+ background-color: #444;
+}
+
+a,
+div.sphinxsidebar h3 a,
+div.sphinxsidebar a,
+div.footer a {
+ color: #444;
+}
+
+div.sphinxsidebar h3,
+div.sphinxsidebar h4 {
+ color: #000;
+}
+
+div.sphinxsidebar ul {
+ font-size: 94%;
+ color: #000;
+}
+
+div.sphinxsidebar input {
+ border-color: #444;
+}
+
+div.document {
+ background-color: #f5f8e4;
+}
+
+div.body h1,
+div.body h2,
+div.body h3,
+div.body h4,
+div.body h5,
+div.body h6 {
+ color: #000;
+ background-color: transparent;
+ border-bottom: 1px solid #444;
+}
+
+div.footer {
+ color: #000;
+}
+
+li.toctree-l2 {
+ font-size: 100%;
+}
+
+li.toctree-l3 {
+ font-size: 100%;
+}
+
+div.sphinxsidebarwrapper ul {
+ list-style-type: disc;
+ margin-top: 1px;
+ padding-left: 6px;
+}
+
+div.sphinxsidebarwrapper h3 {
+ font-size: 100%;
+ font-weight: bold;
+}
+
+div.body h1 {
+ font-size: 200%;
+}
+div.body h2 {
+ font-size: 160%;
+}
+div.body h3, div.body h4 {
+ font-size: 125%;
+}
+
+div.body p.topic-title {
+ margin-bottom: 2px;
+ font-size: 100%;
+}
+
+div.sphinxsidebar p {
+ color: #444;
+}
+
+#introduction p > em {
+ text-align: right;
+ float: right;
+}
+
+#introduction p {
+ font-size: 90%;
+ margin-bottom: 3px;
+}
+
+#introduction #id2.docutils.footnote {
+ font-size: 70%;
+ margin-top: 25px;
+}
+
+#introduction table.docutils.footnote {
+ font-size: 70%;
+ margin-top: 5px;
+}
--- /dev/null
+# -*- coding: iso-8859-1 -*-
+#
+# yacs documentation build configuration file, created by
+# sphinx-quickstart on Fri Aug 29 09:57:25 2008.
+#
+# This file is execfile()d with the current directory set to its containing dir.
+#
+# The contents of this file are pickled, so don't put values in the namespace
+# that aren't pickleable (module imports are okay, they're removed automatically).
+#
+# All configuration values have a default; values that are commented out
+# serve to show the default.
+
+import sys, os
+
+# If your extensions are in another directory, add it here. If the directory
+# is relative to the documentation root, use os.path.abspath to make it
+# absolute, like shown here.
+#sys.path.append(os.path.abspath('.'))
+
+# General configuration
+# ---------------------
+
+# Add any Sphinx extension module names here, as strings. They can be extensions
+# coming with Sphinx (named 'sphinx.ext.*') or your custom ones.
+extensions = ['sphinx.ext.autodoc']
+
+# Uncomment the following line to build the links with Python documentation
+# (you might need to set http_proxy environment variable for this to work)
+#extensions += ['sphinx.ext.intersphinx']
+
+# Intersphinx mapping to add links to modules and objects in the Python
+# standard library documentation
+intersphinx_mapping = {'http://docs.python.org': None}
+
+# Add any paths that contain templates here, relative to this directory.
+templates_path = [os.path.join('@srcdir@','_templates')]
+
+# The suffix of source filenames.
+source_suffix = '.rst'
+
+# The encoding of source files.
+source_encoding = 'utf-8'
+
+# The master toctree document.
+master_doc = 'index'
+
+# General information about the project.
+project = 'MED, Manipulation de champs dans SALOME'
+copyright = '2010 CEA/DEN, EDF R&D, OPEN CASCADE, G. Boulant, A. Geay'
+
+# The version info for the project you're documenting, acts as replacement for
+# |version| and |release|, also used in various other places throughout the
+# built documents.
+#
+# The short X.Y version.
+version = '@SHORT_VERSION@'
+# The full version, including alpha/beta/rc tags.
+release = '@VERSION@'
+
+# The language for content autogenerated by Sphinx. Refer to documentation
+# for a list of supported languages.
+language = 'fr'
+
+# There are two options for replacing |today|: either, you set today to some
+# non-false value, then it is used:
+#today = ''
+# Else, today_fmt is used as the format for a strftime call.
+#today_fmt = '%B %d, %Y'
+
+# List of documents that shouldn't be included in the build.
+#unused_docs = []
+
+# List of directories, relative to source directory, that shouldn't be searched
+# for source files.
+exclude_trees = ['.build','ref','images','CVS','.svn']
+
+# The reST default role (used for this markup: `text`) to use for all documents.
+#default_role = None
+
+# If true, '()' will be appended to :func: etc. cross-reference text.
+#add_function_parentheses = True
+
+# If true, the current module name will be prepended to all description
+# unit titles (such as .. function::).
+#add_module_names = True
+
+# If true, sectionauthor and moduleauthor directives will be shown in the
+# output. They are ignored by default.
+#show_authors = False
+
+# The name of the Pygments (syntax highlighting) style to use.
+pygments_style = 'sphinx'
+
+
+# Options for HTML output
+# -----------------------
+
+# The theme to use for HTML and HTML Help pages. Major themes that come with
+# Sphinx are currently 'default' and 'sphinxdoc'.
+#html_theme = 'omadoc'
+html_theme_options = {
+ "stickysidebar": "false",
+ "rightsidebar": "false",
+}
+
+# Add any paths that contain custom themes here, relative to this directory.
+#html_theme_path = ['themes']
+
+# The name for this set of Sphinx documents. If None, it defaults to
+# "<project> v<release> documentation".
+#html_title = None
+
+# A shorter title for the navigation bar. Default is the same as html_title.
+#html_short_title = None
+
+# The name of an image file (relative to this directory) to place at the top
+# of the sidebar.
+#html_logo = None
+
+# The name of an image file (within the static path) to use as favicon of the
+# docs. This file should be a Windows icon file (.ico) being 16x16 or 32x32
+# pixels large.
+#html_favicon = None
+
+
+# The stylecheet file will be searched within the static path, while
+# the layout.html file will be searched within the template path
+# (Note that this parameter can't be used together with html_theme. Exclusive)
+html_style = 'xmed.css'
+
+# Add any paths that contain custom static files (such as style sheets) here,
+# relative to this directory. They are copied after the builtin static files,
+# so a file named "default.css" will overwrite the builtin "default.css".
+html_static_path = [os.path.join('@srcdir@','_static')]
+
+# If not '', a 'Last updated on:' timestamp is inserted at every page bottom,
+# using the given strftime format.
+#html_last_updated_fmt = '%b %d, %Y'
+
+# If true, SmartyPants will be used to convert quotes and dashes to
+# typographically correct entities.
+#html_use_smartypants = True
+
+# Custom sidebar templates, maps document names to template names.
+#html_sidebars = {}
+
+# Additional templates that should be rendered to pages, maps page names to
+# template names.
+#html_additional_pages = {}
+
+# If false, no module index is generated.
+html_use_modindex = False
+
+# If false, no index is generated.
+#html_use_index = True
+
+# If true, the index is split into individual pages for each letter.
+#html_split_index = False
+
+# If true, the reST sources are included in the HTML build as _sources/<name>.
+html_copy_source = True
+
+# If true, an OpenSearch description file will be output, and all pages will
+# contain a <link> tag referring to it. The value of this option must be the
+# base URL from which the finished HTML is served.
+#html_use_opensearch = ''
+
+# If nonempty, this is the file name suffix for HTML files (e.g. ".xhtml").
+#html_file_suffix = ''
+
+# Output file base name for HTML help builder.
+htmlhelp_basename = 'xmeddoc'
+
+
+# Options for LaTeX output
+# ------------------------
+
+# The paper size ('letter' or 'a4').
+latex_paper_size = 'a4'
+
+# The font size ('10pt', '11pt' or '12pt').
+latex_font_size = '10pt'
+
+# Grouping the document tree into LaTeX files. List of tuples
+# (source start file, target name, title, author, document class [howto/manual]).
+latex_documents = [
+ ('index', 'xmed-alldoc.tex', 'Documentation du module XMED', 'G. Boulant', 'manual'),
+ ('xmed-specifications', 'xmed-specifications.tex', 'Module XMED - Specifications', 'G. Boulant', 'manual'),
+ ('xmed-develguide', 'xmed-develguide.tex', 'Module XMED - Guide de developpement', 'G. Boulant', 'manual'),
+ ('xmed-userguide', 'xmed-userguide.tex', 'Module XMED - Guide d\'utilisation', 'G. Boulant', 'manual')
+]
+
+# The name of an image file (relative to this directory) to place at the top of
+# the title page.
+#latex_logo = None
+
+# For "manual" documents, if this is true, then toplevel headings are parts,
+# not chapters.
+#latex_use_parts = False
+
+# Additional stuff for the LaTeX preamble.
+#latex_preamble = ''
+
+# Documents to append as an appendix to all manuals.
+#latex_appendices = []
+
+# If false, no module index is generated.
+latex_use_modindex = False
--- /dev/null
+#!/bin/sh
+factor="50%"
+listfiles="\
+ medop-gui-aliasfield.png \
+ medop-gui-result.png \
+ medop-gui-selectfield.png \
+ medop-gui-visufield.png"
+
+for file in $listfiles; do
+ echo "Processing file $file ..."
+ bn=$(basename $file .png)
+ outfile=$bn"_scale.png"
+ convert -scale $factor $file $outfile
+done
+
+
--- /dev/null
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ Documentation du module XMED
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+Le module SALOME nommé XMED (pour eXtension MED) est l'espace de
+développement des fonctions de manipulation de champs dans SALOME. Le
+contenu de ce module est amené à intégrer le module MED pour former la
+future version en préparation pour la version SALOME 7 de 2012.
+
+Documentation principale
+========================
+
+.. toctree::
+ :maxdepth: 1
+
+ xmed-specifications.rst
+ xmed-develguide.rst
+ xmed-userguide.rst
+
+Documentation du prototype 2010
+===============================
+
+Cette section décrit le prototype mis au point en 2010 pour les
+analyses de conception (maquette 2010 sur base MEDMEM)
+
+.. toctree::
+ :maxdepth: 1
+
+ xmed-prototype-overview.rst
+ xmed-prototype-develguide.rst
+ xmed-prototype-medmem.rst
+
+Documentation annexe
+====================
+
+.. toctree::
+ :maxdepth: 1
+
+ xmed-references.rst
+ xmed-workingnotes-2010.rst
+ xmed-workingnotes-2011.rst
+ xmed-workingnotes-2012.rst
+ salomedoc.rst
--- /dev/null
+.. meta::
+ :keywords: SALOME, development
+ :author: Guillaume Boulant
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+Annexe : Règles de développement SALOME
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+Cette annexe est un recueil de techniques de développement spécifiques
+à l'environnement SALOME et utilisées pour la mise au point du module
+XMED. Elles sont a priori utilisables pour d'autres contexte de
+développement dans SALOME.
+
+.. TODO: récupérer les fonctions génériques de VisuGUI_Tools.cxx
+.. TODO: récupérer les fonctions génériques de SMESGGUI_utils.cxx
+
+.. contents:: Sommaire
+ :local:
+ :backlinks: none
+
+Récupérer la sélection dans l'arbre d'étude
+===========================================
+
+Dans une classe dérivée de ``SalomeApp_Module``, on peut utiliser un
+code de la forme suivante:
+
+.. code-block:: cpp
+
+ #include <SALOME_ListIO.hxx>
+ #include <LightApp_SelectionMgr.h>
+ #include <SALOME_ListIteratorOfListIO.hxx>
+ #include <SALOME_InteractiveObject.hxx>
+
+ // ...
+
+ // Get the selected object in the study (SObject)
+ LightApp_SelectionMgr* aSelectionMgr = this->getApp()->selectionMgr();
+ SALOME_ListIO aListIO;
+ aSelectionMgr->selectedObjects(aListIO);
+
+ // Analyse the selection. There can be more than one item.
+ SALOME_ListIteratorOfListIO It (aListIO);
+ for (; It.More(); It.Next()) {
+ Handle(SALOME_InteractiveObject) anIO = It.Value();
+ SALOMEDS::SObject_var aSObject = aStudy->FindObjectID(anIO->getEntry());
+
+ // Check if the selected object is relevant for the operation
+ // ...
+
+ // Process the SObject if it's relevant
+ // ...
+
+ }
+
+On peut noter qu'une variable ``aStudy`` est requise. Elle représente
+l'étude SALOME sur laquelle s'oppère la sélection. L'étude active
+(impliquée dans la sélection) peut être obtenue au moyen du
+gestionnaire d'étude (voir :ref:`ci-dessous <salomedoc_getActiveStudy>`).
+
+Réglage du curseur graphique
+============================
+
+Dans le cas où le traitement est long, il peut être intéressant
+d'encadrer l'opération par un vérouillage du curseur de sélection:
+
+.. code-block:: cpp
+
+ QApplication::setOverrideCursor(Qt::WaitCursor);
+
+ // Do the job
+ // ...
+
+ QApplication::restoreOverrideCursor();
+
+
+Les variables pour la gestion de l'étude
+========================================
+
+Les variables CORBA
+-------------------
+
+Les variables CORBA comme le serveur de noms (naming service) et le
+gestionnaire de cycle de vie des objets (LifeCycleCRORBA) sont
+fréquement utilisés. Dans le contexte d'une application (classe de
+type ``SalomeApp_Module``), il est possible de récupérer simplement
+des instances de ces variables par les commandes suivantes:
+
+.. code-block:: cpp
+
+ #include <SalomeApp_Application.h>
+ #include <SALOME_NamingService.hxx>
+
+ CORBA::ORB_var orb = SalomeApp_Application::orb();
+ SALOMEDSClient_StudyManager* studyMgr = SalomeApp_Application::studyMgr();
+ SALOME_NamingService* namingService = SalomeApp_Application::namingService();
+ SALOME_LifeCycleCORBA* lcc = SalomeApp_Application::lcc();
+
+Pour un usage en dehors de l'application graphique (par exemple au
+niveau du container), l'orb peut être obtenu par les mécanismes
+standard d'omniORB:
+
+.. code-block:: cpp
+
+ CORBA::ORB_var orb = CORBA::ORB_init(0,0);
+
+L'orb est par exemple utile à récupérer pour la sérialisation des
+objets CORBA et la manipulation des références sous forme de chaîne de
+caractères:
+
+.. code-block:: cpp
+
+ // We suppose here that we have a CORBA object reference (object of
+ // type *_ptr or *_var), for example a SALOME_MED::MED object.
+ SALOME_MED::MED_ptr medObj = ... // anything to get this object
+ QString medIOR = orb->object_to_string(medObj);
+
+ SALOME_MED::MED_ptr anOtherRefToMedObj = orb->string_to_object(medIOR)
+
+.. note: this serialization can be used to communicate between a GUI
+ and a component in a container, or between the C++ context and the
+ python context.
+
+.. _salomedoc_getActiveStudy:
+
+Récupérer l'étude active
+------------------------
+
+Le concept d'étude active est un concept GUI. Il désigne l'étude en
+cours d'usage au niveau de l'interface graphique.
+
+.. note: Pour rappel, l'étude est un objet CORBA de type
+ ``SALOMEDS::Study`` qui héberge physiquement les ``SObject``
+ pointant vers les données. L'arbre d'étude ("Object browser") est
+ une représentation graphique de cet objet.
+
+L'étude active peut être obtenue au moyen du gestionnaire
+d'étude. Dans le corps d'une classe de type ``SalomeApp_Module``, ceci
+peut se faire par un code de la forme suivante:
+
+.. code-block:: cpp
+
+ #include "SALOMEconfig.h"
+ #include CORBA_SERVER_HEADER(SALOMEDS)
+ #include <SalomeApp_Application.h>
+ #include <SALOME_NamingService.hxx>
+
+ // ...
+
+ // Get the study id of the active study
+ SalomeApp_Study* appStudy = dynamic_cast<SalomeApp_Study*> (this->getApp()->activeStudy());
+ _PTR(Study) aCStudy = appStudy->studyDS();
+ int aStudyID = aCStudy->StudyId();
+
+ // Then get the study manager
+ SALOME_NamingService *aNamingService = SalomeApp_Application::namingService();
+ CORBA::Object_var anObject = aNamingService->Resolve("/myStudyManager");
+ SALOMEDS::StudyManager_var aStudyManager = SALOMEDS::StudyManager::_narrow(anObject);
+
+ // Finally, request the study manager for the study (SALOMEDS::Study)
+ SALOMEDS::Study_var aStudy = aStudyManager->GetStudyByID(aStudyID);
+
+
+Communiquer avec la console python
+==================================
+
+La console python désigne l'interpréteur embarqué dans l'interface
+graphique de SALOME (GUI). Elle est également désignée comme
+l'interface textuelle de SALOME (TUI) car elle permet de piloter
+SALOME au moyen de commandes en syntaxe python.
+
+Le paragraphe montre comment communiquer avec cette interface texte
+depuis le contexte C++ de l'interface graphique, en particulier pour
+déclencher l'exécution de commandes.
+
+Le code se situe donc au sein d'une classe de type
+``SalomeApp_Module`` (de laquelle hérite la partie graphique d'un
+module SALOME, de nom ``<MODULE_NAME>GUI``). Cette classe possède une
+méthode ``getApp()`` par laquelle on peut récupérer une instance de la
+console python embarquée (this->getApp()->pythonConsole()).
+
+Le code suivant illustre l'envoie d'une commande python par ce
+mécanisme. Dans cette exemple, on défini une variable ``id`` dans la
+console python comme l'identifiant de l'étude active:
+
+.. code-block:: cpp
+
+ #include <PyConsole_Console.h>
+ #include <QString>
+ #include <QStringList>
+
+ PyConsole_Console * pyConsole = getApp()->pythonConsole();
+
+ QStringList commands;
+ commands+="import salome";
+ commands+="id=salome.myStudyId";
+
+ QStringListIterator it(commands);
+ while (it.hasNext()) {
+ pyConsole->exec(it.next());
+ }
+
+Dans ce deuxième exemple, on cherche à reconstituer dans le contexte
+de la console python un pointer vers un objet med instancié dans le
+contexte C++ de l'application graphique. Pour cela, on communique la
+référence de l'objet sous la forme sérialisé (IOR pour un objet
+CORBA):
+
+.. code-block:: cpp
+
+ #include <PyConsole_Console.h>
+ #include <QString>
+ #include <QStringList>
+ #include <SalomeApp_Application.h>
+
+ // We suppose here that we have a CORBA object reference (object of
+ // type *_ptr or *_var), for example a SALOME_MED::MED object.
+ SALOME_MED::MED_ptr medObj = ... // anything to get this object
+
+ // Get the IOR of this object
+ QString medIOR = SalomeApp_Application::orb()->object_to_string(medObj);
+
+ PyConsole_Console * pyConsole = getApp()->pythonConsole();
+
+ QStringList commands;
+ commands+="import salome";
+ commands+=QString("med=salome.orb.string_to_object(\"%1\")").arg(medIOR);
+
+ QStringListIterator it(commands);
+ while (it.hasNext()) {
+ pyConsole->exec(it.next());
+ }
--- /dev/null
+.. AVERTISSEMENT:
+.. Ce fichier contient les définitions globales à la documentation. Il
+.. peut être inclu au moyen de la directive rst "include" pour
+.. disposer des définitions dans le fichier qui fait l'inclusion.
+.. Pour éviter de polluer les textes dans lequel ce fichier est inclu,
+.. il est interdit de faire afficher du texte par ce document de
+.. définition.
+
+.. REFERENCES DOCUMENTAIRES:
+.. (les documents sont fournis dans le répertoire _static/documents)
+
+.. You can refer to this reference using the keyword: |REF_EDF_VCA_H-I2C-2009-03595-FR|_
+.. |REF_EDF_VCA_H-I2C-2009-03595-FR| replace:: H-I2C-2009-03595-FR: Manipulation de champs dans SALOME - Orientations générales
+.. _REF_EDF_VCA_H-I2C-2009-03595-FR: _static/documents/20091218_EDF_VCANO_H-I2C-2009-03595-FR.pdf
+
+.. You can refer to this reference using the keyword: |REF_CEA_VBE_MEDMEM|_
+.. |REF_CEA_VBE_MEDMEM| replace:: Guide utilisateur de MED mémoire
+.. _REF_CEA_VBE_MEDMEM: _static/documents/20070105_CEA_VBERGEAUD_GuideutilisateurMEDMEMOIRE.pdf
+
+.. You can refer to this reference using the keyword: |REF_EDF_GBO_WORKNOTE|_
+.. |REF_EDF_GBO_WORKNOTE| replace:: XMED: Notes de travail
+.. _REF_EDF_GBO_WORKNOTE: _static/documents/20110309_XMED_scan_notes.pdf
+
+.. You can refer to this reference using the keyword: |REF_EDF_ELO_REM|_
+.. |REF_EDF_ELO_REM| replace:: XMED: Remarques E. Lorentz
+.. _REF_EDF_ELO_REM: _static/documents/20110309_XMED_scan_remarques_ELORENTZ.pdf
+
+.. You can refer to this reference using the keyword: |REF_EDF_PRESMANIPCHP01|_
+.. |REF_EDF_PRESMANIPCHP01| replace:: Séminaire EDF-CEA de janvier 2010: manipulation de champs
+.. _REF_EDF_PRESMANIPCHP01: _static/documents/20100129_MAN_seminaireEDF-CEA_all.pdf
+
+.. You can refer to this reference using the keyword: |REF_EDF_PRESMANIPCHP02|_
+.. |REF_EDF_PRESMANIPCHP02| replace:: Révue EDF-CEA: maquette de manipulation de champs
+.. _REF_EDF_PRESMANIPCHP02: _static/documents/20101027_MAN_revueEDF-CEA.pdf
+
+.. You can refer to this reference using the keyword: |REF_EDF_PRESMANIPCHP03|_
+.. |REF_EDF_PRESMANIPCHP03| replace:: Séminaire EDF-CEA de mars 2011: manipulation de champs, maquette 2010
+.. _REF_EDF_PRESMANIPCHP03: _static/documents/20110310_seminaireEDF-CEA_maquetteXMED.pdf
+
+.. PRESENTATIONS:
+
+.. You can refer to this reference using the keyword: |REF_EDF_JUS2011_PDF|_
+.. |REF_EDF_JUS2011_PDF| replace:: JUS2011: outils de manipulation de champs
+.. _REF_EDF_JUS2011_PDF: _static/presentations/20111115_JUS-2011/20111115_JUS2011_manipulation_de_champs.pdf
+
+.. You can refer to this reference using the keyword: |REF_EDF_JUS2011_OGV1|_
+.. |REF_EDF_JUS2011_OGV1| replace:: JUS2011: outils de manipulation de champs - Exemple 1
+.. _REF_EDF_JUS2011_OGV1: _static/presentations/20111115_JUS-2011/20111115_JUS2011_medop_exemple_1.ogv
+.. You can refer to this reference using the keyword: |REF_EDF_JUS2011_OGV3|_
+.. |REF_EDF_JUS2011_OGV3| replace:: JUS2011: outils de manipulation de champs - Exemple 3
+.. _REF_EDF_JUS2011_OGV3: _static/presentations/20111115_JUS-2011/20111115_JUS2011_medop_exemple_3.ogv
+.. You can refer to this reference using the keyword: |REF_EDF_JUS2011_OGV4|_
+.. |REF_EDF_JUS2011_OGV4| replace:: JUS2011: outils de manipulation de champs - Exemple 4
+.. _REF_EDF_JUS2011_OGV4: _static/presentations/20111115_JUS-2011/20111115_JUS2011_medop_exemple_4.ogv
+
+
+
+.. LIENS EXTERNES:
+.. (l'accès nécessite le réseau intranet EDF et internet)
+
+.. You can refer to this reference using the keyword: |LINK_EDF_MEDDOC|_
+.. |LINK_EDF_MEDDOC| replace:: Modèle MED
+.. _LINK_EDF_MEDDOC: http://med.der.edf.fr/logiciels/med-2.3.6/doc/html/modele_de_donnees.html
+
+.. You can refer to this reference using the keyword: |LINK_EDF_MEDFICHIERDOC|_
+.. |LINK_EDF_MEDFICHIERDOC| replace:: Documentation de MED fichier
+.. _LINK_EDF_MEDFICHIERDOC: http://med.der.edf.fr/logiciels/med-2.3.6/doc
+
+.. You can refer to this reference using the keyword: |LINK_EDF_SALOME_MED__MED|_
+.. |LINK_EDF_SALOME_MED__MED| replace:: SALOME_MED::MED
+.. _LINK_EDF_SALOME_MED__MED: http://nepal.der.edf.fr/pub/SALOME_userguide/MED5/doc/salome/tui/MED/interfaceSALOME__MED_1_1MED.html
+
+.. RENVOIES:
+
+.. You can refer to this reference using the keyword: |SEE_MEDMEM_CORBA|
+.. |SEE_MEDMEM_CORBA| replace:: :ref:`L'interface CORBA SALOME_MED<xmed-medmem_corbainterface>`
+
+
+.. SNAPSHOTS:
+
+.. |XMED_SPECIFICATIONS_PDF| replace:: version pdf
+.. _XMED_SPECIFICATIONS_PDF: _static/documents/xmed-specifications.pdf
+
+.. |XMED_DEVELGUIDE_PDF| replace:: version pdf
+.. _XMED_DEVELGUIDE_PDF: _static/documents/xmed-develguide.pdf
+
+.. |XMED_USERGUIDE_PDF| replace:: version pdf
+.. _XMED_USERGUIDE_PDF: _static/documents/xmed-userguide.pdf
--- /dev/null
+.. meta::
+ :keywords: maillage, champ, manipulation, med, développement
+ :author: Guillaume Boulant
+
+.. include:: xmed-definitions.rst
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+Module XMED: Guide de développement
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+(|XMED_DEVELGUIDE_PDF|_)
+
+Ce document est la documentation technique du module XMED. Il fournit
+les instructions à suivre pour installer le module en vue d'un travail
+de développement, puis décrit les éléments de conception qui
+structurent le module.
+
+.. contents:: Sommaire
+ :local:
+ :backlinks: none
+
+.. warning:: Ce document est en travaux. Tant que cet avis n'aura pas
+ disparu, veuillez en considérer le plan et le contenu encore
+ incomplets, temporaires et sujets à caution.
+
+Mise en place d'un espace de développement
+==========================================
+
+Gestion de configuration du module XMED
+---------------------------------------
+
+Les sources du module (répertoire ``xmed``) sont archivés en dépôt de
+configuration dans une base git du projet NEPAL. Ils peuvent être
+récupérés au moyen de la commande::
+
+ $ git clone git@cli70rw.der.edf.fr:xom/xmed.git
+
+Cette commande installe un répertoire ``xmed`` contenant l'ensemble
+des sources du module XMED.
+
+Le module XMED a pour pré-requis logiciel la plateforme SALOME:
+
+* SALOME version 6.1.3 (au moins) à télécharger à l'URL
+ http://pal.der.edf.fr/pal/projets/pal/releases/V6_1_3
+* On peut également utiliser une version dérivée comme SALOME-MECA 2010.1
+* Installer la plate-forme choisie selon les instructions fournies.
+
+Le module XMED utilise également une bibliothèque interne au projet
+NEPAL, appelée XSALOME, et qui fournit une extension aux fonctions de
+SALOME pour un usage de développement (XSALOME signifie eXtension
+SALOME). Les sources de cette bibliothèque doivent être récupérés au
+moyen de la commande::
+
+ $ git clone git@cli70rw.der.edf.fr:xom/xsalome.git
+
+Cette commande installe un répertoire ``xsalome`` contenant l'ensemble
+des sources de la bibliothèque XSALOME.
+
+.. note:: La bibliothèque XSALOME n'est pas un module SALOME mais une
+ simple bibliothèque de fonctions qui complète ou rend plus facile
+ d'utilisation les fonctions de SALOME. Elle NE DOIT EN AUCUN CAS
+ être intégrée à d'autres projets que les projets internes NEPAL ou
+ MAILLAGE. Il s'agit en effet d'une bibliothèque de transition qui
+ héberge des développements destinés à être reversés dans la
+ plate-forme SALOME. Le contenu et les interfaces de XSALOME ne peut
+ donc être garanti sur le long terme.
+
+Installation et lancement de l'application
+------------------------------------------
+
+L'installation suppose qu'une version 6.1.3 de SALOME (ou plus) est
+disponible et que le shell de travail est étendu avec l'environnement
+de SALOME. En général, par des commandes de la forme::
+
+ $ . /where/is/salome/prerequis.sh
+ $ . /where/is/salome/envSalome.sh
+
+La compilation des modules xsalome et xmed suit le standard SALOME. La
+bibliothèque xsalome est un prérequis à la compilation de xmed. Pour
+cela, la variable d'environnement XSALOME_DIR doit être spécifiée pour
+la configuration de la procédure de reconstruction de xmed::
+
+ $ export XSALOME_DIR=<xsalome_installdir>
+
+Aprés l'installation de xmed, il est possible de générer
+automatiquement une application SALOME prête à l'emploi pour la
+manipulation de champs::
+
+ $ <xmed_installdir>/bin/salome/xmed/appligen/appligen.sh
+
+Cette commande génére un répertoire ``appli`` à l'emplacement où elle
+est exécutée. Il reste à lancer l'application SALOME au moyen de la
+commande::
+
+ $ ./appli/runAppli -k
+
+Exécution des tests unitaires
+-----------------------------
+
+Les tests unitaires peuvent être exécutés au moyen de scripts python
+lancés depuis une session shell SALOME. Dans un nouveau shell, taper::
+
+ $ ./appli/runSession
+ [NS=mars:2810]$ python appli/lib/python2.6/site-packages/salome/xmed/test_medoperation.py
+
+L'exécution imprime un rapport détaillant le résultat pour chaque
+fonction de test::
+
+ test_addition (__main__.MyTestSuite) ... ok
+ test_arithmetics (__main__.MyTestSuite) ... ok
+ test_composition (__main__.MyTestSuite) ... FAIL
+ test_litteral_equation (__main__.MyTestSuite) ... ok
+ test_modification_of_attributes (__main__.MyTestSuite) ... ok
+ test_unary_operations (__main__.MyTestSuite) ... ok
+ test_update_metadata (__main__.MyTestSuite) ... ok
+
+Les scripts de test sont:
+
+* ``test_medoperation.py``: tests des operations de champs telles
+ qu'elles sont mises en oeuvre depuis l'interface textuelle.
+* ``test_xmed.py``: tests des composants CORBA mis en oeuvre
+ (``MEDDataManager`` et ``MEDCalculator``)
+
+Architecture du module XMED
+===========================
+
+Le module MED pour la manipulation de champs est composé de:
+
+* une bibliothèque de fonctions pour le traitement de données sur des
+ maillages et des champs conformes au modèle MED (package
+ MEDCoupling, MEDLoader et REMAPPER);
+* une interface graphique pour la mise en oeuvre des cas standard de
+ manipulation de champs;
+* une ensemble d'outils pour intervenir sur des fichiers au format
+ MED.
+
+Une bibliothèque de fonctions pour le traitement de données
+-----------------------------------------------------------
+
+La figure ci-dessous montre la structure des paquets logiciels qui
+constituent la bibliothèque:
+
+.. image:: images/medlayers.png
+ :align: center
+
+Elle comprend en particulier les paquets suivants:
+
+* MEDCoupling: qui décrit les structures de données pour porter les
+ maillages et les champs
+* MEDLoader: qui fournit les fonctions de persistence sous forme de
+ fichiers au format MED (lecture et écriture).
+* REMAPPER:
+
+Il est important de noter que MEDCoupling n'a aucune dépendance
+logicielle autre que la bibliothèque C++ standard. Ceci permet
+d'envisager son implantation dans un code de calcul ou un outil de
+traitement sans tirer l'ensemble pré-requis de SALOME.
+
+Une interface graphique pour l'exécution des cas standard
+---------------------------------------------------------
+
+
+Un ensemble d'outils pour le traitement de fichiers
+---------------------------------------------------
+
+
+Description des composants
+==========================
+
+MEDDataManager - Le gestionnaire des données de session
+-------------------------------------------------------
+
+Le composant MEDDataManager s'occupe de fournir les données MED sur
+demande des interfaces clientes, en particulier pour module de
+pilotage fieldproxy.py. Ces données peuvent avoir plusieurs sources,
+en général elle proviennent d'un fichier au format med contenant des
+champs définis sur des maillages. Les données sont identifiées à la
+lecture des métadonnées de description dans le fichiers med, puis les
+valeurs des champs et les maillages support sont chargés au besoin.
+
+Le chargement des métadonnées de description se fait par la méthode::
+
+ addDatasource(const char \*filepath)
+
+
+
+Eléments d'implémentation
+=========================
+
+Ecrire un service CORBA qui retourne une sequence de FieldHandler:
+
+.. code-block:: cpp
+
+ MEDOP::FieldHandlerList * MyFunction(...) {
+ vector<MEDOP::FieldHandler*> fieldHandlerList;
+ ...
+
+ fieldHandlerList.push_back(fieldHandler);
+
+ // Map the resulting list to a CORBA sequence for return:
+ MEDOP::FieldHandlerList_var fieldHandlerSeq = new MEDOP::FieldHandlerList();
+ int nbFieldHandler = fieldHandlerList.size();
+ fieldHandlerSeq->length(nbFieldHandler);
+ for (int i=0; i<nbFieldHandler; i++) {
+ fieldHandlerSeq[i] = *fieldHandlerList[i];
+ }
+ return fieldHandlerSeq._retn();
+ }
+
+Ecrire un service CORBA qui retourne une structure CORBA:
+
+.. code-block:: cpp
+
+ MEDOP::FieldHandler * fieldHandler = new ...
+ _fieldHandlerMap[fieldHandler->id] = fieldHandler;
+
+ // >>> WARNING: CORBA struct specification indicates that the
+ // assignement acts as a desctructor for the structure that is
+ // pointed to. The values of the fields are copy first in the new
+ // structure that receives the assignement and finally the initial
+ // structure is destroyed. In the present case, WE WANT to keep
+ // the initial fieldHandler in the map. We must then make a deep
+ // copy of the structure found in the map and return the copy. The
+ // CORBA struct specification indicates that a deep copy can be
+ // done using the copy constructor. <<<
+ return new MEDOP::FieldHandler(*fieldHandler);
+
+
+
+ANNEXE: Bug en cours
+====================
+
+TO FIX:
+
+* la composition d'opérations n'est pas possible (ex: 2*f1+f2) car
+ 2*f1 est indiqué comme non compatible (il semble qu'il n'ai pas la
+ reference correcte vers le maillage).
+* le script de test test_medoperation.py plante si le module xmed n'a
+ pas été chargé avec des données chargées.
--- /dev/null
+.. meta::
+ :keywords: maillage, champ, manipulation, XMED
+ :author: Guillaume Boulant
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+Démonstrateur XMED, documentation technique
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+Cette note fait la synthèse des développements effectués pour le
+maquettage des fonctions de manipulation de champs dans SALOME. Elle
+présente les principes retenus en matière de conception, c'est-à-dire
+concernant les mécanismes techniques sous-jacents, et en matière
+d'ergonomie, c'est-à-dire concernant les modalités d'utilisation dans
+l'environnement SALOME.
+
+Ces principes sont illustrés par des développements implantés dans le
+module XMED, développé pour les besoins de l'analyse, et dans le
+module MED distribué avec la plateforme SALOME.
+
+.. note:: la lecture de ce chapitre demande une connaissance de la
+ structure de classes du module MED, en particulier la distinction
+ entre les classes ``MEDMEM::*`` et les servants CORBA associés
+ (classe ``SALOME_MED::*``).
+
+.. contents:: Sommaire
+ :local:
+ :backlinks: none
+
+Principes directeurs
+====================
+
+Objectif et motivation
+----------------------
+
+L'objectif de maquettage est de trouver une architecture technique qui
+permet d'exécuter le cas d'utilisation suivant:
+
+* Chargement d'un fichier med dans SALOME (a priori dans le module MED)
+* Sélection graphique des champs de l'étude à mettre à disposition
+ dans la console utilisateur ("calculette" en mode texte qui
+ concraitement correspond à l'interface python de SALOME).
+* Dans la calculette, exécution d'opérations algébriques (+,-,*,/)
+ entre champs avec possibilité d'utiliser des scalaires dans des
+ opérations de type transformation linéaire (y=ax+b ou y et x sont
+ des champs et a et b des scalaires). Opérations pow, sqrt.
+* Possibilité de visualiser les champs produits avec VISU pour
+ contrôle des résultats.
+* Possibilité d'exporter des champs produits dans un fichier med.
+
+Eléments de contexte
+--------------------
+
+Les opérations de manipulation de champs sont en grande partie
+implémentées dans la bibliothèque MEDMEM. Pour illustration, le
+fragment de code ci-dessous montre comment une addition de champ peut
+être opérée en python:
+
+.. code-block:: python
+
+ from libMEDMEM_Swig import MedDataManager
+ from xmed.helper import readMed, writeMed
+
+ # Load the medmem data structure from a med file
+ med = readMed("/tmp/input.med")
+ # Then create a med data manager to deal with the fields data
+ dm = MedDataManager(med)
+ # Get the timestamps (dt,it)=(-1,-1) of the fields "testfield1" and "testfield2"
+ f1 = dm.getFieldDouble("testfield1",-1,-1)
+ f2 = dm.getFieldDouble("testfield2",-1,-1)
+
+ # Create a new field as the sum of f1 and f2
+ r = f1 + f2
+ # And add this new field to the med data structure
+ med.addField(r)
+
+ # Finally, write the whole data in an output med file
+ writeMed(med,"/tmp/output.med")
+
+Ceci montre que les champs peuvent être manipulés avec une interface
+relativement ergonomique (une addition de deux champs f1 et f2 s'écrit
+f1+f2) tant que l'on manoeuvre des objets MEDMEM purs (classes C++ du
+package MEDMEM et wrapping python du package MEDMEM_SWIG).
+
+Par ailleurs, le fonctionnement actuel des modules SALOME qui
+manoeuvrent des données MED est d'instancier les structures de données
+MEDMEM au niveau de la partie serveur, c'est-à-dire au niveau des
+servants CORBA hébergés dans le processus ``SALOME_Container``, et de
+donner accés à ces données depuis l'étude SALOME au travers de
+pointeurs CORBA. Ce choix d'architecture présente l'avantage de
+centraliser au niveau serveur la gestion du cycle de vie des données
+informatiques et de pouvoir distribuer des "poignées" pour manipuler
+ces données depuis chaque point de l'application qui sait accéder au
+bus CORBA, l'interface graphique en particulier.
+
+
+Hypothèse de travail
+--------------------
+
+Compte-tenu de l'objectif de maquettage et des éléments de contexte
+existant, on cherche une solution dans le cadre des hypothèses
+de travail suivantes:
+
+* La manipulation des champs se fait dans l'environement graphique de
+ SALOME.
+* Dans cet environnement, on souhaite pouvoir sélectionner
+ graphiquement les champs à considérer, puis manipuler ces champs
+ dans l'interface texte au moyen de variables python avec une syntaxe
+ aussi simple que celle définie dans le wrapping python de MEDMEM,
+ c'est-à-dire que pour faire l'addition de 2 champs f1 et f2, on veut
+ pouvoir écrire f1+f2.
+* Les données MED sont physiquement dans la partie serveur de SALOME
+ et accessibles via des pointeurs CORBA (interface spécifiée dans
+ MED.idl). On exclu la recopie de données au niveau du client
+ graphique.
+
+Dans le cadre de ces hypothèses, la difficulté technique réside dans
+la mise au point d'une interface de communication entre des variables
+manipulées par l'utilisateur dans l'interface graphique (c'est-à-dire
+dans le processus ``SALOME_SessionServer``) et des objets MEDMEM
+instanciés dans le containeur des servants CORBA (c'est-à-dire dans le
+processus ``SALOME_Container``).
+
+
+Eléments de conception
+======================
+
+
+Implantation technique
+----------------------
+
+Le diagramme ci-dessous représente l'organisation des principaux
+paquets logiciels du module MED:
+
+.. image:: images/medmem-layers.png
+ :align: center
+
+Les cadres bleus représentent le lieu d'implantation des
+développements effectués dans le module MED pour les besoins du
+maquettage. On notera en particulier les interventions aux niveaux
+suivants:
+
+* interfaces idl: ajout de l'interface MEDOP.idl
+* package MEDMEM_I: ajout du servant SALOME_MED::MEDOP qui implémente
+ l'interface MEDOP.idl
+
+Architecture technique
+----------------------
+
+Les schéma ci-dessous représente les objets informatiques qui sont à
+l'oeuvre pour la réalisation des opérations sur les champs:
+
+.. image:: /images/xmed-architecture.png
+ :align: center
+ :alt: Objets mis en oeuvre dans l'interface de manipulation de champs
+
+On distingue les objets suivants:
+
+* Une instance de ``MEDMEM::MED``, correspondant à la structure de donnée
+ MED chargée en mémoire.
+* Des instances de ``MEDMEM::FIELD`` qui représentent les champs med
+ chargés en mémoire.
+* Une instances de ``SALOME_MED::MED`` et des instances de
+ ``SALOME_MED::FIELD`` qui sont les servants CORBA respectivement de la
+ structure med et des champs qui lui sont associés et chargés en
+ mémoire.
+* Une instance de ``SALOME_MED::MEDOP`` qui est le servant CORBA qui
+ centralise la mise en oeuvre des opérations de champs sur le serveur
+ ``SALOME_Container``. Le servant MEDOP détient en attribut une référence
+ sur la structure ``MEDMEM::MED``, ce qui lui permet d'accéder
+ directement aux champs ``MEDMEM::FIELD`` à partir de leur nom et du pas
+ de temps.
+* Des instances de ``FieldProxy`` qui correspondent aux variables
+ manipulées au niveau de l'interface graphique et qui représentent
+ les champs. Une instance de FieldProxy possède détient les
+ références des servants ``SALOME_MED::MEDOP`` et
+ ``SALOME_MED::FIELD`` sous la forme de pointeurs CORBA de noms
+ ``medop_ptr`` et ``field_ptr`` respectivement.
+* Il existe également une instance de ``MedProxy`` non représentée
+ dans ce diagramme. Cette instance correspond à une variable qui
+ permet de manipuler la structure med.
+
+.. note:: Les éléments apportés par la maquette sont les classes
+ ``SALOME_MED::MEDOP``, ``MedProxy`` et ``FieldProxy``. Les autres
+ éléments ont pu être modifiés légèrement pour les besoins de
+ l'intégration ou pour la correction de quelques bugs.
+
+Le cycle de vie de ces objets est le suivant.
+
+Pour ce qui concerne les instances de la structure ``MEDMEM::MED`` et
+des champs ``MEDMEM::FIELD``, la création est faite au moment du
+chargement du fichier med dans SALOME au moyen du module MED. A cette
+occasion, les servants CORBA associés ``SALOME_MED::MED`` et
+``SALOME_MED::FIELD`` sont créés et des références vers ces servants
+sont publiés dans l'étude. Ils peuvent donc être sélectionnés par
+l'utilisateur dans l'interface graphique. L'ensemble de ces données
+préexiste à la manipulation de champs.
+
+Les objets ``SALOME_MED::MEDOP`` sont instanciés au sein du servant
+``SALOME_MED::MED`` auquel ils sont associées. Le servant
+``SALOME_MED::MED`` possède une référence sur la structure
+``MEDMEM::MED`` et il la transmet à l'instance du servant
+``SALOME_MED::MEDOP`` qu'il construit. L'opérateur MEDOP est donc
+autonome par la suite pour manipuler les données MED, et les champs en
+particulier. Le code python ci-dessous montre comment un opérateur med
+``SALOME_MED::MEDOP`` peut être créé puis utilisé pour réaliser
+l'addition de deux champs:
+
+.. code-block:: python
+
+ import salome
+ salome.salome_init()
+ import SALOME_MED
+
+ medComp = salome.lcc.FindOrLoadComponent("FactoryServer", "MED")
+ medObj = medComp.readStructFile("myfile.med",salome.myStudyName)
+ medOp = medObj.createMedOperator()
+
+ f1 = medObj.getField("testfield1",-1,-1)
+ f2 = medObj.getField("testfield2",-1,-1)
+
+ somme = medOp.add(f1,f2)
+
+Il est à noter qu'une instance de ``SALOME_MED::MEDOP`` est associé à
+une instance unique de ``SALOME_MED::MED`` (et donc indirectement de
+``MEDMED::MED``) pour toute la durée de son cycle de vie. Par contre,
+un servant ``SALOME_MED::MED`` peut être associé à plusieurs servants
+``SALOME_MED::MEDOP`` différents. Un servant ``SALOME_MED::MEDOP`` a
+une référence directe sur la structure ``MEDMEM::MED`` et peut la
+manoeuvrer pour demander des champs, faire des opérations avec ces
+champs, ajouter le champs résultat à la structure et enfin retourner
+un servant ``SALOME_MED::FIELD`` qui encapsule le champ résultat.
+
+Enfin, quelques éléments concernant la classe ``FieldProxy``. Une
+instance de ``FieldProxy`` est un objet python qui peut être
+manoeuvrée dans l'interpréteur SALOME et qui référence un champ MED
+localisé sur le serveur ``SALOME_Container`` (par le mécanisme décrit
+ci-dessus). C'est à ce niveau qu'on règle les détails d'ergonomie
+d'usage (cf. paragraphe ci-après). La création d'un objet
+``FieldProxy`` déclenche la création d'un opérateur med (instance de
+``SALOME_MED::MEDOP``) qui lui est associé et dont il conserve la
+référence CORBA en attribut (noté ``medop_ptr`` sur le diagramme). Cet
+opérateur ``medop_ptr`` peut être requêter pour exécuter toutes les
+opérations possibles sur ce champ, comme illustrer sur l'exemple
+ci-dessus.
+
+
+Rôle des objets proxy
+---------------------
+
+Dans le modèle d'architecture présenté ci-dessus, on introduit deux
+types d'objets proxy:
+
+* Les objets de classe ``FieldProxy`` qui représentent des poignées de
+ manipulation des champs ``MEDMEM::FIELD`` physiquement instanciés
+ dans le container SALOME.
+* Les objets de classe ``MedProxy`` qui représentent des poignées de
+ manipulation des structures ``MEDMEM::MED`` physiquement instanciées
+ dans le container SALOME.
+
+Elles sont instanciées dans l'interpréteur python SALOME pour
+manipulation dans l'interface textuelle à partir de la donnée du
+pointeur vers le servant ``SALOME_MED::MED`` et de l'identifiant du
+champ (le nom du champ et le pas de temps défini par le numéro d'ordre
+et le numéro d'iteration:
+
+.. code-block:: python
+
+ import salome
+ salome.salome_init()
+ import SALOME_MED
+
+ medComp = salome.lcc.FindOrLoadComponent("FactoryServer", "MED")
+ medObj = medComp.readStructFile("myfile.med",salome.myStudyName)
+
+ from xmed import fieldproxy
+ from xmed import medproxy
+
+ f1 = fieldproxy.getFieldFromMed(medObj, "testfield1", -1, -1)
+ f2 = fieldproxy.getFieldFromMed(medObj, "testfield2", -1, -1)
+
+ field_somme = f1 + f2
+ field_offset = f1 + 5.3
+
+Dans cet exemple, les variables ``f1``, ``f2``, ``field_somme`` et
+``field_offset`` sont des objets de classe ``FieldProxy``. Ils
+correspondent aux variables physiquement manipulées par
+l'utilisateur pour désigner les champs dans les opérations.
+
+Ces classes proxy sont conçues pour être le lieu d'implémentation de
+l'interprétation des commandes utilisateur et donc de l'ergonomie
+de manipulation des champs au niveau l'interface textuelle. Ce point
+est développé :ref:`plus bas <develguide_execFieldOperation>`.
+
+Programmation de l'interface textuelle
+--------------------------------------
+
+Dans le cadre de la maquette, l'interface de manipulation des champs
+est l'interface textuelle python intégrée à SALOME. Dans la pratique,
+l'utilisateur manipule des variables python qui correspondent à des
+objets de classe ``FieldProxy`` équipées des fonctions requises et de
+l'ergonomie nécessaire à la mise en oeuvre des opérations (voir
+ci-dessus).
+
+Or, l'hypothèse de travail est que les données MED sont chargées dans
+SALOME et publiées dans l'étude pour point d'accés depuis l'interface
+graphique. L'utilisateur choisi un champs directement dans l'arbre
+d'étude (ou dans une interface graphique dédiée) puis demande qu'il
+soit mis à disposition dans l'interface python sous un nom de variable
+à choisir. Les captures d'écran ci-dessous montre la séquence
+graphique en images:
+
+.. |IMG_SELECT| image:: images/medop-gui-selectfield_scale.png
+.. |IMG_ALIAS| image:: images/medop-gui-aliasfield_scale.png
+
++---------------+---------------+
+| |IMG_SELECT| | |IMG_ALIAS| |
++---------------+---------------+
+
+L'image de gauche montre la sélection du pas de temps, l'image de
+droite la boîte de dialogue qui permet la saisie de l'alias avec
+lequel le champs sera manipulé dans l'interface textuelle. La
+validation de cette fenêtre doit mettre automatiquement le champ à
+disposition dans l'interface python SALOME et sous le nom de variable
+spécifié par l'alias saisi.
+
+Pour cela, il y a un couplage technique à programmer entre l'interface
+graphique et l'interface textuelle python, avec en particulier la
+transmission des pointeurs vers les servants CORBA mis en jeu dans la
+sélection.
+
+Ce couplage est implanté au niveau de la classe MEDGUI.cxx du module
+MED (où de la classe XMEDGUI.cxx du module XMED pour la maquette) qui
+implémente l'interface graphique du module. Pour rappel, l'interface
+graphique d'un module SALOME se présente sous la forme d'une classe
+centrale de nom ``<MODULE_NAME>GUI`` et qui spécialise la classe
+``SalomeApp_Module``. Cette classe possède une méthode ``getApp()``
+par laquelle on peut récupérer une instance de la console python
+embarquée (this->getApp()->pythonConsole()).
+
+Le code suivant illustre l'envoie d'une commande python par ce
+mécanisme. Dans cet example, on cherche à reconstituer dans le
+contexte de la console python un pointer vers un objet med instancié
+dans le contexte C++ de l'application graphique. Pour cela, on
+communique la référence de l'objet sous la forme sérialisé (IOR pour
+un objet CORBA):
+
+.. code-block:: cpp
+
+ #include <PyConsole_Console.h>
+ #include <QString>
+ #include <QStringList>
+ #include <SalomeApp_Application.h>
+
+ // We suppose here that we have a CORBA object reference (object of
+ // type *_ptr or *_var), for example a SALOME_MED::MED object.
+ SALOME_MED::MED_ptr medObj = ... // anything to get this object
+
+ // Get the IOR of this object
+ QString medIOR = SalomeApp_Application::orb()->object_to_string(medObj);
+
+ PyConsole_Console * pyConsole = getApp()->pythonConsole();
+
+ QStringList commands;
+ commands+="import salome";
+ commands+=QString("med=salome.orb.string_to_object(\"%1\")").arg(medIOR);
+
+ QStringListIterator it(commands);
+ while (it.hasNext()) {
+ pyConsole->exec(it.next());
+ }
+
+Le code réel de la maquette est basé sur ce principe et transmet à la
+console python des lignes de commandes qui permettent de reconstruire:
+
+* un pointeur CORBA vers le servant ``SALOME_MED::MED`` associé au
+ champ sélectionné;
+* une instance de ``FieldProxy`` qui correspond au champ sélectionné
+ et avec pour nom de variable la valeur de l'alias saisi dans
+ l'interface graphique.
+
+Au niveau du code C++ de la classe ``XMEDGUI.cxx``, cela se traduit
+par la fabrication de la liste de commandes suivante pour envoie à la
+console python par le mécanisme illustré plus haut:
+
+.. code-block:: cpp
+
+ QStringList commands;
+ commands+="from xmed.fieldproxy import getFieldFromMed";
+ commands+="from xmed.medproxy import getMedProxy";
+ commands+=QString("if not dir().__contains__('med'): med = getMedProxy(\"%1\")").arg(medIOR);
+ commands+=QString("%1=getFieldFromMed(med,\"%3\",%4,%5)").arg(*alias).arg(fieldName).arg(orderIndex).arg(iterationIndex);
+
+Les variables ``medIOR``, ``fieldName``, ``orderIndex`` et
+``iterationIndex`` sont construites à partir du champ sélectionné par
+des techniques de programmation standard dans SALOME qu'on peut
+examiner en détail dans la classe ``XMEDGUI`` (voir méthode
+``XMEDGUI::LoadIntoPythonConsole()``). La variable ``alias`` est la
+chaîne saisie par l'utilisateur dans la fenêtre de dialogue.
+
+Le point important à noter ici est que les données à transmettre
+doivent être fournies sous forme de chaînes de caractères ou de types
+simples. C'est pourquoi la référence au servant CORBA
+``SALOME_MED::MED`` est transmise ici sous la forme de son IOR,
+c'est-à-dire une chaîne de caractères qui permet l'identification de
+l'objet au niveau du bus CORBA.
+
+Au niveau de la console python cela correspond à l'exécution des
+commandes suivantes:
+
+.. code-block:: python
+
+ from xmed.fieldproxy import getFieldFromMed
+ from xmed.medproxy import getMedProxy
+
+ med = getMedProxy("IOR:010000001700000049444c3a53414c4f4d455f4d45442f4d45443a312e300000010000000000000064000000010102000e0000003133302e39382e37372e313733009e0a0e000000feadc4ca4c00003169000000001100000200000000000000080000000100000000545441010000001c00000001000000010001000100000001000105090101000100000009010100")
+
+ f1=getFieldFromMed(med,"testfield1",-1,-1)
+
+Ce jeu d'instructions reconstitue un pointeur vers le servant CORBA
+``SALOME_MED::MED`` à partir de son identifiant IOR (voir la fonction
+``getMedProxy(...)``, puis crée une instance de ``FieldProxy``
+associée à ce servant (en fait associée au servant
+``SALOME_MED::MEDOP`` créé sur demande par le servant
+``SALOME_MED::MED``, voir la fonction ``getFieldFromMed(...)``).
+
+.. _develguide_execFieldOperation:
+
+Exécution des opérations sur le champs
+--------------------------------------
+
+Les variables définies dans l'interface textuelle pour désigner les
+champs à manipuler sont des objets de classe ``FieldProxy``.
+
+Cette classe a une propriété remarquable, elle est construite sur un
+design pattern de type "Proxy" qui pointe vers un servant
+``SALOME_MED::FIELD``. Cela signifie que l'on ne peut pas accéder
+directement au servant vers lequel il pointe, mais que l'on passe
+systématiquement par une procédure de l'objet proxy qui fait "boîte
+aux lettres":
+
+.. code-block:: python
+
+ class FieldProxy:
+
+ def __getattr__( self, name ):
+ """
+ This method realizes the proxy pattern toward the servant
+ SALOME_MED::FIELD.
+ """
+ return getattr( self.__field_ptr, name )
+
+Ce pattern permet l'implémentation de pré-traitement et/ou de
+post-traitement suivant le type d'accés que l'on cherche à faire.
+
+Il permet aussi et surtout de fournir un objet python qui présente
+l'interface de ``SALOME_MED::FIELD`` dotée d'extentions adhoc pour les
+operations de champs. Ici, python est ton ami, car il s'agit pour cela
+d'équiper la classe ``FieldProxy`` des automatismes prévus nativement
+par python pour les operations entre objets. En particulier, la
+re-définition des fonctions internes ``__add__`` (opérateur addition),
+``__sub__`` (opérateur soustraction), ``__mul__`` (opérateur
+multiplication) et ``__div__`` (opérateur division) au sein de la
+classe ``FieldProxy``, permet de prendre la main sur le comportement
+des opérations algébriques et de définir une ergonomie sur mesure. Par
+exemple, la méthode ``__add__`` peut gérer les variantes "f1+f2"
+(ajout de deux variables de type FieldProxy) et "f1+5.3" (ajout d'un
+réel à une variable de type FieldProxy):
+
+.. code-block:: python
+
+ class FieldProxy:
+
+ def __add__(self, operande):
+ """
+ This can process the addition of two fields or the addition of
+ a scalar to a field. It depends weither the operande is a
+ FieldProxy or a simple scalar numerical value.
+ """
+ if isinstance(operande, FieldProxy):
+ # The operande is an other field
+ otherField_ptr = operande.__field_ptr
+ rfield_ptr = self.__medOp_ptr.add(self.__field_ptr, otherField_ptr)
+ else:
+ # The operande is a scalar numerical value that must be
+ # considered as an offset in a linear transformation
+ factor = 1
+ offset = operande
+ rfield_ptr = self.__medOp_ptr.lin(self.__field_ptr, factor, offset)
+ return FieldProxy(self.__med_ptr, rfield_ptr)
+
+Il est à noter que dans les deux cas de figure (opérande=champ ou
+opérande=scalaire), la fonction délègue la réalisation concrète de
+l'opération au servant ``SALOME_MED::MEDOP`` (identifié ici par
+l'attribut ``self.__medOp_ptr`` et que l'on appelera l'*opérateur
+MEDOP* dans la suite pour simplifier), mais n'appelle pas le même
+service de calcul (l'addition entre champs dans le premier cas,
+l'application d'une transformation linéaire de type y=factor*x+offset
+dans le deuxième cas).
+
+Pour couvrir le cas des opérations algébriques, l'opérateur MEDOP
+présentre l'interface suivante (cf. fichier ``MEDOP.idl`` qui définie
+l'interface du servant ``SALOME_MED_MEDOP``):
+
+.. code-block:: cpp
+
+ /*! Addition of the fields f1 and f2 ( f1+f2) */
+ FIELD add(in FIELD f1, in FIELD f2) raises (SALOME::SALOME_Exception);
+ /*! Substraction of the fields f1 and f2 (f1-f2) */
+ FIELD sub(in FIELD f1, in FIELD f2) raises (SALOME::SALOME_Exception);
+ /*! Multiplication of the fields f1 by f2 (f1*f2) */
+ FIELD mul(in FIELD f1, in FIELD f2) raises (SALOME::SALOME_Exception);
+ /*! Division of the fields f1 by f2 (f1/f2) */
+ FIELD div(in FIELD f1, in FIELD f2) raises (SALOME::SALOME_Exception);
+ /*! Power of the field f (f^power) */
+ FIELD pow(in FIELD f, in long power) raises (SALOME::SALOME_Exception);
+ /*! Linear transformation of the field f (factor*f+offset) */
+ FIELD lin(in FIELD f, in double factor, in double offset) raises (SALOME::SALOME_Exception);
+ /*! Dublication of the field f */
+ FIELD dup(in FIELD f) raises (SALOME::SALOME_Exception);
+
+Cette interface est implémentée dans la classe C++ ``MEDOP_i`` du
+module MED (voir fichier ``MEDMEM_MedOp_i.hxx`` du package
+``MEDMEM_I``). C'est au sein des instances de cette classe que sont
+réalisées les opérations et que sont produites physiquement les
+données. Typiquement, les opérations présentées ici produisent un
+champ ``MEDMEM::FIELD`` sur la base duquel elle fabrique un servant
+``SALOME_MED::FIELD`` pour finalement retourner un pointeur CORBA sur
+ce servant.
+
+Ce mécanisme global peut être étendu sans limitation à tout les types
+d'opération qui sont envisagés dans les spécifications de manipulation
+des champs dans SALOME.
+
+
+Contrôle visuel des champs
+--------------------------
+
+Les illustrations ci-dessous montrent qu'une fonction de visalisation
+est implémentée dans la maquette pour permettre le contrôle visuel
+d'un champ au moyen d'une représentation 3D (une carte spatiale du
+module du champ dans l'exemple implémenté par défaut):
+
+.. |IMG_VISU| image:: images/medop-gui-visufield_scale.png
+.. |IMG_RESULT| image:: images/medop-gui-result_scale.png
+
++---------------+---------------+
+| |IMG_VISU| | |IMG_RESULT| |
++---------------+---------------+
+
+Cette fonction répond au besoin de contrôle interactif des résultats
+produits par les opérations de manipulation de champs.
+
+Il s'agit là d'un usage classique de SALOME, dans lequel on demande au
+module VISU de faire une représentation 3D d'un champ spécifié par la
+donnée du servant ``SALOME_MED::FIELD`` qui lui est associé
+(représenté par la variable ``field_ptr`` dans l'exemple ci-dessous):
+
+.. code-block:: python
+
+ import salome
+ import VISU
+
+ visuComp = salome.lcc.FindOrLoadComponent("FactoryServer", "VISU")
+ visuComp.SetCurrentStudy(salome.myStudy)
+
+ # Then we can import the specified field in the VISU module. This
+ # creates an study entry in the VISU folder.
+ result = visuComp.ImportMedField(field_ptr)
+
+ meshName = field_ptr.getSupport().getMesh().getName()
+ fieldName = field_ptr.getName()
+ iterNumber = field_ptr.getIterationNumber()
+ scalarmap = visuComp.ScalarMapOnField(result,
+ meshName,
+ visuEntityType,
+ fieldName,
+ iterNumber)
+
+Dans ce jeu d'instructions donné pour exemple (non fonctionnel, en
+particulier à cause de la non définition de la variable
+``visuEntityType``, voir remarque plus bas), le composant VISU
+désigné ici par la variable ``visuComp`` va chercher les données du
+champ en interrogeant le servant ``SALOME_MED::FIELD`` transmis en
+argument de la fonction ``ImportMedField``, puis produit une
+représentation de type "scalarmap".
+
+.. note:: Compte-tenu des propriétés de la classe FieldProxy décrites
+ plus haut conférées par le pattern "Proxy", on peut transmettre ici
+ aussi bien le servant CORBA que l'instance du proxy (la fonction
+ ``ImportMedField`` n'y verra que du feu).
+
+Le code complet et fonctionnel de la fonction d'affichage est dans le
+corps du module python ``fieldproxy.py`` sous la forme d'une fonction
+de nom ``visuField``. Il convient de noter que cette fonction doit
+établir une correspondance entre le type des entités tel que défini
+dans MED et dans VISU:
+
+.. code-block:: python
+
+ medEntityType = field_ptr.getSupport().getEntity()
+ if (medEntityType == SALOME_MED.MED_CELL):
+ visuEntityType = VISU.CELL
+ elif (medEntityType == SALOME_MED.MED_NODE):
+ visuEntityType = VISU.NODE
+
+
+Export des résultats de calcul
+------------------------------
+
+Tous les champs produits à l'occasion des opérations entre objets
+``FieldProxy`` sont automatiquement ajoutés à la structure med à
+laquelle is sont associés. Une convention d'attribution des noms est
+implémentée de sorte que par défaut aucune précision n'est demandée à
+l'utilisateur.
+
+La structure med peut être manipulée au moyen de la variable ``med``
+créée dans l'interface textuelle comme une instance de la classe
+``MedProxy``. La classe ``MedProxy`` fournit un objet qui présente
+l'interface du servant ``SALOME_MED::MED`` étendue de quelques
+fonctions utilitaires pour la gestion et le contrôle des données.
+
+En particulier, la sauvegarde de la structure dans un fichier est
+automatisée par la méthode ``save(medfilename)``:
+
+.. code-block:: python
+
+ med = medproxy.MedProxy(medObj)
+ med.save("/tmp/output.med")
+
+Cette méthode s'occupe de définir un driver d'écriture et de procéder
+à l'enregistrement des données de la structure med (les maillages, les
+champs présents au départ et tous les champs produits depuis la
+lecture initiale).
+
+Limitations
+===========
+
+L'implémentation de la maquette limite l'usage des opérations aux cas
+de figure suivants:
+
+* Seules les operations entre champs qui partagent le même support med
+ sont possibles. Ceci est une contrainte imposé par la conception
+ actuelle de MEDMEM.
+* Le résultat d'une opérations est calculé sur toutes les composantes
+ et tout le domaine de définition des champs en opérande. Cette
+ deuxième contrainte est juste parce que les usages plus fin,
+ notemment avec la notion de domaine de définition, n'a pas encore
+ été exéminée à ce jour.
+* Le nom d'un champ produit par une opération ne correspond pas au nom
+ de la variable python par laquelle on le réceptionne et on le
+ manipule. Le nom est attribué par une convention (ceci n'est pas
+ vraiment une limitation mais une caractéristique à connaître).
+
+On note également les restriction techniques suivantes:
+
+* Les données MEDMEM sont supposées être chargées par le composant MED
+ puis référencées dans l'étude SALOME (comme c'est fait aujourd'hui
+ par le module MED).
+* Dans certain cas, python n'est pas ton ami. Pour que les opérateur
+ de la classe ``FieldProxy`` soient pris en considération dans les
+ opérations sur les champs, il est indispensable que le premier
+ opérande d'une opération unitaire soit un champ (objet de classe
+ ``FieldProxy``). Par exemple: "field_offset = field + 5.3"
+ fonctionne alors que "field_offset = 5.3 + field" ne fonctionne pas
+ car python tente de traiter la situation au moyen de la fonction
+ ``__add__`` de la classe ``float`` (qui n'est pas modifiable).
+
+
+Notice informatique
+===================
+
+Gestion de configuration
+------------------------
+
+Les développements décrits dans ce chapitre sont répartis entre les
+modules MED et XMED (développé pour l'occasion). Cette séparation est
+faite par soucis de clarté et d'efficacité de développement, mais les
+éléménts du module XMED ont vocation à intégrer le module MED dans la
+mesure où les propositions techniques sont retenues pour le
+développement à venir.
+
+Le code source du module XMED peut être récupérés par la commande
+suivante::
+
+ $ svn co svn://nepal.der.edf.fr/FIELD/XMED_SRC/trunk XMED_SRC
+
+Le pré-requis est la plate-forme SALOME version 5.1.4 (ou plus)
+équipée au minimum des modules KERNEL, GUI, MED (branche BR_medop) et
+VISU. Pour récupérer la branche BR_medop du module MED, taper la
+commande::
+
+ $ cvs -d :pserver:anonymous@cvs.opencascade.com:2401/home/server/cvs/MED co -r BR_medop MED_SRC
+
+La configuration de référence est:
+
+* XMED: révision svn 41
+* MED: tag cvs BR_medop_20101025
+
+Moyens de tests
+---------------
+
+Plusieurs types de tests unitaires sont définis (reste à les
+automatiser proprement):
+
+* Test des servants et utilitaires de manipulation python:
+
+ - Dans XMED, package xmed/tests, utiliser le script
+ ``test_medoperation.py`` dans un interpréteur python lancé dans
+ une session shell SALOME. Ce script prépare des variables de test
+ et fournit des fonctions de test unitaire (à exécuter ou pour s'en
+ inspirer). Après avoir lancé SALOME via une application virtuelle,
+ on peut taper::
+
+ $ <APPLI_ROOT>/runSession
+ [NS=venus:2810] $ python -i test_medoperation.py
+ >>>
+
+ - Ceci permet de tester en particulier l'interface ``MedOp`` et son
+ utilisation dans le module python ``fieldproxy.py``.
+
+* Test des classes MEDMEM:
+
+ - Test de MEDMEM::MedDataManager dans ``MEDMEM_MedDataManager_test.cxx``
+
+Un fichier de test basique (mais néanmoins suffisant) de nom
+``tesfield.med`` est fourni avec les sources dans le répertoire
+``<XMED_SRC>/resources/datafiles`` et dans l'installation au niveau du
+répertoire ``<INSTALLDIR>/share/salome/resources/xmed/datadir``. Il
+contient deux champs ``testfield1`` et ``testfield2`` définis sur un
+pas de temps unique (dt,it=-1,-1). Ces champs définissent des valeurs
+par éléments (MED_CELL).
--- /dev/null
+.. meta::
+ :keywords: maillage, champ, MED, MEDMEM
+ :author: Guillaume Boulant
+
+.. include:: xmed-definitions.rst
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+Note de travail concernant l'utilisation de MEDMEM
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+Le module MED de SALOME comporte plusieurs composants d'intérêt pour
+la manipulation de champs:
+
+* la bibliothèque MEDMEM qui fournit une interface de programmation
+ pour manoeuvrer une structure MED
+* le module CORBA SALOME_MED qui matérialise le composant SALOME
+ (serveur corba) du module MED
+* l'interopérabilité avec le module VISU qui permet la visualisation
+ des champs manipulés dans MED
+
+Les sections ci-après donnent quelques éclairages techniques sur ces
+différents aspects. Les sources de démonstration peuvent être
+récupérés depuis le dépôt svn::
+
+ $ svn export svn://nepal.der.edf.fr/OM/manifield/trunk manifield
+ $ svn export svn://nepal.der.edf.fr/FIELD/demofield/trunk demofield
+
+.. contents:: Sommaire
+ :local:
+ :backlinks: none
+
+Présentation synthétique de MED
+===============================
+
+MED désigne un modèle conceptuel pour décrire des données de type
+éléments finis (éléments finis, volumes finis et éléments
+discrets). Dans l'usage courant, il permet la description et l'échange
+des données de calcul de type maillages et champs. La documentation
+complète peut être trouvée à l'URL suivantes:
+
+* |LINK_EDF_MEDDOC|_ (version 2.3).
+
+On distingue deux implémentations informatiques de ce modèle:
+
+* MED fichier: qui permet la lecture et l'écriture de données depuis
+ un fichier au format med. Les opérations de lecture/écriture sont
+ atomiques (pas de chargement de la structure de données globale).
+* MED mémoire (noté MEDMEM): qui permet le chargement en mémoire d'une
+ image de la structure de données MED contenue dans un fichier au
+ format med. Les opérations peuvent être atomiques ou
+ globales.
+
+On notera simplement ici que MEDMEM utilise MED fichier pour les
+opérations de lecture/écriture et que MED fichier est indépendant de
+MED mémoire. La documentation complète de MED fichier peut être
+trouvée à l'URL suivante:
+
+* |LINK_EDF_MEDFICHIERDOC|_
+
+La bibliothèque MEDMEM
+======================
+
+Le modèle de classes MEDMEM est structuré autour des notions de MESH
+(les maillages), de SUPPORT (le profil des entités) et de FIELD (les
+champs). Ces notions reprennent en partie des concepts du modèle
+MED. Le diagramme ci-dessous présente les classes principales:
+
+.. image:: images/med-uml-main_60pc.png
+ :align: center
+
+Le conteneur de plus haut niveau dans MEDMEM est la classe MED. La
+figure ci-dessous indique qu'une instance MED peut être associée à
+plusieurs maillage et plusieurs champs. Par contre un champ donné ne
+peut être associé qu'à un seul maillage (par l'intermédiaire du
+support). Plusieurs champs peuvent être associés au même maillage. La
+forme la plus courante est d'ailleurs une instance composé d'un
+maillage unique sur lequel sont définis plusieurs champs.
+
+On peut avoir également des configurations plus complexes, comme par
+exemple un maillage unique, plusieurs champs définis sur ce maillage
+mais avec des supports différents, par exemple parce que les valeurs
+sont définies sur des entités de maillage différentes (les éléments
+pour un champ, les noeuds pour un autre, ...)::
+
+ field1->support1->mesh
+ field2->support2->mesh
+ field3->support3->mesh
+
+On observe:
+
+* 2 champs U et V doivent avoir le même support (au sens informatique
+ du terme) pour pouvoir être en argument d'une opération (sinon
+ exception). Il faudrait accepter qu'il soit informatiquement
+ différent et vérifier la conformité conceptuelle.
+* Cette contrainte peut se comprendre car physiquement les données
+ sont stockées dans un vecteur qui couvre toutes les mailles. Le
+ support est le seul masque de lecture pour établir la correspondance
+ avec les positions dans le maillage et il est donc important qu'une
+ cohérence soit assurée.
+
+Les objets champs (FIELD) et maillage (MESH)
+--------------------------------------------
+
+Un objet MED permet d'accéder aux différentes informations concernant
+les objets MESH, SUPPORT et FIELD, mais il ne permet pas d'accéder aux
+données physiques associées à ces objets (les valeurs des composantes
+pour les champs, les mailles et leur connectivité pour les
+maillages). L'accès aux données physiques est du ressort des objets
+spécifiques MESH, SUPPORT et FIELD.
+
+Un objet MED peut être créé intégralement en mémoire. L'usage plus
+fréquent est de l'initialiser à partir de la donnée d'un fichier
+med. Pour cela, l'objet MED doit être associé à un driver
+d'entrée/sortie branché sur le fichier (``testfilename`` dans
+l'exemple):
+
+.. code-block:: cpp
+
+ MED *myMed = new MED;
+ MED_MED_RDONLY_DRIVER *driverIn = new MED_MED_RDONLY_DRIVER(testfilename, myMed);
+ driverIn->open();
+ driverIn->readFileStruct();
+ driverIn->close();
+
+A l'occasion de la fonction readFileStruct, la structure interne de
+l'objet MED est enrichie des informations concernant les objets MESH,
+SUPPORT et FIELD contenu dans le fichier. En particulier un
+dictionnaire des champs (variable map interne) est initialisé est
+contient l'ensemble des objets ``FIELD_`` préchargés (i.e. avec les
+méta-données uniquement). Chaque objet ``FIELD_`` ainsi préchargé est
+autonome pour être chargé sur demande. On peut alors requêter l'objet
+MED pour obtenir un champ particulier (spécifié par son nom
+``fieldname`` dans l'exemple):
+
+.. code-block:: cpp
+
+ FIELD<double> *field = (FIELD<double> *)myMed->getField(fieldname, dt, it);
+
+Puis le champ qui lui est associé doit être physiquement chargé pour
+permettre la mise à jour du support:
+
+.. code-block:: cpp
+
+ MESH * mesh = myMed->getMesh(field);
+ mesh->read();
+ myMed->updateSupport();
+
+Pour enfin charger les valeurs des composantes du champ:
+
+.. code-block:: cpp
+
+ field->read();
+
+La numérotation des éléments de maillage
+----------------------------------------
+
+Les éléments qui composent un maillage sont caractérisés par:
+
+* Le type d'entité de l'élément, à choisir dans la liste
+ ``MED_EN::medEntityMesh``, qui contient en particulier ``MED_NODE``,
+ ``MED_FACE``, ``MED_CELL``.
+* Le type de géométrie de l'élément, à choisir dans la liste
+ ``MED_EN::medGeometryElement``, qui contient en particulier
+ ``MED_NONE``, ``MED_TRIA3``, ..., ``MED_ALL_ELEMENTS``.
+
+Les éléments sont numérotés par un indice relatif à la catégorie
+géométrique à laquelle ils appartiennent. Ainsi, si le modèle est
+composé de Na arrêtes et Nf faces de type géométrique MED_QUAD4, alors
+ces faces sont numérotées de 1 à Nf dans le modèle MED (et de manière
+persistente dans le fichier med). De même, les arrêtes sont numérotées
+de 1 à Na. Une numérotion globale implicite existe sur les éléments,
+elle consiste à parcourir l'ensemble des types géométriques dans
+l'ordre de définition du modèle de données. Ainsi, si le modèle
+contient uniquement les Na arrêtes et les Nf faces, alors l'indice
+global de la première face est Na+1.
+
+.. note:: Des exemples de code sont disponibles dans le package ``demofield``, fichier ``python/pybasicfields/MEDMEM_tester.py``.
+
+
+Binding python de MEDMEM
+------------------------
+
+Les classes du package ``MEDMEM`` (package du module ``MED`` qui
+implémentent les structures de données C++ de MED mémoire) produisent
+la bibliothèque ``libmedmem.so``. Cette ensemble de classes est en
+partie mis à disposition de l'interface python grace à une couche de
+liaison (binding Python-C++) générée par le logiciel SWIG à partir
+d'un fichier de description d'interface ``libMEDMEM_Swig.i`` (dans le
+package source ``MEDMEM_SWIG``).
+
+Ce fichier d'interface doit être mis à jour dés lors qu'une évolution
+des interfaces publiques des classes C++ MEDMEM est faite ou qu'une
+nouvelle classe est créée (du moins si l'on souhaite profiter de ces
+évolutions dans l'interface python).
+
+Cette mise à jour nécessite de prendre soin au transfert des
+structures de données entre les espaces python et C++. En particulier,
+l'utilisation des template de classe pour décrire les champs typés en
+C++ appelle une précaution de codage particulière de l'interface
+SWIG.
+
+Pour exemple, le fragment de code ci-dessous, extrait du fichier
+``libMEDMEM_Swig.i``, montre comment déclarer la nouvelle classe
+``MedDataManager`` dans l'interface:
+
+.. code-block:: cpp
+
+ #include "MEDMEM_MedDataManager.hxx"
+
+ class MedDataManager
+ {
+ public:
+ ~MedDataManager();
+ void printFieldDouble(FIELD<double,FullInterlace> * field);
+
+ %extend {
+ MedDataManager(char * fileName)
+ {
+ return new MedDataManager(string(fileName));
+ }
+ MedDataManager(MED * med)
+ {
+ return new MedDataManager(med);
+ }
+
+ %newobject getFieldDouble(const char * fieldName, const int dt, const int it);
+ FIELD<double, FullInterlace> * getFieldDouble(const char * fieldName, const int dt, const int it)
+ {
+ return (FIELD<double, FullInterlace> *) self->getFieldDouble(string(fieldName), dt, it);
+ }
+ }
+
+ };
+
+
+Utilisation de MEDMEM pour la manipulation de champs
+----------------------------------------------------
+
+Des opérations de manipulation de champs sont disponibles dans la
+bibliothèque MEDMEM standard est peuvent être utilisées dans
+l'interface python. Les quelques lignes suivantes illustrent l'usage
+qu'on peut en faire pour exécuter l'addition de deux champs sur tout
+leur espace de définition et pour un pas de temps donné:
+
+.. code-block:: python
+
+ from libMEDMEM_Swig import MedDataManager
+ from xmed.helper import readMed, writeMed
+
+ # Load the medmem data structure from a med file
+ med = readMed("/tmp/input.med")
+ # Then create a med data manager to deal with the fields data
+ dm = MedDataManager(med)
+ # Get the timestamps (dt,it)=(-1,-1) of the fields "testfield1" and "testfield2"
+ f1 = dm.getFieldDouble("testfield1",-1,-1)
+ f2 = dm.getFieldDouble("testfield2",-1,-1)
+
+ # Create a new field as the sum of f1 and f2
+ r = f1 + f2
+ # And add this new field to the med data structure
+ med.addField(r)
+
+ # Finally, write the whole data in an output med file
+ writeMed(med,"/tmp/output.med")
+
+.. note:: Cet exemple de code requiert les évolutions de MEDMEM
+ opérées dans la branche BR_medop (pour disposer de la classe
+ MedDataManager en particulier) et le package python ``xmed`` qui
+ fournit quelques fonctions utilitaires pour manoeuvrer les données
+ med (ce package est dans le module XMED et sera probablement à
+ terme intégré au module MED).
+
+Des limitations existent aujourd'hui pour ce type de manipulations:
+
+* les champs doivent partager le même support MED, c'est-à-dire être
+ décrit sur le même maillage et sur les mêmes entités de ce
+ maillage.
+* ...
+
+
+Remarque sur l'implémentation C++
+---------------------------------
+
+A noter l'usage de plusieurs formes d'arguments pour les fonctions:
+
+* passage des arguments par valeur ``myfunction(A a);``
+* passage des arguments par référence ``myfunction(A& a);``
+* passage des arguments par pointeur ``myfunction(A* a);``
+
+Le passage des arguments par référence est une facilité d'écriture
+pour éviter de passer un pointeur tout en évitant la récopie des
+données de la variable.
+
+.. _xmed-medmem_corbainterface:
+
+L'interface CORBA SALOME_MED
+============================
+
+Implémentation du composant MED et des servants SALOME_MED::\*
+--------------------------------------------------------------
+
+Le composant MED est un servant CORBA qui permet la manipulation de
+données MEDMEM dans l'environnement SALOME. Le composant peut fournir
+des pointeurs vers des instances de l'interface SALOME_MED (objets
+SALOMEMED::MED, SALOME_MED_FIELD, ...). Ces instances sont des
+servants CORBA qui résident dans le container et qui encapsulent les
+données MEDMEM.
+
+Le schéma ci-dessous représente les éléments informatiques qui
+composent l'architecture CORBA du module MED:
+
+.. image:: images/medmem-corba-layers.png
+ :align: center
+
+Les structures MEDMEM (données physiques) et SALOME_MED (wrapping
+CORBA) fonctionnent différement en ce qui concerne le chargement des
+données:
+
+* Dans MEDMEM, les données sont chargées à la demande (fonctions read
+ des objets) et aucune gestion n'est assurée. En particulier l'appel
+ à read alors que la donnée est déjà chargée conduit à une levée
+ d'exception. C'est à l'utilisateur de MEDMEM de prendre en charge ce
+ type de gestion.
+* Dans SALOME_MED, les données sont chargées à la création de
+ l'instance SALOME_MED::MED. Les maillages ainsi que les champs et
+ leurs données sont chargés à ce moment là et gérés dans une table de
+ type HashMap au niveau de la structure SALOME_MED::MED. Cette
+ structure remplie dés lors des fonction de gestion. L'appel à
+ SALOME_MED::MED.getField(...) ne charge pas les données mais renvoie
+ un pointeur SALOME_MED::FIELD_ptr sur les données chargées à
+ l'initialisation (ATTENTION, cette fonction est bugguée dans la
+ branche principale -> Fix dans la branche BR_medop).
+
+Une gestion intermédiaire peut être envisagée: le chargement à la
+demande géré dans une ou plusieurs tables de champs (une pour chaque
+type de valeur numérique). Une implémentation de ce type de gestion
+est illustré dans la classe ``MedDataManager`` du package MEDMEM qui prend
+en charge ce comportement pour les structures de données MED (en
+particulier les champs).
+
+Utilisation du composant MED
+----------------------------
+Le module SALOME MED fournit un module CORBA appelé SALOME_MED. Les
+interfaces de ce module CORBA sont spécifiées par les fichiers idl
+suivants:
+
+* le fichier
+ [http://nepal.der.edf.fr/pub/SALOME_userguide/MED5/doc/salome/tui/MED/MED_8idl.html
+ ``MED.idl``] qui décrit les interfaces des objets manipulés par le
+ module SALOME_MED. On trouve en particulier les objets MESH, SUPPORT
+ et FIELD.
+* le fichier
+ [http://nepal.der.edf.fr/pub/SALOME_userguide/MED5/doc/salome/tui/MED/MED__Gen_8idl.html
+ ``MED_Gen.idl``] qui décrit les interfaces du composant SALOME
+ (c'est-à-dire le composant chargé par la commande
+ ``FindOrLoadComponent("FactoryServer", "MED")`` du
+ lyfeCycleCorba). On trouve:
+
+ - l'interface ``MED_Gen_Driver`` qui hérite de SALOMEDS::Driver
+ pour l'implémentation des services généraux des composants SALOME
+ (persistance hdf, dump)
+ - l'interface ``MED_Gen`` qui hérite des interfaces
+ ``Engines::Component`` et ``MED_Gen_Driver`` pour
+ l'implémentation des services spécifiques du composant MED.
+
+L'implémentation de ces interfaces est faites au niveau de différents
+packages des sources du module MED:
+
+* Le package ``MEDMEM_I`` qui fournit l'implémentation C++ des
+ interfaces décrites par le fichier ``MED.idl``;
+* Le package ``MED`` qui fournit l'implémentation C++ des interfaces
+ décrites par le fichier ``MED_Gen.idl``, et qui correspond à la
+ partie composant classique d'un module SALOME.
+* Le package ``MedCorba_Swig`` qui fournit une interface swig
+ générée à partir de l'implémentation C++ de ``MEDMEM_I`` et
+ ``MED``
+
+L'utilisation peut être illustrée au moyen d'exemples python (i.e. qui
+utilise l'interface swig fournie par MedCorba_Swig). Après l'import
+d'amorce systématique:
+
+.. code-block:: python
+
+ import salome
+ salome.salome_init()
+
+ import SALOME_MED
+ from libSALOME_Swig import *
+
+On peut charger le composant SALOME MED:
+
+.. code-block:: python
+
+ medComp=salome.lcc.FindOrLoadComponent("FactoryServer", "MED")
+
+grâce auquel les services de chargement de la structure MED peuvent
+être invoqués. Par exemple, les commandes suivantes chargent toute la
+structure MED dans l'étude salome passée en argument:
+
+.. code-block:: python
+
+ filePathName = "myfile.med"
+ medComp.readStructFileWithFieldType(filePathName,salome.myStudyName)
+
+Ce deuxième exemple charge la structure MED mais ne place pas le résultat dans l'étude:
+
+.. code-block:: python
+
+ filePathName = "myfile.med"
+ medObj = medComp.readStructFile(filePathName,salome.myStudyName)
+
+On récupère à la place un objet de classe |LINK_EDF_SALOME_MED__MED|_
+qui permet une utilisation assez semblable (mais différente on le
+verra plus bas) à MEDMEM:
+
+.. code-block:: python
+
+ fieldIdx = 1 # WRN maybe there is no field of idx=1
+ iterationIdx = 0
+ fieldName = medObj.getFieldNames()[fieldIdx]
+ dtitfield = medObj.getFieldIteration(fieldName,iterationIdx)
+ it = dtitfield[0]
+ dt = dtitfield[1]
+ fieldObj = medObj.getField(fieldName,it,dt)
+ nbOfFields = medObj.getNumberOfFields()
+ fieldNames = medObj.getFieldNames()
+
+ mesh = fieldObj.getSupport().getMesh()
+
+.. note::
+ Observations en vrac:
+
+ * Un FIELD_i possède un champ de type ``MEDMEM::FIELD_`` qui représente
+ le champ informatique réel (objet MEDMEM).
+ * FIELD_i::fieldMap variable static de type map qui semble gérer
+ les différentes instances de FIELD_i (~pattern factory). Cette
+ map peut être requétée au moyen d'un indice de type long appelé
+ corbaIndex.
+ * Quand on crée un FIELD_i par le constructeur d'argument
+ ``MEDMEM::FIELD_``, le ``MEDMEM::FIELD_`` est ajouté dans la map avec
+ incrément du corbaIndex
+ * La fonction FIELD_i::read(i) redirige vers la fonction read(i) du
+ ``MEDMEM::FIELD_`` associé
+ * A CONFIRMER: Il semble que les fonctions de chargement
+ ``readStructFile*()`` charge toutes les données du fichier med,
+ alors qu'en MEDMEM seules les meta-données sont chargées.
+ * A CONFIRMER: il semble que le chargement d'une structure MED
+ CORBA peut se faire sans passer par le composant (cf. l'interface
+ de MED)
+
+Interface avec le module VISU
+=============================
+
+Des interactions sont possibles entre MED et VISU à partir du moment
+où les données med sont gérées dans l'étude, c'est-à-dire sous la
+forme d'objets SALOME_MED (voir ci-dessus) publiés dans l'étude. Les
+deux conditions sont aujourd'hui nécessaires (objet corba + publié
+dans l'étude) mais il semble que ce ne soit lié qu'à un choix
+d'interface VISU (la fonction ``ImportMed`` en particulier) qui peut
+a priori être modifié. A CONFIRMER.
+
+L'exemple de code ci-dessous (en python, mais il peut être transposé à
+une implémentation C++) montre par exemple comment envoyer au module
+VISU une requête de visualisation d'un champs hébergé par le module
+MED (en fait, les données sont gérées au travers d'un objet corba
+SALOME_MED "délocalisé" et qui a été référencé dans l'étude dans la
+catégorie du composant MED). Les importations standard (salome,
+SALOME_MED, ...) sont supposées avoir été faites au préalable (voir
+les exemples précédents):
+
+.. code-block:: python
+
+ # Load the med structure using MED
+ medComp=salome.lcc.FindOrLoadComponent("FactoryServer", "MED")
+ filePathName = "myfile.med"
+ medComp.readStructFileWithFieldType(filePathName,salome.myStudyName)
+
+ # Get the VISU component
+ import VISU
+ visuComp = salome.lcc.FindOrLoadComponent("FactoryServer", "VISU")
+ visuComp.SetCurrentStudy(salome.myStudy)
+
+ # Get the sobject associated to the med object named "Med"
+ aSObject = salome.myStudy.FindObject("Med")
+ isPresent, medSObj = aSObject.FindSubObject(1)
+
+ # Finally, import the med sobject in VISU
+ result = visuComp.ImportMed(medSObj)
+
+Il est possible de d'aller plus loin et par exemple de déclencher
+l'affichage d'une scalarmap d'un champ spécifique pour une itération
+particulière (voir la fonction
+``TEST_SALOMEMED_requestToVisu_scalarmap`` du fichier
+``SALOMEMED_tester.py`` fourni dans les sources d'exemple).
+
+Liens complémentaires:
+
+* http://nepal.der.edf.fr/pub/SALOME_userguide/VISU_V5_1_3/doc/salome/gui/VISU La documentation utilisateur en ligne du module VISU
+
+
+Notes en vrac
+=============
+
+Questions:
+
+* Comment obtenir le nom du fichier med à partir d'une structure med?
+* Peut-on imaginer un moyen de fournir l'objet MEDMEM::MED à partir de
+ la donnée de l'objet CORBA SALOME_MED::MED?
+
+Remarques:
+
+* A part, les opérations arithmétiques (+,-,*,/), aucune opération
+ n'est définie.
--- /dev/null
+.. meta::
+ :keywords: maillage, champ, manipulation, XMED
+ :author: Guillaume Boulant
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+Démonstrateur XMED, vue d'ensemble
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+Le module XMED est un espace d'expérimentation pour le développement
+des opérations de manipulation de champs. Il complète des
+développements intégrés directement dans le module MED et gérés dans
+la branche CVS BR_medop.
+
+Une maquette est au point pour illustrer les propositions en matière
+d'ergonomie d'utilisation et en matière d'architecture technique. La
+maquette permet de réaliser des cas d'utilisation de la forme:
+
+* Chargement d'un fichier med dans le module MED (ou publication par
+ un code de calcul).
+* Sélection graphique des champs de l'étude à mettre à disposition
+ dans la console utilisateur ("calculette" en mode texte qui
+ concraitement correspond à l'interface python de SALOME).
+* Dans la calculette, exécution d'opérations algébriques (+,-,*,/)
+ entre champs avec possibilité d'utiliser des scalaires dans des
+ opérations de type transformation linéaire (y=ax+b ou y et x sont
+ des champs et a et b des scalaires). Egalement quelques fonctions
+ mathématiques standard applicables sur des champs (pow, sqrt).
+* Possibilité de visualiser les champs produits avec VISU
+* Possibilité d'exporter des champs produits dans un fichier med
+
+La figure ci-dessous montre le résultat d'une séquence d'utilisation
+dans laquelle les champs "testfield1" et "testfield2" ont été
+sélectionnés dans l'arbre d'étude pour être utilisés dans la console
+textuelle sous les noms de variables f1 et f2. L'image montre le
+contrôle visuel du résultat de l'opération f1+f2-(f1-f2)^2 tapée en
+ligne de commande:
+
+.. image:: images/medop-gui-result.png
+ :align: center
+
+La séquence ci-après montre le cas d'utilisation complet en
+images:
+
+1. Sélection d'un champs sur un pas de temps dans l'arbre d'étude
+2. Saisie d'un nom de variable (alias) pour manipuler ce champ. Par
+ défaut, le nom du champ est proposé (``testfield1`` ici). Dans
+ l'exemple, l'utilisateur remplace par l'alias ``f1``.
+3. Contrôle visuel du champ ``testfield1`` manipulé par sa variable
+ ``f1`` au moyen de la commande ``f1.visu()``
+4. Chargement du champ ``testfield2`` sous le nom ``f2``, exécution de
+ l'opération ``f1+f2-(f1-f2)^2`` et contrôle visuel du résultat,
+ récupéré ici dans une variable de nom ``result``.
+
+.. |IMG_SELECT| image:: images/medop-gui-selectfield_scale.png
+.. |IMG_ALIAS| image:: images/medop-gui-aliasfield_scale.png
+.. |IMG_VISU| image:: images/medop-gui-visufield_scale.png
+.. |IMG_RESULT| image:: images/medop-gui-result_scale.png
+
++---------------+---------------+
+| |IMG_SELECT| | |IMG_ALIAS| |
++---------------+---------------+
+| |IMG_VISU| | |IMG_RESULT| |
++---------------+---------------+
+
+La solution technique est construite sur les principes suivants:
+
+* Les données MEDMEM sont physiquement chargées par le composant MED,
+ c'est-à-dire dans le processus ``Container`` de SALOME, et sont
+ référencées dans l'étude SALOME.
+* Les opérations sont physiquement des opérations entre objets MEDMEM
+ purs qui ont lieu dans le composant MED.
+* Les opérations sont pilotées par des objets proxy python instanciés
+ dans la console TUI puis manipulés par l'utilisateur. Ces objets
+ proxy savent accéder aux objets MEDMEM au travers de leur interface
+ CORBA.
+
+Ainsi, l'architecture technique est construite pour pouvoir travailler
+sur des données MEDMEM pur en partant de pointeurs CORBA manoeuvrés
+depuis des objets python dans l'interface textuelle de
+SALOME. L'effort principal a donc porté sur la mise au point de
+l'interface technique qui permet de lier des variables représentant
+les champs au niveau du GUI (techniquement, la calculette est
+l'interpréteur python embarqué dans le GUI, étendu de quelques
+fonctions pour la manipulation de champs), alors que les données
+MEDMEM sont physiquement disponibles uniquement au niveau des
+composants CORBA (et les opérations implémentées dans MEDMEM
+uniquement).
+
+Pour le moment, la maquette est limitée à des operations entre champs
+qui partagent le même support med (contrainte de MEDMEM) et le
+résultat est calculé sur toutes les composantes et tout le domaine de
+définition du champs (cette deuxième contrainte est juste parce que
+les extentions n'ont pas encore été examinées). Enfin, le support de
+gestion des données est supposé être l'étude SALOME et la structure
+MED qui y est publiée.
--- /dev/null
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ANNEXE: Références documentaires
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+.. include:: xmed-definitions.rst
+
+Documents de référence:
+
+* |REF_EDF_VCA_H-I2C-2009-03595-FR|_ - Valérie Cano - décembre 2009
+* |REF_CEA_VBE_MEDMEM|_ - Vincent Bergeaud - janvier 2007
+* |LINK_EDF_MEDDOC|_ - documentation en ligne (EDF)
+
+Présentations:
+
+* |REF_EDF_PRESMANIPCHP01|_ - Valérie Cano, Guillaume Boulant - janvier 2010
+* |REF_EDF_PRESMANIPCHP02|_ - Guillaume Boulant - octobre 2010
+* |REF_EDF_PRESMANIPCHP03|_ - Guillaume Boulant - mars 2011
+* Présentation à la Journée des Utilisateurs de SALOME de 2011 (JUS2011):
+
+ - |REF_EDF_JUS2011_PDF|_ - Anthony Geay (CEA), Guillaume Boulant - novembre 2011
+ - |REF_EDF_JUS2011_OGV1|_
+ - |REF_EDF_JUS2011_OGV3|_
+ - |REF_EDF_JUS2011_OGV4|_
+
+Notes de travail:
+
+* |REF_EDF_GBO_WORKNOTE|_ - Guillaume Boulant - novembre 2010
+* |REF_EDF_ELO_REM|_ - Eric Lorentz - novembre 2010
--- /dev/null
+.. meta::
+ :keywords: maillage, champ, manipulation, med
+ :author: Guillaume Boulant
+
+.. include:: xmed-definitions.rst
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+Module XMED: Spécifications fonctionnelles et techniques
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+(|XMED_SPECIFICATIONS_PDF|_)
+
+Ce texte présente les spécifications informatiques pour le
+développement d'un module de manipulation de champs qui répond à
+l'expression de besoins formulée dans le cahier des charges
+|REF_EDF_VCA_H-I2C-2009-03595-FR|_.
+
+.. contents:: Sommaire
+ :local:
+ :backlinks: none
+
+Description des cas d'application de référence
+==============================================
+
+Plusieurs cas d'applications métier sont identifiés pour piloter le
+développement du module de manipulation de champs:
+
+* **Analyser et post-traiter le résultat d'un calcul**. C'est l'usage
+ principal qui consiste typiquement à créer des champs comme le
+ résultat d'*opérations mathématiques* dont les opérandes sont des
+ champs et des scalaires. On compte également dans cette catégorie
+ les *opérations de restriction* qui permettent d'extraire puis
+ utiliser une partie d'un champs, c'est-à-dire de créer un champ
+ comme la restriction d'un autre champ à une partie de son domaine de
+ définition (certaines composantes, certains pas de temps, limitation
+ à un groupe de mailles).
+* **Comparer des champs issus d'un calcul paramétrique**. Il s'agit
+ d'une variante du cas précédent qui consiste à mesurer et visualiser
+ les variations entre des champs issues de sources de données
+ différentes (différents fichiers med).
+* **Préparer les conditions aux limites d'une calcul**. Il s'agit de
+ pouvoir initialiser un champ sur un maillage ou un groupe de
+ mailles, c'est-à-dire créer un champ de toute pièce sur un
+ support spatial donné, par exemple par la donnée d'une fonction
+ mathématique qui donne les valeurs des composantes en fonction des
+ coordonnées spatiales.
+* **Gérer des données de calcul**. Il s'agit typiquement de pouvoir
+ rassembler au sein d'un même fichier med des champs et des maillages
+ issues de différentes sources de données, et/ou créés au travers des
+ cas d'application présentés ci-dessus.
+
+Modèle conceptuel des données
+=============================
+
+On rappelle ici les concepts utilisés dans le module et les modalités
+d'utilisation de ces concepts. Le point de vue est celui de
+l'utilisateur du module de manipulation de champs. Il s'agit
+essentiellement pour le moment d'éclaircir l'ergonomie d'usage sur le
+plan conceptuel, avant d'aborder la déclinaison en spécifications
+techniques pour lesquelles les particularités du modèle MED devront
+être intégrées à la réflexion.
+
+Concept de champ
+----------------
+
+Le concept central est celui de *champ*, c'est-à-dire une grandeur
+physique exprimée sur un domaine spatial D. La grandeur peut être de
+type scalaire (une température), de type vectorielle (une vitesse) ou
+de type tensorielle (les contraintes). En un point de l'espace, elle
+se définie donc par la donnée d'une ou plusieurs valeurs numériques
+appelées les *composantes* (1 pour un champ scalaire, 3 pour un champ
+vectoriel 3D, 6 pour un champ tensoriel symétrique 3D).
+
+.. note:: Une pratique courante au niveau des codes est de stocker
+ plusieurs grandeurs physiques différentes dans un même champs med
+ (au sens informatique du terme). Par exemple, le champ
+ électromagnétique à 6 composantes, plus le champ de température
+ scalaire peuvent techniquement être stockés dans un même champs med
+ à 7 composantes. C'est pourquoi, le module de manipulation de
+ champs doit fournir des fonctions de restrictions qui permettent
+ d'extraire certaines composantes pour former la grandeur physique à
+ étudier. Dans la suite du document, on part du principe que l'on
+ peut se ramener dans tous les cas au cas d'un champ homogène tel
+ que défini plus haut.
+
+Dans le cadre d'un modèle numérique discret, les valeurs du champ sont
+exprimées pour un nombre fini de positions, qui correspondent à des
+lieux particuliers du maillage. Suivant la nature des modèles de
+calcul, les valeurs peuvent être données par cellule, par face, par
+noeud, aux points de gauss, ...
+
+Ainsi, un champ discret est un objet dont les valeurs peuvent être
+lues selon les dimensions suivantes:
+
+* *La position p dans l'espace*, caractérisée par le type de l'élément
+ de maillage support et son numéro identifiant
+* *La composante c*, caractérisée par son indice (jusqu'à 6
+ composantes dans les modèles physiques envisagés)
+
+L'évolution d'un champ dans le temps peut être exprimée sous la forme
+d'une série temporelle, c'est-à-dire une séquence de champs donnés
+pour des instants discrets. Aussi, si l'on manipule un champ qui varie
+dans le temps, l'accès aux valeurs introduit une dimension
+supplémentaire:
+
+* *Le temps t*, caractérisé par un numéro de pas de temps
+ (correspondant en général à une étape du calcul qui a produit le champ).
+
+.. note:: Il s'agit là d'une représentation conceptuelle standard dont
+ le |LINK_EDF_MEDDOC|_ fait une expression détaillée. En
+ particulier, la position p est déterminée par la donnée du type
+ d'élément support (valeurs aux noeuds, aux mailles, aux noeuds par
+ éléments, aux points de gauss) et de l'indice de cet élément. En
+ général, le type d'éléments support est résolu à l'initialisation
+ et l'indice peut suffire au repérage dans les algorithmes. Le temps
+ t est déterminé par un numéro d'itération, qui peut éventuellement
+ être complété par un numéro d'ordre. Le cas des points de gauss
+ ajoute un cran de complexité dans la mesure où il faut repérer
+ l'entité géométrique (maille, face, arrête) puis le point de gauss
+ de cette entité. A noter que dans le modèle MED, le concept de
+ série temporelle de champ n'est pas explicitement définie et
+ l'accès à des valeurs à différents instants t1 et t2 nécessite le
+ chargement des champs ``F1=F(t1)`` et ``F2=F(t2)``.
+
+Par convention, on utilisera par la suite les notations:
+
+* **U(t,p,c)** pour désigner la valeur de la composante c d'un champ U
+ à la position p et prise à l'instant t;
+* **U(t,p,:)** pour signifier que l'on manipule l'ensemble de toutes
+ les composantes;
+* **U(t,:,c)** pour signifier que l'on manipule le domaine de
+ définition spatial complet.
+
+Dans une grande majorité des cas d'usage on travaille à temps t fixé
+et sur un domaine spatiale prédéfini. Aussi on utilisera également la
+notation à deux arguments ``U(:,:)`` ou tout simplement ``U`` (dès
+lors qu'il n'y a pas ambiguïté) pour désigner un champ complet et Uc
+pour désigner la composante c du champ avec c=1..6.
+
+Concept d'opération
+-------------------
+Le deuxième concept à préciser est la notion d'*opération*. Une
+opération dans le présent contexte est l'application d'un opérateur
+sur un ou plusieurs champs pour produire une grandeur de type champ ou
+de type valeur numérique.
+
+Par exemple, la formule ``W=OP(U,V)`` indique que le champ W est formé
+à partir des champs U et V en arguments d'une fonction OP. Dans le cas
+d'une opération algébrique comme l'addition (cf. :ref:`Spécification
+des opérations<xmed-specifications>`, le résultat attendu par défaut
+est que pour chaque instant t, chaque position p et chaque composante
+c, on a ``W(t,p,c)=U(t,p,c)+V(t,p,c)`` (que l'on peut noter également
+``W(:,:,:)=U(:,:,:)+V(:,:,:)`` compte-tenu de la convention présentée
+plus haut). Ce n'est cependant pas une règle et l'utilisateur peut
+très bien manoeuvrer les champs en détaillant et mixant les
+composantes (par exemple ``W(:,:,3)=5+U(:,:,1)*V(:,:,2)``), ou encore
+ne travailler que sur un domaine spatial et/ou temporel particulier
+(cf. |REF_EDF_VCA_H-I2C-2009-03595-FR|_ §5.4.1).
+
+On formalise donc le concept d'opération par les propriétés suivantes:
+
+* L'opérateur peut produire un champ (par exemple la somme de deux
+ champs W=sum(U,V)=U+V), une valeur numérique (par exemple la moyenne
+ spatiale d'un champ m=smoy(U)) ou une valeur logique (par exemple le
+ test d'égalité de deux champs b=isequal(U,V));
+* L'opérateur peut être paramétré par la donnée de valeurs numériques
+ (par exemple, le changement d'unité peut être défini comme une
+ multiplication par un scalaire V=multiply(U,1000)=1000*U);
+* L'opérateur est caractérisé par un domaine d'application qui
+ spécifie la portée de l'opération. Ce domaine comporte plusieurs
+ dimensions:
+
+ - Un domaine temporel T qui spécifie les pas de temps sur lesquels
+ l'opération est appliquée;
+ - Un domaine spatial D qui spécifie la limite de portée de
+ l'opérateur et donc le domaine de définition du champ produit (qui
+ correspond dans ce cas à une restriction du domaine de définition
+ des champs en argument);
+ - Un domaine de composantes C qui spécifie les composantes sur
+ lesquelles l'opération est appliquée;
+
+.. note::
+ Sur le plan informatique, l'opérateur aura également un paramètre
+ appelé *option* qui pourra indiquer par exemple dans une
+ opération unaire V=F(U) si le résultat V est une nouvelle instance
+ de champ ou la valeur modifiée du champ de départ U. Il pourra
+ également être amené à manoeuvrer des paramètres de type chaîne de
+ caractères, par exemple pour les opérations de changement de nom
+ des champs.
+
+De manière générale, on utilisera la notation
+**(W|y)=OP[D,C,T](P,U,V,...)** pour désigner une opération OP:
+
+* **(V|y)**: V ou y désignent respectivement un résultat de type
+ champ ou de type valeur numérique ou logique;
+* **[T,D,C]**: le domaine d'application de l'opérateur avec T le
+ domaine temporel, D le domaine spatial et C le domaine des
+ composantes;
+* **P,U,V,...**: les paramètres numériques P (liste de valeurs
+ numériques) et les champs U,V,... en arguments de l'opérateur;
+
+On note également les particularités suivantes pour certaines
+opérations:
+
+* Le domaine de définition du champ produit par une opération peut
+ être différent du domaine de définition des champs en argument. Par
+ exemple, dans le cas d'une opération de projection de champ, le
+ domaine spatial résultat peut être modifié par rapport au domaine de
+ définition initial, soit par la modification de la zone géométrique,
+ soit par modification des entités de maillage support.
+* En dehors des opérations de type dérivée et intégrale, les valeurs
+ résultats sont déterminées de manière locale en chaque point du
+ domaine d'application. Par exemple, l'addition W=U+V consiste à
+ produire un champ W dont les valeurs en chaque point p sont la somme
+ des valeurs des composantes de U et V en ce point p: ``W=U+V <=>
+ W(:,p,:)=U(:,p,:)+V(:,p,:)`` pour tout point p du domaine
+ d'application D.
+
+Concept de domaine d'application
+--------------------------------
+
+Un domaine d'application est associé à une opération (et non pas à un
+champ). Il a pour objectif de restreindre la portée de l'opération en
+terme spatial, temporel, jeu des composantes.
+
+Pour ce qui concerne le domaine spatial D, plusieurs modalités de
+définition sont envisagées:
+
+* la donnée d'un maillage ou d'un groupe d'éléments du maillage;
+* un système de filtres qui peut combiner:
+
+ - une zone géométrique définie indépendamment du maillage (boîte
+ limite par exemple),
+ - des critères conditionnant le calcul (par exemple U(t,p,c)=1 si
+ V(t,p,c)<seuil).
+
+.. warning:: Version 2010: D pourra correspondre au maillage complet
+ et dans la mesure du possible à un groupe d'éléments du maillage
+
+Ce domaine d'application peut être différent du domaine de définition
+des champs mais il doit être compatible (recouvrement spatial partiel
+au moins et même support d'entité de maillage). Ainsi, sans précision
+particulière, une opération s'applique à l'ensemble du domaine de
+définition des champs en argument (qui dans la pratique MED est
+spécifié par le support et correspond en général au maillage
+complet).
+
+Limites d'utilisation
+---------------------
+
+Plusieurs situations doivent être examinées pour poser les limites
+d'utilisation:
+
+* Les champs en argument n'ont pas tous le même domaine de définition,
+ par exemple parcequ'il ne sont pas définis sur les mêmes zones
+ géométriques ou parcequ'ils ne sont pas donnés sur le même type
+ d'entité de maillage. On peut imaginer dans ce cas produire le
+ résultat sur les zones de recouvrement uniquement.
+* Le domaine de définition des champs et le domaine d'application de
+ l'opérateur ne sont pas compatibles, par exemple parcequ'on demande
+ une restriction sur une zone géométrique qui ne fait pas partie de
+ la zone de définition du champ d'entrée. A priori, ce type
+ d'opération est déclaré en échec.
+* Les champs en argument ne sont pas définis sur les mêmes pas de
+ temps. Si l'opération est tolérée (techniquement MEDCoupling permet
+ de le faire), le pas de temps résultat est indéfini.
+
+.. warning:: **A faire**: spécifier les modalités de prise en compte de
+ ces différentes situations (au moins sur le plan conceptuel).
+
+Au delà de ces limites conceptuelles, il faut avoir en tête les
+limites techniques liées à l'usage de MED mémoire (paquet
+MEDCoupling). Par exemple, MEDCoupling impose que les champs opérandes
+soient définis sur le même maillage support (on parle ici de l'objet
+informatique correspondant au maillage). Deux champs construits sur le
+même maillage (du point de vue conceptuel) mais issus de deux fichiers
+med différents sont considérés comme des champs définis sur des
+maillages support différents, c'est-à-dire que les objects
+informatiques correspondant aux maillages sont différents (chargés de
+deux fichiers différents). En l'état, il est donc impossible par
+exemple de faire la comparaison de champs résultats d'une étude
+paramétriques. MEDCoupling fournit une solution qu'il faudra mettre en
+oeuvre de manière ergonomique au niveau du module MED. Il est possible
+de changer le maillage support M1 d'un champs par un maillage M2 à
+partir du moment où les maillages M1 et M2 sont identiques
+géométriquement à une erreur près qu'il est possible de spécifier.
+
+.. note::
+ D'autres situations limites peuvent être évoquées sous l'angle
+ informatique. Ce sont des situations qui a priori n'ont pas de
+ raison d'exister sur le plan conceptuel mais qui peuvent très bien
+ survenir au niveau du module informatique compte-tenu des
+ particularités du modèle MED. Par exemple:
+
+ * Le nombre et la nature des composantes ne sont pas identiques
+ pour tous les champs d'entrée. Par exemple, U défini ses
+ composantes comme U(:,:,1)=Ux, U(:,:,2)=Uy, U(:,:,3)=Uz et V les
+ défini comme U(:,:,1)=Uz, U(:,:,2)=Ux, U(:,:,3)=Uy. Cette
+ situation peut être gérée techniquement par exemple au moyen
+ d'une carte de correspondance qui accompagnerai chacun des champs
+ pour exprimer le sens physique de chaque composants (histoire de
+ ne pas ajouter des choux et des carottes).
+
+Spécifications générales
+========================
+
+Le diagramme ci-dessous représente un découpage fonctionnel qui rend
+compte de l'expression des besoins:
+
+.. image:: images/xmed-functions.png
+ :align: center
+
+On peut identifier les fonctionnalités suivantes:
+
+* **Opérations**: fonctions de manipulation de champs proprement
+ dites;
+* **Persistance**: fonctions d'enregistrement persistant et de
+ chargement des données (au format med fichier)
+* **Visualisation**: fonctions de contrôle visuel des champs
+ manipulés
+* **Export des données**: fonction de transposition des données de
+ champs dans un format textuel directement exploitable et de manière
+ autoportante dans une autre application, par exemple en python au
+ moyen des structures de données Numpy.
+
+Ces fonctions s'articulent autour d'un conteneur qui héberge les
+champs manipulés et les supports de ces champs (représenté par le
+cylindre central).
+
+Un scénario d'utilisation type est:
+
+* Préparation des champs à manipuler, par deux moyens complémentaires:
+
+ - Utilisation des fonctions de persistance: chargement depuis un
+ fichier med d'un ensemble de champs qui partagent le même espace
+ de définition;
+ - Utilisation des opérations de champs: chargement d'un maillage
+ depuis un fichier med, puis création ab initio de champs au moyen
+ des opérations de champs;
+
+* Manipulation des champs par application des opérations à
+ disposition, puis contrôle visuel des résultats produits au moyen
+ des fonctions de visualisation mises à disposition par SALOME;
+* Restitution des résultats produits, par deux moyens complémentaires:
+
+ - Restitution des champs produits et/ou modifiés sous une forme
+ persistante (fichier med);
+ - Restitution d'une partie seulement des résultats sous forme de
+ tableaux de valeurs sauvegardés dans un fichier texte ou exporté
+ sous forme de tableau numpy
+
+.. _xmed-specifications:
+
+Spécification des opérations
+============================
+
+Le cahier des charges définit trois catégories d'opérations
+mathématiques:
+
+* **Les opérations arithmétiques**, dans lesquelles le résultat à la
+ position p et à l'instant t ne dépend que des données à la position
+ p et à l'instant t;
+* **Les opérations d'interpolations**, dans lesquelles le résultat
+ est exprimé sur des entités de maillages différentes ou est projeté
+ sur une zone géométrique différente du domaine de définition
+ initial;
+* **Les opérations globales**, dans lesquelles le résultat peut
+ demander l'agrégation des valeurs sur plusieurs position p ou
+ plusieurs pas de temps t (calcul d'extremum, d'intégrale);
+
+Auxquelles, on peut ajouter à des fins de gestion des données:
+
+* **Les opérations de génération**, qui permettent de créer un champ
+ sur un maillage vierge ou d'étendre le domaine spatial de définition
+ d'un champ;
+* **Les opérations d'ordre sémantique**, qui permettent de modifier
+ les méta-données associées aux champs (nom, unité, ...)
+* **Les opérations de diagnostic**, qui permettent d'effectuer une
+ analyse particulière d'un champ et/ou des éléments de maillage
+ associés et de fournir un compte-rendu, sous la forme d'une
+ structure de données ou d'un texte formaté affichable dans
+ l'interface utilisateur.
+
+La suite de la section décrit les spécifications prévues pour chaque
+type d'opération unitaire. Un dernier paragraphe concerne les
+modalités de combinaison des opérations et spécifie la définition d'un
+domaine d'application sur une opération, qui permet de restreindre la
+portée de l'opération en terme spatial, temporelle ou nature des
+composantes impliquées.
+
+Les opérations arithmétiques
+----------------------------
+
+Les opérations arithmétiques regroupent:
+
+* les **opérations algébriques** (+, -, x, /);
+* les **opérations vectorielles** (produit scalaire, produit
+ vectoriel, produit tensoriel);
+* l'**application d'une fonction mathématique** à variable scalaire
+ (exponentielle, logarithme, fonctions trigonométriques, valeur
+ absolue, partie entière) ou à variable de type champ (les fonctions
+ de norme par exemple).
+
+Pour les besoins des spécifications informatiques, il est plus commode
+de classer ces opérations en deux catégories:
+
+* les **opérations unaires**, qui prennent un opérande unique en
+ argument. C'est le cas de la plupart des fonctions mathématiques
+ envisagées;
+* les **opérations binaires**, qui prennent deux opérandes en
+ argument. C'est le cas des opérations algébriques et des opérations
+ vectorielles.
+
+A partir de cette classification, il convient de distinguer trois
+formes d'usage selon la nature des opérandes:
+
+* les opérandes sont exclusivement des scalaires (typiquement des
+ valeurs de composantes des champs et des paramètres numériques). Par
+ exemple::
+
+ W(:,:4) = 1+2xU(:,:,2)+V(:,:,3)
+
+* les opérandes sont exclusivement des champs. Par exemple::
+
+ W = U + V (addition)
+ W = U ^ V (produit vectoriel)
+
+* les opérandes sont des champs et des paramètres numériques. Par exemple::
+
+ W = 3xU - 2xV
+ W = U + 2
+
+Le premier cas de figure (opérandes scalaires) est trivial car les
+règles mathématiques conventionnelles s'appliquent et sont
+implémentées dans tous les langages (Python et C++ en
+particulier). Les cas 2 et 3 par contre doivent être précisés car (i)
+les règles de comportement ne peuvent pas être simplement déduites des
+règles mathématiques (quel est le résultat de ``W = U + 2`` ?) et
+(ii) certaines écritures ne peuvent avoir aucun sens (par exemple
+``W = 2 / U``). Il convient donc de préciser les conventions et
+les limites sur ces deux cas de figure.
+
+Dans le cas des opérations unaires où l'opérande est un champ, on doit
+distinguer deux cas d'usage:
+
+* l'application d'une fonction mathématique à valeur de type champ. Ce
+ cas est trivial également et on applique la règle d'usage de la
+ fonction. C'est typiquement le cas des fonctions de calcul de
+ norme.
+* l'application d'une fonction mathématique à valeur scalaire. Dans ce
+ cas, on convient d'appliquer la fonction de manière unitaire sur
+ chacune des composantes c du champ: ``W(:,:,c) = OP( U(:,:,c)
+ )``
+
+Dans le cas des opérations binaires, on recense les combinaisons
+d'opérandes suivantes (les lettres capitales représentent des champs,
+et les lettres minuscules une valeur scalaire qui peut être un
+paramètre numérique ou la composante d'un champ):
+
+* U+V ajoute les composantes en regard: W(:,:,c)=U(:,:,c)+V(:,:,c)
+* U-V soustrait les composantes en regard: W(:,:,c)=U(:,:,c)-V(:,:,c)
+* U*V multiplie les composantes en regard: W(:,:,c)=U(:,:,c)*V(:,:,c)
+* U/V divise les composantes en regard: W(:,:,c)=U(:,:,c)/V(:,:,c)
+* U+x ajoute x à toute les composantes: W(:,:,c)=U(:,:,c)+x
+* U*x multiplie toutes les composantes par x: W(:,:,c)=U(:,:,c)*x
+* U.V produit scalaire des champs U et V: W(:,:c)=U(:,:,c)*V(:,:,c)
+* U^V produit vectoriel des champs U et V: W(:,:1)=U(:,:,2)*V(:,:,3)-U(:,:,3)*V(:,:,2), ...
+
+.. note::
+ Pour ce qui concerne les opérations vectorielles, un convention
+ implicite est appliquée par laquelle on suppose que les composantes
+ sont rangées dans l'ordre des dimensions spatiales U1=Ux, U2=Uy,
+ U3=Uz. Sur le plan informatique au niveau du modèle MEDMEM, ceci
+ n'est pas garanti et aucun élément du modèle ne permet de
+ contraindre l'application de cette convention. Il convient donc de
+ prévoir des fonctions techniques qui permettront de mettre en
+ correspondance les indices de composantes et les dimensions
+ spatiales (par exemple par la données d'une carte de correspondance
+ applicable à un ensemble de champs).
+
+.. warning::
+ A développer:
+
+ * Analyse dimensionnelle du champ résultats pour adapter
+ l'unité. Par exemple, si on fait UxV où U et V sont exprimés en
+ [m] alors le résultat est en [m2].
+
+Les opérations d'interpolation
+------------------------------
+.. warning:: Non prévues au programme 2010.
+
+Les opérations mathématiques globales
+-------------------------------------
+.. warning:: Non prévues au programme 2010.
+
+Les opérations de génération
+----------------------------
+.. warning:: EN TRAVAUX
+
+Les opérations de génération sont des fonctions qui permettent de
+créer un champ sur un domaine du maillage où il n'est pas défini
+initialement. Deux cas de figure peuvent se présenter:
+
+* Le champ n'existe pas et il doit être créé sur un domaine à définir;
+* Le champ existe mais les valeurs ne sont pas définies sur l'ensemble
+ du maillage.
+
+On peut envisager plusieurs modalités de mise en oeuvre:
+
+* le prolongement par une valeur constante (ou plus généralement par
+ une fonction de l'espace?);
+* les valeurs du champs sont données par une fonction f(p,t) qui prend
+ la position p et le pas de temps t en argument;
+* on peut prédéfinir le champ position **r** qui porte les
+ coordonnées spatiales de l'élément de maillage support, puis faire
+ une opération arithmétique standard.
+
+Les opérations d'ordre sémantique
+---------------------------------
+.. warning:: EN TRAVAUX
+
+Concerne:
+
+* le changement de nom du champ
+* le changement d'unité du champ (il s'agit ici de conserver la
+ cohérence entre la valeur numérique et l'attribut "unité" d'un
+ champ.
+
+Les opérations de diagnostic
+----------------------------
+.. warning:: EN TRAVAUX. A faire en fonction des besoins des cas d'application
+
+On peut identifier plusieurs types d'opérations:
+
+* les opérations à diagnostic booléen, par exemple
+ b=isequal(U,V)=[U=V] (où [.] signifie évaluation de la condition
+ entre crochers)
+* les opérations à diagnostic textuel, par exemple afficher les
+ méta-données associées à un champs (unité, nom, maillage support,
+ type d'entité, pas de temps, ...)
+* les opérations à diagnostic structuré, qui donneraient une structure
+ de données exploitable au niveau d'un code logiciel.
+
+Combinaison des opérations
+--------------------------
+.. warning:: EN TRAVAUX. Indiquer les règles de combinaison (associativité, commutativité, ...)
+
+Définition d'un domaine d'application
+-------------------------------------
+Pour rappel, un domaine d'application peut être associé à une
+opération pour restreindre la portée de l'opération en terme spatial,
+temporelle ou nature des composantes impliquées.
+
+.. warning:: Todo: spécifier comment on le définit et les modalités d'applications.
+
+Spécification de l'ergonomie
+============================
+
+L'ergonomie générale d'utilisation du module de manipulation de champs
+est inspirée des logiciels comme octave ou scilab. Elle associe une
+interface graphique, pour sélectionner et préparer les données, avec
+une interface texte (la console python) pour le travail effectif sur
+les données:
+
+* L'**interface graphique** a pour fonction essentielle de sélectionner et
+ préparer les champs à manipuler dans l'interface texte, puis
+ fournit des fonctions pour la gestion générale des données
+ (chargement, sauvegarde, contrôle visuel, export).
+* L'**interface texte** offre un jeu de commandes pour manipuler les
+ champs (afficher les données, effectuer des opérations), piloter les
+ fonctions d'affichage (contrôle visuel au moyen des modules VISU
+ et/ou PARAVIS) et communiquer avec l'interface graphique (ajouter
+ des nouveaux champs dans l'espace de gestion, mettre à jour les
+ méta-données d'un champ).
+
+Sur le plan de l'ergonomie, cela se traduit par un processus de
+travail dans lequel on peut distinguer différentes phases:
+
+* Une phase de préparation des champs à manoeuvrer sous la forme de
+ variables nommées et simples à manipuler dans l'interface
+ textuelle. Lors de cette phase, l'utilisateur spécifie de manière
+ graphique tout ce qui peut être définis à l'avance et pour toute la
+ durée du processus de travail. Par exemple, en spécifiant le nom des
+ fichiers med source des données et les noms des champs à utiliser
+ dans ces fichiers, le pas de temps de travail, le jeu des
+ composantes à considérer, le domaine d'application des opérations;
+* Une phase de manipulation des champs proprement dite, qui a lieu
+ principalement dans l'interface textuelle, et qui peut s'accompagner
+ de contrôle visuel des résultats et/ou d'export à destination
+ d'outils complémentaires indépendants (gnuplot, python, ...);
+* Une phase de restitution des champs produits pour assurer la
+ persistance des données de travail. Tout les champs créés par les
+ manipulations au niveau de l'interface textuelle ne sont pas à
+ sauvegarder, et on on propose donc à l'utilisateur les moyens de
+ choisir les champs à conserver. Cette phase peut amener
+ l'utilisateur à préciser les informations manquantes, comme les noms
+ de fichiers, les noms de champs produits, les unités, ...
+
+Dans ce cadre, l'utilisation type des fonctions de manipulation de
+champs est un processus de la forme suivante:
+
+1. Chargement d'un fichier med dans SALOME et exploration du contenu,
+ composé de maillages, sur lesquels sont définis des champs, pouvant
+ contenir un ou plusieurs pas de temps.
+2. Sélection (graphique) des champs à manipuler, avec la possibilité
+ de préciser des restrictions d'utilisation (pas de temps,
+ composantes, groupe de maille).
+3. Création de nouveaux champs par l'exécution d'opérations
+ algébriques (+,-,*,/) entre champs, l'application de fonctions
+ mathématiques standard (pow, sqrt, abs), ou encore l'initialisation
+ "from scratch" à partir d'un maillage support.
+4. Contrôle visuel rapide des champs produits (avec les modules VISU
+ et/ou PARAVIS de SALOME, pilotés automatiquement depuis l'interface
+ utilisateur)
+5. Enregistrement d'une partie des champs produits dans un fichier med
+
+
+Les espaces de données utilisateur
+----------------------------------
+
+Sur le plan conceptuel, on est amené à définir deux espaces de données
+utilisateur:
+
+* **l'espace des données source** (*dataspace*), dans lequel
+ l'utilisateur définit les sources de données med (*datasource*),
+ c'est-à-dire les fichiers med dans lesquels sont lus les champs
+ et maillages. Cet espace est en lecture seule et permet
+ l'exploration des sources de données (aperçu des maillages et des
+ champs).
+* **l'espace des données de travail** (*workspace*), dans lequel
+ l'utilisateur dépose les champs et maillages à utiliser, puis range
+ les champs produits au travers des fonctions de manipulation de
+ champs.
+
+La figure ci-dessous en donne une représentation imagée avec le
+support de l'interface graphique du module (interface non définitive
+affichée ici pour illustration des spécifications):
+
+.. image:: images/xmed-gui-withframe.png
+ :align: center
+
+.. note:: Techniquement, les données sources sont rangées dans l'étude
+ SALOME et peuvent être explorées au moyen de l'object browser. Les
+ données de travail sont rangées dans un arbre complémentaire et
+ manipulable dans la console python.
+
+Le principe général est que **les données sources ne sont jamais
+modifiées**. Le dataspace est un espace de chargement qui permet
+d'explorer puis de sélectionner les données à manipuler. L'utilisateur
+travaille à partir de maillages et de champs chargés préalablement
+dans cet espace, mais ne peut en aucun cas les modifier
+directement. Pour cela, il doit d'abord les sélectionner pour
+utilisation dans l'espace de travail. Ce choix garantie l'intégrité
+des sources de données et permet de rejouer la séquence de travail à
+partir de zéro en cas de besoin (on efface le tableau noir et on
+recommence). Par ailleurs, il permet d'assister graphiquement la
+définition du champs à manipuler effectivement, en particulier pour
+affecter un nom de variable de manipulation.
+
+Les captures d'écrans suivantes montrent le principe d'utilisation sur
+le cas de la sélection d'un pas de temps à utiliser dans l'espace de
+travail. Les données à manoeuvrer (maillage et/ou champs) sont
+sélectionnées pour utilisation dans l'espace de travail, où elles
+peuvent être modifiées et/ou utilisées dans les opérations de
+champs. Ici, le champ est désigné par la varibale ``f4`` dans
+l'interface textuelle:
+
+* Sur cette première capture, on sélectionne le pas de temps n°4 du
+ champs ``Pulse`` définit sur le maillage ``Grid_80x80`` de la source
+ de données ``timeseries.med`` (concrètement le fichier
+ ``timeseries.med``) pour faire apparaître ensuite le menu contextuel
+ et choisir l'option "Use in workspace":
+
+.. image:: images/xmed-gui-datasource-contextmenu_70pc.png
+ :align: center
+
+* Cette capture montre une fenêtre de dialogue qui invite
+ l'utilisateur à spécifier un alias pour la variable python qui
+ va permettre la manipulation du champ dans l'interface textuelle de
+ l'espace de travail (par défaut, le nom complet du champ est
+ proposé). Ici, l'utilisateur spécifie ``f4``:
+
+.. image:: images/xmed-gui-datasource-useinworkspace_70pc.png
+ :align: center
+
+* La validation de la fenêtre provoque l'ajout du champs dans l'espace
+ de travail (le champ est désormais disponible à la manipulation) et
+ définit une variable python de nom ``f4`` qui permet la manipulation
+ du champ:
+
+.. image:: images/xmed-gui-datasource-useinworkspace-result_70pc.png
+ :align: center
+
+Modalités d'utilisation
+-----------------------
+
+.. warning:: cette section est à nettoyer car elle contient des
+ informations redondantes avec d'autres sections précédentes ou pire
+ qui contredisent des sections précédentes.
+
+Dans le cadre défini ci-dessus, une session d'utilisation type est:
+
+* Sélectionner les sources de données puis définir le domaine
+ d'application (espace, temps, composantes), avec éventuellement
+ l'assistance d'une interface graphique;
+* Charger les champs en conséquence dans l'espace de travail. Cette
+ opération propose de définir une variable python pour manipulation
+ dans l'interface textuelle.
+* Effectuer les opérations dans l'espace de travail, c'est-à-dire en
+ ligne de commandes python (ce qui demandera sans doute un travail
+ conséquent de simplification et d'assistance en ligne). Par exemple,
+ si ``fa`` et ``fb`` désignent deux champs définis dans l'espace de
+ travail, alors on peut en faire la somme par la commande::
+
+ >>> r=fa+fb
+
+* Effectuer les contrôles visuel et les diagnostics en ligne de
+ commandes python (cf. :ref:`Spécification des fonctions de
+ visualisation<specification_visualisation>`)::
+
+ >>> view(r)
+
+* Enregistrer les champs produits dans l'espace de travail sous forme
+ de fichier med.
+
+Sur cette base, on peut envisager une grande variété de cas d'utilisation:
+
+* La structure MED (champs, maillage et groupes de mailles) est
+ chargée dans le dataspace (l'étude SALOME techniquement) et peut
+ être explorée au niveau de l'arbre d'étude. L'arbre peut faire
+ apparaître:
+
+ - les maillages et les groupes (qui peuvent être utilisés
+ éventuellement pour restreindre le domaine d'application)
+ - les champs dont on peut explorer les composantes et les itérations
+
+* On sélectionne plusieurs champs, éventuellement en sélectionnant les
+ pas de temps, les composantes et les domaines d'application spatiaux
+* Menu contextuel --> Modifier un champ, Créer un champ, Prolonger un
+ champ, ....
+* On choisi pour la suite "Créer un champ", une fenêtre de dialogue
+ s'affiche avec les saisies préremplies avec les données
+ sélectionnées. Il est possible de rajouter des éléments ou préciser
+ le domaine d'application
+* Une partie de la boîte de dialogue est réservée à la saisie de la
+ ligne de commande python qui permet la création du nouveau champ. Le
+ nom dans l'étude pour le nouveau champ, ainsi que son nom python,
+ sont spécifié par l'utilisateur ({{H|un peu à la mode du module
+ system}}).
+* L'opération est exécutée dans l'espace utilisateur (l'interface
+ python), de sorte que les variables soient projetées dans cet espace
+ et manipulables après l'opération au besoin. Par ailleurs,
+ l'utilisateur peut visualiser les ligne de commandes nécessaires à
+ taper pour exécuter sa requête.
+
+.. _specification_visualisation:
+
+Spécification des fonctions de visualisation
+============================================
+
+Dans le cadre du module MED, on appelle *fonction de visualisation*
+une fonction qui permet d'avoir un aperçu graphique d'un champ, par
+exemple au moyen d'une carte de champ construite sur une de ses
+composante. Il s'agit là de vue de contrôle pour avoir une idée rapide
+de la forme du champs. Pour créer des représentations spécifiques, on
+préférera passer par les fonctions d'export vers le module PARAVIS.
+
+Les modules VISU et PARAVIS offre des interface de programmation C++
+et python qui permettent le pilotage depuis un module tiers comme le
+module MED. On peut donc envisager une fonction de visualisation
+intégrée au module de manipulation de champs, c'est-à-dire que l'on
+déclenche sans sortir du module MED, et qui exploite les fonctions de
+visualisation des modules VISU et/ou PARAVIS.
+
+Les captures d'écran ci-dessous illustrent la mise en oeuvre de la
+fonction de visualisation:
+
+* Sélection d'un champ pour faire apparaitre le menu contextuel et
+ choisir l'option "Visualize":
+
+.. image:: images/xmed-gui-datasource-visualize_70pc.png
+ :align: center
+
+* Cette option déclenche l'affichage d'une carte de champ sur le cadre
+ d'affichage des viewers SALOME:
+
+.. image:: images/xmed-gui-datasource-visualize-result_70pc.png
+ :align: center
+
+Cette fonction est également disponible en ligne de commandes de
+l'interface textuelle. Par exemple si ``f4`` désigne un champ de
+l'espace de travail (importé des données source ou construit par les
+opérations de champs), alors, on obtient une carte de champ par la
+commande::
+
+ >>> view(f4)
+
+On peut remarquer d'ailleurs sur la capture d'écran de droite
+ci-dessus que la demande de visualisation déclenche l'exécution de la
+commande ``view`` dans la console de travail sur un champ identifié
+par son numéro (3 dans l'exemple).
+
+.. note:: Tous les champs, qu'ils soient des champs chargés d'une
+ source de données ou construits par des opérations de champs sont
+ identifiés par un numéro unique et invariant tout au long de la
+ session de travail.
+
+Spécification des fonctions de persistance
+==========================================
+
+On adopte le principe de fonctionnement suivant:
+
+* Le module n’assure pas la persistence au sens SALOME du terme,
+ c’est-à-dire qu’il ne permet pas la sauvegarde du travail dans une
+ étude au format hdf, ni le dump sous la forme de script python
+ SALOME. Le besoin n'est pas avéré et on peut même dire que ça n'a
+ pas de sens compte-tenu de l'usage envisagé pour le module MED.
+* Par contre, le module fournit des fonctions de sauvegarde du travail
+ sous forme de fichiers med, l’export vers les modules VISU et
+ PARAVIZ, ou même la sauvegarde de l’historique de l’interface de
+ commandes.
+
+Ainsi donc, l'utilisateur aura une fonction (probablement graphique)
+pour définir la sélection des champs de l'espace de travail à
+sauvegarder.
+
+Spécification des fonctions d'export
+====================================
+
+.. warning:: EN TRAVAUX.
+
+Plusieurs export peuvent être proposés:
+
+* Export des champs vers le module PARAVIZ, dans l'objectif par
+ exemple d'en faire une analyse visuelle plus poussée qu'avec les
+ cartes de champs disponibles par défaut dans le module MED
+* Export des données sous forme de tableau numpy, par exemple pour
+ permettre un travail algorithmique sur les valeurs des champs.
+
+Spécifications techniques
+=========================
+
+Il s'agit d'exprimer ici les contraintes techniques applicables à la
+conception et au développement du nouveau module MED.
+
+Implantation technique du module
+--------------------------------
+
+Il est convenu que le module MED existant dans la plate-forme SALOME
+incarne le module de manipulation de champ. Dans la pratique, il
+s'agit d'identifier clairement les parties à conserver, d'une part,
+puis les parties à re-écrire, d'autre part. On peut partir sur les
+hypothèses techniques suivantes:
+
+* Le noyau du module en charge des opérations de manipulation de
+ champs proprement dites est construit sur la base des paquets
+ logiciels MEDCoupling (lui-même basé sur le INTERP_KERNEL) et
+ MEDLoader.
+* L'interface graphique du module MED est complétement re-écrite et
+ remplacée par une interface adaptée spécialement à la manipulation
+ des champs et la gestion des données associées
+* Le contrôle visuel pourra être déclenché dans les visualisateurs
+ SALOME (servis par les modules VISU et/ou PARAVIZ);
+* Le module n'assure pas la persistence au sens SALOME du terme,
+ c'est-à-dire qu'il ne permet pas la sauvegarde du travail dans une
+ étude au format hdf, ni le dump sous la forme de script python
+ SALOME.
+* Par contre, il fournit des fonctions de sauvegarde du travail sous
+ forme de fichiers med, l'export vers les modules VISU et PARAVIZ, ou
+ même la sauvegarde de l'historique de l'interface de commandes.
+
+L'implantation technique des développements est représentée sur la
+figure ci-dessous:
+
+.. image:: images/xmed-implantation.png
+ :align: center
+
+Le schéma représente les packages logiciels qui composent le module
+MED (cf. |REF_CEA_VBE_MEDMEM|_):
+
+* La partie MEDMEM, représentées en blanc. Cette partie est conservée
+ pour compatibilité ascendante au niveau des applications métier qui
+ ont fait le choix historique de s'appuyer sur MEDMEM. Cette partie
+ du module MED aura tendance à disparaitre dans le futur au bénéfice
+ de MEDCoupling et MEDLoader.
+* La partie MEDCoupling, représentée en orange et qui founrnit le
+ modèle MED mémoire de référence (composé de maillage et de champs)
+ et l'interface de programmation pour manipuler le modèle. Le paquet
+ MEDLoader est une extention dédiée à la persistence au format med
+ fichier (lecture et écriture de champs et de maillage dans des
+ fichiers med).
+* La partie à développer pour la manipulation de champ, représentée en
+ bleu.
+
+.. note:: MEDCoupling peut être vu comme une structure de donnée
+ particulièrement adaptée à la manipulation des gros volumes de
+ données, en particulier par l'exploitation des possibilités de
+ parallélisation et la réduction de la tailles des structures de
+ données. En contrepartie, elle peut présenter un périmètre
+ fonctionnel moins large que MEDMEM. Pour cette raison, MEDMEM avait
+ été choisi comme socle de développement du prototype en 2010:
+
+ * MEDCoupling ne permet pas de gérer des maillages composés de
+ plusieurs type de mailles et il est exclus de le faire évoluer
+ dans ce sens (c'est un choix fait pour les objectifs de
+ performances évoqués plus haut);
+ * MEDCoupling ne permet pas de gérer les supports qui expriment les
+ champs aux noeuds par élément ni aux points de gauss. Cette
+ seconde limitation a disparu en 2011.
+
+ Aujourd'hui, on fait clairement le choix de MEDCoupling pour sa
+ qualité et sa robustesse, dans l'objectif d'une meilleure
+ maintenance à long terme. Par ailleurs, les différences
+ fonctionnelles avec MEDMEM, si elles existaient encore en 2012 pour
+ les besoins de la manipulation de champs, pourront être résorbées
+ dans un futur proche.
+
+
--- /dev/null
+.. meta::
+ :keywords: maillage, champ, manipulation, guide utilisateur
+ :author: Guillaume Boulant
+
+.. include:: xmed-definitions.rst
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+Module XMED: Guide d'utilisation
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+(|XMED_USERGUIDE_PDF|_)
+
+Ce document est un guide rapide pour l'utilisation du module MED. Il
+montre comment utiliser le module sur la base de quelques exemples de
+référence, inspirés des cas d'utilisation identifiés lors de l'analyse
+des besoins en matière de manipulation de champs.
+
+.. warning:: Le document est autonome, mais il est vivement conseillé
+ de parcourir au préalable (ou en parallèle) :doc:`le document de
+ spécifications<xmed-specifications>`, au moins pour fixer les
+ concepts et la terminologie.
+
+.. contents:: Sommaire
+ :local:
+ :backlinks: none
+
+Présentation générale du module XMED
+====================================
+
+L'ergonomie générale d'utilisation du module de manipulation de champs
+est inspirée des logiciels comme octave ou scilab. Elle associe une
+interface graphique, pour sélectionner et préparer les données, avec
+une interface texte (la console python) pour le travail effectif sur
+les données.
+
+Pour cela, le module propose deux espaces utilisateurs qui sont
+symbolisés par les rectangles rouges et vert sur la capture d'écran
+ci-dessous:
+
+* **l'espace des données** (*dataspace*), dans lequel l'utilisateur
+ définit les sources de données med (*datasource*), c'est-à-dire les
+ fichiers med dans lesquels sont lus les champs et maillages. Cet
+ espace permet l'exploration des maillages et des champs fournis par
+ les différentes sources de données.
+* **l'espace de travail** (*workspace*), dans lequel l'utilisateur
+ peut déposer des champs sélectionnées dans l'espace source, pour
+ ensuite les travailler par exemple pour produire des nouveaux champs
+ au moyen des fonctions de manipulation fournies par l'interface
+ textuelle (console python TUI).
+
+.. image:: images/xmed-gui-withframe.png
+ :align: center
+
+L'utilisation type des fonctions de manipulation de champs suit un
+processus de la forme suivante:
+
+1. Chargement d'un fichier med dans l'espace de données (dataspace) et
+ exploration du contenu, composé de maillages et de champs définis
+ sur ces maillages et pouvant contenir un ou plusieurs pas de temps.
+2. Sélection (graphique) des champs à manipuler dans l'espace de
+ travail (workspace), avec la possibilité de préciser des
+ restrictions d'utilisation (pas de temps, composantes, groupe de
+ maille).
+3. Création de nouveaux champs par l'exécution d'opérations
+ algébriques (+,-,*,/) entre champs, l'application de fonctions
+ mathématiques standard (pow, sqrt, abs), ou encore l'initialisation
+ "from scratch" sur un maillage support.
+4. Contrôle visuel rapide des champs produits (avec les modules VISU
+ et/ou PARAVIS de SALOME, pilotés automatiquement depuis l'interface
+ utilisateur)
+5. Enregistrement d'une partie des champs produits dans un fichier med
+
+
+Tour rapide des fonctions du module XMED
+========================================
+
+Cette section présente des exemples d'utilisation du module XMED sous
+la forme de "storyboard", et illustre au passage les fonctions mises à
+disposition par le module.
+
+.. warning:: Cette section est en travaux. Tant que cet avis n'aura
+ pas disparu, veuillez en considérer le plan et le contenu encore
+ incomplets, temporaires et sujets à caution.
+
+Exemple 1: Explorer des sources de données
+------------------------------------------
+
+.. note:: Cet exemple présente les fonctions:
+
+ * ajouter une source de données
+ * fonctions "Extends field series", "Visualize"
+
+.. |ICO_DATASOURCE_ADD| image:: images/ico_datasource_add.png
+ :height: 16px
+
+.. |ICO_XMED| image:: images/ico_xmed.png
+ :height: 16px
+
+.. |ICO_DATASOURCE_EXPAND| image:: images/ico_datasource_expandfield.png
+ :height: 16px
+
+.. |ICO_DATASOURCE_VIEW| image:: images/ico_datasource_view.png
+ :height: 16px
+
+Au démarrage, le module de manipulation de champs, identifié par
+l'icône |ICO_XMED|, présente une interface vierge:
+
+.. image:: images/xmed-gui-start.png
+ :align: center
+ :width: 800px
+
+La première étape consiste à ajouter une ou plusieurs source de
+données med dans le "dataspace". Pour cela, on clique sur l'icône "Add
+datasource" |ICO_DATASOURCE_ADD| qui propose de sélectionner un
+fichier med:
+
+.. image:: images/xmed-gui-datasource-selectfile.png
+ :align: center
+ :width: 800px
+
+L'opération ajoute une nouvelle entrée (datasource) dans l'espace de
+données (dataspace). Le contenu peut être exploré en parcourant
+l'arborescence. La figure ci-dessous (image de gauche) montre le
+résultat du chargement du fichier ``timeseries.med`` contenant un
+maillage de nom ``Grid_80x80`` sur lequel est défini un champ au noeud
+de nom ``Pulse``. Par défaut, la composition du champs (en terme de
+pas de temps et de composantes) n'est pas affichée pour éviter
+l'encombrement visuel de l'arbre. On doit faire la demande explicite
+au moyen de la commande "Expand field timeseries"
+|ICO_DATASOURCE_EXPAND| disponible dans le menu contextuel associé aux
+champs. Le résultat est affiché sur l'image centrale. La liste des
+itérations du champ ``Pulse`` peut être consultée.
+
+.. |IMG_DATASOURCE_EXPLORE| image:: images/xmed-gui-datasource-explore-zoom.png
+ :height: 340px
+.. |IMG_DATASOURCE_MENUCON| image:: images/xmed-gui-datasource-menucontextuel-zoom.png
+ :height: 340px
+.. |IMG_DATASOURCE_EXPANDF| image:: images/xmed-gui-datasource-expand-zoom.png
+ :height: 340px
+
++--------------------------+--------------------------+--------------------------+
+| |IMG_DATASOURCE_EXPLORE| | |IMG_DATASOURCE_MENUCON| | |IMG_DATASOURCE_EXPANDF| |
++--------------------------+--------------------------+--------------------------+
+
+.. note:: En toute rigueur, le concept de *champ* dans le modèle MED
+ désigne une itération donnée. Un ensemble d'itérations est désigné
+ par le terme *série temporelle de champs*. Par abus de langage, et
+ s'il n'y a pas ambiguité, on utilisera le nom du champ pour
+ désigner à la fois le champs proprement dit ou la série temporelle
+ à laquelle il appartient.
+
+Enfin, il est possible au niveau du dataspace de visualiser la forme
+générale du champ au moyen d'une carte scalaire affichée dans le
+viewer de SALOME. Pour cela, on sélectionne le pas de temps à
+visualiser et on utilise la commande "Visualize" |ICO_DATASOURCE_VIEW|
+disponible dans le menu contextuel associé:
+
+.. image:: images/xmed-gui-datasource-visualize-zoom.png
+ :align: center
+ :width: 800px
+
+.. note:: Cette représentation graphique a pour objectif le contrôle
+ visuel rapide. Aussi, les fonctions du module VISU sont employées
+ par défaut, mais il est possible de faire l'affichage des cartes
+ scalaires au moyen du module PARAVIS (choix de préférence non
+ implémenté pour le moment, mais techniquement réalisable).
+
+Exemple 2: Rassembler des champs issus de différentes sources
+-------------------------------------------------------------
+
+.. note:: Cet exemple présente les fonctions:
+
+ * fonction "Use in workspace"
+ * fonction "Save"
+
+.. |ICO_DATASOURCE_USE| image:: images/ico_datasource_use.png
+ :height: 16px
+.. |ICO_WORKSPACE_SAVE| image:: images/ico_workspace_save.png
+ :height: 16px
+
+L'objectif est de récupérer des données issues de différents fichiers
+med, puis de les rassembler dans un même fichier en sortie.
+
+On commence par ajouter les sources de données med dans l'espace de
+données (dataspace). Dans l'exemple ci-dessous, l'espace de données
+contient deux sources de nom ``parametric_01.med`` et
+``smallmesh_varfiled.med``. La première source contient le maillage
+``Grid_80x80_01`` sur lequel est défini le champ ``StiffExp_01``. La
+deuxième source contient le maillage ``My2DMesh`` sur lequel sont
+définis deux champs de noms respectifs ``testfield1`` et
+``testfield2``:
+
+.. image:: images/xmed-userguide-example2-datasource.png
+ :align: center
+ :width: 800px
+
+Pour l'exemple, on souhaite rassembler les champs ``StiffExp_01`` et
+``testfield2`` dans un fichier de nom ``result.med``. La procédure
+consiste à importer les deux champs dans l'espace de travail
+(workspace), puis à sauvegarder l'espace de travail. Pour cela, on
+sélectionne les champs et on utilise la commande "Use in workspace"
+|ICO_DATASOURCE_USE| disponible dans le menu contextuel. Les deux
+champs sélectionnés apparaissent dans l'arborescence de l'espace de
+travail:
+
+.. image:: images/xmed-userguide-example2-workspace.png
+ :align: center
+ :width: 800px
+
+La sauvegarde de l'espace de travail est faite au moyen de la commande
+"Save workspace" |ICO_WORKSPACE_SAVE| disponible dans la barre
+d'outils du module. Une fenêtre de dialogue invite l'utilisateur à
+spécifier le nom du fichier de sauvegarde:
+
+.. image:: images/xmed-userguide-example2-workspace-save.png
+ :align: center
+ :width: 800px
+
+Ce fichier ``result.med`` peut ensuite être rechargé dans le module
+XMED (ou les modules VISU ou PARAVIS) pour vérifier la présence des
+champs sauvegardés.
+
+.. BUG: plantage à l'utilsation dans XMED d'un fichier rechargé
+.. (invalid mesh on field)
+
+.. _xmed.userguide.exemple3:
+
+Exemple 3: Appliquer une opération mathématique sur des champs
+--------------------------------------------------------------
+
+.. note:: Cet exemple présente les fonctions:
+
+ * exécution d'opérations mathématiques dans la console TUI
+ * fonction "put" pour référencer un champ de travail dans la liste
+ des champs persistant.
+ * fonction "Visualize" depuis le TUI.
+
+L'usage le plus courant du module de manipulation de champs est
+d'exécuter des opérations mathématiques dont les opérandes sont des
+champs ou des composantes de ces champs.
+
+On se place dans une situation où les sources de données sont définies
+dans le "dataspace" (dans l'exemple ci-après, une série temporelle de
+nom ``Pulse``, contenant 10 pas de temps, définis sur un maillage de
+nom ``Grid_80x80``, le tout issu du datasource ``timeseries.med``).
+
+Comme vu précedemment, pour manoeuvrer un champ dans l'espace de
+travail, on sélectionne ce champ, puis on exécute la commande "Use in
+workspace" |ICO_DATASOURCE_USE| du menu contextuel. Dans le cas
+présent, un seul champ est sélectionné (contre deux dans l'exemple
+précédent) et la commande ouvre alors une fenêtre de dialogue qui
+permet de préciser les données sur lesquelles on souhaite
+effectivement travailler et comment on veut les manoeuvrer:
+
+.. image:: images/xmed-gui-datasource-useinworkspace-alias.png
+ :align: center
+ :width: 800px
+
+.. note:: En l'état actuel du développement, l'interface propose
+ uniquement de définir le nom de la variable sous laquelle doit être
+ manoeuvré le champ dans la console de travail (TUI). Dans une
+ version ultérieure, il est prévue de pouvoir préciser la ou les
+ composante du champs à utiliser et un groupe de maille pour définir
+ une restriction géométrique. Inversement, il sera également
+ possible de choisir une série temporelle complète pour faire des
+ opérations globales sur l'ensemble des pas de temps.
+
+Aprés validation, le champ est placé dans l'arborescence du
+"workspace" et une variable de nom ``<alias>`` est créée
+automatiquement dans la console de travail pour désigner le
+champ. Dans cet exemple, ``<alias>`` vaut ``f3``, positionné ainsi par
+l'utilisateur pour rappeler que la variable correspond au pas de temps
+n°3:
+
+.. image:: images/xmed-gui-workspace.png
+ :align: center
+ :width: 800px
+
+La manipulation peut commencer. Dans l'exemple ci-dessous, on crée le
+champ ``r`` comme le résultat d'une transformation afine du champ
+``f3`` (multiplication du champ par le facteur 2.7 auquel on ajoute
+l'offset 5.2)::
+
+ >>> r=2.7*f3+5.2
+
+On peut poursuivre la manipulation du champs avec une variété
+d'opérations qui sont détaillées dans les spécifications du module
+(cf. :ref:`Spécification des opérations<xmed-specifications>`):
+
+ >>> r=f3/1000 # les valeurs de r sont celles du champ f3 réduites d'un facteur 1000
+ >>> r=1/f3 # les valeurs de r sont les inverses des valeurs de f3
+ >>> r=f3*f3 # les valeurs de r sont celles du champ f3 élevées au carré
+ >>> r=pow(f3,2) # même résultat
+ >>> r=abs(f3) # valeur absolue du champ f3
+ >>> ...
+
+Les opérations peuvent utiliser plusieurs opérandes de type champs. Si
+``f4`` désigne le pas de temps n°4 du champ ``Pulse``, alors on peut
+calculer toute combinaison algébrique des deux champs::
+
+ >>> r=f3+f4
+ >>> r=f3-f4
+ >>> r=f3/f4
+ >>> r=f3*f4
+
+Avec au besoin l'utilisation de variables scalaires::
+
+ >>> r=4*f3-f4/1000
+ >>> ...
+
+Dans ces exemples, la variable ``r`` désigne un champ de travail qui
+contient le résultat de l'opération. Par défaut, ce champ de travail
+n'est pas référencé dans l'arborescence du workspace. Si on souhaite
+tout de même le référencer, par exemple pour qu'il soit pris en compte
+dans la sauvegarde, alors on tape la commande::
+
+ >>> put(r)
+
+La fonction ``put`` a pour but de marquer le champ en argument comme
+persistent, puis de le ranger dans l'arborescence du "workspace" afin
+qu'il soit visible et sélectionnable. En effet, parmi tous les champs
+qui pourront être créés dans la console pendant la session de travail,
+tous n'ont pas besoin d'être sauvegardés. Certains sont même des
+variables temporaires qui servent à la construction des champs
+résultats finaux. C'est pourquoi, seuls les champs rangés dans
+l'arborescence du workspace sont enregistrés lors de la demande de
+sauvegarde du workspace.
+
+Les variables définies dans la console ont d'autres utilités. Tout
+d'abord, elles permettent d'imprimer les informations concernant le
+champ manoeuvré. Pour cela, on tape simplement le nom de la variable
+puis retour::
+
+ >>> f3
+ field name (id) = Pulse (3)
+ mesh name (id) = Grid_80x80 (0)
+ discretization = ON_NODES
+ (iter, order) = (3,-1)
+ data source = file:///home/gboulant/development/projets/salome/MEDOP/XMED/xmed/resources/datafiles/timeseries.med
+
+Elle peut également être utilisée comme argument des commandes de
+gestion disponibles dans l'interface textuelle (dont la liste
+détaillée est décrite à la section :ref:`Documentation de l'interface
+textuelle<xmed.userguide.tui>`). Par exemple, la fonction ``view``
+permet d'afficher la carte scalaire du champ dans le viewer::
+
+ >>> view(f3)
+
+Donne:
+
+.. image:: images/xmed-gui-workspace-view.png
+ :align: center
+ :width: 800px
+
+.. note:: On remarquera ici qu'il est facile de comparer deux pas de
+ temps d'un champ, par exemple en calculant la différence ``f3-f4``,
+ puis en affichant un aperçu de la carte scalaire résultat au moyen
+ de la fonction ``view``::
+
+ >>> view(f3-f4)
+
+On peut enfin tout simplement afficher les données du champs par la
+commande ``print``::
+
+ >>> print f3
+ Data content :
+ Tuple #0 : -0.6
+ Tuple #1 : -0.1
+ Tuple #2 : 0.4
+ Tuple #3 : -0.1
+ Tuple #4 : 0.4
+ ...
+ Tuple #6556 : 3.5
+ Tuple #6557 : 3.3
+ Tuple #6558 : 1.5
+ Tuple #6559 : 0.3
+ Tuple #6560 : 0.2
+
+Il est important de noter que les opérations entre champs ne peuvent
+être faites qu'entre champs définis sur le même maillage. Il s'agit là
+d'une spécification du modèle MED qui interdit d'envisager les
+opérations entre champs définis sur des maillages géométriquement
+différents. Techniquement, cela se traduit par l'obligation pour les
+objets informatique *champs* de partager le même objet informatique
+*maillage*.
+
+Dans l'hypothèse où on souhaite utiliser des champs définis sur des
+maillages différents, par exemple pour manoeuvrer les valeurs des
+champs à l'interface de deux maillages partageant une zone géométrique
+2D, il faut d'abord ramener tous les champs sur le même maillage de
+surface par une opération de projection.
+
+.. note:: Même si ceci est techniquement possible avec la bibliothèque
+ MEDCoupling, cet type d'opération de projection n'est pas encore
+ disponible dans le module de manipulation de champs (prévu en
+ 2012).
+
+Un autre besoin plus classique est l'utilisation de champs définis sur
+des maillages géométriquement identiques, mais techniquement
+différents, par exemple lorsqu'ils sont chargés de fichiers med
+différents. Pour traiter ce cas de figure, la bibliothèque MEDCoupling
+prévoit une fonction de "Changement du maillage support", dont
+l'utilisation au niveau du module de manipulation de champs est
+illustrée dans :ref:`l'exemple 4<xmed.userguide.exemple4>` ci-après.
+
+.. _xmed.userguide.exemple4:
+
+Exemple 4: Comparer des champs issues de différentes sources
+------------------------------------------------------------
+
+.. note:: Cet exemple présente les fonctions:
+
+ * Changement du maillage support "change underlying mesh"
+
+On se place ici dans le cas de figure où des champs ont été produits
+sur le même maillage, au sens géométrique, mais enregistrés dans des
+fichiers med différents. C'est le cas par exemple d'une étude
+paramétrique où plusieurs calculs sont effectués avec des variantes
+sur certains paramètres du modèle simulé, chaque calcul produisant un
+fichier med.
+
+Soit ``parametric_01.med`` et ``parametric_02.med`` deux fichiers med
+contenant les champs que l'on souhaite comparer, par exemple en
+calculant la différence des valeurs et en visualisant le résultat.
+
+Aprés le chargement des sources de données dans le module XMED,
+l'utilisateur se trouve en présence de deux maillages, au sens
+technique du terme cette fois-ci, c'est-à-dire que les champs sont
+associées à des objets informatiques maillage différents, bien que
+géométriquement identiques.
+
+Or, les fonctions de manipulation de champs ne permettent pas les
+opérations sur des champs dont les maillages supports sont différents
+(voir la remarque à la fin de :ref:`l'exemple
+3<xmed.userguide.exemple3>`).
+
+Pour résoudre ce cas de figure, le module de manipulation de champs
+met à disposition la fonction "Change underlying mesh" qui permet de
+remplacer le maillage support d'un champ par un autre à partir du
+moment où les deux maillages sont géométriquement identiques,
+c'est-à-dire que les noeuds ont les mêmes coordonnées spatiales.
+
+.. |ICO_DATASOURCE_CHG| image:: images/ico_datasource_changeUnderlyingMesh.png
+ :height: 16px
+
+Dans l'exemple proposé, l'utilisateur sélectionne le premier pas de
+temps du champ ``StiffExp_01`` du "datasource" ``parametric_01.med``,
+puis l'importe dans l'espace de travail au moyen de la commande "Use
+in workspace" |ICO_DATASOURCE_USE|. Il sélectionne ensuite le premier
+pas de temps du champs ``StiffExp_02`` du "datasource"
+``parametric_02.med``, mais l'importe dans l'espace de travail au
+moyen de la commande "Change underlying mesh" |ICO_DATASOURCE_CHG|. La
+fenêtre de dialogue ci-dessous s'affiche et invite l'utilisateur à
+choisir le nouveau maillage support par sélection dans l'arborescence
+du "dataspace":
+
+.. image:: images/xmed-gui-datasource-changeUnderlyingMesh.png
+ :align: center
+
+Dans cet exemple, on sélectionne le maillage ``Grid_80x80_01`` support
+du champ ``StiffExp_01``, avec lequel on souhaite faire la
+comparaison. Après validation, l'arborescence du workspace contient le
+champ ``StiffExp_02`` défini sur le maillage ``Grid_80x80_01``:
+
+.. image:: images/xmed-gui-datasource-changeUnderlyingMesh_wsview.png
+ :align: center
+
+.. note:: La fonction "Change underlying mesh" ne modifie pas le champ
+ sélectionné dans le "dataspace" (principe de base de fonctionnement
+ du dataspace), mais crée une copie du champ dans l'espace de travail
+ pour ensuite remplacer le maillage support. D'où le nom par défaut
+ pour le champ ``dup(<nom du champ sélectionné>)`` (dup pour
+ "duplicate").
+
+Il reste à associer une variable à ce champ pour le manipuler dans la
+console. Ceci peut être fait au moyen de la commande "Use in console",
+disponible dans le menu contextuel du workspace.
+
+En définitif, si ``f1`` désigne le champ issu du datasource
+``parametric_01.med`` et ``f2`` le champ issu du datasource
+``parametric_02.med`` par la procédure décrite ci-dessus, alors la
+comparaison des deux grandeurs peut être faite comme pour le cas de
+:ref:`l'exemple 3<xmed.userguide.exemple3>`::
+
+ >>> r=f1-f2
+ >>> view(r)
+
+.. note:: En remarque générale sur cet exemple, il convient de noter
+ les points suivants:
+
+ * l'égalité géométrique de deux maillages est établie à une marge
+ d'erreur prés qu'il est possible de définir techniquement, mais
+ qui n'est pas ajustable au niveau de l'interface du module de
+ manipulation de champs. Elle est fixée à une valeur standard qui
+ permet de traiter la plupart des cas utilisateur. On verra à
+ l'usage s'il est nécessaire de remonter ce paramètre au niveau de
+ l'interface.
+ * L'utilisateur doit faire la démande explicite de changer le
+ maillage support d'un champ, en prévision de la comparaison de
+ champs issus de datasource différentes. Il s'agit là d'un choix
+ fonctionnel délibéré pour que l'utilisateur garde trace des
+ modifications faites sur les données (pas de modification
+ automatiques à l'insu de l'utilisateur, même sous prétexte
+ d'amélioration de l'ergonomie).
+
+
+Exemple 5: Créer un champ sur un domaine spatial
+------------------------------------------------
+
+.. note:: Cet exemple présente les fonctions:
+
+ * initialisation par une fonction de la position spatiale
+ * initialisation sur un groupe de maille
+
+Le domaine géométrique de définition du champs à créer est spécifié
+ici par la donnée d'un groupe de mailles. Ce cas d'usage est
+typiquement prévu pour produire les conditions de chargement initial
+d'une structure, par exemple en définissant un champ sur une surface
+de la géométrie, identifiée par un nom de groupe de mailles.
+
+.. warning:: DEVELOPPEMENT EN COURS
+
+Exemple 6: Extraire une partie d'un champ
+-----------------------------------------
+
+.. note:: Cet exemple présente les fonctions:
+
+ * extraire une composante (ou un sous-ensemble des composantes)
+ * extraire un domaine géométrique (valeurs sur un groupe de maille)
+ * extraire un ou plusieurs pas de temps.
+
+.. warning:: DEVELOPPEMENT EN COURS
+
+ On doit illustrer ici les fonctions de restriction, qui
+ permettraient de récupérer certaines composantes uniquement. Le
+ principe est qu'on crée un nouveau champ qui est une restriction du
+ champ argument à une liste de composantes à spécifier (utiliser la
+ fonction __call__ des fieldproxy).
+
+Pour l'extraction des pas de temps, on peut se ramener au cas de
+l'exemple 2 avec une seule source de donnée.
+
+Exemple 7: Créer un champ à partir d'une image to[mp]ographique
+---------------------------------------------------------------
+
+.. note:: Cet exemple présente les fonctions:
+
+ * Création d'un champ sans datasource (ni maillage, ni champs), à
+ partir d'un fichier image
+
+En tomographie ou en topographie, les appareils de mesure produisent
+des images qui représentent une grandeur physique en niveaux de gris
+sur un plan de coupe donné. L'image ci-dessous représente par exemple
+une vue interne du corps humain faite par IRM:
+
+.. image:: images/xmed-irm.png
+ :align: center
+ :width: 600px
+
+Cette image est un ensemble de pixels organisés sur une grille
+cartesienne. Elle peut donc être modélisée sous la forme d'un champ
+scalaire dont les valeurs sont définies aux cellules d'un maillage
+réglés de même taille que l'image (en nombre de pixels):
+
+.. image:: images/xmed-irm-field.png
+ :align: center
+ :width: 600px
+
+Le module de manipulation de champ fournit un utilitaire appelé
+``image2med.py`` qui permet d'appliquer ce principe à la conversion
+d'un fichier image en fichier med contenant la représentation de
+l'image sous forme d'un champ scalaire (seul le niveau de gris est
+conservé)::
+
+ $ <xmed_root_dir>/bin/salome/xmed/image2med.py -i myimage.png -m myfield.med
+
+.. |ICO_IMAGESOURCE| image:: images/ico_imagesource.png
+ :height: 16px
+
+Cette opération de conversion peut être faite automatiquement dans
+l'interface graphique du module au moyen de la commande "Add Image
+Source" |ICO_IMAGESOURCE| disponible dans la barre d'outils. Cette
+commande ouvre la fenêtre suivante pour inviter l'utilisateur à
+choisir un fichier image:
+
+.. image:: images/medop_image2med_dialog.png
+ :align: center
+
+Le nom du fichier med résultat est proposé par défaut (changement de
+l'extention en ``*.med``) mais il peut être modifié. Enfin, on peut
+demander le chargement automatique du fichier med produit pour ajout
+dans l'espace de donnée. Les champs peuvent alors être manipulés comme
+dans les cas d'utilisation standard.
+
+Par exemple, l'image ci-dessous affiche le résultat de la différence
+entre deux images, ajoutée à l'image de référence: si i1 et i2
+désignent les champs créés à partir des deux images, on représente ``r
+= i1 + 5*(i2-i1)`` où le facteur 5 est arbitraire et sert à amplifier
+la zone d'intérêt (en haut de l'oeil gauche):
+
+.. image:: images/xmed-irm-diff.png
+ :align: center
+ :width: 600px
+
+L'exemple ci-dessous est le résultat du chargement d'une image
+tomographique issue du projet MAP (Charles Toulemonde,
+EDF/R&D/MMC). L'image tomographique:
+
+.. image:: images/champ_altitude_MAP.png
+ :align: center
+ :width: 600px
+
+Le résultat du chargement:
+
+.. image:: images/medop_image2med_tomographie.png
+ :align: center
+ :width: 800px
+
+Exemple 8: Continuer l'analyse dans PARAVIS
+-------------------------------------------
+
+.. note:: Cet exemple présente les fonctions:
+
+ * Export de champs vers le module PARAVIS.
+
+Les possibilités de représentation graphique des champs fournies par
+le module MED ont pour seul objectif le contrôle visuel rapide. Par
+défaut, le viewer de VISU est employé.
+
+Pour une analyse plus détaillées des champs, il est nécessaire de
+poursuivre le travail dans PARAVIS. Le module de manipulation de
+champs offre une fonction qui simplifie ce passage, en faisant le
+chargement automatique dans PARAVIS et en proposant une visualisation
+par défaut (carte de champs scalaire).
+
+Pour cela, il faut sélectionner dans l'espace de travail les champs à
+exporter, puis déclencher la fonction d'export depuis le menu
+contextuel associé:
+
+.. image:: images/medop_exportparavis.png
+ :align: center
+
+Les champs sélectionnés sont regroupés dans une entrée MED du
+navigateur PARAVIS, et le premier champ est affiché sous forme de
+carte de champ:
+
+.. image:: images/medop_exportparavis_result.png
+ :align: center
+ :width: 800px
+
+.. note:: La fonction d'export est une fonction de confort. La même
+ opération peut être faite manuellement en procédant d'abord à
+ l'enregistrement des champs sous forme de fichier MED, puis en
+ chargeant le fichier généré dans le module PARAVIS pour
+ visualisation.
+
+.. _xmed.userguide.tui:
+
+Utilisation de l'interface textuelle du moduel XMED (TUI)
+=========================================================
+
+Toutes les opérations menées au moyen de l'interface graphique peuvent
+être réalisées (avec plus ou moins de facilité) avec l'interface
+textuelle. Le module de manipulation de champs peut même être utilisé
+exclusivement en mode texte. Pour cela, on lance la commande::
+
+ $ <path/to/appli>/medop.sh
+
+Cette commande ouvre une console de commandes ``medop>``. Un fichier
+med peut être chargé et travaillé, par exemple pour créer des champs à
+partir des données du fichier.
+
+Que l'on soit en mode texte pur ou en mode graphique, un séquence de
+travail type dans la console peut ressembler au jeu d'instructions
+suivantes::
+
+ >>> load("/path/to/mydata.med")
+ >>> la
+ id=0 name = testfield1
+ id=1 name = testfield2
+ >>> f1=get(0)
+ >>> f2=get(1)
+ >>> ls
+ f1 (id=0, name=testfield1)
+ f2 (id=1, name=testfield2)
+ >>> r=f1+f2
+ >>> ls
+ f1 (id=0, name=testfield1)
+ f2 (id=1, name=testfield2)
+ r (id=2, name=testfield1+testfield2)
+ >>> r.update(name="toto")
+ >>> ls
+ f1 (id=0, name=testfield1)
+ f2 (id=1, name=testfield2)
+ r (id=2, name=toto)
+ >>> put(r)
+ >>> save("result.med")
+
+Les commandes principales sont:
+
+* ``load``: charge un fichier med dans la base de données (utile
+ uniquement en mode texte pur)::
+
+ >>> load("/path/to/datafile.med")
+
+* ``la``: affiche la liste de tous les champs chargés en base de données ("list all")
+* ``get``: définit un champ dans l'espace de travail à partir de son
+ identifiant (utile plutôt en mode texte pur car l'interface
+ graphique permet de faire cette opération par sélection d'un champ
+ dans le dataspace)::
+
+ >>> f=get(fieldId)
+
+* ``ls``: affiche la liste des champs présent dans l'espace de travail ("list")
+* ``put``: met un champ en référence dans l'*espace de gestion*::
+
+ >>> put(f)
+
+* ``save``: sauvegarde tous les champs référencés dans l'espace de
+ gestion dans un fichier med::
+
+ >>> save("/path/to/resultfile.med")
+
+.. note:: On peut faire à ce stade plusieurs remarques:
+
+ * la commande ``load`` charge uniquement les méta-informations
+ décrivant les maillage et les champs (noms, type de
+ discrétisation, liste des pas de temps). Les maillages et les
+ valeurs physiques des champs sont chargées ultérieurement (et
+ automatiquement) dés lors qu'elles sont requises par une
+ opération. Dans tous les cas, les données med (méta-informations
+ et valeurs) sont physiquement stockées au niveau de l'espace
+ *base de données*.
+ * la commande ``get`` définit en réalité un *manipulateur de champ*
+ dans l'espace de travail, c'est-à-dire une variable qui fait la
+ liaison avec le champ physique hébergé dans la base de
+ données. Les données physiques ne circulent jamais entre les
+ espaces, mais restent centralisées au niveau de la base de
+ données.
+
+Les commandes TUI suivantes nécessitent de travailler dans
+l'environnement graphique:
+
+* ``visu``: afficher une carte de champ pour contrôle visuel rapide
+ (pas de paramettrage possible)
+
+ >>> view(f)
+
+
--- /dev/null
+.. meta::
+ :keywords: maillage, champ, manipulation
+ :author: Guillaume Boulant
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ANNEXE: Note de travail concernant le chantier XMED 2010
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+.. contents:: Sommaire
+ :local:
+ :backlinks: none
+
+Principes directeurs du développement
+=====================================
+
+En matière de développement:
+
+* On ne cherche pas d'emblée à s'inscrire dans la fabrication d'un
+ module SALOME diffusable dans la version d'exploitation 2010 (SALOME
+ 6). La raison est double: (i) on souhaite au moins pour 2010 ne pas
+ devoir tenir compte des contraintes de temps SALOME et (ii) le
+ produit envisagé fin 2010 est une maquette qui cherche à éprouver
+ l'ergonomie générale d'utilisation et en aucun cas on ne peut
+ garantir la réalisation d'un module SALOME compatible avec les
+ exigences de mise en exploitation.
+* On ne cherche pas d'emblée à capturer tous les cas d'application,
+ mais à concevoir un développement qui acceptera les extensions de
+ périmètres dans des conditions raisonnables. Aussi, les
+ fonctionnalités développées seront celles qui sont nécessaires à la
+ réalisation des cas d'application de référence;
+
+En matière d'ergonomie:
+
+* L'interface utilisateur de référence (appelé espace de travail dans
+ le volet de spécifications fonctionnelles) est l'interpréteur
+ python. Les fonctionnalités doivent être pensées pour un usage
+ adapté à une interface textuelle (TUI) de ce type.
+* La création d'une interface graphique (GUI) peut être envisagée en
+ complément et comme un moyen de manipuler graphiquement les
+ fonctionnalités développées pour l'interface textuelle et pour aider
+ la préparation des variables dans l'interface python.
+* Le modèle d'un processus de manipulation de champs est:
+
+ - Préparation du jeu de variables U, V, ... représentant les champs
+ à manipuler. C'est à ce stade que l'on résoud la question de
+ sélection des données (dans un champ publié dans l'arbre d'étude,
+ par un module de calcul ou par chargement d'un fichier med)
+ - Utilisation des variables avec une sémantique la plus proche
+ possible du modèle conceptuel et des spécifications
+ fonctionnelles;
+ - Création des variables qui représentent les résultats des
+ fonctions de manipulation;
+ - Persistence (fichier med), visualisation (SALOME) ou export (vers
+ une structure qui peut être directement utilisable en numpy)
+
+Sur le plan technique:
+
+* On souhaite spécifier clairement le conteneur SALOME des fonctions
+ de manipulation de champs. Pour discussion:
+
+ - Il apparaît que les modules SALOME MED et VISU contiennent déjà
+ des fonctions qui peuvent faire partie des fonctions de
+ manipulations de champs (en particulier pour l'exploration des
+ structures MED, leur visualisation et la sélection des données à
+ manipuler).
+ - Dans la mesure où le module MED n'est pas utilisé à ce jour (en
+ tout cas pas sous sa forme de module SALOME) et compte-tenu du
+ caractère obsolescent du module VISU (amené à être remplacé sur le
+ plan fonctionnel par le module PARAVIS), on pourrait examiner la
+ création d'un module dédié à la manipulation des maillages et des
+ champs par l'agrégation technique au sein d'un même module des
+ fonctions des modules MED et VISU.
+
+Au moins dans un premier temps, on se donne les limites suivantes:
+
+* Une opération ne peut pas combiner des pas de temps différents. Dans
+ l'hypothèse où cette limite venait à être levée, on doit spécifier
+ le pas de temps de la donnée résultat;
+* Le domaine d'application d'une opération pourra être défini
+ exclusivement par la donnée d'un maillage ou un groupe d'éléments du
+ maillage;
+* On ne traite pas le cas des champs qui prennent leurs valeurs aux
+ points de gauss ou aux noeuds par élément. Une particularité de ces
+ types de support est que le repérage de la position implique deux
+ indices (par exemple l'indice de la maille, puis l'indice du point
+ de gauss).
+
+Eléments de conception
+======================
+
+Plan général
+------------
+
+On peut par exemple imaginer une maquette du genre:
+
+* En C++ dans MEDGUI, charger un fichier med et donner une vue de la
+ structure des maillages et des champs dans l'arbre d'étude.
+* Sélectionner un élément (par exemple un pas de temps d'un champ) et
+ le menu contextuel permet d'exporter ce champ dans la console python
+ pour manipulation. Pour cela, s'inspirer de la fonction
+ ``XCADGUI::OnLoadScript()`` du XCADGUI pour manoeuvrer un objet
+ PythonConsole.
+* L'élément est marqué comme ayant été exporté, on peut imaginer une
+ récupération ultérieure.
+* Exporter un deuxième champ cohérent avec le premier (même pas de
+ temps et défini sur le même maillage avec le même support, on
+ s'arrange pour).
+* Dans la console python, faire les opérations sur les champs
+* Publication du champ résultat dans l'arbre d'étude pour sauvegarde
+ ultérieure. C'est a priori le gros morceau qui consiste à faire un
+ objet CORBA MED à partir d'un objet MED standard, en plus défini
+ dans la console python (sous forme d'objet python).
+
+Quand ce premier cas d'utilisation est au point, on peut envisager de
+le compléter par les opérations suivantes
+
+* exporter le résultat med dans un fichier
+* visualiser les champs produits
+
+Plan de développement:
+
+* Faire une maquette en MEDMEM pur d'abord, car quelque soit le choix
+ d'architecture, l'opération physique se déroulera en définitif au
+ niveau de MEDMEM pur.
+* Prévoir une implémentation des opérations sous forme de fonctions
+ informatiques, même les opérations algébriques (+,-,*,/). Pour ces
+ dernières et dans certaines conditions (quand on manipule
+ directement les strutures MEDMEM et non pas les objets CORBA),
+ l'utilisation des formes A+B, A-B, ... peuvent être rendues
+ possibles. Dans ce cas, voir la possibilité de combiner plusieurs
+ opérations algébriques sur une seule ligne: A+B-C*0.3.
+* On peut charger la structure MED sous forme d'objet CORBA publiable
+ dans l'étude, de sorte d'avoir accés aux méta-données et pouvoir par
+ exemple sélectionner les champs d'intérêt. De cet objet CORBA, on ne
+ récupère que les informations nécessaires au chargement d'un champs:
+ le nom du champs, le nom de son maillage associé, les identifiants
+ du pas de temps, au besoin une structure Field non chargée (par
+ exemple pour récupérer plus facilement le maillage).
+* Un mécanisme (à développer à partir du PyConsole par exemple)
+ pourrait alors permettre le chargement des champs sélectionnés dans
+ la console python et sous un nom facile à manoeuvrer. Prendre
+ inspiration sur XCADGUI::LoadIntoPythonConsole().
+* A priori, les données sont physiquement chargée dans le GUI. Au
+ besoin, il semble possible (cf. MED_i::init) de fabriquer une objet
+ CORBA field à partir d'un field standard (à tester).
+
+Une autre idée est de récupérer le pointeur CORBA MED dans la console
+python et de tirer les données à partir de là. Ajouter une couche de
+wrapping python pur pour gérer les cas de simplification (surcharge
+des opérations arithmétiques par exemple).
+
+Besoins complémentaires:
+
+* L'interpréteur doit contenir des éléments d'aide (par exemple un
+ help qui liste les opérations possibles sur les champs chargés)
+* prévoir quelques fonctions de visu et de persistence. Cela commence
+ probablement par des fonctions de publication dans l'étude des
+ champs créés par les opérations de manipulation. Les champs sont
+ physiquement ajouté automatiquement à la structure med par le MedOp
+ mais il n'est pas obligatoirement publié => fournir un moyen de
+ publication.
+
+Limitations actuelles (liées à la conception de MEDMEM):
+
+* les champs doivent être gérés par la même structure MED car ils
+ doivent partager le même support.
+* les opérations possibles dans MEDMEM sont entre champs pris sur un
+ pas de temps (Q: les pas de temps peuvent-ils être différents).
+
+
+Développements
+--------------
+
+Développement de classes proxy:
+
+* FieldProxy, FieldTimeSeriesProxy
+* Attention pour les éries temporelles, le SUPPORT med peut être
+ différent en chaque pas de temps (par exemple en cas d'extension
+ spatiale du champ au cours du temps).
+
+MEDMEM_MedDataManager:
+
+* FIX: test de l'implémentation C++ au travers de la fonction test() du
+ MedOperator ==> OK. Quand on fait la même opération depuis python
+ via l'interface SWIG ==> au deuxième appel de getFieldDouble, le
+ destructeur du champ semble être appelé. Pb de gestion des pointeurs?
+
+
+Evolutions à prévoir
+====================
+
+Concernant MEDMEM:
+
+* FIX: SALOME_MED::MED::getField devrait pouvoir être appelée
+ plusieurs fois de suite puisqu'on recycle la référence si elle est
+ déjà chargée.
+* IMP: MEDMEM::MED faire une gestion des chargements des champs (par
+ exemple avec un getField qui renvoie le champ s'il est déjà chargé
+ ou le charge et le renvoie sinon).
+* IMP: Récupérer le nom du fichier med à partir de l'objet MED, en
+ passant a priori par le driver associé. Plusieurs driver peuvent
+ être associés à une structure MED car les données peuvent être
+ chargées en plusieurs fois et de plusieurs fichiers. Il faut donc
+ étendre la structure MED pour avoir accés à la liste des driver puis
+ de cette liste déduire les noms des fichiers.
+* IMP: Opérations combinant des champs sur des support différents ne
+ peuvent pas être faites par l'API (une exception est levée en cas de
+ supports incompatibles), mais on peut imaginer le faire en
+ manoeuvrant les tableaux de données directement.
+* INF: faire le point sur les fonctions utilitaires autour de MEDMEM
+ et de son interface SWIG (ex: dumpMEDMEM.py, med_opfield_test.py).
+* IMP: dans MEDMEM::MED et SALOME_MED::MED, pouvoir enlever un champ
+ préalablement ajouté: une fonction removeField en complément de
+ addField.
+
+Concernant l'interface SALOME_MED:
+
+* IMP: Fonctions algébriques, qui seront implémentées au niveau de la
+ structure MED et requêtées au niveau des classes proxy en spécifiant
+ les identifiants des champs impliqués et les paramétres requis (pas
+ de temps en particulier).
+
+Concernant le module MED:
+
+* IMP: pourvoir exporter la structure med dans un fichier med (la
+ structure ayant pu être enrichie par la publication de champs créés
+ par les operations de champs.
+
+
+Historique des travaux
+======================
+
+20100726 : mise au point du schéma de conception
+------------------------------------------------
+
+Choix entre MEDMEM et MEDCoupling: on reste sur MEDMEM pour plusieurs
+raisons:
+
+* MED Coupling ne peut pas gérer des mailles de dimensions différentes
+ dans un même modèle (choix faits dans un soucis de performance dans
+ l'accès à une structure de donnée compact). On peut contourner le
+ problème en définissant deux champs pour traiter chacun des type de
+ mailles.
+* Un champ repose sur un maillage complet (pas de notion de profil,
+ mais cela peut être émulé en créant deux maillages)
+* Le concept de point de gauss n'existe pas (pas implémenté)
+
+TODO:
+
+* Idéalement, il conviendrait de faire un état des lieux du module
+ MED, en particulier des éléments MEDMEM (le coeur), les interfaces
+ CORBA associées (MED.idl implémenté dans le package source
+ MEDMEM_I), l'engine (composant SALOME d'interface MED_Gen.idl et
+ implémenté dans le package source MED) et le GUI (MedGUI.cxx
+ implémenté dans le package source MEDGUI).
+
+* Ergonomie TUI et modèle CORBA associé:
+
+ 1. Charger un objet medmem (puis les objets métier mesh et field)
+ sur un domaine d'application donné.
+ 2. En faire des variables disponibles dans l'interface TUI et que
+ l'on peut manipuler dans des opérations algébriques.
+ 3. Pouvoir au besoin en faire des objets CORBA pour l'interface avec
+ les autres modules SALOME.
+
+* Compléter le diagramme de la structure informatique de MED (en
+ particulier l'implémentation des interface IDL).
+* Préparer un module de travail XMED (organisation d'une bibliothèque)
+
+Tests à réaliser:
+
+* Est-il possible de faire des opérations algébriques à partir des
+ objets SALOMEMED (objects CORBA MED)?
+* Création d'un objet MED_i à partir d'une objet MED pur préalablement
+ chargé en mémoire.
+
+A retenir:
+
+* Des opérations de champs sont possibles sur des champs à des pas de
+ temps fixés. Si l'opération doit être menée sur plusieurs pas de
+ temps, alors itérer sur chaque pas de temps. L'idée ici est
+ d'introduire le concept de série temporelle de champs en temps
+ qu'objet manipulable.
+* Pour deux champs différents de la même structure MED, la données des
+ identifiants dt et it ne correspond pas forcément au même instant
+ absolu (en tout cas rien ne le garanti, même si c'est tout de même
+ une pratique courante).
+
+20101005 : première maquette de démonstration de l'ergonomie en MEDMEM pur
+--------------------------------------------------------------------------
+
+XMED: svn révision 16
+Travailler avec le fichier de donnée testfield.med joint.
+
+
+20101007 : Vers une maquette CORBA
+----------------------------------
+
+Le contexte d'utilisation des opérations de champs est l'environnement
+SALOME. Le support de gestion des données est donc l'étude SALOME. Au
+plus bas niveau, les champs sont des objets MEDMEM instanciés dans une
+session SALOME (soit par un code de calcul intégré, soit par
+chargement des données à partir d'un fichier med). Ces objets sont en
+général référencés dans l'étude SALOME sous la forme d'objets CORBA de
+classe SALOMEMED::FIELD. Plus exactement, l'étude SALOME gère des
+SObject (Study Object) dont un attribut est une référence vers un
+objet CORBA de classe SALOMEMED::FIELD qui lui-même encapsule un objet
+MEDMEM::Field.
+
+On peut donc envisager une solution dans laquelle on donne à
+l'utilisateur des poignées de manipulation des objets
+SALOMEMED::FIELD, par exemple au moyen d'un modèle informatique de
+type proxy. Cela signifie que l'utilisateur ne manipule pas
+directement des objets MEDMEM mais des objets python qui font
+l'interface (à concevoir et implémenter, a priori avec un design
+pattern de type proxy).
+
+L'utilisation directe des objets MEDMEM aurait pu être une solution
+extremement pratique dans la mesure où ces objets en l'état peuvent
+être combinés dans des opérations de champs (c'est déjà
+implémenté). Par contre, ce procédé souffre de limitations importantes
+dans la gestion et la circulation des données pour les différents cas
+d'utilisation envisagés (visualisation, export, transfert à un autre
+module SALOME).
+
+L'avantage de la solution proposée est multiple:
+
+* Elle permet de travailler sur une structure MED cohérente pour
+ intégrer les résultats des opérations de calculs et combiner des
+ champs cohérents entre eux. Tout passe par des classes proxy qui
+ pourront s'assurer de la cohérence des opérations demandées et
+ exécuter automatiquement les fonctions de pré-traitement ou
+ post-traitement requises pour ces opérations. On peut imaginer par
+ exemple que les requêtes d'opération soient envoyées par les classes
+ proxy à la structure MED à laquelle les champs sont associés pour
+ piloter l'opération en MEDMEM pur.
+* Elle permet d'automatiser un certain nombre d'opérations
+ implicites. Par exemple si deux champs ne sont pas définis dans la
+ même unité, un changement d'unité peut être effectué automatiquement
+ par la classe proxy avant de commander l'opération au niveau
+ MEDMEM.
+* Elle permet de laisser les données sur le container SALOME et de
+ réaliser des opérations sans rappatrier les données en local (qui
+ peuvent être en trés grand nombre).
+* Elle permet d'étendre facilement l'ergonomie de manipulation des
+ champs, par exemple en définissant la notion de *série temporelle de
+ champs*, ou encore les concepts de *domaine de définition* évoqués
+ dans les spécifications fonctionnelles.
+* Elle rend immédiat la circulation des données entre modules SALOME,
+ puisque les champs restent accessble par des objets CORBA, en
+ particulier pour la visualisation ou l'export des champs produits
+ par les opérations.
+
+Elle a cependant des inconvénients et/ou limitations:
+
+* Elle nécessite l'implémentation d'une classe proxy pour encapsuler tous
+ les appels aux objets SALOME_MED (et donc MEDMEM). Cette interface
+ se limite a priori aux opérations de champs (les opérations
+ algébriques dans un premier temps).
+* Les champs à manipuler dans une opération donnée doivent être gérés
+ par la même structure MED.
+
+Il est à noter également que les interfaces de programmation de
+SALOMEMED (interface CORBA pour MEDMEM) devront être étendues pour
+permettre des requêtes de manipulations de champs (fonctions addition,
+soustraction, multiplication, ...). Pas de contrainte ici sur
+l'ergonomie puisque la manipulation par l'utilisateur se fera au
+niveau des classes proxy uniquement.
+
+
+Hypothèses:
+
+* On tente ici une maquette qui exploite dans la mesure du possible le
+ fonctionnement actuel du module MED, en particulier la gestion des
+ données dans l'étude.
+* Dans une deuxième version, on pourra examiner sérieusement la
+ révision de la gestion des données dans le module, quitte à la
+ spécifier et maquetter dans XMED pour intégration ultérieure dans
+ MED. Exemple:
+
+ - Pouvoir gérer plusieurs structures med dans l'étude.
+
+* Enfin, on exploite MEDMEM en l'état. Pour les besoins de la gestion
+ des données (gestion des chargements des champs en particulier,
+ références croisées pour retrouver le med à partir du champ par
+ exemple, ...), il pourra être nécessaire de faire évoluer MEDMEM. Il
+ faut pouvoir par ailleurs gérer indifféremment une structure med (et
+ les champs qui y sont associés) qu'elle soit créée en mémoire from
+ scratch ou chargée d'un fichier (donc attention avec les opérations
+ de lecture read(), sur les maillages comme sur les champs). La
+ structure med permet d'obtenir les méta données (meta-field par
+ exemple) mais ne permet pas de savoir si les données sont
+ physiquement chargées ou pas.
+
+
+Révisions:
+
+* XMED svn revision 21 + tarball MED_SRC-20101014-15h26m.tgz.
+ Première version qui permet d'importer un champ dans la console
+ python sous la forme d'un FieldProxy. Ne permet pas encore de faire
+ des opérations. Introduction dans le module MED de l'interface MEDOP
+ pour prendre en charge les opérations sur les champs.
+
+
+20101019 : Maquette de démonstration pour l'addition
+----------------------------------------------------
+
+Cette maquette implémente une solution technique de bout en bout (de
+l'interface python aux objets MEDMEM, en passant par le fieldproxy
+puis les servants CORBA pour les operations, ...) mais sur le
+périmètre de l'addition de champs sur tout leur domaine de définition
+et pour un pas de temps donné.
+
+Limitations:
+
+* gére l'addition de champs de type double uniquement (parceque le
+ reste n'est pas implémenté)
+
+Révisions:
+
+* XMED: svn révision 25
+* MED: cvs tag BR_medop_20101019
+
+
+20101020: Fonctions complémentaires
+-----------------------------------
+
+Cette version test la faisabilité des fonctions complémentaires pour
+accompagner la manipulation de champs. Cela comprend en particulier:
+
+* **la sauvegarde des champs produits** dans un fichier med (un champ ou
+ toute la structure med). Pour cela, on définit un med proxy comme
+ l'extention du SALOME_MED::MED (prévir plutôt d'implémenter ce type
+ de fonction au niveau C++ pour permettre un usage au niveau du GUI
+ C++?).
+* **la visualisation d'un champ** au moyen du module VISU.
+* **des fonctions d'aide interactives** pour assister l'utilisateur
+ dans la console de manipulation des champs.
+
+
+Questions:
+
+* peut-on sauvegarder un champ unique?
+* peut-on faire en sorte que ce soit l'affectation à une variable qui
+ provoque l'ajout du champ à la structure med (ou plus exactement qui
+ supprime tous les champs intermédiaires).
+
+
+Révision:
+
+* XMED: svn revision 31
+* MED: cvs tag BR_medop_20101025
+
+
+20110606: commit avant transfert dans git
+-----------------------------------------
+
+* XMED: svn revision 53
+
+Les parties de MED utiles à MEDOP seront reversées dans XMED
+dans une première étape, puis le tout dans MED 6 au final.
--- /dev/null
+.. meta::
+ :keywords: maillage, champ, manipulation
+ :author: Guillaume Boulant
+
+.. include:: xmed-definitions.rst
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ANNEXE: Note de travail concernant le chantier XMED 2011
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+.. contents:: Sommaire
+ :local:
+ :backlinks: none
+
+Cas d'utilisation métier
+========================
+
+On illustre par un exemple (Christophe Vallet, R&D/MMC, 1/7/2011)::
+
+ J'ai souvent des fichiers med de résultats de calcul, et j'aimerais y
+ ajouter de nouveaux champs issus de champs existants. J'aimerais
+ aussi pouvoir créer de nouveaux meds plus petits par extraction de
+ certaines composantes de champs, certains groupes ou certains pas de
+ temps.
+
+On peut exprimer le besoin sous la forme des cas d'utilisation
+suivants (use cases):
+
+* **UC1: combiner dans un même fichier med des champs issus de
+ plusieurs sources de données**. On peut par exemple charger un
+ premier fichier, puis ajouter à cette base des champs issus d'autre
+ fichiers ou générés par manipulation de champs, ou encore générés
+ par un module de calcul qui produirait directement du MEDCoupling.
+* **UC2: créer un champ contenant certaines composantes d'un autre
+ champ**. On pense ici aux fonctions de restriction, qui permettraient
+ de récupérer certaines composantes uniquement.
+* **UC3: créer un champ contenant certains pas de temps d'un autre
+ champ**. C'est un cas particulier des fonctions de restriction
+ évoquées ci-dessus.
+* **UC4: créer un champ comme la limitation d'un autre champ à un
+ groupe de mailles**. C'est un cas particulier des fonctions de
+ restriction évoquées ci-dessus. Notion de domaine spatial. A
+ priori la notion de groupe est définie dans MEDLoader.
+
+On peut ajouter également les UC identifiés pour la maquette 2010:
+
+* **UC5: comparer des champs issus de source de données différentes**,
+ par exemple des champs chargés de deux fichiers med différents et
+ qui s'appuient sur le même maillage (au moins conceptuellement). Le
+ problème technique ici est de pouvoir changer le maillage d'un
+ champ, pour ramener tous les champs sur le même maillage (au sens
+ informatique). Ceci est une contrainte de MEDCoupling, les
+ opérations sur des champs A et B imposent que A et B soient définis
+ sur le même maillage, i.e. le même objet informatique.
+* **UC6: créer un champ de toute pièce sur un maillage**, ou un groupe
+ de mailles. Ce cas d'usage est typiquement prévu pour produire les
+ conditions de chargement initial d'une structure. Il s'agit ici
+ d'initialiser un champ à partir de zéro sur une surface prédéfinie
+ de la géométrie (par exemple spécifiée par un nom de groupe de
+ mailles).
+
+Pour UC5: les sources de données sont référencées dans l'object
+browser. On importe explicitement les données dans l'espace de
+travail. On peut détecter que les maillages sont identiques et on
+propose à l'utilisateur de transférer le champ sur le maillage déjà
+présent. Sinon, les champs devront être référencés sur des maillages
+distincts dans l'arbre de l'espace de travail.
+
+Analyses préliminaires pour le chantier 2011
+============================================
+
+On fait le choix pour le chantier 2011 de travailler à partir de la
+bibliothèque MEDCoupling (et non plus MEDMEM comme c'était le cas dans
+le démonstrateur 2011).
+
+Analyse de MEDCoupling et MEDLoader
+-----------------------------------
+
+MEDCoupling est l'implémentation du modèle de données MED (avec
+recherche de minimisation des dépendances logicielles) et MEDLoader
+fournit une ensemble de fonctions pour le chargement des structures
+MEDCoupling depuis un fichier ou inversement leur sauvegarde sous
+forme de fichiers.
+
+Dans l'implémentation MEDCoupling, un champ est l'ensemble des valeurs
+d'une grandeur physique sur un maillage pour un pas de temps donné. Un
+champ est caractérisé par:
+
+* un support spatial, le maillage
+* un type de discrétisation spatial, défini par l'emplacement des
+ valeurs sur le maillage (sur les noeuds, sur les cellules, aux
+ points de gauss, ...) et le mode d'interpolation spatial (P0, P1,
+ etc)
+* un pas de temps, défini par deux entiers (iteration, order) et un
+ réel (timestamps)
+
+Dans cette implémentation, il existe une association 1..n entre un
+maillage et un champ (alors que dans MEDMEM, la structure
+intermédiaire SUPPORT est implémentée).
+
+MEDCouplingCorba fournit un ensemble de servants CORBA pour manoeuvrer
+des structures MEDCoupling au travers du bus CORBA. L'interface à ce
+jour est délibérément réduite. Des classes dites "Cliente" sont
+fournies pour piloter les servants CORBA depuis un contexte
+client. Par exemple ``MEDCouplingFieldDoubleClient`` fournit une
+fonction de création d'une structure MEDCoupling à partir d'un
+pointeur vers un servant CORBA. La structure est créée localement
+(dans le contexte client) avec duplication des données issue de la
+structure encapsulée par le servant CORBA (récupération par la
+fonction de sérialisation).
+
+Aucune interface CORBA n'est défini pour MEDLoader.
+
+Questions:
+
+* Voir comment sont créés les servants, et surtout comment ils sont
+ récupérés (via le lcc?)
+* Comment peut-on définir un champ sur un groupe de mailles (et non
+ pas sur le maillage complet)? Comment peut-on extraire le champs
+ circoncit à une groupe de mailles pour des opérations.
+
+ - R: méthode changeUnderlyingMesh
+
+* Comment manipuler deux champs chargées de fichiers différents mais
+ construit sur le même maillage (conceptuellement). On peut forcer la
+ réassociation d'un champ sur un autre maillage?
+* Manipuler des champs de pas de temps différents? Différentes
+ composantes d'un ou plusieurs champs?
+* Comment importer un MedCoupling dans PARAVIS? (dans VISU?)?
+
+* mapper sur une image
+
+Improvments:
+
+* MEDLoader::Write should raise an exception if the filepath is not writable
+* MEDDataManager: développer une classe chapeau sur MEDCoupling et
+ MEDLoader pour aider au chargement et la gestion de données MED
+ (orienté manipulation de champs). Cette classe serait associée des
+ structures légères FieldHandler et MeshHandler et des listes
+ correspondantes pour la navigation dans les méta-données.
+* Sur base du MEDDataManager, prévoir des ports med pour yacs par
+ lesquels pourrait transiter des handler.
+
+Nouveaux concepts à prendre en compte
+-------------------------------------
+
+Au démarrage du chantier 2011, on observe que les concepts suivants
+sont introduits dans le module MED:
+
+* Le conteneur MED n'existe plus, utiliser MEDFILEBROWSER pour charger
+ les fichiers med et obtenir les informations générales sur le
+ contenu.
+* MEDFILEBROWSER: remplace le concept de driver et fournit les
+ fonctions précédemment fournies par la classe MED pour obtenir les
+ informations de structure.
+* Concept d'Extractor pour une lecture sélective des données de champs
+ (suivant un critère d'extraction)
+* Il n'est plus nécessaire d'appeler les méthodes read explicitement
+ sur les objets (MESH et FIELD) pour charger les données. Par
+ ailleurs, on peut définir deux fois le même champs (double
+ chargement a priori) sans lever d'exception).
+
+
+Analyse de conception pour le chantier 2011
+===========================================
+
+Composants SALOME (interfaces IDL)
+----------------------------------
+
+* MEDDataManager: défini une structure FIELD pour identifier un champ
+ dans les requêtes. Il s'occupe également de la récupération physique
+ des données, quelqu'en soit la source (fichier avec MEDLoader, autre
+ module SALOME comme PARAVIS avec une méthode à définir)
+* MEDCalculator: s'occupe des requêtes de calcul dont les arguments sont
+ les structures FIELD du MEDDataManager. Reprendre l'interface de
+ MEDOP.
+
+Use case à réaliser depuis un client python:
+
+* UC01: ajouter un fichier d'entrée et accéder aux informations
+ concernant les champs. Ex: récupérer une structure champs par la
+ donnée des paramètres primaires (nom identifiant, dt, it, nom du
+ maillage).
+* UC02: créer des champs et les ajouter au MEDDataManager
+* UC03: mener des opérations basique sur les champs en console python
+
+Interface Utilisateur
+---------------------
+
+L'interface utilisateur est composée des parties suivantes:
+
+* une partie GUI (appelée par la suite MEDGUI) qui s'occupe de piloter
+ le chargement des données dans l'espace de travail, au moyen d'une
+ interface graphique;
+* une partie TUI (appelée par la suite MEDTUI) qui s'occupe de piloter
+ la création de champs, au moyen de commandes exécutées dans la
+ console python.
+
+Le principe est que les champs sont préalablement chargés au niveau du
+composant SALOME au moyen de l'interface graphique (MEDGUI), puis
+manoeuvrés depuis l'application SALOME au moyen de variables proxy
+définies dans la console python (MEDTUI). Au chargement, les champs
+sont indéxés par le MEDDataManager, puis les index sont rendus
+accessibles au niveau du GUI au moyen d'une représentation
+arborescente de la structure MED. Les feuilles de l'arbre
+correspondent à des champs qui peuvent être sélectionnés et dont
+l'index peut être obtenu de la sélection.
+
+L'espace de travail est organisé autour du concept de
+"workspace". L'étude SALOME liste les datasource (les fichiers source
+des données med, mais peut-être aussi les référence vers des objets
+MED déjà existants ou chargé dans PARAVIZ). Une vue complémentaire
+permet de voir la structure fine d'une source de données.
+
+Concernant MEDGUI:
+
+* la représentation des données (les champs et les maillages associés)
+ doit permettre de récupérer par l'interface graphique les
+ identifiants des champs à manipuler (a priori les structures FIELD
+ définies par le composant MEDDataManager). Cela conduit à la mise en
+ place des composants suivants:
+
+ - MedDataModel hérité de TreeData. Il est peuplé avec les
+ méta-données décrivant la structure MED explorée.
+ - MedGuiManager qui permet l'implantation du doc widget de
+ présentation
+
+TODO:
+
+* specifier le concept de workspace (qui a une entrée dans l'étude?)
+ en bijection avec un datamanager
+* identifier des interlocuteur/utilisateur pour l'aspect ergonomie d'usage
+
+Concernant MEDTUI:
+
+* Il fournit les classes FieldProxy
+
+Questions:
+
+* Comment traiter le cas du travail sur des composantes ciblées, plus
+ généralement, comment introduire le concept de domaine
+ d'application?
+* Prévoir des fonctions génériques (initialisation d'un champ sur un
+ maillage avec une fonction analytique de la position, sauvegarder
+ les champs créés dans un fichier med)
+
+
+Tâches de développement
+=======================
+
+T20110622.1: Gestion des données internes
+-----------------------------------------
+
+**Status: terminé.**
+Suite: fonction de sauvegarde au niveau graphique également
+
+On vise les cas d'utiliation suivants:
+
+* UC1: intégrer dans le datamodel du gui un champ créé dans la console
+ python (et donc présent dans le datamanager du composant). Définir
+ l'utilité?
+* UC2: renommer un champ et plus généralement changer ses méta-données
+ (avec assurance de synchronisation entre toutes les données).
+* UC3: sauvegarder une sélection de champs. La sélection peut se faire
+ dans l'arbre du datamodel gui.
+
+WARN: robustesse de fieldproxy
+
+
+
+T20110622.2: UC Initialisation/Création de champs
+-------------------------------------------------
+
+**Status: à faire**
+
+Les cas implémentés à ce jour sont la création de champs à partir de
+champs existants et chargés d'un fichier med. On souhaite ici réaliser
+des cas 'utilisation autour de la création de champs "from scratch",
+s'appuyant tout de même sur un maillage chargé.
+
+UC01: Sélection d'un groupe de maille dans SMESH pour initialiser un
+champ (par exemple les conditions limites d'un problème de calcul).
+
+UC02: créer un champ avec des restrictions qui définissent le domaine
+d'application des opération de champs.
+
+UC03: créer un champ à partir d'une image (codes rgb utilisé comme les
+composantes du champs vectoriel ou niveaux de gris pour un champ
+scalaire. Attention, pour ça, il faudra a priori fiare une projection
+du maillage cartesien de l'image sur le maillage (quelconque) sur
+lequel on souhaite définir le champ.
+
+UC04: créer un champ à partir d'un tableau numpy
+
+De manière générale, ce type de création sera assisté par le
+MEDGUI. Au niveau MEDTUI, les fonctions pourraient être fastidieuses
+pour l'utilisateur.
+
+Par exemple, prévoir un menu contextuel qui propose les opérations
+possibles en fonction de la sélection (en plus de la fonction d'import
+dans la console python).
+
+TODO:
+
+* développer les fonctions d'initialisation, par exemple au moyen
+ d'applyFunc et du mécanisme de callable?
+
+T20110622.3: documentation contextuel
+-------------------------------------
+
+**Status: à faire**
+
+* Remettre toutes les commandes dans le même fichier (fusionner cmdtools
+ et fieldtools)
+* Faire un modèle générique de command (classe de base
+* Batir la doc des commandes sur cette base (lister toutes les
+ instances de type Command par exemple)
+
+T20110622.4: remontée des exception du composant MEDCalculator
+--------------------------------------------------------------
+
+**Status: en cours, compléter la couverture**
+
+Pour des messages contextuel sur les erreurs de calcul (ex: division
+par 0)
+
+* Poursuivre le travail fait sur getMedEventListener
+* Protéger tous les appels au composants effectués depuis la console
+ python (prendre example sur la commande save)
+
+T20110624.1: gestion des données GUI
+------------------------------------
+
+**Status: à faire**
+
+
+
+Le workspace a une entrée dans l'obrowser. Sur cette entrée on peut:
+
+* supprimer: supprime tout les champs associés
+* sauvegarder. Dans ce cas, on rappelle l'ensemble des champs pour
+ cocher ceux qu'on veut sauvegarder.
+
+Le gui data model est réservé aux opérations sur les champs et à
+piloter leur import dans la console python.
+
+TODO:
+
+* Spécifier les concepts de workspace, database, et datasource, espace
+ de gestion, ... et les associations. Simplifier avec l'appuie de use
+ cases.
+* Mécanisme de mise à jour du TreeView de XSALOME (aujourd'hui, seul
+ l'ajout addChild est implémenté
+* Clic droit sur objets de l'arbre: dans la notification TreeView ->
+ WorkspaceController, faire remonter l'évènement clic droit ainsi que la
+ liste des éléments sélectionné pour faire générer le menu contextuel
+ au niveau du WorkspaceController qui peut déterminer le contexte métier
+ (le TreeView ne le connaît pas).
+* Définir des DataObject pour les maillages, les séries temporelles et
+ les champs
+
+
+Spécification des espaces de données:
+
+* MEDDataManager dépend de l'étude (pour permettre la publication
+ d'information dans une étude SALOME).
+* créer "sourcid = MEDDataManager::addDataSource(filename)", suivie de
+ requetes getFields(sourceid), getMeshes(sourceid)
+* les espaces de données: dataspace, workspace. Un seul workspace par
+ étude, mais autand de datasources que l'on souhaite dans le
+ dataspace. Les datasources sont rangés dans l'étude (le dataspace)
+ et sont non modifiables après chargement (référence des sources de
+ données).
+
+
+T20110628.1: extention à d'autres objets SALOME
+-----------------------------------------------
+
+**Status: suspendu**
+
+On doit reposer la question de l'existance de l'arbre indépendant
+(DockWidget), d'une part, et l'extention aux autres objets (GEOM et
+SMESH en particulier) du principe de sélection graphique pour
+utilisation dans la console python, d'autre part.
+
+
+T20110628.2: visualisation d'un champ avec PARAVIS
+--------------------------------------------------
+
+**Status: terminé (pour une première version)**
+Suite: de nombreux défauts subsistent
+
+Questions/remarques:
+
+* Pb au démarrage du module: VisTrails fails to start
+* Peux-t-on piloter la vue 3D sans charger le module? (voir
+ myparavis.py)
+* Comment donner un nom au MEDReader1 dans l'arbre Pipeline?
+* Comment utiliser directement les objets MEDCouplingField?
+
+
+T20110706.1: documentation du module
+------------------------------------
+
+**Status: en cours (10%)**
+
+Documenter les commandes TUI puis l'utilisation générale de
+l'interafce graphique. Mentionner l'existance de la commande medop.sh
+pour travailler exclusivement en mode texte (utile pour les tests
+rapides).
+
+Documenter les modalités d'exécution des tests.
+
+T20110708.1: helper python pour MEDCoupling
+-------------------------------------------
+
+**Status: en attente (pas urgent)**
+
+Faire un helper python dans le package xmed qui permet de faire du
+medcoupling facilement (essentiellement pour simplifier le chargement,
+puis la sélection des données). Cela demanderait de faire un
+MedDataManager comme une class C++ pure (non CORBA). Cette classe
+travaillerait par exemple uniquement avec des id et des liste d'id, et
+fournirait des fonctions d'affichage (comme le ``ls`` et le ``la``)
+pour obtenir des meta-information.
+
+Le servant MedDataManager pourrait être une surcouche de cette classe
+c++ pure.
+
+T20110708.2: analyses et tests
+------------------------------
+
+TODO:
+
+* créer un fichier de test avec plusieurs pas de temps
+* créer un fichier de test avec des groupes de mailles
+
+
+T20110728.1: refactoring MEDDataManager
+---------------------------------------
+
+Refactoring pour une meilleur association entre FieldHandler et MeshHandler:
+
+* dans la mesure du possible utiliser les id plutôt que les handler en
+ arguments des fonctions d'appel des objets
+* A chaque champ (FieldHandler), on doit associer un meshid (et de
+ manière optionnelle un fieldseriesId, si le champ peut être associé
+ à une serie temporelle. A priori faisable uniquement au chargement
+ du datasource).
+* Pour cela, revoir les fonctions internes newFieldHandler et addField
+ ou prévoir de les compléter à chaque fois qu'elles sont appelée avec
+ les informations concernant le meshid.
+* addField est utilisée par le MEDCalculator
+* Attention au raffraichissement des données handler au niveau du
+ Workspace. Peut-être le mieux est que les fieldproxy contiennent
+ uniquement le fieldid, et qu'ils interroge le datamanager à chaque
+ fois qu'ils ont besoin d'une donnée. Voir aussi les notifications
+ via le MEDEventListener? **Le plus simple est de faire la mise à
+ jour lors de l'appel à la méthode __repr__ du fieldproxy, i.e. quand
+ on essaye d'afficher les données**. Parceque sinon il n'y a pas de
+ problème puisque que le calculateur travaille à partir des id.
+
+
+Petites améliorations du DataspaceController:
+
+* Au OnUseInWorkspace, stocker (dans la mesure du possible) le nom de
+ l'alias python dans un attribut du sobject.
+* Dans DlgChangeUnderLyingMesh, expliquer que le champs sera dupliquer
+ est posé dans le WS. On peut donc proposer en option de lui associer
+ un alias pour manipulation dans la console
+
+
+
--- /dev/null
+.. meta::
+ :keywords: maillage, champ, manipulation
+ :author: Guillaume Boulant
+
+.. include:: xmed-definitions.rst
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ANNEXE: Note de travail concernant le chantier XMED 2012
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+.. contents:: Sommaire
+ :local:
+ :backlinks: none
+
+
+Analyse preliminaire pour le chantier 2012
+==========================================
+
+La figure imposée pour le chantier 2012 est l'intégration du nouveau
+module de manipulation de champs dans SALOME 6.6 (objectif CEA), en
+préparation de la mise en exploitation dans SALOME 7 (objectif EDF).
+
+L'état actuel est:
+
+* Un module SALOME de nom MED intégrant les bibliothèques MEDCoupling,
+ MEDLoader, REMAPPER, mais aussi plusieurs packages logiciels
+ aujourd'hui obsolètes ou amener à disparaître pour l'échéance
+ SALOME7
+* Un module SALOME de nom XMED qui fournit les fonctions graphiques
+ pour la manipulation de champs.
+* Ce module XMED utilise le module VISU pour les vue de contrôle.
+
+La cible est:
+
+* Un module unique (nom à définir, par exemple MEDOP) débarrassé des
+ packages logiciels obsolètes et intégrant les fonctions graphiques
+ (GUI et TUI).
+* L'utilisation du module PARAVIS (au lieu de VISU) pour les vues de
+ contrôle.
+* L'intégration de MEDCoupling avec YACS (port MED dans YACS par
+ exemple).
+
+A examiner:
+
+* voir les attendus concernant les ports MED dans YACS
+* interface PARAVIS: utilisation du viewer (et de l'API python) sans chargement du GUI
+
+Tâches de développement
+=======================
+
+20120904: Migrer XMED dans MED
+------------------------------
+
+Plan de travail:
+
+* Migration des composants + test
+
+
+
+20120904: Nettoyage de XSALOME
+------------------------------
+
+:status: en cours
+
+* Supprimer les vieilleries de XSALOME:
+
+ - StdHelper -> Basic_Utils (KERNEL)
+
+20120829: mise en place du chantier 2012
+----------------------------------------
+
+:status: terminé
+
+L'objectif de cette première étape est de reverser le prototype 2011
+(module XMED indépendant) dans la branche V6_main du module MED. On
+peut procéder de la manière suivante:
+
+* update de XMED (et XSALOME utilisé par XMED) pour fonctionnement sur
+ V6_main
+* Eliminer la dépendance à XSALOME
+* Supprimer la gestion des multiversion SALOME5/6 au niveau de l'engine
+
+.. warning:: TODO: refaire le point sur les tâches initiées en 2011
+
--- /dev/null
+# Copyright (C) 2007-2012 CEA/DEN, EDF R&D
+#
+# 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.salome-platform.org/ or email : webmaster.salome@opencascade.com
+#
+
+ADD_SUBDIRECTORY(appligen)
+ADD_SUBDIRECTORY(image2med)
--- /dev/null
+# Copyright (C) 2007-2012 CEA/DEN, EDF R&D, OPEN CASCADE
+#
+# 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.salome-platform.org/ or email : webmaster.salome@opencascade.com
+#
+
+SUBDIRS=appligen image2med
--- /dev/null
+# Copyright (C) 2007-2012 CEA/DEN, EDF R&D
+#
+# 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.salome-platform.org/ or email : webmaster.salome@opencascade.com
+#
+
+SET(MODULE_NAME med)
+SET(prefix ${CMAKE_INSTALL_PREFIX})
+
+CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/config_appli_model.xml.in ${CMAKE_CURRENT_BINARY_DIR}/config_appli_model.xml @ONLY)
+
+SET(MED_RESOURCES_FILES
+ ${CMAKE_CURRENT_BINARY_DIR}/config_appli_model.xml
+ appli-splashscreen.jpg
+ SalomeApp.xml
+ )
+
+INSTALL(FILES ${MED_RESOURCES_FILES} DESTINATION ${MED_salomebin_BINS}/med/appligen)
+
+CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/appligen.sh.in ${CMAKE_CURRENT_BINARY_DIR}/appligen.sh @ONLY)
+
+SET(MED_RESOURCES_FILES2
+ ${CMAKE_CURRENT_BINARY_DIR}/appligen.sh
+ )
+
+INSTALL(FILES ${MED_RESOURCES_FILES2} DESTINATION ${MED_salomebin_BINS}/med/appligen PERMISSIONS OWNER_EXECUTE OWNER_WRITE OWNER_READ GROUP_EXECUTE GROUP_READ WORLD_EXECUTE WORLD_READ)
--- /dev/null
+# Copyright (C) 2007-2012 CEA/DEN, EDF R&D, OPEN CASCADE
+#
+# 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.salome-platform.org/ or email : webmaster.salome@opencascade.com
+#
+
+# author: Guillaume Boulant (EDF/R&D, 2012)
+
+include $(top_srcdir)/adm_local/unix/make_common_starter.am
+
+appligenbindir = $(bindir)/@MODULE_NAME@/appligen
+
+appligenbin_DATA= \
+ envappli.sh \
+ config_appli.xml \
+ appli-splashscreen.jpg \
+ SalomeApp.xml
+
+appligenbin_SCRIPTS=\
+ appligen.sh
+
+EXTRA_DIST += $(appligenbin_DATA) $(appligenbin_SCRIPTS)
+
+config_appli.xml: config_appli_model.xml
+ cat $< | sed \
+ -e s~__GEOM_ROOT_DIR__~$(GEOM_ROOT_DIR)~g \
+ -e s~__SMESH_ROOT_DIR__~$(SMESH_ROOT_DIR)~g \
+ -e s~__BLSURFPLUGIN_ROOT_DIR__~$(BLSURFPLUGIN_ROOT_DIR)~g \
+ -e s~__GHS3DPLUGIN_ROOT_DIR__~$(GHS3DPLUGIN_ROOT_DIR)~g \
+ -e s~__NETGENPLUGIN_ROOT_DIR__~$(NETGENPLUGIN_ROOT_DIR)~g \
+ -e s~__VISU_ROOT_DIR__~$(VISU_ROOT_DIR)~g \
+ -e s~__YACS_ROOT_DIR__~$(YACS_ROOT_DIR)~g \
+ -e s~__PARAVIS_ROOT_DIR__~$(PARAVIS_ROOT_DIR)~g \
+ > tmp; mv tmp $@
+
+envappli.sh:
+ $(srcdir)/genenv.sh envappli.sh
+
+
+mostlyclean-local:
+ rm -f @builddir@/config_appli.xml @builddir@/envappli.sh
--- /dev/null
+This package contains a set of files that can be used to generate a
+SALOME application embedding the XMED module (field manipulation).
+
+The files are created in the directory:
+
+ <installdir>/bin/salome/<module_name>/appligen
+
+Where <installdir> is the installation directory of the XMED
+module.
+
+To generate a SALOME application, just change directory to go
+where you want to install the SALOME application and type the
+following command in a standard shell (the SALOME environment
+is not required, all paths are "hard" coded in the script):
+
+ $ <installdir>/bin/salome/<module_name>/appligen/appligen.sh
+
+This script generates an application in a directory ./appli.
+Then type the following command to run a SALOME application
+embedding your module:
+
+ $ ./appli/runAppli -k
+
+You may used this appli to test the functions of XMED through the
+usage of the GUI module.
--- /dev/null
+<document>
+ <section name="launch">
+ <!-- SALOME launching parameters -->
+ <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="noexcepthandler" value="no"/>
+ <parameter name="modules" value="KERNEL,GUI,GEOM,SMESH,MED,VISU,YACS,PARAVIS"/>
+ <parameter name="pyModules" value=""/>
+ <parameter name="embedded" value="SalomeAppEngine,study,cppContainer,registry,moduleCatalog"/>
+ <parameter name="standalone" value="pyContainer"/>
+ </section>
+ <section name="splash" >
+ <!-- Splash screen settings. This only works when using a SALOME application, -->
+ <!-- where the file appli-splashscreen.jpg has been copy into. -->
+ <parameter name="image" value="${MED_ROOT_DIR}/bin/salome/med/appligen/appli-splashscreen.jpg" />
+ <parameter name="constant_info" value="%A [ %V ]" />
+ <parameter name="text_colors" value="#eeeeff|#555555" />
+ <parameter name="hide_on_click" value="no" />
+ <parameter name="show_progress" value="yes" />
+ <parameter name="show_message" value="yes" />
+ <parameter name="show_percents" value="yes" />
+ <parameter name="margin" value="40" />
+ <parameter name="progress_width" value="20" />
+ <parameter name="progress_flags" value="bottom,left_to_right" />
+ <parameter name="opacity" value="0.70" />
+ <parameter name="font" value="Tahoma,12,normal" />
+ <parameter name="alignment" value="top,left" />
+ <parameter name="progress_colors" value="#3b3e5d|#d14949|v" />
+ </section>
+</document>
--- /dev/null
+#!/bin/sh
+#
+# This script installs or updates a SALOME application for testing the
+# XMED module. The application is installed in the
+# directory ./appli. The configuration file is supposed to be adapted
+# to your own environment (see config_appli.xml).
+#
+# To run this script, you should have first configure your
+# shell with the SALOME environment, i.e. source the files
+# prerequis.sh and envSalome.sh (or equivalent) that fit
+# your configuration. You can alternatively customize the env.sh file
+# to fit your SALOME environment and let the script do the job (see
+# source below).
+#
+# (gboulant - 3/2/2011)
+#
+
+here=$(dirname $0)
+
+# Finalize the configuration xml file
+
+
+#
+# Run the appli_gen.py
+#
+APPLIDIR="./appli"
+@KERNEL_ROOT_DIR@/bin/salome/appli_gen.py --prefix=$APPLIDIR --config=$here/config_appli.xml
+
+#
+# Copy customized configuration files in the application
+#
+cp $here/SalomeApp.xml $APPLIDIR/.
+
+# This write an executable program that run a medop text interface
+# (could be usefull for most of the tests and sometimes for real
+# works).
+write_medop_exe() {
+ echo '#!/bin/sh'
+ echo 'appliroot=$(dirname $0)'
+ echo 'logfile="/tmp/medop.log"'
+ echo '$appliroot/runAppli -k -t 2>$logfile'
+ echo 'xterm -e tail -f $logfile &'
+ echo '$appliroot/runSession "python -i $appliroot/lib/python2.6/site-packages/salome/xmed/medop.py"'
+}
+
+write_medop_exe > $APPLIDIR/medop.sh
+chmod +x $APPLIDIR/medop.sh
--- /dev/null
+<application>
+<prerequisites path="@prefix@/bin/salome/@MODULE_NAME@/appligen/envappli.sh"/>
+
+<modules>
+ <module name="KERNEL" path="@KERNEL_ROOT_DIR@"/>
+ <module name="GUI" path="@GUI_ROOT_DIR@"/>
+ <module name="GEOM" path="__GEOM_ROOT_DIR__"/>
+ <module name="SMESH" path="__SMESH_ROOT_DIR__"/>
+ <module name="BLSURFPLUGIN" gui="no" path="__BLSURFPLUGIN_ROOT_DIR__"/>
+ <module name="GHS3DPLUGIN" gui="no" path="__GHS3DPLUGIN_ROOT_DIR__"/>
+ <module name="NETGENPLUGIN" gui="no" path="__NETGENPLUGIN_ROOT_DIR__"/>
+ <module name="MED" path="@prefix@"/>
+ <module name="VISU" path="__VISU_ROOT_DIR__"/>
+ <module name="YACS" path="__YACS_ROOT_DIR__"/>
+ <module name="PARAVIS" path="__PARAVIS_ROOT_DIR__"/>
+</modules>
+</application>
--- /dev/null
+#!/bin/bash
+
+# This script creates a source file that defines a SALOME shell
+# environment. We assume here that the SALOME environment has been
+# previously set, so that the env command get all environment
+# variables required for building and executing SALOME. We talk
+# about third party software programs and libraries. The environment
+# variables defining SALOME module are exluded (i.e. *_ROOT_DIR)
+# because they are automatically set when generating a SALOME application..
+#
+# The argument is the filepath to be created.
+#
+
+if [ $# == 1 ]; then
+ ENVAPPLI_SH=$1
+else
+ ENVAPPLI_SH=envappli.sh
+fi
+
+function header {
+ echo "#"
+ echo "# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>"
+ echo "# THIS FILE IS GENERATED from the shell environment used to build the SALOME module."
+ echo "# IT SHOULD NOT BE EDITED, it is generated for the need of the SALOME application "
+ echo "# that embeds the module (for test purposes). "
+ echo "# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>"
+ echo "#"
+}
+header > $ENVAPPLI_SH
+env | grep -v -e PWD -e SalomeAppConfig -e _ROOT_DIR | while read f; do
+ key=$(echo $f | cut -d"=" -f1)
+ value=$(echo $f | cut -d"=" -f2-)
+
+ # if the key is a path (LD_LIBRARY_PATH, PATH and PYTHONPATH) then
+ # we must extends the variable.
+ if [ $key == "LD_LIBRARY_PATH" -o $key == "PATH" -o $key == "PYTHONPATH" ]; then
+ echo export $key=\"$value:\$$key\"
+ else
+ echo export $key=\"$value\"
+ fi
+done >> $ENVAPPLI_SH
--- /dev/null
+# Copyright (C) 2007-2012 CEA/DEN, EDF R&D
+#
+# 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.salome-platform.org/ or email : webmaster.salome@opencascade.com
+#
+
+SET(MED_PYTHON_SCRIPTS
+ image2med.py
+ xmedimages.py
+ )
+
+INSTALL(FILES ${MED_PYTHON_SCRIPTS} DESTINATION ${MED_salomebin_BINS}/med PERMISSIONS OWNER_EXECUTE OWNER_WRITE OWNER_READ GROUP_EXECUTE GROUP_READ WORLD_EXECUTE WORLD_READ)
--- /dev/null
+# Copyright (C) 2007-2012 CEA/DEN, EDF R&D, OPEN CASCADE
+#
+# 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.salome-platform.org/ or email : webmaster.salome@opencascade.com
+#
+
+# author: Guillaume Boulant (EDF/R&D, 2012)
+
+include $(top_srcdir)/adm_local/unix/make_common_starter.am
+
+toolsbindir = $(bindir)/@MODULE_NAME@
+
+dist_toolsbin_SCRIPTS=\
+ image2med.py \
+ xmedimages.py
--- /dev/null
+#!/usr/bin/env python
+# -*- coding: iso-8859-1 -*-
+# Copyright (C) 2011 CEA/DEN, EDF R&D, OPEN CASCADE
+#
+# 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.salome-platform.org/ or email : webmaster.salome@opencascade.com
+#
+# Author : Guillaume Boulant (EDF)
+
+from optparse import OptionParser
+parser = OptionParser()
+parser.add_option("-i", "--imagefile", dest="imagefile",
+ help="image file to convert", metavar="FILE")
+parser.add_option("-m", "--medfile", dest="medfile", default=None,
+ help="output med file", metavar="FILE")
+(options, args) = parser.parse_args()
+
+import sys, os
+if options.imagefile is None:
+ print "The image file must be specified"
+ sys.exit()
+imagefile = options.imagefile
+if not os.path.exists(imagefile):
+ print "The image file %s does not exists"%imagefile
+ sys.exit()
+
+if options.medfile is None:
+ basename = os.path.basename(imagefile)
+ medfile = basename[0:len(basename)-3] + "med"
+else:
+ medfile = options.medfile
+
+print "Convert image file %s to a med field saved in %s"%(imagefile,medfile)
+from xmedimages import FieldBuilder
+builder = FieldBuilder()
+builder.image2med(imagefile,medfile)
--- /dev/null
+# -*- coding: iso-8859-1 -*-
+# Copyright (C) 2007-2012 CEA/DEN, EDF R&D, OPEN CASCADE
+#
+# 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.salome-platform.org/ or email : webmaster.salome@opencascade.com
+#
+
+# Author : Guillaume Boulant (EDF)
+
+import MEDCoupling as MC
+import MEDLoader as ML
+
+from PIL import Image
+from PIL import ImageOps
+import numpy
+
+class FieldBuilder:
+
+ def image2med(self, imageFilepath, medFilepath=None):
+
+ # Load the image file in a numpy array using PIL.
+ img=Image.open(imageFilepath)
+ imgbw=ImageOps.grayscale(img)
+ # WARN: We keep only the grayscale. Maybe, it could be usefull
+ # to get the RGB scales each on one component of the field.
+
+ # Creating a cartesian mesh with a grid of the size of the image
+ # The sizes defined the number of pixel in a direction, then the
+ # number of cells to create in the mesh in that direction.
+ width,height=imgbw.size
+ mesh=self.createMesh("grid_%sx%s"%(width,height),width,height)
+ field=self.createField("imagefield",mesh,imgbw)
+
+ # The MEDLoader can be used to save all the stuff in a med file. You
+ # just have to specify the field and the MEDLoader will save the
+ # underlying mesh.
+ createFromScratch=True
+ ML.MEDLoader.WriteField(medFilepath,field,createFromScratch)
+
+ def createMesh(self, meshname, sizeX, sizeY):
+ """
+ Creating a cartesian mesh with a grid of the size of the image.
+ sizeX and sizeY should be respectively the width and heigth of the
+ image.
+ """
+ # >>>
+ # WARNING: remember the problem of tics and spaces. The data values
+ # are considered as values defined on cells. With size values in a
+ # direction, we have to create size+1 mesh nodes in that direction.
+ # <<<
+
+ # The mesh is created using MEDCoupling
+ cmesh=MC.MEDCouplingCMesh.New();
+ cmesh.setName(meshname)
+
+ # We use an arbitrary step between cells (the value does not matter)
+ stepX = 0.1
+ nbNodesX = sizeX+1
+ arrX = [float(i * stepX) for i in range(nbNodesX)]
+ coordsX=MC.DataArrayDouble.New()
+ coordsX.setValues(arrX,nbNodesX,1)
+
+ # For the Y dimension, we have to reverse the coordinates (the
+ # first pixel is at y=height and not at y=0).
+ stepY = 0.1
+ nbNodesY = sizeY+1
+ lengthY = sizeY*stepY
+ arrY=[float(lengthY - i * stepY) for i in range(nbNodesY)]
+ coordsY=MC.DataArrayDouble.New()
+ coordsY.setValues(arrY,nbNodesY,1)
+
+ cmesh.setCoords(coordsX,coordsY)
+ print "Imagem mesh dimension: %d"%cmesh.getSpaceDimension()
+
+ # WARN: In the current state of development of MEDLoader, only
+ # unstructured meshes are supported for writting function in med
+ # files. We just have to convert the cartesian mesh in an unstructured
+ # mesh before creating the field.
+ umesh=cmesh.buildUnstructured();
+ umesh.setName(cmesh.getName())
+
+ return umesh
+
+ def createField(self, fieldname, mesh, image):
+ """
+ Creating a scalar field on the mesh using image data
+ """
+ # Create the field using MEDCoupling
+ field = MC.MEDCouplingFieldDouble.New(MC.ON_CELLS,MC.ONE_TIME);
+ field.setName(fieldname);
+ field.setMesh(mesh);
+ # OPTIONAL: We set an arbitrary time step for test purpose
+ field.setIteration(0);
+ field.setOrder(0)
+
+ imagedata=list(image.getdata())
+ width,height=image.size
+ nbCells = width*height
+ dataArray=MC.DataArrayDouble.New();
+ nbComponents=1 # For a scalar field
+
+ dataArray.setValues(imagedata,nbCells,nbComponents)
+ field.setArray(dataArray);
+
+ return field
+
+#
+# ===================================================================
+# use case functions
+# ===================================================================
+#
+
+def getTestImagePath():
+ import os
+ MED_ROOT_DIR=os.environ["MED_ROOT_DIR"]
+ RESDIR=os.path.join(MED_ROOT_DIR, "share", "salome", "resources", "med", "medop_testfiles")
+ imgFileName="irm_test1.png"
+ imgFilePath=os.path.join(RESDIR,imgFileName)
+ return imgFilePath
+
+def TEST_pil():
+ imgFilePath = getTestImagePath()
+ img=Image.open(imageFilepath)
+ imgbw=ImageOps.grayscale(img)
+
+
+def TEST_image2med():
+ imgFilePath = getTestImagePath()
+ builder = FieldBuilder()
+ builder.image2med(imgFilePath,"image.med")
+
+# ===================================================================
+if __name__ == "__main__":
+ TEST_pil()
+ #TEST_image2med()
--- /dev/null
+# Copyright (C) 2007-2012 CEA/DEN, EDF R&D, OPEN CASCADE
+#
+# 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.salome-platform.org/ or email : webmaster.salome@opencascade.com
+#
+
+ADD_SUBDIRECTORY(dialogs)
+
+INCLUDE(${GUI_ROOT_DIR}/adm_local/cmake_files/UseQT4EXT.cmake)
+
+SET(MEDOPGUI_SOURCES
+ MEDOPFactoryClient.cxx
+ XmedConsoleDriver.cxx
+ WorkspaceController.cxx
+ XmedDataModel.cxx
+ MEDEventListener_i.cxx
+ MEDOPModule.cxx
+ DatasourceController.cxx
+ factory.cxx
+)
+
+SET(MEDOPGUI_HEADERS MEDOPModule.hxx MEDEventListener_i.hxx WorkspaceController.hxx DatasourceController.hxx)
+
+QT4_WRAP_CPP(MEDOPGUI_HEADERS_MOC ${MEDOPGUI_HEADERS})
+
+INCLUDE_DIRECTORIES(
+ ${OMNIORB_INCLUDE_DIRS}
+ ${CAS_INCLUDE_DIRS}
+ ${BOOST_INCLUDE_DIRS}
+ ${PTHREAD_INCLUDE_DIRS}
+ ${KERNEL_ROOT_DIR}/include/salome
+ ${GUI_ROOT_DIR}/include/salome
+ ${CMAKE_CURRENT_BINARY_DIR}
+ ${CMAKE_CURRENT_SOURCE_DIR}/dialogs
+ ${CMAKE_CURRENT_BINARY_DIR}/dialogs
+ ${CMAKE_CURRENT_SOURCE_DIR}/../cmp
+ ${CMAKE_CURRENT_SOURCE_DIR}/../../MEDGUI
+ ${CMAKE_BINARY_DIR}/idl
+ ${CMAKE_BINARY_DIR}
+)
+
+SET(MEDOPGUITS_SOURCES
+ MEDOP_msg_en.ts
+ MEDOP_msg_fr.ts
+)
+SET(COMMON_DEFINITIONS "${MED3_DEFINITIONS} ${XDR_DEFINITIONS} ${CAS_DEFINITIONS} ${BOOST_DEFINITIONS} ${PLATFORM_DEFINITIONS} ${OMNIORB_DEFINITIONS}")
+SET(COMMON_FLAGS
+ ${CAS_KERNEL}
+ ${QT_MT_LIBS}
+ ${OMNIORB_LIBS}
+ ${PLATFORM_LIBS}
+ ${BOOST_LIBS}
+ SalomeIDLMED
+ MEDOPGUI_dialogs
+ MEDOPFactoryEngine
+ ${qtx}
+ ${suit}
+ ${SalomeObject}
+ ${SalomeLifeCycleCORBA}
+ ${SalomeKernelHelpers}
+ ${SalomeApp}
+ ${SalomeGuiHelpers}
+ ${SalomeTreeData}
+ ${OpUtil}
+ ${CAM}
+ ${LightApp}
+ ${PyConsole}
+ ${SalomeGuiHelpers}
+)
+
+#-D__WITH_MEDMEMGUI__ libMEDGUI.la
+IF(WITH_MEDMEMGUI)
+ SET(COMMON_DEFINITIONS "${COMMON_DEFINITIONS} -D__WITH_MEDMEMGUI__")
+ SET(COMMON_FLAGS ${COMMON_FLAGS} MEDGUI)
+ENDIF(WITH_MEDMEMGUI)
+
+ADD_LIBRARY(MEDOPGUI SHARED ${MEDOPGUI_SOURCES} ${MEDOPGUI_HEADERS_MOC})
+SET_TARGET_PROPERTIES(MEDOPGUI PROPERTIES COMPILE_FLAGS ${COMMON_DEFINITIONS})
+TARGET_LINK_LIBRARIES(MEDOPGUI ${COMMON_FLAGS})
+
+INSTALL(TARGETS MEDOPGUI DESTINATION ${MED_salomelib_LIBS})
+QT4_INSTALL_TS_RESOURCES("${MEDOPGUITS_SOURCES}" "${MED_salomeres_DATA}")
+
+FILE(GLOB COMMON_HEADERS_HXX "${CMAKE_CURRENT_SOURCE_DIR}/*.hxx")
+INSTALL(FILES ${COMMON_HEADERS_HXX} DESTINATION ${MED_salomeinclude_HEADERS})
+
--- /dev/null
+
+// This constant strings are used to specify an attribute name for
+// AttributeParameter attributes associated to a SObject
+#define OBJECT_ID "objectid"
+#define OBJECT_IS_IN_WORKSPACE "isInWorkspace"
--- /dev/null
+
+// Author : Guillaume Boulant (EDF)
+
+#include "DatasourceController.hxx"
+#include "DatasourceConstants.hxx"
+
+#include "MEDOPFactoryClient.hxx"
+#include "QtHelper.hxx"
+
+#include CORBA_CLIENT_HEADER(SALOMEDS)
+#include <SUIT_FileDlg.h>
+#include <SUIT_Desktop.h>
+
+#include <QStringList>
+#include <QString>
+#include <QMessageBox>
+
+#include "DlgAlias.hxx"
+
+//
+// ==============================================================
+// Datasource controller
+// ==============================================================
+//
+DatasourceController::DatasourceController(StandardApp_Module * salomeModule) {
+ STDLOG("Creating a DatasourceController");
+ _salomeModule = salomeModule;
+ _studyEditor = new SALOME_AppStudyEditor(_salomeModule->getApp());
+ _dlgChangeUnderlyingMesh = new DlgChangeUnderlyingMesh(_studyEditor);
+
+ connect(_dlgChangeUnderlyingMesh,SIGNAL(inputValidated()),
+ this, SLOT(OnChangeUnderlyingMeshInputValidated()));
+
+}
+
+DatasourceController::~DatasourceController() {
+ STDLOG("Deleting the DatasourceController");
+ delete _studyEditor;
+}
+
+void DatasourceController::createActions() {
+ //
+ // Main actions (toolbar and menubar)
+ //
+ QString label = QString("Add Data Source");
+ QString tooltip = QString("Add a file data source (file providing med data)");
+ QString icon = QString("datasource_add.png");
+ int actionId;
+ actionId = _salomeModule->createStandardAction(label,this, SLOT(OnAddDatasource()),icon,tooltip);
+ _salomeModule->addActionInToolbar(actionId);
+
+ label = QString("Add Image Source");
+ tooltip = QString("Create a Data Source from an image file");
+ icon = QString("image_add.png");
+ actionId = _salomeModule->createStandardAction(label,this, SLOT(OnAddImagesource()),icon,tooltip);
+ _salomeModule->addActionInToolbar(actionId);
+
+ //
+ // Actions for popup menu only
+ //
+ // Expand field timeseries
+ label = QString("Expand field timeseries");
+ icon = QString("datasource_expandfield.png");
+ actionId = _salomeModule->createStandardAction(label,this,SLOT(OnExpandField()),icon);
+ _salomeModule->addActionInPopupMenu(actionId);
+
+ // Create a control view
+ label = QString("Visualize");
+ icon = QString("datasource_view.png");
+ actionId = _salomeModule->createStandardAction(label,this,SLOT(OnVisualize()),icon);
+ _salomeModule->addActionInPopupMenu(actionId);
+
+ // Use in workspace
+ label = QString("Use in workspace");
+ icon = QString("datasource_use.png");
+ actionId = _salomeModule->createStandardAction(label,this,SLOT(OnUseInWorkspace()),icon);
+ _salomeModule->addActionInPopupMenu(actionId);
+
+ // Change underlying mesh (note that this action creates a new field in
+ // the workspace that corresponds to a copy of the selected field
+ // modified by the change of the underlying mesh.
+ label = QString("Change underlying mesh");
+ icon = QString("datasource_changeUnderlyingMesh.png");
+ actionId = _salomeModule->createStandardAction(label,this,SLOT(OnChangeUnderlyingMesh()),icon);
+ _salomeModule->addActionInPopupMenu(actionId);
+}
+
+/**
+ * This function adds the specified MED file as a datasource in the
+ * dataspace. Technically speaking, the engine loads the
+ * meta-information concerning med data from the file, gives this
+ * informations to the GUI, and the GUI creates a tree view of these
+ * data in the study object browser.
+ */
+MEDOP::DatasourceHandler * DatasourceController::addDatasource(const char * filename) {
+
+ MEDOP::DatasourceHandler * datasourceHandler =
+ MEDOPFactoryClient::getDataManager()->addDatasource(filename);
+
+ // We need a studyEditor updated on the active study
+ _studyEditor->updateActiveStudy();
+
+ // Create a datasource SObject as a father of the module root
+ SALOMEDS::SComponent_var root = _studyEditor->findRoot(QCHARSTAR(_salomeModule->moduleName()));
+ SALOMEDS::SObject_var soDatasource = _studyEditor->newObject(root);
+ _studyEditor->setName(soDatasource,datasourceHandler->name);
+ _studyEditor->setIcon(soDatasource,"datasource.png");
+ _studyEditor->setParameterInt(soDatasource,OBJECT_ID,datasourceHandler->id);
+
+
+ // We can add the meshes as children of the datasource
+ MEDOP::MeshHandlerList * meshHandlerList =
+ MEDOPFactoryClient::getDataManager()->getMeshList(datasourceHandler->id);
+
+ for(CORBA::ULong iMesh=0; iMesh<meshHandlerList->length(); iMesh++) {
+ MEDOP::MeshHandler meshHandler = (*meshHandlerList)[iMesh];
+ SALOMEDS::SObject_var soMesh = _studyEditor->newObject(soDatasource);
+ _studyEditor->setName(soMesh,meshHandler.name);
+ _studyEditor->setIcon(soMesh,"datasource_mesh.png");
+ _studyEditor->setParameterInt(soMesh,OBJECT_ID,meshHandler.id);
+ _studyEditor->setParameterBool(soMesh,OBJECT_IS_IN_WORKSPACE,false);
+
+
+ // We add the field timeseries defined on this mesh, as children
+ // of the mesh SObject
+ MEDOP::FieldseriesHandlerList * fieldseriesHandlerList =
+ MEDOPFactoryClient::getDataManager()->getFieldseriesListOnMesh(meshHandler.id);
+
+ for(CORBA::ULong iFieldseries=0; iFieldseries<fieldseriesHandlerList->length(); iFieldseries++) {
+ MEDOP::FieldseriesHandler fieldseriesHandler = (*fieldseriesHandlerList)[iFieldseries];
+ SALOMEDS::SObject_var soFieldseries = _studyEditor->newObject(soMesh);
+
+ std::string label(fieldseriesHandler.name);
+ label +=" ("+std::string(XmedDataObject::mapTypeOfFieldLabel[fieldseriesHandler.type])+")";
+ _studyEditor->setName(soFieldseries,label.c_str());
+
+ _studyEditor->setIcon(soFieldseries,"datasource_field.png");
+ _studyEditor->setParameterInt(soFieldseries,OBJECT_ID,fieldseriesHandler.id);
+ _studyEditor->setParameterBool(soFieldseries,OBJECT_IS_IN_WORKSPACE,false);
+ }
+ }
+
+ return datasourceHandler;
+}
+
+
+void DatasourceController::OnAddDatasource()
+{
+ // Dialog to get the filename where the input data are read from
+ QStringList filter;
+ filter.append(QObject::tr("MED files (*.med)"));
+
+ QString filename = SUIT_FileDlg::getFileName(_salomeModule->getApp()->desktop(),
+ "",
+ filter,
+ QObject::tr("Import MED fields"),
+ true);
+
+ if ( filename.isEmpty() ) return;
+
+ this->addDatasource(QCHARSTAR(filename));
+ _salomeModule->updateObjBrowser(true);
+}
+
+#include "DlgImageToMed.hxx"
+#include <stdio.h>
+#include <stdlib.h>
+void DatasourceController::OnAddImagesource()
+{
+
+ DlgImageToMed dialog;
+ dialog.setAutoLoaded(true);
+ int choice = dialog.exec();
+ if ( choice == QDialog::Rejected ) {
+ // The user decides to cancel the operation
+ return;
+ }
+
+ QString imageFilename = dialog.getImageFilepath();
+ QString medFilename = dialog.getMedFilepath();
+ bool autoLoad = dialog.isAutoLoaded();
+
+ std::string ROOT_DIR(getenv("MED_ROOT_DIR"));
+ std::string command(ROOT_DIR+"/bin/salome/med/image2med.py");
+ command += " -i "+QS2S(imageFilename);
+ command += " -m "+QS2S(medFilename);
+ int error = system(command.c_str());
+ if ( error != 0 ) {
+ QMessageBox::critical(_salomeModule->getApp()->desktop(),
+ tr("Operation failed"),
+ tr("The creation of med data from the image file failed"));
+ return;
+ }
+
+ if ( autoLoad ) {
+ this->addDatasource(QCHARSTAR(medFilename));
+ _salomeModule->updateObjBrowser(true);
+ }
+
+}
+
+void DatasourceController::OnExpandField()
+{
+ // We need a studyEditor updated on the active study
+ _studyEditor->updateActiveStudy();
+
+ // Get the selected objects in the study (SObject)
+ SALOME_StudyEditor::SObjectList * listOfSObject = _studyEditor->getSelectedObjects();
+ for (int i=0; i<listOfSObject->size(); i++) {
+ SALOMEDS::SObject_var soFieldseries = listOfSObject->at(i);
+
+ // First retrieve the fieldseries id associated to this study object
+ long fieldseriesId = _studyEditor->getParameterInt(soFieldseries,OBJECT_ID);
+ STDLOG("Expand the field timeseries "<<fieldseriesId);
+
+ // Then retrieve the list of fields in this timeseries
+ MEDOP::FieldHandlerList * fieldHandlerList =
+ MEDOPFactoryClient::getDataManager()->getFieldListInFieldseries(fieldseriesId);
+
+ // Finally, create an entry for each of the field
+ for(CORBA::ULong iField=0; iField<fieldHandlerList->length(); iField++) {
+ MEDOP::FieldHandler fieldHandler = (*fieldHandlerList)[iField];
+ SALOMEDS::SObject_var soField = _studyEditor->newObject(soFieldseries);
+ std::string label("it="); label += ToString(fieldHandler.iteration);
+ _studyEditor->setName(soField,label.c_str());
+ _studyEditor->setParameterInt(soField, OBJECT_ID, fieldHandler.id);
+ _studyEditor->setParameterBool(soField,OBJECT_IS_IN_WORKSPACE,false);
+ }
+ }
+ _salomeModule->updateObjBrowser(true);
+}
+
+void DatasourceController::OnVisualize() {
+ STDLOG("OnVisualize: To Be Implemented");
+
+ // We need a _studyEditor updated on the active study
+ _studyEditor->updateActiveStudy();
+
+ // Get the selected objects in the study (SObject)
+ SALOME_StudyEditor::SObjectList * listOfSObject = _studyEditor->getSelectedObjects();
+
+ // For each object, emit a signal to the workspace to request a
+ // visualisation using the tui command (so that the user can see how
+ // to make a view of an object from the tui console).
+ for (int i=0; i<listOfSObject->size(); i++) {
+ SALOMEDS::SObject_var soField = listOfSObject->at(i);
+ int fieldId = _studyEditor->getParameterInt(soField,OBJECT_ID);
+ MEDOP::FieldHandler * fieldHandler = MEDOPFactoryClient::getDataManager()->getFieldHandler(fieldId);
+
+ DatasourceEvent * event = new DatasourceEvent();
+ event->eventtype = DatasourceEvent::EVENT_VIEW_OBJECT;
+ XmedDataObject * dataObject = new XmedDataObject();
+ dataObject->setFieldHandler(*fieldHandler);
+ event->objectdata = dataObject;
+ emit datasourceSignal(event);
+ }
+
+}
+
+void DatasourceController::OnUseInWorkspace() {
+ // We need a studyEditor updated on the active study
+ _studyEditor->updateActiveStudy();
+
+ // Get the selected objects in the study (SObject)
+ SALOME_StudyEditor::SObjectList * listOfSObject = _studyEditor->getSelectedObjects();
+ if ( listOfSObject->size() == 1 ) {
+ // In this case we ask the name of the variable for the python
+ // console
+
+ // >>>
+ // _GBO_ Note that it works only for a single field but the
+ // XmedDataObject will be improved to deal with mesh, timeseries
+ // and single field in a futur version. We suppose here that a
+ // single field has been selected.
+ // <<<
+
+ SALOMEDS::SObject_var soField = listOfSObject->at(0);
+
+ bool isInWorkspace = _studyEditor->getParameterBool(soField,OBJECT_IS_IN_WORKSPACE);
+ if ( isInWorkspace ) {
+ QMessageBox::warning(_salomeModule->getApp()->desktop(),
+ tr("Operation not allowed"),
+ tr("This field is already defined in the workspace"));
+ return;
+ }
+
+ int fieldId = _studyEditor->getParameterInt(soField,OBJECT_ID);
+ MEDOP::FieldHandler * fieldHandler =
+ MEDOPFactoryClient::getDataManager()->getFieldHandler(fieldId);
+
+ QString alias(fieldHandler->fieldname);
+ DlgAlias dialog;
+ dialog.setAlias(alias);
+ int choice = dialog.exec();
+ if ( choice == QDialog::Rejected ) {
+ // The user decides to cancel the operation
+ return;
+ }
+ alias = dialog.getAlias();
+
+ DatasourceEvent * event = new DatasourceEvent();
+ event->eventtype = DatasourceEvent::EVENT_USE_OBJECT;
+ XmedDataObject * dataObject = new XmedDataObject();
+ dataObject->setFieldHandler(*fieldHandler);
+ event->objectdata = dataObject;
+ event->objectalias = alias;
+ emit datasourceSignal(event);
+ // Tag the item to prevent double import
+ _studyEditor->setParameterBool(soField,OBJECT_IS_IN_WORKSPACE,true);
+ // Tag the field as persistent on the server. It means that a
+ // saving of the workspace will save at least this field (maybe it
+ // should be an option?)
+ MEDOPFactoryClient::getDataManager()->markAsPersistent(fieldId, true);
+ }
+ else {
+ // In this case, we don't ask the user to specify an alias for
+ // each item, we just import the whole set of items.
+ for (int i=0; i<listOfSObject->size(); i++) {
+ SALOMEDS::SObject_var soField = listOfSObject->at(i);
+
+ bool isInWorkspace = _studyEditor->getParameterBool(soField,OBJECT_IS_IN_WORKSPACE);
+ if ( !isInWorkspace ) {
+ int fieldId = _studyEditor->getParameterInt(soField,OBJECT_ID);
+ MEDOP::FieldHandler * fieldHandler =
+ MEDOPFactoryClient::getDataManager()->getFieldHandler(fieldId);
+ DatasourceEvent * event = new DatasourceEvent();
+ event->eventtype = DatasourceEvent::EVENT_IMPORT_OBJECT;
+ XmedDataObject * dataObject = new XmedDataObject();
+ dataObject->setFieldHandler(*fieldHandler);
+ event->objectdata = dataObject;
+ emit datasourceSignal(event);
+ // Note that this signal is processed by the WorkspaceController
+
+ // Tag the item to prevent double import
+ _studyEditor->setParameterBool(soField,OBJECT_IS_IN_WORKSPACE,true);
+ // Tag the field as persistent on the server. It means that a
+ // saving of the workspace will save at least this field (maybe it
+ // should be an option?)
+ MEDOPFactoryClient::getDataManager()->markAsPersistent(fieldId, true);
+ }
+ else {
+ STDLOG("The field "<<_studyEditor->getName(soField)<<
+ " is already defined in the workspace");
+ }
+ }
+ }
+}
+
+
+void DatasourceController::OnChangeUnderlyingMesh() {
+ // We need a studyEditor updated on the active study
+ _studyEditor->updateActiveStudy();
+
+ // Get the selected objects in the study (SObject). In cas of a
+ // multiple selection, we consider only the first item. At least one
+ // item must be selected.
+ SALOME_StudyEditor::SObjectList * listOfSObject = _studyEditor->getSelectedObjects();
+ if ( listOfSObject->size() > 0 ) {
+ SALOMEDS::SObject_var soField = listOfSObject->at(0);
+ int fieldId = _studyEditor->getParameterInt(soField,OBJECT_ID);
+ // _GBO_ : the dialog should not be modal, so that we can choose a
+ // mesh in the browser. Then we have to emit a signal from the
+ // dialog.accept, connected to a slot of the DatasourceControler
+ _dlgChangeUnderlyingMesh->setFieldId(fieldId);
+ Qt::WindowFlags flags = _dlgChangeUnderlyingMesh->windowFlags();
+ _dlgChangeUnderlyingMesh->setWindowFlags(flags | Qt::CustomizeWindowHint | Qt::WindowStaysOnTopHint);
+ _dlgChangeUnderlyingMesh->open();
+ }
+}
+
+void DatasourceController::OnChangeUnderlyingMeshInputValidated() {
+ int meshId = _dlgChangeUnderlyingMesh->getMeshId();
+ STDLOG("meshId = " << ToString(meshId));
+ int fieldId = _dlgChangeUnderlyingMesh->getFieldId();
+ MEDOP::FieldHandler * fieldHandler =
+ MEDOPFactoryClient::getDataManager()->getFieldHandler(fieldId);
+
+ // We don't modify the original field but create first a duplicate
+ MEDOP::FieldHandler * duplicate = MEDOPFactoryClient::getCalculator()->dup(*fieldHandler);
+ MEDOPFactoryClient::getDataManager()->changeUnderlyingMesh(duplicate->id, meshId);
+
+ // Request once more the duplicate to update the meta-data on this
+ // client side
+ duplicate = MEDOPFactoryClient::getDataManager()->getFieldHandler(duplicate->id);
+
+ // >>>
+ // WARN: the following is a temporary code for test purpose
+ // Automatically add in ws
+ DatasourceEvent * event = new DatasourceEvent();
+ event->eventtype = DatasourceEvent::EVENT_IMPORT_OBJECT;
+ XmedDataObject * dataObject = new XmedDataObject();
+ dataObject->setFieldHandler(*duplicate);
+ event->objectdata = dataObject;
+ emit datasourceSignal(event);
+ // Note that this signal is processed by the WorkspaceController
+
+ // Tag the item to prevent double import
+ //_studyEditor->setParameterBool(soField,OBJECT_IS_IN_WORKSPACE,true);
+
+
+}
--- /dev/null
+
+// Author : Guillaume Boulant (EDF)
+
+#ifndef DATASOURCE_CONTROLLER_H
+#define DATASOURCE_CONTROLLER_H
+
+#include <SALOMEconfig.h>
+#include CORBA_CLIENT_HEADER(MEDDataManager)
+#include <StandardApp_Module.hxx>
+#include <SALOME_AppStudyEditor.hxx>
+
+#include <map>
+
+#include "XmedDataModel.hxx"
+#include "DlgChangeUnderlyingMesh.hxx"
+#include "MEDOPGUI.hxx"
+//
+// The DatasourceController defines data structures and classes to
+// manage the usage of objects in the data space. The data space is
+// technically the study, whose graphical representation is the
+// objects browser.
+//
+
+// A datasource event is used by the DatasourceController to notify a
+// job to the Workspace controller (Qt signal/slot pattern connected
+// by the main controller MEDOPModule). The setting of attributes and
+// usage of these attributes in the WorkspaceController depends on the
+// event type. For example, in the case of a IMPORT event, we just
+// have to transmit the object, while in the USE event we have to
+// transmit an object AND an alias.
+typedef struct {
+ enum EventType {
+ //
+ EVENT_IMPORT_OBJECT, // Simply import the object in the workspace
+ EVENT_USE_OBJECT, // Import in the workspace AND define a proxy
+ // variable in the tui console to use it
+ EVENT_VIEW_OBJECT // View with a salome viewer (SMESH/VISU/PARAVIS)
+ };
+ int eventtype;
+ XmedDataObject * objectdata;
+ QString objectalias;
+} DatasourceEvent;
+
+//
+// ==============================================================
+// Datasource controller
+// ==============================================================
+//
+class MEDOPGUI_EXPORT DatasourceController: public QObject {
+ Q_OBJECT
+
+public:
+ DatasourceController(StandardApp_Module * salomeModule);
+ ~DatasourceController();
+
+ void createActions();
+ MEDOP::DatasourceHandler * addDatasource(const char * filename);
+
+public slots:
+ // Callback connected to dialog box validation signals
+ void OnChangeUnderlyingMeshInputValidated();
+
+signals:
+ void datasourceSignal(const DatasourceEvent * event);
+
+protected slots:
+ void OnAddDatasource();
+ void OnAddImagesource();
+ void OnExpandField();
+ void OnVisualize();
+ void OnUseInWorkspace();
+ void OnChangeUnderlyingMesh();
+
+
+private:
+ StandardApp_Module * _salomeModule;
+ SALOME_AppStudyEditor * _studyEditor;
+
+ DlgChangeUnderlyingMesh * _dlgChangeUnderlyingMesh;
+
+};
+
+#endif
--- /dev/null
+// Copyright (C) 2011 CEA/DEN, EDF R&D, OPEN CASCADE
+//
+// 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.salome-platform.org/ or email : webmaster.salome@opencascade.com
+//
+// Authors : Guillaume Boulant (EDF) - 01/06/2011
+
+#include "MEDEventListener_i.hxx"
+#include <Basics_Utils.hxx>
+
+MEDEventListener_i * MEDEventListener_i::_instance = NULL;
+MEDEventListener_i * MEDEventListener_i::getInstance() {
+ // _GBO_ we will certainly need to define one EventListener per
+ // DataManager or SALOME study and not one singleton for the whole
+ // session
+ if ( _instance == NULL ) {
+ _instance = new MEDEventListener_i();
+ }
+ return _instance;
+}
+
+void MEDEventListener_i::release() {
+ delete _instance;
+}
+
+MEDEventListener_i::MEDEventListener_i()
+{
+ LOG("Creating a MEDEventListener_i instance");
+}
+MEDEventListener_i::~MEDEventListener_i()
+{
+ LOG("Deleting MEDEventListener_i instance");
+}
+
+void MEDEventListener_i::processMedEvent(const MEDOP::MedEvent & event) {
+ LOG("Start processing event for field id="<<event.fieldid);
+
+ // This function must be executed as fast as possible because the
+ // CORBA request is a synchronous call. Then we just emit a Qt
+ // signal and exit. The Qt signal should be received by the
+ // WorkspaceController (connect to a slot of WorkspaceController).
+
+ emit medEventSignal(new MEDOP::MedEvent(event));
+
+
+}
--- /dev/null
+// Copyright (C) 2011 CEA/DEN, EDF R&D, OPEN CASCADE
+//
+// 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.salome-platform.org/ or email : webmaster.salome@opencascade.com
+//
+// Authors : Guillaume Boulant (EDF) - 01/06/2011
+
+#ifndef _MED_EVENTLISTENER_I_HXX_
+#define _MED_EVENTLISTENER_I_HXX_
+
+#include <SALOMEconfig.h>
+#include CORBA_SERVER_HEADER(MEDEventListener)
+#include "SALOME_GenericObj_i.hh"
+
+#include "MEDOPGUI.hxx"
+
+#include <QObject>
+
+// Multiple inheritance requires QObject to be first
+class MEDOPGUI_EXPORT MEDEventListener_i: public QObject,
+ public POA_MEDOP::MEDEventListener,
+ public SALOME::GenericObj_i
+
+{
+ Q_OBJECT
+
+public:
+
+ //
+ // ===========================================================
+ // Functions specified in the IDL interface
+ // ===========================================================
+ //
+ void processMedEvent(const MEDOP::MedEvent & event);
+
+ //
+ // ===========================================================
+ // Other public functions (non available via CORBA)
+ // ===========================================================
+ //
+ static MEDEventListener_i * getInstance();
+ static void release();
+
+signals:
+ //void medEventSignal();
+ void medEventSignal(const MEDOP::MedEvent * event);
+
+
+private:
+ MEDEventListener_i();
+ ~MEDEventListener_i();
+
+ static MEDEventListener_i * _instance;
+
+};
+
+#endif // _MED_EVENTLISTENER_I_HXX_
+
--- /dev/null
+
+// Author : Guillaume Boulant (EDF)
+
+#include "MEDOPFactoryClient.hxx"
+#include "SALOME_KernelServices.hxx"
+
+namespace MEDOPFactoryClient {
+
+ /*!
+ * This returns a singleton (static) instance of the XMED engine.
+ */
+ MEDOP::MEDOPFactory_ptr getFactory() {
+ static MEDOP::MEDOPFactory_ptr engine;
+ if(CORBA::is_nil(engine)){
+ Engines::EngineComponent_var component =
+ KERNEL::getLifeCycleCORBA()->FindOrLoad_Component( "FactoryServer","MEDOPFactory" );
+ engine = MEDOP::MEDOPFactory::_narrow(component);
+ }
+ return engine;
+ }
+
+ /*!
+ * This returns a singleton (static) instance of the XMED data manager.
+ */
+ MEDOP::MEDDataManager_ptr getDataManager() {
+ static MEDOP::MEDDataManager_ptr dataManager;
+ if(CORBA::is_nil(dataManager)){
+ dataManager = getFactory()->getDataManager();
+ }
+ return dataManager;
+ }
+
+ /*!
+ * This returns a singleton (static) instance of the XMED calculator.
+ */
+ MEDOP::MEDCalculator_ptr getCalculator() {
+ static MEDOP::MEDCalculator_ptr calculator;
+ if(CORBA::is_nil(calculator)){
+ calculator = getFactory()->getCalculator();
+ }
+ return calculator;
+ }
+}
--- /dev/null
+// Copyright (C) 2007-2012 CEA/DEN, EDF R&D, OPEN CASCADE
+//
+// Copyright (C) 2003-2007 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.salome-platform.org/ or email : webmaster.salome@opencascade.com
+//
+
+// Author : Guillaume Boulant (EDF)
+
+#ifndef _MEDOPFACTORY_CLIENT_HXX_
+#define _MEDOPFACTORY_CLIENT_HXX_
+
+
+#include <SALOMEconfig.h>
+#include CORBA_CLIENT_HEADER(MEDOPFactory)
+#include CORBA_CLIENT_HEADER(MEDDataManager)
+#include CORBA_CLIENT_HEADER(MEDCalculator)
+
+#include "MEDOPGUI.hxx"
+
+// This helper manages static variables binded on main objects of the
+// XMED context, so that they could be initialized once and shared in
+// the whole gui context. It prevents to defined an attribute in each
+// class while this instance are singleton instances.
+
+namespace MEDOPFactoryClient {
+ MEDOPGUI_EXPORT MEDOP::MEDOPFactory_ptr getFactory();
+ MEDOPGUI_EXPORT MEDOP::MEDDataManager_ptr getDataManager();
+ MEDOPGUI_EXPORT MEDOP::MEDCalculator_ptr getCalculator();
+}
+
+#endif // _MEDOPFACTORY_CLIENT_HXX_
--- /dev/null
+// Copyright (C) 2007-2012 CEA/DEN, EDF R&D
+//
+// 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.salome-platform.org/ or email : webmaster.salome@opencascade.com
+//
+
+#ifndef MEDOPGUI_HXX_
+#define MEDOPGUI_HXX_
+
+#ifdef WIN32
+# if defined MEDOPGUI_EXPORTS
+# define MEDOPGUI_EXPORT __declspec( dllexport )
+# else
+# define MEDOPGUI_EXPORT __declspec( dllimport )
+# endif
+#else
+# define MEDOPGUI_EXPORT
+#endif
+
+#endif //MEDOPGUI_HXX_
--- /dev/null
+// Copyright (C) 2007-2012 CEA/DEN, EDF R&D, OPEN CASCADE
+//
+// Copyright (C) 2003-2007 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.salome-platform.org/ or email : webmaster.salome@opencascade.com
+//
+
+// Author : Guillaume Boulant (EDF)
+
+#include "MEDOPModule.hxx"
+#include "QtHelper.hxx"
+
+#include <SALOMEconfig.h>
+#include CORBA_CLIENT_HEADER(SALOMEDS)
+
+#include "MEDOPFactoryClient.hxx"
+
+MEDOPModule::MEDOPModule() :
+ StandardApp_Module(),
+ LightApp_Module("MED")
+{
+ // Note that the explicit call to the constructor of LightApp_Module
+ // is needed because the class LightApp_Module does not have
+ // canonical constructor (with no arguments).
+
+ // Note also that we can't use the getApp() function here because
+ // the initialize(...) function has not been called yet.
+
+ this->setModuleName("MED");
+}
+
+//
+// =====================================================================
+// This part implements the mandatory interface
+// =====================================================================
+//
+
+/*!
+ * Returns the engine of the XMED module, i.e. the SALOME component
+ * associated to the study root of the module.
+ */
+Engines::EngineComponent_ptr MEDOPModule::getEngine() const {
+ return MEDOPFactoryClient::getFactory();
+}
+
+/*!
+ * Returns the base file name of the image used for the icon's
+ * module. The file is supposed to be located in the resource
+ * directory of the module.
+ */
+QString MEDOPModule::studyIconName() {
+ return QString("MEDOP_small.png");
+}
+
+//
+// =====================================================================
+// This part add custom widgets (a dockwidget containing a tree view
+// in this example) and add special actions in the toolbox of the
+// module.
+// =====================================================================
+//
+
+/*!
+ * This function implements the interface StandardApp_Module. It
+ * creates the widgets specific for this module, in particular the
+ * workspace widget and the dataspace widget.
+ */
+void MEDOPModule::createModuleWidgets() {
+ _datasourceController = new DatasourceController(this);
+ _workspaceController = new WorkspaceController(this);
+ _xmedDataModel = new XmedDataModel();
+ _workspaceController->setDataModel(_xmedDataModel);
+
+ connect(_datasourceController, SIGNAL(datasourceSignal(const DatasourceEvent *)),
+ _workspaceController, SLOT(processDatasourceEvent(const DatasourceEvent *)));
+}
+
+bool MEDOPModule::activateModule( SUIT_Study* theStudy )
+{
+ bool bOk = StandardApp_Module::activateModule( theStudy );
+ _workspaceController->showDockWidgets(true);
+ this->setDockLayout(StandardApp_Module::DOCKLAYOUT_LEFT_VLARGE);
+ return bOk;
+}
+bool MEDOPModule::deactivateModule( SUIT_Study* theStudy )
+{
+ _workspaceController->showDockWidgets(false);
+ this->unsetDockLayout();
+ return StandardApp_Module::deactivateModule( theStudy );
+}
+
+void MEDOPModule::createModuleActions() {
+ // Creating actions concerning the dataspace
+ _datasourceController->createActions();
+ // Creating actions concerning the workspace
+ _workspaceController->createActions();
+}
--- /dev/null
+// Copyright (C) 2007-2012 CEA/DEN, EDF R&D, OPEN CASCADE
+//
+// Copyright (C) 2003-2007 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.salome-platform.org/ or email : webmaster.salome@opencascade.com
+//
+
+// Author : Guillaume Boulant (EDF)
+
+#ifndef _MEDOP_MODULE_HXX_
+#define _MEDOP_MODULE_HXX_
+
+#include "StandardApp_Module.hxx"
+
+#include "WorkspaceController.hxx"
+#include "XmedDataModel.hxx"
+#include "DatasourceController.hxx"
+
+#include <SALOMEconfig.h>
+#include CORBA_SERVER_HEADER(SALOME_Component)
+
+#include "MEDOPGUI.hxx"
+
+/*!
+ * This class defines the gui of the MEDOP module.
+ */
+class MEDOPGUI_EXPORT MEDOPModule: public StandardApp_Module
+{
+ Q_OBJECT
+
+ // ===========================================================
+ // This part implements the standard interface of a SALOME gui
+ // ===========================================================
+
+public:
+ MEDOPModule();
+
+protected:
+ virtual Engines::EngineComponent_ptr getEngine() const;
+ virtual QString studyIconName();
+ virtual void createModuleWidgets();
+ virtual void createModuleActions();
+ virtual bool activateModule( SUIT_Study* theStudy );
+ virtual bool deactivateModule( SUIT_Study* theStudy );
+
+private:
+ DatasourceController * _datasourceController;
+ WorkspaceController * _workspaceController;
+ XmedDataModel * _xmedDataModel;
+};
+
+#endif
--- /dev/null
+<!DOCTYPE TS><TS>
+<context>
+ <name>@default</name>
+ <message>
+ <source>TOOL_XMED</source>
+ <translation>XMED</translation>
+ </message>
+ <message>
+ <source>TLT_MY_NEW_ITEM</source>
+ <translation>My menu item</translation>
+ </message>
+ <message>
+ <source>TLT_LOAD_DXF</source>
+ <translation>Load DXF file</translation>
+ </message>
+ <message>
+ <source>MEN_LOAD_DXF</source>
+ <translation>Load DXF file</translation>
+ </message>
+ <message>
+ <source>STS_LOAD_DXF</source>
+ <translation>Load DXF file</translation>
+ </message>
+ <message>
+ <source>TLT_GET_BANNER</source>
+ <translation>Get XMED banner</translation>
+ </message>
+ <message>
+ <source>STS_MY_NEW_ITEM</source>
+ <translation>Call my menu item</translation>
+ </message>
+ <message>
+ <source>MEN_FILE_XMED</source>
+ <translation>Xmed</translation>
+ </message>
+ <message>
+ <source>MEN_GET_BANNER</source>
+ <translation>Get banner</translation>
+ </message>
+ <message>
+ <source>MEN_FILE</source>
+ <translation>&File</translation>
+ </message>
+ <message>
+ <source>STS_GET_BANNER</source>
+ <translation>Get XMED banner</translation>
+ </message>
+ <message>
+ <source>TLT_BUILDER1</source>
+ <translation>Create base vectors Vx, Vy, Vz</translation>
+ </message>
+ <message>
+ <source>TLT_BUILDER2</source>
+ <translation>Create connected edges (arcs and lines)</translation>
+ </message>
+ <message>
+ <source>TLT_BUILDER3</source>
+ <translation>Load a python script</translation>
+ </message>
+ <message>
+ <source>STS_BUILDER1</source>
+ <translation>Create base vectors Vx, Vy, Vz</translation>
+ </message>
+ <message>
+ <source>STS_BUILDER2</source>
+ <translation>Create connected edges (arcs and lines)</translation>
+ </message>
+ <message>
+ <source>STS_BUILDER3</source>
+ <translation>Load a python script</translation>
+ </message>
+ <message>
+ <source>MEN_BUILDER1</source>
+ <translation>Create base vectors Vx, Vy, Vz</translation>
+ </message>
+ <message>
+ <source>MEN_BUILDER2</source>
+ <translation>Create connected edges (arcs and lines)</translation>
+ </message>
+ <message>
+ <source>MEN_BUILDER3</source>
+ <translation>Load a python script</translation>
+ </message>
+ <message>
+ <source>MEN_XMED</source>
+ <translation>XMED</translation>
+ </message>
+ <message>
+ <source>MEN_MY_NEW_ITEM</source>
+ <translation>My menu item</translation>
+ </message>
+</context>
+<context>
+ <name>XMEDGUI_maquette</name>
+ <message>
+ <source>BUT_OK</source>
+ <translation>OK</translation>
+ </message>
+ <message>
+ <source>QUE_XMED_LABEL</source>
+ <translation>Name Import</translation>
+ </message>
+ <message>
+ <source>QUE_XMED_NAME</source>
+ <translation>Please, Enter your name</translation>
+ </message>
+ <message>
+ <source>INF_XMED_BANNER</source>
+ <translation>XMED Information</translation>
+ </message>
+ <message>
+ <source>INF_XMED_MENU</source>
+ <translation>This is just a test</translation>
+ </message>
+</context>
+</TS>
--- /dev/null
+<!DOCTYPE TS><TS>
+<context>
+ <name>@default</name>
+ <message>
+ <source>TLT_MY_NEW_ITEM</source>
+ <translation>My menu item</translation>
+ </message>
+ <message>
+ <source>TLT_GET_BANNER</source>
+ <translation>Get XMED banner</translation>
+ </message>
+ <message>
+ <source>TOOL_XMED</source>
+ <translation>XMED</translation>
+ </message>
+ <message>
+ <source>STS_MY_NEW_ITEM</source>
+ <translation>Call my menu item</translation>
+ </message>
+ <message>
+ <source>MEN_FILE_XMED</source>
+ <translation>Hello</translation>
+ </message>
+ <message>
+ <source>MEN_GET_BANNER</source>
+ <translation>Get banner</translation>
+ </message>
+ <message>
+ <source>MEN_FILE</source>
+ <translation>&File</translation>
+ </message>
+ <message>
+ <source>STS_GET_BANNER</source>
+ <translation>Get XMED banner</translation>
+ </message>
+ <message>
+ <source>TLT_BUILDER1</source>
+ <translation>Create base vectors Vx, Vy, Vz</translation>
+ </message>
+ <message>
+ <source>TLT_BUILDER2</source>
+ <translation>Create connected edges (arcs and lines)</translation>
+ </message>
+ <message>
+ <source>STS_BUILDER1</source>
+ <translation>Create base vectors Vx, Vy, Vz</translation>
+ </message>
+ <message>
+ <source>STS_BUILDER2</source>
+ <translation>Create connected edges (arcs and lines)</translation>
+ </message>
+ <message>
+ <source>MEN_BUILDER1</source>
+ <translation>Create base vectors Vx, Vy, Vz</translation>
+ </message>
+ <message>
+ <source>MEN_BUILDER2</source>
+ <translation>Create connected edges (arcs and lines)</translation>
+ </message>
+ <message>
+ <source>MEN_XMED</source>
+ <translation>XMED</translation>
+ </message>
+ <message>
+ <source>MEN_MY_NEW_ITEM</source>
+ <translation>My menu item</translation>
+ </message>
+</context>
+<context>
+ <name>XMEDGUI</name>
+ <message>
+ <source>BUT_OK</source>
+ <translation>OK</translation>
+ </message>
+ <message>
+ <source>QUE_XMED_LABEL</source>
+ <translation>Import Prénom</translation>
+ </message>
+ <message>
+ <source>QUE_XMED_NAME</source>
+ <translation>Entrez votre prénom, s'il vous plait</translation>
+ </message>
+ <message>
+ <source>INF_XMED_BANNER</source>
+ <translation>Information XMED</translation>
+ </message>
+ <message>
+ <source>INF_XMED_MENU</source>
+ <translation>Ceci est un simple test</translation>
+ </message>
+</context>
+</TS>
--- /dev/null
+# Copyright (C) 2007-2012 CEA/DEN, EDF R&D, OPEN CASCADE
+#
+# 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.salome-platform.org/ or email : webmaster.salome@opencascade.com
+#
+
+# author: Guillaume Boulant (EDF/R&D, 2012)
+
+include $(top_srcdir)/adm_local/unix/make_common_starter.am
+
+SUBDIRS = dialogs
+
+#
+# ---------------------------------------------------------
+# Generation rules to create moc files from QObject headers
+# and form source files from ui files
+# ---------------------------------------------------------
+# WRN: this rules could be integrated in the make_common_starter.am.
+# For that, we first have to make the naming convention of Q_OBJECT
+# files be the same between MEDGUI (old GUI) and MEDOP/gui (new GUI).
+%_moc.cxx: %.hxx
+ $(MOC) $< -o $@
+
+%.qm: %.ts
+ $(LRELEASE) $< -qm $@
+
+EXTRA_DIST+=$(MOC_FILES:%_moc.cxx=%.hxx) $(nodist_salomeres_DATA:%.qm=%.ts)
+
+mostlyclean-local:
+ rm -f @builddir@/*_moc.cxx
+ rm -f @builddir@/*.qm
+
+# Libraries targets
+lib_LTLIBRARIES = libMEDOPGUI.la
+
+salomeinclude_HEADERS = \
+ MEDOPFactoryClient.hxx \
+ XmedConsoleDriver.hxx \
+ WorkspaceController.hxx \
+ XmedDataModel.hxx \
+ MEDEventListener_i.hxx \
+ MEDOPModule.hxx \
+ DatasourceController.hxx \
+ DatasourceConstants.hxx \
+ MEDOPGUI.hxx
+
+dist_libMEDOPGUI_la_SOURCES = \
+ MEDOPFactoryClient.cxx \
+ XmedConsoleDriver.cxx \
+ WorkspaceController.cxx \
+ XmedDataModel.cxx \
+ MEDEventListener_i.cxx \
+ MEDOPModule.cxx \
+ DatasourceController.cxx \
+ factory.cxx
+
+# MOC pre-processing
+MOC_FILES = \
+ MEDOPModule_moc.cxx \
+ MEDEventListener_i_moc.cxx \
+ WorkspaceController_moc.cxx \
+ DatasourceController_moc.cxx
+
+nodist_libMEDOPGUI_la_SOURCES = $(MOC_FILES)
+
+OMNIORB_CXXFLAGS=@CORBA_CXXFLAGS@ @CORBA_INCLUDES@
+OMNIORB_LIBS=@OMNIORB_LIBS@
+
+QT_CXXFLAGS = @QT_INCLUDES@ @QT_MT_INCLUDES@
+QT_LDFLAGS = $(QT_MT_LIBS)
+
+CAS_CXXFLAGS = @CAS_CPPFLAGS@ @CAS_CXXFLAGS@
+
+BOOST_CXXFLAGS=@BOOST_CPPFLAGS@
+
+libMEDOPGUI_la_CPPFLAGS = \
+ $(QT_CXXFLAGS) \
+ $(CAS_CXXFLAGS) \
+ $(OMNIORB_CXXFLAGS) \
+ $(BOOST_CXXFLAGS) \
+ $(KERNEL_CXXFLAGS) \
+ $(GUI_CXXFLAGS) \
+ $(MED_CXXFLAGS) \
+ -I$(srcdir)/dialogs \
+ -Idialogs \
+ -I$(srcdir)/../cmp \
+ -I$(top_builddir)/idl \
+ -I$(top_builddir)
+
+libMEDOPGUI_la_LDFLAGS = \
+ -no-undefined -version-info=0:0:0 \
+ $(KERNEL_LDFLAGS) -lSalomeLifeCycleCORBA -lSalomeKernelHelpers \
+ $(GUI_LDFLAGS) -lSalomeApp -lSalomeGuiHelpers -lSalomeTreeData \
+ $(QT_LDFLAGS) \
+ $(BOOST_LIBS) \
+ $(OMNIORB_LIBS)
+
+# Specify MED internal libraries to be linked in
+libMEDOPGUI_la_LIBADD = \
+ $(top_builddir)/idl/libSalomeIDLMED.la \
+ dialogs/libMEDOPGUI_dialogs.la \
+ ../cmp/libMEDOPFactoryEngine.la
+
+if WITH_MEDMEMGUI
+libMEDOPGUI_la_CPPFLAGS += "-D__WITH_MEDMEMGUI__" -I$(top_srcdir)/src/MEDGUI
+libMEDOPGUI_la_LIBADD += $(top_builddir)/src/MEDGUI/libMEDGUI.la
+endif
+
+# resources files
+nodist_salomeres_DATA = \
+ MEDOP_msg_en.qm \
+ MEDOP_msg_fr.qm
--- /dev/null
+
+// Author : Guillaume Boulant (EDF)
+
+#include "WorkspaceController.hxx"
+#include "QtHelper.hxx"
+#include "MEDOPFactoryClient.hxx"
+#include "XmedDataModel.hxx"
+#include "DlgAlias.hxx"
+
+#include <SALOMEconfig.h>
+#include CORBA_CLIENT_HEADER(MEDEventListener)
+
+#include <SalomeApp_Application.h>
+#include <SALOME_LifeCycleCORBA.hxx>
+#include <SUIT_FileDlg.h>
+#include <SUIT_Desktop.h>
+
+/*!
+ * This class defines a DockWidget plugged in the SALOME application,
+ * and containing a tree view for rendering a hierarchical data
+ * model. This datamodel contains the objects used in the workspace.
+ */
+WorkspaceController::WorkspaceController(StandardApp_Module * salomeModule)
+ : TreeGuiManager(salomeModule->getApp(), "Workspace")
+{
+ _salomeModule = salomeModule;
+
+ this->tabifyDockWidgets(false);
+
+ // -------------------------------------------------------------
+ // Setup the MEDEventListener to manage notification from the
+ // python console.
+
+ // We create a MEDEventListener CORBA object inside this GUI class
+ // with the role of listening events coming from the python console
+ // (or even the components if needed). The events arising in the
+ // python console are send as CORBA request to this CORBA
+ // servant. Then this object can process the event by notifying the
+ // GUI of something to update for example (using signals and slots
+ // of course).
+ _medEventListener = MEDEventListener_i::getInstance();
+ MEDOP::MEDEventListener_ptr medEventListenerServant = _medEventListener->_this();
+
+ // We store the IOR inside the MEDDataManager to share this data
+ // with other parts of the application, in particular the python
+ // console that could retrieve this IOR using the
+ // getEventListenerIOR() function of the MEDDataManager.
+ SalomeApp_Application * salomeApp = salomeModule->getApp();
+ const char * medEventListenerIOR =
+ salomeApp->orb()->object_to_string(medEventListenerServant);
+ MEDOPFactoryClient::getDataManager()->setEventListenerIOR(medEventListenerIOR);
+
+ // Connect the signals emitted from the MEDEventListener to slot of
+ // this class.
+ connect(_medEventListener, SIGNAL(medEventSignal(const MEDOP::MedEvent*)),
+ this, SLOT(processMedEvent(const MEDOP::MedEvent*)));
+ // >>> WARN:
+ // Note that this class must be mocked (Q_OBJECT + moc file
+ // generated from header file) so that to be able to connect a
+ // signal to a slot of this class.
+
+ // -------------------------------------------------------------
+ // Customize the treeview rendering the datamodel with specific
+ // action for the popup menu
+ this->getDataTreeView()->clearActions();
+ _actionIds.display = this->getDataTreeView()->addAction(QObject::tr("Visualiser (une carte scalaire)"));
+ _actionIds.useInTui = this->getDataTreeView()->addAction(QObject::tr("Utiliser (dans la console)"));
+ _actionIds.exportToPv = this->getDataTreeView()->addAction(QObject::tr("Exporter (vers PARAVIS)"));
+ _actionIds.save = this->getDataTreeView()->addAction(QObject::tr("Sauvegarder (dans un fichier med)"));
+ _actionIds.remove = this->getDataTreeView()->addAction(QObject::tr("Supprimer (de lespace de travail)"));
+
+ // -------------------------------------------------------------
+ // Initialize the python console. Note that this must be done at
+ // last because the setup will try to initiate a connection to the
+ // event listener.
+ _consoleDriver = new XmedConsoleDriver(salomeApp);
+ _consoleDriver->setup();
+}
+
+WorkspaceController::~WorkspaceController() {
+ MEDEventListener_i::release();
+}
+
+/**
+ * This creates the GUI actions for driving the Workspace. The
+ * WorkspaceController creates itself this actions and implements the
+ * connected slots.
+ */
+void WorkspaceController::createActions() {
+
+ QString label = QString("Save workspace");
+ QString tooltip = QString("Save the workspace (fields and meshes) in a med file");
+ QString icon = QString("workspace_save.png");
+ int actionId = _salomeModule->createStandardAction(label,this,SLOT(OnSaveWorkspace()),icon,tooltip);
+ _salomeModule->addActionInToolbar(actionId);
+
+ label = QString("Clean workspace");
+ tooltip = QString("Clean all data in the workspace");
+ icon = QString("workspace_clean.png");
+ actionId = _salomeModule->createStandardAction(label,this,SLOT(OnCleanWorkspace()),icon,tooltip);
+ _salomeModule->addActionInToolbar(actionId);
+}
+
+/*!
+ * Implementation of the slot processItemList inherited from TreeGuiManager
+ */
+void WorkspaceController::processItemList(QStringList itemNameIdList, int actionId) {
+ if ( actionId == _actionIds.display ) {
+ STDLOG("WorkspaceController::processItemList: display");
+ this->_viewItemList(itemNameIdList);
+ }
+ else if ( actionId == _actionIds.useInTui ) {
+ STDLOG("WorkspaceController::processItemList: use");
+ this->_importItemList(itemNameIdList);
+ }
+ else if ( actionId == _actionIds.exportToPv ) {
+ STDLOG("WorkspaceController::processItemList: export");
+ this->_exportItemList(itemNameIdList);
+ }
+ else if ( actionId == _actionIds.save ) {
+ STDLOG("WorkspaceController::processItemList: save");
+ this->_saveItemList(itemNameIdList);
+ }
+ else if ( actionId == _actionIds.remove ) {
+ STDLOG("WorkspaceController::processItemList: remove");
+ }
+ else {
+ STDLOG("WorkspaceController::processItemList: ERR : action unknown ");
+ }
+}
+
+/*!
+ * This function import in the console all the fields associated to
+ * the model items of the specified list. "Import a fields" means
+ * "define a field proxy variable in the python context to manipulate
+ * the real field in the database".
+ */
+void WorkspaceController::_importItemList(QStringList itemNameIdList) {
+ LOG("WorkspaceController: signal received : display item list "<<itemNameIdList);
+ QStringList::const_iterator it;
+ for (it = itemNameIdList.constBegin(); it != itemNameIdList.constEnd(); ++it) {
+ QString itemNameId = *it;
+ this->_importItem(itemNameId);
+ }
+}
+
+/*!
+ * This function is the unit function used to import field in the
+ * console (see _importItemList).
+ */
+void WorkspaceController::_importItem(QString itemNameId) {
+ XmedDataModel * dataModel = (XmedDataModel *)this->getDataModel();
+ if ( dataModel == NULL ) {
+ LOG("No data model associated to this tree view");
+ return;
+ }
+
+ // We can request the dataModel to obtain the dataObject associated
+ // to this item (iteNameId is a TreeView id, Qt stuff only).
+ XmedDataObject * dataObject =
+ (XmedDataObject *)dataModel->getDataObject(QS2S(itemNameId));
+
+ if ( dataObject == NULL ) {
+ LOG("WorkspaceController: WARN! No data object associated to the item "<<itemNameId);
+ return;
+ }
+
+ // Then, we can request this data object to obtain the associated
+ // FieldHandler.
+ MEDOP::FieldHandler * fieldHandler = dataObject->getFieldHandler();
+ STDLOG("Field: mesh="<<fieldHandler->meshname<<" name="<<fieldHandler->fieldname);
+
+ // Finally, we can import the field
+ bool askForOptions = true;
+ _importFieldIntoConsole(fieldHandler, askForOptions);
+}
+
+/**
+ * This function import the specified field into the tui console. This
+ * means to define a field proxy variable in the python context to
+ * manipulate the field. We can raise a gui to specify some import
+ * options or simply specify the alias (i.e. the name of the python
+ * variable).
+ */
+void WorkspaceController::_importFieldIntoConsole(MEDOP::FieldHandler * fieldHandler,
+ bool askForOptions,
+ const char * alias)
+{
+ STDLOG("alias="<<alias);
+
+ // By default, the alias is the name of the field
+ QString *effectiveAlias;
+ if ( alias == NULL ) {
+ effectiveAlias = new QString(fieldHandler->fieldname);
+ }
+ else {
+ effectiveAlias = new QString(alias);
+ }
+
+ // We can propose to the user to specify some additionnal
+ // informations concerning what must be imported.
+ //
+ // In this version, we just ask the alias the field will be
+ // manipulated with. The default alias is the field name. This alias
+ // should be asked to the user to get a short name to manipulate.
+ if ( askForOptions ) {
+ DlgAlias dialog;
+ dialog.setAlias(*effectiveAlias);
+ int choice = dialog.exec();
+ if ( choice == QDialog::Rejected ) {
+ // The user decides to cancel the operation
+ return;
+ }
+ *effectiveAlias = dialog.getAlias();
+ }
+
+ //
+ // Then, the list of python commands can be written and executed to
+ // define the field in the console
+ //
+ QStringList commands;
+ commands+=QString("%1=xmed.fieldproxy.newFieldProxy(fieldHandlerId=%2)")
+ .arg(*effectiveAlias)
+ .arg(fieldHandler->id);
+
+ _consoleDriver->exec(commands);
+}
+
+/*!
+ * This function is a Qt slot connected to the signal medEventSignal
+ * emitted from the MEDEventListener. It processes events coming from
+ * the python console.
+ */
+void WorkspaceController::processMedEvent(const MEDOP::MedEvent * event) {
+ STDLOG("WorkspaceController::processMedEvent");
+ STDLOG("fieldid :"<<event->fieldid);
+
+ XmedDataModel * dataModel = (XmedDataModel *)this->getDataModel();
+ if ( dataModel == NULL ) {
+ STDLOG("No data model associated to this tree view");
+ return;
+ }
+
+ if ( event->type == MEDOP::EVENT_ADDNEW_FIELD ) {
+ STDLOG("add new field");
+ MEDOP::FieldHandler * fieldHandler =
+ MEDOPFactoryClient::getDataManager()->getFieldHandler(event->fieldid);
+
+ XmedDataObject * dataObject = (XmedDataObject *)dataModel->newDataObject();
+ dataObject->setFieldHandler(*fieldHandler);
+ this->getDataTreeModel()->addData(dataObject);
+ }
+
+}
+
+/*!
+ * This function save a list of fields in a med file. The med file
+ * name is requested to the user using a file chooser dialog box
+ */
+void WorkspaceController::_saveItemList(QStringList itemNameIdList) {
+ XmedDataProcessor * dataProcessor = new XmedDataProcessor(this->getDataModel());
+ dataProcessor->process(itemNameIdList);
+ MEDOP::FieldIdList_var fieldIdList = dataProcessor->getResultingFieldIdList();
+ delete dataProcessor;
+
+ QStringList filter;
+ filter.append(QObject::tr("MED files (*.med)"));
+ QString filename = SUIT_FileDlg::getFileName(_salomeModule->getApp()->desktop(),
+ "",
+ filter,
+ QObject::tr("Save selected fields"),
+ false);
+
+ if ( filename.isEmpty() ) return;
+
+ MEDOPFactoryClient::getDataManager()->saveFields(QCHARSTAR(filename), fieldIdList);
+}
+
+/**
+ * This function export the list of specified field item to PARAVIS
+ * module. This consists in create a med file gathering the selected
+ * items, then to import this file in PARAVIS, and finally to create a
+ * scalar map of the first item to start the job.
+ */
+void WorkspaceController::_exportItemList(QStringList itemNameIdList) {
+ XmedDataProcessor * dataProcessor = new XmedDataProcessor(this->getDataModel());
+ dataProcessor->process(itemNameIdList);
+ MEDOP::FieldIdList_var fieldIdList = dataProcessor->getResultingFieldIdList();
+ delete dataProcessor;
+
+ // _GBO_ We use a temporary file to proceed with this export to
+ // paravis. I'm sure it could be better in a futur version or when I
+ // will get a better understanding of paravis API.
+ const char * tmpfilename = "/tmp/medop_export2paravis.med";
+ MEDOPFactoryClient::getDataManager()->saveFields(tmpfilename, fieldIdList);
+
+ // We import the whole file but create a scalar map for the first
+ // selected field only (it's just an export to continue the job in
+ // paravis)
+ XmedDataModel * dataModel = (XmedDataModel *)this->getDataModel();
+ if ( dataModel == NULL ) {
+ STDLOG("No data model associated to this tree view");
+ return;
+ }
+ QString itemNameId = itemNameIdList[0];
+ XmedDataObject * dataObject = (XmedDataObject *)dataModel->getDataObject(QS2S(itemNameId));
+ if ( dataObject == NULL ) {
+ LOG("WorkspaceController: WARN! No data object associated to the item "<<itemNameId);
+ return;
+ }
+ MEDOP::FieldHandler * fieldHandler = dataObject->getFieldHandler();
+ QStringList commands;
+ commands+=QString("from xmed.driver_pvis import pvis_scalarmap");
+ commands+=QString("pvis_scalarmap('%1','%2','%3',%4,%5)")
+ .arg(tmpfilename)
+ .arg(QString(fieldHandler->meshname))
+ .arg(QString(fieldHandler->fieldname))
+ .arg(fieldHandler->type)
+ .arg(fieldHandler->iteration);
+ _consoleDriver->exec(commands);
+
+}
+
+
+/*!
+ * This function sends a request to the SALOME data visualisation
+ * (module VISU or PARAVIS) for displaying a scalar map of the fields
+ * associated to the model items in the specified list.
+ *
+ */
+void WorkspaceController::_viewItemList(QStringList itemNameIdList) {
+
+ // __GBO__: In this version, we consider only the first field in the selection
+ QString itemNameId = itemNameIdList[0];
+
+ XmedDataModel * dataModel = (XmedDataModel *)this->getDataModel();
+ if ( dataModel == NULL ) {
+ LOG("No data model associated to this tree view");
+ return;
+ }
+
+ // We can request the dataModel to obtain the dataObject associated
+ // to this item (iteNameId is a TreeView id, Qt stuff only).
+ XmedDataObject * dataObject =
+ (XmedDataObject *)dataModel->getDataObject(QS2S(itemNameId));
+ if ( dataObject == NULL ) {
+ LOG("WorkspaceController: WARN! No data object associated to the item "<<itemNameId);
+ return;
+ }
+
+ // Then, we can request this data object to obtain the associated
+ // FieldHandler.
+ MEDOP::FieldHandler * fieldHandler = dataObject->getFieldHandler();
+
+ // And finally, we can create the set of medop instructions to
+ // generate the scalar map on this field.
+ QStringList commands;
+ commands+=QString("view(get(%1))").arg(fieldHandler->id);
+ _consoleDriver->exec(commands);
+}
+
+/**
+ * This slot can process the event coming from the
+ * DatasourceController. The connection between the datasource signal
+ * and this slot is realized by the main class MEDOPModule.
+ */
+void WorkspaceController::processDatasourceEvent(const DatasourceEvent * event) {
+ XmedDataModel * dataModel = (XmedDataModel *)this->getDataModel();
+ if ( dataModel == NULL ) {
+ STDLOG("No data model associated to this tree view");
+ return;
+ }
+
+ // >>>
+ // __GBO__ To know what to do we should test the type, because the
+ // object could be a mesh, a timeseries or a single field. We test
+ // here the case of a single field. Moreover, there could have
+ // options such that "change the underlying mesh".
+ // <<<
+
+ XmedDataObject * dataObject = event->objectdata;
+
+ if ( event->eventtype == DatasourceEvent::EVENT_IMPORT_OBJECT ) {
+ STDLOG("IMPORT object in workspace:\n"<<dataObject->toString());
+ // _GBO_ QUESTION: tag automatically the object as a peristant object ??
+ // We first add the data object to the internal data model
+ dataModel->addDataObject(dataObject);
+ // Then we request the tree view to consider this new object
+ this->getDataTreeModel()->addData(dataObject);
+ }
+ else if ( event->eventtype == DatasourceEvent::EVENT_USE_OBJECT ) {
+ STDLOG("USE object in workspace:\n"<<dataObject->toString());
+ // We first add the data object to the internal data model
+ dataModel->addDataObject(dataObject);
+ // Then we request the tree view to consider this new object
+ this->getDataTreeModel()->addData(dataObject);
+
+ // We define a proxy for this object in the tui console.
+ STDLOG("Define a proxy variable in the console with name : "<<QCHARSTAR(event->objectalias));
+ bool askForOptions = false;
+ _importFieldIntoConsole(dataObject->getFieldHandler(),
+ askForOptions,
+ QCHARSTAR(event->objectalias));
+ }
+ else if ( event->eventtype == DatasourceEvent::EVENT_VIEW_OBJECT ) {
+ QStringList commands;
+ commands+=QString("view(get(%1))").arg(dataObject->getFieldHandler()->id);
+ _consoleDriver->exec(commands);
+ }
+ else {
+ STDLOG("The event "<<event->eventtype<<" is not implemented yet");
+ }
+
+}
+
+void WorkspaceController::OnSaveWorkspace() {
+
+ // Dialog to get the filename where the workspace must be saved into
+ QStringList filter;
+ filter.append(QObject::tr("MED files (*.med)"));
+
+ QString filename = SUIT_FileDlg::getFileName(_salomeModule->getApp()->desktop(),
+ "",
+ filter,
+ QObject::tr("Save workspace data"),
+ false);
+
+ if ( filename.isEmpty() ) return;
+
+ STDLOG("OnWorkspaceSave: save the workspace in the file " << QCHARSTAR(filename));
+ QStringList commands;
+ commands+=QString("save('%1')").arg(filename);
+ _consoleDriver->exec(commands);
+}
+
+#include <QMessageBox>
+void WorkspaceController::OnCleanWorkspace() {
+ QMessageBox::warning(_salomeModule->getApp()->desktop(),
+ tr("Not implemented yet"),
+ tr("This function is not implemented yet"));
+}
--- /dev/null
+
+// Author : Guillaume Boulant (EDF)
+
+#ifndef _WORKSPACE_CONTROLLER_HXX
+#define _WORKSPACE_CONTROLLER_HXX
+
+#include "TreeGuiManager.hxx"
+#include "MEDEventListener_i.hxx"
+#include "XmedConsoleDriver.hxx"
+#include "DatasourceController.hxx"
+#include "MEDOPGUI.hxx"
+
+#include <SALOMEconfig.h>
+#include CORBA_CLIENT_HEADER(MEDDataManager)
+#include <StandardApp_Module.hxx>
+
+#include <vector>
+
+/*!
+ * This class defines a DockWidget plugged in the SALOME application,
+ * and containing a tree view for rendering a hierarchical data
+ * model. This datamodel contains the objects used in the workspace.
+ */
+class MEDOPGUI_EXPORT WorkspaceController: public TreeGuiManager {
+
+ Q_OBJECT
+
+public:
+ WorkspaceController(StandardApp_Module * salomeModule);
+ ~WorkspaceController();
+
+ void createActions();
+
+public slots:
+ // Slots overiding TreeGuiManager
+ void processItemList(QStringList itemNameIdList, int actionId);
+
+ // Internal slots
+ void processMedEvent(const MEDOP::MedEvent * event);
+ void processDatasourceEvent(const DatasourceEvent * event);
+ void OnSaveWorkspace();
+ void OnCleanWorkspace();
+
+private:
+ XmedConsoleDriver * _consoleDriver;
+ StandardApp_Module * _salomeModule;
+ void _importItem(QString itemNameId);
+ void _importItemList(QStringList itemNameIdList);
+ void _importFieldIntoConsole(MEDOP::FieldHandler * fieldHandler,
+ bool askForOptions,
+ const char * alias=NULL);
+
+ void _exportItemList(QStringList itemNameIdList);
+ void _saveItemList(QStringList itemNameIdList);
+ void _viewItemList(QStringList itemNameIdList);
+
+ MEDEventListener_i * _medEventListener;
+
+ // This structure is intended to memorized in a bundle the whole set
+ // of integers identifying the actions of the popup menu associated
+ // to the TreeView embedded in this TreeGuiManager
+ typedef struct {
+ int display;
+ int useInTui;
+ int exportToPv;
+ int remove;
+ int save;
+ } ActionIdentifiers;
+
+ ActionIdentifiers _actionIds;
+
+};
+
+#endif // _WORKSPACE_CONTROLLER_HXX
--- /dev/null
+// Copyright (C) 2011 CEA/DEN, EDF R&D, OPEN CASCADE
+//
+// 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.salome-platform.org/ or email : webmaster.salome@opencascade.com
+//
+// Author : Guillaume Boulant (EDF)
+
+#include "XmedConsoleDriver.hxx"
+#include "Utils_SALOME_Exception.hxx"
+
+XmedConsoleDriver::XmedConsoleDriver(SalomeApp_Application * application) {
+ _pyConsole = application->pythonConsole();
+ if ( !_pyConsole ) {
+ const char * msg = "The python console can't be obtained from the SALOME application";
+ throw SALOME_Exception(msg);
+ }
+ _importXmedDone = false;
+}
+
+/*!
+ * This function sends instructions to the python console to setup the
+ * environment for med operations (in particular, it imports the medop
+ * commands). Even if the function is called twice, then the
+ * instructions are sent once.
+ */
+void XmedConsoleDriver::setup() {
+
+ if ( !_importXmedDone ) {
+ QStringList commands;
+ // First import xmed to initialize the main objects, in particular
+ // the corba pointer to the event listener.
+ commands+="import xmed";
+ // Set the globals dictionnary so that the fields tools work properly.
+ commands+="xmed.setConsoleGlobals(globals())";
+ // Import the tools required for field operations
+ commands+="from xmed import load, get, put, dup, ls, la, save, view, doc, wipe";
+ // A last one to clear the console screen
+ //commands+="wipe";
+
+ this->exec(commands);
+ _importXmedDone = true;
+ }
+}
+
+/*!
+ * This function sends the specified list of commands to the console.
+ */
+void XmedConsoleDriver::exec(QStringList commands) {
+ QStringListIterator it(commands);
+ while (it.hasNext()) {
+ _pyConsole->exec(it.next());
+ }
+}
--- /dev/null
+// Copyright (C) 2011 CEA/DEN, EDF R&D, OPEN CASCADE
+//
+// 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.salome-platform.org/ or email : webmaster.salome@opencascade.com
+//
+// Author : Guillaume Boulant (EDF)
+
+#ifndef XMEDCONSOLEDRIVER_HXX
+#define XMEDCONSOLEDRIVER_HXX
+
+#include <SalomeApp_Application.h>
+#include <PyConsole_Console.h>
+
+#include <QStringList>
+
+#include "MEDOPGUI.hxx"
+
+class MEDOPGUI_EXPORT XmedConsoleDriver {
+
+public:
+ XmedConsoleDriver(SalomeApp_Application * application);
+
+ void setup();
+ void exec(QStringList commands);
+
+private:
+ PyConsole_Console * _pyConsole;
+ bool _importXmedDone;
+};
+
+#endif //XMEDCONSOLEDRIVER_HXX
--- /dev/null
+#include "XmedDataModel.hxx"
+#include <Basics_Utils.hxx>
+
+//
+// =================================================================
+// XmedDataObject implementation
+// =================================================================
+//
+
+XmedDataObject::XmedDataObject() : DataObject() {
+}
+
+/*! This function specified the localization of the object in the
+ * hierarchical organization
+ */
+string XmedDataObject::getPath() {
+ string path =
+ string(_fieldHandler.meshname) + pathsep +
+ _getTypedFieldLabel();
+ return path;
+}
+
+void XmedDataObject::setFieldHandler(MEDOP::FieldHandler fieldHandler) {
+ _fieldHandler = fieldHandler;
+ this->setLabel(string("it = ")+ToString(_fieldHandler.iteration));
+}
+MEDOP::FieldHandler * XmedDataObject::getFieldHandler() {
+ return &_fieldHandler;
+}
+
+const char * XmedDataObject::mapTypeOfFieldLabel[XmedDataObject::NB_TYPE_OF_FIELDS] =
+ {"ON_CELLS", "ON_NODES", "ON_GAUSS_PT", "ON_GAUSS_NE" };
+/*!
+ * This function implements the convention for displaying a fieldname
+ * characterized by its spatial discretisation type.
+ */
+string XmedDataObject::_getTypedFieldLabel() {
+ // A field name could identify several MEDCoupling fields, that
+ // differ by their spatial discretization on the mesh (values on
+ // cells, values on nodes, ...). This spatial discretization is
+ // specified by the TypeOfField that is an integer value in this
+ // list:
+ // 0 = ON_CELLS
+ // 1 = ON_NODES
+ // 2 = ON_GAUSS_PT
+ // 3 = ON_GAUSS_NE
+ if ( _fieldHandler.type < 0 ||
+ _fieldHandler.type >= XmedDataObject::NB_TYPE_OF_FIELDS ) {
+ return string("UNKNOWN");
+ }
+ string label(_fieldHandler.fieldname);
+ label +=" ("+string(mapTypeOfFieldLabel[_fieldHandler.type])+")";
+ return label;
+}
+
+//
+// =================================================================
+// XmedDataModel implementation
+// =================================================================
+//
+
+/*!
+ * This function creates a XmedDataObject instance of DataObject and
+ * add the newly created instance to the model.
+ */
+DataObject * XmedDataModel::newDataObject() {
+ XmedDataObject * dataObject = new XmedDataObject();
+ this->addDataObject(dataObject);
+ return dataObject;
+}
+
+//
+// =================================================================
+// XmedDataProcessor implementation
+// =================================================================
+//
+void XmedDataProcessor::preprocess(QStringList itemNameIdList) {
+ int maxsize = itemNameIdList.size();
+ _resultingFieldHandlerList = new MEDOP::FieldHandlerList(maxsize);
+ _resultingFieldIdList = new MEDOP::FieldIdList(maxsize);
+ _objectIndex = 0;
+}
+
+MEDOP::FieldHandlerList * XmedDataProcessor::getResultingFieldHandlerList() {
+ return _resultingFieldHandlerList._retn();
+}
+
+MEDOP::FieldIdList * XmedDataProcessor::getResultingFieldIdList() {
+ return _resultingFieldIdList._retn();
+}
+
+void XmedDataProcessor::processDataObject(DataObject * dataObject) {
+ XmedDataObject * xmedDataObject = (XmedDataObject *)dataObject;
+ MEDOP::FieldHandler fieldHandler = *(xmedDataObject->getFieldHandler());
+ int fieldId = fieldHandler.id;
+
+ int newsize = _objectIndex+1;
+ _resultingFieldHandlerList->length(newsize);
+ _resultingFieldIdList->length(newsize);
+
+ _resultingFieldHandlerList[_objectIndex] = fieldHandler;
+ _resultingFieldIdList[_objectIndex] = fieldId;
+ _objectIndex++;
+
+ // >>>>>
+ // Example (if needed) for creating the list of id from the lsite of handler
+ /*
+ MEDOP::FieldIdList_var fieldIdList = new MEDOP::FieldIdList();
+ fieldIdList->length(fieldHandlerList->length());
+ for (int i=0; i<fieldHandlerList->length(); i++) {
+ MEDOP::FieldHandler fieldHandler = (*fieldHandlerList)[i];
+ fieldIdList[i] = fieldHandler.id;
+ }
+ */
+ // <<<<<
+}
--- /dev/null
+#ifndef _XMEDDATAMODEL_H_
+#define _XMEDDATAMODEL_H_
+
+#include <SALOMEconfig.h>
+#include CORBA_CLIENT_HEADER(MEDDataManager)
+
+#include "MEDOPGUI.hxx"
+
+//
+// =================================================================
+// Definition of an atom in the data model as an implementation of
+// the virtual class DataObject
+// =================================================================
+//
+#include "DataObject.hxx"
+class MEDOPGUI_EXPORT XmedDataObject: public DataObject {
+public:
+ XmedDataObject();
+ virtual string getPath();
+
+ void setFieldHandler(MEDOP::FieldHandler fieldHandler);
+ MEDOP::FieldHandler * getFieldHandler();
+
+ static const int NB_TYPE_OF_FIELDS = 4;
+ static const char * mapTypeOfFieldLabel[NB_TYPE_OF_FIELDS];
+
+private:
+ MEDOP::FieldHandler _fieldHandler;
+ string _getTypedFieldLabel();
+};
+
+//
+// =================================================================
+// Definition of the data model as an implementation of the virtual
+// class DataModel. It implements the DataObject factory.
+// =================================================================
+//
+#include "DataModel.hxx"
+class MEDOPGUI_EXPORT XmedDataModel: public DataModel {
+public:
+ XmedDataModel():DataModel() {};
+ virtual DataObject * newDataObject();
+};
+
+//
+// =================================================================
+// Base class for data processing
+// =================================================================
+// Howto use it?
+//
+// 1) Create an instance, call the "process" function,
+// then get the result you are interested in, using the corresponding
+// "result*" function.
+//
+// 2) Alternativly, you can just call directly the suitable master
+// "get*" function to process and get the result you are interested
+// in.
+//
+#include "DataProcessor.hxx"
+
+class MEDOPGUI_EXPORT XmedDataProcessor : public DataProcessor {
+public:
+ XmedDataProcessor(DataModel * dataModel):DataProcessor(dataModel) {};
+
+ MEDOP::FieldHandlerList * getResultingFieldHandlerList();
+ MEDOP::FieldIdList * getResultingFieldIdList();
+
+protected:
+ virtual void preprocess(QStringList itemNameIdList);
+ virtual void processDataObject(DataObject * dataObject);
+
+private:
+ MEDOP::FieldHandlerList_var _resultingFieldHandlerList;
+ MEDOP::FieldIdList_var _resultingFieldIdList;
+ int _objectIndex;
+
+};
+
+
+#endif // _XMEDDATAMODEL_H_
--- /dev/null
+# Copyright (C) 2007-2012 CEA/DEN, EDF R&D, OPEN CASCADE
+#
+# 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.salome-platform.org/ or email : webmaster.salome@opencascade.com
+#
+
+INCLUDE(${GUI_ROOT_DIR}/adm_local/cmake_files/UseQT4EXT.cmake)
+
+MACRO (QT4_WRAP_UI_XX outfiles )
+ QT4_EXTRACT_OPTIONS(ui_files ui_options ${ARGN})
+ FOREACH (it ${ui_files})
+ GET_FILENAME_COMPONENT(outfile ${it} NAME_WE)
+ GET_FILENAME_COMPONENT(infile ${it} ABSOLUTE)
+ SET(outfile ${CMAKE_CURRENT_BINARY_DIR}/ui_${outfile}.hxx)
+ ADD_CUSTOM_COMMAND(OUTPUT ${outfile}
+ COMMAND ${QT_UIC_EXECUTABLE}
+ ARGS ${ui_options} -o ${outfile} ${infile}
+ MAIN_DEPENDENCY ${infile})
+ SET(${outfiles} ${${outfiles}} ${outfile})
+ ENDFOREACH (it)
+ENDMACRO (QT4_WRAP_UI_XX)
+
+SET(MEDOPGUI_dialogs_FORMS
+ GenericDialog.ui
+ DlgAlias.ui
+ DlgUseInWorkspace.ui
+ DlgChangeUnderlyingMesh.ui
+ DlgImageToMed.ui
+)
+QT4_WRAP_UI_XX(MEDOPGUI_dialogs_FORMS_HEADERS ${MEDOPGUI_dialogs_FORMS})
+
+SET(MEDOPGUI_dialogs_FILES
+ GenericDialog.hxx
+ DlgAlias.hxx
+ DlgUseInWorkspace.hxx
+ DlgChangeUnderlyingMesh.hxx
+ DlgImageToMed.hxx
+)
+QT4_WRAP_CPP(MEDOPGUI_dialogs_HEADERS_MOC ${MEDOPGUI_dialogs_FILES})
+
+INCLUDE_DIRECTORIES(
+ ${OMNIORB_INCLUDE_DIRS}
+ ${CAS_INCLUDE_DIRS}
+ ${BOOST_INCLUDE_DIRS}
+ ${PTHREAD_INCLUDE_DIRS}
+ ${CMAKE_CURRENT_BINARY_DIR}
+ ${KERNEL_ROOT_DIR}/include/salome
+ ${GUI_ROOT_DIR}/include/salome
+ ${CMAKE_CURRENT_SOURCE_DIR}/..
+)
+
+SET(MEDOPGUI_dialogs_SOURCES
+ GenericDialog.cxx
+ DlgAlias.cxx
+ DlgUseInWorkspace.cxx
+ DlgChangeUnderlyingMesh.cxx
+ DlgImageToMed.cxx
+)
+
+ADD_LIBRARY(MEDOPGUI_dialogs SHARED ${MEDOPGUI_dialogs_SOURCES} ${MEDOPGUI_dialogs_HEADERS_MOC} ${MEDOPGUI_dialogs_FORMS_HEADERS})
+SET_TARGET_PROPERTIES(MEDOPGUI_dialogs PROPERTIES COMPILE_FLAGS "${CAS_DEFINITIONS} ${BOOST_DEFINITIONS} ${PLATFORM_DEFINITIONS} ${OMNIORB_DEFINITIONS}")
+TARGET_LINK_LIBRARIES(MEDOPGUI_dialogs ${CAS_KERNEL} ${QT_LIBS} ${SalomeIDLKernel} ${SalomeGuiHelpers} ${OMNIORB_LIBS} ${qtx} ${suit} ${PLATFORM_LIBS} ${SalomeLifeCycleCORBA} ${SalomeKernelHelpers} ${SalomeGuiHelpers})
+INSTALL(TARGETS MEDOPGUI_dialogs DESTINATION ${MED_salomelib_LIBS})
+
+#
+# ---------------------------------------------------------
+# Unit test programs
+# ---------------------------------------------------------
+#
+ADD_EXECUTABLE(dlgTester dlgTester.cxx)
+SET_TARGET_PROPERTIES(dlgTester PROPERTIES COMPILE_FLAGS "${PLATFORM_DEFINITIONS}")
+TARGET_LINK_LIBRARIES(dlgTester MEDOPGUI_dialogs ${QT_LIBS} ${PLATFORM_LIBS})
+INSTALL(TARGETS dlgTester DESTINATION ${MED_salomebin_BINS})
+#ADD_TEST(dlgTester dlgTester)
+
+FILE(GLOB COMMON_HEADERS_HXX "${CMAKE_CURRENT_SOURCE_DIR}/*.hxx")
+INSTALL(FILES ${COMMON_HEADERS_HXX} DESTINATION ${MED_salomeinclude_HEADERS})
+
--- /dev/null
+#include "DlgAlias.hxx"
+
+#include <iostream>
+using std::cout;
+using std::endl;
+#define LOG(msg) cout << "[XMED - DlgAlias]::"<< msg << endl;
+
+
+DlgAlias::DlgAlias(QDialog *parent) : QDialog(parent)
+{
+ ui.setupUi(this); // A faire en premier
+
+ /*
+ Personnalisez vos widgets ici si nécessaire
+ Réalisez des connexions supplémentaires entre signaux et slots
+ */
+
+ // The slots accept() and reject() are already connected to the
+ // buttonbox (inherited features)
+}
+
+void DlgAlias::accept() {
+ if ( this->getAlias().isEmpty() ) {
+ LOG("accept(): the alias can't be void");
+ }
+ else {
+ QDialog::accept();
+ }
+}
+
+//void DlgAlias::reject() {
+// LOG("reject() is not implemented yet");
+//}
+
+void DlgAlias::setAlias(QString alias) {
+ ui.txtAlias->setText(alias);
+}
+
+QString DlgAlias::getAlias() {
+ return ui.txtAlias->text().trimmed();
+}
--- /dev/null
+#ifndef DLGALIAS_H
+#define DLGALIAS_H
+
+#include <QtGui>
+#include "ui_DlgAlias.hxx"
+#include "MEDOPGUIdialogs.hxx"
+
+class MEDOPGUI_DIALOGS_EXPORT DlgAlias : public QDialog
+{
+ Q_OBJECT
+
+ public:
+ DlgAlias(QDialog *parent = 0);
+
+ void setAlias(QString alias);
+ QString getAlias();
+
+ private slots:
+ void accept();
+ //void reject();
+
+ private:
+ Ui_DlgAlias ui; // instance of the class defined in ui_DlgAlias.h
+};
+
+
+#endif // DLGALIAS_H
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>DlgAlias</class>
+ <widget class="QDialog" name="DlgAlias">
+ <property name="geometry">
+ <rect>
+ <x>0</x>
+ <y>0</y>
+ <width>477</width>
+ <height>241</height>
+ </rect>
+ </property>
+ <property name="windowTitle">
+ <string>Sélection d'un alias pour le champ</string>
+ </property>
+ <layout class="QHBoxLayout">
+ <property name="spacing">
+ <number>6</number>
+ </property>
+ <property name="margin">
+ <number>9</number>
+ </property>
+ <item>
+ <layout class="QVBoxLayout">
+ <property name="spacing">
+ <number>6</number>
+ </property>
+ <property name="margin">
+ <number>0</number>
+ </property>
+ <item>
+ <widget class="QLabel" name="lblHelpAlias">
+ <property name="palette">
+ <palette>
+ <active>
+ <colorrole role="WindowText">
+ <brush brushstyle="SolidPattern">
+ <color alpha="255">
+ <red>0</red>
+ <green>0</green>
+ <blue>0</blue>
+ </color>
+ </brush>
+ </colorrole>
+ <colorrole role="Button">
+ <brush brushstyle="SolidPattern">
+ <color alpha="255">
+ <red>255</red>
+ <green>255</green>
+ <blue>255</blue>
+ </color>
+ </brush>
+ </colorrole>
+ <colorrole role="Light">
+ <brush brushstyle="SolidPattern">
+ <color alpha="255">
+ <red>255</red>
+ <green>255</green>
+ <blue>255</blue>
+ </color>
+ </brush>
+ </colorrole>
+ <colorrole role="Midlight">
+ <brush brushstyle="SolidPattern">
+ <color alpha="255">
+ <red>255</red>
+ <green>255</green>
+ <blue>255</blue>
+ </color>
+ </brush>
+ </colorrole>
+ <colorrole role="Dark">
+ <brush brushstyle="SolidPattern">
+ <color alpha="255">
+ <red>127</red>
+ <green>127</green>
+ <blue>127</blue>
+ </color>
+ </brush>
+ </colorrole>
+ <colorrole role="Mid">
+ <brush brushstyle="SolidPattern">
+ <color alpha="255">
+ <red>170</red>
+ <green>170</green>
+ <blue>170</blue>
+ </color>
+ </brush>
+ </colorrole>
+ <colorrole role="Text">
+ <brush brushstyle="SolidPattern">
+ <color alpha="255">
+ <red>0</red>
+ <green>0</green>
+ <blue>0</blue>
+ </color>
+ </brush>
+ </colorrole>
+ <colorrole role="BrightText">
+ <brush brushstyle="SolidPattern">
+ <color alpha="255">
+ <red>255</red>
+ <green>255</green>
+ <blue>255</blue>
+ </color>
+ </brush>
+ </colorrole>
+ <colorrole role="ButtonText">
+ <brush brushstyle="SolidPattern">
+ <color alpha="255">
+ <red>0</red>
+ <green>0</green>
+ <blue>0</blue>
+ </color>
+ </brush>
+ </colorrole>
+ <colorrole role="Base">
+ <brush brushstyle="SolidPattern">
+ <color alpha="255">
+ <red>255</red>
+ <green>255</green>
+ <blue>255</blue>
+ </color>
+ </brush>
+ </colorrole>
+ <colorrole role="Window">
+ <brush brushstyle="SolidPattern">
+ <color alpha="255">
+ <red>255</red>
+ <green>255</green>
+ <blue>255</blue>
+ </color>
+ </brush>
+ </colorrole>
+ <colorrole role="Shadow">
+ <brush brushstyle="SolidPattern">
+ <color alpha="255">
+ <red>0</red>
+ <green>0</green>
+ <blue>0</blue>
+ </color>
+ </brush>
+ </colorrole>
+ <colorrole role="AlternateBase">
+ <brush brushstyle="SolidPattern">
+ <color alpha="255">
+ <red>255</red>
+ <green>255</green>
+ <blue>255</blue>
+ </color>
+ </brush>
+ </colorrole>
+ </active>
+ <inactive>
+ <colorrole role="WindowText">
+ <brush brushstyle="SolidPattern">
+ <color alpha="255">
+ <red>0</red>
+ <green>0</green>
+ <blue>0</blue>
+ </color>
+ </brush>
+ </colorrole>
+ <colorrole role="Button">
+ <brush brushstyle="SolidPattern">
+ <color alpha="255">
+ <red>255</red>
+ <green>255</green>
+ <blue>255</blue>
+ </color>
+ </brush>
+ </colorrole>
+ <colorrole role="Light">
+ <brush brushstyle="SolidPattern">
+ <color alpha="255">
+ <red>255</red>
+ <green>255</green>
+ <blue>255</blue>
+ </color>
+ </brush>
+ </colorrole>
+ <colorrole role="Midlight">
+ <brush brushstyle="SolidPattern">
+ <color alpha="255">
+ <red>255</red>
+ <green>255</green>
+ <blue>255</blue>
+ </color>
+ </brush>
+ </colorrole>
+ <colorrole role="Dark">
+ <brush brushstyle="SolidPattern">
+ <color alpha="255">
+ <red>127</red>
+ <green>127</green>
+ <blue>127</blue>
+ </color>
+ </brush>
+ </colorrole>
+ <colorrole role="Mid">
+ <brush brushstyle="SolidPattern">
+ <color alpha="255">
+ <red>170</red>
+ <green>170</green>
+ <blue>170</blue>
+ </color>
+ </brush>
+ </colorrole>
+ <colorrole role="Text">
+ <brush brushstyle="SolidPattern">
+ <color alpha="255">
+ <red>0</red>
+ <green>0</green>
+ <blue>0</blue>
+ </color>
+ </brush>
+ </colorrole>
+ <colorrole role="BrightText">
+ <brush brushstyle="SolidPattern">
+ <color alpha="255">
+ <red>255</red>
+ <green>255</green>
+ <blue>255</blue>
+ </color>
+ </brush>
+ </colorrole>
+ <colorrole role="ButtonText">
+ <brush brushstyle="SolidPattern">
+ <color alpha="255">
+ <red>0</red>
+ <green>0</green>
+ <blue>0</blue>
+ </color>
+ </brush>
+ </colorrole>
+ <colorrole role="Base">
+ <brush brushstyle="SolidPattern">
+ <color alpha="255">
+ <red>255</red>
+ <green>255</green>
+ <blue>255</blue>
+ </color>
+ </brush>
+ </colorrole>
+ <colorrole role="Window">
+ <brush brushstyle="SolidPattern">
+ <color alpha="255">
+ <red>255</red>
+ <green>255</green>
+ <blue>255</blue>
+ </color>
+ </brush>
+ </colorrole>
+ <colorrole role="Shadow">
+ <brush brushstyle="SolidPattern">
+ <color alpha="255">
+ <red>0</red>
+ <green>0</green>
+ <blue>0</blue>
+ </color>
+ </brush>
+ </colorrole>
+ <colorrole role="AlternateBase">
+ <brush brushstyle="SolidPattern">
+ <color alpha="255">
+ <red>255</red>
+ <green>255</green>
+ <blue>255</blue>
+ </color>
+ </brush>
+ </colorrole>
+ </inactive>
+ <disabled>
+ <colorrole role="WindowText">
+ <brush brushstyle="SolidPattern">
+ <color alpha="255">
+ <red>127</red>
+ <green>127</green>
+ <blue>127</blue>
+ </color>
+ </brush>
+ </colorrole>
+ <colorrole role="Button">
+ <brush brushstyle="SolidPattern">
+ <color alpha="255">
+ <red>255</red>
+ <green>255</green>
+ <blue>255</blue>
+ </color>
+ </brush>
+ </colorrole>
+ <colorrole role="Light">
+ <brush brushstyle="SolidPattern">
+ <color alpha="255">
+ <red>255</red>
+ <green>255</green>
+ <blue>255</blue>
+ </color>
+ </brush>
+ </colorrole>
+ <colorrole role="Midlight">
+ <brush brushstyle="SolidPattern">
+ <color alpha="255">
+ <red>255</red>
+ <green>255</green>
+ <blue>255</blue>
+ </color>
+ </brush>
+ </colorrole>
+ <colorrole role="Dark">
+ <brush brushstyle="SolidPattern">
+ <color alpha="255">
+ <red>127</red>
+ <green>127</green>
+ <blue>127</blue>
+ </color>
+ </brush>
+ </colorrole>
+ <colorrole role="Mid">
+ <brush brushstyle="SolidPattern">
+ <color alpha="255">
+ <red>170</red>
+ <green>170</green>
+ <blue>170</blue>
+ </color>
+ </brush>
+ </colorrole>
+ <colorrole role="Text">
+ <brush brushstyle="SolidPattern">
+ <color alpha="255">
+ <red>127</red>
+ <green>127</green>
+ <blue>127</blue>
+ </color>
+ </brush>
+ </colorrole>
+ <colorrole role="BrightText">
+ <brush brushstyle="SolidPattern">
+ <color alpha="255">
+ <red>255</red>
+ <green>255</green>
+ <blue>255</blue>
+ </color>
+ </brush>
+ </colorrole>
+ <colorrole role="ButtonText">
+ <brush brushstyle="SolidPattern">
+ <color alpha="255">
+ <red>127</red>
+ <green>127</green>
+ <blue>127</blue>
+ </color>
+ </brush>
+ </colorrole>
+ <colorrole role="Base">
+ <brush brushstyle="SolidPattern">
+ <color alpha="255">
+ <red>255</red>
+ <green>255</green>
+ <blue>255</blue>
+ </color>
+ </brush>
+ </colorrole>
+ <colorrole role="Window">
+ <brush brushstyle="SolidPattern">
+ <color alpha="255">
+ <red>255</red>
+ <green>255</green>
+ <blue>255</blue>
+ </color>
+ </brush>
+ </colorrole>
+ <colorrole role="Shadow">
+ <brush brushstyle="SolidPattern">
+ <color alpha="255">
+ <red>0</red>
+ <green>0</green>
+ <blue>0</blue>
+ </color>
+ </brush>
+ </colorrole>
+ <colorrole role="AlternateBase">
+ <brush brushstyle="SolidPattern">
+ <color alpha="255">
+ <red>255</red>
+ <green>255</green>
+ <blue>255</blue>
+ </color>
+ </brush>
+ </colorrole>
+ </disabled>
+ </palette>
+ </property>
+ <property name="font">
+ <font>
+ <family>Sans Serif</family>
+ <italic>true</italic>
+ </font>
+ </property>
+ <property name="text">
+ <string>Vous pouvez définir un alias pour manipuler le champ dans la console:</string>
+ </property>
+ <property name="wordWrap">
+ <bool>true</bool>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <layout class="QHBoxLayout">
+ <property name="spacing">
+ <number>6</number>
+ </property>
+ <property name="margin">
+ <number>0</number>
+ </property>
+ <item>
+ <widget class="QLabel" name="lblAlias">
+ <property name="text">
+ <string>Alias</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QLineEdit" name="txtAlias"/>
+ </item>
+ </layout>
+ </item>
+ <item>
+ <widget class="QLabel" name="lblInfo">
+ <property name="font">
+ <font>
+ <italic>true</italic>
+ </font>
+ </property>
+ <property name="text">
+ <string>(cette operation définit une variable de nom <alias> dans la console TUI. Tapez "<alias>.help()" pour voir les fonctions à disposition, ou tou simplement "doc")</string>
+ </property>
+ <property name="wordWrap">
+ <bool>true</bool>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <spacer>
+ <property name="orientation">
+ <enum>Qt::Vertical</enum>
+ </property>
+ <property name="sizeHint" stdset="0">
+ <size>
+ <width>402</width>
+ <height>71</height>
+ </size>
+ </property>
+ </spacer>
+ </item>
+ <item>
+ <widget class="QDialogButtonBox" name="buttonBox">
+ <property name="orientation">
+ <enum>Qt::Horizontal</enum>
+ </property>
+ <property name="standardButtons">
+ <set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </item>
+ </layout>
+ </widget>
+ <resources/>
+ <connections>
+ <connection>
+ <sender>buttonBox</sender>
+ <signal>accepted()</signal>
+ <receiver>DlgAlias</receiver>
+ <slot>accept()</slot>
+ <hints>
+ <hint type="sourcelabel">
+ <x>248</x>
+ <y>254</y>
+ </hint>
+ <hint type="destinationlabel">
+ <x>157</x>
+ <y>274</y>
+ </hint>
+ </hints>
+ </connection>
+ <connection>
+ <sender>buttonBox</sender>
+ <signal>rejected()</signal>
+ <receiver>DlgAlias</receiver>
+ <slot>reject()</slot>
+ <hints>
+ <hint type="sourcelabel">
+ <x>316</x>
+ <y>260</y>
+ </hint>
+ <hint type="destinationlabel">
+ <x>286</x>
+ <y>274</y>
+ </hint>
+ </hints>
+ </connection>
+ </connections>
+</ui>
--- /dev/null
+#include "DlgChangeUnderlyingMesh.hxx"
+#include "DatasourceConstants.hxx"
+
+#include <QString>
+#include <QMessageBox>
+
+DlgChangeUnderlyingMesh::DlgChangeUnderlyingMesh(SALOME_AppStudyEditor * studyEditor,
+ QDialog * parent)
+ : GenericDialog(parent)
+{
+ ui.setupUi(this->getPanel());
+ _meshId=-1;
+ _studyEditor = studyEditor;
+ connect(this->ui.btnSelectMesh, SIGNAL(clicked()), this, SLOT(OnSelectMesh()));
+ this->setWindowTitle("Remplacement du maillage support");
+}
+
+/** This reset the dialog for a new selection */
+void DlgChangeUnderlyingMesh::setFieldId(int fieldId) {
+ _fieldId = fieldId;
+ _meshId=-1;
+ this->ui.txtMesh->setText(QString(""));
+}
+int DlgChangeUnderlyingMesh::getFieldId() {
+ return _fieldId;
+}
+
+int DlgChangeUnderlyingMesh::getMeshId() {
+ return _meshId;
+}
+
+void DlgChangeUnderlyingMesh::accept() {
+ if ( _meshId == -1 ) {
+ QMessageBox::warning(this,
+ tr("Data verification"),
+ tr("You must select a mesh in the explorer and clic the button Mesh"));
+ }
+ else {
+ GenericDialog::accept();
+ emit inputValidated();
+ }
+}
+
+void DlgChangeUnderlyingMesh::OnSelectMesh() {
+ SALOME_StudyEditor::SObjectList * listOfSObject = _studyEditor->getSelectedObjects();
+ if ( listOfSObject->size() > 0 ) {
+ SALOMEDS::SObject_var soMesh = listOfSObject->at(0);
+ // _GBO_ TODO: we should test here if it is a mesh (attribute in
+ // the sobject)
+ _meshId = _studyEditor->getParameterInt(soMesh,OBJECT_ID);
+ const char * meshname = _studyEditor->getName(soMesh);
+ this->ui.txtMesh->setText(QString(meshname));
+ }
+
+}
--- /dev/null
+#ifndef _DlgChangeUnderlyingMesh_HXX
+#define _DlgChangeUnderlyingMesh_HXX
+
+#include <QtGui>
+#include "ui_DlgChangeUnderlyingMesh.hxx"
+#include "GenericDialog.hxx"
+
+#include <SALOME_AppStudyEditor.hxx>
+#include "MEDOPGUIdialogs.hxx"
+
+class MEDOPGUI_DIALOGS_EXPORT DlgChangeUnderlyingMesh : public GenericDialog
+{
+ Q_OBJECT
+
+public:
+ DlgChangeUnderlyingMesh(SALOME_AppStudyEditor * studyEditor, QDialog *parent = 0);
+
+ void setFieldId(int fieldId);
+ int getFieldId();
+ int getMeshId();
+
+signals:
+ void inputValidated();
+
+protected slots:
+ void OnSelectMesh();
+
+ private:
+ void accept();
+ int _meshId;
+
+ SALOME_AppStudyEditor * _studyEditor;
+ int _fieldId;
+
+ Ui_DlgChangeUnderlyingMesh ui; // instance of the class defined in ui_DlgChangeUnderlyingMesh.hxx
+};
+
+
+#endif // _DlgChangeUnderlyingMesh_HXX
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>DlgChangeUnderlyingMesh</class>
+ <widget class="QWidget" name="DlgChangeUnderlyingMesh">
+ <property name="geometry">
+ <rect>
+ <x>0</x>
+ <y>0</y>
+ <width>479</width>
+ <height>429</height>
+ </rect>
+ </property>
+ <property name="windowTitle">
+ <string>Form</string>
+ </property>
+ <layout class="QHBoxLayout" name="horizontalLayout_2">
+ <item>
+ <layout class="QVBoxLayout" name="verticalLayout_2">
+ <item>
+ <layout class="QVBoxLayout" name="verticalLayout">
+ <item>
+ <widget class="QLabel" name="lblHelp">
+ <property name="palette">
+ <palette>
+ <active>
+ <colorrole role="WindowText">
+ <brush brushstyle="SolidPattern">
+ <color alpha="255">
+ <red>0</red>
+ <green>0</green>
+ <blue>0</blue>
+ </color>
+ </brush>
+ </colorrole>
+ <colorrole role="Button">
+ <brush brushstyle="SolidPattern">
+ <color alpha="255">
+ <red>255</red>
+ <green>255</green>
+ <blue>255</blue>
+ </color>
+ </brush>
+ </colorrole>
+ <colorrole role="Light">
+ <brush brushstyle="SolidPattern">
+ <color alpha="255">
+ <red>255</red>
+ <green>255</green>
+ <blue>255</blue>
+ </color>
+ </brush>
+ </colorrole>
+ <colorrole role="Midlight">
+ <brush brushstyle="SolidPattern">
+ <color alpha="255">
+ <red>255</red>
+ <green>255</green>
+ <blue>255</blue>
+ </color>
+ </brush>
+ </colorrole>
+ <colorrole role="Dark">
+ <brush brushstyle="SolidPattern">
+ <color alpha="255">
+ <red>127</red>
+ <green>127</green>
+ <blue>127</blue>
+ </color>
+ </brush>
+ </colorrole>
+ <colorrole role="Mid">
+ <brush brushstyle="SolidPattern">
+ <color alpha="255">
+ <red>170</red>
+ <green>170</green>
+ <blue>170</blue>
+ </color>
+ </brush>
+ </colorrole>
+ <colorrole role="Text">
+ <brush brushstyle="SolidPattern">
+ <color alpha="255">
+ <red>0</red>
+ <green>0</green>
+ <blue>0</blue>
+ </color>
+ </brush>
+ </colorrole>
+ <colorrole role="BrightText">
+ <brush brushstyle="SolidPattern">
+ <color alpha="255">
+ <red>255</red>
+ <green>255</green>
+ <blue>255</blue>
+ </color>
+ </brush>
+ </colorrole>
+ <colorrole role="ButtonText">
+ <brush brushstyle="SolidPattern">
+ <color alpha="255">
+ <red>0</red>
+ <green>0</green>
+ <blue>0</blue>
+ </color>
+ </brush>
+ </colorrole>
+ <colorrole role="Base">
+ <brush brushstyle="SolidPattern">
+ <color alpha="255">
+ <red>255</red>
+ <green>255</green>
+ <blue>255</blue>
+ </color>
+ </brush>
+ </colorrole>
+ <colorrole role="Window">
+ <brush brushstyle="SolidPattern">
+ <color alpha="255">
+ <red>255</red>
+ <green>255</green>
+ <blue>255</blue>
+ </color>
+ </brush>
+ </colorrole>
+ <colorrole role="Shadow">
+ <brush brushstyle="SolidPattern">
+ <color alpha="255">
+ <red>0</red>
+ <green>0</green>
+ <blue>0</blue>
+ </color>
+ </brush>
+ </colorrole>
+ <colorrole role="AlternateBase">
+ <brush brushstyle="SolidPattern">
+ <color alpha="255">
+ <red>255</red>
+ <green>255</green>
+ <blue>255</blue>
+ </color>
+ </brush>
+ </colorrole>
+ </active>
+ <inactive>
+ <colorrole role="WindowText">
+ <brush brushstyle="SolidPattern">
+ <color alpha="255">
+ <red>0</red>
+ <green>0</green>
+ <blue>0</blue>
+ </color>
+ </brush>
+ </colorrole>
+ <colorrole role="Button">
+ <brush brushstyle="SolidPattern">
+ <color alpha="255">
+ <red>255</red>
+ <green>255</green>
+ <blue>255</blue>
+ </color>
+ </brush>
+ </colorrole>
+ <colorrole role="Light">
+ <brush brushstyle="SolidPattern">
+ <color alpha="255">
+ <red>255</red>
+ <green>255</green>
+ <blue>255</blue>
+ </color>
+ </brush>
+ </colorrole>
+ <colorrole role="Midlight">
+ <brush brushstyle="SolidPattern">
+ <color alpha="255">
+ <red>255</red>
+ <green>255</green>
+ <blue>255</blue>
+ </color>
+ </brush>
+ </colorrole>
+ <colorrole role="Dark">
+ <brush brushstyle="SolidPattern">
+ <color alpha="255">
+ <red>127</red>
+ <green>127</green>
+ <blue>127</blue>
+ </color>
+ </brush>
+ </colorrole>
+ <colorrole role="Mid">
+ <brush brushstyle="SolidPattern">
+ <color alpha="255">
+ <red>170</red>
+ <green>170</green>
+ <blue>170</blue>
+ </color>
+ </brush>
+ </colorrole>
+ <colorrole role="Text">
+ <brush brushstyle="SolidPattern">
+ <color alpha="255">
+ <red>0</red>
+ <green>0</green>
+ <blue>0</blue>
+ </color>
+ </brush>
+ </colorrole>
+ <colorrole role="BrightText">
+ <brush brushstyle="SolidPattern">
+ <color alpha="255">
+ <red>255</red>
+ <green>255</green>
+ <blue>255</blue>
+ </color>
+ </brush>
+ </colorrole>
+ <colorrole role="ButtonText">
+ <brush brushstyle="SolidPattern">
+ <color alpha="255">
+ <red>0</red>
+ <green>0</green>
+ <blue>0</blue>
+ </color>
+ </brush>
+ </colorrole>
+ <colorrole role="Base">
+ <brush brushstyle="SolidPattern">
+ <color alpha="255">
+ <red>255</red>
+ <green>255</green>
+ <blue>255</blue>
+ </color>
+ </brush>
+ </colorrole>
+ <colorrole role="Window">
+ <brush brushstyle="SolidPattern">
+ <color alpha="255">
+ <red>255</red>
+ <green>255</green>
+ <blue>255</blue>
+ </color>
+ </brush>
+ </colorrole>
+ <colorrole role="Shadow">
+ <brush brushstyle="SolidPattern">
+ <color alpha="255">
+ <red>0</red>
+ <green>0</green>
+ <blue>0</blue>
+ </color>
+ </brush>
+ </colorrole>
+ <colorrole role="AlternateBase">
+ <brush brushstyle="SolidPattern">
+ <color alpha="255">
+ <red>255</red>
+ <green>255</green>
+ <blue>255</blue>
+ </color>
+ </brush>
+ </colorrole>
+ </inactive>
+ <disabled>
+ <colorrole role="WindowText">
+ <brush brushstyle="SolidPattern">
+ <color alpha="255">
+ <red>127</red>
+ <green>127</green>
+ <blue>127</blue>
+ </color>
+ </brush>
+ </colorrole>
+ <colorrole role="Button">
+ <brush brushstyle="SolidPattern">
+ <color alpha="255">
+ <red>255</red>
+ <green>255</green>
+ <blue>255</blue>
+ </color>
+ </brush>
+ </colorrole>
+ <colorrole role="Light">
+ <brush brushstyle="SolidPattern">
+ <color alpha="255">
+ <red>255</red>
+ <green>255</green>
+ <blue>255</blue>
+ </color>
+ </brush>
+ </colorrole>
+ <colorrole role="Midlight">
+ <brush brushstyle="SolidPattern">
+ <color alpha="255">
+ <red>255</red>
+ <green>255</green>
+ <blue>255</blue>
+ </color>
+ </brush>
+ </colorrole>
+ <colorrole role="Dark">
+ <brush brushstyle="SolidPattern">
+ <color alpha="255">
+ <red>127</red>
+ <green>127</green>
+ <blue>127</blue>
+ </color>
+ </brush>
+ </colorrole>
+ <colorrole role="Mid">
+ <brush brushstyle="SolidPattern">
+ <color alpha="255">
+ <red>170</red>
+ <green>170</green>
+ <blue>170</blue>
+ </color>
+ </brush>
+ </colorrole>
+ <colorrole role="Text">
+ <brush brushstyle="SolidPattern">
+ <color alpha="255">
+ <red>127</red>
+ <green>127</green>
+ <blue>127</blue>
+ </color>
+ </brush>
+ </colorrole>
+ <colorrole role="BrightText">
+ <brush brushstyle="SolidPattern">
+ <color alpha="255">
+ <red>255</red>
+ <green>255</green>
+ <blue>255</blue>
+ </color>
+ </brush>
+ </colorrole>
+ <colorrole role="ButtonText">
+ <brush brushstyle="SolidPattern">
+ <color alpha="255">
+ <red>127</red>
+ <green>127</green>
+ <blue>127</blue>
+ </color>
+ </brush>
+ </colorrole>
+ <colorrole role="Base">
+ <brush brushstyle="SolidPattern">
+ <color alpha="255">
+ <red>255</red>
+ <green>255</green>
+ <blue>255</blue>
+ </color>
+ </brush>
+ </colorrole>
+ <colorrole role="Window">
+ <brush brushstyle="SolidPattern">
+ <color alpha="255">
+ <red>255</red>
+ <green>255</green>
+ <blue>255</blue>
+ </color>
+ </brush>
+ </colorrole>
+ <colorrole role="Shadow">
+ <brush brushstyle="SolidPattern">
+ <color alpha="255">
+ <red>0</red>
+ <green>0</green>
+ <blue>0</blue>
+ </color>
+ </brush>
+ </colorrole>
+ <colorrole role="AlternateBase">
+ <brush brushstyle="SolidPattern">
+ <color alpha="255">
+ <red>255</red>
+ <green>255</green>
+ <blue>255</blue>
+ </color>
+ </brush>
+ </colorrole>
+ </disabled>
+ </palette>
+ </property>
+ <property name="font">
+ <font>
+ <family>Sans Serif</family>
+ <italic>true</italic>
+ </font>
+ </property>
+ <property name="text">
+ <string>Sélectionnez un maillage dans l'explorateur:</string>
+ </property>
+ <property name="wordWrap">
+ <bool>true</bool>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <layout class="QHBoxLayout" name="horizontalLayout">
+ <item>
+ <widget class="QPushButton" name="btnSelectMesh">
+ <property name="text">
+ <string>Maillage -></string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QLineEdit" name="txtMesh"/>
+ </item>
+ </layout>
+ </item>
+ <item>
+ <widget class="QLabel" name="lblInfo">
+ <property name="font">
+ <font>
+ <italic>true</italic>
+ </font>
+ </property>
+ <property name="text">
+ <string>(L'explorateur donne une vue des sources de données med (maillage et champs) référencés dans l'espace de données)</string>
+ </property>
+ <property name="wordWrap">
+ <bool>true</bool>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </item>
+ <item>
+ <spacer>
+ <property name="orientation">
+ <enum>Qt::Vertical</enum>
+ </property>
+ <property name="sizeHint" stdset="0">
+ <size>
+ <width>20</width>
+ <height>121</height>
+ </size>
+ </property>
+ </spacer>
+ </item>
+ </layout>
+ </item>
+ </layout>
+ </widget>
+ <resources/>
+ <connections/>
+</ui>
--- /dev/null
+#include "DlgImageToMed.hxx"
+#include "SALOME_GuiServices.hxx"
+
+#include <SUIT_FileDlg.h>
+#include <SUIT_Desktop.h>
+
+#include <QString>
+#include <QStringList>
+#include <QPixmap>
+#include <QIcon>
+
+DlgImageToMed::DlgImageToMed(QDialog *parent) : GenericDialog(parent)
+{
+ ui.setupUi(this->getPanel());
+
+ QString moduleName = "MED";
+ QPixmap aPixmap = GUI::getResourcesManager()->loadPixmap( moduleName, "folder.png" );
+ QIcon icon(aPixmap);
+ ui.btnImageFileChooser->setIcon(icon);
+ ui.btnMedFileChooser->setIcon(icon);
+
+ connect(ui.btnImageFileChooser,SIGNAL(clicked()),
+ this, SLOT(OnBtnImageFileChooser()));
+ connect(ui.btnMedFileChooser,SIGNAL(clicked()),
+ this, SLOT(OnBtnMedFileChooser()));
+
+ this->setWindowTitle("Créer un champ à partir d'une image");
+}
+
+QString DlgImageToMed::getImageFilepath() {
+ return ui.txtImageFile->text().trimmed();
+}
+
+QString DlgImageToMed::getMedFilepath() {
+ return ui.txtMedFile->text().trimmed();
+}
+
+void DlgImageToMed::setAutoLoaded(bool autoloaded) {
+ if ( autoloaded ) {
+ ui.chkAutoLoad->setCheckState(Qt::Checked);
+ }
+ else {
+ ui.chkAutoLoad->setCheckState(Qt::Unchecked);
+ }
+}
+
+bool DlgImageToMed::isAutoLoaded() {
+ Qt::CheckState state = ui.chkAutoLoad->checkState();
+ if ( state == Qt::Checked ) {
+ return true;
+ }
+ return false;
+}
+
+void DlgImageToMed::OnBtnImageFileChooser() {
+ QStringList filter;
+ filter.append(QObject::tr("Image files (*.png)"));
+ filter.append(QObject::tr("Image files (*.jpg)"));
+ filter.append(QObject::tr("Image files (*.pgm)"));
+ filter.append(QObject::tr("All files (*.*)"));
+ QString filename = SUIT_FileDlg::getFileName(ui.btnImageFileChooser,
+ "",
+ filter,
+ QObject::tr("Select image file"),
+ true);
+ if ( filename.isEmpty() ) return;
+ ui.txtImageFile->setText(filename);
+
+ QString medFilename = (filename.remove(filename.size()-3,3))+"med";
+ ui.txtMedFile->setText(medFilename);
+}
+
+void DlgImageToMed::OnBtnMedFileChooser() {
+ QStringList filter;
+ filter.append(QObject::tr("MED files (*.med)"));
+ QString filename = SUIT_FileDlg::getFileName(ui.btnMedFileChooser,
+ "",
+ filter,
+ QObject::tr("Specify a MED file"),
+ true);
+ if ( filename.isEmpty() ) return;
+ ui.txtMedFile->setText(filename);
+}
--- /dev/null
+#ifndef _DlgImageToMed_HXX
+#define _DlgImageToMed_HXX
+
+#include <QtGui>
+#include "ui_DlgImageToMed.hxx"
+#include "GenericDialog.hxx"
+
+#include "MEDOPGUIdialogs.hxx"
+
+class MEDOPGUI_DIALOGS_EXPORT DlgImageToMed : public GenericDialog
+{
+ Q_OBJECT
+
+ public:
+ DlgImageToMed(QDialog *parent = 0);
+
+ QString getImageFilepath();
+ QString getMedFilepath();
+ bool isAutoLoaded();
+ void setAutoLoaded(bool autoloaded);
+
+ protected slots:
+ void OnBtnImageFileChooser();
+ void OnBtnMedFileChooser();
+
+ private:
+ Ui_DlgImageToMed ui; // instance of the class defined in ui_DlgImageToMed.hxx
+};
+
+
+#endif // _DlgImageToMed_HXX
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>DlgImageToMed</class>
+ <widget class="QWidget" name="DlgImageToMed">
+ <property name="geometry">
+ <rect>
+ <x>0</x>
+ <y>0</y>
+ <width>690</width>
+ <height>439</height>
+ </rect>
+ </property>
+ <property name="windowTitle">
+ <string>Form</string>
+ </property>
+ <layout class="QHBoxLayout" name="horizontalLayout_2">
+ <item>
+ <layout class="QVBoxLayout" name="verticalLayout_5">
+ <item>
+ <layout class="QVBoxLayout" name="verticalLayout_4">
+ <item>
+ <layout class="QHBoxLayout" name="horizontalLayout">
+ <item>
+ <layout class="QVBoxLayout" name="verticalLayout">
+ <item>
+ <widget class="QLabel" name="lblImageFile">
+ <property name="text">
+ <string>Fichier Image:</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QLabel" name="lblMedFile">
+ <property name="text">
+ <string>Fichier MED:</string>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </item>
+ <item>
+ <layout class="QVBoxLayout" name="verticalLayout_2">
+ <item>
+ <widget class="QLineEdit" name="txtImageFile"/>
+ </item>
+ <item>
+ <widget class="QLineEdit" name="txtMedFile"/>
+ </item>
+ </layout>
+ </item>
+ <item>
+ <layout class="QVBoxLayout" name="verticalLayout_3">
+ <item>
+ <widget class="QPushButton" name="btnImageFileChooser">
+ <property name="text">
+ <string/>
+ </property>
+ <property name="icon">
+ <iconset>
+ <normaloff>../../../../resources/XMED_load.png</normaloff>../../../../resources/XMED_load.png</iconset>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QPushButton" name="btnMedFileChooser">
+ <property name="text">
+ <string/>
+ </property>
+ <property name="icon">
+ <iconset>
+ <normaloff>../../../../resources/XMED_load.png</normaloff>../../../../resources/XMED_load.png</iconset>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </item>
+ </layout>
+ </item>
+ <item>
+ <widget class="QCheckBox" name="chkAutoLoad">
+ <property name="text">
+ <string>Charger automatiquement</string>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </item>
+ <item>
+ <spacer name="verticalSpacer">
+ <property name="orientation">
+ <enum>Qt::Vertical</enum>
+ </property>
+ <property name="sizeHint" stdset="0">
+ <size>
+ <width>20</width>
+ <height>40</height>
+ </size>
+ </property>
+ </spacer>
+ </item>
+ </layout>
+ </item>
+ </layout>
+ </widget>
+ <resources/>
+ <connections/>
+</ui>
--- /dev/null
+#include "DlgUseInWorkspace.hxx"
+
+DlgUseInWorkspace::DlgUseInWorkspace(QDialog *parent) : GenericDialog(parent)
+{
+ ui.setupUi(this->getPanel());
+}
--- /dev/null
+#ifndef _DlgUseInWorkspace_HXX
+#define _DlgUseInWorkspace_HXX
+
+#include <QtGui>
+#include "ui_DlgUseInWorkspace.hxx"
+#include "GenericDialog.hxx"
+
+class DlgUseInWorkspace : public GenericDialog
+{
+ Q_OBJECT
+
+ public:
+ DlgUseInWorkspace(QDialog *parent = 0);
+
+ private:
+ Ui_DlgUseInWorkspace ui; // instance of the class defined in ui_DlgUseInWorkspace.hxx
+};
+
+
+#endif // _DlgUseInWorkspace_HXX
--- /dev/null
+<ui version="4.0" >
+ <class>DlgUseInWorkspace</class>
+ <widget class="QWidget" name="DlgUseInWorkspace" >
+ <property name="geometry" >
+ <rect>
+ <x>0</x>
+ <y>0</y>
+ <width>340</width>
+ <height>300</height>
+ </rect>
+ </property>
+ <property name="windowTitle" >
+ <string>Form</string>
+ </property>
+ <layout class="QHBoxLayout" >
+ <property name="margin" >
+ <number>9</number>
+ </property>
+ <property name="spacing" >
+ <number>6</number>
+ </property>
+ <item>
+ <layout class="QVBoxLayout" >
+ <property name="margin" >
+ <number>0</number>
+ </property>
+ <property name="spacing" >
+ <number>6</number>
+ </property>
+ <item>
+ <layout class="QHBoxLayout" >
+ <property name="margin" >
+ <number>0</number>
+ </property>
+ <property name="spacing" >
+ <number>6</number>
+ </property>
+ <item>
+ <layout class="QVBoxLayout" >
+ <property name="margin" >
+ <number>0</number>
+ </property>
+ <property name="spacing" >
+ <number>6</number>
+ </property>
+ <item>
+ <widget class="QLabel" name="label" >
+ <property name="text" >
+ <string>Pression :</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QLabel" name="label_2" >
+ <property name="text" >
+ <string>Température :</string>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </item>
+ <item>
+ <layout class="QVBoxLayout" >
+ <property name="margin" >
+ <number>0</number>
+ </property>
+ <property name="spacing" >
+ <number>6</number>
+ </property>
+ <item>
+ <widget class="QLineEdit" name="lineEdit" />
+ </item>
+ <item>
+ <widget class="QLineEdit" name="lineEdit_2" />
+ </item>
+ </layout>
+ </item>
+ </layout>
+ </item>
+ <item>
+ <spacer>
+ <property name="orientation" >
+ <enum>Qt::Vertical</enum>
+ </property>
+ <property name="sizeHint" >
+ <size>
+ <width>20</width>
+ <height>121</height>
+ </size>
+ </property>
+ </spacer>
+ </item>
+ </layout>
+ </item>
+ </layout>
+ </widget>
+ <resources/>
+ <connections/>
+</ui>
--- /dev/null
+#include "GenericDialog.hxx"
+
+GenericDialog::GenericDialog(QDialog *parent) : QDialog(parent)
+{
+ ui.setupUi(this); // A faire en premier
+
+ /*
+ Personnalisez vos widgets ici si nécessaire
+ Réalisez des connexions supplémentaires entre signaux et slots
+ */
+
+ // The slots accept() and reject() are already connected to the
+ // buttonbox (inherited features)
+}
+
+QFrame * GenericDialog::getPanel() {
+ return ui.centralPanel;
+}
+
+QDialogButtonBox * GenericDialog::getButtonBox() {
+ return ui.buttonBox;
+}
+
+
+#include <QDebug>
+void GenericDialog::accept() {
+ qDebug() << "accept() is not implemented yet";
+ QDialog::accept();
+}
--- /dev/null
+#ifndef _GenericDialog_HXX
+#define _GenericDialog_HXX
+
+#include <QtGui>
+#include "ui_GenericDialog.hxx"
+
+class GenericDialog : public QDialog
+{
+ Q_OBJECT
+
+public:
+ GenericDialog(QDialog *parent = 0);
+
+ protected:
+ QFrame * getPanel();
+ QDialogButtonBox * getButtonBox();
+
+ protected slots:
+ void accept();
+ //void reject();
+
+ private:
+ Ui_GenericDialog ui; // instance of the class defined in ui_GenericDialog.h
+};
+
+
+#endif // _GenericDialog_HXX
--- /dev/null
+<ui version="4.0" >
+ <class>GenericDialog</class>
+ <widget class="QDialog" name="GenericDialog" >
+ <property name="geometry" >
+ <rect>
+ <x>0</x>
+ <y>0</y>
+ <width>400</width>
+ <height>300</height>
+ </rect>
+ </property>
+ <property name="windowTitle" >
+ <string>Dialog</string>
+ </property>
+ <layout class="QHBoxLayout" >
+ <property name="margin" >
+ <number>9</number>
+ </property>
+ <property name="spacing" >
+ <number>6</number>
+ </property>
+ <item>
+ <layout class="QVBoxLayout" >
+ <property name="margin" >
+ <number>0</number>
+ </property>
+ <property name="spacing" >
+ <number>6</number>
+ </property>
+ <item>
+ <widget class="QFrame" name="centralPanel" >
+ <property name="frameShape" >
+ <enum>QFrame::StyledPanel</enum>
+ </property>
+ <property name="frameShadow" >
+ <enum>QFrame::Raised</enum>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QDialogButtonBox" name="buttonBox" >
+ <property name="orientation" >
+ <enum>Qt::Horizontal</enum>
+ </property>
+ <property name="standardButtons" >
+ <set>QDialogButtonBox::Cancel|QDialogButtonBox::NoButton|QDialogButtonBox::Ok</set>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </item>
+ </layout>
+ </widget>
+ <resources/>
+ <connections>
+ <connection>
+ <sender>buttonBox</sender>
+ <signal>accepted()</signal>
+ <receiver>GenericDialog</receiver>
+ <slot>accept()</slot>
+ <hints>
+ <hint type="sourcelabel" >
+ <x>248</x>
+ <y>254</y>
+ </hint>
+ <hint type="destinationlabel" >
+ <x>157</x>
+ <y>274</y>
+ </hint>
+ </hints>
+ </connection>
+ <connection>
+ <sender>buttonBox</sender>
+ <signal>rejected()</signal>
+ <receiver>GenericDialog</receiver>
+ <slot>reject()</slot>
+ <hints>
+ <hint type="sourcelabel" >
+ <x>316</x>
+ <y>260</y>
+ </hint>
+ <hint type="destinationlabel" >
+ <x>286</x>
+ <y>274</y>
+ </hint>
+ </hints>
+ </connection>
+ </connections>
+</ui>
--- /dev/null
+// Copyright (C) 2007-2012 CEA/DEN, EDF R&D
+//
+// 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.salome-platform.org/ or email : webmaster.salome@opencascade.com
+//
+
+#ifndef MEDOPGUIDIALOGS_HXX_
+#define MEDOPGUIDIALOGS_HXX_
+
+#ifdef WIN32
+# if defined MEDOPGUI_DIALOGS_EXPORTS || defined MEDOPGUI_dialogs_EXPORTS
+# define MEDOPGUI_DIALOGS_EXPORT __declspec( dllexport )
+# else
+# define MEDOPGUI_DIALOGS_EXPORT __declspec( dllimport )
+# endif
+#else
+# define MEDOPGUI_DIALOGS_EXPORT
+#endif
+
+#endif //MEDOPGUIDIALOGS_HXX_
--- /dev/null
+# Copyright (C) 2007-2012 CEA/DEN, EDF R&D, OPEN CASCADE
+#
+# 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.salome-platform.org/ or email : webmaster.salome@opencascade.com
+#
+
+# author: Guillaume Boulant (EDF/R&D, 2012)
+
+include $(top_srcdir)/adm_local/unix/make_common_starter.am
+
+#
+# ---------------------------------------------------------
+# Generation rules to create moc files from QObject headers
+# and form source files from ui files
+# ---------------------------------------------------------
+#
+%_moc.cxx: %.hxx
+ $(MOC) $< -o $@
+
+ui_%.hxx: %.ui
+ $(UIC) -o $@ $<
+
+QT_CXXFLAGS = @QT_INCLUDES@ @QT_MT_INCLUDES@
+CAS_CXXFLAGS = @CAS_CPPFLAGS@ @CAS_CXXFLAGS@
+OMNIORB_CXXFLAGS = @CORBA_INCLUDES@ @CORBA_CXXFLAGS@
+BOOST_CXXFLAGS=@BOOST_CPPFLAGS@
+
+QT_LDFLAGS = $(QT_MT_LIBS)
+OMNIORB_LIBS=@OMNIORB_LIBS@
+
+#
+# ---------------------------------------------------------
+# Declaration of form files generated by UIC and MOC files
+# as BUILT_SOURCES to be used in the building process.
+# ---------------------------------------------------------
+#
+UIC_FILES = \
+ ui_GenericDialog.hxx \
+ ui_DlgAlias.hxx \
+ ui_DlgUseInWorkspace.hxx \
+ ui_DlgChangeUnderlyingMesh.hxx \
+ ui_DlgImageToMed.hxx
+#
+MOC_FILES = \
+ GenericDialog_moc.cxx \
+ DlgAlias_moc.cxx \
+ DlgUseInWorkspace_moc.cxx \
+ DlgChangeUnderlyingMesh_moc.cxx \
+ DlgImageToMed_moc.cxx
+
+BUILT_SOURCES = $(UIC_FILES)
+
+#
+# ---------------------------------------------------------
+# Declaration of sources files to the building process
+# ---------------------------------------------------------
+# MOC files and UIC files should be added to the list of undistributed
+# source files with something like (where <MyLibrary> should be
+# replaced by the name of the product declared by the directive
+# lib_LTLIBRARIES):
+#
+lib_LTLIBRARIES = libMEDOPGUI_dialogs.la
+
+nodist_libMEDOPGUI_dialogs_la_SOURCES = $(MOC_FILES) $(UIC_FILES)
+
+dist_libMEDOPGUI_dialogs_la_SOURCES = \
+ GenericDialog.cxx \
+ DlgAlias.cxx \
+ DlgUseInWorkspace.cxx \
+ DlgChangeUnderlyingMesh.cxx \
+ DlgImageToMed.cxx
+
+libMEDOPGUI_dialogs_la_CPPFLAGS = \
+ $(QT_CXXFLAGS) \
+ $(CAS_CXXFLAGS) \
+ $(OMNIORB_CXXFLAGS) \
+ $(BOOST_CXXFLAGS) \
+ $(KERNEL_CXXFLAGS) \
+ $(GUI_CXXFLAGS) \
+ -I$(srcdir)/..
+
+libMEDOPGUI_dialogs_la_LDFLAGS = \
+ -no-undefined -version-info=0:0:0 \
+ $(QT_LDFLAGS) \
+ $(GUI_LDFLAGS) -lSalomeGuiHelpers \
+ $(OMNIORB_LIBS)
+
+salomeinclude_HEADERS = \
+ GenericDialog.hxx \
+ DlgAlias.hxx \
+ DlgUseInWorkspace.hxx \
+ DlgChangeUnderlyingMesh.hxx \
+ DlgImageToMed.hxx \
+ MEDOPGUIdialogs.hxx
+
+#
+# ---------------------------------------------------------
+# Unit test programs
+# ---------------------------------------------------------
+#
+
+bin_PROGRAMS = dlgTester
+
+dlgTester_SOURCES = \
+ dlgTester.cxx
+
+#nodist_dlgTester_SOURCES = $(UIC_FILES)
+
+dlgTester_CPPFLAGS = \
+ $(QT_CXXFLAGS)
+
+# WARN: for the building of binary executable programs, you must use
+# the LDADD option instead of the LDFLAGS used for library. The impact
+# is in the expression of dependencies between the executable program
+# and the library it relies on. In parallel construction (e.g. make
+# -j8), the makefile try to generate the program while the library
+# (file .la) is not generated.
+
+dlgTester_LDADD = \
+ libMEDOPGUI_dialogs.la \
+ $(QT_LIBS)
+
+
+mostlyclean-local:
+ rm -f @builddir@/*_moc.cxx @builddir@/ui_*.hxx
+
+EXTRA_DIST += $(UIC_FILES:ui_%.hxx=%.ui)
--- /dev/null
+//
+// This program can be used for unit test of dialog box.
+// You just have to include the interface file (*.h) and
+// use the dialog class as illustrated in the functions TEST_*.
+// (gboulant - 12/10/2010)
+//
+#include <QApplication>
+#include <QtGui>
+
+#include "DlgAlias.hxx"
+
+#include <iostream>
+using std::cout;
+using std::endl;
+#define LOG(msg) cout << "[XMED - dlgTester]::"<< msg << endl;
+
+
+
+void TEST_dlgAlias_show(int argc, char *argv[]) {
+ QApplication app(argc,argv);
+
+ DlgAlias dialog;
+ dialog.setAlias("vitesse");
+ dialog.show();
+
+ app.exec();
+}
+
+void TEST_dlgAlias_exec(int argc, char *argv[]) {
+ QApplication app(argc,argv);
+
+ DlgAlias dialog;
+ QString alias = "vitesse";
+ dialog.setAlias(alias);
+ int choice = dialog.exec();
+ if ( choice == QDialog::Accepted ) {
+ LOG("Clic on OK");
+ }
+ else {
+ LOG("Clic on Cancel");
+ }
+
+ //app.exec();
+}
+
+
+int main(int argc, char *argv[])
+{
+
+ //TEST_dlgAlias_show(argc, argv);
+ TEST_dlgAlias_exec(argc, argv);
+
+}
--- /dev/null
+// Copyright (C) 2007-2012 CEA/DEN, EDF R&D, OPEN CASCADE
+//
+// Copyright (C) 2003-2007 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.salome-platform.org/ or email : webmaster.salome@opencascade.com
+//
+
+// Author : Guillaume Boulant (EDF)
+
+/*!
+ * IMPORTANT NOTE: this file implements the factory interface required
+ * to specify the SALOME GUI part of a module.
+ *
+ * The GUI part of a module is an implementation of the generic class
+ * CAM_Module and must be returned here by a factory function called
+ * createModule().
+ *
+ * The function createModule can be designed to switch between several
+ * configurations, but generally the configuration is statically
+ * defined (at build step). The default configuration could be DefaultGui. The
+ * configuration below is MEDOPModule.
+ */
+
+#include <MED_version.h>
+#include "MEDOPModule.hxx"
+#include "MEDOPGUI.hxx"
+
+#ifdef __WITH_MEDMEMGUI__
+#include "MEDGUI.h"
+#endif
+
+extern "C" {
+
+ /*! This function is the factory for the GUI Module */
+ MEDOPGUI_EXPORT CAM_Module* createModule()
+ {
+ CAM_Module * medModule;
+
+#ifdef __WITH_MEDMEMGUI__
+ medModule = new MedGUI();
+#else
+ medModule = new MEDOPModule();
+#endif
+
+ return medModule;
+ }
+
+ /*! This function specifies the version of the module to be displayed in the about dialog box */
+ MEDOPGUI_EXPORT char* getModuleVersion() {
+ return (char*)MED_VERSION_STR;
+ }
+
+}
--- /dev/null
+
+This is a simple Qt framework to test the dialog widgets.
+
+To build the project:
+* specify the sources files in the .pro file
+* run qmake, then make
+* run guiTester
+
+To clean the project:
+* run "make clean"
+* remove binary and Makefile
+ $ rm guiTester Makefile
--- /dev/null
+######################################################################
+# Automatically generated by qmake (2.01a) mer. oct. 6 14:46:48 2010
+######################################################################
+
+TEMPLATE = app
+TARGET =
+DEPENDPATH += .
+INCLUDEPATH += . ../dialogs
+
+# Input
+HEADERS += ../dialogs/DlgAlias.h
+FORMS += ../dialogs/dlgAlias.ui
+SOURCES += ../dialogs/DlgAlias.cxx ../dialogs/dlgTester.cxx
--- /dev/null
+# Copyright (C) 2007-2012 CEA/DEN, EDF R&D
+#
+# 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.salome-platform.org/ or email : webmaster.salome@opencascade.com
+#
+
+ADD_SUBDIRECTORY(testfiles)
+
+IF(MED_ENABLE_GUI)
+ SET(MED_RESOURCES_FILES
+ MEDOP.png
+ MEDOP_small.png
+ datasource_add.png
+ datasource.png
+ datasource_mesh.png
+ datasource_field.png
+ datasource_expandfield.png
+ datasource_view.png
+ datasource_use.png
+ datasource_changeUnderlyingMesh.png
+ image_add.png
+ workspace_save.png
+ workspace_clean.png
+ )
+ INSTALL(FILES ${MED_RESOURCES_FILES} DESTINATION ${MED_salomeres_DATA})
+ENDIF(MED_ENABLE_GUI)
--- /dev/null
+# Copyright (C) 2007-2012 CEA/DEN, EDF R&D, OPEN CASCADE
+#
+# 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.salome-platform.org/ or email : webmaster.salome@opencascade.com
+#
+
+# Author : Guillaume Boulant (EDF)
+
+include $(top_srcdir)/adm_local/unix/make_common_starter.am
+
+SUBDIRS = testfiles
+dist_salomeres_DATA= \
+ MEDOP.png \
+ MEDOP_small.png \
+ datasource_add.png \
+ datasource.png \
+ datasource_mesh.png \
+ datasource_field.png \
+ datasource_expandfield.png \
+ datasource_view.png \
+ datasource_use.png \
+ datasource_changeUnderlyingMesh.png \
+ image_add.png \
+ workspace_save.png \
+ workspace_clean.png \
+ folder.png
--- /dev/null
+# Copyright (C) 2007-2012 CEA/DEN, EDF R&D
+#
+# 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.salome-platform.org/ or email : webmaster.salome@opencascade.com
+#
+
+SET(MED_FILES
+ testfield.med
+ smallmesh_varfield.med
+ smallmesh_constfield.med
+ bigmesh.med
+ fieldlena.med
+ timeseries.med
+ parametric_01.med
+ parametric_02.med
+ enceinte-axis-E500000.med
+ enceinte-axis-E600000.med
+ entaille.med
+ padderoutput.med
+ )
+
+INSTALL(FILES ${MED_FILES} DESTINATION ${MED_salomeres_DATA}/medop_testfiles)
+
+SET(MED_IMG_FILES
+ irm_test1.png
+ irm_test2.png
+ # extra
+ README.txt
+ champ_altitude_MAP.pgm
+ )
+
+INSTALL(FILES ${MED_IMG_FILES} DESTINATION ${MED_salomeres_DATA}/medop_testfiles)
--- /dev/null
+# Copyright (C) 2007-2012 CEA/DEN, EDF R&D, OPEN CASCADE
+#
+# 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.salome-platform.org/ or email : webmaster.salome@opencascade.com
+#
+
+# Author : Guillaume Boulant (EDF)
+
+include $(top_srcdir)/adm_local/unix/make_common_starter.am
+
+mysalomeresdir = $(salomeresdir)/medop_testfiles
+
+dist_mysalomeres_DATA= \
+ $(medfiles) \
+ $(imgfiles)
+
+medfiles=\
+ testfield.med \
+ smallmesh_varfield.med \
+ smallmesh_constfield.med \
+ bigmesh.med \
+ fieldlena.med \
+ timeseries.med \
+ parametric_01.med \
+ parametric_02.med \
+ enceinte-axis-E500000.med \
+ enceinte-axis-E600000.med \
+ entaille.med \
+ padderoutput.med
+
+imgfiles=\
+ irm_test1.png \
+ irm_test2.png
+
+EXTRA_DIST += README.txt champ_altitude_MAP.pgm
--- /dev/null
+This folder contains data files for testing the MEDOP functions
--- /dev/null
+P5
+#image written by MAP/c_image_3d_altitude_thickness
+800 471
+255
+~~~~\81\81\85\85\8b\88\85\81\81\85~ztwzz~\81\85\81\85\81\81~zwtmfiffimimmmpmptwtw~~~~\85\85\8b\92\96 §££ \9c\99\96\96\99\96\92\92\8f\8f\8f\8b\8f\92\8f\8b\8f\88\88\88\88\85\85\88\85\85\88\8f\92\99\92\96\92\92\8f\92\96\9c\9c£ª´±»Âž¾Â»¸¸´±±´´´±±±±±±±ªª§ª§§£££§£\9c\99\9c £ £ \9c\99\96\99\99\9c\9c \9c \9c\99\99\99\96\96\96\99\9c\99 \9c\9c\96\99\92\92\8f\8b\8f\8b\8b\88\88\85\88\8b\85\8b\88\88\88\88\8b\8f\8b\8b\8f\8b\8b\8f\8f\92\92\8f\92\8f\8b\8f\8b\81~~pmiff\_XXXURRNDDAA===:==:=:ADDDKUGfifpmt~\96\92\96\99 \9c\96\92\8f\8b\85\81\81~~zzttif_ccf£\9c§ª§§ ££ \9c\9c\9c£ £££§ªªª§§£ \9c\99\99\9c \9c\9c \9c\9c \9c\99\99\96\96\96\8f\8f\8f\8b\8b\88\8b\85\81\81~~pif__\XXXUXRRRNNNNNRRKRNRRKDD:==6300,,,,),,306,,66060300000,,,,,))06:=6:::A=A:=:AAGDDGGKKKGGNNRRNKGD,%\1f\1f\1f\e\18\14\18\11\ e\14\11\14\e\18\e%)=GGGNKNR\96\8b\8f\8b\8b\88\8f\88~~zwwwmmfimiipmimii\\\X\_\\\X\X\X\UURUKNRNURKRXXNX\\_\iiffipimiimff_c_\_X\__c\cffffcfcfifcfc__\X\RRKKDDA:630",,""\1f%"\1f%\1f%%,%\1f,%%%%,,",\11\1f,\1f\eRNXX\RX\XXUUXRUKKRGGD:==
+:
+\11,\ e\1f%%\11"""\1f"\e)"\11\ e\ e6A
+====ADA==KNGDKNRNNRRUX\\\X\_XXURNN££K£GN££NGKAG\81\85\92\92\96\92\96££\96XUNRNNNRXXXUURRNNKKKDAAAA===:630303::=DKRiippttwwz~~~~z~zzttttpt~\81\81~\81\85\81\85\88\88\81\81\81\81zwptwz~~\81~\81~~zwwpicicfmiimmmppppwwz~zzz\81\81\88\8f\92\9c\9c ££ £\9c\96\96\96\99\92\8f\92\8f\8b\92\8f\8f\92\92\8f\8f\88\8b\88\85\81\85\88\81\81\88\8b\92\96\92\96\92\92\92\92\99\9c §´´¾ÂÅž¾¾¸¸´±±±±´±±±±±±ª§§ª§§§££££ \9c\99\9c\9c\9c\9c££ \9c\9c\99\99\99\9c\9c\9c \9c\9c \99\9c \9c\9c\99\99\96\96\96\96\96\96\99\99\9c \9c\92\96\96\8f\92\88\8b\8b\8b\88\88\81\88\8b\88\88\85\88\88\88\8b\8b\8b\8b\8f\8b\88\8b\8f\8f\8f\8f\92\8f\8b\8b\88\85zztpfccX\UUURNNKAA==:==:==::=AADDGRDcfittz\81\96\96\96\9c\9c\99\96\92\92\8b\88\85\85~z~zwpii_ccf c£§ªª£§§£ ££££§§ª±§ª§ \99\9c\9c\9c \9c \9c\9c\99\99\96\96\96\96\92\8f\8f\8b\88\88\8b\85\81\85~\81mfc_c_UXURUURRRRRRNRRNURRRGDD6=:360,00,,),)003),3633,000000,,0,00,36==:AA=A=A:AADGKDGGKGGKGGKRNRNKDD0)""\e\18\14\18\e\14\11\11\11\14\e\e\18"%:DKGKKKN\96\8f\8b\88\88\88\8f\88\81\81~wwwmmiiiiimiiifiX__\\_\\\\_\\\\URNRNKNRRRGNUXRX\\_Xiffiipmifimff_f\\_\__\c_ccccfccfcffcc__\\XXRNKKGAA=300),,%%")%"%"%"))"))""),)%0"))),NR\X_X\\XXXXXUUNGNGDA6A=666333300333333333333:A6::=:DAAA=KKKGGKNRNRRXUXX\\\\\XUURN N DN NGKDG\81\88\92\92\92\8f\92\96 \92UURRRR\UXX\UUUUNKKNGDAAA===:6:630,36=:DG_mmptttzz~\81\81\81~~z~ztttptpz\81\81~~\85\85\85\85\85\81\81~~wtmptw~z~~~~zztwmfcffiiiiimimmpttwwzzz~~\81\88\8f\8f\99\99\9c£ ££ \9c\99\99\96\99\92\92\92\8f\8b\92\8f\8f\92\92\8b\8f\8b\8b\8b\88\81\85\85\81\81\88\8b\92\96\92\96\92\92\96\96\99\9c£§´¸¾Åž¾¸¸¸±´±±±±±ª±±±ªª§ª§§§££§££ \99\9c\99\99\99\9c \9c £\9c\9c\99\99\9c\99\99\9c \99\9c \9c\99\9c \9c\99\99\99\92\92\92\96\92\92\96\99\99\9c\99\96\99\92\8f\8f\85\88\88\88\88\88\85\85\8b\88\88\88\88\88\88\88\88\8b\8b\8b\88\88\88\8b\8f\8f\8f\92\92\8f\8b\88\85~wtmc__UXXUR=KKG==::==::=:::==AAGDNARcRpw~\81\96\99\96\9c\99\99\96\92\92\8b\85\85\85\81~~zttmicccf£c§£ªª§ª§££££££§§§£§§ªªªªª§£ \9c\9c \9c\9c\99\99\92\96\96\92\92\8f\8b\8b\88\85\88\85\81\88\81\81if_\_\RXUNUURUUUUXUUURXURRGGD6=6360)00,,%,)000%,36300,,0000)),0333::=DADDDAGGADDNKNKKGKGKKGGKNRNNKAA3,"\1f\1f\18\18\e\e\18\14\14\14\18\e\e\18")6DKGKNNN\96\8f\8b\88\88\88\8b\85\81~zztwpmmiiiiiiifcfX___\c_____\_\\XRNRKNNRNNDKUXUXX__Xfciiimmiffiic_fX_____\_cfc_cc__f_fccc_c\_XUNRNKDDD:33,,),))%)"%%""%%)%,)%"))%)0%,,,0KUXX_\\X\XXXXUURNRKKKA=DA=6666633666666666666:D::::=ADAA=KNKGKKNRRUUUXXX\\___\\XUU\9c\9cN\9cNU\9c\9cRKGAN~\8b\8f\8f\8f\8bX\92\96fRURRRU_\\\_UXXURKKNKGAAD==::3:63,,36==DDcpptwwtz~\81~\81~~~~~~wtpppmz\81\81\81~\85\81\85\81\81\81\81zzwppmww~wzzzzwwttmffcffffffiiimpptzwzzzz~~\85\8b\92\96\96\99 \9c££§£ \9c\99\99\96\92\8f\92\8f\8b\8f\8f\8f\96\8f\8f\92\8f\8f\8b\88\81\85\85\81\81\88\8b\8f\92\8f\96\92\96\96\96\99\9c£§±´»¾Å¾»»¸¸±±±±±±ªª§§§£§££££ \99\9c\96\99\9c\9c£ £\9c\9c\9c\99\99\99\99\9c \99\9c\9c\9c\99\99 \99\99\96\96\8f\8f\8f\96\8f\92\96\99\9c\99\96\96\96\8f\8f\8b\85\88\88\85\88\85\88\88\8b\8b\8b\88\88\88\88\88\88\8b\8b\8b\8b\88\88\8b\8f\8b\8f\92\8f\8f\88\88\85~ppi_\XRUURG=6=D3666=::::::====ADDGDK6Npz\81\8f\96\96\96\99\96\96\96\96\8f\8b\85\85\85\81\81~zwwmffccf_c§§§£§££§§£££§£££§£ª§ªªªªªª£ \99 \9c\9c\9c \9c\9c\99\99\92\92\96\92\92\8f\8f\88\8b\88\85\88\85\88\85~ic___\UUUNXUUUXXX\\XXUUUURKKDA=6633,00))")),,)"0360300,000,)),36:==AAGDGGGRKKUUNXNRNKGKKKKGKKNNNKGAD3,"\1f\e\18\e\e\1f\e\14\18\18\e\1f\e\1f"):AGGKNRK\96\8f\8f\88\88\8b\88\88\81~~wtwpmpmifiiiifcf\_\_\c___c_cc\\XURRKKNRNNGNRUXUX__\cfiimmiiiiiifcf\\c\_\_c_fc_cf\\c_f_c___\\XURRNNDGD=6600,,,)%)\1f)"""")%%,,)%%),),)0003GRX\c__\\X\XXUUURUNNNKGGDD=====66:::::::::::::A::::A=AAAANKKGGKRNUUUXX\\\\ccc__\XX\99\99N\99R\\99\99\NKAf\81\8b\8f\8f\8f\8bU\8b\8f_UURRRXc____X\UURNKKKGAAD===:36:3,,36:=ADfttwzzwz~\81\81\81\81~~\81\81~ztptpm~~~\81\81\81~\81\81~~~zwwtpmttzwwwwwwtttmffccccccfffmmpppwwwzwwz\81\85\88\8f\92\92\96\9c\96 ££££ \99\9c\92\92\92\92\8b\8f\92\92\92\92\92\92\92\92\92\8f\85\81\85\85\81\85\8b\8b\8f\92\92\92\92\96\96\96\99\9c §±»Âž¾»¸¸±´±±ªªª§£§§§§££££££\99\9c\96\99\99\9c£ £ \9c\9c\9c\99\99\99\9c\9c\99\9c\9c\99\9c\9c\9c\99\9c\99\96\92\92\8f\92\8b\96\92\99\99\96\92\92\92\8b\8b\8b\85\85\88\85\88\88\88\85\88\88\8b\8b\8b\88\8b\88\8b\88\8b\8b\88\88\85\88\8b\88\8b\8f\8f\8f\85\85\81zmmU_UKNDKAA:666336:=::6:6::::=AAADD=:DK~\85\92\96\92\99\9c\99\96\96\92\8f\8b\85\85\85\81\81~zwtmfff_c_cc§§ª££ £§§£££§£££££ªªªªª§ª§ \9c \9c\9c\9c \9c\9c\99\96\96\96\92\92\92\8f\8f\8b\88\85\85\85\85\85\81zf_\_c\XRXRXXXX\\\__\\XURUUNGGD=:630,00%%"%),))%,03,0,00,000,),0:=DADDKGKURiimfic\RURGKGNKGGKKKNNKGAA3)%\1f\1f\e\e\e\1f\1f\18\e\18\1f\1f\1f"",6DGKKNUX\96\8f\8f\88\88\88\88\85\81\81~zwwppppiiimiiccc___cf_c_cfcfc_\\XRUNKRRNRKRRRURX\c_cfffiiiimimmfcf__c_c_cc_c_ccc\\c_ccc\\\\XXXUURNDDDA::3,,)))),")%%%%,)%0,,)),0)0,A336:N\_c__\_X\XXUUUURRRRNKKGGDDAAA::=:::::::::::=D::====D=ADNKNGKKRRRRU\\___\fff_c_c\\99\99U\99U_\99\99zRNNi\85\8b\8f\8f\8f\8bN\8b\8b\UUUUU\fccc_\\\XURNKNGDAD==A:66:330366:=Ditwz~\81z~z\85\81\85\81\81~\85~~wwpttp\81\81~\81\81\81\81~\81~z~ztwtmmptwttwwtttppmcf___c__cffiipptttwwwzz\85\81\88\8b\8f\92\92\99\96 £££ \9c\9c\96\96\96\92\8f\92\96\92\92\96\92\92\92\96\96\92\88\88\81\85\81\88\88\8b\8f\96\8f\92\92\96\92\92\96\9c\9cª±´¸Â¾¾¸¸´±±±±±±ªªªªª§£§§§§£££££ \9c\9c\99\9c\9c ££ \9c\9c\9c\9c\99\99\9c\9c\9c \99\9c\9c\9c\9c\9c\9c\99\96\8f\8f\8f\8f\88\92\96\96\96\92\8f\8f\8f\88\88\88\85\81\85\88\88\88\88\85\8b\8b\8b\8b\8b\8b\8b\8b\88\88\88\88\85\85\85\8b\8b\8b\8b\8f\8b\8f\88\81~wifU\UKKA=:3666663:::::6:::6:::AAAAA=:=D\85\88\8f\96\96\96\9c\99\96\92\92\8f\8b\85\81\85\85~zzwppffc___cc§£§££ ££££££££ ££§ªªªªªªª§§£ \9c\9c\9c\99\99\99\92\92\92\92\8f\92\8f\8b\88\88\85\85\88\81\81mc_cc_X\UXXX\\\___cc__c\XUUNKKD==:00,0,"\e\1f"%,))))00,003300,30,33:DGGGKKNK__mmpimf_UXUKKDNNGGKKNNKNG==3%)\1f\1f\e\e\18"\e\e\e\e"\1f"%%)6DKNNRU\92\92\8b\8b\88\88\85\85\85~\81z~zwptmpmmipmiccc\_ccicfffffif_\XXRURNNRNNNNNNRUXXN_cffff_ffifiiccc_c_cf_cccc\f__\X___fc_X\_XXXRRRNGAAA::0,0,))%)%%%%%))),0,,),,3,0,D36::K\\__\__\\XXUUUURRRRRNNKKGGDDD==A==::::::::::G=====AAA=AKKRKNNNUNUUX__\_cfcc_fcf_\99\99X\99Xc\99\99\99\URm\85\8f\8f\8f\8b\88N\88\81\URUUU\ccfcc___\XURNNGDDDAAA=6:=66336::=Dmpwz~\85z~~\85\81\85\81\81~\81\81~zwmttt~~~~\81\81\81\81\85~zzwwttpmmttpwtttttmppcc_\\c__cffffmmpttwwwzz\85\85\88\88\8b\92\92\96\96\9c \9c \99\99\96\96\92\92\92\96\92\92\96\96\96\92\96\92\92\8b\8b\81\85\81\8b\85\8b\8b\92\92\92\8f\92\92\8f\99\99\9cª±¸¸Â¾Â¾¾¾»´±±ªªªªª§§§§£§£ £££ \9c\9c\9c\9c£ ££ \9c\9c\9c\9c\9c\99\9c \9c \9c \9c\99\9c\9c\9c\99\96\8b\92\8f\8f\8b\8f\96\92\8b\8b\8b\8b\8b\88\85\85\81\85\85\85\85\88\85\88\8b\8b\8b\8b\8b\8b\8b\8b\8b\88\88\85\85\85\85\88\8b\88\88\8b\88\8b\85tzifcRNUN=66:633633366:::6:663:=:AADA==::A\88\8b\92\96\96\96\9c\96\92\92\8f\8f\8b\85\81\85\81~zztmmfc___ci§ª££ £ £££ £§£££££§ªªªªªª§£§£ \9c \99 \9c\99\99\99\92\92\92\92\8f\8f\8b\8b\88\85\85\85\88\81~mXffc_\_X\\\_\_cccffccf_\XURNNGAA630,,"\1f\e\e\1f"))%),3)0333003336066=GNKRNNR\cimpmmmicXURNKGKNKGKKKNNKKA=6)%\e\1f\18\e\e\1f\e\1f"\1f%"%%)%3DKNRUf\92\8f\8b\8b\88\8b\85\85\85~~zz~tttptmpmpmifcf\ccfmfiiiiifccXUURUURKNNKKNKKNXXRNc_ccc__ffmfffcfc\fcfccccc__c\c\X_\_c_c\X\UXURUUNRDDA::0,0,,)))""%)%))%0,00,0,003,G36==GX\____\\\XXUUUURRRRNNNNNKKGGGAAAAA=====:::=:K:A::=====AGGNKKNRRRXU\\\\cfcff_ffic\99\99\\99Ucc\99\99\99cX\8b\88\8b\8b\8b\88\8bR\85\85XUUURXX__c_f__c_\XURKKGDDADA=:=A::6===Dmmmpw~~\88~\81\81\81\85\85\85~\81\81~~zzpwwwz~\81\81\81~\81\81\85~zwtwtpmiippmtptttppmpcc___c__ccfifipptttttzz\81\88\8b\8b\8f\8f\96\92\96\99\9c\9c \9c\9c\99\99\99\99\92\92\92\96\96\92\96\96\96\92\96\96\96\8f\8f\85\85\85\8b\88\8b\8b\92\92\92\92\96\92\92\96\9c §´¸»Â¾¾»¸±´±±±ªªªª§§££§ ££ £££\9c\9c £ § \9c\9c\9c\9c\9c\96\9c \99 \9c\9c\9c\9c\99\96\8b\92\8f\8f\88\8f\92\8f\88\85\85\88\88\85\81~\81\81\81\81\81\85\81\88\88\88\8b\8b\8b\8f\8b\8f\88\88\85\85\85\85\85\8b\88\88\88\8f\8b\88\81wwicUURRK::3:363663363:=:6:6666::AAD=:==6=\8b\8f\96\96\96\96\99\96\92\92\8f\8f\88\85\81\85~zwztmifc__\fm§§£ £ ££££§§§£££ª§ª§§£§£\9c\9c\9c \9c\9c\99\9c\9c\99\9c\96\96\92\96\8f\8f\92\8b\8b\88\81\85\88\88\81\81i\micc_cc\__\\\cffcfffic_\\UNRKAA630))\e\18\18\14\e\1f%%%,03,06663636::0::AKRNUUXccfmipimifcXUNNKDKKNKKKNNNKGDA6,)\18\1f\18\e\1f\1f\e"%\1f)%))),3DGRUX\8f\8f\8f\8b\8b\85\88\85\81\85\81~~zzpwttpmpptpmifi_ccimimmmmmifcUURRRURNKKG=KKKGUURKc\_c_cccfiificfc_c_c_cc_c_c_\cXX_\__\_XUXRUUUURXUGGD:6303,,,),""%%%%),303003,0006D6:A=DU\\\\\_\XXUUUUURRRRNNNNKKKKKGDDDAA=========:N:A:=:::::=DGKNNNNURUUX___fifiiffiiiww_\99Xcc\99\99\99i\99\99\88\8b\88\8b\81\8bU\88\88URURUUUX\_\c____\\XUNGGDGDGAA==DD=:ADKfppmpwz\81\88\81\81\81\81\88\88\85\81\81\85~~wwtzwz~~\81~\81\81\81\81\85\81~wwtppiffmmippptppmmmc___\cc_cfcifimmpptttwz\81\88\88\8f\8f\92\92\8f\92\92\99\99\9c \9c\99\99\99\96\96\96\96\99\96\99\96\96\92\96\99\96\92\8f\88\8b\88\88\8b\88\8f\92\92\92\96\96\92\96\96\9c£ª±´¸¾Â¾¾Â¾¾´´±´±±ªªªªª§§££££££ ££ \9c \9c \9c £££ \9c \99\99 \9c£\9c\9c \9c \9c\9c\99\99\8f\92\8f\8f\8b\8b\8f\8b\85\85\81\85\81\81~z~~~~~\81~\85\85\88\8b\8b\8b\8b\8b\8b\88\88\81\85\81\85\85\8b\88\8b\88\8f\8b\85zwpi\XXNDG::360633636:6:=:::6666::A=A=:=:3:\8b\92\96\99\96\92\96\96\8f\8f\8f\8b\88\85\81\81twtwtpifc\__c££££\9c\9c ££ £§££££§§±ª§§§§§£ \9c\9c\9c \9c\99\9c\99\99\9c\9c\96\96\92\92\8f\8f\8f\8f\8f\88\85\85\85\85~\85iipmccccf_cc\__fifcfiiifcf_\RRND=:0,%"\1f\18\e\18\1f\e%"),0303:::6:3==A:=AKNUU\X_ffimimfifc_UURNGGKKNKNNRNKKDDA30)\e\1f\e\e""\1f%)\1f,%),)0:DNRX\\8f\8b\8b\8b\88\88\85\88\81\81~z~zwtwwtpmtpttpmficffimmmppmmffcUXURNRNKNAK=KGKDGRRK_X\_c_cccfffffifcc\_cc___\cX\_\\\X_\X\UUUNURUXN\XXKG=3003,,,),""%)%),0333330,033:A:=A=AXX___\\\XXUUUURRRRNNNNNKKKKGGGDDDAA======::=N:A=::=:::=ADGKNRRUUUUX___iiimmifiimtpc\99\fc\99\99\99m\99\8b\88\88\85\88\85\88U\8b\8fRRRRRURXURU_\\\_\XXURKGDGDKGDAGGGR=Xiiipmmpww~\85\81\85\81\85\88\88\85\81~\85\81zwwtzzz~~\81~\81\85\81\81\81\81~zzptmfcciiipmptmmmii_\\_\___cfciiimmppptptz\85\8b\85\8f\8f\92\96\92\96\8f\92\96\99\9c\9c \9c\9c\99\99\92\96\99\99\99\99\99\96\96\99\99\99\99\92\8b\8f\8f\8b\8f\8b\8b\8f\92\92\96\99\96\99\99\9c§±´¸¾Â¾»»¾»¾´´±´±±±ª§ªª§§§§££££ \99\9c\99\9c\9c\9c\9c £ \9c\99\9c £\9c \9c\99\96\92\92\8f\8f\8b\88\8b\85\85\88~\81~zzwzwzzz~z\81~\88\8b\88\8b\88\8b\88\88\85\85\85~\85\88\8f\8b\8b\88\92\88\88~tmX\\UNDD6=333333636::::==::66:::==A==A:6=\8f\92\92\99\92\92\96\96\92\8b\8b\88\88\85\81\85ttptppifc___f§££ \9c\99 \9c £§£§§£££§§ªªªª§ª§§§£ \9c\9c\9c\9c\9c\96\9c\99\99\9c\99\96\92\92\92\92\92\8f\8b\8f\88\88\88\81\81~\85wz\85\81iifcicf___ccficfimfffic_RRKG=:,)%""\e\e\e""%%)03300:====AAAGGGNNRUX__cfiimmmfff_\RRURKKKNKKNNNRNKDDA03%\e%\1f"%%"%)"0,,003GRUU_\8f\8f\8b\88\88\8b\88\81\85\81\81zzzzztwtwppwtwwtpiicfcmimmpmimfc_XXRUKNKGNAG=GDGAGRRG\UX\_\c__cciiificc_\c__\c\cXX\XXXU\XU\RRRRRRRXU_\\GKA3330,,,),""%%)),336336,,0666D6A=AAUXc__X\\\XUUUURRRRNNNNKKKKKGGGGGDDAA=====::AR:D:=::::::DAGKKRRRRXUU_ccmimppmfifppX_i\ccpp\99p~\88\85\85~\88\88\8bR\8f\92RNUUXXU\XRUUXXX\X\XUUNKGGGGKGDNK\Ucfmmmpmpptwz\81\81\85\85\85\8b\88\85\81~\81~wwztz~~\81\81\85\81\81\81\81\81~~zzzmppcc_cffppppmmmfc\X\\\__ccfcfiiimpmptttz\81\8b\88\8f\92\92\96\96\92\8b\92\96\92\99\9c\9c \9c \9c\9c\96\99\9c\9c\99\9c\99\99\99\9c\9c\99\9c\96\8f\92\92\8f\8f\8f\8f\92\92\92\96\99\99\9c\99 ´¸»¾¾¾¾»»»¾¸¸±±±±±±§ªªª§§§££§£ £ \9c\9c\9c\9c\9c\99\9c\99\99\99 \9c \9c\9c\9c\9c\99\9c £££££ \9c\9c\99\96\92\8f\8f\8b\8b\88\8b\88\81\85z~ztwttmtpwzt~z\85\88\88\88\85\88\88\8b\85\85\85\81\88\8b\8f\88\88\88\96\85\85zpiX\\UKAA6:36300360666:=:==:6:6=:=A=:A==:A\8f\96\96\96\92\92\92\92\92\8f\88\8b\85\85\81\81tpitmmfcc__\f§£ \9c\99 £§££§§§§ªªª§ª§£§£ \9c\9c\9c\99\99\96\99\9c\99\99\99\96\92\96\92\92\92\8f\88\8b\88\88\88\85\81~\85z~\88\85mmifmficccffffcciiciiiccRRGGA=3)%%%\18\18\1f%%%%,3000:==AAADDDKKNRURU_ccfiiiiiifffc\URRRKKNRKKNKRNNGDAA33%\1f)\1f)%%",,%30003:KUX_\92\8b\8f\8b\88\88\88\88\81\85\81\81zzzwzwttwtttwwwtpmmcffiimmmiiicc\XUNRKKDAKDG:DAGAGNRDRU\UU_f_f_\mficiccc\c\_\_\c\XXXUUNRXRXNNNRNNNUXc___KD6363,0,),%%)))))33:3630033::A:AGDDR\_\_UXXXXUUUURRRNNNNKKKKKGGGGDDDDAAA===:::DR=G=:::666:G=DKKNRRRURU\cfifpmtpimcmm\_fXc__f~_p\81\81\81~\88\88\8fN\8f\99NNUX\_Xc\_RRRUU\XX\UXRNNNKRUNGfmmffimmmpppttww~\81\81\81\85\88\88\88\81~\81zztww~\81~~\81\85\81\81\81\81~~zwwwmmmccc_fcmppmiiicc\\_\\\cccccfimmmpmpppt~\85\8b\8b\8b\92\92\92\92\8f\88\92\92\96\99\99\99\9c \9c\9c\9c\99\99 \9c\99\9c\9c\9c\9c\9c \9c \99\92\96\96\8f\8f\8f\92\96\92\92\92\99\99\9c\9c£±±¸»»¾¾¾¾»»»¾\92´´±±±±´±´±±±ªªª§§§£ ££ \9c \9c\9c\99\9c\99\99\99\99\96\9c\99\9c \99 \9c \9c ££££££\9c\9c\9c\96\92\8f\8b\8b\8f\88\85\88\85~\81wwwpmppimmmfmzw\81\85\85\88\85\85\8b\8b\85\85\88\85\8b\8f\8f\8b\88\8b\96\81\81wicX\\RKD=:63300366366::=:==::=6A==DA:A=A==\92\99\99\96\92\92\92\96\92\92\88\8b\85\85~wtmfpimfffcc_i£ \9c\9c\9c\99\9c\9c £££§£§§ª±±ª§ªª§£§ \9c\99\99\99\96\96\99\99\96\96\99\96\92\92\8f\92\8f\8b\85\8b\88\85\88\88\81\81\81~\85\8b\85pzmipfifcccffc__fffmifccRRGGD:6))%)"\e%))%%,3,06=AADGGGGGNNRUXUXcfffifififcff_\XUNUNNRNNKKNNKKGDD=66,%0\1f,),000)63666DU\\8f\8b\8f\8b\8b\88\88\88\88\85~\85\81\81z~zwwwttttpttztwtmpfffffmmiiff__XXRGNGAGDGDD6A=DADARDRXXUN\c_i__iifcic_cX___\\\_\\XURUNRUNNKNNNNKRU\___\KD:36300,),%%)),,,66=3:03366:=A:=KDGRX\\\R\XXXUUUURRRNNNNKKKKGGGGGDDDADAA===:::AR=G:::::666GAGGKNNRURUX\cffimmpmfi_if\_cUcN\ft_mUtt~\88\88\8bK\8f\99RUXXctcmcfXRNRRXXXXX\XUUURUXXimppiimppmpppttwzz~\81\81\85\85\85\85\81~\81zzwzz\81\81\81~~\81\81\81\81~z~wwttpfifcc_ccmmppiff__X\_\_\__ccfffmmmppptwz\81\88\8b\8f\8f\92\92\92\8f\8f\88\8f\92\92\96\96\9c\99 \9c\9c\9c\99\99£\9c\9c \9c \9c\96\99\99\8f\92\8b\8f\92\92\92\96\99\99\9c §´´¸»¾¾¾¾¾»»»»¸±¸´±±´±´±±±ª§§§£ £ \9c\9c \99\9c\9c\99\99\99\99\99\99\9c\96\99\96\9c \99\9c \9c ££££ §££ \9c\99\8f\8b\8b\8b\8b\85\81\85\81z~tttmmmmfcfifipt~\81\81\85\81\81\88\88\85\88\8b\88\88\92\8b\8b\88\88\92~ztc_X\XUND6:333330666::::=:===:=:==ADA=D=DA=\96\99\99\96\96\96\96\96\92\92\8b\8b\85\81zwtmfpiiffffcci \9c\99\99\9c\99\9c\9c ££££§ªª±±±±ª§ª£££\9c\9c\99\8f\96\96\96\96\96\96\92\92\96\92\8f\8f\8b\8f\8f\88\85\8b\85\81\88\88\81\85\85~\88\8f\88t~mmmcfc_c_ccc__cffimff_RNGGG::)))),))))%%0000=DGDGKKKKKNRUX\X\fifcicicffcfc_\\XRURRURRKNKNNGDAA=6:0)3%0,03330:3:::UX\8f\8f\8b\8f\88\88\88\88\85\85\85~\81\81~~~zwwtttptpttwtwtmpifc_cimifc_\\XUNDNKDKAADA::=D=GANGRUUXNXccmcimmcffc__\\_\\X\\XXXRNRKRRKKGKKKRKRRX__\\GG=630,,,),%)))0,06:=3=33636:AA=ANDDUUXX\U\XUURURURRNNNNNKKKGGGGDDDDAAAAA===:::=R:D66=:=:36KDKKKNRRRUXXXccciiimicf_f____\_NUfp__Rpwz\8b\85\8fK\8f\99U_ii\88zwztt\UNRNUUX\\_\XXcXfmmmpttmmppmppppptwwz~~\81\85\81\88\85\81~~~~wz~\81\81\81~\81\81\81~~~zzttppmfiiccccciimpicc_\\\_______cfffiipppttz~\85\88\8b\8b\8f\92\92\92\8f\8b\8b\8f\8f\92\92\96\9c\99\9c \9c\99 £ £ £ ££\9c\99\9c\9c\92\92\8f\8f\92\8f\92\96\96\9c\9c ª±´¸¸¾»Â¾»»»¾¸¸´´´±±±±±´±±±ªªªª§§£££ \9c \9c\99\99\9c\9c\99\96\96\99\96\99\96\96\92\99\9c \9c £ §§£§£§£ \99\8f\8b\8b\8b\88\81~\81~wzpppimficccfffmpt~\81\85\81\81\88\88\88\88\8b\8b\8b\8f\8b\8b\85\88zwwf_\\_UURA::336333663::=:=::::=:===AD=AD=DA:\99\99\99\96\99\96\96\96\92\92\8b\8b\85~~wtmimmmifffpp\99\9c\99\99\99\99\96\99\9c\9c £ §§ªª±±±ª§ª£\92\92\99\99\8f\8f\92\92\96\96\92\96\92\92\92\8f\8b\8b\8b\8b\8b\88\88\8b\85\85\88\88\81\88\85\85\8b\8f\88t~pmiccf__\_____\fcfici_URGKG=:6,),30,,),3003:GGKKGNNNNNRUX\\\_fff_fcffccffc__\\RRUUUURNNKNNDDAAA6:3,60,030363=:===\8f\8f\8b\8b\8f\8b\88\88\88\8b\81\85\85\81~~~~zzwwpttmpmppwtwwptmfcffiiicc\U\URNDNKDG=AAA==AD=DDNGRRR\RXcfmfmmicfcccc_\\\\UXXUUUNKNGNNGDGGGGNKUNX\\XXDG=36000,),%)),,,036=3A66:6:=D=AAKGGXRXU\XXXUURRURNNNKKKKKKGGGGGDDDDAAAA====:::6N6A66===:63KGNGKRRUNUUU\_c_iffif_\\cc\c\__RXfm_\Npt~\8f\81\92N\92\99cimw\8b\8bz~z\81t_RRRUUX_\c_\_ffmppptttpmpppptpppwww~~\81\85\81\85\88\85\81~~~\81z~~\81\85\85z~\81\81~zzwztppmiiiiccccfiiimfcc_\_\___c__cccfiimmpttz~\81\88\88\8b\8b\8f\92\96\8f\92\8b\8b\8b\8b\8f\96\96\99\9c\99 \9c \9c\9c£\9c £§££££ \9c\9c \9c\96\92\8f\92\8f\8f\92\92\96\99 £ª´´¸»¾¾»»¾¾»¸¸´±¸±±±´´´±±§§§£ \9c\9c\9c\9c\99\9c\99\99\96\96\96\96\96\99\96\99\9c\9c\9c ££ §£§£§§£§§\9c \96\92\8f\8b\88\85\81\81~wwtppmimff_cc_ccimpz\81\85\81\85\8b\8b\8b\8b\8b\8b\88\8b\8f\88\81\85wttc\\\_UUN=:6636306666:::6=:6=6=:::==AADDDG==\99\9c\9c\99\99\96\92\92\8f\8f\88\88\81~zwtpipmpifii\92\96\96\92\96\96\99\99\99\99\9c\9c\9c£££ªª±±´±±ªª§£\92\92\92\92\8b\8f\92\96\92\96\8f\96\8f\92\8f\8b\88\85\88\88\88\88\88\88\81\85\8b\88\85\88\85\88\8b\8b\88t~mpmc_c_\R_\\\_\cciiff_XUNGG=::0)0630030:30:GKKNNKRNNNRNX\X_\cfcc\cccf__ccfcc__UUXXUXRRRKRKAADA=::66:360663:6AADGU\92\8f\88\8b\8b\88\88\8b\8b\8b\85\85\81~~~zzzzwwptpmmmppwttttwpificifi\c_UXRKNDNGAD:AD===AA=GGKGRRNXU\_fiimifcccf_c\\XXXRKRXRRKGKAKDDDDDGDKGRNU_\UNDD=03030,,,%),,,0333=6A::D:=AAAAAKKKURXXXUUXUURRUUNNNKKKKGGGGGDDDDDDAAA=====:::6N:A:6:=A=66GGKDKNRRNRUUX\_\f_cf__\_____\c\UUc_\UKmwN\8b~XR\99\99fmp\92\8f\88~\81~\85zz\UX_XXiiif_mptptttttptpmppptpptwwz~~\81\81\85\88\85\81\81~~~\81z~\81\81\85\81~\81~~~zzwwtpmiffifccfcfiiiiicc__c____c_c__cffmimttt~\81\85\88\88\8b\88\8f\92\92\92\8f\8b\88\8b\8b\8b\92\96\96\9c\9c\9c \9c \99 £ §£ §\9c\99 \99\92\92\8f\92\8f\8f\92\8f\96\99 £§§±´¸»»»¾»¾»»¸´´´´´±±´´´±±±±§§§£ \99 \99\99\99\99\96\92\96\96\99\92\96\96\99\9c\9c\9c ££££§£§§£§£££££\92\92\92\8b\88\81\81\81~wwtpmmiicfcc__ccfmmz~\81\85\85\8b\8b\8b\8f\8b\8b\88\8f\92\85~\81tmf_X\X\RRK6666363333666666=:::3=6===ADAADGK=K\99\99\9c\99\96\92\92\92\8f\8b\85\85~zwwtpmpppimmi\92\96\96\8f\92\92\96\96\96\99\99\9c\9c £§§ª±±±±±±ª£\96\92\8f\8f\8b\8b\8f\96\92\92\8f\92\92\92\8b\88\85\85\85\88\85\88\88\88\81\88\88\85\85\8b\88\8b\8f\88\8bt\81pmmc___\U_UXX\___fiiicUURGKG===36:63063D:DGNNNNRNRRNNRNU\X__ccc_\___c\__cifc__XXXXXXRNRNRNDDDA==:::=6=6::==:DDN\85\88\8f\8f\88\8f\88\8b\8b\8b\8b\88\85\88\85\81\81~z~~wttpppmimppttttwzpmfmffff__\UURNNDNGAD==D=A===AGGNGRNKURX_cffmmfc_cc\_\XUUUNKNURKGGGAGAADDDDDGDGRU\XRGDG:0030,,,0),,,00636=:=:=G=AADDAAGNKRRXXNUUXUURURUNNNKKKKGGGDDDDADAAA=A====:::66K6=63:AAA::GDGGGNNNKNRRUX\_c__c\\\\\___\_XXRf\\RGizKKNUNfcipt\8f\8f\85~\81\81\88~~t\fip_pmttpptwtwtpttptmppptttmpww~~~\81~\85\85\81\85\81\81\81~\81zz\81~\81~~~~~~zwwtppiifffi_cfcfimfif____ccc__c\_\_ccciimwtz\81\85\88\8b\8b\8b\8b\8b\8f\8f\8f\8b\88\88\8b\8b\8f\8f\92\92\99\9c\9c \9c\9c \99££ £ £\9c£\9c\9c \9c\96\92\92\8f\92\92\92\92\92\99\9c ££ª±¸»¸¸»¾»¸»¸¸¸´´±´±´´´±ªª§££££ \99 \99\99\99\99\96\96\99\96\96\96\99\96\99 \9c\9c £££££££§§§§£§§§ \92\8f\8f\8b\81\85\81\81wttppmiiffcf\\c_cmmw~~\81\85\88\8b\8f\92\8f\8b\8b\92\8f\85~zp_AUAXDXA6::36666030663363:::663=6:A=DDAAGKNDN\96\96\99\99\96\92\8f\92\8b\88\85~zzwwttmpppmpt\99\8f\92\92\8f\92\92\92\96\96\99\96\99\99 £§§§±±ªªª \96\96\8f\92\8b\8f\8f\92\92\92\8f\92\92\92\8f\88\85\85\85\88\85\88\88\88\85\8b\88\85\88\8b\88\8b\8f\88\88\85~pimc__c\X_UXUX\X_cfif_RRUKKKAAA=:A6:=DGGGNRRRRRURRRRRRNRXX_\_c__X___cXc_cffc__\UXUUURRRRNKGDAAAA6=6=:A:=AAA:GKR\85\88\8f\8b\8b\92\8b\8b\8b\8f\8b\8b\85\8b\85\85~\81z~~tttpppiimppttttwwppimiiicccXXXRRKDNDAA=AA:D:::DDGKGNNNUNU\_cci\fc_c_X__URKRKKKRNGAGGAD=DGAADAGGDUXX\NDAD:3000,0,0),,000636==::AKADDGAAAGRNURXUNRXXRRNXRRRRKNKNGGGGDDDDAAAA=====:::::66G33666=AA:6KGKGKKKNKKNNUUX\X\\\\XXXX\_\X\\\UcXXADANDGDKKNXfmw\8b\8bz~~\81\85\81\81zzttttttwwttwzwwtpwwmpmpmptttmpwwz~~~~\81\81\81\85~\81~z\81zz~z\81~~\81~~\81zwwtpmffffffcffffmiiff\\\\_cf__c\_\__ccimpzw\81\81\88\8b\8b\8f\8f\8f\8f\8b\8f\8b\8b\8b\88\88\8b\8b\8b\8f\96\9c\9c\9c \9c \9c\9c\9c£ \9c \9c£\9c£\9c\99\9c\99\96\96\92\92\96\96\96\96\96\99\9c\9c §ª´¸»¸»»¸¸»»¸´´¸´´´´´´±±ª±±ªª£§££ \9c\9c\9c\9c\99\99\99\96\96\96\99\96\96\92\99\99\99 ££§§££§££§§£§§ª££ \96\92\8b\85\81~\81zwppppmmif_c__cccmpwz\81\85\81\8b\8f\8b\96\8f\8b\8f\8f\8b\85zpiR=6=6,30006633663303333336:63:6:6:==ADAAGKRNN\96\96\99\96\92\92\8f\8f\8b\85\85\81zzwwtpppptptw\99\92\96\92\8f\92\8f\92\92\96\96\96\99\99\9c £§ªª±±ªª§\9c\92\92\8b\92\88\8f\92\8f\92\92\92\92\92\92\8f\88\88\88\85\88\88\88\88\88\85\88\88\88\88\8b\88\8b\8b\85\88\81zmfic___\\\XUUUXU\_cfc\RURNNNDDDA=DAAANNRRRUUUURURRNRNNNNXU\\____\____X_\ccccc_\XUXRRNNNNKNKG=DD=:A:==D=ADDADKNU\81\88\8b\8b\8b\8f\8b\8b\8f\8b\8b\8b\88\8b\85\85\81\81zzztttpppmmmppttwtwwmpmpmfi_c_\XXUUNGRG===DA=A=::AAGGKRNRRNRK\_DfXc_\__R\\RRKNGGGKKDADDAAADGDDDDGKGUXRXKAD3:63000,)0,0,003366:===DGAGGKDDAGRNRNURNUUUUURUNUNNNRNNGKDDDDDAAAAA===:::::6666D633:6:=D:3KDKDKGGKGDGKRRRRUXXXXRNURX\XXUX\RNUN=)00"\1f%,AKUXitw\88w~\81~\81\81\81~~wwwwwwzzwtzzztttwwppmpmptttptwwz~\81z\81\81\81\81\85~~~~~zzz~\81\81~\81\81\81~~~zwtpmffiffccfffifiic\X\_ccfc_c____cccimp~w\88\85\8b\8f\8f\8f\8f\92\8f\8b\8f\8f\8b\88\8b\88\8b\88\8b\8f\96\99\9c \99\9c \9c\9c\99\9c £\99\9c\99\99\96\92\92\96\96\96\99\96\96\99\99\99 £§´¸»¸»»»»»»´¸¸´´´´´´´±±±ª§§££ \9c\9c\9c\9c\99\99\99\96\96\99\96\99\96\9c\9c\9c££££§§§££§£§£££ªª§§§£ \99\8b\88\85\81\85ztttppmmffccc_cccitz~\85\81\81\88\92\8f\92\92\8f\8b\8b\88\81wmRA6300%,0,,3666330000300363:36:366::=AAAADNU\\96\96\99\99\96\92\92\8f\8f\8b\85\85\85~wtwtmmpmptz\92\99\92\92\92\8f\8f\8b\92\92\92\96\92\96\99\9c £§ªª±±±ªª\8b\8f\8f\8f\8b\8f\88\8b\92\8f\92\96\96\92\96\96\8b\88\88\88\88\88\8b\88\88\88\88\88\88\88\88\88\88\8b\88\85\85wpicfc\\\\XXXRURRXXXcc_XUURRRNGGGDDGDDKRRUUUXXURNRNNKNNKNNUR\\\\_\X__c\X____cc__XURUNNKKNKNKNKAGD===6:ADAAGGDGNR\\81\85\8b\88\8b\8f\8f\8f\8f\8b\8b\88\88\8b\85\81\85\81~zwpttpppmpipmtptttwmppmmcfc_\\XURRNGNDAA=DA==:=:=AGKKRNNNKNGXRDDR_\X\_UXXNUKGGDDGAA=GD=6AAGADGDGKKRURUKDA36600000,000,03366::=A=DGAGKGGGNKRRRRUNRRXUUXRXRUKKNURRKNDDDDAAAAA====::::66633D330:36=A63GDGDGDDGKDDNNNKKRUUNUDKRNXXUUUUXNKK)))%%\1f\e"\1f)3RKfpttt~\81\81~\85\81\81\81zzzwzzz~wtzwztwtwttpmmpptwttwwwz~\81~\81\81\81\81\81\81~~~\81zzw~~\81\81\85\85\85\88\85\81\81zztpifffcccfcfiiffc\X_\ffffcc__\\_cciip\88\8f\8b\8f\8f\92\8f\8f\8b\8f\8f\8f\8f\8f\8b\88\8b\88\8b\8b\8b\8f\96\9c\9c\9c \9c \9c\9c\99\9c\9c\9c\99\99\9c\9c \9c\9c\99\99\96\96\92\99\96\99\9c\99\99\99\99\96\9c\9c §´¸¸¸»¸»¾»»¸´¸´´´´´´´±±ªªª§£££ \9c\9c\9c\9c\99\99\96\96\96\99\96\96\96\99\99 £§§£§ª§£§££ª£££§ª§§§£\9c\99\8b\88\81\85~zwttpmpfifffcccfmtz~\81\85\85\88\8f\92\92\92\92\88\85\85\81p=A=300"%),)0,33330,,0)0,00336366366:::===AAKU_\99\96\99\9c\96\96\92\8b\8f\8b\88\81\85\81wttpiimppt\8b\92\96\92\92\92\8f\8f\8f\92\8f\8f\92\8f\92\99\99 §§ªª±±ª§\8b\8b\8b\88\8b\8f\8b\8b\8f\8f\96\96\96\96\92\96\8f\88\88\88\88\88\8b\88\88\8b\85\88\88\88\88\8b\88\88\88\85\81tpfcc_\\X\UXXRURUUUU__\UURNNRNKKKGGKGGNUUUXX\XUNNRKKKKNGKNURXXXX_\\\\_\X_\\_c__\XUKRKKGGKKKKKKDGDGA===DDD=GGNKX\\85\85\88\8b\8b\8b\8f\8b\8f\8f\8b\8b\8b\8b\8b\88\85\88\85zzppwppmpmpimipppttwmmmmiffc\\X\UUUNGRADAAD=======DGKNNNKNGKDNNDDRXUXX\URUNRKGDDDKAD:DA:6=ADAAKAKKNURRXKD=33330300,0,0000336::AD=DGDGKGKKRGRRRRXNRNXXR\UUUXNGRUUNNKGAAAA=====:::::6666633A630=03:=30DAGADA=DGAAKKK=GGGGDNDAGKURRRRRU=G,%%%"\e\18\18\e\1f)3DADDRNpz~\81\81\81\85\81\81~~zzzzz~ztwwzwwwzwtpmmpptwtwwwwz~~\81\81\81\81~~\81~\81~\81z~z~~\81\85\88\88\88\8b\88\85\85\81\85wwiffifffffffifcc\X__ffffcc__\\\ccimp\8b\92\92\92\92\96\92\8f\8f\92\8f\92\92\8f\8f\8b\8b\8b\8f\88\8f\8f\96\99\99\9c\9c \9c\99 \99\9c\99\9c\96\99\99\99\9c\9c\9c\96\99\96\96\96\99\96\9c\9c\9c\99\9c\99\96\99\9c\9c§¸´¸¸»¸»»»»»´´´±´´´´±±ª££ £\9c \9c\9c\9c\99\96\99\96\96\96\96\92\96\9c££§£§§ª§£§££§£§§§ª§ªªª§ \9c\96\8f\88\88\81~zwwpppmiiiiffffmtzz~\81\81\85\92\8f\8f\92\8f~\~KN:6:30,%)))),,03000,),)0,0033:3363366:::::A=GU%\9c \99\99\96\92\8f\8f\8f\88\81\85\81wppmffimtt\8f\8f\92\8f\92\92\8f\8b\8b\8f\8b\8b\8f\8f\8f\96\96\9c£§§ª±ª±ª§\96\8f\8b\8b\8b\8b\8b\8b\8b\8f\8f\96\96\99\99\96\96\92\8b\8b\8b\8b\8b\8b\88\85\8b\85\88\88\88\85\88\8b\88\88\81zpmcc_\\\XXR\XXXUURRN\XXRRNNNNNNKGKKNKKRRRRUXXURKKNDGKGKDKNRUXXXX_\__\__X\\\___\XXXNKGKDDKGKNNNGDGKDAAAGAG:KKRU\81\85\85\88\88\88\8b\88\8f\8b\92\8b\8b\8f\88\8b\8b\88\85\85\81wwpttmmppmpmmimmmpptiiimfffc\\\\XUUNKNDADDD=AA==A=ADGKNKKKDKAGGGDNKRXXXURNRRKGADAK=D6A=3:ADDAAKANKNUNRXGA:36330000,000330336::=GADGDKKGGNRGRNUUURRNXUNXXXXXKGUURRNGDAAAA====:::::66666333A303:,6630,A=D=A==AD=AGAD:==DADAA=DGRNNNN=G:0)%""\1f\e\e\14\18",0036=AKmwz~~\81\88\81\81\81~~~zzw~ztzwzzwwzwwmmppptwwwwwwz~~\81~\81\81\81\81\81\81\81~\81z\81z\81\81\81\85\8b\8b\8b\8f\8b\88\88\85\88~zmifiiffcfccfc___\__cfiic__\_\_c_ipt\8f\96\96\96\96\92\92\92\8f\92\92\96\92\92\8b\8b\8b\8f\8f\88\8b\8f\96\99\9c\9c\9c\9c\9c\99\9c\96\99\99\9c\99\9c\99\99\99 \9c\96\99\96\96\96\99\96\9c\99\9c\96\99\99\92\96\9c\9c£±¸¸¸»»¸¾»»»»¸¸±±¸´´´±±±±ªª§££ \9c \9c\9c\96\99\92\92\96\99\92\99\99££§£££§§£§§§ª§§§§ª£ªªªª£ \99\92\8b\88\85\81~z~wttpmipiimiippwz~\81\81\88\8f\8b\8b\8f\8bKKNA:3360,,))%),)),0,,,)),,,,000360360033:666:=:,t% ££\99\9c\96\92\92\92\8f\8b\85\85~wtpifffitz\8f\92\96\92\96\8f\8b\8f\8b\8f\8b\88\8f\8f\8f\92\99\9c££§ªªªªª\99\92\92\8b\8f\8b\8b\8b\8b\88\92\8f\96\96\99\99\96\96\92\8f\8f\8f\8b\8b\8b\8b\85\8b\81\88\85\85\81\85\88\85\85~zmi_ccX\\\XU\\\XUXURNUNNNNKNNKKKGDKNKKKNNNNGUURNGGKDDGGGDKKRRUXXX_\\_\__\X\\\\\XUUUNKAKADGDGNNNGGGNDDDDDDK:GKU\\85\88\88\88\88\85\88\8b\8f\88\8f\88\8b\8b\8b\8b\8b\85\88\81~wwtptmmppmmimiiimptwiiimfcf_\X_\XXRKKRADDDDAAD=AAADADKKKKG=GADDDADKRUUNUNRRNKG:D=GAD6==6:DADDAGKNGKRRNUD=663330000,33366366:::AKAAGGKGDGRUKUNXUUUUR\RR\\XXUNDXUNRKKAAA===:=:::66663333363D3006033,),A=A==::=::=:=A6::A=A===:GNKKGG:A3,)%\1f\1f\e\18\e\14\e%),033:=G_twzz\81\85\81~\85\81~~zzzzzwzwzwwwwttmmppptwwtwwz~\81~\81\81\81\81\85\81\81~\81~\85~\81z\85\81\85\88\88\8f\8f\8f\8f\8b\8b\88\8b\81~mmimfifcfccf___\_c_ffifcc_\___ccmtz\96\96\99\99\99\99\96\96\92\96\92\99\96\92\8f\8f\8f\92\8f\8f\8f\8f\96\99\99\99\9c\99\99\99\9c\99\99\99\99\99\99\99\99\96\9c\9c\99\99\96\96\96\99\99\9c\96\99\96\99\96\8f\92\99\9c ´»»»¸¾»»»»»´¸´±´´´±±±±ªª§££ £ \99\99\99\96\8f\92\96\92\99\99 ££ £§£§ªªª§ª§ªª§ªª§§£\9c\96\8f\8f\88\85\81~\81zwwtpptmmpmmtttwz\81~\85\8b\88\8f\8bNKD==30300))))%,)%%),,%)%))),),,3363330,0063336360p"££§\99\9c\96\92\92\96\8f\8f\88\85\81wpmccc_ft~\8f\92\96\92\92\92\8f\8b\8b\8f\8b\88\8f\8f\8f\92\99 £§ª§ªªª§§\99\92\92\8b\8f\8b\8f\8b\8b\8b\8f\8f\92\92\96\99\99\96\92\92\8f\8f\8f\8f\8f\8b\85\88\81\85\81\81~\81\85\81\81zwmf\__U\__XX\\_UUUXRNRNKGGDNKKKGDDKKGNKKKGKGRRKDDGDDADGDDGKNNRXXX_\_____XX\\X\_URURKGAG=DDAGNNNKKKKNGGGGGK:GRXz\88\8b\8b\88\88\85\8b\8b\8f\88\8b\88\8b\8b\8b\8b\88\85\85\81~wwpmtpmppmmimmimppttmimiifc__X\\\\NGGNDGGGAAAD:DD=GDGKGGGDADAA=DADGRRRKRKRNNND:DAGDD66=:6DAGGDGNNKNUURRAA6333300000303336636==DKDDDKNKGDNXNURXUXUUUXNUXXXUXRGURKNKKA====:::::666633333660G603:,0,,,)=:=:::==:6:6:66:6:6=6:::DGDD==6:6,,"\1f\1f\e\e\18\14\1f"%),006:D\mtwz~\81~\81\85\81~~wwzwzwzwzzwtttpmmppptttpwwz~\81~\81\81\85\81\85\85\85\81\85\81\85\81\85\81\85\85\85\88\8b\8b\92\8f\92\8f\8f\8b\8b\85~mmmpiicfcccc\\__cccffifcc____ccfit~\99\99\9c\9c\9c\9c\99\99\96\99\96\99\99\92\92\92\8f\92\92\92\92\92\99\96\99\9c\9c\99\99\99\9c\99\99\99\9c\96\99\9c\99\96\9c\99\99\99\99\99\99\99\9c\99\96\96\96\96\92\92\92\96\99 ´¸»»»»»¾»»»´¸¸±´´´´±±±±ªª§££££ \9c£ \99\96\99\96\8f\8f\92\92\99\99\9c\9c £ ££§§ª§ªª§ªªªª§ª£ \99\96\92\8b\88\85\81\85~zwwttwpptppttwww~z\81\88\85\8bzNGA::3030,%%)))))%%%))%%"%%),)),00300000,,30303330p§§£§ \99\92\96\99\92\92\88\81~wpicc__cw\81\8f\92\92\8f\8f\92\92\8f\8b\8f\8b\88\8f\8f\8f\96\99 ££ªªªªªª£ \9c\96\92\8f\8f\8f\8b\8b\8b\8b\8f\8f\96\8f\96\96\99\96\92\92\92\8f\92\8f\8f\88\85\85\81\81~~zz\81~twtmi\c___cc\X__\UXUXURNNGDGDKGKGGGDKKGKGDDDDDKKGDAD=A=ADAAKKNNNUU\_\\\_\\\XXXXX\XURKGGDGADDAGKKKNNNNRKKKGKKKRU_~\8b\8b\8b\88\8b\88\88\8b\8b\8b\8b\8b\8b\8b\8b\88\88\85w~~zwpptppppmmmmiimppttiimfifcc_X\_X\NDKNAGGDDDDD=DGDKDGGGKDAA:A=ADDDG=KKNRNRRNNG:KDGGA:::==DDKKGKNNKNXXNND=:333300003303063666==DKDGGKNKKGKUKUU\XXXXU\RXXUURXRDRNANGGA==:::6:6663633303066,D630:),,))):666:=::66636:363:3666:6AAA6=:0,3))%\1f"\e\1f\14\18\1f%),0,,33=X\ptzz\81z\81\81\81\81~zwwwwwzz~zwtptpmmpppptttwzz~\81~\81\81\81\81\88\85\88\85\88\85\85\85\85\85\88\85\85\88\8b\8b\8f\8f\8f\92\8b\8b\8b\85\81pppmmicf_ccf__cccccfiffff_c__cffmz\81\9c\9c\9c \9c\99\99\9c\99\99\99\96\96\96\92\92\92\96\96\92\96\96\99\9c\99\9c\96\99\9c\9c\96\9c\9c\99\99\9c\9c\96\99\99\99\9c\99\99\99\9c\99\96\96\96\92\96\8f\92\92\99\99£´¸»»»»»¾¾»»±¸¸´´´´´´±±±±ª§££££\9c \9c \9c \99\99\99\96\92\92\96\96\99\99 \9c £ £§§ª§ªª§ªªªªª§ª§£\9c\99\96\8f\8f\88\85\85\81~~zwwzttptmpptttzz~~\81U_KDA63300,))%,)))))%"))%%"""%))),,,00,,,,))0,00030,£Kª§§££\99\96\99\9c\96\8f\8b~ztmf__\c_z\88\8b\92\92\8f\8f\92\8f\8f\8b\8b\8b\8b\8f\8f\8f\99\99\9c£§§§ªªª£ \99\99\92\8f\92\8f\8b\88\8b\8b\8f\92\92\92\92\96\99\96\96\8f\92\8f\8f\8f\8f\88\81\81~~ztwwwwmpmimcccccff____\X\XXURGKDDDDGGKGGDDGGGGGDAAAADD=A=AAA=AADAGKKNNUUX_\\\\\X\X\XXUXXURNKKGKDDGDDKGGNNRRRNGNGKGNUXc~\8b\8b\88\88\8b\88\88\8b\88\8b\8b\8b\8b\8b\8b\88\88\85wzzwwtttppppmmimimpppttifmfffc_c\\\\XKDGRGGDGDDADADGGGDGGGGD:A6===ADAG=GKKNNRURRKDNGGD=:::=AADGKGNKKGKUUKKD:6333330000330063366==DGAGKKKNKKKRGUX\\\UUUXRUURRUUNDA=AKDGAA:::66666333300303360D6636)))%%%63336:6636600:6636333063=A=6:03,3,%%\1f"\e\e\18\e")),,,,033GXipww~z~~\81~~zwwwwwzwzwwtpppmmppmpttwwz~~\81~\81\85\81\81\88\85\85\85\88\85\88\88\88\88\8b\88\88\88\8b\8b\8b\8f\8f\8f\88\8b\88\85\81tptimicfc_ccccffcffffifiicfcccffp\81\99 \9c\9c £ \9c\9c\9c\9c\9c\99\9c\99\99\96\92\92\96\96\96\92\96\99\99\99\9c\99\96\9c\9c\99\99 \9c\99\9c\99 \99\96\9c\96\9c\99\96\96\99\96\92\96\96\92\92\8f\8f\92\99\9c£±¸¸»¾¾»»»¾»»±¸´±´¸´´´´±±±±±ª££££ \99\96\96\96\92\92\92\92\99\99\9c\9c \9c £££§ªªªªª§ªªª§§§£ \9c\99\92\92\8b\88\8b\85\81\81zz~~wttpmpmppmpwfm_N\GA=3300%,))%,,,,)%%%%%%"\1f\1f"%)%%))),,)),,%%,)%,)0,)£Nªªª§£\9c\99\96\99\92\8f\88\81~pifc\__\z\8b\8f\8f\92\92\92\92\8f\8f\8b\8b\8b\8b\8f\8f\92\96\99\9c££§ªª§ªªª§§ \9c\96\96\92\92\8f\8f\8b\8b\8b\92\92\92\92\8f\92\96\96\96\92\92\92\8f\8f\8b\85~~zzwttttpmmmiifcfffcicc__\X\XXURGGDGDDGGGDGADGGGDDA=A===A:=:===:=ADDGKNRRRRX\\\XX\XXX\XXXRURRNKNDKGDGGGGDDNNURRRKRDNNRX\f~\88\8b\85\88\88\8b\88\88\88\8b\8b\8f\8f\8b\8b\88\85\81wzzwwttttpppmmipmpptpptmcmfif_\_XXXXUNGGNKGGKGGAGAADKGDDKDDA==::A:AAAD=AGGKNURUUNGRGDDA:::ADDDGGDNKGGGURDGD66333333303300,3636::=GKADKNNRKGNNKUXXX\UUUURRRNRRRKA==AGDDD==:663:3333300360003,D333,)%%""%300030330333363303033033:=:3600,00%)"\1f\e\1f\e\1f",)0,,,303DX_mttzz~\81~zzzwwwwtwwwttppmmmipmmpttttzzz\85~\85\85\85\85\88\88\85\85\88\88\8b\8b\88\88\8b\88\8b\85\88\88\88\8f\8b\8b\88\88\85\81~tppfifccf_ffcciffiiifmimififfffit\92\99 \9c£££ \9c \9c \9c\99\96\96\92\96\92\96\96\96\96\99\9c\9c\99\99\99\9c\9c\99\9c \99 \9c\9c\9c\99\9c\92\99\96\96\92\99\92\92\96\92\8f\92\8f\92\92\96\9c ´¸¸»»¾»»»»»¸´´±´´´´¸±´´´´±±±ª£ £££ \9c\99\99\92\92\8f\92\92\92\99\99\99 \9c £§£ªªªªªªªªªª§§£ \9c\99\96\96\8f\88\8f\85\85\85\81~\81zzwwpimiiiiicci_NUGA=330,%)%)%)),,,)%)%"%%\1f\e\1f"%"")%%,)%%))""))%,)%0)§ªªªªª£ \9c\96\96\96\8f\85~~tff___\Uz\8f\92\92\92\96\92\92\92\8f\8b\8b\8b\8f\8b\92\92\96\9c £§§§§§§ªª§ \9c\92\96\92\8f\8f\8b\8b\8b\8b\92\92\8f\8f\8f\92\99\99\99\96\96\92\8f\8f\8b\85wzpptppmpiiiiffifiiiffffcc\\\UUURKDGKDDGGKAGDGDDDAAA===:3:6:::=::=AAADKKRNRRXX\X\XXXXX\UXXUXUUNRRNNKGGDKKGGKRRRRRKRGNRUU\cz\88\8b\81\88\88\88\88\88\88\88\8b\8b\8b\8b\88\88\81\85wzzwtwtwtttppmipppttpptmfmiic__\X\XXUNKKNNKKKKKAGADDGGGDGAAA=:66=:=A=:AAKGGRRRUXRKRKAGA=:=DGGDGDDKNDDDUNGKA:663333330033300:33=:=GGAAGNRNKKRNKXX\\\XRRKURNKNNKK=::DGDGG=:66336300000033,,,0)A000%%%"\1f\1f"3,,%0,00,000336303000366:::66,000,)%\1f\1f\1f\1f\1f\1f"0,0000333=U\fipwwz~zzzwtwwwttwtppmmmiiippmpptptwwz\81~\85\85\88\88\88\88\88\85\88\8b\8b\8b\88\88\8b\88\88\81\85\85\88\8b\88\88\85\85\81~ztpmiiffcfcfffiiiiiiifimimiffifmm\81\96\9c\9c £ ££ ££ \9c\96\96\96\92\96\96\96\96\99\99\99\99 \99\9c\99 \9c\9c\9c\9c\9c\9c\9c \9c\99\96\99\92\92\8f\96\8f\92\92\92\92\8f\8f\8f\92\92\9c±¸¸¸»¾»»¸¸¾»»´´±´´±´¸±´´±±±±ª£\9c\9c ££ \9c\99\92\92\8f\8f\96\96\99\99\9c\9c\9c£\9c£§§§ªªªªªª§§ªª§§ £ \99\9c\96\96\92\8b\92\88\88\88\85\81\85wzwtmfifcfffc_c\NRD=A330,))%))%),,0,))%%%"\1f\1f\e\1f"\1f\1f%"")%""%%\1f"%%%))%0,ª§ªª§ª§ \99\96\92\8b\85~~pffc___X\8b_\92\92\96\96\96\92\92\92\8f\8b\8f\8f\8f\8f\92\99\9c\9c ££ª£§§§§ \9c\92\92\92\8b\8f\8b\88\88\8b\8f\8f\8b\8f\8f\92\99\99\96\96\92\92\92\8f\88itimmmmfiifffiifiimiiiffcfcX\\XXURKKGKDGGKN=DDGDDDA===:::66::6::::=ADADKGNNRUXUXX\\UXXUXUU\\XXXRURRRKKKDKGKKKNRNNNKRKNUXX\_w\88\88\85\85\88\8b\8b\88\8b\8b\8f\8b\8b\88\88\85\85\85zzzwtwtztpwtmmmmttpttptmimficc_\X\UUXNGKNNKKGNGADDAADDDDDA==:666A::A=3A=GDDRNUUUUNRK=D=ADAGKKGGDANNAAARKDK=:663333330330000:63=6:GGDDGNNKGNNKR\\_\XUUNGRNKGKKGG:=6ADGDDA=6300630,0,,,00,)),%D),%""""\1f\1f\1f0))\1f)%,,,)0,06:6333033666:6360,03,%"\1f"\1f\1f\1f"",03033333AR\_fiptwzzzzwtttttttpmmfiiiimpmpptppptzz~\81\85\81\88\88\8b\8b\8b\88\88\88\8b\8b\88\88\8b\88\88~~\81\85\88\85\85\81~zzwtpmmfffffcffimmmmiiiimmmpiimmmp\85\85\96 \9c£££££££££££ \99\99\96\96\92\96\96\92\96\99\99\9c \9c \99£\9c \99\9c\9c \9c\99\99\9c\92\8f\8f\92\8f\8f\8f\92\92\8f\92\8f\92\96 ´¸¸¸»¾»»¸¸´¸¸´±´´´±´¸±´±±±ªª§£ \9c ££\9c\96\92\92\8b\8f\92\96\99\99 \9c\9c §§§§ªªªª§ª§§§§§ª§§£ £\9c\99\9c\92\92\92\8b\8f\8b\8b\8b\88\85\81twtp_c_c_ccc_\XGKGA:=630,,))))),,,,,),))""\1f\1f\e\1f\1f\1f\e"""%\1f""""\e"")%%%),0ªªªª£§£\9c\9c\96\92\8f\88\81\81zmiifcc_X\8fc\92\8f\96\96\96\96\92\92\8f\8b\8b\8b\8f\8b\92\96\99\99\9c\9c£ §£§§ªª§ \99\8f\8f\8f\88\8b\8b\85\88\88\8b\8b\8b\8b\92\96\96\96\96\96\96\96\8f\8f\8biifcfiifcffcfiifmmmiimiific\\\\XXRRNRNDKGKKADAGDDAA:==6=6:6=66:666=AAAGGKNRNRUXXXXXUUXRUUX__\\UUXRUUNNNDNKKNKRRNNRNNKKUUUX_c\85\85\81\85\85\88\88\85\88\88\8b\8b\8b\85\88\81\85\81~zzzwzwztpttpmmmttpttpwmimfffc_\\\XXUNGGNKKGDKD=AD=6=6AAA=::63:6=::A:6A:DDARKRUXRKRK6DADGDGGGGDADNKGADNGDK:666333333003,,,,6:6A66GKGGGKKKGNKGUXX\XXRRGGGKGK:GD:6:6=DDGA=A:333660,,,,),,))%%"A%%\1f\1f"\1f\1f\e\e\1f,%)\18\1f"))),,036::66666666::6033033,)""\1f\1f\e""%,3636666:ADX\cffptwwwwwwtttttpmifffifiipmmptppttzzz\81\81\81\88\88\8f\8b\8b\88\88\8b\8f\8b\8b\88\88\88\88zw~\81zz~zwttwttmmifffccffmppppmmimpmptmmppzz\8f\92\99 £ §£££ £££§££\9c\99\99\99\92\96\96\96\96\9c\99\9c \9c§ ££ \9c\9c\9c \9c\9c\9c\9c\99\92\92\92\8f\92\8f\8f\92\92\8f\8f\8f\92\99ª´¸¸¸»»»¸»¸¸¸´¸±´±´±±¸±´´±ª§§£\9c \9c\9c \9c ££ \99\92\8f\8f\8f\92\96\99\9c \9c\9c ££££§§ª§§§§§§££ªª§£££ \99\99\96\96\8f\8f\8f\88\8f\8f\8b\85~ptp_\_\_\\__\XRGGD=::63000,,))),,),),)))"\1f\e\e\e\e\1f\e\e\1f"\1f"\e\1f\1f\1f\1f\1f\1f\1f%%"%),0ª§§ª£££\9c\99\92\8f\88\81\81\81zpmmiffpt\8f\92\92\92\99\99\99\96\92\8f\8f\8f\8b\8b\8f\8b\92\92\96\96\99\99 §§§ª§§\9c\96\8b\8b\8f\88\88\88\85\85\85\88\8b\8b\8b\92\92\96\96\96\96\96\96\8f\92\88i_\_c_cc_cccffifimmimifmiff\\__X\UURURNNGNGDADDADA====6:3:6::36363:A==GDKKNNRUUUXXXRRURRU\cc_\\XXRUURRRDNNKRNNRKRUNNKKRRRX\_\81\81\85\81\85\88\85\85\88\85\88\8b\8b\85\88\85\85\81~zzzzwwwwtttppmppttttpwiimfffcc___XXURKGNGGD=GA:=A:6:33==0666366=66A6:A6ADDRKURURNRR:ADGDGGGKKGAGNGNAANDAG:6::333333003)),,3=:D36DNKKGGKNGNNNXUX\UXRUGKGGGG::=:66:6DAGDAA:63663,)),))%)%%""\1f="\1f\e\e\1f\e\e\18\18\e\1f"%\18\e\1f%%)0006:6=:===6666:6:6033360,,%"\1f\1f%")06:66:6:=DGUU_cfmptttwwwtttppmmmffiiciimppptttwww~~\81\85\85\85\8b\8f\8b\8b\8b\88\8f\8b\88\88\88\85\88\88wtwwtptwtttttpmmfffcfcfippttppmmptttttptw~\88\92\96\9c £££§££££§§§§§§ \9c\96\99\96\9c\96\99\99\9c\9c \9c §£§££ \9c\99 \99\99\96\92\8f\92\8f\92\92\8f\92\8f\8f\8f\92\96\9c±´´´»»¸»»¸»¸±´±¸´´´´´±±±ªªª££ \9c\9c \99 \9c \9c\96\92\8b\8f\8f\96\96\99\99 \9c\9c\9c £§§££££££ §ª§§££ \9c\96\99\99\99\92\8f\8f\8b\92\8b\8b\85zppiXX\XX\\\\RUNGDA:66:600,00,)),,)),,))%%\e\e\18\18\18\e\18\e\e\1f\1f\1f\1f\e\e\1f\e\1f\e""%%),00ª§§§££ \99\96\92\8f\88~\81~ztppiiitw\8f\92\92\8f\99\9c\96\96\96\8f\8f\8f\8b\8b\8b\8b\8f\8f\96\96\96\99 £§£ªª££\99\92\8b\8f\8b\88\85\88\81\85\85\85\88\88\8f\8f\92\92\96\96\92\92\96\8b\8fzf_\X\___\c__ciifmimimmiiiic_X\\\\UXUUURRKNGGDAGADAA===::3::::36333:AA=DDGKKNURRRXXXUUUNRU\ccc__\\RUXURRANRNRNRRNRRNNNNNNUU\\z\85\81~\81\85\81\85\85\88\88\88\88\85\88\88\81\85~~zwzzwtzwtptpimmtptpptiiiffccccccUURUNKRDD3:G:66633000,6,,3336::::=:6A36ADNNRUUNNRU:DGGGKGKNGRNNRURADRDAD=666633333003,,000A=D6:AKGGDDKNKKRRXUUXXURRGNGDDD::6663:3G=DD=A=:6360,%%)%%""""\1f\e\e3\e\18\18\18\e\18\18\14\14\18\1f\18"\e\e")))030:=6A=AAAA:6:::::633:3300%%"%)%,036:6::=ADKXU\_cimptttttpttppmmicfiifiiiptpwtwwzz~\81\81\85\85\85\8b\8f\8b\8b\8b\88\8b\8b\88\88\88\85\85\88tpmimpmpmtttttpmicfcfcimtttwttptttwwtwww~\88\8b\96\99 £££££§§ª§§ªªª££\9c \99 \99\9c\99 £££ ££§§ \9c\9c\99\9c\99\99\96\96\92\92\8f\92\8f\8f\92\8b\8f\8f\96\99 ±±±¸¸´¸¸¸»¸´´±¸¸´´´´±±±ªªª§ \9c\99\9c\99\9c \9c\9c \9c\99\92\96\8f\8b\92\96\96\99\9c\9c\9c\9c\9c \9c\9c\9c\99££ £ £££§ª§§££ \9c\99\99\99\96\96\92\8f\8f\8f\8b\88\81pmf_XU\\X\XXUNNGD=::66:60,)0,,)),),),)))%"\18\e\14\14\18\e\18\e\e\1f\e\1f\e\e\14\e\18\e\1f%"%),:3ªª§§£ \9c\96\8f\8f\8b\88z~~wwppmmmtw\92\92\96\8f\99\9c\99\96\92\8f\92\8f\8f\8b\8b\8b\8f\8f\96\96\99\99 £§§§§ \8f\88\8b\8b\8b\8b\85\85\85\85\81\85\85\88\8b\8f\8f\8f\92\96\8f\92\92\88\85mc\\X\\\\\_\_ciffiimimiimimf_X\\\\X\XXUURNKKGGAGDDDA:A=::6:=::66663:AA=DGGKNRRRUR\XXXRRRNXX_ffcc_\XX\URRRNRRRRRNRRRRRKNNRUR\Xf\81~~\81\88~\81\81\85\85\85\88\85\85\88\81\85\81\81~zzzzwwttppmiimpptpppfffffcc_fcc\UUXNKN=A63D:3:3,0,)),),,0336:6:=0=6AG:=DNRNXURRUXGUKKKNGKNKURRUXUDGUAAD:::6333333003,0000=DD36=GD=ADGNGGUUXRXXXUNNDKGAAA=:666663GAAD:A==303,)%"%""\1f\14\1f\1f\14\11\18)\14
+\ 3\ 3\18
+
+
+\ e\14\e\e\1f\e\18"%,,,036=:AADDDDA==:===::6=:633)))))),036::66==GKUXX\ccimptpppmtpppmmiccifimmmptpwwwz~~\81\85\85\88\88\88\8b\8b\8b\8b\8b\88\8b\8b\8b\8b\88\88\85\85tmiimmifmpppptpmiffcffmptwzztwtwwwzzzzz~\85\8b\8f\96\9c \9c ££§§§§§ £ £\99 \9c££§££ £§£§§ £\9c\9c\9c\99\99\96\96\96\92\92\8f\92\92\8f\8f\92\8f\8b\8f\92\99£ª±´´´¸¸»¸¸»´´¸´´¸¸´±ª§§§ \9c \99\96\99\9c\99 \9c\9c\9c\99\96\96\8f\8f\92\99\99\9c\9c\9c\9c\9c\99\9c\99\99\9c\99 \9c \9c \9c £ £§££§§ \9c\99\9c\9c\96\92\92\8f\8f\8b\88\85~ticXUUXXXX\XUKKKG=::666300,,0,),,)),,)))%\1f\e\e\18\14\14\18\18\e\e\e\e\1f\18\18\14\18\18\e""%),,=GA§§££\9c\9c\99\92\8b\8b\88\85z~~zwttppmtw\8f\96\96\92\96\99\99\96\8f\8f\8f\8f\8b\8b\8b\8b\8b\8f\96\92\99\99\9c£ §ª§£\9c\96\8b\88\8b\88\8b\8f\88\85\85\85\81\88\88\88\8b\8b\8b\8b\8f\92\92\8f\8f\85\81icX\UX\XXX_\__fcfiiiiimimimic_\\_\\X\XXXUNKKGKADGGG=:A=666::=66::63==D=DGGKKNNUUU\\\UNNUN\Xcifff_\\XXXRRURURUUUKUUNNRKNNRRRXX\tzz\81\85\81\81\81\81\81\81\88\85\85\85\85\85\81\81~~zwwwttptmmfimpmppmmccfiif_ccc__XXXRGR==66A606,,,,,))),0,333666:0=3DK:GGRUNXRURUUUXKKKRGRRRXUUX\XX\XAAG6==663333333603300=GG336AD:=AGKGGXX\RUUURKADAD==::::63::6D=DA6A=:630,%"\1f"\1f\18\18\14\14\14\11\ e\14%
+
+\0\0\a\ 3\0\ 3\ 3
+\18\18\e\18\e%%)00006A=ADDGGGDAA=A:A==:A=:66,,0,),,36:6636:=KNU\\\_cfmmpmppptmppppifciimppptttwwz~~\81\81\85\85\88\88\8b\88\8b\8b\8b\88\88\8b\8f\8b\88\88\85\88\88pfffiimfmmmmpppmmiiiiittzz~~\81\85~zzz~~~z~\81\88\8b\92\96\9c\9c\9c £\9c\9c\9c £§§ªªªª£§£§ £ §§§ § §£££§££\9c\9c\99\9c\99\92\92\92\92\8f\92\92\92\8b\92\8f\8b\8b\92\8f\96 §ª±´±´´»»¸¸¸´¸¸´¸´´´±ª§§£§\9c\9c\9c\96\99\99\9c\99 \9c\9c\99\92\92\92\92\92\96\9c\99\9c\99 \99\96\99\99\9c\99\99\99\9c\9c\9c\99\9c\9c\9c £ §§ \9c \99\99\96\96\92\92\88\85~tpf\UXUXXX\XUUKGGD:=66663300,0,),,,))),)%%\e\e\1f\18\18\14\14\18\18\e\e\18\e\18\18\11\14\14\e"%))0,:DAª§ \99\96\92\92\85\88\85\81~\81zztttttptt\8b\92z\92\92\96\96\96\8f\8f\8f\8f\88\88\8f\8b\8f\8f\96\8f\99\99 §§§ \9c\96\92\8b\8f\88\8b\8f\8b\88\85\88\85\88\8b\85\88\88\88\8b\8f\8f\92\8b\8b\81f__X\UU\XXU\\_\c_fffiffmfimpmccc_\\_\_XXURKNKKKAGDGDA:==6:6===:6==:6=AD=DDDGNKNXUX_\_\RUUR\\cffffc\_\XXUUXUXUUUUNUXRRRKRRRUUUX\mww~\81\81\81\81\81~\85\85\85\88\85\85\81~~~~zwwttpppmifiimimmim_\fificc_c_c\\\RKR=63::30,,,),))%)),,000,3360:0DK6KGUXRUUUUUUXURKNUNURU\XX\X\XXXDAD6A::66663333600030:KD336=A:A=DGGGXU\UURRNGAAAAA=::6:666::::A=3=:6600)"\1f\e\1f\18\18\14\14\14\14\ e\11\11\e
+
+\99\ 3\a\0\99\0\0\0\e\18\e\18\1f"%)0333:D=ADGKKKGDAAA=A=A:=D=::003000036:36366=KRX\X\\_cmimmmpppmmpptiifmmmtptwwwzzz~~\85\85\88\88\88\88\8b\8b\8b\8b\8b\88\88\88\8f\8b\85\88\85\88\85mffcffiimmmmmmpmmmmmmmww\81\96\88\85\8b\88\81\81~~~~\81~\81\85\8b\8b\8f\96\99 \9c£ \9c\9c £§ªª§ª§££§ §§ª£§£ª§£§£§£\9c\9c\99\99\96\8f\92\96\92\8f\92\92\8f\8b\8f\8b\8b\8f\8f\8b\92\9c §±±´´»¸¸»¸´´¸´¸¸´´±ªª£§§§£ \99\96\9c\9c\9c\99 \9c\99\96\92\96\92\8f\92\99\99\9c\9c\9c\9c\99\99\96\96\99\99\96\9c\99\9c\9c\9c\99\9c\99\9c \9c\99££££\9c\9c\9c\99\99\99\99\96\8f\8b~zpm_XUUUXX\XXRRNGGA:=6:6633,000,,,,,,,%)))"\18\e\e\e\18\14\18\18\14\18\18\18\18\18\18\14\18\11\e\1f%),,06A\§ \99\96\96\92\88\88\88\81\81\81zwwwttpttt\85cz\8f\8f\8f\92\96\8f\8b\8b\8b\8b\88\8b\88\8b\8f\96\92\96\99 £§££ \99\96\96\8f\8f\8b\8f\8f\8f\8b\88\8b\88\88\88\81\88\85\88\88\8b\8b\8f\88\85c\\\UXXUXXXUX\_\c\cffffcicfppmiif_\____\\URNNKKKDGAGDA:==:=:=AA::===:=AD:DADDKGNXX\____UXUUX\_ccfc_\_XXXUX\U\UUUXUXXURUNRURXUUX_fttz~\81\81\81\81\81\85\85\85\88\85\81wzzzzwwtptmmmiffififiifi\_cfcfffc_c__\\UGN:60663,,,0),))),))),,,,003360AN3NNUXUXRUUXXURUNRURXUX\X\\XX\XUGAG6A:=66663333633033=GD3366==DAAGGGUUXURNGGDAAADD=:::66366636=:0:633,,%\1f\1f\18\18\18\18\14\18\14\11\ e\ e\11\1f\ e\a\0\a\ 3\99\99\99\99\99\18\14\1f\14"%))0633:A=DGGNNNKDDAAADAA=GGA==3:6333366603033=\X\_\\__ciiiimpppmipmtmiimppwwtwzwzzz\81\81\81\85\88\88\88\88\8b\8b\8b\88\88\8b\85\88\8b\8b\85\85\85\85\81mfififiimmippptmmpppmm~\9c\85\99\99\99\8f\92\85\85\81\81\81~\85\81\81\88\8b\8f\92\99\9c\9c\9c \9c \9c §ª±ªª§§§ª£§ªª§ª§§§§£§££ \99\99\9c\96\92\8f\96\8f\8f\8f\8f\8b\8f\8b\8b\88\8b\8b\85\8f\9c££ª±±±´»»»»»¸´¸¸´¸¸±§£§§§£ \99\99\9c\9c\9c\9c\9c\9c \99\9c\96\92\92\92\92\96\99\99\9c\99\9c\9c\9c\99\96\99\99\99\99\9c\99\99\99\99\99\9c\99\9c\9c\9c\9c\99 £§£ \9c\9c\9c\9c\96\92\8f\88ztm_XUURUXX\XXURNGGA:=6:6:33,,0,,,0,,0,))%%\1f\e\e\18\18\18\14\e\18\14\18\14\18\18\18\14\18\18\11\18\e"),,,3AR§ \9c\96\92\8f\8b\8b\88\85~~zzwwtttttpmfw\8b\92\8b\96\92\8f\8b\8f\88\8b\8b\8f\8b\88\8f\96\96\99\9c\9c£§§£§£\9c\96\99\8f\92\8f\8f\92\92\8b\8b\8b\88\88\88\81\85\85\85~\88\88\85~\81_\XXXUXUXXXU\X\X__ccccccfcfptpmmi__c___\XXURKGGKGDADDA=:A:==ADA=:AA=:==A:A=DAGGN\\__ccc\\XX\X\\_cc_\_\\\X\\X\XXX\XUUXRURRXUUUXXcfptz~~~\81\81\81\81\85\85\85\81~wwwzwttpmpimiffcffcccccf\\_fcfffc_fcc\_RGN::3::3,,,,),))%)))),,,,0033:3=N3RRXXX\UUR\XUUXRUXXXXX_\X\XXX\RGDK6=6A66633333606633=DG3366::AAADGKDUURRKGDAADDAA=:::6:333363:3,0300%,%\14\e\18\18\18\18\14\14\14\11\ e\ e\ e\e\ e\a\ 3
+\0\99\99\99\99\99\14\11\e\18")%006366=AAKKNNNNGGDDDDADAKNDNA6D:6663:6633036Afccc___cfiiiimpppmmpmppmipttwzzz~z~~z~~\81\85\88\88\8b\88\8b\88\8b\88\88\8b\85\88\88\88\85\81\85\85\81miififimmmmppttppmptpw\85 \9c\9c\9c\9c\9c\96\88\88\81\81\81\81\85\81\85\88\8f\8f\92\96\99\99\9c £\9c\9c\9c\9c §ª±±ªª§§ª§ªªªª§§ª££§£ \9c\96\96\99\96\92\8f\92\8b\8b\8b\8b\88\8b\88\88\85\88\88\81\8f\9c££§ª´±´¸»¸»¸¸¸¸¸´´¸´±±§ª§§£§£ \9c\9c\9c \9c\9c\9c\9c \9c\9c\99\92\96\92\92\96\99\99\9c\99\9c\9c\99\99\99\99\99\99\99\99\99\96\99\99\96\99\96\99\99\9c\9c\99 ££££ \9c\9c\99\99\92\8f\8b~wpXXURRUUUU\X\XUNKKA=A6:::06,0,0,),00,,),%%\1f\e\e\14\14\18\18\18\14\11\18\14\18\14\14\14\14\14\14\18\18"%,0,,=Nª§ \9c\99\96\8f\8f\8b\8b\88zzzwwwttttpmmit\88\8f\8f\92\8f\8f\8b\8b\88\8b\8f\8f\8f\8b\92\92\99\99 \9c£§§§ª£ \99\9c\92\96\92\92\92\92\8f\8f\8b\8b\8b\8b\81\85\81\81~~\81\81pp_XXXUUURUUXU\U\X__c_ccccccfpwtppmccfcc\_XXXRKGGGGDAAD==:A=A=DD=A=DDA:AAA6=:A=DDK\___ccf__\XXXUX\c___\__\\\_\_\XX\\RUXUURU\XXXXUcfpwz~~z~\81\81\81\81\81\81~~wwwwwppmmmfifccccfccc___XXUccffcfcffc_\NKR:=66:0,,,0),))%%)))),,,0336=63K3RU\\\_XUN\UXUURU\\X\\_XU_XXXXKDDK:::=66663333633:63A=G666:66=AADDKDRRNNADGAAAAA==:::6:33003,0
+),0,%")%\18\e\14\18\18\18\14\14\14\11\11\11
+\e\ e
+\a
+\ 3\99\99\99\99\99\14\ e\18\e%,)33:6::==ANNRRNRGGDGAAAADRR\XA:_=::66:66666:3Aiifffcc_ffiffmmmmpmppptpmttwz~~~~~~zz~~\81\85\85\88\8b\85\8b\8b\8f\8b\8b\8b\85\88\88\88\85\81\81\81\85pimiiimmmppmmttttmw~w\99 £ \9c \99\8f\88\85\85\85\85\88\81\85\88\92\92\96\99\9c\9c £ £§ \9c\9c\9c\9c£§´±±ªªªªªª±ªªª£§ª \9c\99\92\92\96\92\8f\8b\8f\88\88\88\88\85\88\88\85\85\85\85\81\8b\9c£§§ª±´¸¸»´»¸¸¸¸»¸¸¸±´±ªª§§£ª££ \9c\9c\9c\9c \9c\99 \99\92\99\96\92\96\96\96\9c\99\9c\9c\99\99\96\96\99\99\96\99\99\92\99\96\92\96\96\96\96\9c\99\99\9c £ £ \9c\99\99\96\88\85\88zc_RRRNNRRURXXXUURNKAAA:::63303,0,,,00,0%)%"\1f\18\18\11\11\14\14\14\11\14\14\14\14\18\11\14\14\11\14\14\e""),,0:Dª§£ \9c\9c\99\92\92\8b\88\8b~~wztttttppmiip\88\92\8f\8f\8b\8b\8b\8f\88\8f\8f\8f\92\8f\92\96\99\99 £££§ª§£ \9c\96\96\96\96\92\96\92\92\8b\8b\88\88\85\81\81~zzzzmc\UUUUURURRUXXXXX_\__c_c_cfimtpppmffccf_c\\\UNKGGGAAAD=A=A=DAGDADADDA==A=6::=:AAGX_ccfficcXXUURUX_\\___________\X_\URUUXUX\U\\\\cipw~~~~~\81\81\81\81\81~~~wtwwwmppiicf__c__cc__\\_KUU_ciccfcccccXKGN::6660,,,,,,))%%)))),00363:A63G3UX\X\_XUNXRURGRUX_\\X_\X\XXXUDAGK==6:63366666:63=36D:D6:6:66:==DDGANKKKAADAAAAA=====:666330,)
+%
+\ e)\18\e\11"\e\18\14\18\18\18\14\14\14\11\11\ e
+\18\ e\a\a
+\a\99\99\99\99\99\11\11\11\18)006666:===AKKNNNRDDGD====AUX\\\\f:=:::GAA::D=Appmmiifc_fiicfiimmpmpptttpwwwzz\81\81\81~~zz~~\81\85\85\88\8b\88\8b\8b\8f\88\8f\8b\88\88\88\85\81~~\81\81tmmiimmppppppttwttz\81\99\9c ££ \9c \9c\96\8b\88\88\85\88\8b\85\88\8b\8f\8f\96\99\9c\9c££££§£ £§±´´±ª±±±ªª§ §§\9c\99\96\8f\8f\92\8f\8b\88\85\85\81\85\85\81\85\85\81\85\85\85~\88 £ªª±±¸»»¸¾¸»»´»´¸´´´±±§§§ª£££\99\9c\9c \9c\9c\9c£ \9c\99\99\96\96\96\99\96\99\99\9c\9c\99\96\96\96\99\99\99\99\99\96\96\92\92\92\92\96\96\99\96\99\99\9c \9c\99\96\96\8f\85~ip\\NNKKKRNURUXUUURNNDAD=:=:33033300,,0),%%%\1f\1f\14\18\14\11\11\11\11\14\11\18\14\18\14\14\14\14\11\11\14\18\1f\1f,)036A§§ \9c\99\92\92\8f\88\8b\81\81zzwtpptpppmmm\8b\92\8f\8f\8b\8b\8b\8b\88\8f\8f\8f\96\92\92\96\99\9c ££§§§ªª££\9c\99\99\99\99\96\96\96\92\8f\88\88\88\88~\81~ztipcXXURRRRNUNUUUXXUX\\\___c_ccimpppmmicfff___\_URNKDDADAAAAADADDKDDDDGDA==A:636:6=:GK\__cff__UURRNRU\XX\________c\\\\\UNUUUUXXX\\__ffpw~~~~\81\81\81\81\81\81\81~zwptttimmfccc\__\\__\\X\\KUUc_f_cfcfc__XGKR=:36630,,,0,),)%%),,0,,360=A60K0X\\\_\XXNXRRNKRUU\XXX\XX\XXXRDADK==33:3666666:63=3:D6G666666::=AGDAKGGADAAAA====A=:==::6630,,
+%
+\ e\ e\ e\18\11\1f\18\14\14\18\18\18\14\14\14\11\ e\11
+\14
+\a\a
+\a\99\99\99\99\99\ e\11\14\e%33::::6AA==GGNKKNAADA::::=X\____ifA=:=iifiimppttppmmiccfiiffiiiimmptwwwtwzz~z\81\81\81~~~z~~\81\81\88\88\8b\88\8b\8b\8f\8b\8f\8b\88\85\85\85~~~\81\85wpmmmmmpppttttwwwz\96\92\99\9c\9c\9c££ \9c\9c\99\99\8f\8b\8b\88\88\88\88\88\8b\8b\8f\96\99\9c §§§§§§ £££ª´´´±±±´±§£\9c££\99\96\92\8f\8b\8f~zz\81~z\81\81~\81\81~\81\81\81z\85 §§±´´»»¾¾¾»»»´»´¸´´´´±ª´ªªª£££\9c \9c\9c\9c £ \9c\9c\96\99\96\99\96\99\99\9c\9c\9c\96\99\99\9c\99\99\99\99\96\92\92\8f\8f\8f\96\96\96\96\96\9c\9c \9c\99\96\92\88\85mz_fXNKNGKKNRURRXURRRNNGDDA==:63636630,00,)%%%\1f\1f\14\18\14\14\11\ e\11\11\11\18\14\18\14\14\14\11\11\14\14\18\e\1f)",066§£ \99\99\92\92\8f\8b\88\81~zwzttmpptpptw\88\92\8f\8f\8f\8b\8b\88\8b\8f\8f\92\99\96\99\99\9c £££§§§§§§\9c\9c\9c\99\96\99\99\96\92\88\8b\88\85\81~\81ztim_URRNRNNKRRUXRXUUXXXX__\_\cciimpmimffiff_c_\_XURNGDADA=ADAGDGGGGGDDDDA=:=633366==DGN_\_fc\\URRNNRNXXXX\\\__c___\_X\\UURURRXX\\\_ciitz~\81~\81\81\81\85\81\81~\85zzwptptiiifc_\_\\XX\\X\X\\KXXc_cccc_f_\UUGKN==3363,,,,0,))%%%))),,,0:3:=:3N0UX\X_\XURXURKNNRRRXU\\XXXXXURGDDG=:6366666666::6A3=G6D:66666=:=AKDAGDDAA=DAA=A=AA=::::63330,,))
+\ e\ e\ e\14\11\18\14\14\14\18\18\18\14\14\14\11\ e\ e
+\18
+\a
+\a\a\99\99\99\99\99\11\11\11\e"36==:==DD==ADKGG6,":33030=Xffcccmimmmmmmimmptttwttppmicfiififiiimpmttzwwwz~\81z\81\81\85~\81~~z\81\81\81\88\88\8b\8b\8b\8f\8f\8b\8f\8b\88\88\88\85~\81\81~\81wptppmppptwtttwzz~\96\96\99\99 ££ \9c\9c\9c\92\8b\8f\88\88\8b\88\88\88\8b\8b\96\99\99\9c§ª§ªªª££§§§ª±´±´±±±±±±±´±ª£ \99\96\92\8f\92\8b\8b\85\85ttwzttw~zw~z~~~z\81\9cª±´±´¸¾»¾¾¾»»¸»¸´´¸´¸´±ª´ªª§§ £\9c\9c\9c \9c £££ \9c\99\99\96\96\96\99\96\99\99\9c\99\99\99\9c\99\99\99\99\99\96\92\92\8f\92\99\96\96\99\99\9c \9c\99\96\92\8b\85zmf_XUNKKGKKNRUURURRRRNNKGDAADD66:::6630300)"%"\1f"\18\18\11\14\11\ e\11\14\11\18\18\18\18\14\14\11\11\14\18\18\e\1f%%),60§£££\9c\9c\96\96\8f\8f\88\85\81~zwtwptmwptz\88\8b\8f\8f\8b\8f\8b\8f\8b\8f\8f\92\96\96\99\9c\99 £§§£§ªª±±ªªª \9c\99\99\9c\99\99\8f\8b\8b\8b\85~z~wtfi\URRNRKKGRNRUNUXUXXUX\\\\\__ffmmififiiifcf___\UURGGDGD=DDGGGKGGKKGGDDD=6:303636==DKN\X\c_XXUNNKKNNNUXR\\X_\_\\\\_X\\XXRUNNUXX__c_imtz~\81\81\81\81\81\85\85\81~\81zwwttppfffcc\X_\XUUX\UXX_XGU\c_fc__\c\URRDGR:=00600,0,,,,,)))),)0,,3=6=:66K6XXXX\\URNXRUGKKGKRURX\XUUUXRRKGDD=66663666666::6D6AG6:=6666:::=DGGD=A=A=AA=AA===A:=::6633300,,)
+\ e\ e\ e\11\11\14\11\18\14\18\18\18\14\14\14\11\11\ e
+\18
+\a\a\a\ 3\0\99\99\99\99\11\11\11\18\1f3::A=AADG:=:==A,0)"%%,,%3=_iifiippppppppmpmptwtwwwtppmfiiififffimpptt~zzz~~\81~~\81\81~\81~~~\81\81\85\85\88\88\8b\8f\8f\8f\8f\8b\88\85\85\88\85\81~~z~zwwttttwttwwwzz~\88\99\99\99\9c\99\9c £ \9c\99\9c\9c\96\8f\8f\8b\88\88\88\8b\88\8b\8b\92\96\99 £§ªª§ª §§§ª±´´´±±±ª±±±´´´§ \9c\96\92\88\8b\8f\81\88~ptmtwtpttwwwwzzzwz ª±±´´¸¾¾¾»»»»¸¸´´´¸¸¸¸´§±§§ªª£ \99\99\9c\9c\9c §§ \96\99\96\99\99\99\96\99\9c\99\9c\9c\99\99\96\99\99\9c\9c\96\96\96\92\96\99\99\99\99\96\99\9c\9c\99\92\8b\88\88\81mic\XUNKKKKNUUXXUUURRRRRNKGGDGGA:==:=:63630)%%\1f\e"\e\18\11\14\ e\ e\11\14\14\18\18\14\18\11\18\14\14\18\e\e\1f"")))3)ª££§ \9c\96\99\92\8f\8b\85\81\81~zwwtppttw\85\8b\8f\92\92\8f\92\8f\8f\8f\92\8f\96\99\99\9c \9c£§ªªªªª£ \9c\9c\9c\99\96\92\8b\8f\8b\85~wttpc_XUUURNKGDNKNRNXUXXXXXX\X\X__cciifcfcfffccfc__XUUUGKAGDKGGKKKKKKNNKGDAD::6603366:ADKRXUX_\XURNKGGKNRRURXX\\\\XXXX\\\_X\RRRNRXU_cfcmpwz~\81\81~\85\81\81\85\85\81\81~wttppmfcc__X\\XUXUUXUUX\\KU\__fc\\\XGRRAADN::30300,,0,,,,),,),,0,06=:=A66GXXUUUXXRUNUNRDGGGNNUUUXURURUKNGDDD=3::66666666=66D6AKD6A6:6::::=ADDA=D==AAD==DA===::::6663300,,,
+%%\ e\11\11\11\11\18\14\18\18\18\14\14\14\11\ e\ e
+\18
+\a\ 3
+\a\ 3\99\99\99\99\11\ e\ e\14\e06:==ADAD6:6:63)))"%%%))3Kippmppttpttptpppmttwtwwtwtppiiiiciffffiptww~zz~~~\81\81~~\81~\81~~~\81~\85\85\85\88\88\8b\8b\8f\8b\8b\88\85\85\85\85\81~~z~~zzwzwtzwzzzz~\81\88\8b\9c\9c\99\9c\99 \9c\9c\9c\99\96\92\8f\8b\88\8b\8b\88\88\8b\8b\8f\96\99\9c£§ª§£§£§£ª±±±±±±±±±±ª£\9c\92\92\8f\88\8b\85~\85tmpmptpmpptttptzwww\9cª´´¸±¸¸»¾»¸»¸¸¸´´´´´´¸±ªª§§ª§££ \9c\99\99\9c\99 §£ \9c\99\99\99\99\99\99\99\9c\9c\99\99\9c\9c\99\96\96\99\9c \99\96\99\96\96\99\99\99\99\99\99\99\99\96\8b\8b\88\85wmf_XXURKKNNNXXXXXRUURRRURNKKGKKD=AAAA=:3:30%)%"\1f\1f\e\18\14\14\14\11\11\18\14\18\18\18\18\14\18\18\18\e\e\e"""),%3,ª££££\9c\99\99\92\8f\8f\85\85\81~ztwwtttwz\8f\8f\8f\92\92\92\8f\8b\8b\92\8f\92\96\99\9c \9c §ªªª±ªªª£ \99\9c\99\96\92\92\8b\8f\8b\85ztmpm__XUXUNKGGGKKNKNXUUUUXXX\U\\_\ccffccf_fffccc__c\UXUKKAGDNKNNNKNNNKKGDA=A::3603366=DGGNURX\XXNNNKGGKNUNRUUXXXXURUUUXXX_\_URURUXU\_ffptw~~\81\81\81\85\81\85\85\88\81\81~wttmpic_\\_XXXXUURUURUUX\GU\\_c_XX\UGRNDDAN::0033,,0,,,,,,)0,),,,33A6AG=3GXURRRXURRRURRDDKGNNRURURRRRRKKDDAD:0=:666:3666:::G6=GG:A:=:=:::=AAAA=A====A==DA:===:::66633300,,))%%"\11\11\18\14\14\18\18\18\14\14\14\11\ e\ e
+\18
+\a\0\a\a\a\99\99\99\99\11\ e\11\14\e,36::=DAA36363,,))"""%),6Nmttptttwpptttttppppttwwwwwtpmiimffifiiipttzzzw~~~\81~~z\81~~zzz~~\81\85\81\88\88\8b\88\8b\88\88\85\85\85\85\85\81~zz~\81~\81~~zz~~~~z~\85\88\8f\8f\99\99\9c\9c\99£ \9c\9c\99\99\99\92\8f\8f\8f\8b\8b\8b\88\8b\8b\88\8f\92\96\99 §§§§£§£§§ªª±±±±±ª§ \99\92\92\8f\85\88\81~zppppptpppmpttppwttz~ª´¸¸´¸¸¾¸»»»¸´´´´±´±±´±§§§§ª§£ \9c\99\96\96\99\9c\9c\9c §£££ \99\99\99\99\9c\99\99\9c\9c\9c\9c\9c\99\9c\99\99\99\99\9c\9c\99\99\96\96\96\99\96\96\96\96\96\96\92\8b\88\85zti\\XXURKNNNU\\\\\XXXURRURNKNKNNNDDGDD=:6630%)"\1f"\1f\e\18\18\18\18\14\14\18\18\e\18\e\e\18\18\e\18\e\1f\1f%%",0)6,ªª§££§ \9c\99\96\92\92\88\88\85~~wzzttwww\92\96\92\92\96\92\8f\8f\8b\8f\8f\96\96\9c £§±±ª±ª§§ \9c \99\99\99\96\92\92\8b\8b\8b\85wpimi__XUXUNNDGGGNNKKUUXUUXU\XRX\_\c__c__c_ccfcfcc__\XXUNKGKKRNRRNNNRNKKGD=:=:636333::=AGGNRRUURXRRKGKGKKURNRRUUNUURRRUUXX_X_XUXRUUX\_fftwz~~\81\85\85\81\81\85\85\85~\81zwtpimfc__X\X\UURRNRUNUUX_DX\_\_\UXXRGRNGDAN:630330,,,),)),,0,,,,,33DAGKA3KURNKNURURNURRDGGGKNNUURKNRRNKGDD=D63=:33666666:::GGADG=====::::=AA==:=====AA=A====A:::666633000,,))%%\1f\11\e\14\14\18\18\18\14\14\14\11\ e\ e
+\14
+\a\99\ 3\a\a\99\99\99\99\ e\ e\11\14\18),336:A==,3)300)%)"%%",0=mpwwtwwtwtpwppttpmppttwzzzwtppimmiimmiiipttwwzwzzz~zzw~~~zww~~\81\81\81\85\88\88\88\88\85\85\81\85\85\85\81~zzz~\85\85\85\81\81~~\81\85\81\85\88\85\8b\8b\92\92\96\96\99\9c\96 \9c\9c\9c\99\99\96\96\96\92\8f\8f\8f\8b\88\88\88\8b\88\8b\8b\92\99\9c\9c£££§£££££ªªª±±±±±§£\96\96\8f\8f\8b\85\85~zzmtppmtpmmmpppttttwz\81ª±¸´´¸´¸´¸¸¸´´±±±´±±§ª§§§£ \9c\9c\99\96\92\92\96\99\99\99\9c££££ \9c\99\99\9c\99\9c\99\9c\9c \9c\99\9c\99\99\99\99\99\99\99\99\96\99\96\96\96\99\92\92\92\96\92\8f\88\85\81wpf_XUUUURRUXX_____\\UUUUURRNNNRRRKGKGGA=6630))%""\1f\1f\e\e\e\e\18\18\e\e\1f\e\e\18\e\e\e\e\1f"")),0,,:Dªª§£§§ \9c\96\96\92\8b\8b\88~~zzzwwwwz\96\99\96\96\99\96\92\8f\8f\92\92\96\96\9c\9c §ª±±±±±ª££\9c\9c \99\99\96\96\92\92\8b\88\88\81mmfff_\XXXRNNGGGKKRGKUX\XUXXXXRXX\\_\__\\c___c_c____XX\XRKKNNRRUURRRRNNKGD=:::636363::AAGKRKNRUNURRKKNGNNUUGNRURNUURNRRRXX_X_\X\UXX\\\iiwzz\81~\81\85\81\81\85\85\81\85z~zwppfifcc_XXUXUUURNNRNRRU\DU\cXRXUXURKRNGAAN:360303,,,,0,)00000,AA06GDKNU3NRKR=KRKRRNRNNGKGKNNNUUNNKUNKGDAD=D60:63366::66:=:GKAAD=:AA==:::=====:::==:ADAA:A===::::666333000,,))%""\1f\14\14\18\18\18\14\14\14\11\ e\ e
+\14\ e\a\99\ 3\ 3\a\99\99\99\99\11\ e\11\11\18%)0"33=:,"))%,,,))%,))3=mmtwwwwwtzwttptptppttttwzzzzwptptpmmppmmmpppttwtwwwzwwtzzzwttzz~~\81\81\85\85\88\88\85\81\81\81\85\81\81~~zz~\88\88\88\85\85\85\81\85\88\85\88\8b\8f\8f\8f\96\96\96\96\99\99\99\9c\9c\99\9c\96\96\8f\92\92\92\8f\8f\8b\88\88\88\85\88\88\88\8b\8f\99\99\9c £ £ £§§ªªªªª±ª£\9c\96\99\8f\8b\88\81\81zwwmptpmpmimppmmppwwt~\8fª±¸¸´´´´±»´¸´±±±±±±±ª§£££\9c \99\99\96\92\92\8f\8f\96\96\96\99 £££ \9c\9c\99\9c\9c \9c\99\9c\9c\9c\96\9c\99\96\99\99\99\9c\99\99\99\96\96\99\92\96\88\8f\8f\92\8f\8b\85\81~tcc_\XXUUURX_\_ccc\_\UUUUUUNRNRURUNNNNKA=3:60,)%"""\1f\1f\e\1f\1f\e\e\1f\e"\1f\1f""\1f\1f\1f\1f"",)030,:Dª§§£§§££ \96\99\92\8f\8f\88\81~~~zwwtw~\99\9c\96\99\9c\9c\96\92\92\8f\96\92\92\9c\99 £§±±±±´±±§\9c \99\99\9c\99\99\99\96\96\92\88\88~~ifccc_\XXXRNKGGDGNRKNXX_\XXX\XUX\\\\\\XX\_\\\_\___\_\X\XUNNNRNRRXURRNRRKDAA:=::6:36:=:DDKKRNNNURUNRNKNNRRRRKNRURRRRRRRRUU\_\c_\_X\\\\_imz~~\81~\85\81\81\81\85\81\81\81wzwtpmificc_X\XUURURRKNRRRU\GU_cURURURUKNNGA=N:63030600,,,,,,0,33DDD0KNURRXUNNNRANRGRRRRRNKGKNNKRRRRKKUKGGGAA=A:06:3336:=66:A:DGA:D:===:::=:=====:::::=DADA=A=:=666:663333300,,,))%%"\1f\1f\18\18\18\14\14\14\11\ e\ e
+\14\ e
+\99\a\0\ 3\99\99\99\99\11\11\11\11\14\18\1f"\1f%%),"""%%,)),))0,,:pmmttwwwtwwwwwttmppmtwtwwz~z~ztwtwtppttppmppppptptttwpttwwwwptwwz~~\81\85\81\85\85\81\81\81\81\81\81~\81\81~~~\8b\8b\88\88\88\88\8b\88\8b\88\8b\8f\92\92\92\99\96\96\96\99\96\96\99\99\96\99\96\92\92\8b\92\8f\8f\8b\8f\8b\88\88\85\88\88\88\8f\8f\96\99\99\9c £ £ ªªªªªªªªª§£\9c\92\99\8b\88\81~~wwwpptpmpmipmpppmptwz\81\92ª±´´±±´´±¸´´´´±±±±±±±§£ \99\9c\96\96\92\8f\8f\8b\8b\96\96\92\99\9c £ £\9c\9c\99\9c\9c\9c\9c\99\9c\9c\9c\96\9c\99\96\99\99\99\99\99\96\96\92\92\96\8f\92\88\8b\88\8f\8b\81pptmc_\\XXUXXUccccfcf\c\\XUXUURRRUXUURRRRNN=06:,)%)""%\1f\1f\1f\1f\1f\1f\1f\e\e"\1f\1f%%"""\1f%,03336:=Dª£§§§£££\9c\99\9c\92\92\8b\8b\85\81~\81~zwttzz\9c\99 \9c \96\96\8f\8b\92\92\92\99\99\9c\9c £ª´±±±ª£ \9c\96\96\99\96\96\99\96\92\8f\85\85~zf____\\\XXRNGKGGKRNNRUX__\X\\UXUX\XXXXXX\\X\\X\___\_\X\XURRNRNNRXURRRRNGG=D==:::::==AAGGNNNKNNURRRRNKURURUNNNRURRNNRRUXXX\c_c__c\____cmpz~~~\81\81\81\81~\85~\81~wwtpmmmfffc\\\XXUUURNNNRNNRXDUc_XRUNRNUKNNDD:N=66330:,0,)0,003336GDG0NRXUUURKNKNDNNKRRRUNRNKNNNKRRRRNKRNGGGAD=A=366666:6A66=A:DGD:D====:==::=====::::=ADAD=AA=:=66666333330000,,,,)%%""\e\18\18\14\14\14\11\ e\ e
+\18
+
+\0\a\ 3\0\99\99\99\99\11\11\ e\ e\11\11\e\18\e"\e\1f%"\1f\1f")),,,),300=mmpttzwwtwtwtwpppppptwtwzzzz~zwzwzwttttpppmmmmpppptmtpppttttptttw~\81\81\81\81\85\85\81\81\81~~\81\81\81~z~~\8b\8f\8b\8b\8b\8b\8f\8b\8f\8b\8f\92\96\96\96\99\96\96\99\99\92\92\96\96\96\96\92\8f\8f\8b\92\8f\8b\8b\8f\8b\8b\88\88\88\8b\8b\92\8f\92\96\99\99\9c ££££§§ªªªªªªª§§ª \99\96\99\8f\8b~~~wwwpptppppmppmmpptpw~\85\96§±±±±±´±¸±´´´±±±±ª£ \99\9c\99\96\99\92\92\8f\8f\8b\8b\88\92\92\8f\96\99\9c \9c\9c\9c\99\9c\99\9c\9c\9c\9c\99\96\9c\96\96\96\96\99\99\96\96\92\8f\8f\92\8b\8f\88\85\81\88z~pipic_\\\\XXXXffffififc_c_U\\XUUUXXXUUUUUURN36:0,%)%%"\1f""\1f"""\1f\1f"\1f"))%%"%)036==:=AGª££ª££££\9c\9c\9c\96\92\8f\8b\88\81\81\81~zwppww \9c£ £\99\99\8b\8b\8f\92\8f\96\99\99\9c §ªª±±±±§ \9c\8f\8b\8f\96\92\92\96\92\92\8b~\85~__X\\_X\\XXRNKNKGKURRUXX__\\\XXXUX\\XUUU\\XU\_X\_\\\\\\\\XUURRRRRUUURRNNGGAD=====:=DDDDKGNRNGNRUNUURXUXUXUUNNRUUURKRUUX\\\\ccfccc_ccccfmmwz~\81\81\85\81~\81\81z\81zwtpmmiifcf_X\\XXXXRRRRRNNNNXAX_\\UURRKUKNKDA:NA6:033=00000,30066:KGGURUXXUUNNKGKGKNNRNNXNURNRNRNNRNNRKRKKGGAGA==3:3::::3D::==:AGG=D=A:==:=::==:==:::=:AAAAAAD=:=66666333330000,,,,)))%%\1f\e\18\14\14\14\14\ e\ e
+\e
+
+\ 3\ 3
+\99\99\99\99\99\ e\11\ e\11\ e\11\14\18\e\e\e\e\18\1f\e\e\1f)%,,,,)336mpmtttzwwtwpwttpppptttwtzzzz~zzzzzzwwwtttpmmiiimmmmpmmmmmppppptttwz~~\81\81\81\85\81\81~~~~~~~zz~\8f\8f\8f\8f\8b\8f\92\8f\8f\8f\92\96\92\99\99\96\96\96\96\96\92\96\92\92\92\92\8f\8b\8b\8b\8f\8b\8b\8b\8b\8f\88\88\88\8b\8b\8f\8f\92\92\96\99\99 \9c£ £§§ªªª±±ªªªª§§§§£ª \99\92\96\92\88\81zzwwtptppptppmpppmtttz\81\88\96ª±±±±±±´´¸´¸´´±±´±ªª§ \99\96\96\99\96\92\8f\8f\8f\8b\8b\8b\8b\92\8f\92\96\99\99\9c\9c\9c\9c\9c\99\99\99\96\99\99\99\9c\99\92\99\96\92\99\92\96\96\92\92\8f\8b\8b\8b\88\8b\85\81~\81zzpimifc_\\\\\\_iiifiimiicfc_c_\X\X\X\XUXXUXUN6::3),,,)%%%"""""""%%%,))%)0,:ADAADAGG§££§£££§\9c\99\99\96\8f\92\8f\88\85\81\85\81zwtpttw §£ \96\99\8f\8b\8b\8f\8f\96\99\9c\9c££ª§±ªª \9c\8b\8f\88\8f\8f\92\92\92\92\92\8b\81\85~_\U\X\\\XXURRNNNGNUUUXXX\\\\X\UUUUXXXRXUX\XU\\\\c\\X\X\X\UURRNRRRUUUUURNKDADAAA=DAGKGRRNRRURNRUUNXUU\X\X\XURRRUUXRUUXXX_\_ccfffffccfffipmz~~~~\81\81\81\81\81z~ptpmiiffc_c\UX\XXXUURRRRRRRRUDX_XXXURNNUNNKGD=ND::336=:6330)033:::NKNXUXUURRKKGA:GGKKNK=UKURNNRURNNRNNNNKNGDADA=:::6:66:6A6=:::=GGAD=A::A=::=A:=A====A:=D==DAD:::66666633330000,,,,))))%"\1f\1f\e\e\14\11\ e\ e
+%
+\a\ e\a\ e\99\99\99\99\99\ e\ e\ e\ e
+\11\11\18\e\e\18\e\e\1f\18\e\1f)),)),,03:ptppttwwwwztwtptpptwptwwzzzz~~z~w~zwzztwttmmiiiiiimmmiiimmmpmppttwz~z~\81\81\81~\81~z~~zz~zw~\8f\8f\8f\92\8f\8b\92\8f\92\8f\96\96\92\96\96\99\96\92\92\92\92\92\8f\8f\8f\8f\8b\88\85\8b\8b\88\8b\8b\8b\8f\8b\88\88\8b\8b\8b\8f\92\92\92\9c\9c\9c £££§§ªª±±±ªªª§§ª§§§§\9c\99\96\96\92\8b\85wztwtpppmptpttptptwww~\85\8b\96±±±±±±´´¸´´´±±±´§§£\9c\96\96\92\96\92\8f\8f\8b\8b\88\88\8b\8b\8f\8f\8f\92\96\99\99\99\99\99\99\99\99\99\92\96\96\99\99\96\92\96\96\8f\96\92\92\92\8f\8f\8b\88\88\8b\85\85\81zzzwtmimiff___X__ciifmffmpmmfmiimmc\_\\\_\XX\X\URNG:33000,,))%%"%%)%))%,))0,3:=DGDKGARD£ £§§§£\9c\9c\99\96\92\92\8f\8b\88\85\81\81wwwpwww£§ £\96\99\8f\8f\8f\92\92\96\99\99\9c£ §§ªªª§§\99\99\8b\8b\88\8b\8f\92\8f\92\92\92\8f\88\88~_XX\XX\\XXXUUNKKGRRXXX\XXXXXX_RRRRUUUNXXUXXU____c_\XXXXXXUUNRRNRRUURUURNKGAAADDAGDNNRUXRUUXURRUXU\UX\\_\\X\UURUXUUXX\Xf\_ciifiiiiffiiimppw~z~\81\81\81~~~zztiffff_c_\XXRUXUXXUURUUNRRRRXDU\XUXXURRUNNNGGAND=:3=:==:66,,300=66NKRXX\RRNRGG=D=GDKGK==RGRRNRRURNRRNKRKKNDGAA====66::363A6=::=ADDDDAAA:DA==:=:AA:AAAA=AA:=AAA:=::66666333330000,,,))))%%""\1f\1f\18\14\ e\ e
+)\ e\a\11
+\11\99\99\99\99\99\ e
+
+
+\a\11\ e\18\e\18\14\e\18\e\e\1f\1f)%)))),06Dptpptpttttwttwmtppwwtwww~~z~zzzzz~zzwwwtppmiiffiifiiiffiifimmmmpttw~~z\81~\85~~zz~zwzzzw~\8b\8b\92\92\92\8f\8f\92\92\92\96\92\92\96\92\96\92\8f\8f\92\8f\8f\8f\8f\8b\8b\88\85\85\88\88\85\8b\88\88\8b\88\8b\8b\8b\8f\8f\8f\92\92\96\99\9c\9c\9c ££§£§±±±±ª§§§ª£§£§\9c\9c\96\96\92\8f\88z~twttptptttwwtttwwzz\81\81\8b\96±±´±´¸´¸´´´±±±´±ª££ \99\92\92\92\92\92\8b\8b\88\88\88\88\8b\8b\92\8f\8f\92\96\96\96\99\96\96\96\96\96\96\92\8f\92\96\96\92\92\92\92\8b\8b\8f\8f\8f\8f\8b\85\88\85\88\81\81~wwttppipiiicc_\ccfmmiiiimpippppttwmicccc_\\\\\\XURRDA6363300,%)))),,,0),,330D=DGGKNNA\G £££§§ \9c\96\96\92\8f\8b\88\85\85~wwwtzz£§ª£ \99\99\8b\8f\8b\8f\92\96\99\99\99 £§ªªª§££\8f\8f\8b\8f\85\88\8f\8f\8f\92\96\92\92\8b\88\81f\X\\_\\XXXURKNKKRUUUXXUXUUU\\NRNRRRURXXUUXU_cccc\_XXXX\URRRNNNRNUUUUUURNKDDADGKKGUXU\\UXXXUURU\XXX\\\c__X_XXUR\XX\Xc\mimimmpmmmmiimmipptz~~~\81\85\85zzzwwtiffc_\_XXUUNRURUUUURUURRRNR\GXX\XXXUURUNNNGKDNGAD:DADA==::,333=:3KGUUUXRNKNDD:DADDKDD==NGNUNURRRNUNRNNNKKAG=AAA=A:666333A:=::=ADAKADAD6AAA=:A===:AAADAD==:AD==:::666666333330000,,,))))%%%""\1f"\e\ e
+,\11
+\14
+\11\0\99\99\99\99\11
+\ e
+
+\11\11\18\18\18\18\e\e\e\e"\1f%)%))))03Nmtpmttpptptpttppppwtwwzz\81~~~~wzwzzzzwttpmpiffffffcfffcfffffiiimmptwzzz~~\81~~zzzwwzwwz~\8b\8f\8f\92\8f\92\8f\92\92\92\92\8f\8f\92\92\92\8f\8b\8b\8f\8b\8b\8b\8b\88\88\85\85\85\85\81\81\88\88\85\88\88\88\8b\8f\8f\92\92\92\92\96\9c\99\9c\9c £§§ª±´´´±ªª§ª§ §§£\9c\9c\99\92\96\8f\8b\81~tttptptttwwzwwwzwz~\81\85\8b\92±±±´±±¸¸´¸´´´±±´±§ \9c\92\8f\8f\92\8b\8f\88\88\88\85\8b\88\8b\8f\8f\92\92\96\96\96\96\99\92\96\92\92\92\92\92\8f\92\96\92\92\92\8f\8f\8b\8b\8f\8b\8f\8b\88\81\85\81\85~~ztppmmmfmmiicfc_ffimpmmimmmmptttwwzwptfifc__\___\URUND:=::::6330,,00=03,3A:G3GDKKNRRR\ K£ £££££ \9c\9c\96\96\92\8b\88\88\85\85\81wzwtw~§§§£\99\99\8f\92\8f\8f\8f\99\99\99\9c\9c£§ª§££\9c\92\88\8b\8b\8b\85\88\8f\8b\92\96\92\8f\8f\8f\88\85\85X_c_c\\X\XXRKNNKRUURXXUURRRXXRNKURRURXXUR\U_cc__\_XXXXXURRRNNNNNRURXXXNNKGGDGKNU\c\___X\\XXUUX\___\_cfcc\c\X\\_X\cXfipmptpptppppmmppmpttzzz\81\81\85\81~~wtwwffcc\XXURNNRNNNRRURRRRURUNR_D\X\XUUURRRRNNKGDNKDGKGDGD=A:=6663=:AGKURRURNGK:A=ADGDGGDAAKGNUKUNNNRUKRRNKGG=GAAAD:A==66306A6AA==DDDNGGAG6AAA::=:=:==DDADG6=6AGDA==:66666633333300000,,,,))%%%""%\1f\1f
+0\14\ e\11\a\14\ 3\99\99\0\99\11\a\ e\a
+\11\11\14\e\e\18\e\e\e\e""%)))%)%,3ppppmptptpptttptttpwtww~~\81~~~~zwwwwwwtttpmpiffffcfcffc_fccfffffimmptzw~~\81\81~~~zzwzwtwwz\8b\8b\8b\8f\8b\8f\8f\8f\92\8f\8f\8b\8f\92\8f\8f\8b\88\88\8b\88~\88\88\85\85\81\81\81\81\81~\85\88\88\88\88\88\8b\8f\92\96\92\92\92\99\9c\9c\9c\9c£ §ªª´´´±§£§££££ \99\96\96\8f\8f\85\81\81wwpttwttwwzzzzzz~~\81\85\8b\8f±±±±±´´»¸¸´±±±±´±ªª£ \99\96\92\8b\92\8f\8b\8b\88\85\85\85\88\88\8b\92\92\8f\92\92\96\92\92\96\8f\92\8f\8b\92\8f\92\8f\92\96\92\92\8f\8b\8f\8b\8b\8b\88\8b\8b\85~\81~zzztttpmmmiipmmffcciimmpmimmpppttwwzz~ztwmmifc_\c___XUURNGADDAAA=6:0:KAA660GNGNDNGNURU§£ ££ \9c\99\9c\96\96\92\88\88\85\85\85\81zzwtw~§§ª££\99\96\8f\8f\8f\92\92\96\99\9c\9c\9c£§§§ª \99\99\8f\88\88\88\88\85\88\8b\88\8f\92\8f\8b\8b\8b\8b\88\85zpmcf__\\\XUNRRKRUUNUURUNNNXUURKRUNUR\URUXX_f_____XXXUURNURRNNKNRRRU\UNNKGGGKNX\cfccc_\__\\\U\_ccc_cfifc_c_\__cc_ffmmtptwtttttppmmtpptww~~z~\81\81\81~~wwwzff__XUUNNNKNNNNNNUNNNRRRRRU_A\\\XXUURRRNRNNKDRKGKNKGKGGD=A:::3:6DDNUNGRNKDG6D:DDDADDDA=KGNRKRNRRRUNRRNGGGAG=A=D:A=A6330:=:ADA:DGDRKKDK6KAD:6==A:=DGGGGG6A:AKGDA==63666663333300000,,,,,)))%%%%""\1f3\14\11\11\ 3\11\a\99\99\ 3\99\14
+\11\ 3\ e\14\14\18\1f\18\18\e\1f\1f\1f\1f"%)%%"%%03mppppptptttpttpptttwwww\81~\81z~~\81ztwttwttppmmmiffff_fcffc_fccfccfffmmmtwt~\81\81\81\81~zwzzzwtwwz\8b\88\8b\8b\8f\8f\8f\8f\92\8b\8b\8b\8b\8f\8b\8f\88\85\85\85\81z\81\85~\81\81\81\81\81\85\81\81\88\88\88\8b\8b\8b\8f\92\92\96\96\96\99\99\99 £§ªªª±´±±ªªª§££££ \9c£\9c\96\96\96\92\92\88\85\85zzwwtwwttw~~~~~z~z~\81\88\8b±±´±´´»¸¸¸±´±±±§§ \9c\99\96\92\88\8f\8b\88\81\85\81\85\88\85\88\88\92\92\92\92\96\96\92\8f\92\92\8f\8f\8f\92\8f\96\92\96\92\92\8f\8f\8f\92\8b\8b\8b\8b\88\88zz~zwwwwpppmmmimmmiifcfffiipmmpippttwzz~~~~wzppmifccf_c_XXUUUKGGKGDDGGDGDNRRXUUURURGRNRXiX££\9c\9c\9c\9c\9c\9c \9c\9c\96\99\96\92\8f\8b\85\81\85\85~wwwwwz§ª§§£\96\96\92\92\8f\96\96\96\99\9c\9c £ªª§\9c\96\8b\88\85\88\88\88\85\85\88\88\8b\8f\8b\8b\8b\88\8b\85\85~tpfic_\\\XURNRNRRRKRRRUGRK\RURNRURXU\UUU\\_fcccc_XXXUUUNRNRNNDKNRRRXXRNKRKKNU\cfffcfc_cc_____cfffcfiifcccc_ccffimmppwttwtwtttptppttptwz\81~~~\81\81\81z~wwtwif\_XKRNKKKKNNKNNRNKKNNRNRU\DXX_\XXUUUUDURNNGNNKNNNGKKKGAA=====ADAKRKGNKKDG6D:ADDAAADD=NGNNNRKRRRRRNRRDGGADAD=A:==D660:6==AGD=GKDRN6GK6NAD:6AAD==GKKKGGGD6ANKG=::633633333333300000,,,,))))))%%%"0\e\e\e\ 3\ e\a\0\a\a\99\18\14\ e\a\11\18\14\18"\1f\e\e""""""%"%%%)0pmpppmptptttttttppwwwwwz\81~\81z~~~zwtpptpptpmimiffffficffc_ccccccccfmmpttwz\81\81~\81~wwzzwwtttw\88\88\88\88\8b\8b\8f\8f\8f\88\88\8b\88\8b\88\8b\88\81\81\81~~~\81~\81\81\81\81~\81\85\85\88\88\8b\8b\8b\8f\8f\92\92\92\96\99\99\9c\9c\9c\9c £§§ªª±´±±ª§ª££££ \99\99\96\92\92\8f\8f\88zz~wzwtwtwz~~~~~z~z~\85\85±´´´´´¸¸»´±±±ª££ \99\99\96\96\85\8f\85\85\81\85~\81\85\81\88\88\8f\92\96\96\99\96\92\8f\8f\8f\8f\8f\8f\92\92\92\92\96\92\92\92\8f\8f\92\8f\8b\8f\88\8b\88z~zzwwwwttmmpiiimiiifcfffiipimmmpmtttzz~~~zw~ttpmiffffcc\\XXXURKNKURNKURNX\___\X\XURURU\m \99\9c\9c\96\99\9c\9c\9c \9c\99\96\99\92\8f\8b\88\81\85\85\81~zwtwtw§ª§£§\96\96\92\8f\92\96\92\99\99\9c\9c \9c§§ª£\99\8f\88\85\85\85\85\88\85\81\88\88\88\8b\8b\88\88\85\8b\85\81~wtiifc\\\XXRNRNRNNGNRNRGUN\RURRRRU\X\X\XX_ccfccc_X\UUUURNNRNKGGKNNNUXUNXUNXN__fififfffcfcccfcfiifffiffffcfccfiimppttzwtttttttpptttttwwz\81~~\81\81\81\81w~ztptfcX\UNNNKKNNNKNNNNNKKKKRRNUXGX\__X\UXUXDXURNGRXKRRNGNGNKDAAAAA=DGDKNAKNNGDD:DDDDD==DGGANDNNNRKNRNURNNNDKDADDG=D=:=A360=6AAAKAAKKGRR3KG33DGKDDGKAAKGKRKKUK6G6NKA=663333333330000000000,,,,))))%)%%3\1f\1f\1f\e\14\ 3\ 3
+\ 3\0\18\18\11\14\18\e\e%%"\1f""%%%%"%%"%%,0ppppmpptppttttwttpzwwzw~\81\81\81~\81~~~ttppppppmififcfcmpmcfff_cffc_c_cfimttwzz~~~~~wzwztwtttw\88\85\88\88\88\88\8b\8b\8f\88\88\88\88\88\85\88\85~~~~z\81\81\81\81\81\85~\81\85\81\85\88\88\8b\8b\8b\8f\8f\92\92\96\96\99\9c\9c\99\9c\9c ££§§ªª±§ªª§ª§§£§ ££\9c\9c\99\99\96\92\92\92\8b\81\85\81z~wwwwwzz~~~~~~z~\85\85´´´¸´»¸»¸±±±§§ \9c\96\99\96\88\8b\85\85\85\85~\81\85\81\85\88\8b\8f\96\99\96\96\92\92\8f\8b\8f\8f\8b\92\92\92\92\99\96\92\92\8f\8b\92\8f\8f\92\8b\8b\88~\81zzzwwtwtppmifiifffffcccimpimmmmptpwwzz~~zzzwttmmiiiicf__\_\X\cRU_cU\_\c__ffc___\XUXUU_p \9c\99\99\99\96\96\9c\9c\9c\9c\9c\99\99\96\96\96\8f\8f\85\81\81\81~zztttpt£ª£££\99\96\92\92\92\96\92\99\99\99\9c\9c\9c£§§ \8f\8b\85\85\85\85\81\88\85\81\85\85\88\8b\88\85\85\85\88\85~zwpmif___\\XRRRKNKNKNRNRKUR\XURUURX\\_\_\\cfficcc_\_UUUXUNNRNKKKKKKNNUUX\U__ccfimimifiiiiiffiffmmiccffcccfifcfmmpttttzwtttttpppptptwtwz~\81\81\81\81\81\81~w~zpppc_U\RKNRKNNNNNNNNNNKKKKNRKR\GX\\_U\XXRXDXUUNKU\NURNUNNNGGADDD=:GDDNRGNKNKAG=DGAGGADGGGDKGNNNRKNNRRRNNNGKDAADGAG==:D6:0AD=DDKA=GGKNR3GD60AKNGGKNADNRUUX\XU=K6NG==:66633333330000000000,,,,,,))))%%0"""\1f\e\e\e\14\14\ 3\18\e\14\18\1f%)0%%"%%)%))%%)%"))0mmpmmpptttttwwwtttzwwzz~~\81\85~~~\81~twptptmmiifff_cfptpcmif_ccfc_cccffitwwz~z~zzzwwwwtwttww\85\81\85\85\85\85\88\88\8b\88\88\88\88\85\81\85\85z~z~z~\81\81\81\85\81\81\85\85\85\88\88\8b\8b\8b\88\8f\8f\92\96\96\96\99\99\9c\9c ££§£§§§±ª§§§§§ª§§£§ \9c\9c\99\99\96\96\96\8f\8f\88\85~\81wzwwwwzz~~~zz~\81\81\88ª±´´¸´»¸¸»´±ªª££ \9c\96\96\96\8b\8b\85\85\81\85\81\81\85\81\85\88\88\8f\92\96\92\92\92\8f\8f\8f\8f\92\8b\96\8f\96\96\99\99\96\96\8f\92\92\92\8f\92\8b\8b\8b\81\85~zzwwwwwppmffffcccffcffiimiimmpppttwzw~~zzzwpwppmmmmii__cc_\cfmipmifmimtwztmccc_\X\\fm \9c\9c\99\9c\99\99\92\99\99\99\9c\9c\99\99\96\99\96\8f\8f\88\85\85~~zwtptpt£§ \96\99\8f\92\92\92\96\99\99\96\99 £££\96\8b\88\85\85\88\88\81\88\85\85\88\85\88\88\85\81\81\81\85\81~wwppic__\\\XURUKKNNKNNKRNUUX\RRUXUUX\c_c\\_fcifcc\_\XUUXRNNNKKGKGGGKNRX\c_ccffimmmiifmmmmpiimffpmiccccf_cfiimipttwwttwtttpttmppptpwwttzz\81\81\81\81~\85\81z~ztpmc_UXRKNNNNNNNNNNNNNKKKKNRNR\KXX\\UXXXRUNUUUUNX_RX_UXURRKKADGDAADGGKNKNGNKDDAADGKKDGGKDGNGNNNRKNRNNRRNNKKGAAGGAG:A:A660AG=GGG=:D6GKN3DA30=NKKGNR=RNUX\\_\XXN6RD=A::6333333330000000000,,,,,,,)))))0%%%"\1f\1f\1f\e\e\18""\18%%0,3,))),,),,%,%))%)immpppmttwwwwzzztwwzwzz~~~\85\85\81~~\81zwztpmtmiiifcc\_ctwtmpfc\__ffcc__cfipwwz~z~~~ztttzwtttww\81~\85\81\81\81\85\85\88\85\85\88\88\85\85\85\85~zzzz~\81\81\81\85\81\81\85\85\85\88\8b\8b\8b\8f\88\8b\8f\8f\92\92\96\99\9c\9c\9c ££££§£§±ªª£ª§§ªª§§§ª££ \9c\9c\99\96\96\92\92\8b\88\81\85~~zzwzzzz~~~~\81\81\8b§ªª±¸±¸¸»¸¸¸¸ª§ § \96\92\92\8b\8b\81\85\81\88\81\81\85\81\81\85\85\8b\8f\92\8f\8f\92\8f\8f\8f\8f\8f\8f\92\92\92\96\99\9c\99\99\92\96\96\92\92\92\92\8f\8f\85\88\81~~wwwtwttiicffc_cfccfcfmiiipmtptttwzwz~~z~wtwtpppppmiffffffftwwwwpppzww~~~tpmc__\__ip\9c \9c\99\9c\96\99\96\99\99\9c\9c\99\99\99\99\99\96\8f\8f\8b\85\81~~wttpptt£§ \9c\9c\96\99\92\92\8f\96\96\99\9c\96\99\9c \92\8b\8b\88\85\88\85\88\88\85\88\8b\88\88\88\81~~~\85\81~zwtmifc_\\\XURRKKRNKNNNNNUUU_UUXXXXX_c_c\Xcicfcfc\\_\XXXRRKKGGDGDDGKNU\_ffffiimmmmimimpppttipmmmiicc\cfcciippmzwtzwtwwptppptimmpttwwwwzz\81\81\81\81\81\81\81~~~wtpf_X\RNNNNNNNNNNNNNNKKKKNNNR\NXUX\UUUURURXXUXRXc_\cX\XURNNGGGGADGGKKNNNGKGDGAGGKGNDNKNGGNGRRKRNNRRKNNNNGKKDAGGDG=D=A3:6AGGGDG=6A6DDD36A30=RKKDKN:URX\__c_\XK6NA=DA=:030003330000000000,,,,,,,))))),%%%%"""\1f\1f\e,%",3636633,03),,)0%30cffimmppptwwzzw~zzwzwzzzz~\81\81\88\85\85\81\81\85~zzttmtmiiifc_\X_pwtptcXX\\cfccc_cfiptzw~~~zzztwwzwpptww\85z\81~~~z\81\85\85\81\85\85\88\85\85\85~wzzzz\81\81\81\81\81~\81\85\85\8b\8b\8b\8f\8f\88\8b\8f\8f\8f\92\96\9c\9c\9c\9c£ £ £ §ªªªª§§§§§§§§ª§§§£ \9c\99\99\99\96\96\8f\8b\85\88\81z~zwzzz~~~~\81\81\88\8f§±´´¸¸»»»´»±±§ª § £\96\92\8f\88\88\81\88\81\85~\81\81~~\81\81\88\8b\8f\8b\8f\8f\8f\8f\8f\8b\8b\8f\92\96\92\99\99\9c\9c\9c\96\99\99\99\96\99\96\92\92\85\85\85zzwwtpwtwif_ccc_cccffcfiimmpitttwttwwz~~z~zwtwtttttpppiimmmiwzzzzww~\81\81\81\81\81\81\85\85\85~i_ccf\92\99\9c \9c\9c\99\99\96\99\96\99\99\9c\9c\9c\99\99\9c\96\99\92\8f\8b\85\81\81~wttppptwt \9c \99\96\96\92\92\96\99\99\99\99\96 \9c\8b\8f\8b\8b\8b\88\8b\81\8b\88\88\8b\8b\85\85\85~~~~\81~~zwtpmfcc_\XXXRRNNRNKKRNRRURR_XU\U\\\_fcc_\ffci_fc___XXXXRNKKGDDDAAGKRU_ciiiimimmmmimmipttwwtpppmii_c\_cccipttp~zwzwpwtmpmmmpimiptwwzwww~\81\81\81\81\81\81\85z~~ztti_X\RNNNNNNRNNNNNNNKKKNNNRR_RXXX\UUKRRRUU\X\\cfcffc_\URRNKGGKDGKGNGKKNKNDAKKKKNKRRRNRKKNKRRNRRNNRKNNKNDKGGAKDGG=AAD:=:DDKDA0:6::3AA63=30:N:G0:R6UU\\ccccXUG6K:AGD=6030000000000000000,,,,,,,,,)))0))%%%%"""\1f0)3:6:::A663:630,)3,6:cccimmppttwz~zz~~zwwwwz~~~\81\85\85\85\85\85\85\85\81~ztwppmiiic_\\XX\\wtwXRURU_c__ccffmpwwzz~~~zwtwzwtpptwz\85z~zzwzz\81\81~\81\85\85\88\85\85\81wzzz~~~~\81\81\81~\85\85\8b\8b\8b\8f\8f\8b\8b\8f\8f\92\96\99\9c\9c ££ \9c£££§ª§§£§§£§§§§§§§§ \9c \9c\9c\99\99\99\92\8f\88\8b\85\81\81\81z~zz~\81~\81\81\88\8f£ª±±±´¸¸»»»´»±´ª§££\9c£\96\92\8b\88\88\81\85\85\81~~\81zz~~\85\85\85\88\8b\8b\8b\8b\8b\8f\8f\8b\96\92\92\99\99 \99\9c\9c \9c\9c\99\96\96\81z\81wzttpmtttmicfcc_cccccfifmmimitttwttwww~~zz~zwztwwwwtttmipwptz~~~~~z\8b\85\88\88\85\85\85\88\88\88\88\8fpmf\92\92\9c\9c \99\99\99\9c\96\99\96\99\99\9c\9c\9c\99\99\99\96\99\96\92\8b\81\81~zwptmpmptp\9c\9c\9c\99\96\99\96\96\99\99\99\99\96\99 \96\8b\88\8f\8b\8b\88\8b\85\8f\88\8b\8b\8f\85\85\85~~~\81~~~zzwtpmfc__XUXRRNNRNKKNKNURNR\\XXUX\\cfccf_ffcfcfcc\_\XXXRNKGGDGAAAGNNX_fimmmmimmmiiimiptwwwwpttmifcc\_c_cmtztz~zzwwpwpmmiiipimmptwzzwwz~\81\81\81\81\81\81\85z~zwppic\\UNRNNRRRNNNNNNNKKNNNRUU_NXUUXRRKNRRUR\\__fffiffc\XUUNNGDKKKNKNGKGNNRKGKNNKNNNUURUNGRNNRRRURRRKNNGNGGGDKNGGD:DDADA=AAGA63:3363:=63:300A0D36N6RX\\____UUA6G==DG:6300000000000,,,,,,,,,,,,,,,)))0))))%%"%""336=:===D:=:==636306:__ccmimppwwz~~zz~zzzwwzz~~z~\81\81\88\85\85\88\81\85~wwwppmfffcc\\XX\X\\\XRRRU\_\_cciippwwz~~~~~twtwwttptzz\81zwzttwzz~~~\81\85\88\88\85~zw~zz~~~~~\81\81\81\85\88\8b\8f\8f\8f\8b\8b\8b\8f\92\92\99\99\99 ££ ££ \9c £ª§ª§££§£§§§§§§§§£\9c£\9c \9c\99\99\99\96\92\88\8f\81\85\81\85~~zz\81\81\81\85\88\8b\92§§±´´´¸»¾¾»¸»´´£££ \92\92\88\88\8b\85\81\81\81~~~wwzz\81\81\81\85\81\88\8b\88\8f\8f\92\8f\96\96\96\96\9c\9c £ £ \99\99\96~wwtwpimippppiff_ccffcffcifmmmpippttttwttzzz~~zzzwttzwwwwtwwzwz~\81\81\81\88\85\8b\8f\8f\8b\8b\88\88\88\8b\8b\8b\8b\8f\8f\8fi\8f\96\99\9c \9c\9c\9c\9c\96\99\96\96\96\9c\9c\9c\99\99\99\99\96\92\92\8b\81\81zwtmpimipmt\99\9c\9c\99\99\99\92\92\99\99\9c\99\96\9c\9c \8b\8b\8b\8b\8b\8b\88\88\88\8b\88\8f\8f\8f\88\88\85\81~~~\81\81~~wzttpifcc_\\UURNNRNKNKNRRNNXXXUR\XXcffficfc_fffcc___XXUURGGGAGADDGNKX\cfiimiiiiimmfiimpwztztttmmiff\\ffcpw~w~~~zttptiimifimfmmttww~wz~\81\85\85\85\81\85\81\81~\81~zpmic_\XRURRRRRNNNNNNNKKNRRUXX_K\RRXUNKNRURNX__ciiiifif\\UURNNKKNNRNRDGGNRNNKRRNNNRKRXUUNKURRRUUURRRKKKGKDDGDNKKKA6DGDGAAA=D=636003366636000=3A06K6N\XX\\_\RR:6==:AD::600,,0000000,,,,,,,,,,,,,,,))),)))))%%%%"66:AANDAKDG=AA:6===__c__fmimpptwz~\81~z~z~wwwzzz~z~\81\85\88\85\85\85\81\88\81zttmpiffcc_\\X\\X\X\XURRURU\ccfmitpzwz~z~~~wwpwwttttwz\85~wztttwzzz~~\81\85\85\85~~w~zzz~~z~\81\85\81\85\85\8b\8b\8f\8f\8b\8b\8b\8f\8f\92\99\9c\9c £ ££ \9c £ £ªª§£§££ £££§£§£££ \9c\9c\99\99\99\99\99\92\8b\8f\85\88\85\88~~~~\85\85\85\85\8b\92\9c§§±±¸´¸¸»¾¸»»»´±ª£ £ \9c\92\92\88\85\88\85\81\81\81z~ztwwwz~~\81\81\85\88\8b\8f\92\8f\92\96\92\96\96\9c\9c£§£££§££\9c\9c\92zzwwtmiimimmpmiififiicifffipmppimptttwtttwzzzzzwzwwtzzwzzwzz~z~\81\85\81\8b\8b\92\92\96\92\92\8f\8b\8b\8b\8b\8b\8f\8f\8f\8f\8f\92\8f\96\96\9c\9c\9c \9c\9c\96\99\96\96\96\99\9c\99\99\96\99\9c\96\92\92\88~~wtppmimmpp\9c\9c\9c\9c\99\96\96\96\96\9c\99\99\9c\99\9c\9c \8b\8f\8f\8f\8f\8b\88\88\8b\8b\8b\8b\8b\8f\8b\8b\88\81~~z\81~~zwzwwtifcfc__XUURRRRNRNNRRKKUUURRXUX_cfimfcf_ffccc___\\XURGGGADDGGGNGXX_cffmffiiiiiiimmptwtwwwwppmii_cfmttz\81z\81~~zttptcfiifiifmmttwwzwz~\81\85\85\88\85\85\85\81\81\85z~ppmcc\URRRRRRRNNNNNNNKKNUUX\X_N\RRXRKNKNUNNU_cfiiiiifc_\UXRRRNNRRNNUGDKNRKRNUUURRNNUURRNNURUUURRRRRNGKGNA=GDKNNK=:NKKKAA,:A:333,,0003333003:0=0633KXUUXX\UGN6:==6=A=:6303,,,,,,00,,,,,,,,,,,)))))))))))))%%%%%3:=DDUG_c\_RDD=A\D\c___cimmitpww~z~~z~z~wwzz~w\81z~\81\81\88\85\88\81\81\88\85~ttpmicffc___\\_X\RXUURRRRRX_ffpmttzzzzz~~zwwpttwtwwwz\85zwwtttwwwwz~\81\81\81\85~\81zzzzzz~z\81\81\85\85\85\85\88\88\8b\8f\8f\8b\8f\8f\8f\96\99\9c\99 £ £ \9c £§ª§§££ ££ £ §£ £\9c\9c\99\99\99\96\96\96\96\92\8f\8f\88\8b\88\85\81\81\81\81\85\88\85\88\8f\9c §ª±±¸¸¸»»»¸¾»¸¸ª§§ \9c \96\8f\88\85\85\85\85\85~z~tttttzz~~~\81\85\88\8f\92\8f\96\99\92\99\99\9c\9c£§§§§ª££ \81wwttpiiiiimitpmiimiiiiiiffimptpmppttpttttwwzzwwtwwwwzzzz~z~~~~\81\81\88\8f\8f\92\96\96\99\96\96\92\8f\88\8f\8b\8b\8f\8f\8b\8f\8f\92\8f\92\96\9c \99\9c\99\9c\99\96\99\99\9c\99\96\99\96\99\96\92\92\85\81~tppmmmmpmp\9c \99\9c\99\96\96\96\99\9c\99\99\9c\9c\99 \96\92\8f\8b\8f\8f\8b\8b\8b\8b\8f\8b\8b\8f\8f\88\88\81~~w~z~zzzwztmffifcc\XUUUURNURNRNNNNRRRNUR\\cfmifcfcfc_cc\____XUNGKKAGDGDKKGU\__fciciififiimmmmpttwwtwtmiiifmmpww~\85z~~~zwtttmimicfiipmttwwzzz\81\81\85\85\85\85\88\85\85\81\81zztpic__XRRRRRRRRNNNNNNKKRUX\X\\R\RRURNKNNRNNU_cffmiiii_c_XUURURRUURKRGAKRRNRKXUXURRRRRNNRKRNUUXRRRNNNKNGNDAGDKKRGK=RNNNAA,:6600)0),,0003000000:0333ANRNUU_RDG:6:=3:::63036,,,,,,,,,,),,,,,,,,))))))),)))))%%%%%36=GGX_cf_c_\\X__U_c__\cfmmittww~zz~z~wzwwzz~z~~~\85\81\85\88\88\85\85\85\88ztwpmmfficcc____\\UXXXRNURNU\fitpwwwzwwwz~zwtpttzwwwwz\85zwwtptwzwzw~\81\81\81\81\81~z~zz~~~~\81\81\88\85\85\85\88\8b\8b\8f\8b\8b\8f\8f\92\96\96\9c\99 £ £ \9c \9c ££§§§§££££ \9c\9c \9c££ \9c\99\99\99\96\96\99\96\96\92\8f\92\8b\88\88\88\85\85\85\85\88\88\88\88\96 £ª±´¸¸»¾¾»»¸¸´´ª§££\9c£\9c\9c\99\92\88\88\85\81\85\81\81~ztttttww~~\81\81\85\8b\8f\92\92\92\99\96\99\96\9c\9c§ªªª§ª§§£ \85wtpppimiifiipmmmmpiimmimfimppptpttpttwtptttwwttptwwtwzz~\81~\81\81\81\81\81\88\8b\92\92\96\99\99\9c\99\99\96\92\8f\8f\8f\8f\8f\92\8f\8f\8f\8f\8f\96\99\9c \9c\99\9c\99\9c\99\92\96\9c\99\9c\96\99\96\96\92\92\92\88\85~zwpmmippmw\9c\9c\99\9c\99\99\96\96\99\99\99\99\9c\99\9c \9c\9c\99\92\92\8f\8f\92\8f\8f\8b\8b\8f\8f\8b\8f\8f\8b\88\81~~zzz~zwwtwtpiiiicc_\XXXURRURKNKKKNNNNKRNXXcfpifffcfc_cf\__c_XURNRNNKGKKKKGU\__ccfcfififfimmpmiptwwttwpmiiipptzz\81\81z~~~zzpwtpmmiffimpmtttwzz~~~\88\85\88\88\88\85\85~~wzttfc_\XRUUURRRNNNNNNNKNUX\\\\\R\RRRRNKNKRKRR__cfmmiiicfc\URRURUXURNRGDGNNKRNXX\XNUUNNRGNNNNRUURNUANKKNKKADGDKGRKNRRRRN==,)33,0),,,,,,000300,,60000AKNKRN\NG=:6:=60666000:,,,,)),,)))))))),))))))))))))))%%%%%%6:=KG\cficfccc\c\Xcc_c_cfmmitwzwz~w~z~wzwtzzz~~~\81\85\85\88\8b\88\88\85\85\88ztwpppmiifcc_____XXXXUURURRRXfmptwwwztzz~~wwttwwwwwtwz\85~wwwptwzwwzz\81\81\85\81~~~~zzz~~~\81\85\85\85\88\85\8b\8b\8b\8f\8f\8b\92\92\96\96\96\9c\9c \9c£ \9c \9c £ §§§££§ \9c\99\99 \9c\99\99\96\96\96\96\99\96\96\92\92\92\8f\8b\88\8b\88\88\88\85\88\88\88\8f\9c££ª±±´¸¸¸»¾¾»´´´±§§ \9c \9c\99\96\8f\88\88\85\81\81~\81~wtptpttw~~\81\81\85\8f\92\92\92\96\96\96\99\99\9c §ª§§§£££\9c\85wptmmiifffmmpptpptppppmmmmpppppppppptttppppttppiptttzz~~~~\81\85\81\85\88\8b\8f\96\96\99\99\99\99\9c\9c\96\92\92\92\8f\8f\8f\8f\8f\8f\92\92\92\96\99 \9c \9c\9c\9c\9c\99\96\96\9c\9c\99\96\96\96\96\96\96\92\8b\88\81~zpppmpmt\9c\9c \99\99\96\99\92\96\96\9c\9c\9c\9c\99 \9c\9c\9c\96\96\92\92\92\92\8f\8b\8f\8b\8f\8b\8f\8f\8f\88\85\81~~zzzzwtptppmmiiff__XXXXRUURGRKGGKDKKKRRUXccmffffccfccc___c_\XURUNURKRNNNRU\___ccccfffifmmmpmimttttpttpmmmttwz~\81~~\81~~zwmwttpmiiimmpptttwzzz\81\81\85\85\88\88\88\88\85zztzppcf_XUUXXXUURRNNNNNKGRUX\\_\\R_RRRRKKNKRNUU__cfiifim_cf_XUUXUXXUURRKGKKKGRRUXXXRUUKRND=NKNRURRKR:NAGKGG=DGAGDNNRURUNK::,)00,,)),)))),,,3,0,,30000=GKGNKXKD==6:=60366)3,60)))%%)))))))))))))))))))))))))%%%%%%66:G\_fiffifff___\cccccciimmwwzww~z~z~wzwwzzw~\81~~\85\85\85\88\88\85\85\88\85~twttppmiifc__c__\\XXUXRUURNUippttwwzwwzz~wwwwwwwwztww\81zzwzpwwzwzzz\81~\85\81~\81~~zzz~~~\81\88\88\85\88\85\88\88\8b\8b\8f\8f\92\92\92\96\99\9c\9c\9c \9c\9c \9c £§££ ££\9c\9c\99\9c\9c££ \9c\9c\99\99\96\96\96\96\99\96\96\96\96\92\8f\8f\8b\8f\8b\88\8b\85\8b\88\8b\96 §§´±¸¸»»»¾¾»´±´§£ \9c\9c\99\92\92\8f\88\8b\85\85\81~~~wtptttwwz\81\85\85\88\8f\92\96\92\99\99\96\9c\99\9c££ªª££ \99\88\88wpimmfiiiimttwttwtwttpmppptpttpptptpttpptpppifiippw~~\81~\81\81\81\85\85\88\8b\8f\92\99\99\9c\99\99\9c\9c\99\99\92\96\92\92\8f\8f\92\92\92\96\96\96\96\99 \9c\9c\99\9c\9c\9c\99\99\9c \99\99\96\96\96\96\96\92\8f\8b\88\81\85~ttpt~ \9c\9c\99\99\99\99\92\96\99\9c\9c\9c\9c\99\9c \9c \99\99\96\96\92\96\92\92\8f\8f\8f\8f\8b\8f\8f\92\8b\88\85\81~~zzztpppmpiiiiif__\\XXUXUUKNGDDGGAAGRRUX__mifff__fccc\___\\\\UXNXUUURRRUX__c\____fiiiimmmpmppttwtpttpmppwwz~\81\85\81~~\81~wwpwwwtpiimpptttwwz~zz\81\81\88\85\88\88\88\85\81~~wwmmfc_XUUX\\XXURRNNNNKGNU\\_c\_U_RRRRGKKKRRXX___fficfi\cf\XXXXXXXUURUGGNNNGNUUUKXURRKUKGAKKKNRNNGN=KAGKGGAAD=D:DKNRNRK6:6)),)))))))),),,,00,,,03000:DGDKGG=A:=:::303:3)6330))%%%%%%%%%%%%%%%%%%))%%%))))%%%%%%)33:DK_cfccfcii__c____cccffmpwtwzw~zzz~zzwwwzz~\81~~\81\85\85\85\85\81\88\85\81~twwwttpmifcccc_c_\\\XXNUUURXmpmpwtwwwtwzzwwwwwwttwpwt\85~zwwtwwwwz~~\81~\85\81\81\81~~z~~~\81\81\81\88\88\85\88\88\88\88\8f\8b\8f\8f\92\96\92\96\96\9c\99\99\9c \9c\9c \9c\9c\9c\9c §§£££ \9c \9c\99\9c \99\99\96\99\96\96\99\99\96\96\96\96\92\92\92\8f\8f\8f\8b\88\88\8b\8b\92\99£ª±´´¸»¸»»¾¾»¸±§£ £\9c\99\99\99\96\92\92\8b\88\88\81\85\81~ztwpwwwzz~\85\88\88\8b\8b\92\96\96\9c\9c\99\9c\9c §§ª§ \99\9c\9c\99\8b\8bzptpiiiifiptwzzzzwzwwtptpptttttttttttpptppmpiciiptw~~\81~\81\81\85\88\8b\92\96\92\96\9c\9c\9c\9c\9c\9c \9c\99\96\92\96\92\92\92\92\96\96\96\96\99\99\9c£ £\9c \9c \9c\9c\99\9c\9c\9c\99\99\96\96\99\92\99\92\92\8f\8b\8b\88\81zwtt£ \99\9c\99\9c\99\99\96\96\99\99\9c\9c\99\9c\9c \9c\9c\99\99\96\99\92\96\92\96\92\8f\8f\8f\8b\8f\8f\92\8f\8b\88\81\81\81~~zppmmmmiifffcc_XXXUUURRGKD=DDD=ADNRXX__mifcccccccf\___\\\_Xc_cXXX\UXX\c_cX_\__cmmimmppppttttttpwppmptzwz\81~\81\81z~\81zzwtwwwttmimttwwwzwz~~~~\81\88\88\88\88\88\85\85~~wtmff__XXXX\_\\XUUNRNKKGKR\__c__U_RRRRGKGKRRU\\_\ffffffXccX\\XXXUXURRUKKRNRGKRXRGUXNRNRKKDNKKNNKKGKAGDGKGGD=A:A:DGKNKNG)63))%))%),)))))),,,,,,,,0,,,666AGDD::6=666633:0%3603%)%%%%%%%"%%%""%%"""%%%%%%%%%%%%%%%%006AG\_c_fccff_c_c__cc_ciimtttwww~z~z~zzwwwzzz~~~\85\85\85\81\85~\88\85\81~twzzwtpiiicfcccc_\\\\\RUUXU\ipppttwtztwwzwwtwwwptwptt\88~zzzwwwwzz~~\81\81\85\85~\81~zz~\81\81\85\85\85\85\88\88\85\88\88\88\8b\8b\8b\8f\92\96\96\99\96\99\9c\99\99\9c\99\9c\9c\9c\9c\9c\9c\9c ££§££ £ \9c \99\9c £ \9c\96\96\99\96\96\99\96\99\99\99\96\96\96\92\92\92\8f\8f\8b\8b\8b\8b\96\9c§±´´¸¸»»¾»¾¾»¸ª§£ \9c\9c\99\99\96\92\96\8f\8b\8b\81\85\81\81wwwpzzz~~\81\88\8b\88\8b\8f\92\92\96\9c \9c \9c ££§£\99\99\99\99\99\99\8f\8f\88pwpmmmmimptz~~~~z~zzwtpptpttwttpttwtttttpmmi_iimpwz\81\81\81\85\85\88\8f\96\99\99\96\99\9c \9c \9c\9c\9c\9c\99\99\96\96\96\92\92\92\96\99\96\99\9c\9c ££§ £ \9c\9c \9c\9c\9c\99\96\96\96\96\96\96\92\92\8f\8f\8b\85~z£ £\9c\9c\9c\9c\9c\9c\99\99\92\96\9c\99\9c\9c\9c\99 \9c\9c\99\99\99\99\96\96\96\96\96\92\92\92\8f\8f\92\8f\92\8b\8b\81\85\85z~ztpimimfffff__\XUURRRNNDKA=DAD=DDKNXU__iifcccffccc__\c_\\c\mcfcf__U_\_c__X__c_ciimmmpmppwtwtwwtwtwppwzz~\81~\81\81~~\81~zzwwzwwtptptwzwzwzz~~~\81\81\88\88\88\88\88\85\81~zwppfi\_\\\X\_\\XXXRUNKKKKR\__cccUcNRRRGNKNRNR\X\_ffffc\U_f_\_\\XXXURRRNNUNRGDRURKRUGNNNNKGKGGNNGDDG=DDGGDDD==6==D0AAAK=),,%%%%%),,)),))),,,,0,,,0,,,3000::A:6::66333363%3:06))"""""""""""""""""\1f"""""""""""""""%0333DX\c\f_cccccc_c_cccciimtwtwwz~~~w~zzwzwzz~~\81~\81\85\85~\85~\85\85\81~zw~~wttimmfffcccc_\\\\UXX\\fmmpmppttztzwwwwtwwttptptt\85\81z~~zzzwzz~\81\81\85\85\81z\81~~~~\85\85\85\88\85\88\88\85\85\88\8b\8b\8b\8b\8f\8f\8f\96\99\99\96\99\99\99\99\99\9c\9c\9c\9c\9c\9c\9c ££§£§ £ \9c\9c £ \9c\99\96\99\96\92\96\96\96\99\96\96\96\96\92\96\92\92\92\8f\8f\92\99\99§±´´¸¸»¸»¾»¾¾»´ª§££ \9c\9c\99\9c\92\96\96\8f\8b\8f\85\85\81~twttzzz\81\81\85\8b\8b\8b\8f\92\8f\96\96\99 \9c \9c\9c \9c\9c \99\92\99\99\99\96\8f\8b\8b~zzmmmmmmtwz\81\81\81\81~\81~wtwpptpttttttttwwtttppmiicffimtz\81\81~\85\85\88\96\9c\9c\9c\99\9c\9c \9c\9c\9c \9c\9c\9c\99\99\96\96\92\96\96\96\99\96\99 §§§£££ £ \9c \9c\9c\99\99\96\99\96\96\8f\92\92\92\8b\85\81z£ £\9c\9c\9c\9c\99\9c\99\99\96\99\99\9c\9c\9c\9c\99 \9c\99\99\99\99\99\96\96\96\96\96\92\92\8f\92\92\92\8b\88\85\85\85~~wpmimiiffccc\\XURRNGDGKAG:=D=AADAGKXX_ciiifffiicccc___c_\_fpfiiifffc_cc__\\___ciipmppitpttwwwzwztzttwz~\81\81\81\81\81\81~\81\81z~zw~ztttwtwzzz~zzzz~~\81\81\88\85\85\88\85\85\81\81zwppim__\\\\\__\XX\RUNKKKNUX\c_cfXcKRRRKNNRRRUX\__ccfc_\X\ic_c_\XUUUURRNRXRRKGNXRKRRNNKKNKGKKDNKDDAD:AADDADA:666AD0:==::),%%))%)%,,,))))),,,,,,,,0,,,0003063666:663063:3)0603,)"""""\1f\1f\1f"\1f\1f\1f\1f"\1f\1f\1f\1f\1f\1f\1f\1f\1f"\1f\1f\1f\1f"\1f\1f\1f\0"0003ARX_Xcc___c__ccccccfimppttww~\81~~z~z~wwwzzz~~~\81\81\81~\81\81\85\81\81~~wz~zwtpmmiifccf____\\U\\__immpptpttzwwwtwtpttttppptw\81~~~\81~z~zzz~~\85\85\81\81z~~~~~\85\85\85\85\85\85\88\85\85\88\88\88\8b\8f\8b\8b\92\99\99\99\99\99\99\9c\99\9c\9c\9c\9c\9c\9c\9c §£§§§£\9c£ \9c\9c £§££\9c\99\99\96\96\96\92\92\96\99\99\96\99\96\92\96\96\92\8f\92\92\96\9c\9cª±±±´¸¸»¾¾¾¾¾¾¸¸±ª§§ \99\9c\9c\96\96\96\92\8f\8f\88\85~zwwtw~z\81\85\81\88\8b\8f\8f\8f\92\8f\96\96\96 \9c \9c\9c\99\96\99\96\92\96\96\96\96\8f\8f\8b\81z~ppmmmptz~~\85\85\81\81~\81wwtttppppppttwtwwtttpmmifcfiimpz~\81\81\81\85\8b\9c \9c \9c\9c\9c\9c\99 \9c\99\99\99\96\96\99\99\99\99 £§§§§£§£§ \9c£\9c\9c\99\99\99\9c\99\96\92\92\8f\8f\8b\81~w£\81 \9c\9c\99\9c\99\99\99\99\96\99\96\9c\9c\9c\9c\9c\9c \9c \9c\9c\9c\99\99\99\99\99\99\99\96\92\96\92\8f\92\96\8f\8b\88\85\85\81zwpmiififc___UXURNNKDAD:=D=AD==AGDGNXXccimfcfiiiccccc_c_c\_itpmmmpiiffffc_\\__cfmmppppmtptwwzwzzzw~tw~~\81\85\81\85\81\85\81\81\81\85~~zw~wwtwzww~zz~~~~~z~~\81\88\85\85\88\88\85\85\81\81zzpmmmc\____\_\\\\UURNKNNRX\ccffXcNUUNNNNNRRUU\__ccfc__\Xff_c_\XXUUXRNXUXUURKKUNKUURNKKKGDNKDKN:D=A:=AAD=AA:666=A0:=::0),%%))%%"),,),))),,,,,,0,0,,,,030003336:660)3060,36,0)%""\1f\1f\1f\1f\1f\1f\1f\1f\1f\e\e\1f\1f\1f\e\e\1f\e\e\e\e\1f\1f\e\e\e\1f\e\e\e\0\1f,,,3ANU\X_______\cccccfcfmmmptzt~\81~~z~z~wzzzzzz~~\81\81~~~\81\81\81\81\81\81zz~zwwtppififcc_\c\\\XX\_cmmmppttttwwwttttppttpppppt\85\81\81\81\81~z~~z~~~\81\85\85\85~\81\81~~\81\85\81\85\85\85\85\88\88\85\85\88\8b\8b\8f\8b\8b\92\99\9c\9c\9c\99\99\99\99\99\99\9c\9c\9c \9c £§§ª§£ \99\99 \9c\9c ££ \99\9c\96\92\96\96\96\92\99\96\99\96\99\99\96\99\96\96\92\92\96\99 §´±±´´¸¸¾¾¾¾¾»¸¸±±§§££\99 \9c\99\96\96\92\8f\8b\85\88zzwwwz~\85\85\85\88\8b\8f\8f\92\92\92\92\92\96\99\9c\9c\99 \9c\96\96\96\92\8f\92\92\96\92\8f\8b\8b\85~~tppmippwz~\81\85~\81z~wtptppmmmmmppwwwttpttpmiicimmppwz~\85\85\85\8f ££ £\9c \9c\99\9c\9c\9c \9c\9c\9c\99\99\9c\99\9c\9c£££§§§§§§££§ \9c\9c\9c \99\9c\99\99\9c\9c\99\99\96\92\8b\8b\88\81ztt~ \9c\9c\99\99\99\99\99\99\96\99\99\9c\99\9c\99\99\99\9c\99\9c \9c \9c\99\99\9c\99\9c\99\96\92\92\92\8b\92\92\8f\8b\88\85\81\81wtpmiiffc_\\\NNRNDGGA:A3===AAAADDADKUUf_fifffiffcfc_c_c_c\_mptppptmmmiifcc____cfmpppppmpptwz~z~~~w\81~z\81\81\81\88\81\85\85\85\85\81\81\81\81~zz~zwww~zz~~~~\81z~\81~z~\81\88\81\85\88\85\88\85\81\85~~tpmppfmffc\c\_\\XXURNNRR\\ifii\cRXURNRRNURXX__cfffccc\Xifccc_\XURXRc_\\\\\RKRRGXXURGKKDAKKGKK=A======A===6666==0::::)))%%%)")%))),)))),,,,,,,,000,,0000033336660,033,,33))%%\1f"\1f\1f\1f\1f\e\e\1f\e\e\e\e\e\e\e\e\18\e\e\18\18\18\e\e\18\18\18\e\e\18\18\0\e)%)6=KUUU\____\_\c_cccfffmimptwwz\81~~z~~~w~z~z~zz~~~~~z~~\81\81~\81~~\81zzzwttmficcc_\_\\\XX_cfmimmptwttttttppppppppppppp\88\81\85\81\85\81~z~~z\81\81\81\85\88\85~\81~~~~\85\81\85\88\88\88\8b\8b\85\85\88\8b\8f\92\8f\8f\96\99\99\9c\99\9c\96\99\9c\99\99 \9c £§§§ª£§£ \9c \9c\99 \99\9c £ \99\9c\99\96\96\99\96\92\96\96\96\96\96\99\96\99\99\99\96\96\96\9c£ª´±±´´»»¾¾¾¾¾»´¸±±ªª££\9c\9c \96\92\96\92\8b\88\81\85wwwzz~\81\88\88\88\8b\8b\8b\8f\96\92\92\96\92\96\99\9c\99\99\9c\9c\9c\9c\99\92\92\8f\92\92\92\92\8f\8f\88\88\85~~tttmmpptwz~\81z~wzzwmpmmiiiiipttttwwttpmpmifmppttwz~\81\85\88£££§£££££ \9c\99\9c\9c \9c\9c \9c\9c\9c \9c §££§§ª§§§£££\9c\99\99\9c\9c\96\99\96\96\99\99\96\96\92\8f\88\88\85\81ttt~\9c\99\99\99\99\99\96\99\96\96\96\99\9c\99\99\9c\9c\9c\9c\9c £ \99\99\99\99\9c\9c\9c\99\92\92\8f\8b\8f\8f\8b\88\85\85\81\81ttmmfffcc\\XXKKGG==D=:=3:A:===DDAAGKURc\cfifficfcfc_c___c\ciptmtpwpppmifcc_c_cfimpptpppttwwz~z\81\85\88\81\81\81\85\85\85\85\88\81\81\85\85\88\85\81\85\85~wz~~wzw~~~\81\81~\81\81~~~~~~\85\85\85\85\88\85\85\85~\88\81\81zzwttmpiimfc\\\\XUXUNNRU__mimp\fX\UURUURURX\_ccffffcccXffffc_\\RU\cfc_\c__\NRRKUXRUGGKGAKKDKGAA===::3===:6636:6066:6,)%%%%)%)))))))))),,,,,,,,03,,,0330000363360)00,)000%%""\1f\1f\1f\1f\e\e\e\e\e\e\e\18\18\e\e\e\18\18\18\18\18\14\14\18\18\14\14\14\18\18\14\14\0\18%%%3=NUXUX\\_____c\cccccimipppwwz\81\81z~~~~z~~\81z~zw~zz~~z~~\81~z~~\81\85zzzzwtmiffccc\__\XX\_fimfmmptttppptpppptptpppmpmp\8b\85\85\85\88\85\85~\81z~~\85\85\85\88\81\81\85~~~\81\85\81\85\85\88\88\8b\8b\88\88\8b\8f\92\92\92\92\99\9c\99\9c\99\9c\99\96\9c\99\9c ££§ª§ª§§£ \9c\9c\9c\9c\9c\96\99\9c \9c\9c\9c\96\96\96\96\96\99\92\96\96\99\99\99\99\99\99\96\96\99 §ªª´´±´¸»»¾¾¾¾»»´´±±±ª§£ \99\96\92\8f\88\85~\81wzz~~\81\85\88\88\8b\8f\8f\8f\92\92\92\8f\96\96\99\99\99\99\99\99\99\99\99\96\8f\8f\8b\8f\8f\8f\8f\8f\8b\88\88\88zztptppppttw~~zzwtwtmmmmifficmpppttwtptppmiippmttwz~~\88\8f§§§§§§£§££ \9c\9c\9c\9c\9c\9c\9c \9c £§§£ª§ª§§££ \99\96\96\99\99\92\96\92\96\96\96\92\92\8f\8b\88\85\81~www~\92\96\99\96\96\99\96\99\92\96\92\96\99\9c\99\9c\9c\9c ££££\9c\9c\99\9c\9c\9c\99\96\92\8f\8b\8b\8b\8b\88\85\81\81~~wtmiccfc_\XUUKKGA:=A=6:6===A=AAAADKNXUc_cimiiififcfcfc_cc\fipwtwtwtttpmfffcffffiptttpptwtzwz~~\81\88\8b\85\88\81\88\85\88\85\85\81\81\81\85\88\88\85\88\81~zz~zzzwzz~~\81~\81\81~\81\81z\81\81\81\85\85\85\88\85\85\85~\88\85\85~~zzwttptpif_X\\UXXURNRX\cpmmt\i\\XXUXUNXNX__ccffiifffccciff___UU_fiffffcc___UKXXUXKKKKDKKDGG==::::66:::33663663:66:))))%"%)%%)))))))),,,,,,,,000,,3000000063330),,%)0,,"\1f\1f\1f\1f\1f\e\e\e\e\18\18\18\18\18\18\18\e\e\e\18\18\18\14\14\11\ e\14\14\11\ e\ e\14\14\ e\ e\ 3\14\1f"%0:RXXXXX\_\\\c__f_ccfimmmmpwzz~~zz~~~zzz~z~zwzzzzzw~\81~zzz~\85\81z~z~wtpmiifcc\_\\UUXcfipmmpptttmtptmpmmpptpptppmp\88\88\88\85\8b\88\88~\81~\81\81\85\85\88\88\85\81\81\81~\81\81\81\85\85\85\88\88\88\8f\8b\8b\8f\8f\96\92\96\96\99\9c\9c \9c\9c\9c\99\9c\9c ££§§§§ªªª§£\9c\9c \9c\9c\99\99\92\96\99 \9c \99\99\99\99\99\99\96\92\96\99\99\99\99\96\99\96\99\9c£§ª´´´´»¾»»¾¾¾¾»¸´±±´±ªª £ \9c\96\92\8b~w~zw~~~~\81\85\8b\8b\8b\92\92\92\96\96\92\92\96\96\99\99\96\99\99\99\96\96\99\92\8b\8b\8f\8f\8b\8b\8f\8b\88\85\85\85wwtttmmmmpptzwwwwttppmmifc_fcifmmppwwttpmmiimtpttwzzz\85\92ªªª§§ª§£§ \9c\9c\9c\9c\9c \9c £§£££§§§§£ £ \9c\96\92\92\96\96\8f\92\8f\92\92\92\92\8f\8f\8b\85\81~~wwz~\88\99\96\96\96\96\92\99\92\92\96\96\96\99\99\99\9c\9c \9c£§§£ \99\9c\99\99\96\92\8f\8b\88\88\85\88\85\81~~~ztpmiffc_\XURUKKDA=A=::=::=A=AA=AADGNXXccciiiiiimicicfcccc\immzwzwwwtttmpiiimifcmptttpttwwzz~~\81\8b\8b\8f\88\8b\85\8b\85\85\81\81\81\81\81\85\88\85\88\88\81\81~~~~~zzzwzz~~~\81~~~z~~\81\85\88\85\88\88\85\88\81\85\85\85\81\81~~zwwtwtmic\\_UUXUUNRX\_mppwXi_\_XX\XNUK\c_c_fffiiiifXfifi_cfUUciiiiiiffcccXK\XXUNKNKGKKDKG===:::6:::660333360633:,)%)"""%"")))))))),,,,,,,,00,,,0030300333330)0,%),""\1f\1f"\1f\e\e\e\e\e\18\18\18\18\14\14\18\18\e\e\e\18\18\18\14\11\11\ e\ e\ e
+\a\a\a\a\a\a\a\ e\e\1f",6RX\\\X\_\X\c_cccfccfmpppttwz~zzzz~\81zzz~z~zzzzzzwwz~zwwzz\81~zzz~zwtmmiicc__\XXUX_cimpmpmtppptmppmmmmppppppppp\88\8b\88\85\8b\8b\8b\85\85\81\85\85\88\88\88\88\85\81\81\81\81\81\81\81\85\85\85\85\88\8b\8b\88\8f\8f\8f\92\96\96\99\99\9c \9c \9c\9c\9c £§ªª§ª§ª£§ \99 \99\99\9c\96\96\99\99 \9c £ \9c\9c\9c\9c\99\99\99\96\99\99\99\99\99\99\96\99\9c £§ª´¸¸¸¾¾»¾¾¾¾¾¾´´´±±±±ª§££\99\96\8f\85zwzzz~~\81\81\85\88\88\88\8f\96\92\92\96\99\96\92\92\99\99\99\96\96\9c\96\96\92\99\8f\8b\8b\8b\8b\88\88\8b\88\85\81\81\81ttpppiimimmpwtttwwptmmmmif_c_ff\fmmttwtpmmmmppppwzzz~\88ªªª§§ª§§£ \9c \9c\9c ££ ££ ££££ \9c \9c\99\92\8f\8f\92\92\8b\8b\8f\8f\8f\8f\8f\8b\8b\88\85\81\81~wwz~\88\99\96\99\92\96\96\96\92\92\96\92\92\99\99\99\99\9c ££§£ \9c \9c\99\92\8b\8b\81\85\85\81\81\81~zzzwtmiiffc\XXRNRGGA=A=:::==6=D=AA=D=AGKUXccfiimmmmpifmffcccfimmpzzwzzzwwtmtmmmpmmmmpttwpwttzz~\81\85\88\8f\8f\92\8b\8f\88\88\85\81\81~~\81\81\81\85\81\88\88\81\81\81~~~~zzwwwwzzz~~~~zz\81\81\88\85\85\85\88\88\8b\85\81\88\85\85\85\81\81~zzwztpif_\\URURRRRUX\iptzXm_\c\\\\NRK__cfccffiiiic\ffim__iiRcmmmmmmiicff\\_UUURNRNDKKDGGA:::::6:::33003033036060%))%"\1f"\1f\1f)))))))),,,,,,,,0,,,,000300003633,,,)%%)""\1f\1f\1f\e\e\e\18\18\18\18\14\14\14\14\14\18\18\e\e\e\18\18\18\14\11\11\ e\ e\ e
+\a\a\a\a\ 3\0\99\a\18\1f%0UU\\\\\\\\\\ccfffffcfmppptwtwzzwzz~~z~z~z~zzzzwzwwzzwwwww~zwzwzzztmmmifccc_\XU\_cimtppppppmpppmmmmmpptpppppp\8b\8b\88\85\8b\88\8b\88\85\85\88\88\88\88\88\88\85\81\81\81\81~\81\81\85\85\88\85\88\8b\8f\8b\92\8f\92\96\96\96\99\9c \9c\9c\9c \9c\9c£ £§ªªªªª§§£\99\9c\99\99\9c\92\96\99\9c £ §§£ \9c\9c\99\9c\99\9c\9c\99\99\99\99\96\99 ££´¸¸»¾¾»¾¾¾»¸»±¸¸´´±±±ª£§\9c\96\8b\85wzz~z~~\85\85\85\8b\8b\8b\8f\92\96\96\92\96\96\92\96\96\96\99\99\96\99\96\92\8f\96\8f\8b\8b\88\88\85\85\88\81\81~~zwwmmmifiiiifppiptttpppiiiicc_cc_cfipptwpppippptttzz~\81§ªªª§§§§§££ \9c £ £ §£ £ \9c\9c\9c \9c \9c\99\9c\99\96\8f\8b\88\8b\8b\8b\88\8b\8f\88\8b\8f\88\8b\85\85\85~~wwz\81\88\96\96\96\96\96\96\96\92\92\92\8f\92\96\96\99\99\9c\9c ££§£££ \99\96\8f\88\88\81\81~z~~wzzwppmmicccXUURNNDDA=A=::===:AAAAAAA=AGKRU_ciiimppmpiimiiffimmpmp~zzzz~wwttwtpptpppptwwwpttw~~\81\85\88\8b\92\92\96\8f\8f\88\88\85\81\81~~~~~\85\85\88\85\81\81\81\81~\81~wzwwpwwwz\81~~z~~~~\88\85\88\88\88\88\8b\88\85\8b\85\88\88\85\81~~~zwwtmc_X\RRRRRNRUURftwzXmc_f__\XRR\__ff_ffiiimff_ffiii\mmmfipmpppmifcc___UXXUNRNDNKDDDD::6:=3:6630300030036,30%))""\1f\1f\e\1f)))))))),,,,,,,,0,,0,000030033333,,,)%"""\1f\1f\1f\1f\e\e\18\18\18\18\14\14\14\14\14\14\18\18\e\e\e\18\18\18\14\11\11\ e\ e\ e
+\a\a\a\a\0\99\96\0\e\1f"3XX\\X\\\\\____fcccccfimpptwwwzzzwzzz~zz~z~zzzzwzwwwzzwtwtzwtwtwzztppiiffcc__XX_cfmptpttpptmmmpiiimmmmtpmpmmp\8f\8b\88\88\8b\8b\88\8b\85\88\88\88\88\8b\88\85\85\85\85\81\81\81\81\85\85\85\88\88\8b\8b\92\8f\8f\92\96\96\96\99\99\9c \9c\9c \9c £ªªªªªª§§§\9c \99\9c\99\96\99\99\9c£§§ª§ªª§ £\9c\9c\9c\9c\9c\9c\9c\9c\9c\99\99\99\9c\9c ª´¸¸¸¸»»¾¾¾¾¸¸´¸´´´´±§£\99\92\88\81zz~~~\81\81\85\85\85\8b\8b\8f\92\92\92\92\96\96\96\96\99\96\96\99\99\92\99\96\8f\8f\96\8b\88\88\85\85~\81~z~zzwttmiifcffficmifmfpttppifmfc__cc_cfipptttpmmpttttz~~\81ª§§§§£££§§£ £ ££ §££§ £\9c\99\99\99\9c\9c\9c\9c\99\96\96\96\8b\8b\88\88\85\8b\8b\88\8b\8b\88\88\8b\88\88\85\81\81~zww~\85\88\92\96\96\99\99\96\96\92\92\8f\8f\92\92\96\99\9c\9c £§§£§ \96\92\8b\85\85~~~wzzwwwtpmmifcc_UXRNNG=DA===::A:=:A=D=DAA=DDKNR\_ffimtmptmmmmmimmpppmp~~~z~\81wwwwwwzwwtttttwwwttzz\81\81\81\88\8b\8f\96\96\96\92\8f\8b\88\85\85\81~\81\81~~\85\85\88\88\85\81\81\81\81~zwwwwptwww~zzzz~z~\88\85\88\88\88\88\88\8b\88\8b\88\88\88\88\81~\81~~wztm__UXRRRRRRRRUUcwtzXifcfcc\XUU\\cfccifiiimcfcfffimcmpmiipppmppiiffcc\X\XXXRKDNNGDDA:66::663300300000066,00)%%""\1f\1f\e\1f)))))))),,,,,,,,0,,,,,000000033330))))"""\1f\1f\e\e\e\18\18\18\14\14\14\11\14\14\14\14\18\18\e\e\e\18\18\18\14\11\11\ e\ e\ e
+\a\a\a\a\9c\9c\99\99\e"\1f3X\\\\X\\__c__cc_c_ccfiimppwzzzzwwzzzzww~z~zwzwwzztwzzwttwwtpwpwzwwttmmif_c__\Xcffptttwtpptmmmmimmmmmippmmmmm\92\8f\88\8b\8b\8b\88\88\88\8b\88\88\85\88\88\85\85\85\85\85\81~\85\85\85\88\8b\8b\8f\8f\92\92\92\96\92\96\99\99\9c\9c \9c ££ §ª±±ªªª£ £\99\99\9c\99\99\9c£§ªªªª§§£ \9c\9c\9c\9c\9c\9c\99\99\99\9c\9c £§±´¸¸¸»¾¾¾¾¾¸¸´»±´´±ª£ \99\8f\88\81~z~~\81\85\85\88\88\88\8b\8b\8b\92\96\92\92\96\96\92\96\96\92\96\96\96\92\96\92\8f\92\92\88\85\85\85\85~z~zzwzwpppffcccccf_iccffmptptmipiccc_cc_fimptwwtpptwtwz\81\81§ª§ª§£ §£££££££ ££ £§§§£ \9c\9c\96\99\99\99\99\99\96\92\8f\92\88\88\85\88\85\88\8b\88\88\88\88\8b\8b\85\85\85~~zwtw~\88\88\8f\96\99\99\96\96\92\96\8f\8b\8f\8f\92\96\99\9c\9c£ £§§§£ \9c\92\88\88~~zzztwwtttttmmff_c_XUUKKDAD==::===AA==AAADAAADAKKR\\fcfipipppppppmpptptpt~\81~z~\81zwzz~z~zzwwwwwwzzzz~\81\81\85\88\8b\8f\92\99\99\96\96\8f\8b\8b\81\85\81\81\81\85~z\85\81\85\88\81\85~\81\81\81zwztwtpwwtzz~~z~~\81\88\88\88\85\88\8b\8b\8b\8b\88\8b\8b\88\85\85\81\81z\81tzpi_\XURRRRRRRRUX\Uwz\fifcc_\UUX___c__fffif\ffciiffmfmpiiimXpmmpffff_c\\_X\\UNDNKKDDA:::::66603030,,,00630,3%%%"""\1f\e\1f)))))))),,,,,,,,0,,,,,,,0000063330)%%%""\1f\1f\1f\e\e\e\18\18\14\11\14\11\11\14\14\14\14\18\18\e\e\e\18\18\18\14\11\11\ e\ e\ e
+\a\a\a\a\9c\9c\99\99\e\1f\eXXX_\\\_\c_c_ccfcccffiiiippwzzzwzwzzzwzz~z~zwzzwzztwzzwwwwwtptttwwwttppmf_cc__\ciiptttwtttpmmmmiimmmmmpmmipmp\96\8b\8b\8f\8b\8b\8b\88\8b\8b\85\88\85\88\88\85\85\85\85\81\81\81\85\85\85\8f\8b\8f\8f\92\92\92\92\96\96\99\99\9c\9c\9c \9c\9c\9c\9c\9c£§£ª±±±±±´ª§§ \9c\9c §ª±±±ªª§££\9c \9c \9c\9c\99\9c\9c\9c £§ª±´¸»¸¾¾¾¾»»¸»´¸±´´ªª \9c\96\8f\85\81~z~~\81\88\88\88\88\88\88\8b\8b\92\92\92\96\99\96\92\92\92\92\96\92\92\92\92\96\92\8f\96\88\85\88\81\81~zzwzwwtppmif_c\__c_fcc_citwttpmpifffcffccimppwtttttzzz~\88±±ª§ª£§£ \9c£ £ ££ ££££ £££ \9c\99\99\96\99\96\96\96\92\8b\85\88\8b\81\85\81\88\85\88\88\85\85\88\8b\88\88\88\81\81zwwzww~\88\8b\8b\99\96\96\92\99\96\92\8f\8b\8f\8f\8f\92\96 §££§£ \9c \8f\88\81zzwwwptttpmppiifcc_\\UUGNDAD:=::==ADAAADDDD=ADDDKGNXXc_cfmftmptpmmmttttwtp~\81~\81z~~z~~\81~\81~~zzzzzzz~~~\81\85\85\88\8b\8f\92\96\99\99\96\99\92\8f\8b\81\85\85\81\81\81z~\85\81\85\85\81\81z~~\81ztwttpmttpzw~~~~~\85\88\8b\88\88\8b\8f\8b\88\8b\88\8b\8b\8b\85\85\81\81z~pwff_XURRRRRRRRRRUUUwz_iifc_c_RXX_\\c\_fccff\ifcfffiiiimmfmi\mmimcccc__\_\U\XXKDRKKGDA=::::6::33300,,,30:00,0%%%%%""\1f")))))))),,,,,,,,0,,,,,,,,00003333,))%%"""\1f\1f\e\e\18\18\14\14\ e\11\11\11\14\14\14\14\18\18\e\e\e\18\18\18\14\11\11\ e\ e\ e
+\a\a\a\a \9c\99\99\1f\1fXX\X_\_\_\c_c_cffffffiiimiptwzzwwzwwzzwzz~z~~tzzwzwwzz~zzzwwwttppttwttpmiicfccc_fmmtwwwwwwwtppmpmiimmmptmmmppt\96\8f\8f\8f\8b\8b\8b\88\8b\8b\85\88\85\85\85\85\81\85\81\81\85\85\85\88\88\92\8f\92\92\96\92\92\92\96\96\99\9c\99\9c £ \9c §ª§§ª±±´´´¸±ªª£££ §ª±±±ªª£§ £ \9c \99\99\9c\9c\9c £§ª±´¸»»¾¾¾¾¾»»¸´´±±ªªª§§\9c\99\92\8b\85~\81~~\81\81\88\88\8b\88\88\88\8f\8b\92\96\96\96\96\96\96\96\96\96\96\92\96\92\8f\96\8f\8b\96\85\85\85~~zzwzwwtwpmifc___c________cptwtpppmiifffffcimppwtwww~\81\85\8f\81±±ªª§ £ \9c\9c ££ £££££\9c\9c\99\99\99\92\96\92\8f\8f\85\85\85\81\85~\81~\85\85\85\88\81\81\88\8b\88\85\88\81~zzw~zw~\88\88\92\96\92\96\92\96\96\92\8f\8f\8f\8f\92\96\99 \9c££ ££§\9c\99\9c\8b\88~wwttpptptpmmpiffcc_\_URKKDAA=:==:=DGGDDDDDD:ADDGKKKUURURciftmppmmmpppttztp\81~\81\85\81\81\81~\81\81\85\81\81\81\81~~z~~z~\81\81\81\85\88\85\8b\8f\92\96\96\96\99\96\99\96\92\88\85\85\85\81\81\81~\81\85\81\81\81~~wzz~wwtptpppptwtzzzz~\85\88\88\88\88\8b\8b\8b\88\8b\8b\8f\8f\8f\88\88\81~~tiicc\XXRRRURRRRUUUXUtw_mfff_f_N\U\\\c__f__cc_fffffiiifmRifm_\\ifK___f_c\\_U\XUKDUNNKG=A:6=::6:36300,0,30600),)%))%""\1f")))))))),,,,,,,,0,,,,,,,,000033330,,))%""\1f\1f\1f\e\e\18\18\14\ e\11\11\11\14\14\14\14\18\18\e\e\e\18\18\18\14\11\11\ e\ e\ e
+\a\a\a\a\0\9c\99\99"UXUX\___\__ccccffiiifffimmippwwzzwzwwzwwwwzw~~wzzzzwwz~\81~zzwzwwtpptptttppmicifffcipptzzwwwzttppmmmimmiiptpmpttw\96\92\92\8f\8b\88\8f\88\8b\88\85\85\81\85\85\85\81\85\81\81\85\85\88\8b\8b\96\92\92\8f\92\92\92\92\96\96\99\99\99 \9c £§§ªª±±´´¸´¸»´±±§ª§££ª±±±´±±±ª§§£§£\9c\9c£\99\99\9c\9c £§§ª±±¸¸»¾»¾¾¾¾»´±±§§§ £\99\8f\88\88\85\81\81\81\81\85\85\88\8b\8f\8b\88\8b\8f\8b\92\96\96\99\99\96\92\92\96\92\92\92\92\8f\92\92\8f\8b\96\85\81\85zzzwwwzwwtmpfi_c_c___\\\__\cfpttppppiifiiiifmmmtwtwz~\81£´\92\88±±ªª§£ \99 \9c\9c\9c\9c \9c\9c\9c\9c ££ ££ \9c\99\96\96\96\8f\92\8f\88\8b\85\81\81w\81zwz\81\81\81\85\85\81\88\8b\88\88\85\81\81~~w~zw\85\8b\8b\96\96\96\99\92\96\92\92\8f\8f\8f\92\92\99\96\9c £\99\92\99\88\85~wtmppppppmmmmfffcc__\URKGDA==:=:=ADGKGGDDGG=DGDGGKGNGNRRR\cpmpmmmpptptpwwz~\81\85\88\85\85\85\81\85\85\88\85\85\85\81\81~z\81~~\81\81\85\85\88\8b\88\8f\8f\92\92\96\92\99\96\99\96\92\88\88\88\85\85\81\81\81\85\85\81~\81~ztwzzttptpmmmmptpwzwz~\81\88\88\85\85\88\8b\8b\8b\8b\8b\8f\8f\8f\85\8b\81~ziicc\XXXUUUURRRUUUU\Upt_iccf_f_R\R\_\f_\c_\cf_cfccffiifmRfci\\XRcG\__c_c_X_X\\XKGUNRNGAA=::6::63633300033300,,,))%%""\1f")))))))),,,,,,,,0,,,,,,,,00000333,,,)))%"""\1f\e\e\18\18\14\ e\11\11\11\14\14\14\14\18\18\e\e\e\18\18\18\14\11\11\ e\ e\ e
+\a\a\a\a\ 3\9c\99\9cUUXRX__c__cccffffiimiiifimmmppwwwzwwzzzzwwzzz~~zzwz~zzz\81\81~z~w\81wwtpttmttwtppifiiiffmtttz~wwwzttttmmimmmmmmppptwwz\99\96\96\92\8f\8b\8f\88\8b\8b\88\81\81\85\81\85\81\85\85\85\85\85\8b\8f\8f\96\92\96\92\96\92\92\92\92\96\99\9c\9c \9c£££ £§§ª§±´±´¸¸»»¸´´±±ª§§ª´±±±ª£§§§ \9c£\9c\9c\9c\9c\9c ££§±±¸¸»¾»¾¾»¾»´±ª§§£ £\9c\96\92\8f\8b\8b\85\85\81\81\85\88\8b\92\8f\92\8b\8b\8f\8f\8b\92\92\92\96\96\99\96\92\96\92\92\92\92\92\96\92\8f\8f\96\81~\81wzwwzzzzwtptiicccf_\\\_\\\U_cmpppppmmmimiiiimmptttzz\81 §±ªª§§§ \9c\9c\99\99\99\99\9c\9c\9c\9c\99\9c £ \9c\9c\99\96\92\92\92\8b\8b\88\85\85\81wtwtwtt~~\81\85\81\81\85\88\85\88\85\81\81z~z~zz\8b\8f\92\99\96\96\99\92\92\92\8f\8b\8f\8f\96\92\96\96\99\9c\9c\9c \9c\9c\9c \96\8f\8b~zztmmpmmpmmimmiffffc_c_URKKDA======DGKNGGGGDGADGDDGGDKGKKNRXX\immmmmpttwmtz~\81\85\85\88\88\88\88\85\88\85\88\88\85\85\85\85\81~\81~\81\81\81\85\88\88\8b\8b\8f\8f\96\96\92\92\99\96\99\96\96\88\8b\88\85\85\81\81\85\85\85\85~~~wptztptipmimimcpmtwwzz~\85\88\85\85\88\8b\8b\8b\8b\8b\8f\8f\8f\85\88\85zwfmfc\\XXUUUURRUUUUX\Xipcf_cc_c_U\U\__fcXc\Rff_cc_ffciffiU__UXXXRRAX\\_\__X_UX\\NKRKRRKDD:==:::666630033333,3,,0)))%""\1f")))))))),,,,,,,,0,,,,,,,,00000003,,,)))%%%""\1f\1f\e\e\18\ e\14\11\11\14\14\14\14\18\18\e\e\e\18\18\18\14\11\11\ e\ e\ e
+\a\a\a\a\a\9c\99\9cURUUU_\__cccfifiiimmmmiimmmmpttwzzzzzwzzwwzzz~zzzzwz~z~\85~\81\85\81~\85~wtpttpttwtptmiimiiimtwwzzwwwzttwpmmimmmmpmppttwzz\9c\99\99\96\92\8f\8f\88\8b\88\88\81\81\81\81\85\85\85\85\88\88\88\8b\92\92\96\92\96\96\96\96\96\92\96\96\96 \99\9c £ £££ª§±±±±¸¸¸»»¸´±±±ªª±±±±±ª§ ££§ \9c \9c\9c\9c §£ª±¸¸¸¾»¾¾»¾»±ª§££ \9c\99\92\92\8b\88\8b\85\85\85\8f\88\8f\92\96\92\92\8f\8f\92\8f\8f\92\8f\96\92\96\96\99\96\92\92\8f\8f\92\8f\92\8f\8b\8f\92~~~zzwzzzwwtptwmmffccc_\\_XX\U\\fcmmmpmmmmmiimimmmtww~~\85£ª±ªª§££££ \99\99\96\96\99\99\99\99\9c\99\9c\9c\9c\9c\9c \9c \99\96\92\8f\8b\85\88\88\85\81\81~wttptppzz~\81~\81\81\88\85\85\85\81\85z~\81~~~\8f\8f\96\96\99\92\99\92\92\92\8f\8f\8f\8f\96\96\99\96\96\9c \99\9c\99\9c\99\96\92\8b\85zzzpmmpiimiifiifffiff__\URKKDDA=:===DGNNKKKGDGDGDDADGADDGDKNUUXfiimimmtttmwz\81\85\85\88\85\85\88\85\85\88\85\88\88\88\85\85\81\81\81\85~\81\85\81\85\88\88\8b\8b\92\8f\96\96\8f\96\99\96\96\92\96\8b\88\88\85\88\81\81\85\85\85\85\81zzwtpwpttfppmmmmfmitttww~\85\88\85\88\88\88\8b\8b\88\8b\8f\8f\8b\85\88\85zwfmif_\\\UUUURUUUUUX_\ipcf\cccc_XXX___fc\cXRfc_ffciififc_R_\UUNUNNDKXXX\\\\\RXX:RGNGURNGGAA=:=::::6000666663360,,%))%"\1f")))))))),,,,0,,,0))),,,,,00000000,,,)))%%%%""\1f\1f\1f\e\18\14\14\11\14\14\14\14\18\18\e\e\e\18\18\18\14\11\11\ e\11\ e
+\a\a\a\a\ 3\9c\9c RRUXX\_\___ffiiimmpmmimmpmmptttwww~zwwzzwzwwz~zz~zz~~~\81\88\81\85\88\85\81\88\81wzttppptwtttpmmiiimptwz~wwzzwtpwpmmimpmmpptttwzzz \96\99\99\96\8f\92\8b\8b\88\85~\81\81\81\81\85\85\88\88\88\8b\8f\92\92\96\96\96\96\99\96\96\96\92\96\99\9c\9c\9c £§£§§§§ª´±´¸¸»¾¸¸´´´±±±´±±ªª§ª££ £ \99 \9c\9c\9c\9c\9c §§ª±±´¸¸»»»¾»¾¸ª§ \99\99\9c\92\92\8f\8f\88\85\88\88\88\8f\92\92\92\96\99\96\96\92\92\92\8f\92\96\92\92\8f\96\96\96\96\8f\8f\8b\92\92\8f\8f\8f\88\8b\88zzzzzw~zzzzwttwpmmiffcc\\\XXXU\\_\ciimpmmiiiipmmppwwz~\81\85§ª±§ª£££ \9c\99\96\96\92\96\96\96\96\99\99\9c\99\9c\9c\99\9c \9c\9c\96\92\8f\85\88\85\85\85\81~~wttpptptz~z~~~~\85\81\81\81\81\81z\81\85\81~~\92\92\99\99\99\92\96\92\96\8f\8f\8f\8f\92\92\96\96\92\92\99\9c\96\99\96\99\96\92\8b\85\81z~ztpmmffiffcffiffffc_\XRRKGDD=:=:==ADNKKGGDDDADAAAADAAADDKKKRUcfimfpmttpmwz\85\88\88\88\85\81\85\85\85\85\88\85\85\85\81\85\85\85\85\88~\85\85\81\85\88\88\88\8b\8f\8f\92\92\8f\96\96\92\92\92\92\8b\88\88\88\8b\85\85\85\85\85\81~~zwtpwtttmmpimmifmipttzw~\85\88\85\8b\8b\8b\8b\88\88\8b\8f\92\8b\81\85\85zzimmic\\\XXUXUUXUUXX__fm_i_cc__\\\X\\_cc_cXRc_ccfcmfiifc_N_\RRNRKDDNURUXUXXXNUN:NDKDURNKGDAA:A=6:::30:666:663:300%)%%""%)))))))))),,,,,,0,)))),,,00000000,,,))))%%%%""\1f\1f\1f\e\18\18\14\14\14\14\14\18\18\e\e\e\18\18\18\14\11\11\ e\14\ e
+\a
+
+\a\ 3\9c\9c RRUX\__\__cifiimmptppmmmppmptwwtww~zwwwzwztzz~~z~~~~\81\81\81\85\85\88\8b\88\8b\88\85w\81wttpmpwtwttpimmmmpwwwzzzzzwtttmppiptmptttwttzzz\9c\96\99\99\96\8f\92\8b\8b\88\88~\81\81\85\85\88\85\88\8b\8b\8b\92\96\92\92\96\96\96\99\99\96\96\96\96\99\9c ££ª§ªªªª±´´¸»¸¾»¸¸´±±±±±±´´±±§§ ª§££\9c\9c \9c\99 \99\9c\9c\9c\9c §§ª±´¸»»»¸»¸»´ª \9c\99\96\99\92\92\8b\8f\8b\88\88\8b\8f\92\96\96\96\99\9c\99\99\92\8f\92\8f\8f\92\8f\8f\92\92\96\92\92\8f\8f\8f\8f\92\8f\8b\8f\8b\8b\85~zz~zz\81zzzwwtwwtppiifcc_\_\\UU\XUX\c_immmmmmmpppptzz~\85\8f\99§ªªªªª§ \9c\99\99\92\96\92\96\96\92\92\96\96\99\99\9c\99\99\99\9c\99\99\8b\8b\8f\85\85\81\81~~~zwtppmpptwzwzzzz\81\81~~\81~w\81\88\85\81\8f\96\96\9c\99\9c\96\96\96\96\92\8b\8b\92\8f\92\92\99\8f\8f\96\92\92\8b\92\96\92\8f\8b\85z~zztpmmific__ffmfcffc_\URRNKDGD=A==A=AKGGDDAAD=A====AAA=DGGKKNN_iimfmiptimzz\88\8b\88\88\85\81\85\85\81\85\85\81\81\81\81\85\85\85\81\85\81\81\88\85\85\85\85\88\8b\8b\8f\8f\92\8f\92\92\92\96\92\8f\8f\88\8b\88\8b\88\88\85\85\85\81z~zwwtwtptpmpmmifciimppzzz\85\85\85\8b\8b\8b\8f\8b\88\8b\8f\8f\8b\85\85\81zwiimfc_\\\XX\XXUUXXX\_fi\fccc__\_X\X__c__c\UcXc_c_icffc__X_XRRNNGGGRGRRUUXUUKGG:KA:GRUNKDGDDAAAA=:=3:=:::=::6=030))%%%"%)))),)))))0)00,,0,)))))),00000000,,,))))%%%%"""\1f\1f\e\e\e\18\14\14\14\14\18\18\e\e\e\18\18\18\14\11\11\ e\14\ e\ e\a\a\a\a\a\9c\9c RRXX\c__ccfifiimiptpppimttptttwtwwzzwwzzwwwz~z~~\81~~\81\81\81\81\88\88\88\8f\88\99\88\88\85\88ztwtmpttwttpfmmmptwtwzz~zzwwwtpppmttpttttwwtzzz \99\99\96\92\8b\8f\88\8f\88\8b\81\85\81\85\88\8b\88\8b\8b\8f\8f\92\96\96\96\99\99\96\9c\99\96\99\99\96\99\9c\9c \9c £ §ª£ªª±±±¸¸»¸»¸´´±´´´±±±±ªªª§§ §£ \9c\9c\99\9c\99 \99\99\9c\9c £§§ª±´¸¸¸¸´´´±±§ \9c\9c\9c\92\92\92\92\8f\92\8f\88\88\92\92\96\99\99\99\9c\9c\99\96\96\8f\8f\8f\8b\8f\8f\8b\8f\8f\92\92\8f\8f\8b\8f\8b\8f\8f\8b\8b\8b\88\85\81z~\81~~\81~zztzwwttttmmiifc__\\RUXXXXX\\ciiiimmmpmttw~z\81\88\99§§§§ªª§ \9c\9c \99\9c\99\96\92\8f\96\92\92\92\92\92\96\96\99\99\99\96\99\99\8f\8b\88\8b\85\81~~z~zwwtmpmppttwwwwzw~~zz~zt~\88\88\85\92\99\9c\9c\99\99\99\96\96\96\92\8b\8f\92\8b\92\8f\96\8b\8f\92\8f\88\88\8f\92\8f\8f\88\81zzwwtpppmff___cficcccc\XUURRKKKGA====:=GADA===A:=:::=6=AAADGGGNK_fiifmfmwfm~w\8b\8f\88\85\81~\85\81~\81\81~z\81~\81\88\85\85\85\85\85\88\85\88\85\88\88\8b\8b\8f\8f\8f\92\92\8f\92\96\8f\8f\8f\8b\8f\8b\8b\8b\88\85\85\85\81~\81zwwwwwmptmpmiffcffimpzzz\85\85\85\8b\8b\8b\8f\8b\8b\88\8f\8b\8b\85\85\85zwiimcc_\\\\\\UUUUUUX\\cf\cccc__G_U\U__cc_c_UcX__cci_ccccc\\URNNRGGGRKNNRRURRADA:DA6GNRNKGGDDDDADA==:=A:=:A6::=,60,%)))%))))),,,),,0)3,003))))),,,0,,00000,,,,,)))%%%""""\1f\1f\e\e\e\18\14\14\14\18\18\e\e\e\18\18\18\14\11\11\ e\14\ e
+\a\a\a\a\ 3\99\9c NNUXXc_cffffimimiptpptmppttwwtwwzzzwwwwwwwt~~~~~\81\81~\81\81\81\85\88\88\88\8b\99\99\99\99\88\8b\81wwzptttwptpfpiipwwwwzz~~zzwtttppmtttwtwwzwwzzz \96\96\92\8f\8b\8f\88\8b\85\8b\85\85\85\88\8b\8b\8b\8f\8f\8f\8f\92\96\99\99\99\99\96\9c\99\99\99\9c\99\9c\9c\9c\9c\9c £§§§ªªª§´´»¸¸»»¸±±´±±±±±±ªªªª§£ £ \99\9c\99\9c\9c\9c\99\99\99 ££§ª±±¸¸´´±´±ª£ \9c\9c\9c\99\92\96\92\96\8f\92\92\8f\92\96\96\99\9c\99\9c\99\99\96\92\92\8b\8b\8f\8b\8b\8f\8f\8f\8f\8f\8f\8b\8b\8b\8b\88\8b\8b\8b\8b\8b\88\81~~\81\81\81~\85~~~wwwwwwttppimifc__\UXU\XUXXX\_ffimpppttwz\81\81\85\8b\9cª§ªªªªª£\9c\9c\99£\9c\9c\96\92\92\8b\92\8f\92\8f\8f\92\8f\92\96\9c\9c\92\92\96\8f\8b\88\88\85\81~zzzztwpmppmpppttztzzzzwwzttz\85\85\88\8f\9c \9c\9c\99\99\96\96\96\92\8f\8b\8f\8b\8f\8b\8b\88\8f\8f\88\88\88\8b\8f\8b\8b\85\81~zwwwpppiifc___cfc____XURRRRNNKKAAAA:::D3==:6:=6:6:6:6:A=ADDGGNK_cffiiffcct\81\85\8b\8b\8b\81~~\81~~~~~z\81z\81\88\85\88\81\85\88\85\85\88\85\85\88\8b\8f\8f\8f\92\92\92\92\92\92\8f\8f\8f\8f\8f\8f\8f\8b\85\88\88\85\81\81\81~wwzwzpptimiiffficimmwz~\88\88\88\8b\88\8b\8b\8b\88\88\8b\8b\8b\85\85\81ztmtmffc___\\\XUUUXXX\_cf_c_cc__G\XXU\__c_c_RcX\_c_i\f\c___XRUKNRGGGRKKKNNRND=AA=A=:GKNNGDDDDGDDGDA=AADAA=D6:=A)3,,)))))))))),,,,,003633000,,))0,0,,3,00300,,,)))))%%%%"""\1f\1f\1f\e\e\18\14\14\18\18\e\e\e\18\18\18\14\11\11\ e\14\ e
+
+\a\a
+\a\99\9c\9cRURU\ccfiffimmimiptpppppttwwwwwwzwwwwwwzwwt~\81\81\81\81\85\85\81\81\81\85\85\85\85\88\8b\99\99\99\99\99\8f\85\88z~tttptppmfmiipwwzwz~z~zwtttpppptptwwzwzwwzzz\9c\92\92\92\8b\88\8b\88\88\88\88\85\85\88\88\8b\8f\8f\92\92\92\92\96\99\96\9c\99\9c\99\9c\9c\9c\9c \9c \99\9c\99\9c £§§§ªª£ªª±±¸´»¸¸´±´±±±±±ª§ªªª££££ \9c \9c\99\9c\9c\9c\9c\9c\99\9c ££§§±´±¸´±±±±±ªª£ \99\9c\9c\99\92\96\96\96\92\92\96\92\96\99\96\96\9c\96\99\96\96\92\92\92\88\8b\8b\88\8b\8f\8f\8b\8b\8b\8b\81\88\88\88\85\88\88\88\88\88\85~z~~\81~\81\85z~ztzttzwttttmpmifc__XXXXXXXURR\_cfipptwwzz\85\85\85 §ª§ªª§§ \9c\9c \9c\99\96\92\8f\8b\8f\88\8f\8f\8b\8f\8f\8f\92\99\99\8f\92\92\8f\88\88\88\85\81~zzwzttpimmimmmppwtwzwwptwttw\81\81w\8b £ \99\99\99\92\96\92\8f\8f\8f\88\8b\88\88\85\8b\88\85\85\85\8b\8b\85\88\85~~zwwwpptmmffc_\_cc_\\\XRURRRNRNKDAA=66:=36:66366636663:A=DDAKKRNccfcmfXf_fw\85\88\8b\88\88\81z~~~~~z~w~w\81\85\85\85\81\85\88\88\85\85\85\88\88\88\8f\8f\92\92\92\92\92\92\92\8f\92\8f\92\8f\8f\8f\8f\8b\8b\88\81\81~\81\81wwwtwpppfiiffcffcimitz~\88\85\88\8f\8b\8f\8f\8b\88\8b\8b\88\88\85\85\81~wpwpiif_c\\\\XUUXX\\\ccf_c_____G\XXU\__c_fcRcX\cc_i\i____\XUUNNNGKGNGGKDGDAA:==:=::KDGKKAGGDGGGKGDNNGKNN=G=DDD)60,),,)),))),,,,,0036:6633300),,03)06,333030,,))))))%%%%"""\1f\1f\1f\e\e\18\18\18\18\e\e\e\18\18\18\14\11\11\ e\18\ e\ e\a\a
+
+\ 3\99\9c\99UXUX_cfiifimmimmmptmppmptwzzwztwwtwwtwwzwww~\81\85\81\85\85\81\85\85\81\85\85\88\85\8b\88\99\99\99\99\99\8b\88\8b~\81wtwpppmmiiimmtzzwzzzzzwttttptttttwwzzzzzwzz\9c\8f\8f\8f\8b\88\88\88\85\85\85\88\85\88\8b\8b\8f\8b\92\92\92\96\99\99\99 \99 \9c \9c\9c\9c\9c\99\9c\9c\9c ££§ªªªª§ªª±ª¸´¸´´±±´±´±±ªªª§ª§£££\9c \9c \99\9c\9c\99\9c \9c £§ªª±±´´´¸´±±±§§£ \9c\99\99\99\92\92\92\96\92\96\96\96\99\96\96\96\99\96\96\92\96\8f\8f\8f\88\88\88\88\8b\8f\8b\88\88\88\88~\81\85\85\81\85~\85\85\85\85~z~~\81~~\81z~wtztwwtpptpmppiifc_\\\\XUXXUNUNXcfpppzzzz\88\88\9c§ªªªªªªª§£\9c \9c \99\96\96\8f\92\8b\8b\88\8b\8f\8f\8f\92\8f\8f\96\96\92\8f\8f\8f\8b\8b\85\88\81~zwwwttpiimmifmmptptwptmtpptpmww\85\9c \96\9c\96\8f\92\92\92\8f\8b\85\88\85\85\81\88\81\81\81\81\88\88\85\85\81~~~zwwpptmmifcc__c_\UUXURUNRRRURNGDDA33600,633333)033:06=ADDDKNUR_fc\icXf\cz\88\8b\8b\8b\88\81~\81zzzzwzwzz\81\81\81\81\85\88\88\85\85\85\81\85\88\85\8b\8f\92\92\92\92\92\96\92\8f\92\8f\92\92\8f\8f\92\8f\8f\88\85\85\81\81\81twwwwppmfficcffccii_pz\81\88\88\88\8f\8b\8f\8f\8f\88\88\8f\8b\85\81\85\81zwtwtmmfcc\_X\XXXXX\__ccf_c_\__\G\\XU_c_ccicRfUXc_\f\icc_c\URRNKKGKKKKGGDDD:::=:::66KGGGKDDGDGDKNKGRRUNRRKKAGGD6:3))0,)),,),,,,,,003::::66603),003,3:0360003,0,,)))))%%%%%""\1f\1f\1f\e\e\e\18\18\e\e\e\18\18\18\14\11\11\ e\e\ e
+\a\a\ e
+\0\99\99\99X\XX_cfiifimmmmmmmpppmppptwwwwtwwwwtpttztww~~\85\81\85\85\85\81\85\85\85\85\88\85\88\88\99\99\99\99\99\8b\88\8f\81\81zwztppmmmifmmtzzwzzzzwwwwttpwwwwtwzzzzzwwzz\99\8f\8b\8b\8b\88\88\88\85\85\85\88\88\88\8b\8f\8f\8f\96\92\96\96\9c\9c\9c \9c £££\9c£ \9c\9c\9c\9c ££§ª§ª§£ªªª´±¸´±ª±±±ªªª§£§££ § \99\9c\9c\9c \9c\9c £§ª±±´´¸»´±±ª§§£\9c\9c\99\99\9c\96\96\96\96\96\96\96\96\99\99\96\92\96\92\92\8f\92\8f\8b\8b\88\85\85\88\8b\8b\88\88\81\81\85zz~\81~~z\81\81\81\85~z~\81\85zz~~zzpwpttptmpmpmmifffc\__\\XUURKNNNR\\ptwz~z\85\8b§ªª±ª£§\99 \9c\96\92\96\8b\8f\8b\88\88\8b\8b\8f\8b\8f\92\8f\92\92\92\92\92\8f\8f\8b\88\88\85\81~wzwtwtpmmpffmipmpptppmtpppmittp_£ \9c\99\99\96\92\92\8f\92\8b\88\81\81~\81z~~~z~\85\85\85\81\81~~~zwwpppmmiiff_\_\XRRRURRRRRUURRKDDA60,,,,0,0000),33636=AADKNNXR_ccX_XXfcc~\8b\8f\8b\8f\88\81\81\81wzwzzwwwz~~~\81\85\88\88\81\85\85\81\85\88\88\88\8f\92\92\92\96\96\92\92\92\92\92\92\92\8f\92\92\92\8f\8b\88\85\85\81~tzwzwppiicif_ffccif_pw~\88\88\8b\8b\8b\8b\8b\8b\8b\88\8b\88\88~\81\81~zwzwpmifc__\\\\XXU_cfcciccc\__\_\_X\c_cffifUiUXcc\f\f_f__XRNNNKGKKKDGDGAAA:::=:=:::GGGKGGDGDGAKNNGRRXRUUNNDKKG::3),3,,,00,,,,000003:=::3:636,03363663360,00,0,,)))))%%%%%"""""\1f\e\e\e\e\e\e\e\18\18\18\14\11\11\ e\e\11\ e
+
+\11
+\ 3\99\99\99\_\\_cfiiiiiimimimmpppmtttwwttpttwtptttzwwwz~\81\85\85\85\85\81\81\85\85\88\88\88\88\88\99\99\99\96\96\8b\88\8f\85\85zzwwtpmmifiiiwzzwzzzzwzwzttpwwwwwwzzzzzwz~z\96\8f\88\8b\8b\88\88\85\85\85\85\88\8b\88\8b\8b\8f\92\96\92\99\99\9c\9c\9c\9c £ £ §££ \9c\9c ££§§§£§ªª´±´´ª§ªªªª§§££§££§ \9c\9c\9c\9c\9c \9c\9c £££§ª±±±¸¸¸¸´ª§§££ \9c\99\99\99\96\96\96\96\99\92\99\96\96\99\96\8f\92\92\92\8f\8f\8f\8b\88\85\85\85\85\88\88\85\85~~ztptwtzwz~\81\81~~\81\81\81z~zzwwmtmpimpimipiifcfcf___\\URRNGKNNNU\mtwwzz\8b\8f±±±ªª§ \9c\99\92\8f\96\8f\8b\88\8b\88\8b\8b\8b\8f\8f\92\8f\8f\8f\8f\92\92\8f\8f\8b\8b\88\85\85z~~wzzwtpmmifmmppppppppppmmicpim_ \9c\96\99\92\8f\92\8b\8f\88\81\81~~zwwzzwz\81\81\81\81\81\81~zzwtppppmmmii_\\URRRRRRNURUUXRRNAA=3),)),,,,,0)))0366:=ADGNKUXU__cX_UXff\8f\81\8b\8f\8b\8b\85\81\81~wwtwwwztz~~~\81\81\8b\88\81\85\85~\85\85\88\88\8f\92\92\92\92\96\96\96\92\92\8f\92\92\8f\92\92\92\8f\8b\88\85\81\81~wzwwtpmmfciccfcfcifcpz~\88\85\88\8b\8b\8b\8b\88\88\85\88\88\88\81\85\85\81~z~zptmfff___\XX__imiiimcc__c__\_cc_ccffifiXfUU_c\ificc__UNNNKKGKGGDDGD===::::::::=GDDKGGDDDGAGNKKRNURRUNNGKNK==6,,600000,0,,,30306==::6::660336666:0363,300,,,)),))))%%%%%"""\1f\1f\1f\1f\e\e\e\e\18\18\18\14\11\11\11\e\ e
+
+\ e\ e
+\a\99\9c\99__\_cffffififmfmimmpppmpppwtptpppttppttwwwwz~\81\85\85\81\85\81\81\81\85\85\8b\8b\88\8b\96\99\99\92\92\8b\8b\8f\88\85zzzzwpmmfimmmt~zzzzzzzzwzwwtwzzzzwzzzzzz~~z\96\8f\85\88\8b\88\8b\88\85\85\85\88\88\8b\8b\8f\8f\8f\92\96\99\99\99 ££££ £££§£££ \9c \9c £§ªª§§ªª±´´´ª§£ªªªª§§§§£££££ £§\9c\9c\9c\9c\9c £ \9c £££§ª±¸¸¸´´ª§££ \9c\9c\99\9c\99\99\96\99\96\96\99\99\96\96\96\92\92\92\92\8f\8b\8b\8b\85\81\81\85\85\85\85\81\81~zztptttwwzz\81~z~\81~~~zwwtt6D\_DRKfifmcfc_fcfcc_\XRNNKGGKNGR\Xttz~~\8f±±´´´±ª§££ \9c\8f\8f\92\8f\8b\8b\8b\88\8b\88\8f\8b\8f\92\8b\8f\8f\8b\92\8f\8b\8f\8b\8f\88\88\88\81\81\81~~zzwwppifmimmppppppppmiccicp_\9ct\99\96\96\92\8f\8f\88\8b\85~~zzwtwtttww~~\81~~zwwwptpppppmif___URNRNRNKRUUXXRRK==:0))%)),)",,))),06:6=ADKRUX\X\_cX_XXci\8f\81\8b\8b\88\88\85\81~~wwwtwwztz~z~\81\81\8b\88\85\85\85\81\85\85\88\8b\8f\92\92\92\8f\96\96\92\92\92\92\92\92\92\92\8f\92\8f\8b\88\85\81\81ztwttppmmificffccfiiptz~\88\85\88\8b\8b\8b\8b\88\88\85\85\85\85\81\85\85\81~~\81~twtiiiifc\\\cimpmmmpfc\ccc___cfc_ffiiii\iUU_f_miifc__URRKKGGKGGDAD:::::::::::::DDAGGDAGADDKKNNNNRNNRKKDGNGAA6,063030,)0),00,33:AA==:::6633333:363333,0,0,,,,)))))))%%%%%%""""\1f\1f\e\e\e\18\18\18\14\11\11\14\1f\11\ e
+\ e
+
+\ 3\99\99\9c\\\cfffffffiiiiifmmpmpmmmpwptpmpmptptwtwwtwzz\81\85\85\81\85\81\85\81\85\88\8f\8f\8b\8f\96\99\99\92\92\8f\8f\8f\85\85zzzzztpmiimppwzzzzzzzzzzzzzwwz~~zwz~zzzzzzz\92\8b\88\8b\8f\8b\8b\88\88\88\85\85\88\8b\8b\92\92\92\92\99\99\9c\9c££§££££ ££§§§£ \9c£ \9c £ª§ªª§ªª±±´±´´ª§£§ª§§££££££££££ £ \9c\9c \9c £§ªª±´´´±±ª§§£££ \9c\99\9c\9c\99\99\99\99\9c\99\99\96\92\92\92\8f\8f\8f\8f\88\88\85\81~\81\81\81\85\81~~wwppppttwzz~z~~\81zzzwtR3=3=3A=ADKNDi____cccfc__XURNKDGGKGN\\pw~\81\81\92±´±´´´¸´´±±±ª§£\9c\99\92\92\8f\8b\88\8f\88\8b\8b\88\8b\8f\8f\92\8f\92\92\8f\92\8f\8b\8f\8b\8f\8b\88\88\85\85\85\81\81~~zzttpimimimmtmttpmifc__cm_\88t\96\99\92\8f\8b\8b\85\88\81zzzwpptpppttwz~z~zwwwttppptpmif__\URRRNRRKUUXXXNNG::6,))%%%)%"),%))),6=3DDKNUX\\XX\c\c\XXf\8f\8f\8f\88\88\85\81~~~wwwttwwwwzz~\81\85\88\88\85\81\85\85\81\85\88\8b\8f\92\96\96\92\96\92\96\92\92\96\8f\8f\8f\8f\8f\8f\8b\88\85\85\81~wptppmmiiffififcciiittz\81\88\88\88\8b\88\8b\8b\85\85\88\85\85\81\81\81\85\81~~\81\81wzwwmpwifftttwttppptfc\_cc____cf\fciffffmUmcf_piii_\\XRNKKGGKDGAAA::::::::::===AADDGD=GAAANGKNNKNKKNGGADKD==:0333063))0),,0006=A==A=66336360060600030,)0))),,,,))))))%%%%%"""""\1f\1f\e\e\e\18\14\11\11\14\e\11\ e
+\ e\a
+\ 3\9c\9c ____cffffffiimmiimmpmpmmmptptpmmmpppptwwttzzz\81\85\85\85\85\81\85\85\85\88\8f\92\8b\8f\96\99\99\96\92\8f\8b\8b\81\85zwzwzttmmmptttwzzzzzzz~~~z~zz~~~~zz~z~zzzwz\96\8b\8b\8b\8f\8b\8b\88\88\85\85\85\88\8f\8f\92\92\92\96\99\9c\9c §§ª§§§£\9c£ ££§££\9c\9c £§ª§ª§ªªª±´´±´§§§§§££ª£ £ £ £ £ ££ \9c£ £££ªª±±´±´±±±ª§££££ \9c \9c\9c\9c\9c\9c\9c\99\99\92\96\92\92\8f\92\8f\8b\88\81\81~~\81~\81~~~ztpptptwwwwzz~z~wwwfR=0603036=AGGDGU\\\c__c_\\UURKGDGGKKG\ctz\81\88\8b\96´´´¸¸¸»¸¸´´±§£\9c\9c\92\96\8f\8f\88\8b\88\8b\8b\8b\88\8f\8b\92\8b\92\8f\8b\92\8f\8b\8f\8b\8f\8b\8b\8b\88\88\88\85\85\81\81~~wttmpmpmimtpttmpmff___i_it\92\99\8f\8f\88\88\85\85zzzwtmitpmpmptz~z~~wzzwtttptpmmfc_\URRRKNRNUXXXUKKA:30)%)"%")""))")%))3:=GGNRX\\\U\X___\cXf\8b\92\8f\85\88\85~~~zwtwtwwtwtwwz\81\88\88\88\85\81\85\88\85\85\88\88\92\96\96\99\96\96\96\92\92\92\92\8f\8f\8b\8b\8b\8b\8b\88\85\85~~wppmmfimiicffifffiiipw~\81\88\88\88\8b\85\8b\88\88\85\85\81\81\81~\81\85\85~~\81\81z~zzzzzw~wwwwzwwwpttff_c_c__\\_c\c_icccimXpcffpiffc\XUNNKKGGGGGADD=:::::========ADDGDAD==DKGGKRGKAGKDDAA::::63306,30))0,),,0,6:=::=:66066030,3,3,,000,),)))))))))))))))%%%%%%"""\1f\1f\1f\1f\e\18\18\14\14\e\ e
+\a\ e
+
+\a\9c\99\9c_\__ffcfffcifiimimpppmpmmppppmimmpmmpptwtww~~\81\85\85\88\85\81\85\85\81\88\8b\8f\8b\8b\92\8f\96\92\92\8f\8f\88~\85zwwwztwptptttpwwwzz~~z~\81~z~z~\81~\81\81~z~zzzzzwz\92\8f\8b\8f\8b\8b\8b\88\88\85\85\81\88\8b\8f\96\96\96\99\9c ££ªªª§ª££ \9c £££ \9c £££§ªªªªª±´¸±´´±ªª££§£§§££§\9c £££££££ ££§§´±±±±±±ª§£§§§ £ £ \9c\9c\96\96\92\96\8f\8f\8f\8b\88\81\81~\81~~\81~~~ztttttpwtwtwwzwzttUA::00,3006:=DADGGNUX_\__\XXRRNKGDGDGGG\wt~\85\8b\8f\96¸¸¸´¸»¸»»¸¸±±£\9c \96\99\92\8f\8b\8f\88\8b\8b\8b\8b\8b\8b\92\8f\8f\92\8f\92\8b\8f\92\8b\8f\8f\8f\88\88\88\8b\88\85\85\85z~wzwptmmpiptttpmpiic_ccfcmt\96\96\8b\8f\88\85\85\81zwwwtpipmmpmppw~wzzzwwwttwptpmmic\XXRUUNRUNRXXXUK=:600))%\1f"\1f%%%%%"%%%%06AKGRU\__\X\X\__\\85Xf\8f\8f\8b\85\88\85zz~zwtwtwwtwtwzw\81\85\85\85\81\85\85\88\85\88\8b\8b\92\96\92\96\96\92\96\8f\92\8f\92\8f\8f\8b\88\88\88\88\85\81\81~~wtpmmifmficiiffiiipttzz\81\88\85\88\88\88\8b\88\88\81\85~~\81~~\81\81~z~\85~\81~~~~~z\81zzzzzzwztttiicf_c__\U\__c\fc__imfmfiimmiff_XUNNKKGGGDGAADA=============ADADDDDAADGDAGNAK=6DAA==::66630,3,00),,0),,,,36:66:6:6)66300,,00),,0,)))))))))))))))))))))%%%%%""""\1f\1f\e\e\e\e\e\ e
+\a
+
+\a\a\9c\99\99\X\ccffccffiiffmiipptpmppppppiiimpfmmppttww~\81\81\85\85\88\88\85\85\85\81\85\88\8b\8b\88\8f\8b\92\92\92\8f\8f\88~\81~twtwtwtwttttptttzz~~z~\81~~~~\81\81\81\85\85\81~\81z~z~zwz\8f\8f\8f\8f\8f\8f\8f\8b\88\88\85\85\88\8b\8b\96\99\99\9c £§§ª§ª§§ £ \9c\9c £ £ £££§§§ªªªª±´´¸±¸´ª§§£££££££ ££ £ \9c£ £ §§ª±±±±ª§§ªª§£££££££££££ \99\96\96\96\92\8f\8f\88\8b\85\85\81\81~\81\81\81~\81zwttwtttptppmwpppmR:6300)0,066:AAAGGNRU\X\UXXURRNNGGGDGGR_tw\81\8b\8f\8f±´¸»¸»»¸»¸´¸´´±§ \99\96\92\8f\88\8b\8b\8f\8b\8f\8f\8b\8f\92\92\92\92\92\92\8f\8f\8f\8b\8f\8f\8f\8b\8b\88\8b\8b\88\85\85~\81z~wttpppiptwttppmfc\__fcmp\92\96\8f\8f\88\85\81\81wtwzttimmppimptzwwzzwztwpwptppiic_\\RUUNUXUUX\XXG:63,0),%"%""%%"%")%%%06DKKUXX_c_\_X\__\\88Xc\8b\8f\8b\88\85\81~zzwwpwptwtttzzz\81\88\88\85\85\81\85\85\88\88\8f\8f\96\96\92\96\96\96\92\8f\92\8f\8f\8b\8b\8b\85\85\85\85\81~~~zttmimmiiffcimiiimitwtzz\81\85\85\88\88\88\88\85\85\81\81\81~\81~~~~zz\81\85~\81~\81~\81\81~\81~z~zz~z~wtwiiff___\\U\\__Xc_\ciiiiimmmiffi_\URNNKGGGDGA=A===============AADDDDAAA6DADK=GA:====:6:63303,0,,0,),,))00033636:366,3333,0),,),),)))))))))))))))))))))))))%%"""""\1f\1f\1f\1f\1f\1f\18\14\14\11
+\a\ 3\99\96\99\UX__cfccffiiiimmmmpwtpppppmmimfipimpppttww~\81\81\85\85\88\88\88\88\88\85\85\88\88\88\85\8b\88\92\96\92\8f\8f\88\81\81~wzwzwwtzzwtwttwwzw~z~~~~\81~\81\85\85\85\81\85\81\81~zzzzzwz\8f\8f\8f\8b\8f\8f\8b\8b\8b\88\88\85\85\8b\8b\99\9c\99 £§ªªªª§§ \9c \99 \9c£ ££ §§£§ªª§ª±´¸»´»¸±ªª§£ ££ \9c\9c £\9c \9c \9c \9c §§ªªªª±±±±±ªªª§§§§§§§§§§§££\9c\9c\96\96\96\92\92\8b\8b\88\88\85\85\81\81\81\81~\85~zwtwwttpppmmmppm=A30,00),,036:ADADGKKNRURRNURRRNKKKGDKKUcpz\85\8f\96\92´±¸¸´¸»¸»»´»´±´ª££\99\96\96\8f\8b\8f\8f\8b\8f\92\8f\8b\92\8f\92\92\96\92\92\92\8f\92\8f\8f\8b\8f\8b\8b\88\8b\8b\8b\88\88\81\81~\81wwttttpptwwwmmicc\_\cfmp\8f\92\8b\8f\88\88\85\85twzwwpmmmppimmpwwtwwtwwwpttttpmmf__\XXXRUXXX\\UUG=6300,,)%)%\1f)%")%)%),3:GNRXXX_c_\__\ccp\8bX\8f\8f\8f\8f\88\85~zzzttptptttttwz~~\85\85\81\81~\85\85\88\8b\92\92\92\96\96\96\96\96\92\92\92\8b\8f\8b\88\88\81\81\85\81\81w~zzppmmmmmmiifimimimmwwwwz~\85\81\88\85\85\88\85\85~~~z~z~z~zz\81\81\81\81~\81~\81~z\81zwzz~~~~zwwmiif__\XXXX\__X_\\_fiifiiimifcf__RNKKKGGDDDD==================DAADDA=D:A==A=DA6=::=06:6,0,0,,000,)00,)0333,,03606300)00,,),)%)%)))%%%%%))))))))))))))))))%%%%%%%"""""\1f\e\e\e\18\11\a\ 3\0\96\96\X\_ccfcciiimmimppptttptppmmmfiimmimmppttwt~~\81\85\85\88\85\88\88\88\88\85\88\88\85\85\85\85\92\96\96\8f\8b\88\85~~z~zzzzw~~zwwwwwzzw~w~~~~~~~\85\85\85\81\81~~z~zzzzw~\8b\8f\8f\8b\92\8b\8b\8f\8b\8b\88\85\88\8f\8f\96\9c\9c££§§ªªª£ \9c\9c\9c£ £ ££§§§ªªªª±±±¸¸¸¸¸»±§§££ \9c\9c \9c\9c \9c£\99 \9c\9c\9c\9c\9c\9c\9c\9c\9c\9c\9c\9c ££§ªªªª±´±ªª§§§§ª§§§ªªª§§ \99\99\99\92\96\8f\8f\8b\8b\88\81\85\85\85\88\81\81\81~wwztttmpmmpimmi:0),,,,,),,33:=DADGGGDKNKKKURRRNKKKGGKNUctw\81\92\99£´´´¸¸¸»»¾»¸¾¸´´§§ \99\96\8f\92\92\8b\92\92\8f\88\8f\8f\8f\96\99\92\96\96\8f\96\92\8f\8f\8f\8f\8b\8b\8b\8b\8b\88\8b\85\85\81\81zztwwtttwztwpif\___U_fmp\92\8f\8b\8b\8b\8b\88\85wwwwwtppmpmimipttpttpttttwttttpmic\\\\XUXU\\\\URD=33000)))%"%))")%)%)066KNU\_cccc_cc_ic\85\8b\\8f\92\8f\8b\8b\85z~zwppptpptpttwzzz\85\81\81~~\85\85\88\8b\92\96\92\92\96\96\92\96\92\92\8f\8f\8f\88\88\88~~\81\81\81z~wzpmmpmpmmmmiiimmmmpwwwwwz\81\81\85\85\81\85\81\85~z~wzwzw~zz~~~~~~~~~z~zwz~~~\81~zzwmiicc_XUUXU\_\\\U\\cffciffiffccccXKNKGGGDDDDAAAA=============AAAAAAA=A===:::=A3:=6:3363,)0,,,,,0))00,,030000,03030,,),,,)%)%"%""%%%%%%%%))))),,,,))))))))))%%%%%"""""\1f\1f\1f\1f\e\18\18\11\11\0\96X\\\cccfcfiimpiptttwwtppmmimififmpmpmpmtttwz~\85\81\85\88\88\88\88\85\8b\85\88\88\85\85\81\81\8f\96\96\92\88\88\88~~~~zzzzz\81\81~zwzzzzzwzw~~~~~\81~\81\85\81\81~~zz~zzwww~\88\8f\8b\8f\8f\8f\8f\8f\8b\8b\8b\88\88\8f\92\9c ££§§ªªªª££\9c \9c\9c \9c \9c §§§§ªªª±±´´¸¸»´¸»´ªª§££\9c \9c\9c\99 \96\9c \9c\9c\9c\99\99\99\9c\99\9c\99\99\99\9c £§ªªªªªª±ªªªªª§ª§ª§§ª§ªª££\9c\9c\99\96\99\92\8f\8b\8b\8b\85\85\85\85\8b\88\8b\85\81zzzwtwptmpmimif60,)),,))),006:A=AGDGGGDDGGRRRNNKKKGGKNU_tt~\8f\9cª´¸¸¸´¸¸¾»¾»¾»´´ªª§££\9c\99\92\96\92\92\92\92\8f\88\8f\8f\8f\99\96\96\99\96\92\99\96\8f\92\8b\92\8f\8f\8b\8b\8f\8b\8b\88\85\85\81~ztwzwwtz~wttfc\__\X_cmp\8f\8b\8b\8f\88\88\85\81zzwztwpppmiimmpppmppmpppptttwtpmif_____X\X_\\\UND=3300,),)"%))%0)))),3:ANNX_cffffiff_tc\88\88\\92\8f\8b\8b\88\88z~wttpmtppttwttwzz\81~\81~~\85\85\8b\88\92\92\92\96\96\96\96\96\96\92\8b\8f\8f\85\88\85~~\85~~~~wztimpmpmimmmmmmmpmttwwwtz~\85\81\81\81\81\81\81\81z~zzzwwzwwzzzzzz~zzwzzzzz~~~~~zwiii_c_XXXXXX\XXXU\\Rcfcfcc\cc___f\KRGGKKGDDDDDDAA===AAAAA=====ADAA=AAA==:=:::=%::666333),,,,),,,)),00)300030,,,030),))0)%"%%\1f\1f\1f\1f"%%%%%))))))))),,,,,,,)),,,)))))%%%%"""""\1f\e\e\e\e\e\11X\X__cfffffiptmpttwtwwtmmmfiififmpmpmpptptwz~\81\81\85\88\88\85\85\81\88\85\85\8b\85\81~~\8b\92\96\8f\88\88\85\81\81~\81zz~~z\81\81~~w~z~zzw~w~~~~z~~\81\81~\81~zzwzwwtzw\81\8b\8b\8b\8f\8f\8f\8f\8f\8f\8b\8f\88\8b\92\96 £ §£§£§ª§ª§§§ \9c \9c \9c£ª£££§§ª´´¸¸»¸»¸»¸´§ª££\9c \9c\9c\99\99\9c\9c\99\9c\9c\9c\9c\99\96\99\9c\9c\96\99\96\96\9c\99\9c £§ªªªªªª§ªªªªªªª§§ª£§§ªªª££ \9c\99\99\92\8f\88\8b\8b\88\88\88\8b\8f\8b\8f\8f\85\85~~zwwtpmpmiifA3,,,)))%%%,0,36=:DDDDDADDGDNRRNNKKKKKNRX\pm~\85 ¸¸»¸¸¸»»¸¾»»¸¸±§ªª§£ \9c\96\99\96\96\96\8f\8f\8b\8b\8f\8f\96\96\99\99\99\96\9c\96\92\96\8b\92\8b\8f\8f\8f\92\8f\8b\8b\88\88\81\81zwwwzzw~~zppf___\_X_cmz\8f\8b\8b\8b\88\88\88~~~zzwwtpppiimmppmfmmimmmmpppwttpmiccccc\_\_\\\UKG:66030,,,%)0,%3),,,,3=DKU\ffmtm\81mifczw\8b\88_\8f\8f\8b\8b\88\88~~tpwtmtppttwwttzz~~\81\81\81\85\88\8b\88\8f\8f\8f\96\96\92\92\92\96\92\8f\8f\8b\88\88\85\81~\85z~~~zwwmptptpmpmppppppptpttwpw~\81\81\81\85\81~~\81w~zzzztzttwwtwwwzwzwzzzzz~\81~~zwziffc_\UXUX\\\XX\X\_N_ccc__\c__U\f_NUGGNNGDDGDDAAAAAAAAAAA===A==AAA=AA=AA:A==::0::6,3030),),,))),),0,,,6,0,03,,,,0,%)%),%"\1f""\e\e\e\18\1f""""%%)))))))),,,,,,,,,000,,,,,)))))"""""\1f\1f\1f\1f\1f\eX\X\__cfffiitpptttwwwtpipmffiimimpptppppptwz~\81\81\81\88\85\81\85\81\85\85\85\8f\85~~~\88\8f\99\8b\88\88\85\81\85~\81z~~\81~~\81~\81z~~~zzwzw~z~~zzz~~~~zwztwtttzz\81\8b\8f\8f\8f\8f\8f\8b\92\8f\8f\8f\88\8f\96\99£§ £££§£ª§ª§§§£ \9c \9c ££ £§§§§£§ªª±±´¸¸»»»¾¸»´¸±ªª \9c\9c\9c\9c \9c\99\9c\9c\99\99\9c\9c\99\9c\99\96\9c\99\96\96\96\96\99\99\9c ££§§§ª§§§§§ªª±ªªªªªª§ªª§§ª£ \9c\99\9c\96\92\8f\8b\8b\88\8b\88\8b\8f\92\8f\92\92\8b\8b\81\81zwwwpmpmiif60,)))%%"""),)0006AADDAAAADAKNNNKKKNKKNRXXmpz\85£±¸¸¾¸»»»¸»»¸»´´£§ª£££\9c\99\9c\99\99\92\8b\8b\88\88\8b\92\92\96\99\99\9c\99\9c\99\96\96\8f\92\8f\8f\8f\92\8f\8f\8b\8b\8b\85\85\81~zwzzzz~~wpmi__\_\Xc_m~\8f\88\88\8b\88\88\85\81\81~~zzwtttpmiimmmfciffifiiffmtpttpmcffcf\\__\\XUKD=6:333,003,3003,0,03:AGG\_iip\81\85\85\88\8b\8b\8b\8b\81\8b\8b\8b\92\8b\8f\8b\85\85~~wtwtpttpttwwwtwzz\81\81\81\85\85\88\8b\8b\8f\8b\8f\96\92\92\8f\92\96\92\8f\8f\8b\88\88\85\81~\81z~~zztwppwpptppmppmttppwtwttpw~\81~\81\81~~z\81z~wzzzt~tpwwttwtwwww~wwzzz\81~~wtwfccc_\UUX\\XXXX\U__NX_cc\XX_X\U\c\KXKKKNKGAGADDAAAAAAAAAA===AAAAADAAAADA:A==:0366300,0,)))))))),),,0,,600,00,,,,0)%%"%)"\1f\e\e\1f\14\14\11\14\11"""%%%%))))),,,,,,,,,,,00000000,,,,,)))))"""""\1fX\\X_c_fcifitptwtwtwtwmimmiimmpmptttpmppttwz~~~\85\85\81\85\81\85\81\85\88\8b\85\81\81\81\85\8b\92\8f\8b\8b\85\81\88~~~z~\81~\81\81~\85z\81~~zzzwwzwz\81~zzz~~zzwwwwtttzz\81\8f\8f\8f\8f\8f\8b\8f\8f\8f\8f\8f\88\8f\96\9c££ ££ ££ªªªª§£££\9c£ £££££§§§§§§ªª±±´¸¾»¾»»»¸´±±ª£ \9c \9c \9c\9c\9c\9c\99\9c\9c\99\96\99\99\96\99\96\96\96\96\92\9c\9c\9c\9c £§£§§§§§§§ª§ª±±ª§§ª§§§§ \9c\99\96\99\92\8f\8f\8b\8b\85\88\88\8f\92\96\92\96\96\8f\8f\85\85zzwttppmifc0,))%)\1f"\1f\1f\1f%)%,,,3=:AA=AAAADGKKKNKKKKGRRX\fmz\81´´¸»¾»»»»»¸¾¸¸±±ª££§ \99\9c\99\9c\96\8f\88\88\8b\88\88\92\92\96\99\9c\9c\9c \99\99\99\8f\8f\92\8f\92\96\8f\92\8b\88\88\88\88\85\81~zz~z~~\81wpmm___c_\fpm\8f\8b\85\88\88\85\85\85\85\81\81\81~~zwwttmiimiic_fcU_cc__cfpmpptpfiffc_\_\X\XUNDA:=3:60:3:0:03363,06ADKGcim\85\81\88\88\88\8b\8f\8f\8b\8f\85\8b\8b\88\8f\8f\8f\8b\85\81~~zttpptppwtwwttt~z\81\85\81\88\88\88\8b\8f\8f\8f\8f\92\92\8f\8f\92\92\92\8f\8f\8f\88\85\85\81z\81z~~zwwwpptttwptpppmtttptttppmt~~~~~~~w\81z~z~zwwztpttpptttwww~wtzwz~zztwtc____XUKUX\X\XU_U\_UX\c_\XX\\_UXXXNUNNNRGDDDDDADADAAAAAAA===DDDDDDDADAA==A::=066603,),,))))))),,)))0,,330,000,,,0))%""%\1f\e\18\14\e\11\11\ e\a\11\1f\1f\1f""%%%%)))),,,,,000000000000000000,,,00)))))"\XX\_c_iffimptptwwwwttmmpmiipmppttttpppttptz~~z\85\81\81\85\81\81\85\85\88\88\85\81~\85\85\88\88\8b\88\88\85\81\85~~~~\81~\81\81\81\81\85z\81~~~zzwtwww~zz~zzzwwttttpttzz~\92\8f\8f\8f\8f\8f\8f\8b\8f\8f\8b\8b\8f\96 £§ §§ £§§§ª£ £ £££§§££££§§§§§ª±ª´´¸»»¾¸»¸»¸´ª§££ £\99\9c \9c\99 \9c\99\99\99\96\96\96\96\96\96\96\96\9c\9c\9c\9c££££§££££§§§ª§ªª±±±±ªªª§§§£§£\9c\9c\99\96\92\96\8f\8b\8b\88\88\81\85\85\8b\8f\96\96\99\99\92\92\88\81~~zwwpmmi63,,%%"%\e\1f\e\e\e"%")),,:6==:A=ADDGKKGKKNKNGRNX_cmz\85±´»¸¾»¾»»»¸»¸§£ £\9c\9c\9c\96\99\96\99\92\8b\85\85\88\88\85\8f\92\96\99\99\9c\9c\9c\99\9c\99\92\92\96\92\92\92\92\92\8b\8f\88\8b\8b\85\85\85~~\81\81\81~\81zpim_cccc_itm\8b\81\88\85\85\88\88\88\85\85\81\85\81\81wzwwpmiiif_\\_XRU\\X\\_cimmpmimfccc__\X\URNGD==3=:3=:=0=363:630ADGURfpm\88\85\8b\8b\8b\8f\92\92\8f\8b\88\8b\8b\8b\8b\8f\8f\8b\81~~zwpttmpptwtwtttpzz\81\88\81\88\8b\8b\8b\8f\8f\8b\8f\8f\8f\8b\8b\92\8f\8f\8f\8b\8f\88\85\85\81~\81~zzzwzttttwwtttppmppppmpptmpitzzz~z\81\81z~zzz~~zwwtpppmppptwwtzttzwzzzwttp_c\_\UXKUU\XXXX\XX_XU___\XU\X\UXXURRKNRNKGADADDDADAAAAAAA==ADDAADAAAAAA::=:::3333,3)))),))))))),)),00,033,,,00,,0)%%%\1f"\e\18\14\18\11
+
+
+
+\11\1f\1f\1f"""%%%%))),,,,,0000033303333333330003300000)\X\\__cfffmppttpwttttpmimpmmpptptwwtptptwtt~~\81~\81\81\81\88\81\81\81\81\88\85\88\85\81\85\85\85\88\88\85\85\85\85\85~\81~\81~\81\81\81~\81\81~\81~z~zwwwwwwzwwzzwzwwtptppttwzz\8f\8b\8f\8f\92\8f\8f\88\8f\8f\8f\8b\92\99 ££ §£ £§§§§§£\9c £ £££££§£§£§£§£ªªª´´´¸»»¸»¸»´±ª§ª§§£ ££ £\9c\9c\9c\99\99\9c\99\9c\9c\99\99\96\99\99\96\96\96\99\99\9c\9c\9c £££ £§£§§ª±´´±±±ª§§££ \99\99\92\92\8f\8f\8b\88\88\88\85~\81\81\88\8b\92\96\99\99\92\92\8b\85\81\81~wtpiif60,)%%%%\18\1f\e\18\e"""%)))06:::=AADDGGKGKKNNNNRRX_fmw´´´¸»»¸¾¾¾»¸¸´ª§ª\9c \9c\9c\99\99\99\92\96\92\96\8f\88\81\81\85\85\85\8b\92\92\96\96\9c\9c\9c\9c\9c\99\96\96\96\96\96\99\96\96\8f\92\8f\8b\8f\8b\88\88\85\85\81\85\85~\81zpimfcfffcfw\85~\81\85\85\85\85\88\88\88\85\81\88\85\81wzzwpmfffc\XRUURRNUUXUU\c_imififc__c\\XXXRNGGDDAA==A=A:A6:6=66GKRUXUiw~\8b\88\8f\8f\8f\8f\96\96\92\88\8b\8f\8b\8b\8f\92\8f\8f\81~~zwmttpmpwttwttwtz~\81\88\85\8b\8f\8f\8b\8f\8b\8f\8b\8b\8f\8b\8b\8f\8f\8b\8f\88\8b\88\85\85\81~\85~zzwz~wwwwwwtpttmmpmmmmmmpipipzzwzw~\81~~~z~\81~zwtpmpmppppttwwwttwzzzztppi_c\_XUUUXU\X\X\\\U_\X_\_\UXX\XUUXRNNNNNNKKKGDKRDDAAAAAAAA===DAAAD==A=A==:==666000)0,))))))%%))%,))00,00000,,00000))%""\1f\e\18\14\14\11\a
+\a\ e\ e\1f\1f"""""%%%)))),,,000003333336663666636666366660\\\_\_cfcimpptttttttppmmpppppmpptwwpttpptww~\81\81\81\85\85\81\85\81\85~\85\88\81\85\88\85\85\88\88\85\85\85\85\85\85\85\81\81~~~~~~\81\81\81~~~zzzzzwwwzwzwwwtwztpmtpppttwz\8b\8b\8b\8b\8f\8b\8b\88\8f\8b\8f\8f\96\9c £ £££ £££§££ £ §££§£££§§£§§§ªª±±´±´¸¸´¸¸¸´´ªª§ª££££££ \99\9c\9c\96\99\96\99\99\96\96\96\96\99\96\92\99\99\99\9c\99\9c \9c \9c £§££§ª´´´±±±ª§££ \99\96\92\8f\8f\8b\88\85\85\81\85\81~zz~\81\8f\92\96\96\8f\8f\8b\81~\81~tpmi=G630,))%"\e\1f\18\e\e\1f"""%%%,363:=ADDGGDKKKNNRNRUUX_fmw¸¸´»»¸»»»»»»¸±§£ \99\9c\99\92\8f\96\92\92\92\8b\8f\88\81~~~\81\85\88\8f\8f\92\99 \9c\9c\9c \9c\99\96\96\99\99\9c\99\96\92\96\92\8f\92\8f\8b\8b\88\88\85\88\85\81\81wtipifipfmmz\81~~\81\85\85\85\85\88\88\88\85\88\88\81~zztpicccXXUUURRRNRRRRURU\Xifcffc\__\\\\\URNDGGGAKADAA=A==6A6DRNU\fz\8f\8f\8f\8f\8b\8f\92\92\92\99\96\96\8b\88\8b\8b\8b\92\92\8f\8f\81~~zwpwwtpttttwttwwz\81\81\8b\88\8f\8b\8f\8b\8f\8f\8f\8b\8b\92\8b\8f\92\92\8b\8f\88\88\88\85\85\81~\85\81z~zw~wwwwtzwtttmimmmiiiipimipwwzzzz~~\81~~~~~zwtpmpppppttttwwptwwwwzpmii_c_\XURX\U_\_X__\X__\__\XXXUXXRRXRNKRNKKGNNKRNUKDKAADDAAA===A=DAD=A==A=A:::633,,)),))%%,)%%))%%,%,3,,,0,,0,,00003))%""\1f\e\18\14\14\ e\a
+\ 3
+\ e\1f\1f\1f"""%%%%)))),,,0003333366666:6::::6:::=6:===D\__\__cfffmmttttwpttppmpptptpptttwttwtpttwz~\81\85\85\85\85\81\81\81\81~\85\88\81\85\88\88\88\8b\85\85\85\81\85\81\81\81\81~~\81\81~~~\85~~zzzzzzzwwtwztwwwtttwpmmpppmtptw\88\8f\8b\8b\8b\8f\8f\8b\8b\8f\8f\92\99 £§ ££ £££££ £ £££££ §£££§§£§ª´±´´±±¸´´´¸»´´±§£§§§£££ \9c\99\9c\96\96\99\99\99\96\99\92\96\96\92\92\99\99\99\9c\99\9c\9c\9c\9c\9c£ \9c\9c\9c ££ §±´±´±±±§£ \9c\99\96\92\8b\88\85\85\85\81~~\81~zwwztwwtw\8b\8b\88~~~zpmif::3300)%)"\e\e\18\e\e\e\1f""""%)033:=AAGGDGKKKKNUXUXX__fm´¸¸±¸»¸»»»¸¸¸´£\9c\9c\92\8f\8f\8f\8b\92\8f\8f\8f\88\88\85~zwz~\81\85\8b\8b\8b\99\9c \9c\9c \9c\99\99\99\99\9c \9c\99\96\99\96\92\96\92\8f\8b\8b\8b\88\88\85\85\81zwtppimttttz~zz~\81\81\81\85\85\85\8b\88\88\88\81\81zzpmf__XXXRRRRNNNKKRNURRXX_\_cc_\___\\\\XRUURXKUNDGAAA=AA=ADKUUXm\88\8f\92\92\92\92\8f\92\8f\92\96\99\96\96\8b\8b\8f\8b\8f\96\92\8f\8f\81\85~~zttwtpwtwtwtwwwz\85\85\8b\8b\8b\8b\8f\8b\8f\8f\8b\8f\8f\92\8b\8f\8f\8f\8b\8b\88\88\88\88\88\85\81\85~~~~z~wzwwpwtpppmfiiiifcfpfpmpwwwwzz\81~\81~~~z~wttmimpppmpttptwpttwtwwmiim\c__XUR\_U__\\c__\\_\__\\X\XUURRUNNGNKGKKNRNURXNKNDDGAAAA===A=DDDAAAA=A=:66300))%)),))%,)))))%))),0)),,,,,,000003))%%"\1f\1f\e\18\11\11
+
+\a\ e
+\e\e\e\1f""%%%)))),,,,00033366666:::::===:===A==AAAG\\_\___ifimpwwwtwtttppmmtppppptptwtwtwtwtwz~\81\85\85\85\85\81\85\85\81\81\85\88~\85\85\85\88\8f\88\85\81\81\81\81\81~~~~~~~~~\81~~zwwzwwwwttwwwwwtttttpiimppipppt\85\8b\88\88\8b\8f\92\8f\8f\8f\92\96\99 § ££ \9c\99£££££££ £££££ £§§£ªª§ª±´±´´´´´´´´¸¸´±ªª§ª£££ £\9c \99\99\96\96\96\96\99\96\96\92\96\96\96\96\99\9c\9c\9c\9c\99 \9c\99\9c \9c\9c\9c\9c §££±±±±±ªª£ \99\96\8b\96\92\8f\85\85\81\81\81~zzzzwttpmpppptt\85z~zwfffA:=3300,%,"\1f\1f\14\18\e\e\1f\1f"\1f"%,)306=AAGGGGGKNNR\\X__fft´´´±´¸¸»¸¸¸´ª±ª \9c\99\92\8b\8b\88\88\8f\8b\8b\88\85\85\81zttpp~~\88\8b\8b\96\99 \9c\9c\9c\9c\9c\9c\99\99 \9c \9c\99\9c\99\96\96\96\92\8f\8f\8f\8f\8b\88\88\85~zwttwpwwwwzz~w~~~~\81\81\88\88\88\88\85\81\85zwmic\UXUUNNURNNNKKRNRRUXX\\XX_\\___\\\\XUXXU\\XRKKGGGDDDAGU_XXwp\8b\8f\96\92\96\8f\92\92\92\92\92\99\92\96\8f\88\92\8f\92\96\92\92\8f\85\88~~~wwzwtwwwttptzw~\88\88\8f\8f\8b\8b\8b\8f\92\8f\8f\8f\92\8f\8f\8f\8f\8f\8b\8b\88\88\88\8b\8b\85\81\81~~\81\81z\81zztwptpppmicffffcfcmcpppwttwwz\81z\81z~zzztpppimpppmmptptwtttwpwtmifi\___\XN__X__\_c___X_X\\X\XXXURRRGNNKKGDGGNNRRUXRNRGGKDDAA==DD=DDDD=AA=D=:6600,)%"%%)%)))))),)%,,,,,%%),,,,,,00003))%%"\1f\1f\e\18\14\11\ e\ e
+\ e\ e\e\e\e\1f\1f\1f"%%%)),,,,00003336666:::::=====AAADAADDDK\X_X_\_icimmttwtwttppmmipmpptptttttttwwwwwzz~\85\81\81\85\81\81\85\81\81\85\85\81\85\85\81\85\8b\8b\81\81~\81~~zzzz~~~z~\81\81~wwtwtttttpttttttpttppifimmimmmm\88\88\85\88\88\8f\8f\8f\92\92\96\99\9c££§ £ \9c\9c ££§££ £ ££££§§§ªªª§ª±´´´¸´´¸±¸´´´´±ª§§§£££££\99\9c\99\99\96\96\96\96\96\96\92\92\96\96\92\96\99\9c\9c\99\9c\9c\9c\9c\9c\99\9c \9c\9c\9c ££££ª±ª±±§ª\9c\9c\8b\92\8b\8b\8f\8b\85\81~~~zwwwwpiiifffmmppwwzmiccAD=:6300)))\1f\1f\1f\18\18\e\e\1f\1f\1f\1f""),336:=DGGGKKNRRU_c\cfip±±±´´±¸¸¸´´´§£ \9c\9c\96\8f\88\85\88\88\8b\85\88\85\81\81wwimmmtz\85\88\88\92\92\9c\9c\99\99\9c\9c\9c\99\9c \99 \9c\9c\99\99\96\99\96\92\92\8f\92\92\8f\8b\8b\85~~zwwztzzzz~wztzwzw~~\85\85\85\88\81~\81wtifcUUUURKRRRNNNNKRRRUUXUXXXXXX\___\\\_\X\\X__\_NXK_KURNfK\cz\81~\85\8f\8f\96\92\96\8f\92\92\92\96\92\99\96\96\8f\8b\92\8b\92\96\96\96\8b\88\8b\81\81~zzzwwzwztwtpzz\81\85\8b\8f\8b\8f\8f\8b\92\8f\8b\8b\8f\96\8f\8f\8f\92\92\8f\8b\85\88\88\88\88\88\81\81\81\81\81\81z\81zzptppppmifccfffffficmmmtttzw~\81z~z~zzwptmpiipmpmpptptwtwtwtwpmiciX____\\__\_cX\___\X\\XXXXUXUXRRRKKNGDDDDDKKNRUXURRKKNGGDDD=GG=GGDD=AA=A=:6600,)%"""%%),%%,,,%)0),)0%))),,,,,00003))%%%"\1f\1f\e\18\14\ e
+\ e
+\ e\18\18\18\e\e\e""%%%)),,,00033336666::::====AAAAADDDDGGN\X_\__cfcimmpttttttmpiifmppptppptwttttwwwwwwz\81~~\81~~\81~~\81\85\81\81\85\81\81\88\88~\81~~zzwtww~z~~\81\81\81zwwtwttpppmtpppttptppmfcfiiffUfi\88\81\85\85\85\8f\92\8f\92\96\99\99 £ ££ £ \9c §£££ \9c £££§§§§ªªª´´´¸´¸´¸´±±±´ªªª§£ £ £ \9c\9c\99\96\92\96\99\96\96\96\96\96\96\96\96\96\99\9c\9c\9c\9c\9c\9c\9c\9c\99 \9c\9c\9c\9c\9c£££§ª§ªªª£§\99\92\8b\8b\88\8b\88\88\81\81z~zwtttpff_fccciimmfmmiiDADDA:6300,)%\e\1f\e\e\18\18\18\1f\e\1f\1f"%%,636:ADGGKKKRUXXimfitw§±´±±´´±¸¸´±±± £ \99\99\99\92\8b\85\85\85\85\88\85\81\81~~ppfiiipwt\85\85\8f\8f\99\99\99\96\99\99\99\96\9c\9c\96\9c\99\99\99\99\99\99\96\92\92\92\96\96\92\8f\8f\8b\81\81zz~~z~~z~zwwwwwwwzz\81\81\81\85~z~wpfccRUURRNURRRRNNNNRUUUURUXXXXU\\\\\\_\_X\_\ccfc___cc\\XiN_f~\85\81\88\8f\8b\92\92\96\92\92\96\92\96\96\96\99\92\8b\88\8f\88\8f\96\96\96\8b\88\8b\81\81z~~zzzzzztzwtzz\81\81\8b\8b\8b\8f\8f\8b\8f\8f\8f\8f\8f\92\92\92\8f\92\92\8b\8b\88\88\88\85\85\88\85\85\85\85\81\81~\81zwppmpmmifc_cfccfffifmpittwwwz~w~z~wwtttppimppmmpttttwtwwwttpmici\___cX_\_\\_U\__\XX\XUX\UR\U\RNRKGNDDGDAAKDKNUXURNNNNKKDAGDKKGGGAD:A=AD==6300,)%"""%%%))%,,))%,,)%,%)%),)),,00003,)%%%""\1f\e\18\18\ e
+\ e
+\ e\14\14\14\18\18\18\1f\1f""%))),,00003336666::::===AAAAADDDDDGKN\\\\\__ffmmmmttpptpimmifmpmmpptpttptttwwwtttw~zz~zz~zz\81\85\85~\81~~~\85~~zzzwttttzz~~\81~~zwwwtppmppptpmppppppmmcccfcX\RUX\88\85\85\85\85\8b\92\8f\96\99\99\99\9c \9c££££ \9c ££§£§£\9c\9c\9c\9c §£§ªª§ªª§ª±¸´´»¸´´´±±±ªªªª§£ \99\99\99\96\96\96\99\96\96\99\96\96\96\96\96\96\99\99\99\9c \9c \9c\99\99\9c\99\99\99\9c\9c£§£§ªª§ª§§ª \99\99\96\8b\88\8b\88\88\85\85~~zzwwpppfc_____cfficfcfffGDAA=:6300,)%\1f\1f\1f\e\18\18\18\1f\1f"\1f"%),33:==DDDKNNUU\fmpptw\88ª±¸´±´´´´´±±ª \9c\99\96\8f\96\8f\85\85\81\81\81\81\81~wwwpifffcmtpzz\8f\8b\96\96\99\92\96\96\96\96\99\99\92\99\96\96\96\96\99\99\96\96\96\96\96\96\92\92\92\8f\85\85~\81\81\81~\81~zzzwtwtwpwwtzz~zzzzwpc_cXXXURNRUNRURRNRNUUUURUXXUXXXX\\___\_\\___ficcccff__\mfc~\81\85\85\88\8f\8b\8f\96\96\92\92\96\96\96\96\96\99\96\8f\88\8b\8b\8b\99\96\99\8f\8b\8b\85\85~\81~~~~w~zw~wwzz\81~\88\88\8b\8b\8b\8b\8f\8f\92\8f\8f\8f\92\8f\8f\92\92\8b\8b\88\88\88\85\88\8b\85\88\85\85\81\85~~zwpfimiicc_\_cc_cccifmmitwzww~\81z~zzwztwppmimmmmmpttttwwtwttttifcfX_\__\\__XX\UX\\XUX\XU\\XUXUXURRNDNDGKGADKGDNRXXURRRNNNGDKGNNKGGDAAAAADA:6300,)%%""%%%),),,%%%))%%))%%)))),,,0003))%%%""\1f\1f\e\18\11\11\11\ e\ e\11\14\11\18\14\14\e\e\1f\1f"%))),,000333666:::=====AAAADDDGGGGKNX\\XX\_ccimmpptppptipiifipmppptmtpttttwwttpttzwzzzzzwz\81\81\81z~~wz~\81zzzwtppptzz~z~~~~wwtppmmmmppmipmmmmpiicc_c\UNNNU\88\85\85\81\88\8b\92\8f\96\99\99\96\99\9c ££££ £§§ª£§£\99 \9c\9c £§§ªªªªªª§±±´´¸´¸¸¸±´±±ªª§§££ \99\96\99\96\96\96\99\96\99\99\96\96\96\96\96\96\99\99\99\99\9c\9c \9c\99\99\99\96\96\99\99\9c££§ªªª§§£££§\99\96\92\92\8b\85\88\85\85\81~~~zwwtimfcc\___\_ccfccfcffGDD==::63,,)%"\1f\e\e\18\18\18\1f\1f""%%)0366==ADGKKRU__mpttw\92ª´´´±´±´±±ª \9c\99\96\92\8f\8b\81\81~~z~~wwttmcc_icimmzw\8b\8b\8b\92\96\8f\8f\92\85\92\96\8f\8f\96\92\92\92\96\96\96\96\96\96\99\96\96\96\92\96\92\88\85\85\85\85\85\81\81~zzwwptptptptptwtwwwtmf\c\\XURNRUURURRNUNXXXURXUXXUXXUX\\_\\\_\\__cifffccccccmmp~\85\81\85\88\8f\8f\92\92\96\8f\92\96\96\96\99\96\96\96\92\88\8f\8b\8f\99\99\99\92\8f\8f\88\85\81\81~\81~~z~~zzzwzz~\81\85\8b\88\8b\8b\8b\8f\92\92\8f\8f\8b\8f\8b\8f\8f\8f\8b\8b\88\88\88\85\88\88\85\85\81\85\81\81~\81wzmiiifffcc\__c\_ccifpmmwwwzz~~wzwwwztwpppmmmimmptttwzwtwtpppiiffX___G\\\_U\URX\XUXU\XUXXUXXXXUUUNGKDGKDGGKKDNNUXUURUNNRKGKKNKNKKG=D==AAA:6300,)%%""%%%%),0)""""%""%%%%)))),,,,003,,)%%"""\1f\e\e\14\14\14\ e
+\14\14\14\18\18\18\18\18\18\e\1f"%))),,00033666:::====AAAAADDDGGGGKK\X\\\_\c_fiippptpppmpimffpmppptptttttttwppmtpwtwtwwwtw~~~wzzwwz~z~zzwtpttwz~~~~~zztppmmiiimmmimiimimff___XRKGKNR\85\85\85\85\88\8b\92\92\99\99\99\99\99\9c §£§§££££§§ª§£ \9c\9c\99 ££§ªªªªªª±±¸´¸¸´´±±ªªªªªª£§§£\9c £ \9c\9c\99\99\99\96\96\99\99\99\99\96\99\96\96\99\99\99\99\99\9c \9c\9c\9c\99\9c\99\99\96\99\9c\9c£££ªªª§£ \99\99\99\8f\8f\8f\88\81\85\85\81\81~z~zttpmmfc_X\__\\_____cccf_GD=:=:63),)"\1f\1f\1f\e\18\18\18\e\1f""%%,0366=ADGGKNU\ccpptw\81 ±´´´±±±ªª\9c\9c\9c\96\92\92\8f\85~~zzzzzptmpic_cfcfipww\88\88\8b\8f\92\8b\8b\8b\85\8f\88\8b\8b\8f\8b\8f\8f\92\92\92\96\96\96\99\96\96\92\96\96\96\88\88\88\88\88\85\85\81zwwtwpppttppppppptttpmf__c\\XRURXXUUURRUNXXXUUXX\XUXXUX\\\\\_\X\\\_fffccffccfmpt~\85\85\88\8b\92\8f\8f\92\96\8b\92\96\96\92\96\96\96\96\92\92\92\8b\92\99\99\99\96\8f\8b\88\85\85~\81\81~~~~~zzzzzz~~\85\88\85\8b\8b\8f\92\8f\8f\8f\8f\8b\8b\85\8b\8b\8b\8b\88\88\88\85\81\88\85\85\81~\81~~~~zzpmiififc_\\____ffiimppwzwzw~zwwwwwztwptpmmpmmmpttwzzzwwpppmmiif\___G_\\_R\XU\_UUUU\XXUXRUXXXRURRKKGGKGKKGGNNRUUURRURRNKDKNNKNKNKDGA=D=A:6300,)%%""%%%%%,,%""%"%"%%%%%)))),,,,0030,)))%"""\1f\e\18\18\18\11\11\18\18\18\e\e\e\e\e\e\1f\1f\1f%%)),,,00333666:::==AAADDDDDGGGGGKKX\\\X\\c_ffipppppmpmmiiffmmmppptpttttwttpmppmpptttttttzzzwwwtz~~z\81z~zwppptzz~~\81~zwwppipifmmmmfifficicc\_\UNGDGKK\81\88\88\88\88\8b\92\96\96\99\99\96\99\9c££§§§§§§§§§§££\9c \99\9c §§§ªªªªª±±´¸¸¸±±ªªªªªª§§££££ £\9c \99\9c\99\99\99\96\99\99\9c\99\96\99\99\99\99\99\9c\9c\9c\9c\9c\9c \9c\99\99\99\99\96\9c £§£§ªªª \9c\96\96\96\96\8b\88\88\88\85\85\85\81\85~zzwwtppmc_\\_\_\\___\\___c\KDD:A::3,,%""\e\1f\e\18\18\18\e\1f""%),36:6AADGGKNU_ffttwz\85£±±¸¸´±ªª§ \99\9c\99\96\8f\8f\8b\85~\81zzzwwmpiiffcff_cfpwz\88\88\88\8b\88\88\8b\88\85\8b\85\88\88\8b\88\8b\8b\8f\8f\8f\92\92\92\96\96\96\92\96\92\92\8b\8b\8b\8b\88\85\85\81wttpttptppmtmmmmmptppmiccf_\\RXRX\XUXUUXU\X\XXXX\UXUXUU\\X\X_\X\X\_cccc_fcc_iitw~\85\88\8b\8b\8f\8f\8f\8f\92\8f\8f\92\96\92\92\92\96\96\92\96\92\8f\96\96\9c\99\96\8b\88\88\88\85\81\85\81~z~~~zzw~~w~\81\81\85\85\88\8f\8b\8f\8f\8b\8b\8b\8b\8b\85\88\8b\88\88\85\88\88\81~\85\81\81zzwtzz~zwtpiffif__\\___cffmmmtpwzzzwzwttttwwtwtwpmmpppmttwwzzzwttpmpmiii_c_NG\\\_R_\X\\RXUUXX\XXURXUUNRRUNNKDNGNNKRRNRRURUUURRKNKNNNNNKNKGKDAD:=66330,)%%""%%)%)))"%%"\1f""%%%%%)))),,,,003,,,))%%""\1f\1f\e\e\18\14\14\18\e\18\e\1f\1f\e\1f\1f"""%%))),,,0033366:::===AAADDDGGGKKKNK\\_XX\\cccffmmpmpmmmmffiipmppmppttpttttwpmmppppttppttpttttttwz\81\81~\81~\81wwttptwzz~~zztwppipffimmmiffcfcc__X\XRKDDDKK\85\88\88\8b\8b\8b\92\92\96\99\99\99\99 §§ªªªªª§ªª§§§£ \9c\9c\99\9c £§ª§§§ª§ª§±´¸´´´±ªª§ªªª§£ £\9c£ \9c \9c\9c\9c\99\9c\9c\9c\99\96\9c\99\9c\99\9c\9c\99\9c\9c\9c\9c \9c\9c\99\9c\9c\99\9c ££§£ªª§§\9c\96\92\96\92\92\88\88\88\85\85\85\85\81\81~wzwwpmmi_\\X___\\\_\_X\\X_XNDG:A660),""%\1f\1f\e\18\18\e\1f\1f%%),,36::AADDGNNUcfitttw\88§±´´±±ªª§§££\96\9c\96\92\88\8b\88\81~~wzwwwpfiicffcccffmtw\85\85\88\8b\8b\85\88\85\85\88\85\85\8b\8b\85\88\88\8f\8b\8b\92\8f\92\92\92\96\92\96\8f\92\8f\8b\88\8b\88\81\81~tpppppttptmpmmiiiipmmimific_\\\XX\\X\UX\\_\\\\XXXXUUURRXXX\X__X\\X__c__cccfcimtz~\85\8b\8b\8f\8f\8f\8f\8f\8f\8f\8b\8f\92\8f\96\8f\92\96\92\92\96\92\92\99\9c\96\92\8f\88\88\88\81\81\81\81zzz~~~zw~~z~~~\81\85\85\8b\88\8b\8b\88\88\88\8b\88\81\85\88\85\85\81\85\85~z\81z~zwwtwwzwtttmiiifccX___\_iipmpwtwwwwtwtptptzwtwwttpppppptwwzz~zzwttmtp\ eficc\NK\\D_R_\XXXRXURU\XXXUKURRKRRXNRKANKNRUUURRNXRUXXRUNNNRNNNNKNNKGAAA::33300,)%%""%%)%,,)%%"\1f\e\1f""%%%%)))),,0,003,,,)))%%""\1f\1f\e\e\18\18\e\1f\e\1f\1f\1f\1f\1f""%%%)))),,,00033366:::==AAADDDGGGKKKNNX\\\\__f_fccimmppimmiiffmpmmpmmpttptttttpppptmptttmppmmmmpptwz\81\81\81\81\81\81zzwwtwwzz~~~ztwtmmmfiimiiicc\c__\\UXUKGDADKK\88\8b\88\8b\8f\8f\92\8f\96\99\99\99\99 £ªª§§ª§§£ \9c\99\99\99 §§§§§ª£§£ªª´¸¸´´ª±ªªª§ª§§§£\9c£\9c \9c £ \99 \9c\9c\99\99\9c\99\99\99\99\99\99\99\9c\9c\9c \9c\9c\9c\9c\9c §£§§§§££\99\96\8f\92\8f\8f\85\88\88\81\81\85\85\81~zzzwtpmmic\XX\\_\\\_\\XXXXXUKDK==330),"""\e\1f\18\e\e\1f\1f"%),,036::DDDDKRRXcimpppt\85ª±±´±±§ªªª£ \99\99\96\92\88\88\88~~~wzwwtmfmffffc__fimtt\81\88\88\88\88\85\85\81\85\88\88\88\8b\88\85\85\88\8b\88\8b\8f\8f\92\8f\92\92\92\96\8f\92\8f\8b\8b\8b\85~~zpmmmmpttttppmmffimmppimmiffc\__\_\_\_X\_____\_\\XXXUUUUUUUX\\\XXXU\____cccffmmw~\81\88\8b\88\8b\8f\8b\8f\8b\8f\8b\8b\8b\92\8f\92\92\96\92\92\96\96\92\96\9c \92\8f\8b\88\88\85\81\81\81~wzzz~~zz~~~~z~\81\85\81\88\85\85\88\85\8b\85\8b\85~\88\85\81\81~\81zzw~wwwttppwwwtptmmimifc\c\cX_imtptwwwzwttttptptwztwtttppttptwzw~~~zzzwwttp\11imfcXNN_\D_N\_X\UUXXNUXXUXRGRRRKNRXRRGDUNRUXXURURUUUU\UURRRNKRNNNRKKDD==66,0000,))%""%%%))),%"\1f"\e\1f""%%%%)))),,,,003,,))))%%%""\1f\1f\1f\e\e\1f\1f\1f\1f\1f\1f"""%%%))),,,,000033366:::===AADDDGGGKKKNN\\X\\_cfccccmipmmimiiiffmppppmmpttttttppppppppppppppmiiimimptz~~\81\81\81~~zzzwzwz~~~~~ttpmmpiimmmif__X\UXXXRNNKGAADGK\8b\8b\88\8b\8f\8f\92\92\92\96\99\99\9c §±ªªª§§££ \9c\9c\99\99\9c ££§££§§££§ª´´´´´±ªªªªª§§§§ £ £££££ \9c \9c\9c\9c\9c\9c\9c\9c\99\9c\99\9c\99\99\9c\9c \9c\9c \9c\9c\9c §£ª§£££\9c\96\92\8b\8f\8b\85\81\85\88\85\85\85\88\81\81zwzwpppifc_X\\\__\\\\\\UXXXNGGG==000%)%%"\1f\1f\e\e\1f\1f\1f"%),,06:6:DDGGKUUU_iimpmp\81\85´±±±±ª §§§£\9c\96\96\92\8f\85\85\85~~zzzwzpififffccccfimpp~\85\85\85\88\88\85\85\88\88\85\88\88\85\85\85\88\88\88\8b\8b\8f\8f\8f\92\92\92\96\8f\92\8f\8f\8b\88\81wzicfiiipptttptmiifimmmmmppmffc_c__c___\___c_c_\__\\XUURURRRRX_\\X\XUX\_\__fccimtz\81\85\88\88\88\8b\8f\8f\8f\88\8b\88\8b\8b\8f\8f\8f\92\99\92\96\96\96\96\92\99\9c\8f\8b\88\85\85\85\85~~~zww~z~~~\81~~~z\81\85\85\81\85\85\88\88\81\88\85\88\81z\85\85~~zttwmttttttmttwwtptppiiifc___c\cippppttwwwttwtpptttwtttttttttttzzz\81\81\81~~zzwwwt\14mpcfXNX_\\\KX_\\UXUUKUUXUXNKRNNGNUUUNDAXUUX\\XUURURRR\XURUUNKRRRNNKKDD==3\1f),,,,,))%""%%),,%,""""\1f"""%%%%)))),,,,003,,))))%%%%""\1f\1f\1f\1f\1f\1f\1f"\1f""""%%))),,,,0000333666:::===AADDDGGGKKKNN\\\X\c_icccfmmmiiimimiiiptpppmmppttptttppptptppmmpmmiffiifmptwzz~~\81~~~zzz~z~~~~~zppppmpmfmimic\UXURRRRNKGKKADDGK\8b\88\8b\8f\8f\92\92\92\96\92\96\99\9c£ª±±±±ªª££ \9c\99\9c\99\9c ££ ££ £§ªª´´±´´ªªª§§££££ £ \9c £££§§£ £ \9c \9c\9c\9c\9c\99\99\9c\9c\96\9c\9c\9c \99\9c \9c §§§§£ \99\92\8f\88\88\88\88\85\85\85\85\81\85\88\81\81wtwtpppii__X_\___\X\XXXUUUXNGGD=:00,)%%%"\1f\1f\1f\1f\1f\1f"")),)3::6=DDKGNUXX_fmmppmww\88±±±§ §££ \99\96\8f\8f\8b\85\81\85\81\81zwztwpifficfccc_cfmmpw\81\81\85\88\88\88\88\85\88\85\85\85\85\85\88\88\8b\85\88\8b\8b\8f\92\92\96\92\92\92\96\8f\8b\88\85~wwfccfffmmpppmpmmiiippimmppmifccf_cfccc_cccfcfc__\_\\XRRRRNNNX\__XXXUX\\_\_c__fmw~\85\85\85\88\85\88\8b\8b\8f\81\88\8b\88\88\8b\8b\88\92\99\96\99\99\96\96\96\99\99\8b\85\88\85\85\81\81~zzwzwz~~\81~~~\81~~~\85\85\85\88\88\85\85\85\85\85\85\81~\81\85zzwtftmpmppppmpwttwttttmmmifcccc_fmptptttwwttpwtppppttttttttwwwtwz~~\81\81\81\81\81z~zzzwwptcf\_\_\X\KU\\\R\UXKXUUXUKNRNKKKXURKAA\XX\\\XUURRNNRXUUUUURNRUUNKKGDA=:\e\e\e)))))))%%"%%%0)",%"%"\1f%""%%%%)))),,,,00300,)))%%%%"""\1f\1f"""\1f%\1f""""%%%))),,00033336666:::===AAGDDDGGKKKNN_X\\Xccfcffimmmmifmimiiipppppimpptpmppppppppppmmmmmififfffimtwwwzz~~~~z~~\81~~z~z~zmmmmmpmimiif_XUXUNNRNKGGGGADDGG\8b\8b\8f\8f\8f\92\92\8f\96\8f\96\96\99£ª±±±ªªª£££ \9c\9c\9c\9c\9c \9c \9c £\9c £ªª±±±±±ª±ªªª§ªª§§£ ££ \9c £ £ §ª§££ £ \9c\9c\9c \9c\9c \9c\99\9c\9c\9c\9c £££§§§£§\9c\9c\99\8f\8b\85\88\81\88\85\88\88\85\81\81\88\81\81zttttpmmic____c\\\\\UUUUURUKDG=A:00,,%%""\1f"\e\1f\1f"%")),,3::6AADGKRXX\_ciippmttt±±ªªª£ £ \9c\96\92\8b\8b\88\81\81\85\81~zwzwwtmiiificcccfcimppz\81\85\88\85\88\85\85\85\85\85\85\88\88\88\85\8b\88\8b\88\88\8f\92\96\96\92\96\96\96\8f\88\88\81wttc_\_cciimmpmpmmmimpmimmpmiiffcfcfffcccfcffffcc___\_\UURRNKNX\\_\\XXU\\__cc__fpz\81\88\85\85\85\81\85\88\88\8b~\85\88\85\85\88\88\85\92\96\96\99\99\99\99\99\96\92\88\81\85\81\85~~zwwtwwzz~~~~~\81\81~\81\85\85\88\8b\8b\88\81\85\81\85\85~~\81\81zztpfmmmmmmmmmmwttzwtwpmpmmicccccfipptttpwwtptttppmmtwttttttwzwwzz~~~\81\81~~z~~~~zwttff__\c\X\KRX_\N\UXKXRUXRGNRKKNNXRNGDA_\\\_\UUURNKGNURRRRURRUUUKNGDDA:6\e\e\e\1f%%)))%%)%%))3)%,)%)""%""%%%%)))),,,,003000,,)%%%%""""\1f""\1f\e""%"%%%%%))),,,000336666:::====AAKDDDGGKKKNN_X_\\cccfffimimmmimiiimimptppmmmppmmmppptpppmpimmmmiffffffmmptwpwtzz~zz~z\81~\81z~zzwmmiiipiiiiic\XRXRKKNKKDGDDDAADD\8b\8b\8b\8b\8f\92\8f\8f\96\8f\96\99\99£ª±±±ªªªªª£££ \9c \9c\9c \9c \9c §ª±±±±ª§ªª£§§§£ \9c \9c \9c ££ª§£§££ \9c \9c\9c\9c \9c\9c\9c\9c ££ ££§£§§§§£\9c\99\96\8f\88\88\88\85\85\85\88\88\81\81~\85\85\81zwttwpppmfcc_c___X\\URRRURRKDGAD:30)0%%"\1f\1f"\1f\e\1f""")),06:=:ADGKNNXU\__fimmimfmm±§§§ \9c \9c\99\96\8f\85\85\85\85\81\81\81\81zzzzwwwpmmificfffcfippw~\81\85\85\85\88\85\88\88\85\88\85\88\88\88\88\88\8b\8b\88\88\8b\8f\96\96\96\99\96§\99\88\85~zcc_\U\_XXfifmimpmmmmmmmmmmiffffcfffffffffffcffcfccc_\\XUURRKRX\_\\\\XU\\\___\cftz\85\88\81\85\81\85\81\81\85\88~\85\85\81\81\88\85\81\92\92\96\9c\9c\9c\9c\9c\96\8f\81\81\81\81\81~zzttptwzzzzz~\81\81\81\81\81\85\88\8b\8b\8b\88\81\81\85\81\81~~\81\81zwpmfimimimimiptppwwtztppmmiicfccfipppttmtwwpttpmppmptttwtttwzzzzz~~z~~~\81~~\81~~zwtpfc\____\_NNUc_N_UXG\RX\RKKNKNNNUUNDADc__X\XRRRNKGDKKKNNNRRUUXRNKDDA=6\1f\e\e\e\1f\1f\1f%%%%%)%),)0%),,%)""%""%%%%)))),,,,003000,,,)%%%"""""\1f\1f\e\1f%")%%),,%))),,,,00333666:::===AAANDGGGGKKKNN\X\\_c_fccfiifimmmmmfiimptpppmmmppmmmtttppppmpiiimifcccffcmimptmmptwzwzzw\81~\81~~wwtmmfiimiiiii_\XRUNKNNGGDGDADA=AD\88\88\88\88\8b\8f\8f\92\92\8f\92\96\96 §±ªª§ª£££ \9c \9c\9c \9c\99\9c §ª±±´±±ª£§§§£§£ \9c\9c \9c \9c\9c\9c\9c\9c££§§§££§ \9c\9c\9c\99\9c\9c ££§§££§ § ££§£ \99\99\96\92\8b\88\88\88\85\81\85\85\81\81\81\85\81~zwttwtpppiff_c___XXXURRRRNKGDD=D=63)0)"%"\1f\1f\1f\e\1f""%%)006==:AGKNRRXX_ccffmifccfct±£££\9c\99\9c\99\96\8b\8b\81z\81~~~~~zwwwztwtmmmiifffffimptz~\85\85\85\85\85\85\88\88\88\88\88\8b\8b\88\88\8b\8b\8f\8b\8b\8b\8f\96\99\99\9c\99ª\9c\8b\81zzcc_XXUXUUX_ccfimmimmmmiiiifffffcfcfciificfcffcfccccc__\XUURRRX__\_\\XX\\X\c__fctw\81\85\81\81\81\81~~~\81~\81\81z~\85\81w\92\96\99\9c\9c\9c \99\92\8bw~\81\81~~zwwtppwwzwwwz\85\81\85\85\85\85\8b\8b\8f\8b\8b\81\85\85\81\81\81~~~wtmicmmimimfmimtmmwwwzwttppmmfffccipmpptitttppppmpmmpptptwtwwzzzzz~~z~~\81\81~~\81\81~~tpmfc\_\_\\cKNU__N_U\G\RUXRKKRNRRKRURAAD_\\UXUUNNKDD:DAGKKKNRRUURNKGA==\1f\e\e\e\e\1f\1f\1f""%%%%),,)0),,0%)%%)""%%%%)))),,,,0033330,,,)%%""""\1f\1f\1f\1f\e)%,)0,00),)),,,,00033366::::==AAANDDGGGKKKNR\X\\___f_ccffcimimmiiimpptmtppmppmmmppttttppmpmmiifccccfffiimppmimptwtwzz\81\81\81~zttpiififiifffi_\XRUNGKKGDADD=A===A\88\88\88\85\88\8b\8b\8f\8f\8f\8f\96\96\9c£§§ªª££££ \99\9c\9c\99\96\9c \9c\9c§§ª±±±±´§§ª§ª§§£ \99\99\9c\9c\99\9c\99\99\9c\9c £§£§§£\9c \9c\99\99\99\9c\9c£££££§§ª§§§ª£§£§£§ \9c\99\99\92\92\8b\88\85\88\88\85\81\81~\81\81\81~~zwwwwtttpmifc_c_\\XURRNRRKKGDAAD:60,0%%%%\1f\1f\1f\1f\1f\1f%%))006::=AGKNRU\\\ffcfif_ccc\f±t£\9c\96\96\96\8b\8b\85~~wz~~~zzwwttwwwppppiiiffifmmpt~~\85\85\85\81\85\85\85\85\85\8b\8b\8b\8f\88\8b\8b\8f\92\8f\8f\8b\92\99\99\9c\9c\9cŪ\8f~zwf_\UURURUX\\__fiiiimpmmfffffiffffff_iiifffccccffccifccc\XURUX\c___\\XX\XX\___cftz~\81~~~\81~z~\81~\85~zz\81\81z\96\96\99\9c\99 \9c\96\8f\88zz~~tzztwttmwtwtzww\81\81\88\88\88\88\8b\8f\8f\8f\8b\85\88\88\85\81\81\81z~tmifciiimimimiipifzzz~zwtppppiifffipmpppittpmpptppmpmptptttwwzzzzz~zzz\81\81~~\81~\81~~pmmf_\_X\X\_KNU\_R_X_K\UXXUNNNRRRGNRRAAA\XXRURRKNGGA:AADGDDKNNRRRRNGD%\1f\e\e\e\e\e\1f\1f\1f\1f"""""%,))3%,0,),%%)%"%%%%)))),,,,00333330,,))%%"""\1f\1f\1f\1f\1f%")03636)6,),,,,000333666:::===AARDGGKKKNKNN\\\\\__fX__cf_fiimmimimmppmtptppmpppptpptpptmppiiif_cccfffiimmmmimpttttwz~\81~~wppiifcfc\fcfcf_\URRKKGGDAAADA=A===\85\85\85\81\85\88\88\8b\8b\8b\8f\92\96\9c ªªªªªª§ª§§ £ £ \9c££\9c \9c\99\9c\9c §ªª±´±´±ªª§§§££\9c\9c\99\99\99\9c\99\99\96\99\9c\9c\9c\9c ££§§£ \9c\99\99\9c\99\9c £§£§§ªªª§§ªª§£§£ £\9c\92\99\96\8f\8f\88\85\81\88\85\85\81~\81\81~~~\81\81~zzwwtwpmifcc__\\XURNNNNKKKDADD=60,0)%%%\1f""\1f\1f\1f%%),,36:=ADGNNRU\__cccfff__c_\cfp \9c\92\8f\8f\85\85~wzww~zzwtwttttwttptpmiiiiiiimpwzz\81\88\88\85\88\88\85\85\85\8b\8f\8f\8f\8b\8f\8b\8f\92\92\8b\8f\92\99\96\9cÌ\9cÉÅ\92~wtc\\URRRNRUUR\\cfimmmpimcccfffififfc\ififccfcffffcimmmff_\c_\\\c_c_\\XX_\X\__\_iw~\81\85~\81~~~z\81\81~\85zzz\81~~\92\99\99\9c\96\9c\9c\92\81\85w~zztwztwttmtmtwzww~\81\8b\8b\88\8b\8f\8f\8f\8f\88\88\88\88\81\85~~zztmmfffmimfmmiifpii~~~~~wwpttmmmiiimpmmptfttppmtppppmmptttwttwzz~z~~z~~\81\81~~~~\81~~tmmc\\\XR\_\KNRXcc_X\KXX\UXRRRRRNKKNNDADXKKKRNNKNDD::A=DADAGKKNNRRKKD"\1f\e\e\e\e\e\1f\1f\1f\1f\1f""""%)%%0%,00)))),%%))))))),,,,,0033333300,,))%""\1f\1f\e\1f\e"",36A==0:3,),,,000333666::::===DRDDGGGKNNNNXXXXX\\cX\\_cccffimmmmmiptptppppptppttpttpmtptpiifcccccffiiimmmiimpptttww~~~ztmmiffcc\\c_c_c_XRNNGKGGD=AAA==A===\85\81\85\81\85\85\85\85\8b\88\8b\8f\96\9c §§ªª§§ªª§§§££ £ ££ £ \9c\99\99\9c ££§§±±¸´±±ªªªª§§£\9c\99\9c\9c\99\99\96\96\99\99\9c\99 £ ££ \9c\9c\9c\99\99 §§§§§ªªªªª§£££\9c \99\96\99\92\92\8b\85\88\85\85\85\85\81~~\81~\81~\85\85\81\81\81~zzwpiic_c__\\XXRRKKNNGGDADDA6000)%)%""\1f"\1f\1f%%,,036==AGKNRUX\_cffficf_c_\\_cmp\99\8f\8b\81\81~zwwttzwwwwttpttwpwtwtpimmmifiptw~~\85\88\8b\88\88\8b\88\88\88\8b\8f\8f\8f\8b\8f\8f\8f\92\92\8f\8f\92\99\92\9cÌÌÌÉ\8fzif_XXRNRRNNRUR\\\_fmmimficfcfcffficfc_ffifcccfiiifmmpptpmmcic__cc_c_\_X\_\\X__c_mz~\85\81~~z~zz~~z\81zzz\81\81~\92\99\99\9c\99 \9c\8b~~tzzwwwwttttptmttwwz~\85\8b\8b\8b\8f\8f\8f\8b\8b\88\88\88\88\81\85~~~ztppfifmmiiiificpif~\81\81\81\81zztttpmpmimimmimtftttpmppppmppttttwwwww~z~~\81~\81~\81\81\81z~\81~z~tmm__\\XRX\XKNR\___UXGX\\UXNNRRRNNNNAAAGRNKKNNKGKAD6:=:AADDDGGKKNNGGD\1f\1f\e\e\e\e\e\1f\1f\1f\1f\1f\1f"""%%%%0%),3,))),)),,,),),,,,,,006666333300))%%"\1f\1f\e\e\1f"\1f06:DAA:=:0,,,,000333666::::===ANDDDDKKKKNNXXUUUXXUUX\___cfimmmmmmmttptppttttptpwtttpppmttffc_c_ccciifiimmfiimmpppwt~zzwtiiffc__X\\XU\\\XNNKGKDGDA=AA:==A=A\85\85\85\81\85\85\81\88\8b\88\8b\8f\92\99\9c£§§ªª§§ª§§§£ \9c \9c £ \9c\9c £§§§±´´±±±±ª§§£§£\9c\96\9c\99\96\96\96\92\99\99\99\99\9c\9c\9c \9c££ \9c\99\9c £§§§§ªªªªªª££ \99\99\99\96\96\92\92\88\85\85\81\85\81\81~\81z\81\81\81\81\85\88\85\85\85\81~~ttmfc____\\\URRNNKKGKGDDDA:330,)))%%\1f"\1f""%,,03:==DGNRUXX\_ccfffcc__\XX\_im\96\8b\85~zzwtpppwttttptpptttwwzwtppppimptwz~\81\85\85\8b\8b\8b\8b\8b\8b\8b\8f\8f\8f\92\8b\8f\8f\8f\8f\8f\8f\8f\92\96\96\99ÉÌÌÌ\8bwc\\RNNKNRRRNUU\\X_ciificf_ccc_ccfffcc_ccfc_ccfmmimpptwwwppmpmifffcc_\\\X\\\Xc_fmtw\81\85\81~zzzwz~zw~z~z\81\85~\96\99\96\9c\96 \9c\8bzwpwzttwtptppptmttww~~\88\88\8f\8f\8f\8f\8b\88\8b\85\85\85\85\85\85~\81~ztppimfimmifffifpifz~~~\81~wwtwtpmpimfmmfitftptpppppppttttwptwzww~z~z\81\81\81\81\81\85\81z\81\81~zztmm\\XXURUXXUKRX\U\UUGXXXRXKRNURRKKNAAAKRNGNKKDDG=A36::==AADDAGA=KDDA"\1f\e\e\e\e\e\1f\1f\1f\1f\1f\1f"""%%%%3)%030,,),)),,0,0,00,000006:66663330,,))%"\1f\e\e\e\1f"3:=GDD=A=3,,03303033366:::====ANADDDGGKKNNXUUURUNURUX\\ccfimmmmmmmpwtttttttwttmtttttttmppcf__c_cffifcfiimfiiimmmpww~zztpiifc_\\U\XUNUURUNKGGGGDAD=A===:=A=\81\81\85\81\85\85\85\85\8b\88\8b\8f\96\99\9c§ª£§ª§£§£££ \9c\9c £ \9c £ £§ª§±´´¸´´±±ª§§§£ \99\99\99\92\96\92\96\99\99\9c\9c\99 \99\9c ££\9c££\9c\9c £§ªª§ªª§ªª§§§ \9c\9c\9c\99\99\92\96\92\8f\85\85\85~\81~~z~~\85\85\85\85\88\8b\88\88\88\85\81\81wwmf_c\\_\\_XUURRKNRNKDGG=:6330),,)%"%"%%%,0336=ADKNUUX\__f_ccc__\_\\\__im\88\85\81zwwptmppppppppppppttwzzzttwtppptwzwz\81\85\88\88\8b\8b\8b\8f\8b\8f\92\92\92\92\8b\8f\92\8f\8f\8f\8b\8f\92\96\96\99§\ÌÌ\88p_XDNKKGKNRRRUXXXU\_ff_c_c\___\_cccc_ccccf__ccfmppppw~\81~~wzttpmiiifcc\\\X\\__cfipww\81\85~~zzzt~~zz\81~zz\85\81~\99\99\99\99\99 \99\88~tttwtttpptppptpttww~\81\88\8b\8f\92\8f\8b\88\85\88\85\85\85\85\85\85\81\81\81zwppmmiiiifffcfcmffwzzz\81~ztwwppmmiiiiicftittppppptppttwtwtww~wz~z\81z\81\85\85\81\81\85\85z~~\81wwtii\XUNURU\UXRRXXURRNGUXXRXGNNRNNNKKD==GNKKKD:GDDA=63666:AAA:AD==A===\1f\1f\e\e\e\e\e\1f\1f\1f\1f\1f\1f""%%),)6%0,0,)0)0,,00000033033333G=::::663300,,%%"\e\1f"\1f%0ADKGDADA0),06306033366::===A=ANDDDDDGGGKKUURRNRRRRRU\X_cfiimppmmmtttttptttwppptttttppmmm_c_\__cffifffiiiiiifmmppwz~wwtpmfcc_\\R\URNNKKRNKDGDGDDDAA=====AA\85\81\85\85\85\85\85\85\8b\8b\8f\8f\92\99 §ª§£§£§£££ £\9c \9c\9c\9c\9c\9c \9c£ ££ªª±±´´´±±±ªª£§§£ \99\9c\9c\96\96\92\99\99\9c \9c\9c \9c\9c\9c\9c££ £ ££§ªªªª§ªª§ª§£\9c\99\99\9c\99\96\8f\92\8f\8b\88\85\81z~~zzz~\85\85\88\88\8b\8f\8b\8b\8b\88\85\81zwpf\c\\\\\\\XUURNNUNNGKDA::6630,0))%)%%))00336=ADKNUX\\ccfc_____X_X__c_fm\81z~wwtptmpppppmpppmppppww~wwwzttttwwzw~\81\88\8b\8b\8b\8f\8b\8b\8f\8f\92\92\96\92\8f\8f\8f\8f\8f\92\8b\8f\92\96\92\99£ÅÉÉ\88\UGDKAGAGKNRRUUUXRXUX\X_\_X\\XU\_c__cc___fcccfiwtwzz\81\85\85\81\81z~wwtpmmii_c___X__\ccimtzw\81\85~\81~zzwzz~~\81\81w~\85~\8b\99\9c\9c\99\9c\9c\99\8b\81itwttwptptmmtpttttwz\85\88\8b\8f\92\8b\8b\88\85\85\88\85\85\88\85\85\85~\81zztpmiifmifficc_i\fpwww~~wptwmmiiffififitmptppmpptpttwwwwwzz~z~~~\81~~\85\85\81\85\85\85~zz~wwtmiX\RNRNU\UXUUXXUNUNGUU6RUGKKRNNNNNGAADKGGGA6DD=A::36666A==:=A::=:3%\1f\1f\e\e\e\e\e\1f\1f\1f\1f\1f\1f"""%,0,6%6,,))0,,0030303333366666KDGA=:::66330,))%\e"%\1f):RGKKGDDD,)0,:60303333:==A=AA==NDDDDDGGGKKURNNRNURNRRXX__ffmpmmmmmtptttptpptmmpppttttmifi__\\__cciiiffiffifiipmptww~zwppmf_c_\\UXNNKKKKNKKDDDGGDDAAAA==AAA\85\85\85\88\85\85\88\88\8b\8b\8f\8f\92\9c £§£ £ ££££ \99\9c\99\9c\99\99\9c\9c \9c \9c£ £§ª´±´´±ª§§§§§ \9c\9c\99\99\96\96\96\99\9c\9c \9c \9c\9c\99\99 £ £ £§£§ªªªªª§§§§ª£ \96\99\96\99\99\92\8f\8f\8b\88\85\85~~~z~~z~\85\88\85\8b\88\8b\8b\88\8f\85\85~zwpfX_X\X\\\_\XXURRURNKKKD=:6:6330,,),))))00036=DDKRU\___cc_\_\_\X\\_\_cfmmwztttpppppmmmmmppmpmmttzzzzz~wwwwzwwz~\85\8b\8b\8b\8b\8f\8f\8b\92\92\8f\92\92\8f\8f\8f\8f\8b\8b\8f\8b\8b\92\96\92\99 Âű_RNDADD==DGKNRRRRURURUXUNNRKKXUNX\___c__c_fff_mmztz\81\85\85\88\88\85\85~~zzwppmiicc__c__c_ffmpt~w\81\85~\81~z~wzz\81~~\81t~\85w\92\99\9c\99\9c\9c\99\99\8f\85ittpptptptmmtppptww~\85\88\8b\8f\8f\8f\8b\88\85\85\88\88\85\88\85\85\81z~zzwpmimfiiiff___f\icttwzzwmttiiicicicifmtptpmmippppwtzzwzz~~~~\81\81~\81~~\81\85\81\81\85\81~wzzzwpiiX\RNNRUXUXXUUXUKRNGUU6NADKGNRKKKKDDAAGDDD=3AA=A::33666A=:=::36300%\1f\1f\e\e\e\e\1f\1f\1f\1f\1f\1f\1f""%%03,3%:,)))3003363633366666:6ANGKDA=:=::6666,,)\e\1f3%,=UKKNK0G))),,6:3633663:===:A=AAKDDADDGGGKKRRRNNRURRRUX\c_cfipppmimptwttmpmmpimppmtpppif___\\\__ffmmmcfffcffimtptwzz~zwppii__\\\UUNKGKKGKGGDGDGGGDDDDAA=AAA\81\85\85\88\88\88\8b\88\8f\8f\92\92\96\99 £§§ \9c\99\9c\96\99\99\96\9c £\99\9c\99 £ §§ª±±±´¸±±±ªªªª§§ \9c\99\99\99\96\96\9c\9c \9c\9c\9c\99\99\9c ££ £ §§ªª§ª§£§££§ª \9c\96\96\92\96\96\8f\8b\8b\88\85\85\81\81\81~~zz~z\81\85\81\88\85\88\88\85\8bz\81zwtmf__XX\X\__X\XXUUXUUNNNGA=D=66630,,0,),,,0336=DDNUU\\__c___\X\XXXX\__cfimtttptppmpppimppmmmpimptww~~~~zwwzwzw~~\85\88\8b\8b\8f\8f\8f\8b\8f\92\8f\8f\8f\8b\8f\8b\8f\88\88\8b\88\8b\8f\96\92\9c§~c\96UDGA=DA:AAGGKNRNRRNRNRNGK:G=GANKRX\\\__ccciifft\81\88\85\88\88\88\88\8b\88\88\85~\81~zwtpmmmf_ccccccciippwz\81\81\85~\85zwzzzw\81z\81~~\88\88w\96\9c\9c\9c\9c\9c\99\96\92\88mttttwtwptppttpmtwz~\88\85\88\8f\8f\8f\8b\88\88\85\88\88\85\88\88\85\81~zzwzpmmmfiifcf___\\fctptwwtipp\ficificmcmtptpmmmpppptwz~z~~\81~\81\81~\81~\81~~\81\81\81\81\81~~zw~wtpfi\XRNNRUUUX\XXXUKRNKRR6KAAKKKRGGGGAG==66:A:,====6633636=:6:666300))"\1f\1f\e\1f\1f\1f\1f\1f\1f\1f\1f\1f"")%36=0:=))3,033336666666:6:::DNNKNGD==A==::::66,\e,6KKKUGNNN%G))),,666633366:=:=:D:ADKAAAADGGGKKNURRNRRRRRUX\_cfiippppmmpttttmmmimimmppppmmf\_\\X\\\cfmipmfifffffipptwz~~~~zptmi__\_\UNNKGGKGGGGDGDDGGGDDGDA=AAA\85\85\88\8b\8b\8b\8f\8b\8f\92\92\92\99\9c£££§£££ £ \9c\99\99\99\96\96\96\99\9c\9c\9c \9c\9c\9c \9c£§ªª±±±´±±§££ £\9c\99\9c\9c\99\99 \9c\9c\9c\99\9c £££ £ª§ª§§§ª £ £§\99\99\92\92\8f\92\92\8b\88\88\85\81\81\81~\81z\81~z~w~\81~\85\81\81\85~\81wtwtppfc_XU\X\\_X_\XXX\\XRUUKDDGG=::633000,,,00366:DDNX\_\cc___\\XXXUXX\ccfffmpptptppmtppmmppmmmmfppptt\81z\81\81~zz~zzz~\81\81\88\88\8b\8b\8f\8b\8f\8b\8f\8f\8f\8f\8b\8b\8b\8b\88\85\88\85\88\8b\96\96\9cÂc_XKDD=:A====DDGKNKNNKNKGD:A63:A=D6NRX\\\\ccfmiimw\85\8b\88\8b\8b\8b\88\8f\88\8b\85~\81~~wtpppiffffcffffmiptzz\85\85\88\85\88\81zz~z~\85\81\81\81\81\8b\8f\92\99\99 \9c\99\99\96\96\88~pwwwttwpttpttptpt~~\85\85\88\8b\8b\8b\88\88\88\88\88\85\81\88\8b\85\81\81zwwwpimmiiiccc____\cfppwmwpimm_fffificicptpttmimpmpptw~~~~~\81\81\81\81\81\81~\81\81~\81\81\81\81\81zz~w~tppii\XURNRRUUXXXXXRNNNNNN3KAAGNGNDDA=:D:663==30::A:6306606:6363330,,,%"\1f"\1f\1f\1f\1f\1f\1f\1f"\1f"%%,%36A0:A6,6,300666666:6::::==GRNNNKGAGD====A=::6K=GNNNUD0%K%D)))0,33:3066::6=6:=DAAAKADADDDDDGKNRRNRURUUUXXX_cfimpmpmimpppppiiifffiipmpmiic__XXU\__ffppppimffiifmpttwzz~z~zppifc_\\\RRKKKDKGGGDDDDDDGGDDGDAA=AA\81\85\8b\8b\8f\8f\8f\8f\92\92\96\92\9c £§£££ \9c\99\96\99\99\99\96\9c\9c\9c\9c \9c\99\9c £§ª±±±´±±±±±±§§§ £\99\9c\9c\9c\99\9c\9c \9c\99\99\9c\9c\9c\9c ££§££§ªªª£££§\9c \9c\99\9c\99\96\92\8f\8f\8b\8f\8b\88\88\8b\88\81\85\85\81\85~~~~~wzwt~ptmp~ttwptpff_UUX\XX\X\\\\\\_\XXXRKKKKAA==6630000000336=AGR__c_ccc\\XXUUURUX\__cffmimtppptpttppppmmiiicmpmpm~w~\81\81~~~z~z~\81~\88\8b\8b\88\8f\8b\8f\8b\8f\8f\8b\8f\88\8b\88\88\85\81\85~\85\88\96\92ª¾mNUDDA==A==:=AAA==A0)G%\e6\1f\1f),0,6:33GNRXXXX_fimmt\81\88\8b\8f\92\92\8f\8f\8f\8f\8b\8b\88~\81~~wwtppiiiiffiiiimmpw~~\81\88\88\88\88\85\85\81\81~\88\88\85\88\81\85\8f\92\96\96\99 \9c\9c\9c\96\99\96\8b\81ztwwwtwpwttwttwzz\81~\81\88\88\88\8b\8b\85\85\85\85\85\88~\88\88\88\85~~zwwmimiiiiccf\__\Xccpptmtpiiicccffiificmwmttmiimmpmpt~~z\81~\81\81\81\85\85\81\81\81\81~\81~~\81~zzzwztmpmiXXXURNRXXUUUXUNKNRKND3KAAKR,KDD==:A6330:03,:6==63336033303,00,0)))%\1f""\1f\1f\1f"\1f""""))))03=,:=:0:,6,0666::::::::===KUKKNGKDKGAADKDAKAGNNKNRKU6,%N)A))),,036636366::::=DDDAK=AAADGGDGGRNRRUUUUUXUX\_cffimmmifimmmmmfcfccffimipmfif__\\X\_cfitttpmmfiimfptwtww~zwzwmpffc_\XXRNKKGDGGDKGGGGGGGGADDAAA=AD\81\81\8b\8b\8f\92\92\8f\92\8f\96\96\99 §££ \9c\9c\9c \9c\99\96\96\99\96\96\9c\9c \99\99\9c\9c\9c\9c\9c£§ªªª±±±±´±±±±§ª££ \9c\9c\9c\9c\9c\99\99\9c\9c\9c\9c\99 \99\99\99\9c£ §££§ª§§§£££\99\9c\99\96\92\96\92\8f\8f\8b\88\8b\88\85\85\88\85\85\85\88\85\85~\81zz~zwmppmfcimmpttpmcc\XUXXXX\\X\____c_\\\UNNKUDGAA6:6033000033:AAG\ccfc_c_XXUNRNRNRU\\_cffmipppppttwttttpppificmmimmptz\81~~\81zz\81~~\85~\85\8b\8f\88\8b\88\8b\88\8f\8b\88\8b\88\88\85~\81~~~~\81\92\96c¾¾NGDDA:=======36))",\1f0"\18\e\e\e\1f%%),30)6GNUUUU_fiptw\85\8f\8f\92\96\96\92\96\96\92\8f\88\88\81\81~~zwwtpmmmmiiiimmmptw\81\81\81\88\8b\8b\88\88\88\85\85\81\8b\88\88\8b\8b\8f\92\96\99\99\9c\9c\99\9c\9c\96\9c\96\8f\88~wzwttwtwwtwttz~~\85\81~\88\85\85\88\88\81\81\85\85\85\85~\88\85\88\88~\81zzwmmpiiiiccc__\\\cftmtmtmiifcfcfiimimfpwpwppfimmmmptz\81~\81\81~~\81\81\81\81\81\81\81~\81~\81\81z~zwtztpmmm\\XXUNRXXUURUUKKNNKKA3GAAGN,GAG==:=6330=63,:6=A:6333,300,0,),,,%%%%"""""\1f"""""%,),,30:,6:=36,:,3:::6::::::====KRGNRDKGNGDDGNGDNDKRKKKR=U3,)R%))))00,033363366:=6=DGGANADDDDDDDGGNRRNRUXXXXU\\__fffpmifcfiiif_XXc\\cffimpmiiifc___ccffmtwwtppimpptttwtwwzzwwwmmccc\\UNNKGGDGDGGGKGGKKGKGADDAA==AD\85\85\8f\8f\92\92\92\92\92\92\99\99\9c £§§££ \9c \9c\9c\99\99\99\96\96\99\99\99\99\9c £\9c\9c\9c\9c\9c\9c\9c££§ªª±±±´±´ªª £ \9c\9c \9c\9c\9c\9c\9c \9c \99\99\9c\9c \9c£ £§§§§§££ \96\99\96\92\8f\92\8f\88\8b\88\85\81\85\81\85\85\88\88\88\88\85\85\81\81~~zwwmmmic_fcimppmi__X\UXUXXXXUX\_\cc____XXUXXNKGD==::666003666DGG_fcffc_\XUXNNNKGNKXXccifimmmppttptttttpppmff_iicimmpw~z~\81~~~\81\81\88\85\88\8b\8b\88\8b\88\88\88\8b\88\85\88\85\85\81\81~~zz~~Â\96_m¾NDDA===A=::::00)%"%"\1f\1f\18\18\18\18\e\18\1f\1f),,,6GKNRNRccip~z\88\92\92\99\99 \96\9c\99\96\92\92\88\85\81~\81~zwttpmpmmimmpmptwz\85\81\81\8b\8b\8b\8b\8b\8b\8b\88\85\8b\8f\8f\8f\8f\92\96\99\9c\99\9c\99\99\99\9c\99\9c\96\92\8b\81~zwttwtzzwztw~\81\81\81\81~\85\81\81\85\85~~\81\81\81\85\81\85\85\85\88~\81wztmmmimmifc_cc\cccftmpippiffffcfiimmmipttwpmifiiiimwz\81~\81~~~~\81\81\81\81\81~\81~\81~\81z~~zwzwtpmm_\\XURNUUXRNUUKKNKKKD3DAAGK,DAK=:=66333A:3::=AA::300033,,,))%))")%%%"%%%"%"%%%))%0,3,3030=336:63::::::::==A===NNDNNDGGKGDGKNGGNGNNKNNR30%)%N%))))3,,03033636:6:6:ADKARDGAGDGDDGGNRRKRXX\X\X\__cffimmfc_ccf_\\UUX\\_cfcippmmmicc_cffmppwzzwwtppttwwwwwwwwwwwwmmfc_X\RGKKDDAGDKGGNKKKNKKGDDDA=:=AD\85\88\8f\8f\92\8f\92\92\92\96\96\99\9c §§§§ \9c \9c\9c\99\99\99\96\96\96\92\96\96\99\9c\9c \9c\9c \99\99\9c £§§ªª±±´±±±±±±ªª £\9c \9c\9c\9c\9c\9c\9c\9c \9c \9c\9c\9c\9c\9c ££§£££ \96\99\96\8f\8b\8f\8b\88\88\88\81\81\85\85\85\81\88\88\85\8b\85\88\85\85\81~wttififc\c_fiimff\\UXX\UUUXUUUX\X_c__cc\\X\\RNRGD===:6:633::6GK_cfficccXXNUKKKKGGK\\_cfffiimpppptptwtttppifc_ffcciimpppz\81\81\81\81\85\85\8b\88\8b\8b\8f\8b\8b\88\88\88\88\85\81\85\81\81z~zzwwzzÂf\i\81RDDD=AAAA6:60,,%""%"\e\1f\18\14\18\14\e\18\1f\e%)%,3DGRRRRfcmt\81~\8b\96\96 £\99 \9c\9c\96\96\8b\88\85\81\81~~wttpppipmpptpttz~\81\85\8b\8b\8f\8b\8f\8b\8f\8f\88\88\8b\92\92\92\99\96\99\9c \99\9c\9c\9c\99 \9c\9c\96\96\8f\81\81zzzwww~z~~tz\81\85\81~~\81\81\81z\81~zw~~~\81\81\81\85\85\88~\85zzwpmiiimifc\cc_ffcippmmpmiffifcfiiimmmpttztpiififimtw~\81\81z~zz\81~\81\81\81\81\81~\81~\81~zzzwwwwtmpc\X\XRRUUUUNRUNKKNGNA3DDDGG,DAG::A66AA=A=6==A==66633000)),))%%%%)%%)%)"%%%%))))))0)0,0,30:06::::===::===A=D==AKKDNKDDDKDDGGKGGKKNRGKRN",%%%0)))),60030003663666:==AK=RGKDGGDDDGGRRNNUUX\\_\_ccfffmmmf_\___\RXUNUX_cfffmpppmpmfccfimpttz~~z\81wtwwwzzwtwttttwwtmmfc\X\NKAGA=ADDKGGKKKNNGKGDDDA==AAD\88\8b\8f\8f\8f\92\92\96\96\96\99\9c £§§£§ \9c \9c\9c\99\96\96\92\92\92\92\96\96\96\99\99 £\9c \99£\9c\9c\9c£ ªªª±±±±±±±ªª££ \9c \9c\99\99\99\9c \9c \9c \9c\9c £ ££\9c\9c \96\96\92\8b\85\8b\85\88\85\85\81\81\81\85\85\85\88\88\85\8b\88\88\85\81\81~ppiffff_X_\__fX_XXURUXXUUUUURKRXU\___c___\__\XXNNDDAA:==6==:GN_ififf___UXNRGKGGDDN\\_ccifiimmppmpptwtttppmfc_ccf_fcfimtz\81~\85\85\88\85\8f\8b\8b\8f\8b\88\8b\85\85\88\81\81~~z~wzwmtpwwfcXN_RAADGDDAA:630)))"""\1f\e\e\e\11\18\18\e\18\e\1f""))"DGNUURffmw\85\81\8b\92\99££§\9c£ \99\99\8f\88\85\85\81~~wpwpmpmpmpmtppwz\81\85\88\8f\8f\8f\8f\8f\8f\8b\92\8f\92\96\96\96\96\9c\99\99\9c\9c\96\9c\99\9c\99 \9c\9c\96\99\8f\88\85\81~~z\81z\81~\81\81~z\85\81\85~~\81~~w~wtwwz\81\81\81\81\81\85\88\81\81~zztpiiimiic_ff_iicmmmmimimiimcfiiiimpppttwtpmiiifmmtw~\81~~~zz~~\81\81\81\81\81\81\81~\81\81~zwzzwztppf_X_UUUURRURRRNGKNGKA3DAAKG,N=N::A66DGDAA:AAD:=63363003)))%%%)%%%)%%%,%)))),),%%),,0,000,60:6::======:=:=ADAKANDGKGDADGDADGKGDGNNRDGRN%"%%%0)))),:3,30303336:666::=KAUKGDGDDDDGGRRRRRU\\Xc\ccciffiiifc\X\\URURRU\\_cfiipptttmmiimmtwwwz\81\81~\85zwzzzzwttwtppttttimf_XX\NGAD:=ADDGGGKKKNKGKDDDDA=AAAD\85\8b\8b\8b\8f\92\92\96\96\99\9c §ª§§£\9c \9c \99\99\92\96\92\92\92\92\92\92\96\99\9c\9c \9c\9c£ \9c££§ª±±±±±±±±ªª§§££\9c\9c\9c\99\99\96\9c\9c £ £ \9c\9c \9c\9c£ £££ \9c\96\99\92\88\88\88\81\85\85\81\81\81\81\81\88\88\88\8b\88\88\88\85\81\81~zpififcc\XXU\\XUXURNNRUXXRURUNKRKRX\\\____\ccc_\XRGGDDAAA=AAGKfmmifif__\UXNKDKDDGDN\\_fffifimmmpmpptttttttpiffffccfciiipw~z\85\85\85\81\8b\8f\8b\8b\8b\88\88\85\88\85~~z~zztptmfmfpc_XK\N=DNKKDDD=330,))"""\1f\e\e\18\14\14\18\e\18\e\e"",%"AGKUUUfimz\85\85\8b\92\99§§£ £ £\9c\96\92\88\85\85\85\81~zttppmppimptpmzz\81\88\88\92\92\92\92\92\92\8b\8f\92\96\99\96\99\99\9c\99\99\9c \99\99\99 \9c\9c\9c\99\99\99\92\8b\88\85\81\81~\85~\85\81\85\81\81z\81\85\85~~~zztwwtwwz\81\81\81\81\81\85\85~~~~zttmmimiifcfimmmmppmmipfmififiimimmtppttwttpiiiimmtwz~~~~~~~~~\85\81\81~\81\81\81\81\81z~zzztwwppfc\\RXXUUNURNRKGNNKGD3GADGK,RUR==D=AGKGDDKDDD:=303360,0))))%%%"%%%%)),),),)),,)%,,00)0,00:36:==AAAAA===:=AR=NDKDDGDA=ADDDADGDGDKKRAA0)%%%%),))))0=0,030363366::6::=GDUKDGDDDDGGGNRRRUX\\\_\cccffiffffcXUXXRRNRRUX\_ffiitptwwwwtmpzwzz~~\81\85\81\85~z~wwwwpttpppttttmmf_\XXRGDA===AAGGKKKKNGKGDGDDD=DAAD\85\8b\8b\8b\8f\8f\92\99\96\9c ££ª§ª§ \9c\9c\9c\9c\99\96\92\96\92\92\92\96\8f\92\92\99\9c \9c § £ £§§§ª±±±±±§ª§£ \99\99\99\99\99\99\9c\9c ££ \9c\9c\9c ££ ££\9c\99\96\8f\8b\88\85\81\81\85\81~~~\85\85\85\8b\8b\85\85\85\85\85~zwmfcfc__XUURXNRRKNNKKNRXURRRUNKNKKUUXX\\___ccfcffUUNRKDGDDDAKXipttimi_\\XXRKDKGDGGN\__ffiffiimimimmtppttttpmfiiicfcfifimtzw\81\81\81\85\8b\8f\8b\8b\88\88\88\85\88\81zzz~wppppiffci_\UGURKNRKNGGG=60,,)%\1f\1f\1f\e\e\e\18\18\14\14\e\e\1f\18"")))6DGRRXfim~\85\88\8b\92\96££ \9c \9c \99\96\92\8b\88\85\88~~zwtttpmpmptttpzz\85\85\8b\96\96\92\96\96\96\8b\8f\96\96\96\96\96\99\99\9c\9c \9c\96\9c \9c\99\9c\96\8f\88\88\85~\81\81\81\85\85\81\81~~~\85\81~\81ztwppwttwz~\81~~\81\81\85~z~\81wttptmpmmiiimpppptppimmfiffmiiiimmitttwwwwtpmimmpmwz~~\81\81~~~~~~\85\81\81\81\81\81\81\81\81~~~~zwzwmtfc_\RXUDUNRNNNKGNKNKD6DRGGK,X\XRNNRDKNKGGNGGG6=630360,,))))%%%""""%),,%,),,),,)),000,300366:=AAGADADA==AA=UARGGADDAA==AAAADGADGKKND=,%))%)))))),0:,0000036633=:6:=:DGUKAGGGGGDGGRRRRRUX\\\__ffiiffiifc\RXXNRRRRRU_cffimtptzzzzwwt~z~~\81\81\85\85\85\85zzzwtttpppmmpptttmpf__UURKG==::AAGGKKKKNGKGDDDDDADADG\88\88\88\8b\92\8f\96\96\99 §§§ª§££ \9c\9c\99\99\96\92\92\92\96\92\92\96\92\96\9c\9c£ £§££ §££§§±±±±±ª§§££ £\9c\9c\9c\99\9c\9c £ £ \9c\9c\99\9c £ \9c\99\99\92\8b\8b\88\85\85\81\81\81\81\81\85\88\88\8b\88\81\81\81\81\81zzwmfcc_\\RRNNNK=:DD=AAGKURNNRUKGKGGNKUUXX\__cfifiiiXX\RRNNXUmptwwwwtimc__XXUNRKGGKNR\fccffffiiiimfmmppmpttttpimmicffffcifppt~~~\81\88\8b\8b\8b\88\88\88\81\85\81~zz~wpipmfif_f_XRDRRUXUNRKGDA:0,))"\1f"\1f\e\e\e\18\18\18\18\18\18\e\18"\1f),,6ADRN\ifm~\88\88\8b\8f\96 \99\99\9c\99\9c\96\96\92\8b\8b\88\88\81~~wptttppmptpttwz\85\85\8f\96\99\96\99\99\96\8f\92\96\96\92\96\96\99\96\9c \9c\9c\99\9c£ \96 \99\92\8b\8b\88\85\85\85\81\85\85\85\81\81\81\81\81\81z~ztpmptpttwz~zz~\81\81~wz~wtwtwppmpimmptttttpmimificimmimmmpmtptwtzwtpmmmpppzz\81~\81~\81~~~\81~\81\81\81\81\85\81\81\81~~~~~~zzwmpfcc\UXXDUNNNNNRGKKRNR:DXNUc,\__U\XURNRKKKKKKG:A:6303,,0,)%%%%"""""%%,)"))),%),%,,,,0000036:=ADDKDDDGAAADN=RNRK==D=A=AA=AA=DGADGGGAG),))))))),),,,60300003::63=66:::AGRKDDGGKKDGGRRRRRUX\XX__cffiffifccXRUURRRNNRU\_fcimpttw~~~zzw\81~\81\81\85\85\81\81\81\81~wztttppmmiimmttppppc_RUNNGAA==ADGKKKKGKKGDDDADDDDDGK\88\85\88\8b\92\8f\96\99\9c £§ª§§££ £\9c\9c\99\9c\99\96\96\96\92\96\92\96\96\96\99\99\9c §§££££££ªª±ª±ªª§§ £ \9c\9c\9c\9c\9c\9c £ £ £££ \9c \9c \9c\9c \9c\9c\99\99\96\92\8f\8f\8b\88\85\85\81\85\81\81\81\85\88\8b\85~~z~~zwtmf___XXNNKAGD::A==AADGGGDKNRGDGDGKKKRUUX_ccifimmmp\cmU_mptwtzzzzzwmmf_cXXXRUKGGN_\ciififffiifiiimmpppptttppmmmmffffffffmptww~~\88\88\8b\88\88\8b\88\85\88\85\81~zzwtimiifc\X\\UGURX\XRRGGA=:0,,%"\1f\1f\e\e\e\1f\18\18\e\e\18\14\18\14\1f\1f%,03==NR_fiw~\88\88\88\8f\92\92\96\92\96\92\96\92\96\92\8f\8b\8f\8b\88\85\81~wttppptpttppww~\81\88\8f\96\96\99\96\96\96\8f\92\92\96\8f\99\92\99\92\99\9c \9c\9c £ \9c\99\9c\99\92\8f\88\88\88\88\85\85\85\85\81~\81\81\85~\81zzwtmmmpmpptw~wzz~\81ztzzztwwzptppmppttwtttpmimifffimimiimpptppwtzwwtptptttz~~~\81~\81~\81~\81\81\81\81\81\81\85\81\81\85\81\81~~\81~~ztimc__XX\XDXRKNKKUDKUU\U=_\_Xff_ccX_\XUNNNKKGGKG==66636,0,0)))%%%%%%%"%0,\1f%,))),,),,),0,0336:=ADGGNDDGDADAURRRRRK==A=A:====D=DDAADDD0K%),))))),,,,0,,00003036633:6:6===GRGDDKGKGGGGRRRUUXU\XX\_ccfffffccc\UURRNRNRUU\\cfimpptwzz~~~z\81\81~~\81\85\85\85~~ztwtpppmimffimtpppttp_NRNNGDD=AADGKKGKGGGGDDAAADDGGGN\8b\88\8b\8f\92\92\99\9c §§§ª§§£ \99\9c\9c\9c\96\99\99\92\96\96\96\96\96\99\99\9c\9c \9c £££ £££§ªª±ª§§§ \9c\9c\9c\9c \9c \9c££ £ §££ \9c\9c\99\9c\9c\99\9c\96\92\96\96\96\96\8f\92\8f\8b\88\88\85\85\81\81~\81\88\88\81zzwzzwtpic_\\UXKDD==A66:::==ADDDDGDNDAAADDGKRRUX\cfiimppptttppwptwzw~~~~~~wpffc\\UUXRXX_c_fmmiifiiiiffiimmppmptptppmmpiiiiicfiimmptzz~\85\88\8b\88\88\8b\88\88\88\85\81~\81~wwmmfiic_\X\XKUR__\UUKKA::30))%\e\1f\e\e\e\e\18\18\18\e\e\18\18\11\e"%0006AKN\cmz\81\88\85\88\8f\8f\8f\8b\8f\8f\8f\88\8f\92\8f\8f\8f\8f\8b\8b\88\81~zwttptwtttttwz~~\88\92\99\99\9c\96\99\96\8f\8f\92\92\92\96\96\96\96\96\9c\9c£ \9c£ £ £\9c\9c\99\96\8f\8f\8b\8b\8b\8b\88\85\85\85~~\81\81\81\81~zzwpmpmmmmmttzzwzz~wwzz~wzwwtwttpttwtttpppifiiicffmmpimpmpttmwtzwwwtwwwww~~~~\81~\81~\81\81\81\81\81\81\81\85\85\85\85\85\81\81~\81\85\81z~pmpc\\X\\XX\RKRKKXGNXXc_=m_miiicff_c_XXKNKKNKKGDA:::666300,,)))%)))%%%%,,%))%,)0)))),,00366:=ADDGGNGGDAGDAXUUR=RK==DA==::==AAAAAAADD,K%)),,))),,,,,,,0330603336366:6:=:DNDAGKKGGGDGNNRRXUXX\XX___cccfff__\XUURRRRURX\__cfipmtwwz~~~z~\81~z~\85\81\81zzwptpmmmmiifcfipptttwt_NNKKGGD=AADGGGGGGKDGAAAADGGGKKR\88\8b\8f\8f\92\96\9c\9c §§§ªª££ \9c\99\9c\9c\99\9c\99\92\96\96\96\96\96\96\99\99\9c\9c\9c\9c£ ££§ª±ªªªªª£££ \9c \9c\9c \9c\9c £\9c ££§ § £ \9c \99\99\99\99\96\92\8f\96\92\92\92\92\92\8f\8f\88\88\85\88\85\85\81z\85\85~wwtzwtpmf_\XXRUGA==:63:66===AA=AAADA====ADGKNRRX__iimpttpwwwtwztwz~z\81\81\81\81\81\81zpwif_\\XX__ccfiippmiimiimiimiimmpmmtttptpppmmiiffcimpimtww~\81\85\88\88\88\88\88\88\88\88\88\88\85\81wtpmffi__\XXXNU\ccXXUNND:63,))%\1f"\1f\e\1f\e\18\18\18\e\1f\14\e\14\1f%%0003DKKX\m~\81\88\88\88\8f\8b\8b\8b\8b\8b\8b\88\8f\8f\8f\8f\8f\8f\8b\8f\88\85~~wwwtwwwttttzz~~\85\92\99\9c\9c\96\99\96\8b\92\92\92\92\96\96\92\92\99\9c\9c £ ££ \9c\9c\96\96\85\8b\88\88\8b\88\88\85\85\81~z~\81~\81~zwwpmmpimpmttwwwzwzwzzzzzzwwwwwwtwwwtttppmiiiim_ffmmmmmpmpppiwpzzzztzzzzz~~\81~\81~\81~\81\81\81\81\81\85\85\88\85\85\85\85\85\81\81\85\88\81w~pmtc_XXXXXU\UKXKR\KRXUfmcwtpmipmiccfcUUKKGGKKGDAA66=::66600,,))),,))))%))),,%0,0,,%,)0036::=ADDGKKRKKGNKXAUUUN==KA=A==:::===A=A=A=AA)G%,)0)))),,,0,,0030063333633:666:=ARA=DGGDDDGDRNRRXUX\\\X__\c__ccf\\XUXXUUUUUU\\__ccmppttzw~~~~~\81~w~\81~~twpmpmiiiiifccffmptwwwwpKKGGGDDAAADGDGGKGKDDDAADDGDDNN\88\8b\8b\8f\8f\92\96\9c £ §£§§ª££\9c \9c\9c\9c\9c\9c\99 \99\96\96\99\96\96\96\96\99\99\9c\9c\9c\99 £§ªª§§§£ \9c \9c \9c § £££ \9c\96\99\96\96\92\8f\8f\92\92\96\96\92\92\92\92\8b\8b\85\88\85\81~z\81ztttpwimcic\XUUNG=A=:::6::6:::======A:=:6=:DDGKNRU_ciiptwttzwzwz~wzz~~\81~\81\85\81\85~pzmif____ccffimtttpiiimmmmmmmmmppmptpttttptpmimfimimpmpttz~\81\81\88\88\88\88\85\8b\8b\8b\8b\8b\88\81zwpiccf\\\\XURU_ff\\XRKG=60)),"\1f\1f\1f\e\1f\e\18\e\18\1f\e\14\1f\e"),033AGGGU\i~\81\85\85\88\8b\88\88\8b\88\85\88\88\8b\8b\8b\8f\8f\8f\8b\8b\8b\85\81\81wzztzwwtwww~z\81\88\8b\92\96\99\99\96\99\92\8f\92\8f\96\96\92\92\92\8f\99 \9c\9c £££ \9c\9c\9c\92\92\85~\85\85\88\8b\8b\85\85\81~~~~~~zwwwpmmmiipmppttwwtzwzwzzzwztwzzwwzwtpttpmififipfifmpppipmppmiwpzzzzwz~~z~~\81\81~\81~\81~\85\85\85\85\81\81\85\88\85\88\85\88\85\85\81\85\85\85zzpmpc_\X:UXU\XX\KX_cRXitpwzwtpitpmfff_XRKKDDGGDA6=3::::6:::6,,,,)3,,,),%,),0,%3,000,0,336:==AADGGKKRKNKRN\NUAUK==KAAA==6::A::A=A===DA)G),),),,,,,,300,03003333333666:6:==N=ADDKGDGDDRNNUUX\__\\________c__XUUXUXXXXX\\\_ccmmptpwwzzz~z~zwz~zwptmfiififfff_cffiptwzwwtGDDDDDDA=DADDGDKGKGDGDDGGGDGRR\88\8b\8b\8f\8f\92\96\9c £ ££§§ª \9c\9c\9c\99\9c\9c\9c \9c\99\96\99\96\92\96\96\96\9c\9c\9c\9c\99\9c \9c \9c\9c £ £§ªªªª§££\9c \9c\9c\9c £ £££ ££ \9c\9c\9c\9c\99\92\96\92\92\8f\8b\8b\8f\92\96\96\92\92\92\92\8b\8f\85\85\88~zwwwppfmtfi___XURRKD===6663663::=:=:=:=A6=:::=ADGKKRUcfmittwww~wzz~zwzz~z~~~\81~\81~twpmiccfcffiimmwwtpmpmmpppmppmptppptpwttttttmmpifptptpptww~\85\81\85\88\88\88\85\8b\8f\8f\8f\8f\88\85~ztf_\c\\\_XXRU_ii_\\UNG:30)%)\1f\e\e\e\18\e\e\e\e\e\1f\1f\e"\1f%,0066DGKGRXf\81\85\85\85\85\88\85\85\88\81\85\85\85\88\88\88\8b\8b\8f\88\8b\88\81\81\85z~zwzwttwztzz\85\8b\8f\96\99\96\99\99\96\8f\8b\8f\8f\96\92\96\96\8f\8f\9c\9c\99 £ \9c\99\8f\88\81~\81\81\88\88\88\85\88\85\81\81~~~~ztwttpmmiipmpmptttwzwzwzzzwzttwzzzzwttwpppifffimiffmptpipmpmiiwtzzzzz~\81~z~~\81\81~\81~\81~\85\85\85\81\81\85\85\8b\85\88\88\85\85\88\81\81\81\85~wtimc\_U:UXU\X\__\_fimmwtz~zwtpwtpiiccXNGGAAD==:6:3666::===:,,G,GA:,0,0))))0036::A:0306::===ADDGKKNRKKNURXRUAUN=AG==A:=6=:A=:A=====A=)D))),,,0,,,,3,003330606633366666:==K=DA=GGADDDRRRRU\\__\\_\_\c__c___\XUXX\UXXX\\\\cfimmppttwzwzwzwtwzttif_cffcfcccc_cccimpwwwzwADADDADA=DADGGGKKNKGGDGGKKKRUU\85\88\8b\8f\8f\92\92\99\9c ££§§§§£ \99\9c\9c\9c\9c \9c\9c\9c\99\99\96\92\92\96\96\96\99\99\9c\99\99\9c\9c\9c\9c \9c\9c §§ªªª§§ \9c \9c £ ££ \9c \9c\9c\96\99\99\92\8f\92\8f\8f\8b\8b\88\8f\8f\96\96\92\92\96\92\8b\8b\88\81\85~ttttmmfcmfc\\\XRKDGA=::66603666::==:=6==::=::=ADKKKN\fcmmtwwzz~wwwzwtzwzwzz~~z~zwtppmffifiiimpmzzwwptppttpmttpptptpttwttttttpmtmpwwtwttwzz\81\85\81\85\85\85\85\88\88\8b\8f\8f\8b\88\85zwccXXcXXX_X\XX_if___RKD660,")\1f\e\e\18\18\e\e\e\e\18\e\1f\1f"%)0366:DDKDUUi~\85\85\88\81\85\85\81\85\81\85\81\81\85\81\85\88\88\8b\88\88\85\81\85\81~~zzwtwtwzt~~\88\8f\92\99\99\99\99\99\99\92\8b\8f\92\96\92\99\92\92\99\9c\9c\9c£\9c£\9c \9c\9c\99\96\85z~z~~\85\88\85\85\88\88\81\81\81\81\81~ztwttppmimmpmmpptptwwzzzzztwtttwzwzztttpmmfciifmmiimmpmimmpmimzwzzz~~~\81~~z~~\81~\81\81\81\81\85\85\85\85\85\88\85\8b\88\88\88\85\85\88\81\81\81\81~tpii_\_R:U\\\U__c_iimmpww~\81zzwtwwmmf__UNKD6===::3:63336=:AA=KKKNKD=,,,,,,,,336:==DA3AG:==A=AADGGKKNRNKKRUURUAUN=AD::A6:3:6A::========)3,)),,,,,,,,00036600606:6333366:6::N:A==DDDAADNRRNRX\__X_c___c___\__XUX\\\U\\X_\\\cfmpmppttwwtwtwtpttpffc__cc_cc_____cciimtwtwtADAAAAAA=DADGGGKGNNGGGKKNNR\\81\85\85\88\88\8f\8f\92\96\99\99\9c££§£§££ \9c\9c\9c\9c\99\9c\9c\9c\9c\99\96\96\92\92\96\96\96\96\99\99\9c\99\99\9c\9c\9c\99\9c\9c\9c \9c ££ª§ªªªªª££\9c\9c \9c \9c ££ \9c\9c\9c\99\99\92\96\8f\8f\8b\8b\88\8b\88\88\8b\8f\92\92\96\92\92\96\8f\8b\88\85\81\81~wwppifc_\c_X\XURNGD:::633300663:=:==:6==6::=:ADGGKNU_ffmptwzzwztttwptztzwzwzwwzwwmptmiimimmmmppzzzztwttwwttttttwppttwtwttwwpmmtpwzzwzwtz~z\85\85\81\85\85\85\85\88\8b\8b\8f\8f\8b\88\88zm__XXcXX\_\\\\fiic\\NGA360,\1f%\1f\e\18\18\18\18\e\18\e\18\1f""",036::=DDK:XUt~\85\88\85~\81\81~\81\81\81~~\85\81\81\85\88\88\88\88\85\85\85\81\81\81zwwwwtwzt~\81\8b\8f\92\96\99\99\96\96\96\92\8f\8f\92\99\96\99\92\96\9c \99 £ £\9c\9c\9c\99\99\96\92\81wzwzz\81\85\81\81\85\85~\81\81\81~\81zwwwtppmmmmpppmppppttwzzzwwtttpwwwwwpptpmmifiicipmmmptmimippipzwz~~\81\81\81\81\81\81~\81\81\85\81\81\81\85\81\85\88\85\88\85\88\88\88\88\88\88\88\85\85\81\81\85\81zppii_X\N:X\__\c_f_mmppttz\81\81zwtwtwpic\_UKK=::=:6:6:33333:=DAANNKRNG=3000000366:DAAGDKDK6ADDADDDGGKKRRNKNNRXRRARKA=:::=6606:A:::=======,),))),,,,,,,30663:0633666333366::66N==A==AAAAAKNNNRUX\\\__c_cc__c_c\\X\_\\U\\X\___cimppptptttpppppmpfifc__c_____\__\\ccifiptptXDADAAA=A=DAADGGKKNKKGGNNURUz\81\81\85\85\85\8b\8b\8f\92\96\96\9c £§§§£§£\9c \9c\9c\9c\9c\9c\9c \99\96\96\96\92\92\92\96\96\96\99\99\96\99\9c\99\9c\9c\9c\99\99 \9c\9c §ªªªªªª§£ \99 \9c £ £\9c\9c\9c\9c\99\96\96\96\8f\8f\8b\8b\81\81\81\85\85\85\88\8b\8f\8f\92\8f\92\92\8f\8b\8b\81\85\81\81ztpmmc_\\_\UXURNKGD=::33030,336::6:=::==66:==DDGKKR_ciiptttwwtwppptmtwwwwwtwzttttmmpimmimmmppttww~~wwwwzzwwzwwwwtpttwttpwttpppttz~~zzzzz~~\81\85\85\85\85\88\85\88\8b\88\8f\8b\8b\88\88~m_\UUc\X\__X__imif_XDDA,30)""\1f\e\18\e\14\e\18\e\e\e""%)036:==ADDK:\_w\81\88\85\85z~~z~~~w~\81\81\81\85\85\85\88\88\85\88\85\85\85\85zwzwtwz~z\85\8b\8f\8f\92\92\99\99\96\92\92\8f\8f\92\96\96\99\9c\92\96 \9c \9c\99\99\96\96\85\85wtttww~\81~~\81\85~~\85\85~\85~zzzwtpmmiimppmpmpmtww~~zwwttpmtttttpptpmpmiimfimmpptpiipmppmmzt~\81\81\81\81\81\81\85\85~\81\81\85\81\81\81\88\85\88\88\88\8b\88\85\88\85\88\8b\88\88\85\85\85\81\81\81zppmi\\XN:\_c__c_c_iimmtpz~~ztptptmf_\\UKGA:==66:::333636=ADDNNRURKA=:333:6=6==GDDGGKGNADGGDDDGGGKKNRRNNRGURUANGA:::6=6333:=6:::======0))))),,0,,,,00:33:3:333333636:::=6:N:=A:==ADAANKNNNUU\X\_cfcccccccc_\\__\\X_\\__c_cmmmpptptppmmppmiific__\c_\_\\X\\\\_cfcfmpm\XD=AA=A:==AAADDGGKKNKGGNNX_p~\81\81\85\88\81\8b\8b\8b\8f\92\96\99 ££§§£ª£\9c \9c\9c\9c\9c\9c\99\9c\99\99\92\96\92\8f\96\92\96\96\96\96\96\99\99\9c\9c\9c\99\99\9c\9c\99\9c £§ªªªªªª§££ \9c£ \9c \9c\9c\99\99\96\92\92\8f\88\85\88\88\81\81\81\85\85\81\85\88\8f\8b\8f\8f\8f\8f\8b\88\8b~\81~~zttpmc\XXXUUURRKKDAA:=6030,0066=66:=:===:6::ADGKNKUcfmmttppttmiiimmipwttwwwtwptptpmmimmfmmmmttwzz~zzwwtzzzz~zzzzwttwwttpttwpmmtw~\81~z~~~~\81\81~\81\81\85\88\88\88\8b\8b\88\8b\8b\8b\88\88zm_\XXc_XX\\\ccmpmfcXDA=,0,%%"\1f\18\18\e\18\18\18\e\1f\1f",0036==AAADDKG_c~\85\88\81\81zztwzzzwz~~\81\81\85\85\88\85\85\85\85\85\85\81zzztwzz\81\85\88\8f\8f\8f\92\92\99\99\96\92\96\8f\92\92\96\96\99\9c\96\99\9c\9c\9c£ \9c\99\96\96\8b\85\81~tpppttzwzw~\81~\81\85\85\81\85~~~zwtptppmpppppmmmtwtzzwwwtptmptptpmptpmmpimmimiimmwppmppmpmpzw\81\85\85\85\81\81\85\85\85\81\85\81\88\85\85\85\8b\88\88\88\8b\88\8b\85\88\88\8b\88\88\8b\88\85\81\81\81~zppmi_\XN:__cccc_c_ffimwpzzzwpfpmpiXXXXRGDD==:636666366::=DDGRNUURRDA=:=:AAAKDAGDDKDGGNDGKGDGGGGKKKNRURRNGRRRGN:D6663:66666:66:::=====,)),),0,,,,,,,,=0366=3033363666:6==:K::=:::=A=AKKKNNRRXUX\_cccc_cfffc______\_\__cccfmmpmppmptpmmmmmffffc__Xc_\\\XXX\X\\_cccfff\XGAAAAA=AAAADDDKGKKKGGGKR\ftz~\81\81\88\85\8b\88\88\8f\92\92\96 £§§§§ª£ \9c \9c\9c\9c \99\99\96\96\92\92\8f\92\92\96\96\92\96\96\96\99\96\99\9c\99\9c\99\9c\9c\9c\9c £ªª§ª§ª§£ £ \9c\9c£ \99\9c\99\99\96\96\92\8f\8b\8b\88\85\85\81\81~\81\81\81\81\81\85\8b\88\8b\8b\8b\88\88\85\88\81~zzwwwmic\\XRURNNNGKGDA:=:30303336:::====A=:6=ADGKNRR_fipptpmmpiccffiifmtpttwzttpttptmpmmmimipipwwz~~z~zzwzzz~\81~~~~zwwwwwtpttwtptwz~\85\81~z~\81\81\81\81\81\85\81\88\88\85\8b\8b\88\8b\8b\88\8f\88\8bwi_\U\c_\\_\\fmpppif\D=A,,,)%%"\e\e\e\18\1f\18\e"%)36:=:AAAADDDNUc~\81\85\88\81~zwtwwtwzz~~~~\85\81\88\88\85\85\81\81\81\85~zzwzz\81\81\88\8b\92\92\92\92\92\99\99\96\96\92\92\8f\8f\99\99\9c\9c\99\9c \99\9c \9c\9c\99\96\92\8fiffpiiiimpwtwtz~\81\85\88\85\85\85~~\81~wzwwttppmppppimtttwwwwttmtmmtptpimtppmpmmmmmifpptptptpipmpzz\81\88\85\88\85\81\85\85\81\85\88\85\88\85\88\88\8b\8b\88\88\8b\88\8b\88\88\88\88\88\85\8b\88\85\81\81\81zztpmic__c:___ccc\c_cccmztwwwiiciXc\UUU\NGDA==66666:33:===ADGKURXXXURDAAADDGDNGDGAGGDGGKGGGDGKKGGKKKNRRRNNGKNNKK:A63306:::66666666:====)))))),,0,,,A,,=0033:033333666666:A:G::::::====KGNKRNNUNUX\__c_c_iffc__ccc____cccfffiimmmpmppmimmiicfcf___\_\\\XXXUXXX\___cccc\\KDDDDD=AA==AAGGGGKGGDGKU\ipw~~\81\88\85\88\88\8b\8f\92\96\99 §§§§£ª£ \9c\99\99\99 \9c\99\92\96\92\92\8f\92\92\92\92\96\96\99\99\99\96\99\99\96\99\96\99\99\99\9c\9c£§§ªªªªªª§££ \99\99\96\99\92\92\8f\88\88\81\85\81\85\85~~\81\81\81\81\81\81\88\85\88\88\85\88\88\85\85\85zz~ttwifcX\URRRNRRKKKDD==:33003366:===AAAAA=:ADGKNRRUcmmpttmifmcfcccifiippptwwwttttttpmmmmmiimmtwwzz~~~z~z~w~~\81\81\81~\81zwwtwwtpttwttwz~~\85\85~~\81\81\81\85\85\81\85\85\88\8b\88\8b\8b\8b\8b\8b\88\8f\88\8fif__U_c__\_\85cftwtpmi_A:A0,,,)""\e\1f\e\1f"\18\e%)36:=A=DDDDGGDRX\88\88\85\85\88\81wzwtttttzw~~~~\81\81\85\85\81\81\81\81\81\81\81~~zz~\85\85\88\8b\92\92\96\92\92\99\99\96\92\96\92\92\92\99\9c\9c\9c\9c\99\9c\9c\99\9c\99\99\96\8f_ffcfiicfiipppwtwz~\85\88\88\85\88\81\85\85~~~zzwwtpmptppmptptwzwttpmpmmpppmfmppppmimmppmimpwtwtwtmtmtzz\85\88\85\88\88\85\88\88\81\88\88\85\8b\85\8b\88\88\8b\88\8b\8b\88\8b\85\85\88\88\88\85\88\85\81\81~~wztpmicccf:__\cccGc_c_cmwwtttfN\\UURKRRXNGD==:6:::663:AGDADGKNXUX\\XUXRDRGGKGNKDD=GDDGKKDGGGGKKGGKKKNRRNNKKNKKNG:A63303:::::6666666:===)))),),,,,,,D0,:,,006000003333::==D=G:::::=====KGNGNKKRKRUX\\__ccifffcccfc__cc_cfcfffimmpmmmpmmmificfcfc__\\\X\XUXUUUUX\_____\\\NGGDDAA===ADAGDGGGGGGGKU_mppzz~\88\88\88\88\8b\8f\92\99\9c ª§ª§§§££\9c\9c\9c\99\9c\9c\99\99\96\96\92\8f\8f\8f\92\92\96\92\96\96\96\96\96\96\99\96\99\99\96\99\9c\9c §§ª§ªªªª£§£ ££ \9c \9c\99\96\92\96\8f\8f\8b\85\85\81\85\85\81\81\81~\81\81\81~~~\85\81\81\85\81\85\85\81\81\81wzzpptmf__XUNRRRNNNKKGGAA:66606366=AA=DADDDA=AGKKRRR_fppttpif_cfcc_cffiimmmtwwwptttpppimmppmmpptttw~\81\81\81~~~~z~z~\81~~\81~wwwztpppttwwz~\81~\85\85\81\81\85\81\85\85\85\85\85\85\88\8b\8b\8b\8b\8b\8f\8f\8b\8f\8b\92ii_cX_cc_\i\88\81\85z~wppf_D==3,)0,)%\e,)%,\1f\18)06:=AAADDDDGGNX\88\8b\8b\88\85\88\81zzwtppttwwz~~~~\85\81\85\81~\81\81\81~\81~\81~~\81\88\88\8b\8f\92\96\96\92\96\96\96\96\96\99\96\8f\96\9c\9c \9c \99\9c\99\96\9c\96c_c\_\_cff__ffmimtttwz\81\85\88\85\8b\85\88\88\81\81\81\85~zzwtittpppttmptwtppmmmppmpppfmppmpmmpmmppmmmwwwwwwtwptz~\85\88\85\88\88\88\88\88\85\88\88\85\8b\85\88\8b\8b\88\88\8b\8b\8b\8b\88\88\88\88\88\85\85\85\81~zzwztmimcffc:c_\cccG__c_cmttpmfcKXURRAGNNUKGA==::=::3:3ADKGDAGNRUUX\_\X\UUUKKNKNKDG=DADDGGGGGGDKGGGKKKNRUNNNNRKGNG:A63000===::::6:6:6:::=,,,,,,,00,0,D3,00,000000003363==AAA:G:=:6::====GGKAKGKNGNNRUX\\cfiiffcccf__c_ccfffffiiiipmmmmmmmiffcfccc___X\XXUUURURUXX\\\\\XXXKKKGDDA===DDDDDGGDGGGDG_cimpwwz\88\88\88\85\8b\8f\99\9c\9c£ª£§ªª§££\9c \9c\99\9c\9c\99\99\96\96\8f\92\8b\8f\92\92\96\96\92\96\96\92\96\96\99\99\96\96\96\99\9c\9c£ §§§ªªªªªªª§§§ \9c\9c\9c\99\99\92\92\8b\8b\88\88\85\81\81\81\85\81\81\81~\81\81\81\81z~\85~\81\81\81\81\81~~~zwwtppmc_c\URRRNNNRNKKGDA6:6:036::=AAAADDDDDKDKKNRUXcittttmicccccfc_ffffmmmtwwwtttpmppmmmtpmppmpttw~~\81\81~~~zz~~\81~z~\81~zwwztppmttwww~~~\81\85\85\85\81\81\85\88\88\85\88\85\88\88\8b\8b\8b\8f\8f\8b\8f\8f\8f\92mf_c\ccc\_m\8b\85\85~\81zztccKDA6,),,,))0,33",,3:AAA=ADGGRGG\8b\8b\8b\8f\8f\8b\85\85\81zzwtpmttttz~\81\81\81\88\85\85\85~\81\81\85\81\81~\81~\81\81\88\8b\8f\92\96\99\99\96\99\96\96\99\96\99\96\8f\96\99\9c \9c\9c\9c\99\96\96\99\92_\_UXX\_cf__cciffppptw~\85\8b\8b\88\88\8b\8b\88\85\85\88~~~zttttpptpppptttmmmmimtimpmfmppipmmppmppmpmwwzzwzwztw~~\85\8b\88\85\8b\8b\8b\88\88\88\88\85\88\88\8b\8b\8b\88\88\8b\88\8b\8b\8b\85\88\88\88\85\81\81\81~wwzztmimcffcccc_fc_G___c_ipimc\XKGRNK=DKKRGG=:::::==:=ADGNKGDKKNURXX__\_XXXNGRNNGDGADDAADGDGGDDGDGGGKKKNUNRNNRGDKD:A6A333=====:::::::::::,,,,00,,,,0,A0003,333000030066AAD=D=K:::66::::=DDGAGDGGDKKRUUXX_cfiicc_ff\c_\_ccfffcffiimiimmmmiiicffccc___\\\XUURRUNRUU\\X\XXUUKNKKGGDAAADDGDGGDDDGGGGccimptww\88\85\88\88\8f\92\9c £§§£§§§£ \9c\9c\99\9c\9c\9c\99\9c\99\96\92\92\8f\92\92\96\92\96\92\92\92\92\96\96\99\99\96\99\96\9c \9c££§§§ªªªªªª§§£ £\9c \99\96\8f\92\8b\8b\88\88\88\85\85\81\85\85\81~~\81\81\81\85~\81\81z\81~\81~~~zzzwtpmmmccf\XRRRNRRRNKNGGDA=:=:366:ADDDDDDKGGNGNRRUX\fmtttpiifcccccc_cfffimpptwwtptpppmppmptpppptttw~\81\81\81\81~~~~z~~~wz~zzzzzwtttwzwzz~~~\81\81\85\85\85\81\88\85\88\81\85\85\88\88\88\8f\8f\92\8f\8b\8f\8f\8f\92ic\c__cc_cp\92\88\88\81\85\85~w_fNGD:0,,00,,0066:63:=DDD==DKK\8fGK\8f\8f\8f\8f\8f\8f\88\88\85z~zttpttttz~\81\81\85\88\88\85\85\81\81\85\85\85\81\81\81\81\85\85\8b\8f\92\96\96\9c\99\99\99\99\99\99\99\99\99\99\96\9c £ \9c\96\92\96\8fpXUXUXX\Uccc_c_fc_mmiwt~\88\8f\8f\8f\8b\8b\8f\8b\88\88\8b\81\81\81~wwtppmtpttptttmmpmimpmmmifipmmpimpppppmpmwz~~z~zzwz~z\85\88\85\88\88\88\88\88\8b\88\8b\88\8b\88\88\88\88\88\88\8b\8b\8b\8b\88\85\88\88\88\81\85~\81~wtzztpmpfffffcfcf_\\__c_\fmfc_NRGKKKD=DGDNGD:66=6=:A=ADGKNKKGNNNRUUX\__\XUXNNRRNGADDGAAAADDDGDGKGGGGGGKNRNNRKNDDAG:=6D333AAA====:::::::::,,,,0,,,,,,00000000000000030::ADDAAAN6=666:::::AA=A=DGKGGGNUXU\c_fifc_ccc___\_ccccccfcffifiimmiiiifcffcc_c\\\XUUURRUNRUUX\XXRURRGNKNKDGDDDGGGGGGGGGKGGKfcimptww\88\85\88\8b\92\96 £ §£ £ª§£ \99\99\9c\99\99\99\99\96\92\92\8f\92\92\96\92\99\96\92\92\92\99\99\99\96\99\99\99 ££§§ªªªªªªª§§ª§£££ \9c\9c\96\96\92\96\8f\8f\88\88\88\88\85\81\85\81\85\81~~\81~\81z~~z~~~~zzzwztpmmpmfff_XXUNNRNNNKNKKGDGA==:6:ADGGGGGGNKKRRRUUX\_fppwtmmiffcccccccfffmmpmttwtttpmmmttttttpttttpw~\81\85\81\85~~\81~zzz~wzz~~z~zwwwwz~zzz\81z\81\81\85\85\88\88\85\88\85\88\85\88\85\88\88\8b\8f\92\8f\92\8f\8f\8f\92\92if_cccfccmt\96\88\8b\85\88\88\81z_cRKG:30,330,33::=A6=DGDDAADKN\92G\92\92\92\92\92\92\8f\88\88\85~~ztwtttwtw~\81\81\85\88\88\88\88\81\85\88\85\85\85\81\85\81\88\88\8b\8f\92\99\96\9c\9c\9c\99\9c\99\9c\9c\96\9c\9c\9c \9c \9c\9c\96\92\92\8f\XUUXXUXU___\__c\_ciitpz\85\8f\92\92\8f\8b\8b\8f\8b\8b\8b\85\81\81~zzttpptptppptpmimimmpmmmifipimmfmppmppptmtz\81\81~~~zz~zz\88\88\88\8b\88\8b\8b\88\88\88\88\88\88\88\88\8b\8b\8b\85\8b\88\8b\88\88\85\85\85\85\81\85~~zwwwwttptfificffcc\U\\\_\\\XXUUGNGKGDG=DGDKKA=06:6==DADGKNKGGKKNRRURUX\\\UUUNRURRKDGDDDAADDDDDDDGDGGGGKKNRRNRKKGDAGG:6G=03AAAA====::::::::,,0,,,,,,,,,0000000000000000::AAADDAN6=366:::::AAAA=DDKGGKKRUUX__cfcc\c_c___\__cccc_fcffffffimmmiiifffcc_c_\\XURXUURNRURXXUURRNNGNKKKDGDGGGKGGGGKKGNKGNfcimpttw\85\88\88\8b\96\99 ££ ££££§£ \9c\9c\99\96\99\99\99\99\99\96\96\96\92\96\96\92\96\99\99\96\96\96\99\96\96\96\99\99\99 ££§§§ª§§§§§§£§§££ £\9c \9c\9c\96\92\8f\92\8b\8b\88\88\88\88\85\85\88\85\85\81z~~z~zzz~~~zzzwzwzttpmmmiiffc\XNRRRRRNNNKKGKDDADADDGKGNGKKRNNUUUXX\_cittwtpmicf_ccc_cccffiimpwttptttpppttwwwwtwttwtz~\81\85\85\85\81\81\81zzz~zz~zz~~~zzwzz~\81~~z~~\81\85\85\88\88\88\88\88\88\88\85\8b\88\88\8b\8b\8f\8f\8f\92\92\92\92\96\92ifccccfffpw\99\85\88\88\85\85~~wfUND:3303330636=ADAAGGDGAADNN\92\96\96\96\96\96\92\92\8f\88\8b\85\81\81~wttptwtz~\81\81\81\88\88\88\88\81\85\88\88\85\85\85\88\85\88\88\8b\92\96\9c\96\99\9c\9c\9c\9c\99\9c \9c\9c \9c £ \96\96\92\8b\XXRUXU\U_\\X\\X\\Xfmwt~\81\8f\92\96\92\8f\8f\92\8f\8f\8f\88\85\81~zzwwtptttppmpmififiipipiiimmmmifmmpmpptwtz~~\85\81\81\81~z~~~\85\8b\88\8b\88\88\88\88\85\85\88\88\88\85\8b\88\8b\8b\85\88\8b\8b\88\85\81\81\81\81~\81~zzzzttwtttfiiicff__\UXXX\XXUNNRRDNGKDDDADGGKK=:36:6:AD=GKGKKDGKKKNNURRUX\_UUUUUUUUKGKGGDAADGDAADDDDGGGGGKNRRNNKKKGDGK:GGA60AAAA====::::::::,,,,,0,,,,,,0000000000033303:6ADADDDN:A6:6:6:6:==AAAGGGGKKNUUUU\_cf____\___\___cfcccccfffcfffiimimmififc_c\_\\UUXUURNRRRUURRNNKKGKGGGDGDGGDKGGGKKNKRNRRffiipttw\85\85\88\8f\99\99 ££ £ £££\9c\9c\9c\99\99\99\99\96\99\99\99\99\99\99\96\99\96\96\96\9c\99\99\96\96\99\96\99\92\99\99\9c££ §§§§§§§£§§§£££££\9c£ \9c\9c\99\99\92\8f\8f\8b\8f\88\88\88\8b\88\85\85\85\88\85~~~wwwzzz~~zz~tzwzwwtppppmmmf_\URURRRRRRNKKNGGDGDGGKKNRNNURRRXXXX\_cfmtwwtmiiffcf__c_c_cffiimtppppttpttttzwwzwzwtzww\81\81\85\88\85\81\85\81z~z~~w~~~~~z~~zzz\81\81~\81~\81\81\85\85\85\88\85\8b\88\88\8b\8b\88\88\8b\88\8b\8f\8f\8f\92\96\92\92\96\96\96ifffcfiiit \85\85\8b\85\85zzwiXKN=3633333:66AAGDDKGAGADGRN\96\99\99\99\99\96\96\8f\8f\8b\8f\88\85\81\81zzwtttt~\81\85\81~\88\85\88\85\81\85\85\88\88\88\88\88\88\88\8b\8f\92\96\99\99\9c\9c \9c\9c\9c \9c£ £ \9c\96\92\8f\8b\XXUU\U\U\_\U\\X\XXcmww\81~\8b\8f\92\92\8f\92\92\8b\8f\92\88\88\81~zzwwwpptwmpppmiif_ffmmmfiiimpmfiimtpmptzw~~\81\85\81\81~~~~\81\81\88\88\8b\88\85\88\85\85\85\85\85\88\88\85\8b\88\88\88\85\88\88\88\85\85\81\81\81~~\81~~z~zwwwttpfffffcc\\XUURUXRURRNNNDKGKAAAAAGDGNA:3:::ADDAGGDGGADGKKKNRNNRXX_XXXXXXXUKKKGGGDDDDDAADDDDGGGGGKNRRNNNKGKDGN=DKD:3AAAA=====:::::::,,,,,,,,,,,,00000000000000336:AADAGDK=D:=::6666A==AAGKNKNRRUUUXX_cc\_\\__\\\___cfcccccccccfccimmmmmmiiifcc__\_XUUUURNUNRRRNNKGGGDGDDDDDADGDKGGGKNNNNRUUcffimttw\85\85\8b\92\96\9c £ \9c \99\99\99\99\9c\99\96\99\99\99\9c\9c\99\96\99\99\99\99\99\99\9c\99\96\96\99\92\99\96\99\99\9c£§££§§§£§§§£§£ £ £ \9c\99\96\92\8f\8f\8b\8b\8b\85\88\88\88\88\88\88\85\85\81~~zwtzz~z~z~~tztzwtttpttpppif_\RXXUUUUURNNNKKKKGKKNNRURRXUUUX\\\_cfiptwwpmifci_c___cccfciifippmmptptttwwzwwzwwzwzz~\81\81\85\85\85\85\81\81\81\81z\81zz~~~~~~\81~~~z\85\88\85\85\81\81\85\88\88\85\88\85\88\8b\88\8b\88\88\88\8b\88\8b\8b\8f\92\92\99\96\99\99\99\99miiffmmmm§§£\81\81\88\81\85wztmX\XA=::63:6=:6DKGGGNGDGDGK\96\96\99\9c\9c\99\9c\96\96\92\8b\8b\8b\8b\88\85\85~~ztwtw\81\81\85\85\81\88\85\88\85\85\85\81\85\88\88\88\88\88\88\88\8f\92\96\99\9c \9c \9c £ £ §£\9c££\9c\9c\96\92\8b\88XXXUX\UXUX\\R\XXXX\_itw\81~\8b\8b\8f\96\92\96\92\8f\8f\92\88\8b\81\81~zwwwppwtppptmiff_cimpifmiimpmfmmpttttz~z\81\81\85\81~~\81\81~~\81\81\88\88\88\88\85\88\88\81\85\85\85\85\85\85\88\88\88\88\85\88\88\88\85\81\81\81~z~\81\81~~~zwzztppcccccc_XXURUNUXRRRNNKKGKGKD=DDADDKND=3===DDADDDAA==A=GGGKNKKNUU\\\\\XUXXKNNGKGGGDAAAADGDDGGGGKKNRRNNNKKKDGK=DGG=6DDDAA======:::::,,,,,,,,,,,,000000000000000036==DDDAK=A6::::666DAAADGKRNRUUUXX\\___\\\X___\\\\\_cc_cc_c_ccfccfiipmpmmiifcc___\XXRRUURRNRRNKKGDDDAA=A=AA=ADDGGGKKNNNRRUXcffiittt\81\81\8b\92\99\9c \9c£ \9c\9c\9c\9c\9c\9c\99\9c\99\96\99\9c\99\99\99\99\9c\99\9c\99\99\99\9c\9c\9c\9c\99\99\99\96\99\96\99\99\9c\9c £§£§§§£§§££§£ \9c£\9c \9c£\9c\99\96\92\92\8b\8b\8b\88\8b\88\88\88\88\8b\8b\85\81\85~~~zztzwzzzz~ztwwzwwwwttwtttmic__\\XUXXUURRNNNNNKKNNRUUUUXXXX\___cffmtwzttpic_f___\\___c_ff_ffmiimppttw~zz~z~zzzz~z\81\85\85\81\85\81\85\81~\85\81~\81~~~\81\81\81\81\81\85\81\81\81\81\8b\8b\88\88\85\85\88\8b\8b\85\88\88\88\8b\8b\8b\8b\85\8b\8b\88\8b\8f\8f\96\96\99\96\9c\9c\9c\99\99timippmmȨ́~\81\85~\81wwpm____N==::=::=AGNKKKNGGDGGN\99\99\99\9c \9c\9c\99\92\92\8f\8f\8b\8b\88\88\85~\81~wzwz\85\85\85\85\81\85\85\88\85\81\85\85\88\88\88\88\8b\88\88\88\8b\8f\96\96\9c \9c £ £ £ §§\9c\9c\96\8f\81\8bXXUXX\X\X\X\RXUUXXX_iww\81z\8b\8b\92\96\92\92\92\92\8f\8f\88\8b\85\81~~wwwttwptpppmmffc_mmpfipimimpimimwwww~\81~\81\85\85\81\81~\81\81~z\81\81\88\88\88\8b\85\88\88\85\81\81\88\81\85\88\88\88\88\85\88\85\85\85\85~\81\81~z~\81\81\81~~zzzwtttc__X__\UURRRRUURNRKRNKKKGGA:GDDDDKNGA=A:AGA=DAA==::6:DDDGKGANRNXX__\XUXUKNNGKKGKDADAADDDGGGGKKKNRRNNRKNNGGGAADG::GGGDAA======::::,0,,,,,,,,,,000000000000000033:=AADAK:A6:::6:66D=DDGKNUUUXUU\\_\__\\_\X_\\\\X\__c__c_cfc__ccffiipimmmiifcc_c_\\XRRRRRNNRNKGGDGAAA=:6:=::=AADGKGGKKKRNUX_cfiittt\81\85\8b\8f\96\99\9c\9c \9c\9c\99\99\99\99\9c\9c\99\9c\99\96\9c\99\99\99\9c\99\99\99\9c\9c\9c\9c\9c\99\99\9c\99\99\99\9c\96\99\9c\9c\9c££§§§§§§§§§ £ \99 \9c \9c\96\99\96\92\8b\8b\88\85\8b\85\88\88\88\88\8b\85\81\81~~zzwtwwzwwz~zwwzwwzwwttwtttpmfcc__\X\\XXUURRNRNNNRRRUXXXX\\\_cccfimptwzttmi_\c\c\_X\\\__cfccfimmmmpwww\81zz\81z~~~~z\81~\85\88\85\85\85~\81~\81\88\81\81~\81~~\85\85\85\85\85\85\85\85\88\88\8f\8f\8b\8b\85\88\88\8b\8b\88\88\88\8b\8b\8b\8b\88\88\8f\8b\88\8f\8b\8f\96\96\99\99 \9c\9c\9c\96ipmtpppÉ\85\81z~zz~ttmic_ccXGD=AA=:DDGNNKNKKGGDKR\96\99\9c\99\9c\9c\9c\9c\92\92\92\8f\8f\8b\8b\8b\85\85\85\81~~z~\85\81\85\85~\85\81\85\85\81\85\85\88\88\8b\88\88\88\88\8b\8b\8b\96\92\9c £££££££\9c££ §§ \9c\96\8f\85\88X\XX\_\\XXRXRUUXXXU\ftz\85~\8b\8f\92\96\96\92\96\92\92\92\8b\8b\88\81z\81zwwwwzpwpppmmcfc_impcmpmmfmpmmmpwwz~\81\85\81\81\85\81\85\81~\81\81z~\81~\88\88\88\8b\88\8b\85\88\81\81\85\81\85\85\88\88\88\85\85\88\85\85\81~~~z~z\81\81\81\81\81~zwwtttc\\X=\RRXNNRRRURNRKRNKKKDGD=GDDGGNNKDAD:=D=:A=6::63636:=AADAKRKDU\\XUUXXNNNKGNGKGDDADDGGGGGGGGGKRRNNNNNRKDDAA=D:=GGGDDAA=====::::000000,,,,,,0000000000000000006:=ADDK==:=6:::6:AAAAGKNUXX\XX_\\_\_\\\\X\_X\\X\_cc_cc_ffcccfcfifimiiimiifcc__\XXUUURRNKKNKGDAADAA=:666:6::=ADGGDDGGGNNRX_cfimttw~\81\88\8b\92\96\99\99\9c\99\99\99\96\96\9c\99\9c\99\9c\9c\99\9c\96\99\99\99\99\99\96\9c\9c \9c \99\99\9c\99\99\99\9c\96\9c\9c £§§§§§§§§§£ £ \9c\9c\9c\9c\9c\9c \9c\99\92\96\92\92\8b\8b\85\85\88\85\88\88\8b\85\88\85~~zzwztpztwzzz~zwzwzzzzwwtwwtwtpiffc__\c_\\XXUUNRRRRRUUUX\\\____cffimptwwztpmic\_X_\\XXX\\\_c__fiiiimpwww\85\81\81\88\85\81\81\81\81\81\85\81\88\88\85\88\88~\81\81\85\88\81\85\81\81\81\81\85\85\88\88\85\88\88\8b\8b\8b\92\8f\8f\8f\88\8b\8b\8b\8b\8b\8b\88\8b\88\8b\8b\8b\88\8b\88\88\8f\8f\8f\99\96\9c\9c \9c\9c\9c\99\96\92zwwpt\85z~zzwttpmiff_ff\XKRNGDDGGGNRKNNNGKDNU\99\99\9c\9c \9c\9c\96\92\92\8f\92\8f\8b\8b\88\88\88\85\81~z\81\85\81\85\81~\81\85\85\85\81\85\85\88\88\8b\88\8b\88\8b\8b\88\8b\92\8b\99\9c £ £§££ §§ £§\9c\9c\96\8b\88\85\_\__c\\XXUUNNRXXXRXcpif\81\8b\92\96\96\96\96\96\92\96\8f\8f\88\88~~~zzzzwwtwppppifff_imtfpmppcptppptzz~\81\81\85\85\85\85\85\88\81\81\81~~\81\85z\8b\85\8b\88\8b\88\85\85\81\85\85\81\85\85\85\88\85\85\81\85\88\81~zzz~~z~\81~\81\81\81\85zwwtwf_\\:URRUKKNNNRRNRNNNKGKGDAAGDDDGNNGDDA:AA:63:)030333666::AAGNADXX\\RU\XRRRKGKKGKADDDGDDDGGGGGGKRRNNNKRNKGDDDAA:=GGGDDDDAA===::::00000000000,,,,,0000000000000066:=DDN:A==6:6:36DDDDGKRR\\_\\c____\____\__\XX\\_cf_cfcfiimffcfffiiimfimiifc\\_X\XUURNKGGKGDD==A==:63663366:=ADDAAGGGKKRX_cfmpwww~\81\85\85\8b\8f\92\96\99\96\96\96\92\8f\99\96\9c\99\9c\9c\99\9c\99\99\99\9c\99\99\96\9c\99\9c\9c \99\99\99\9c\9c\99\9c\99\9c\9c\9c£§ªª§ª§§§§£ \99\99\99\99\9c\9c\9c\99\99\96\92\8f\8f\8b\88\88\81~\81\88\88\88\85\88\81\81~zwzwttwwwwwzz~wztwwwzwwptttttpificc__fcc_\cXUUUUUURXXX\\__cccffiimptwwzwtmifc\X\_XXXXU\\\__\\cfmmmppzzz\81\88\85\8f\88\85~\88\85\85\88\88\8b\8b\88\88\88~~\81\81\85\85\85\81\85\85\85\85\88\8b\88\8b\8b\8b\8f\8f\8f\92\92\92\92\8b\8f\8f\8b\8b\88\8b\88\8b\8b\8b\8f\88\88\88\88\8b\8f\92\8f\99\99\9c\9c\9c£\99\99\99\99\92\92~zztwtwzwwttpmiicicfc_\RURKGKKKKNRGRNNKNUNU\96\96\99\9c \9c\99\92\8f\92\8f\92\92\8f\8b\8b\8b\8b\88\85\81~\85\85\85\81~\81\81\85\85\85\81\81\85\8b\88\8b\8b\8b\8b\8b\88\8b\8b\92\8b\96\99 £ §§££ £§§£§£ \99\92\8b\85\81cc_ccc\\XUXUNRNUX\RUcmff\85\88\92\96\96\92\96\92\92\92\8f\92\88\88~~~zzzwzzwwtppmmiif_mitfpitmcpttttwz~\81\85\85\85\88\85\85\85\85\81\81\81z\81~\81~\88\88\88\88\8b\85\88\81\85\85\81\81\85\88\85\88\85\85~\81\85~zwwz~zz~~~~~\81\88~zzttfc\_::RRRKKKKKNNNNRNNKDGGD=DGDGAGRNKGAA6A=330,%)),000336:::==KADU\\\RUX\RRUNKKNGKADGGGGGGGGGGGGKRRRNNKNNGGDGDAA=:GGGDDDDDAAA=::::3000000000000000,,,,,000000000336:DAN=A=A:=:633DDDDGNUUX\c__c__\__c_\\\\_\X\\\\cc_ccfiimpiififfimmmiiiiffc_\_\XXURRNKGDDDAD==:::6633330306:=ADAAGDGGGNU\fiptzzw~~\85\85\8b\8f\8f\92\8f\92\92\92\88\8b\96\92\99\96\99\99\99\9c\96\99\99\9c\99\99\99\99\9c\9c\9c\9c\99\9c\9c\9c\9c\99\9c\9c £§§ª§§§£££ ££\9c\9c\9c\9c\9c\99\99\99\99\99\96\96\96\92\8f\8f\8f\8b\88\81~\81\85\88\88\88\88\85\85~zzwwpttwwzzww~wzwwwzzttmtptptpifmifffiffc_f\XXXUXUUUX\__cciifmimpmttzwwwpifc__\\\XXUXUXXX\\XX_cmiiptz~~\88\8b\88\99\8b\96\8b\8b\8b\8b\8b\8b\8b\8b\8b\88\88\81\81\85\85\85\88\88\81\88\88\88\88\8b\8b\88\8f\8f\8b\92\92\92\92\96\92\92\8f\8f\8f\8b\8b\85\88\88\88\8b\8b\8b\8b\8b\8b\8b\8f\92\8f\92\99\99\99\99\99 \99\96\96\96\8f\8f\81z~wwtwwwtpppffiffcfcc_\UUNNNNNKNNKRNNKRXUX\96\99\99\9c\9c \9c\99\92\92\96\92\92\92\8f\8b\8f\8f\8b\8b\85\85\81\85\85\88~\81\81\81\81\85\85\85\85\88\8f\8b\8b\8b\8b\8b\88\88\8b\8b\8f\8f\99\9c\9c££ ££§ £ª§§§§\9c\96\96\8f\81\81ffcffc__XUXRRRRUX_UU_ffi\81\8b\96\96\92\92\92\96\92\92\8f\8f\8b\8b~~~w~zwzzwttppiimmimmftmpmwppttwww~~\81\85\88\85\85\85\85\85\85\81\81~\81~\81z\81~\88\88\88\85\8b\85\85\85\85\85\81\85\85\85\85\85\85\81z~\81wzttzzzz~~~z~\81 \81z~ttff__::NRGGGKGGKKKKNNNNDGDAADGDG=KRKGG==3=:3)"%%)),,0033666:==KAGR\\XRXU\URURNNNKKAGGGGGGGGGGGGGKRRRNNNKKKGGKADA:=GGGDDDDDAAAA=:::300000000000000000000,,0000000033:ADKADAD=A:336DGDGGNRXX\__cccc___cc\\\_\_X\\_\cc_ffimiptmmimiiippimiiifccc\\X\XXRRNKDAAA=A==:6663000300,6:=AAADDDDGKKU_iipwz~zzz\81\85\88\8b\8b\8f\8f\8f\88\8b\85\88\8f\8f\96\92\96\96\96\99\99\99\96\9c\99\99\99\99\9c\99\9c\99\96\99\9c\99\9c\9c\9c \9c£££ª§ª§§ª££££ £ \9c\99\99\96\99\99\96\96\99\96\92\8f\8b\8b\88\8b\81\81\81\85\8b\88\8b\8b\85\81\81~zzwttwtzzwwzztwwtwwwtpppmtmppmiimiiimmifci_\\XXXXXX___cfcmmmppptpwwwzzwpmif__X\\UURURUXUXRUX\fmmmpwz\81\81\8b\92\9c£\9c\99\99\96\96\92\92\8f\92\8f\8b\8b\8b\85\81\81\88\88\88\85\85\85\8b\8b\8b\8b\8f\8b\92\92\8f\8f\92\96\96\99\96\8f\8f\8f\8b\88\8b\85\88\8b\8b\8b\8f\8b\8b\8b\8b\8f\8f\92\92\96\99\99\99\96\96\9c\96\92\92\92\8b\8f\85zzzwtwwwpmmmfffiffccc__XXXRRRNNKNKNNNNU\X\\96\99\96\9c\9c\9c\9c\96\92\96\96\92\96\96\8f\8b\92\8f\8b\8b\88\88\81\85\85\85\81\81\81\85\81\88\88\88\88\8b\8f\8b\8f\8b\8f\88\88\8b\88\8b\8b\8f\99\9c ££ £§£££§§§§££ \96\96\8f\81\81iffifcc_XXXURURRX\XXcfft~\88\92\96\92\92\92\92\8f\92\8b\8f\8f\88\81~\81z~~zzzwttppmmpmmpiitptpzttwwzzz\81\81\85\85\88\85\85\81\81\85\85\85\85~\81~~z\81~\88\85\85\81\88\88\88\85\81\81\81\88\88\81\85\85\81\81w~wwwppwwwwzzzzz\85\88\81z~twfifc6NKNKKDKGDKKG:AKKKGDAADDDADANRGDDAA6:30%"%%)),,0033666::=NADD\\UUXRXURXNRRRKKDDGKKKKKKGGGGGKRRRNNNNKKGKGDGA:AKKKDDDDDAAAAA==:3000000000000000000000000000000006=ANAADDA=6633DGGGKKUXU_ccfcffc_ccc__\_X\\\\\Xcc_ccfmmtwpmmtmmmmpmpmiffccc_\X\UXRRKGAAAA==:::636000,00,,36:=AAAADDKKK\cmmtz~\81~ww~\81\85\88\88\8b\8b\88\88\81\85\88\8b\85\92\8f\8f\92\92\96\96\99\99\9c\9c\9c\99\99\9c\99\9c\99\99\99\9c\99\9c £§§§§§ª§ª§££§ £ \9c\99\99\96\92\99\96\96\96\96\92\92\92\8b\8b\8b\8b\81\81\85\85\88\88\8b\88\88\81\81~z~zwwzwwzwzwwwwwwtttptppiwttttmmpmmmppmicic___\\\\_ccffiippptttwtzzzzzwpmifcc\_\RXUURRUNURUU\cimptzz\85\81\99 £§£\9c\9c\99\99\96\96\92\96\92\8f\8f\8b\81\85\81\88\88\8b\88\88\8b\8b\8f\8b\8b\8b\8b\8f\92\92\92\92\92\92\96\92\8b\8b\8f\8b\88\8b\85\88\88\88\88\8b\8b\8b\8b\8b\8f\92\92\92\92\96\96\99\92\92\99\92\8f\8f\88\85\8b\81~zzzttttpmmififffcfcccc\\\\UURRNKKNNNNR_\_\96\96\99\99\9c\99\99\99\92\96\96\92\92\92\92\8b\92\8b\8b\8b\88\88\85\81\85\85\85\81\85\88\85\88\88\88\88\8b\8f\8f\8f\8b\8b\88\88\8b\88\8f\8f\92\99\99 ££££§§£§£§§ª§££\96\96\92\81~mfifffc_XXXURRRRXXXX_icw~\85\88\96\96\8f\8f\92\8f\92\8b\8f\92\88\85\81\85~\81~zzzztttppppmptimttttzwztzz~~\85\85\85\85\85\85\88~~\85\85\85\81\81\81\81zz\81~\88\85\81\81\85\85\85\85\81\81\85\85\85\81\85\81~~pztttmpttttwzzzz\85\88\81z~wtiiic:NGKKKDGDDGGD3AKNNGGGDGAA=DAKNKDAAA363,%"%%)),,0033666::KRDAD\XURXNUUNUKRRRNKDGKKKKKKKGKGGKNRRRRNNNNKKKGDGDG=KKKGGDDDAAAAA===63333300000000000000000000000003066AK==DA=:6666DKKGKNRXXc_ciffifcfcfc_\c\\\XXX\___ccfimptttmwpppmtmpmfff_cc_\XXXXRRNDADAA==6::633000,,,,,33:=AAAADGKKN_fpmwz~\81\81ttz~\81\81\85\85\8b\85\85\81\81\85\88\88\8b\8b\8b\92\8f\96\96\99\99\9c\9c\9c\99\99\9c\9c\99\99\9c\99\99\99\9c\9c \9c££££ª§ªª§§§§§§\9c£££ \9c\99\96\96\96\92\96\96\92\8f\96\8f\8b\8b\8b\88\85\81\85\85\88\88\8b\85\88\85\81\81~~~zzzwzzwwztwttwtwttwpppwzwwwppwpptptpmfifccf____cffiimmtttwwwwwz~zzzwtpmffcX_XU\URRNRNUURU\_fiptww\85~\9c§ªª§£ \9c\9c\99\99\96\99\92\92\8f\8b\88\88\85\8b\85\88\8b\8b\8f\8f\8b\8b\8b\8b\8b\8b\8f\8f\8f\8f\92\8f\92\8f\8b\8b\8b\8b\8b\8b\88\88\85\88\88\88\8b\8b\8b\8b\8f\92\92\8f\8f\92\92\96\8f\8f\92\88\8b\8b\85\81z~~zwwttttmmmfciifffffcff____X_\RNNNKNNRR_f\\\96\96\96\99\99\96\96\96\96\96\92\92\92\92\8f\8f\8b\8f\8b\88\88\85\81\85\85\85\81\85\8b\88\88\8b\8b\8b\8b\8f\8f\92\8b\8b\88\88\8b\8b\8f\8f\96\99\9c £§£§£§§§£££ªª§£\99\96\92\81zmimcffc_XXXUURRRXXXX_mfw~\85\88\92\92\8f\92\92\8f\8f\8f\92\92\8b\88\85\85\81\81~w~zztttpmmpptttptwwzzz~~~~~\81\85\88\85\85\85\85\85~~\85\85\81\81\81\85\81wz~\81\88\85\81\81\81\81\85\81\81\85\81\88\85\81\81~zzpwtpmpmpmttwzzzz\85\88\81~\81ztmmmcXNDKKGGDADDDD3=GNRKGKAD=D=AAKKNG:=A333)%"%%)),,0033666=:NNADDXGXUXRRUNRNRRRNNDKNKKKKKKKKKGGKRRRRRNRNKKNKGDDKANKKGGGGDAAAAA===:666663333300000000000000000000003:=K=:A=::3333DGGKNKRX\_\ciififfiffc_\c\\XUXU\\___ccfmptwzwzpppptpmiccc_c__\\XXUURNDDDDAAA6::630000,0,0033=AADDDDKKGRcctpzz\81\81\85mppp~~\81\81\88\81\85\81\81\81\85\88\88\8b\8b\8f\8f\92\96\99\96\99\9c\9c\99\99\9c\9c\99\99\99\99\99\99\9c\99 £ §£§§ª§§£££ £££ \9c\99\99\96\96\96\96\96\92\8f\96\8f\8f\8b\8b\8b\85\85\85\85\88\85\8b\88\88\88\88\85\81\81\81~~zzzzzzwttpttptttttptw~zwzww~twwwptmimffcicffcfiimmppwtwzwzwz~zzzzwttmfc_Xc\R\RRRNRNRUUUX\ciptww\81~§ªªª§£ \9c\96\99\96\9c\92\96\8b\8f\8b\8b\88\8b\88\8b\8f\8f\92\8b\8b\8b\88\8b\88\8f\8f\8f\8b\8b\8f\8b\8f\8f\8b\88\8b\88\88\88\85\88~\88\85\88\88\8b\8b\8f\8f\8f\92\8f\8f\8f\8b\92\8b\88\8f\85\88\85~~z~zzzwwwwtmipifffcffffcffcc_c\imcNNNNNRRU\8f\92\\\92\92\92\96\96\96\96\96\96\96\96\96\92\8f\8f\8b\8f\8b\8b\88\88\85\85\81\85\85\81\85\8b\88\8b\8f\8b\8b\8f\8f\8f\8f\8b\8b\88\8b\8b\8f\8f\92\99\9c\9c £££££§§££££§ªª \99\8f\81wificccf_X_\XURUUX\\\cmiwz\81\88\8f\8f\92\8f\92\92\8f\8f\92\92\8f\8b\88\88\85\85\81z~zzwwtppipptwwww~w~~~\81\81\81\81~\85\85\8b\81\85\85\85\81\81\81\85\81\81\81\81\85\85w~~~\85\85\81\81\81\81\81~\81\85\85\85\85\81\81zwpptpmmmimipttwwww\81\85~~\81zwmiicXRGGKGDA6DDAA3:GRRNKNADAD=AANNNG6=A330)%"%%)),,0033666::KKAAGUGURUUNRNNRURURNKNKNNNNNNNNNNNRRRRRRRNNNNNKGGGNDKKKGGGGDDAAAA====:::::663333000000000000,,00000000:AG:6=:==6003DDDGNKRUX\\cfmfifiiiff\X_XXXRURXX_\___ciptw~\81~twppttiff__\_____\XXXURGGDDDA=:::630000,0,0036=ADGDGGGNNUcfttz~\85\85\88iffpwz~z\85\81\81~\81\81\81\85\88\8b\8b\8f\8f\92\92\96\96\99\9c\99\99\9c\9c\9c\99\99\99\99\99\99\99\99 ££££££§§§§ £ £ \9c\99\99\96\96\96\96\96\96\92\92\92\8f\8f\8b\8b\8b\85\85\85\88\88\88\88\8b\88\8b\8b\88\85\85\85\81zzzz~zzzwpttttwttwtwwz\81~~zzz\81\81\81~\85~~zptmffmiiimimmpppwzwwzwzwz~zzwwwttifc\X_\RXRNRNNNRRRXU\cimttw~\81ª±ª§£ \99\96\99\99\8f\92\8f\8f\8f\8b\88\8b\8b\8b\8b\8f\8f\8b\8b\8b\88\88\8b\8b\8b\8b\88\8b\8b\8b\8b\8b\88\85\88\85\85\88\81\85\81\85\85\88\8b\8b\88\8b\8b\8b\8f\8f\8b\8b\8b\8f\8b\88\81\88\88\85~zz~zzzzzwttpipmffffiffffcfcffmitwwcKRRNURU\8f\8fX\\8f\92\92\96\96\96\96\96\96\96\96\96\92\8f\8f\8b\8f\88\8b\85\88\85\85\81\85\85\81\85\88\88\8b\8b\88\8b\8b\8b\92\8f\8b\8b\8b\8b\8f\92\92\96\99\9c\9c££££ ££££££§§§ª\9c£\9c\92\81tfc_fc_fcXcX\XRUX\___fpitz\81\85\88\8f\92\92\92\92\8f\92\96\96\8f\8b\8b\8b\85\85\85z\81zzzwwttmpttwzzz\81z\81\81\81\85\85\81\85\81\85\85\8b\81\85\85\81\85\81\81\81\81\81\81~\81\81w~z\81\85\85\81\81\81\81\81\81~\81\81\81\85\81\81zwpppmmmiimmpptwwwt~\81\81~~zzmffcURGDGDAA6DA==3:KRURNNADAD:A=KKKK6A=03,)%"%%)),,0033666::GGDADRKRNRRNRNNRRRRRRNNNNRNRNNRRRRRURRRRRRRNNNNKGKKKGKKKGGGGGDDDAAAA=::::::666663333300000000,,,,,,,0006=K66=3::3000AAADKGNRUUX_fmiiiiiifcXU\UUURURUU\\\\\_fptz\81\85\81wztptpf_c__\_\__\\XXUXUKKKGGD=::=:30,00,00033:ADGKKGNKNRXcftww~\81\81\85fcfmtptz\81~~~~\81\85\85\85\8b\8b\8f\92\8f\92\96\92\96\9c\99\99\9c\9c\9c\9c\9c\99\99\99\9c\99\9c £§££§§§§£££\9c£\9c \9c\99\9c\99\99\96\96\96\96\96\96\92\96\92\8f\88\88\88\88\88\85\88\88\8b\85\8b\88\88\8f\8b\85\85\88\85~zzzzwzzttppttwwtwwzz~\85\81\81~~~\85\85\85\81\88\88\85\81twpmpmmmppmppptwzzzzzz~z~~~zwwwtpic__\\\RUNNNRNNRRRUX\_fitpwz~w±´±±ª§ \9c\99\99\99\92\92\8f\8f\8b\8f\8b\8b\88\88\8f\8b\8b\88\88\88\88\8b\88\88\88\88\85\88\88\88\8b\88\85\81\85\81\81\85\81\85\85\88\85\85\88\88\88\88\8b\88\8b\8f\8b\8b\88\88\8b\8b\81\88\85\85z~z~zz~zzwwwmmmiiiffffififcfiipwwzztNUURXXc\8f\8bX\8b\8f\8f\8f\92\92\96\99\99\96\99\96\96\92\8f\8b\8f\8f\88\8f\88\88\81\85\81\81\85\81\88\8b\88\8b\8b\8b\88\8b\8b\92\8b\8f\8b\8b\8f\8f\92\92\96\96\9c §££§ £ £ £§§ª§ª\9c§\9c\96\81tf__cc\cc\f\_X\U\\_ccipipw\81\85\8b\92\92\8f\92\96\92\92\96\99\8f\8f\8b\8b\88\88\88z\81\81~zwzzwwtwwzz~~\85\85\85\85\85\85\88\85\85\85\85\85\88\85\85\81~\85\81\81\85~\81~\81\81\81zzz~\85\85\85\81\81\85\85~\81~~\81\85\81\81zttmpmmifimmpttwwwtzw~zz~zi___RNG=DAAA:DA::3=GRURRKGDDG:DAGGGK:==,3,)%"%%)),,0033666::DDAADDKKNNNNRNRNRNRRURRNRURRRRRRRUUXRRRRRRRRRNNNKNKGGNNKGGGGGDDDDDDD======:66666666663333300000,,,,,,3,,:G3::0660000===AGDKKRXX\ciffiific_UDURRRNRNRRXX\XX\cmww\81\88\81z\85wttmc__c__\X\_\\X\UXUNKNGKG=A==:33000,3306:=DGGKNNRKRU\cipttz~~\81fffipppw~zz~~~\81\81\81\8b\8b\8b\8f\8b\8f\96\96\96\99\99\99\9c\9c \9c\99\9c\9c\99\9c\9c\9c\9c ££§££££§£ \9c\9c\9c \9c\9c\99\96\99\92\92\96\96\96\96\96\96\92\8b\88\8b\8b\88\88\8b\8b\8b\88\8f\8b\8b\8f\8b\88\88\8b\85\81~zzzwzwwttttwwzwtw~~\81\85\85\85\81~\81\88\88\88\85\8b\8b\88\85\81\85wptptpttpwzzwz~~z~z~zz~zzzwttpmifc\\_\UXRNNRNNRNRRX_\cipmwzzw´±±ª§ \9c\99\99\8f\8f\8b\8b\88\8b\88\8b\88\85\8b\88\85\85\88\88\88\8b\88\85\88\85\85\88\85\85\88\81z~\81~~\81~\81\81\85\85\85\85\8b\88\81\88\85\88\8b\88\8b\85\88\88\88\81\85\88\81z~z~~~~zwwwtimmmimfiiimiifiifptzz~~wwXUU\81\88\88\8f\8f\8b\8b\8f\8b\92\8f\96\99\99\99\96\99\96\99\96\92\8b\8b\8f\8b\8f\88\88\85\85\85\81\81\85\88\8b\8b\8b\88\8b\88\8b\8b\92\8b\8f\8f\8b\92\92\96\99\96\99\9c §£§££ £ ª£§§ª £\9c\99\81wi____\_c_c__\_U\\___ftmpw\81\85\8f\92\92\92\92\96\92\96\92\99\92\8f\8b\8b\8b\88\8bz\85\85\81zz~~zzwzww~z\81\81\88\88\88\88\88\8b\88\88\85\85\88\88\85\85\81z\81~\81\81\81~~\81\81\85zz~\81\85\85\81\81~\85\85~\81~~\85\81~~wtpimmmfiimmpttwttpttzwwzwf\X\RNKA:A==6A=666AGRRRRNKGAD=GDKKKG===,3,)%%%%)),,0033666:=DA=AADKGRKNNNNNNNNRRRUURUURRRRUUUUUXRRRRRRRRRNNNNNKGKNNKKKKGGDDGDDDGAA===:::::::66666663333330000000,3,,:G0:60330000=::=AAGGGUUX_Xccfiif_\DDGGKNKNKNUUUXUUX\ctw\85\88\81\99\99zwpfc_cc__\UX\XXXXX\XRRRNNKGD==:66303,633:=ADKKNRRUUUX_cimppwwz~cffimpptztzz~~\81\81\85\88\8b\8f\8f\8f\92\96\96\96\96\96\96\99\99\9c\99\9c \9c\9c\9c\9c £ £££§£ §§ \9c\99 \9c\99\9c\9c\99\99\96\96\96\96\99\99\99\96\92\8f\88\8b\8b\88\8b\8b\8f\8f\88\8f\8b\8b\8f\8f\88\8b\8b\88~\81~~zzzzwttttttwtwz\81\81\85\81\85\85\85\81\85\88\85\88\88\88\8f\8b\88\85\88\81wwtwtwwt~~~~~\81\81~~~z~~zwzzwpppmfff_\\\XUURRRNRRNRUU__cipmtwwt´´±±±ª£ \99\96\8f\8b\88\88\88\88\85\88\88\88\88\8b\85\81\85\88\88\88\88\81\88\81\81\85\81\81\85~wzwwz~~\81\85\85\85\85\81\88\88\81\85\88\88\88\88\88\85\88\88\85\85\85\88\81z\81z~~~~wwwwpimmmmiiiiipiiimfmt\81\85\81\81\81zztX\81\85\8b\8b\8f\8b\8b\8b\8f\88\92\92\92\96\96\99\96\99\92\96\92\92\8f\8f\8f\8f\8f\8b\88\88\85\85\85\85\85\85\8b\8b\88\88\8b\8b\8b\8f\8f\8f\92\92\8f\92\96\96\9c\99\9c §£§ ££££\9c§§§£ª£ \9c\99\81tm_c\__\fcccc_cX\\f__cwitw\85\85\92\96\8f\92\92\92\96\96\96\96\92\92\8b\8f\8f\8b\8b\88\88\88\85z~\81\81~~z~wt\81w\85\85\85\8b\8b\8b\8b\8b\8b\88\85\85\88\85\85\85\85~\81~\81~\81~~\81~\81zz~\81\85\85\81\81\81\81\81~~~~\81\81z~wppfmiicifimmpptppmpptttwtUXURNKGD:AA=6A=63:=DNNNRRNDADAKGGGKDA=:,0))%"%%)),,000336::=D==DAAGDNGKKNNNNNKRRRURUUXUURUUUXUUXRRRRRRRRRRNRNNKKKNNNKKKGGDDDDDAGD====:::::::::6666633333333000000000=G,630060300:6=6==ADGGRU\UR\cffc\RAAGDGDKKGKRURUUUX\\pt\81\85\81\99\99zcfff_ccc_\UX\UXUX\\\UXXRRNKKKKGAA:363:66:AADKKRRUXXX\_cfimmpmtifffiimmtwtzz~\81\81\85\85\88\88\8f\8b\92\8f\92\92\92\96\96\92\96\99\9c\9c \9c\9c\9c\9c \9c ££§§§£§£ \9c \9c\99\9c \9c\9c\9c\99\99\99\96\96\96\96\96\99\99\99\99\92\92\8b\8b\8f\8b\8f\8f\92\8b\8b\92\8f\8f\92\8f\8b\8f\8b\88\81~~~~zwwwttttwwwwww\81\85\88\85\88\85\85\85\88\88\85\85\88\8b\8f\8b\88\88\8b\88\85zwzwtz\81\81\81\81\85\81\85\85\81~z~~z~zwwwtpmmifcc___XXUUURRNRNRRX__cimiwtw\88ª±±±±§ \99\92\8f\85\88\85\85\85\85\88\85\8b\85\88\81\81\81\85\88\85\85\85\85\81\81\81\81~~zpwwww~~\81\85\81\81\81\85\88\88\81\85\88\88\85\85\88\81\85\85\85\85\81\85\81~\81z~~zzwwwzpmpimmimfmmppmpppt\88\88\88\85\85\85~~w\81\85\88\8b\8b\8f\88\88\88\8b\88\8f\8f\92\92\96\96\96\99\96\96\92\92\92\92\8f\8f\8f\8b\8b\88\85\88\88\85\85\85\8b\88\88\88\8b\8b\8b\8f\8f\8f\92\92\92\96\99\99 \9c £ §££ £§ £ ££§ §§£\9c\99\85ppi_Xcc_fccfccf\\cmc_cwfpw\88\81\8f\96\8b\96\96\8f\96\92\92\92\92\8f\8f\92\8f\8f\8b\8b\8b\88\88~\81\81~\81~wztw\81~\88\88\81\8b\8b\8b\8b\8b\8b\88\88\88\88\81\85\81\85\81\85z~~~~~~~\81~zz~\81\88\81~~\81\81~\81~~~\81wzttmfiifcfifiimmpmf\mmifmciKNRNKGGD=AA:6=::3:=AKKKNNKDDDDGDDKG:=:60,))%%%%)),,000336:6:A:=ADADDKGKKNRNNRNRNUXRXUXUXUUXXXXX\UUURRRRRRRRRNNNNNNNNKKKGGGDGGDDGAA===::::::::66666663333333300000003=G033006,3,,=::6::=ADDKNURNX_ccXRK==GADGGGGGNRRURRUX\mp\\81~\99zwcccc\__c\\UXXXUU\__\X\\XXNNRNRRKGAD::=:6=ADGGKRUXXX\\\cciiiiiffiiffmmmpttzz~\81\81\85\85\85\88\8b\8b\8f\8b\8f\92\92\96\96\92\92\99\99\99\9c\99\99\9c\9c\9c\9c £££§££££ \9c\9c\9c\9c\9c \99 \99\9c\99\96\99\96\96\96\99\99\99\9c\96\92\92\8f\8b\92\8b\8f\92\92\8f\8f\92\92\92\92\92\8f\8f\8f\85\81\81~z\81zwztwttptwwwz~\81\85\88\85\8b\88\85\85\85\88\88\85\85\8b\8f\8b\8b\8b\8f\8b\88~z~zw~\85\88\85\85\88\85\88\85\85~zzzwzwwtttpiiff_cc\\UXUUUURRNNRUX\cfimmtwz§§ªª£ \96\88\8b\85\85\85\81\81\85\85\81\88\81\85\81~\81\81\85\81\81\88\88\81\81~~zwttptwt~z~\85~\85~\81\88\85\85\88\85\88\88\85\88\81\81\85\81\85\85\85\85\81\81~~~zzwwwwpppppmmpmmpttwtzt\88\8b\8b\8b\88\88\88~~z\85\88\8b\88\8b\8b\8b\88\8b\88\88\8b\8b\92\8f\92\99\99\99\96\96\92\92\92\92\8f\8f\92\8f\8b\8b\88\8b\88\88\88\88\88\88\8b\8b\8b\8b\88\8b\8f\8f\92\92\96\99\99\99 £§£§£ ££\9c££§££\9c§££\99\99\85ppmf\ffcccfffcf\ffpicctipw\8b\81\92\96\8b\96\96\92\92\92\92\96\8f\8b\8f\8f\92\92\8f\8b\8b\88\88\81\81\85z~zwwpz~\81\88\88\85\8b\8f\8f\8b\8b\8b\8b\88\88\88~\81\81\85\81\85z~~~~~~\81\81~z~~\85\85~~~\81\81\81\81~\81~\81wwtpmiiifcfffffifiic\\_f_c_cGKNKGDDDAD=::=6=36ADGAGKKGDDDDDA=GDA=:,,),)%%%%)),,,00033=66A:=ADAAADDKNNNRRRRRRUXU\U\XUUXXXXXX\XUUUURRRRRRRRRNNRRRNNKKKGKGGDDADAAA===:::::::66666666333333333000003:K,30,03,0,0=:6666:=AADKKNKKU\\GDA6=DDDDDDDGKNNRNNRUXXXX___cc_\__X_\_\\XXXXUXX____c_\_XXUXUUNNKNAAA===AGKKNRUXXX\\\_cffcff\\miffmimpttz~~\81\85\88\88\85\88\8b\8b\8b\8b\8f\92\92\92\92\92\96\96\99\99\99\96\96\99\9c\9c\99 \9c£££§ § £ \9c\9c \9c£\99\9c\99\96\99\99\99\96\99\99\9c\99\96\92\92\8f\8f\92\8f\92\92\92\92\92\96\92\92\96\92\92\92\8f\85\81\81~~~zzzwtwtmwzww~\81~\88\8f\88\8b\88\81\81\88\85\85\85\88\8b\8f\8f\8b\8f\8f\8f\8b~~\81wz\85\88\8b\88\88\8b\88\85\88\81~~zwwwwttpppimficc_\_UXUXUUURRRRRU_fimpmtz~££ª£ª§ª§ \9c\92\85\88\85\81\85\85~\85\81\85\85~~\81z\81\81\85\81~\85\85~~zztwtptpttzzz\85z\85~\85\8b\85\85\88\88\88\88\85\88\81\81\81\81\85\88\85\85\81\85\81~~~zwwwttppttppppptwwzw\88\8b\8b\8f\8f\8f\88\88\88\81\81~\85\88\8b\88\8f\88\8b\88\8b\85\88\8b\88\92\8f\96\99\96\99\92\96\92\92\92\92\8f\8f\92\8f\8b\88\88\8b\8b\88\88\88\85\8b\8b\88\8b\8b\88\8b\8f\8f\92\92\96\96\99\9c £§§££ \9c\9c \9c££§§£ ª §\99\99\88ztpiiiicfcfffffciitm_twzpw\8f\81\92\92\8b\92\96\92\8f\96\96\96\8f\88\8f\8b\92\92\8b\8b\8b\8b\88\81\81\81z\81zzzz~~\85\8b\88\88\8b\8f\8f\8f\8b\8b\8b\88\88\88\81\81\81\85\81\85~\81z~~\81\81\81~~~~z\81\81z\81\81~\81~~~\81~~twpmmififccccfcfccf_X\\_"_\_DGKKDDADDDD:D=D=3=ADDADGGDGGGDGDAGGDAA))),)%%%%))),,00036=66D:==AAAADDKNNNNRRRRRX\X\X\\XXX\\\\_cUUUUUUURRRRRRRRRRRRNNNKKGKKKGGAAD==A==:::::::66666666333333330030003:K000,30000,:66333:::=AADAD=KR=D==6=AADDAAGDGGKNGGNRUUURXX\\____\\\\\XXXX\XXX\ccccfccc\\X\XXRRNRGKGAA=AGKKKRRUX\\\\\_c__c_\Xpimimmmpttz~\81\85\85\85\88\85\85\88\8b\8b\8f\8f\8f\92\92\8f\92\96\96\96\96\96\92\92\8f\99\99\96\9c\9c\9c£§§££££ £ \9c \9c\9c\99\99\99\99\96\99\96\99\99\96\96\96\92\92\92\92\8f\8f\92\96\96\92\99\96\96\96\96\8f\8f\8f\85~\81~~~zwwwwtwptwwwz\85\8b\8b\92\8b\8b\88\81\85\85\81\81\85\88\8b\8f\8f\8f\8f\8f\92\8f\8b\8f\85z\85\88\8b\8f\8b\8b\8f\88\85\85\81zz~wwttttpmpiiiffc\_\XXXXUXXUUURRR\immptt\81\8f£ §££ª \9c\99\8f\88\85\81\81\85\85~\81\81\85\85z~~z\81\85\81\85\81\81\81~~zwpwtmppttwww\81~\88\85\88\88\88\85\88\88\88\88\85\85~~\81\81\85\88\81\85\85\85\85\81\81zwtwwtpptwpttptttzz~\88\8b\8f\8f\92\92\8f\8b\88\88\81\85\81\85\88\8b\88\8b\88\88\85\88\85\88\8b\88\8f\92\96\99\99\96\96\96\92\92\92\92\8f\92\92\8f\8f\88\8b\8b\8b\88\8b\88\85\88\88\88\8b\88\8b\8f\8f\92\92\92\96\92\99 ££§§£ \9c\9c\9c\9c\9c §§££ª\9c£\9c\96\8b~wptmiicffcfffffmitp_tw~tw\8f\85\92\8f\88\96\96\96\8f\92\96\92\8f\8b\8f\8b\92\8f\88\8f\8b\8f\88\85\81\81~\81~z~~\81\81\88\88\88\85\8b\8f\8b\8f\8b\8b\88\88\88\85\81\81~\85\85\81\81\81z\81~\81\81\85~z~\81z\81~~\81\81\81\81zzz~~~tttmmififcc_cc\X___UUXXX"\UXD=GG=ADDDGG=GDRA6DDAA=DGDADDGDGGDGDGDD),,0)%"%%)),,,3003:=6:G===AADDDDKNNNNNRRUUX\\\\\\\\\____cfUUUUUUUUUURRRRRUURURNNNKKNKNDKADA==A==::::::::66666663333333303633036G000033000,6363066:6:====A:=D==:6:==DDD==DADDDGADGKNNNKRNXUU\\_U_X\\UUUX\X\\_cfcfifffc_X_\\UUUUUURGDAAGKNKNRUU\XXX\\__\_X\Umppmpmmtttz~\81\85\85\85\85\85\88\88\88\88\8f\8f\8f\8f\92\8b\92\92\96\92\92\92\8f\92\8f\96\8f\92\92\99 £§§££ \9c £§ £ \9c\99\99\99\99\99\9c\99\99\99\96\99\99\96\92\92\96\8f\92\96\99\96\92\99\96\99\96\92\8f\8b\8b\81~\81~\81zzwwwttwtpwwwz\81\8f\8f\96\8f\8b\85\88\88\85\85\85\85\88\8f\8f\8f\8f\92\92\92\92\92\92\96\85\92\8b\8f\92\8b\8f\8f\85\85\81\81zwzwwtttppmpmiific__\\\\XUXXXXXXRX_iiipww\8f\92 £ \9c§££§\9c\99\96\8b\88\88\81\81\81\81~~\81\88\81~~~z\81\88~\81\81~~~zzwtttpmppptzt\81\81\88\88\8b\8b\8b\88\8b\8b\85\88\85\81~\81~~\81\88\81\85\85\85\88\85\85~wwzwtpttwtwwwwww~~\85\8b\8f\92\8f\92\92\8f\8b\88\88\85\85\85\81\88\88\85\88\88\88\88\88\85\8b\8b\8b\8f\96\92\99\96\96\96\96\92\8f\92\92\92\92\92\8f\8f\8b\8b\8b\8b\88\8b\85\85\88\88\88\88\88\8b\92\8f\96\92\96\99\96\99 ££§§§ \9c\99\9c\9c\99 £££§§£§ £\9c\99\8f~zwwppifiifffcfimipt_pw~ww\8b\88\8f\8b\85\92\92\92\8f\8f\99\92\8f\8f\8b\8b\92\8f\8b\92\8b\8f\8b\85\85\81\81~\81~z\81\81\85\85\88\8b\85\8b\8f\8b\8f\8b\88\8b\8b\88\85\81\85\81\81\81\81~~~~\81\81~\81~z~~~\81~\81\81~~\81tzz~~zpppmiifmfc_\__XXXXXRRXX\%UURA=D::=ADGKK:KNUDNGADD=ADDADGGDGGDGDKGG,0,,))"%)))0,,333A:==DK==ADADDGGKKKNNRRRRXX__X_\\\__ccccfiXXUUUUUUUUUURRRUURRURNNNKNKNDGDDAAA=A=:::::::::6666666333333306:3636:D30,,30,,,,0030066::6:3:6:666:6=::=AAAA::AAAA===ADGDDA=KKRRRXX\U_X\XRRUUX\___fffifiiifpXc__XUXXXXURDDGGNNGNNRRXXXUX\_\XXXXXpttpppptttz\81\81\81\88\88\88\88\8b\88\8b\8b\8b\8f\8f\92\92\8b\8f\8f\92\8f\8f\8f\8f\8f\8f\92\8f\8f\8f\92\9c £££££ £ £££ ££££ \9c\99\9c\9c\99\99\96\99\99\96\99\96\99\92\96\92\92\96\99\96\99\96\99\96\96\96\92\8b\88z~~~~~zztwttttpttwwz\85\8b\8f\92\8f\8f\8b\8b\88\88\88\85\88\8b\8f\8f\8f\8f\92\92\96\96\96\96\99\96\96\8f\8f\8f\88\92\8b\88\85\85\85~zwtwwttmpppifiifcc__X__XXX\XXX\U\cmfitzz\92\96 £££ \99\96\8f\88\8b\85\85~\81\81~\81\81\85\81~~~z\81\88\81\85\85~zzzwtttppfppptzt\81\85\88\8b\8b\88\88\8b\8b\8f\8b\88\85\85~\81\81~\81\85\85\88\85\85\85\88\85\81zwwwttttwwzzzwzz\88\85\88\8f\92\92\8f\8f\92\8b\88\88\88\88\85\81\81\85\85\85\85\85\85\85\85\85\88\88\8f\8f\96\8f\99\96\99\96\96\8f\92\8f\92\92\8f\8f\8f\8f\8f\8b\8b\8b\88\88\85\88\85\88\88\8b\8b\8f\92\8f\96\92\96\99\99\9c £§££ \9c\9c\96\9c\9c\96 £§£ ª££ \9c\92z~zwptmfmffifcimmmpwttw~ww\88\88\8f\85\81\8f\8f\8f\92\8f\96\92\8b\8f\8f\8b\8f\8b\8f\96\8f\8f\8b\85\85\81\85~\81\81~\85\85\88\88\8b\8b\88\88\8b\8b\8b\8b\85\88\88\85\85\85\81\85\81~\81~~\81~\81~z~\81z~~~\81\81~\81zz~wzw~~wttpmiiiiff__\\\UXUURRXX\RRRN=:=:6AADGKNKNRXNRKGDDA=GA=AGKDDDGGGKGK03)0))"%,),0006=6N6:AGG=ADADGDGGGKKKNNRRR\Xc_\____ccffffim\\XXXUUUUUUUUURXURURRRRKKNNKGGDDAA==A=:::::::::666666633333360::633::D30,,0,,)),3330,366636363363666:==AAD========::==AA:==6D=GKGUUXUcXXUNUXX\_ccfffiififiit\fc_\U\\\\XUURNKRKGNKNRUUURUX\XXUUUUtwwppttttwz\81\81\81\85\85\85\88\88\88\8b\8b\8b\8f\8f\92\8f\8f\8b\8b\8f\8b\8b\85\8b\8b\8b\8b\8b\8b\8b\92\99\9c£ ££££££££ £££§££\9c\9c\96 \99\9c\96\99\96\96\92\96\96\96\92\99\96\96\96\96\96\96\96\99\99\96\92\8f\88\85zzz~zz~zwwtttpptwtt~\85\8f\92\96\92\8f\8f\8f\88\85\8b\88\8b\8b\8f\92\92\92\96\96\96\99\99\99\9c\99\99\92\8f\8f\8b\8f\88\85\85\85\85~\85wtwtttpppmmiiiffcc_\__\\\\\\__X_fmiipw~\96\99 \9c\9c \99\92\8f\88\88\81\85\81~~\81\85\81\85\81~~\81z\85\85\81\81\81~zzzwttpppimpppzw~\88\8b\88\8b\8b\8b\8b\8f\8f\8f\8b\88\88\81\85\81z\81\85\88\88\88\85\88\88\88\85zzzwttwwzzz~~\81\85\88\8b\88\8b\8f\92\92\8f\8b\8f\88\88\8b\8b\88\85\81\81\85\85\85\88\85\85\85\88\85\85\88\8b\8f\92\8b\96\99\99\96\96\92\92\8f\92\8f\8f\92\92\8f\8f\8b\8f\8b\8b\88\85\88\85\88\88\8f\8b\8f\92\8f\96\96\99\99\99\9c£££§ \99\99\96\99\99\96 \9c §£\9cª§ £\9c\96\88~~zwwpimffiicfmmptwwtz\81w\88\85\8b\8b\85\81\8b\8f\92\92\8f\96\8f\88\8f\8b\88\8b\88\8f\96\92\8f\88\85\85\85\88\81~\85\81\85\85\88\8b\8b\8b\8b\88\8b\8b\8b\88\88\88\85\81\85\85\85\85\81z\81~~\81~\81~z~\81z\81\81z\85\81\81~wzzzzzzzzwtpppmmmfcccX\XUURUNUXX_UNNK36=::=AGGKRNRUXRUNKGG=AD=A=DKAAADDGKKG36,60,)%),,033:A6X:=DDDAAGADKDGGKNKNNRRRU\Xc__ccccccfiiimp__\\\XXXXXUUXXUUXUUURRRKKKNKGGDDD=====:::::::::66666666663363A6=:63=6G0,,,0,,,))336306:3330333330333:===AD=::::=6666::666666::AAAGKUX_\XRNRX\__cfiiiiififiit_fc__X\\\_\XX\\XXKKKKNRRRURRXXXUURURttttttwttz~~\81\81\85\81\88\88\88\88\8b\88\8f\8f\8f\92\8f\8f\8b\8b\8b\88\85\85\88\88\88\88\8b\8b\8f\92\96\99 ££££§§§£§§§§§£ \99 \99\99\92\96\92\96\92\96\99\99\92\96\96\99\96\96\99\92\92\96\96\92\8f\8b\85\81zpzzwwzwtwtttttttwwz\88\96\96\99\96\92\92\92\8b\88\8f\8b\8b\8b\8f\92\92\92\92\96\96\96\9c\99\9c\96\96\8f\8b\8f\8f\8f\88\8b\85\88\8b\88\88zwwpttpppmpmiiiffff________cff_ciimmtz~\96\99 \99\9c\9c \9c\9c\9c\96\8f\8b\88\85\81\85\85~\81\81\81\85\85\81\81\81\81~\81\85~\81~~z~wttttppfpmttzz~\85\8b\88\88\8b\8f\8f\92\92\92\8f\88\88\85\81\81~\81\81\88\88\88\88\88\88\8b\81z~~zwwwz~~~\81\85\88\88\8b\8f\8b\8f\8f\92\8f\8f\88\8b\88\88\88\88\85\85\85\85\81\85\85\85\85\81\85\85\88\85\85\88\8f\92\8b\92\99\9c\96\96\92\96\8f\92\8f\92\92\92\8f\8b\8b\8f\88\8b\8b\88\88\88\8b\8b\8b\8f\8f\92\92\96\96\99\99\99\9c£££§\9c\9c \99\99\96\99\99\99 \9c£££§\99§£ £ \9c\8f\81\88zzztmmfiifcfmppwzwp~\81z\88\85\88\88\88\85\8b\8f\92\8f\8f\96\8f\8b\8f\88\88\8f\8b\92\92\92\8f\85\88\85\85\88\85\81\81\81\85\88\88\88\88\8b\8b\8b\8b\8b\88\8b\88\88\85\81\81\85\81\81\81z\81~z\81~\81z~~\81z~\81z\81\81~zwzzwwwwzzwztptpppffcf\X\UXURNX\\_UKGD33=66:AGGNRRUUXUXRNKGADD==AGKDD=AGGKGD630=3),3)003:=:DD\::ADA=ADAGNDGKKNNNNRRUXXXf_cffffcffmmmmpc___\\\\X\XXXUXUXUXURRRKKKKGKGDDD=====:::::::::66666666663333=3==63:3K,,0,,,)0,)33360663300003333633=:A==D:::=::6:636:33333336::AAGNU\XXRNRUX__cfmmmmiimifftcfc__\\____\\____KKNKNRRRURRXXURUNRNtwtwwwwww~z~\81~\85\85\88\88\8b\88\8b\8b\8b\8f\8f\92\8b\8f\88\88\85\85\81\81\81\85\85\85\8b\88\8f\8f\92\99\9c \9c £§§§§§ªª§ª§ \9c\9c\96\96\96\96\96\96\96\99\99\96\96\99\99\99\96\96\96\92\8f\92\92\8f\8b\88\81~wtwwpwzwttptttwwtww~\85\99\99\9c\96\92\92\96\8f\8b\92\8f\8f\8f\8f\8f\92\96\96\96\99\96\9c\99 \96\96\92\8f\92\99\99\96\8f»\96»ÂÅ\88zwwwttttmpmimiiificcccccfffiiciimpppzz\99\96\9c\99\99\99\9c\99\96\99\92\8b\8f\85\85\81\81\85\81~~\81\88\85\85\85\85\81\81\81\81\81\81zzz~wttwptpipmttw~~\81\88\88\85\8b\92\92\96\92\96\8f\8b\85\85\85\85\81\85\85\88\88\88\88\8b\88\8b\81~\81\81zzwwz\81~\81\85\88\8b\8b\8f\92\8f\8f\8f\92\8f\8b\85\88\85\85\88\88\85\81\85\85\81\88\85\85\85\85\81\85\88\85\88\8b\8b\92\8f\8f\96\9c\96\96\96\92\92\96\92\96\96\96\8f\8f\8f\8b\85\88\88\88\88\88\8b\8b\8b\8f\8f\92\96\96\99\99\99\99 §£££\9c\9c \99\9c\99\9c\9c\9c\9c\99 ££\9cª ££ \92\8f\8b\88~~wtmimiifimmpwwtpz~~\85\85\85\88\88\85\8f\8f\8f\8f\8f\92\8b\8b\8f\88\88\8f\8b\8f\8f\8f\8f\81\88\85\88\88\88\81~~\81\88\85\85\85\88\88\8b\8b\8b\8b\8b\88\85\88~~\85~~~~~~z~z~zz~~w~~z~~z~wzztwtwwzw~wwwtptpfcc_\\UXURN\\__RA=D36=6::=GKNNRXUUXXRRNKDGDAADGGGG:=DDGD6:06A6=0G0:3==ADGG_D==DDAKGAKKGKGKNKRRNRRXX\fcfiiicffimmmptcccc_\__\\\\\X\UXXXURRRNKKKGGGGDD======::::::::66666666663333:3=::060G0,,0,,),))33363366303030003366::A=AD==:=::66333663633666::=:AKRRUURNUUX__cipmpmmmpmifpfcc__\_cccc__ccccUNRKRURRRRRUURNRNNNwttwzzzwz~~~~\81\81\88\88\85\8b\88\8b\88\8f\92\8f\8f\8b\8b\85\85\81\81~~~\81\81\81\88\85\8f\8f\92\96\99\9c\96\9c\9c\9c §§££§§ªªª§ £\9c\9c\99\96\96\96\96\99\96\99\96\99\96\99\99\99\99\92\92\92\8f\8f\8f\8b\88~~zttttptwttwptttzwwzzz\85\9c\9c\9c\96\96\96\96\92\8f\96\8f\92\92\8f\92\96\96\96\96\99\96\9c\99 \96\96\96\9c §£ ±¾¾»¾ÉÉÉzzztwwttpmmimimfmffcffcmimmmfmmmttwz~\96\92\9c\99\9c\99\99\96\8f\96\8f\88\8b\81\85\81\85\85\85~\81\81\85\85\85\85\81\81\81\81~\81~~zzztttwptmmpmttwz~~\85\88\85\8b\8f\92\96\96\96\92\8f\88\88\88\85\85\85\81\88\88\88\88\88\88\8b\81\81\85~~zzz~\81\81\85\88\8f\8f\8f\8f\8f\8f\92\8f\8f\8f\88\85\85\85\88\88\88\85\85\85\85\85\88\85\85\85\88\85\85\88\85\88\8b\8f\92\8f\8f\96\99\96\96\96\92\92\96\96\99\99\96\8f\8f\8f\8b\85\8b\88\88\88\88\88\8b\8f\8b\92\92\96\96\99\9c\9c\9c£§£££\9c\9c \9c\99\9c\9c \9c\99\9c\9c\9c£§ §£§£££\96\96\92\8b\85~wwpimmmimpmmttwpzz~\81\85\85\88\88\85\8f\8f\92\8b\8f\8f\8f\8b\8f\8b\8b\8b\8b\8f\8f\8f\8f\85\8b\85\8b\8b\88\81\81\81\81\85\81\85\81\85\8b\8b\88\88\88\8b\85\85\85~~\85~zzzzzz\81z~~w~~w~~w~~z~wzztwwwwzz\81zzz~twticcc__XUURU\___N:=A33=6::=DKNNRURUXURUNNGGDDDGKGDD=:AAD),6,=DAA3N3D=RA_NGG\XUDKRANKAGKGKDKNKNNNURX\\cfiimmfffmmpmptffccc_c___\__\\X\XURRRNNKKKGGGGDD:=::::::::::::6666666666333333:6:000D0000,,))))63666:6360306300366:====AAA=::::::6366666636:666:6AGGNRRRNRUU__fipppmpmpimimfcc\__ccccc__ccffXUUNRUUURRRRURNNNNNtwwz~~zz~~\81~~~\81\88\85\88\88\85\88\88\8b\8f\8b\8b\88\81\81~~zzzz~~\81\85\85\8b\8b\92\92\96\99\92\96\99\99\9c££ ££§§§§§ £ \99\96\92\96\92\99\99\99\99\9c\99\99\99\99\96\8f\8f\8f\8b\8f\88\88\81~wwmtmtptwttwtpttwwz~zz\81 \9c \99\99\99\99\96\92\96\92\92\96\92\92\96\96\99\99\9c\99\9c\9c \99\9c\99§ª±´´¸¾Â¾ÂÉÉÉÉ~zzzwwwppmmmimiiffffmpppzzpwpmmpt\85\8b\8f\92\92\99\96\99\96\96\92\8f\92\8f\8b\88\85\85\85\81\85\85\81\81\85\85\88\81\85~~\81\85\81~zzzzwtwtwttpppmpptwzz\81\85\88\88\8f\92\96\96\96\92\92\8b\88\85\88\85\85\85\88\88\88\88\88\88\88\81~\81\81~z~~~\85\85\85\8b\92\92\92\8f\92\8f\92\92\8f\8b\85\88\85\88\85\88\88\88\85\85\85\85\88\88\88\85\88\88\88\85\88\85\8b\8f\92\8f\8f\96\99\99\96\96\92\96\99\99\9c\99\96\92\8f\8f\8b\85\8b\88\88\8b\8b\8b\8b\8f\8b\92\96\96\99\9c \9c £££ \9c\9c\9c\96\9c\9c\9c \99\99\9c\9c£§£§§££ £\9c\99\96\8f\88\81zzppmpmmpppptwtpzwzw\81\85\85\88\85\8f\8f\8f\88\8f\8f\92\8b\92\8f\8f\8b\8b\8b\8b\8b\8f\88\88\88\8b\8b\88\81\81\81\85\81~\81\81\85\8b\88\85\88\85\88\81\85\81z~\81\81z~~~zz~wzzt~~wz~t~\81z~wzwwwwwzzz\81~~~\81zzzpffcc_\XXUX\_c£G=:=33=:66ADKKNRRNRURNURRKKGGGGGGDA=3:=A%))0NGKRRRNNUU\cRKG\XUGNUKRKDDKGKAKNGKNRRRX\Xccffmiifimmpptwfffccccc_c__c_\\\XURRRNNNKKGGGGDD==::::::666:::::66666666333333666330A00000,,,,,:36:6=663333300063:=:A=A=AA=======6633:66:6==3:6:6=DAGNNRNRRU__cmmmmmpimimffccc____ccccc__ccf\XURUUUURRRRRRNKNKNtwwz~~~~~~\81\81\81\81\85\85\85\85\88\81\85\88\88\8b\88\88\85\81~zzzzzzz~\81\81\85\88\8b\8f\92\8f\92\92\92\92\96\96 ££§§ªª£§£ \9c\99\96\92\96\96\99\99\99\99\96\99\96\99\96\8f\92\8f\88\8b\88\88\81zzwmpmpmttptwtttwtzz~z~\85 \9c\9c\99\99\99\96\96\92\96\92\92\92\96\92\96\99\99\9c\99\99 \9c£\9c±´´¸¸»¾ÂÂÅÉÉɱű~\85zzzttpppimmmiiiipttz~~~zwpwtz\88\8f\92\8f\8f\96\92\96\92\8f\92\8b\8f\8b\88\85\85\88\85\85\85\85\85\81\85\81\88\85\85~~~\85\81~~~~zzwwtttptpmppmptwz\81\85\85\85\8f\92\92\96\96\96\96\8b\88\88\88\88\88\88\8b\88\8b\88\85\88\85\81\81\81\81\81~~~~\85\85\8f\92\96\96\92\92\92\8f\92\8f\92\8f\85\85\85\88\88\85\88\85\88\85\85\88\88\88\8b\88\85\88\8b\88\85\85\8b\8f\8f\8f\8f\96\99\99\99\96\96\96\99\99\9c\99\96\92\8f\8f\8b\88\8f\8b\88\8b\8b\8b\8b\8b\8b\8f\96\99\9c £ £ £\9c \9c\99\9c\99\9c \9c\9c\9c\96\99\9c £££§ £££ \9c\99\8f\8b\85~zwttpmppmtpttwpzwzw~\81\85\8b\88\8f\8f\8f\8b\92\92\92\8f\8f\8f\92\8b\8b\8b\8b\8f\8b\8b\85\88\8b\8b\85\81\81~\81\81~\81\85\85\8b\85\81\88\81\88~\81zz~\81~zz~~wzztzwtzzzz\81tz~~~z~zwzz~~~~\85\81\81\81\85\85\85~wifffc\\XX\\_R£==:=36=6::ADGGKNNKNDNKURUKNKKGDDDAA:0::0),)3KGNUUUXRXX__UNK\XURRRNRKGGKGGAGKKNNNUUU\Xcccfiimiimmpptwiffffcccc__cc____XURRRRNNNKKGGGDD::::::::6666666666666666333333666060=00003,,,,,:3:::A6:6636333336::=A:A==A===::==::66:::=:A=:63::=AADGKRKNUU_\_iiiiimfificf____\__c__c_____c\\URUXUURRRNRNKKNKKwtzz~~\81\81~\81\81\81\81\81\81\81\85\85\85\85\81\85\85\88\85\81\81~~wzzwzwz~\81~\81\88\88\8f\92\8f\92\92\92\92\92\92\96\96\9c\9c££§ªªª£££ \99\96\96\96\99\99\9c\99\99\96\99\99\96\96\8b\92\8f\8b\88\85\88\81wzwptptptwtwwwtwww~z~~\81\88 \99\96\99\99\99\96\96\96\92\92\96\99\96\99\99\99\9c\9c\9c §´¸¸»»¾¾¾¾ÅÅÅÉ´¸ªªªª \81wtttipmpimmmtww~\81\81\81~\85\8bzw\8f\8f\8f\96\92\92\96\96\92\92\8f\92\8f\8b\88\88\88\88\88\88\88\85\85\88\85\85\85\88\88\85\81z~\88\85\85\81\81~~~zwtttttpipmpptwz~\81\81\88\8b\8f\8f\92\96\96\92\8f\8b\8b\88\8b\88\8b\8b\8b\8b\88\88\88\81\85\81~\85\81~~~\81\85\88\99\96\96\96\96\92\96\92\92\8f\96\8f\88\88\88\88\8b\88\88\88\85\85\85\88\88\88\8b\85\88\88\8b\88\88\85\8b\8f\92\92\8f\92\96\99\99\99\99\99\9c\9c \9c\99\96\92\8f\8f\88\8f\88\88\8b\88\8b\88\8b\8f\8b\96\9c £ £ \9c \9c\9c\9c\99\9c\9c \99\9c \99\99 §§\9c££ £\9c\99\96\8f\88\81zzwwtpppptpttwpzz~wz\85\88\8b\88\8f\8f\8f\8f\92\92\92\8b\8f\8f\92\8f\8b\8f\8b\8b\8b\8f\85\8b\8b\8b\81\85\81~\81\81~\85\81\85\8b\85\81\88~\88\81~~z~~~zzzzwzwp~ttzwww~t~~~\81~\81~z~~\81\81\81\81\88\85\85\85\88\88\88\81zwppffc\\\\\_RUAA=A0:A::==AD=GDDGDAKGRNRGKGGDA=A==:3663)0,6GDRXXX\U\\\\RKXXUUUURRNKGGGKGAGKNNRRXXUX\cccffiimimppttziffffffcccc_c_c_cXXURRRNNNKKGGGDD:::::::::::6666666666666333333333360:03000000,,=:===A:=6636663336==A==A==A=::6:====666====D===6::=AAADGNNRUX_X\ffffficfcfcc____\\___\c\\_\\XXXUUUXUUUNRNRNKNKKKwz~~\81\81\81\81\81\85\81~\81\81\85\85\85\81\81\85\81\85\81\85\81\81\81zzwwzwzwz~~~\85\88\88\8b\8f\8f\92\92\92\8f\92\8b\92\8f\92\99 ££ªªª£§ \96\96\96\99\96\99\99\99\99\99\9c\99\92\92\8f\8f\92\8b\88\85\88\81w~wtwpttwwttwwwwzz\81~\81~\85\8b \9c\99\96\96\96\9c\96\96\96\96\96\96\96\96\96\99\99\9c\9c £ £´¸»¸¾»¾¾¾¾ÂÂÂÉ´±±ª§§£\92\85zwwpppmmmmmpzz~\81\85\81\81\88\8f\8f\92\92\92\92\96\92\8f\96\92\96\8f\8f\8f\8b\8f\85\88\88\88\88\8b\8b\85\88\88\85\85\85\88\88\85\81zz\85\85\88\81\81\81~\81zwwwttppmpppppzw~~\85\88\88\8b\8b\92\96\96\92\92\8f\8f\8b\8b\8b\8f\8b\8b\8b\8b\88\88\85\85\81\81\81\81~\81\81\81\85\88\9c\99\99\96\96\92\96\92\96\92\99\8f\88\8b\88\8b\8b\8b\8b\88\88\85\85\88\8b\8b\8b\85\85\88\8b\8b\88\88\8b\8f\92\8f\92\92\92\99\99\96\9c\9c\9c\9c \99\96\92\8f\92\88\8f\88\88\8b\88\8b\8b\8b\8b\8f\99\9c££ £££ \9c\9c\9c\99\99\99\9c\9c\9c\99\99 \9c\9c\9c £££\99 £\99\9c\99\8f\85\81z~tzwpptppptttpz~z~~\85\8b\8b\85\92\8f\8f\92\8f\92\8f\8b\8b\8f\8f\8b\8b\8f\88\88\8f\8b\88\88\88\88f\85\81~\81\81\81\81~\85\88\85\85\88\81\88\81z~wzzzzwwzzztw~pzzwtw~w~~\81\81~\81\81~\81\81\85\85\85\85\88\85\88\88\8b\8b\88\85~ztzmifc_\tf_RUDDAA0:===::=A:D=AAA6D3:A3D00DA==:::66%30,003DA_\X\_XX\XXRK\XXUXUNRNGGGGGKDGKRRRNUXUX_c_fififmmpppttziffffffffcccc___c\XUUURNNNNKKGGDD::::::::::::666666666666333333333030:0033333,00:=AADA==:63366636::==A=A=AA:=::6=:=A66:==AADDAA::6===AADKNRUU\U\cccccc_c_c__\___\X\\c__\\_\UXUUUUUXURURNRNNKNKKKw~~\81\81\85\85\85\85\88\85\81\81\85\81\85\85~\85\81\81\81\81\81\81\81~zwwwwwzwz~~~\85\88\88\8f\8f\8f\92\8f\8f\8b\8f\8b\8f\8b\8f\92\9c £§ªª£§\9c \9c\99\99\99\96\99\96\99\99\99\99\99\99\96\96\92\92\8f\88\88\88\88\81z\81zwwwttwzwtwzwz~~\81\81\81\81\88\8f\9c\99\99\96\92\96\99\96\96\96\96\96\96\96\96\96\99\9c ££ª§±¸¾»¾¾¾¾¾¾¾¾¾¾ÅÉ´±ª£ \96\88~zztttmmmpptzwz~\81\81\85\8b\92\92\96\96\96\96\96\92\92\96\92\96\8f\92\8b\8b\8b\88\85\8b\88\88\8b\88\85\88\85\88\81\88\88\85\85\81~z\88\88\8b\85\85\85\81\85zzwwttpppmtmtwwz\81z\85\88\88\8b\8f\96\96\96\92\92\8f\92\8f\8f\8f\92\8b\8b\8b\8b\8b\85\88\85\81\81\81\85\81~\81\85\88\9c \9c\99\99\96\92\99\96\99\96\99\8f\8b\8b\8b\8b\8f\8b\8f\88\88\85\88\8b\8f\8b\88\88\88\88\8b\8b\8b\8b\8f\92\92\8f\92\96\92\96\9c\99\9c\9c \9c \9c\99\96\92\8f\8b\8b\88\88\8b\8b\8b\8f\8b\8f\8f\9c £££££££ \9c\9c\9c\9c\99\99\99\9c\99\99\99 \99\99\99\9c\9c£§ \9c£ £\9c\9c\9c\92\88~w~tzwpptptptwppw~w\81\81\81\88\8b\88\92\8f\8f\92\92\96\8f\8b\8b\8f\8b\8b\8b\8b\88\8b\8b\8b\8b\88\8b\88f\85~~\81~\81~\81\85\88\85\85\88\85\88\81wzzw~zzwzzwzpz\81p~~zwz~w~~\81\81\81\81\85\81\85\85\85\88\88\88\88\85\8b\88\88\8b\88\81~~\81~tpif__z\81£cUKKGG:===A66:=6=:=6=6:3:6300033,::63)3)33003:ADc_U_\\\\X\RR_X\UXUNUNDGDDKKGKNRRRRUUUX_c_fiimfiptptww~fffffffffcfccc__c_XXUURRNNNKKKGDD::::::::::::::::66666666333333333333=3330663,03=AGDGDDA=:63:3663:==:A=AA==:===:====:::=AAAGGDGA=:A=ADADGKUURXR\\__\__\__c\_\____\\\___\X\XUURUUURUUUURNNNNKKNKKz\81\81\85\85\88\88\88\88\88\85\85\81\85\81\81\85\81\81\85\81\81~~~~~zwwwwz~z~~~\81\85\85\8b\8f\8f\8f\92\92\92\8f\8b\88\8b\88\8b\92\99\9c £ªª§§ \9c\9c\99\99\99\96\99\99\99\96\99\99\99\99\96\96\96\92\8b\8b\8b\88\8b\85~\81~zwzwzwz~zw~zw~\81\85\85\85\85\8b\92\99\99\99\99\96\96\96\92\96\92\96\96\99\99\99\99\99\99 ££§§´¾»»¾¾¾¾¾¾¾¾Â¾Âű´ª±ª§ \99\8f\81\81zwttppmpttwwzz\85\81\85\8b\8f\92\96\99\96\99\96\96\96\96\96\96\8f\92\8f\8b\8f\85\88\88\88\8b\88\88\88\8b\81\88\85\85\8b\85\85\85~~\88\8b\8b\88\88\88\85\85~zzzwttptpptwzw~~~\85\88\8b\8b\8f\92\96\96\92\92\8f\92\92\8f\92\92\8f\8b\8b\8b\8f\88\8b\88\81\81\81\85\81\81\81\88§ £ \9c\99\99\96\99\99\99\96\99\92\8f\8f\92\8f\8f\8b\8b\8b\8b\88\88\8b\8f\8f\88\88\88\8b\88\8f\8b\8f\92\96\96\92\92\96\96\96\9c\9c\99\9c \9c\9c \99\99\99\92\8f\8f\8f\88\8b\8b\8b\8b\8b\8b\8f\8f\9c\9c £ §£§£\9c\9c\9c\9c\9c\99\9c\99\9c\99\99\99\9c\99\9c\96 \9c§§£ £§ \9c\9c\96\8b\81t~w~wtptptttwttz~w\85\81\85\8b\8b\8b\92\8f\8b\96\96\96\92\8f\8f\8f\8b\8b\8b\8b\88\8b\8b\8f\88\8b\8b\85f\85z~~~\81~~\81\88\85\81\88\85\88\81wzzwzzzwzztzt~~p\81~~zz~w\81\81\81~\81\81\85\81\85\81\85\85\88\88\88\85\8b\88\88\8b\88\81~~\85\81ztmici\85£££UUNKK=AAA=::6:363=6:633:3300300,6660)0,00006=AG_\X\X\\XX_RU\\\RXURUKGKGDKKGKRNURRUUXXcccimmpiippptww~fffffffffccccfccccXXUURRNNNKKKKGD::=::::::::::::::::::666333333333333:3363363636AGKGKGGDA=63=03:36A:====AA::=:::=A:=:AAADDDKKGKDGGDDADDDGKRURUNXXX\X\XXR\c_c_cc__\\\\__\X\XURRXRUUXXXUUNNNNNKNKK~\85\85\88\88\8b\8b\8b\8b\88\85\85\81\85\81\85\88\85\81\85~~~~~~~zwwwww~~~~~\81\81\85\8b\8b\8b\8f\92\92\8f\8f\88\88\88\88\8b\8f\8f\9c£ ªª§£\9c \99\9c\96\9c\96\99\99\96\99\99\99\99\96\96\92\96\8f\8f\8b\8b\8b\88\85\81~~z\81~z\81\81\81\81~~~zz\81\85\85\88\88\88\8f\96\96\99\99\9c\99\96\99\96\96\92\96\96\96\99\99\99\96\99\9c§§ª±±´¸¸¸¾¾¾¾¾¾¾¾Â¾¾Â´»±±ª \9c\92\85\85~wwttppppptz~z\85\81\85\8b\8b\96\96\99\96\99\99\99\96\99\99\96\92\92\8f\8f\8b\88\88\88\88\88\85\85\88\88~\85\81\81\88\88\85\85~\81\85\88\88\88\8b\8b\88\81\81~~zzwwtwttw~~w\81~~\88\88\8b\8b\92\8f\92\92\92\96\92\96\96\92\92\92\92\92\8f\8f\8b\8b\8f\88\85\85\85\85\85\85£ªª£§ \9c\99\99\99\99\96\99\99\96\8f\99\96\96\96\92\8f\8f\8b\88\8b\8b\8f\8b\88\88\88\88\8b\8f\8f\8f\96\96\96\92\92\99\96\99\9c \9c\9c \9c \9c\99\96\96\8f\8f\8f\8f\8b\88\8b\88\88\8b\8b\8b\92\9c\9c££££££§ \9c\9c\99\9c\99\99\99\99\99\99\96\9c\99\99\99 \9c§ª§££ ££ \9c\9c\96\8f\85z\81zzwwptptttwttw\81z\81~\88\8b\8b\8f\8f\8f\8b\96\96\92\92\8f\8f\8f\8b\8b\8b\8b\88\8f\8f\8f\88\88\8b\88f\81zz~~\81~z~\85\85\85\88\85\85\81zz~wwzzwwwwzw~~p\81\81~~z~z\85\85\81\81\81\81\81~\85\81\85\85\88\85\85\85\88\85\88\88\85\85~~\85\81~w~if~£££§£cRNRGDAD:=6:6033:33633:30000,,,3330),0,,00:ADK\\\XX\\X\_UX\\\UXRRUKKKGDGGGKRRRRRXR\Xcfffmmpmippptww~ifffffffffccccccfcXXUURRRNNKKKKGG::::::::===:====::::::::663333333333=3663066=6:GKNKKKKG=A:6=33636=:::::=D=:=:==AA===DDDDDGNNKNGKKGGGGGDGGNRNRNNUUURXUURX__fcff__\\\\_\\X\UUNRURUUXUURURRRNRNRNN\81\85\85\88\8b\8b\8b\8b\8b\88\88\88\85\88\81\85\88\85\85\81\81~~~~\81~zzwwzz\81~\81\81\81\81\85\88\88\88\8b\8b\92\92\8f\8f\8b\88\8b\8b\8b\92\8f\9c£ §ª§£ \9c\99 \99\99\99\99\99\99\96\99\99\99\99\99\92\92\8b\8b\8b\88\88\88\85\81\81\81\81\85\85\81\85\85\88\88\85\81\81\81~\85\88\88\8b\8b\8b\8f\99\99\9c\9c\99\99\99\99\92\96\96\92\99\99\99\99\99\96\96\99§ª±±´±´´´»¾¾¾¾¾¾Â¾¾Â¾¸¾´±ª£ \96\92\88\81zztpppmptwwz~\81\81\85\8b\8f\92\96\96\99\99\99\96\99\96\96\99\92\96\8f\8f\88\85\85\85\85\85\81\81\85\85\81\81~~\85\85\88\81\81~\88\85\88\8b\8b\8b\8b\85\85\81~~~zwtwwwz\81\81z\85\81\81\8b\8b\8b\8b\8f\8b\96\92\96\96\96\99\99\96\92\96\96\96\92\8f\8b\88\8f\8b\88\88\88\88\85\88§ªª§§£ \9c\99\9c\99\96\99\99\99\99\9c\9c\99 \96\92\8f\8b\8b\8b\8f\8f\8b\88\8b\8b\8b\8f\92\92\92\96\96\99\96\96\9c\99\99 \9c \9c\9c\9c\96\96\92\92\8f\8f\8b\8b\88\8b\88\8b\8b\8f\8f\92\99\9c£££ £§§£ \99\99\9c\99\99\99\9c\99\9c\99\9c\99\9c\9c\9c £ª§££ £ \9c\96\8b\85~~z~zztwpttwwtzt\81\85\85\81\8b\8b\8b\92\8f\92\8f\96\96\92\92\8f\8f\8f\8f\88\8b\88\8b\92\8f\8b\88\8b\8b\88f\81z~\81\81\81~~z\85\85\85\85\88\85\81~z~zwwzzwwzzzz~w\81~\81~~~~\88\85\85\85\85\85\81\81\81\81\85\88\85\81\81\85\85\85\85\85\81\81\81\81\85\85\81z\81\81p££££££fRRUKA=G:=663333663633630000,,,,)00,)00,36=DGNU__U\_\\X\XX\_XXUNRUGKKGGGDGGRRRNR\RX\cccimmmpippttwz\81fffffifffffffcccff\\UURRRNNNKKKGG==:::================::===6666633333:3::63:6A::NRNNKKNGDA=::36336:66366=D===AAAADGA=KGGDGGKRNNKKNNKKGGGGDKRNKKKRNRRRRRNU\ciccf\_\__X\XXXXURNRRNRRURRRRRRURRRURR\85\88\88\85\8b\8b\8f\8b\8b\8b\8b\8b\88\88\85\85\85\85\88\81\81\81~\81~\81~~z~z~~\85~\81\81\81\85\85\88\88\8b\8b\8f\92\92\92\8f\8b\88\8b\88\88\8f\92\9c ªªª§£ \9c \99\99\9c\99\96\99\99\96\96\99\99\96\96\8f\8f\8f\88\88\88\85\85\85\85\85\85\88\88\88\88\88\8b\8b\88\88\85\88\81\88\8b\88\8f\8b\8b\92\96\9c \99\99\99\99\92\99\96\96\99\99\96\99\96\96\92\96£§±´±±±¸¾¾¾¾¾Â¾¾¾Â»»»¸±±±§£\99\96\8b\85~~wwttpppww~\81~\85\85\8b\92\8f\96\92\99\9c\99\99\96\96\96\96\8f\92\8b\8b\88\85\81\85\81~~\81\81\81~~~~\81\85\85\81\85\81\88\88\8b\88\8f\8f\8b\88\85\85~\81\81z~z~zz~\85\81~\88\85\85\8b\8b\8b\8f\92\8b\99\92\96\99\99\9c\99\9c\9c\99\99\99\96\92\8f\8b\8f\8f\8b\8b\8f\88\85\8fªªª§££ \9c\99\9c\99\99\99\9c\99\9c\9c \9c£\9c\96\92\8f\8f\8f\92\8f\8b\8b\8b\8f\8f\8b\92\8f\92\96\99\99\99\99 \99\9c\9c£ \9c \9c\9c\92\96\92\8f\8b\8f\8f\8b\85\88\88\8b\88\8f\92\96\99 ££££££§ \9c\99\9c\99\99\99\9c\9c \99 \9c\9c £ §£ §£££ \9c\99\8b\88\81~~~~~wztwtw~t~\81\81\88\81\85\88\8b\8b\92\92\96\92\92\96\96\96\8f\92\8f\8f\8b\8f\88\8f\92\8f\8f\8b\8f\8f\8bf\85z\81\81~\81\81zz\85\81\85\85\88\85\81~zzzztzwwwzz~z~z\81z\85\81\81\81\81\88\88\88\85\85\85\81\81\81~\81\85\81~\81\81\85\85\85\85\81~~\81\85\88\85~\81\85t££££££cURXNAAD==::6603330633630000,,,0),00)3006:AGKNRc\X\\X_\\X\\_U\RNRUKKGGGGGGGRNUNUXRUXcfcimimpmpptwwz\81fifffffffifffffcff__UURRRNNNKKKGG==::==========AA==AAA==AAA=====66663=366:6:AD=ARURNNNKKG=A6:36306633333:A=A:DAGGKKKGNKGDKKGNRRNRRRNNKGKGAGNNKGGNGGNNRNNRX_fc_cX_X\\UXUUUURNNNNKNNRNNNNNRRRRUXUU\81\85\85\88\88\8b\8f\8b\8f\8b\8b\88\88\88\88\85\88\85\88\85\81\81\81\81~\81\81~~\81~\81\81\85\81\85\85\85\85\88\88\8b\8f\8b\8f\92\92\92\8b\8b\8b\88\88\8b\92\96 §ªª§££ \9c\96\99\99\99\96\96\96\96\96\96\96\96\92\92\8f\8b\88\85\85\88\88\88\85\88\88\8b\8b\8b\8b\8b\8f\8f\8b\8b\88\8b\85\88\8f\8f\8f\96\8f\96\99 £\9c\99\99\99\96\99\96\96\99\99\96\99\96\96\92\96\99£± §§ª±»¾¾¾¾¾¾Â¾¾»¸»´´´±ª£\99\96\8b\88\81~~zwwtttzz\81\81\81\88\85\88\8f\8f\92\92\96\99\99\96\92\92\96\96\8b\8f\8b\88\85\85~\81~wz~~~~~z~\85\81\85\81\85\85\88\8b\8b\8b\8f\92\8f\8b\88\88\81\81\85\81\81~\81~~\81\85\81\81\88\88\88\8b\8f\8f\92\92\92\96\96\96\9c \9c \99\99\99\99\96\92\8f\92\8f\8f\8f\92\96\99\9cªª§££\9c\9c\9c\99\99\99\9c\99\9c\9c£ § \99\96\8f\8f\8f\92\92\8b\8b\8b\8f\8b\8f\92\92\92\99\9c\9c\9c\9c \9c \9c£\9c £\9c\9c\99\92\92\92\8f\8b\8f\8b\8b\85\88\88\88\85\8f\8f\99\9c££§§£££§ \9c\9c\99\9c\99\96\99\99\9c\9c\99\9c\9c\9c § £§ ££ \9c\99\99\8b\8b\85\81~\81~~~zwztw\81z\81\85\81\88~\88\85\8b\8b\8f\8f\96\92\92\92\96\92\8f\92\8f\92\8b\8f\8b\8f\8f\92\92\8b\8f\8f\8ff\88z\85\81~\81\81w~\81\85\85\85\85\85\81~w~zztwtwzww~w~~\81t\85\85\81\85~\8b\88\88\88\88\85\81~~z~\81z~~\81\81\81\81\81~~z\81\81\88\88~~\81\85££££££cXU\KADDAA:::3,033,633630000,,,,)0,0,3,3:=AGKRX_\X_X\_\\X\_\U\NRUUNKGGGKGKKRNUNUXRX\_f_iifmmmpptwwz\81iiffiffffiffffffffc_UURRRNNNKKKGGA::=======A=AAAAAAAADAADDDAAADD====A=63::=ADG=D\XXURRNKKDA=:03003663033==ADAGKKKNNNKRNKKKNDKRURUUURUNNRKDGKNKDGGGGKGNKKNU_c_\_U_UXXRNRRRRNKKKGGGKKKKNNNRUUUX\X_\85\81\88\88\88\8b\8b\8b\8f\8f\8f\88\8b\8b\88\88\88\85\88\88\85\85\85\85\81\85\81\85\81\85\81\85\85\88\85\88\88\88\88\88\88\8b\8f\8b\8f\8f\8f\92\8b\8b\8b\88\88\8b\96\99 £ªªª£ \9c\99\99\99\9c\92\99\96\96\92\96\96\92\92\8f\8f\8b\88\88\85\88\8b\8b\88\8b\8b\8b\8b\8f\8f\8f\92\8f\8f\8f\8b\8f\88\8b\8f\96\92\99\99\9c ££§ \99\99\99\96\96\96\99\96\99\96\96\96\96\96\96\96\9cª \9c£ £¸»»¾¾¾¾¾Â»¸¾´¸¸±£\96\96\8f\8b\81\81\81~zzwwwz~\81\81\85\88\88\88\8b\8f\8f\8f\99\96\96\92\92\92\92\92\8b\8f\88\81\81\81~~zwzzzzzzz~\81\81\81\85\85\85\88\8f\8f\8f\92\92\8f\8b\8b\8b\8b\85\88\88\85\81\85\81\81\81\85\85\85\85\88\8b\8f\8f\92\96\92\96\99\99\9c ££ ££\9c\9c\9c\99\99\96\92\92\92\92\92\99\9c£ ª±ª§§£\9c\9c\9c\99\99\9c\9c\9c §£§£\9c\99\8f\92\8f\96\92\8b\8b\8f\8f\8f\92\96\96\96\96\9c\9c £ £££ £\9c\9c\99\92\8f\92\8f\8b\8f\8b\8b\88\88\88\88\85\8b\96\9c\9c§£§§££§£ \9c \9c\9c\99\99\99\99\9c \99\9c ££§£££ \9c\99\99\96\8f\88\88\85~\85\81\81\81~z~t~\85\81\85\88\85\88\81\85\88\8b\88\8b\92\92\92\96\92\96\96\8f\8f\8f\92\8f\8f\8b\8f\92\92\92\8f\92\92\92f\88\81\81\85\85\85\85z~\85\85\85\88\85\88\81~z~zztztwzwwzz\81~\81~\88\85\85\85\81\8f\8b\88\88\88\88~z~wz\81zz~~\81~\81\81\81z~\81~\85\88zz\81t£££££w_XUXGGGDAA:6=300030633630000,,,,),,,)006:ADKNR\_\\c\_c\X\X_XXXNRUUNNKGGKKKNRNRRU\UU\_fcfifiimpptwwz\81ifiifiiiifiifffiif__XURRRNNNKKKGG=::A=====AAAAAADADDDDDDGGGDGGGKDDGGKAAADDDGANAG_\\XUURKNGAA6:3006330,30=:DADDNNNRRRNNRKNGNGNNUUXUX\XXUUNGKKKGDGGGGKGKGGNR\U\X\R\RRRRKDNNGGGGGADDGGGGKKNRUXX\_\c\81\85\88\88\88\8f\8f\8b\8f\8b\8f\8b\8b\8b\88\88\88\85\88\88\88\88\88\88\85\88\85\88\85\85\85\88\85\8b\88\88\8b\8b\8b\8b\8b\8f\8b\8b\8b\92\8f\92\8f\8f\8f\8f\8f\92\99\99 £§ªªªª§££\99\9c\99\9c\99\96\96\99\99\92\92\92\8f\8f\8f\8f\8f\88\85\88\88\8b\8f\8b\8f\8b\8f\8b\8f\92\92\96\92\92\92\92\8f\92\96\99\99\9c£§££§§ª£\9c\9c\9c\96\96\99\99\96\96\99\99\96\96\99\96\96\99\99\96\96\99\99\99\9c £±´¸»¾¾¾¾»¸»»¸¸´±£\96\96\8b\88\81\81\85\81~~zz~~\81\81\85\88\88\88\88\8b\8b\8f\8b\96\92\92\8f\92\8f\8f\8f\8b\8b\85\81\85\81zzzwwwzz~ww~~~\81\85\81\88\8b\8b\8f\92\92\8f\8f\88\8f\8b\8f\88\8b\8b\85\81\88\81\81\85\85\85\85\81\88\8f\92\92\96\96\99\99£ £§§££ \9c\9c\99\99\96\96\96\96\99\9c §§±±ªª§£\9c\9c\9c\9c\9c\9c\9c\9c£§£§§£\99\99\92\8f\92\92\8f\8f\8f\92\92\92\96\96\96\96\99 §££§§§ \9c\9c\99\92\8b\8f\8f\8b\8f\8b\88\8b\8b\88\85\85\88\99\9c §£§§§£§£\9c\99 \99\99\96\99\99\96\9c \9c\9c \9c££§££££ \9c\99\99\99\92\8f\8b\88\88\81\81\85\85\85\81~\81\88\85\88\85\88\8b\88\8b\85\85\88\8f\8b\8f\96\92\92\92\92\96\96\8f\8f\92\8f\8f\92\8b\8f\92\92\96\92\96\92\96f\88\85\85\85\88\88\88~\81\85\85\81\88\81\88\85\81z~zzwztwwwwzw\81\81\85\81\88\81\85\88\85\92\8b\88\8b\88\85~~zww~wwzz~z~\81\81~~\81z\81\85w~~icp\i£t\\UXNKKDD=:6:030,0,633630000,,,,)),)),3:=AGKNR__\\_X__X\\U\UUURUXUNNKGKGKNNRNRRRXXUX\cffifimmpptwwz\81iiiifiifiimmiifiif_c\XURRNNNKKKGG:=:=====AAAAADDDDDGGGGGKKKGKKKNKKNNNKNNNRKKNRRGc__\XXUNRKKDD=6,3303300,:=DAGGNNRRRRRRRNRKKGKRUUXUX_m_\XRKNKNGGGGGGKGGGGKKXRRRUNXRNNNGA:ADDDDDAADDGDGGKNRX\\\__f\85\85\88\85\88\8b\8f\8f\8f\8b\8b\8b\88\8b\88\88\85\88\88\88\8b\88\8b\8b\88\8b\88\8b\88\88\88\88\88\8b\88\8b\8b\8f\8b\8f\8b\8b\8b\8f\8f\8f\92\96\92\92\8f\96\99\96\9c ££ª§ªª§§§\9c\9c\99\99\9c\99\99\96\96\92\92\8f\8f\8b\8f\8b\8b\88\88\88\88\8b\8f\8b\8f\8f\92\8f\92\92\96\96\96\96\96\96\92\96\99 §§ªª§§ªªª§ \9c\99\99\99\9c\99\96\99\96\99\96\96\96\96\96\96\99\96\96\96\96\96\99\9c ª´´´¾»¾¾»¸¸¾´´±±ª \92\92\8b\85\85\85\85\85\81\81~~\81\81\85\85\88\88\85\85\88\8b\88\8b\8b\8b\8f\8f\8b\8f\8b\8b\8b\88\88\85\85\85~zwzwwwzw~wwz~~\85\85\81\85\88\88\92\92\8f\92\8f\8b\8f\8b\92\8b\8f\8f\85\85\85\81\85\88\88\85\88\8b\8b\8f\99\96\9c£ \9c§£§§§§§§ £ \9c\99\99\99\99\99\99\9c££ªª±±ªª££ \9c\9c\9c\99\9c §ª§§ª§\96\99\96\92\92\8f\92\92\8f\92\96\96\99\96\99\96\9c £ ª§§ªª§ \9c\9c\96\92\8b\8f\8b\88\8b\8f\88\88\8f\88\81\88\88\9c\99£§§£§££££ \99\9c\9c\9c\99\99\99\96\9c\9c\9c\9c\9c\9c\9c\99 £ £ \9c\99\99\96\92\8f\8f\88\8b\85\85\88\85\85\81\81\85\8b\88\8b\88\8b\8b\8b\8b\88\88\8b\8f\8f\8f\92\96\92\92\92\96\96\92\8f\8f\92\92\92\8f\92\92\96\96\96\96\96\92f\8b\88\88\88\8b\8b\85\81\85\88\85\81\85~\85\85\81z~~~wwttwwtzt\81\85\88\85\8b\85\85\88\85\8f\8b\88\8b\88\81~zzwwzttwtzwz~~zz~z~wtzmff\\\fp__X_RNGGD:6::03003)633330000,,,,)),),03:ADGKNR__\__\_\\\XRXRXXUUUXNRKGKGKNKRRRRRUUXXXcccfffimpptwwz\81imffiiifiiimifffii\__UXURRNNKKKGG:::====AAAAADDDGDGGKKKKKKNKNNNRNNRRRNRRRURRRUURf\\\\\XNRGNDGA6,603600006:AAKKNNUUUUUUURUNNUKUUUUU__zc_URNRKNGKGGKKKGGGGKKUNNNRKRNKKD::66:=A=A=AADGGKGNRUX_\\__f\85\85\88\88\8b\8b\8f\8b\8f\8b\8b\88\88\88\88\88\85\88\8b\8b\8b\8b\8b\8f\8b\8f\8b\8b\88\8b\8b\88\8b\8b\88\8b\8b\8f\8b\8b\8f\8f\8b\8f\8f\8b\92\96\96\96\96\9c\9c ££§§ªªªª§££ \99\99\99\99\96\96\92\8f\92\8f\8b\8b\8b\8b\88\88\8b\8b\88\8f\8b\8f\8f\92\92\92\96\96\99\96\99\99\99\99\99 £ªªªªªª§£ \9c\99\99\99\99\96\99\92\96\99\96\92\96\96\92\96\96\96\92\92\96\96\99£§ª±±±¸¸´¸¸»´¸´±± \9c\8f\8f\8b\88\88\85\88\85\85\85~\81\85\85\88\88\88\88\88\88\8b\8f\8b\88\88\88\8f\8b\8b\81\88\85\85~\81\85\85\81\81~zzwwwwwzzzzz\81\85\81\85\81\85~\8f\8f\92\92\8f\8f\8f\8f\92\8f\92\8f\88\88\88\85\88\8b\8b\88\8b\8f\96\92\9c\99ª§£ªªªªªª§ª£ ££ \9c\99\99\99\9c\9c §§ª±±´ªª§£ \9c ££ªªªª§\92\96\96\96\92\92\92\96\92\96\96\96\9c\99\9c\9c £§ªªªª§£ \9c \9c\9c\96\8f\8b\8b\8b\8b\8f\8f\8b\8b\8f\8b\85\8b\8f \9c£§ª£§££§£\9c\9c\9c \9c\99\99\99\96\99\9c\9c\9c\99\99\99\96\9c\9c \9c\9c \99\99\96\92\8f\92\8f\8b\88\85\85\85\85\85\81\85\88\8f\8b\8b\8b\8b\88\8b\8b\8b\8b\8b\8f\8b\8b\92\96\8f\8f\92\96\96\92\8f\8f\92\92\8f\92\92\92\96\92\96\96\96\92f\8b\88\88\88\8f\88\85\85\85\88\85~\81\81\88\85~~z\81~zwppttpXt\81\85\88\88\88\88\88\85\81\8f\88\88\88\88\85\81zwttwpptptppzzwzzzwwpwmcc\X\cmcc\cURKDG=::636,00,633330000,,,,)))),36=ADGKNR\c\_____\XUXUUX\XXXXRNNGGGKKGRUUUURRXU\c__cffimpptwzz\81imifififiiimiiffif\__XUURRRNKKKGG=::====AAAADDDDGGGGKKKKNNNNNRRRRRUUURUUUXUUUXXUf_\\\\XKRKNGDA60300300,036A=GGKRRUUXUXXUXURXUXXUU\cf~fmURRRRRNNKKNGGGGGGGGNKKKNKNKG=A663366:6:==ADGGNKNRUX_\\__c\85\85\85\85\8b\8b\8f\8b\8f\8b\8b\88\85\85\8b\88\81\85\8b\88\8b\8b\8f\8f\8f\8f\8f\8f\8b\8b\8f\8b\8b\88\8b\8b\8f\8f\8b\8b\92\8f\8f\8f\8f\8f\92\92\99\92\99 ££§§§§§ªªª§§§££\99\99\9c\99\96\96\92\8f\8f\8b\88\8b\8b\8b\8b\85\88\8b\8b\8f\8b\92\92\92\92\92\96\96\9c\99\9c\99\9c\9c\9c££§±±ª§££\9c\9c\9c\99\99\96\99\96\99\99\99\8f\96\92\92\92\92\92\92\96\96\99\99 £§±´´\92´\8f»\8f´\99ª\9c\96\8b\8f\8f\8b\88\88\88\88\88\88\81\85\88\88\8b\88\8b\8b\8b\88\8b\8b\8b\85\8b\88\8b\85\88\81\85\88\85~\81\81\81\85\81~~zzzzwwwwzzz\81\81~\81zzwt\8b\8f\8f\8f\8f\8f\92\92\92\92\8b\8b\8b\8b\88\88\8f\8b\8b\8b\92\99\9c §´±±ª§§§ £ £\9c\99\9c\9c £ªª±±±´´±ª§£ ££ \9c ££±ª£\96\92\96\92\92\92\8f\96\96\96\96\99\9c\9c\99 \9c§ªªªªª§£ \9c \99\99\96\92\8b\88\8b\8f\8f\8b\88\8b\8f\8f\92\8b\92 §ª£§§ §£\9c \9c\9c\99\9c\99\99\99\9c\9c\99\9c\99\8f\96\8b\96\9c\9c\9c\9c\99\99\9c\96\96\92\8f\8b\8f\8b\88\88\81\81\85\85\85\81\85\88\8b\8f\8b\8b\8b\8b\8b\8b\8b\8b\8b\8f\8b\8b\92\96\8b\92\92\96\96\8f\8f\8f\92\92\92\92\92\92\92\96\96\99\96\92f\8b\8b\8b\8b\8f\85\88\88\85\88\85~\85\85\85\85~\81z\81zzttpptpXw\81\85\85\88\85\85\85\81~\8b\88\85\85\85\81~wwttwpmmmpmiwwtwwwwwmpif_XX_fiff_fXUKGDA=::33,330633330000,,,,))),03:=ADGKNU\c__\c_c_\X\UX\_\XXURRRGKGNKKNXRXXRRXUXc_ccfiimpttwzz\81miffiiffiiimmiiiif_\\\XURRNNKKKGG:======AAAADDDDGGGGKKKKNNNNNRRRRUUUUUUXX\XXX\\Xc\\__XXNNNKKAD:30,00,,)006=:DDGNNUUUXX\XXXX\X\\X_ciizmtXRUUURRRNNNGGGGGGGGGGGGKGKDD6=6333666:::AADGKNNRURX\\\\_c\88\85\81\85\88\88\8b\8b\8f\88\8b\88\85\88\88\85\85\85\8b\88\88\8b\8f\8f\8f\8f\8f\8f\8b\88\8b\88\8b\8b\8b\8b\8f\8f\8f\8f\96\92\92\92\8f\8f\92\96\99\9c\9c££§§ªªªª§§ª£ª§§ \9c\99\9c\96\96\92\8f\8b\8f\8b\8b\88\8b\8b\8b\88\8b\8b\8b\8f\8f\92\92\92\92\96\96\96\9c\9c\9c\9c §§ª±±±±±±§£ \9c\9c\99\99\96\99\96\9c\96\99\92\96\92\92\92\92\92\92\96\92\99\99\9c£§§ª±±\88\88\88\92\81\92\96\96\96\96\99\92\8f\8f\8b\8b\88\88\88\88\88\8b\85\85\88\88\88\88\88\88\8b\88\8b\8b\88\85\88\85\88\85\85\81\81\85\81\81~~\81\81\81z~~z~zwwttwww~~zwwwwp\88wz\8b\8b\8b\92\92\92\92\8f\8f\8f\88\88\88\8b\88\88\8f\8f\9c£§¸¸´´´±´±±ªª§ \9c\9c §ª´´´¸±±ª§§££££ £§§´± \99\96\96\8f\92\92\92\96\99\99\99\9c££ªª ´§ªªªª£ \9c\9c\99\96\96\8f\8f\8b\8b\8f\8f\8f\8f\8b\8f\92\96\8f\96\9c £§ª§££ ££\9c \9c\99\9c\99\9c\9c\9c\9c\99\99\96\8b\92\8b\92\99\99\92\99\96\96\99\92\92\8f\8f\8f\8b\88\85\85\81\81\81\81\85\81\81\88\8b\8f\8f\8b\8b\8f\8b\8b\8b\88\8f\8b\8f\8f\96\96\8b\92\8f\96\96\8b\8f\8b\92\8f\92\92\96\92\92\96\92\96\99\92f\8b\8b\8f\8b\8b\88\88\88\88\88\88\81\85\88\85\81~\85z~zwpppmppXt~\81\81\85\81\81\81~z\88\85\88\81\81~zttpptpiiimifmmptttwtmpif_XXcciffcc\UKKDA=:6600330633330000,,,,))),06:=ADGNRU______\__\X_X\Xc_\UXNNNKKGNNNNUUU\RUXXXcccffimmpttwzz\81iffiiiifiimiiiiimc_\\\UURRNNNKKGG::=====AAAADDDDGGGGKKKKNNNNNRRRRUUUUXXXX\\\\__\c\_\cUUKRRKNDG=00,,,,,),03:6AADKKUXUX\X\X\\_ci_\cfmmzwwXRRUXRUUNNRGKGKGGGGGADDDDDA:3:3330366:==AADGKRRRRRXXXX\\_\88\81~\85\88\88\88\8b\8b\88\88\85\85\88\85\81\81\85\88\85\88\8b\8f\8f\8f\92\8f\8b\8b\88\8b\8b\8b\8b\8f\8b\8f\92\92\92\96\96\96\96\96\92\96\96\9c §§ª§ªªªªªª§ §§£\9c \99\99\99\92\92\8f\8b\8b\8b\8b\88\8b\88\8b\8b\8b\8b\8b\8f\8f\8f\92\96\96\96\99\99\9c\9c \9c£ £ªª±±±±±±ª£££ \9c\99\99\9c\99\99\99\99\9c\96\96\96\92\96\96\92\92\96\96\96\96\9c\99 §£§ \96\92\88\88\85\81~\81z\85\8f\8b\8f\8f\8f\8f\8f\8f\88\88\88\88\85\88\85\88\8b\88\85\85\8b\85\88\85\88\8b\88\88\88\85\88\85\85~~\85\81~~z~~\85~\81\81~\81zttttwwzzzzwzwwtttw~\88\88\8f\92\92\92\8b\8b\8b\85\85\85\88\85\85\8b\8b §´»»¸¸¸´´´´±±ªª§££ \9c\9c £££ª±¸¸´¸´±±ª§§£§£££§ª´±´£\9c\96\96\92\96\96\96\96\96\99\9c §ª±±¸±±ªªª§§£\9c\99\9c\96\96\92\8f\8f\8f\8f\8f\8b\8f\92\8f\8f\92\96\92\96\9c\9c §§§£££§£ \9c\9c\9c\9c\99\99\9c\9c\9c\9c\99\96\92\88\8f\88\92\96\96\92\96\92\8f\96\92\8f\8b\8b\8b\88\85\85\85~\81\81\81\81\81\85\88\8f\8f\8f\8b\8b\8f\8f\8f\8b\88\8f\8b\92\8f\92\92\88\92\8f\92\92\8b\8f\8b\92\8f\8f\92\96\96\96\96\96\92\96\92\8f\8f\8b\8f\88\8b\8b\88\8b\8b\8b\88\85\81\88\85\85\81\85zzzwpmpmmpzwz~~\81~w~pw\85\88\85~~zpppmmpmffcifffimppttpppfc_X\_cfifff\UKGDA=:6600363633330000,,,,)),,36:AADKNU\c_cc_\\c\\\\\XUc_\UXKNKKNKNRNRXXRXURXXX__cffimmpttwzz\81ifffiiifiimmmiiimc_\\\XURRNNNKKGG=::====AAAADDDDGGGGKKKKNNNNNRRRRUUUUXXXX\\\\___c_\\_UXNNNNNGGA,0),%,)%),0336=DGKRUUX\X\X\_cfmf_fwzwzzzXUURUUURRRRRNGGGGDGGAAAA==630003306::=AAAADKNRRRRUXXXX\\\\85\81z\85\85\85\85\88\88\88\88\85\85\88\85\81\81\81\85\85\88\88\8b\8f\8f\92\8f\8b\8b\8b\8b\8b\8b\8b\8f\8f\92\8f\92\96\99\99\99\99\99\9c\99 ££§ªª§ªª§£\9c££ \9c\9c\99\99\96\8f\8f\8f\88\8b\8f\8b\8b\8b\8b\8b\8b\8b\8b\8b\8f\8f\8f\96\96\96\96\9c\9c ££§ª±±´±±´±±§ £ \9c\9c\99\99\9c\99\99\9c\9c\96\96\92\96\96\92\96\96\99\96\96\96\99\9c \9c£ \99\96\8b\88\85\81\81z~w\81\88\88\8b\8f\8b\8b\8f\8f\8b\88\8b\88\88\85\81\85\88\85\88\81\88\85\88\85\85\8b\85\85\85\81\85\85\81z~\81~~zwzz\81\81\81~~~wttpttwwzwwwwzwtmtzzz\85\8b\8f\8f\8f\88\88\88\81\81\81\81\81\81\88\88\9c´¸¾»»»»¸´¸¸±§ª§§££ \9c §§£´¸¸´´¸±±§£§§§£§ª±±ª§ \99\96\92\92\96\99\96\9c\9c ª±´´»´ªª§§ \9c\9c\9c\96\96\8f\92\92\92\8f\8f\8b\92\96\92\92\8f\92\96\96\99\99\9c§£££§££££\9c\9c\9c\9c\99\99\99\99\99\99\99\92\8f\85\8f\88\8f\92\92\8f\96\92\8f\96\8f\8f\88\88\88\85\81\81\81~~\81~\81\85\88\88\8f\92\8b\8b\88\8b\8f\8f\8b\8b\8f\8b\92\8f\8f\8f\8b\8f\8f\92\92\88\8f\8b\92\8f\92\92\92\96\96\96\92\92\92\92\8b\8f\88\8f\88\8f\8b\88\8b\88\8b\8b\88\85\88\85\85\85\85~wwwppppimwtwzz~witmp~\85\81zwtfiffimicccfccfiimptpppmc__\_ccfffffXUNDD==6:60,336633330000,,,,)),03:=ADGK_f_fcc___X_\\\X_UR_\\XXNNNKRKNRRUXXNUXRX\\\_cffimmpttwzz\81ffffiiiiiimimmiim__\\XXXUURNNKKGGA::====AAAADDDDGGGGKKKKNNNNNRRRRUUUUXXXX\\\____cc__\XXRRKNNKDA),))%)%"%),003:ADKRRXXX\\\\\fcpicft~z~zwcXUURRRRUUUUKDDDDDGD====663000,003::=ADDDGKNNRRRRUXUUU\__\81~~\81\81\85\85\88\88\88\8b\85\88\88\85\85\81\81\85\85\88\85\8b\8b\8b\8f\8b\8b\88\88\88\88\8b\8b\8b\8f\92\92\92\99\9c\9c\9c\9c\9c £ §§§ªªªªªª££\9c \9c\9c\99\99\9c\92\92\8f\8b\8b\8b\8f\8b\8b\8f\8f\8b\8b\8b\8b\8b\8f\8f\92\96\96\96\99\9c\9c ££§ª±±´±±´±ª \9c\9c\99\9c\9c\99 \99\96\99\96\99\96\96\96\96\99\99\99\99\99\9c\9c\99 \99\99\96\92\8b\8b\88\85\81zzw~\81\85\88\8b\88\8b\8b\8f\8b\88\8b\88\85\85~\85\85\85\88\81\85\85\85\81\81\88\88\85\85\85\85\81\85~z~zzzwww~~~z~zwtttpttwwtwwwwztpwz~z\81\81\8b\8b\8b\85~~~z~~~w\85\85\99¸»¾¾»¾¾»¸¸¸´±ªªª§§£££££§§±´´¸´´´±§££§£§§±´§£\99\99\92\96\99\9c\99 £§±±¸¸¸±±±ª§§§ \9c\9c\9c\96\96\8f\8f\8f\92\8f\92\8f\96\96\96\96\92\96\99\96\96\96\99££ £§ \9c\9c\99\9c\9c\99\96\96\96\96\96\8f\8b\85\8f\88\8b\92\8f\92\96\96\8f\92\8f\8b\88\85\81zz~~zz~~~\81\88\85\8f\8f\8f\88\88\8f\8b\8b\8f\8f\92\8f\92\92\92\8b\8f\8f\8f\8f\8f\88\8b\8b\8f\8f\92\92\8f\96\99\96\92\96\92\92\8b\8f\8b\8b\8b\8b\8f\88\8b\88\8b\8b\88\88\88\85\85\85\81~tzttpppipttttww_fpimz\81mimm_fccccfcccfc_ciifptpmti__c\_cccccccURKADA:::33,606633363000,,,,)),06:=ADGiciccc_\cc\_X_\\\XR__XX\NRNNNNKRUUXUNUXRXXXX_cffimmpttwzz\81ifffiimiiiiipiiim__\\\\XUURRNNKGGA=:====AAAADDDDGGGGKKKKNNNNNRRRRUUUUXXXX\\_\___fcc__\XURNRNNGD,)%)%)"\1f")),,0:==GNNUXX\\XX\ccpmfptz~\81zzi\XRNRRNUXUUKDAAAADA:=:6030,00,0036:ADGGGKNRRRUNURUURU\\c~~~~\81\85\85\85\8b\88\8b\85\88\85\85\81\85~\81\85\85\85\88\88\88\8b\88\88\85\85\88\88\8b\8f\8b\8f\96\92\96\99 ££§ªªªªª§ªªªªª££ \9c\9c\99\99\96\99\99\92\96\92\8f\8b\8f\8f\8f\8f\92\92\8f\8f\8f\8f\8f\8f\92\92\96\96\96\99\9c £££§ª±±±±´´´´´§££ \9c\9c\9c\9c\9c \9c\9c\9c\99\99\96\96\96\96\99\99\99\9c\9c\99\99\9c\9c\99 \96\92\99\8f\8f\8b\88\85~zzzw~~\85\8b\85\8f\8f\8f\8b\8b\8b\88\81\85~\85\81\81\88\81\85\88\85\81\81\85\88\85\85\81\85\81\81~~zzzwtwtwz~tzwwwpppppttwtwwzzwtzw~~\81\81~\85~\81zzzwzztw\81\81\92¸¾¾¾»»¾¾¸»¸´±ªªª§§££§§£ªª±±´¸´±´±ªª§ £££§ªªªª±±ª§\9c\9c\96\99\99\9c\9c££§ª±´´¸»»´±±ª§£§ \9c\99\99\96\92\92\92\8f\8f\8f\92\92\96\96\96\99\96\99\99\96\8f\96\96 £\9c \9c\99\9c\99\99\9c\96\92\96\92\92\92\8b\88\85\8b\8b\8b\92\92\92\92\96\92\8f\8f\8b\88\85wwwwtwwzzz~\85\81\8b\8b\8b\88\8b\8b\8b\88\8f\8f\92\92\96\8f\92\8f\8f\8b\8f\8f\8f\8b\8b\8b\8f\8f\8f\92\92\96\96\96\92\96\92\92\8f\92\8b\8f\8b\8f\8b\88\88\88\88\88\85\88\88\85\88\85~~wwwtpmpfpppipicccff_mzicif\\______ccfc_fiiftppipfc\_\________RNGAA=:=6030303633366000,,,,))036:=AGKififcc__cc__UcXXXXR_\\\XNRKKKNKRRUXRNRURUUXX_cffimmpttwzz\81ffffiiiiiiiimmiimc_\\\\XUURRNNKGGDA=====AAAADDDDGGGGKKKKNNNNNRRRRUUUU\XXX\\\\___cffcc\\XURRRRDA0%%)"%\1f\e\1f%)),3:==DKNRUUXXUU\__mpitw~~~z~\88pXUNRRNX\URGDA===::6:63,0,,,003336=AGGKKNRUUUURRRRUUX\\_~~\81\81\81\85\88\85\88\88\88\85\85\85\85\81\85~\81\81\81\81\85\85\85\85\85\85\81\85\88\88\88\8f\8f\92\96\92\96\99 ££§§ª§ªªªªªªªª§£ \9c\99\96\96\92\96\96\92\92\92\8f\8f\8f\92\92\92\96\96\92\92\92\92\92\92\92\92\96\96\96\99\9c \9c §ª±±±±¸¸´´±ª§££££ \9c\9c \9c\9c\99\9c\99\99\99\99\99\9c\9c \9c\99\99\9c\99\99\9c\92\96\96\8f\8f\88\88\85~z~zz~~\81\88\85\8b\8f\8b\88\8b\8b\8b\85\85~\81~\81\85\81\85\85\85~\85\88\85\81\81\85\85~~~~wzwzpttptztwtttpppmmpttwwwz~zwzz\81~~~~\81~zpttmtwtwzt\8f´»¾¾¾¾¾¾»¸´´´±ªªª££££ªª§§±´´´±±ªªª££ p§§§§ª±ª§ \9c\99\99\9c\9c §£§±´¸¸»»¸´±§£ £ \9c\99\9c\99\96\96\92\92\92\8f\96\96\96\96\96\99\99\99\96\92\8f\96\8f\9c \99 \9c\99\99\99\99\99\96\92\92\92\8b\8f\88\85\85\88\8b\8b\92\8f\92\8f\92\92\8b\8b\8b\88\81wtimfmtwwtt\81~\88\85\88\85\88\88\88\88\8f\8b\8f\92\96\92\92\8f\8f\88\8b\8b\8b\8b\8b\88\8f\8f\8b\8f\92\92\92\96\8f\92\92\8f\8f\8f\8f\8f\8b\8b\8b\85\85\85\85\88\85\88\85\85\88\81~~zwwttmmimmm__fc___c\fmf_c\XX\\\___ccffcfiifpmpffc__\X\_\\XUUXNKDDD==:6,330,0633336033,,0,),036:=DGmiiiiff_c_cc_X_U\UUU\\\\XRRNNNNNRNUURNRRRUUXXccffimmptwwzz\81ffffiiiiiiiimmmmmf_\\\XXUURRRNNKGDA=====AAAADDDDDGGGKKKKNNNNNRRRRUUUUXXXX\\\\___ffifcX\\URNUNGA,%"%\1f"\1f\e\e"%%)06::ADKNRRUXUUXX\immpt~~\81~~\85tmXRRRRX\XRGD=:66:6663,,,,,030633:AAGKNNRUUUUUURRUUUX\_czz~\81\81\85\88\88\88\88\88\85\88\88\88\85\81\81\81\81z~\81\81\81\81\81\81\81\85\85\88\8b\8b\8f\92\96\92\96\99£ ££§§§±ªªª§ªª§ª££ \9c\99\99\99\96\96\92\92\92\96\92\92\92\96\92\92\96\99\96\96\96\92\96\96\96\92\96\99\96\99\99 \9c£ £§±´´´¸±´ªª§£ £ £\9c \99\9c\99\9c\99\9c\9c \9c\99\9c\99\99\9c\99\96\96\92\8f\92\8b\8b\88\81~~wz~~~\85\85\88\8f\8b\8b\8f\8f\8b\81\81\81\81\81\85\85~\85\81\85\81\85\85\81\85\85\85\81\81\81~~zwwwpttptwptttttpmmmpttwwww~~z~~\81~z~z~zwptmmptpw~p\81p¸»¾¾»»»»¸´´´±ª§ª§§£§ªªªª±±±ªªª§§ ££p§§§§ªª§££ \9c\9c £§ª´±¸¸»»¸¸´§§ \9c\99\9c\99\99\96\96\8f\8f\8f\92\96\96\96\96\96\99\96\96\92\92\92\92\9c\9c\9c\9c \99\9c \99\96\96\96\96\96\92\92\8f\8f\8b\85\88\81\88\88\8b\8b\96\8b\92\8f\8f\8f\8f\8f\88\85~wmff_ffmcc_pti\81\81\81\85\81\85\85\8f\8f\8f\96\96\8f\96\8f\8f\85\88\8f\8b\8b\8b\88\8f\8f\88\8b\8f\8f\92\96\8b\8f\96\92\8b\8f\8b\8b\88\88\88\88\81\85\81\85\81\85\85\81\88~~~zwtttmmfiii_\c_\\\UXc_X\XXUXXX\\ccccffffiifmimfc_\\UUX\UNGNRUGGAAA::63)3000,633366363,0,,,,036=ADNifiificc_\_c_\_X_UUU\X\XXRNNNNNNRNRRRRRRRUU\X_cfiimpptwwzz\81ffffiiiiiiiipmmmpcc_\\\XXUURRNNKKAA:==A==AAAADDDDGGGGKKKNNNNNRRRRUUUUXXXX\\\\___ccfcc\XXXUNURD=)""""\e\e\18\18\1f""%,)66=DGGNNRUXUXUXcimfpz\81~\81\81\88wiXUURRU\\RGA=66666300,0,,0363666:ADGKNRRUUXUURRRUUUX\_cww~~\81\85\85\88\88\88\88\88\85\88\88\85\81~~\81zz~~~~~~\81\85\85\85\8b\8f\8f\92\96\96\99\99 ££§£ªª±ªªªªªª§§£ \9c\9c\99\99\99\96\96\92\96\96\96\96\96\96\96\96\96\99\96\96\99\96\99\99\96\96\96\99\96\99\99 £§ªª±´¸´´±ªª§£££ £ \9c\9c\99\99\99\9c \99\9c\99\9c\9c\99\96\96\92\8f\8f\8b\8b\88\81~~zz\81\81~\88\85\85\8b\8b\8b\8f\8f\88\81\81\81\81\85\85\88\81\81\85\81~\85\81\85\81\81\81~\81\81~\81zwwttpppptmtttpwpmppppttwwzz~z~~~~w~zzwwppmpptttzpzt¸¸»»¸»»¸¸¸´´ª§ª£§££§ªªª§££§£§£§£tª§ª§ª±ª£§ \9c ££§ªª±´¸´»»»¸±£§£\9c\9c\9c\99\9c\99\99\99\96\8f\8f\8f\8f\96\96\96\96\96\96\99\96\96\96\92\92\99\99\99\9c\9c\99\9c\9c\96\96\92\92\92\96\8f\8f\8f\8f\8b\85\85\81\85\88\88\88\96\8b\8f\8f\8f\8f\92\8b\85\81~wicc\cc__\_cifmt~~Xzp\8bp\8f\92\92\8f\92\8b\8b\88\8b\8b\88\8b\8f\88\8b\8b\88\85\8f\8b\92\92\8b\8b\92\8f\81\8bz\88\85\81\85\85\81\81z\81~\81\85~\85z~~zwtttmmfiif\__\XXXRU\XUUUURUUUX\ccfciifimfcmfic_\XXRKNGRDADKR==3==6033%0,,006333336:300,,,,03:=AGRmiiicifc__c___\X_UUUXUXUUNRNNNRNRKNNURRUUUU\\_ciimmpttwwzz\81fffiiiiiiiiimmmmpcc__\\XXUUURRNKKDA:==A=AAAAAADDDDGGGGKKKKNNNRRRRUUUUXXXX\\\\c__f_c_c\\X\XRXNAA)""\1f\1f\18\e\14\18\e\1f\e"%%03:ADDGGGRXUUUUX\i\iw\85_\85\85\8btf\X\XRRX\RK=:66663000,00,36::==:=ADGKKRUUUXUURRRXUUX\\_ww~~\81\85\85\88\8b\88\8b\85\88\88\85\85\81zz~zz~~z~zz~\81\85\88\8b\8b\8f\92\96\96\96\99 £ §£§ªªªª£ \9c\99\99\96\96\96\96\96\99\99\99\99\99\99\99\99\99\99\99\96\96\96\96\99\92\99\96\99\99\99\9c §§ª±´»´±±ªª§£§££££ \9c\99\96\96\99\9c \9c\9c\9c\9c\99\9c\96\96\92\8f\8b\8b\8b\85\81~\81~z~~\81\85\81\85\88\88\8b\8b\8f\8b\88\85\85\85\85\88\88\85\85\88\81~\85~\85\81\81\81~\81\81~\81~zwtpmmpmpipppptmpmmmpttttzz~z\81zzzzzztwtpmppppptzpwp¸´¸»¸»»»¸¸±±ªªªª£§£ £ªª§§ª§ªª \9c ££§§§£§ª§ªªªª£££ \9c §§ªª±±´¸¸»¸´ £ \9c\99\99\99\9c\99\9c\96\96\8f\92\8f\92\96\92\96\96\99\99\9c\96\96\96\92\96\96\99\99\99\99\99\99\9c\99\92\8f\92\92\96\8b\8f\8f\8f\88\88\81\85\88\88\88\8b\96\8f\8f\92\92\92\8f\8b\85\81~tmf_\c\__X\\_ccpciX_pwp\8b\8f\8f\92\8f\8f\8b\88\8f\88\88\8b\8b\8b\8b\8b\88\88\8b\88\8f\8f\8f\88\8f\8b\81\81z\81tz\85\81\81wz~z\85\81z\81z~~zwtwtmmific__\XUUUNNXURGKRKRRR\_cfffiifiif_i\c_\XURNDKDGA=ADD3:,:03))0",)),,633333666300,,,36:=ANipimffff_c\c_\_X\\UUXURUURNNNNNNNNKNNURRUUUX___fimpmpttwwzz\81ffffiiiiiimipmmmpffc_\\XXUUURRNKKA=:A=====AAAADDDDGGGGKKKKKNNNRRRUUUUXXXX\\\\___c__\__\\\XUUR:=)%"\1f\e\14\18\11\18\18\18\e\1f\1f\1f,06==ADDGNXXURRRX\XXc\81\\88\88\8fpc_\_\UUU\UK=:363330,,,00,6:==DAAADGGKKNRRUXXXURUXUXUXX_twz~~\81\88\88\8b\88\8b\88\88\88\88\88~wzzwwzz~~z~~~\85\85\88\88\8b\96\96\96\99\99\9c£££§£§ªªª§ªªª§££\9c\99\99\96\96\96\99\96\99\96\99\9c\9c\9c\9c\9c\99\99\99\99\99\99\99\9c\96\96\99\99\99\9c\9c £ ££§ª±´¸±±ª§§£§£§§£ £ £ \9c\9c\99\96\99\99\9c \9c\9c\99\99\99\96\99\92\92\92\8f\88\8b\88\88\81~\81\81~~\81\85\81~\81\85\85\88\88\8f\8f\8b\88\88\88\85\88\85\85\88\88\81\81\81\81\85\81~\85\81\81\81\81\85\81zwtpmpmimfpmpppppmmpppptpwz~z~zzwwwwtwwmmmmpppwwttm¸¸¸¸¸»¾»¸¸±±ªªª§§££ \9c\99§\92£\9c§££\8b\9c\9c\9c\9c£§§ª§§§§ªªª±ªª§§£\9c\9c £§§§±±´¸¸´±ª\9c \9c\99\96\96\96\99\99\99\96\92\8f\92\8f\96\92\92\96\96\99\99\99\96\92\96\92\99\96\99\96\99\99\99\96\99\99\92\92\8f\92\92\8f\8f\8f\8b\85\88\81\88\85\88\88\8b\96\8f\8f\92\92\96\8f\8b\81~~wmc_\c\\_U\X\_Xc_c\_pmt\8b\92\8f\92\8f\8f\8b\85\8b\8b\8b\8b\8b\8b\88\8b\8b\8b\8b\88\8f\8b\8b\85\8b\88~ww~tz\81z~wwzw\81~~\81z~~zwttpppmffc_\\URNRKGNKKGGKKKRR\_ffffmifffc_\\_\XRRGG:AAD=::=A"%),),"%,\18%))))633333366300,0036:=GRmmfifffc_fXccX\UX\UUURRRUNNRNNNNKNNRNRRUUXX\\__fimpmpttwwzz\81ffffiiiiiiiipmmmpffcc_\\XXUURRRNK=====A===AAAAADDDDGGGGKKKKNNNNRRRUUUXXXX\\\\____\\X\__XXUURN=:,%""\1f\18\18\11\14\11\14\18\18\e\e),3::==AGKU\RRRRUUUX\fX\85\85c__c_c_UXRXRGA:333300,,,0006AAGGDDGGKKKNNNRXXXXXURUUUUUU\ptwz~\81\88\88\8b\88\88\88\88\85\88\88zzzwwwzzzzwzz~\81\81\85\85\8b\92\99\96\99\9c\9c £££££§§ªª§ª±±±ª§§£\99\9c\9c\99\96\92\96\99\9c\99\99\99 \9c\9c\9c\99\9c\99\9c\9c\99\99\99\9c\99 ££ ££§ª±´´±ªª§§££§§£ £ £££ \9c\96\92\99\99\9c£ \9c \99\99\96\96\99\92\96\8f\92\8f\8f\8b\8b\88\88\81\81\81\81~\81\85\81~z~~\81\88\85\8f\92\8f\8b\8f\8b\8b\88\85\85\88\88\85\81~\85\81\81\81\81\85\81\81\81\81~~zppipiiicmippmpppmpppptpt~~zzzwtwwttwtiippmppttttp´¸¸¸»»»»¸´±´ª§ª£££ \9c\96\8f\8f\8b\8f\8b\99\92\8f\8f\96\99\9c §£§ªªª§ªªªª§§§§ §ª§ª±±±´´´ \9c \9c\96\96\96\96\99\99\96\96\92\92\92\8f\92\96\96\96\96\96\99\99\96\92\92\92\96\96\96\92\99\96\99\92\96\96\8f\92\8b\92\8f\92\8b\8f\8f\85\88\85\88\88\88\8b\8f\96\92\8f\92\96\96\8f\88\85\81~zpc_\cX\_UX\X\X__XX\mcp\8b\96\8f\92\8f\8f\8f\81\8b\8b\8b\8f\8b\8b\8b\8b\8f\88\8b\88\8f\88\88\85\88\85~wttpw~zzzzww~~\81\81~~zztttpppmfcc_\\RGKKGGKKDGDKGKNRX_ccffiififf_\\UXURNDG6:03636::\1f"\ 3)%%\1f")\14")%%%633336633033,0036:DNUpmfmiifc\f\__\XXXXUURUURRNRNNNKNNKNNNURRU\\\\c_iimtmpttwwzz\81ffffiiiiiiiimmmmpffcc_\\XXUURRRNN=========AAAAAADDDDGGGGKKKKNNNNRRRRUUUXX\\\\___\X\UU\\XXURRK:60""\1f\e\14\14\11\11\14\14\14\14\18\18\18)%30::ADKRpRNRNRRRXU_UXp\\\_\_cXXRUND=63330,,),0000:GNKKGGKKNNNURRUXXXXXURUXXXRUXiptwz\81\85\85\88\8b\8b\88\88\88\85\88zzzzwzwzzwwwwz~~z\81\88\8f\96\99\96\9c £§§£§§§§§ªª§±±±ª§£\9c \9c\99\96\96\99\99\99\9c £ª£ ££ \9c \99\9c\9c\99\99\99\9c\9c £§££§§ªª±´´±ªª§§£§£§£§££ £§ £ \99\96\96\99\9c \9c\9c\9c\99\96\96\92\96\92\92\8f\8f\8f\8f\88\8f\8b\88\85\81\85\81\81\81\85\85zwwwz\85\85\92\92\92\99\92\99\92\88\88\88\85\85\88\85\81\81\81\81\81\85\81~\81~\81zzzttmpiffcimpmipppppptmpmwzzwz~wpttttwpmmmmmppttwwp´´¸¸»»¸»¸´±±ªª§§ \9c\96\92\88\8b\85\8b\88\8f\8f\8f\8b\92\96\99 ££§ªªªªªªªªª§£§ \9c £§ªª±±±±±±´±§£\9c\9c\9c\99\99\96\96\96\99\99\96\8f\92\92\92\92\96\96\96\96\96\99\96\92\92\92\92\92\99\92\96\99\96\96\96\92\96\8f\8f\8b\8f\8f\92\8f\8f\8f\85\8b\85\85\88\88\8b\8f\96\92\92\96\92\96\8f\88\88\81~zmcc_c\\_XXXUXX\_XX\i_f\88\92\8f\8f\8f\8f\8f\88\8f\8f\8b\8f\8f\88\8f\8b\8b\8b\8b\8b\8b\81\85\81\81~~wppmtwwwzzwwz~\81~~zz~wwppmmic\_\XXNGKKDGGKGDAGGKNRU\__cfffcfcc_XXUURRNA600,%),066\e\e\11\e"\e\14\1f)\11\1f)%%)633633303,0603036:NRmtpfiiii_\i__c_X\\XUXURRRNRRRNNNKNKNRRUURU_X\\fcimpwppttwzz~\81fffiimimiiimmmmmpffcc___\XUURRRNNA:=======AAAAAADDDDDDGGGGKKKKNNNRRRRUUUUX\\\___UUXUU\XUURNN=660\1f"\e\18\11\11\ e\ e\11\14\11\11\14\14\18""",33=AGNmNKRNNNRURXNRRUUU\X\_UUNNKA:66330,,,00033=KRNNKKNNRRUXUUX\\\\\UUUXXUUUXiiptw\81\81\81\88\88\8b\88\8b\8b\88\88zz~~wzwzwttwwwttz~\85\8b\92\96\96\99££§§§ªª§§ªª§ª§±±±§ \9c\9c\99\96\96\92\96\99\9c\9c££§§ªª§§£ \9c\9c\9c\9c\9c ££§§§§ª§§ªª±±±±ªª§££§££§§ £££§££\9c\99\96\99\99\99 \9c\9c\99\99\96\92\8f\92\92\92\8b\8b\8f\8f\8b\8b\88\88\88\81\85\81\85\85\81\81zttww\81\85\92\96\96\9c\96\9c\96\8f\8f\88\88\88\88\85\81\81\85\85\85\81\81~~~~~~wtpppicfciimmmmppppppmtitwzzwzwtttppttpippmttwwzzz´´¸¸¸»»»¸±±±ª££ \9c\99\92\8f\88\85\85\88\85\8b\8b\8f\8f\8f\96\99\9c\9c££ªª§ª§ªªªªª§§£ ££ª§ª±´±±±±±§£ \9c\99\99\99\96\96\96\96\96\96\92\8f\8f\8f\92\92\96\96\92\96\96\92\92\92\8f\8f\92\99\96\96\99\96\96\96\8f\92\8f\8f\88\8f\8f\92\8f\8b\92\8b\8f\88\88\8b\8b\8f\8f\99\96\96\96\8f\96\8f\8b\8b\81zwpffcc\__X\XXXXR_XXXi\_\88\8f\92\8f\8f\8f\8b\8b\92\92\8f\8f\8f\8b\8f\8b\88\8b\8f\88\88\81\81~~zztmpiitwmwwttz~~z~zzzwttpimfc_\XUURKGKADGKGDADGKNRU\_\_cff_ccc\UUUUUNN=,0)%""%,00\18\14 \11\e\18 \18%\a\e)"%)63333330300333366GRUpptiiiff_\fc_c\X\XXU\URNRRRNRNKKNNNKRUURRU\XX\ifmptwppttwzz~\81ffffiiiiiiiimmmmpffcc___\\XUURRNND::======AAAAAADDDDDDGGGGGKKKKNNNNRRRUUUXXXX\\_RUURRXURRNG:6330\1f"\18\14\ e\ e\ e\ e\11\11\11\11\11\11\14\18\1f%)))0=DKNKKNKNKNRNNKNRRNRUUXRRRKDA=::3330,,,00336ANURRNNRRUUX\XX\__\\\XXXUUUUUUffipw~~~\85\88\8b\8b\8f\8f\8b\8b~z~~wzzwtpwtttwwz\81\88\8b\8f\96\96\96£§ªªª§ª§§ªª§ª§ªª£\9c\99\9c\96\99\96\92\96\9c §§ª±ªªª§££ ££§§§§§§§ªªª§££§££££ ££££§ \9c\99\9c\99\99\9c \9c\9c\99\99\96\8f\8f\8f\92\92\8f\8f\8f\8b\8b\8b\88\88\8b\85\85\81\85\81\85~wpttz~\88\8f\99\99 \99 \99\96\92\8f\8f\8b\88\88\85\85\85\85\81\81~\81z~~\81~zwttmiffcimmmmmppppptppipwzzwwwtttmptppmttpwwzz~~~±´´¸¸»»»´±±§ \9c\99\96\8b\85\88\81\85\85\85\88\8f\8f\8f\8f\96\99 \9c££ªª§§±ªªª£ ££§£§ª±´±±±±ª \9c\99\96\96\96\92\92\92\96\96\8f\8f\92\8f\96\96\96\96\92\96\96\92\8f\92\8f\8f\92\99\99\96\96\99\96\96\8f\92\8f\8b\8b\8f\8f\92\8f\8f\92\92\92\8b\8b\8f\8f\8f\8f\99\96\96\99\8f\92\8f\8b\88\81zztiiff___X\\\U\R_X\UfX_\88\8b\92\8b\92\8f\8b\8f\92\92\8f\8f\8f\8b\8f\88\88\88\8b\85\88\81\81~zwwtimiimtitwttzz~zzzwwwptmiifc_U\URRGGK=DGGGGDDKKNRUX\X__cc_cc_XUURUUNK:),%""%""",\14\ 3 \14\0 \14"\9c\18%"")633660003,03:6066wUXtmpiffiic_cc_c\UX\\RXURRRNRRNRNNNNRKRXXRRUXf\\fimmpwppttwzz~\81ffffiimiiimimmmmpffcc___\\XXUURNND=:======AAAAAADDDDDDGGGGGKKKKNNNNNNRRRUUXXX\\\URKNNUKDNA36300,\e"\14\14\11
+\ e
+\ e\11\11\ e\11\ e\11\18\e""%))6AGKGGKKKKKNNNGGNNKNRNNNNGD=6=:=3330,,,0336:DNRRURRUUXX\\\\_____\\XXRUXUUUcciptzz\81\81\85\88\8b\8f\8f\8b\8f\85~\81~zzzttttppwwz~\85\85\8f\8f\96\99\99£§ªª§§£ª§§ªªªª±±±§ \99\96\99\96\96\92\96\99 ££ªª±±ªª§§§ ££§ªªªªª§§ªªªª§§ª££££££ £ £ ££££ \99\9c\9c\99\9c \9c\99\99\99\92\8f\8f\8f\8f\8f\8b\8b\8b\88\8b\8b\88\88\88\85\88\85\88\81\85zwtttzz\88\8b\96\99\9c\9c£\9c\99\9c\92\92\8f\8b\85\88\88\85\85\85\81~\85~\81~\81~~zttmfcfffmmmmppppptpppmtwzzwzwttpmpppmptttzzzz\81\85\8f´¸´¸¸»»¸´±±£\9c\96\99\92\8f\88\85\85\85\85\81\81\85\8f\8b\8f\92\96\9c \9c £§§ª£ªª±±±±ªªª§£ ££ §§ª´±´±±ª§ \9c\99\96\96\96\92\96\96\99\99\92\92\8f\8b\96\96\99\96\92\96\92\92\8f\92\8f\8f\96\99\99\96\92\99\96\96\92\96\92\8f\8f\8f\8f\92\92\92\92\96\92\8b\8f\92\92\8f\92\9c\99\99\96\92\92\8f\8f\8b\85~wwmiifcc_\\\\R\U_X\RcX\\88\8b\8f\8b\8f\8f\8b\8f\92\8f\8f\8b\8b\88\8b\85\85\85\88\81\85\81~zwpppciffmpfptttwwzzwzttwtpim_fccX\XNNDGK=GGGKKGGKKNRRU\U\\__\__\XXURRRKG6,,%""%"\1f\1f\1f\ e \ 3 \11\1f\9c\14\18\1f\1f)633663003000D306GzXwtpmfcfmifcc___XR\X\RURUURRRRNNRNNNRKRX\RR_Xi__cmmmtwtpttwzz~\81iiifiiiiiiimmmmmpffcc___\\XXXURNNAA::======AAAAADDDDDDGGGGGKNNNNKNNNN_RRUUUUUXX\XRNKKAGA==03,0,)\18"\18\14\11\ e
+
+\11\ e\11\ e\ e\11\14\18\e\1f\e"%"):AGD:GGGGGKKNDGKKGKGKGKGD:63==:3030,0,033:=GNRRXUUXX\\____c_c___\X\UUUURU_cfmpww\81~\81\85\8b\8b\8f\8b\8f\88\81\85~zzwwppptpwz~\81\88\88\8b\92\96\99\9c £ªª§§£ª§£ª§§ª££\99\96\96\96\92\96\99\9c §§ªª±±´´±±§ªª§§£££§§ªªªª§£ªªªª§§§§§£§§£§£ £££ £££\9c\9c\9c\99\9c \9c\9c\9c\99\92\8f\92\8f\8b\8b\8b\8b\88\8b\8b\8b\85\8b\88\88\88\88\88\85\81zwtwwzz\88\8b\92\96\9c \9c \96\96\92\8f\88\85\88\85\85\81\81~\81z\85\81\81\81\81zttmfffiimmppppttttppppwtwzz~wtttpppppmttwz~~\81\81\88\92ª´´´¸»»»´´±±ª\9c\99\92\96\8f\8b\88\85\85\85\85~\81\88\8f\8b\92\92\96\9c\9c\9c £££§ª ªªª´´±ª§£ £ ££§ª±ª´±±ª§£ \99\96\99\99\92\99\99\99\99\96\92\8f\8f\96\96\96\96\8f\92\8f\92\8f\92\8f\8f\99\99\99\99\96\99\96\92\96\96\8f\92\8b\8f\92\96\8f\92\96\99\8f\8f\8f\92\96\92\96 \9c\99\99\92\92\8f\92\8b\85\81tzmimfcf___\_\XX_X_N_U\\88\8f\8b\8f\8f\8f\8f\92\92\8b\8b\88\88\85\88z\81\81z~\81~zwwppm_ccfimfmpttttwwtwtptpmci_ccc\\XRRGGKGDKKNNKKKKNRRU\UXX\\X\\XUURUUNG=3,)"\1f"""\e\e\e \0 \a\e\9c\11\11\e\e)633:3630330,K33GRz\wttpfcfiifff\__\UX\\UUUURRRRRNNNRNNRKUUXRRc\i\cippmtwttttwzz~\81iiiiiiiiiimimmmmpffcc___\\XXXUURN=D=:======AAAAAADDDDDGGGGGKKRNRKNNNNfNRURUUUXXX\UK:A=D::3)00,0)"%\e\18\11\11\ e\ e\11\11\ e
+\ e\ e\14\14\18\18\1f"""%,,)066DDDDGGKADDGDGDGDDD=600::6003000,033=AKNURXRUX\\_c_cccccc_\\XXXUUURR_cciptw~\81\81~\88\88\8f\8f\8f\8b\85\85~~wzwpttttzz\81\85\8b\8b\92\96\99\99 ££§ªª£§§§§§ª££§ªª§ \9c\99\99\96\92\96\99 §ªª±´´±´±±ªª§§§§ª±ªª§§§§ªªª£§§§ §§££§ \9c £ ££§££ \9c\9c\9c£ \9c\9c\92\92\92\8f\8f\8b\8b\8b\8b\8b\8b\88\88\88\88\85\88\88\88\88~~zwtzz~\85\8f\92\92\99\9c\9c \99\99\92\92\88\88\88\85\85\81\85\81\81~\81\85~\85~~wtifcfiimptttpttttttppwptzw~ztwtpttppptwt~\81\81\88\88\8b\96§±´´¸¸¸¸´´±±§\9c\96\96\92\8f\88\88\85\85\81\81\81\85\85\8b\88\92\92\99\9c \9c£ \99§\9c§§ª±±´±ª£££ £ ££ª±±±§£ ££\9c\9c\9c\99\92\9c\9c\9c\9c\96\96\92\92\96\99\92\92\8f\8f\92\8f\92\92\8f\92\96\99\99\99\99\96\92\92\92\96\92\92\8b\92\92\96\8f\96\96\99\92\92\92\96\96\96\99 \9c\9c\9c\96\8f\8f\92\8b\88\81izifiifi____c_\\_\_N_X\\88\8f\8b\8f\8b\8fw\92\8f\88\88z\81zpwwzz~~~zwtpmi_fccffffmppppwtptpmpmicf___c\\URRKGKKDUNRNNNRNRRRUXURUXUUXXXXURRRKD:0,%"""\1f\1f\e\e\18 \ 3\18\9c\a\9c\18\1f)633:3600333,N3=R_w\wwpmffffffcf_c_XXU\_UXRRRRRRRNRNRNNNNXXURRf_f\fmppmttptttwzz~\81iiiiiiiiiimmmmmmpiifc___\\X\XUURR=A==AA==AAAAAAAADDDDDGGGGKKNUNUKNRNNiNRURUXR\UX_U::::=60,,),,,,%%\1f\18\18\14\14\ e\ e\ e
+\ e\ e\11\14\11\18\14\e"%"%%%",30:A==DDG=ADDDAAGAAA:3336660003000366ADKKRRURUX\_cccffcfcc_\\XXXUURRR\_\iptwz\81\81\81\85\8b\92\8f\8f\8f\8b\88\85\88\81\88zz~www~\81\85\88\8f\8f\96\99\99\99 §£§§§ §§££§§£§£§ªª££\99\99\99\96\96\99\99 ££ªªªª±±´´´´±±±ªªªªª§£§§§§§££§££§££§££ £\9c £££££ \9c\9c\9c£ \9c \9c\96\96\96\92\8f\8f\8b\8b\8f\8b\88\85\88\85\85\81\88\88\88\85\81\81~wwzz~\85\8b\92\92\99\9c\9c\9c \99\96\92\92\88\8b\8b\85\85\81\85\81\85\81\81\85\81\81~~ztpicfifptttwtwtpwtptpwpwwz~~~zwptwtmtww\81\81\88\85\8b\8b\8b\92£´´¸¸»¸¸±§ \96\96\92\8f\8b\88\85\85~\81\81\81\85\8b\8b\96\96\99 \9c£\9c\99\9c\99£\9c§§ª±±± £ \9c \9c ££ªª±±ª§£§£ \9c\9c\96\9c \9c\9c\99\96\96\96\96\96\92\92\92\8b\92\8f\92\8f\92\96\96\99\99\99\9c\96\96\96\92\99\96\92\92\92\92\92\8f\99\99\9c\96\96\96\99\99\99\9c\9c\9c \9c\99\96\92\92\8f\85\85izfffiiiccc_cc_cc\_N_X_\88\92\8b\92\8b\92w\92\8b\85zwmfmpwwzztzwtpmif_ccccfccmfmpmtpmmmifmfc_\Xc_X_UURNKNNKXRURRRURRRRUURRRUUUXXUUUNNN:6,),%""%\1f\e\e\18\14 \0\11\9c\9c\9c\14")633:3630363:R0Ncwz_wtpifffiiccccf_\XX__X\RRUURRRNRRRRRNRX\RR\fcXciptpmtptttwwzz~\81iiiiiiiimmmmpmmmpiiffc__\\XXXUURR=====AAAAAAAAAADADDDDDGGGNNRRRRKNNRRmNUUUXXUXUU\U::3663,)),),),))""\e\e\18\11\11\14\ e\11\11\11\11\14\18\14\e%"\1f""""),,3=66=A:==AAA6=DA=6:360663300330336:ADGKNRUUUX\_cfcfffiff__\XXURRRNN___imtwz\81\81\81\85\88\8f\8f\92\92\8f\8b\8b\8b\88\8b\8b\88\8b\81\81\81\81\85\88\8f\92\92\99\96\9c\9c ££££££££ §£§£§§§ª§§£\9c\9c\99\99\99\99\9c £§§§§ªªª±±´±¸´´´±±ª±±±±§§§£§£££ £ §££§£§££ ££ ££££ \9c \9c\99\96\96\96\92\8f\8b\8b\8f\88\88\85\85\85\85\85\85\85\88\81\81\81~wzzz\81\81\88\8f\92\96\9c\9c\99 \9c\96\99\92\96\8b\8f\8b\88\85\81\88\85\88\85\85\85\81~zzwttmiimmttwwzwtwtttttpwtwwz~\81\81\8b\88ztw~ztw~\85\88\8b\85\8f\8f\8f\96 ª±±»¸¸¸´±ª££\99\96\92\8b\8b\88\81\85\81\85\85\81\88\8f\8f\96\96\9c£ \9c\96\99\99 \9c££±±±±±ªª\9c\9c \9c \9c\9c £§ªª±ª§§ £ \9c\99 \9c\9c\9c\96\99\99\96\92\92\92\92\8f\8f\92\92\92\92\96\99\9c\9c\99\99\99\99\99\92\9c\96\96\96\96\96\96\92\96\99\9c\99\99\99\9c\9c\9c \9c \99\96\99\8f\92\8f\88\85fzUicmmifffcffcfcX_K_X_\88\8f\8b\96\8f\96t\8f\8bzwmiiimttzwwwtpmmic___ccc_cifimipmfmiffmf__\Nc\U\UURRGRRN\UXUUUXUURUURRRNURRUXUUUNN363,))%"\1f""\18\e\14\14
+\9c\9c\9c\11")633:6:303:3AU6X~z~zztmfcffii__cfi\_X\_\X_UUURRRRNNNRRURUX\UR_c_Xfi_ppmtpwttwwzz~\81iiiiiiiimmmmmmmmpiiffc__\\XXXUURR==AAAAAAAAAADDDDDDDDDDDGGNRUNUNKNNNRiNRURUUUXUUXR=63360,%%,"),,))%%%\1f\e\ e\14\18\11\11\ e\14\ e\11\18\e\e""\1f\1f\1f""))),0366::::===3:A=6:633366333333336:=AAGGNRRRUX\\cffffiiifc_XU\URRRKK\__mmwzz~~\81\85\88\8b\8b\96\8f\92\8f\8f\8f\8b\8f\8f\8f\8f\8b\8b\85\88\88\8b\92\92\92\99\99\9c\99\9c££ £££§£££§ªªªª£ \9c\9c\99\99\9c ££§§£§ªª±±´´¸´´´´±±±±±±±ª§§££ £ £§££££§££ \9c §£££ \9c \9c\99\96\99\96\96\92\8f\8f\8f\8b\88\88\85\81\81\81\85\85\85\81\85\81\81z~z~~~\88\8b\8f\92\99\99\96\9c\99\96\96\96\92\8f\8f\8b\88\88\85\88\88\85\88\88\88\81\81~~zwwpppptwtzwzwwwwtwwttttww~~\85\85\8f\8b\8b~\8f\85~~\8b\85\88\8b\8f\8b\8f\92\92\99\99£±¸¸¸¸´´±§§\9c\99\96\8f\88\85\81\81\85\85\85\85\8b\92\92\99\99\9c££\9c\9c\99\92\96\99\9c\9c£ ª±±±§§\99\99 \99 \9c \9c££ª§ª±ªªªª££££\9c\9c\9c \9c\9c\9c\9c\96\99\99\96\96\92\92\8f\8f\8f\92\92\92\8f\92\99\9c\9c\99\99\9c\9c\9c\96\9c\96\99\99\96\99\99\96\96\99\9c\9c\9c\9c \9c\99£ £ \9c\99\9c\8f\92\92\88\88i~UmfpmiiimfiicifXcK_\\\85\8b\8b\96\92\96\92\8b\8bwtfiiiippwtttpmiifc_\_cc_cffffimiifiiific\\\NKXX\UUURKURR\XXUUX\XXRUXRRRNRRRUUUURRK330,%%"\1f\1f\1f\1f\e\18\11\14 \9c\9c\9c\a")63666:303=:G\81~~zzzzztmccfiffX\ffi__\_\_\_UXURRRRNNNNURRXXXXR\_\Xim_pmptpwwwwzzz~\81iiiiiiiimmmmmmmmpiiffcc_\\XXXUURR=A==A=AAAAAAADDDDDDDGDGGGKUXRUKNKNNNfNURRRRRUUURN:66330)"")%%),),)))%"\e\18\e\18\14\14\14\11\14\e\1f\1f\1f""\1f\e\1f"%%%),036::66:::06=:66666666363366666==AAGGKNRRUXX\_cccfffffc\XUXURNRKKX_fptw~~\81\81\81\81\85\88\8b\96\8f\92\92\92\92\8f\92\92\92\92\8f\8f\8f\8f\8b\8f\96\92\96\96\9c \9c\9c£ \9c\9c \99££££££££ªª±ªª§££ \9c\99\9c£££§£ §§ªª±´´´´´´±±±±±±±´±´±§§§§ £££ £ £ £ £§§£ \9c £ ££££ \9c\99\99\99\96\96\92\8f\92\8f\8f\88\88\81\81\81~\81\85\85\81\85\85~~~z~z\81\85\8b\8b\92\96\99\96\9c\99\99\96\96\8f\8f\92\8b\8b\88\81\88\8b\88\8b\88\88\81\85\81zzwtttttwzwz~~zzwwwwwtwwwwz~\81\88\88\92\8f\92\96\96\92\92\8f\8f\88\8b\8f\8f\8f\8f\92\96\9c\99£§±´¸»¸±±ªª \9c\96\8f\85\85\85\85\85\81\81\8b\8b\96\99\9c\9c §£\9c\99\9c\92\96\99\99\9c ªªªª££\9c\99\9c\9c\9c \9c££§§ª§ª§£££ \9c\9c \9c\99\9c\99\96\99\96\96\96\92\92\8b\8b\8f\92\96\96\8f\96\9c\9c\9c\9c\9c\9c\99\9c\99 \99\9c\9c\99\9c\9c\99\99\9c\9c\9c £££ \99\9c \8f\92\96\8b\8bi\81UpitmmfipimmimifcKc\\\88\8f\8f\92\96\96\8f\8b\88pf_fff_mctppmiififc_\__c__f_c_fmcccfffcf_X_XNc\XXXXURNRNU_\\XX\XX\RUURRNNRRRRURUNNK603)%%"\e\1f\1f\e\e\14\ e\11 \9c\9c\9c\9c%)6333:=606A=K~~\81~zzzzpiffiffi\Xiiic\X\\\_cXURRRURNNNNRNNXXU\U\\X\ii_mmtwptzwwwzz~\81iiiiiiiimmmpmmmmpiiffcc__\\XXUURR=D====AAAAAAAADDDDDDDGGGKGUXUXNRKKKKcNRRRRRUUUUN:666300,%")))),),,,)))%\e\1f\e\18\18\18\18\e\1f""\1f"""\1f"\1f""),,03::6:6663,03336336::666:6:6::=A=AADGKKUURUUX\__cfffcc_XUUURRNRKKXcitwzz~\81\81\81\85\85\8b\8b\92\92\8f\92\92\92\92\92\96\96\96\92\92\92\92\8f\92\96\96\96\99\99\9c\9c\9c \9c \99 ££ §£ªª±ª§§££ \9c\9c£ £ ££§§ª±±±±±±´±±´´±±±´´±§ª§££££ \9c£ £ §§§§£ ££\9c£££ \9c\9c\9c\9c\99\99\96\92\96\8f\92\92\8f\88\85\81\81\81~\81\81\85\81\81\85~\81zz~~\81\85\88\8b\8f\96\96\96\99\96\96\92\96\8f\8f\92\8f\8f\8b\85\8b\8b\88\8f\8b\8b\85\81\81~zzwwwwwz~z~\81~~zwwwwwtwwwww~\81\88\8b\8f\92\96\99\99\96\96\92\92\8f\8f\8f\92\92\8f\92\99\9c\9c §¸´¸¸´´±ª£\9c\99\8f\88\8b\8f\88\88\8b\8b\8f\8b\99\9c £§£ \99\99\96\96\96\99\9c §ª§ªªª§ \9c\9c\9c\9c\9c \9c ££§§ª§§§§ £ \9c\9c\9c\9c\9c\99\96\99\96\96\96\92\96\96\92\8f\8f\8b\92\96\96\99\8f\99\9c\9c\9c\9c \9c\9c\9c\9c\9c\99\9c\9c\9c\99\9c\99\9c\9c \99 \9c£££§§£\85\9c\9c\96\92\96\8f\92i\81UtiwppcptimmmpmiiUf\X\88\92\92\92\92\92\8f\8b\85pf\ccc_icmmmicfcff_\__\c_\c___fifccccf_c\U\XR_\U\\XXRNNKU\X_\\X\X\RUURRNNRNRRUURNKG633%%%"\e\e\1f\18\18\11
+\ e \9c\9c\9c\9c%)6336::606DANzz~\81~~zzmmiffffm_Uifff_\XcXccXXURRRRNNNNRRRUXUXX\X\_if_mmpwptwwwwzz~\81miiiiiiimmmmmmmmpiiffcc__\\XXUURR=A===AAAAAAAAAAADDDDDGGGNKU\U\KRKKKK_NNNNRRRUUUK3363030)%)),),),,03,30,%,"\e\1f\1f\1f\1f"""\1f""%"\1f\1f\1f%)),33:6666336,0,03336::=::=====:=AAAADGGGKRRNRUX\___ccc__\URUURNNNKN\fmtzz~~\81\85\81\81\85\8b\8b\8f\8f\8f\92\92\92\96\92\99\96\96\96\92\92\96\92\92\92\99\96\99\99\99\9c\99\9c \9c £§ªª±±ªªª§££ \9c£ \9c\9c££££§±±´±±±±´´±ª§§££§££ \9c £ £§£££ £ \9c \9c \9c \9c\9c\99\9c\96\96\96\92\96\92\8f\8b\85\85\81\81~\81\81\81~\81\81~~~~~~~\81\88\88\8b\92\92\96\96\96\92\8f\92\8f\8f\8f\8b\92\88\88\8b\8f\8f\8f\8f\8f\88\81\81~zzzzzzz~~~\81\85\81~~zzzwwwtwwzwz\81\85\88\8b\8f\99\9c\9c\99\99\96\96\92\92\92\92\92\92\92\96\9c\9c §´¸¸´´´±±ªª§\9c\99\92\8f\8f\92\8b\8f\96\8f\96\9c\9c £§£\9c\9c\9c\99\96\99\99\9c £§ªªªª§£ \9c\9c\99\9c\9c £ \9c£§§ªªª§££££ \9c\9c\99\9c\99\96\96\92\96\92\8f\96\92\92\8f\8f\8f\92\96\96\99\96\99 \9c \9c\9c\99 \99\99\9c\9c\9c\9c\9c\9c \9c £ §§w£§ \85\99\92\99\96\96\8f\96i\81Uwi~wpctwpipppptpizcz\8f\96\96\96\96\96\8f\8b~pc_\___ccccff_fcff_\_\\_____X_cff__X\cc__X\XU\\X\\XXRKRNR_\_\X\\XXUUXNNNNNRRURRNKG=300%%""\1f\e\e\18\14\ e\ 3\ 3 \9c\9c\9c\9c)%6363:=603GDRt~z\81~~zwpmmiifficUfiifcXUfRffUUURRRRNNNNNNRUURX\\\\_ff_ipmtpttwwwzz~\81miiiiiiimmmmmmmmpiiffcc__\\XXUURR=A=A==AAAAAAAAAADDDDDDDGRNRXUXNNKKKNNNNNNNNRRRUD0333363,),),,)030363630000)"""""%"""%%"\1f\1f\1f%),,03:6663003,,,00336::===AAADAAADADDGGGGKNNNRUXX__\____\XURRURNNNNR_imwzzzz\85\81\85\85\81\8b\8f\8b\8f\8f\92\92\92\96\96\99\96\99\99\96\96\92\96\96\96\99\99\99\99\9c\9c\9c £ £ £§ªª±±±±§§ª§£££££ \9c\9c ££§ªªª§§§´±±±±±ª§§§§££ £ ££££££££ ££ \9c\9c \9c\9c \9c\9c\9c\9c\99\96\99\96\96\96\8b\88\88\85\81~~\81\81~~\81\81\81\81~z~~z~\88\85\88\8f\8f\92\96\96\92\92\92\92\8b\92\8f\8f\8b\8b\8f\8f\92\8f\8b\8b\8b\85\85~~z~~~~~~~~\81\85\85\81\81z~zwwwwtwwww~\81\85\85\8b\96\99\99\9c\99\99\99\96\96\96\96\96\92\96\92\99\9c£§±±¸¸¸¸±±±ª£ \99\9c\92\96\99\96\99\99\96\99 £ ££ \9c\99\99\9c\9c\9c £ª§ª§ª£ \9c\99\9c\9c\99\9c \9c\9c £§ªªª§§£ \9c\9c\99\99\99\99\96\92\8f\92\8f\8b\92\92\92\8f\8f\92\92\96\99\99\99\99 £ \9c \99\9c \9c\99\99\99\9c\9c\9c\99\9c£ \9c £§w§§£\85\99\8f \9c\96\9c\99p\96Uwm\88\88\85_~ztmmttpw\85m\85\8f\92\92\96\96\92\96\92\8f\88zm______\c_\c_\ffffc\\X\__\c_X\ccf_\X\_c\\X\\U\\UXXUURGURU\\\\X\XXURUXRRNNNNRRRNKGD:0,,))""\1f\1f\18\18\ e\a\0\0 \9c\9c\9c\9c))63366:603GDUt~z~~~zztmpifffifiiimffU_iRfcXXUUURRNNRNNNRUURUXXXX\if_fppwptwwwzzz~\81iiiiiiimmmmmmmmmpiiffcc__\_\XXXRR===A==AAAAAAAAAAAADDDDDDNKNNRURKNNKNNNNNNNNRRRRA33033363033,003636:=:63333,)%%)%)%%%)%""\1f"))00066:660,00,)),003:==A==DDDGDDDGDDGDGGKKNNNRRXX\\X\X\\XURRNRRNNRRRcipzzzw~\81\81\85\85\85\8b\8b\8b\8f\8b\92\92\92\92\96\96\96\96\99\99\96\8f\99\99\99\9c\99\99\9c\9c\99\9c £ ££ £ £§ª±´±±ª§§§§§££££ \9c\9c\9c £ §§§£§§§ª§ªª±±±±±±±ªªªª§§§££\9c \9c \9c ££ £ ££ £§££ \9c\9c \9c\9c \9c\99\99\99\99\96\96\8f\8b\88\85\81~~~\81~~~\81\81\81z~~~~~\85\85\88\8b\8f\92\96\92\92\92\96\8f\8f\92\92\92\8f\8f\92\92\96\8b\8f\8f\8f\88\88~~zz~~~z~~~\81\85\88\85\85~~~zwtttwwwtz\81\81\85\8b\92\99\9c\9c\99\99\9c\99\99\99\99\99\96\96\92\99\9c£§±¸»¸¸´´±±££\99 \9c\9c \9c££\9c£££££ £ \9c\9c\99\99\9c\9c §ªªªª§£\9c\99\9c\99\9c\9c\9c £ £££ªªª§£ \9c \9c\9c \9c\99\9c\96\96\99\96\96\8f\8f\92\8b\8f\92\92\92\92\92\92\92\99\99\99\9c\9c ££ \99 \99\96\99\99\99\9c\96\9c \9c ££ £w§££\8b\96\92£ £ \9c\99Xwm\92\8f\8b\85\81~wppttt~\88\8f\88\92\96\96\99\96\96\92\92\8f\8bzi_c___\\c_\c__cfcfc_\\X_c_c_\_ccc\\X_\cXXXXXUXXUUXURRGRNR\X\\XXUURRXXURRNRNNRNKD=A60),))%\1f\e\e\e\18
+\a\0\ 3 \9c\9c\9c\9c),6363::603KGmtzzzzzwwtppmiffifimimifUcfUf_\\XXURRNNNNNRRUUUUUXXX\fc_fmttttwwwzzz~\81iiiiiiiimpmpmmpmpmiifcc__\\\XXURR=A==AA=AAAAAAAAAAADDDDDGKGGGNKNGKKKKNNNNNNNRRRR6633366:63660D3::6=:A=:6:36000,0))%)),)""\1f",)00366:::0,,3))),,066:==A=DDGKGGGGGGDDDGGGKKNNNUUXXXXXUXURNRNRRRRUUUfptzzzzz\81\81\85\85\85\88\8b\8b\8f\8b\8f\8f\92\8f\92\96\92\96\96\96\99\92\99\99\99\9c\99\9c\9c\9c\96\9c ££ £££ £§££ªª±±´´±ª§ª§§£ £ \9c\9c\9c\99 ££££§§£§£§§§ªª±±±ªªª§ª§§£ \9c\9c\9c\99 £ £££§££§££\9c \9c\99\9c \9c \9c\9c\99\9c\99\99\96\92\88\88\88\85\81~z~z~~\81~\81z~zz~\81\88\88\8b\8b\8b\92\96\96\92\92\92\92\8f\8f\92\92\8f\8b\96\96\96\8f\92\8f\8b\8b\88\81~z~~z~~~~~\81\81\85\85\85\81\81\81~zwttwwwwz~~\81\8b\8f\96 \9c\9c\9c \9c\9c\9c\9c\9c\99\92\96\99\9c£§±´»»¸¸´±±§£ £ §ª£§§§§§§§§£££ £\9c\9c\9c\9c\9c §ªªª£ \9c\99 \9c\9c\9c\9c ££§§£ªª§§££\9c\9c \9c\9c \9c\9c\9c\96\99\96\96\96\8f\92\92\8f\92\92\8f\92\92\96\96\92\99\99\9c £££ \9c\9c\9c\9c\9c\99\96\99\99\99\9c\96 \9c £ z££££\96 §£§££ \9cX\96\96\96\92\8f\88\85\81wttwtw\81\8b\92\8b\96\99\96\99\96\96\96\92\92\8b~mc___\X\_\\f_c_fffc_X_X\cc___c_c___\\__\\UUURNURUURRNKRKNX\XXUUUUUUXXXRRNNNNRKGA:=3,,,)%"\1f\1f\18\1f\e
+\a\ 3\a \9c\9c\9c\9c%,63636:306KGmtzwzzzttppppifficiifmfcRfU\i__XUXXRRNNNNNRRUURUUXXX\c__fmwwtwwwzzzz~\81mmiiiiiimmmtpmmmpmiifcc__\\\XUURR=AA=AA=AAAAAAAAAAAAADDGGDGDDDGKGGKKKKKKKKNNRRRR6333333::6::AGAA=:ADDA=A=::=6303,,))%,)%%""),033666:60))0)))))03:::===DADGGKKGKGDDDDGDKKKNNRXUUUXXUURRRNNRRRUXUXptwzz~zz\81\81\85\85\85\88\8b\8b\8b\8b\8f\8f\8f\8f\92\92\92\96\96\96\96\96\99\9c\99\9c\99\99\99\9c\99\9c £££ £§§£§£§§ª±´´´ªª§££ £\9c \9c\99\9c ££§£ £££§§ªªª±ªªªª§ª££ \9c\9c\9c ££\9c ££££§§§£ \99\9c\9c\9c\9c\9c\99\9c\99\99\96\96\96\92\8b\85\88\85~\81~\81~~~\81\81~~~~~\81\85\88\88\8b\88\8b\92\92\99\92\92\8f\92\8f\8f\8f\8f\8f\8f\96\96\92\92\96\92\8b\8f\8b\85\81~\81zw~~\81~~\85\81\81\88\81\81\85\81~zwtwwttwzzw~\8b\8b\92 \9c \9c\9c\96\99\9c £§±±¸»¸¸´±±ª££§§ª§ªªªªªªªª§§§££ \9c\9c\9c£ £ªªªª§§\9c\9c\96 \9c \9c £ªª§§§£§ \9c\9c\9c\99\9c\9c\99\99\99\99\99\96\92\96\8f\92\92\8f\92\92\8b\92\92\96\96\96\99\9c\9c£\9c \9c\9c\9c\99\9c\9c\96\99\99\96\99\9c\99£\9c£\9c£\9c£ \9cz££ £\9c£§§ª£§£ \99\99\99\96\92\8b\85\81zttwwz\85\8f\92\8f\96\99\99\99\96\92\96\92\8f\8b~pf_c_\XX_X\f_cccff__X__\cc\_\__c___\\\\XXRNRNNRNUUNRNKNKD\\\XUUXUUUXXURURRRNRKD=666)0,))%"\e\e\e\18\11
+\ e\a \0 \9c\9c\9c\0%)63366603:NKww~twwwppmpppfffifmicic_RfUff_\URUXURRNNNRNUUXUUUX\\\fc_ipwzwtzz~~zz~\81piiimiimmmptpmmmpmiiffcc_\\\XUURR====A=A=DAAAAAAAAAAAADDDDDDDDGGGKKGGKKKKKKNNNNR6633336::::=DKDK=ADGGDGDAD=A:63600,)00)%%%%))033663630%%,%%%%,0666:=:=AAADGKKKKGGDDDDDGGKNRRUUUXXXUUURRNRURUX\UXtwwz~zz~\81~\81\85\81\88\88\8b\8b\8b\8f\8b\8b\8f\8f\92\92\96\96\96\99\99\96\99\9c\9c\99\99\96\99\9c\99 £§§§§§ªª§ª§ªªª±±´¸¸´±±ª§§§££ \9c\9c £ £££ ££§§ªªªªªªªªª§ª££ \9c\99\9c\99 \9c ££§£§§§ £ £\9c\9c\9c\9c\9c\9c\9c\9c\99\96\96\96\96\92\8f\88\85\81\81~\81\81\81\81~\81\81\81~z~\81\81\88\85\85\88\88\8b\8f\92\96\92\96\92\8f\8f\92\8f\8b\8b\8f\92\92\8f\92\92\92\8f\8f\8b\88\85\81\81zzzz~~~\81\81\81\88~\85\85\81~~zwwwttwwtwz\8b\8b\96 \99 £££ \99\99\9c ª§±±´¸¸»¸¸´´±ª§§ªª±ªª§ª§£ \9c£ §ª§ª§§£\9c\9c\99 \9c \9c£££ª§ª§ª£§£ \9c \9c\96\9c\9c\99\9c\99\99\96\96\92\96\8f\8f\96\92\8f\92\8f\92\92\96\92\99\99\9c\9c£ \99\9c\99\96\99\9c\96\96\99\99\99\9c\9c £ \9c \99\9c £ £ §§§§§££\9c\9c\99\99\92\92\88\85\81~ttttz\88\92\92\92\92\99\96\96\96\8f\92\8f\8b\88~ticc_\\X_X_c_fcccfc_\_c__c__X\___\_\\XXXURKRNNRNRRKNNGKNNXX\XUXXRUUX\UUXURRNNGD::36,,,)%""\1f\e\e\e\14\ e\11\14 \ 3\0 \ 3\ 3 \9c\9c\9c\ 3%)6333630:=NNztzptttppimmmicfifmi_f_\RfRifcXRUXXRRNNNNNRUXXUUUX\\\c__iptzztz~~~zz~\81tiiimiiimmptpmpmpmiiffcc_\\XXUUUR=A=AAA==A=AAAAAAAAAAAAADDGDDGGGGGKGGGGGGGKNNNNN:636666====AGKGNNKRRRNNKAGDDGK=3633663,)))),,033663330%%%""%),0666:A::=AADGKNKKGGDDDDDGGGNNRRUUXXXXUXRUNRUUUX\XXwtwz~~~~~~\81\85\81\85\88\8b\8b\8b\8f\8b\8b\8b\8f\8f\92\92\92\96\96\96\99\99\9c\9c\99\99\99\99\9c\9c ª§§ªªªªª±´±¸´´±ªªª§§£ \9c\9c \9c £££££§£££ £§§§ªªªªªªªª§ª§§£§£ £\9c\99\96\9c\9c \9c\9c £§§§§§ £ ££\9c \9c\9c \99\96\96\96\96\99\96\8f\8b\88\85\81\81\85\85\81\81\81\81\81\81~~~~\81\85\85\81\85\88\8f\92\8f\92\92\92\8f\8b\8f\92\8f\8f\8b\8b\8f\8f\92\92\96\92\92\8f\8f\8b\85\85\88\81~~~~~~\85\81\85\85\81\85\85\85~~~wzwptwwtwz\8b\8b\92\9c\99 \9c ££££££££ §´´´»»»¸¸´¸±ªªª±±±±i±ªª§§£££££££§§ªªª£ \9c\9c\9c\9c\9c\9c\9c\9c£§£§ªª§ª£££\9c\9c\9c\9c\99\9c\9c\99\9c\9c\99\96\99\92\96\92\8f\96\8f\92\92\92\96\92\92\92\9c\9c\9c \9c\9c\9c\9c\99\99\92\99\99\96\99\99\99\9c\99\99\9c £t \9c \9c §£§£§ªªªª§§§ \9c\99\96\92\92\8b\85~zwtttz\85\8f\92\8f\8f\96\92\92\92\8b\8f\8f\88\85\81wmfc_\X\_\__ccffffc__cfc_ccc\\__\\\X\U\UNRKRKNRNNNKNKKKNRXUXUUUUNRUX\UXXURRKKDA66330,,,)%\1f\1f\18\18\1f\18\14\14\18 \0\ e\ 3\ 3\a\a \9c\9c\9c\a%)6333306=ARtzwzptpttmimmiicfmfim_c\\RiRfifRUUXXRRNRNNRUXXXUUUX\\__ccfppzwwz~zzzz~\81pmmipimimmppmmmmpmiiffc__\\\XUURR=D=AAAA====AAAAAAAAADDADGDGDDDGGGGGGKGGGGKKKKKN:666:::==AADKKKRRNUUURUUNUKKRRRDK6:::6:,,,),,03363300,)%%\1f%"),,36:=A=:=AAAGGKKKGGDDDDADGGKNRRUUXXXXXXUXRRUXXX\\\zwwz~~\81z~~~\81\81\85\88\8b\8b\8b\8b\8b\88\88\8f\8f\92\8f\8f\92\96\96\96\96\99\9c\99\9c\99\9c\9c\99 §§ªª±ª±±±´´¸´´±ªªª§££§ ££££§££ \9c £§§ªª§ªªªªªªª£§££ ££ £\9c\9c\99\99\99\9c £££§§ªª§£££££ \9c\99\99\9c\99\99\96\96\96\96\92\8f\8f\88\88\85\85\88\88\88\81\85\81\81~~~~~~\81\85\81\88\88\8b\8f\8f\96\8f\92\92\8f\8b\92\8f\8b\8b\88\8f\8b\8f\92\92\8f\8f\8f\8f\8f\88\8f\8b\85\81\81\81\81\81\81\88\88\88\85\85\85\85\85\81\81~zzztwzzwzz\8b\8b\92\9c\9c£\9c£ £§§§£§§ª±±¸¸´»»»¸¸¸¸ªªªª±´´±f±±±±±ª§§£££§§£ª§ª§§£ \9c \9c\9c \9c\9c ££ªªªªª£§£ \9c\9c\99\9c \99\9c\9c\99\96\99\96\96\92\8f\92\8b\92\92\92\96\92\8f\96\9c \9c\9c\99\9c\99\99\96\99\99\96\9c\99\99\9c\99\96\99 t \9c£ ££§£££§ª§ªª§§ \9c\99\96\92\92\8b\85\81zwttw~\88\8f\92\8b\8f\96\8f\8f\8f\85\88\8b\85\81\81zpfcc\XX__c\ffcffff___ffcfcc_\__\XXXXR\RKRKRKNNKNKKRNGNRU\XXRRRRKNRU\UUXRNNGG:=:366,00,)%"\1f\e\e\1f\e\18\14\e \ e\11\a\a
+\ 3 \9c\9c\9c\ 3%%6333:0:AAUwzwwmppptpmpicifiiffm__XXRfUfmcRURXURRNRRRRUUUXRUXX\\ccccfttztzwzwzzz~\81pppipipmmpmmmpmmpmiiffc__\\XXUURR=D==A=A=====AAAAAAAADDAGGDDDDDGDDDDDKGGGGKKKKKK:66:===AADDGKKNNRRXXXUXXXXUNUXURUXG==D=30,,003666330,,,""""\1f%,066==A::==AADGGKKDGDDDAAGKGKKNNUUXXXX\XXXURU\X\\__zzzz~z~~~zz~~\81\85\88\8b\88\88\8b\85\85\8b\8b\8f\8b\8f\8f\92\96\96\96\99\99\96\9c\96\9c\99\96 £§ª±ª±±±±±¸´´´±ªªª§§££££ ££££ ££££§££ £§§§§§§§ªªªªª§£\9c \9c \9c \99\96\96\99\9c\9c \9c£££§§§ªªª§§§£§ \9c\9c\9c \99\9c\96\96\92\96\92\92\92\8b\88\88\88\8b\8b\8b\85\88\81\81~zzzz~~\81\85\88\88\8f\8b\8f\92\92\92\92\92\8f\8f\8f\8b\8b\88\8b\8b\8b\8f\8f\8f\8f\8f\8f\92\8b\92\8f\88\88\85\85\85\88\85\8b\8b\88\88\85\88\81\85\85\81\81~~zwzz~z~~\8b\8f\8f\99\99 \9c£££ªª§§ªª±±´´»»¸»»¾»¸¸´±±±ªª±´¸´´´´´´±±ªªªª§§§ªª§ª§ªª§££ \9c \9c £ ªªª§ª£§£\9c \9c\99\9c\9c\9c\9c\99\99\96\96\96\92\92\8f\8f\88\8f\8f\8f\99\92\8b\96\99 \9c\9c £ \99\99\96\99\99\99\99\96\99\99\9c\9c\99\96\96\9c £ \9c £££ §§ªª§§§ \99\96\96\96\92\8b\85\81zzwtw~\88\8b\8f\8f\8b\96\8b\8b\88p\81~\81~~zmffc_X\__fffiffffccccffffcc__\\\XXXURXNNRKNKNKGKKNNRKRNU\\XNNNKGKNRXRRX\ 3NDA=:6666603,))%\1f\e\1f\1f"\1f\e\e\e \11\11
+
+
+\0 \9c\9c\9c\0%%6333=0=AA_t~wwmmmptmppicfimff_i_\X\R\XcURRRRXRRRRRNRRUURURUXX\_c_ccipwztzwwwzzz~\81mpmmpmppmpmpppmmpmiiffc__\\XXUUUR=A==============AAAAAADKDDDDDDKDDDDDKDDGGKKKKKK:6::=A=AAADGGGKRRUXXXX\\\\\XX\XX\\XNRRU63006:6:::63,0,)%%%"\1f%,033:==66:=ADDGGGKDDDAAAAGKGKNNNRUUXXX\\XXUUXXX\___zzzzzzzz~zz~~\85\88\8b\8b\85\88\88\81\85\88\8b\8b\8b\8b\8f\92\92\96\96\96\99\96\99\96\99\96\92\9c\9c §§±±ª±±´±±¸´¸´§§§££ £\9c ££ §£££§£ £££§§§§§ªªªªªªª§§\9c\9c\9c\9c \9c\9c \9c\99\99\9c\9c\9c\9c ££§§§ªªªªª§§§£ \9c\9c \9c\99\99\92\96\96\96\92\8b\8b\8b\8b\8f\8f\8f\88\88\85\85~zzzz~~\81\81\88\85\8b\8b\8f\92\92\92\92\8f\8b\8f\8b\88\88\85\8b\88\8f\92\8b\92\8f\8b\8f\92\8f\96\92\92\8b\8f\88\8b\8b\8b\92\92\92\8b\85\88\85\85\88\85\85\81\81\81z~z\81~~\81\8b\8b\92\96\9c\9c ££§ªªªª´´¸¸¾¾»¾»¾¾»¸´´±±±±´»¸¸´¸¸¸´±ªª§§ªª§§ªª§ª§§§§££££ \9c\9c\9c\9c £ª§ªª§§§££ \9c\99\99\9c\9c\9c\9c\9c\96\96\96\92\92\8f\8b\88\92\92\92\9c\96\92\96\96 \9c \9c\99\99\99\9c\9c\9c\99\99\9c\9c\9c\9c\99\92 \9c \99 £££§£ªªªª§££\9c\96\96\96\96\92\8f\85\81zzwwz~\8b\8f\8b\8b\8b\92\88\88zm\ztzzwmfffc\_cciiiifiifffcffffcfc\_\\XUUXRNXRRRNRKNKKNKKNRGNKRXXUKGDAADGNNRNU\0N
+A::6663330,%)"\e\1f""%\1f\e\1f\1f \14\ e
+\a\ e \9c\9c\9c\9c%)6U36GA=DGip~twpiimtimmifcmpii\UcUX\RU\RURRUUURRRNNRRRURNRRUUX\_c_cfmptzwwzwwzzz~\81ptimpmppmmptpmmmpmiifcc__\\XUUURR=A==AAAA==========A==AAKGGDDDDGDDDDDGDDGGGGGGGK6666===DADDDGGKURRXX\X\____\\_\\__\XUXXR:63G=:D==:6000))))""%,,006::33:=ADGGGKKGDAAADDGKKNNNRRUUXX\\X\XXXXXX\__czzzzzz~z~z~~~\88\8b\88\8b\88\88\88\85\81\85\88\8b\88\8f\8f\8f\92\96\96\92\99\96\9c\96\99\96\92\99\9c\9c£ª±±±±±±´´´´±±ªªª££\9c ££ £ £££§££££££§££§££§ªªªªªªªªª§\9c\99\9c\9c\9c\9c\9c£\9c\9c\96\9c\99\9c\9c ££§§ªª±ªªª§§§ ££\9c\9c\9c\99\99\96\92\92\8f\8b\8f\8f\8f\8f\8f\8b\8b\88\85\81zzzzz~~\81\88\88\88\8b\8f\92\92\8f\8f\8b\88\8b\88\85\85\81\88\88\8b\8f\8b\8f\8f\8f\8b\8f\92\99\96\96\8f\96\92\96\9c \96\99\9c\96\88\92\92\8b\88\88\88\88\85\85\81~~\81~z\88\8f\8f\96\96\9c\9c\9c£ ªª§ª±±´¸»»Â¾¾¾¾¾¾¾»¸´´±±±±¸»¸»»¸»¸´±ªª§§ªªª§§ª§ªª§£§§£§£\9c£ \9c\99\9c\99 £§£ªª§§ª§§£ \9c\99\9c\9c\9c\9c\9c\96\96\96\96\92\8f\8b\8f\92\99\96\9c\99\96\92\96£ \9c £ \9c\99\9c\99\9c\9c\9c\9c\9c\9c\9c\99 \96\92 \9c\9ct \96 ££§§§§§ªªª§ª§£\92\99\99\92\96\96\92\8b\85\81~zzz~\81\88\8b\88\88\88\8fzzmi\piwwtpfifc\0_ffmmmmimififffifcccc_\\\XXUURKURRRKNKNNKRKNNRKKGNUURADDA==DKNNKR\ 3KDD::333330,0%%"\e\1f%\1f""\1f"\e \ 3
+\ e\a
+ \9c\9c\9c\9c%%6_33RK:GKmtzttmfcipimiffcimif_UfUUXURXUURRRRRNRNNNRRRURRRRUUX\\__ciippzzzzzwzzz~\81mtiipimppimtpmmmpmiifcc__\\XUURRN=A===================DAGKDADAADDDDDDKDDGGGGGGGG::33=AADAADGDDKRRNUX\X\\__c__\__c__\X\\XXURUNKKAAA:63,,,0,%%),,)0363006==DGGGKKKGDADGGKKKKKNRRXXX\\\\\XXX\\XX__f~~zzz~z~~~\85\85\81\8b\8f\92\8b\8b\8b\88\85\81\88\88\8b\8b\8b\8f\8f\92\92\96\96\9c\96\9c\99\99\96\92\99\9c\9c §ª±±±±´±´¸´´ª§§ ££ £££§££§§§£§££§££§§§§§ªªªªªªªª£\9c\9c\9c \9c\9c\99 \99\9c\99\99\99\9c ££ §§ª±ªªªª§£ £££§ £\9c\9c\9c\96\92\96\8f\8b\8b\8f\92\92\92\8f\92\8f\88\85~~~zw\81\81\85\85\88\8b\8b\8b\8f\8f\8f\8b\88\88\88\85\88\81~\85\85\88\8f\88\8b\8b\8b\88\8f\8f\96\92\99\92\99\96\99 §£\9c§£\8b\9c\99\8f\8b\8b\8b\8b\8b\88\85\81~\85~~\8b\92\92\99\96 \9c§ §ªª±´¸»»»¾Â¾¾¾¾»»¸´´±±´¸»¸¾¾»»¸´ª§§§ªªª§§ªªªªª§ª§£§£ £\9c\9c\9c\9c\99 £§£§ªªªªªª£ \9c\9c\99\9c\99\99\9c\9c\96\96\92\92\8f\92\8f\96\96\9c\99\9c\9c\99\92\9c£ £ ££ \99\9c\9c\9c\99 \9c\9c\9c\9c\9c \99\96 \9c\9ct\9c\92 £ §§£ªªªªª£§£ \96\96\96\92\92\92\92\8b\88\81~z~~\81\81\8b\88\88\81\85\81wmifXXipmppficf\0cfimppmmpmimiiiifcf___\\XUUUUUNURRUNRNRNNRNRRNKKGDGRK==AA=ADGKKGNNKDA=:360603,,%""\1f""\1f%%"\1f\e \0\a
+\ 3\0 \9c\9c\0\9c%%6c:6UNAKtppwppifcmmfiffccfifccUfUUXURUUUURNRRNNNNNNNNRRRRRUUX\\_ccfiptzwzzwwzzz~\81ipiimiimpiipmmmmpmiifcc__\\XXURRN==AA================AD=DGAADAAADAADDKDDGGGGGGGG::66:A=A=AADDDGNNKUX\XX\\_________c\\__\\XUXRNNGDDA::000330)),)),),00,3::DGGGGKKGDDGKGKKKKKNRRX\\\__\_XXX\\XX__fzzzzzz~~~\81\88\88\8f\92\92\96\92\8b\8b\8b\88\88\88\8b\8b\8b\8f\8f\8f\92\8f\99\96\99\99\99\9c\96\92\96\99\9c\9c £±±±±±´´±´´´´ª§£ ££ £§§£§§£§§§§£ª§£§§§ªªªªªªªªªªª \9c \9c \9c \99\9c\9c\9c\9c\9c £££§§±±±ª§££§§ª§§ £ \9c\96\99\96\92\8f\92\92\96\92\92\96\92\8b\88~\81\81z~\81\81\85\88\85\88\8b\8b\8b\8b\8b\88\85\85\85\81\85~~\85\81\85\8b\85\88\88\8b\85\8b\8b\81\8f\96\96\9c\99\9c£ª§±§§£ \92\8b\92\8f\92\8f\88\88\85\85\8b~\81\92\92\99\9c £££ª §±´¸¾¾»¾Âž¾»¾¸»´±±ª¸¸¾¸¾Â¾¾»´±§£££ªªª§ª§ª§ªªªª§§£ \9c \9c\99 ££§§ªªª§ª££\9c\99\99\99\99\99\9c\99\92\96\92\92\92\92\8b\99\96 \9c\9c\9c\9c\9c £ £££ \9c\9c \9c \9c \9c\9c\99£ \9ct\9c\96 §£ §§ªª \9c\96\96\92\92\8f\92\92\88\88\85\81z\88\81\85\85\88\85\85w\81tti_\XUimipmffcf\0ciimppmpppmpmmmmi_c\_\\XURRUURRURUURRKRRKUKNNRKKGAGNG=====ADDGG\14KKGA==666,300)))""\1f\1f\1f""%"\e\1f\0 \a\0 \9c\9c\14\9c%)6fK3XRDUptmtmcfcciicifccffffc_XcURXRRRRXRRNNRRNNNNKNNNRRURUU\\\__ccipwwtzwwwzzz~\81imiiiiimmfimipmmpmiifcc_\\XXUURRNA=========:=======A=DG==D==A===AAAAANDDDDGGGGGG=:::==:A===AADDKKKRUXXUXX__\\\\\\___\___\\X\URRKKGD==333:66,,0,),),00,36:DDGGGKKKGGDGGGNNKNNRUU\\\____\X\\\X\_cf~~wwzz~~\81\85\8b\8b\96\99\99\99\96\8f\92\8b\88\8b\8b\8b\8b\8f\8f\8f\8f\8f\8f\96\96\99\99\99\99\96\96\96\9c\99\9c\9c ª±±±±±´´´´´´´ª§§£££ \9c\9c\9c §§£ª§§§§ª§§ªª§ªªªªªªªª§§§£\9c £\9c \9c\9c\9c\9c ££§§ª±±±±ª§§ªªªªªª§§£\99 \99\96\96\96\96\99\96\96\99\96\8f\8b\8b\85\85~\81\81\85\85\88\88\88\88\8b\88\85\88\85z\81\85~\81zz\81w\81z\81\85\85\88\85\88\81~\88\92\92\99\96\9c ±¸´´ª§ \99\99¾¸\8f\88\8b\8b\8f\92\8fªª§§§§§§ª£§±±´¸¸Å¾¾Â¾Åž¾»»»»¸±§\9cª´´¾»Â¾¾¾¸±§§££§§ª§ªªª§§ªªª§§££ \9c\9c\9c\9c££ £§ª§ª§§§ \9c\96\96\99\99\99\99\96\92\96\92\96\96\92\8b\9c\96\9c ££££\9c £££ \9c\9c\9c\9c \9c£ \9c \9cp\9c\99£\9c££ £§ªª§\9c \9c\96\92\92\8f\8f\8b\8f\92\88\8b\88\85~\8b\85\88\81\85\81\81wwptf\\\Ufifmicfcc\0cfimptppppppppimm____XXUUNRRURRURRRRNGNNGRGARUGND=GRGA=====AAGD\14DGD=:::6600,,%%%""\e\1f""\1f%"\1f\1f\ 3 \0 \9c\9c\e\9c%%6iR3\UKXfpcfp_f__f__fcfcffff_c\UXRXUURUURRNNRRRNRNKKRNRNURUU_\\__ccipwwtzwwwzzz~\81iiimiiipmffpipmipmiifcc_\\XUURRRNA=======::::::::::=:AD==A:======A===NAAAADDDDDGA:===:=A::===ADDDGNRUURU\\\XXXX\X_\_\___\_\_XURNNKGAA6:===:6030,,,,0036:=DDDGGGGNKGADDGKKKRNRUU\\_____\X\\\X\_cfzzwwzz~~\85\85\8f\8f\99\9c\9c\9c\99\96\96\92\8f\8f\8f\8f\8f\8b\8f\8f\92\92\92\96\99\96\99\9c\9c\99\99\99\99\9c\9c\9c£§±±±±´´´´¸¸¸´´ª§£§§££ \9c £££ªªªªª§ªªªªªª±ªª§ª§§ ££ £ \9c \9c ££§§ª±±´±±±±±±±ªªªªª§\9c£ \9c\99\99\99\99\99\96\9c\99\92\8f\8f\88\88\81\85\85\85\85\85\85\88\85\88\85\81~twt\81t~ww~t~wz\81\81\85\81\85\85~\81\85\81\96\92\99\9c´»¸»¸´¸´¸¸¸¾Â»¸\8f\8f\99\99ªªªª§ªª§ª±±´¸¸»¾Â¾Å¾Â¾»¸»¸¸ª \99\8b\88\8b\88¾¾¾¾¾´ª§§££§ªª§ªªªªª§ª£ £\9c\9c\9c\9c ££ª§§££ \99\92\99\96\96\99\96\8f\92\96\92\92\99\92\92\99\99 ££ ££ §£\9c££££ \9c\9c\9c \9c \9c \9cp\99\9c \9c £§ªª\9c\9c\99\96\8f\92\8f\8f\8b\8b\92\8b\8b\88\88\81\8b\88\88\85\81~\81ztmtfXX\Ucccif_fcfAcffimppmppmpppmii\_\\XURRKNRURNURUUNKGNKDRAARRDKDAKRKD======AGD\14DDA=6663300))%%%%"\e\1f\1f\1f""\1f\e\1f\a\0 \9c\ e"\9c))6mUR\UNXfccfp_f\\fc_ccffffff\c_UUR\XUUXRRRNNRNNNNNKNNKRNRRUU\\\__ccipwttwwwwzzz~\81iiimiimpifftipiimmiifcc_\\XUURRNN======::::::::::::=:=A=:==:A=::===A=NA===AAAAADA=AAA=:=:::=A=AAADKNRRNRXXXUUUUXX\X\\\\\\_\\XXURRNKDD==AAA=:33:3003306:=AGDDGGGKKKK==ADGGKRNUUX\\__\__X\\_\X_cfizwwwz~~\81\81\88\8f\92\9c \9c\99\99\96\92\92\92\92\92\8f\8f\8f\92\92\92\99\99\99\99\9c\9c\9c\99\9c\9c \9c £§ª±±´´´±±¸´´´´±§£ª££ \9c\9c\9c\9c££ §ªªªª±±ªª§§£§££§££££ \9c\9c £££§§§±´±±±±±±´±ª±±±±±±ª§§ \9c\9c\9c\99\99\99\99\99\96\92\92\8b\85\85\85\85\85\81\81\81\85\81\85\81~zwtt~wwpppppmwz~\81~\81\81\81\81\81\81\88\85\96\99±Â»¾»¸»¸»»»Â¾»»»´\9c±±ªªª´±¸¸¸¾¾¾Âž¾¾»¸¸»´§ \96\8f\88\85\81\81~ÂÂ\81»¸ªª§§§ªªªªªªªªª£\9c£\9c\9c\9c\9c \9c££ £§£ª§ \9c\96\96\99\96\96\99\96\8f\92\96\96\96\9c\96\99\9c\9c£ £§ £§££ ££££ \9c\9c \9c \9c\9c£ \9c\9c\9c\9c \9cp\96\9c£\9c £\9c\9c ££§§ \99\96\8f\8f\92\8b\8f\8b\92\8b\8b\8b\88\85\8b\88\88\81~w\85ztptcRXXX___fc_f_f\0cfcfippppmppmtmff\\\XURKRKKNRRKURUURKNUGDU==RNGKDDNUNG=A==::AD\aAAA=:66300,,,,)")%"\1f\1f\1f\e""\1f\18\1f
+\ 3 \0\0%\14))6pXU_XR_fcccm_c\\f_ccfcfffff_c_UXR\UXXXURRNNNNNNNNKKKKRNRRUUX\\__ccipwtttwwwwwwz~iimiiimmfiitfmfimmiifcc_\\XUURRNK=====:::::::::::::::6:::=::==::::==:N=========AA==A===A::::=====AGKKGKNURURRRRUUXRXX\X\\\X\UUXRNNGGAAADDDA====:36663:=ADDDDDDDGGGG::=AGGKNNUUX\\_\\\\XX\_\\cfimwzwzz~~\81\85\88\8f\8f\99 £ \9c\9c\9c\99\96\96\92\92\92\92\92\8f\92\92\96\99\9c\9c\9c\9c\9c\9c\9c\9c §±±±´´´´´´´´´±ª£§££\9c £ ££§±±±±±´´±±±§ª£££§££§§§£££ \99 ££§ªª±´´±±±±´±±±±´´´¸´´±ªª£ \9c£\9c\9c\9c\99\99\99\96\92\8f\85\81\81\81\81\81~~\81~zzwwwppttmimmmmimtw~w~~~~~~\81~\88\92\92¾¾Â»»»¾¾Â¾¾»»¸¸´±´±±±´´¸´»¾Â¾ÂÅž¾¾¾¾¸»¸¸ª£\99\92\8b\85~~zzÂ~\81»¸±ªªª§ªª±ª±§§ \9c\99\99 ££§§£ª£ \99\99\96\96\92\96\96\96\92\92\92\92\96\9c\99\9c £ £§£§£££££££§£ \9c\99\99\9c \9c\9c \9c \9c\9c \9c \9cp\92\99 \99 \9c\99\9c£££§\9c\9c\99\92\92\92\92\8b\8f\8b\8f\8b\8b\88\88\85\88\85\88~~w\85~wttcRXX\_\_cc_c_c\0GcfDDmmttmpmmppcc\\\RRKKRGKKRNNUURRUKRXNRX=NR=DKDDNXRKAAA=:=AD\a\0\ 3A=:333,%)))))")%\1f\1f"\e\e\1f\1f\e\18\1f\ e\a \a))\e))6pX\cXUci__ci\c\_ccccfffffffc_cX\R\RUXXXRRNNNNNNNNKKKKNNRRUUX\\__ccipwtwttwwwwwz~iiiiifiiffftfmimmmiiffc_\\XUURRNK====::::::::::66:::66:66:6:=:66::::6NA::=======A=======:===::==:=DGGGGGRNNNNKNRRURUUXX\XXXXUUUUNKGGDDDGGDDAAAA=::::3==AAAADAADDDDD36:=DGKNNUUUX\\\_\XUX\\\_fimtwwz~~~\81\81\88\88\8b\8b\96\9c££ \9c\9c\9c\96\92\96\92\8f\92\8f\8f\92\92\96\99\9c \9c\9c £££±±´´´´´±±´±§§§ \9c\9c \9c\9c ££§ª±±±±±±±´±´¸¸±´±±±£ª§§£§§§ª£§££ \9c\9c \9c ££§§±±´±±±±±±±±±±±´¸¸»¸¸´ª§§§ \99\9c\99\99\96\92\8b\81~\81~~~~zzzzztwtpmmpiffcc_cfimiiwzzzzz~\81\85\8b\8f\8f»¾¾Â»»¾¾Â¾»»´¸´±±±±ª±±±±±±´´¸´¾¾Â¾Â»¾»¾»¸»´´ \9c\96\88\85\81~wzzÂ~\81»´±ªª§ªªª±±±±ª£§ \9c\9c\96\9c\9c££ £ §§§§ \96\99\92\92\92\96\99\96\96\92\92\92\99\99\9c £ §££££§££ ££££ \9c\9c\99\9c\9c\9c\9c \9c \9c \99\99\8f\99\9c\99 \99\99\9c §§ \99\96\96\8f\8f\8b\8b\8b\8b\88\8b\8b\88\85\85\85\85tzw\85\81wtt_RX\\_X__c_c\_\0G_cGDiittmmmmpm_c\\XRAGKRGKNRNNUXUUXKU\RUXURN6DKDDKXUGDAA==\ 3\aD\ 3\0
+A=:033,%)%)))"%%\1f""\1f\1f\1f\1f\18\18\e\11\ 3 \0\11,,\1f)):p\_c_Ufi_ccf\fm_fccffffffff__cX_U\URUXXRUNNNNNNNNKKKNKRRRUU\\\_ccciptttttwwwwwz~iiiiifffffftfifimmiifcc_\\XUURNNK====:=:::::::66666666666666:666:6666NA66::::::=A::=A=::==:=:=::3=ADDGGDDKKKKGKNNRNNNUUXUUUURURRRNKDGDDGGDDDDDDA==:=6===AAAA==AAA==0,0:ADKKNRRUXXXX_XXUX\__cfmpwww~~~\81\85\81\88\88\8b\8f\92\99 \9c\9c\99\99\99\96\99\92\92\92\92\8f\96\96\99\99 £ ££££ ££§ª±±´´´´±±±±ª§£§ \99\9c\99 ££§ª´±´´´´´´¸¸´´´±±±±§ª§§§§§§ª§§§£ \9c\9c\9c ££§§±´´±±±±±±±±±´´¸»¾»»¸±±ªªª£ \9c\9c\99\99\92\8f\81\81z~zz~~wwwwwwtpmiiff\X\XX__ccffmmtwzzw~\81\81\8f\8f£¾¾»»Â¾¾¾Â¾¾»¸´¸´±±±±´´±´´±¸¸»»Â¾Â¾¾¾¾»»»¸¸´± \99\96\8b\85\81~wzz¾~\85»¸±ªªªª±±±§££\9c\9c\9c\9c\96\99\99££ ££§££££ \9c\96\99\96\92\92\96\99\96\96\92\96\8f\99\99\99\9c £§ ££§£§\9c££ \9c\9c\9c \9c\9c \99\9c\9c \9c\9c \99\9c\92\99\99\99\9c\9c\96\99\99\9c\9c£§ \9c\96\96\96\8b\8f\8b\8b\8b\8b\88\88\88\85\85z\85\81tzw\85\81zwt\XX\_\X_cfc_X_\0G\UGGfftpiimmpi\_XXUNAGGNGGNRRKX\XX\XXXUX\RUN6AGA,KURGGAA==\0\ 3D\a\0:A:63360))%%))%""\1f"\1f\1f\1f\e\e\e\18\18\ e\0 \11\14A0")06t_cfcUci__cf_fi_fccffffffff_\c\cU_XUUXXRXNRNNNNNNKKKNKNRRUUX\__ccciptptttwttwwwziiiiiifffffpffcmimiifcc_\\XUURNNK====::::::66666666663666333636366366K=63666666:=:6:=:==:======:6:==ADDDGGGAGGGKGNKGKRKURURRRRRRRNKGKDDKKGGDDGDDAA==:::=====::=6:33,,,0=GKKNNRUUXXX\XXUU\_cffptzwt~~\81\85\85\85\88\88\88\8f\8f\99\9c \9c\9c\9c\9c\99\99\99\96\96\92\8f\92\96\99\99\9c £ £££§££££§§§ª±´´´±´±±´±§££ \9c\9c\9c ££§±¸±´´¸±´´´¸»¸±´´´±´ªªª£££§§§ª§§£ \9c\9c \9c ££±±´±±±±±±±´¸»¾Â¾¾»´±±§£\99\9c\99\96\8f\8b~~wzwzz~twwwttpmifc\cXUURUX\__cfiimpwwzz~\81\8b\8f\99£¾»Â¾¾¾¾¾¾Â¾¾¸´¸±ª±±±±´ª±´´±±±±´´¸»Â¾Â»»¾»»»»¸´±\9c \96\92\88\85\81~wzz»\81\81»¸±±±ª±±±±±ª££ \99\9c\99\99\9c £££§§§£§£ £ \96\96\96\96\96\96\96\96\92\96\8f\99\99\96\99\9c §\9c£§£§££ §£ \99\9c\9c\9c\9c \9c\9c\99\9c\9c\99 \9c\9c\9c\9c\96\99\96\96 \9c\99\99\99\99\99 £ \99\99\99\92\8b\8f\8b\8b\8b\8b\88\85\85\85\85z\81~pzw\85\81zwt\\\___X_cc_\UN\0GXUKK_fRmimmpmfR\UGNKDGDNKKNRURX\\XX\UURUXNRK363))KKNDDA==A=ADDA=A:63363,)%%%%"\1f\1f\1f\1f\1f\e\1f\1f\1f\e\14\18
+ \18\18G:%,36tccffX_fc_cccff_fccifffffff\____X\\URUXRUNNRNNNNNKKKNKNRRUUX\\_cffipppttttttwwwzfifiiffiiiiticciipmifcc_\\XUURNNK====::::::66666666333333333:636:3333G3333333336::36:6=:::::=A:6:6=:=AAADDDADKGGGKKKKNGRNRNRRRNRNRGKKGGGKGGDGGGGDAAA=:6:::::6330600%)),:GKKNNRRUXXX\XUUXX_cffmtwtwz~\81\85\85\85\88\88\88\8b\92\96\9c\9c\9c\9c\9c\99\99\96\99\99\96\92\8f\96\96\9c\9c £ £££§§§£§£§ªª±±´±±±±±±ª§£\9c \9c \9c £§ª´±´´¸´±¸¸¸»¸±´´´´´±ª£§£§ª§ª§£ £\9c \9c\9c\9c\9c \9c £§§±±´´±±ª±±ª±´¸¸»Â»¸´´´±ªª£\99\99\99\92\8b\81zzwzzwwztwwtttmif_\XUURRURUX\\\cffimwwzz\81\81\88\8f\96\9c»¸Â¾»¾¾¾»»¾¾»¸¸±±´±±´±´´´±´»¸¾¾¾»»»¾»»¸¸±\9c\9c\92\8f\85\88~~z~w¸~\81¾¸´´±´±±±´±±±§£\9c \9c\99\9c\9c £ §ª££§£§§§\99\96\99\99\99\99\92\92\92\92\92\99\99\96\96\9c \9c£ £§£§§ £ §££ \9c\99\99\99\99 \99\9c\96\9c \9c\9c\9c\9c\9c\9c\99\99\96\99\9c\9c\9c\96\96\96\99\99 \9c\96\96\99\92\8b\8f\8b\8b\88\8b\88\85\85\81\81~\81wtzw\85\81zztf__cc_X\__\\UNKGXRNG\cRcUiimiURXRKKDDDDNGKRRXU\__XX\URNRUKNG36)\0\0GGDAA=::=AADAAAA6:6363))"""""""\e\e\1f\18\e\1f\e\18\14\18
+ ,"N=),:6tccfciccf_cccfccifcffffffcc__cc\U\_URUXRRNRRNNNNNKKKNKNRRUUX\\__cimpppttttttwwwziiiffiffifmpffcfipmifcc_\\XUURNNK===A::::::66666663333333603:63360630G3000300003::6666::6=::==6:6:A==AAAADDAGGDGGGGGGGGNKNKNNNNRNNKKKKGKNGKGGGGDDAAA=:6666:6630,0,)"%%)6GKKNRRRRXXXXXUUXX_ccfmpwww~~\81\85\88\85\88\88\8b\8b\92\99\99\9c\9c\9c\9c\99\9c\96\99\9c\96\92\92\96\99\9c\9c£££ £§££§£££ £§ª±±±±´±±±´´±ª§£ \99\9c\99\9c\9c£ ª±´´´¸¸¸´¸¸»¾´´´´¸¸´´±£§£§ª§ª£§\9c £ \9c\9c\99\9c\9c\9c\9c §ª´¸¸±±±±ª±±´»¸¾Â¾¸±´¸±ª§\9c\99\96\85\88zzwwwwwwzwtwtppiiX\RUURRRRNUUX\\c_fmittwz\81~\85\8b\92\99¸»»¾»¾¾¾»¾¾¾¾»´´´±±±±ª±±±±±´´ªª´¸¸¾»»¸»»»¸¸¸´ª£\9c\99\8f\8f\85\88\81\81~~w»~~»»¸¸´¸±±±±±±±´±±±ªª££ \99\99\99\99 ££§§§§ªªª\99\9c\99\99\99\99\92\96\92\92\92\99\99\96\92\99\9c ££§§§ª§£££§§£ \9c\9c\99\99\99\99\9c\99\9c\99\9c \9c\9c\9c\9c\9c\99\9c\9c\96\99\99\99\99\92\96\99\96\99\9c\99\96\96\96\92\8b\8b\8b\88\85\88\88\81\81\81~z~wtzw\85\85~zpic_cf_\\\_X\UNNKUNKGU_UcUffi_UNRNKDDAGGNKNRRXX\\_XUXRNKGDDGD06"\a
+66033:66:=ADA=AA::6663))%"%"\1f\1f\1f\1f\e\1f\e\1f\e\e\14\14\18\a 3)RA)6=6tfcicmccfcfcffcciifffffcccc_\c_\X\_URRURRNNRNNNNNKKKKKNRRUUU_\cccfppppwtttttwwwzimiiiififfpmficcimiifcc_\\XUURNNK====::::::6666666333333330063303330,D0,3,0,,,,0:63336:66:6::=::::======ADAADDADDDDDDDGGGGKNKNRNNRNNNNKNNKNGKKKGDDAA:633666333,),%)"""%%,GKKRRRUUXXXXXUXX_ccimtwww~~\81\85\85\85\88\88\8b\8f\92\99\99\9c\9c\9c\9c\99\99\99\99\9c\96\96\96\96\9c £ £\9c ££ ££ £ £ª±±´±±±´±´±±´ª§§ \9c\9c\99\96\9c\9c£ ª¸´´¸»´¸»»»»¸¸´¸¸¸´´±´±ªª£§§ª££ \9c\9c\99\9c\9c\9c\9c £§ª´¸¸´±±ªª±´¸»»Â¾Â¾»¸´´±ª§§\99\99\92\81~zzwtztwtwtptppmif\RRURNNRNRUUX\\ccfimtpt~~\81\85\8b\8b\96ª¸»¾»»¾»»»Â¾»»´±¸±±´±±±±´±ªª´´¸»»¸»¸¸»¸¸´±ª£\99\96\8b\8f\88\8b\85\85\81~\85»\81z¸¾¸»¸¸´´±±´´´¸±±±ª§§£ \9c \96\99\99\9c\9c §ªªª±§£ \9c\9c\99\99\92\96\92\96\92\99\96\96\92\96\99 ££££ª§ª§§££§££\9c\9c\9c\9c\99\99\99\99\9c\9c\9c\99 \9c\9c\99\9c\9c\96\9c\9c\96\96\99\99\99\96\99\96\92\96\99\99\92\92\92\92U\88\8b\88\88\88\88\81~~zwzwtww\85\85~zpmf_cfc____X\RKRGUNGGU\Xcicc_\RKNNGDDDDKNNNUUX\_\\\UKNAGA==:A,3\0ªª))",,3,36==AA=AA==6::60,,%%"\1f\1f\1f\e\18\1f\1f\1f\e\18\18\11\18\a =0UD):D=tfficm_ficiciicffiffffccccf_X__\X\\XRUURRRRNRNNNNKKKKKNRUUUU\\_cfcpppptttttttttwmmmiiffiicmmiifcimiifcc_\\XUURNNK==A=:=::::66666663333333000300,060,,A,,0,,,))),63636366:6:6=A====A==A===AD=A==AAA=AAADGGGGKKNRRRURNNNNRRNRKNNKKDDAA:300333300,,)"%""\1f"%%,GGNNRURUUXXXXX\_ccfmpwzw~~\81\85\85\85\88\88\8b\8f\92\96\9c\9c\9c\99\99\9c\99\99\99\99\96\99\99\99 ££ §\99£ \9c \9c££ £ª±±±´±±´±±´±±ªª§££\9c \9c\99\96\99\9c £§±¸¸¸´»¸¸»»¾»»´¸»»¸´¸´´´ª§ªªª££ \9c \9c\9c\9c\99\99\9c\9c §±´¸¸´´±±ª´¸»¾¾»¾»¸´±´±§££\99\9c\8f\81~~zzwwwtttwttppmic\UUURNNNNRRUX\_ccffppmtz~\81\88\8b\8f\92£§¸¾¸»»¾¾¾¾¾»¾¸´´´±±±±±±±´±±´±¸»»¸»¸¸»¸¸±±§ \96\96\8f\8b\88\8b\85\88\8b~\88»\81\85»¾»»»»¸¸´´´´´¸±±±ªª££ \99\9c\99\99\9c \9c £\9c£ªª´ª±±§£ \9c\99\96\92\96\96\99\92\99\92\96\92\92\99£ §£ª§§££££ \9c\9c\9c \99\99\99\99\9c\9c\9c\99 \9c\99\9c\9c\99\96\99\99\99\96\99\99\99\96\96\99\96\92\96\96\8f\92\92\92U\8b\8b\8b\88\85\85\81~zwwtztwz\85\85~zttiffcf___\X_NKUGUKGKX\Ufff_\XNKKKGDDDGKRRRUU\__\_XUDK=D:6:6:)3§ªª\1f%\e\a\1f)),6:=====A=:6==:6,03"%\1f\1f\e\18\18\e\1f\e\e\18\18\14\18\11 DAXG)DGDtfiffifimfmcfmfffiifccccc_fc\\\_\\\XUURURRNNRRNNNKKKKKNNRUUUXX\_ccpppptppttttttwmmmiiffiffmimiifimiiffc_\\XUURNNK==A=:=::::666666633333330030030030,,=,,,,,,))))3033366::666:=A=A=A=A=:=AAA=:66:6:==:=ADGGKKNRRRRRRKRRRUUUUNNRNKGGAA=30,00000,,)%""\1f\1f\e""")3DKKNRRUUXX\\\_cccfmpwwz~~\85\85\88\85\88\8b\8b\92\96\99\99\99\9c\9c\99\99\9c\96\9c\9c\99\9c\9c\9c £££\9c£ \9c \9c §§ª±±´´´´´±¸±±ªªª§ \9c\9c\9c\9c\96\99 ££ª´´¸´»¸»¸»»»»¸»»¸¸´¸¸´´±±ªª § \9c \9c\9c\9c\9c\99\9c\9c \9c£§ª´´¸¸´±±±±´¸»»»¸»´´±±ªª£ \96\99\8f\81\81zzzzwwwtwwwtptmifXXUURRNNNRRUXX_ccfimppwz~\85\85\8f\92\8f\9c§§¾»»¾¾»¾»¾»Â»¸¸¸ª±±±±´±±±±´´»¾»»¾¸¸¸´¸±§\9c\92\92\8b\88\85\8b\85\88\8fz»¸»¾»Â¾¾¾¾¸¸¸¸´¸¸¸±±±ªª££\9c\9c\99\99\99\99\99\9c\99 £\9c ª±´±±ª§ \99\99\99\96\99\99\92\99\8f\96\92\92\96 \9c ££§ª§§§££ \99\9c\9c\9c\99\9c\99\99\9c\99\9c\9c \9c\9c\9c\9c\9c\96\9c\96\99\92\99\9c\99\92\96\99\99\8f\92\92\8f\8f\8f\8fU\8b\8b\8b\88\85\81\85~~zzt~tww\85\85~~wwpiicf__\\U_KGUKUNGNX_RfficXUGKGGDDGGNNUUUUX\\\X\XUDA:=63633)0§ªª\e\14\e\ 3",),36:=A==AA::==::636%%\e\e\e\18\e\18\1f\e\1f\e\18\18\18\14 \eGD\N)GNGpfmiiiimmfpfimifffifcccc_cic_\\c__XUUXUURRRRRNNNNKKKNKKNRUUUXX\_cfpppttppttttttwmmmiiiiiffpfimfcfmiiffc__\XUURNNK==A==:::::666666633333330003300,3,,,:))))))%%%)03333::=6666=A===AA==:::=A=:::6:66::::=ADDGKNNRURRUNURUXXXXURRRNKGDA=63,300,0))%%"\1f\e\e\e\1f"\1f))0=GKNRRRXX\\\_cccfptwww~~\81\85\88\85\88\8b\8f\92\96\96\96\9c\9c\9c\9c\99\9c\99\9c\9c\9c\9c £££ \9c \9c\99\9c\9c \9c £ª±±±´´´´´´´±±ª£ \99\9c\99\9c\96\99\9c £§±´´´¸¸´¸´¸»»¾»»»»¸¸¸¸´¸±´±§ §£\9c \9c\9c\99\99\9c\99\9c £ª§±´¸¸»´´±´±±±±±´¸»¸¸¸´´±ªª§§ \9c\99\92\99\8b\85~zzwwzzwwwzwttpmic\\UXUURRRRNUX\_ffifpmptzz\88\88\8f\8f\92\99£§»»¾¾¾»¾¾»¸»»´´¸±±±±´±´´´±´´´¾¾»¾¾»»¸´¸´ª§\9c\92\92\88\8b\81\88\88\85¸¾»»»¾¾Â¾¾¾»¸¸¸¸¸¸´±±§ª£ \9c\9c\96\99\96\99\99\99\99\9c\9c \9c\9c±±±´´±§ \9c\9c\9c\96\96\99\92\99\92\96\96\96\96\9c \9c\9c §§ª§ª§££\9c \99\99\9c\99\96\9c\99\96\99\99\99\9c\9c\9c\9c \9c\99\99\99\96\96\92\96\99\96\8f\96\96\99\92\92\96\92\8f\8b\92X\88\88\88\88\85~\85\81z~ztzwwz\85\85\81\81~~tpiffc_\_U_DGXNUNXRUcRiffcURKKKGDDKDXNUXXX\X\\UXURA=3630300%0ªªª\18\11\18\ e\1f,))03:=A=AA=::::==:6:))\18\e\18\14\18\14\e\1f\1f\e\e\e\e\11 \11KG_R)KRKpfmfmmmpmipimmffiiifcccc_cfc__\c\cUXUXXUUUUNNRNNNKKKKKKNNRUU\\\__fpppptppttttttwppmiiiiiffpcficcfmmiffcc_\XXURNNKAA==::::::66666663333333003333,,0,,,6))))))%%%%,03336=:::3:======A=:666:=:6:63663636::=AAGKNNRUUUURUUX\\\\XUUURNRGD=:60300),))%%\1f\1f\e\e\e\1f\1f\1f%%,:AAGNNRUX\__cccfipwzwt~~~\81\85\85\88\8b\8f\8f\92\96\99\99\99\99 \9c\9c\99\9c\9c\9c £§ \99\9c\99\99\99\99\9c\9c ££§ª±±±±´´´´´´´±±§££\9c\9c\99\9c\96\99\9c£ £ª±´±±¸¸´´¸¸¸»»»»»»»¸»¸¸¸´¸´±§£§£\99 \9c\99\96\99\99\96 £§ª±¸»»»´´´´±±´±±±±´¸¸´¸´´±§§££ \9c\99\96\92\96\8b\88~z~zwwwwwwwzpptpfc\XX\UURRUURU\__ffifmpptz~\85\85\92\92\8f\96 £¸»»¾¾»»¾¾»¾¸±´´±±±±±´±¸´´¸´´¸¸¸¾»¸¾»¾»¸´»´£\99\92\8f\88\8b\81\88\8b\85¸»¾¸»Â¾Â¾¾¾¾»»¸¸´¸´±±ªª \9c\9c\96\99\99\99\99\99\99\9c\99\9c\99\9cª±´±´ª££ \99 \96\96\96\96\99\96\96\96\96\92\99\9c \9c\9c§§§§§§££ \9c\99\9c\9c\99\99\9c\9c\99\99\9c\9c \9c \9c\96\9c\96\96\92\96\92\96\96\92\92\96\99\96\96\99\92\8f\8b\92X\88X\8b\8b\88~\81\81zzztzzw\85\88\8b\81\85\85\81zwiffcc_fc_GK\NUR\NUcRffc_NNNGGKGGNN\\X\\X\\X\URRR=),30%",,",ªªª\18\11\14\11\1f))),06:A===:::==AA=:=0)\e\1f\14\11\14\11\e\e\1f\e\e\e\1f\ e\0 \aKG_U,NUNmiifpmmtpimmimfiifffccc__cc__\\cX_U\UXXXUXRRRRNNNKKKKKKNRRUUXX\__cmppppppttttttwppmmmiifffmfffccfmmiffcc_\\XURNNK====::::::66666663333333000303,,,,,,3))))))%%%%,,303:===666::=:::==:3336=666303333336:=ADGKKRRUUUXUXUX\\__\XXXURUKD=::3630,))))%"\1f\1f\e\e\e\e\1f%%,3:=DKNRU\\_cfcfimtwzwwz~~\81\85\85\88\88\8f\8f\92\96\99\96\96\9c\9c\9c\9c\9c\9c \9c ££ \9c\99\9c\99\9c\9c \9c£££§§±±´´¸´´¸´´±§£ \99\99\99\9c\9c£ £§±±´´´¸´¸¸¸»»»»¾»¾»¾¸»¸¸¸±±ª±§§£\9c \99\99\99\99\96\9c §§´»»»»¸¸¸´¸´´±´±±±´´´´±±±ª§£ \9c\99\92\92\8f\92\88\88~~zzwzzwwzwwttpmc__\X\XXURUXXX___fiiimptt~\81\88\88\92\92\8f\96\9c »»¾»Â»»¾¾»»»´´´´±´±´¸´´¸¸¸»¸»¸»¾»»¾¾¾¾»¸»¸±§\99\92\92\88\88\85\88\8b\85¸»»¸¸Âž¾Â¾»»¸»¸´´±±±ªª\9c£ \9c\99\99\96\96\96\96\96\9c\9c\99\99\9cªª±´´±±§§£ \96\99\96\99\99\99\96\96\92\96\99 £££§£§£§£ \99\9c\99\99\9c\9c\9c\99 \9c £ £\9c\99\9c\96\92\92\92\92\92\96\96\96\96\9c\99\99\96\96\92\8b\92\8f\88X\88\88\85\81\81\85~z~zzzz\88\8b\8f\8b\88\88\85\81ztfpiiimipKK\KX\_NUfRiif\NNKKKKKKNR\_\_\X\\\\UUNR=,00,)",,\1f)ª\0\0\18\14\14\14\1f)%),03:====:::=:A===A3)\1f\e\18\14\14\11\e\e\1f\e\1f\e"\a
+ \ 3NKcX,RXNmmfipiitpfpmipffiffcccc__cc____cX_RXRXUURUUUURNNKKKKKKGKNURUXX\__cippppptttttttwppmmmiifiiiccc_ffmmiifcc__\XUURNK====::::::66666663333333000000,,,,,,,))))))%%%%))0036::::6:=:=::6::63306:66300003033:==AGGKNNRRUUUUUUX\\__\\\\XUXNNA==6663,,,),)%""\1f\e\1f\e""%)06=AKNUX\__cfffimww~wwwz~\81\81\81\85\85\8b\8b\8f\96\96\92\99\99\99\9c\9c\9c\9c \9c\9c £ \9c\99\99\99\9c\9c\9c £ ££ªª±±±±´´´´´´±£ \9c\9c\99\99\96\9c\9c££££±±±´´´±´¸»»¸»¾»»¾¾¾»¾»»´±±±ªª££ \9c\99\99\96\99\9c ££§±¸»¾¾»»»¸»¸¸´¸´±´±´´±´§£ \9c\9c\99\8f\8f\8b\8b\8f\85\85z\81wzww~zwzwwttmi_\_\\_\\XU\\\\cc_fiiipptt\81\81\8b\8b\92\92\8f\92\96\9c¸»¾¾Â»¾¾¾¸¸¸¸¸¸¸±´´¸¸¸¸¸»»¾»»»»»¾¾¾¾¾¾¾»¸»±ª\96\92\92\8b\88\88\8b\8f\85¸¸»¸»ÂÅž»¾¸»¸¸¸±±±±ªª££ \9c\9c\99\99\99\96\96\96\99\9c\99\99\9c§ªª´±´±±±ª§§£ \96\9c\99\9c\99\99\99\96\92\96\99 \9c £§££§§ \9c \9c\9c\9c \9c\9c£\9c\9c££ ££ \99\9c\92\8f\96\92\92\8f\92\92\96\99\99\99\99\99\99\96\8b\92\8f\8bX\8b\88\85\85\85\85~\85\81~\81~~\8b\8f\92\8f\8b\8b\88R~wptppmztwNU\N\ccfcififf\NRNGNKKUUU_c___\\_\_XXNRA0,0)%"))\14%\0
+\ 3\14\18\18\18\e%%))03:=:=:::::=====A60\1f\1f\18\14\14\14\e\e\e\1f\1f\e"\18\ e \0RNc\0XmRiifipifptfpmipifmifccfccc_c_cc\cX_RUUURURURUUUNNKKKKKKKNNRRRUX\__cfpppttptppppptppmmmiiiififcc_fcmmiiffcc_\\XURRK====::::::66666663333333000000,,,,,,,))))))%%%%,%,06666666::=:::6:630336633000000036::ADGKKNRRNUUUURUX\\\\__\_\\XURDAA::660,,),))%%"\1f"\1f""%),3:AGNUX_c_cfiiipwz\81zwwz~~\81\81\85\85\88\8b\8b\92\96\96\99\96\99 \9c\9c \9c \9c \9c\99\99\99\9c\9c ££££§±±±±±´´´´´±±§ £ \99\96\99\99\99\9c£££§ª±´±±´±±´¸»»»»»»»¾¾»¾»¸´±±ª§§£\9c£\9c\99\99\99\99\99 £ªª´´»¾¾¾¾¾»¾»¸¸¸´´´±±±±±ª£ \9c\99\8b\92\8b\8b\8b\88\88\81\81z~zzzwzzzzzwppmf__\__c__\_____cfcfiimpptz\81\8b\8f\8f\8f\8f\92\8f\92\99 ¾¾Â¾¾»»»»»»¸´±¸»»¸»¸¸¾Â»»»»¸¾¾»¾Â»¾»»¸±ª\99\96\8f\8f\88\85\8b\8f\85´´¸¸¾ÂÅž¾»¾»»¸´´±±ªª§ \9c\99\99\96\92\96\96\99\99\9c\9c£´´±±´´ªª§£ \9c\9c\9c\9c\9c\92\99\96\9c £ \9c£ £ ££§£\9c \9c\9c \9c§ \9c££££§ \9c\9c\96\8b\92\92\92\92\92\92\99\99\96\9c\9c\9c\99\99\8f\96\92\8b\8f\8b\88\88\88\85\85\81\88\85\85\88\81\81\8f\92\96\8f\8f\8b\8bN\81zwwttt~wzRcfR_iifffifff\URRNNNNX\\cfcc__\__\\\RN=300)%%%%\11"\a\ e\a\18\e\e\e\1f%%)),06:::::6::=====A:3\1f"\e\18\14\11\18\e\e""")\e" =URf_3\mUfiffpfftpipiipmfmfffccc______cXcX\RRRRNURUNUUURNNNNKKKKNKNRRUX\__ffpmmwpppppppptppmmmiiiiffccfcfciififfcc_\\XXURN====::::::66666663333333000000,,,,,,,))))))%%%%)%,,36366366::66:3:36330333000,,03033:=DDGKKKNNNRUUXRUXXXX\\c_c__\XRKDA==663,,),)))%%"%\1f"%%)03:AGRU\_cccfiiimww~wwwwzz~~\81\81\85\88\88\8f\92\92\96\92\99 \9c \9c \99\9c\99\9c\9c \9c££§§ªª±±´´¸´±´´ª§ £ \99\96\96\96\99\9c£§§ªª±±±´±±±´´¸¸»»¾»»¾¾¾¾¾¾»´´±ª§ªª£ \9c\99\99\99\96\99\9c ªª´¸¾¾Â¾Â¾¾¾»¸¸´±±±ª§£\9c\99\85\8b\88\8b\8b\8b\85\81\81\81~~wwwwzwwzwtmmiccc__cfcc_ccc__cccfimmttw~\85\8f\8b\8b\8f\8b\8f\8f\8f\96\96¾¾Âž¾¸»»»¸¾»´´»»»¸»»¸Â¾¾»¸»¸»»¸Â¾¾¾¾¸¸±ª\9c\96\8f\8f\8b\85\8b\8f\99±±¸»»¾Â¾ÅÅÌÌ̾¾»»¸´´ªª£££\9c\9c\9c\99\96\96\96\99\99\99\9c £±¸´´±´±ª§£ \9c \9c\9c\9c ££\9c \9c\99£\9c £§§ £\9c ££ §££§ \96\8f\96\8f\8f\92\92\92\96\96\96\99\9c\9c\96\96\92\92\8f\8f\8f\8b\88\88\8b\85\85\85\88\88\88\8b\85\92\92\96\96\92\8b\8f\8fR\85\85zzwww\81z~zwt\mmmiiimifc_XRURRRR\__ffff__\_\X\\RKA630)%"""
+\1f
+\ e
+\18\e\e\e"%%)%,036::::6:=:=:====6)%\e\e\18\14\18\e\1f%"%,\e%\0 AXUf_6_iUciffpiipmmtmmmifmfifccc____\\cU_U\URUNNURURUUUUKKNNKKNGKNNRRUUX\_cfppmtmppppppptppmmmiiimfffcfccciifffccc__\XXUUN====::::::66666663333333000000,,,,,,,))))))%%%%)),003366333::366363630,330,0,0)00006==ADDKGKKKNRURURUUUXU\\ccc_c_\XNDDA=:660,)))))%%%)"%%%,03:AKUX_cccfiimmpwwzzwwtwwzz~~\81\85\85\8f\92\96\92\96\99\9c\9c\9c\9c \9c\9c \9c\9c \9c\9c\9c\9c\9c\9c\9c £££§§§ªª±±±´±´±´ªª££ \9c\99\96\96\99\99 ££§ª±±±´±´´´±¸¸»»¾¾»¾¾¾¾¾»»¸¸±±ªª££ \9c\9c\99\9c\99\9c\9c £§ª´¸¾¾Åž»»»¸±ªªªª§ \99\92\88\88\88\88\88\88\88\81\85~zzzzwzzztwtppifccf_ccfffcfffc_cfcfiipttt\81\88\8f\8b\88\8b\88\8f\92\8b\92\99¾¾Â¾»»»¾¸¾»¸¸¾»»¸»»»¾»»»¸¸¸»»»¾Â¾»¸±§\99\96\92\8f\8f\8b\8f\8f´´¸»»¾¾¾¾ÂÏÏÏÏ̾¾¾»¸´±ª§££ \99\99\96\99\96\99\99\9c £§±¸´´´´±±§ª££ £ £ \9c\9c ££§§£§ ££ £ ££ £§§£§££\9c\92\8f\92\8f\8f\8f\92\92\96\96\96\99\9c\99\92\92\8f\92\92\8f\8f\8b\8b\8b\8b\88\88\88\8b\88\8b\8f\92\96\96\96\92\92\8b\92\92\8b\88\88\85zzzz\85~\81~zwtpppmmimmicc\XXUUU__ccifiic_\\\UXXRG=30,)"\ 3\1f\14\ e\18
+\11\ e\e\1f\e\e""))%,,3366:6:6=::=====:3)\1f\18\18\18\e\1f\1f%")0")\ 3 GXUf_:cfX\iffmimmiippmiffiiiccfc_cc__\cR_RXXRXRRRNUNXUXXNNKRKNNDKKNNRUUX\ccimpmpmmpppppptmmmpmmiiiiffcfc_ciifffccc__\\XXUR=====::::::6666663333333000000,,,,,,,))))))%%%%%%,,,003300366333033330,00,0,),,0303:A=ADAKKKNKNRRRRNRRUURXXcccccc_\RNKD=::30,)%)))))))%%%),36:DKXXcffffiimmpttzzttttwtz~~~~\88\8b\8f\96\92\92\96\99\99\9c \9c\9c\9c \9c \9c\9c\9c\9c\9c £££§£§ªª±±±±±±ªª§£\9c\9c\96\92\92\96\99 ££ª§±±´´´´´´´¸»»»¾¾»»¾¾¾¾»»´¸±±§£ \9c\9c\9c\99\9c\9c\9c\9c§£ª±´ÂÂÅÂÅÅž»¸»´±ªª§ª§§£\9c\9c\96\8b\88\88\85\88\85\88\85\81\81zwzzzw~wwwwtmpcffff__fiiifififcffffmmtttt\81\88\8b\88\85\88\85\8b\8f\8b\92\9c¾Âž»¸¾»¾»»»¾¾»¸»»»»»»»¸¸´¸»»»¾¾¾¾»´´§\99\96\92\8f\8f\8f\92\8f±¸´´»»»¾»»ÂÅÏÏÏÌž¾»»¸±±ªª££ \9c \9c\9c\96\96\99\9c\9c\9c £ª±´´´¸±±±ª§§££ ££££§ ££\9c £§ªª§£££££§£ £££§ª£ª£ \99\8f\8b\8f\8f\92\92\8f\92\92\92\92\96\99\96\92\8f\8b\8f\8f\8f\92\8f\8f\8f\8b\88\8b\8b\8f\8f\8f\92\96\96\99\92\96\92\8f\96\92\8b\85\8b\88~~z~\85\81\81~~zwttppmmmmffc\\XXXXccffiiiic_\\XRUUND:\14,),%\0"\18\18\11\ e\11\11\18\1f\e\e"")))),3336::::=:==:===:6,%\e\e\18\1f""%,,3%,\1f \11 K\XfcAfcX\icfiimifmptiffffffcccccc____cR_UU\RXRRNNRRXU\XRRKRKNNGGNNNNRUX___fmmmpmmppmmmmpmmmmiiiiifffccc_ciiiffccc__\\XXUR======:::::6666663333333000000,,,,,,,))))))%%%%""))),00003633300,,000,,,,),,%)00006:=AADDKKKNNNRRRRNNNURNUX__cc_cc_URNDA==6,,)"%%%,)),%)),33:DDR\_fffiimmpppttwwptppttzzz~\81\88\8b\8f\96\92\92\99\96\99\99\9c \9c\9c \9c ££ ££§§ªª±ª§ª££\99\99\92\96\92\92\9c\9c£§§ª´±´¸´¸´±´¸»»»¾¾»¾¾»¾¾¾¸¸¸´±±±±ªª££ \9c \9c\9c \9c£§´¸ÂÅÅÅÅÉÅ»¸¸´ªªª£§£§ \99\99\88\8b\88\88\85\85\85\85\81\81~zzwwzwztzttpppcificccfiiifiififfcfipmtzzz\85\85\88\85\88\8b\88\8f\8b\88\92\99»¾¾Â¾¾»»¾¾¾¾¾¾¾»»¸»¸»¾¾»¸¸¸¸»»»»¾»»»¸±±£\99\99\96\8f\92\92\92\99±¸´¸¸»¸»¸¸¾ÂÉÏÌÏÉž¾»´§§££ \9c \9c\99\99\9c ££§§ª±±¸¸´´´±±±±ª§§§£££££§££ \99£ ££\9c£§ªª§£££ £§£££££§§£§ \9c\99\8b\8b\8b\8b\8f\96\92\8f\92\96\92\96\96\92\8f\8f\81\92\8f\8f\8f\92\92\8f\8b\8f\8f\8b\8f\92\92\96\99\96\96\92\92\92\8f\96\8f\8b\85\88\85~~~~\81~~~~wzwwttpmpmicc\_X\\\cccffiif_\XXUNRNKA3\e\1f%)%\ 3\1f\e\e\ e\11\ e\ e\e\1f\e\1f"%%%)))03366::6=:==:===::0))"%"%%)006)0" \0 N\XffDf_X\i_fifmifmtpiiffccccccccc_cccc_\RU\UXUNNRNNXUXUUUNRNNNDGNKNNRUX_\_cmpmmmmmmmmmmpiiiiimiiffffccccciiifffccc__\\XUUNNNGA=:::::::66666333333000000,,,,,,,))))))%%%%\e\1f%%)),,,0330300,),,,00),,,,,%),,3036:AAADGKGKKKNNNNKKKRNGRU\_c_cfc_XURGDAA:),%%"%%),),),03:6AGNU_cfiimmpptptttwwmppttwwzz~\81\85\8f\92\92\96\8f\96\96\96\96\99\9c\9c\9c £ £ \9c\9c § ££§§ª§ª±±ªªªª§§£ \99\96\96\92\92\96\99\9c£§ª±±´´¸¸¸´´¸»¾»¾¾»¾¾¾¾¾¾»»¸¸´´±±±ª§£\9c\9c \9c£ ª±¸»ÂÉÅÅÅÅÅ»¸¸±ªª§§££ £\9c\92\96\8b\8b\85\85\85\85\85\85\81\81~zwzwzzwwwtppmmfmfiffffiifiiffiiifipptw~\81~\88\85\88\85\88\8b\8b\8f\8b\85\8f\99¸¾»Åž¾»¾Â¾»»»Â¾»»¸»»»Â¾»»»»¸»¸¸»»¸»¸´£\99\96\96\92\8f\92\8f\9c±±´¸¸¸¸¸¸¸¸»»ÅÉÉÏÅÉŸ´ªª£§£ £ \9c\9c\9c\9c\9c ££ª§ª±±´¸¸´´±´±±ªªªª§££ ££ £\9c\99 £ §ª§£ \9c£§££§§§§£§£ \99\96\8f\8f\88\8b\8f\92\8f\92\92\92\8f\92\92\8b\8b\8b\85\8f\8b\8b\92\92\92\92\8f\92\8f\8f\8f\96\96\99\96\92\96\92\8f\92\8f\92\8f\8b\81\85\81zz~z~zz~ztwwztwtmmmicc__\_\_cc_fcifc\XUURKKKA63\1f"%%""\1f\e\1f\11\14\11\11\1f"\1f""""%%%,03366:::====:====::0,%,"%),33:)3%
+0 R_\fiGcc\\i_fmimifitpifffccccfcccccfcccc\UXXXUURRUKKXUUUUURRNKKAGKKKNRRU_\_cmmipimmmmmmmpiiifiiiffffcccc_ciiiffffcc__\\XUURRRNNN=====:::6666663333300000,,,,,,,))))))%%%%\1f\1f\1f"%%),,,03,00,))))),,,0,,),)%))33366=A=DDGGKKKKKKKGGGND6GRR\_\_c_c\XUGGAD:,,%)"""%)),,03:=ADKUX_iimmpptpttttwztppttwzwzz\81\81\85\8b\8f\92\92\8f\96\92\96\96\96\99\9c £ \9c \9c ££££§§ª§ª±±ª§§ªª§£ \99\96\99\92\92\96\96\9c£§ª±±´±¸¸¸¸¸¸¾»¾¾¾»¾¾¾¾¾¾»»»´´¸´§§§ £££ £ £ª´»ÂÉÅÅÅÅÅž¸´ª§££££\9c \96\8f\8b\88\8b\85\85\81\85\81\81\81\81\81zz~zzzwttppmmiimiiiifiimfiifiiimimtwz~\81\85\81\85\85\85\85\85\88\8b\8f\8b\81\8b\99±¾»Å¾¾¾¾¾¾¾¸¾»¾»¸»»¾Â¾¾¾¾¾¸»»¸¾¸¸¸´´§£\9c\99\96\92\8f\92\92\9c±¸»¸¸¸¸´´¸¸¸»ÅÌÅÉÅÅ´±§§ £ \9c \9c \9c\9c\9c £ ££ §§§´¸¸´´±´¸´±ªªª§§ §£££ \9c £££§ª§§£ \9c\99££££§£§££§ \9c\99\96\8b\8f\88\8b\92\92\92\92\8f\8f\8f\8f\88\88\8b\88\88\8b\88\88\92\8f\92\96\92\96\8f\92\92\99\99\9c\92\8f\92\8f\8b\8f\8b\8f\8b\88~\81zwzzwzwzzwptwztwtpmmifc__\\__c__c_fc\XUNNKGD==)0"%%""\1f\e\e\1f\14\18\14\14""""\1f\1f"""%,,336:6::=A=A:=AAA==633000,06:6,6) \143 U_\fiKfc\\m_fiimicmpmifffcccccfccf_c_ccf_XXXURRRUUKKXRXXUURRNNKADGGKNNRU\\\ciiitmmmimmmmpiiiiiifffffcccc_ciiiifffccc__\\XUUUURRRNKKGD===::666663333300000,,,,,,))))))%%%%\1f\e\1f""%),,,,0000))%%%%))),),,)%%%,3306:=A=DDDDGGGDGGGDADA:3666DAX\__c_\XDKAA60,))"\1f"%),303==AKRU\cfmmpptttttttzz~wtptwwzz~z\85\85\88\8f\8f\92\92\92\92\92\92\92\92\99\9c\9c £ ££ £ ££§§§ª§ª±±§ªª§§§£ \9c\9c\96\96\96\96\96\99\9c§§ªª±±´´¸¸¸»¸»¾»¾¾¾»¾¾¾¾¾¾»¾¸¸´¸±ªª§ª§£££££ §ª±¸»ÂÉÅÅÉÅÅŸ´§§§ \99\92\92\8b\88\85\88\85\81\81\81~\81~~~zz~zzztttppiimmpmmmiiiimiiiimimpmp~z~\81\81\88\81\88\85\81\88\88\8b\8b\8f\8f\8f\88\96´¾¾Â¾Åž¾¾Â¾¾»¾¾¾¾¸»»¾Â¾¾»¾¾»¾´´´´±§ \99\99\92\92\92\92\99ª §´¸´¸´´´±´´´¸ÂÅÅÅÅž´££\9c \9c\9c\9c\99\9c \9c \9c ££ §§ªª±¸¸¸¸´´¸´´ªªªª§§ ££ \9c £ £§ª§§££\9c §££§§ ££§£ \9c\96\96\88\8b\85\8b\8f\8f\8f\8f\8b\8b\8b\88\85\85\88\85\85\85\88\88\8f\92\96\99\96\92\92\96\96\99\99\99\8f\8b\8f\8f\88\8b\88\8b\88\85z~wwwzwwwzwwpttwpwttpmii____X\__\___c\XUNNKAG=:3%%%)%"%\1f\1f\1f\1f\18\18\18\18""""""""%),)303:6:=AAAA==A===A:663330::==0:,\0\183\aUc_fiNff\\mcfiimmcifiifficccffcfcccf__ffc\\\URURXUKKURXXUXNRNKGAADGKKNRUXX\ciffppmimimmmpiiiffffffcccccc_ciiiiffffccc__\XXXXXUUURNNKKAA===:::::66633300000,,,,,))))))%%%%\1f\e\e\1f"%),),0,00,)%)")%%,,0,,))%%)000336=AAAADDDDDADDAA=A=6333000:UU\_\XUAG==60,,)%\1f\1f%),636AAGNU\cfippttwwtwtww~~\81wpttwwzz~~\81\85\88\8b\8f\8f\92\8f\8f\8f\8f\8f\8f\99\9c\9c\9c\9c\9c ££§ \9c £££ £§ªª§ª§ª§§§§ £\99\99\96\96\96\92\96\9c\9c£ª´´´¸¸¸»¾»»¾¾Â¾¾»¾¾¾»»»¾¸»¸´´ªªª§§££§££\9c££§´»¾¾ÅÅÅÅÅÅÅŸ±§§§\9c\9c\9c\92\8b\8b\88\88\88\81\85\81~~~~~\81\81~~~\81~wwptpmpmmmpppppmimmmmmmmppptpt\81~\81\85\85\8b\85\8b\85\85\88\88\88\8f\8f\92\92\8f\92¸»»¾¾¾Â»¾Â¾¾¾¾¾¾¾»»¾ÂÂÂÅž¸»´¸´´§£ \9c\99\92\92\96\96\96 \9c£±´±´´´±±´´´¾ÂÅÅÅɱª \99\9c\99\99\99\99\9c\9c \9c ££££££§ªª±´¸´´¸¸»¸±±ªªªª£ \9c\9c\99\9c£ ££ §§ª§§££ £§£§§£ §§£ \9c\99\92\92\88\88\88\88\8b\8b\8f\8b\8b\8b\88\81\85~\88\81\88\85\85\85\8b\92\96\99\96\96\92\96\96\96\96\96\8b\88\88\8f\85\81\81\88\81\81zzwwtwttwztttpttpwtppmii___\U\_\X\\\_UNRNKGAD:63)%%%"%%"\1f\1f\1f\e\e\e\e"\1f"%%""%)%,,00366===DA=====AAA=::66:6==AA3=0)\e:\0Xf_imRff_cmcffimmcffiifffcffffccfcfc_cifc__\XRXN\XNKURUUUUNRNGGADDDGKNNUUX\cfffmmiimiimmpfffffffffcccccc_ciiiifffffcc___\X\\\XXXURRNNKKGGD===::66666333300000,,,,))))%%%%\1f\1f\e\1f""%)),,)03,,)%%%))0,,,,,))),,00036=A=ADADA=A=:3=6::630000000:6DUXUK=D:030,,)%""%)0A==GGRUX_fimpttwwzwzwzz\81\81\85wtwwwwz~\81~\81\85\88\8f\8b\8b\92\8f\8b\8f\8b\92\8f\96\99\9c\9c\99\9c ££££ \9c £ £ £§ªªªªªªª§§££§§ \99\9c\96\96\96\96\99\9c\9c£§ª±±±±¸¸¸¸¾¾»¾Â¾¾¾¾»»¾»»¾»»¸´´±ªª§§§£££§ §£ª±´»Â¾ÅÅÅž´±ª££\99\99\99\88\8b\88\88\85\85\81\81\81~z~~~\81\81\81z~~zwttpmmpmmipppttpmmmmmmpptttwwz\85\85\85\88\88\8b\88\88\85\88\85\8b\8b\8b\8f\99\96\96\96¸»»»»¾¾¾¸Â¾¾¾»¾¾¾¾¾»ÅÂÅÅÂÅž»¸´¸±´§§ \9c\99\92\92\96\92\99\9c\9c ª±±±±±±±±»ÂÅÅÅÉŧ \9c\9c\99\96\96\96\99\9c\9c\9c\9c £§ ££§§ª±´¸¸¸¸´»´ªªªªª§ \9c\99\9c\99 \9c££ £§ªª§£ §£§§£§£§§ \9c\99\96\92\8f\85\85\88\85\88\88\8b\8b\8f\88\85\81\85\81\85~\85\88\88\88\8b\8f\96\96\96\96\8f\92\92\92\92\92~\85\81\8b\81\81\81~~~wzwwttttwwtppmtppwtpmmif__\\X_\XU\X\\UNNNGG=A:33,)"%"%)\1f""\1f\e\1f\1f\e"""%)%)%)%,,0,33:=:ADAAAA===AAA==::=:AADD3A3,\1f=)\ccmm_fi_fmffiipmfcfmifffffffcfcfccc\cicfc__XXXNX\RNXURXUUKRKDGDAAGGGKNRUU\_fcciiiiifiiimffffcffffccccc__ciiiifffffcccc__\__\\\\XUURRNNKKGDAAA=:::::6633300000,,,,,))%%%%\e\1f\e\1f""%)%,0,300,,))%),00030,,,),,,036:AA=AA=A=:::63:3000,,),,,,)06=DGKG==600,),))%%%36DADKNUX_cimptwwzzzz~z~~\85\85\88tttwww~z\81\81\85\85\85\8b\88\88\8f\8b\88\8b\88\8f\8b\92\96\99\99\9c \9c ££££££ £££§ªªªªª§§§££§£ \9c\9c\99\99\96\92\99\99\9c§§±±±´¸´¸¸¾¾¸¾¾¾Â¾¾»»¾»»»»»»´´ªª§§§§§££§£§§ª´´¸Â¾ÅÅÅÅž¾»´ª£ \8b\8f\88\88\88\85\85\85\85\81\81~~~~z~\81~~zzzwtttppimmimppttttpmpmmptwzwzzz\85\85\88\88\8b\8b\8b\8b\8b\85\88\88\88\8b\8f\8b\9c±±\96¸¸¸»»¾¾¾»Âž¾¾¾»ÂÂÅÅÅÉÅÅÅ»¾¸´´´±±±§§ \9c\99\96\92\96\92\99\99 \9c§£§£ª±±±¸¾ÅÅÅÉŪ \9c\9c\99\99\96\92\99\99\99\99\9c\9c\9c££\9c§£§ªª±´¸¸¸»¸¸¸´ªªªª§§ \9c\9c \99£\9c££ £§ªª§££\9c\9c££§£ £§§£\9c\99\92\92\8f\8b\85\81\88\88\85\85\88\88\8b\8b\85\81\85\81\85~\81\88\8b\8b\8f\92\92\96\96\92\8f\8f\8f\8b\8f\8b~z\81\8b\81~~~~zwwwwpwwpttttpmtmpwtpiiicc\X\X\XRUXRXRRNGKDD:A6,0))%%\1f"%"""\1f\e\1f\1f\1f%%%%)),%,)),0,00:::ADAAA=A=A=A=====A==DDG6A30"A,\ccmpcim_iiifmitpifimififffffccfccc_Xci_fcc\\\XXX\UR\XU\RUKRGGGDAAGGGGNNRU\_cccffififfiimcccccccffccccc__ciiiifffffffcc__\__\\\\XXUUURRNNKGGDDD=====::6663333300,,,,,)))%\1f\e\1f\e\1f\1f"%)),033,,0),,,3333630,,)),006::=A:==:A:::63060,,,)))%)),)033=DAA::33,)),,)%)3:AGGGNRX\cfmmtwzzz~z~\81~\81\81\85\88\88wtwtwwzz~\81\81\81\81\88\85\85\8b\88\85\88\85\8b\88\8f\8f\99\99\99 £ ££§§£££££ §§ª±ªªª§§§£££§§ \9c\99\99\99\99\96\9c\9c §ª±±±±´´´¸»»»¾¾¾Â¾¾¾»¾¾»»¾»¸±´§ª§§§££ £§§§ª±¸¸¾ÂÂÂÅž¾»´±ªª \92\88\88\85\88\85\85\85\81\81\81~~~zzzz~zzzwztpppmmmpmmmpttwwwtptppttz~z~~\81\88\88\8b\8b\8f\8b\8f\8b\8b\88\88\88\8b\8f\92\8b ±´¸´»»¸»¾»¾Â¾Â¾ž¾¾¾¾ÂÂÂÅÉÉÅÅ»»¸´´´±±§£ \9c\92\92\92\92\96\8f\9c\99 \9c£ª§ª§±±±´¾ÂÂÉÌɧ \99\99\96\99\96\96\99\99\96\99\99\9c\9c £ ££§ªª±±±´¸¸¸´¸¸±±§§§§§ª£\9c \9c \9c\9c£ §££§§§ª§££\9c\9c£££§ £££ \99\92\92\96\8b\88\88~\85\85\81\85\85\88\88\88\81\81\81~\81~\85\88\88\8b\8f\8f\96\92\92\8f\8f\8f\8b\85\81\88\81z\81\8f\81zzzzwwtwtmttppttppppmptpmfif__\UXX\URRUNNNRKDGAA6=6)0)%%""%""%%"\1f\1f""))))),0),),,,,0,6::ADAAAAAAA=A===:=A=ADDK6D63,A3_fcitcimfimifpfwtfimmiiiffffcfficff\\ffcfcfX\_U\X\UU\XX\UUNNKGDAAAGDDGKNRRX\cccfcffffffimcccccccccccccc__ciiiiffffffffc_____\\\\XXXXUUURRNKKGGGAAA==:::::6666630000,,))))\1f\e"\e\1f""%%%,,300,,,0366666:630,),03366=:A:=:6==:66603,)%))%%)))),,33:===6630)))0,))0:=DKKKRU\_fippwz~zz~~\81\81\81\81\85\88\88\8bttttwwwwz~~~~z\81\81\81\85\85\81\81\85~\8b\8f\96\96\99 £ §££§££££§ ££ª±ªª§ª§££££££ \9c\9c\9c\9c\99\99\99\9c £§ª±±±±±´¸´¸»»»¾Â¾Â¾¾¾¾Â¾¾»¾¸´±´ªªª§§§§£ ££§£ª´´´»¾Âž¾»¸±ª§\9c\8b\85\88\81\85\81\81\81\81\81\81~~zzzzwzzzwzwtpmmmmipmppptwwtwttwtt~t~\81~\85\81\88\8b\8b\8b\8b\8f\8f\8f\8b\8f\8b\8b\8f\8f\92\92\96±´´¸¸¸»»¸¾¾¾¾Â¾¾Â¾Â¾»¾ÂÂÂÅÉÉÅ»¸´´±¸±ª§ £\9c\99\8f\92\92\8f\92\8b\8f\8f\96\9c\9c£§£ª§ª±±´»¾¾ÉÌɪ£\99\9c\96\99\96\96\99\96\99\96\99\99\99 ££§£ªªª±±´¸¸¸¸¸´±ª£££££ª§£\9c£ §£§§§§§§ª££ §§£££ \9c\99\8f\8f\92\88\85\85~\81\81~\85\81\85\85\85~\81\85\81~~\85\8b\8b\8f\92\8f\92\8f\8f\88\8b\8b~\81\81~~z\81\8f~twwwwtttpptpppppmppmpppmiffc_\XUXUXRUNRKDKNGGA=A3=3",))%""%%\1f"%"""%",,),,,0,,),,,,003::DDADAAA=A=====:====ADK=G6:=DR_fcitfitimpmfpizpipppmimffiffciffic_\fcfccc\_\XXXXRR\XX\XUNKKDD=ADGDDGGKNRU\___cfffccfffi___cc__cc___c___cfffiffffffffccc___\\\\XXXXUUUURRNNKKKDDDDA===::::666333330,,,,)"\1f\1f\1f\1f"""%)))03000336::::6::330,0366:::6=::63::66:600))"%)""%,,,))003:::636,%),0,,,3AAGNNNUX_cipttz~~~~\81~\81\81\81\81\85\88\8b\8btpppttttptwptw~~~\81\81zz\81~\81\8b\92\92\96\9c £ £££§§£§ ££ £ª±±ª£§ª§£ £ £ \9c\9c \9c\9c\9c \9c£ª±´±´´´´´´»»»¾¾¾Â¾¾¾¾¾¾Â»¾¸±´±ªª§§££ ££§§ª±±±»»¾Å¾¾»¾¸´±§§£\99\85\81\85\81\81~~~~~~zz~zzztwwwtwtppimppmpmpptptwwwttzwt\81~\81\85\81\8f\8b\8b\92\96\92\8f\92\92\8b\8b\8f\92\8f\92\92\99\8f\99±´´´¸´¸¸»»»»»¾Â¾¾Â¾¾¾ÂÅÅÅÉž¾¸¸±±´ª£ \99\96\8f\8f\8f\8b\8b\88\88\8b\92\92\99 £ª§ª±´¸»»ÅÌÉŧ \9c\99\99\99\99\96\96\96\99\96\99\9c £ ££ª§ªª±±±¸¸´»¸¸´ª§ \9c §£ \9c£ \9c £§§§§§§§ª§£££\9c£§££ \9c\9c\9c\99\99\8f\92\8f\88\81\81z~\81z\85~\81\81\81z~\81\81~\81\81\8b\88\8f\8f\8f\92\92\8f\88\81\88~z~~zz\\8b\81twtttpptmmpmmmmmmpmmpmmmiifccXUUURNNRNKGDGKDD===0:0%))%%\1f"""\1f")""%%%,,,00030,,0,,)0066:AGADAAA=A==:==::::==DNKG:=GGUcppwtcwwmmppitiztmtppmimfffcfcfccicc\c_ff__\\\\X\UNRXXXXXRRKGGDAAADDGGGKKNUX___cccc_ccccf\\\_____________cfffffffffffffccc__\\\\XXXXUUUURRRRNNNGGGGDAA===::::66666630000,%""\e\1f%"")),,0633666:==:=666300336:::::6=6:603666:30,)%%)%%"%,,,%,0336666,3,%%,,,,0:GGGNNRX\cipt~z\81\81\81\81~\81\81\81\81\81\85\85\88\8b\8fpppppppmppppptmpzz~zz~z~\88\92\8f\92\99\9c\9c £££§£§§§£££££ª±±±ªª§£§££££££\9c \9c \9c \9c £ª±´´´±´±±±´´¸¸¸¾»»¾Â¾¾¾¾Â¾¾¾¾¸´´ª§§ª§ £§£§¸¸¾Â¾»»»´±§£\88\85\81~\81~~z\81~zzzwzzwzzppttptmmmiippppmtppttttzwz~zz\85\81\85\92\92\96\8f\92\96\99\96\8f\92\92\8f\8f\92\96\96\99§±´´¸´¸´¸´¸¸»¾¸»Â¾¾Âž޾»´´±±ªª \9c\99\92\8f\8f\8b\88\88\85\88\88\8f\8f\96 ££§ªª´¸¸¸ÂÌÌŧ£\9c\9c\99\96\99\96\99\96\99\92\99\99\9c£ £§§ª±¸¸¸¸¸´´ª§£\9c\9c\9c\99\9c \9c\99£ \9c\9c\9c §§ª§§ªªª§ ££\9c££§ \9c\9c\9c\9c\99\99\8f\92\8b\85\85~ww~w\85~z~~z~~\81~\85\81\88\8b\8f\8f\8b\8f\92\8f\85\81\81~zzzzzX\8b\81twttpmmpiimmmiiimmmmmifmiicccXRURNNGNKGDAAGAA6=:36))))"%\1f""\1f""%""%%%,,,00333,,,,,,,063=AGDADAA=A==:=::6::::GURN=DKKXmttzw~zzppptiwiwwpwtppiifficffcc_ifc\__cc__X_XX\XRRUU\UXURRKDGDAA=ADGDGGGKRX_\\_________cXX\_\_\______\\\cffffcfcfffffcccc__\\\\XXXXUUUURRRRNNNKKKKGDDAAA==:::66666633330)"%"""%),)000:66::=====:=::60366:====6::3630336363,0))%)%%%),,,,0036633600,)),,,,DGKKKRRU\_fmtw\81\81\85\85\85\85\81\85\85\85\85\85\85\88\88\8b\8fmmmppmmmmfmmmimpwtwzzzz\81\85\8f\8b\92\96\99\99\9c£££§§£§§§§§££ª±±ªª§ª§§§£§£ £§´¸´´´´´±±´´¸´¸»»»¾Â¾¾¾¾Â¾¾»¾»´±ªªªª§§§£ \9c ££ £ªªª´¸¾¾¾»¸¸´±ª£\96~\81~z~~~~~z~zzzzzwwwppmmmmiimiimmpmmpptttwz~z~\81~~\85\88\8f\96\99\9c\9c\9c\99\9c\99\92\96\96\96\92\96\99£´±±´±±´¸¸¸´¸¸¸»»»»¾Â¾¾¾ÂÂÂÂÂÂÅž»»»¸±±§ª\9c\9c\8f\96\8f\8b\8f\88\88\88\85\88\88\8b\8b\96 £ªªª±±¸¸¸¸»ÉÉÅ\8f§ \9c\96\99\96\96\99\96\96\99\96\9c£\9c ££§ªª±ª¸\8b¸´´±±ª£\9c\9c\9c\9c\99\99\9c\99\9c\96 \9c §§§§ªªª§£§§ ££§ \9c \9c\9c\99\96\92\92\8b\85\81zww~t\85~z~zwz\81~~\85\81\85\88\8b\92\88\8b\8f\8f\81~\81z~wzwzU\88~twttmfimfffmiffiiiimiffmfffccXRRNKNGKGGD=AGA=::633),%)%""""\e"\1f"""%"%)00033363,),),,,63:AGDDDAAAAA=:=::6:6::D\85URAGNNipptzwzzztmttizzwztwwppmifffffffc_ffc_\___\\U\UUXUUUXUXXURRNNGDD===AADDGGGGNU\\\\\\_\_\\\_XXX\X\\\\\___\\\_ffffcccccfffcccc__\\\\XXXXUUUURRRRNNNNKKKGGGDDAA====:::66633333,%)%")),,,0336::=:AA=A==AA=666:6==:::36:333333333300,))))%),00000333633300,,,,0,6GKNNRUUX_cmpwz\85\85\88\88\88\88\85\85\85\85\85\85\85\88\88\8b\8fpmmmmiiiifiifiimttwwwtz~\85\8b\8b\8f\96\99\96 ££§§§§§ª§ª§§ª±±£§§§£§§§££ £ £ ££§±¸´´´´±´´±±´±¸»»»»¾»Â¾Â¾»¾¸±±ª§§£££ \9c \9c §£ª´¾¾»¸´´±§\85\88~~zz\81~~~~z~z~zzzwwttpmmimmimffimmpmpmpwww~~z\81~\85\85\88\8b\92\9c\9c££ \9c\9c\99\96\99\99\99\96\99´´¸´´´´´±´»»´¸¸»¸»»¾»¾Â¾¾¾¾¾ÂÂÅž»¸»»´ª§§\99\99\8f\92\8f\8b\8b\8b\88\85\85\88\88\88\8b\92\9c\9c §§±±¸¸¸´¾ÉÉÅ\8bª£ \99\99\96\99\99\96\96\99\96\99£ £ £§ª§¸\8b´´´±§ \9c\9c\99\99\96\99\96\8f\99\92\9c\9c\9c\9c \9c§§ªª§ªª§§£ §§§\9c \9c\99\9c\96\96\96\92\8b\85~wztzp\81zzzzww\81z~\81\81\88\8b\8b\8f\88\8b\8b\8b\85z~w~zzz\X\85zttppicfic_fifcfmfiimfffmffc_c\NRKKKGGDDA:AD=:66603))%)"""%\1f\1f\1f""%"%%),00333666,),,,0036:DGGGGDDAAAA=:::::::6A\85XUDKNRmttwzzzzwwmtwmz~zwwwtpmmififiiff__cfccX_\\\XRXRRURURUXXXRNNNNKDD==AAAAADDGGNR\\\\\\\\\\\\_UUUXX\X\\X\\_\\\_ffffcccccccfcccc__\\\\XXXXUUUURRRRNNNNKKKGGGGDDAAA===::::6633330)))%,,000336::::=DA=A=ADDA=::::===6:336333633333600,),,),,)03333336336633,0,03GGKNNRUXX\_fpwz\81\85\88\88\88\8b\88\88\85\88\85\85\88\85\88\8b\8b\8fpmiiiffffcfifffipttttww~\81\88\8b\8b\92\96\99\9c £££§§§ªªªª§ª±±±ª§§§§§ª§ª§§£££££££§ª´´´±¸´´´´´´¸´´»»¾¾¾»¾Â¾Â¾¾»»´´§ªª§££ \9c\9c\9c \9c\9c\9c\9c\9c\99 £ »¾»»´ª£\88\85~zwz~~~z~~~zzz~zwttppmiiiififiiiipimpttzz\81\81~\85\81\88\88\8b\96\96£ §§£££\9c\99\99\99 ´´¸¸»´¸¸¸´´¸»»¸»¸¸¸»»»»Â»¾»Â¾¾¾Â¾ÂÂÅž»¸»¸±ªªªª££\9c\96\8f\8f\8f\88\8b\8b\85\85\85\88\88\8b\8b\8f\99\99 §£±´¸¸´¸¾ÉÉÂ\8f§£ \9c\96\96\96\99\99\96\96\99\99\96 \9c £££§§ª\9c\9c¸¸±´´±ª£\9c\9c\9c\96\99\99\99\92\8f\96\92\9c\9c\9c\99 £ªª§ª±ª§£££ª§ª \9c\99\9c\96\99\92\92\88\85ztwtzp\81zzwwww\81w\81\81\81\8b\8f\8b\8f\85\88\88\88\81~zzz~zwNX\81wtpfmf__fX\cfc_ciffiiifiicfc\_XRNNKGDADD===A=:663,0%%"%%"\1f"\1f\1f\1f\1f"%"))%000336:6:6),,,3036:DGGKGDGAADA=:===:=::D\85t~KNRUptpwww~ztwmptpwzwwtwfmpifimifffcc_cc__X\N\XRNUNRXURURXXXNKNKKGGAA=A==DDDDGGKN\XXXXX\XXXXX\UUUUUXXXXUXX\X\\_cccfcccccccc_ccc__\\\\XXXXUUUURRRRNNNNKKKGGGGDDDAAA===:::::66633,,,)00300366::===ADADAADGDA==:::==:6336033633630300,),0,0003663366:633666033=GKKNNRUX\X_cfw~\81\85\88\88\8b\8b\8b\88\88\85\85\88\88\88\85\88\8b\8f\92miffifcccccfffcmmptptww~\81\81\8b\8b\8f\92\99\99\9c ££§§ªªªªªª±±±±ª§£§§ª§ªªª§§§§§££§£ªª±±±´¸´¸¸¸´´´´´»»»¾¾»»Â¾¾»¸¸´ª§§ª£££ \9c \9c\9c\9c\9c\9c\9c\99\99\99 ¸¾¸¸±ªª§\8b\85\85~~zzz~~~~~~~~z~zzttpppiiififfffiipmmtwwz~\85\85\81\88\85\8b\8f\8f\9c\99§ªªª§§§ £\99´¸¸¸»¾¸»¸¸¸¸¸»»»»»¸¸»¸»¸¾¾¸»¾Â»»»¾»¾ÅÂÅ»»¸¸±ªªª \9c\99\99\92\8f\8f\88\88\8b\85\85\85\88\88\8f\8f\8f\96\99 §§ª±±¸¸´»ÂÅÅ\9c\92§ \99\92\92\92\99\99\99\96\99\96\99 \99 £ £§\99\9c\99\99¸\8f´´´±§£ \9c\9c\99\99\99\99\96\92\96\92\99\9c \9c ££ªª§±§§§§£§§§£ \9c\9c\9c\99\99\92\92\85\85~wwwzp\81zztwtw~t~\81\85\88\8b\8f\8b\81\85\81\85~zzwz~ztAc~tpfccc\XcUU_fc\_fffffiiifccc\\URRNNGAAAA:==A:6630\0,""""%""""\1f\1f""%"%))00066:::=:3,000,6:=DGGKGGGAAA=A===A====A\85t~N\UXtpmtttzwtwpppmmzzzttfipmfmpffffcc___\_XXRXUNRUNNUUNUNUUUKDNKGDGAD=D==AAADGGNKXXXXXXXXXXXX\RRRUUUUXXUUUXXXX_cccccccccccc___c__\\\\XXXXUUUURRRRNNNNKKKGGGGDDDDAAA===:::::6663000,03333666==:=ADDAAAADGGDA:::6A:660663606333633,,,),0033336:63:6=66636:36:GNNNRRUXXXX\cmz\81\85\88\88\88\8b\8b\8b\88\88\85\85\85\88\88\85\88\8f\8f\92mifffc__ccccfcfiimpppttz~\81\88\88\8b\8f\96\96\99 ££§ª§ª±±±ª§§ª§§§ª§ª§ªªªª§§§§ªª±´±¸¸¸´¸´´´»¸»¾»»¾Â¾Â»¾¸¸´±§§§§£ \9c\9c\9c\9c\9c \9c\99\9c\96\99\99\9c \9c´»´ª§§§\96\88\85\81z\81z~~\81~~\81~~\81\81~~~zttpptmmiifiifiiipmpttzz\81\88\85\85\8b\88\92\92\92 \99ªªªª£ª´´¸¸»¸¾»»»»´¸¸¸¸»¸¸»¸»¸»»»¾»»»¾¾»¾»»¸¾ÂÂÂÂÅ»¸´¸±±ªªª§ \99\99\9c\96\8f\8f\8b\88\88\85\85\85\88\8b\8f\8b\8f\92\96 £§ª»¸¸»ÅÅÅ\9c\96£ \9c\96\92\92\96\96\96\99\96\96\99\9c \96 £ §§\99\99\96\99´\8f±´±±ª§£ \9c\99\9c\99\96\96\96\96\96\9c\99 \9c ££ªª±§§§§§§§§§£\9c\9c\9c\9c\96\96\92\88\88~zwwzp\81zztwwz~wt\81\81\88\88\8f\88~\81~\81\81zwtzzwtDfzpmi\X_XU_RU_cc\\cffcfiffi__cX\RNNNKKADA=:::=6630,\0)")%\1f%"%"""""%%%),)30366:::==6:6006:=ADGGKGGGDAAAA=AAAAAAADGpzRcX\ttipippwtwtpmmiwzzwwfftmimmifcf____\_\URNXRRRRKNRUKRNRUUDGKGGDKAA=D==AAAAGDKNXUUUUUXUUUUUXNNNRRUUUUUUUXUXX\ccccc_cccccc______\\\\XXXXUUUURRRRNNNNKKKGGGGDDDDAAA====::::66660330366336:6===ADDDDDAADGGD==6::=:633363336363330,,,,0333666:=6:A:A:::6::=:=KRRRRUXXXUUX_t~\85\88\88\8b\8b\8b\88\88\88\88\85\85\88\88\88\85\88\8f\8f\8fmfcfcc\\_ccfffcimptptttwz~\88\85\88\8b\92\92\96\9c £§§§ª±±±±§§£§£§§§§ªªªª§ª§§§§ª±´±¸¸»¸´´´¸¸¸¸¾»»»Â»¾¸»´´±§ª£££ \9c\9c\9c\9c\9c\9c \9c\99\92\99\99 \9c ¸±§£ \9c\8f\88\85\85\81\81z\81\81\81\81~\81\81\81\81\85~~~~tppppmifiiiifimimpttw~~\88\8b\85\85\8b\8b\96\96\96£§±ª±±±¸¸»»»¸»»»»¾¸¸¸¸¸»»»¸¸¸¸»¸»»¾»¸»»»»»»¸»¾¾ÂÅž´´¸ªª§ \99\96\99\96\8f\8b\8f\8b\88\85\85\88\88\8b\8f\8b\8f\96\92 ££ªª»»¸¾ÅÅÅ\9c\96 \9c\9c\96\96\92\99\96\99\99\99\96\96\9c \99 £§£\99\96§´\8f±±ª£ \9c\9c\99\96\96\96\92\96\92\9c\9c£\9c £ªªªª§§§§§ªª££ \9c\99\96\92\8f\8b\85zzztzt\81zwwwwwzwp\81~\88\85\8b\85~z\81w~wtpwwtpwztmff\RRRU\RU\cc\U_cc\cffcf\\cX\RNNKKKDA==66::333,)\ 3)),%"""\0""%%"%%%),)33366:======:::::ADDGGKGGGADAD=AAAAAAA=DKpwUz\_ppfmfpptwtpppmmtz~wzicwmmmifcfc____\\XURKUNRNNGKGRKRKNRRDKKDGAKAAADA==D=DDDKKUUUUUUUUUUUUXKKKNRRRUUUUUUUUU\cccc___c___c______\\\\XXXXUUUURRRRNNNNKKKGGGGDDDDAAAA====:::666:03336::363::==ADGGGDGDADDGD::6::=666666333333600,,,000333::==A=ADAD===::=A=ARUUUUX\XXUUX\~\81\85\88\88\8b\88\8b\88\88\88\85\85\81\85\88\88\88\8b\8b\8f\92ifcc\cX\__cfffcmpptpttpwz~\85\85\8b\8b\92\8f\96\99\9c £§ªª±±±ªª±§§§§£§§§ªªªªªªªªªªªªªª±±´¸¸»»¸´¸»¸¸¸»»¸»¾»»¸¸±±ª§§£ £\9c \99 \9c\99\9c\9c\9c\99\99\96\96\99\9c\9c ´ª£\9c\9c\96\8f\88\88\85\85\81\81\85\85\85\85\81\85\85\85\85\85\81\81~~wtpppmmiimimimmmpmwww\81\88\8b\8f\88\88\8f\8f\99\92\99§ªª±±´±¸´»»»»»»¾»»¾»»¸´¸»»¸»¸¸´¸¸´¸¸»¸¸»¸¸¸»¸¸¸»¾ÂÅž»¸¸ªªªª§£ \99\99\96\92\8f\8f\8f\8b\8b\88\85\8b\88\8b\8f\8b\8b\96\96 £§§§ª¸»»ÂÂÅÉ \96\99\99\9c\99\92\96\96\92\99\96\9c\99\99\9c \9c\9c £§§ª\96±±±±ªª£ \9c\9c\99\99\99\96\8f\92\96\9c\9c£ \9c £ªªªªªªª§§§ª§ªª£§££ \99\99\8f\8b\8b\81~z~twt\81zzzzzzztt\81\81\85\81\88\81\81~~tztpitwpmtwiiccXRRNRXURXc__X\_c__cc_cX\_U\UKRNKKDDA=3666030)%"),0""%"\a"%%%"))%),,33336:====AAA=A=:ADGGKKGDGADAD=AAAADDA=D~pwwz\wmfciimttwpmpmmpwwzwwifwmpmffcccc___\\XRNGRRNKKGGGUKNNRNUGKGDD=G===DA==AADAAGGUUUUUUURRRRRUKKKKNRNRRRUUUUUUXccc_______________\\\\XXXXUUUURRRRNNNNKKKGGGGDDDDAAAA====:::666:36036:6666:=A==DKKGGDADDADA::666:6363333030003300,,,03336:6AGDGGGGKA====ADKDUXXXXX\XXXUX\\81\85\88\88\88\8b\88\88\85\88\85\85\81\81\81\85\85\85\88\8b\8f\92ffcc\_X\_\_ffifptpttptpwwz\81\85\88\8b\8f\8f\92\96\99 §§§±§§ªªª§ª§£§§ªªªªªªª§ªªªªªªª±´´¸¸»¸¸¸¸¸¸¸»»¸¸»¸»¸´±´ªª£££ £ \99\9c\99\99\99\99\99\96\96\99\99\99\9c ±£ \9c\9c\96\92\8b\8b\88\88\85\85\88\88\88\85\88\88\88\88\88\85\85\81~zwtpppmmimmmmmppmtpwzz\85\8b\8f\8f\8f\8f\92\92\96\96\99£§±´´±¸´»¸»»¸»¾»»»»»»¸¸¸¸»¸¸¸´¸¸¸´±¸´¸¸¸»¸¸»»¸»»¸¾ÂÅž»¸±§§ª££ \9c\99\96\92\92\8f\8b\8b\8f\8b\88\8b\88\8b\8f\8b\8f\99\99 £§§ª´¾»¾ÂÅÌ \99\99\96\99\96\8f\96\96\92\99\96\99\99\9c\99 £ª§±±´±ª§§ \9c\9c\9c\96\99\96\96\92\8f\99\9c\99 \99££ªªªªªª§§§§§ªª£§§£\9c\99\99\8f\8b\88\81\81~zzzw\81~~~zzz~ww~~\81~\85~\85~~iwmmmpwpmpmfc_UURNNRUUN\c_c\\\c\\___cXX\U\RNRNKGDAD=6333330,%%)03%\1f)"\11\1f"\0%\0))\ 3),,33666:===ADDDADADDGGGKKKGGADADADADDDGAAD~mttzwtmfcmiipptpmtppttwwttmitimiffccc____\\UNKKNRRNNKGGRGRKNRRRNDADAD=A=DA====D:=DGURRRRRRNNNNNRGGGKKNNNRRRXUUUUX__c__c______\\\___\\\\XXXUUUURRRRRNNNNKKKGGGGDDDDAAAA====::::66=66333::36:::===AGKKKADAD=AA=636363030000,0,,000,,,,,0366:=GKKKKKNNRGGGAADGNUXXX\XX_\_\X\c\81\85\88\88\85\88\88\88\85\85\81\81~~~\85\81\85\88\88\8f\92cc_c\\\X\_cffiitwtwttttww~\85\88\88\8b\8b\8f\8f\8f\96\9c\9c£££ªªª§§ªª§ª§§§£ §§ªªªªªªªªªªªªªªªªªª±±´¸¸¸´»¸´¸¸¸¸¸´´»´¸´´±´ª§§££ \9c\9c\9c\99\9c\99\9c\99\99\99\99\99\99\9c\9c£ª±£ \9c\9c\96\96\8b\8f\8b\8b\88\88\8b\88\8b\88\8b\8b\8b\8b\88\85\85\81~zttpppmmmpmpmppptwww~z\8b\8f\8f\8f\92\92\92\96\96\96\99£ª±´¸»´»¸¾»»»¸»»»»»»¸¾»»¸´»¸¸»¸¸¸´¸±¸±´´¸¸´¸»¸¸¸¸¸¾ÂÂÂÅž¸±ªªª£§ \99\96\8f\92\8f\8f\8f\8f\8f\8b\88\8b\8f\8f\8f\92\99\99£ £§§ª¸´¾»ÂÂɪ\9c\99\96\96\96\96\8f\92\96\92\96\96\96\96\99\9c\9c\9c£ \9c§ª§±´´´±ªª§\9c\99\99\99\96\99\92\96\96\92\99\99\9c\9c \99 £§ª§ªªªª§§§§ª§§££\9c\99\99\8f\8b\85\85\85\81~~~w\81~~~zzzzww\81zz~\81\81\85~zmpimmittmc__\XXUNKNNRUR\fcc_\Rc\U\\__XXXU\RNNNKDDDD=33303030)),36)",%\ 3"\1f\ 3%\ 3)%\0%,)3366::==AADGGDGDGGKKKKKGDGADADDDDDGGGDAGziptwtppf_mffppttmttptpwwtmmipiifiicccc___\\RNNKKNNNNKDGNDUGNRUURGAGDG===AAAAA:A===DRNNNNNNKNKKKRGGGGKKNNNNRURRUUX____\___\\\_\\\\__\\\XXXXUUUURRRRNNNNNKKKGGGGDDDDAAAA====::::66=3330666036:6:::=DGKG=A=AA===633330,0,\1f,,",,),,,)0,0,036:=DKNNNRURRUNNNGDDRUXX\\__cccff\\m\81\88\88\88\88\88\88\85\85\81\81\81\81~~\81\81\85\88\8b\8f\8f__\_XX\X\\cfimmwztwwwtwww\81\88\8b\88\8b\8b\8b\8f\8f\92\99\99 \9c§§ ª§§ªªª§§£££££ªª§ªªªªªª§ªª§§ªª±±¸¸¸¸¾¸¸¸´´¸´±±¸´´±±±ªª§ª§ ££\9c\9c\9c\99\99\99\99\99\9c\9c\99\99\9c \9c£ª§£\9c\99\92\92\8f\8b\8b\8b\88\88\8b\88\8f\8b\8f\8f\8f\8b\8b\88\85~~wttpppppipptpptpwwz~\81\81\8f\92\92\92\96\96\92\99\96\99\9c§´¸»¾¸»»¾¸»»´¸¸¸¸¸¸»¾¸»»¸¸»¸»»´¸¸¸´¸´¸±¸¸´¸»»¸¸¸»»¾ÂÅž»¸±ªªª§£ \9c\99\92\92\8f\8f\8f\8f\8f\8b\8b\8b\8f\8f\92\96\96\9c££§ª§»±¾ÂÂÅ£§\9c\99\96\96\96\96\92\92\96\92\96\92\99\99\9c\9c\9c\99£ §ªª±´´±ªª§§£\99\96\99\99\96\99\96\96\92\92\99\96\9c \9c £§ªª§ª§§ªª§ªª£ £\9c\99\96\8f\8b\85\88\81\81~\81~~\85\81~\81~~w~zw\85w~~\81\85\85\81zpmfmiippic_\\XXURKKNNUU_cfccXRcXR\X\\XXXU\RNNNGGGDAA36633333,,066)%0)%%"\a),\ 3)\0%),3366:=A=ADDGKGKGKKKNNKKGADAAADADDGGKGGDKwimttmtti\iifppptppptpmwwtmifmiififccc____XXNKRKNKKKNGDDKDRGNNRURKKGGKA=A=A====A:::ANKKKKKKGKGGGNDDDGKKKKNNNRRRRRX____\\\_\\\\\\\\__\\\XXXXUUURRRRNNNNKKKKGGGGGDDDDAAAD=A==:=::66A3363666,33:666:==DGDAD==A:=:30000,),)\e)%\1f%)%,))),,0)036==GNRRRUXUUXRRUXRXUXX\c_ccfiippmm~\81\88\88\8b\88\88\85\85\85\85\85\81\81\81~\81\81\85\88\8b\8f\8b\_\\XXXX_\_fip~z~wwtttwzz\81\8b\8f\8b\8f\8f\8b\8f\8f\8f\96\96\9c\9c\99£\9c\9c£§£§ª§§£££££§§§§ªªªªªª§ª§£§ª¸´¸¸»¸´´´±¸±±±±ª§§§§§££ \9c\9c\99\9c\99\96\99\9c\99\9c\9c\99 \9c£§ª§ \9c\99\96\92\8f\8f\8b\8b\8b\88\88\8b\8f\8f\8f\92\8f\8b\88\88\85~ztwttpttppptwttwpzw~\81\81\88\92\96\96\96\99\96\96\96\99\99§ª±¸»¾Â»»¾¾»»¸´¸´´´¸¸»»»»¸»¸»»»¸´´¸´±´´¸´¸¸¸¸»»¸¸¸»»Â»¸´ª§ªªª££ w\9c\96\96\92\92\92\92\92\8b\8f\8f\92\92\96\99\96 £§§§±¾±ÂÅÂÉ££ \96\96\96\96\96\96\92\96\92\96\96\96\99\99\99 \96£ ££ª´±±ªª§§£ \96\96\96\99\92\96\96\96\96\92\99\96\9c ££§ªª§±ªªªªª§§£ £\99\96\92\92\8b\85\88\85\81z~~\81\88\85~\81~\81z~~w\81z\81\85\85\85\81~ztififimmfc\RXXUURKNNNUX\cccc\UcXRXX\XXXXU\UNNKGGGGDA3:366666033::,)3,))%3))
+)%%))03:::=AAADGGKKNKKNNKNNNGADA=DDADGGGKKKRNtimppmtwmXmmitptwmppttmzwtpfcmiffficcc__\\XXKGNGKGGKKGGGGARKNRRUUKNKKN=AA=A=====:::AKGGGGGGDGDDDKADADGKKKKKNNRRRRU____\\\\\\\\\XX\\\XXXUXUUURURRRNNNNKKKKKGGGGDDDDDAAAG=A==:=::66=6630333)3366336:=ADD=A===::60,,,))%\1f"\18"\18\1f\1f%")),)0)0,03:A=KNRUUX\XX\UXX\\c\\\_fcffimmttww\81\81\88\88\8b\8b\8b\88\85\81\88\85\85\85\85\81\85\81\85\85\88\8f\8b\\XUUXXU\\cfmt~~~zzwwwz~~\85\8f\8f\8f\92\8f\88\8b\8f\8b\92\92\8f\99\8f \99\99\9c££§§££§££§§§§§ª§ªªªªªª§£§§ª´±¸¸¸¸±´´±´±ªªªª£§£££ \9c\9c\99\96\99\99\99\9c\9c\9c£ §ªªª£\99\99\96\92\92\92\8b\8b\88\88\85\8b\8b\92\8f\8f\8b\8f\88\88\81\81wptttttwttpwzwzzz~~\81\85\81\8f\96\99\99\99\9c \99§\99§´¸¸»¾¾Â¾¾»¾¾»¸´¸¸´´¸»¸»»»´¸¸¸¸¸´´±´¸´±´´¸´´¸¸»»»¸¸»»Â¾¾±ª±ªªªªª£££w\9c\99\99\96\96\92\92\92\8f\92\92\92\96\99\9c\9c££ªª§±±Â±¾É £ \99\96\96\99\96\92\92\96\96\99\96\96\9c\99\9c \99 £ §ªªª±ª§££\9c\99\92\92\92\96\96\99\96\96\96\96\99\99\9c££ ££§§ª±ªªªª§§ \96\96\92\8f\8b\85\88\81\81~\81\81\85\85\88\81\85\81\81~~\81\81\81~\85\88\88\81~zwpifiifiic_\U\XUXNNNRRRUX__cc\XcUUXXXUXXUX\RKNKGDGDGA6:6::6:6360:=0,60,,)6,)\ e,%%%,366:==AADDGKNKRRNRRNRNKDAA==ADDGGGKKNNXwwiimmiptiUimitptwippttpzwwmfcmiffficfc__\\UUKGKDGGGGGGDGAARKKNNRUGNNKN==A=====:::::AGDDDDDDDDDDDGDDADDGKKKKKNRRRRU____\\\\\\\\\XXX\\XXXUUUURRRRRNNNNNKKKKGGGGDDDDDAAA=K====::::66:6330030,0033336::AADA=::=663,,"%%%\1f\1f\18\14\1f\18\e\e\e\1f%%,,,),,,0:AAKNRXX\_\\\X\___f___cififmppwwzz\81\81\88\8b\8b\8b\8b\8b\88\85\88\85\85\85\85\85\85\81\85\88\88\8b\8b\\UUUXUU\\_fpw~~\81z~wwzz\81~\8b\92\92\8f\8f\92\8b\8b\8f\8b\8f\8f\8b\96\8b\8b\96\96\9c ££§££££ §§§£§ª§ªªªªªªª§§§§§§§ªª±´´´´´´´´±±±±ªªª§ªªª£££ \9c \9c\99\99\99\99\99\99\9c\9c §£ªª±ª£ \9c\99\96\92\8f\8b\88\85\85\85\8b\8b\92\8b\8f\8b\8b\88\85~~ttwtttwwwwtwz~~z~\81\81\85\88\8b\92\9c\9c\9c\9cªªª¸´´¸»»¾¾Â¾¾¾»¾¾¾¸¸¸´´´´»¸»¸¸´¸¸¸´¸´±±±´±´´±´±¸»»¾»»¸¸¾¸¾¾¾»±ªª§ªª§£££ \9c\9c\99\96\92\96\92\8f\92\96\96\99\9c ££ªªª´±¾´ÂÅÅ\9c \9c\99\92\96\96\96\96\96\96\99\99\99\99\96\9c\9c\9c\9c §ª§§ªªª§£ \9c\96\92\92\92\96\96\96\96\96\96\96\99\9c\9c £££§ª§ªªªªªªª§§\9c \9c\92\96\92\92\8b\88\88\81\81\81\81\81\88\88\88\85\85\85\85\81\81\81\85\85\81\88\8b\88~zwwmifiififf_\X\XX\RNRNRNRU\\cc\\cRX\UXUX\UU\UNNKKGGAGD:6=:=:::6:3==306300,:,,\11,%))0336:==AADDGNRRUUURUUUNNGAAAAAGDGGKKNRUtwwmfcifmffXfiftppwipptptwwtpf_miffffcc__\\XUUKGGGDDKDAKDDAARNGNNNRDKNGN:=AA===A::=::=DAAAAADAAAADDAADDDDGKKKKKRRNNU___\\\\\\\\\XXXX\\XXXUUURRRRNNNKNKKKGKGGGDDDDAAAAAA=N==::::::66A3330333,0033336:=DDDD==6=330))")%""\e\18\18\14\14\e\18\e\e""))),),,3:=DNNR\\___cfcfcfcicccffiiimttzz~~~\81\88\88\8b\8f\88\8b\8b\85\88\88\88\85\85\85\85\85\85\85\85\88\8bX\XUUURUXX_ipw~~~~~zzz~\85\85\8f\96\96\92\92\92\8f\8b\8b\88\8b\8b\8b\8b\88\8b\8f\92\99\96 \96££ ££ £££ £§§§ªªªªªª§§§§§ª§ª´´±´¸´¸±±ªªªªª£§ª§££££££ \9c \9c\9c\9c\9c\9c\99\99\9c §§ªª±ª§£ \9c\99\96\8b\8f\85\85\85\88\8b\8b\8f\88\8f\88\88\85\81~ztwttwwwzwwwz~\81\81~\81\85\85\88\8b\96\96 ±´»¾»¾»¾¾Â¾¾¾¾¾»´´¸´±±´¸¸¸»´´´¸´´´´´´±¸±´´´»»¾»»»»¾¸»»´¸ªªªªª§§§£££££ \9c\9c\96\96\96\96\92\96\96\96\99\9c ª´´»±¾ÂÅ\9c£ \99\96\96\96\96\96\96\96\99\99\99\99\99\96\9c \9c\9c £§§£§§§ª£\9c\9c\96\99\92\92\92\92\92\96\96\96\96\96\99\9c £ §§ª§ªªªªªªª§§\99\9c\9c\96\96\96\92\8b\8b\88~\85\81\81\85\88\8b\8b\88\88\88\85\85\85\81\81\81\85\88\88\85zmttiififcfcc__U\\\XNNNNNNKU\_cf\\cUXXUXU\\RU\RNNNKGDDGD::A:===:6:6=A33:6330=00\ 30)),363::==AAGGKRXX_XXXXXXRNGDDAGKGDKGNKRUzwwtifccf_ff\cffpmmwmppttwtttmf\miffffcc__\XXUUGDGGGDGADGGGAANNKNKKNDKKDK:==D=====:::==A::===A=A=AAD==AADDDGKGKKNRNNR___\\\\\\\\\XXXXXXUUURURRRNRNNNKKKKGGGGGDDDDAADDA==ANA::::::636D00030000336366:=ADDAAA:3:0,,,)"%%%%\18\18\18\14\14\18\14\e\18\1f\1f%%,,)))3==GKNU\\cccfifififmffffffiimttzz~z~\81\88\88\8b\8f\8b\8b\8f\88\8b\8b\88\85\85\81\85\85\85\85\85\88\8bXXXURRRUXX_ipw~\81~~\81~zz\81\88\88\92\96\96\96\92\96\92\8f\8f\88\88\88\88\81\85\88\88\8f\96\92\96\92 £ §£ª£ªªªªªªªª§§§£§§£§±±´¸´±´ªªª§ª§ª§§ª§§£§££ £ \9c \9c\9c\99 £§§ª±±ª§£ \99\96\8f\92\85\85\88\88\88\88\8b\88\8b\88\85\85~zztwwtwwwzzwzz\81\85\85\81\88\88\88\8b\8b££££ªªÂ¾¾Â¾Â¾Âž¾¾¾Â»»¸´´´±´´´´¸¸´±¸´´´±±±±±´´´´±±´¸¾¾»»»¾»¸¸¸´ª§ªª§ª§§£ £ £ \9c\99\96\96\96\92\96\96\96\96 ª´´±±±¸¸±»ÂÂ\9c£ \99\96\96\96\96\96\92\99\99\99\96\99\99\99\9c \9c \9c\9c£££££§§§ \99\96\92\99\92\8f\92\92\96\99\99\99\99\99\9c £ £ªªªªªª§ªªªª§£\9c\9c\9c\99\96\92\92\8b\8f\88\81\85~\85\85\85\8b\8b\88\8b\85\88\88\85\85\81~\85\85\85zwimpifffccfc_c_U_\_UKKKNKNKU\\_f_\cUUUUXR\\UU\RNNKGKGDGGA=D=AA==6=:AA66::663A00\03000666::==AAGKNffcfc\\\\XRRGGGAKURGRNRKXzwtttifccf_ff_cffppmwippttwpppif\mifffccc_\\XXURGDDDDDKDGGDDGD=KNKKGNGGG:A===DA===:::::=:::::==:=:==A====DDDDGGGGKNNNR___\\\\\XXX\XXXXUURRRNRNNNKNKKKGKGGGDGDDDADAAADD=A=AND::6:66633G,00000330063::::DGDDAA:660,))%"%%""\e\1f\e\14\18\18\18\e\18\e\e\1f)0,,%,3D=GKRU\_cfiimimimimiiccffiimptwwzz~\81\85\88\8b\8b\8f\8f\8f\8b\88\88\8b\85\81\85\85\85\85\81\81\85\88XXURRNRRXXcipt~\81\81\81\81~~~\81\85\8b\92\96\92\92\96\92\92\8f\8f\8b\8b\88\88\81\81\85\85\8b\92\8f\92\92\99\9c\9c\9c\9c \9c\9c \9c£ \9c\9c§ªªªª§ª§££££ £ª±´±±ªªªªª§§§£§££§§££££§£££ ££ §§§ª±±±ªª§£\9c\99\92\8f\88\88\8b\85\85\85\88\85\88\88\85\85\81~ztzzwwwzwzwzz\81\85\88\85\8b\8b\92\99ª§§¾ÅÅÂÂÅž¾Â¾¾¾¸¸¸´±±±±´±¸¸´´´±¸±´±±±´´´±´´´´»¾¾»¾»»»»¸´´±ª§ª§§ª§§£ £ £ \9c\99\96\96\96\96\96\92\99\99£¸¸¸´ª´´´¸¾¾ £ \99\96\96\96\99\96\92\99\99\99\99\96\99\99\9c \99\9c£ £££§§£\9c\96\92\92\96\92\8f\92\92\99\99\9c\9c\9c\9c\9c £££§§ªªªª§ªªªªª£ \9c\99\96\92\8f\8f\8f\88\85\81\81\81\88\88\88\88\85\8b\85\85\88\85\81\81~\81\81~wpiiffccc_ccc__cXc\_UKKNKGKNRXX\fc\cRXRUUU\_UU\RKKGGKGGGDD=GADDAAAA=DD::==::6D3336333::6:===AAGKRmifif__\_XURNKNRXXUXc\Rzwztpppicc_cccf_ffippmwipmpptmpmff\mifffcc__\\XUURGDDAADGGKGAGKG=GNGNDKGDK:AAA=GA====::::=6::=6:::====A:::=ADADGGGGGKNNR___\\\\\XXXXXXXXUURRRNNNNKKKKKGGGGGDDDDDAAAAA=AAA===ND6:3663303D,0003303006:AAAADGDA=A6:63))%%%))"%\1f"\e\18\e\18\e\e\e\e\18\e%0,0A3:GGGRRX\cmmmmpmpmmmimicffffimptwzwzz~\81\88\8b\8b\8b\92\8f\8f\88\8b\88\85~\81\81\81\81~\81\85\85XUURRRRRX\fimw~~\85\81\81\81\81\81~\81\8b\8f\96\92\92\96\92\92\92\8f\8b\8b\88\85\85\81\81\85\88\8b\8b\8b\8f\92\99\99\99\9c\9c\9c\99\9c\9c\99\99\9c\99\99£§ªªªªªªª§§£ £££ §ªªªªª§ª§§£££ £ ££ §££§ £ ££££££££§§ªª±±±ªª§ \9c\96\8b\8b\88\88\85\81\85\81\81\85\85\81\81\81zzwzzwwwwzwwwz\81\85\8b\96\9c\9c\99´´ª´¾¾ÂÉÅÅÅÉÅÂÅÅÅž¾¾¾¾»´´¸¸±´´´´´´´´¸´¸´´±ª±±±±´´´±´¸»¾»¾»»»»»±´ªªªªªªª§§£££££££ \9c\99\99\96\96\96\96\99\9c§±»»»´ª±±¸¸»» £ \9c\99\96\96\99\92\92\96\96\9c\9c\96\99\9c\9c\9c £\99 ££££ \99\92\92\92\92\92\8f\92\96\96\9c\9c \9c £§§§ªªªª£§§ªªª£££\9c\9c\96\92\8f\92\8f\88\81\85\85\85\88\88\85\85\81\88\85\81\85\85\81~z~tzmmfffccc__c___cc\c\\UKNKKDGNNURXf__cRUNUXX\_RU\NKKKKKGDDDGAKDGGDDDD=DD=:===::G:::::::=::==:=AAGKptpimic___UURRNRX\\c_fmpwwzttppicc__c_f_ifmpmiwmpipmtmmiii_mifffcc__\XXUURDAAAAGKGGGDDNKAGKKNAGDDG=AAD=GD===:=:::=366=:::=====A:::==AADDDGDKGKKR\\\\\\\\XXXXXUUXUURRRNNNNKKKGGGDGDDDADAAA=A======:::NA6636300,0A03,0333633:=DDDDDGGDA=66:6))")%%)%%\1f%\1f\e\18\e\18\1f\1f\e\e\e%,,=D:=KKGU_fmmpppptmpmmmmmifffcfimpwwwwwwz\81\85\88\8b\8f\92\8f\8b\8b\88\85\85~\81\81\81~\81\81\85\85XURRUNNR\_ifmzz\81\81\81\85\81\81\81~\85\88\8b\96\92\92\92\92\92\92\8b\8b\8f\85\85\81~\81\85\88\85\88\88\8b\8f\96\92\96\99\99\99\99\99\99\96\99\99\96\99 £§§ªªªªª§£ £§£§§ª§§ª£§§£ £ \9c £ £ £ ££££ ££££§§§§§£ªªª±±±ª§£\9c\9c\92\8f\8b\88\88\81~\81\81\81\85\85\81~\81zzwwzttwwwtwtz~\88\8f£±´¸»¸»¸ÂÂÅÅÅÅÉÉÅÂÉÉÅÅ»¾»¾»´´´´±´±´´´´±±´´´´´´±ªª±´´´´´¸¾¾¾¸»¾¸»±´ªªªªª£§£££££££ \9c\96\99\96\96\99\99\9c ª±¸¸¸±§ª±¸»»£ £\9c\9c\96\96\99\8f\92\96\99\99\9c\99\9c\9c \9c \9c \96\96\92\8f\92\8f\8f\8f\92\96\96\9c\99 £ £££ªªª±ªª§ §§§ª§§§£\9c\9c\99\92\8f\92\8f\88\85\88\81\88\85\85\81\85\81\85\85~\81\81~zwzpificcf____\_\\_cf_c__UKKKKGDKKRRUccccRRNUXU\_UU\DGKGKGDGGDDDNGKGDDGDAGGAAADD==K==========A==A=AGNtwzzpiccc\\XUURX\__fcimptwwttpmfc_c___f_fimpiiwppmpppppiiicmiffcc__\\XXURNDA===DNGKKGDNGADGGK::ADD=A=G=GG===::::==6:::=:=:::::=666====AAADDGGKKN\\\\X\\\XXXXXUUUUURRRNNNKKKKGGGDDDDAAAAA=====::::::6N63333030,00,0,03666666AGGGGGGKDA::::6%)%)))%))")"\1f\1f\1f\18"\1f\e\1f\1f"),AGDGKRUXiipptttmtppmmpmpffccfffmpwwwwwzz\81\85\88\8b\8f\92\8f\8b\8b\8b\85\81\81~\81\81\81\81\85\85\85XXUURRUN_ciimwz\81\81~\81~\81~~\81\85\88\92\96\96\92\92\96\8f\8f\8b\8f\85\81\81~~\81\85\85\85\85\88\8b\92\92\8f\96\92\96\99\96\96\92\96\92\8f\96\99\8f\99£§§§§ª§ £ \9c\9c £ ££§£ª§ ££ \9c\99 \9c \9c ££ ££§£§££§§§§§ªª±±±±§£ \9c\99\8f\8f\88\85\85~z~~\81\85\85\85\81\81~~wwwwpwwtwttwz\8b\92´´¸»¾¾¾ÂÅÅÉÅÅÅÉÉÉÅÅÅÅÅž»¾»»´±±±±±±¸´´±±´´´±´´±±ªªªªª´´´¸¸¸»»»»»»»¸»´´ªªªªªªª§§§§§£££ \9c\99\99\96\96\96\96\99\9c§´¸´±ªª±´¸£ \9c\9c\99\96\99\8f\96\96\96\99\99\9c\9c £ \9c \9c\96\96\92\8f\8f\8f\92\8f\92\92\96\99\9c £§§ª±ª±ªªª£ £££ª£§§£ \99\9c\92\92\8f\92\88\88\8b\81\85\85\85\85\85\85\81\81~~~zwtwifcfc_c\\\\X_X\cfiffc_XNKKKGDGKNRR_ffcNRUXXU\_UU\DGKGGKDGGAADRGNGKKKGDKKDDGGGAAKAAAAAAAADAAA=A=AGN\88\88\88\8bwifff__\XXU\__fifmppptwttpmffcc_\_f_fiipifwmtpmmmpmifffmiffcc__\\XUUNNAAAAADKGNNGDNKDAGGG::=D==A:DADG=AA:=:::=:===:::::=::=666:A==AAAAADGGGNXXX\XXX\XXXXXUUURRNNNKNKKKGKGGGDDDDAAA===:=:::::66:6K33303000,,000,0333:6::DGGGGKKGAA6=:66%)))))%%%%,%""""%"""\1f")GDDGKRX\fmmttttwptpmpppppiccccffmtwzwzw~~\81\88\88\8f\8b\8f\8b\8b\8b\88\85\81~\81\81\81\81\85\85\85\85X\XURXXUcfmmpw~~\81z~~~z\81~\85\8b\8f\96\96\96\92\96\92\92\8b\8f\85\81~~\81\81\85\81\81\85\88\8b\8b\8f\8f\92\96\96\96\96\92\8f\96\92\8f\92\8f\8f\92 \99£££§£\9c \9c\9c\9c\9c\9c\9c\9c £ §£ £\9c \9c\99\9c\9c\9c \99\9c\9c \9c ££§§£££§§§§£ªª§ª±±ªª£ \9c\99\96\8f\8b\85\81\81ww~~\81\81\85\85\85\81~\81wwtttttttptww\88\92¸¸»¾ÂÂÂÅÉÅÉÅÅÅÉÉÉÅÉÅÉÅž¾»»¸¸´±±±´´±´±±±±±¸´´±´±±¸»¸»»¾»¾¾»¸»¸±ªªª§ªª£§ª§§£§£ \9c\9c\96\96\96\96\96\99\9c£ª±´±§±±¸£ \9c \99\9c\99\96\99\92\92\96\96\99\99\99\9c £\9c \9c\9c \9c\9c \9c \99\96\96\8f\8f\8b\8f\8f\8f\8f\92\96\99\9c §ª±±ªªªª§ ££ §£§££ \9c\9c\96\96\92\96\92\8b\8b\85\85\85\81\81\81\81~~~zzwtpcfc___\_XXXXU\X_fimii__\RNKKDDGKGNKRcic\\X\\U\_XU\DKKGGGDGGDDGUKNKNNNKDKKDGNKNDDKDDDDDDDDGDDDAA=AGN\8b\8b\8b\8f\8b\85iifcc_____c_iiiipmpwwwtpmffcf_\_c_ifipmiwitpmmppimcicmiffcc__\\UURKKD==ADAGDKKDGNKGDDDD:6:A::=6DDAD==A:A:::A==A======:66::66:=::==ADADDGGKXXXXXXXXXXXXXUUURRNNNKKKKGGGGDDDDDAAAA===:=:66:66366G300000,,),003,30366::=DKGGKGKGAD:=:3:))%)%)%)%%,)%%%%%%%""%GDGGKNU\cippwwwwwttppppppmiffccffmpwzwzw~~\81\85\88\8b\8b\8f\8b\8f\8b\85\85\81\81\81\81\81\81\81\85\85\88\X\X\\ccfipmpw~\81~z~zzz~~\81\8b\8f\96\96\99\96\92\96\8f\8b\8f\88\81~~~~\81~~\81\85\88\88\8b\8f\92\92\96\96\92\92\8f\92\92\92\8b\8b\8b\8f\8b\92\92 £ \9c\9c\99\99\99\99\9c\99\9c\9c\9c £\9c£ £££ \9c\9c\9c\9c\9c\99\9c\99\99\99 \9c \9c ££§££££§££ª§£§ªª±§§ \99\96\92\8f\88\81~\81zzz~~\81\88\88\85\85\81\81ztttttpppppwt~\92»¸¾ÂÅÅÅÉÉÉÉÅÅÉÅÉÉÅÅÅÅž¾»»»¸´±´ªªª±±±´±´´¸¸´±±ªªª±´´´¸¸¾¾¾»»»»»»¸´±ªªªªªªª§ªªª§£ª££ \9c\9c\99\99\96\96\99\9c ª±ª§ª±´´» \9c £\9c\99\99\99\99\92\92\96\96\99\99\9c\99 £ \9c\9c\9c\9c\9c \9c\9c\99\96\92\8f\8f\8f\8f\8f\8f\8f\92\96\99\9c\9c ££ ££ª±±±±±ªªª§£ ££ \99§§§§£ \99\96\96\99\96\8f\8b\85\81\81\81~~~z~zwppmmfc_\_\XXURURUXXcfmpmf_c_URKGDGGKGNNRciccc_\_\\_XU\GNKKKGGGGGGGUNRNRRNNKNNNKRNRGKNGDDDDDDDKKGGDDAAGN\8b\8f\8f\8b\8f\88mmiifccccccmmpmmpptwwwtppii_f\\_c_ffimpiwmptmmmmfp_m_miffc___XXURNGGDAADA==AGGGKKGDA6A=666=66:6AAAA==A=D:A==AAA===A==::6:6336=::===A=ADDGKUUUXXXXXXXXXXUUURRNNNKKKKGGGDDDAAAAA====::::66:63333D000,0,,,))3,300336366=DGDGKKKGDD==:6=,,"%%%)))%)))))))))%"%GGKKKXXppmttwzzzzttppppmppmifffffmpwzwzw~~\85\85\88\8b\8b\8f\8b\8f\8b\88\85\85\85\81\85\81\85\81\88\85\8b_X\\fcifimpptw~~~w~zwzz~\81\88\8f\92\99\9c\96\96\96\8b\8b\8f\85\81~~\81\81~~~~\81\88\8b\85\8f\96\92\96\96\96\92\8f\92\8f\8f\8b\88\88\88\8f\8f\8f\8f\9c\9c\99\99\9c\99\99\99\99\99\99\99\9c\99\9c \99 £££ £\9c\9c \9c\9c\99\9c\99\9c\99\9c\9c \9c \9c\9c££££ £ §§£§§ªª£ \9c\9c\99\92\8f\8b\85\81\81~~z~~~\85\8b\8b\85\88\85~~twtttmmmmptt~±¸»¾ÂÅÉÅÉÉÌÌÉÉÉÂÉÉÉÅÉž»¸¾»¸´±±ªª±±±±±´¸¸¸´±ªª´´´´»¾¾¾»»»¾¾»¸±ªªªªªªªª§ª§§£ \9c\99\9c\96\99\9c\9c£ §§ª§§ªª±±¸´ª \99 \9c£\9c\9c\99\96\99\92\96\96\96\99\99\99\99 £ \9c\9c\9c\99\99\9c\9c \9c\99\96\96\92\8f\8f\8b\8f\8f\8f\92\96\96\99\99£ £ §£ª±±±±´ªªª£§ £\92§§§§£ \9c \99\99\96\96\96~w\81~~~z~z~zwtmpiffcX\_RUURNRUUU\ffmmmicc_XRKGGGGGGNNRRfffic_c___XU\NNNNKGDGKGGKXNRNRUURNRRRNURUKRNGGGGGGGGRNNGGGDDKN\8b\8f\8b\8b\92\8b\8b\85zwpiiiiffpptpptttwtwttmim_i\X\c_ciimpptmtwppmmitcm\miffc__\XURNKDDGDAA=A:D:DDGA:A=6::36333333==AAAAA=GADAAGD=A=A=A=:66=6336==::====AADDKUUUUUXXXUXXXUUUURRNNNKKKKGGGDDDAAAA====::::666663330A0,,,,,))%)003,303:66:AAGGGGGKGGAAA:::0)\1f"%)),)),))))),,,%")KGNNU_pttpwww~zzwttppppmptpmfiiffiptzz~z~~\85\85\88\8b\8b\8f\8b\8f\8b\8b\85\85\85\85\85\85\85\85\88\88\8bcfc_ifmimptttw~~~w~wwwz~\81\88\8f\96\96\99\96\99\99\8f\8b\8f\88\85\81\81\81\81~\81~~\81\85\88\88\92\96\92\96\96\96\92\8f\92\92\8f\8b\88\85\88\8b\8b\8b\8f\92\96\96\96\99\96\96\96\9c\99\99\99\99\9c\99\9c\99\9c\9c£ £ £\9c\9c \9c\9c\99\99\96\9c\96\9c\9c\9c\99\9c\99\99 ££ £\9c\9c \9c\9c££ £ §ª§ \9c\99\99\96\8f\92\88\85\85~z~z~\81\81\88\8f\8b\88\88\85\81~wwwttmmppttw~\92»¾¾ÅÅÉÉÉÌÌÌÌÉÉÅÌÉÉÅÅɾ»»¾¸¸´±±ªª±±±±±´¸¸¸´±±±±ª§ª¸´¸¸¸»»¾¾¾¾¾¾»¸±ªªªªª§ªª§ª§£§££ \9c\9c\9c\99\99\9c\9c£ §££££ªª´±´±ª£ \9c \99£\9c\9c\96\96\99\96\92\96\96\96\96\99\9c\9c \9c\99\99\96\99\99\99\9c\99\99\96\96\8f\8f\8f\88\92\8f\92\92\99\96\99\9c £§£±±±´±±ªªª£§£ £\9c§§§§££\9c\9c\9c\96\99\92w~wwzzzw~w~ztipmmcfcXX_RURRRRUUX\iipmmicf_XNKGGGGGKNNRRciimmcccc_\X\URNNNGGKKGGKXNURURXXRURURUUXUX_KKKK\RRRpRRKKGGGK\88\8b\8b\8b\8b\8f\88\8b\88~\81zttpmmpttwttpptwtttppfpci\\Xc__ffppttmpwpppmppim_miffc_\\URNGGDDDAAAA==A=:ADA6A:6:636333333::=AADDAGGGKGKGKGA=ADA=AAD:666===:====AAADGUUUUUUUXUXXXUUUUNNKKKGKGGGDGDDDAAAAA==:::6:663333300:0,,,,)))%%3360336::6:ADDGDDGGGKAA==66,%\1f\1f"),,)),,,),)3,,:GKKNRXXmtwwtwzzzwwwwttpmmmpptmimmiimmpwz~~~\81\85\88\88\88\8b\8f\8f\8f\8b\8f\88\85\85\85\85\85\85\85\88\8b\88fimimpttttttww~~zzzzttz~\81\8b\8b\92\92\96\96\99\96\92\8b\8b\88\85\85\85\81\81\81\81~~~\85\88\8b\8f\92\92\96\96\92\92\8f\8f\92\8f\8b\8b\88\88\88\88\88\8b\8f\92\96\96\96\99\96\99\99\96\96\96\99\99\99\9c\99\9c\9c \9c§£ \99\9c\99 \9c\9c\99\9c\96\99\99\99\99\9c\96\99\9c£ \99\9c\9c\9c\99 £\9c §§§ \99\96\8f\92\8b\8f\88\85\85\81\81\81\81\81\85\88\8b\8f\8b\8b\88\88\81zzzzwttpmmppwz\85\81»¾ÅÅÉÉÉÏÌÏÏÌÉÉÌÉÉÅÅÅž¾¾»»¸¸´±±ª±±±ª±´¸¸´´±±±ª§±´¸»»»¾¾¾¾Â¾»¸±±ªªª§§ªª£§££££ \9c\9c\9c\9c £££ ªª¸´±ª \9c \9c£\9c\9c\96\99\99\96\92\96\96\96\96\99\9c \9c\9c\9c\9c\96\99\99\9c\96\99\9c\99\99\99\92\92\8f\92\8f\92\8f\92\92\99\99\99 £££§§ª±±´±´±ªªª§§§£ £ ªª§ª§§\9c\9c\9c\96\96zz\81~wtpww~izwtfpmmffcXX_RURRRRUU\_iimiiiff_XNKKDKGKKRNRN_mmppfcff__c\XURNRNKKKKGKXRXUXR\\NUUXUUXXX\c_cKmffmUtwXRRRR\85\88\85\88\88\8b\88\8b\85\8b\85\81\85~wwtpwwwwwtptptttttppcpfi__\c__ffpmwtptwtptwtpmmcmiff_\\XUNKKGDGDAAA==A=:::==:=:36363333333::=AAADAGKDNKNKNKD=AADADDG:363:==:::====DDGRRRUUUUUUUUUUUUUNNKKKGGGGDDDDDAAADA==A:::6663336000,6,,,),)))%%3330303:66:ADDDGADGDG==3:33)"\e\1f\1f),),,,,,,,,60DKKNNRX\ctwwwwzzzwwwtwtpmmmmpptpmpmmmppptz~~\81\81\85\85\88\88\88\8b\8f\8f\8f\8b\88\85\85\85\88\85\85\85\88\8b\88impmwtwwwwwwwz~~zzwwptw~\81\88\88\8f\8f\92\96\96\92\96\88\8b\8b\85\85\81\81\81\85~\81\81\81\85\88\88\8f\92\96\96\92\96\92\8f\92\8f\8b\8b\8b\85\88\85\85\85\88\88\8f\92\92\96\96\96\99\99\99\99\99\99\99\99\99\99\99\9c ££ £\99\99\99\9c\99\9c\99\99\99\99\96\96\99\9c\96\99\99 \9c\9c\9c\99\99\99\99\96\9c \99 \9c£§§ \92\92\8f\8f\8b\8b\88\88\88\85\85\85\85\85\88\8b\8b\8f\8b\8f\8b\88\81\81zz~ztwtppptt~\88\81¾ÂÅÅÉÌÉÏÌÓÏÏÉÉÌÉÉÅÅž¾»»´´´±±±ªª±±´¸´´´´±±±±±´»»¾¾Â¾¾Â¾»¸±´±ªªªªª§££££ \9c \9c\99\9c £££ ª¸¸´ªª£ \9c \9c£\9c\99\96\99\99\99\96\99\99\99\99\9c\99\9c\9c\9c\99\9c\96\99\99\9c\96\9c\9c\99\99\96\92\96\92\92\92\96\8f\92\92\99\9c\9c£££§§§ª±´´´´´§ª£§§££§£§§§§ \9c\9c\96\92~z\81\85~tpwwziwtpitpmic_XX_RURRRRUX_cififffifc\RKNDKGGKNKRN\ppmticiffcf__UUNNRNKNKKK\NUX\X\_NXXXUUXU\_fcfmpimpmtzzzUX\81\81\85\85\85\88\8b\85\85\85\88\81\81\85\81zzwtzzzzwtpttttwtppp_tcic\X___ffmptttwwwttzwtppfmifc_\XXRNGKKDGA===:==::66A:6:63:360033000:==DAADDDNGRNRNRNGAADDDGGK63:66=:=:::==AAAGRRRRRUUURUUUUUUUKKGGGGGDDDDDAAA=AA==A===:6:63333000,0,,))))%%"%3630333663:=DAAD=ADAD,:%0,%"\e\18\e\e%,),,,,,000:=GNNRRUcppwwwwwwwzzwttttpimiippppptpppttttw~~\81\85\85\88\88\88\88\88\8f\8b\8f\8b\88\85\85\85\88\85\85\85\88\88\88pptpzzzzzzzzw~\81~zwttpttz~\85\85\8b\8b\92\96\92\96\96\8b\8f\8b\88\88\81\85\85\81\81\81\81\85\85\88\8b\92\92\92\92\92\92\92\92\92\8f\8f\8f\88\85\85\81\85\85\85\8b\8b\8f\92\96\92\96\96\99\99\99\99\99\99\9c\99\99\99 \9c\9c \9c \9c\96\96\99\99\9c\9c\99\96\96\92\92\99\99\96\96\9c\9c\99\99\96\96\96\99\96\96\99\9c\9c\9c\99 ££\9c\92\92\8f\8b\8b\8b\8b\88\8b\88\88\88\88\88\8b\8f\8f\8f\8f\8f\8b\88\85\85~~\81zwztpttww\81\88\85»¾ÅÉÉÌÌÏÏÓÏÏÌÌÌÌÉÅÅÅ»»»¸´´´±±ªªª±±±ª±±´´´´±´±´´´¸¾¾¾¾Â»¾¾¾»»´´±±±ªª§§£§££\9c\9c\9c\9c \9c\9c\9c\9c\99 \9c ££££§±¸´¸ª£ \9c \9c£\9c\99\99\99\99\9c\99\96\9c\99\99\99\99\9c\9c \9c\99\96\99\99\9c\96\99\99\99\99\99\96\99\96\92\96\96\8f\96\99\9c §£§£ªª´¸´´´´±ª§ª§§ª§£ª§ª§£§££\9c\99\99\96\81w\81\88\81tpzzzfwppmtpmfc_UX_UUNNURX\_ffcfccffcc_UNRKKKKNNGUKXpppXicmcmfifc\\NUUNNNKNN\NRU\\\\N\XURUU\\ciiiptpptptzzz~\81\81~\85\81\85\85\88\81\85\85\85~\81\81\85~~zw~~zzztppptttttppftcic\U___fippwttwttwtwwwppimfcc_XU\RNGKGGG=::=:::6:33=66:336633000000:==AAAGDDKGRRNRNNGDDGGGKKN366::=:=:6::A=AAGRRRRRRRUURRUUUUUKKGGGGDDDAAAAAAA==A=A::=66:63333000,,,))))%%%""33606633636=A6A:::A=%)\14\11,\ e"\18\14\14\18\18",,,,0),033=AKRXXcwwttzwwwwwtzzwtppppfiiippppttttptttww~~\81\85\85\88\8b\88\8b\88\8f\8b\8f\8b\8b\88\88\88\88\85\85\85\88\88\88ttwt~~~~\81~~~~~\85~wtppmtwzz\81\85\88\88\8f\92\92\92\96\8f\8f\8b\8b\8b\85\88\88\85\81\81\81\85\85\88\8b\96\92\92\96\96\92\96\96\92\8f\8b\92\88\88\88\85\85\85\85\8b\8f\8f\92\96\92\92\92\96\96\99\99\9c\99\9c\9c\9c\9c \9c\99 \99\9c\99\96\96\99\96\99\99\96\92\92\92\92\99\99\92\96\99\99\96\8f\92\92\96\96\92\96\96\99\99\9c\96\99 \99\96\92\8f\8f\8f\8b\8b\8b\8b\8b\8b\88\8b\8b\8f\8b\8f\8f\8f\92\8b\88\88\88\81\81\81~z~wttttw\88\88»¾ÂÅÉÉÌÏÏÏÓÏÏÌÌÌÌÉÉÂÅ»»»»´´±ª±±ª±±±±±±±´´´¸¸¸¸´Â¾ÂÅ»»¾»»»´´±±±±±±±ªª£§££ \9c\99\9c \9c\99\99\9c\99\9c £££§§±¸´¸±§ \9c£\9c\9c\99\9c\99\9c\99\99\9c\9c\99\99\99\9c\9c \9c\9c\99\99\9c\99\99\9c\9c\99\99\9c\96\9c\99\96\96\96\96\99\9c £§§£§ª±¸¸´¸´´±§ªªª§ªª§ªªª§§£§ £\9c\99\96\96~t\8f\8b\85wp~wzfwipwwmicc_UX\XUNRURX\\cc_\__fc_ccURRNNNNRKDUGUpmtXwzpmtmpifccUXUUURKNN\RNX\_\XRXXRNUR__cmmpwwttwmzz~~~\81\81~\81\81\81\85\85\81\85\81\81~\81\81\85~\81~z~~zzwwptpttttpttmwfmc_Uc_\ffmmwwtwwtwwztwptmmic_\URXRRKGKGD=:6::6:6:63:336333333000000::==DDDGGGGNUKNNKGDGGKGKKN3:==::=::6:6A:A=DNNNRRRRRRRRRRUUUGGDDDDDDAAAAA========:=:66633333000,0,))))%%%""30606636666:A3=,66%"\14\11\a\ 3\ e
+
+
+\ e\11\14\e%,,,00),336:DUR\zwzzwwzwzwwwtwwwtpmmmfffippttwtwttpttwwzz~\85\85\88\88\8b\8b\8b\8b\8b\8f\8b\8b\8b\88\88\88\88\85\85\88\88\8bwwzw~\81\81\81\85\81\81\81\81\85\85\81ztppmtwzz~\81\85\85\8f\8f\8f\92\96\92\92\8f\8f\8b\88\88\8b\88\81\81\81\85\88\88\8f\96\96\96\99\99\96\99\96\96\96\92\8f\8b\88\88\81\88\85\85\88\8b\8b\92\92\92\92\92\92\96\99\99\99\9c\9c\9c \9c\9c\9c\92\96\96\92\99\96\92\96\99\92\8f\8f\92\92\96\99\96\96\96\96\92\8b\8f\8b\92\92\8f\92\8f\96\96\99\92\9c\9c\9c\99\96\92\92\92\92\8f\8b\8f\8f\8b\8b\88\8b\8b\8f\8b\8f\8f\92\8f\8f\8b\8b\8b\85\81\85\81~~wwtwww\8b»ÂÂÉÅÉÌÌÏÏÓÏÌÌÉÌÌÅÉž»»»»´´±±±±±±±ª±±±±±±±´±»»¸»±¾Â¾Â¾»»»¸¸¸¸´±´±´´±´±±§§£ \9c\9c\99\99\9c\99\99\96\9c\99\9c\9c £££££§´¸±¸´ª£££\9c£\9c \99\9c\9c\9c\9c\9c\9c \9c\99\99\9c\99 \9c\9c\99\99\9c\9c\9c\9c\99\9c\9c\9c\9c\9c\9c\9c\9c\9c\9c\9c \9c£§§£ª±´¸»¸¸¸´´ªªªªªªªª§§££ \99\99\96~t\92\8b\85\85p\81wzfwitzwifc_\UX\\XURU\XXXX\XX\\c_\__URRRNKRUNGRA\0tmw\z~ttwttmmiic\XXXUNRR\RK\__\XRXUKNXUcicpptzzwwzt~~\81~z\81~~\81~\81\81\85\81\81\81~~\81~\81~~~zz~zztwppppttttttpwfmfcUc_\ffmitwwtzwzwzwwppimfc_\UUUURKDGKAA::6=6:663333333330003,,0,,:===GADDGGGKRGKKNNGGGKKKNR36A===:::6:6D===ANNNRURRRNRRRRRRUGGDDDDAAAA=A===AA:::::::336300000,,,3,))))%%%""0,3333666:66=0:))\e\11\14\ e\a\ 3\0\ 3\a\ 3\a
+\11\14\e%)),03,0666DG\cm~z~zzz~zzzzwwwtwppmmifffipmptwwtttttttwzw~\81\85\88\8b\8b\88\8b\8b\8b\8b\8b\8b\88\88\88\8b\8b\85\88\8b\8b\8ftwzz~\81\85\85\88\85\88\88\88\88\88\81wppppttwz~\81\85\81\8b\8b\8f\92\96\96\92\92\8f\8b\8b\8b\8b\85\81\81\85\85\88\8b\8f\99\99\96\99\99\99\99\99\99\99\96\92\8b\8b\8b\85\8b\88\85\88\88\8f\8f\8f\8f\8f\8f\96\92\99\99\9c\9c \9c ££ \99\9c\92\96\92\92\96\92\8f\8f\96\92\92\8b\92\92\92\99\96\92\92\92\8f\8b\8b\88\8f\92\8f\8f\8f\8f\8f\96\92\99\9c\99\99\96\96\92\92\92\8f\8b\92\8f\88\88\8b\8b\8b\8b\8b\8b\8f\92\8f\8b\8b\8b\8f\92\92\96\81~~zzwwz~±±¾ÅÂÉÅÉÉÌÌÌÏÌÉÉÉÉÌÉÅž¾¾¾»¸´´±±±±ª±±´±´´±±±´¾¾»¾¸ÂŞŻ»»»¸¸¸´´´´´´´±´±´±£ª \9c\99\99\99\96\99\96\96\96\99\99\9c\99 ££§£§ª´¸±¸¸±§ £\9c£ \99 \9c \9c\9c\99 \9c \9c\9c\96\9c\9c\9c \99\9c £ ££\9c ££§ª´´»»»¸¸´´±ªª§ªª§££ \9c\96\99\99\92t\92\8f\88\88\85\85zzfzptwtif_\\X\_\X\U\_XUUUXUUXU_\X\\XUURNKNXRGND\0wpz~~~twzzwpptmmi\\_URUR\U\____\RXUNRUUcmtttw~~wzzw\81\81\81\81~~~~~~\81~\85\81~\81\81~~~\81~~z~z\81zztwtmmttttttttwmpifUcc_ifmmpwwtzwwzwtwppfifc\\UURRRGDGGD=:=:=6:363336333003300000006:==DAGDDKGKRAGGRRKGKNNNRR36D=:A=:=6::D=::AKKKNURNRNNNRRRRRGGDDDDAAA====:AD=::6666663333000,,,)6)))%)%%"""\1f)06663:6636:,%\1f\14\18\ e\11\0\99\0\99\0\ 3\0
+\a\ e\14\18"%),,60066=GGmm~\81~z~z~z~z~wzwztwppmiifiimpmpptwtwttttptwwz~\81\88\8b\8b\8b\8b\8b\8b\8b\8b\8b\8b\88\8b\8f\8b\8b\8b\8f\8b\8fwwz~~\85\85\88\88\88\8b\8b\8b\8b\88\85ttppptwwwz\81\85\85\8b\8b\8f\96\96\96\96\96\8f\8b\8b\8b\8b\85\85\85\88\85\8b\8f\92\96\99\99\99\9c\9c\9c\9c\9c\9c\99\96\92\8f\8b\88\8b\88\88\85\88\8b\8f\8f\8f\8f\8f\92\8f\96\99\9c\99 ££§£\9c\9c\96\96\92\92\92\8f\8f\8b\96\8f\92\8b\92\92\8f\96\92\8f\8f\8f\8b\8b\8b\88\8b\8f\8f\8f\8f\8f\8f\8f\8f\96\99\99\96\92\96\92\92\92\8f\8f\92\8f\88\88\8b\8b\8b\8b\8b\8b\8f\92\8f\8f\8f\8f\8f\96\96\99\9c\85\88~~z~\81\81´¾ÂÅÅÉÅÉÉÉÉÌÌÉÅÉÅÉÉÉÅÅ»¾»¸´´´±±±±±´ª±±±±´±´±¸»¾¾Â¾ÂÅÅÂÅ»»¾¸»»´´´´´¸´±´±´±´±§§\9c\9c\99\96\99\92\96\96\92\92\96\99 ££ªªª´»´¸¸´ª £\9c£ \9c ££ £\99\9c\99\9c\99 \9c\99 ££ §£££§ª£§££ ££ £ £§±¸¸»»»»¸¸´±±ªªª \9c \99\96\99\99\92t\92\92\8b\8b\88\85\88zf~~wtpfcU\\\_c\__XccXURNNKNNRRXUXNURRRRNKUNDNG\0zt~\81\81~tz~~zttwtpm__c_UXR\c_\c__\R\RRRRXcppwww~zwz~z\85\85\85\81\81~\81\81~\81~\81\85\81~\81\81~~\81~~~z~~~zwwttmpttwwttwtzptmiUcccifpmmzwwzwt~tptpmcifc\XXXRNRGGKDDA===:::636333333333300000006::=ADDDGKGKNAKGUUUKNNNNNR33A:6A=:A:=6A===AKKKKRNNNNNNNNRRRDDDAAAAA==A==:=D:6:6666633300300,,,):)%%%%%"\1f\1f"\1f%03:36:6:03,\1f\18\14\11\14
+\a\99\99\99\99\99\0\99\a\ 3\ e\11\14\1f%%,,6306=GUK\81~\81\85\81z\81~~z~z~wzwztwpmimiimmmpppttwwwtttttwwwz~\81\88\8b\8b\8f\8b\8f\88\8f\8b\8b\88\88\8f\8f\8b\8f\8f\8f\8f\92wwz\81\81\85\88\88\8b\8b\8f\8f\8f\8f\8b\81twttttwzzz\81\85\85\88\88\8f\96\99\96\99\99\8f\8f\8f\8f\8f\88\85\85\88\88\8b\8f\96\99\9c\9c\9c\9c\9c \9c \9c\99\96\92\8f\8b\8b\8b\88\85\8b\8f\8f\8f\8b\8b\8b\8f\8f\92\96\99\99 £§§§\9c\9c\99\96\96\92\96\8b\8f\8f\92\8f\8f\8f\92\8f\92\92\8f\8b\8b\8b\8b\88\88\8b\8b\8f\8f\8b\8b\8f\8f\8f\92\99\99\96\92\8f\92\8f\92\92\92\8f\92\8f\8b\8b\8f\8b\8b\8b\8f\8f\8f\92\8f\92\8b\8f\92\96\99\9c \99\99\81~~\81¸¸ÂÂÅÉÅÉÉÉÅÉÉÉÉÂÅÂÅÉÅÅž»»¸´±´±±±±±´´´±±´±¸´¸´´±´´¸¾ÂÅÂÂÅɾ¾¾¸»´¸¸¸´±´±´´±±±´§£\9c\99\99\92\96\8f\96\92\92\8f\99\9c £ §§±¸»¸»»¸´ª££\9c£ £ ££§£ £\9c \9c \9c££££ \9c£§ª§§±ªªª§§ ££ £ £ª±±¸¸»»»»¸´¸´±±ªªªªª£ \9c \9c\99\9c\96\92\96\8f\92\8b\8f\8b\85\8b\85\85\85\81zmfccU\\__fccccf_UUGGKGGKNNURUNRNRNNKGRNDKNizp\81\85\81\85\81z\81\81~wwzwwwt~zcX_U_icc_\_XU\UNRU\ipmttz~wtwzz\85\88\85\85\85\81\81\81\81\81~\81\85\81\81\81\81~~\81~~~z~~zztwtppppwzzwtztzttpmifccifpmmztzwtwztmpmi\ff_XXUURKNKKGDDA:==:66333363333333303000006::=DDDGGGGKNGNNXXXNNNNNNR3336:=::==A:=A:==KKKNNNKNKNNNNNNRDDDAAA===:=::::A6::63663033030,0,,))6)%%%"""\1f\1f\1f\e\1f03666::6,0"\1f\18\14\ e\ e
+\ 3\99\99\99\99\99\99\0\ 3\a\ e\11\11\e"%,,666:AKX\85\85\81\85\88\85~\81~~zz~~zzzzttppmmmfmppttpttwwttwtwtzwwz~\81\88\8f\8b\8f\8b\8f\8b\8f\8f\8b\8b\8b\8f\92\8f\92\92\92\92\96zzz~~\85\85\88\8f\8f\8f\8f\8f\92\8b\85wzwwwtwzz~\81\85\85\88\8b\8f\96\96\99\9c\99\96\92\99\99\99\8f\85\88\88\8b\8f\92\99\99\9c\9c £ £\9c\99\99\92\92\8f\8b\8b\88\88\8b\8b\8f\8b\8b\8b\88\8f\8f\92\92\96\99\9c £ §££ \9c\9c\96\96\92\96\8f\92\8b\8f\8f\8f\8f\92\8f\8f\92\8f\8b\8b\8b\88\88\88\8b\8b\8b\8b\8f\88\8b\8b\8f\96\96\99\96\92\8f\92\92\92\92\8f\8f\8f\8f\88\8f\8f\8f\8f\8b\8b\92\92\92\92\92\8f\92\92\96\96\99 £\9c\99\96 ±»»ÂÅÉÉÉÌÉÉÅÉÅÅÅž¾»»¸´±±±´±±±¸´±´±´±´¸¸¸¸¸´´´¸»¸ÂÅÉÅÅÉž¾´¸´´¸´±±±±±ª±±ª£ \99\99\96\96\92\8f\96\8f\92\8f\99\99£§§ªª±±±´¸¸»»»¸¸§£ £ £ ££§££ £ \9c £§ §£ ªª±±ª´´±±±ª§£££££££±¸¸¸»¸¸¸¸¸±±±±±ªª§ªªª§ \9c\9c \9c\9c \96\96\99\92\92\8f\8f\8f\88\8f\88\88\88\85wif__\\\c_iffffi\RUGGGDGGKKRNKNRNNKRGAGKGGRi~p\81\88\85\88\85z\81\81\81z~~\81~~z\81\81\92fi~_tff\XcXU_XRUUimmpttwzwptww\85\88\88\88\88\85\85\81\85\81\81\81\85\81~\81\81\81~\85\81~zzzzzzwwtppptwzzzw~tzpptimic_ifpip~pzwptwp_mifXcc\XUURNKKKGKDGD=:==66333333333333300003036=:=DDGDGGGKNNRUX\\RRRRNNR6333::=:==A=A=::AGGGKKKKKKKKNNNNNDGAADD===:=::66=66633333003030,0,,)):)%%%"""\1f\1f\1f\e\1f,3666=:3),""\18\14
+
+\a\0\99\99\99\99\99\99\ 3\ 3\a\ e\ e\11\e"",0:::=DN\85\88\88\85\88\88\88~\85zzz~~~~z~wttptmpmippmtwtttttwtwwwwzztz~\81\88\8f\8b\8f\8f\8b\8f\8f\8f\8f\8f\8f\92\92\92\96\96\96\92\99~~\81\81\81\85\85\88\8b\92\92\8f\92\8f\8b\85~zzzwwwz~\81\81\85\88\8b\8b\8f\92\99\99 \9c\99\92\9c\9c\9c\99\8f\8f\8b\8f\92\96\99\99 £ £§£ \9c\99\96\96\8f\8b\8b\8b\8b\8b\8b\8b\8b\8b\8f\8b\8f\92\8f\8f\96\96\99 £§££ \9c\99\99\96\92\92\92\8f\8b\8b\8f\92\8f\92\8f\92\96\8f\8f\8f\8b\8b\88\8b\8b\8b\8b\8b\8b\8b\88\8b\8f\92\92\99\92\8f\8b\8f\92\8f\92\8f\8f\8f\8f\8b\8f\8f\8f\92\8f\8b\92\92\8f\92\92\92\92\92\96\99\9c££§ \9c§´»»¾ÅÉÅÉÉÉÅÅÅÅÅž¾Â¾¾¾»»¸´±´±±´´´´¸´´±¸±´¸¸»»»¸¸»¸»¾»ÅÅÅÅž»´´´´´±ªª±§ª±§£ \9c\99\96\92\92\8f\92\8b\8f\92\99\99§ªª´´´´¸»»»¾¸»±ª£££ §£££££ £ ££££ª££ª§ª±´´´¸¸´´´ªª§§§ £§§ª±¸¸»»»¸´»¸´±´±ªªªªªª£ \9c\9c \99\99\9c\92\92\8b\8f\8f\8b\8f\8b\8b\8b\88iif_\__ccciiiiifRKUDGDDKDKGNNGNNKKGRGADGGDUf\81\81\85\88\88\8b\88\85\85\85\81~\81\81\85\81\81\85\88\8b\96\8b\8b\81~ziif\c\X_\RU\mpmmwttwtmppt\81\88\88\8b\88\85\85\85\88\81\85\85\85\81\81\81\81\81~\85\81~~zwzzwzztttttwzzzz\81w~mtwfmmi_mimip~twwpfiR_if_U\URURRRNKGKGKGDA=6::6663333333333330000006=A==GDGDDGGKNRUXX\XRRRNNKN:63366:6A:A:A:66=GGGGGKGKGKKKKNNNDDAAAA===::=66::66330300000,0,,00))%:%%%%"""\1f\1f\1f\1f%066:6:=,%"\1f\1f\14\11\a\ 3\a\99\99\99\99\99\99\99\a\a\a
+\ e\11\e""03=:=AKR\88\88\88\88\88\88\85~\85zzz~~~~~zwtwptptpmppmttpptttwtwwzz~zwz~\81\88\8b\8b\8f\92\8f\92\92\92\92\92\92\96\92\96\96\96\99\96\96\85\88\88\85\88\88\88\8b\8b\8f\92\92\8f\8f\8b\88\81\81~zwzw~~\81\81\85\85\8f\8f\8f\96\99\99 \9c \9c\99\9c\96\9c\99\9c\9c££ £££§£££ \99\99\99\8f\8f\8f\8b\8f\8f\8f\8f\8f\88\8b\8f\8f\92\8b\8f\92\96\99\9c\9c ££ £ \9c\99\96\96\96\92\8f\8b\8f\8f\8f\8f\92\92\92\96\92\8f\8b\8b\88\88\88\8b\88\88\8b\88\88\8b\88\8b\8f\8f\96\92\8b\88\8b\8f\8f\92\92\8f\8f\8f\8b\8f\92\92\92\8f\92\8f\92\8f\92\92\92\92\8f\96\9c\9cª§ª§±±´¸¾ÂÉÅÉÉÅÉÅÅÅž¾Âž¾Â¾»¾¸¸¸¸´´±±±±´¸¸¸¸»»¸´»»»¾¾»»¾»¾Â¾ÉÂÅɾ»¾¾¾¸´´±±±ªªª§ª§§ªªª § \99\99\92\8f\8f\8f\8f\8b\8f\92\96\99ª±±´´¸´»»»¸¾»»±ª£§£££££££££\9c££ ££§§§±ª±´¸¸¸»¸¸¸¸±ªª§§££§£§´´¸¸¸¸±¸¸±±ªª§ª§£ £\9c\9c \9c\9c\9c\8f\8f\88\8f\8f\8b\8f\8b\8f\8b\88ifc__ccfcfiimff\RGUDGDDKDGGNNGKNKGGRDDDDDDUi\85\85\88\8b\8b\8b\8b\88\85\85\8b\81\88\88\88\8b\88\88\8f\96\96\8f\8f\85\81~wiicc_X_\__fmmpmttmppfmpt\81\85\85\88\88\88\88\88\88\85\85\85\88\85\81~\81\81\81\85\81~~~wzzwwztttttz~~~~\85w~pwzmmpm_mmmip\81ptwpccK___URXNRURRNNGKGDGGDDA==:6633333333333333330306ADAAKADDDGGKNUX\U\XURNNNKN6:3333:3=6=:A666=GGGGDGDGGGGKKKKNDDAAA====:::666633330330,,,,,))00)%%6%%"""""\1f\1f\1f")36:=:6A)"%\e\e\11\14\a\a\ 3\99\99\99\99\99\0\99\ 3\a
+
+\ e\14\e"%3::=DDNR\8b\88\8b\88\88\85\88\81\85~zz~~~~~zzwwtwptpppppppmmtptttwwwwzzz~~\85\85\8b\8f\8f\92\92\96\96\96\92\96\92\92\96\96\96\96\96\96\96\88\8b\8b\8b\8b\8b\8b\8f\8b\8f\92\92\8f\8b\8f\8b\85\85\81~~~z\81\81\85\85\88\88\8f\8f\92\96\9c\9c ££ ££ \9c \99 \9c £ ££ £§ \99\9c\96\8f\92\92\8f\8f\8f\8f\92\8b\8b\88\8b\8b\8f\8f\8f\8f\92\96\99\99 £ \9c\9c\99\99\99\96\92\8f\8f\8f\92\92\8f\92\92\96\92\8f\8f\8f\8b\88\8b\88\88\8b\88\88\88\88\8b\88\8b\8b\92\8f\85\81\88\8b\8f\8f\92\8f\8f\8f\8b\8f\92\92\96\96\96\92\96\92\92\92\8f\8f\92\99\9cª±±´´¸»»ÅÅÅÉÉÅÉÅÅÉÅžž¾Â¾¾»¸¸¸¸´´±´±´¸¸¸»»¾¾»»¾»»Â¾¾Â¾ÂÅÂÅÂÅž»¸»»»¸±±±§£§£ª£ª§§ªª§ª § \99\96\92\8b\8f\8b\8b\8b\8b\92\92\99±±´´´´´´¸»»¸»»¸´§§£££££££££ ££ £ªªª±ª±´±±¸¸»¸»´¸¸¸±±§ª§£§££ª´±¸´´´±´¸´±±ªªªªª§££\9c \9c\9c \9c\9c\8f\8f\88\8b\8b\8f\8f\8f\8f\8f\85iic__ffiiiiiifcKNAUAGADKDDGKKKNKKGDRDDDDDAXi\85\88\88\8b\8f\8f\8f\88\88\85\8f\88\8f\8f\8b\8f\8b\8b\92\99\96\8f\8b\85\85\81zmmffc\c\cciimpmppimm_mpp~\81\85\88\88\8b\8b\85\85\88\88\85\85\88\85~\81\81\81\81\81z~zwzwwtwwwtwwz~~\81\81\85w~ttzpmtt_mppit\81mptt_cG_XNDRUNRRNRNNKGGDDDADDAA:6633333333333330330606DK=NKAAADGGKRXX\UXXURNNKGK3=33336333:6=666:GKDDDDDDDGGGGKKKAA=AD:=:::6:66633330000,,),))%,,,%""6""\1f\1f"\1f\1f\e\e\1f%,63:A=:="""\e\18\11\11
+\ 3\0\99\99\99\99\99\ 3\99\a
+\ e\ e\ e\11\e\1f)0A==GGXR\8b\88\88\88\85\88\88\81\85~zz~~~~zw~zwwttttppppmmiipppppttwwzzzz~\85\81\8b\8f\92\96\96\96\99\96\96\96\92\92\96\96\92\92\96\99\96\8b\8f\8f\8f\8f\8f\8f\92\8f\8f\92\92\92\8f\8f\8f\8b\88\88\85\81\81~\85\81\88\85\8b\8b\8f\92\92\96\9c ££§§££§§£ £\9c£ £ \9c \9c\9c £\9c\9c\9c\99\99\99\96\96\92\8f\8f\8f\8f\92\8b\88\8b\8b\8b\8b\8b\8f\8f\8f\92\96\96\9c\9c £ \9c\9c\9c\9c\9c\99\92\92\92\92\92\92\8f\8f\8f\96\92\8f\8f\92\8f\8b\8b\8b\88\88\85\88\85\88\88\85\8b\85\88\8b~\81\81\88\8b\8b\8f\8f\8f\92\8f\8f\96\96\96\99\99\96\92\92\92\92\8b\92\92\99£±±´´´¸´»»»ÅÅÅÉÉÅÉÅÅÉÉÅÅž¾¾Â¾¾»»¸¸¸¸´´´´´´´¸¾Â¾¾»¾»ÂÂÂÂÂÂÅÅÅÂÅÅÅ»»±¸¸¸´±±ª±ª££££§ £§£§ª£§ £\9c\99\92\92\8b\8f\88\88\88\88\8f\92\96±´±´´¸´´´´»»»¾»»¸ª££§£££ £§£§ª£§±´±´¸±´´´¸¸´»±´´´´±±ª§§§\92 ª §´´¸¸´´±¸´±ªªªªª§ \9c \9c\9c\9c \9c\9c\99\8b\8b\85\8b\88\8b\8b\8b\8b\8f\85ifcccifmmiiffcNGNAU=GADKDDGGGNKGKGDRDDDDGA\m\85\88\85\8f\92\92\92\8f\8b\88\92\8b\92\92\8f\92\8f\8f\96\96\92\8b\88\81\85~~ppiic\f\ffiiipimmfii_mmmz~\88\88\88\8b\8b\88\85\88\88\88\88\88\88~\81\81\81\81\81~~zwzwwtzzwwzz~\81\81\81\85\88~~wwwzmtwcwttft\81mptt\cG\\KDRRNRNRNNNNGGAGADDADA=6:66666663333666666=66DXARGAAADGGNN\_X_XXURNKKGG3=6333333333:666:GGDDDDDDDDDGDGGKAA==D:=:=6:663333000,,0,))))%),))"\1f\1f:\1f\1f\e\e\1f\e\e\1f\18\e)066:=:=:"\1f\1f\e\18\11\11\a\ 3\0\99\0\99\0\99\a\0\a
+\ e\ e\11\14\18",0DGKU\_\85\8b\8b\88\88\85\85\85\85\85~~~\81~~~zz\81zzwtwptppppmifimmpimptwwwwwz~\81\85\88\8b\92\92\96\96\99\96\96\96\8f\92\96\96\92\92\92\99\96\8f\92\92\92\92\92\92\92\92\92\92\92\8f\8f\92\92\8f\8f\8b\8f\8b\85\81\88\85\8b\8b\8f\8f\8f\92\99\99 ££§§§§§§££ § £ \9c\99\9c\9c\99\99\9c \99\99\99\96\96\9c\99\99\96\92\92\92\92\8f\8b\8b\88\88\8f\8b\8f\8f\8f\8f\8f\96\99\99 \9c\9c \9c\9c\99\9c\9c\9c\9c\96\92\96\92\8f\8f\92\8f\92\96\92\8f\8f\92\92\8f\8f\8b\8b\8b\88\88\88\88\88\88\88\81\81\81~\81\81\88\8b\8f\8f\8f\8f\92\92\92\96\99\99\9c\96\99\96\96\96\96\92\96\96\9c±´´¸¸¸¸¸»»»ÂÅÅÅÉÅÅÅÉÅÅÅžž»Â¾¾»¸¸´´´´´±´´±¸»Â¾¾ÂžÅÂÅž´¸±»¸¸±´±§§£ ££££££ £§£§£ \9c\99\96\8f\8f\8b\85\85\85\8b\8b\8f\96´´´´´¸´´´¸¸¸»¾»»»´±ª§££££££§§§ª§ª±±´±´´´´¸¸´´´¸¸´¸´´´±±ªªª§§\92\92§\9c§¸´¸¸´±´´´±ªª§ª£\9c \99\9c\99\9c\9c\9c\99\99\96\88\88\81\88\85\88\88\88\8b\8f\88ifcfipmppimfccNGNAU=GADKDAGDDKKGKGGUADDDGD_p\85\88\85\92\92\96\96\92\8f\92\96\8f\96\96\92\96\92\92\92\8b\8f\88\81~\81zzttiif\f\fifffmfii_fcciipw~\85\85\85\88\88\85\88\88\88\85\88\85\85~\81\81~\81~~zzwzzwwzzzzzz~\81\81\81\85\8b\81\81zwt~mtzcztpft\81mpwt\cD\\DDRRNNKNRKKKDGDDDAAADDA:=::666666666::====AAAG\DNKADAGGGKN\cXcfURNKGGDD3:63333330336366:DDADDDAAADADADDGAA=AA::::663330000,,,,,)))))%%)"%\1f\e\e6\e\18\18\18\e\18\18\e\14\18,3::=::A6%"\1f\1f\e\11\ e
+\a\ 3\0\ 3\ 3\ 3\0\a\ 3\ 3\ e
+\ e\11\14",3AGNN\_\88\88\88\8b\8b\88\81\85\85\85\85\81~\81\85\81\81~~~~zztttmppmmpmifffimiimpttttww~\81\88\88\8b\92\92\96\99\99\96\96\96\92\92\92\92\92\8f\8f\96\96\8f\96\92\92\96\96\96\96\96\92\92\92\92\92\92\96\92\92\92\92\96\88\96\92\8f\8f\8f\92\92\96\99\9c\9c ££§§§ª£§§£££ £\9c\9c\99\96\96\99\96\92\96\96\96\8f\96\92\92\99\9c\99\96\96\92\92\96\8f\8f\8b\88\88\8f\88\8f\8f\92\8f\92\96\99\99\9c\9c\9c \9c\9c\99 \99\99\9c\99\92\96\92\8f\92\92\8f\92\92\92\8f\92\92\8f\92\8f\8f\8f\8b\88\85\85\88\88\88\85\81\81\81~~\81\88\8b\8f\8f\8f\8f\92\92\92\99\99\9c\9c\9c\9c\99\99\96\99\96 \99±±´¸´»»¸¸¸»»»ÂÅÅÅÉÅÉÅÉÉÅžÂÂÅž¾Â¾¾»»´´´±±±±´´»¾ÂÂÂÂÂÂÅÂÅÅÂÂÂÅž»¸¸´¸¸¸±±´§ª£§ § \9c £ ££\9c\9c\99\92\92\8f\8f\85\81~\8b\88\92±¸´´´´´´´¸¸¸¸¾»»¾¸»±§§£££§§§ªªª±§±´±¸´¸¸¸´´¸±´´¸¸¸¸¸´´´±ªª§ª§\92\8f ª¸¸¸´´±±±±ªªª§§ \9c\9c\96\99\99\99\9c\99\96\96\8b\81\85\81\85\85\85\85\85\8b\8b\88ffcipwpttimff_RGNDU=GADKDDGDDGGGKGGUADDDKD\p\85\88\88\96\96\96\96\96\92\96\99\99\99\99\96\96\96\92\8f\88\8b\85~~~zwppimc_f\cfc\ciUXf_cc_fctz\81\81\85\85\85\88\88\88\85\88\88\88\85\85~\81\81\81\81z~zzzzzwzzwzwz~~\81\85\85\88\8b\85\81~wt\81ptz_zpmfz\81imww\cD\XAANRNKKNRGGKDDDAD=DDADD:==66:66:::::==AAAADDDKXGKKDDDDGGKR_fiwiRRKKGDAA3:36333330003333:DDAAAAAAAGAAAAADAA===::6:63330300,,)),))%%)%""%"\1f\18\18\143\14\14\18\14\18\14\11\18\11\1400=::=:D:%%\1f\1f\1f\14\11\11\a\ e\a\a\a\a\ 3
+
+\a\ e\ e\ e\14\18%06GKRR__\88\8b\85\88\88\88\81\88\85\85\85\81~\81\85\81\81\81~~~zwtttmmmmmmmiffffiiipptttttw~~\85\85\8b\8f\92\96\96\99\96\92\96\92\96\96\92\8f\8f\8b\92\96\8f\96\96\92\96\96\99\99\99\96\96\92\92\96\96\99\96\96\96\96\99\96\99\96\96\96\92\96\96\99\9c £§§ª§ª§ª££ \9c\9c \99\99\96\92\92\92\96\8f\92\8f\92\8f\92\8f\8f\99\99\99\96\96\96\92\92\8f\8f\8b\8b\8b\92\8f\8f\92\92\92\8f\99\96\96\9c\99\99\9c\9c\9c\9c\9c\99\99\9c\99\96\99\96\92\92\96\92\92\96\92\92\96\92\8f\8f\8b\8f\8b\8b\8b\88\88\8b\85\85\85\81\81~~~\85\88\8b\8f\8f\92\92\96\92\96\99\9c\99\9c£\9c \9c\96\99¸¸¸´´¸¸¸»»»¸¸¸»»ÂÅÅÅÅÅÅÉÌÉÉɾ¾Â»¾Â¾»»¸¸¸´±´±¸»¾¾ÅÂÂÂÅÉÂÅޞ¾Â»»»´´´´±±´ªª§§£\9c\9c\9c\9c£\9c\9c \9c\99\99\92\92\8f\8f\85\81~\88\88\92±¸´´´´±±±´¸¸»»»»¾»¾»ªª§§£§ªªª´´´´¸¸¸´´¸´¸´¸´´¸¸¸´´´´±ª§\92\92\8f§¸»¸¸´´±±§ªªª££\9c\9c\9c\92\96\96\96\99\92\8b\8f\88\81\81~z\81~~\81\88\8b\88wiimwzwwtmpcf\UGNGUAGDDKGAGDDGDGKGDUDDDDND_p\85\8b\88\96\96\96\99\99\96\99\9c\9c\99\99\96\92\96\8f\8b\85\85\81~~zzwppimf_f_cc\\URUU_\c_cfcpz~~\85\85\88\88\88\88\85\88\88\88\81\81\81\81~~~zzzzwzzzzzzzz~z\81\85\88\85\8b\8b\85\81~wtmptw_wmmf~\81fmtwXfD_X=ANRNKKNNKGKGDDADADDDGG=A==::::=====AADDDDGGGKUKKNGDKGGGKUcfizfRNKGDA=:3:3:6:0330000033:DDAAA===AD=A===A==:::6666333300,,,,)))%%""%"%\1f"\1f"\18\18\140\14\11\14\14\11\11
+\ e
+\1100::=A=D=0)"\1f"\18\14\14\11\11
+
+
+
+\a
+\ e
+\ e\ e\11\e\e3:AKNUUmi\85\88\88\85\85\88\85\85\85\85\81\81\81\81\85\85~~~~\81zwttpmiimiimiffcffiimppttttzz~\85\81\8b\8f\92\92\96\96\96\92\92\92\92\92\8f\8f\8b\8b\8f\92\92\96\96\96\99\99\9c\99\9c\99\99\92\96\96\96\99\99\99\99\99\9c\99\9c\9c\99\99\99\99\99\9c £££§§ª£ªª§ \99 \9c\9c\96\96\92\8f\92\8f\92\8b\8f\8b\8f\8b\8f\88\8f\96\99\96\99\96\96\92\92\92\8f\8f\8f\8f\92\92\8f\96\96\96\92\99\92\96\99\96\99\9c\99\99\9c\99\99\99\9c\9c\96\99\96\96\96\92\92\92\96\92\8f\92\92\8b\8f\8b\8f\8f\8b\8f\8b\8b\8b\85\81\85\81\81\81~~\85\88\8f\8f\8f\92\96\96\96\99\9c \9c§¾ÌÉ \99\9c¾»»¸´¸»¸»»»¸¸¸»»ÂÅÅÅÅÅÅÉÉÌÉÉž¾¾Â¾¾Â¾»»»´´´±±±±¸»¾¾ÂÂÂÂÂÅÂÂÅÅžž»»´¸¸´±±±ª§£ \9c \9c\9c \9c\9c\9c \9c \9c\99\99\96\96\8f\8b\8b\85\81~\88\99´±±¸´´´´±±±´¸´»»»»¾¾Â¾¸´ªª§ªª±±±¸¸¸»¸¸´´¸´´±¸´¸´¸¸±´´´±±±±\92\9c±ª±¸»¸¸´´±±ªª§ªª±±ª £\9c\99\9c\96\96\96\92\96\92\8b\8b\81\81\81tw~~~~\85\88\88\85\88t~z~zzwpmfcRUKNDUAGDDKGDGADGDKKKGUDDDGNA_t\85\8f\88\96\96\96\9c\9c\96\9c\9c \9c\99\96\92\96\8f\8b\85\88\81~zzwtptmmi_f\_\X\XRUU\\cU_fftz\81~\85\81\88\85\85\85\81\85\85\85\81\81\81\81~~z~zzzwzzzzzz~z\81\81\85\88\88\88\8b\8f\81\85~wwmtpt_tpif\81\81cmpwXfD_X=ANRNNNNKGGGKDDADADDGGGA=AA======AAADDGGGGKKKNRNKNGGNKGGNXccfwcRNGGD=::6636:=A3000000006DDAAA===DA:=:=6===::6663330300,,,,))%%%%"\1f""%\1f\1f\1f\1f\18\18\14)\14\11\11\11\ e\ e
+\a\ 3\ e,0:6=A=DA3,"%%\e"\18\e\14\14\11\ e\ e
+\ e\11\ e\ e\14\11\1f\1f:=DNRUXpt\81\85\85\81\81\85\85\85\85\81~\81\81\85\81\85~~z~~wwptmmiiiiimfffcffifmpmptttzz\81\85\85\8b\8f\8f\92\92\92\92\92\8f\8f\92\92\8f\8f\8b\8b\8f\8f\96\96\96\96\96\99\9c\99\9c\9c\9c\96\99\96\99\9c\9c\9c\9c\99\9c\9c \9c\9c\9c\9c\9c £§££ª§ª§ªª£ \9c\9c\99\9c\99\99\92\8f\8f\8b\8f\8b\8f\88\8b\88\8b\81\85\85\8b\92\99\96\99\99\99\92\96\96\92\92\92\92\96\96\96\99\99\9c\96\9c\96\96\96\96\96\9c\99\96\99\96\9c\99\9c\9c\96\96\96\92\92\96\96\96\92\8f\92\92\8f\8f\8b\88\8b\8b\8b\8f\88\8f\8b\81~\81\81\81\81~\81\85\8b\8f\8f\92\92\96\96\99\99 £ ÂÌÌ É\99¾¾»¸¸»»»¸»¸´¸»»ÂÂÅÅÅÅÉÉÉÉÉÅɾ¾¾Â¾¾»Â¾»»»¸´±±ª±±´¸¾»ÂÅÂÅޞÂÅž¾¾¸¸¸´±±±ª§£ \9c \99 \99\99\9c\99\9c\99\99\99\99\96\8b\8b\8b\85\81\81\8b\9c´´±¸´´´´±±±´´»»¾»¾Â»¸ª±±±¸´»»¸»¸´´¸´´±±´±¸¸¸¸´¸´±±±±±±±´´´´»»»¸´±±±§ª§ªª±±ª££\99\9c\9c\99\96\96\92\96\92\88\88\81~\81ttzz~z~\85\85\88\8bw\88\81~~zztif_UUNNGUAGDDKGDGAAGAGKGKUGGDDRA_t\85\8f\88\92\99\99\99\9c\99 \99\99\96\99\92\8b\88\88\81~~wtwptipfif\_XX\URRXX_cR\citz\81~\81\81\88\85\85\85\85\85\81\85~\81~~zzzzzwzzwwzzzz~~\81\85\85\88\8b\8b\8b\8f\85\88~wtpwpp_ptif~\81_mptXcG_X=DNRRNNNKKKGGGDDDAADGGDDAAD===AAAAADDDGGGGKKNNNNNKKKRKGGNU__XcUNKGDA=:=3306=AD:000000003DDAAD=GAGD::6:66==::66633000,,,)))%%"%""\1f\1f"""\1f\1f\1f\e\18\e\14,\14\11\11\ e\ e\ e\ e\a\0\ 3),63:==DD==%,0%%\e\1f\18\18\18\11\11\ e\ e\14\11\14\18\1f)3KNNNNU\tw~\81\81\81\81\85\81\85\81\81\81~~\81\81\81~~wz~wwtpiifffffifffcfiiimmmppptwz\81\85\85\8b\92\8f\92\8f\96\92\8f\92\8f\92\92\8f\8f\8b\88\8f\8b\96\96\96\92\96\99\99\99\9c\9c\9c\99\99\99\99\9c\9c\9c\9c\9c £ ££§££ª§ªª§ \99\99\96\99\96\92\8f\88\8b\88\8b\85\85\85\85\81~\81\88\88\8b\8f\96\99\96\99\99\96\99\99\96\96\96\96\99\96\99\9c\9c \99\9c\99\99\96\96\92\99\96\92\96\96\99\99\99\99\96\96\96\92\92\96\96\92\92\92\8f\92\8b\8b\8f\85\88\88\8b\8b\88\8b\88~z~~\81\81~\81\85\88\8f\92\96\92\96\99\9c\9c£»¾ÂÅÉÌÉÌÉÅ»»¸»¸»¸¸´´¸»»¾ÂÂÂÂÅÅÉÉÉÉÉž¾Â»¾¾¾¾»¸»¸´±ªª±´±´»¾¾Å¾ÅÂÂÅÂÅÂÅž¾Â¾¾¸¸¸´´±ªª§££ \9c\96 \9c\96\96\99\96\9c\99\99\96\96\92\8b\8b\8b\85\85\81\8f ±´´´´´±±ª±±´´¸»¾¾ÂÂÅž»±±±±´´±»¸¸¾¾»»¸´´´±±´´´¸»´´±¸´±´±´´´´´¸¸¸¸¾»¸¸´±±±§§ªª±´±££\9c\9c\9c\96\92\92\92\92\92\88\85~~\81ttwwz~z\81\81\8b\8f\8f\8b\8f\8b\81~~pic\XUNNGUDGGDKGDGDAGDGKGKUKKDGUAcw\88\8b\88\92\96\99\99\9c\9c \99\9c\96\99\92\8b\88\88\85\81\81wtwtpppimf_\XX\URR\\\_U\_mtw~~~~\88\85\81\81\81\85\81\81~~z~zwzzzwzwwwwzz~~\81\85\88\85\88\8b\88\8b\8b\85\88~ztptpm_mticz\81\pttX_Dc\:ANURNNNKKKGGKGDDA=DGDDGAAAA=AAAAADDDDGGGGKKKNNRNKKKNNGKKU\\UXRNKGDA=::0336ADG=00000,003DDDDGAKDGD=66636::6633330000,,)))%%"""\1f\1f\1f"""""\1f\1f\e\18\1f\140\14\11\ e\ e\ e\ e
+\a\99\0
+\a
+06:=AAAA,:30)))\e\e\e\14\11\14\14\e\18\18\1f%0=NRRRUfiwz\81\81\85\81\81\85\81\85\85\81\81\81\81~\81\81~~wwzwtpmffffcccfffffiimmmippmppww~\88\85\8b\92\92\92\92\96\92\8f\8f\8f\8f\8f\8b\8f\8b\8b\8b\88\96\96\92\92\96\96\99\99\9c\9c \9c\9c\9c\9c \9c £££££ £§£§§£ªªª§§£\9c\9c\96\96\96\96\92\8f\88\88\85~~~z~z~z\85\85\88\88\8b\92\96\99\99\96\99\99\99\99\99\99\99\9c\99\9c £\9c\9c\99\99\99\96\96\99\92\92\92\92\96\99\96\96\96\99\96\92\92\96\92\92\92\92\8f\8f\8f\88\8b\85\85\85\88\88\85\88\85zzz~\81\81~\81\85\8b\8f\92\92\92\99\99\9cª¸¾ÂÅÉÉÌÌÉÅž¾¾¾¸¸´¸¸´´´¸»»¾¾ÂÂÂÂÂÅÉÉÉÅ޾¾¾¾¾»»¸¸´±ª±ªª§ªª±±±¸»Â¾Å¾ÅÂÂÂÂÅÅž¾Âž¸¸»¸´±ª§§£ \99\99 \96\99\96\96\99\96\99\92\92\8f\8f\88\88\85\85\81\8b ±±±´±±±ª±´´¸¸¾ÂÅÂÉÉ»´±±±±´¸¸´¾»»¾Â»»»´´´´±´´¸¸¸¸´±¸´´¸´´´¸¸¸»»¸»¾»´¸¸´±±ªª£§ª±±´£\9c \9c\96\92\92\92\92\92\8b\88z\81\81ttttz~z~\85\8b\92\92\8f\92\8f\85\81~pi_XXUNNGUGKGDKGAGDDGDGKKKUGNGGXAmz\8b\8b\8b\92\96\9c\9c\99\9c \9c\99\9c\96\99\96\88\88\88\88\85~ztwtptpmmfc_XX\URR\X\cU\citz~~~\81\85\81~~~\81~~zzwzwtzzzzzwwwzz~~\81~\85\88\88\88\88\88\8b\88\85\85zztptmp_mpm_w\81XmtpX_Dc_KARURRRNKKKKGGGDDDADDADG==A==AAAAADDGGGKKKKNNNRNNKKKKKKGKR\XURNKKGDA=::060:AADA:3333,,,3ADGGKDKGDA=66633::6663330,,,,)%%%""\1f\1f"\e\e\1f\1f"""%\1f\1f\e\18\1f\143\14\11\ e\ e\ e\ e
+\a\99\99\a\0\ 3\ 3\ e\11:==A=D=660,,)\1f\1f\18\14\18\18\1f\1f\e),GGRUXU_itwz~\81\81\81\81\81~\85\88\85\81\81\81\81\81\81~zwtwtpmiccccX\_ccfcfiiiimmpppppww\81\88\88\8b\8f\92\92\92\99\92\92\8f\8b\8f\8f\8b\8b\8b\8b\88\88\99\92\96\96\92\96\99\9c\9c\9c \9c \9c \9c£ ££§§§££££££ª§ªª£ \9c\99\92\92\92\8f\8f\8b\85\85\81zzzwwwww\81\85\88\85\85\8f\96\96\96\92\99\99\99\9c\9c\99\9c\9c\9c £ \9c\99\99\9c\99\99\96\92\92\8f\92\92\96\92\92\92\96\96\8f\92\96\92\8f\8f\92\8f\8f\8b\88\8b\85\81~\85\85\81\81~wwwz\81~~\81\85\88\8f\92\96\96\9c §¸»ÂÅÂÉÉÌÌÉɾ¾»»´´´´±±¸»»¾»Â¾Â¾¾ÂÅÅÅÉÅÅž¾»¾»¸¸¸¸±ªª§§§§±´¸¸ÂÂÅÂÂÂÂÅž¾ÂÅž¾¾»¾¸±ªªª§££\9c\9c\99 \9c\96\9c\99\96\96\96\96\96\92\8f\8b\88\85\88\85\85\8b\9cª±±ª±±´´´¸¾ÅÅÅÉÉŸ±±´´´»´¸Â¾¾¾Å»»»´´´´´´´¸»»¸´´¸´´¸´´¸¸»»»¾»»¾»´¸¸´±ª§£§ª±±´±±±§ \99\96\96\92\96\92\8f\88z\81\81ttzw~~~\81\85\88\8f\92\92\96\92\85\81\81pi_NUURNGUKKDDKKDGGDGGGKGNUDR\K\Aw~\88\8b\8f\92\92\99\99\96\99 \9c\99\96\99\99\99\92\8b\8b\8b\8b\85\85zzzwtwtmmif_\\\XRR\\\fX\cipzz~z~\81~z~~~~~wtpwtpwwwwzwzwzzzz\81\81\85\88\88\88\8b\85\88\88\85\85~wwptmpcmpi_p~D_p\U\D_\NDNUURRNNNKKKGKGGAADDDDDA===ADAADDDDGGGKKKKNNNNNNKKKGGGGGN\XURNKKGDA=::363:A=DD=6630,066DGGGNGGDD==66633663330000,)))%%""\1f\1f\e\e"\e\e"\1f""%""\1f\e\18\e\140\14\11\ e\ e\ e\ e
+\a\99\99\ 3\99\0\0
+
+6::=:AA::300,\e"\1f\1f\1f%""),3KKRU\Xcmwwz~\81\81\81\81\81~\85\88\85\81\81~\85\85~zwwptiifc___URX\__cffiimipppptppzw\85\88\8b\8f\92\92\92\92\99\96\92\8f\8b\8b\8f\8b\8b\8f\88\88\88\96\92\96\96\92\96\99\99\9c\9c£ £££ §£££§§§§§£ £§§§ªª§ \99\99\92\8f\8f\8b\8b\88\81\81~wtttpppt~\81\85\85\88\8b\92\8b\92\8f\96\96\99\9c\99\99\9c \9c \9c\9c\9c\9c\99\99\99\96\96\99\96\92\8b\8f\8f\92\8b\8b\8f\92\99\8f\8f\92\92\8b\92\8f\8f\8b\8b\88\88\85~~\81\81zwwwzzw~~\81\85\85\85\8f\96\99\9c§ª±»¾ÂÅÅÉÅÉÉÅÉž¾»¸´´´´±±¸¸¸¾¾¾»Â»¾¾ÂÅÅÉÉž»»¾¸´¸´¸±ªª§ª§§´´´¾ÂÂÅÅÅÅžÂÂÅÅÅÂÅÂÅÅž»±±±ªªª§§ \9c\99\99 \9c\96\99\96\96\96\96\92\96\92\8f\88\8b\85\8b\88\88\92\9cª§ªª±´´´´¸¾ÂÅÉÉÉÅ´±±¸±´´»¸»Â»Â¸¸¸´±±±´´¸»¸»´¸´¸´¸¸´´´»¾¾¾¾¾¾»»¸¸´´±§£§§ª±´´±´±±ª £\9c\99\99\96\96\92\8f\88~\81\81z~~z\81zz~\81\85\8b\8f\92\92\96\88~~pfcNUURNKUKKDDKKDDGDGDGKGRUGU_c\81Azz\85\8b\8b\92\92\96\99\96\99 \9c\99\96\96\99\99\96\8f\88\8b\8f\88\85\88\81~wwwwtpmic_\__\UR_\_f\__mpzzzzz~~zzzz~ztpptmmttwtwtzwwz~z\81\81\88\85\88\88\8f\88\85\88\85\81zzwptppfppi__z=_fXU_A\XRDNXURURNNNKKGGDDAAADGDDDAA=ADADDDDGGGGKKKKNNNNNKKKKKGGGGN\XURNKKGDA===0366==DDA366,0,:6DGGGNDDAA::66:333300000,,0)))%%""\1f\e\e\e\1f\e\e\1f\1f"""""\1f\1f\18\18\14%\14\11\ e\ e\ e\ e
+\a\99\99\0\99\99\99\a\99\11\e6:6==:=6366,,%"%,%%6=GNNRXcfimwz~~\81~\81\81\81\81\85\85\85~~~\81\85~wwtmpfcc_X\\XRUX_\ccfffimppttttpzw\85\88\8f\8f\92\96\92\96\99\96\92\8f\8b\8f\8f\8b\8b\8b\85\85\88\96\96\96\96\92\96\96\99\9c\9c£ £§§£ §££ §ª§§§§£§§£§ªªªªª\9c\9c\9c\99\96\92\8b\8b\85\88\81\81zwtppmppptz~\81\85\88\88\8f\8b\8f\8f\92\92\96\99\96\99\9c\9c \99\9c\99\9c\99\99\96\99\96\92\96\96\92\8f\88\8f\88\8b\8b\88\8f\8f\96\8b\8b\8f\8f\8b\92\8f\8f\8f\8b\85\85\81wzzzwtttwwzz~\81\81\85\88\92\99\9c£ª±´¾ÂÂÅÉÅÉÉÉÅÉÅž¾´¸¸¸´±±´¸¸»¾¾»¾»¾¾¾ÅÅÉÉž¾¾Â»»»´¸´´¸±ªª§ªª§ª´´ª»ÂÅÅÉÉɾÅÅÅÅÅÅÂÅÅÅžŻ¾´±±ªª§££\9c\9c\9c\99\9c\99\92\96\92\96\92\92\92\96\92\8f\8b\8b\88\8b\8b\8b\96\9c§§ª±±±±´´¸´¸ÂÂÅÉÉÉÅ´±´¸´´¸¸»¸¾¾¾Å»¸´±±±´¸¸¸»´»´´±´¸´´´¸¸¸»»»Â¾¾¾¾¸´´´±±ª£§ªª±¸´´´±´ª££ \9c\96\96\96\92\8b\81\85\85~\81\81~\81z~\81~\81\88\8b\8f\8f\92\85~zpffXUXRNNUNGDDKKDGGDGGKKNRXGXci\85D~z\85\8b\88\92\92\99\99\92\96\9c\99\96\96\96\96\96\92\85\85\88\8b\8b\88\8b\85\81~zzzwtmif\_c__XU__\f__cmpz~zz\0~~zz~zz~ppmpipppwptpwwww~z\81\81\85\88\85\88\8b\88\85\88\85\81wwwptpptpti_\w:_RUUcG\RUDNXUURRRNNKKGGDGAADDGGGDDD=ADDDDDDGGGGKKNNNNNNNKKKKKKKGGK\XURNKKGDA=::3336:=AD=3::0=,=:AGDGKAA==:666633330000,,,,))%%"""\1f\1f\e\e\e\1f\e\1f""""\1f\1f\1f\e\18\18\14\1f\14\11\ e\ e\ e\ e
+\a\99\99\99\99\99\99\0\99\0\0\ e6"6:6=:6::::,"303::AKNNX\fimpwzzz~~\81\81\81\81\81\81\81zz~~\81zttpicf\_XXXUUNRU\X__cfcfmmtwwwwtzz\85\88\8b\8f\92\92\92\96\96\99\8f\92\8f\8f\8f\8b\8b\88\85\88\88\99\96\96\92\92\96\96\99\9c\9c £££§£££§§£§§§§§£££§§§§ª§§§\9c\99\99\96\92\92\88\85\85\85\81~~wtppimmptz~~\85\85\85\88\88\8b\8b\8f\8f\92\96\96\99\99\99\9c\96\99\92\99\99\96\96\99\96\8f\92\92\92\8b\88\8f\88\8b\88\88\8b\8b\92\88\88\8b\8b\8f\8f\8f\8f\8f\88\81~~zwwttttwwwwz~~\81\81\88\96\99§¸´¸¾ÅÂÉÉÉÉÉÉÅÉžŻ¸»»¸´±±´¸¸»»¾»¾»¾¾ÂÂÅÉÅž¾¾¾¸»¾¸¸¸´¸±±±ªª§§ª§ª±±ª¾¾ÂÅÉÉžÅÉÅÅÉÅÅÅÅÅÅž»´±±ª§£§£\9c\99\9c\9c\9c\99\92\92\8f\92\8f\92\92\96\96\92\8b\88\8b\8b\8f\8f\99\9c£ªªª±±±±±±´¸¸»ÅÂÅÉÌÅÅ´´´¸´´´¸¸¸»¾»Â¾¾´¸´´´´´¸´»¸»¸´±´´´±´´¸´»»¾Â»»¾»»´¸¸±´§ªª´¸´¸´´±ª£§ £ \96\96\99\92\8f\85\81\88\81\85\81\81\81~z~~~~\85~\81\81\81zwpif\UXUNRURKDDKKDDGGGKNNRN\D\fm\81w\81~\85\8b\88\8f\92\96\96\92\92\99\96\92\96\96\96\92\8b\85\85\88\88\8b\8b\8b\88\85\81~zzwwpfi\\f_\\Xc__f_c_mpzzzz\0~zwwzzwzppmmimpttptptwww~z~\81\81\88\88\88\8b\8b\85\88\81\81zztpwmpwpwm_Ut=\NRUcK\NXGNXUXURRNNKKGGDGDAAGDGKGGGAAKGDGDDGGGGKKKNNNNNNKKKKKKKGGK\XURNKKGDA=::33033==A:06:=AAA==DAD=A:::::66633000,,,,,))))%%%""\1f\1f\e\1f\e\1f\e\1f\1f""%\1f\1f\1f\e\18\18\14\1f\14\11\ e\ e\ e\ e
+\a\99\99\99\99\99\99\99\99\99\99\ 3\ 3
+\e63::6=A==::::===DKKR\_impttwzw~~\81\81\85\81\81\81~zpzz~wppifcc\UUUUURKNRXU\\_f_fmpttwzww~~\85\88\8b\8f\92\92\92\92\96\96\92\92\8f\8f\8f\8b\8b\88\88\8b\88\96\92\96\96\96\96\99\99\9c\9c £££ª§£§£§§§ª§ª§§§§£§££§£ £\9c\96\99\96\8f\8f\88\81\81\85\81~~wtppmmmptzz\81\81\85\88\85\85\88\88\8b\8b\8b\8f\92\99\99\99\99\99\96\96\99\96\92\96\96\92\8f\8f\8f\92\88\88\8b\88\88\85\88\8b\88\8f\88\8b\8b\8b\8b\92\8f\8f\8f\8b\81\81~zwttpttttwz~~~~\85\88\99\99´»¸¸¾ÅÅÅÉÅÉÉÉÉÅÅÂÅž»¾»»´´´¸¸¸»»¾»»»¾¾ÂÅÅÅž¾¾»¸¸»»¸¸´´´±±ªª§§ªª»ÂÅÂÉÉÉÅÂÅÅÅÅÅÂÅÉÅž¾¾¸´±§§§£\99\9c\9c\9c\9c\96\92\92\8f\92\92\92\8f\92\92\8f\8b\88\8b\8b\8f\92 \9c£ªª±±±¸¸¸¾ÅÂÂÅÌÅÉ´¸´´´´´´´´¸»»¾¾»¸¸±±±´´´´»¸»¸¸´´´¸´´´¸´¸¸»¾¸¸»»»¸»¸´´±ªª¸»¸¸¸¸±ª§§£§ \99 \9c\92\92\88\85\8b\85\85\85\85\81~w\zzzz~z\81~wtpmcXXXUNRXNKGGKKDDKGKNNRUR\A_fp\85z\81\81\81\88\88\8b\8f\92\92\92\8f\96\92\8f\92\92\92\8f\88\85\85\88\85\88\88\8b\88\88\85\81wzwtpii__f___\c__fcccmpzzwz\0zzzzwzwwtpmmimmppptppwwwzz~\81\81\85\85\8b\8b\88\88\88\81\81~wtpzmtzmwm_RpA\KNR_NXK\KNXXUURRRNKKGGDDD==KAGNKKKAKNGGKDGGGGGKKKKNNNNNKKKKKKKGGK\XURNKKGDA=::63003::=:066AA=A::A=A==::66666633000,,,,))))%%%"""\1f\1f\1f"\1f\1f\1f\1f""""\1f\1f\1f\e\18\18\14\e\14\11\ e\ e\ e\ e
+\a\99\99\99\99\96\99\99\99\99\99\0\a\a\14\18\e66:ADAA====AAAGGKU__fmpttwwwzz~\81\81\81~~pwiwwwpifcc_UXURRRUNKNNRRXX\c_fmpwtwzwz~\81\85\88\8b\8f\8f\8f\92\8f\92\92\96\92\8f\8f\8f\8b\8b\88\88\8b\88\96\92\96\96\96\96\99\99\9c\9c £ ££ª£§§§§ªªª§ª§§ª§£§§££ £\9c\99\92\96\96\8b\8b\85\81\85\85\81\81~zwtmpmptwzz~\81\81\85\85\81\81\85\88\85\8f\8f\8f\96\96\96\96\99\92\92\99\96\96\92\92\92\8f\8b\8f\8f\88\8b\88\85\88\88\88\88\85\88\88\8b\8b\88\8b\8f\8b\8f\8b\8b\85\81zzztpttttwwz~~\81\81\85\8b §±¸»»»ÂÂÅÅÉÉÌÅÅÅÂÅÅÅž»»»¸¸´´¸¸»»¾»»»¾¾ÅÅÅÉɾ¾¾¸¸´¸»¸¸¸´´´´ªªªª±¸¾Â¾ÉÌÉÉÅÅÉÅÅÅÅÅÅÅž¾Â¾»´±§§£ \9c\9c\9c\99\99\96\96\92\92\92\8f\8f\8f\92\8f\8f\8b\88\8f\8f\92 £ §ªªª±´±±±´»¸¸¾Â¾ÂÉÅɾ¸¸´¸´´¸±¸´¸»»»¸´´´±´´´¸¸¸»¸´¸¸´´¸¸±±¸´¸¸»¾¸¸»¾¾»»¸´´±ª±±±¸¸»¸¸¸±ªªª§£ \9c£\9c\96\8f\8b\88\88\85\81\88\85\81\81z\zwzzzz~wtpmic\\XXRRXNNKKKKGGKGKKKNUR\K\ip\85~\81~\85\85\88\85\8b\8f\8f\8f\8f\8f\8b\8b\8f\8f\8f\8b\8b\88\88\85\85\85\88\88\88\88\88\81zzwpmmic_ic___cccic_cmpz~wzzzwwzzzwwtpmimimpmttppwwz~zz\81\81\85\85\88\88\88\85\88\81\81\81zttzmp~mti\Ni=\DKUUKUK\NR\\XXURRNKKGGDGGA=NDKNKNNDNRKGGDDGGGGKKKKNNNNNKKKKGGGGGK\XURNKKGDA=::63303==A63:3AD===:=:=:=::66666633,,,))),)))%%%%%"""\1f""\1f"\e\1f""""\1f\1f\1f\e\18\18\14\18\14\11\ e\ e\ e\ e
+\a\99\99\99\96\92\99\99\99\99\99\96\ 3\ 3\11\14\1103:DGDDDAAADAAGGNU\cfmpttwtwwzz~~~~~ptittpmfc__\UUXRNRRKKKKRNUUU__fmtwtwzw~z\81\85\88\88\8b\8b\8f\8f\8f\92\92\92\8f\8f\92\92\8b\8b\88\8b\8f\88\96\96\96\96\96\96\99\99\99\9c £§£ª§§ª§ªªªªªªªªª§§ª§ \9c \9c\96\8f\92\92\8b\8b\85\81\81\81\81\81\81~zwppptww~w~\81\85\81\81\81\85\85\88\85\8b\8f\8f\92\96\92\92\96\92\8f\96\92\96\8f\8f\8f\8f\8f\8f\8b\8b\88\88\85\85\85\85\85\85\8b\8b\8b\8b\85\8b\8f\8b\8f\8b\8b\81\81w~ztptttwtzzz~\81\85\85\8f§ª´»¾¾¾ÂÂÅÅÌÉÌÉÉÅÅÅž¾¾»»¸¸¸¸»»»¾¾¾¾¾ÂÂÅÉÅÉÉ»»»¸¸¸´»»¸¸¸¸´´ªªªªª±±±»»ÂÂÉÉÌÉÉÅÅÂÅÅÅÅÅÉž»¾»»±±ª§§§\9c\99\9c\9c\99\96\96\96\96\92\8f\8f\8b\8b\8f\8f\8b\8f\8b\8f\92\9c£§£§ªª±´´´´´»»»¾¾¾¾¾ÅÂÅ»»¸¸´´´´±´¸¸¸±±´±±±´´´¸»¸¸¸¸´¸´¸¸±±´´¸¸»¾´»»»»¸»¸´´´ª±±´´¸»»¸´±ªª§£ \9c£ \99\8f\8f\88\85\88\81\85\88\85\85~~wtzwwwzwpmcf_\\UUUNURRNKNKGKKKGNNRRUXRXmp\81~~z\85\85\85\85\88\8b\8b\85\8b\8b\88\88\88\8b\8f\8b\8b\88\88\85\88~\88\88\88\85\88\85~zztmpiccmc__cfcfic_cmpz~wzwzztzzzwzwtpmimmmmtpppttwzzz~\81\85\85\88\8b\88\85\8b\81\81~ztpzmpzmpf\K_:\GKRUGUK_RU\\XUXXRRNRNKDGKAANKNNNRRGNRNGGDDGGGGKKKKNNNNNKKKKGGGGGK\XURNKKGDA=::60303:=A36:6DAA::::366:6:66666333,,,,)))))%%%)%"""%"%"\1f"\e\1f\1f"""\1f\1f\1f\e\18\18\14\18\14\11\ e\ e\ e\ e
+\a\99\99\96\92\96\96\99\99\99\96\92\0\ 3\ e\11\11\11%:DGGGGDDDGDDKGNR_fimpttwptwwwzzzzztmmimmic_\\\UUUNNNNKKGGNKKRRX_fmtwtwwzzz\81\85\88\85\88\8b\8f\8f\8f\92\92\92\8f\92\92\92\8f\8b\88\8b\8b\88\99\96\99\96\96\96\99\99\9c\9c ££§§ª§ª§ªªªªªªªª£ \99\96\8f\8f\88\8b\88\85\81\81\85\81\81\81~~zwwttwzzw\81~\85\81\85\81\85\81\88\81\88\8b\8b\8f\92\8f\8f\92\8f\8f\92\96\92\8f\92\8f\8b\8b\8b\8b\88\8b\88\85\85\85\88\88\88\88\8b\88\88\85\8b\8b\8b\8b\8f\88~\81~~zttwttwtwwz~\81\81\85§ª¸»¾¾ÂÂÅÅÉÌÉÌÌÅÅÅÅÅžž»¾»¸¸¸»»»¾Â¾¾¾ÂÂÅÅÉÉÅ»¸»¸¸»¸»»¸¸¸´¸´±ª±±´¸»¾ÅÅÉÉÌÅÉÅÅÅÅÅÉÅÅÅž»¾»¸´±±ªªª§ \9c\9c\9c\99\96\96\96\92\92\8f\8b\88\88\8f\8b\8b\8f\8b\8f\92 §ª§§±±´´´±´»»»¾Â¾¾¾¾Â»»´¸±´±±´±±´´¸´±±´¸¸»»´»»¸¸»¸´¸±±¸´¸¸¸»¸»»»»»»¸¸¸´§±±±¸´¸»»¸±±ª§§£ \99£ \99\92\8f\8b\81\85\81\88\88\88\88\81\81ztwwttpticcc_\\URURURRRNNKGKNNKRRRRU\UXmt\81zfz\85\85\81\85~\8b\8b\81\88\88\81\85\81\88\8b\8b\8b\88\88\85\85~\88\85\88\81\88\85\81~~wppifcmc\fccfficccmp~~wzwwzwzwzw~wttpmppmmppppttwwzz~\81\85\85\88\8b\88\85\8b\81\81zztpzipwpif\K\=XDKRUKUK_UR__\XX\RURURGDGNKDNNRRNNNKKRNDDDDGGGGNKKKNNNNNKKKKGGGGGK\XURNKKDAA=::333366:=6:6:DD===:663366666666333,,,,)))))%%%%"""%%""\1f""\e\1f""""\1f\1f\1f\e\18\18\14\e\14\11\ e\ e\ e\ e
+\a\99\99\92\8f\96\92\99\99\96\96\96\99\a
+\ e\11\11"=DKKKKGGGGGGKGRRcimppwtwpwtzwzzwwwpppmmii__\X_URRKKKKKKGGKKKKRU\ciptttzzzz\81\81\85\85\88\88\8b\8f\8b\92\8f\8f\8f\92\92\92\8f\8b\8b\8b\8b\88\96\96\96\96\99\99\9c\9c\9c\9c £§ªªªªªªªª±ªªª§£££\9c\8f\92\8b\8b\88\88\88\85\81\85\85\85\81\85\81\81~z~www~~z~\81\85~\81\85\85\81\85\85\88\88\8b\8b\8f\8b\8b\8f\92\8f\8f\92\92\8f\8f\8b\88\8b\8b\8b\88\88\88\85\85\88\88\8b\88\88\8b\88\8b\88\8b\8f\8b\8b\8b\88\81\85\81\81ztwwwwwwwzzz\81~\85ª´»»ÂÂÂÅÅÉÉÌÌÌÉÅÉÅÅÅž¾¾¾»»»»»»¾Â¾¾¾ÂÂÅÉÉÉž»»¸¸¸¸»»»»¸¸´´´±ª±±´»ÂÂÅÉÉÅÌÅÉÅÉÅÂÉÉÅÂÅž»¾»¸¸´±±§ \9c\9c\99\99\92\92\8f\8f\88\8b\85\8b\88\8b\8f\8f\96\96 §ªª§ª±¸¸´´»¾¾¾¾Â¾¾¾»Â¾¾»¸±´±±±±±±±´±±±ª´¸¸»»»»¾»»»»¸´´±¸´»¸¸¸¸¸»¾»»¸´¸¸¸ª´´´¸´¸¸¸´´±ª£§ \99£ \96\92\8f\8b\85\85\81\85\88\88\85\85\81zwttwpmpf_c__\\UNRUURRRRNNKNNRNRURUR\XXpw~icz\85\85~\88\81\88\88\81\85\85\81\81\81\85\8b\8b\8b\88\88\88\85\81\85\85\85\81\88\81\81\81~wttmifm_ci_fiimffcmtz~z~wwwwwwzwzwtttpptpppppttwwwzz~~\81\88\8b\8b\88\88\8b~\81z~wtwitpmfcXKXAUGKRRGXN_XR_\\\\_UXRXUKGKKNGRRUURKRNGNKGDDDGGGKNKKKNNNNNKKKKGGGGKK\XURNKGDAA=::6636636::636DDA=:6660033636666333,,,,))))))%%%%%%%%"\1f\1f""\e\1f\1f"""\1f\1f\1f\e\18\18\14\e\14\11\ e\ e\ e\ e
+\a\99\99\92\8f\96\8f\99\99\96\96\96\99\ 3
+\ e\14\11"ADKKNKKKKGGKKGNRcimptttttttwwzwttttptmiff__\\_XUNNKKKGGGGKKKKRRX_fppppwwwz\81\81\81\85\85\88\8b\8b\8b\8f\8f\8f\8f\8f\92\8f\92\8b\8f\8b\8f\88\99\99\96\96\99\99\9c ££§§ªªªª±ª±±±±ª§§£\9c\8f\8f\88\8f\8b\8b\88\88\81\85\88\85\85\85\85\81\81~\81~zz\81~~\81\81\81\81~\81\85\85\85\88\8b\88\88\88\85\85\88\8b\92\8b\8f\8f\8f\8b\8b\88\85\88\88\8b\88\88\88\88\85\88\88\8b\88\8b\88\88\8b\8b\8b\8f\8b\8b\8f\85\85\88\85\85~tzztzwwz~~~\85\81\85¸»»ÂÂÂÂÅÉÌÌÌÌÉÉÅÉÅÉÅÅÅž¾¾¾»»»»¾¾¾Â¾ÂÂÂÅÅÉÅÉž»»»»¸¸»»¾»¸¸¸´´´±±±´¸¾ÅÅÂÌÉÅÉÉÉÅÅÂÅÉÉÅž¾¾»¾»¸´±´±ª§££\9c\99\9c\99\96\92\8b\8b\85\8b\88\88\88\8b\8b\92\99\96ª±ªª±±´¸¸´¸¾¾¾¾¾Â¾¾¾¾Â»»¸¸±´±±ªª±±±ª±¸´¸¸¾¾¾¾»¸¾»¸¸´±´´»¸¸»»»»»¸»´¸¸´´´±´´¸´¸¸¸¸´±ª £\9c\9c\99£ \96\96\8f\8f\88\81\85\81\88\85\85\81~zwppttiic\___\\UKRUURRRRRRNRRRRRRRRNX\\tw~icz\81\85~\85~\88\88\85\85\85\85\81\85\85\88\8b\8b\8b\8b\88\88\85\85\85\85\85\88\81\81~~ztwpmfpcfmciimmiifmw~~zzwwwwwtwzzwwtwttwppppttwwwwzzz~\85\85\8b\8b\88\88\8b~\85wzwptipmmcc\KUAUKKNRGXK_XN___X\_XUUXUNKKKKKURUURGRKGRGKDDGGGGNNKKKNNRRNKKKKGGKKNN\URRNKGDAA==::66660306303AD==6363,000333363333,,,,,))))))%%%%%"%%\1f"\1f\1f\e\1f\1f"""\1f\1f\1f\e\18\18\14\e\14\11\ e\ e\ e\ e
+\a\99\99\8f\8b\92\8f\96\99\99\99\96\99\0
+\ e\18\e%DDNKKNNKNKKKGGNR_fmmtttttptwwwwwwptptifcc_\\\\XURNKNGKGGDGGKKNRU\cmimmttwz\81\81\81\81\81\88\8b\88\8b\8b\8f\8f\8f\8f\92\92\96\8f\8f\8f\92\8b\99\96\99\96\99\99\9c £ §§±ª§ª§ª±±±±´±§ª \99\8f\8b\8b\8f\8b\88\88\8b\81\85\88\88\85\88\88\85\81\81\85\81~~\81\81\81\81\81\81~\81\81\81\81\81\88\8b\8b\85\85\85\85\85\85\8f\8b\8f\8b\8b\88\8b\8b\81\88\88\88\88\85\88\88\88\8b\8b\88\8b\8b\8b\88\88\88\8b\8b\8f\8b\8b\88\85\85\85\85\81z~~tzwzz~~\81\88\85\99±»»»Â¾ÂÅÅÉÉÉÌÉÉÌÉÉÉÉÅÉÅž¾¾»¾¾¾¾¾ÂÂÂÂÅÅÅÉÂÅ»»»»»¸¸»»¾»»¸»´±¸±±´±±±´´¸»ÉÉÅÉÉÉÉÉÅÅÅÂÉÉÉÉ»¾»¾¾¾»¸´´±±ªªª§\9c\9c\9c\9c\96\96\8f\8b\88\8b\8b\88\8b\8f\8b\92\9c´±±±´»¸´¸Â¾¾¾Â´´¸´±´ªª£±±´´´´»Â¾¾¾»»»»¸±´¸´¸¸»»»»»»»»¸¸´¸´±´´¸¸´»»¸´´±ª\9c£ \99\9c \9c\96\92\8b\8b\85\85\88\85\85\81\81~zwtimppfX_\\_\\\URRUUNRUNUUNURRURNRNDX__tzzmc~\81\85\81\85~\88\85\85\85\85\85\81\85\85\88\88\8b\8b\88\8b\88\85\85\85\85\88\88\81\85~\81~~zppfpfmmimiimiiiptzz~zwzwwttwzzzzwzttwttpttwwwwwzzzz\85\81\8f\8fK\8b\8bz\85z~tttimmpcf_NU=UNKNNK\G_UR___\\c\UUUXRNKKGNRNURRGNNKRKGDDDGGKRKKKNNNRRNKKKKKKKKRNXURRNKGDA==::663:330,30))=D=")630,000033333333,,,,,,))))))%%%%""%"%\1f\1f\1f\1f\1f"""\1f\1f\1f\e\18\e\14\18\14\11\ e\ e\ e\ e
+\a\99\99\8b\8f\8f\92\96\99\99\99\99\99\96\a\ e")%GNRKNNNKNNGGKGRRccmmtttwtttwwwwtwtpppiffc___\\URRNNKGGGGGGGKKNRU\_miiimtwz~~\81\81\81\85\8b\85\8b\8b\8b\8b\8f\8f\92\92\92\92\92\92\8f\8f\99\99\99\99\96\99\9c\9c\9c \9c£§ªªª§§£§ª±±´±±±ª§£\99\92\8b\8b\8b\88\8b\88\88\85\85\88\8b\88\8b\88\85\81\81\88\85\81\81\85\85\81\81\81\81z\81\81~\85\85\8b\88\8b\85\85\81\85\81\85\8b\88\8b\8f\8b\88\8b\8b\81\85\88\85\88\85\8b\8b\88\8b\8b\88\88\88\8b\8b\8b\88\8b\8b\8b\8b\8f\8b\88\88\88\85\81~\81~w~zz~\81\81\81\88\88´¸»¾Â¾¾ÂÂÅÉÉÉÉÅÌÉÉÉÅÅÉÅɞ¾»¾¾¾¾Â¾ÂÂÂÅÅÉɾž»»¸¸»¸»»¾¾¾»»¸¸±¸±±¸´±´¸¸¾¾ÉÉÂÌÉÉÉÅÅÅÉÅÅÉÅɾ»¾¾¾Â¾»¸¸´±±±ª£ \99\92\8f\8b\88\88\88\85\88\8f\88\92 ±´±±´´±´»¸´¸Â¾Âž¾»¾´±´´´±±ª§£ªªªªª±´±¸´¾Å¾»»¸»»¾»´¸¸¸´¸»¸»»»¸»¸¸´¸¸´´±±¸¸¸´»»´´±§\9c \9c\96\9c\9c\99\92\92\8f\88\88\88\88\81\81~~wwtf_iifcXR\X\\\\XUNRUNRUNUURUUUUUNRRG\_cw~wpc\81\81\85\81\81\81\88\85\85\85\85\85\81\81\85\88\85\88\8b\88\88\88\88\85\88\88\88\85\85\85\81\85\81\81~ttmtfppmpiimmfmtt~~~zwwzwtwtzzwzwzwtwttttwwwwwwzzz~\81\85\92\8fK\8f\8bz\81z~ttwiippficURAURUNRG\K_XNc\\XXc_XUXXUNKKNNURUUUKKRNUNDDDKGGNNKKKNNNRRNNKKNNNNNRNXURNKKGDA==:::336360,0,,%:A="%300,000003333333,,,,,,)))),))%%%%%)"""\1f\1f\1f\1f"""\1f\1f\1f\e\18\18\14\18\14\11\11\ e\ e\ e
+\a\99\99\0\0\8b\96\96\99\99\99\99\99\96\a\11%:AKRRRRRRKNRKGGGRRffmmptttttwwwwtwtwpppifif_\\X\XRRNNKKGGDGGKGKNRU\_iiffmttwz~\81\81\85\85\8b\85\88\8b\8f\8b\8f\8f\96\96\96\96\92\92\92\92\9c\9c\99\99\96\99\9c\9c\9c\9c\9c\99 £§ªª§§§£ £ª§±±±±£ \99\92\8f\8f\8f\88\8b\88\88\85\88\88\8b\8b\88\8b\88\85\81\85\85\85\85\85\88\85\81~\81~\81\81\81\81\85\88\88\8b\85\85\85\85~\81\85\85\88\8f\8b\8b\8b\8b\85\85\88\81\88\85\88\8b\8b\88\88\88\85\8b\8b\88\8b\8b\8b\8b\8f\8b\8f\8b\8b\8b\8b\88\85\81\81\81z\81~~~\85\85\85\8b\8b±±´¸»»¾¾¾ÂÂÂÅÉÅÅÅÌÉÌÉÉÅÅÉÉɾ¾Â¾¾ÂÂÂÂÂÅÅÉÉ»»¸¸»¸¸¸¸¾¾Â»»¸¸´´±±¸´´¸»»ÂÂÉÉÅÉÉÉÉÉÉÅÅÅÅÉÅžŻ»¾Â»»¸´±´±±±±ª £\9c\9c\8f\92\8b\88\85\88\81\8b\8b\8b\92£´±¸´±±±¸¸´´»¸¸»Â¾ÂÂÂÅž¾»´±´´´±±±ªªª£§£ª±´±¸´¾Â¾»¸»¾»¾»´´¸»¸¸»»»»»¸¸´´´´¸´´±´¸¸¸¸»¸´±££\9c\9c\99\96\9c\92\96\92\92\8b\88\88\88\88~~tzttic\fc\\URXXX\\X\XNNURRXRURUXUUUURUUK_cfz~zti\81\81\85~\81\81\8b\85\85\85\88\81\85\81\85\85\85\88\88\8b\8b\8b\88\88\88\88\88\88\88\85\81\88\85\81\81wwtwttpppiimmippt~~~zzwwwtttzzwzzzwwwwttwwwwwwwzzzz\81\88\8f\8fK\8f\8f~\81wztptffppimffNAUUXNRG\K\XR_XXXXc\\X\XXNKURNUUUXUKGRRXRDGDNGGRKNKKNNNRRNNNKKRKNRURXRNNKGGDA==::633,33,)),)%)=:"%%)0,,,0000333333,,,,,,))))0)))%%%%%%""""\1f\1f"""\1f\1f\1f\e\18\18\14\e\14\14\ e\ e\ e\ e
+\a\99\99\ 3\a\0\96\96\99\99\99\99\99\99\a\183ADNUUUUURNKNGGGKXRfimmptptptwwwwwwwwptmiiif__\\\UURRNKKGDDGGGDGNNU\_ffcciptwwz\81\85\85\88\8b\88\8b\8b\8f\8b\8f\92\96\99\96\96\92\8f\92\96\9c\99\99\99\96\96\9c\99\9c\99\99\96\99 £§\96£ £ \9c §£ªªªªª \99\92\92\8f\92\8b\88\88\88\85\88\85\8b\8b\8b\8b\88\88\85\88\85\85\85\85\85\81~~\81\81~\81\85~\85\88\88\88\85\85\85\81~\81\85\81\88\8b\88\8b\8b\88\88\85\88\85\85\85\88\8b\8b\85\85\85\85\88\88\88\8f\8b\8b\8f\8f\8f\8b\8f\8b\8b\8f\88\88\81\85\85\85\85\81\85\81\85\85\88\8f±±´¸»»¾»¾¾¾ÂÅÉÉÂÉÌÉÌÌÉÅÉÅÉ޾ÂÅÅÂÅÅÅÉÉɾ»»»¸»¸¸»»¾¾¾»¾¸´¸´±´¸¸¸»»¾ÅÅÉÉÅÅÅÉÉÅÅÅÅÅÅÅÅž»Â¾¾¾Â¾¸»¸±¸´´±´±§£ \99\96\92\8f\8b\88\88\88\8b\8f\8f\92£¸´¸´±´±´»¸¸¸¾¸»¾ÂÂÅÅÂÅÅ»¸´´´´´±ªª§§§§ª±±±±¸±¸¸Â¾¾»»¸¾»Â»¸¸»»»»»¾¾»»¸¸´´¸´¸¸¸±¸»¸»»»¸±ª£ \9c\99\99\99\96\92\8f\92\8b\8b\8b\85\85pzpzimf_\\_XXURXUXXX\\\URUUUUUURUUUXUUUXU__fi~~\81\85\81~\85\85\81\81\81\8b\81\85\85\88\85\88\85\81\85\85\88\88\8b\88\8b\88\88\8b\8b\8b\8b\8b\88\85\88\88\85\81zzwzwtttpmippmpmp~~zzzwzttptwzwzzzwwwzwwwwzwwwwzzzz\81\88\8f\8fK\92\8f\81\81wztppiimtmpiiKAUX\NRDXG\XR_XU\Xc\_UXUURXXUNUXUXUNDNN\XGXXUGXNNNKKNNNRRNNKKNNNKRUUURNNKGGDA==::660,30)),))%%%0%%",0)),,000033333,,,,,,,,)),)))))%%)%%""""""""\1f\1f\1f\e\18\18\18\1f\14\11\ e\ e\ e\ e
+\a\99\99\a
+\a\96\0\99\99\99\99\0\0\a)6DGRRXXXXNNNNKKGR\_fmmmptpttttwwwzwwwppiiiifc_X\XXUNRNNKGDGGDGDGKKR\_cfc_fmptw~\85\85\88\88\8b\8b\8f\8f\8f\8f\8f\92\96\99\96\92\92\8b\8f\92\99\9c\96\96\96\96\99\99\99\96\99\96\96\9c \99\92\8f\99\99\99\99\99\9c §§ªªª£££§\9c\9c\99\92\92\8f\8f\8b\85\88\85\85\88\85\88\8b\8b\8b\88\88\88\88\85\85\88\85\85\81~z\81~~\81\81\81\85\85\85\85\85\81\81~~\81\81\85\88\88\88\8b\8b\8b\8b\85\88\85\81\88\85\88\88\85\85\85\85\88\88\88\8b\8b\8f\92\92\8f\92\8f\8f\8f\92\92\8b\8b\88\85\88\88\85\88\88\85\8b\8b£±±±´¸¸¸¾¸»¾¾ÂÂÅÉÂÅÉÌÌÌÌÉÅÉÉÅÂÂÅÂÂÂÅÅÂÂÅÅÅÅÉÉÉÉɾ¸¸»»»»¸¾¾¾Â¾»¾¸¸»´´¸»¸»¾¾ÂÂÅÉÉÉÉÅÉÉÅÅÅÉÅÅÅž¾Â¾¾Â¾¾Å»»»±´´±´´±±§£\9c\99\92\92\8f\8b\88\8f\8f\92\92\92¸¸¸¸¸´¸´¸»»¸»¾»¾¾ÂÅÅÅÂÅÅŸ´´¸´´¸ª±±£ª§ª±±´±¸´¾Â¾¾»»»¸¾¾»»¸»¾¾»»¾¾»¸»¸´¸´¸¸´´¸¸¸»¸¸¸±£§£ \99\99\96\96\92\92\8f\8b\88\8b\88\81ppizifcX\\cUUUR\UXXX\\\\UURRUUXUUUUURUU\R\cpm~\81\85\88\85~\85\85\81\85\85\8b\85\85\85\88\88\88\85\81\85\85\88\88\8b\88\88\8b\8b\8b\8b\8f\8f\8b\88\88\8b\88\88\81~~z~zwtttpimmpmmpzzw~zwwwttwwwww~zzzwzzzzz~zzzzzzzz\81\85\8b\8b\8f\8f\92\85\81wztppmfipimfmKDX\\RUGUGXUR_XUXX_X\RXXXU\\XRUXUURRARK_\G\\XRXRRNNKNNNRRNNKKKKNKNRRURNNKGGDA=:::63,,0)))),)%%%,"%\1f0,%),,,00003333,,,,,,,,,,))))))))%%%%%%"""""\1f\1f\1f\e\e\18\18"\14\14\ e\ e\ e\ e
+\a\99\99
+\ e
+\ 3\ 3\0\0\a\a\ 3\14
+,:GKUUX\XURNRNGGKX_cfimimptttttttwztwtmpfiiifccX\\XURRNNKKDGDADDGGGRX\_c__fimpt~\81\85\88\8b\8b\8f\8f\92\92\8f\8f\8f\92\96\92\8f\8f\88\8f\8f\96\99\96\92\96\96\99\99\99\96\96\92\8f\92\8f\88\88\81\85\81\88\8b\96\92\9c £ §£\9c \9c \9c\99\99\96\8f\8f\8b\88\81\85\81\85\85\88\85\8b\8b\88\8b\88\8b\88\88\85\85\81\81~~w~~~~\81\81\85\81\85\85\81~\81\81\81\81\81\85\85\85\8b\8b\8b\8f\8b\88\8b\85~\85\81\88\85\81\81\81\85\88\88\88\88\8b\92\92\92\92\96\92\92\92\96\99\99\8f\88\8f\8b\88\88\8b\8b\8f\96\96±´´´¸¸¸»¸»»¾ÂÅÅÉÅÅÉÉÌÉÉÉÉÅÉÅÅÅÅÅÅÂÅÅÅÅÅÉÉÉÉÌÉÅž¾»¸»»»¾»¾¾¾Â¾»»»»¸¸»¾»»»Â¾ÅÉÉÉÅÅÉÉÉÉÉÅÉÂ޾¾¾ÂÂÅž¾»±±´´´´´´±ª§£ \96\96\92\8f\8f\96\92£\96»»¸¸¸´»¸»¾»»»»»¾¾ÂÅÅÂÅž¸¸´¸´´´±±±ªª£ª§§ª±±´±´´»¾¾Â¾¸»´Â¾»»»¾¾Â¾»»»»¸»»´»¸»¸´´¸¸»»¸´¸£§£ \9c\99\99\92\96\92\8f\8b\8f\85\8b\8f\81pmizfc_X\\cXURR_XX\\_\__XUURUXXUURRRUXU\UGfwp\81\81\88\88\88\81\85\85\81\88\88\8b\88\85\85\8b\85\88\88\85\81\85\88\88\8b\8b\8b\8f\8b\8b\8b\8f\92\8f\88\85\88\85\8b\85\81zzzzztwttmpptpptwww~ztwtttwwwwwzzzzz~~~~~\81~~zzzzzz\81\88\8f\8b\92\8f\96\85\81zzwpppc_\_iciN_\_\UXGXGUUR\XRUU\XXNX\XX\XXUUXXXUNARNc_c_\\UUURRNKNNNRRNNKKKGKKKGNURNNKGDAA=:::33,,,,))))%%%%)"%"0)%%)),,0003333,,,,,,,,,,,)))))))))%%%%%%""""\1f\1f\e\e\e\e\1f\18\11\ e\ e\ e\ e
+\a\99\99\ e\11\ e\a\a
+
+
+\ e
+\18
+:=GKXX\\\XURRRGRU\c_fimmipptppptwwzwttmmfifffc_XX\XURRRRNKGGDADADDGRUX\___ccimpz~\88\88\8b\8b\8f\92\92\92\92\8f\8b\8f\92\8f\8b\8b\85\8b\8b\92\96\92\92\96\96\96\96\99\92\92\92\8b\8f\8b\81\81~~\81~\88\8b\8b\92\9c \9c£ \99\96\99\96\9c\96\99\96\92\8b\8f\88~\81~\85\81\85\81\88\88\88\88\88\8b\88\85\88\81\81\81~~z~z~~~\81\81\85\85\81\81\81~\81~~\81\85\81\88\8b\8b\8b\8b\8b\88\88\81zz~\85\81w~~\81\85\85\85\85\88\8f\92\92\99\99\96\96\9c\9c \9c\99\99\92\8f\8f\8f\88\8f\96\9c±±±´±´¸´»»»»¸¾ÂÂÅÅÉÅÅÉÌÉÌÅÉÅÅÅÉÉÅÅÅÅÅÉÉÉÉÌÉÉÉÌÅ»»¾¸»»»»»¾Â¾Â¾¾¾»¾¾»¾Â¾¾¾ÂÅÂÅÅÉÉÉÂÅÅÉÉÉÅÉÂÅž¾¾ÂÉž»´´¸´´´´´´§§£\99\99\96\96\9c´\9c¾»Â¾¾»»»¸»¸»¾¾¾»»»¾¾ÂÅÅÅÅÉ»»»¸¸´´´±§£ª§ª±´´±±»¾¾¾¾¸»¸¾¾¾¾¾¾¾¾¾¾»»»»»¸´¾¸»¸¸´¸»»»¸´¸ª§£ \9c\99\96\92\96\92\8f\8b\8f\8b\8f\92\81pifzf_\U\\cUURU\U\\\___cX\XRXX\XXURUUXR\XGpzp\85\81\88\85\8b\85\85\88\85\88\8b\8b\88\88\88\8b\85\88\8b\88\85\88\85\88\8b\8b\8f\8b\8b\8f\8b\8b\8f\8b\85\81\85\85\88\85\81~~~~zwwttpttpptptwtzzwwtttwwwwzzzz~z~z~~\81\81z~~~~zz~\85\8b\8f\8f\92\8f\96\85\81~ztpmp_\XRRNfR\_c\UUDXKUUR\URRUUUUU\X\U\\XUX\XUUKDRR___c\\XXUNNNNNNNRRNNKKKKGGGGGUNRNGGDAA=:::03,,)))%%)%"%"%%)%,%"%%),,0000333,,,,,,,,,,,,,,,,)))))%%%%%"""""\1f\1f\1f\1f\1f\e\e\18\18\18\ e\ e
+\a\0\99\11\11\ e
+
+\ e\11\11\11\11\e\14=AGRc\__\\XUUUUXX_fcifimimppmpptwwzzttmiifccfc_\\\XXUUUUNKGGDAADDGKNRUX\_\cccmiwz\85\85\8b\8b\8f\8f\92\92\92\8f\88\8b\8f\8b\85\88\85\88\85\96\92\92\92\96\96\96\96\96\8f\92\8f\88\8b\88\81\81zz~zz~\88\88\92\99\99 \9c\96\92\96\92\99\96\96\92\92\88\8b\85z\81z\81\81\81~\85\85\88\88\8b\88\85\85\85\81\81~zzz~zz~z\81~\81\85~\81~~~~\81\81\81~\88\88\8b\88\88\88\85\85~wz~\81~twz~\81\81\81\81\85\8b\8f\96\9c\9c\99§£ \99\9c\92\9c ¸´´±´´¸¸´»»»¾»¾ÂÂÂÅÉÉÉÉÉÌÉÉÅÉÉÅÅÉÉÅÅÅÉÌÌÌÌÏÌÌÉÉž¾»¾»¸¸¸¾»»Â¾Â¾Â¾Â¾¾Å¾ÅÅÅÉÉÉÉÅÂÉÉÉÉÉÅÅÅž»¾Â¾¾ÉÉž¸±¸´´´¸´´±§ª§£\9c\9c »»Â¾¾¾¾¾»¾»¾»¾»»»»¾»¾¾ÅÅÉÉÉÉÅž¾¾»¸´¸´±ª££ª§ª±ªª±±±´´´¸¾¾»»¸»¸¾»¾¾Â¾»¾¾»»»»¾¾»¸»»»¸»±¸¸¸»»´´§§£ \9c \99\99\96\99\92\92\8b\8f\8f\8f\96\85ticzf\\U\\cUURUXU_\\\ccc\_\_\\\\XXUXXXR_\Gt~t\85\85\88\85\8b\88\88\8b\88\8b\8b\8f\8b\8b\8b\8b\88\88\8b\88\88\88\85\8b\8b\8f\8f\8f\8b\8b\88\88\8b\88\81~\81\85\85\81\85\81~~~zztwttttmpppwwtwwwwwwtwwwwzwzzz~~~\81\81\85\85~\81\81\81\81~z~\85\8f\8b\8f\92\8f\92\81\81~wppimcXXRRKNUX\_\URAUNRRRXURNRRXKXX\XR\\XU\\UXUKGf\cc\__\XUUNNNNNNNRRNNKKGGKDDGGRNNKGGDAA=:::03,0,))%),%%)"%%)))""%%%),,000333,0,0,,,,,,,,,,,,))))))))))%%%%%"""""\1f\1f\e\e\e\18\14
+\a\ 3\0\11\14\ e\11\ e\14\14\18\18\14\18=DKR\f_cc__\XX\X\\_fcfifiiippppptwwzzttmifcccfc__\_\XXUUURNGGDAADAGGKNRU\\\__ciipz\81\85\8b\8b\8b\92\92\92\8f\8f\85\81\8b\85\81\85\81\88\88\99\92\92\92\92\92\96\92\92\8b\8f\8b\85\88\85\81~wwtwwtwzt\92\92\99\92\92\8f\8f\8f\96\92\92\8f\8f\88\8b\88\81\81z\81~~~\81\81\88\8b\88\88\85\88\88~\81~~wwzzzzz~z~\81\81~~~~~~~~z\85\85\88\85\85\85\81~wtwz~zppwz~z~~\81\85\8b\92 £ª»¸±ª´´¸¾¾¾¾¾»¸´´±´¸¸¸»¾»»¾¾Â¾ÅÅÉÌÉÌÌÉÅÉÂÉÉÅÅÉÉÅÉÅÌÏÏÏÏÓÏÌÌÉž»»¸¸»¾¾¾¾ÂžÂÅÂÅÂÅÉÉÉÉÉÅÅÅÉÉÉÉÉÉÉÅž¾Â¾ÂÅÅž»´»¸¸´´´´´±ª§§ª»¾¾¾¾¾¾»¾»»»¾¾¾»»»¾¾¾¾ÂÅÉÌÌÉÌÉɾ¾¾»»¸¸´±±§ª£§§ªªª±±±´´¸¾»»»»»»Â¾¾¾Å»¾¾»»»¸¾»¾¸¸»¾¸»±¸¸»»¸¸±§§ \9c \99\99\99\99\92\92\8f\92\92\92\92\88wmfzf\XX\\cUURXXX_\\Xccf\c_c____\XXUX\U__wp\81\85\88\85\85\88\8b\88\8b\8b\8b\8f\8b\8f\8f\88\8b\8f\8b\88\8b\88\8b\8b\88\8b\8b\8b\8f\8f\8b\88\88\88\88\85~~~\85\81~\81\81\81\81z~~twtptpimppwttwwwwtzwwwwwwwzwz~~~~\81\85\85\81\81\81\81\81~\81\81\88\8f\8f\92\92\92\92\81\81ztmpii_UUNRKNUUX\\RN=RKGRNXRNNRNUN\NXXU\X\U\XRDRGKc_cf\_\XXRRNNKNNNNRRNNKKKGKDGGKRNNKGGDA==:::00,,0)%),))),%))))%%"%%%)),,00333,,,,,,,,,,,,,,,,,,,,,)))))))%%%%%"""\1f\1f\1f\1f\1f\e\18\18\18\18\ 3\11\14\11\14\11\e\18\1f\1f\e=DKfUcicffcc_X\_\__cfcfffifimppppwwwzwtwmmicccfc___\\XXUUXRRKGDAADADKNKNUX\\_\cimpz\85\88\88\8b\8f\92\92\8f\92\8f\88\81\85\81\81\81\81\88\8b\99\96\92\92\92\92\92\92\8f\8b\8b\85\81\85\81~zttpptptpmw\8b\8f\8f\8b\8b\88\88\88\8f\8b\8b\8b\88\8b\85\85~z~~z~~~\85\88\85\88\85\88\8b~\85\81zzwzwzzzzzz~\81zz~~~~~~w\81\81\85\81~~~~zptwmmpmtwzwww~\81\88\8f\9c£§±¸Â»¾¸¸¸»¾¾¾Â¾¸´±±´´¸»»¾»»¾¾ÂÂÉÉÉÌÉÉÉÅÂÉÅÅÅÉÅÉÅÅÉÉÌÏÏÓÓÓÏÏÌÅÅ»»¸¸¸¸¾¾¾¾Â¾ÂÂÂÅÂÂÂÂÅÂÂÅÂÅÂÅÅÉÉÉÅÉÅÅÅÉÉÌÅÉÅÅÅÅÂÅžÂÂÅÅÉž»»¸¸´´´¸¸´±ª±¾Â¾¾¾¾¾¾¾»¾¾»»»¸¾¾¾ÂÂÂÉÉÉÌÌÌÌɾ¾¾»¸»¸´´±±ªª£ª£§ªªªªª±±´¸¸¸¾»»¾»»»Å¾¾Å¾¾¾»»´¾¸¾»»»¾¸»±»¸»¸´¸±ª§ \9c\9c\9c\9c\99\99\99\96\96\92\8f\96\96\8f\8bzpizc_UX\\cUURXX\_\_Xcci\fcfccccXXXRX_X_cwp~\85\8b\85\88\8b\8b\88\8b\8b\8b\8f\8b\8f\8f\8b\8b\8f\8f\8b\8b\8b\8f\8f\8b\8b\8f\8f\8f\8b\88\88\88\88\85\81\81~~\81~\81\85\85\81\81z~~tttppmmmpptwtttzwtwwztzwwwwwwzz~~\81\85\85\85\85\85\85\85\81\85\85\8b\8f\92\96\92\92\92\81\81zpimff\NRKNKNRXXXXNK=NNDRNURNRNRURXNXXX\XDRXUUDNGNXc_f\\XXXNNKKNNNNNRRNNKKGKGGKKGRNNKGDDA==:::0000,,),0),,0),%%%"""%%%)),,00033,,,,,,,,,,,,,,,,,,,,,,,,)))))))%%%%%"""""\1f\e\e\e\e\18\14\18\18\18\18\1f\1f%,6G_ficfifficc_\_c___cfcffffimmmpttwwwzwtwpmifccf_c__\\XXUUUUNKGDAAAADKKGKRU_\c_cimmz\81\88\8b\8b\8f\92\92\92\8f\8b\88\81\85\81\85\81\85\85\8b\99\92\96\8f\92\8f\92\8f\8b\88\85\81~\81~ztppmmmmimmp\85\85\85\88\81\85\85\88\8b\88\88\88\88\88\85\88\81~zzwzw\81\85\85\85\8b\85\85\88\81\81~zzwwwwwwwzww~zz~z\81\81z~z~~zwzwzzwtptiimiippittw~\85\8b\99§¾¾Å»¾»¾Â¾¾Â¾»»´±´´¸»»»¾»¾¾ÂÂÂÅÉÉÏÌÌÅÉÅÉÅÉÅÅÅÉÅÅÉÉÌÏÓÓÖÓÏÏÌÉÉž»¸¸¸»¾¾¾¾ÂÂÂÅÂÅÂÅÅžÂÂÅÅÉÉÅÅÅÅÅÅÉÅÉÉÅÉÉÅÅÅÅÅÅ»ÂÂÅÉÉÅž¾¾¸¸¸´´¸¸¸±±±¸´¾Â¾¾»¾¾¾¾¾»»¸¸¸»¾»¾¾ÂÂÉÉÌÏÌÏÏ̾¾»»¸¸±±±ª§§££ªªª§±´´¸´»»»»»»¾¾Â¾¾»¾¸¾»¾¾»¾»¸¸´¸»¸»´´§ £\9c \9c \9c\9c\9c\96\99\92\92\96\96\8f\88ztizfcXX\_cXXNX\\\\_\cffcifffc__D\XRX\\__tm~\85\8b\88\85\8b\8b\88\8f\8f\8b\8f\8f\8f\8b\8b\8b\8f\8f\8b\8f\8f\8f\8f\8b\8f\8f\92\8f\88\88\88\88\85\81\85\81\81~~\81\81\88\85\85\81\81~~tptmpimmtptwwttzwtwwzwzwzzwzwz~~~\81\81\85\81\88\85\88\88\85\88\88\8b\92\92\96\96\92\96\85\81zmfic_\GRKNKNNXURUKGANKDNRRRRRRRRUNRU\X\XGN\URDKDNU_cf\_UUUKKKKKKKNKRRNNKKGGDGNNGRKKGGDDA==:::00,,00,00%,,,,)"""\1f""%%%)),,00033,,,0,,,,,,,,,,,,,,,,,,,,)))))))))))%%%%""\1f\1f\1f\1f\1f\e\18\e\1f\1f\1f%))0:Uciififfcffc\\_c_c_cccffciimmpmtwwwzzwtwpificffc_\_\XUXUURRNKKGDA=ADKNKKNR\\c_fimpz\81\88\8b\8b\8f\92\92\92\8f\8b\85\85\85\85\85\85\85\85\8b\96\92\92\8f\8f\8b\8f\8b\88\85\81zzzzttmmiiiifiimpt\81\81~~\85\85\88\85\85\88\85\88\88\85\85~zzw~z\81\81\85\81\8b\88\88\88\85\81\81zwwwttwwtwtwzwwz~\81\81~zz~~wwttwwmpipfimfffmippwz\81\85\92§»ÂÂÉÅž¾¾¾»»´±¸´¸¾¾¾¾¾¾¾ÂÂÅÅÉÌÏÌÉÉÉÅÉÉÉÉÉÅÉÉÉÉÉÌÏÓÓÓÖÏÏÌÌÉÉž»¸»¸»¾¾¾¾ÅÅÅÅÂÅÂÅÂÂÅžÅÂÅÉÉÉÅÅÅÂÅÉÉÉÅÌÉÉÅÉÅÅÅž¾ÂÂÉÉÅž¸¸´¸´»¸¸´´±´»±»¾¾¾¾¾¾¾¾¾¾»»¸»»¸¾»¾¾ÅÅÉÌÌÏÏÏÌÉÅž¾»»¸¸´ªª§££§§ªªª¸´¸¸»¸»»¸¸¾Â¾Â¾¾Â¾¾Â»»»¾¾¾¾¾¾»¸¸¸¸»»»¸´ª§££\9c \99\99\99\92\92\96\92\8f\85zwmzcf\X\_c\\N_\_____fiffiffccccD_XRUX__\pmz\85\88\88\85\8b\8b\8b\8f\8f\8f\8f\8f\92\8b\8b\8f\8f\8b\8f\8f\8f\8f\8b\8f\8f\8f\92\8f\8b\88\88\88\81\85\81\81\81~z~~\85\85\88\81\85\81~wmtipippttwzwwtwwtzwzz~wzwwzzz~~~~~\85\81\88\88\8b\8b\88\8b\8b\8f\92\92\96\96\96\92\85\81wiif_XXGRKNKNNUXRKKGDKGGNRRRRRURRRNRUX\\\GN\XNGGGNR\_c__RXUGGKKKKKNKRRNNKKGGDDKKKNNKGGDDA==:::03,,0003,),00,%\1f\e\1f\1f""%%%)),,,0333000000,,,,,,,,,,,,,,,,,,))))))))))))%%%%%"""""\1f\e\1f"""),,3=Xcifffcfccc__\___c__ccfffiimmmmtwwwzzwwtmmficffc_\_\XUURURRNKKGGAAAGGKKGKNXX_cfipp~\85\88\8b\8f\92\92\92\8f\8f\8b\88\88\85\88\88\85\88\85\8b\92\8f\8f\8f\8b\88\8b\85\85\81~wwttppmmmfffffiiim~\81~~\85\85\85\85\85\88\85\88\88\88\81~~~z~z~\81\85\85\88\88\88\85\88\81\81zwwzwwwtwtttwztw~~\81\81~~zzwtttttimimfiiicfifmmtwz\85\92»¾ÅÅÉÉÉÅÅž¾»¸´±¸´¸»Â¾¾¾¾ÂÅÉÅÌÌÏÌÉÌÌÉÉÉÌÅÌÉÅÅÉÅÌÌÏÏÏÏÖÓÏÉÌÌÌÉž»¸¸¸»»»¾ÅÉÉÅÂÉžÂÅÂÂÂÂÉÉÉÉÅÂÂÅÌÉÌÉÉÅÌÉÉÅÅÉÅÂÂÂÂÅÉÉÅÅ»»¸¸´»»¸´´±±¸±¸´»¾¾¾¾¾¾¾»»»»»»¸¾¾Â¾ÅÉÌÌÌÌÌÏÌɾ¾»»»¸±ªªªªª§§§§§ª±´¸¸´»»¸¸¸¸¾¾»¾»¾Â¾»»¾Â¾¾»»¾¸¸¸»»»¸´´±§§§§ \9c\9c\9c\99\9c\99\96\96\92\8f\8f\88ztmzff_X\_c_c\c\ccc_cffciiifcfffccX_R\__N_mw\81\88\85\81\88\8f\8b\8f\8f\92\8f\8f\8f\8b\8b\92\8f\8b\8b\8b\8f\8f\8f\8f\8f\8f\8f\8f\88\88\88\88\81\85\81~~\81t~~\81\88\8b\85\88\85~zttmpmmmtpzzwzwwztzwzz~z~zzzzz~~~~~\85\81\88\88\8b\8b\88\8f\8b\8f\92\96\96\96\96\92\85\81wiff\UXGRKNKNNRXNNKDDGGDKNUUUUURRRRUXXXX\GNXXKKDKRN_\___RXRGGKKKKKKKRRNNKKGGDDNKKNKNGGDDA==:::00,,00330,0,,)\1f\e\e\1f\1f""%%%)),,,033300000000000,,,,,,,,,,,,,,,)))))))))))))))%%%%%"\1f"%%%,00KXU_fcccccccc\\\\\__c_c_fffffmmppwwwwwwwtpmmffcifcc_\\\XRRURNNGGGGDAAGKGGDGKNU\ccipp~\81\88\8b\8b\92\92\92\8f\8f\88\88\8b\85\88\85\85\88\88\88\8f\8b\88\8b\81\85\81\81zwztipmimiiiccffcfiipz~~~\81\85\85\88\85\88\85\88\88\8b\81\81~~~~~\81\81\85\85\88\88\88\88\8b\81\81zzzzwtttwtpppwwz~~\81\81\81~wwwtppmpfmiififf_cfcimptz\85\8f¾ÂÉÅÉÉÉÉÅÅÅž¾¾»´¸´¸¸»»ÂÂÂÂÂÂÅÅÅÉÉÏÓÌÌÌÌÌÉÌÌÉÉÉÉÉÉÉÌÌÌÌÌÏÓÏÌÌÏÏÌÌɾ»»»»¾¾ÂÉÌÉÉÂÅÂÅÅÅÂÂÂÅÂÅÂÅÉÉÉÉÉÅÅÅÌÉÌÌÉÉÉÉÉÂÅÉÉÂÅÅÅÅÅÅÉž¾»´¸¸¸»¸±´±´±ª´»¾¾¾Â¾»»¸¸¸¸»¾»»»¾ÂÅÉÌÉÌÏÌÏÌž»»»»´±ª§ªªªª££ªª±±±´¸¸»¸»»´¸´¸¾»¸»»»¾¾ÂÅ»¾¾¾Â»»»¸»´¸´¸»»¸±±±ª§ª£ \9c\99\99\99\9c\99\99\92\8f\92\8f\8bzppzff\\ccfffffXcf_cfcicmmmifiifffXcN\\\G_mw~\88\85~\88\92\8b\92\92\92\92\8b\8f\8f\8b\92\8f\8b\8b\8b\8f\8f\8f\8f\8f\8f\8f\8f\88\88\88\88\85\85\81\81\81\81w\81\81\85\88\8f\88\88\81\81zwtptmppptz~~~zwzt~z~z~~\81~zz~z~~\81~\81\81\85\88\8b\8b\8b\88\8f\8b\8f\92\96\96\96\92\92\81\81wifcURXKRKNKRRRXRNKGGGGDGNXXUUURUURX\XUXXGKUDGKGKUK\X\\\RUNKKKKKKKKKRRNNKKGGDGKKKNNNGGDDA=:::6000,,,00,,0),)\1f\18\1f\1f\1f""%%%)),,,03630000000000000000,,,,,,,,,,,,,,,)))))))))))))))%"%)))00:NXX\c\_c_ccf_X\\\\\_c_fccffiippttwwzzwwttmimfcffcccc_\XXRRRRKKGGGGDDDDGDGADGKRX__imtz\81\85\8b\8f\92\92\92\92\8f\85\85\8b\88\85\85\88\85\88\88\88\85\85z~zz~wtppimififf_c_ccffiitwz~z~\81\85\85\81\85\88\88\88\8b\85\85~\81\81\81~\81\81\81\81\85\85\85\85\8b\85\81~~zwwttpwtpppttw~~\81\81~~wttpmmimciiiiiifcfccimmtw\85\92ÂÅÅÅÉÉÉÉÅÅÅɾ»»´¸´¸»¾¾ÂÂÅÂÂÂÉÅÉÅÉÓÓÏÌÏÏÌÉÌÉÉÉÌÌÉÌÌÌÌÌÌÌÏÏÏÌÌÏÏÏÏ̾»»¾»¾ÂÂÉÉÉÉÅÅÂÅÅÅÅÂÅÅÅÅÂÉÅÉÉÅÌÉÅÉÌÅÉÌÉÉÅÉÅÅÂÅÅÂÂÂÅÂÉÉÅÂÅž»¸¸´¸»´±±ª§±»¾»¾Â¾»¸¸¸¸»»»¾¾»ÂÂÂÅÌÉÌÌÌÌɾ»»»¸´§ªªªª§§££ªª´´±´»»»»»»±´´´»´¸¸¸¸»»¾ÅÅž¾Â¾¾»»¸¸¸±¸¸´¸¸»ªª££ \99\99\99\9c\99\99\96\88\8f\8f\8f~itzic_cfiiiiii_ff\fi_ifippmimifif\fK_XcG_mzz\85\81z\88\92\8f\92\8f\92\92\8f\92\92\8b\92\92\8b\8f\8f\8f\8f\92\8f\8f\8b\8f\8f\8b\88\85\85\85\85\81\85\81\85z\85\85\88\88\8f\88\85~\81~zwttptpww~~\81\85~~zt~~~~\81\81\85~~~z~~~\81\81\85\81\85\88\8b\8b\8f\8b\8f\8f\92\92\96\96\96\92\96\85\81wif_XUXNRGNKRUUURNGGGGGGGR\XUUUURUR\XUXUXGNRGNNKNRKXXXXXRRKGGGGGGGKKRRNNKKGGDKGKNNNNGKDA==:66600,,0)00,,,%)%"\18\1f\1f\1f""%%%)),000033333333000000000000000,,,,,,,,,,,,,,,)))))))))))%)),,63GNU\X_\\__cfccX\\\_____cfcffiipptwwwzzzwwtpmiicfcfc__\_UUNNNRNKGGDGDDDADDDAAAGGK\Xfipw\81\88\88\8f\92\92\92\8f\8b\88\85\88\88\85\85\85\88\88\88ww~wzwtttmiffifffcc__\__cfmmttwzw~~\81\81\81\85\85\88\8b\88\88\85\81\85\81\85~\81\81\81\85\81\81\81\81\8b\88\85~zwttttttpmpppptzz~~zzwwpmiififfiffifcccfffippz\85\96ÅÉÅÅÉÉÉÅÉÅÅž¾»¸¸¸´¸¸¾¾ÂÂÂÅÂÂÉÅÌÉÌÓÖÓÏÏÏÌÌÌÌÌÌÉÌÉÌÌÌÉÌÌÌÏÏÏÏÌÏÏÏÓÌÅ»¾¾¸¾ÂÂÉÉÉÉÂÅÅÅÅÅÅÅÂÅÉÅÅÉÉÌÉÅÌÌÉÌÌÉÉÉÉÉÅÉÅÂÂÅžÂÂÅÂÌÉÅÂÅÅž»»¸´¸¸±ª§ªª£»¾»»¾¾»»¸¸»»»»¾»¾¾ÂÂÅÉÉÌÌÌÌÉž¾¸»¸´´ªª§§§§§££§ª±¸±´¸¸¸»¸»¸±´±±¸±´±´´¸¸»Å¾»»¾¸´´´´¸´´¸¸¸ªªª§§§£ £ \9c\96\99\99\99\99\92\88\8f\8b\8b\81i~wpicfimmmiimfifXciciiipppimmificfU__fG_mww\81\81~\85\8f\8f\92\92\96\96\92\96\92\8f\92\96\96\8f\8f\8f\8f\8f\8b\8f\8b\8b\8f\8b\88\88\85\85\81\85\85\81\81~\85\85\88\88\8f\88\85z\85~~wwttwpzz\81\81\85\88\81\81z~\81~\81\81\85\81\85\81\81~z~~~~\81\81\81\85\85\8b\8b\8f\8f\8f\92\92\96\99\99\99\96\92\85\81wif_UXXRRKNNRRUUUKNNGDKKGR\XUUUURXR\\XXXUKKUGRKNNNNNUUUXNNNGGGGKGGGGRRNNKKGGDGAKRNRRKKDAAA:66600,,,)0,)))")"\1f\e\e\1f\1f""%%%,,0,,003633333333333000000000000000,,,,,,,,,,,,,,,))))))))),0:DKNRX\\\X\_cccc\_\___cccccfffiipttwwtzwzzwtppiicfffc\\X\URRRNRNKDGDDDDA=AAA=AADGKRXfimw~\85\85\8b\8f\8f\8f\8f\8b\88\85\88\85\81\81\81\85\88\8bpttmtppmpif_cf_cc__\\\__ffmmptwww~z~\85\81\81\85\85\88\85\88\85\81\88\85\85\81\81\81\81\85\81\81~~\88\85\88~zwwwpttppmmmmmpwwzzzwttpmmffifcifiiffcffffittw\85\96ÉÅÅÅÅÅÅÅÉÅÅÅ»»¸¸¸¸´¸¸Â¾ÂÅÂÂÉÉÌÌÏÓÓÏÏÓÏÏÏÌÏÏÉÌÌÌÌÉÌÉÉÌÌÏÏÏÓÌÏÏÏÓÌÉž¾»ÂÂÅÉÅÉÉÅÉÅÉÉÅÉÅÅÅÉÉÉÉÉÌÌÉÌÏÉÌÏÌÌÉÅÉÉÉžžÂÂÂÅÌÉÅž»¸¸´´¸¸ª§§ §§ £»¾¾»¾¾»»»¸»»¾¾Â¾¾ÂÅÅÅÉÌÌÏÌÌÅž¾»»´±±ª££§§££§ªª±±´´¸¸»»»»¸¸´´±±±±±´¸¸¸Â¾Â¾¾¾»»´¸±±´´´´¸»´££§ª§§§ £ \9c\96\99\99\96\99\92\8b\8b\8b\8b\81z\81wtmmimpmmmimiifUficfmipptmptmfmicXcciG\ptt\81\81~\81\8b\8f\92\92\96\99\92\96\96\92\96\99\99\8f\92\92\92\8f\88\8b\8b\88\8f\8f\88\8b\88\81\81\85\81\81~\81\85\85\85\88\8f\88\81w\81~zztwwww~z\85\85\85\8b\85\85\85\81\85\81\81\85\88\81\85\81\81\81w~~\81~~\81\85\81\85\88\8b\8b\8f\8f\92\92\99\9c\9c\99\96\92\88\81wmfcX\XRRNNRRRUUURRRKKGNKU\XUUUUU\U__\U\XNGUKUNNNRNNUKRUKKKGGDDGDDGDRRNNKKGGDDAGNNRRKKDDAA:66600,,),,0))""%"\e\1f\1f\1f\1f""%%),00,,30636333333333333333000000000000000,,,,,,,,,,,,,,,),),03AGNRUUXXXUX__ccc_c\_cccc_cffifmmttwtwwwtwwtpmmifficc_\\U\URRRRNKKDGDDGAA==AA==AGGNRXciitz\81~\88\8b\8b\8f\8f\8b\88\85\88\85\85\81\85\88\88\8bppmmpmmfif\_______\XX\\ccfmmpwwtwzzz\81\81~\85\85\85\85\88\85\85\85\85\81~\81\81\81\81~\81~~~\81\88\81~twtmtpppmmimmmpttwzwttpmifcffciffiffffffimwwz\81ÅÉÉÉÅÅÅÅÉÅž¾¾»¸¸¸¸»¸Â¾ÂÅÂÂÉÌÌÏÓÓÓÏÏÓÏÏÏÌÌÏÌÌÏÉÉÉÌÅÉÌÌÏÏÏÓÌÓÌÏÏÌÌÅžÂÅÅÌÅÉÉÅÉÉÌÉÉÅÅÉÅÅÉÅÉÉÌÏÌÏÏÌÌÏÌÌÉÂÉÅÅÅžÂÂÂÅÉÉÉÉÅÅ»»»¸´´´´§£££££\9c ¸¾Â¾»»¾»»»»¾¾ÂÂÂÂÂÂÅÅÌÏÏÏÌ̾¾¾»»´´±ªª £§£§ £§ª±±´±´´¾»¾¾»»´±ªª±´¸´´¾»¾¾¾»¾»¸´´±´´´´±´¸±£££§§§§ \9c\96\96\96\92\96\92\8f\8b\8f\8f\85~\85zwppmptppmmpmmiXiifiiitptppwpmpmf\ffiG\pmt~\81z\81\88\8b\96\92\99\99\96\99\96\96\99\99\99\92\96\92\92\8f\8b\8f\8f\8b\92\8b\8b\8b\85\81\85\85\85\81\81\81\85\85\88\85\8b\88wz~~zwtzzwz\81~\88\88\88\88\85\88\88\85\85\85\85\85\88\85\85\81\81~z~z\81\81~\81\81\81\81\88\8f\8b\8b\92\96\96\99\9c\9c\96\96\96\85\81zpfcU\XUUKNRURUXUUUUNNGNNU\XUUUUX\X\_XU\XNKRKRRKKRKKRNRGGGGGGDDDDDDDRRNNKKGGGGADKNNNKKGAA=:66600,,))),%)"%%%\1f\1f\1f""""%))),0,,30:3666666333333333333333000000000000000,,,,,,,,,,,,,,36DKRNRUUXXUU\\_cfcc_cccffccffmimptttwtttpttpmiiiffic__\XXXURRNRRNGGGDDD===:A==AAGGRRX_fipw~~\85\8b\88\8b\8f\8b\88\88\88\88\88\81\88\88\8b\8fpmiiifcfi_\\_\_\X\XXXX\_ffmppwwtwzzw~~~\81\85\85\85\88\85\85\85\88\81\81\85\81~~~~zz~\81\85\81zwtpptppmiiiiifmfmtwtptpiiccffcffffiiffiffmwz~\85ÉÉÉÉÉÅÅÉÅÉÅž»»»¸»¸¾Â¾ÅÂÂÂÅÂÂÉÌÌÌÏÖÖÓÏÏÌÏÌÌÏÏÌÏÏÉÉÉÉÉÉÌÌÌÏÏÓÏÓÌÏÏÌÏÅÉÅÅÂÅÅÅÌÉÉÉÉÉÌÉÌÉÉÉÉÅÂÉÉÅÌÌÌÏÌÌÌÏÏÌÌÉÅÅÂÅžÂÂÂÅÌÉÉÅÉž»»´´±±±£ £ £ \96\9c¸¾¾¾»»¾¾»»»¾ÂÅÂÂÅÂÅÅÅÉÏÌÌÏ̾¾»¾»»»¸´§§ ££§£ £§±±´´¸Â¾¾»±´±ª±±´´±¸¸»»»¾»»´´¸±¸±´´´´´±§£££§§§ \9c\9c\99\96\92\92\92\92\8b\8b\8f\8f\85\81\81~ztttptppmpppim\fmfmmfpptttzpptpmcfiiG_pmwz~z\81\85\88\99\92\99\99\99\9c\99\99\99\99\9c\96\96\96\92\92\92\8f\8f\8f\96\8f\8f\8b\88\85\88\85\85\81\85\81\85\8b\8b\81\88\85wwz~zttw~w~\81~\88\88\88\88\88\88\8b\85\88\85\85\85\88\85\85\85\81zzzz~~z~~\81\81\88\8b\88\8b\92\96\96\99\99\99\96\96\96\81\85zwf_\_XXRNNRURUURXUURRNRNX\XUUXX\\X\_XU\UNKRNNUKKRGKNNRGGGKGGGDDDDDDRRNNKKGKDDDGNNRNGGGA==:66600,,,)))%,)"%%\e\e\1f""%%%,),,,0,006366666666666333333333333300000000000000000,,,,,,,,066GNNRRRRXXUX\X\cfcfcffffcffffmmppttttppmipmmifficcf_\\XXXUUUURUURKGGDAA::=:=:=A=GKRRU\fmpt~~\85\88\8b\8b\8b\8b\8b\88\85\85\88\85\88\8b\8f\8fmiiffccff_\\\X\\XXXXUX\_fimmptwwzzzz~~~\81\81\85\85\88\81\81\85\85\81\85\85\85\81~~zzz~~\81~zwwtpptpmiiiiffiiiptpptpiiffifffcffffiiifipwz\81ÅÉÉÉÉÉÅÅÅÅž»»»»»¸¾ÅÂÅÅÂÅÂÂÅÉÌÏÏÏÓÓÏÏÌÏÌÌÌÌÌÌÌÌÌÉÉÉÉÉÉÉÏÏÏÓÏÓÏÏÓÏÏÅÌÉÅÅÉÉÉÌÌÉÉÉÌÌÉÌÉÉÉÉÉÂÅÅÉÌÌÏÏÌÌÌÌÏÏÉÅÅžžÂžÂÉÌÉÉÉÅ»¸´´±ªª££ \9c \9c\99\92»¾»»¾¾»¾»»¾¾ÂÅÂÅÉÂÉ\99ÉÌÓÌÉÌɾ»¸¾¾»»¸±±§£ £§§££§ª±´´¸»ÅÅž±±±±±±´¸¸¸¸¸Â»»¸¸¸´´±±±±¸´ª£§£§§£ \9c\9c\9c\99\99\92\96\96\92\88\8f\8f\92\88~~~zwwwtwppmttpipfcpfipcpptpwwzttppffimGfmmw~~z\81\81\88\9c\92\99\99\99\9c\9c\99\9c\99\99\99\92\96\92\92\96\8f\92\92\96\8f\92\8b\8b\85\88\85\81\85\85\81\81\8f\8f\81\85\81zwzz~pwtzz~\85z\8b\85\85\85\88\88\8b\85\88\85\85\88\8b\85\85\85\81~zz~z~z~\81\81\85\88\8b\8b\8b\92\96\96\99\99\99\96\96\92\81\85~zf_ccXXUNNRURXRRXXRUURRNX\XUUX\_\\\\\XXRNKNNKRNGNKKGKNGGGGGKDKDDDDDRRNNKKKKDDDGKNNRGGGAA=:66600,,,))%%0,%))"\18"""%%)0%0,03,=0366666666666666666333333333300000000003000000000,003:=GKNNRRRUUUUXU_cfffffiifffifipppppptpmmiiiiif_cf__c\XXXUUXURRUXUNNGGDDA==:::::AAGKRRX\fmttz~\88\88\8b\8b\88\88\8b\88\85\85\8b\88\88\8f\8f\92mifffcccc\\\\\\\\X\UUX\cfipppptwz~~~~~z~\81\85\85\85\85\81\85\85\85\81\81\85~~~z~zzz~zwtttptpppmiffffcffiimptmmiiiifffffiicfiiimpz~\85ÂÅÌÌÉÉÉÅÅÅž¾¾¾»»»»ÂÅÅÅÅÂÅÂÂÅÌÌÌÓÏÏÓÌÌÉÌÌÉÉÉÌÌÌÌÉÌÉÅÉÉÉÌÌÏÌÓÌÏÓÏÓÓÓÏÌÌÉÉÌÉÉÌÉÌÉÌÌÌÌÌÉÉÌÉÅÅÉÉÅÉÌÌÌÉÌÌÌÌÏÉÅÂÂÂÅÅÅÂÂÂÅÅÅÂÉÉÌÌÉɾ»¸´¸±ªª \9c\9c\99\99\96»¾¾¾¾¾¾Â¾¾ÂÂÂÅÅÅÅÅÉ\99ÌÌÏÏÌÉž»¸»»»¸¸´±§££££§£££ª±±´´¸»ÉÉž±ªª±ª±±´´´±»¸Â»¸´¸¸¸´±´±´¸´§ª§£§§ \9c\9c\99\99\96\96\96\92\85\8f\8b\8f\88\85\81~zzwzttpmmtttmtiftifp_tmtpwt~tpptitppGmmmw~~w\81~\85\99\96\99\99\9c\9c \96\9c\99\99\99\96\96\92\92\99\92\96\96\96\92\96\8f\88\88\8b\85\81\85\85\85\81\92\8f\85\81\81zwzw~twwzzz\81w\88\85\85\85\88\88\8b\88\8b\85\88\88\88\88\85\85\85~~~~~~zz\81\81\85\85\8b\8b\8f\96\96\96\96\99\96\92\92\8f\85\85\81~fpi_X\UNRNXRXUUXXRRXUUN\\XXXX_cX_\XX\UNRNKRNRNGKGGGGKGGGGGNRNDDGDDRRNNKKGGDDAGGNKRKKDA==:66600,,))%,,33),,%\e"""%),,),0336A33::66666666666666666666333333333300000:0000000000306=AGKNNRNUUUUXXX_cfffffififiifmppppmmpmiifiicf___c\\_XUUURRXURRUXURKDDGDAA=::6::ADGNNUX_cittw\81\85\88\8f\8b\8b\8b\88\88\85\85\8b\8b\88\92\92\96mifffcccc___\_\\\X\XUX\cimmppttwz~~~\81~~\81\81\85\81\81\81\85\85\81\81~~\81\81~~z~z~wzzztwwtttppimfcfcccfiiippppmmmiifffiiffffiippz\81\88ÅÉÌÌÌÉÉÉÅÅž¾¾»¾¾¾»»ÂÂÅÂÅÂÅÂÂÅÌÌÏÓÏÏÏÌÉÅÉÉÅÌÉÉÉÌÌÉÉÉÅÌÉÉÌÉÌÉÏÌÏÓÓÓÓÓÓÏÏÌÌÌÉÌÌÌÌÉÌÏÌÌÌÉÉÌÌÉÅÌÅÅÉÉÉÂÅÌÉÌÌÌÉÅÂÅÅÅÅÂÂÅÅÅÅÅÅÌÌÌÌÉÉÅž¸¸´±ªª§ \9c\9c\9c\99\99\99»Â¾Â¾Â¾ÅÅÅÅÅÂÅÂÅ\99ÉÉÌÌ̾¾»¸»±¸¸¸´±ª§§§£§££§ª±´´¸»ÌÌÉ»±ªª±±´´´±»¸¾¾¸¸¸´¸´±´´¸¸±±±ªª§§£§ £\9c\9c\99\99\96\96\96\96\92\8b\8f\88\8f\88\88\81\81z~zzwtpmpptpmtiiticm\wmtpwp~wwpti~ttGpmmw~~w\81\81\85\96\99\99\99\9c\9c\9c\99\99\99\99\99\99\96\96\96\96\96\99\99\96\96\96\92\8b\8b\8b\88\85\85\85\88\8b\92\8b\85\81\81zzwwzwtzzww~t\8b\85\88\88\85\88\8b\88\8b\85\88\88\88\88\85\85\85~\81~~\81zzz~\81\85\88\8b\8f\92\96\92\96\96\96\96\92\92\8f\85\85\85~itmcX_UNUR\UXUXUUUUXUUU\\XXX\_c\_X\UXXRURKRKNNKKKGKGGKGGKKRURDDDGDRRNNKKGGDDDGKNNNNGDA==:66600,0))%03A6,00)\e"%\1f)),,,,330:=63::66666666666666666666666333333333333G0000000000636ADGKNNNNRUUXX\\_fficfiicifiiimppmpmmmmfffiffc__\_XXRUURRNNURRUUUUUNGDDAA=::=:::ADDNRU\_fmttw\81\81\88\8b\8b\8f\8b\88\88\88\88\8b\8b\8b\92\92\92iifccccccc____\\\\XXUU\ffimpmttwz~~\81\81~~~\81\81\81\81~\81\81~\81z~~~\81~~z~~w~zzwtwwtttpmmffffccffffmmppmpmmmiifffiffiiftt\81\81\8bÅÉÌÌÌÉÌÉÂÅž¾¾¾»¾¾¾¾ÂÅÅÅÉÂÅÅÅÉÉÌÌÏÌÌÌÌÉÂÉÅÂÉÉÉÉÉÌÌÉÌÉÌÌÌÌÉÏÌÏÌÓÓÖÖÓÖÓÏÏÏÏÌÉÌÌÉÉÌÌÏÌÌÌÉÉÌÏÌÉÉÂÉÅÅÂÂÉÉÉÌÌÉÉÅÅÂÅÅÅÅÅÅÅÅÅÉÅÏÏÏÌÉÌÅÅž¸´±±§ª£\9c \9c\9c\99\96\9c\9c»Â¾¾¾ÂÂÅÂÂÅÅÅÂÂÂÂÂÅÉÉÅÉÉÉ»¾»»´»±´¸¸´±ªª£§§£§§ª±±´¸¾ÏÌÌÉž»´±ª±ª´´±±¸»¾¾¸»¸¸¸´´´´´´±´ª§§§§££\99\9c\99\9c\96\99\99\96\96\8f\92\8b\8b\88\8b\85\85\81~~zwppptptmptimpifp\wmptwt~wzpt~\81zwGtppw~~w~\85\85\96\9c\9c\9c\99\9c\9c\99\99\96\99\99\9c\96\99\99\99\99\9c\9c\99\99\96\8f\8f\8b\8b\85\85\85\85\8b\8f\92\88\85~\85z~zwzztzzttzp\88\88\88\88\85\88\8b\88\88\88\88\88\8b\85\88\88\85\81\85\81\81~~~~\81\81\85\88\8b\8b\8f\92\96\96\96\92\96\92\8f\8f\81\85\81~iwpmXcUNUU\XXXXURURUUUX_\\UU\__\\\_X\XUUUNNNNKKKGGKGKNKKNNNRUDDDGDRRNNKKGGGDDDNRRRNDDA==:66600,0,))36D:033,\1f")")),,,003,:::666:6666666666666666666666333333333333f33:::06300:6:DGKKKKNKRUXUX\\_fiifififiiimimppmppmiiffiicfc__\\XXRURNNKKRNNRRUXURDGA===:===6=AGDKRU\_iptwz\81\85\88\8b\8b\8f\8f\8b\88\88\8b\8f\8f\8f\96\92\92iff__cffccfffcffc_\XUU_cimppptpwwzz~~~~z~~~~z~~z~~~~~~\81~zzzzz~zwttwwttpmpiicffcffcfifmmppppppifififiiiitw\85\85\8fÉÌÌÌÉÌÉÉÅž¾¾Â¾ÂÂÅÉÉÉÅÉÉÉÉÅÏÉÏÌÉÌÌÉžÂÅÅÅÅÅÌÉÉÌÌÏÌÏÏÌÏÏÌÏÓÖÖÖÖÖÖÏÏÏÏÏÌÌÌÌÌÌÌÌÉÉÌÉÉÌÌÌÌɾÉÅÉÅÂÅÉÉÉÌÅÅÅÉÅÉÅÅÅÂÅÉÅÅÌÉÏÏÌÌÉÌÅÅž»´´±§ª§\9c£\9c\99\9c\99 \9c¾ÂÂÂÂÅÂÅÅÂÂÂÂÂÅÂÂÂÉÉÅÅÉÂÅ»»»¸´¸´´¸¸´´±ª££ª§§§ª±±´¸ÏÓÌÉÅ»¸±±±±±´´´±»¸¾¾»»»»¸¸¸´±±´±±ª§§ª£££\99\99\9c\9c\99\9c\99\99\96\92\8f\8f\8b\88\8b\88\88\85\81~zztppptwmmpiitmfpcwmptz~\81\81\8ftt\81\85~zGwttw~~z~\85\85\99\9c\99\9c\9c \99\96\9c\96\9c\96\9c\96\99\96\9c\9c\9c \99\9c\96\8f\92\8b\8b\85\85\85\85\88\92\8f\8b\81~\85~\81~t~~p~zptwm\88\88\85\88\88\88\8b\88\88\88\88\8b\8b\88\88\85\85\81\85\85\85~\81~~\85\81\85\8b\8b\8b\92\92\96\96\96\92\92\92\8b\8f\81\85~~fzmp_fUNUR_\X\XXRXRRUX\_\_XXX_\XX\_X\XUXXRKNKNKGGKKGKKKGRKKNRGGDKGRNNNKKGGDDADRUNNKDGA==:66600,,0,,3:G:36\e0"%%%,,),,,,0066:66666666666666666666666666333333333333m6D===6:630=6=ADGGKKKKRU\XX\__cfifiiiffiimmppppmmiiffcffcf__\X\UUNRNKGKGNNNRNRURNAGA===::==6=AGGKR\_impwwz\81\88\88\8b\8b\8f\92\8b\8b\8b\8f\92\92\92\92\92\96ffccccffffmiiiiifc_XXX_ciipttttwtwwzz~zwzzzzwzwwzzz~zz\81~~wzw~zwtttttttpppmmfffcffcccciimpptptmfiiiffimmw~\88\88\92ÉÌÌÌÉÉÉÉÂÅž¾¾¾Â»ÂÅÂÉÉÉÉÉÉÉÉÅÌÌÏÌÉÉÉž¾¾ÂÂÂÉÉÌÉÉÌÏÏÏÏÏÏÓÓÏÓÓÖÚÚÓÓÓÓÏÏÓÏÌÉÌÌÌÌÌÌÌÌÌÉÌÌÌÌÉÉÂÅÉÉÅÂÂÉÉÉÉÉÅÂÅÅÉÉÉÅÅÉÌÉÉÉÌÌÏÏÌÉÌÉÅž»´¸§§£ \9c\9c\99 ÂÂÅÂÂÂÅÂÅž¾ÂÂÂÂÅÅÅÂÅž»¸»¸´¸´±´´´´§£ª§§§ª´´´»ÓÏÉž¸´±±±±±±´´´´±¸¸»¾¾»¸»´¸¸´´±´´±ªª§ª££ \99\9c\9c\9c\99\99\96\96\96\8f\92\92\88\8b\88\8b\8b\88\85\81~~tttppwtppmmtpitfwppt~\85\8f\8f\92t\8b\85\85\81~zwwwwz~~\81\85\8f\99\99\99\9c\99 \9c\92\9c\99\99\99\99\96\96\96\9c\9c\99 \99\9c\96\8f\92\8b\8f\85\81\88\88~\8f\8f\8f\85\81\85\81\85\81pz~tzzmpwm\85\88\88\85\85\88\8b\88\88\88\8b\8b\8b\85\88\81\85\81\85\85\85\81\81~\81\81\85\88\88\8b\8b\8f\92\96\99\96\92\8f\92\88\8b\85\85~zf~pmciURUXc_XfX\U\UUX\_c\\\\\\\UXX_\_\XUUUKKKKGKKGGGKKGKNGGKRKKGKDRNNNKKGGDDDAURRKGDDA==:666000,,,)0"D63\1f\e,")%%))),))),066:33:66666666666666666666666333333333:AA\996GAAA:=633A:AADGGKGKNUXX\X__cfiffiimiiffmmppppmifffccffcf___\XRRNNKKKGGGKNNNRUUNGKA=A====A=AAGKNR_cmptzz~\81\8b\8b\8b\8b\92\92\8f\8f\8f\92\92\92\96\92\96\92ccfffffiffpmmmmmicc\\\cffmmpppttpttzzzwtwwzzttttwwwzww~zztwtzwttttttttpptmmiicccc_c_ccciptwtwpmmiiffimpw\81\8b\8b\96ÉÌÌÌÌÉÉÉžž¾¾¾Â»ÂÅÂÉÅÅÅÉÉÉÌÉÉÉÌÉÌÉɾ¾»¾¾ÂÅÅÌÌÌÌÏÏÏÓÓÓÓÓÏÓÖÖÚÚÓÓÏÏÏÏÓÏÌÅÌÉÉÌÌÌÌÌÉÉÌÌÌÌÉÉÅÅÅžÅÅÉÌÉÉÅÅÂÅÅÅÅÂÅÉÅÅÉÌÌÌÌÌÌÌÉÅž¾¸¸ªª £ \9c\9c\9c ªÅžÅ¾¾¾»Â¾ÂÉÅÂÅÅž¾»¸¸´´´´´±´´±±ª§ªª£±¸´´»ÏÌž¾¾»´±±±±±´±´´¸±¸´¸¸»¾»»¸¸¸¸´´´´±±±ªªª§§§£\9c\9c \99\99\99\96\92\8f\8f\8f\8b\8f\8b\8f\8b\88\88\81\81~wwtptzwtppmtpmtizppw~\92\92\99\96\8b\8f\88\88\85\81zzwwwzz~~\88\92\99\96\96\9c\96\9c\9c\96\99\9c\99\9c\99\92\92\99\99\9c\9c \9c\9c\99\8f\8f\8b\8b\88\81\88\8b~\8f\92\8b\88\85\88\85\81~iz~wzzmtwm\81\85\85\85\85\88\88\8b\88\88\88\8b\88\81\88\81\85\85\85\85\85\81~~\81\85\85\8b\88\8b\8b\8f\96\96\96\96\92\8f\8f\88\8b\85\85zwzzpiwt\UU\fcXp__U\UX\_cf_\\\\X\X\X\\c_\RRRKKNKGNGGKKGGGNKGGKNKKKGGRNNKKKGGDDA=RRNKGGDA==:666000,,)),6A:0\1f\e,")%"%)))%)),,63633666666666666666666666666333333336KDD\9c3DAAA=A:66A=A=ADDKGKNUXX\\_ccfiffiimffffmmppmmimifffccc_c___XXURNNNKKGGGKKKNRRURKKAAAA=ADDAADGKUcffmpwz~\81\85\8f\8f\8f\8f\96\96\92\92\92\96\96\96\92\92\96\92cffifiiiiitpppppiff___fffimpmpptpppwwwwtttwwpmmptttwttzwwttpwtpptttttwppppmiffccc_c_cccitpwtztpmmmccmpmz\85\8b\92\92ÌÌÌÌÏÌÉÉž¾¾Â¾¾ÂÅÅÉÅÉÅÉÉÉÉÉÉÉÉÉÉÉÉž»»»¾¾ÂÂÉÌÏÌÌÏÏÓÖÖÓÓÓÖÖÖÚÚÓÖÓÏÏÏÏÏÌÉÏÉÌÏÏÏÏÌÌÉÉÌÉÉÉÅÉÉÅÉÅÅÂÅÅÉÉÉÅÅÅÂÅÅÅÉÅÅÅÂÂÅÉÉÏÌÏÌÌÌž»¸±££ \9c\9c£ªÅŞž¾»»»Â¾ÂÅÅÅÂÂÅÅ»¾»¸´¸±´´±´±´±±±±ª±§±¸´¸»ÌÉž»»¸±±±±±´±±´±±´´»´¸¸»»»¾»¾»»¸¸¸´´±±±ªªª££££ \9c \9c\9c\99\99\96\92\92\8f\8b\8f\92\8f\92\88\88\88\85\85\81w~wwpzztttitmiwizwt~\96\96\96\9c\96\8f\92\8b\88\85\81~zzzw~~~~\85\96\99\96\96\99\92\99\99\99\96\99\99\9c\99\96\96\99\96\9c\9c\9c \9c\99\92\8f\8f\8b\8b\81\88\8b\81\8f\92\8b\8b\88\88\88wzizzzwwppwp~\81\81\81\85\8b\85\88\88\88\85\8b\85\81\85~\81\81\85\85\85\81~~\81\85\88\8b\88\8f\8b\92\92\96\96\99G0\8f%\88\81\85zw~zmiwwwU\_ifXwi_U\X\\c_fc_XX_\\\\\\_c_\NNUKKKKGRKKKKKKGKGGGNKGGKKGRNNKKGGGDDA=NNKKGDDA==:666000,,,,)366,\e\e),%%\1f"%%%,,)3,303336666666666666666666666663333333:DNGG 3AA====:33DAA=ADDGDKNU\X\__cfffffffiififimmpiiiiffffcc_c____X\URNNNKKKGKGGKNNNRRNNDGDDADGGGDGNUffiiptz~\81\85\88\8f\8f\8f\92\96\96\92\92\96\96\96\96\96\96\96\92ffffiiimmmtptttppiicccfifimpmmttpmmttttpppttpmmppptppptppppmtpmptttptwtppmpificcc__\cccitpzzzwtimmffimpw\85\8b\96ÉÉÏÏÌÏÌÉÉž¾¾¾ÂÂÂÅÅÉÉÉÅÉÅÉÉÉÉÅÌÉÉÅÅ»»»»»»ÂÅÌÏÏÌÏÏÓÖÖÖÓÓÖÖÖÚÚÖÓÓÓÏÏÏÌÌÌÏÌÏÏÏÓÏÏÌÌÅÌÅÉÅÅÅÅÂÅÉÅÅÅÅÅÅÌÉÅž\8bÉÉÉÌÌÌÌÉÉÅž¾¸´§£ \9c\99§¾ÅÅž¾¾»»»¸»¾¾ÂÅÅÅÂÂÅž»¸´´´±±±±±±±±±±´±ª´¸¸¸»Éž´¸¸±±´´´¸´´´´´¸´¸´»¸»»¾¾»»¸¸¸´´´´±±ªªªª§ £ \9c \9c\99\99\96\8f\96\8f\8f\8f\8f\8f\8f\8b\88\88\85\85\85\81\81zzt~zzppiwpizizzt\81\99\99\99\99\96\92\92\8b\88\85\81\81~~zw~z\81~\81\92\96\96\96\96\92\99\96\96\96\99\9c\9c\99\96\96\99\99\9c\9c\9c \9c\9c\96\8f\8f\8b\8b\85\8b\8b\85\8f\92\88\88\88\88\85wziwwztwtpwpz~~~\85\88\88\85\88\85\88\88\85\81\81~\81\81\81\81\81\81~~\81\85\88\8b\8b\8f\8f\92\96\96\99\99D0\92%\8b\81\85zz~zmizzzi__mi\zpc\\\__fci_\\\c_\\\\\___XRNUNNKKKRNKKKKKGGGGGKDDDGGDRNNKKGGGGDA=KNKKGGDA==:666000,,,,,0,),\1f\e)0)"\1f%")%00)::603333333336666666666666666663333336=GKGD 3===:=3633DAA=ADDGGGRX\\__ccccfffcfififfiiimfffifiifffcc\c\_\\RRNKRKKKKGGGGNNNNNKKGKKGDGKKKGKU_iimmpwz~~\81\88\8f\8f\92\92\96\96\96\92\96\96\92\92\92\96\96\92fffiimimppttwwtttmpfffiiimmmmptppmipmppmmmmimiimtmpmmmmimmmmmmptttttttwttppmimfccc__cccftpz~~zwmpmiimipz\85\96ÌÌÏÏÏÏÌÌÉÅž¾Â¾Â¾¾ÂÂÅÅÅÉÌÉÅÉÅÌÅÉÅÉÉÅÅž¾»¾¸»»¾ÅÏÏÏÌÏÓÓÓÖÖÖÖÖÖÖÖÖÖÖÖÓÏÏÏÌÌÌÌÏÓÏÏÖÏÌÌÉÂÌÅÉÂÅÂÅÂÂÅÅÅÅÅÅÅɞ¾¾¾¾Â\8fÅÅÉÉÌÉÌÅÅÅž¾¸±±ª§ \99¸»ÂÅÅÅ»»»¸¸»»»»¾ÂÅÉÅ»¸´´´±´±±±±±±´´±±´±±¸¸»¸¾É¸¸¸´´´¸¸»¸¸¸´´¸¸»¸¸¸¾¸¾»»»¸´¸´´¸´±±±ªª§§£ \9c\9c \9c\99\99\99\92\92\8f\8f\92\8f\8f\92\8b\88\88\85\88\88\85\85~~~~\81~ctmztmzmz~t\92\99\99\96\99\92\92\92\8f\88\85\81\81~~zz~z\81\81~\8f\92\96\96\99\96\96\99\96\96\99\9c\99\9c\96\96\99\99\9c\99 \9c\9c\9c\99\92\8f\8f\88\8b\88\8f\88\92\92\8b\85\88\88\85~zitwwpwppwpwzzz\81\88\85\88\85\81\88\85\85~\85\81\81\81~~\81\81\81\81\81\85\88\88\8f\92\92\96\99\96\99\99\960\8f\8b\8b\81\85wwzzmm~z~mc\mi_~ticc_cifci_c__c____\\_\\\RUURNNNNNNNNKKKKGGGGGDGGGDARNNKKGGGDDA=ANKKGDDD==:6660000,,00))%,"\1f,,)""%%)3336==:003300000033333666666666666633333:DDGGDAi3=::6:3333A====DDDGKRU\__cc_c_cccccffiffffficfciiiiffffc_c\\XXUNNNRKNKKKGGKNKNKKKKKNNKGKKNNKNXcimpptwz~\81\81\88\8b\8f\96\8f\96\96\96\92\96\96\92\92\92\92\96\96ffiimpmppptttwwwwptmiiiiimmpppppmmiiiiifmifiiffipimicfifimiimiptttttttwtwttmmmicc___cccfptz\81z~tppmifimt~\85ªÉÌÏÏÏÏÌÉÉÅɾ¾¾Â¾Â¾»ÂÂÂÅÅÅÌÌÉÉÉÉÉÉÅÅÉÉÅÉÅž»¸»»»¸ÂÂÏÏÌÏÏÓÓÓÖÚÚÚÖÚÚÖÖÖÖÓÏÏÏÏÏÏÏÏÓÓÏÏÓÏÌÏÉÅÉÉɾÂÂÅÅÅÅÅÂÅÅÂÅÉž¾¾»¾»»¾¾ÂÂÅÅÂÉÅÉÅÅž¾¸±±ª£ \99»¾ÂÅÅÅž»»»¸¸¸»¸¾»ÂÅÉÅž¾¸´±±±±ª±±±±±´±±±´±±±´¸¸»»ÂÅÅž¾¸´¸¸´¸»»¸»´¸´»´»»»»»»¾»»»¸´¸´´¸´´´±ª§§££\9c\9c\9c \9c \9c\9c\99\96\92\8f\92\92\8f\8f\8f\8f\8f\88\85\85\88\88\88\85\81\81\81\81\85\81\wwztw~p\92\85t\96\96\96\96\96\8f\92\92\8f\8b\88\81\85~~~~~~\81\85~\8f\92\99\99\99\96\99\99\96\99\9c\99\9c\99\99\96\9c\9c\9c\99 \9c \9c\99\96\92\92\88\8f\92\92\85\96\8f\8b\88\8b\88\85\81~ftwwpwptzpzzz~\81\88\88\85\88\81\85\85\85\81\81~~~~~\81\81~\81\81\85\88\8b\8f\96\96\96\99\99\99\99\99,\8f\8f\8f\85\85wwwzpmzzzpi_imf\81wmficfmffmcfcc_c_c__\_\X\XXXUURRRNRNNNNKKGGGGDDDDDAARNNKKGGGGAA=ANKKGDDA==:66600000,3,,)))%",),%%)),666:A==0033,,,,,,0000033333666666663333=KKGGGA=f3=66:63633=A=:=AGDGKRU\_\__\c_____ciffffcfffcc_ffiffcccc__X\XXUNRRRNNKKNKKKNNKGGGKKNRNKKKNRNR\fptppwwz\81\81\85\88\88\8b\92\8b\96\96\99\96\96\92\92\96\92\92\96\99ifmmpmmppptptzwzztwpimmimmppppppmiffffffifcfcccfmfifcfccfiiiimmpttwtttwwwwtmpmicc___ccfimww~~ztptififpt~\81±ÅÉÌÌÏÌÌÉÉÅž¾¾Â¾¾¾ÂÂÅÅÉÉÌÉÉÌÉÅÅÅÅÉÉÉÂÉž¾¾¸¸¸¸¸»ÂÅÌÌÏÓÏÓÓÏÖÚÚÚÚÚÖÖÚÖÖÓÓÏÏÌÏÌÓÓÖÓÏÏÓÏÏÏÌÉÌÉÅÂÅÂÂÂÂÅÅÂÂÂÅÅÅž»¾»¸¸»Â¾Â¾ÅÅÂÅÅÅÅž¾¾»±±ª§£ \9c¾ÂÅÅž»»»¸¸¸¸¸¸¾¸ÂÉÉÉž¾´´ªªªª±±´´´´´´»»¾¾ÅÅÅÉ»¸´»¸»»»¸¸¸¸¸»¸¸¾¾¾»¾»¸¸»´´¸¸¸¸±´´´§§§££\9c \9c\9c\99\99\96\96\92\92\8f\92\92\92\92\92\8b\88\85\85\88\85\85\85\85\85\85\88\85c\8bzz\8f~\81t\96\96\96\99\96\92\92\92\92\92\92\8f\8b\8b\81\81~~z\81~~\81\88\85\92\92\99\9c\99\99\99\99\96\9c\9c\9c\99\99\99\99\9c\9c\9c\9c\9c\9c£ \99\96\96\92\92\96\96\96\85\96\8f\8f\85\88\85\85\85\81itwtttttzt~zz~\81\85\88\81\85\81\85\85\85~~~z~~~\81\81~~~\85\88\88\8f\96\96\99\96\99\9c\9c\99,\92\8f\8f\85\85tztzppwzwmtzipm\81zpttpimiimfif_cc____\\\\X\\XXXUURRURRNNKKKGGGDDDAA==RNNKKGGGDAA=ANNKGGDA===6660000000,,,))%)))0)%,,0:66=A=:3033)))))),,,,000000333336663333ANNKDD=:G3::3663633=AA=AAGGGNRUX\X\\\_\\\\\fffffc_cc_c__cfiffccfcc_\\XXURRRRRNKNRNNNRKKGDGKKRRNNKGKNKRXftwtpwwz\81~\81\88\88\8b\8f\8b\92\96\96\96\96\96\92\96\92\92\92\96ifiippmpppttwzz~zwztwmmmpppttppmpiffcfccffcfc_fcffcccccciiiimmmtttwtwtzzzzzppiiccc_\_cfiizz\81~zttwmmiipw~~±´ÂÅÌÌÏÌÉÉÉɾ¾¾ÂÂÅÉÌÌÌÉÌÉÉÂÉÉÅÉÅɾž¾»¸´¸¸¸¸ÂÅÉÌÏÏÏÓÏÏÖÖÖÚÚÚÖÚÚÖÓÖÓÏÏÌÏÏÏÓÖÖÓÓÓÌÓÏÌÉÉÌÉžžÅÂÂÂÂÂÅÅÅÅ»¾¸¾»¸´»¾¾ÂžÅÅÅÅÅž¾»»´±´ª£ \9c\9c»¾Éž¾»»¸¸¸¸¸¸»»»ÂÉÅÅž»´±ªª£ª§ª±ªª±±´´¸´¸´»¾¾ÂÅÅÂÅÅÅ»»¸»»»»»¸»¸¸¸»¸¸¾¾¾¾»¾»¸¸´´¸¸¸»´¸¸¸±±ª§§££ \9c\96\96\96\92\92\96\92\92\8f\96c\92\8b\88\81\85\85\85\85\85\88\88\85\8b\85\92\8fwz\92\8f\8f\92\92\99\99\99\92\92\8f\8f\8f\92\8f\8b\8b\88\85\81~~z~\81\81~\85\88\96\96\99\9c\99\96\9c\99\96\99\9c\9c\99\99\99\9c\9c\99 \9c\99\9c \9c\99\99\99\96\96\99\99\99\99\96\8f\92\81\88\85\81\88\81itwptptpzt~z~~\81\85\85\81\85\81\85\81\88\81~~~~z~~~z~\81\85\88\88\8f\96\92\99\96\99\99\990)\92\8f\8f\85\85tztzptwwwiw~mt\81\85~wwwtmimmpiiccccccc_\\_X\__\\\XXUUURRRNNKKKGGDDAAA==RNNKKGGDAA==ANRNKKDA=A:6660000003,,,))),)),,)003636:==63033)))))),,,,,00000000003333363DRRNGD==K3:66:63336DAA=ADDKDKUUUXUUXX\XXXXXccfcccc___c__cficffccc_\\XXXUUURUNNNNRRRNNKNGGDGKRNNKKGGKGRUcwzwpwwz~~\81\85\88\8b\8f\8b\92\92\96\96\96\96\92\96\96\92\96\92fimmppppptttz~~~zwzwzppppttwwtppmmfc_fc_ccccc\cc_fcc_ccciifimippwwwtww~z~~~wwpmcfcc__ccfmwz\81~zwwtppmipt\81\85±±¾ÂÉÌÌÌÉÉÉÉÂÂÂÂÅÂÂÂÂÅÂÅÉÏÏÌÉÏÌÉÉÉÉÉÉÅÅž¾¾¸¸¸´´´»¾ÅÉÌÌÏÏÏÓÓÓÓÖÚÚÚÖÖÚÖÓÖÓÌÏÏÏÏÏÓÖÓÖÓÖÏÓÏÌÌÉÌÉž¾Â¾¾Å¾¾»¸»»»¸»¾¾ÂÂÂÅÂÅÅÅÅÅž¾»¾¸´´ \9c\99\99 ÂÅÉž»»¸¸¸¸´´¸¸»¾¾ÅÉÂÅ»»´±ª§§£§£§ªª±´´´´±¸´»ÂÂÅÅÅÅÅž¾»¾¾¸¸»¸»¸¸´»»»¾Â¾Â»¾»»¸´¸¸»¸¸´¸¸¸´±ªª£££ \9c\9c \9c\99\96\99\96\92\92\92\92\92\92c\8f\88\8b~\81\85\88\85\85\88\8b\8f\92\8f\96\92w~\92\92\92\96\96\99\96\96\8f\92\8b\8f\8b\92\8f\8f\8b\88\85\81~~~~\85\81z\81\8f\99\99\9c\99\9c\99\9c\99\96\9c\9c\99\96\96\9c\9c\9c\96 \99\99\9c\9c\99\99\99\99\99\99\9c\9c\9c\9c\96\92\8f\81\88\88\81\85\81iwwmtppmwtzz~\81\81\81\85~\81\81\85\81\85\81\81~~zz~zz~\81\81\88\88\88\8f\92\92\99\96\96\99\99,)\920\92\81\85tztwtwzwwmz~m~\85\88\81zz~wwfpmpiffcfccc__\__X\c_\_\X\UXURRNNNKKKKGDDDAA==RNNKKGGDAA===NNKGKDA==:666000003000,,,,0,%00,0063366::30033%)%%%),,,,,,,,000003300333:3GUUNNAA=N=:3:::6363GADADGGKGNRRRRRRUUXXUUUU__c_c__\_\___ffffcc__c\\\\\XUXUUURRNRURRRNNNGGDKKNKNKKGDKGRUmz~ztzz~~~\81\81\85\8b\8f\8b\92\92\96\96\99\96\96\96\96\96\96\8fimimppttttttw~~~zz~zzttttwwwzwtpmmicccfcc_cc_\c_\fc__cfcfiimpiptwtwwtz~~\81\81\85zzzmffccccc_imzz~z~zztptpptz§ª±»¾ÅÉÌÉÉÉÉÅÅÅÂÂÅÂÅÂÂÅÅÅÉÌÏÏÌÏÌÌÌÉÉÌÉž¾¾»»¸¸´´´»¾ÂÉÉÌÌÌÏÏÓÓÖÚÖÚÖÚÚÝÖÖÚÓÏÓÓÌÌÓÖÖÏÖÖÖÓÖÏÌÉÉÉÅž¾Âž¾¾Å¾¾¾»¸»¸»¾¾ÂÂÅÂÂÅÅÅÅÅÅž»¾¸¸´\9c\99\96\96\99\96ÅÅž»¸¸¸¸´¸´´´¸»»¾ÂŸ¸±±±§££§£ £§§ª±´´¸´´´´¸¾ÂÅÉÉÉɞ¾¾¸¸»»¾»¸±¾»¾¾Å¸¾»»¸¸»»¸»¸¸»»´±±ª§£££ \9c\99\9c\99\9c\96\9c\96\92\96\92\92\92\92c\8f\88\88~~\81\85\85\85\88\88\92\96\92\99\92z~\99\96\96\99\96\9c\99\99\92\92\8b\8f\8b\8f\8f\8f\88\88\88\81\81\81~~\85\81z\85\92\99\99\9c\9c\9c\99 \99\99\9c\99\96\92\99\99\9c\99\96 \9c\99\99\99\96\99\99\99\9c\9c\9c \9c\9c\99\96\8f\81\85\88~\85~mwzmtpmmzt~z~\81\81\81\85~\81\81\81\81\85~\81zzwwz~z~\81\81\88\88\88\8f\8f\92\96\96\96\99\990A\920\8f\85\88w~wwtwzzz~~\81\88\81\85\88\81~~\81wztmptmffffcccc__c\X\f_\c\XXXUURRRNNKKKKGGDDAA==RNNKKGGDAA==AKNGKKDD=::666000003000,,003,)00,,,360336630033%,%%%)))))),,,,,00000333336RDURRRN==NA66:6:33:6KDDDGKKNKNNNRRNRRRUUURRUX\_\_\\X\__c_ffcc__\__\XX\XXUXUXXUURURRRRRRNKGGKKKNNKGGDGGRUp~\81~wz~~\81~\81\85\88\8b\8b\8b\96\92\96\96\96\99\99\96\92\96\92\8bmmmptttttwwwz~~~z~\81zzwtwwzzz~zwpppicfcccc_c__\__\c___cfcfiimpmptwtzzzz~\81\85\85\88\88~\85pimffccffmmzz~z~~~~wwwtz£ª±¸»ÂÅÉÌÌÉÉÉÅÅÂÂÅÅÅÅÅÅÉÉÌÏÌÏÏÏÏÌÏÌÌÌɾ¾¾»»¸¸´´¸´»¾ÅÅÅÉÉÌÏÏÓÓÓÖÚÚÚÝÝàÚÚÚÖÓÖÖÏÏÏÖÖÓÖÓÖÓÓÓÌÌÌÅÅÅÅÂ޾¾»¾»¾¸»»¾¾ÂÂÂÂÅÅÅÅÅÉÅ»¾´¸±ª\99\9c\96\99\99\99ÅÅ»»¸¸¸¸´¸´±±´¸¸¾¾Â¸´´±±§£ § \9c ª£§¸¸´´´¸´¸¾ÅÉÌÉÉÉÅžž»»»»»»¸´¾¾Âž»Â»¸»¸¸¸»¸»¸¸¸¸´±ª§£ \9c\9c\99\99\99\96\99\99\99\99\92\99\96\96\92\8f\96\92\8b\8bzz\85\85\85\85\88\8b\96\99\99\9c\96\9cz\9c\99\99z\99\9c\99\9c\96\92\8f\8f\8b\92\8f\8b\88\88\85\81~\81\81z\81\81z\85\96\99\99\9c \9c\9c \99\9c\99\99\92\92\96\96\9c\96\96 \9c\9c\99\92\92\96\99\99\9c\99\9c\9c \99\96\96\8b\81\81\85~\81zmtwmtpmmzt~~\81\81~\81\81~~~\81\81\81z\81wwwwwzz~\81\81\88\88\88\8b\8b\8f\92\96\99\99\960\92,\8f\8f\81\85w~zztz~zz\81\81\85\8b\81\81\8b\85\85\81\85~zwpttmifffccc_____X_cc_c_XXXUUURRRNNKKGGDDAAA::NNNKKGGDAA==AKKKKKDDA=:6663330003000,0000,000,,033006630033)))%%)))))),,,,,,,000000036NDXAAUR=ARA3366663::GGGDGKKNGKGKNNNNRNRRRNNRXX\X\\XX\\\__cc____X\\\XX\UXUUXX\XXUXUURRNRRKKKNKNNNKKKKGGUUt~\81~zz~~\81~\81\88\8b\8b\8f\8b\96\96\99\96\99\99\96\96\92\92\8f\8fmmpppttwwzzwzz~~z~\81zzzwzw~z~~~ztppiifc_fc_c\\X__\____ffmmmmmtppwtwzz~~~\85\8b\8b\96\8f\8f\88\81tpmifiiiptzzzwz\81~\81z\85~z §ª±´¸¾ÉÉÉÉÉÅÉÂÉÂÅÅÅÅÉÅÉÉÌÌÌÏÏÓÓÏÏÏÏÌÌÉ»»»»»¸´¸¸´¸¸»ÂÅÂÌÌÌÏÏÓÓÓÖÚÚÚÝÝÝÚÝÝÚÖÖÖÓÓÓÖÓÓÖÏÖÖÓÓÏÉÌÉÉÅÉÂÅÂÂÅÂÂÂÂÅÅž¾¾»¾¸»»»¾¾¾ÂÂÂÅÉÅÉÅÅÉÅž»»´´´§\9c \92\99\99\96ž»¾¸¸¸¸´´±±´¸´»¾»¾±±±ª§ £\9c\9c §£§ªª¸´¸¸´¸¸»ÂÅÉÉÉÉÉÅÅÅžɻ»¾»¸»»»¸¾¾ÂÅÅž»´¸¸»»»¸¸´¸´´´±ª§££ \9c\99\9c\96\96\96\99\9c\9c\96\96\96\99\96\92\92\8f\8b\8b~z\81\85\85\85\85\8b\99\9c\9c \99 ~ \9c\9cw~ \9c\99\99\92\8f\92\8b\92\92\8f\8b\88\88~~\81\81~~\81~\85\92\99\96\99\9c\9c\9c\9c\9c\99\96\99\92\96\96\92\99\96\96\9c\9c\9c\99\92\96\96\96\99\9c\96\9c\9c \99\92\92\8b\81\81\81~~tittmwpmmzp\81~\81\81~\81~~~~~~~z~wwtwwwz~\81\81\88\88\85\8b\8b\8f\96\96\99\99\963\8f,\8f\8f\81\88t\81zztwzz~\85\85\85\8b\85\85\8b\88\88\85\88\81zztttpmfficcc___c_\cffc_\\XXXUURRNNKKGGGDDAA=::NNKKKGGDAA===KKGGGGDDA=66633333300030033,00000,,00036603033))%)%))))))))),,,,,,,0000663AD=AXUK=U=:3633:36:GGDDGKKNGNGGNKKNNNRRRNNNUU\\XXUXX\\\\____\\\XXXXXXXXXUXX\XUUUUUURRURNKKKNNNKKKNNKKUXw~~\81~~~~~\81\85\88\8b\8f\92\8f\96\99\99\99\99\99\92\92\8f\8f\8b\8bpppttwwzz~zzz~~~~~\81~~zzzz~~~~~~ttppmtfiif_c\\X\_\___cfipppmptptzzz~~\81~\81\88\96\99\9c\92\99£\88zwpmmmmmpwzzzzz\81~\88~ ~£§§±´´¾ÅÉÉÅÉÅÉÅÉÅÅÅÅÅÉÅÉÌÌÌÌÏÏÓÓÓÓÓÏÌÌÉž»»¸¸»¸´´´´´¸¾¾ÉÅÉÌÌÏÏÓÖÖÖÚÖÖÝÝàÝÝÝÚÖÓÖÖÖÓÖÓÖÖÓÖÖÏÏÓÉÏÌÉÅÅÅÅÅÅÅÂÅÂÂÅž¾¾»¾¾¾¾»ÂÂÅÂÅÉÅÅÅÉÉɾ¾»»¸´´£ \9c\96\96\96\96ÅÅ»»¾»»¸¸¸±±±±´±¸»¸»±ªª§\9c £\9c\99\9c£ §ª¸´¸»¸»¸¾ÅÂÅÅÅÅÉÉÉÅÂÅž¾¾»»»¸¸»ÂÂÅÂÅÅ»»´´»»¸¸¸¸¸¸¸¸´ª§££ \9c \99\99\99\99\92\9c \9c\99\96\96\96\96\96\8f\8f\88\88\81~\81\85\81\81\85\8b\99\99 \9c\9c\81 z~ \9c\99\96\96\8b\8f\8b\92\8f\8f\8b\88\85z~~\81\81z\85\81\88\8f\99\92\96\9c\99\9c\9c\9c\9c\96\99\8f\99\96\96\96\96\96\99\9c\9c\9c\92\96\99\96\99\99\96\99\99\9c\99\92\92\8b\81\81~~~tmttpwpmmzp\81\81~\81~\81~~~z~~zwzwwtwtwwz\81\81\88\88\88\8b\8b\8f\92\96\96\99\96\96\8f,\8f\8b\85\88t~z~www~\81\85\88\88\8b\88\88\8b\8b\8b\88\8b\85~~wwtmifficfc__cfcX_fcc_\\XXUURRNNKKGGDGDAADA::NNKKGGGDAA==AKGGGGGDDD:66633366633303303303000,,,0063600333,,,,,,,,,,,))),,,,,,,00006:063ADUXNA\:=6:33:636KDAAGKKKGKGGKKGKKNRNNNKNRUXXUURUU\\\X_\___\XX\UXX\X\XX\\\XXUUXUURRUUNNKNNRRNNNRRNRXpzz~\81~~\81\81\81\85\88\8b\8b\8f\92\92\99\9c\99\96\99\99\92\8f\8f\8b\8b\88twwwwwz~~~~~~z~~~z~~~z~zw~~z~~\81wwttpwmmicc_\\X\\\_cfffmptpptttwz~z~\81\85\85\88\9c £§££§\99£zwttttmzz~~~~\81\88\88\99\9c££§§§ªª±´¾ÅÉÉÅÌÉÉÅÉÅÅÅÂÅÅÉÉÌÌÌÉÌÏÏÏÓÏÏÌÏÌÉɾ¸»¸´»¸´´±¸´»»¾ÉÅÉÌÏÏÏÖÖÚÖÚÖÚÝààÝÝÝÚÖÓÖÓÓÓÖÓÖÓÖÓÓÏÓÏÉÏÌÉÅÉÉÉÉÉÉÅžÂÉž»¾¾¾¾Â¾Â¾ÂÂÅÅÅÅÅÉÅž»¸»´±± \9c\99\92\92\92\92Å»»¾»»»»¸±±±´´´¸±¸±±ªª§§\9c \9c\96\9c£ §ª±»¸¾¾¾¾»ÂÅÂÂÂÂÅÅÉÅÅÅÅž»»»»»¸»¾ÂÂÅž¾¸¸¸¸»»»»»»¸»¸´§£££ \9c\9c\9c \99\99\99\99\8f\9c \99\99\99\99\92\92\96\92\8b\8b\88\81~\85\81\85\85\88\88\85\96\9c\9c \81\9c ~~£ \9c\99\99\8b\85\8b\92\8b\8f\8b\88\85z\81z\81~w\85\81\88\88\99\92\99\99\9c \9c\9c\99\99\92\96\92\96\96\92\96\99\9c \96\99\99\96\96\96\96\96\99\99\96\96\92\8b\81\85~~~pptptwpppzm\85\81\81\81~~~z~z~zztwtttttttz\81\81\88\88\88\8f\88\92\92\96\96\99\96\96\92\92\8b\8b\85\85t~w~zzw\81\81\88\88\8b\8b\88\88\8f:\8b\8b\8b\88\81\81tttmifffcfcc__cc\_fc__\XXUURRNNNKKGGDDDDAAA::NNKKGGDDAA==AKGKDDDDGG=:66333:::66333636636333,003066603333000000,,000,,,00,,,,,,,0336003DGRXND_3A:=66:666GDDDDGGKGKGDGKKKKKRKRNKNRRUUUUURX\X\\_\___\XU\UX\\\X\\\\_\XXXXXRUUUURRNRNRRRRRUX\pttz~\81\81\81\81\81\81\85\88\88\8b\8f\92\96\96\9c\99\99\96\96\99\8f\8b\8b\8b\88\88zzzzzz~~~~\81~~~~~~z~~~~~~z~\81zz~~zzwzzztppii_cXX\___fmimmtwttwwwzz\81\81\85\85\88\88\96££ªª§ªªªªªªzw\88\81~\88\92\85\8f\81\85\85\8b\99\9c ££§ª§ªª±´´»ÅÉÉÉÉÌÉÉÅÅÉžÂÅÅÉÌÉÌÅÌÏÌÌÏÌÌÌÌÌÉÌɾ»¾¸¸¸¸´´±´¸¸»¾ÅÉÉÌÏÏÏÖÚÚÖÚÖÝÝÝàÝÝÚÖÖÓÓÖÓÓÓÓÓÓÓÓÓÏÓÏÉÌÌÉÉÌÉÌÉÉÌÉÉÅÂÅÉž»Âž¾ÂÂÅÅÉÅÉÅž¸´»´ \99\96\8f\92\8f\92ž¾¾¾»¾»»¸´´±±±´±¸´±§ª££ £ \99\9c££§ª±»»Â¾¾Â¾¾ÂÂÂÉÉÅÉÉÉɾ»»»»»»¸¾¾ÅÂÉÅž¾´»¸¸¸»¾»¸¸¸¸¸±ª£ ££ \9c\9c\9c \9c\99\9c\99\92 \99\9c\9c\96\96\92\96\8f\8f\8b\88\81\81\81\81\88\88\88m\85\8b\9c £\9c\81\9c££ ~§£ \9c\9c\8b\81\8b\92\8f\8f\8b\8b\85z\81z~~w\88~\85\8b\99\96\9c\96\9c \9c\9c\99\99\96\92\92\96\96\92\99\9c\9c\9c \99\99\99\96\96\96\96\8f\96\96\96\96\92\8b\81\85\81~~ptpppwppmzm\85~\81~~\81~z~~~wztttttttwwz~\81\88\88\8b\8b\8f\92\8f\96\92\99\99\99\96\92\8f\8f\85\88wzw~zzw\85\85\8b\8b\8b\8b\8b\8b\8f6\88\8b\8f\8b\81~ttwmiiffffcf_c___cf_\\XXUUURNNNKKGGGDDDAAA=::NNKKGGDDAAA=DGGGGDADGD==:6366=:=:336363::666300000036300333333333000000000000000030663306AGNUNGc3A=::6::6:GDDDDGGNGGGDKGGKGGNKNKGKRRRXRUXUX\XX\_____X\U\X\\\_\_\____\\\\XXXXUUURRURRURUX\_ftwwz~\81\81\81\85\81\81\88\88\8b\88\8f\8f\99\99\99\96\96\96\92\99\8f\8b\8b\8b\88\88~~~~~~~\81\81~\81~~~~~~z~~zz~\81~\81\81~z~z~~z~~~zwtmmff\\\ccfipmpttzztw~z~\81\85\85\88\8b\8b\92 §§ª£§ \99\9c \9c\92\99\99\99\99\9c £ª§ªªª´´»ÂÉÉÉÉÌÉÉÉÅžÂÅÅÉÉÅÉÅÌÏÉÏÌÉÌÏÌÏÌÏ̾¾¸¸»´±´´¸¸»¾¾ÉÉÌÌÌÓÏÖÚÝÚÚÖÝàÝàÝÚÖÓÖÖÓÖÖÓÓÖÓÖÓÖÓÏÏÏÌÌÌÉÅÌÉÉÌÉÉÉÌÉÅÉÉÅž¾Âž¾ÂÅÅÉÅÉɾ»´¸±±ª£\96\96\92\92\8b\92¾¾¾»»»»¸´´±´´±´¸¸ªªª§ª£££ ££ §ª§ª±´¾¾ÅÅž¾Â»¾ÅÂÅÉÉÉÉÉɾ¾»»»¸»»»»¾ÂÅÅÂÅ»¾¸»¸¸»¸¾¾´¸»¸»±§§ §£ \9c\9c\9c\9c\96\96 \99\9c\99\92\92\8f\92\8b\8f\8f\8b\85\85~~\85\88\8bm\88\8f\9c £ \81 £ \9c §£ \9c\8b\85\8f\96\8f\8f\8f\88\85z\81~\81zw\8b~\81\88\96\96\9c\99\99\9c\9c\9c\9c\99\99\99\96\8f\96\92\96\9c \9c\9c£\9c\9c\99\96\96\96\96\8f\92\96\99\96\96\8b\85\88\85~~wwpmtwtpmzm\85\81\81~~\81z~~~zzztttttttzw~\81~\88\88\8b\8b\92\92\8f\96\96\99\9c\99\96\92\8b\8f\85\88tzw\81zzz\85\88\8b\8f\8b\8f\8f\8b\8f6\8b\88\8f\8b\85zttwpiffffcci_fcc_fc_\\XXUURRNNNKKGGDDDDDAD=::NNKKGGDDAA=AGKGGDAAADAA=:63::==A:3666::==:3:63333033:333633666666333330333300033063::063:6D0RNKc3=::666=66GDDDDDGKDGDGKGGGKKNKKKKKRRUURUXU\_\\__cc_c\_X\X\\X____cccc____\\X\XXXUUXUXXXU\mtwwzz~z\81\81\85\85\81\85\88\88\8b\8b\92\92\99\99\96\92\92\92\8f\96\8b\8f\8b\8b\8b\8b\81\81\81~~~~\81\81~\81z~\81~\81~z~zz~~\81\81\81\81~zzw~~z\81\81\81~zwwpmicccfimmtptww~~~\85\81\81\81\88\88\88\8b\8f\8f\96£ªª±±±±±±±§ª£\9c ££ \9c\9c\9c\9c \9c £ §§ªª±±´¸»ÂÅÉÉÌÉÉÌÉÉÅžÂÂÂÅÅÅÅÅÉÌÉÏÌÌÌÏÏÏÏÏÏÅ»¸»´´´´¸»»¾ÂÌÉÌÌÌÏÏÖÚÚÖÚÚÝÝÝàÝÚÚÓÖÓÓÓÖÓÓÖÓÓÏÓÓÏÌÌÌÌÌÉÉÉÅÉÉÌÌÉÌÉÉÅÉÉÅÅÂÂÂÂÂÂÂÅÅÅÂÂÂÂÉÂÅÅÌÅ»¸¸§£\96\96\92\92\8b\92ž¾¾¾¾¾¸»¸´´´¸´¸¸»±ª§ªª§§§§£ §§ªªª´¸¾ÂÉÉž¾¾¾¾ÂÅÂÉÉÅÌÉÉÅ»¾»¸¸»»»»¾ÂÂÅÅ»¾»»¸¸¾»¾»¸¸»»»´ªª£££ \99\9c\9c\9c\99\99\9c\9c\99 \96\8b\92\8f\8f\8f\8f\8f\8b\88\85~z\88\85\8fm\88\8f\99\9c \9c\85 ££ £§ £\9c\99\85\8b\96\8b\92\8f\8b\85~~\81\85ww\8f~\81\85\92\96\99\99\99\99 \9c\9c\99\99\96\92\96\96\92\99 \9c £ \9c\99\99\99\99\99\8b\96\96\99\96\96\8f\85\8bt\81\81~zpmtwwpp~m\81\81\81~~~~~\81z~wztwttttwzw~\81~\88\8b\8f\8f\96\92\92\99\99\9c\9c\99\99\92\8b\8b\85\85wzz\81~~z\81\85\8b\8f\8f\8f\8f\8f\8f6\8b\85\8f\88\81wttwpiiiffccfcccc_fc\XXUUURRRNNKKKGGDDAAD=A=::NNKKGGDDAA=DDGGDDD==ADDA=:3:=A=A=6:::==:=:6::66663336663:66::::::6666633333333333:6==333=3D3NKGc3:==:66::6GDDADGGKGGDGKKGGGKKKKKNNRUUXUXXX__\_ccffcc_c\_X__\_ccccccfc__c__\_\\\XX\\\_\c_zwzww~~z~~\81\81\85\85\88\88\8b\8f\8f\92\99\99\96\8f\8f\92\8f\92\8b\8b\88\8f\8b\8b\81\81\81z\81~\81\81\81z\81~~\81\81\81~z~zz~~\81\85\81\81\81~~z~~~\81~\85\81~zztzmffimmpmwtwzw~\81\81\88\88\88\88\8b\8b\8b\8f\92\96\99§§ª´ª§§£§§££ £ £££§§§ª±´¸»¾ÅÅÉÉÉÌÌÌÅɾ¾¾ÂÂÅÅÂÅÉÌÌÏÏÌÌÏÏÏÏÓÓÉÅÅ»¸¸´´¸¸¾¾¾ÂÅÌÉÌÌÏÓÓÖÚÚÖÚÝÝÝÝàÚÚÖÓÓÓÓÓÓÓÓÓÓÓÏÓÏÓÌÏÏÌÌÌÉÌÅÉÉÉÌÌÌÉÉÉÉÉÅÉÂÅÂÅÂÂÂÂÅž¾ÂÂÅÅÅÅÉÅÂÅž»´ª£\99\92\92\8f\8b\96¾»»¾¸¸´´¸¸»»»±§£ªªª§ª§§££ªª±±¸»ÂÅÅÅ»¾¾ÂÂÂÂÂÅÉÅÌÉÉÅ»»¸¸»»»»¸¾Â¾Â¾¾¾¸¸»»¸»¸¸»»¾¸´ª£ £££ \9c\9c\9c\99\9c\96 \9c \8f\88\92\8f\8f\92\8f\8b\88\88\88\81~\88\88\8bm\8b\8f\85\99\9c\9c\85\9c §££££££ \9c\85\8f\96\8b\96\92\8b\88\81z\81\85ww\8f~\85\85\92\92\96\96\99\99\9c\9c \9c\9c\99\96\8f\96\96\92\99 \9c £ \9c\9c\99\9c\99\8b\96\99\99\96\96\8f\88\8bt\85\85\81~~~wzzmt~m\85\81\81~~~~~\81~~zwtzttttwzw~\81\81\88\8f\8f\92\96\96\96\99\99\9c\99\9c\99\96\8f\8f\85\85wzz\81\81~w~\85\88\8f\92\92\92\8f\8f6\88\856\88\81wtwtmmmipiffcc_fc\c_\XXUUURRNNKKKKGGDDAAA===::NNKKGGDDAAAAGGGDDD==:AA=A=6=ADAAA:=:=:A:=::=::::666636:3:66:::::::::::666663333366:A=36::6D6GKD_33AA=6:666DAAAGGKKKGGGKKKKKKGGNNRRUXXXXXXX____ffific_f_c\___ccfccccccc_cc___\_\\\\__ccpw~z~zz~z~z~~~\85\88\88\8b\8b\8f\92\96\99\96\96\8f\8b\92\8f\92\8f\88\8b\8f\8f\8b\85\81\81~\81~~\81~z~~~\81~~~z~z~~\81\81\85\85\81\81~\81~\81\81\81\81~\88\85\81~~t~tiimpptmtwzzz~\85\85\8b\8b\8b\8b\8f\8f\92\92\96\99\9c§§ªªªªª£±ªª§ª§§£ £ £ ££§§ª±´¸¾¾ÅÅÅÉÉÉÉÌÉÅ»¾¾¾ÂÅÂÂÅÉÌÌÏÌÌÌÏÏÏÏÏÓÌÉɾ»»´¸»¸ÂÂÂÅÉÌÉÌÌÓÖÖÖÖÚÖÝÝÝÝÝÝÖÖÓÓÏÓÏÏÏÏÓÓÓÓÏÏÏÓÏÏÌÌÌÉÉÉÉÉÌÌÌÌÉÉÌÉÌÉÉÉÅÅÅžÂÅÅ»¾¾ÅÉÅÉÉÉÅÉ»´±ª§\99\92\8f\8b\8b\96¾žž¾»»¸¸»»¾¾¸§£§ª§§§ª£§§±±±´»¾Å¾¾¾¾¾ÂÂÂÂÂÉÅÅÉÉÅž»¸¸»»¾¾»¾Â»¾Â¾¾¾¾Â»»»»¸¸»´¸¾¾»¸¸§£££ ££ \9c \9c\99\9c\9c \9c\9c\8f\8b\8f\92\8f\92\92\8f\88\85\85\85~\88\85\88p\8b\8b\81\96\99\99\85\8f\9c£ §§£ \9c\99\8f\96\92\99\8f\8f\8b\85\81\85\85\8b\88\8b~\8f\85\92\92\92\96\99\96\9c\9c\9c\99 \9c\99\92\96\96\96\99 \9c \9c\9c\9c\99 \99\8f\96\99\99\99\99\8f\8b\8bt\88\88\85\81\81\81~z~mt~m\85\85\81\81z\81~~~~~~wtwtttwwzw~\85\85\88\8f\8f\96\99\99\99\99\99\9c\99\9c\99\96\92\92\88\88t~z\85\81\81w~\81\85\8f\92\96m\8f\8f6:\853\88\81wtztpmimtmffcf_c__c_\XXUURRRNNKKKGGDDAAAA===::KKKKGGDDAA==GGGDAA==:==:==6:DD==A=ADA6D=::=AA===::6:66:6666======:::===::::6666633==AD:==6A:AGA\G3=A=66666GDDADGKKGGKKNNKKKNKGRRUUX\\XX\XX_c_ffmmimfcicf___ccffccccccc_cc_\_\_\\X_ccfftz~w~z~~zzwzz~\85\85\88\8b\8b\8f\92\96\96\92\92\8f\8b\8f\8f\92\8f\88\8b\8f\8f\8b\81~~~~~z~\81w~~z\81~~~~~~\81\81\85\85\85\85\81\85\81\81~\81\81\81\81~\88\85\85\81\81wzwtmpttttwww~~\81\85\88\8b\8f\8f\92\92\92\96\96\9c §ª§±§§§§§£ª§§ª£§££ £ £ £££§ª±´¸»¾¾ÂÅÅÉÉÉÉÉɾ¾ÂÂÂÅÂÅÅÉÌÏÏÌÏÌÏÏÏÏÓÓÌÉɾ»¾¾»»¾ÅÅÂÉÌÌÌÌÏÓÖÖÓÖÚÖÝàÝàÝÚÖÚÏÓÏÏÌÌÌÌÏÓÏÏÌÏÌÏÌÌÉÌÌÉÉÉÉÉÌÉÌÌÌÉÉÉÌÉÉÅÅžÂÂÂÅžÂÂÉÉÉÅÉÌÉž¸´ª\99\8f\92\96\8b\96¾ÂÅž¾¸¾»»¾¾¾¾¸ª§£§ª§£§§§§ª±±±´´»¾Â¾¾¾»»¾»¾ÂÅÅÅÅÅÅÉÅÉÅ»»¸¾¸¾¾¾¾Â»¾¾¾¾»¾Â¸»¾¸¸´»´»¾»¸»¸±ª££££ \9c\9c\99\9c \9c \99\99\8f\8f\92\92\8f\92\92\8b\88\81\85\85\81\85\81\85\81\8b\88\85\96\99\96\88\92\8f£\9c §§ \9c\99\96\96\99\92\8f\8b\85\85\85\81\8b\88\88\81\92\88\8f\92\92\96\99\96\9c\9c\99\96\9c \9c\96\96\96\96\99\9c\9c \9c\9c\9c\99\99\99 \9c\92\96\99\99\9c\99\8f\8f\88t\88\8b\85\85\81\85\81~~mw~m\85\85\81\81~\81\81~\81~~~wwwtwttw~z~\85\88\8b\92\92\96\99\99\99\96\99\9c\99\9c\99\96\92\8f\88\85t~z\85\81\81w~~\81\8b\92\i\92\8f::\880\85\81twzttmiiwpiffc______XUUURRRNNKKGGGDDDAAA====::GGGKGGDDAA=ADDDAA==:::66:=36GA::==DGD:A=6=ADDDDDAA=:6:6:6::AAAAAA===ADAA:=::::::66=:=D=A=:=6AG=\K6A=A66:6:GGADDKKGKKNKNNNNKRNRRUUU\_\\XXXXcffimppmpmiific_cffffc_ccccc_c_\\\\_\\\_cfiiwz~z\81~~~wwtzz~\81\85\8b\8b\8f\8f\92\92\92\8f\8f\8f\8b\8f\8f\8f\8b\88\8b\8b\8f\8b\81\81zzzzzz~z~~z~~~\81~\81~~\81\85\85\85\88\85\88\85\81\81~~~~~\85\85\81~\81zzzwptwwwwwwz\81\81\85\85\88\8f\8f\92\96\96\99\99\99 £ªªª§£§ £ ªª££§££ £\9c\9c\9c\9c \9c §£§±´¸»¾¾ÅÅÉÅÉÉÉÉÅÅÅžÂÅÅÅÅÅÉÏÏÏÌÏÏÏÏÓÏÓÏÏÌÌŸ¾ÂÅÉÅÉÉÌÌÌÏÖÖÚÓÖÚÚÝÝÝÝÚÚÖÚÏÏÏÌÉÌÉÉÏÏÅÌÉÌÉÌÉÉÉÌÉÅÅÌÉÌÉÌÌÌÌÉÉÉÌÉÉž¾ÂÂÂÂÅÅÉÉÅÉÌÉÅÅ»¸¸±\96\9c\92\9c\8b»ÅÅÅÂÅŞ»¾¾¾Â»»¾´§££§§££§§§§ª±±±±´¸»»¾»»¾»»¾»»ÅÅÂÅÉÉÅÅÉÉÉ»»»¾¾Â¾Â»¾¾»¾»»¾´¸»¸¸´»´»»¸´¸¸§£££ \9c\9c\9c \9c£\9c \96\96\8f\8f\92\92\92\8f\8f\88\85\81\81\85\85\85\85\88\85\8b\8b\88\92\96\92\88\8f\8f£\99 £££ \9c\9c\96\99\96\8f\8f\88\88\88\85\81\88\88\81\85\8f\8b\92\8f\8f\96\96\96\9c\9c\96\96\9c£\9c\99\96\96\99\99 \99\9c\9c\9c\9c\99\96\9c \99\96\96\9c\99\9c\99\8b\8b\88\88\8b\88\85\85\85\85\85\81z~z~p\85\85\85\81\81\81\81~\81z~~wwtttttz~~\81\85\88\8b\92\96\96\99\99\9c\99\99\9c\99K\99\96\92\8f\85\88t\81~\85\81~w~~w\88\92Xi\92\8f::\880\85\81pzzwtmmittffcc___cc_XUUURRNNKKGGGDDDDAAA====::DDDGGDDDAA=AADAAA=::66663:),6=66::DKD===:AAGGGGGGGAG:=:=:=:ADAAAAAAAKGDD::::::::::=6:A:D===6=G:\GADAD6=::=KDDAGKGKKNKKNRKNNRRUUUUUX\XXX\\_fiimpttpppmmmmifcfcffccf_cc_\_\\\XX\\\\\cimmzzzz~~zzwwtzz~\81\85\8b\8b\8f\92\92\8f\8b\8b\8f\8f\88\8b\8b\8f\8b\88\8b\88\8b\88~~~zzzzz~~z~z~z\81\81~\85\81\81\81\85\88\88\88\88\88\88\85\85~\81~~~\81\81~z~zzzwwwzwwzzzz\81\85\85\88\88\8f\92\96\99\99\9c\99££§ª§ª£££££\9c£§ £ \9c £\9c\9c\9c\9c\9c \9c§£ª±¸»¾¾¾ÂÅÅÅÅÅÅÉÉÅÉÅÂÂÂÂÅÅÅÂÅÉÏÏÏÌÏÓÏÓÓÓÏÌÓÌÌÉÅžÅÅÅÉÉÉÌÌÌÏÓÖÚÓÖÚÚÝÝÝÝÚÖÓÖÏÏÏÉÉÌÅÉÌÌÅÉÅÉÅÅÉÉÅÉÅÉÅÉÅÌÉÌÌÌÌÌÉÌÌÉÉÅÅž¾¾»Â¾¾¾¾ÂÉÌÉÉÉÉÅÅÅ»¸¸´±±§§\99 »ÂÅž¾¾Â¾¾¾»»±§ £§§££§§£§ª±±±±´¸¸¸»¸¸»¸»»¸»ÅÂÂÂÉÅÅÂÅÉÉÅž¾¾ÂÂÅž»¾¸¸»´´¸¸¸¸¸´¸¸¸´´´§§£££ £ £\9c \99 \96\92\8f\8b\8f\8f\92\92\8f\85\88\81~\85\81\85\81\85\88\88\8b\88\8f\92\8b\88\8f\8b \9c £ £\9c£\9c \99\96\96\8f\8f\88\85\8b\88\85\8b\8b~\88\85\8b\8f\8f\8f\96\96\92\99\9c\8f\96 \99\99\96\99\99\9c\96\9c\9c\9c\9c\99\96\9c\9c\96\99\96 \99\9c\99\8b\8b\88\88\88\88\85\85\81\85\81\81~~z~t\88\88\88\88\85\81\81~~zzzzztttwwz~\81\85\85\88\8b\8f\96\96\9c\96\9c\99\99\99\99G\96\92\92\8f\85\85w\81\81\85\81~w~\81w\85\8fUm\8f\8f::\883\88\81pzzzwpimttfifc___cf\UURRNNKKKGGGGDDDADAA====::DDADDDDDAA===AA===::666636%),066:=AGD=A==D=KKKKKKKGKKNKA:KADDDDDDDDANKDK==U=:::=::=66=6G==A::D=XDDGDA6A=6=KDGDGGKKGNGNRRNNNRUXUUURXXXXXX\cimmpttwtttpmppmmiffiffcfc_c\X_XXXUUX\XX\_iipwzww~zzwwttwwz\81\85\88\8b\8b\92\92\8f\8b\8b\8f\8b\85\88\8b\8b\8b\8b\8b\88\88\85z\81~zzz~z~~z~z~~\81\85\81\85\81\85\85\88\88\88\8b\8b\88\85\88\85~\81~z~z~ztzw~~zzzwzwzz~z\81\85\88\88\8b\8f\96\99\99\99 §§ªª§§£ £ \9c £\9c\9c\9c \9c\9c\9c\99\9c£ \99\9c £ §§ª±¸¾Â¾¾ÂÅÅÂÂÂÅÉÉÉÅžÂÅžÅÉÏÏÏÏÏÓÓÓÓÓÓÏÓÏÏÌÉÉÂÅÂÂÅÉÉÉÌÌÌÌÏÓÖÚÖÖÚÖÝÝÚÝÚÖÖÖÏÏÌÌÉÌÉÉÉÉž¾ÂÂÅÅÂÅÉÅÅÅÂÉÉÌÌÌÌÌÌÌÉÉÉÉÉž»»¾¾¾Â¾ÅÉÉÅÅÉÉÅÅž¸»¸´´±ª§´»¾ÂÂÅÂÅž¾Â¾Â¾Â¾¾»§\9c§§§£§§§§ªª±±±±´´¸¸»´¸¸»¸´¸Â¾Â¾ÅÂÅÂÉÉÉÉžÂÂÅÅÅž¾¾»¸¸¸±¸´¸¸¸¸¸´¸±±±ªªª££§ £ \9c\9c\96\9c\99\8f\8b\8b\92\8f\8f\8f\8f\85\85~~\85\81\85\81\88\85\85\88\85\8f\92\8b\8b\8f\8f\9c\9c\9c £ £\9c \99\96\92\92\8f\88\81\8f\8b\88\8f\8f~\88\85\88\8f\8f\8f\92\96\92\99\99\92\96 \9c \9c\9c\96\9c\9c\9c\99\9c\9c\9c\9c\99\96\99\9c\92\99\99 \9c\9c\9c\8b\8b\88\85\85\85\85\85~\85\81~~zw\85t\8b\8b\8b\8b\85\85\81~~zwzzwwttzz~~~\85\85\88\8b\8b\96\96\9c\99\99\99\96\99\99=%GG\8f\85\85z~\81\81~zwz\81z\85\8bGm\8b\8b::\8b0\85\81mzwzwtmippfiif___ccXURUNNKKKKGGGGDDDADADA=:=6:AADADAAAAA=A=A==::::666336"%,0366:=DDADNAGANNNNNNNKNNRNRNNNGGGGDDGGDRUGR==XA====:::::=6D:AA66:AU6GGGA:D:6:KDDADDGGDKGNRUNRRRXXUURRUUXUX\_fimptwwwwwtttttppmiiiiifff__\\\XUURUXXUUX\ffttzwzzzwttttttw~\81\88\8b\8b\8f\92\8f\8f\8f\8f\8b\88\88\8f\8b\8b\8f\88\88\88\85z~~~zz~~~~~~z~~\81\85\85\85\85\85\85\88\8b\8b\88\8b\88\88\88\88~~~~~wzwtwwzzz~zz~zz~~~\85\85\8b\8b\8f\92\99\99\9c\9c £ªª§ªªª£££ \9c\9c \9c\99\99\9c\99\9c\99\99\9c££ \9c ££§ªª±»¾Â¾Âž¾ÅÉÅÉÅžÅÅÅÅÂÉÉÏÏÏÏÓÏÓÓÓÓÏÓÓÏÓÏÌÌÅÉÅÅÉÉÉÉÌÏÌÌÏÖÖÖÚÚÖÖÝÝÚÚÖÓÓÖÏÌÉÉÌÉÅÅÉÅž¾¾¾ÂÂÂÉÅÅÅÅÅÉÉÉÌÌÌÉÌÌÉÉÉÌÅž¸»¾»¾¾ÂÂÂÅÅÂÂÅÅÅÂÅ»»¸¸¸´±´ª»¾ÂÂÅÅÅÅž¾Â¾¾Â¾¾»ª§ £§ª§§§ªªªª±±±´±´±¸´¸¸¸¸´¸´±»¾»Å¾ÅÅÅÅÉÉÉÉÅÂÅÅÅÂÂÅž¾¾»´´¸´¸´´´¸´¸ª´¸±±ª§££§ £ \9c\9c\9c\9c\99\8b\99\99\81\81\8b\8f\92\8b\8b\8b\81\85\81\81\85\81\85\81\85\85\85\88\88\8f\92\8b\8b\8f\92\99 \9c \88£ ££ \9c\99\96\96\92\8b~\8b\8f\8b~\8f\8b\85\88\85\8b\8b\8f\8f\96\96\99\99\96\99 \99£ \96\9c\9c \9c \9c\9c\9c\99\96\99\99\96\99\9c \9c \8b\8b\85\88\85\85\81\85w\81\81~z~~\88t\8f\8f\8f\8f\85\85\85~zwzwzzwwt~z\81\81~\85\85\88\8f\8b\96\99\9c\9c\99\99\99\9c\99:%3\e\92\85\85z~\81\81zztz~z\88\88Gi\85A::\8b3\85\85iwtwwtiimmfffc__\_f\RRUNNKKKGGGGDDDAADDA==:=6=AAAAAAAAA=======::::633303\1f")0036:=AADDRDKURUURRRURRRUNURRRRGKKGGGGRX\N\ADU=A======::::A:D=66:AN6DGKA6A666GAA=ADDD6GGRURNRRRX\XURNRRUUX\cfmppwwzzzzwwwtwtttmmmmiiffccX\\XRRRRUUURUXccptzwwzwwtppppptz\81\88\8b\8b\92\8f\8f\92\92\92\8f\8b\8b\8f\8b\8b\8b\8b\88\88\81w~~~~z~~\81\81~~~\81\81\81\88\85\85\88\88\88\8b\8f\8b\8b\8b\8b\88\88\85z~zzzttppptpwzzz~~z~\81~\81\85\85\8f\8f\96\96\9c\99 §§ªªªªª£§£ \9c\99\96\96\99\96\99\99\99\9c£§£ £££££§ªªª´»»Å¾Âž»¾»ÂÅÂÅž¾ÂÂÅÅÅÅÉÌÏÏÏÓÓÓÓÖÖÓÓÓÓÓÖÏÏÌÉÉÅÉÌÌÌÌÌÌÏÏÌÖÖÖÖÖÖÖÚÚÚÖÓÓÓÓÌÌÉÌÌÉÅÂÅž¾¾¾»»ÂÅÅÅÅÅÅÉÉÉÉÏÉÉÌÌÌÉÅÉÅÅÅ»¾»¾¾»Â¾ÂÂÂÂÅÅÅž¾¸»»¸´¸»¾ÂÅÅÅÅÅÅž»¾¾¾¾Âž»ª§£§ªªª§§ªªª±±±±´´´´¸¸´´´±´±±¸»¾ÂÂÂÂÉÉÅÌÉÉÉÅÅÅÂÅÅÅž¾»¸´¸´´¸±±´´±¸±¸¸´±±±ª£§£ £\9c\99\99\99\99\99\8b\96\96\81\81\8b\8b\8f\88\8f\8b\81\81\81\85\85\81\85\85\88\88\88\8b\85\92\92\8b\8f\8f\92\99\9c \88£ £££ \9c\9c\99\96\8f\8f~\8b\8f\8bz\8b\8f\81\8b\85\88\88\8f\8b\92\92\96\99\99\99 \9c £\9c\9c\9c \9c\99\9c\99\96\96\99\99\99\99\9c\9c\9c \8f\8b\85\85\85\85~\81z\81\81\81~\81\81\8b\88\8f\8f\8f\8f\88\88\85~zwwtzzwzwzz\81\81~\85\85\85\8f\8b\96\96\9c\9c\9c\99\99\99\96:%0\18\92\85\88z~~\81zztz~w\85\88Gi\85=6=N0\88\85fttttpmiiifcfc_c\_cXUNRRRNKKGGGDDDGDDDG=AA==:=AA==A======:==::6666333303\1f"%,036:=AADDUGN\UXXRURXUUUXRRURUURNGGDDKU\_c_\GUAD=A====:::::=A=:::=N6ADGD:=666D=A:AAA=3DDRRRNRUUXXXURNURUX\_ffmptwzzz~zwwzwwwwwttpmiiffc_\\\XRRNRRNURRU\_mtzwwwwttppppptw~\85\8b\8f\92\92\92\96\96\96\8f\8b\8b\8b\8b\8f\8b\8b\88\8b\81tz~~~~~\81\81\81\81\81\81\85\85\85\88\88\88\8b\8b\88\8b\8f\8b\8f\8b\88\88\85\81zz~wztppmptptw~~z\81~~\81\81\85\88\88\92\92\99\99 \9c££ªªª§ªª§££\9c \9c\9c\9c\96\96\92\99\99\99\96\99\9c££§£££££§§§ª´»»Â¾¾Â»¸»¸¾Â¾»Â¾»¾¾ÂÅÅÅÉÅÌÏÓÓÓÓÓÓÖÖÓÓÖÓÖÓÓÓÏÌÌÉÉÏÉÌÌÏÌÏÌÌÚÖÚÚÖÚÓÚÖÖÖÏÓÓÓÌÌÉÉÉÅžž¾¾¾¾¸»¾ÂÅÉÂÅÅÉÅÉÅÌÉÉÉÉÌÌÉÉÅÅž»»»¾»¾¾¾»¾Â¾ÂÂÅž»¾¸»¸»¾ÂÅÉÉÅÅž»Â¾ÂÂÂÂÂÅ»ª§§ª§§ªª´±±±´±¸¸¸¸±´±´´±±´»¾¾¾ÅÂÉÅÅÌÅÅÉÅÅÅÂÂÂÅÂÂÅ»¾»¸»´±¸±±´´´´¸´±±´±ª§§ \99\99\96\96\96\9c\8f\96\92\81\81\88\88\8f\8b\8f\88\85~\81\85\81\81\85\85\8b\8b\8b\8b\88\8f\92\8b\92\8f\92\9c £§ £ \9c\99\9c\96\92\8f\85\8b\8f\88~\8b\8b\85\8b\88\85\85\8b\8b\8f\92\92\99\99\96 £ \9c\9c \9c\9c\96\9c\96\96\96\9c\9c\99\99\9c\9c\9c\9c\92\8b\88\81\81\81z~~~\81\85\81\81\85\88\88\92\92\92\8f\8b\8b\81~ztttwwwzzzz~\81\81\85\85\88\8b\8b\92\96\9c\9c\9c\99m\9c\99:U0\18=\85\85z\81\81\81z~pz~z\85\8bGi\85A6:K0p\81ctttptiiiffcc_cfccfUXRNNNNKKKGDDDGGAADD:A==:=:AA=========:=:::6666333003\1f"%)036:=ADGGUKK_X\\\U\\XXX\XRXUUXURNGGGNX_cc_\\UAAADA=====::::=:::::N6AADD=:666::=6===:6AANNNRRUU\XXXURURU\_ciiptwzz~~~~zzzwzzwzwwtmmiff____\XURNRNNRNNRX_ftwwtwttptpppptwz\85\8b\8f\92\92\92\96\96\96\92\8f\8b\8f\8f\8b\88\88\88\8b\85twzz~~~\81\81\81\81\81\81\85\88\88\88\88\88\88\88\8b\8b\8f\8f\8f\8f\8b\88\88\81~zzzzwppmtpppw~~z\85\81\85\85\85\85\8b\8b\96\9c\9c\9c££ £§ª§ªª§§£§\9c £\9c\9c\9c\99\99\96\99\96\96\96\9c ££§§§£§§§§§ªª´¸¸¾»»¾¾»¸¸´¸¸»¸¾»¸»¾ÂÅÅÂÅÉÌÌÓÓÓÓÓÓÓÖÖÖÖÖÖÓÓÏÓÌÏÉÌÏÌÌÉÌÌÌÌÏÚÚÚÚÖÚÓÚÖÓÖÏÖÏÏÏÌÉÌÉ޾¾»»»¸¸»¾ÅÉÂÅÅÅÂÅÅÉÉÅÅÅÌÉÅÉž»¸¸¸¾»»¾¾¸¾¾»ÂÂÂÅž¾»»¾¸»¸»ÂÅÅÉÉÉÅÅÂÅ»¾Â¾¾¾Â¾ÂÂŪªªª§ªªª´±±±´´¸´¸¸±±±±´±´´¸»¾¾ÂÂÅÅÉÉÉÅÅÅÅžÂÂÂÂÅž¾»¸¸¸´´´´´±±¸¸¸´±±´ªª§£ \99\99\96\96\92 \92\96\92\85\85\8b\88\8b\8b\8b\8b\88~\81\85\85\81\85\85\8b\8f\8f\8b\88\8f\92\8f\96\8f\96\9c£ §§££ £ \9c\99\9c\92\92\8f\88\8b\8f\8bz\8f\8b\85\88\85\85\81\8b\88\8f\8f\92\99\99\99 £ \9c£ \9c\9c\9c\92\99\99\96\99\9c\9c\99\99 \9c\9c\99\96\8b\8b\81\85\81~~\81\81\81\85\85~\85\8b\8b\96\96\92\92\8b\8f~z~tttwwwwzzz~\85\81\85\85\88\8b\8b\8f\92\9c\9c\9c\99m\99\99\eU,\e=\88\88~\81\81\85wzpz~z\81\8bGi\81A6:30_~\tttptiiiffcc_fifffUURNNKKGGGDDDDDDA=AA:=::::6AA=====:=:=:=:::66663000,0\1f"%),36:=ADGGRKKc\___X_\X\\\\U\XX\XURRRG_ccccc\\XDAADD======:::::::::K6==DA=6666=6:3:66:66=KDKRUUU\X\XXUX\\_cfimptwzz~\81~~~zwz~~z~zzwpmiiccc\\XXURNNKNNKKNX\fptwtttttpppmptwz\85\8b\8f\92\92\92\92\96\96\92\92\8f\8f\8f\8f\88\88\8b\88\85ttzwz~z~~\81\81\81\81\88\88\8b\88\8b\8b\8b\88\8b\8b\8f\8b\8f\8b\88\85\85\81~wwwzzptptptptz~\81\88\85\8b\8b\88\88\8f\8f\99 \9c £§££§§ª§ªªª§£ £§\9c \9c\9c\99\99\99\99\99\99\99\9c£££§§§§§§§ªª§±´´»¸¸»»¸´´±´´´¸¸±¸»¾ÂÅÅÉÉÌÏÏÓÓÓÓÓÓÖÖÖÓÓÖÏÓÓÏÏÏÌÌÌÌÌÌÉÌÌÏÏÖÚÚÚÖÚÖÖÓÏÓÏÓÓÏÏÌÉÌÉÉž¾¾¾¾¾»»»»¸¸»ÂÅÅžÂÂÅžÉÅž´»¾´´»¸¸»»¸¾»»Â¾»¾»»»»¾¸»ÅÅÅÉÉÉÅÅ»¾¾Â¾Â¾¾ÂÂÂÅÅűªªª§±±±±´¸¸¸¸´±±±±±±¸»»Â¾ÅÅÅÅÉÅÅÅž»Â¾Âž¾»»¸¸¸¸´´´´´´»¸»´±´´±ª§§\9c\9c\99\99\96\99\92\9c\96\96\92\88\85\8b\8b\8b\8f\8f\8f\8b\85\85\88\85\81\85\88\8b\8f\8f\8b\8b\92\96\8b\92\92\99 ££§£§£\9c££\9c\9c\9c\99\92\92\8b\8b\88\8b\88z\8f\8b\88\88\88\88\81\88\88\8f\8f\92\96\96\96 \9c£ \9c£ \99\99\99\92\99\99\81\99\9c\99\9c\96\9c\9c\9c\99\96\8b\8b\85\88\85\81~\81\81\85\81\85\88\88\8f\8f\99\96\8f\92\8f\8b~wztttwtttzwz~\81\81\85\85\8b\8b\88\8b\8f\99\9c\9c\9cm\99\9c
+f)\1f\9c\85\85~\85\81\85wwmzzw\81\8fGf==6:00_wXppptpiifcc__\fiiffURRKRKGGGDDDDDAAA==:::6:666AA===:::::::=:66333300,,),\1f"%),06:==ADGNNNf____\_\XX\__X\\\\XXUUURcfcff_\XUAAAAD========::::::=N::AA==6666:,66636:6::=AGNURUX\\X\X____ffimttw~~~~~~~zzz~~zzzzztmmmc__\\\\XUNNKNKGKKUXippttppttpppmpttz\81\8b\8b\8f\92\92\92\92\92\8f\8f\8f\92\92\92\8b\88\88\88\81ptwwzzw~z~~~\85\88\8b\8b\8b\8b\8b\8b\8b\88\8b\8b\8f\8f\8b\85z\81~zwttzztwtwptppzz\85\8b\88\8f\8f\8b\8b\92\99 £§ª§ §£§§ªªªª§£££ \9c \9c\9c\99\99\99\96\9c\99\9c££ ££§§§§ªªª§±±´±´¸¸¸ª±±±±ª´´¸»¾ÂÂÉÌÌÏÏÓÓÓÓÓÓÖÖÚÖÖÖÓÓÏÏÏÏÉÌÏÌÉÌÌÌÌÏÏÖÚÖÖÖÖÖÖÓÏÓÏÓÓÌÏÌÉÌÌÉÅ»»¾¾»»»¾»»»´»¾ÅÂɾ¾¾¾¾»Â¾»»¾Â¾»¾»¸»´±¸´´¸»¸»¸»¾Â¾¾¾»»»¸»»»¸»ÂÂÅÉÉÅÉž¾¾¾»¾¾Â¾ÂÂÂÅÅÉÉ´±±±ªª±±±±´¸¸¸¸´ª±±±±¸¸¾Â¾ÂÅÉÉÉÉÅž¾»¾»¾Âž¾»»»´¸´¸±´´´¸´¸¸´´±±ª§§\9c\9c\96\96\96\96\92\99\96\92\96\85\88\8b\88\8b\8f\92\8f\8b\88\88\88\88\88\85\8f\8b\92\8f\8f\88\92\96\8b\99\92\99££§ª§ª£ § \9c\9c\9c\96\92\8f\88\8b\85\88\85~\8b\88\88\88\85\85\85\88\85\8b\8b\92\92\92\92 \9c £\9c \9c \9c\99\96\99\92\96\96\81\99\9c\99\9c\92\9c\9c \99\99\8b\88\88\88\85\85\81\81\81\85\85\85\8b\8b\8f\92\96\92\92\8f\8f\8b\81wztttwtwtwww~\81\81\81\85\88\8b\8b\88\8b\96\99\9cp\9c\9c\9cA=""\9c\85\85\81\81\81\81wwi\81zw~\92Gf=A6:00__Xpmmtmfffcc_\_ffffcXNNKNKGGGDAAAD=A=::66:66336AA===::::::6=6663330,,,)%)\1f"%),03:==ADGKNNc_c_c__X\\\_\\X\\\\\XXXXfifiic_\RDDAAAAAA==AA===:::==R=:D=::6666:06330666:::=DKRNRU\\XX\cccciiimtww~~\81~~~zzz~~~z~zzwtpmic\\XX\\XXRRNKKGGKRXfpppppptpmmmmpttz\81\88\8b\8b\8f\8f\92\92\92\8f\8f\8f\92\92\92\8f\8b\88\88\88mpwwwwwzzzzz\81\85\88\88\8b\8b\8b\8b\88\88\8b\88\8b\8b\88\81wwzwtptwzwztwtttpzz\88\88\8b\92\92\8f\8f\96\9c£ ££§§§££§££§§ªªªª§§§£ £ \9c\9c\99\99\9c\9c ££££§§ª§ªªª§ªªª±±±´´´ªªªª±§±§¸±¸¾ÅÉÉÏÓÓÓÓÓÓÖÚÚÖÚÖÓÓÓÏÏÏÏÌÌÌÌÅÉÌÌÌÏÏÖÖÓÓÖÖÓÖÓÏÓÓÖÏÏÏÉÉÌÉÉÅ»»»»»¸»»»»»¸»»Âž»¾¸¾»¸»¸¸¸¸¸±´¸ª±¸±±±±¸¸¸¸¸¸»Â»»»»»¸´»¸¸¸»¾¾ÅÅÉÅɾ»»¾Â¾¾Â¾ÂÂÅÅÉ̸´±±±±±±±±±¸¸»¸¸¸ª±±±±´´´»ÂÂÂÅÌÉÉÉÅÅž¾»Â»»¾Å¾¾¸»»¸¸´¸±¸´±¸¸´»¸±±´±ªª§\9c\9c\96\96\96\96\92\96\92\92\92\88\8b\8b\88\8b\8f\8f\8f\8b\8f\88\8b\8b\8b\8b\92\8f\92\92\92\8b\96\99\8b\9c\8f\9c§£§§§§ £\9c\9c\9c\99\92\8f\8b\88\88\81\88\81\81\88\88\85\8b\81\85\85\88\88\8b\8b\8f\8f\96\92£ £ \9c\9c\9c\9c\96\96\99\96\96\99\99\9c\9c\99\9c\96\9c\9c \9c\99\88\8b\8b\88\88\85\81\81\85\85\88\88\8f\8f\92\8f\96\92\8f\8b\8f\88\81wztttttwtwwtz\81\81\85\85\88\88\8b\8b\8b\92\96\99m\9c \9cm")\9c\85\88\81\81\81\85wwi\85zw\81\96Gf=A6:00\_Xmimpifff__\X\fccc_XKKGKKKDDADD=A==:::66666336=====::::6:::6633300,,))%)\e\1f,,336:=AADGKNR____c__\_XX\\\X\X\\\XXX\ifcmifc\KGDDDDAADAA=====:::==UA=A:666666:0300366:::6:AGNGNR\XXX_ffcfimmptwz~~\81~~zwwz~~zzzwwwppii_\XXXX\XUUNNKGDGGRXcppppppppmmmpptwz\81\85\88\85\8f\8b\8f\8f\8f\8f\8f\8f\92\92\92\92\8b\8b\8b\8bmmttwtzwzwzw~\81\85\88\8b\8b\8b\8b\88\88\8f\8b\88\88zwtttppppt~zzwwwwww~z\85\85\8f\92\96\92\96\9c §££§§£££§£ £§£ª§ªª£££ \9c\9c \9c£ £ £§§§§ª§§§§§ªª´±ªªª§ªªªªªª£§§ª±´´ÂÅÉÓÓÓÓÓÖÓÖÚÚÖÚÓÖÖÓÏÏÏÌÌÏÏÌÅÉÌÌÌÏÏÖÖÓÓÖÓÓÓÓÓÓÓÓÏÏÏÉÉÉÉž»¸»»¸»»»»»»¾¸Â¾Å»¸»´»¸´¸´´¸´´±±§£ªª±´¸´´´»¸¾¾¸»¸¸¸¸¸¸¸»»»»ÂÂÅÉÉÅÅÂÅ»»¾¾¾¾¾ÂÂÂÂÅÌÉ»¸±±±±±±±±±±´¸¸¸´¸´ª±±±±¸±¾¾¾ÅÂÉÉÉÉÉž»¾»¾¾¾ÂÅÅž¾»»»¸¸´¸´¸¸¸¸´¸»¸´±¸±ªª£\9c\9c\96\92\96\92\92\92\8f\92\96\8b\8b\8b\85\8b\92\8f\92\8b\92\8b\8f\8f\8f\92\96\92\92\92\8f\8f\96\99\92 \8f §§§§ªª £\9c\9c\99\96\8f\8b\88\88\88\85\85~\85\88\85\88\88~\85\85\88\88\8b\8f\92\8f\99\96£\9c § \9c\9c\99\99\92\96\96\96\92\99\99\99\99\99\9c\99 \9c\9c\96\88\8b\8b\8b\8b\88\85\85\88\88\88\8b\8f\8f\92\8b\96\92\8b\8b\8b\85~wwttttptwwwtw~\81\85\88\88\88\8b\8f\88\8f\92\99pi\9c £ \96\8b\85\85\81\85tti\8b\8f\88\8f\92GfAA6:00\_Xmimmiffc_\\X_c___\UGGDKGGDAAAA==::::666666336==:=::::6666:6633000,,),%)\e)0066:=ADDGGKNRUccc_c_X\XXXX\\\X__\\\\_fcfmii_\NKGGDDDAAAA=======::AXDA=::666666,3303366663==DGDKKXUUXcficiiimpwz~~~\81~~wwwzzzwzwtttmmff\XXUXXXURRNKKGDGDNU_mppppppppmmppwzz\81\85\88\88\8b\88\8b\8b\8f\8f\8f\8f\92\96\96\92\8f\8f\8f\8fmiptwtwtwtwpz\81\85\85\88\88\88\88\88\8b\8f\8b\88~zwpppmimptzzzzzzzwz~\85\88\88\92\92\99\96\9c £§§§§§££ £ §§£ªªª£§£££ £ £\9c£ £ £££§£§§§£§§§ªªª±§§\9c£§§ª§ª§§§§±¾ÂÏÏÓÓÓÓÖÓÚÚÝÚÚÖÚÚÖÌÏÌÌÌÌÌÌÉÉÌÌÌÏÓÖÓÓÓÓÓÏÓÓÏÓÏÏÏÌÌÉÉÉÅÅ»»¸¸»¸»»»»»»»¸¾»Â»»¸±¸´´´±\9c´±§§£££§ª ªªª±¸±´´¸¸´»¸¸´´´´¸´¸»¸»»ÂÂÅÌÅÂÅ»¾¾¾¾¾¾ÂÂÂÅÉÌ̸´±±±±±±±±±±±´´¸\85¸¸¸±±±±¸±»¾»ÅÂÅÅÉÉÅÉž¾¾Â¾Å¾¾¾»¸¸»±¸´¸»»¸´»¾¸¸´´´±ªª \99\99\96\92\92\92\92\96\8b\92\92\8b\8f\8b\8f\8f\92\92\96\92\96\8f\92\92\92\96\96\92\96\92\8f\92\92\9c\96£\8f£ªªªªª§£ \99\9c\99\96\92w\88\88\85\81\85z\85\85\81\85\85~\85\85\85\88\8b\8f\92\8f\99\96£\9c£§ \9c\99\96\8f\96\92\92\8f\96\99\99\99\99\9c\9c \9c\8f\99\92\8b\8f\8b\8b\8f\88\88\88\8b\88\88\8f\8f\8f\92\8f\96\8f\8b\88\88\81ztttpttpptwttw~\81\85\88\88\8b\8f\8b\88\92\92\96\99m\9c £££££\99\8f\92\85\81\88tpm\8f\92\8b\92\8fGcA=6:00X_Xifimiccc_\XU__XRKRRKGDKGDDAAA=::::::666333003==::::::6663:6633000,,,))),033::==DDGKKNNR\ffc__\\\\XXXXX\\__\\\\\cfimif\X\UKKKNGDDDAA=====A=:DUDA=:6666666)03363:3366=:ADAGGURRU_fiffmmppw~~\81~\85~~zwzzwwwwtpppiicc\UUUXUURRNKKKGDGGKRXmmptpptppmpptwz~\81\88\88\88\88\88\8b\88\8f\8b\8b\8f\92\96\92\8f\92\92\92\8fiipptpwptpttt\81\85\85\85\85\88\88\88\88\8b\88\85~zzppmmmmttzwzz~~~z~\81\88\8b\8b\8f\96\99\99 £§ªª§§£§ ££££££§ª±ª£ª§£££§£ £\9c£££ £ §§££££§ªª§ª££\9c £ªª§§ª£§£ªª§ª¾ÓÓÓÓÓÓÖÖÚÚÚÝÚÚÚÖÖÏÓÌÌÌÏÏÉÉÌÌÏÓÓÖÖÖÖÖÓÓÏÓÏÏÓÏÌÌÌÌÅÅÅÅ»»¸¸¸´»¾¾¾¾¾¸»»»¾»»¸´¸±±´±\9c± £ª£ ££ §§£ªª´±´´¸¸´¸´´±´´±´´¸¸¸¸»ÂÂÉɾÅ»¾¾¾¾¾ÂÂÂÅÉÉÌ̸´´±´±±±±±±´´±´¸\85\85¸´±ª±±±±¸´»¾¾Â¾ÅÂÅÉÉÉž¾¾Â¾¾Å¾»»¸´¸¸¸¸»¾»¸»»»»¸±´ª§\9c\96\96\96\92\92\92\96\96\8f\96\8f\8f\8f\8f\92\8f\96\99\99\96\99\8f\96\96\92\99\96\96\92\96\8f\96\9c \99 \8f §ªª§£££ \9c\9c\99\96\92t\88\88\81\81\81~\81\85~\81\85~\85\85\85\88\8f\8b\92\8f\99\92£\9c§§\9c£\9c\9c\99\92\92\92\8f\8f\92\96\9c\9c\99\9c \9c\99\8f\96\8f\8b\8f\8b\8f\92\88\8b\8b\88\8b\8b\8f\8f\8b\8f\8b\96\8f\88\85\81~tpppptpppptttt~\81\85\88\88\8b\8b\8b\8b\92\8f\96\96\9c\9c\9c£§ ££\99\99\96\85~\88ppi\92\96\8b\8f\8bGcA=6:00U\Xfcimf___\\UR\\KNKKGGDAGDAAAA=A:::666633333000::6:6:666663666330000,0,,,0366:=AADGGNNRcU_fccc_\\\\XXXXX\X__\\\\X_ifpfcXU_XNNNRKGGDDAAAA===A=DUA=:::666666,,366663666::===DKKKNR\cffimippw~\81\81~\81\81~zw~zwtwttpmmmfc__RRRURNNNKGGKDDGGKNXmmppppttpptttwz\81\85\88\88\85\88\88\8f\8b\8f\8b\8b\8b\8f\92\92\8f\92\8f\8f\8fiimppttmtmttw~\81\81\81\85\88\85\88\85\88\85\81~wzppmimmttwwzz\81\81\81~\81\85\8b\8f\8f\8b\99\9c\9c£§§ªª§§££\9c £££ £ª´±ªª§ª£ ££§£££ £§ \9c\9c\9c\9c\9c ££§£££§ªªª£ª§ \9c \9c£§§§§§§§£§ª§§ª±ÖÖÖÓÓÓÖÖÚÚÚÚÝÝÚÚÖÓÓÏÌÌÌÌÌÉÌÏÏÖÖÚÖÖÖÓÖÓÏÓÏÏÏÌÌÉÉÉÂÅž¸»¸´´¸»¾¾¾¾¾¸¸¸»»»»¸¸´±\99 £ \9c\9c££\9c\9c § §£±´´¸´´±´±´±ª´¸¸¸¸¾ÅÅÉÅž¾¾»¾¾Â¾ÂÂÂÂÉÌÌÏ̸´´´±±±±±±±´´´´\81\85´±ª±±±´»¸¸»»¾»ÅÂÉÉÌÉÅÅž¾¾»»Â¾¾¾¾¸¸¸´´»»»»»¾¸¾»¸»¸±±ªª£\92\96\96\96\92\92\92\92\92\8f\99\92\92\92\92\96\99\99\9c\9c\99\99\92\96\99\96\99\96\92\96\99\92\96 £\9c \92\9cª§ªª§§§£ \9c\9c\99\96\92\88\8b\85\85\81\81~~\85~\81\85\81\85\81\85\85\8f\8f\92\8f\9c\99£\9c££\9c£\9c\99\99\92\92\92\92\8f\92\92\99\9c\99\9c\9c\99\92\92\92\8f\8f\92\8f\92\92\92\8f\8f\8b\8b\8f\8f\8f\8b\8b\88\92\8b\85~~ztppppppppptpttz\81\81\88\88\8b\8b\8b\8f\92\8f\92\92\99\9c\9c£§£££\99\9c\81\81\99\85mmf\8f\92\88tzG_A=6:00U\\ccfic__\XXRN\KKKGGGDDDDAD=A=:=::6666333300,,066366666:6666663330000,,0,36::==ADGKKRRR_Xcfcf___\XXXXXUXXX__\\__Xcfcmi_XRc\RNRRGKGGDAAAAAA=RAAUA::::666663,0036:6666666::=AGGGGKU_cffiippz~\81~\81~\81~~z~zwtwtppmmiff_\UUURRNKKKGKGGDGGKNUimpppptttttttwz\81\85\85\85\85\85\8b\8b\8b\8b\8f\8b\8b\92\92\92\92\8f\8f\8f\8fiimpptpmppttwz~\81\85\85\85\85\85\81\85\81z~zztppiiiptwzz~\81\81\81\81\88\88\8b\92\92\92\96 £§£ª§§§ ££ §ª±±ªªª££§§£§££££§\9c\9c\9c\99\99\9c ££§£ §§ª££ \9c\9c\9c££§££§££§§ª§§±ÖÓÖÖÓÓÚÖÚÝÚÚÚÚÚÚÖÓÖÏÏÌÌÌÌÌÌÓÓÚÚÚÖÖÓÏÓÓÏÓÏÏÌÉÉÉÉÉÅÅÅ»»´¸¸»¾¾¾Â¾¾»»¸»»¾»»´´±£ \9c\96\99 \9c \99 \9c \99 £\9c ££ª±±¸´¸±±±±§±´¸¸»ÂÅÉÅÅɾ¾¾¾¾ÂÂÂÅÉÌÏÏϸ´´´±±±±´±´´¸´\81\88´´±ª±±´´´¸»»¾¸Â»ÂÂÅÉÉÉÅŞ»¾Â¾¾¾¾»¸¸¸±´¸»»»»¾¸¾»¸»´±ª§\96\92\92\92\92\92\92\92\92\92\8b\99\96\96\96\96\92\9c\99 \9c\9c\99\96\96\99\99\99\96\8f\96\96\96\99££ £\8f ª£§§ªª£ \9c\99\99z\96\92\88\8f\81\85\85\81~~\81~\81\81\81\88\85\85\88\8f\92\8f\92\9c\9c§££§ £\9c\99\99\92\92\8f\8f\8f\8f\8f\96\99\96\99\99\92\96\92\8f\8f\8f\8f\92\8f\92\96\8b\92\8f\8f\8f\8f\8f\8b\8b\88\8f\88\81~zzttppppppppppppw~~\85\88\8b\8f\8b\8f\92\8b\92\8b\92\99\9c££§£§\9c\99\81\9c\9c\85imf\8b\8f\85ptG\A=6=30X_\_ccfc_\XUURKXKNGDDDADAAADA=:::666663330000,,,0003636:::::666333300000006:==AADDGKNUUUcX_cff__\\\XXXXXUUX__\\\\Xcicii\XRc_RRNNKKKGGDDDAAA=U==X=:::::66666030666:666666:===DGGGGRX_ccfimtz\81~\81\81\81\81\81\81~~zttwpmppmmifc_XUURNNKKKGGDDGGGNNRimmttpwwwttttwz~\81\85\81\85\81\88\88\8b\8b\8f\8b\8b\8f\92\8f\8f\8f\8f\8f\8fimmppppppmpttwz\81\85\85\81\81\81~\81~~\81zwtttmmipttwz~\81\81\85\85\8b\8b\8b\92\92\96\99 \9c££§§§££££ ££§ª±±§ª£§££ ££ £ £\9c\9c\9c\99\99 £§§£§ªªª§£££ \9c\99 ££ § ££§§ªªÓÖÖÚÖÖÚÚÚÚÚÚÚÖÚÝÖÖÖÓÏÌÌÏÏÌÏÖÖÝÖÖÚÖÓÏÓÓÏÏÏÌÌÉÉÅÉÉÅž»»¸¸»»»¾¾Â¾»»¸¸»»»¸´´±\9c\96\99\92\99\9c\99\99\9c\9c\9c\9c \9c\9c \99 £§ª´´¸´±±ªªª±´¸¸¾ÂÅÌÅÅÅž¾¾¾Â¾ÅÅÌÏÏÏÓ¸´´´´±´±´±´´±´¸´\88´±±ª±±´¸´¸¾¾¾»Â¾ÅÂÂÉÉÅÅž¾¾Â¾¾¾»¾¾»»¸¸¸¸»»»»»¾¸»»»¸´±±£\96\92\92\92\92\92\92\92\92\92\8b\9c\96\99\96\99\96\9c\9c\9c\9c\99\99\96\92\96\99\96\99\92\92\99\96\9c££ £\8f §§§ªª§ \99\99\99z\92\92\88\8f\81\85\81\81~\81\85~\85\81\81\88\85\85\88\8f\92\8f\96\99 ª§§§£ \9c\99\99\92\96\92\8f\8f\8b\8f\92\99\92\96\92\92\92\92\8f\8b\8f\92\92\8f\92\92~\92\92\8f\8f\8ft\8b\88\8b\8b\88\81\81~wwppppppppppppptzz\81\8b\8f\8b\8f\92\92\8b\8f\8b\92\99\99 £§§\9c\99\81\9c\99\88mif~zwmmGXD:6=60\__\_ff_\XURRUKXNNDDDDDD=ADA==::66666330000,,,)),))06066=:==66663333300,,0:=A=DADGKKNURXc\cffc___\\XXUUUUUU___\\\ififcm_\U__RNNRNKNKGGDDDADNX==X::=:::6666636336::66366:::==DDDDGKR\__cfmtz\81\81\81~\81\85\85\81\81\81~tttmippppiffc\XURRRNKKKGGDGGGRNRfmmpwtwzwwwtwzz~~\81\85\81\81\88\85\8b\8b\8b\8b\8b\8f\92\8f\8f\8f\8b\8f\8fimmppppppmpptw~~\81\81~~~~z~~\81zwtttpppmttwz~\81\81\85\88\8f\8b\8f\96\96\99\9c £££§££££ \9c\9c\9c\9c\9c££§±±§ª£§£ £ £\9c\9c\99\96\99 §§§ªªª£§ \9c\9c £££§ §§ªªªÏÖÖÖÚÚÚÚÖÖÖÚÚÓÚÚÚÓÖÓÓÏÏÓÏÏÓÚÚÝÖÖÖÓÓÏÏÓÏÏÏÌÌÌÉÉÉÉÅž¾¾»»»¾¾¾¾Â¾¾»»¸»»»¸¸´±\99\92\88\92\96\99\96\99\99\99\9c\99 \9c\9c\9c\9c\99 \99\9c £§ª§±´¸±±ªªª±¸¸»ÂÉÉÉÅÅÉÂÅž¾¾Â¾¾Â¾ÉÉÌÏÏÓÓ»´´´´´±±±´±´´±´¸´´´±±±´´¸¸¸»¾¾¾¾¾¾Â¾Åɾž¾¾¾¾¾¾Â¾¾¾»»¸¸»¸»»¸»»¾»»»¸»¸¸´±±\9c\96\92\92\92\92\92\92\92\92\96\8f\99\99\99\96\96\99\9c\9c\9c\9c\9c\99\92\96\96\96\99\99\96\96\9c\92\9c £§\9c£§§§§§£ \99\9c\99w\92\96\88\8f\81\85\85\81~\85\88\81\85\85\85\8b\88\88\85\8f\92\92\99\99 ªª§££ \99\99\99\96\99\92\8f\8f\88\8f\96\96\92\92\8f\8f\8f\92\8f\8f\8f\92\92\8f\92\8f~\92\92\92\8f\8ft\8b\8b\8b\8b\85\81\81\81wzttppttpppppmptwz~\88\8f\8b\8f\92\92\8b\8b\8b\92\96\96\92\9c £§\99\96\81\9c\96\8biicfft_cGXG:6A::_\\\\cc\XURNUXK\RRRKGDDAAAAA=::666633333000,,,))%%%)3,::=:A=6:663333000003=ADADDGGKNNRRUc__iff__\\\XXXUUUUU___\\\iificmc_X__URRRNKKKGGGGGDGRXA=\=:::::6666366606::6636::6::=ADDGKNRX_\ffmpw~\85\81\81\85\88\81~\81\81~ttpmipppmmfif\\XUURRKKGGGDGGKRRUcimpwwwzwzzwwzz~~~\81\81\85\88\88\88\8b\8b\8b\8b\8f\8f\8f\8f\8f\8b\8f\8fiipppptppptptwz~~~~~zzz~z~ztttwpttippwz~\81\81\88\88\8f\8f\92\99\99\99\9c ££££§£££££\9c \9c §ª±±ª§§ ££ \9c\9c\9c\99\9c £ £§§§±ªª££ \9c £\9c££££££££ªªª±ÌÚÖÖÚÚÖÖÓÖÖÖÖÓÚÖÖÖÖÓÓÓÓÖÓÓÖÚÚÝÖÖÓÓÓÏÏÏÏÏÌÌÌÌÉÉÌÉÅÅž¾¾¾¾¾¾Â¾¾Â¾¾¸¸¾¸»»¸±´\99\8f\88\8f\92\92\96\99\96\96\9c\9c \9c\99\99\9c\9c\9c\96\9c §§§±¸´±§ªª´¸¸¸ÂÉÌÉÉÉÉÂŻ¾ÂÂÉÌÏÏÓÓÖÖ¸´±´´±´´´´´±±´´±±´´±¸¸»¸»Â¾Âž»Âž¾¾¾Â»»»´¸¸¾»¸»¾¾¾»»»¸»¸¸±±\96\92\92\92\92\92\92\92\92\92\96\92\96\99\99\96\99\99\99\9c\99\9c\9c\99\92\96\92\92\96\99\99\92\99\8f \9c £§ §§§§££ \9c\9c\99\99\99w\96\96\88\8f\85\85\85\81\85\88\85\85\85\85\88\8b\88\8b\88\8f\92\96\99\99£ª§£ \99\99\96\99\96\92\92\8f\88\8b\96\96\8f\8b\8b\8b\92\92\92\92\92\92\92\8b\8f\8b~\8f\92\8f\8f\8f\8b\8b\8b\8b\8f\88\81\81~wzwwppttppppppmtw~~\88\8b\8f\92\92\92\88\8b\88\8f\92\923\99\9c £\81\92\81\99\92\88_fcfcm\_GXK:6=A\_\\\\__XRRNRX\U_UUUNKGAA===A:::666633363000,))%%"""%3%=6===:66336333333336ADDDGGGKKNNRRXcc_fffc__\\XXXXXURR___\__iifici__\_\UUNNUNKKGGGGDGGNUUU_=====:::6663663:6=6:66:=6:==AAGGKKRU\Xccimw\81\85\85\85\85\88\81~\81\81\81wpmmmmpmiiiif_\XXURNKKKGGGGKNRUXcfiptwzzzz~zzzz~z~~\81\81\85\85\88\8b\8b\8b\8b\8f\8f\8f\8f\8f\8b\8f\8fmippppttpttttzzzz~~zwzzzwzwppptptwmppwzz~\81\88\8b\8b\92\96\99\9c\9c ££ §§£§£ £ \9c £§§£§££ £ \9c\99\99\9c £ ª§ª±ªªª§£ £ \9c£ ££§ª±±ÌÖÖÖÚÚÚÖÓÖÓÓÓÖÖÖÖÓÓÓÓÓÏÓÏÓÚÖÚÚÖÖÓÖÓÏÓÓÏÏÌÏÏÌÌÌÉÅÅÅž¾Â¾¾Å¾Â¾¾¾»»»»»»´´±\99\8b\8b\8f\92\92\92\99\96\92\9c\9c\9c\9c\99\9c\9c\9c\9c\96\9c\9c £§£ª´´±ª§´¸¸»ÂÅÉÉÅÅɾ¾»ÂÂÂÂÂÂÅÌÌÓÓÖÖÖ»´±¸¸±´´´´´±±±´´´´±±»»»»¾Â¾¾¾¾Â»¸¾¸¾Â¾Â»¾Â¾¾¾Âž»»¸´»»¾»¸»Â¾»¸¾¸»¸¸´±\96\92\92\92\92\92\92\92\92\92\92\8f\92\96\96\96\96\99\99\99\99\9c\99\96\92\92\92\92\96\96\96\96\9c\8f\9c\99 ££ª§££ \9c\99\99\96\96\99w\96\96m\8f\85\85\85\85\88\8b\88\88\88\88\88\88\88\8b\8b\92\96\96\99\9c§ª§£ \99\99\99\99\96\92\92\8f\8b\8f\92\92\8b\8f\81\8f\92\8f\92\92\92\92\92\8f\8b\8b\85\8b\8f\8b\92\8f\88\8f\8b\88\92\8b\81\81~zzwzwtttptppppppz\81\81\88\8b\8f\92\8f\92\88\8b\88\8b\8b\8f30:\9c ~\85\81\8f\8f\85_f_ccc\XGXK:6U\_\\XXXX\URRNUX\X\RUXRNGAAA====:6666333033300))))%%"\1f"0):3A===63006003033336ADGGGGKKNNNRUU_f_fcc___\\XX\\UURR___\\cifim_i\c\cXRRNNXKKKGGGGDKGKRRX_=AA:=:::66:6:66:6::::::=::::AAKKKNRXX\_cfmz~\81\85\85\85\85\81\81\85\81~wppmmmmififfc\\UXRRNKKGGGGGNNRXX_ffmtwzzz~~zzzzzz~\81\81~\85\85\88\88\8b\8b\8b\8f\8f\8f\8f\8b\8b\8f\8fpimptttwttwwwzz~zzzwwwzwwwtmpmttpwptttzw~\85\85\8b\8b\92\99\9c £§§££ª§§£££ £ \9c £§§ªª£ª§££ \9c \9c\9c\9c\99 \9c §§ªª±ªª§§£ £££ £ £ £§ªª±´´ÌÓÖÚÚÚÖÖÓÓÓÓÓÓÓÓÖÏÓÓÏÏÓÓÓÖÖÚÚÚÖÖÖÖÓÓÏÓÏÏÌÏÏÌÏÌÌÉÅÅž¾¾Â¾¾Â¾¾¾»»»¸»¸¸´\96\8b\8f\92\92\8f\8f\99\99\96\9c\9c\9c\99\9c \9c\9c\99\92\9c §£§ª±±ªªª±´¸¸»ÂÂÅÅÅÅɾ»Â»¾Â¾ÂÅÅÉÌÓÓÖÖÚ¾¾¸¸´´¸´¸±±±±±±´±±±´ª»»»»¾Â¾¾¸¸»»Â¾Â¾¾¾Â¾¾ÂÂÅž¾»¸»¾¾¾»¾¾Å¾¾¸¾¸»¸¸±±±\96\92\92\92\92\92\92\92\92\92\96\8b\96\92\96\96\99\99\99\9c\99\99\96\92\8f\92\8f\8f\92\99\96\96\99\92\99\92££ §§§ \9c\99\96\96\92\92\99\96\92\99i\8f\88\88\85\88\8b\8b\88\8b\8b\88\8b\8b\88\8b\92\96\99\96\9c §ª§§£ \99\9c\99\99\99\92\92\8f\8f\92\8f\8f\88\8b~\8f\8f\8b\92\92\8f\92\92\8f\8f\88\88\8b\8f\8f\8f\8f\8b\8b\88\88\8f\88\81\81~~zwzzwttttppppttz~\85\8b\8f\8f\8f\8f\8f\88\88\85\88\88\8b3\ 30\8b\99z\81\85\8bpp_c_cccXUGXN::XX\XXUNUUXRNNRXX\\\UXUUKDAA====::66633303366,,)%%)%)"\1f%\1f,\1f0=::=300,300033336:DGGGKKKKRRRRUU_ccffcc__\\XX\\UURR\\\___icmm\fXcX_URNNN\KKKGGKGGGDGNNXc===:A:=6666666:6:=::=:==:6::ADGKKNUX\X\cip~~\85\81\85\88\85\85\85\85\81\81wptpmmiicfffc__UUUNNKKDGGGGNRRXX_ccipwzzz~~~z~z~~~\81\85z\85\88\88\8b\8b\8b\88\8f\8b\8f\8b\8b\8b\8b\8bpimttwwztwwwwz~~~zwwwtzwttpmmipppwttwtwz~\85\85\8b\8f\8f\9c ££§§§§§ªªª§£££ ££ ££§ª±±ªª£§§££ ££ \9c\9c \9c \99 \9c \9c £§ªªªªª§£ £££§£§£ £ ££ªª´±¸ÏÌÚÝÚÝÖÚÓÓÏÏÓÓÓÓÓÓÏÏÏÓÓÖÖÓÚÚÚÚÚÚÖÖÓÓÏÓÌÏÌÏÏÏÓÌÏÌÅž¾Å¾Âž¾¾Â»¾¸»»¸¸±\92\8f\92\92\92\92\92\96\96\96\99\9c\99\99\9c \9c\9c\92\9c\9c\9c\8f££ §ªªªªª±´¸¸»ÂÂÂÂÅÅž»¾¾Â¾Â¾ÂÅÂÉÏÓÖÚÚÚÝ»»´¸¸´´´±±±±±±´ª§¸¸¾¾Â¾Â»»¸¸»¾¾»¾¾ÂÂÂÂÂÅÅÉÅÅž¾»»¾¾¾¾¾»¾Â»»»»»´±±±\96\92\92\92\92\92\92\92\92\92\96\8b\96\96\96\92\96\99\99\9c\96\96\96\8f\92\8f\8f\8b\92\96\92\96\9c\92\99\96 §\9c§£££\9c\9c\9c\96\8f\92\92\92\96t\8f\99p\8f\8b\8f\8f\88\8b\8f\8b\8f\8b\8b\8b\8f\8b\8f\96\99\99 \9c ªª§ª£ \9c\9c\9c\99\99\96\96\92\92\92\8f\8b\85\88~\8b\8b\88\8f\8f\8b\8f\92\8f\8b\8b\8b\8f\92\8f\8b\8b\8f\8f\85\88\8b\8b\85\85~~~z~~ztttptpttwwz\81\85\8b\8f\8f\8f\8f\8b\88\85\81~\85\880\0
+\8b\92z\81\81wmm\c__c_XXGUR::UUXUGRKNRRNKKRUUXXXRURRGDA===::::66333000063)),%))),"\e)\e,\e0:===300,000003336:DGGKKKNNRRRUUUc__ff_c_c_\\XX\UURR\\\__cffmm_fX_XcXRRNN\NKNGGKGDDDDKG\c==A==::6666::6:::=::=:==:666AAGGKRUX\\_cmt~~\85\81\85\88\85\85\81\85~\81wtwtppiifcfffc_XUUKNKGGKGGGRRUUX\_cimwwzz~z~~~~\81~\81\85\85\81\88\88\8b\88\8b\88\85\8b\8b\8b\88\88\88\8b\8bmmptwzzzwwzwwz~zzzwwwtwwttpmimmpptttwwzz~\81\85\8b\8f\92\9c£§§ªªªªªª§§§§££ ££§ªªªªªª§£§§ ££££ \9c\9c \9c\9c\9c \9c \9c£\9c£§§ªªªªª§££££§££££ £§§ª±¸´»ÌÌÚÚÝÝÚÚÓÓÏÏÓÏÓÏÏÏÌÏÏÏÓÓÖÓÖÚÚÚÚÖÖÖÓÓÓÓÏÏÌÏÏÌÏÏÓÌÉÅžÂÂÂÂÂÅÅÅɾ¾¾¾Â»¾¸»»´¸± \8f\96\96\96\8f\96\96\92\96\99\9c\99\9c \9c\99\9c \8f£ £§ªªª§±¸¸¸¾¾Â¾»Å¾¾Â¾ÂÂÂÅÅÌÏÖÚÖÚÚàž»´»¸´±´±´±±±±±±»¸¾¾Â¾¾Â»»¸¸»Â»¾»Å¾¾ÅÅÅÅÉÅž»¾¾»¾¾»¸¾¾Â¾¾»¾»¸´´±\96\92\92\92\92\92\92\92\92\92\96\8f\96\96\92\96\96\96\96\9c\92\92\99\8f\8f\8b\92\8f\96\96\92\96\9c\96\99\99 £\9c§§ \92\99\99\99\92\92\92\92\8f\96p\92\99t\92\8f\92\92\8b\8f\8f\8f\92\8f\8b\8b\92\8f\92\99\99\99£ £§ªª§£ \9c\9c\99\99\96\92\8f\8f\8f\85\85\81\81\88\85\81\8b\88\8b\8f\8b\88\8b\8b\8f\8f\8f\88\88\8f\8f\88\88\8b\8b\88\85~~~~~~~twwttptwwz~\85\88\88\8f\8b\8b\8b\88\85\81~~\81\81\1f\a%\8b\88z~~wii\c__c_XUGURRURRURGNDKNNGGGNRRUUUNRRNGDA===:::66633303,,30)%)%)%,,\1f\1f,\e)\1f\0\e:=\06,3\0,,,00366:=GGKKKfNNRRUUUX_\cccccc____\X_XURR\\__cffimpcc\\U_\RUNNXNKKGKGGDDGDDGXf=A==:::66::::6:=:===:==::336=AGGKRU\\_cipw\81\81\85\85\85\85\88\88\85\85\81\85~tttmpiifffffc_\UUNNKGGKGGKRRUXX\\cimttwwzzz~~~~\81\81\85\85\85\88\8b\8b\8b\8b\88\85\8b\88\88\85\88\85\88\8bmpptwzzzzzzzz~z~wzwwwtttptmmmmmpppppwwzw~\81\85\88\8f\96\9c£ª§±ªªª§£§§ §§§ªª§§§§§££££££ \9c\9c\9c\9c\9c\9c £§§§ªªªª§£§£§£§£§ £££§ªª´¸¸»ÉÏÚÝÚÝÚÚÖÓÓÏÏÓÓÌÌÏÉÏÏÌÏÓÖÓÖÚÝÝÚÖÖÖÖÓÓÓÏÌÌÌÌÌÓÓÏÏÌÉÅÅžÅÂÂÉÉÅɾ¾¾»¾»»»¸´´£ \99\99\96\92\96\96\92\96\99\9c\9c\9c\9c \9c \9c\9c \9c\92£ £§§ªªª´´¸¸¾»¾»»Â¾Â¾¾Â¾Â¾ÅÅÂÂÉÏÌÖÖÝÝÝÝž»¸»´´±´±´±ª±±±±±»»¾¾Â¾¾¾¾Â¾´´¾¾¾¾¾¾Å¾ÉÉÅÅÉÅÅÉÅ»»»¾»»¸¸»»¾¾»»¾»¸´±±ª\96\92\92\92\92\92\92\92\92\92\96\92\96\92\96\92\96\99\92\99\8f\96\96\8f\92\8b\8f\8f\92\96\92\99\9c\96\99\9c §£\9c\92\96\96\96\92\8f\92\8f\8b\96p\8f\99w\96\92\96\8f\8f\8f\92\92\92\8b\8f\8f\92\92\96\9c\9c\9c§£§±ª§£ \9c\99\99\8f\8f\8b\8b\85w\81\81\85~\81\85\85\88\8b\8b\8b\8b\8b\8f\8f\92\8b\88z\8b\8b\88\8b\88\85\85~\81\81\81~zzwzwwppwwzz\81\85\88\8b\8b\8b\88\88~z~z~~\81\1f\0)\8b\88zzztfiX_\\c\URGXRUXUNNKDKADKK=AGKKNNRKGNRKGDA===:::66333663,,),%)%)%",)"\e0\18%\e\ 3\18\0\0\0:00\0),,00336:=KKNNRiRRRUUXXX\_cccfcc_____\\\URRX\\_fifiimf__XXU_RXRRUNKRKKGGDDDDDD\iAD=A:=::::===:=:=A::==:=:66:AADGKNUX\_cmtw\81\85\88\88\88\88\88\88\85\81\85\85\81zttptmiiffffc_\XXRNGGKKKKKUUUXXX\cfptwwwzzz~~\81\81\85\81\85\88\88\8b\8b\8f\8b\88\88\85\88\88\88\85\85\85\85\8bppttzz~~~~~~~~~\81wztwttttttimmmmmmpttwwzw~\81\81\85\8b\96\9c§ªª±±±±±±ªª§§ª±ªªªª± ££§£££££ £ ££\9c \9c\9c\99\9c £ ££§££§ªª§§ª§§§§£§ £§£ªª±¸»»¾ÌÓÖÝÚÝÚÚÖÓÓÌÓÏÏÌÏÏÌÌÌÉÌÓÓÏÓÖÚÝÚÚÖÖÖÓÓÓÏÉÌÏÌÏÓÏÏÏÌÌÉÉÅÅÂÂÂÅÂÂÅÉÉɾ»¾¾»¸´±±§£\9c\9c\99\96\99\96\96\96\9c\99\99\9c\9c\9c \9c\9c \96£££ª§§ªªª´±¸´»»¾¾¸¾»Â¾»ÂÂÂÅÂÅÂÅÅÉÏÌÓÚàÝàÚ¾»¸¸´´±±±±ª±ª´¾¾¾Â¾Â¾¾Â¾¸¸»»ÂÂÂÂÉÅÂÌÅÅÉÉÉÉɸ¸»»¸¸´´¸´»»¸»»»»´±§\99\92\92\8f\92\8f\8f\8f\8f\92\96\96\96\96\92\96\92\96\92\96\8f\92\92\8f\8f\8b\92\8b\8f\96\96\99\9c\96\9c\9c£\9c ££\9c\92\8b\8b\92\92\8b\92\8f\8f\92t\8f\99z\96\8f\96\8f\8f\8f\92\96\92\8b\92\92\92\92\99\9c §§ª±ª±ª§ £ \9c\96\96\8f\8f\88\88\85w~\81\85z\81\81\81\85\88\88\88\8b\88\8f\8b\92\8b\88w\88\8b\8b\8f\8b\88\85\81\81\85~~zzzwtwttwzz~\81\81\85\8b\88\88\85\85wwttzz~):\88\8b\88zzzpcf\c_\c\UUXXUUXRKDGAD==KA::DGGKKKNGKNKGDA===::666360::3,)%%%,"%\e\1f0%\1f\1f\e\14\1f\11\a\11
+\ 3\ 360\e\ 3%\0,0036::GKKNNimRUUUUXX\_\cccc_c_\\____\URR\__\fifmmpi\cXUU\RURRXNNUKGGGDKDGAAXfUAA=::::66AAA===:=:::::=6666A=ADNNU\_cipwz\85\88\8b\88\88\88\88\88\88\81\85\88\85~wtttpmiffficc_\XUNKKNNNNUXXX\\\_ccptwwwzzzz~\81\81\85\85\85\88\8b\8f\8b\8f\8b\88\85\85\85\88\85\81\85\85\85\8bttwwz~~~\81~~~~z\81~zwwwptppppmmmmmpppttwwzz~~\81\85\8b\96 §ª´´´´´±±±±ªªª´ª±ª£ £§£££ ££§££§ £ \9c\9c\99\9c £££§§££ª±ªªª§ª§ª§£§§§££§§§±´¸¾»ÂÉÏÓÝÚÝÚÚÚÓÓÏÓÌÏÏÏÌÏÌÌÌÏÏÏÏÖÖÚÝÚÚÚÖÖÖÓÓÏÌÌÌÏÌÏÏÏÏÌÉÉÉÅÂÅÅÂÅÅÂÅÉÉÉÅÅž¾¾¸´´´§£ \9c\99\99\99\99\99\99\96\99\9c\9c\9c \9c \9c\9c\9c£\99££§ªª§§ª§´´´´»»»»¸¾¸¾¾»ÂÅÅÉÅÉÅÉÉÌÌÏÏÝçàÝϾ»»¸´´±´±±±ªªª´¾¾¾Â»¾Å¾»¾¾»»¾¾ÅÅÅÅÅÉÅÉÅÅÉÉÅÅž¸»»¸±´±´´´¸¸»»»»¸¸±ª\9c\92\8f\8f\8f\8f\8f\8f\8f\92\92\99\99\96\8f\96\8f\92\92\8f\8b\8f\8b\8b\8b\88\92\8f\8f\96\96\99 \99\9c\9c£\99 § \99\92\8b\8b\92\96\8b\92\8f\8b\96~\92\99\96\96\8f\92\8f\92\8b\8f\96\92\88\92\92\96\96\96\99 \9c§§ªªªªª§£ \9c \96\99\8f\8b\8b\85\81wz~\85~~~w~\88\85\85\8b\88\8b\88\8f\8b\8bz\8b\8b\8b\8f\8b\8b\88\85\81\85~~~~zwtwwwwwz\81\81\81\85\88\85\85\81\81wttpwz~,\88\88\88\8b~zzp_fXfc\_XXU\\XUXUGGG=D::K=::AADDGGKGKKGGDA==:::666363:=36)%""0\e%\e\1f\18"\e\e\18\14\a\0\e\0\14\a\a\0,\a\a\0\ 3),036:DUNNRXmpRUUUUXX\\_cffcc_\\_\\c_XXRU__c\immmmpiUcXUXXRRUR\RNXNKGGGNGDAAUiDDA=:::=66DAAAA:==6::=:=6::6AADDKRX_ccmtz~\85\88\8b\8b\88\88\88\88\88\85\88\8b\88\81zzttpmiffiiff_\\XUNRNNRXXXX\_\\\cfptwwtwwz~~\81\81\85\88\85\85\88\8b\8b\8b\8f\88\85\85\85\88\85\81\85\85\85\8bttzwzzz~\81\81\81\81~~\81~zwwztptpmppppppptttwwwzz~~\81\85\88\99££ª¸¸´¸´±´´±´±ªª´±±±±ªª§£\9c £££££££§£§§£ \9c\9c\9c\99 £££§££ ª±ªªªªª§§§§§§§££§ª§ª±±¸»¾¾ÅÉÓÓÝÚÝÚÖÖÖÖÓÓÌÏÏÏÌÌÌÉÉÌÌÌÏÓÖÝÝÚÝÝÝÚÚÖÏÌÌÌÏÏÏÓÓÓÏÏÌÉÉÉÅÉÉÂÉÅÂÉÉÉÉÉÂÂÅ»¸´±ªª§ \9c\9c\9c\99\96\99\99\9c\99\99\99\9c\9c\9c\99\9c\9c \9c \9c£££§ª§§ª§ªª±±´¸»»»¾¸»»»¾»ÂÅÅÅÉÉÉÅÌÉÓÖÖëëÉÅÅ»»¸¸´´±±±±ªª§ªª´Â»»Â¸Âž¾¾¾¾¾ÂÂÂÅÅÉÂÅÉÉÉÅÅÅÅž¸¸¸´´±´´´´´¸»¾¸»¸±\9c\96\92\92\8f\8f\8f\8f\8f\92\8f\96\99\96\8f\92\8b\8b\8f\88\8f\8f\88\88\8f\8b\8f\92\92\96\96\99 \99\99\9c£\96££ \8f\92\88\88\92\92\8b\8f\8f\8b\96\81\96\99\96\96\92\96\92\92\8b\8f\92\92\8b\92\92\96\96\96\9c\9c\9cª§§ªªªª§ª££££ \96\99\8f\8b\8b\81\81zz~\81~~~tz\85\81\85\88\88\8b\88\8b\8b\8b~\8f\8b\88\8f\8b\88\88\85\85\85~\81~zwwtwzzzz~~\81\81\81\85\81\81~zwptptw~,\88\88\85\88~~wmccUcc_cX\R__\XUUDGD=D==K=:==AADDDKKKKKKDA==:::6:6660:A0:)%"\1f0\e%\e\1f
+\e\e\e\18\11\ 3\99\99\99)%%\a\18\99\11\a\a),03:AR_RRXimpcUUUXXX\\_cffcf_\\_X___U\R\cc__iipmpmfXcXXXUURUU_UUUNKKKKRGDADRfADA=::=::6AADA==AA6::===::6:=DDGKR\_cmpww~\88\88\8b\8b\88\88\88\88\85\88\88\8b\88\85~~tttpmiifmiif__\\RU\fc\\_\\_\__cipptwttwzz~\81\81\85\88\85\85\88\8b\8b\8b\8b\88\88\85\85\85\88\85\85\88\88\8btpwwzz~\81\81\81\81\81\81\81~\81~zzztpptmtpppttptwtwwzz~\81\81\85\8b\8f\9c£±¸¸¸»´´¸¸±´´±±±´´´ª§§££\9c ££§§£££§§§£££ \9c\9c £§ §ªª§§§§£§£££§ªª±¸»¾ÂÂÂÉÓÏàÝÝÝÖÖÖÖÓÏÏÌÏÌÉÌÌÌÅÏÌÌÏÏÖÚÚÖÝÝàÝÚÖÓÏÏÌÏÏÏÓÓÓÏÏÏÉÌÌÅÉÌÌÉÅÅÉÉÌÌÉÂÅÅž´´´§ª\9c \9c\9c\99\99\99\96\99\99\99\99\99\99\99\96\99\9c\9c §§§§ªª§§ª±´´»¸¸»¸¸»¸¾¸ÂÅÅÅÉÌÌÅÌÅÚÚÚî»´¸¸¸±´±±±±±ªªª§§ªª±¸¾¾»Â¾¾ÂÂÂÂÂÂÂÂÅÅÅÅÉÅÅÅÉÉÅÉÂÅž¾»´¸´´´±±´¸¸´¸¾¾¸¾¸´±ª\9c\99\96\92\92\8f\8f\8f\8f\92\8f\92\96\92\8f\92\8f\8b\8b\8b\8b\8b\85\85\8b\88\8b\96\96\96\99\99£\99\99\9c£\96£ \9c\8f\8f\88\85\92\8f\88\8f\8f\8f\96\99\96\99\96\99\96\96\96\92\8f\8f\92\92\8f\8f\8f\92\99\99\99\9c §§£ªª§ª§ª£§§ \9c\99\96\8f\8b\88\81~zz~\81zzztt\81~\81\85\85\8b\88\81\88\88z\8b\8b\88\8f\88\8b\85\81\85\81~~~~zzwzzz~z~~\81~~\81~zzttppmpw~\88\88\88\85\85zzti_f\c_c_U_Rcc_XXUNKGAD:=K=:====AADKNNNNKDDAA=:::==:606D,=%"%\e0\e%\e\1f\ e\18\18\18\18\14\0\99\99\99\99)\99\11\99\99\99\11
+%,06AGXcUU_mimfXXXXXX\\_cffcfc_\c\_\\X_R_cc_ciitipmc\_XXXXXUUX\UXRRRNNKUKGDGRfAAA:=:=::6AAA===A=::::==:::==DDKKN\_mptwz~\88\88\8b\8b\88\88\88\88\88\88\8b\8b\8b\88\81\81zwttpimmpmmifffffiiifc_c______fmtttwwwwww~~\81\85\88\85\88\88\8b\8b\8b\8b\8b\88\85\88\85\88\85\85\88\88\88tpttzz\81\81\81\81\81\81~\81\81\81\81~~zttptpppptwwwwzwwzzz~\85\85\8b\8f ª±±¸¸´¸¸¸¸¸´¸´´´±´±´´¸¸ª££ \9c££§£§§£££££§£§££ \9c\9c\9c \9c££ \9c£ªª±ªª§££§ §£§£§ªª±´»¾¾ÂÅÂÌÏÏàÚÝÝÚÚÖÖÓÏÏÌÌÏÌÏÉÏÉÏÌÌÌÌÖÚÚÚààäàÝÚÚÓÓÏÏÓÓÓÓÓÓÏÓÏÏÏÌÌÏÏÌÉÉÌÉÌÌÌÅÉÅÅÂÅž¸±¸±ªª\9c£ \99\9c\99\96\99\99\96\96\99\99\96\96\96\99\9c\9c££ §ª§§§§£§§ª±±±´»»´¾¸´»´¾»ÅÅÅÅÉÌÌÂÏÿõõõõ¾»»»´¸´´±´±±±±ªªªª£ªª´¸¾¾»¾Â¾Â¾ÂÅÉÉÉÉÉÅÅÉÅÉÉÅÂÅ»»¸¸¸±´±±±´´´¸»¾»¾´´´§\9c\99\96\96\92\8f\8f\8f\92\8f\92\8f\92\92\8b\8f\8b\88\88\8b\88\8b\81\85\8b\8b\8f\92\92\96\99\99 \9c\9c\99£\96 \99 \8f\8f\88\81\92\8f\88\92\92\92\96\99\96\96\99\99\96\96\99\96\92\8f\96\8f\8f\8f\92\92\96\99\99\99 §££ªªªªª§ª§§§ \99\99\92\8f\8b\85\81~wz~\81zzzppz~~\81\81\8b\85\81\8b\8bz\8b\8b\8b\8f\8b\8b\81\85\85\81\81\81\81\81~~z~z~~w~z~~~~zwwpppmmmwz\85\85\85\81\81wwmf\c_c___X_Ucc\XUURNKDD6:K=:=====DDGKNNNKGDAA==:=AA=:6,D)A%"%\1f0\18"\1f\1f
+\14\14\14\14\14\99\99\99\99\99\99\99\99\99\99\99\99\11%)0:DR\fUUmpiiiX\\X\\\\_cffccc__c_\\_UcRc_f\fffpfmi\\_XXXXXXX\\U\RRUNNNXK_GKNiA=DA:::66:DD==AA=A::==AA=A=AAGDGKNX\ptpw~~\88\8b\8b\8b\8b\8b\8b\88\8b\88\8b\8f\8b\88\85\81~ztwpmmppppmimiiimmmifcfccc__cfppttwwwzww~z\81\81\85\88\88\88\8b\8b\88\88\88\85\85\85\88\88\88\88\88\88\88ppptzw\81\81\81\81\85\81\81\81\85\81\85\81\81zwwpttpwwwzz~z~zz~wz\85\88\92\99 £§´´±¸¸¸»»»¸»¸»»¸¸´¸´¸¸»»ª§££\9c £££§§§§£££ §££§£££ \9c \9c\99£§§±ª§§££§£££££§ª´¸¾ÂÂÅÅÉÏÌÚàÝÝÝÚÚÖÓÓÓÏÌÌÏÌÏÌÌÌÌÌÉÏÌÖÚÚÝààäààäÝÚÓÖÖÓÖÖÓÓÓÓÏÓÓÓÏÏÏÓÏÌÌÌÌÌÌÌÉÅÉÅÂÅÅ»¸´´±ª £ \9c\99\99\96\96\96\96\92\96\96\92\96\96\96\99\99£££ªª§§ªª§§ª§´±»¸¸»¸´¸´»¸ÂÅÅÉÌÏÏÂÿÿõøøø¾¾´¸´´±´±´±±±ªªªª£ª±´¾¾»ÂÅÅžÅÂÉÉÉÅÉÅÅÉÅÉž¾»¾¸´¸´´±±±±´¸¸»¸»§±´£\9c\99\92\96\8f\8f\8f\8f\8f\8f\8f\8f\8b\8f\8b\8b\88\88~\8b\88\88\81\88\8b\8b\8b\92\8f\92\99\99£\9c \99£\96\9c\96\9c\8b\8b\8b\81\96\92\88\96\92\96\99\99\99\99\96\99\96\99\99\96\92\92\96\8b\8b\8f\8f\92\96\99\99\9c\9c§££ªª§ªª£§ \9c\99\96\8f\8f\8b\81\81~zw~\81zzzmp~~~\81\81\88\81~\88\88z\8f\88\8f\8f\8b\88\81\88\85\81\81\81\81\81~~~~~~~zzzz~\81~ztwtppmmmtw\81\81\81\81\81twic\_c___c\_Xf_XXXUURNDD6:K=:::==AADDGRNNKGDA===:ADDA=:,A)=%%%\1f,\e\1f\e\1f\a\ e\ e\0\11\11\99\99\99\99\99\99\99\99\99\99\99\99f")0:GpttXpppmiiX\\\\__\_ciifcc___\\\_UcUc_c\ficm_im_\\\\\X\\\X\U\UUXRRRUNcfNKiDDDD=:=:66ADAADDAA==AAADDGADDGKKNN\_pttz~\81\88\8b\8b\88\88\8f\8f\8b\8f\8b\8f\8f\8f\8b\88\85\85\81~wwptttttmmpmmmpmmiiffffc__ffptpttwwzwzzz\81\81\85\85\8b\88\88\88\8b\88\85\85\85\85\88\88\88\88\8b\88\88ppptwz\81\81\85\85\85\85\85\85\85\81\88\81\81zzwtwwwzz~~~\81\81\81~~\81\81\81\8b\92\9c £§ª±´´±»»¸¾¾»»»»¾¾¸»¸»»¸»»¾§ª§£ §§£§ª§£££ £ ££ £\9c£££ \99 £§ªªª§§§££§£§§§±´»¾¾ÅÉÌÌÌÓÝÝÝÝÚÚÖÓÓÓÏÌÌÉÌÌÏÏÌÉÌÌÌÏÏÖÚÝààääääçàÝÝÚÚÖÖÖÓÖÓÖÏÖÓÓÓÏÓÏÏÌÌÌÏÏÏÌÌÅÉÉÅÅ»´´´±±ª £ \9c\99\99\92\92\92\92\92\92\92\92\92\92\96\99\96 §£ª§§ªªªª§ª§±±´¸¸´»¸´´´¸¸¾ÉÉÌÏÏÓÏÿÿüøøë»»´´¸´±±±±±±ªªªªª§ª±´¸»»»ÂžÅ¾¾ÅÂÉÉÉÉÉÉÉÉÅž»¾¾»Â»¾¸´¸´´´±±´´±¸´±§\96 \99\99\92\92\8b\8f\8f\8b\8b\8b\8b\8b\88\8b\8b\88\88\88~\8b\88\85\85\8b\8b\8b\8f\8f\92\92\99\99£\9c \99£\96\9c\99\99\8b\88\8b\85\99\96\88\96\92\99\9c\9c\9c\99\99\9c\96\9c\99\92\96\92\96\8b\88\8f\8f\92\96\99\99 \9c£§§§ªªªª§££ \9c\96\92\8b\8b\88\81\81zww~\81z~zipzzz\81\81\88\81~\88\8b~\8b\85\8f\8f\88\8b\81\85\85\85\85\81\81\81\81\81~~~\81~zzwzz~zztttpppmmpwz~~~~ttf_\_____c__\f_XXXUXRNGD==K=::=:ADADDGNRNKGAA==:=DDAAA=,=%"%%)\1f)\e\1f\18\e\0\ 3\99\ 3\0\ e\99\99\99\99\99\99\99\99\99\99\99\99\\1f)3=Ntww\tmpmmm\\_\____cciifff___\\X_XfX_cc_cf_i\cmc\\\\\\\_X\XXXXXXUUUURfiRNmRGGG=AA=:6DGDDDGDDAAAGKKKNNNNKNKRRXcptw~~\85\88\8b\8b\8b\88\8b\8f\8f\92\8f\8f\92\8f\8f\88\88\88\85\81~ztwwwwwpptppmmmmiiifiifc_fimppttwwzzzz~\81\81\88\85\8b\88\88\88\8b\85\85\81\85\85\88\88\88\85\8b\88\88ppptwz\81\81\85\85\88\85\85\88\88\85\88\85\85~~zwwwz~~\85\81\81\88\85\88\81\85\81\85\85\8f§§ª±´¸´´»¾»¾¾¾¾¾¾¾Â¾¾»¾¾¾¾¾§ªª§£ £££§§§£££ £ £££ § £§ \9c\9c \99\9c\9c§§ª£§§§§§§§ªª´´´»ÂÂÉÉÏÓÌÖÝÝÚÝÚÖÓÓÓÓÌÌÌÉÌÌÏÏÌÅÌÌÏÓÓÖÚàààääççëäààÝÝÚÖÚÖÖÖÖÓÚÖÖÓÏÓÓÏÏÏÌÏÓÏÌÉÉÅÅÅɾ¸±´´±ª££ \99\99\96\92\8f\92\8f\8f\8f\92\8f\92\96\99\9c\99££§ªªªªªªª§ªª±±±´¸±¸´±±±±¸»ÅÉÌÓÓÓÓÿøüçä¾»¸´´´´±±±±±ª§ªªªªª±´´¸¸»¾Â¾ÅÂÂÂÂÂÂÅÂÉÉÅÉÅÅÅÅž´¸¸»»Â¸»¸´»´´±±±±±±±±±§ª\96\92\96\96\8f\8f\8b\8b\8b\8b\8b\8b\8b\88\88\8f\8f\85\85\88~\8f\85~\85\88\8b\88\8f\92\96\92\9c\99§\9c \99£\96\9c\99\9c\8f\8b\9c\99\9c\96\92\99\99\99\9c\9c\99\9c\9c\9c\92\9c\9c\96\96\92\96\8b\8b\8b\8f\92\96\99\96 §§§ªªªª£££\9c\9c\96\92\8f\88\85\81\81wzw~\81zzwipzz~\81\81\88\81\81\88\88\88\88\88\8b\8f\8b\8f\88\88\85\85\88\81\81\81\81\85\81\81\81\81\81~~zzz~wztwttppmptwwzzzzppi_X_\\___\\_ccUXUXXRRGDAAKA=::=AADGGKRRNNGDA====AD==AA))"")%,"%\e\1f\18\e\99\99\99\99\ 3
+\99\99\99\99\99\99\99\99\99\99\99\99X\e)3Azwwzttptpppf_______ffiifffc___\\\Xc\\_c__c_f_cp_\\\\\\\\\\XX\XXXXUUU_cfURpUNKKGGD==AKKGGDGGGAGGKRXURRRRNRNRRXfmtw~~\85\88\8f\8b\8b\8b\8f\8f\8f\92\92\92\92\92\92\8b\8b\8b\88\81\81~wzzzzztttppmmiimiiiimffcfimppttwwzzz~~~\81\85\85\88\8b\88\85\88\88\88\85\85\85\88\88\88\85\88\88\88pptww~\85\81\88\88\88\88\88\8b\88\88\88\85\85\81~zz\81~\85\85\81\8b\8f\8f\8f\8f\96\8b\8b\88\88\8b\99ª±±´±´¸¸¸¾¾¾¾ÂÂÂÂÂÂÅ»¾Â§ª§§§££ £££§£ £ £ § §£ \9c \99 £§±ª§ªª§ªª±±¸¸´¾ÅÅÉÏÓÖÓÚÚÝÝÚÚÓÓÓÓÓÌÌÏÌÌÌÏÌÌÉÌÌÏÓÓÖÚäÝàääçççäääààÝÝÝÚÚÚÚÖÚÚÖÓÓÓÖÓÏÌÏÏÏÏÌÏÌÅÉÉÅ»´±´±±ª££ \9c\9c\99\96\92\92\8f\8b\8f\92\92\92\96\96\9c\9c£§§ª§ªªª§§ª±±¸´´±´´±±¸¸ÂÅÉÖÖÏÓÿàÝÝྻ¸´´´´´±±±ªªª´¸¸»»¾Â¾ÂÅÅžÅÅÅÉÅÉÌÉÅÅÂÅž»´´¸»¾Â»¾»¸¸¸¸´±±ªª££\96\92\96\92\8b\8f\8b\8b\8b\8b\8b\8b\8b\85\88\8f\8b\88\85\85\81\8f\85\81\85\88\8b\85\8f\96\92\96\9c\99§\9c \99£\96 \99\9c§\9c \9c \99\96\9c\9c\99 \9c\9c \9c\99\92\9c\99\99\96\92\99\96\8f\8f\92\96\96\99\96£\9c£§§§§ \99\99\96\92\8f\88\85\81\81w~t~\81zwwimzw~\81\81\88\81~\85\88\8b\88\8b\8b\8f\8b\8b\8b\85\88\88\85\81\81\85\81\85\81\85\81~~~~zzzzwztzwtptmptwwwwtwmmfcU\X\\__\X___UXXUURRDGDAK==:=ADDGGKNNRNNGGAAA==AD=A=A,)"")),"%\1f\1f\14\18\99\99\99\99\99\99\99\99\99\99\99\99\99\99\99\99\99\99U\e,3zzwwwwwmwttpi_ccccc_cfiiiffcc__\\XX_XX____c_cccmc_____\\__\\\\XXXXXXXc_iXftXRNNKKGGGDNNKKGNKGKKKNU\XXUUUUURRRciptz~\81\85\88\8b\8b\8b\88\8f\8b\8f\96\96\99\96\92\96\8f\8f\8f\88\85\85\81z~~zzwtttmmiiiimiiiimfffimmpptwzwzzz~\81\81\81\85\85\85\88\88\88\88\88\85\88\88\88\88\88\85\88\88\85\85ppwzz~\81\85\88\88\88\88\88\8b\88\8b\88\85\85\85\81~\81\85\81\8b\8b\8b\8f\96´±\96»±\8f\8f\96ª±´´¸´¸»¸»¾Â¾ÂÂÅÅÂÅÅÉÅÂÂÅÂÅÅŧª§£££££ £ £££ £ ££ ££ ££ \9c\9c\9c\99 \9c£ª±±±±±¸´¸±´´¾»¾ÂÉÉÏÓÖÚÖÝÝÚÚÚÚÏÏÏÓÏÌÏÏÌÌÌÏÏÌÌÌÏÏÏÓÚÝäààçäççççäçäààààÝÝÝÝÚÚÚÖÖÓÓÓÏÏÌÌÏÓÓÏÓÏÌÉÌ´´´±±ª§§££ \9c\99\9c\96\92\92\8f\88\8f\92\92\96\99\99\99\9c§ªªªªª§ª£§ª±ª´±´±±´´´¸ÂÅÓÓÏÏÖÖÚÝ»»»¸´´¸´´±´±ªªªª±±»¸»»¾¾¾Â¾ÂÉÅÅÂÅÅÅÅÅÉÉÌÉž»»¸¸»»¾Â¾¾»¸¸¸¸±±±±±ª§ª§§ \96\8f\92\8f\8b\8b\8b\8b\8b\8b\8b\8b\8b\88\88\8f\8b\85\88\88\85\8f\88\85\88\85\8f\88\8f\92\8f\96 \9c§\9c \99£\96£\9c§£§£\9c\99\9c \99£\9c\99 \9c\99\99\9c\99\99\99\96\9c\99\92\96\96\96\96\99\9c \9c§££§±±ª§ \9c\99\96\92\8f\8b\88\85\81\81t~t~\81zzwppzw~\81\81\88\85\81\85\88\8b\85\88\8b\8f\8b\8b\8f\88\8b\8b\85\0\81\85\81\81\81\85\81~z~~zzwzwwtzwtttppttwttpwiic_U\XX__\XX_\\RUUUXRRGKDDKA===ADGGGNRRUNRKGA===A=D==:=0%"\1f),)")\1f\1f\11\14\99\99\99\99\99\99\99\99\99\99\99\99\99\99\99\99\99\99X\e,:zwwzzztptpwtmccfcfccffiiifffcc_\\\XXXR_______c_i___________\__XXXX\\\f_f\it\URRNNNNNGRRNKNRNNNNNNX_\\XX\XUUUXfmttzz\81\85\88\8b\88\8b\88\8f\8f\92\92\92\99\96\92\96\92\92\92\8b\88\88~zzzwwtpttmiimimmiimimiiiimppptwzz~z~\81\81\85\81\85\85\85\88\85\88\88\8b\88\88\88\88\88\85\85\85\85\85\85ttwzz~\81\85\88\85\88\88\88\8b\88\88\88\85\85\85\85\81\85\88\88\8f\8f\96\99¸¸´´»´´±´±±´¸¸¸¸¸¾»»ÂÅÂÅÅÂÅÅÂÅÉÅÅÅÅÅÅŧ§ª§££ £\9c \99 \9c £ £§ ££ \9c \9c\9c\9c\99 ª±±±¸´¸¸»»»»»¾»Â¾ÂÅÉÌÓÖÚÖÚÚÝÚÖÚÖÏÏÏÏÌÉÏÌÌÏÌÏÌÌÌÌÏÏÓÖÝààààçäççäëçëçääääÝàÝÝÚÚÝÓÖÓÖÓÏÓÌÌÌÓÓÏÖÏÏÌÉŸ±±±±§ª§£££\9c\99\99\96\96\92\8f\88\8b\92\8f\96\9c\9c\9c ªª±ª£ª§ª§§ª±±ª±±´±±¸¾ÂÏÏÌÏÓÓÓ¸´¸»¸´´´±´±±±±ªªª´´¾»¾¾Â¾»ÂÉÂÅÅÅÅÅÅÉÌÉÉž¾¸¸¸´´»»¾Â¾¾»¸»¸¸´´±±§ª§£§§\9c\99\96\92\8f\8b\8b\8b\8b\8b\8b\8b\8b\8b\8b\88\8b\8b\8b\81\88\88\88\8f\88\88\85\88\92\8b\92\92\8f\96£ ª\9c \9c£\96±±\9c±ª§ª§£\9c £\9c \9c \99\9c\9c\9c\99\9c\96\9c\9c\96\99\99\96\99\9c £§££´´§ª \99\99\92\92\8b\8b\85\81\81\81wzw~~zwwtt~w~\81\81\88\88\85\85\88\88\85\8b\88\8f\8b\8f\8f\8b\8f\8b\88\0\85\85\81\85~\85~~~~~zzzzwwtzwwtwtptptppmtfcc_U_UX\_XUX\\XURUUURRKKGDKAAAADGGGKKNURNRKDDA===:D=:3:0%"\1f),,"%\1f\e
+\11\99\99\99\99\99\99\99\99\99\99\99\99\99\99\99\99\99\99\\e,Awwtzwwtttmttpcpfcccfiiiiiifffcc_\\XX\Ucccccc_ccm____________cc\\XXXX_ic\\it_UUURRURRNUXUUR\X\RRUR\c__\\_\XXXfmpwww~~\85\88\88\88\8b\88\8f\8f\92\92\92\92\96\92\96\92\92\8f\8b\8b\85zzzztttpptmmmmmmimimmmmmmmppptttzz~z~\81\81\85\81\88\85\85\88\85\88\88\8b\88\8b\85\88\88\85\85\85\85\85\85pttwzz\81\81\88\88\88\88\88\88\8b\88\85\85\85\85\88\85\88\8f\8f\96\96¸´»»¸¸»¸´´¸±´±¸»»»»¸»¾¾ÅÉÅÂÉÅÅÅÅÅÉÉÉÉÅÉÉÅÅŧ£ª§££\9c \9c\9c\99\9c\99\9c \9c \9c £ £ \9c\99\9c\99\99\99\99 ª±´´»¸»¾¾¾¾¾¾Â¾ÅÂÅÉÓÖÖÚÖÖÚÚÚÚÓÖÓÌÏÌÏÉÅÌÌÌÏÌÏÌÌÉÏÏÏÖÚàÝàààäääääççëçççççàäÝÝÚÝÚÓÖÖÖÓÏÏÌÉÌÓÏÓÖÓÓÏɸ±±±ª§££££\9c\9c\99\92\92\92\8f\8b\8f\92\8b\96\9c\99 £ªª±±´±ª§§£ª£ª£§£ ´´±¸»»ÌÌÉÌÓÓÓ±´´»¸¸´´´´´±±ªªªª±±¸¸Â¾¾¾¾ÂžÅÉÅÅÅÅÅÅÂÅÉÉÅž¾»¸¸¸´±±¸»¾¾¾¾¾¸»¸»¸´±±´ªª§£££\9c\99\99\8f\8f\8b\8b\8b\8b\8b\8b\8b\8b\8b\8b\88\8b\88\8b\81\8b\88\88\8f\88\88\81\88\8f\8b\96\96\8f\99£ ª \99´´±´ª§§ ££ ££ ££\9c \9c\99\99\9c\99\99\9c\99\9c\9c\99\9c £ §ª £¸´±£§\9c\9c\96\99\96\96\8f\88\85\81\81\81tzz~~zwzwp~zz\81\81\88\8b\85\88\88\88\88\88\88\8b\8f\8f\8f\8b\92\8b\8b\0\85\85\85\85z\81\81~z~~~z~zzzwzzztttttpppmmpffc\U_RXX_XU\\\XRUUUURRNKGGKAAADGGGKKNRURRRNKGD==:=G==3=0)%\1f,),%"\1f\e
+\ e\0\99\99\0\99\99\99\99\99\99\99\99\99\99\99\99\99\99\99\1f3GRtpwtwwwwmwptftwtciffimmiifffcc__\\\XUcccccciccic___________c_\\\\\\cfc\_ft\XXXUUXUUR_c\\U_\_XXXU_f____c_\\ciptwwz~\81\85\88\8b\8b\8b\88\8f\8f\96\92\92\92\96\8f\92\92\8f\8b\88\88\81wwwwpppmmppmmppmmmmpmmpppppppptwzz~z~\81\81\85\85\85\88\85\88\85\8b\8b\8b\8b\8b\85\88\88\81\85\81\85\81\81ppttz~\81~\85\88\88\88\88\88\88\88\88\88\88\88\8b\88\8b\92\92\9c\9c»¸»¾»»¾¸¸¸»´´´¸¸»»¸¸¸»»ÉÉÅÅÉÅÉÉÅÉÌÉÌÉÉÉÉÅÉŧ§£ \9c\9c\99\99\99\96\99\99 \9c \9c \9c£\9c\99\96\99\99\96\99\99 ª±´¸¾»¾ÂÂÂÂÂÂÅÂÅÅÉÌÖÚÚÚÚÚÚÚÖÖÏÓÏÉÏÉÌÌÉÏÏÏÏÌÏÌÌÉÏÓÌÚÚààäàààäàääççëçëçççääÝÝÚÝÚÖÖÓÖÓÏÏÌÉÌÓÏÖÖÓÓÏɾ´±ª§££££ \9c\9c\99\92\8f\8f\8b\8b\8f\92\88\96\99\9c £±±´¸±§ª§£ª§ª£§ ª± ±±´»»¾ÅÌÉÉÓÖÖ±´´¸¸¸´´¸´´±§ªªª±±´»»¾Â¾¾¾ÂÂÂÂÅÉÂÉÅÅÅžÅÅÅÂÅ»»»»¸¸´´´¸¸¾¾Â¾»»¾»¾¸¸´±±ªª§§ \99\9c\96\8b\8f\8f\8b\8b\8b\88\88\88\88\88\8b\88\88\8b\8f\88\88\88\88\8f\8b\88\85\85\8b\8f\99\96\92\99£\9cª\9c\9c±±±´¸´´±ªª£§§£ ££££ \9c\9c\9c\9c\99\99\9c\99\99\9c \9c\9c £\9c§ªª\9cª»¸´£§\9c\9c\99\99\96\92\8f\88\85\81\81\81tz~~~zz~zp~~~\85\81\85\88\81\8b\8b\88\88\8b\88\8b\8f\92\92\8f\8f\8f\8b\8b\88\88\85\85~\81~\81~\81~\81z~zzzzzzzwwtttmmmmmmfc_\U\NXK_XX\\XXURUUURRRKKGKDDDDGKKKKNUURRURNNGDA:AG=:0=3)%\1f0),%"\e\18\ e\ e
+\99\99\a\99\99\99\99\99\99\99\99\99\99\99\99\99\99\99,:KRpptwtwtwpttwiwwwwmfmmimiifffffcc_\\XUcccccfmfficcc_________fc_\\\_\fif_cfwXXXXXX\X\Ufff_Xc_c\\\Xciccccfc_cfmtwtw~\81\85\88\88\8b\8b\8b\8b\8b\8f\92\8f\92\92\92\8b\8f\8f\8b\88\85\85\81wtwtmppmppppptpmmmppppppppttpttwwz~~~\81\81\85\85\88\88\85\88\88\8b\8b\8b\8b\88\88\85\88\85\85\81\85\81\81mmppzz~z\81\85\85\85\88\8b\8b\8b\8b\88\8b\8b\8f\8b\8f\99\96£»¾»¾¾¾¸»»¸¸»¸¸¸»»¸¸´¸´»¾ÉÉÉÅÉÅÅÉÉÌÌÌÉÉÌÉÉÉÉű§§ £ \9c \99\99\96\92\96\99\9c\9c\9c \9c\9c\9c\9c\99\9c \9c \99\99\96\96\96\92\96\9c ª´´¾¾ÂÅÅÅÅÅÅÅÅÉÉÏÌÚÝÝÚÚÚÖÖÚÓÌÓÉÉÌÉÉÌÌÏÏÏÏÉÏÌÉÌÓÖÏÚÝàäääääçàäääççëëëçëçäàÝÚÝÖÖÖÓÓÓÏÏÌÉÌÓÓÖÓÏÏÏÉ»±ª±±ª££££ \99\99\92\92\92\8f\8b\8b\8f\8b\96\96\9c£ ±´¸´¸´ª§ª§ª§§§§ §±£±±±´±´¾¾ÂÅÉÉÉÏÖÖ´´´»¸¸¸¸¸±±±±§ªª±±´¸¸»¾Â¾Â¾ÂÂÅÉÂÅÂÂŻ»»¸»¸¸´¸´»¸¾Â¾¾¾¾¾Â»¸¸±±ª§££\9c\99\99\96\8f\8f\8f\8f\88\8b\88\88\88\88\88\8b\88\8b\8b\8b\8b\85\88\88\8f\88\88\88\88\8f\92\9c\96\92\99§ \9c§´±´¸´´´´ªª§§§ª§££££ £ \9c\99\99\9c\99\9c\9c ££ ªªª\9c»»¸£§\9c\9c\99\96\92\92\8b\8b\88\81\81\81wz~~~~~~~z\81\81\81\85\81\88\88\81\88\8b\88\8b\88\88\8f\8f\8f\92\8f\8f\8f\8b\8b\88\8b\85\85~\81\81\81\81\81\81\81~~~z~~~zzwwttpmpiiimcf_\U_NUG_UX_\XXRRRRUNRRNKGNGGGDKKKKKNRRUUUURRKGDDDG=6,:6))\1f0%)%\1f\e\14\11\18\ e\99\99
+\99\99\99\99\99\99\a\99\99\99\99\99\99\99\993ANR_mptwwttpttwitwwztfpppmmmiffffcc__\XUcccccfpffmfcf__cc_____f_c_\\ciimfcccz\\\\XX\X_Xmiiiifcf___\fmffc_ffcfimtzwz~\81\85\88\88\8f\8b\8b\8b\8b\8b\8f\8b\8f\8f\88\88\8b\8b\85\85\85\85~wtwmptpmttptptpppppptptptpttpttwwz~~~\81\81\85\85\88\88\88\8b\88\8b\8b\8b\8b\88\88\85\88\81\85\81\85\81\85mmptwzzz\81\81\81\81\85\88\8b\8b\8f\8b\8b\8f\8f\8f\92\9c\9c§¾¾¾Â»»¸¸»¸»»¸´¸¸¸¸´´´´¸»ÅÅÉÉÌÅÉÉÌÉÌÌÉÉÉÉÉÅÅ´ª£££ \9c\96\96\92\92\96\99\99\99\99\9c\99\99\99\99\99\99\9c\9c\9c\96\96\92\92\92\92\96\9c£§±¸¸ÂÂÅÅÉÅÅÅÅÅÅÌÌÓÚÚààÚÚÚÚÖÖÓÉÏÉÌÌÉÌÏÏÏÓÓÌÌÏÌÌÌÏÖÓÖàäçäääçäàäääçççççëëçääàÝÚÚÖÓÓÓÏÏÏÌÌÌÖÖÖÖÏÏÌŸ´ªªª£ ££ \9c\99\99\92\92\92\8f\8b\8f\92\8f\92\8f\9c £±¸»¸´´ªª§ª±§§ ª´¸´±¸´¸¾¾¾ÂÅÅÉÌÓÓ¸¸¸»¸»¸»»±±±±ª§ªª±´´´´»¾¾ÅÅÂÅÅÂÉÅÅ»¾Â¾¾¾»¸¸¸¸¸´´¸»»¾Â¾¾»¸±±ª§§££\9c\99\99\96\8f\8b\8b\8f\8b\8b\8b\8b\8b\8b\8b\8b\85\8f\8f\8b\8f\88\8b\8b\8f\88\85\8b\85\92\96\9c\96\92\99£ ª ª´±´´´±\85±ªª§ª§ª§§§§£££ \9c\9c\9c\99\9c\9c\9c \9c £§£ª±»»¾»¸±§£\99\9c\99\92\92\92\8f\8b\85\81\81\81zwz~~~~z\81~\81~~\85\81\85\85\85\88\88\88\8b\88\88\8f\8f\8f\8f\8f\8f\8b\8b\8b\8b\88\85\88~\81\81\81\81~\85\81~~~z\81~~~ztwppmppiiiicGc_U_RUG_XX\\\XRRRUURRRRRNRGKGGKKKNKRNNUXXURUNKDGDD:3,=3))"3),)\e\18\18\14\e
+\99\99\a\99\99\ 3\99\99\a\ 3\a\99\99\99\99\99\99):DNU_pipttptttwwmwzz~wptttppmiifiiffcc_\Xccccffpciifcc_________ccc_\\cmimcf__~\_\_\\\\c\pmmmmiffcccfimiiccfffimmwzwz~\81\85\85\88\8f\8b\8b\8b\8f\8b\8f\8b\8b\8b\88\88\88\85\85\85\81\81~wtwmtptpttttptppppptwtttttwttttzzw~z~~\81\85\85\85\88\88\8b\8b\8b\8b\8b\8b\88\85\81\85\81\81\81\81\81\81imptwzww~z~\81\81\85\8b\8b\8f\8b\8b\8f\92\8f\96 ª»¾¾Â»¸¸¸¸´»¸´´´´¸´´±±´´¸ÂÂÅÅÉÅÉÅÉÉÏÉÉÉÉÅž¸§§§§ \96\96\96\92\92\96\96\99\96\99\96\96\99\96\96\96\99\99\96\96\92\92\96\92\8f\96\9c ª±¸»ÅÅÉÉÌÉÉÉÉÂÉÉÌÖÝÝÝàÚÚÖÚÓÓÓÉÏÌÌÌÉÌÌÌÌÓÏÏÏÓÌÌÌÓÖÖÚàäçàäàäàààäääëäçëçëçääàÝÚÚÖÖÓÏÌÏÌÌÏÏÖÚÖÖÓÌÉ´´±±ª§§£ ££ \99\96\96\96\96\8f\8f\8f\96\92\96\92\99\9c§»Â»¸´ªªª±±±±ªª£¸¸»¸»»»Â¾¾ÂÂÅÂÉÉÏÏ»»»»¸»¸»¸´´±ª§ªª±´¸¾ÂÅÅÂÂÂÂÉÅÅÂÂÅž»¾¾»»»¸»»»¸´¸¸»»¾Âž¸±±ª£§ £\9c\96\99\96\92\8b\8f\92\8b\8b\8b\8b\8f\8b\8b\8f\8b\92\92\8f\92\8b\8f\8f\8f\8b\8f\8f\88\92\96\99\99 £ª£±±´´¸´\85±ªªª§£ª\8f§ª§££§ £ \9c\99\9c ££££ª§¸»¾¾¸¸±£ \99\9c\96\8f\96\92\8f\8b\85~\85\81zzw~~\81\81~\85~\81~\81\88\81\88\88\85\85\88\88\88\88\8b\8f\8f\8f\8f\8f\8f\8b\88\8f\8b\85\88\88\81\85\81~\81\81\85\81\81~~~~~~~zptmmmmmififRKf_X\RXG_\\___UURRXXUNUUURURNKKNNNKNNKKRUUUUUNNGDGA660:3)%"6,),\1f\14\e\18\1f
+\99\99\ e\0\99\ e\99\99\ 3\0\ 3\a\99\99\99\99\99\11=GNX\mfppttwwwzwwzz~~ztwwwttpiiiiifffc__\ccfcffpfmfic_c___________c__cpiicf\\z\\\_\\\_c_tppmmmiifffimimmfciiimmpwzz~~\81\85\85\88\8b\8b\8b\8b\8f\8b\8b\88\8b\88\88\88\85\81\81\85\81\81~ztwppptpwwtwttttpttwwttwtwwtwttzzwz~~~\81\85\85\85\85\85\88\8b\88\8b\88\88\85\81\85\85\81~~~~\81mipttwzwzz\81\81~\88\88\8f\8f\8f\8f\8f\96\92\99££¸»»¾»»¸¸´¸¸¸´¸±´´´±´±´´Â¾ÉÅÅÉÌÉÉÌÌÉÉÅÉ»´ªªª£ \9c\99\96\96\92\92\92\96\96\92\96\92\92\96\92\92\92\99\96\99\96\92\92\92\92\92\99 £ª»ÅÉÌÌÌÏÉÉÉÅÅÉÌÏÖÝàÝÝÚÚÚÖÓÓÏÌÏÌÌÌÌÌÌÌÌÏÓÏÌÏÏÏÏÖÖÖÝàääàäääàääçççëçëëäëëäàÝÝÚÚÖÖÏÏÌÏÏÏÏÓÖÖÚÓÓÉɾ¸¸´±´ª££ £££ \9c\96\96\96\92\92\8f\92\96\96\96\96\99\9c£ª¾Å»¸´ª±±±±´´¸ª§»¾¾¾¾¾ÂžÂžÅÅÅÉ»»¾¾»¾»»»´´±±ªªª§ª±´»¾ÂÅÂÅÅÅÌÉž¾Â¾»»¾¾»¸´»»»»´¸»¾»¾Âž¸´±±ª§§\9c \99\96\96\96\92\8f\8f\92\8b\8f\8f\8b\92\8f\8f\92\8f\92\8f\92\96\8f\92\8f\92\8f\92\92\92\92\99\9c\9c££ §£±±´´´\85\88ª \88\8f£ªª§§§ § \9c\9c\9c ££££££§§»¾¾»´¸ £\99\99\92\8f\96\92\8f\88\85\81\81\81z~t~~\81\81\81\85\81~\81\81\85\85\88\85\88\88\88\88\85\88\8b\8f\8b\8b\8b\8b\8b\8b\88\8b\88\85\85\85\85\85~~~~\81~~~~z~~zzwmfiiiiiffffRNfc_X\\K_\___\UUURXXXNXXXUUURNKNRRNRNKKNRRUUUNKKGDD:6060,%"60),"\14\e\18\1f
+\0\a\11\18\99\18
+
+\0\18\0\ 3\0\99\99\99\e6AGRX\mfppttwww~zz~z~~~wwwwtttimmiiiffccc_ffffiipiicic__c_c_c_____c__ccmmmff_\~\\\\\\\__\ttpmpmiiiifmmmmppimmmmptwzwz~~\81\85\88\88\8b\8b\88\8b\8b\8b\88\8f\88\8b\88\85\81\81\81~\81~~zwwptttwwwwwwttttwtwttttwwwwwwzzz~~~~~\81\81\85\85\81\85\88\85\88\85\85\81~\81\81~wzzz\81pmptwwwwzz\81~\81\85\85\8f\8f\92\8f\8f\99\96\9c£§±´»¸»¸¸´¸¸¸´´´´´±±±±±±´´¸¾ÂÅÅÉÉÉÌÌÌÌÌÉÉž¾¾¾¸±ª£ \9c\99\96\96\92\8f\8f\92\92\92\8f\8f\8b\8f\92\8f\92\92\96\96\96\96\92\96\92\96\96\99 §±»ÉÌÏÏÏÓÌÉÌÅÅÅÏÓÚàààÝÚÚÚÓÏÏÌÌÏÏÌÉÌÌÉÌÌÌÓÏÏÏÏÓÓÖÖÝààäàààäààäääëëëëëëçîëçäàÝÚÚÖÓÏÏÌÏÏÏÓÖÖÓÖÏÏÌÉ»»´¸¸¸±ª§£££§£ \9c\99\92\99\96\96\92\96\99\96\99\99\9c ªª¾É¾»´ªªª±´´¸¾Â¾ÅÅÉÂÂÂÂÅÉÅÂÅŪ»´Â»Å¸¸»»»»¸»»¸¸´±ªª§±±´¸ÂÂÂÅÂÅÉÉÉž¾Â¾»¾¾»»»¸»»»»¸¸»¾¾¾¾Â¾¾Åž¸´´±£§ \9c\99\96\92\92\92\8f\8f\92\8f\8f\8f\8f\8f\92\96\96\92\96\8f\96\92\8f\96\92\92\8b\96\92\96\96\99\99\99 § £±§±±±±±±\85\85ªªª\88§£\88\8f ª§£§££§£ \9c \9c ££££§£££§¾¾»¸±´ª §\99\96\92\8f\96\92\8b\8b\85\85~\81zzw~\81\85\85\81\88\85~\85\81\81\81\85\85\88\88\85\85\85\8b\88\8b\8b\8f\88\88\88\88\85\88\0\85\81\81\81\81zzzt~zzzzwzzwwticcfffccccfRKc_c__\Nc____\XXUU\XXX\XXXXXURNRRNNNKGKKNURRRNKGGAD63,300)%30))"\1f\1f\e"\11\18\ 3\18\e\ e\1f\a\a\0\e\0\0\1f\99\99\99\11:DKR\\mimmpwwwz~~~~~~~~zttwtttmpimfmifccccffffmmpiffif______fc_c_c__cc_iiiccc\z\\\\_\\_\_tppmmmmmmmippmpttpmmmmptwwww~z~\81\85\88\88\88\88\88\8b\8b\88\8f\8b\8f\88\88\81\85\81~\85\81~~zzttpttwzwtwttwtwwwwwwtwwwwwwzzzzzz~z~~\81\81~\85\85\81\85\85\81~~~\81ztwzz~ppttwtzw~~\81~\85\81\88\8f\8f\8f\96\92\99\99 £§±´¸¸»´¸´¸¸¸´´´´±±±±´¸´Â¾ÂÅÉÅÌÌÌÉÌÉÌÅž»»¸±§£\9c\99\96\96\96\8f\8f\8f\8f\8f\8f\8b\8b\88\8b\8f\8f\8f\92\96\92\92\96\92\92\96\96\99\9c£ª´»ÌÏÓÓÓÏÌÌÌÉÅÉÖÚÝààààÖÚÚÖÓÓÌÌÏÏÌÉÏÉÉÌÉÌÏÏÏÓÓÓÓÚÝàääçääàààààääççëççëëëëëçäàÝÝÚÖÓÓÏÓÏÓÓÖÖÖÖÏÏÌɾ»¸»»¸´§§£££ \9c\96\99\99\96\92\99\99\92\99\9c £´»Å¾´±±ªª´´¾ÅÅÅÉÌÌÉÉÅÅÉÌÅÅŪ´´±¸¸´´¸¸»¸´»¸¸¸¸´§ªª´¸»¾ÂÅÅÅÅÉÌÉž¾Â¾¾¾Â¾¾¸¸¸»»¾»¸¾¾»Â¾Âž»´´§§£ \99\96\96\8f\92\8f\92\92\8f\92\8f\92\92\99\99\99\96\96\92\92\96\92\96\96\96\8b\99\96\96\99\99\96\9c\9c§£§±ªª±ªª\85§§ª\88§£\88\8f\9cª£££ £££ \9c \9c£££££££§Â»»»´±§££\99\99\92\8f\96\92\8b\8b\85\85\81\85~~z~\85\88\85\85\88\88\81\85~\81\81\85\85\85\88\85\85\85\8b\85\8b\8f\8b\88\8b\88\85\81\81\0\81~~~~pwwpwwwwwtwwppmc_________cNNRUfcc_Xc_ccc_\UUXX\\\\\X\XUXRNNNKKNGGGGKRNNRNKDD=A6300,3))0,,%%""""\1f\e\1f\1f\1f\0"\ 3\ 3\ 3\1f\0\0"\99\99\11\a=DNRX\iipmpwww~~~~~\81\81~~~tptttpppiiiiiifcccfffimppmcfiicccc__ffcc____c_cffi_c_\w\_\_c\\\\_pmmppmppppmmppppwtpmpmpttwwtzzz~\85\88\88\85\88\88\88\88\8b\8b\8f\92\88\88\85\85\85~\85\85\81\81~~wtpttwwwtwtwwttwwzzwwwwwwwwzzzzzzzz~\81\81\81~\81\81~\81\81~zzz~tptwwztttwzwzz~\81\81\81\85\88\8b\8f\92\96\99\96\9c\9c£§§´´´¸¸´´´´¸¸±±±´±±ªª±´±ÂÂÂÂÅÉÌÌÌÏÏÌÌÉÅ»»¸¸±ªª£ \99\96\92\92\92\8f\8b\8b\8f\8b\8b\85\8b\85\8b\8b\8b\8f\8f\92\96\92\96\96\96\99\99\9c §´¸ÉÌÏÓÓÓÓÏÌÌÌÅÌÚÝàààààÖÖÖÖÓÓÏÏÏÌÌÉÏÉÌÏÌÏÏÏÏÓÓÓÖÚàäçççäàààäààäççëëëëëëëëëççäààÝÚÖÖÓÓÓÓÖÓÓÚÖÓÌÌž¾¸¾¾»´±ªª§§£ \99\99\9c\9c\99\96\99\9c\9c\9c£§§±¾¾Â¾±ªª±´»ÂÉÌÉÌÏÏÌÌÉÌÌÏÅÅÉű´´´´±´´¸»§£»¸¸´´´ªª§±±±±±¸»Â¾ÅÅÅÉÉÌɾ¾Â¾»Â¾¸»»¾¾¾¾»»¾¾Â¾ÂÂÅ»»´±ª±ª§§ \9c\99\99\92\8f\8f\92\92\8f\92\8f\92\92\9c\9c\99\99\99\96\96\99\92\96\96\99\9c\9c\99\9c\99\99\9c\99\99£§ª§±ªªª§ £\9c §§§£\88\8f\99§££££ ££\9c \9c §§£§££§§¾Â»¾»´±§££\9c\99\8f\92\92\92\88\8b\88\85\85\85\81\81~~\88\88\88\88\8b\8b\85\85~~\85\85\88\88\85\85\85\85\88\88\8b\8b\8b\88\0\85~~~\0~wwtppptmmtpttptpmccc_\X\\\\XX_KKRUiffc___ccc_\UXUX_\_\_\_XXXRKKKKGKGDDDGNKNNKG=A:=3033,0)),))%%%%%%"\1f"""\1f%\0\ 3\0"\0\0%\99
+\a:AGNUX\fimmmwwtz~~~\81\81\81~\81zwtwpppppimmfimfffcfifmppmmcciicccfccccc___c____ccf_f__w\\\__\\\\\miimmmmptpppttttwwtppptttwwtwzz~\81\88\88\81\88\88\85\85\88\8b\8f\92\88\8b\88\88\88~\85\81\85\81\81~wwtptwzwtwwwwwwtwwzzwwzwwwwzzz~zz~~~\81\81\81~~~w~~ztwwzpmpttwttwzwz~z\81\81\85\85\88\8f\8f\92\99\99\9c £§ªª´±¸¸¸±´¸´¸¸±´±±±±ª§¸¾ÅÂÅÂÉÌÌÏÏÏÏÌϾ»»±´±§§ \9c\96\96\92\92\92\92\8b\88\8b\88\8b\88\88\85\88\8b\88\8b\8f\92\92\92\92\96\96\99\9c\9c£ª±¸»ÌÌÓÓÖÓÏÏÌÌÌÉÌÝààààÝàÖÖÖÓÏÓÏÏÏÏÌÌÓÉÏÌÉÏÏÏÏÓÓÖÖÝääçççäääàäàääëçëëëëëëîëëççäàäàÚÚÚÓÖÖÖÓÖÖÚÖÖÏÏÅ»¾»¾¾»¸±ªª£§§£ \99\99\9c\9c\9c\99\9c\9c ª´Â»±ªª±´¾ÌÌÏÌÏÓÓÏÏÌÏÏÓÌÅÌÉÅ´±´´´±±±¸¸§£¸¸¸´±±§ªª±ª±±±´¸¾¾ÂÉÂÅÉÅÌÅž¾Â¾Âž¾»Â¾¾¾¾¾Âž¾¾Â¾¸¸±ª§§ \9c\99\99\92\92\92\92\96\8f\92\8f\96\92 \9c\9c\99\99\99\99\96\99\96\9c\9c\99\99 \96\99 \9c\99§ªª£§§§\9c \9c\85\9c §££ \88£\96§££§££££\9c £ §§§ª£¸ª¾¾Â»¾¸±´£ \9c\96\8b\8f\92\92\88\8b\88\85\85\85\85~\81~\88\88\88\8b\88\88\88\81\81\81\85\85\85\88\85\85\81\85\85\85\8b\8b\88\85\0\85~~zzzwtmpmpimmpmimmpmc_X__XUUXUXXX\KKNRfiffc_cfcf_\XXXX_Xc_c__U\URGGGGGGDAA=)%:KK==:=6:0330,,)),))))))))%%%)"")\0\0\0)\0\0)\99)6=DKNUX_cfmmmtwtwzzz~\81\81z~zwtwmtpptimmiiififfiffmtmipccffcccccccccccc___c__cccc_\z\_\\_\\\\\ifiimmptttptwwwwzzwttttptwtwww~~\81\88\85\81\88\85\85\85\88\8b\8f\8f\8b\8f\88\8b\8b\85\85\81\81\81~~zwwptwzwwzwwzzzpwwzzwwzzzwwzzz~z~~~z\81\81\81~wzwzwwpttwmmmmmtwwz~z~\81\81\85\85\88\88\8f\92\92\99\9c\9c ££§ª±±¸´¸´´´´´´±±±±ª±´±¾ÂÂÅÅÉÌÌÌÏÏÏÏϾ¾¸¸±±££\99\96\96\92\92\8f\8f\8f\88\88\88\88\8b\85\88\88\88\8b\88\88\8b\8f\92\92\96\96\96\9c\9c §»¾ÏÌÓÓÓÓÏÏÌÌÉÌÏÝààààÝÝÖÖÖÓÏÓÏÏÓÓÏÌÓÉÓÌÌÏÏÓÏÏÖÖÚàääçäçäääääààäëçëîëëëëîëëçççääàÚÝÚÓÚÚÚÚÚÚÚÚÖÓÓ¾¾¾»»¸´±§§§££ \9c\9c\9c\9c \9c ££±±¸Â¸±±±ª±¾ÉÌÏÏÓÏÓÓÖÓÓÏÓÓÓÏÌÌÌÉ´´±´´±±±¸´ª§´´¸±±§ªª±±±±´¸¸¾»ÂžÉÉÉÉÉÅž¾ž¾ÂÂÅž¾¾¾¾»»¸±ªª§§££\9c\9c\99\92\92\92\8f\92\92\92\92\96\96 £\9c\9c\9c\9c\99\96\99\96\99\9c \9c\99£\96\99£ ª§ªª§£ª£ \96\9c\99\81\9c £ \9c\88 \99££££££ £ £\9c£§ª±¸»ª¾»¾¸¾»± £\9c\99\92\88\8f\8f\8f\8b\88\88\88\85\88\88\81\85\81\88\88\8b\8b\88\88\88\81~\81\81\85\85\85\81\85\81\81\85z\88\88\85\81\0\81zzzwztpipimfiimiiifiiXXU\\NRNUUUXXUNKKNRfcffcfifc\_\X\X\\_cc\\XXUNGGGGGDA=:6)%600,,0:33,30,0))))))))))))))),%%)\0\0\0,\0\00\1f,:AGKRU\_cfmmmtwwtwww\81~~wzwtpwmpmppiiiiiiiifiiiimpifmccfccccccccfcccfc_c_c___cc__z\\\\_\\\\\fcffmpptttttwzwwzwzwwtppwwwwwz~~\85\85\85\85\85\85\85\88\88\88\8b\8b\8f\92\88\8b\88\88\85\81\81~~z~zwptwwzwzzzzzzwwwzzzzzzzzwz~~\81~~\81~z~~~zwwttwtppppiifmipzz~\81~\81\85\85\85\85\8b\8b\92\96\9c\9c £§§ªª±±±´±´±±´´´¸´±±±´´»ÂÂÂÅÉÉÏÌÏÏÏÌÉ´´ª££\9c\99\92\8f\92\92\8f\8b\88\88\88\8b\88\85\85\85\88\88\88\88\8b\8b\8f\92\96\96\99\9c\9c£§ª»ÂÌÏÏÓÏÏÏÏÏÌÉÌÏÝààààÝÝÚÖÖÓÓÓÓÏÏÓÓÏÓÌÓÏÏÓÏÓÏÓÖÖÖäçäççççääçääàççëîëëëçëîçëçäçàäàÝàÝÚÝÚÚÝÚÚÚÚÖÏÓž¸¸¸´±§££ \9c\9c £§§±´´¸¾Â¾¸±±´±´ÉÌÓÓÓÖÓÏÖÖÖÖÓÖÓÖÓÏÏÌÉ»´´±´±±´¸±£´´´±ªª±±±±±±¸»Â¾ÂÉÂÉÅÅÌÉɞ»ÅÅÅÂÂÉž¾Â¾¾¾Â»»»´ª§ª£§££\9c\9c\9c\96\96\92\92\96\92\92\92\99\99\9c£ \9c \9c\96\96\96\92\9c\99\9c\9c\9c£\9c\9c§ £§\9c§§§\92 \99\96\96\99\96\81\99\9c \9c\9c\96\99\9c\9c ££££\9c £ £ £§´»¸ª¾¾Â¸¾»£´ \99\96\8f\81\8f\8b\8f\8b\8b\88\88\88\8b\88\85\88\85\88\88\8f\8b\8b\85\85\81z~\81\85\85\81\85\85\81\81\85z\88\85\81\81~~wz~wzwpmmmmfiicfiiff_UURUXNNRRRRUUUNKGKRc_ccfiiic__\\\\X\_c_XXXNRKDGDDD==:,)))0,,,,,,0,)0,,,)))),,,,,,,,,,,0)),\0\0\03\0\03%6=DGNRU\_cfmmmpttpttw~~ztwwttwmpmmmmiiiimimifiiimtifmfficfcccfccccccc_c___c_____cw_\\\\\\\\\ccffmptttwttwzwwzwztttmtwzwzw~~z\81\88\85\85\81\88\85\88\88\88\88\8b\8f\8f\8b\8f\8b\8b\88\85\81\81~z~zztwzwwzzwzz~zztwwwwwwzzzzzz~\81~\81\81~z~~zzwtpttpmimmfffiip~~\81\81\81\85\88\88\8b\8f\8f\92\96\96 ££§§§ªª±±±´±±´±´´´±±±±ª±´´¸ÅÂÂÅÉÌÏÏÏÏÌÉÉž±ª£££\9c\99\96\92\92\8f\8f\88\88\88\88\88\85\85\85\85\88\88\88\88\88\8b\8f\92\96\96\99\9c §ª»ÂÉÏÌÓÏÏÏÏÌÌÉÏÓÝàààààÝÚÖÓÏÓÏÏÓÓÓÓÓÓÏÓÓÓÓÓÓÓÓÖÓÖäçäççççääçäçàççëëëëççëëäççàäàäàààÚÝÝÝÝàÝÚÚÚÚÓÖÏž»´±¸±±ªª§§ \9c \9c §ªª±±¸¸¾Â»»´´´¸¸±ÅÌÏÖÖÓÖÖÓÖÖÖÖÖÓÓÖÖÓÏÉɾ´±´´±´´¸±±£´¸´±ª±±±±´´¸¾ÂÂÅÉÅÉÉÉÌÉÉž¾ÅÅÂÅÅÉÉž¾¾¾Â¾¾¾Â»¸¸´ªªªª£§££ \9c\99\96\96\92\96\8f\96\92\9c\9c\9c \9c\9c\9c\96\99\96\96\9c\9c \9c\9c£ §£§£\9c§\9c£\92\9c\99\99\92\92\8f\92\85\96\99 \9c\99\99\99\9c\99 £ \99£ £££££ª±¸¸¸»¾¾¾»»»£±£\9c\96\96\8b\81\8f\8b\8f\8b\88\88\88\8b\88\88\88\88\88\88\8b\8b\88\88\85\85\81~z\81\85\85~\85\85\81\81\85z\88\88\85\81z~zzzzwwtpmmiiiifif\0fcXUUNRUNNRNNRURRKNKKN_R__ffiffc__\X\UX\_\XUUNNGDDDDA::0,)))0)))))))),,,,0,,,,,,,,,,,,,0,0,,0\0\0\06\0\0:):ADKNRU\\fcimmpppptttzzwttwwwwppmmmmmimimiimimiimwiiifmiffffffcccccfc_c_____c__cct_\\\\\\\\\c_fimmptwtwwwzwwzwzttppptwwzz~\81~\81\85\81\81\81\88\85\85\85\85\88\8b\8f\8f\8f\8b\8f\8f\88\88\81\81zzzzzwzwzzzzwzz~z~wwwwwwwwzwzzz~\81~\81\81\81~~zwwtttttpmimmccciim\81\81\81\81\85\88\8b\8b\8f\92\92\96\99\9c£§§ªªª±±±±´±´±ª´´±´±±±±±±±´´¸ÂÂÅÅÉÌÏÉÏÏÌÅžªªª§§£ \9c\99\96\92\8f\8b\8b\85\88\88\85\85\85\85\85\85\85\88\88\88\88\8b\8b\92\92\92\96\9c \9c£»ÅÉÌÌÓÏÌÏÌÌÌÌÌÓÝàààààÝÝÖÖÏÓÏÏÓÓÓÖÖÓÓÓÖÓÖÖÓÏÓÓÖÖàçäçäççäääääàçëëçëëççççäççàäàäààÝÝàààÝàÝÝÝÝÚÓÖÓÅ»´±´±´ªª§§§ £ £\9c £§ªª´´¸Â»»¸´¸»»¾ÉÌÓÚÖÖÖÖÖÖÖÖÖÖÖÓÓÖÓÏÅÅ´´±´±´´¸±´§´¸±±±±§±±±±±±¸»»Â¾ÉÉÉÅÉÅÉÉÉÅÅ޾ÅÅÅÉÉÉÉž¾Â¾¾Â¾¾¾¾¾»´´±ªª§§££ \96\99\96\92\96\8f\96\92 \9c\9c \9c\99\99\9c\99\96\96\99\9c £ £££§£§£\9c§\9c \8f\99\92\96\8f\8f\8f\8f\88\8f\92\9c \99\99\99\92\9c\9c£ \9c \96£ ££§§ª´¸´ »»Â»»¸»££\96\8f\92\8b\85\8f\8b\8b\8b\85\88\88\88\8b\8b\8b\88\88\88\88~\8b\85\81\81\81\81~\81\85\85\81\85\85\85\81\85z\88\88\85\85z\81~~zwwzwtpmimmiiic\0c\\RRNNNNNNRNRRNRNNNKNUNU\fcifccc\\UXKUXNXUNRNKGGDDA=63,,))),)))))))))),,0)0)),,,,00000,03003\0\0\0D\0\0K3=DGKNUX_cicimmppppttttwwttwwzwtpmmmmmimimiiimmmmpztifipffffcccccccccc_______cc__ft__\\\\\\\\_cffmptwwwtwzwwwwwwtpppppwwz~~\81\81\85\81\81\81\81\85\85\81\81\85\88\88\8f\8f\92\8f\92\8f\8b\85\81\85zzzzzwwwzzzztzz~zzwwwwwwwwzwzz~~\81\81~\81~~zwwttttpppiiiifcciip\85\81\81\85\88\8b\8b\8f\92\96\96\99\9c §ªª±±±±±´´´±±±±±±±ª±±±´»¾ÂÂÂÅÉÉÉÌÉÌž»§ª§§££ \99\96\96\96\8f\88\8b\88\88\85\85\88\85\85\85\85\88\88\85\88\8b\88\8b\8f\92\92\96\9c\9c\99£¸ÂÅÉÌÏÌÌÌÉÌÌÌÌÓÝààààààÝÝÖÓÖÓÓÏÓÓÖÖÓÓÓÖÖÓÖÏÓÓÓÖÚàçäçäçäääàääàäëëçëëçäççççäàäàääÝÝàààäàààààÝÚÓÖÓÅÅ»´±±±´ªªª££ £ £§§§ª´´´¾Â»»»¸»¾¾ÂÅÉÓÚÖÖÚÖÖÚÖÖÓÖÖÓÓÖÓӾ¾¸¸¸¸´´´¸´§´´±±±±§±±±±´´±´´»¾ÅÂÅÅÉÉÉÉÉÉÅÅÅÉžÂÂÂÅÉÉÉÅÉÉž¾¾¾¾»¾¾»»»»»¸±±ª§£££§££ \9c\9c\96\99\96\92\96\96 \9c \9c\99\96\92\99\96\92\92\99\9c £££§§§§§£ \99§\99\9c\8b\88\8b\92\8b\8f\8f\88\85\85\8b\99\9c\96\99\99\96\9c\99 \9c\99\9c\96 ££§ª±¸¸´ ¸»Â»»´¸§ \96\8f\8f\8f\88\8f\8b\8b\8b\85\85\88\88\8b\8b\88\85\88\8b\85~\8b\85~~~\81\81\81\85\85\81\85\85\81\81\85z\85\88\81\85~\81~~~zz~zwtmmmmiifc\0c\_NNNNNNNNNKRNRRKNNKRURUNfcfc___XXUUNUUNURKNKGDDAA=::0,,,)),%%%%%%))))),,,,,,,,,,,0000,,0336\0\0\0G\0\0R:ADKNRUfimipmmmppppttttwwwwwwzwwtpmmmmmmmpmiiimmmpwwmimtifffccccccfcccc__cc__c_c_ct_c\\\\\\\\\_cfittzwzwwzwwwwtwwttpttzwz\81\81\81\85\81\81\85\81\81\85\85\85\81\85\85\88\8f\8f\92\8f\92\8f\88\88\85\81zzzzzwwwwwzwtzz~zzwwwwwtwwwwww~z\81\81~\81z~wtwtpppppmiififcciip\81~~\81\85\8b\8f\92\96\99\9c\9c££§±±±±´±´´´´´±±±±±ª±ª´¸¸¾ÅÅÅÅÅÅÅÉÉɾ¸¸ªªª£££ \9c\99\96\92\8f\8b\8b\8b\88\85\85\88\85\85\85\85\88\88\81\88\88\8b\88\8f\8f\92\96\99\99\9c£ªª´¾ÅÉÌÏÉÉÌÉÉÉÉÌÓÖààààààààÚÖÖÖÖÓÖÓÓÖÓÓÏÓÓÏÓÓÓÓÖÓÖÝäàäççääàààäààçëççëççççççäàäààäÝàäàääàäààäàÚÖÚÖÂɸ´±´´±ªª§£££ £ £§§ª±´¸¾Â¾»¾¾»¾»»¾ÂÅÏÚÚÖÝÖÖÚÖÓÓÖÓÓÓÖÏϾ»»»»¸¸¸¸¸´ª´´±±±±´´´±´´±¸¸¾ÂÅÅÉÉÉÅÅÉÉÉÅÅÂÉÅÂÂÂÂÂÉÉÉÉÌÅž¾»»¸¾»¾¸¸¸¸¸±±±ª§§§££§§£ \9c\9c \9c££ \9c \99\99\96\92\96\92\92\96\96\9c ££§§§§§£\9c\99£\99\99\88\85\88\8b\88\8b\8b\88\85\85\88\96\99\92\99\9c\99\9c\96\9c \99\96\99\96 ££§ª±´»¸¸ »¾¾¾¸´´ª \99\92\92\8f\8b\8f\8b\88\8b\88\81\85\85\88\88\88\81\85\88\81~\88\81z~\81~\81\81\85\85\85\85\85\81\81\85z\88\85\81\85\81\81~~zz~\81~zwpppmmmicccf_NNNNNNNNNKNNNRKRKNNRNRNccR_\__UUUUKUNNRDGNKDGA==:6600,,),6%%%%%)))))))),,,,,,,,,0000),036:\0\0\0K\0\0U=KURRffimpttppmpppttttwwwwwzzzzzwmpmmpmppmmiiimpmptzpmitiiffffcccccccc_____cc__c_ct__\\\\\\\\\__ciptzzzwwzzwttwzwwttttwtz\81\81\81\81\81\81\81\81~\85\81\85\85\88\88\8b\8b\8f\92\8f\8f\8b\88\8b\81~zz~zwwzwttwttzz~zzzwwwwttttwwwzz\81\81~~z~tpwptpmpmiiffffcfimm~zz~\81\8b\92\92\99\9c£ §§§±±±´±´´´´±´±ªªªª´¸»ÂÂÅÅÂÂÂÂÅÅž¸¸´§ª££ \9c\9c\99\92\92\8f\8b\8b\88\85\85\85\81\85\85\85\85\88\85\85\88\8b\8b\8b\8f\8f\92\96\99\99 §ª±ÂÂÌÉÌÌÉÉÉÉÉÉÏÏÚààààààààÝÚÖÚÖÖÖÖÓÓÓÖÓÏÓÓÖÓÓÓÓÓÖÚääàäääàÝààààäëëçëëëççäääçääÝààÝàààçäääààääÚÚÚÖÏ̸±´±±±±ªªª§£££\9c££££ £££ª´¸¾Â¾»»¾»»»»»¾»ÌÚÚÖÚÚÖÖÖÓÏÓÏÏÓÓÌ̾»¾¾¾»¸»¸¸±±±´±±±´´´±¸¸±´¸´¸¸¾ÅÅÂÉÅÉÉÉÅÉÉÉÅÂÉÉÅÅÅÅÅÉÅÅÅÉÉɾ¾¾»¸»¸»´¸¸´´±ªªªª§§§§§£ ££ §§£ \9c\92\96\99\92\8f\8f\8f\92\96\9c\9c\9c ££££§§ \9c\99£\96\99\85~\85\8b\88\8b\8b\88\85\88\88\96\96\96\99\99\99\99\92\96\9c\99\96\8f\96 £££ª±´¸»¸»¾¾¾¾»¸¸ªª\9c\96\92\96\8f\8f\8b\8b\88\8b\8b\81\85\85\85\88\85~\85\85~~\88\81wz\81z~\85\85\85\85\88\85\81\81\85z\88\81\85\88\81\81\81z~z\81\81~~zttttppmffficNNNNNNNNNKNNNRKRGNNRNURf_R\U_\RRUUGRNNNDGKGADA::63300,,\ 3):"""%%%%)%))))))),,,,,,0000)036:=\0\0\0N\0\0XANXU_iimptwwptmppptttwwwwzzzz~\81zzptmpppptimiiipppppzpimtimiffffccccccc____________p__\\\\\\\\\\_cimtz~~zz~~wttwzzwwwttwt~\81\81~~\81\81~\81~\85\81\85\85\88\8b\8f\88\8b\92\8f\8b\8f\88\8b~zw~~zzwzwtpwttwzzzzzzzwwwttwtwzzz\81\81\81\81~zwpwpptppiifffffffimpzwwzz\88\8f\96\99 §£ª§ª±±´±±±±´±¸¸´´´´±±ªªªª±»»Âž¾¾Âž»¸´¸±§§££ \9c\99\99\92\92\8f\8b\8b\88\85\81\81\81\85\81\81\85\88\85\85\88\8b\8b\8f\8f\8f\92\96\99\99 §§´¾¾ÉÅÉÉÉÌÉÉÌÉÌÏÖàààààààààÝÚÝÚÚÚÖÖÓÖÓÓÓÓÓÓÏÏÖÖÖÖÝääààäàÝÚààààäëççëëçççäääçääàäààààääççàààààÝÝÝÖÓÏ»±±´±´±§§£££ £££ £§§ª±±»¾Â»»»»»¸¸¸»´ÉÖÖÓÖÖÖÚÖÓÏÏÏÏÓÓÉɾ¾»¾¾¾¸»¸»¸´±±±´±´±´´´´´¸´´¸´¸»»ÂÅÅÅÂÅÅÅÉÅÅÉÉÂÅÅÉÉÉÉÅÉÉÉÅÅÉɾ»¾¾¸»»´¸´´¸´±ªªªª§ª§ªªª§ª§££§§£ª§£ \9c\92\96\96\92\92\8b\92\92\92\9c\99\99\9c ££§§§\9c\9c\99£\96\96\81~\81\8b\85\88\8b\88\88\85\8b\92\92\96\96\88\96\99\96\99\9c\99\92\92\99£§§§±±´´»¸»»»»¾¸»¸±§§\9c\96\8f\96\8f\8b\8f\8b\8b\88\88\85\81\85\81\85\81~\81~~~\88\81z~\81~z\81\85\85\81\88\85\81\85\81z\88\85\85\88\85\85\85~~z\81\85\81zzwwwwttpipimfcUNNNNNNNNRNNRKRANRRNURf\NRR\XRKRUGNNRNDGGDAA=:633300,,\0\0:"""%%%%%%))))))),,,,,,0000)336:=\0\0\0R\0\0\D\_ccmmppptwttpptptttwwwz~zz~~\85zzpttppmmpmmiiipptttwpmmpmiiifffffffccccc_______\\\m\\\\\\\\\\__cffpwz\81z~z\81~wwwzwzwwwwwzw~\85\81~~\81~\81\81~\85\81\85\85\8b\8b\8f\8b\8f\8f\8f\8b\8b\88\88~zw~~zzwwwppttttzwzzzzzwwwtwwtwwz~\85\85\85\81~wwtwpppppmifffffffmptmppwwz\8b\92\9c\9cª§ª±±´±´±´´´¸¸¸´´´±ª±ªªªªªª±´»¾Â¾¾¾»Â¾¸»´¸´ª§£ ££\9c\96\99\96\92\8f\88\88\88\85~\81\81\85\81\81\81\88\85\81\88\88\8b\8b\8f\8f\8f\96\99\99 §£´»»ÅÅÉÉÉÉÉÅÉÉÌÌÓÝààààààààÝÝàÝÚÚÖÖÓÖÓÏÖÓÓÓÏÓÖÓÖÚÝààÝàààÝÚÝÝààäëççëççççççäççääàäààäääëçàààäàÝÝÝÖÖÖϸ´´±´´±ªªª£ £££§£ £££§ª±¸¾ÂÅ»»»¸¸¸´´±ªÓÓÏÏÓÓÖ\96ÏÏÏÏÏÓÓ¾¾¾¾¾Â¾¾»»¸»¸´´±´´±±±±´´´¸´±´¸¸»»ÂÅÅÉÅÂÂÅÅÂÅÅÅÅÅÉÉÅÉÉÉÌÅÉÂÅÉŸ¾¾¸»¸´´´±´±§§ª§ªª§ªªªªª§§ªª§§ª££\9c\96\96\92\92\92\8f\92\92\92\99\9c\96\99 ££§££ \9c\99 \92\96z~\81\88\85\88\88\88\88\85\8b\8f\8f\92\92\88\92\96\96\96\99\99\8f\96\99 £§§ª´±´±¾¸»¸»¾¾¸¸¸±ª§\99\96\92\92\8f\8b\8f\8b\8b\85\85\81\81\81\85\81\81~\81z\81~\85\81z~\85\81~\81\85\85\81\85\85\81\81\81~\88\85\85\88\88\88\85\81~\85\85\85\85~zzzwzwttmtmpmiXNNNNNKKNRRNRKRDNRRRRRcXRRU\UNNRUGGNNNDDGD==::6333000,\0,6"""%%%%%%))))))),,00000333)336:=\0\0\0R\0\0_U_cffmpmpptwwttpwptttwwz~~zz~\81\88\8b\81twwmppmmmmmmipptwttmmmmmmmiiifffffccccf________\\m\\\\XXXXX\_cccfpzz~~~~\81~zzwzzzwwtwwzw~\81\81~~\81\81\85\81\81\81\85\88\85\8b\8b\8f\8f\92\8f\8b\8f\8b\88\85zzzzzwzttwmmppptwtzwz~zwwtwwwptzz~\81\85\85\81~wzwttppmmmifccfffimptifmmmip\88 \9cª§±±´´´´´¸´¸¸¸¸±±±±ª±ªªªªª¸¸¾Â¾¾Â¾»»¾¾»¸¸¸¸±§££££\9c\99\96\96\8f\8b\8b\8b\85\85~\81\81\81\81\81\81\88\85\85\88\88\88\8b\8b\8f\92\96\99\9c §§±¸»¾ÂÉÉÉÉÉÉÉÉÌÌÓÝàààààààààÝÝÝÝÚÚÖÖÓÓÓÖÖÓÖÓÓÖÖÖÚÝÝÝàÝÝÝÝÚÚÝààäçççëçëääççäçççäàääààääçääààäÝÝàÝÚÚÚÓ»¸´±´´§£££§§£££§§§ª±¸»¾Å¾¸»»¸¸±ªª§wÌÏÏÓ\96ÌÏÌÏÌÏϾ¾¾Â¾¾¾¾¾»»¾»´±±±±ª±±±´±±´¸»¸¾ÂÅÅÅÉžÂÂÅÂÂÅÅÅÉÅÉÉÉÉÉÂÅÂÅÅž¸»»¸¾¸¸´´±±ªª£ª§ªªªªªªªªªª§ª£§\9c\99\96\92\8f\8f\92\92\8f\8f\99\99\99\9c ££§ £\9c \96 \8f\96~\81\81\88\81\88\85\88\85\88\88\88\88\92\92\85\92\92\96\92\96\96\8b\92\99\9c§ª´±´»¸»»¾»¾¸¸¸´ª£\96\92\92\8f\8b\8b\8b\8b\8b\88\85\81\81\85\85z~~~~\81~\85\81wz\85\85\81\85\85\81\81\81\85~\81\81z\88\88\88\88\8b\8b\88\85\81\88\88\81\85~~zzzzwwtpwpppmif_RNKKKRRRRRKUDNNRRRRcXURX\RNKRUKGNNNDAGA=:=66333030,,,)"""%%%%%)))))),,,,00000333)036=A\0\0\0R\0\0_Xcfciimmpptwwtwtwpttwwz~~\81~~\81\85\8b\8b\88wwzmmmmmmmmmmpppwptmmmmmmmmiiiiifffffcccccc____\\m_\\\\XXXXX\cfffpww\81~\81\81\81\81~~z~~~zwttzww~\81~~~\81\85\85\85\85\85\85\88\88\8b\8b\8f\8f\8f\8b\88\8b\8b\85\81wzwwwtwpptiimmmptpwwwzzzwwwwttwzz~~\81\85\81zzzwtwtpmpmic_cfffimpt_c\ciipz §ª±±±±´¸¸´¸¸»¸»¸´´±´±ªªªª±±´¸»¾¾Â¾¾¾»¾»»¸¸»´ª§§ \99\99\92\92\8b\8b\8b\85\85\81~\81\81~\81\81\85\81\85\88\88\88\8b\8b\8b\92\96\96 £ªª±¸»¸¾ÉÉÉÉÉÉÌÉÌÌÓÚÝàààààààààÝÝÝÝÚÖÓÓÓÖÓÓÖÖÖÖÖÚÖÚÝÝÚàÝÝÚÚÚÝÝààäçççëççääççäçäçäääàààäàçàääààÚÝÝÚÚÚÝ־ϸ±´´±±±ª£§§§§§§££ª§ªª±´»¾Â¾¸»»»¸ª£§§£w\81\8b§\9c§\99 \99ÌÉÌ̾¾¾¾¾¾»»¾»´§ª§ªª±±±´¸»»»ÂÅÂÉžÂÂÂÂÅÂÂÅÅÅÉÅÅÉÂÅÂÅž»»»»»¸¸´´±±§ª§ª§§ªªª±ªª±±\92ªª§£ \96\96\96\92\92\92\92\8b\92\96\96\96\9c §§£££\9c \96 \92\92~\81\85\88\85\85\85\8b\85\88\85\88\88\8f\8f\85\81\8f\92\8f\96\92\88\92\9c\99£ª±´´±ª¸»»¸»»»¸´´´§£\96\8f\8f\8b\88\88\8b\8b\8b\85\88\81\81\85\81~~z~\81\81~\85\85wz\85\85\81\85\85\81\81\81\85~\85\81~\88\88\88\88\8b\8b\88\85\85\85\85~\81~~z~zzwzwtztttpmif_RUUUURRRUKUDRNRNRN_\XU\XUNNUUNRNNNGDGAA:=:6333333,,,%""%%%%%%)))),,,,,,000003333336=A\0\0\0N\0\0_\cffiiippmpwzwztwwttwwz\81\81\85\81\81\85mp\8f\99zwwpmmmmmmmmmpppwppmmmmmmmmmmiiiiifffffccccc_c___i\\\\\XXXXX_ccfimwz\81\81\81\85\81\85~\81~z~~~zwtwww~\81z~~\85\88\85\85\85\88\85\88\88\8b\8b\8b\8b\8b\8b\85\8b\88\85\81wztppmmiipffffimpmtttzzzwwttttwwwzz~\81~wzwttttpppiiccffffimptXX\c_fmwz£§±±´´±´´´´¸»¸»¸»¸´¸±±±±±ª±ª±´¸»¾¾Â¾¾Â¾¾¾»¸¸´¸´ª§§£ \9c\9c\99\92\92\8f\8f\8b\88\88\81~~\81\81\81\81\85\81\81\85\88\85\88\8b\8b\92\96\96 §´¸¸»ÂÉÉÌÉÉÉÌÌÌÏÓÚÝàààäàààäàäàÚÝÚÖÓÓÓÖÖÓÖÖÖÖÚÖÖÝÚÝÝÝÝÝÖÚÚÝÝàààäççëççäàççççäçäääàààäàäÝäàààÝÝÝÝÖÚÚÚÖÓ»´´´´±±±§ªª§§§§§§ªªªªª±¸»¾¾¸¾»»¸§§ \92\92\8bw\81\8b\99\99 \99\9c \99§ÉÌÉž¾¾¾¾¾¾»»¸´ªª§ªªª£§§£ª±´´¸¸¸ÅÅÅÉž¾¾¾¾ÂÅÅÂÅÅÅÅž¾Â¾»¾»¸¸´´±±ªªªª§§§ªªª±±ª´±±±\8f§§ \9c\96\96\96\96\96\96\92\88\92\96\96\96\99\9c££§§£\9c \92\9c\92\8f\81~\85\88\85\85\85\88\85\85\81\88\85\8f\8f\85\81\85z\8b\92\85\85\92\99\99£ª´´´´±»¸»´¸»¸´±±±§§\99\8b\92\8f\85\8b\8b\8b\88\88\88\81\81\85\81\81~~~\81\85\81\88\81t~\81\85~\81\81\81~~\85~\81\81~\8b\88\88\88\8b\8f\88\88\85\85\81\81\81\81~~~~zz~wwwtwtpmmic_\X\X\XUXNUDUKNKNN__XX_UXRNRURURNRKGGDD::=6663630,,,%""%%%%%))))),,,,,,000006336666AA\0\0\0R\0\0___ififfppmptztztzzzzww~\81\85\88\85\85\88m\8b\92\99~twmmmmmmmmmmpppwpppmmmmmmmmmiiiiiiiiffffcccccc__i_\\\\XXXXXccfiipz~\81\85\85\88\85\85\81\81\81~\81\81~wwtzzt~\81z~\81\85\88\88\88\88\8b\85\8b\8b\8b\88\88\88\8b\8b\88\88\85\85\81zwtpiiifcic_ccffiimppzzwwtppttwtwwwz~zwwwptptpmmifccffffimptRUX_ccipzzªª±´´´´´´´´»»»»¸»¸¸´±±±±±±±ª±´¸»¾¾¾¾Â¾¾»»¾¸¸¸´´´ªª££\9c\9c\99\99\96\8f\92\8b\88\88\88\81~\81\81\81\81\81\81\81\81\81\85\88\85\8b\8f\92\92\99£ª±´´¸»ÂÅÉÉÉÉÌÉÏÌÓÏÚÚàààààààäàäàÝÚÖÖÓÓÏÖÖÏÖÓÓÖÝÚÚÝÝÝÝÚÚÝÖÝÖÝÝàÝÝäççëçääàääççäääääÝààäààÝàÝÝÝÚÚÚÚÓÚÚÚÚÖÓ´¸¸¸´´´ªªª§§ª§ªªªªªª¸¸¾Â»¾»¾´ª£\92\88\8f\8bz\85\8b\92\99\9c\99\9c \9c £Éž¾¾¾¾¾Â¾»»¸±ª§§ §§ £ £§ªª±±´»»ÅÅÅÅÅŻ¾ÅÅÅÂÅž¾¾»Â¾¾Â»¸¾¸¸¸´±±±±ªªª§ª§§ª±±´±´´´±\8f£ª§£\9c\92\96\96\96\96\96\8f\8b\8f\96\92\99\99\99 §ª§£ \96\9c\92\92\81\88\85\8b\85\85\85\85\81\81\85\85\85\8b\8b\81\81\81z\81\8f~\85z\99\99£ª±±±´´»¸»´¸¸´±ª±£§\9c\85\8f\8f\85\8b\8b\8b\88\85\85\81\85\81\81\81\81\81\81\81\85\81\85\81p\81~\85z\81\85\81\81~\85~~\81\81\8b\88\8b\8b\8b\8b\88ª\88\85\81\81\85\81\81\81~\81~~\81ztwtttpmmmfc_c__c_\\RUGUGNRNN\\\X_XXURUUUUURRNKGGA==:6663:00,,)%""%%%%%))))),,,,,,0030333366::AA\0\0\0R\0\0___icicimpmppwtzwz~~~tw~\81\88\88\88\85im\8f\92\99zptmmmmmmmmmmttttttppmmmmmmmmmmiiiiiiiifffffcffccf____\\XXXXcfiimtz\81\81\88\88\88\88\88\85\81\81~\81\81zwwtzwtz~z~\81\81\88\88\88\8b\8b\88\8b\8f\88\88\85\85\8b\88\85\88\81\81~zwpmfifc____X_ccfcimmwwttpmpppwwwttwzwtttmpmppmiffccfiifipptRRU\_fiiww~ª´´´´±¸´¸¸»¸»»¸¸´¸´±±±´±±±±±±±´´¸»¾¾¾¾Â¾»¾¾¾»¸¸´±±±ª§££\9c\9c\99\99\96\8b\8f\8b\8b\88\85\85\81\81\81\81~~\81\81\81\81\88\88\88\8b\8f\92\96\9c£§±´´»»¾ÅÅÌÌÌÌÌÏÌÏÌÖÖàààààààäääàÝÖÖÖÓÓÏÖÓÓÓÖÓÖÚÚÚÚÝàÚÝÚÚÚÚÚÚÝÝÚàäççççäääçàäçäàäääàààäààÚàÝÝÚÖÚÖÖÖÚÚÚÝÚÖÏ»»¸¸¸¸±±ªªªªªªªªª´¸¾¾¾¾»»¸\9c\8b\88\85\8b~\85\8f\92\99\99\9c\9c\9c \9c£Â¾»¾»¾¾Â»¸¸´§££ ££\9c £§ª§ªª±´¾¾ÂÂÂ޾ž»»»¾»»¾¸»»¸¸¸´´±±±±ªª§ªª±´´´¸¸´±±\8b§ª§ \92\99\99\92\96\96\92\8f\92\96\92\99\9c\99\9c\96£££ \92\99\92\96\88\8b\85\88\85\81\81\85\81\81\85\85\85\8b\8b~~z~w\8bw\81~\96\99£§´¸¸¸»´¸´±ªªª££\9c\85\92\8f\85\88\8b\8b\88\85\81\85\85\85\85\81\85\85\81\81\85\81\85\81m\81~\85z\81\81\81\81~\85~~\81\81\8b\88\88\88\88\8b\8b§\8b\85\81~\85\85\85\85\81\81\81\81\81~twwwttppmffcffffccfUXKUKNUNN\X\U\\\XUXURUUURRNKG=AA::6:3=03,,)%""%%%%%))))),,,,,,0030633636===A\0\0\0R\0\0__cf_icimmimmttwwzz\81\81t~~\85\88\88\85\88\88f\92\96\99wpppmpmmmmmmmttttttpppppmmmmmmmmmiiiiiifffffffcccf______\\\Xffimmpw\81\85\88\8b\88\8b\88\88\85\81~\81~zzwwwwtzzz~~\85\88\88\88\88\88\8b\8b\8b\88\85\85\85\88\85\81\88\81~~zttpfic___\\X\\__cffitttpmimmmtttppppppmtpmppmpiiffcffiiipptRRU\\cimtpw´´´¸´¸¸»»»¸¸»¸¸±´±±´´´´±±´±´±±´±´¸¸»»¾Â¾Â¾¾¾¾¾¾»¸´´±ª§££ \9c\99\96\96\96\8f\8b\8b\8b\8b\88\85\81\81\81\81~\81\81\81\81~\85\88\8b\8b\8b\92\96\9c ª±´´¸»¾ÂÉÅÉÌÌÌÏÏÏÓÌÌÖÝààààààäàäàÝÖÖÓÓÖÏÓÏÓÓÓÓÓÚÖÖÚÚÝÝÚÖÚÚÝÖÚÚÝÚàäääääääçäääääàäääàààäààÚÝÚÚÓÖÖÓÓÓÚÚÚÝÝÚÓϾ»¸»¸´±±ª´´»¾¾Â»»»±\85\81\85\85\88\81\85\8b\92\96\96\9c\9c\9c\9c\9c ª»¾»¾¸»»»»¾¸¸´±ª£ \9c £ª§§§±±±¾¾Å¾Åž¾¾¾¾¾Â¾¸¾¾»»»¾¸¸»¸´´´±±ª±±±ª±ªªªª§´´¸¸¸´±±\88ª§£\9c \96\9c\96\96\96\92\92\8f\96\96\92\9c\9c\96\96\96£§ \99\96\96\96\8b\8f\81\85\85\85~\85~\81\81\81\88\88\88z~z~w\88t~z\96\99 £ª±±¸´¸¸¸´´´±ªª§£ \9c\85\92\92\8f\85\8b\88\88\81\85\88\81\88\85\81\88\85~\85\85\81\85\85i~\81\85z\81~\81~~\81~~\85\85\88\88\88\88\8b\8f\8b£\8b\88\85\85\85\88\8b\88\88\85\81\85\81~wwwzwtppmiifiiiiffi_\XUNRXRRXX\U_X\XXXURXXXURNKDAAA=::63A30,,,%""%%%%%))))),,,,,,3000633603::=A\0\0\0R\0\0cfcc\mfmimmiipttwww\81\81t\81~\85\85\88\85\85\85\88\8f\96\99wtppppppmmmmmttttttppppppppppmmmmmiiiiiiiifffffffccccc__\\\\fciimtz\81\85\85\88\8b\88\88\85\85~\81~\81zwwwwttzz~~\81\88\88\88\88\88\85\88\88\8b\88\85\88\85\85\81\81\85\81~~wttmiff___\XX\X\X__cfmppmmimiipttpmpiimmppmppppmiffffiiimmptNRU\_ffitpz±´¸´¸´¸¸»¸»¸¸»¸´´´´´¸´±±±±´±´±±´´´¸¸»¾¾Â¾Â¾¾¾¾¾¾»»¸±±ª§£§£ \9c\9c\96\92\92\8f\8b\8b\8b\8b\88\85\85\81\81\81~\81\81\81\85\81\85\85\8b\8b\8f\92\96 ±¸¸»»¾ÅÉÉÉÌÌÌÏÏÏÏÌÌÖÝààààààäàäÝÚÖÖÓÓÓÓÏÏÏÏÏÓÓÚÖÚÚÚÚÚÖÖÚÚÝÚÚÝàÚàääàäääàäääääààääàÝÝÝàÝÝÚÝÚÖÓÖÓÓÓÓÖÚÚÝÚÚÝÖÌ»¾¾¸´´±±±±±±±±±±¸»»¾»»»±\81\81\85\88\8b\88\88\8b\8f\99\99\99\99\9c\9c\9c\92§´±¸»´¸¸¸¸»´´ªª \9c\9c\9c\9c \9c£££ª§§ª±±Â»Â¾ÂÅžž¾Â¾¾¾Â¾»¸»»»¸¾¾»¸»¸´´´±±´´±±ªªªª±´¸¸¸¸´±´\88§£\9c\9c\99\9c\99\96\96\8f\92\92\92\96\92 \99£\96\96 ª££\9c\99\99\99\8f\8b~z\85\81z\81z~\81\81\88\88\88wzz~w\85pzz\96\99£§§´±±´±¸´´±±´±§£ \99\92\96\92\81\8b\88\88\85\88\85\85\88\85\85\88\85~\85\85\81\81\81i\81\81\81z\81~~z~\85\85\88\88\88\8f\8b\88\8b\8b\8f\8b \88\88\85\88\88\88\8f\8f\8b\88\81\85\85~zwwwwttmmmmimmmmiimc_\URUXUUUUXU\U\U\XXUX\XURRGDAD=AA:63=000,,%""%%%%%))))),,,,,,00003636036:=A\0\0\0R\0\0cifi\pimmiiifptpttt~~z\85~\85\88\88\88\85m\88\92\96\99ttttppppppmmmttttttppppppppppppmmmmmmiiiiiiifffffccccccc___\fcmmpt~\85\85\88\88\88\85\88\85\81~\81~~ztwtwwwwzz~\85\88\88\88\88\85\85\88\88\8b\85\85\85\81\81\85\81\81\81zztptiiff\\\XXUXXXX\\_cfimiiiiffmtppppiiimmpmpppppmiifiiiimpttKUU\\cfipp±±´¸¸¸´¸¸¸¸»»¸»¸´¸¸´´´´´´´±±´´±´´´´´¸¸¾Â¾¾Â¾»¾¾¾»»»´ª§§§£ \9c\99\99\92\92\8f\8f\8f\8b\88\8b\88\85\88\81\81\81\81\81\81\81\81\81\85\85\8b\8b\8f\8f\96££±¸»¾¾ÂÅÉÉÉÌÉÌÌÌÌÌÉÉÖÝààààààäààÚÚÖÓÖÓÓÓÓÌÌÏÌÏÓÚÖÖÚÖÚÖÖÖÚÖÚÚÚÝàÝààäàäàäÝàààààààääàÝÝàÝÝÝÚÚÚÖÓÓÌÏÏÏÓÖÚÝÚÝàÚÖÉÅÅ»»´´±±±±±´±±±§´¸¸»»¸»\85\85\85\88\8b\8b\8b\8b\92\99\99\9c\99\9c\9c\9c\96ª´±¸´´´¸¸´´±±§ª£ \9c\9c\9c\9c £§§ªª±´±¾¾¾Â¾Â¾¾¾Å¾¾¾¾Â¾¾¾Â¾»´»»¾¸»»¸¸¸´´´±±±±´´´±´´±±´¸¸¸¸¸´±´\88ª§ \9c\99\99\99\99\92\96\92\92\96\96\96\8f\9c\96§ \9c§£ \99\9c\99\8f\88zz\81~z\81w\81\81\81\85\85\85www~w\81mzw\96\9c§§£¸´´´±¸±´±´±±±§ª§££\96\92\96\92\85\8f\8b\88\88\88\85\88\88\81\85\85\81z\81\85\81\81\81f\81~\81z\81~~~z\85\88\8f\8b\88\96\8f\8b\8b\8b\8f\8f\88\8b\88\88\8b\8b\8f\92\92\8f\88\85\88\85~zwwwwwwpppmmppppmmmfc_UUXUXXRRXXXRXU\UURU\XXURKDAA=AD:66:30,0)%""%%%%%))))),,,,,,00000336036:=A\0\0\0U\0\0fmfmimiimffiippppmt~\81~\81\81\88\85\8b\88\88im\8f\96~wwtttpppppppmttttttttppppppppppmmmmmmmmiiiiiiiffffffffc_____ffmmpw\81\88\85\88\85\85\81\88\81~~~z~wttpwwwwzz~\85\85\88\85\88\88\88\88\88\88\85\85\81\85\85\85\81\81\81zwttpmiff\X\UXUXUXU\\\cffiffiifffpmmppiiimppppmpttpimifiimptttNRUX_cfmmp´¸¸¸»´»¸¸¸»»¸»¸´¸´´´´¸´´´±±±´±±´´¸¸¸»»¾»»¾¾»»¾¾»»»¸ª§£££ \9c\99\99\96\92\8f\8b\8b\8b\88\8b\8b\88\88\85\85\85\85\81\81\85\81\81\81\85\88\8b\8b\92\92\96£§±´»¾¾ÂÅÉÉÉÉÉÅÌÉÉÉÌÉÅÓÝààààààäààÚÚÖÖÓÓÏÓÏÏÏÌÏÌÓÖÓÖÖÓÚÓÚÓÝÚÚÚÚÚààààäàäàààààÝààààäàäÝààÚÝÝÚÝÖÓÖÏÏÏÏÌÏÖÖÝÚààÝÚÌÉÉž¾¾´´±±´´´´´±±±ª±±¸¸¸¸¸\88\88\88\8b\8f\8f\8b\96\96\99\99\9c\9c\9c\9c \9c¸±¸¸´´´´±±§ª£ \9c\9c\99 £§ª±´´±»¾Â¾Â¾Â¾Â¾ž¾»¾¾Â»»¾¾»¸¸»¸»¸»»»´¸¸´´´´±´´¸¸´´¸±±±±±¸¸¸´´¸±±\85\9c§ \9c\96\99\99\99\96\99\96\92\92\92\96\8b \92ª£ª\99ª§ £\9c\99\96\8f\85~z~~z~z\81\85\85\81\81\85tww~t\81pwt\96 §ª£»´´¸±¸´´±¸´´±±§ª£§ \92\96\92\96\8b\8f\8b\85\8b\85\88\85\85~\81\81~w~\81~~~f~~~w\81\81\81\81~\88\8bt¾\8b´\92\8b\88\88\8b\8b\88\88\88\8b\8b\8f\92\92\96\8f\8b\88\85\85\81zwwwtwtttpppttttpmpfccUXXUUUNNXXURUUXUUNUXXURRNGAA=AG::6660,,,))"%%%%%))))),,,,,,00000333006:=A\0\0\0U\0\0ipipmmififciimpmmmpz~\81\85\85\88\85\8b\88\88m\8b\8b\92zwwwttppppppppttttttttttppppppppmmmmmmmmmiiiiiiiiifffffccccc_fiiptz\81\88\88\85\81\81\81\85~wzzzzttppwwwwzz~\81\85\88\88\88\85\88\88\88\85\85\85\81\85\88\85\81~~ztttmpicc\XXXXXXU\X\\\_ccfccfifffmimtpiimmpppppptttppimmmmpwtwNRUX_cimipt±´´¸¸¸¸»»¸¸»»¸»¸¸¸¸´´´¸±´´±±±±±´´´¸¸»»¾»»¾»¸¸»»»¾¾´ª£ \9c\96\96\96\8f\92\8f\8b\8b\8b\88\8f\8b\8b\88\88\88\85\85\85\81\88\85\85\85\85\88\8b\8b\92\92\92§ª±¸¾ÂÂÂÉÉÉÅÉÅÉÉÉÅÉÉÉÅÖÝààààààÝààÚÚÖÖÏÏÌÏÓÓÏÏÌÌÏÓÏÓÓÓÚÖÖÖÝÚÚÝÝÝàààääàäàäàààÝààäääääàÝÝÝÝÝÚÚÖÖÓÏÓÏÏÉÏÖÖÝÝäÝàÝÚÌÌÉÅ»¸´´´±±¸¸´´´±±±ª±¸¸´´´\92\8b\8b\8b\92\96\92\99\99\99\9c\9c \9c£§±´±¸¸´´´±ªª£§£ £ £§ª±±±±´´±»»¾Â»¾¾Â¾»Â¾¾»¾¾»¸»»¸´¸¸¸»»»»¸¸¸¸¸´´´±´¸´»¸¸´±´´±´´´¸¸±±´´±\85ª\9c£ \9c\92\99\99\99\99\99\96\92\92\96\99\88£\92§§\92\9c§£ \9c\99\8b\8b\85\81~\81~~\81z\85\85\85\85\85\85tzwzp~pwt ªª±»±´´´»¸´´¸´´±±ª§£§\9c\92\96\8f\92\8f\92\88\85\8b\85\85\85\81~~zzw~~z~~f~zzz\81\85\85\85\81\88Xi»¾¸\92\96\88\85\88\88\88\88\88\8b\8f\92\96\96\96\92\8f\8b\85\85\81zzwwtwtwwttttwwwtppcc_UXUURRNNUXURRRXXUNRXURNNKGAAADGA=6663000),%)%%%%)))))00,,,,00300333036:=D\0\0\0R\0\0mpmmmiiffffiiimimmmz~~\81\85\88\88\8b\8b\88\88\88\81~zwwwwttppppppptttttttttttpppppppppmmmmmmmmmiiiiiiiiiiffccfcccimmptz\81\85\88\81~~\81\81zzwwwwttmttwwwwz~\81\85\88\88\88\85\85\88\85\85\85\85\81\81\85\81\85~zwwwpimicc_XXXXXXU\\\_____f_cfifffifptpimmmppppptttwttppmmmpzwwRRUX__fmitt±¸´¸¸¸¸¸¸¸¸»»»»¸¸´¸´´´´±´´±±±±±±±´¸»¸»»¸»»¸¸»»¸»»»´ªª§\9c£\9c\9c\96\96\96\8f\92\8f\8b\8b\8b\8b\8f\8b\8b\88\8b\85\85\88\85\85\88\85\85\85\85\8b\88\8b\92\96 ªª´»ÂÂÂÅÉÉÉÅÉÉÅÉÅÂÅÉÉÉÖÝÝàààààààÝÝÚÖÖÏÌÉÌÏÏÌÌÌÌÏÓÏÓÓÓÚÚÚÚÝÝÝÝàààààäääääääàäàààäääääàÝÝÚÝÝÖÖÚÖÖÓÏÏÏÉÏÖÖÚÝàÝààÝÓÖÌÉÅž»¸´´´´¸¸¸´´±±±ª¸´¸´´\96\8f\8f\92\99\99\96\9c\9c\9c £ £ª±´±´¸´´±±±ªª§ª£££££££££ª±±´´´´´»»¾¾Â¸Â¾¾¾¸¾¾»»»»»¸»¸»´´´´´¸¸»»¸´¸´¸¸¸¸±¸»´»¸¸´´¸´¸´¸¸¸»»´´¸´±\88ªª£\9c\9c\96\96\96\99\96\99\92\96\92\96\99\8b§\96ªª\8fª\9c§£ \99\96\8b\88\81~z\81~\81\85w\88\88\85\88\81\81pztwmztwp£ªª´»´¸´¸»¸´´¸´´±´ª§£§\96\96\96\8b\8f\92\92\8b\85\8b\85\81\81~~wzttzzwzzfzp~~\81\85\81\85\85\88cp¾¾»´´´\85\85\85\85\85\88\8f\8f\92\92\96\96\96\8f\8b\85\85\81~~wwtwwzwwwwwzwzwtpcc\UXUUKRKNRUUNNNUUURUURNKKGGDA=GGD=A:63033,00,))%%))),063,,,,00003333006:=A\0\0\0R\0\0mmmmpifciffiffiimmmz~~~\81\88\8b\88\8b\8b\88\8b\85wwwwwwwtttpppppwwwwwwttttttpppppppppmmmmmmmmiiiiiiiiiiiffffffcmmppww~\85\85\81~z\81~wwztwwttmptwtwww~~\85\88\88\85\85\88\85\85\85\81\85\81\81\81\85\81zzwwwpimifc_\\\\XXX\_\\____c_cffffffimtpmmimmpmpptwwzwtttppptwwwRRUX\\cifpw±´¸´»¸¸¸¸¸¸»»»»»¸´¸´´±´±±±±±±±±±¸´»»»¸¸¸¸¸´»¸»¸¸»´ªª £ \99\99\99\99\92\96\8f\8f\8f\8b\88\8b\8b\8b\8b\8b\88\88\8b\85\85\88\88\88\85\88\8b\88\8f\96\99£ª¸¾¾ÂÂÅÉÅÉÉÉÉÅÅÅÅÂÉÉÌÖÚÝàààààäààÝÚÖÓÌÉÉÉÌÌÌÉÏÏÏÏÓÓÖÖÖÖÖÖÝÝÝààääàäçääçääääääääààäääàÝÝÚÝÝÚÚÚÖÖÓÏÏÓÌÏÓÖÚÝàààÝàÖÚÓÌÉž»¸´¸¸¸¸¸´±±±±±´´¸´´\99\99\8f\99\9c\9c\99 \9c ££§£§ª±´´»±¸±ªªª§££§££§§ª±±±±´´´±¸»¾Â¾´Â¾»»´»»¸»¸¸¸¸¸¸»¸±´´´¸¸»»¸¸¸¸»¸´´´»»¸¾¸¸¸¸»¸¸¸´´´»»¸¸¸´´\8b\92£\9c\99\96\96\99\99\96\96\96\96\92\99\99\88§\99ª\8fªª±£ \9c\96\92\8b\8b\81\81~\85\81\85\88w\85\8b\88\85~~mwpwiwptp§ª¸¸¸»¸´¸¸¸±´¸´±±§§££\96\96\92\8b\92\92\8f\8b\88\8b\81\85~zztwppwwtwwfwpzz\81\85~\85\85\85\8b\8f»¾»´´´\85\81~\81\81\85\8b\8b\92\8f\92\92\92\8f\88\88\88\81\81~zzwzz~wwwzwzzwwtpcc\XXRRKRKKNRRKDNRUURRRKNGGDGDDAKKK=D=:33030030,,)%,,003:60,0000333333,06:=A\0\0\0R\0\0mimimfccfifiiiiimmmz~\81\81\85\85\8b\8b\88\8b\85\88\85wwwwwwwtttttpppwwzzwwwwwwwtttttppppppppppmmmmmiiiiiiiiiiffffffpmptwt\81\85\85\81z~\81zwtwtttwppptwtwzz~~\88\88\85\81\85\85\85\85\81\81\81\85~\81\85\81zzwwtpmpiffc__\X\X\___\c_c_c_ccffcffmitpppfiimmpptww~wtwwtttwzzzRUXX\\cifm±±´¸´¸»¸»»¸´¸»»»¸´±´±´´´´±´±±±´¸¸¸¸¸´´´¸¸¸´¸¸»¸±ª§ \9c\9c\99\99\99\96\96\8f\8f\92\8b\8b\8b\8b\8b\8b\88\88\8b\8b\88\88\88\88\88\88\8b\8b\88\8f\96\9c£ª¸¸¾ÂÅÅÅÉÉÉÌÉÌÉÅÅÅÅÉÅÌÚÝààààààààÝÝÚÓÏÉÉÉÉÌÌÉÅÏÌÌÏÓÓÖÖÓÖÚÚÝÝÝÝàçäàçççääääääçäääààäääàÝàÝàÝÚÝÚÖÚÓÓÓÓÏÏÓÚÝÝàààÝÝÚÝÖÏÌÉÅ»»¸¸¸¸¸¸´´±´±±±´¸´¸¸´£ \9c\9c \9c\9c ££££§§ªªª±±¸¸±´±±ªªªªª§§§§§ª§±´±ª±¸¸¸´»»¾»¸¾¾¸¸¸»¸¸¸¸¸´´´¸»´±´´´¸¸»»¸¸¸¸»¸´±¸¸¸»¾»»»»»»»»¸ª´¸¸´¸¸´´\8f\8fª£\9c\96\92\96\9c\96\99\92\96\92\8f\96\99\88§\9c§ª\8b§§ \99\99\92\8b\88\85\85\81\88\81\88\8bw\88\8f\88\81z~pwmtftmim§±§ª´¸»»»¸¸¸¸´±¸´±±£ª£ \99\99\8f\8f\92\8f\92\8f\8b\88\81\81ztwttmmptmmwitpww~\81\81\81\85\81\88\8b\9c»¸´´´\81~wz~\81\88\88\8f\8b\92\8f\92\8b\8b\88\8b\81\81\81~~zzzzwwwwwzzwwptf_XXUNRNRKGKRRKDNNRUUUNKNKGGKDGKKNNGDAA333630630,,,0366==:30:303633633,36:=A\0\0\0R\0\0ififmffcfiffmiiimmp~~\81\81\85\88\8f\8b\8b\8b\85\88\81wzzwwwwwtttttppwwwwwwwwwwwwttttppppppppppppmmmmmiiiiiiiiffffffmmttzt\81\81\81\81~\81\81~wttttttppmtwtwz~~\81\88\88\81\85\81\81\81\81~~~\81\81\81\81~~wwwtmmmmiif_c\\\\\__c_f_c_c__cffcffimptppcifiimppww~zwwwwwwwz~~XUXXX\cfc\85±±±´´¸»¸¸»´¸¸»»¸´±´´´¸±´±´±±±ª±´¸¸¸¸¸¸´±´´´´´´¸´ª§££ \9c\9c\9c\99\99\96\92\96\92\8f\8b\8f\8b\8f\8b\8b\8b\8b\88\8b\8b\8b\88\88\8b\8f\8f\92\9c\9c§±»»¾ÅÅÅÉÉÉÉÉÉÉÅÅÅÅÂÉÉÓÚÝàààààààäÝÝÖÏÌÅÅÅÉÉÉÉÅÏÌÉÓÓÓÓÖÖÚÝÚÝÝÝÝàääàäçëççääççççççàààäääààààÚÝÝÚÚÚÓÓÖÖÓÓÓÚÝÝÝÝàÝÝÝàÚÏÏÉɾ»¸´¸¸»»¸´´¸´´´¸´¸¸»´±§£ £ £££§§§ªª±¸¸±±´ªªªªª§ªªªªª±±±´±´´»»´¸»¾¾¾»Â»»´¸¸´¸´´´¸´´´»¸´´´¸¸»»»¸¸»´¸»¸´»»»¾¾»»»¸»»»¸¸§¸´¸±¸´´±\8f\8b§£ \96\92\99\9c\96\99\92\96\92\92\92\96\88§\9cª§\8fªª§£\96\99\96\88\8b\85\85\85\85\85\8b\8bw\88\8f\85\81zzmwmtfpifiª´§ªª¸»¾»»¸¸´±´¸¸´±£ª£ \99\96\8f\8f\8f\8f\8f\8f\8b\85\81~wpttpimptimwmppwt~~~~\81\85\85\88\99\92´´´´~ztwtw\81\81\8b\88\8f\8b\8f\88\88\85\88\85\81\81\81\81~z~~twwzwzzztmtc_XXRNNKRKGKRRNDNKRUURNNRGKKNGKNNNRNGND=66:6063000336::A:=03=333336663006:=A\0\0\0R\0\0fciciccfffiimmmimmm~\81\81~\85\88\8f\8f\8b\8b\85\88~z~zzwwwzwwttttpwwzwwwwwwwwwwwwwtttttppppppppppmmmmmiiiiiffffffpmtpzw~\81\81\81~~~~wttwwttptppwtww~\81\81\85\85\81\85~z~~zz~\81\81\81\81z~wwwpppppiifcc_\___c_ccf_c____ccccffimmpmmfmffmmppww~~zwwzzww~~~\X\X\Xfcf\81±±±±´¸¸¸¸¸¸´¸¸¸¸´´´´±¸´´±±±´¸¸¸»¸´±´±±´´´±¸±ª§£ £ \9c\9c\99\96\99\99\8f\96\92\92\8f\8b\8f\8b\8f\88\8f\8b\88\8b\8f\8f\92\92\99£ ª¸¾¾ÂÅÅÅÅÅÉÉÅÉÉÅÂÅÅÅÉÉÖÚÝààààààààÝÚÓÌÉÅÅÅÅÉÉÌÉÌÌÌÏÏÓÖÖÚÚÝÝÝààààääääççççääççäçççàäàäääààààÚÝÚÚÚÚÖÓÓÚÖÖÖÚÚÚÚÚÝÝÚÚÝÚÓÓÏÌž»¸¸»»¸¸±´´¸¸´´´´¸»±ª§££ ££§£§§§§ªªªª±±¸´´±´ªªªªªªªª±±±´±´¸»»¸¸¸»»¾¾¾¾¸´´¸´´´±´¸´´¸¸´´´¸»¸»»»¸¸»´¸»¸´¸¾¾Â¾¾¾»»»¸\8f´£¸´´´±´\8f\88§£\9c\96\96\9c\9c\99\9c\96\96\92\96\92\92\88§\99§\9c\92ª§ª£\96\99\96\88\8b\8b\88\88\85\88\8b\88t\88\8b\81\81zwiwmtfmi\f±§ªª¸»Â¾»»´´´¸¸´´±£§£ \96\96\8f\8f\8f\8b\8f\8b\88\81~wtmppmiimpfitimmtt~zzw~\81\81\81z\88´´´´wwpppt~zz\81\81\85\8b\85\88\88\8b\85\81\81\85\85~~~Uwzwzwzzwpip_\XUUKNNRKGKRRNDNGNRXUNRUDNKNKNRNNURKRGA::=:06333366:==A:A:6A336336336033:=A\0\0\0R\0\0c_iff__cfiimmpmfimm~~\81\81\85\88\8f\8f\88\88\85\85~zzzzzzwzzzwwtttzwwwzwwwwwwwwwwwttttttttttpppppppppmmmmiiffffffpmwtzz~\85\85\85\81~zzwppwwttppttzwwz\81\81\81\81\85\81\81~zzwtwz~~~\81~zwztpppppfifccc____ccccfcc_\__ccccccfmimppipifmmptwzzzzwzzzzwz~~__\X\\fci\85±±±´±´¸¸¸¸¸¸´¸¸¸´¸±´´´¸´´±±ª±¸¸¸¸¸´±±±±±´±´´±ª§§£££ £ \9c\9c\99\9c\9c\96\99\96\96\92\96\8f\8f\92\96\8f\8f\92\92\92\92\99\9c ª»ÂÂÂÂÅÅÉÅÉÉÉÉÉÉÅÅÅÅÌÚÚàààààààààÝÝÖÉÌÉÅÂÅÂÉÉÌÌÌÉÌÌÏÏÖÓÚÚÝÝàäààààäääçääçäçäçççäçàààçääàääàÝÝÝÚÚÖÖÖÖÖÖÖÚÖÚÖÖÚÝÚÖÚÝÖÖÖÖÏÉɾ¸¸¸¸¸¸±¸¸»¸¸´´´¸¸´±ªª§§£££§£§ªªªªªª±±¸´´±´±±ªªªª§ªª±±´±¸»»»»´»¾¾¾¾¾»¸´´¸´´´±´¸´´´¸¸¸´»»¸»¾»»»»¸»»¸¸»¾¾Â¾¾»¾»¸\8f±£¸¸±±ª±ª\8f\8b§£\99\99\99\9c\9c\99\9c\99\99\96\96\8f\96\8bª\99£ \96ª§± \96\9c\92\88\8f\8f\8b\8b\85\8b\88\85t\88\88~~ztiwptcifRc´ªª¸¸¾Â¾»¾¸¸´´»±¸´£££\9c\96\92\8f\8f\8f\88\8b\88\85~ptimmmifiip_ftfiippztwtz~wtpp´´´´ttmmmmtmtmw\81\81\85\85\88\88\85\85\85\85\88~\81_XzzwwzwwtpimX\XUUGNNUKGKRRNDNKRR\XUUUUNKRNNRRRUUNUDDADG=,30:36::===D:A=:=:6:666666336:=A\0\0\0R\0\0ccfccc_ccfmmptmimimz\81\81\81\85\85\8f\8b\85\85\85\85\81~zzzzzzzzzzzwwtwwzzzwwwwwwwwwwwwwwwwttttttttttppppmmmmmmiiiiifpptwzz~\85\81\85\81~z~wtptwtwttwwzzz~\81~\85\81\81\81\81~z~wwtzz~~~~zwwppppptimfffc____cc_cffcc__cccc_c_ciffmpmpiiimttw~~~zwwzzzz~~\81cc_X\\fc´\85´±´±±´¸¸¸¸¸¸´´¸¸´¸±´´´´¸±ªª´±´¸¸¸¸¸´±±±±±±±±±ªªªª§££§££££ \9c \9c\9c\9c\9c\9c\99\92\92\9c\99\92\8f\99\99\99\9c £±±±¾ÂÂÂÅÅÅÉÉÅÉÌÉÌÉÉÉÌÌÏÝÝààààààààäÝÝÓÉÉÉÉÅÅÅÉÉÉÉÉÉÌÏÓÌÓÖÝÚÝÝàäàààääääçäççäçäççääçäààäääàääàÝÚÝÚÚÚÓÖÖÖÖÖÚÚÚÖÖÚÝÖÖÖÚÚÚÚÚÓÌÌÅ»»»»»»»»»¸¸¸¸´¸¸¸´±§ª§§§£§§§ªªªªªª±´´±¸´´´´±±±ªªªªª±±´´¸»»»¾¸¾¾Â»Â»»´´¸¸´±¸´¸¸¸¸¸¸»»¸»»¸»¾¾»»»»»»¸»»¾»Â¾Â¾¾»»£\8f±§´´±ª± \8f\8b§ \9c\9c\9c\99\9c\9c\99\99\99\96\96\8f\96\8fª\99\9c ª \96\9c\96\8b\8f\92\88\8b\88\88\85\85w\85\81~~wwmtpp_ffG_ª±ªª»¾¾Â»»»»¸´¸¸±¸´§££\9c\96\92\92\8f\8f\88\88~\81wpmiimmcfifp\0cpciipmwpUpwttfff±tpwfmiffifmmitt~\81\81\88\88\85\85\85\85\88\81\81\\81~~zwzwwptimX\UUUGKNUKKGRRRGNNRR\X\XXXNNRRRRUUXXRXKUKNRGKKA==:==AAAA==A=:=:::66666336:=A\0\0\0R\0\0ccccc_c__cmittpmwizw\81\81~\81\81\8b\88~\88\81\85\81~wzwzzzzzzzzzzwwwz~zwwwwwwwwwwwwwwwwwwwtttttttttttpmmmmmmmmmmippwwz~~\81~\85\81z~\81wtttwwwwwzzz~~~\81~\81\81\81~~~~~wwtwzz\81zzzztppmpptmiiifccc__c__cffcc__cccf____fcfimppimimptwzzzzwzzzzz~~\81ffccf_fc¸´´±´±´¸´¸¸´¸´´´´¸´´±´±´´¸±§±±´´¸´¸¸´´±±±ª§§§§§§§§§§§££ £ \9c\99\9c \9c\9c\9c ££§ª±´´´¾¾ÂÅÂÅÉÉÉÉÉÌÌÌÌÌÉÏÏÏÝàààààààààäÚÝÏÌÉÉÉÅÅÅÉÉÉÅÉÌÉÌÓÅÖÚÝÝÝààààààäààäääççäççäçääääààäääÝàààÝÝÚÚÚÚÖÖÓÓÖÖÚÚÖÖÖÖÚÚÚÖÝÚÚÚÝÖÏÏÉž¾»¾»»¾»»¸»»¸´¸´´±±ªªª§ª§§ªªªªª±´¸¸¸»¸¸±´ª±±±±§ªªªªª±±´¸»¸»»¾¾¾¾¾¸¾¸¸¸¸´´¸´´¸¸»»»¾¾»¾¾»¾¾¾»¾»»»¸¸¾»»¾Â¾¾»»»¸£\92±§±´±±§´ \8f\8b£\9c \9c\99\99\9c\9c\99\99\96\96\96\92\99\8fª\99 ±ª±ª£\99\9c\96\8f\8f\8f\8b\88\88\85\85\85z\81\81~zwwptpp_fcGU±ª¾Â¾¾¾»»»¸»»´´´ª££\9c\92\92\92\92\8b\88\85~wtpifmiiffffp\ 3cm_fimftiXppiXc\_mmtfiicfffiiimmw~~\85\88\88\88\88\85\88\85\81\81\85~~zzztwttip\_UXRGKKUKKKRRRKRKNU_\_\\\URURUUXXX\X\\XNUU\_fKKGGDADDDAAA==:A::::6666036:=A\0\0\0R\0\0ccff_ccc__pftwtmzi~t~~\81~~\88\85z\85~\81~~twwzzz~zzz~zzzwww\81zwwwwwwwwwwwwwwwwwwwtttttwtttttppppppmmmmmmpptwzz~\81~\81~~\81~wtttwzzzz~zz~~~\81\81\81\81\81~~~~~zwwtww~zzwzwppmpppmiiifffccc____cfcccccccc____c_cfimpimmmttwzzzzzz~~z~~~\81ffffmcm¸¸´¸´´´´´´¸´´¸´¸¸´¸´±±´´±´¸±±±ª±´±±´¸¸¸±±´´±±±ª£§£§££§§§§ª§§££££££££ \9c £ ££§§ª´¸¸¸¾¾Â¾ÅÉÉÉÉÉÌÌÏÌÏÌÓÓÝÝàààààààààäÚÝÓÏÌÅÅÂÅÅÉÌÉÉÉÌÉÏÏÉÓÖÚÝÝÝàÝàÝàäààääääääçääççääààààääààààÝÝÝÚÚÚÖÖÓÖÖÖÚÚÚÖÖÖÖÚÖÖÚÖÚÖÚÓÓÏÌž¾Â»»Â¸»»»¸¸¸¸±±±±§§§§ªªª±±±±´»»»¾¸¸±´±±±±±´§ªªªªª±±±´¸¸¸¾¾»»¾»»»»¸¸´±¸´´´¸¸»¸¾¾»¾Â¾¾Â¾¸»¸¸¸¸¸»¾¸Â¾¾¾¸¸££±´¸´´±±±£±\9c\8f\8b£\9c\9c\9c\96\9c\99\9c\9c\9c\92\96\96\96\99\92ª\9c£\9c±§´±§§\9c\9c\96\92\8ft\88\85\85\81\81\81wz\81z~wwmtmm_fcGR±´ª¾Å»»¾»»»»»»¸´´§ \99\96\92\92\92\8b\88\81zwpmfcmifffcfpRci\cfifpfUmmcXXX\wiiifiicfcfiififiip\81\85\88\88\88\88\8b\85\81\85\85\81~~z~wwwtmp\_U\NKKKUKNNRRRKUNRX\\c\\_XXXUXU\\\_\__\\XX_cimNKKGGGGGDDAA====::::666036:=A\0\0\0R\0\0c_fccfc__\p_tttizfztzz\81zzt\81w\81z~timtwwzzz~~z~~~zwww\81\81wwwwwwwwwwwwwwwwwwwwwtttttttttttpppppppppmppwwz~\81\81\81~~\81\81~ztwtwwwzz~~~~\81~\81\81\81~~\81~~~~zzwwwwzzzwwwptmtpmmifmiffcfc_____cccc_ccc_cc__cccciimipmmtwtzzzzzz~z~~z~\81ffiipt\81¸»¸¸¸´´¸´¸´´´¸¸¸¸±¸±±±´´±´±ª±±±±±¸¸¸´±±±±±±ªª££ §§§§§§ªªª§§§££§§£ £ £ ££§§ªª±´»¸»¾¾¾ÂÂÅÅÉÉÉÌÌÌÏÏÏÏÖÝÝÝàààààààààäÝÝÓÌÉÅÅÂÅÅÅÉÉÅÅÌÌÏÏÌÏÓÖÚÚÝàààÝÝàÝàääääääçääçääààÝààäààààààÝÝÚÚÝÚÖÖÖÖÖÝÚÝÖÓÖÓÖÖÖÚÚÚÚÖÓÓÏÏÌÅÉɾ¾Â»»¾»»¸¸´±ª£§£§ªªª±±±±±´´¸»¾¾¾¸¸´´±±´±±±±ªª§ªªªªªª±±±¸¸¸¾¾¾¾»¸¸¸¸´¸´±¸´¸¸¸»¾¸¾Â¾Â¾Â»¾»»¸´¸´¸¸»»Â¾»»¸» §¸»´¸±\99\9c\99\9c\9c\96§ \9c\99\99 \99 \9c \92\92\99\99\99\8fª £\9c§´ª§\9c\9c\92\92\8bt\85\85\85~~\81z~~z~wtmtmp\fcGK´±±ª¾Å¾»»¾»»»»»»¸´§ \99\96\92\96\96\8b\88\81wtmmccmfccfcfpR_fXcfffmcXiX_UXXXffcccffcccfficififf~\81\88\88\88\88\8b\81\81\81\81\81\81~z\81zwzwppf__\RKKKRKRNUURNXRUX\\c__\\\\X\\X\_c_c\\_\\cfmppNUKKKKGGGDDAA===:::666336:=A\0\0\0R\0\0c_cc_f_\\\tXppp_zcfwiw~tpp~wzwziimptwwzz~~~~~~~www\85\85~wwwwwwwwwwwwwwwwwwwwwwwwwtttttwttttppppppttwzz~~\81\81\81z\85\81~wwtwwzzzz~~~~~\81~~\81z\81\81~z~~zzwwwzzzzwzwtpptpmmiiiiifcfcc_\\\_ccc__cfcccccffccfimmpmppwwwwzzwz~~~~~\81\81fimmtz\88¸»¸»´´¸¸¸´´¸¸´´¸¸±´´±±±´´±¸±±ªªªª±±ª´±´´¸¸´±±ª£§£££§§§ªªªª§ª§§§££ \9c £§§£§ªª´´»¸¾¾¾¾¾ÂÂÅÉÉÉÌÉÌÏÓÓÓÚÝÝÝàààààààààääÝÓÉÌÉÉÅÉÂÉÉÉÅÉÌÌÏÏÏÓÏÓÖÚÚÝààÝÚàÝàààäääääççäääàÝÝàÝààÝàààààÝÝÚàÝÖÚÚÚÚÝÚÚÚÖÖÓÚÚÖÚÚÖÚÖÏÏÏÓÏÉÌÌÂÅ»»¾»»¸¸´±ªªª £££§ªªªª±±±±±¸»»Â¾¸»´´±´¸±±±ªªªªªªªª±´´¸¾¾»»¾´¸´¸±´¸±¸´¸»»¸¾¾¾Â¾»¾»¸¸¸¸¸¸´¸¾¾¾Â¾»»¸»¸»\99¸¾¸´±±\99\99\99 \99§£ \9c\9c \99\9c\9c\9c\96\8f\96\9c\9c\92ª £ ªª±±£\9c\9c\8f\92\88t\81\88\85\81z\81~~zz~tpppppXfcGG´±»¾¾Â¾¾¾¾»»¸¾»»»¸±ª \9c\96\92\96\92\8b\8b\81ztmpcfmffcicfpU_cXccfff_X\\\RX\U\c___cf_ccfiicfcfffz~\85\88\8b\88\8b\85\85\81\85\81\81~z\81~zzzppifc\UNKKUNNNX\_K\UXU___cc____\__\_ccccXXc\_cimttttNNNKKGGDDAAA===:::6633:=AD\0\0\0R\0\0c_cc_f__\_c\mcm\wcctfizmppwwwwziimmptwzzz~~~\81\81~wwz\85\88\81zwzwwwwwwwwwwwwwwwwwwwwwwwwwwwztttttttttptwwwz~z~~\81z\81~zzwtzwzzzz~z~\81\81~\81~~~\81~~z\81~z~zwz~zz~zzwwtptmpiiiffifcffcc__\_c_c_\ccccfffffcccimmpmppttwwwwwz~~~~\81\85\81ffmmw\85\8b¸»»»¸¸»¸»¸¸¸¸´´¸´´´´±±´´´±¸±´±ª§ª±±±´¸´´´±±ª§ £ ££§£§§ª§§§£§§££ \9c\9c\9c §£§§§´±¸»¾¾¾¾Â¾ÂÅÅÅÉÌÉÌÏÓÓÖÚÝÝÝàààààààààääÚÓÉÌÉÉÅÉÅÉÌÉÉÌÌÌÌÌÌÏÏÓÓÖÝÝÝàÝÚàÝàäàääçäääääàààÝÚàÝàààààäÝÝÝÝÝÝÝÚÝÝÝÚÝÝÚÝÚÚÖÖÚÖÚÚÚÖÖÓÏÏÏÓÌÏÏÌÉÅž¾Â»¸¸»´±§\99\9c £§§§§§ª´¸»Âž»»¸¸´¸»±´±±ªªªªªªª±±±´´»»¸¸»¸´±´±´±´¸¸¸¾¾Âž¾¾¾»¸¸¸´´¸¸´´»¾¾Â¾»»»»¸¸\99¸¾»´´´\96\99\96££\9cª£ \9c£\9c\99\99\99\99\8b\92\9c\9c\92ª\9c§£§±± \99\9c\8f\8f\88w~\85\81\81~~z~~w\81wttptpUfcGG¸¸¾Â¾¾¾»¾»´»¸»»¸´ª£ \99\96\96\8f\8b\8b\81~witcimifiicfpXc_Uccifc\U\XRRU\RX_X\\_c__ciiiff_ffiwz\85\88\8b\88\8b\85\88\81\85\81\81~~\81\81~~zptmmffXRKKUNNN\cc__\\Uc__fccccc_cc_cfcccX\__cffptwwtNNNKKKGGDDAAA==:::66066=AD\0\0\0R\0\0cccc_c__\__\UX\\mfcpfiimmptzww~immmpptwzz~~~\81\81\81ww~\85\88\85~zzwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwttttttwzwzzzzzz~z~~zzzwzzz~z~~~\81~\81~~~~~\81~~z~~~~zwzzz~~~~zzwtpppiifffffcffcc_\\___c____ccfiiimccfimmpptttwwwwwwzz~~~\81\81\85fcppz»\8f»»»»¸»»»»»¸´´´´¸´´´´´´´´´´´´¸±±§ªªª±±´´±±±±ªª±£ \9c\9c £££££§£££££££ \9c\99\99\99\9c\9c\9c £ £§§ª±´´»¾¾¾¾Â»ÂÅÂÂÅÉÉÌÏÖÖÝÝÝÝÝàààààààààääÚÓÌÌÉÉÅÅÉÉÌÌÉÌÌÌÉÉÉÏÓÏÓÓÝÝÝÝÝÝÝÝàäääàäàäääàààÝÝÚÝàààààääàÝàÝÚÝÝÚÝÝÝÚààÝÝÚÖÖÚÚÖÚÖÖÚÖÏÌÏÏÓÏÓÓÏÌž¾¸¸¸¸´±§\99\99 £§§£\99\96£ªªªªªª¸¾Âž»»¸»¸¸»´´±±ªªªªª±±±´»¸¸´¸»´±´±±±¸¸¸¸Â¾Åž¾¾»»»¸´¸´±´¸¸¸»¾¾Â¾¾¸»»¸»\99»»»´¸¸±±´±\9c§ £ \9c\99\9c\9c\9c\88\88\99 \96ª ª§£´ª \99\9c\8f\8b\8bwz\85\81\81~\81zz\81z~zwwpwmUicKf»»Âž¾»»»»¸¸´¸¸»´ªª£ \9c\99\96\8f\8b\88\85zzmtpmmmimipip\cXXc_ff__UXUURU\RUUUU\\__ccififfcfcitw\81\88\8b\85\88\88\85\81\81~~~\81\81\85~\81~zzppii_UKKRNRR_ffc\__Uc_cfcfcffcf_cfcccc\\__cccpptwwwNNNKKKGGDDAAA==::66366=AD\0\0\0U\0\0ccc__c__\\XXUXX\ic_cffiimmpwtwzmpmppptwwzz~~~\81\81zz~\85\88\88\81zzwwwwwwwwwwwwwwwwwwwwwwwwwwwzwwwwwwwwwtzzzzzwzzzzzwzzzwz~~z~z~z\81\81\81~\81~~~~\81~~z~~~~zzzz~\81~~zzzwwttmiifcfcffffffc__________cfimmmpiciimppptttwwwwwwzz~~~\85\85\85ffpp\81»»»¾»»»»»¾¾»¸´¸¸´¸´¸´¸¸´¸´¸´´±´±ª§ªªª±±±±±ª \9c\9c\99\9c\9c £ £ \99\9c\99\96\99\99\99\9c \9c £§ª±±»Â¾Â¾Å¾ÉÉÌÌÓÝÝÝÝÝÝÝàààààààààääÝÓÏÏÌÉÅÉÌÌÏÌÌÉÌÉÅÌÅÌÏÌÖÏÚàÝÝàÝÝÝààààÝààäääàààààÚÝààÝàÝäàäÝÝÚÚÝÝÚÝÝÚÚàÝÝÝÚÚÖÖÖÖÚÖÚÖÓÏÉÏÏÖÌÓÖÓÏž¾Â¸¸¸¸´±ª£\9c\99 ££ \92\96\9c§££§ªª»»ÂÅ»»¸»»»¸¸±´±ªªª±±±´¸¸´´¸»´±±±±´´»»»¾ÂÅÂÉÉž»¾¾»»»»´´´±´¸¸¸»»¾»¾»¾»¸»¸»»¾»¾¸´¸±´±´±\9c±ª££ \9c \9c \9c\99\96\85\99£\99ª£ª§¸ª \96\9c\92\88\8fwz\88\85\81~\81zw\81~~zwwtwiUffXp»¾¾Å¾Å¾¾¸»¸¸¸´¸´´¸´ª£ \99\99\8f\8b\88\85~~mzttppmpmtmp\fXXc_ff\cXXXURU\RUURRX\_\c_ffififfcmpt~\88\88\88\88\88\81~\81~~~\81\81\81\81\81~~~ttppi\KNUNR_ciff_cc\cccf_fffifc__c_fcf\__c___mpptttRNNKKKGGDDAAA==::6636:=AD\0\0\0R\0\0_fcc__\\XXXURUXX\__ccfmiiiptptzimmpptttwzz~~~\81\81zzz\81\88\85\85zzzzwwwwwwwwwwwwwwwwwwwwwwwwwzwwwwwwwwww~~zwzzzzwwwzzzzwzzz~~z\81z\81\81\85~\81~~\81~\81~z~\81\81~~zz~z~~~\81zzzzwwwpiicccffffiiic_c_c______ccimmptmfimmppptwttwwwwwwzz~\81\85\85\85ciwt»»»»¾»¾»»»¾¾¾»¸¸¸¸»´´¸¸¸¸¸¸´´±±±±ª§§§ªªªªª±±§ \96\96\99\9c\9c\9c \9c\92 \99\99\99 \9c\9c\9c\9c\99\99\99\96\99\96\99\99\9c\9c £§§ª±¸Â¾ÂÂÂÅÅžÅÅÌÏÖÝÝÝÝÝÝÝàààààààààääÝÓÏÏÌÌÉÌÏÏÏÉÏÌÉÉÅÉÉÉÌÏÖÏÚàÝÝÝÝÚÝÝàààààààäääàäààÝàÝààÝàäàäÝÚÚÚÚÚÚÚÚÖÚÝÝàÝÝÝÚÚÚÖÖÖÚÓÓÏÌÏÓÓÏÖÖÓÓÅÅ»»¾¸¸¸´´±ª£ \9c\9c\9c £ \99\92\96\99 £ ªª¸¸ÅÅÅž¸»»»¸¸´¸±±±ªª±±±±´´¸¸¸¸»´±±±´´±¾¾¾ÂÅÉÅÉÅÅ»»¾»»»»´´´±´¸´¸¸¸¾»»¾¾»»¾»»¾»»¾¸¸¸´±±¸±´£§£\9c£\9c\9c \96\99\88\99£\99ª£ªª§±¸ª \96\9c\96\88\8fz~\85\88\85\81\81~t\85\81~z~z\81wiUfiz´¾Â¾Â¾Â¾¾¸»¸¸¸¸¸¸¸´´£ £\99\99\92\8b\8b\81\81\81~~~wwwwtpwppmiX\c_ff\c\XXRRX\UUURRXX____cfiffiiipttz\85\85\85\88\85\81~\81~~~\81~\81\81\81\81~\81wwttm_NRXUccfiffcc__cfcfccfiiic_\_\ccc___c__cimifppRRNKKKGGDDAA===::6636:=AD\0\0\0U\0\0ficf___\XUURNRUUX\__ccifiiptptwimmppttwwwz~~\81\81\81~\81~\85\88\88\81zzzzzzzzzwwwwwwwwwwwwwwwwwwwwzwwwwwwwwww~z~wwwzwtwtzzwzwwz~~~~~~~\81\85~\81~z\81z~z~~~~~\81~z~~~~\81~~zzwwzwpiifffcccfiiifcfc____\__ccfipttpimmmppttwtwwzwwzwz~~\81\85\88\88fmz¸»»»»¾¾¾»¾»¾¾¾»»¸¸»¸¸´¸´¸»¸¸´±´±ªªª§§ªªª§ª§ª±± \9c\9c\99\99\99\99\99\99\9c\99\92\96\99\99\99\9c\9c\99\9c\99\99\96\96\92\96\92\96\96\9c\9c\9c ££§±´¾¾»ÂÂÅÅÅÉÂÅÉÏÓÚÝÝÝÝÝÝÝàààààààààäàÚÓÏÓÏÌÌÌÏÏÓÌÏÏÌÉÉÅÉÅÅÌÓÚÝàÚÝÝÝÚÚÝÝÝààààäàääàääÝààààÝààäààÝÚÚÚÚÚÖÚÚÖÚÝÝàààÝÚÚÚÚÖÚÚÓÓÓÏÓÖÓÓÖÖÓÏɾ»»¸´¸±±§££ \9c\99\9c \96\8b\96\96\92\96\9c£ ª´»ÅÅÉÉž»¾»»´¸¸´±±±±±±´´¸»»»¸´±´¸¸¾¾ÂÅÉÌÉÉ»¾¾»»»¸´±´´´¸´¸»´¾»»¾Â¾¾¾»»»¾¾»»¸¸¸±±»±´±£ª§ £ \99\9c\96\9c\88\9c££ª§ª§±´ª \96\9c\96\88\92\8b~\81\88\81\85\81~\81\85\81\81z\81z\85\96\85Uim¸¾Â¾¾»¸¸»¸¸¸¸¸¸±´§ \9c\99\92\88\88~\85\81\81\81\81zzzzwtwptpm\\f_ff__XXUURU\URURUUX\\__cfifiimmptttz\81z\85\85~\81\81~~~\81~\81\81\81\81~\81wwwwpcKciXfcfiiiffcccfcfffffffc__\\c_c_____c_fiifmpRRRNKKGGDDAA===::663::=AD\0\0\0X\0\0iiic_\\\XUURRRUUX\\__cfffimpppwfimppttwwzzz~~\81\85\81\85\81\88\88\85\85zzzzzzzzzzzzzzwwwwwwwwwwwwwww~wwwwwwwwwwzzzzttwwwwtwzwztwz~\81\81\81~~\81\81\85~~~~~~z~~~\81~~\81~~~~~~\81zzzzwz~wpiififccffffiffff_c______cfimtttmpmmmtttwwwzzzwzwz~~\81\81\85\88fp\88¸»¾»»¾¾¾»»¾¾¾¾¾¾»»»¸»¸¸¸»»¸´¸´´±§§§ª§ªªªª§ªªªªª±±±ª \99\99\96\99\99\99\99\99\92\99\99\96\99\99\99\99\9c\96\96\92\92\92\92\96\92\92\99\99\99\9c §ª±¾¾¾ÂÅÅÉÅÉÅÉÉÏÖÝÝÝÝÝÝÝÝàÝààààÝààààÝÖÓÓÓÏÏÏÏÓÓÌÌÌÌÌÌÉÅÅÉÏÖÝÝÝÝàÝÝÝÚÝÝààÝààäàääààäÝààààÝààààÝÝÝÚÚÚÚÖÖÚÚÚÝÝàÝÝÝÚÚÚÖÖÖÖÓÓÏÏÓÖÖÓÖÖÖÓž»¸»¸±´±±§£§\9c\9c\9c\99\9c\96\8f\96\92\96\96\9c£ ª±»ÂÅÌÌÉž¾¸¸¸¸»´±±±ª±±±ª±´¸¸»¸»»´´¸»»Â¾ÅÉÌÉÉɾ¾Â¾»¸»»´´±´´´´¸¸±¾»¸¾Â¾¾¾»¾»»¾»»¸»´´´¸±´±§§§£ £\96\99\92\99\96\9c§§£ª±´± \99\9c\99\8b\8f\8f~\81\8b\85\88\81\81\85\88\88\88z\85\88\88 \88Uw~±»¾Â¾¾¾¾»¸´»¸¸¸¸¸¸±±±§\9c\9c\9c\96\92\85\88~\85\85\81\85~z~~wwttttpm_\i_ffc_XXUURU\UUUURXXXX__cfiiimppptttz~z\81\85~~~z~~~~\81~~~z~twzwt_Kpm\iciiiiifcfffccccfffc_c\\_ccc_cc___\fiiifmUiRRNNGDDAA==:::6336:==AD\0\0\0U\0\0mmmf_\\XXURRNNRUUX\__ccfffmmmptfiimptwwzzz~~\81\81\81\81\88\85\8b\88\81\85zzzzzzzzzzzzzzzzzwwwwwwwwwwwz\81wwwwwwwwwwzzzwwwwttwtwwwwwwz\81\81\81\81~z\81\81\81~~z~~~~~~~\81\81\81\81~\81~~~~~~wwwtwzttmmiiicfffffiifffccc_____cimmpptppppmtttwzwzwwwwzz~~~\81\81\8bi±¸¸»»»»¾»»¸»¾¾Â¾¾¾»»¸»»¸»»»¸»´¸´±ª§§§ªªªªª§§ª§§§ªª±ª§ \9c\96\96\96\96\96\9c\99\99\92\99\99\99\99\9c\99\99\99\96\92\8f\92\92\92\92\92\92\99\96\96\99\9c££§ª¾»¾ÂÅÅÉÉÌÌÌÓÚÚÝÝÝÝÝÝÝÝàÚààÝÖÚÝàÝÝÝÖÖÓÓÏÏÓÓÓÓÏÏÌÌÉÉÉÉÉÌÓÖÚÝÝààÝÝÝÝÝÝààÝàààààäààäÝàààààÝàÝÝÝÚÚÚÚÖÚÖÖÚÚÖÚÝÝÚÝÝÚÚÚÓÖÖÚÓÖÏÓÓÖÖÖÖÖÖÓ»»»¸´´±±ª§§ \99 \96\9c\96\92\92\96\99\99\9c£ §ª»¾ÅÉÌÌÉž»¸»¸¸´´±±ªªª±ª±´¸»»»»¸´´±»»¾Å¾ÅÉÌÌÉÌž»¸»¸¸´´´´´¸¸´»¾»¾Â¾¾Â¾»»»¾»»»»´´´¸±´§ª§ \9c£\96\99\81\99\99 §£§±´´ª \99\9c\96\8f\92\8f\8f\8b\8b\8b\85\81\85\88\8b\8b\8bz\85\96\99£§z\85´»Â¾¾»¾¾»¾¸´¸´¸¸»¸¸±´´±§\9c\9c\99\96\8f\85\88~\85\81\81\85zzz~twtptptmc\i_ifc_XXUUUX_UXUURXUXX__fimmmmppmpttz~z~\81\81z~wzzzz~~~zzzpwwzw\Ntp\ffimmiiifcfcc_cccfffcc\\\f_f_c____\ifii\iXRURRNKGDAA=::::663::=AAD\0\0\0U\0\0pmpf_\\XUURNNNRUUXX\__ciffmimptiiimpttwzz~~~\81\85\85\85\85\88\8b\8bz\81zzzzzzzzzzzzzzzzzwwwwwwwwwwww~wwwwwwwwwwzzzwztwwtwtwttwtz~~~~~~z\81~\81~~z~~~~~~\81\81\81\81\81\81~~~~~zzzwtttwttpmiiiffffffiffiffccccc__fippptppptttttwwzzzwzwzzz~zz\81~\88z±´¸»»»»¾»»¸»»¾Â¾¾»»»¾»¸»»¸¸»¸¸±±§ª§£§ªª§§ª§§ªªªª§ª±±±±§§ \9c\99\99\96\96\99\99\99\9c\99\96\99\99\99\99\9c\96\96\96\96\96\92\92\8f\92\92\8f\92\96\92\92\99\9c £ ª»»»ÂÉÉÌÉÏÏÓÖÚÝÝÝÝÝÝÝÝÝàÌÖÓÚÖÖÖÖÚàÝÖÖÓÏÏÏÓÓÏÓÏÏÌÌÉÌÌÌÉÓÖÚÝààààÝÝÝÝÚÝààààààààäàààÝÝÝàÝàÝàÝÝÝÚÚÚÚÚÚÖÖÚÚÖÝÚÝÝÝÚÚÚÖÓÖÚÖÏÖÏÖÖÚÚÚÓÖÓÏž»¸¸´´´±±ªª§£\9c\9c\96\9c\96\96\96\96\96\9c £§ª»ÂÅÅÉÉž¾»»»»¸´´±±ªªªªª±´´´»¸»¾»¸¸´»¾¾ÂÂÂÅÉÌÌÌÅž¾¾¾»»»¸±±±±±´´´´»¾¾Â¾Â¾»¾»»¾¾¾¸´¸¸¸´´§ª£ \96£\99\96\88\99\9c §£ªª±¸´ª \96\9c\96\92\92\92\92\92\8f\8f\88\8f\88\88\8b\8f\96\96\96 \9c§ªz±¸»Â»»»»»»»¸¸´´¸¸»¸¸´´´±§ \9c\96\96\8b\85\88\81\85~\81\85zzw~tttpttppmpmfmfc_U\U_XX_RXXUUUUX\_cfmmmmmpmmttpwzwz~~z~zzwww~z~zwzittwX\N_tXmiipmmmfffccfcf_cfcff_\_\c_c__c__c_fcfiXfURXRUNNKGDGDA=6:633:==ADG\0\0\0X\0\0pmmc_\\XXXRNNNNRUXX\\_cfffiiimtfiimpptwzz~~\81\81\85\85\81\88\8b\88\8b~\81zzzzzzzzzzzzzzzzzwwwwwwwwwwww~wwwwwwwwwwzz~zwwtttwtwtttwwzz~~~~z~~~z~~~~\81\81~~\81\81\81\81\81\85~~~zzzzzwttptpppmiiiiffccfiffiiffcffcccimpmptppttwwttwzzzzzzzzz~~zz\81\81\88±´´¸¸»¸»»»»»¾Â¾¾»¸»¾»¸»»¸»»¸´§§ªª£§§§§§§§£ªªªªª±ªª \99\9c\96\96\96\99\99\9c\9c\99\99\99\99\99\9c\92\96\96\92\92\8f\92\8f\92\92\8f\8f\96\8f\96\96\9c\9c££ª±»»¾ÉÉÏÌÓÓÚÚÚÝÝÝÝÝÝÝÚÚÓÌÓÌÓÓÓÓÓÖÝÚÖÖÓÏÏÏÓÓÏÓÏÏÌÌÌÌÌÏÏÖÚÝààààÝàÝÝÝÚÝààÝààààääààÝÝÝÝàÝÝÝÝÝÝÝÖÚÚÖÚÚÚÓÝÚÖÝÚÝÚÝÚÚÚÚÏÓÖÓÓÓÏÚÚÝÚÚÖÚÖÏÉ»¸»¸´±´±ª£ \9c\99\99\92\96\99\96\99 £§ªª»ÂÂÂÅž¾¾¾¸»»¸´±ª±ªªªªª±±±¸¸¸»»¾¾¸»¸¸»»»¾¾¾ÂÌÉÉÌž¾¾¾¾»»¸±±±´±´´´±»Â¾¾Â¾¾¾¾»¾»¾Â»»¸¸¸¸´±±±§ª§£\9c \9c\99\8b\99\9c£ª§ª´ª´± \96\9c\99\96\96\96\92\96\92\92\8b\92\88\85\8b\96\99\9c £ ªªª±´¸»¾¸»»¾¸¾¸¸¸¸´»»¾¸»¸´±££\99\96\92\88\85\88\85\85\81\81\81wwtzttttwtptptpipi_cU_\c\X_X_\XXUXX__fipmppppmpptptwtz~z~~~zzwtzz~zwzmtmtX\K_wXpmmppipiiifciff_fi_ccc\\________\ccccffUfURmRURRKKKNNKKGD=00:=AADG\0\0\0\\0\0mmmc__\XUURNKKNNRUX\\__ffffiimpfimpmptwwz~\81\81\85\88\85\85\8b\8b\85\88\81~~~~~zzzzzzzzzzzzzwwwwwwwwwwww~wwwwwwwwwwzzzzwwttpttttwtwwzzzzz~zz\81z~~~\81\81\81\85\81~\81\85\81\81\81\81\81\81~~z~wzwwtmpppmiiiiifffffffiiiif_fffffimppptpttwwztwtwzzzzzzzz~~z~\81\85\88ª´±¸¸»»»¸»»»»¾¾¾¾Â¾»»»»»¸»¸»¸¸´ªªª§§ ££§ª§§§£§ª§ªª±±±ª§££\9c\9c\99\96\99\9c\99 \9c\9c\9c\9c\9c\99\96\99\92\96\92\92\92\8f\92\8f\92\8f\92\8f\92\96\99\9c £ªªª¸¾¾ÅÉÏÏÓÚÚÚÚÝÝÝÝÝÝÏÓÌÉÉÏÌÏÏÓÓÏÏÚÖÓÓÓÓÓÏÓÓÓÓÓÏÏÏÌÏÏÓÓÚÖàääàäàààÝÝÝÝààààààääààäÝÝÝàààÝÝÚÝÝÝÖÚÚÖÖÖÖÖÝÝÚÝÖÚÖÝÚÖÖÖÓÖÖÓÓÓÏÚÝÝÚÚÚÚÖÓž¸¸¸¸±±±±±±£§\9c\96\96\8f\99\99\96\9c £££ª¾Â¾¾Â¾¾¾¾»¾¸¸»´´ªªª§ªªªª±±´¸»¸»»¾¾¾»¾¸¸»»»»»ÂÅÉÉÌÉÉÅž¾¾¾»»¸¸´±´´±±±´´»ÂÅ»¾¾¾¾¾»»¾»¾¾»¾»¸¸¸´±±§§ª§ \9c \96\8f\9c £ª§±´±±±£\99\9c\9c\99\96\96\96\99\96\92\8f\92\8f\81\96\99\9c £§£´´¸¸¾¸»»»»»´¸¸»¸¸¸»¸»¸´ª \96\92\8f\85\85\88\85\81\85\81\85tttwttpttppwtwtmpiUf\___\\_\c___X\\_ffimmppmpmpmppptpwzw~~zzzwwzzzwwzipmpX_K\tUX=mptitmmmiiiif_iic_cc__c__c__c\\_c__ccRRURiURRNNRNRRRRRRR00A=ADDG\0\0\0_\0\0mppfc_\XURRNKKKKNRUX\__fcfiiimpfimmppttwz~~\81\85\88\88\88\88\8b\88\85\81\81~~~~~zzzzzzzzzzzzwwwwwwwwwwwwzwwwwwwwwwwwzwwwtttptppttwwwwwzzwzzz~w~\81\81\81\85\81\85~\81~\81\81\81\81\81\81\81~~z~zztttptpmiiimiiiiiifffifiiicfiffimmmppppttwzzwwwwzzzzzz~z~~~~\85\85\85±±´¸»»»¸»»»¾¾¾¾¾¾¾¸»»»»¸»¸¸´¸±§ª§ £\9c \9c£§££££§ªª±±±´±ª§£ \99\99\99\99\99 \9c\99\99\96\96\96\92\8f\8f\8f\8f\8f\8f\8f\8f\92\92\92\96\9c §ª¸»ÂÅÌÏÓÖÖÚÚÚÚÚÝÝÚÉÅÌÉÅÉÉÉÌÏÏÓÏÏÏÓÓÏÓÓÖÏÏÓÓÓÓÓÓÏÏÓÏÓÖÖÓàäàääààààÝÝÝÝàààààäääääÝÝÝÝààÚÝÚÝÝÝÖÚÖÖÖÚÖÚÝÝÚÝÚÚÓÝÚÚÚÚÖÚÖÖÓÖÓÚÝÝÚÝÚÚÚÖɾ¸»»¸±±±´´´¸§ª£\92\96\92\99\9c\99 £££§ª§Â¸»¾¾¾»»»»¸´¸´±ª§ª§§§§ªªª±±±¸»»¾¾¾¾¾¾¸»¸»»¸¸¸»ÅÅÉÉÌÉÉÅž»¾»¾»¸´´´±±±´¸¸¾Â»¾»¾¾¾»»¾¾»¾¾»»¸¸¸¸±±§§ª§£ \96\99 ££ª§±±´´´´§\9c \9c\96\96\99\99\9c\96\92\8f\92\92\85\99\9c££§ª§±±±´»»»»»»»¸»´¸»»»»¸¸¸¸´±ª§\9c \92\8f\8b\85\85\88\85\81\81~\81pfttptpttmtzwwtmtmUf__cc__c_fccc___cifmmpppmpmpmpmptptwwz~~~zzwzzzwtwimmpXcK_tXX=pppmtpppmmmmi_mmcccfcc___c\__\\c__\U\RRRRfXRRRRURUUUUUXXXXRAADGK\0\0\0p\0\0mpmcf_\XUURNNKGNKNRXX\cfcffiimpcfmmppptwzz~\81\85\88\88\85\85\88\85\85~~~~~~~zzzzzzzzzzzzwwwwwwwwwwww~wwwwwwwwwwwwwzztptmttpwwwzwwzwwtwzw~z~\81\81\81\81\85\85\81\81\81\85\81\81\81\81\81\81z~~z~zwtttttpiiimmiimmiiffiimmmfifffmimppptptwzzzzzzzzzz~~~~~~~~\81\85\85\85±´´¸¸»»¸»»»¾¾¾¾¾¾Â¸¸¾»»¸¸¸´±´ª§§£\9c \99\99\99 £ £§ªªª±´´´±§£\9c\9c\99\99\9c\9c\99£££ ££ \99\99\99\96\92\92\8f\8b\8b\8f\8f\8f\8f\92\8f\92\96\96\99\9c\9c£§±´¸ÂÉÏÏÓÓÖÚÚÚÖÖÉÉÏÅÂÉÅÂÅÅÉÉÏÅÓÏÏÏÖÏÏÓÓÓÏÏÓÓÓÓÓÖÓÓÓÓÓÖÚÖàààääääààÝÚÝàäààààäàääàÝÝÝÝààÖÝÚÝÚÝÖÖÖÖÖÚÚÚÝÚÚÚÚÖÖÚÝÝÚÝÖÝÚÚÖÚÓÖÝÝÝÚÚÝÚÚÌž¾¸´±±¸»Â¾´ªª\8f\96\96 \9c\9c ££££ªª§Â»»¾¾¾»¸¸¸´±¸´ªªªª§§§§ªªª±±±¸¾¾Â¾»¾¾¸¸¸¸¸¸´´¸ÂÂÉÌÌÌÉž¾»»»¸¸¸´¸±±±±´»¾¾Â¾»»¾¾¾»»Â¾¾»¾¾¾¸»»¸±±ªªª§££ \99\9c §ª±´±±ª±¸´±ª £ \99\99\9c\9c\9c\99\99\92\96\96\88\99 §§§ª±±±´±¸»»¸»»¸»»¸´»¸¸»¸´¸¸±§£\9c\9c\96\8b\8f\88\85\8b\85\85\85z~pippmpmppmtwwttptiUic_fcccccifffc_cfmimpppmmmmmpmimppptw~\81\81~zztwwwtwtffpm\fKttU\=ttmppttpppppi_mmfffccf\_\c\\c_X_\\RRXRRRR_\RRRRXUXXXXX_\\fiADDGK\0\0\0m\0\0mmicc_\XUXNNKGGKKNRUX\_ccifiimpfimpptttwzz~\81\88\85\88\81~\85\81\81\81~~~~~~zzzzzzzzzzzzzzwwwwwwwwwwzwwwwwwwwwwzzzzzwttttttwzz~wzzzzwwzzz~~~\81\81\85\85\88\81\81\81\85\81\81\81\81\81\81~~~z~zwtwpttpiifmmmmmmimifiipmmiifffifipmptptwzzz~z~z~~~~\81\81~\81~~~\81\81\85\85´´¸¸»»»»¸»»¾¾¾»¾¾»»»»¸´´´±±±ªª££ \92\9c\96\92\96\99\96\9c\96\9c £§§ª´±´¸¸´±±ª§ \9c \9c\99\99\9c£§§££ \9c\9c\99\99\99\96\96\92\8b\8b\8f\8f\8f\8b\92\8f\92\92\96\99\9c\96 £±±¸ÂÉÏÏÓÓÖÖÚÚÓÏÅÅž¾Â¾ÂÅÅÉÌÅÏÌÏÓÓÏÏÏÓÏÏÏÓÓÖÓÖÖÓÓÖÏÓÖÖÚààààääääààÚààäàäààäàäàààÝàààÝÚÝÝÝÝÝÖÖÓÖÖÚÚÚÝÝÚÚÖÖÖÚÚÚÚÝÚÝÚÚÚÚÓÖÚÝÝÚÚÚÝÝÌÉÉ»¸´¸»Åž±´ \96§\9c\9c §§ª£§´Â»¾¾¾»»´´´´´±ªªªª§§§§ªª±±»Âž¾»»»¸¸´´±´ÂÂÅÉÌÉž»»»»»¸¸¸¸¸´±±´¸¾Â¾»»»»¾»»¾¾¾¾¾¾¾»»»¸´±ªª§§££\9c ££§±´´ª±¸¸´£ª£\9c \9c\9c\9c\92\99\99\8b\9c\9c\88§ªª±±±±¸¸¾¸¾»»»»»¸»´¸¸¸´´¸ª££ \9c\96\8b\8f\8b\85\8b\85\85\81wppfpimmimmmpwtttttfRffcfcfcc_iiiifiiiimmppmmmiiimifimpiwz~\81\81zzwtttttttfcm\\cKNXX_=ppmtpwptttmmmcppiicc_i___cXX__U\NNNNNNRUR\_RUUU\__cffcc_cimADGGN\0\0\0p\0\0ipffc\\XUXNKNKDGKNRRUX\_cfffimpimmmtwwttzz~\81\85\85\88\85~\81~\85~~~~~\81~zzzzzzzzzzzzzzzzzzzzwwww~wwwwwwwwwwzzzzzzwwwtwwz~zzzzwzwttwz~\81\81\81\85\85\81\85\88\85\85\85\85\85\81~\81\81\81~~zwzzzwwptpmfffmiiimmmmmimimpmmiiififmpppttpwzz~~z~~\81\81\81~\81~~\81\81\81\81\81~\85\85ª±´´»¸»¸»»»¾¾¾¾¾»¾»»¸»´±´±±§§ \99\92\92\8f\8b\92\8b\8b\96\96\99\9c £§§ª´´¸¸¸´´±ª§ £ \9c\9c §ª£§£\9c\9c \99\99\96\96\99\92\8f\8f\8f\8f\8f\8f\92\92\92\8f\92\99\9c\96\9c ¸ÂÅÏÌÓÏÓÖÖÓÌÌ»»¾¾¾¾ÅÂÅÏÉÏÌÏÏÏÏÏÓÏÏÏÏÓÓÖÖÓÚÖÖÖÓÖÖÚÝàààääääàààÝààäààààààààààÝÝàààÝÝÝÝÚÝÖÖÖÖÖÚÚÝÝÚÖÝÖÖÖÚÚÚÚÝÚÚÝÝÚÖÓÓÚÚÚÚÖÚÝÚÖÌÌɾ»»¸»»ÉÉž±¸´\96ª \9c£ª±§¸»¸Â¾¸¾¾¾¸¸´´´±±±±ªªª§§ªªªª§±±¾¾ÂÂÅž¸»¸´´±´±±¾ÅÅÅÉ̾»»¾¸»¸¸»»»¸¸±´»»Â¾Â¾»»»¸»»»¾¾Â¾¾¾»»´±ªªª§£ £§§±±´´¸¸´´´¸±ª£§ £££\9c \96\9c\9c \8b§ª±±±±´¸¸Â»¾»»»»¸¸»´´´´±±´ªª§£ \9c\96\8f\8b\8b\85\88\81\81~tpmcpiiiiimmptpptptiUic_fcccf_mmmmimmimmmpmiiiifcifcXimizz\81\81\81zwwwtttttpf\i\X_KKX\_=mmmpmtmttpmppftpfi_f_f\_\_\\_\XRNNNNNRRRRX\UUUXiccfiiffcimifcfNU\0\0\0m\0\0imfcc\XXRXKNNKDGGKNRUX_\_cffiipfmpptzttwwz~\81\85\81\88\85\81~~\88~~~~~\81\81z~zzzzzzzzzzzzzzzzzzzzzwzwwwwwwwwwwzzzzzwzwzwzz~~~zwwzzttwwz\81\81\81\81\85\81\85\85\85\81\85\85\88\81\81\81\85\81\81\81~zzz~wwwttppiifiifmmpmmpmmmmppmmiiiifmpptttpwz~\81~~\81~\81\81\81~\81~z\81\85~\81\81z\81\81±´´»»»»»»»¾Â¾»¾¾»»¸¸´±±±±±ª§£\9c\99\96\92\8f\8b\8b\8f\8b\8b\92\92\92\99\9c £ªª±´¸»¸¸¸´ª£§ £§ª§ª \9c\9c\9c\99\99\99\96\96\92\92\8f\8f\8f\8f\8f\92\8f\92\92\96\99\99\99\9c ª±»ÅÂÌÉÓÌÏÓÓÏÉž»¾¸¸»´»»Â¾ÅÌÉÌÏÏÏÓÏÌÏÏÏÏÏÓÏÖÓÖÚÖÖÚÖÚÖÖÚàÝàääààààààààààääààààÝààÝÝàÝàÝÝÝÝÝÚÚÚÖÚÚÚÝÝÝÝÖÝÖÚÚÖÚÚÚÚÝÝÝÚÖÚÖÖÖÖÖÚÖÖÝÚÚÖÏÓϾ¾»É¸ÉÉÉŸ»¸¸´±±±´§»¾»Â»´»»»´´´±±´±ªªªªª§ªª£±±±±¾»ÂÅž»»¸´´±±±»ÂÅÅÅɾ»»¸»¸¸¸¸»¾¸»»´´»»Â¾¾¾»»¸»»¾»¾Âž¾»Â±´´´±ª§§ªª±´´¸¸»»¸¸¸´±§±ª£§§\8f £ \99\9c\99 ££§§´±±´´´»¾»¾»¾»»¸¸¸¸´±´±´ªª£ \9c\99\8f\92\8f\85\88\85\85~ttm_pficmimmppmmpmtmmmf_cc_cfcimppippmmmimmffffcfifcXfmpzz\81\81\81zttwtttppmcXf_U\NKUX\=cmimifiptmipmippif_c_i\c\\XX\XXRRNNRRRRUU\XXXXXmffimiffcmmiffcXX\0\0\0i\0\0miic_\XURUKRNKDGGNNRRU\\_cffiipcpmpwzppwwzz~\81\81\85\81\81~~\85~~~~~\81\81~~~zzzzzzzzzzzzzzzzzzzzwzwwwwwwwwww~~~~~\81~~~\81~z\81~~~zzz~wwtwz~\81\81\81\85~\81\81\85\81\85\85\88\85\81\85\85\85\85\81~zzwzzwtttppifffiiimmmpmmppptppmiiiiiiptttwtz~\81\81\81\81\85\81\81\81\81\81\81zw~\81z~~w~~±¸¸¸»»»»»»»¾¾»¾¾¾»»¸¸±±§£ \99\96\96\8f\8b\88\8b\88\88\8b\8f\8f\92\92\99\9c §§¸¸¸¸»¸¸±§§££££ª§§ª \9c\9c\99\99\99\99\99\96\92\96\92\92\8f\92\92\96\92\92\92\96\9c\9c\9c\9c£§±¾ÂÂÉÅÏÉÌÏÏɾ¸¸»¸¸¸¸¸¸¾»ÂÉÉÉÌÌÏÏÏÌÌÏÌÏÏÓÓÓÓÓÖÖÖÚÚÚÖÚÚÝÝÝàäààààààààÝàààÝÝÝÝÝÝÝÚÚÝÝÝÝÝÝÝÝÚÚÝÚÚÚÝÝàÝÝÚÚÚÚÚÓÖÚÚÚÚÝàÚÚÚÚÖÖÖÚÖÚÚÚÖÚÚÚÖÓÂÏÉÌ´ÌÉÌÉÅÅ»¾»»¸´±±´´¸¸¾¾¾¾¸¸¸¸¸´´´±´±±ªªªªªªª£´´´´»»Â¾ž¾¾¸»´±±±±ª±´¾ÂÂÅž¾»»¸¸»»¸¾¾»»¾¸»»»¾¾¾»»»¸»¸¾»¾ÂÂÂÂɞş»¸¸±±´±±ª±ªª´¸¸»»¾¾»´»¸±±ª±ªªª\92£§£\9c \99 §§§ª±±´´±¸±»»¾¾¾¾¸¸¸¸¸´±±±§±´ªª§£ \9c\96\96\8f\8f\88\85\85~twm_piiciimmmmmppfpmmmiccf__ccimppmmmpmimii_cff_cffcXfmtzw~\81~~twtptpmpmf\\_UXRNRURA_ificfmptfmmiimmmf\__i__\_XXXRURNNRRRRRUU\XXXXXmfimiiicfpimii_\\\0\0\0i\0\0pmmc_\XUUUNURNDKGKNNRUXX\cfciip_tmptwpptww~z~~\85\81\81~~\85~~~~~\81\81z~zzzzzzzzzzzzzzzzzzzzzwwwwwwwwwwww~\81\81\81\81\85\81\81\81\85\81~\81~~~z~z~zzwwz\81\81\81\81\81\81\81\81\85\81\81\85\88\85\85\85\85\85\85\81~~zwzzzwwttpifffimmpmmpmmpppttpmmiiffipptwwwz~\81~\81\81\81\81\81~\81~~wtz~wzzci\ª±±´¸¸»»¸»»»»¾¾¾¾¾»¸»»´±±ª§ \99\92\92\92\88\88\88\8b\8b\8b\8b\8f\92\92\99\9c §ªª´¸¸»»»¸´ªªª§§§ªª§§£\9c\9c\9c\9c\99\99\99\99\96\96\92\92\92\92\92\96\96\92\96\96\9c\9c §ª´»¾ÂÂÂÌÅÅɾ¾¸¸´¸»¸´´´´´»»¾ÅÅÅÉÌÌÏÌÉÌÌÌÌÏÓÓÖÓÓÖÖÖÚÚÝÚÚÝÚÝÝÝàààààààààÝÝÝÝÝÚÚÚÚÚÚÖÚÚÚÝÝÝÝÝÚÚÚÝÝÚÚàÝàÝÚÝÖÖÚÚÖÖÖÖÖÚÚÝÝÚÝÖÓÖÖÖÚÖÚÚÚÚÝÝÚÖÖÓÌϱÌÌÌÌÉž¾¾¾¸¸´´¸¸»»»¾¾»¸´´¸´´´´±´±±ªª§±´´´¸¸»¾¾¾Â»»»»¸±´´´¾Åɾ¾¾¾¸¸´¸»»¾»¾¾¾»¾¾¾¾¾»¸¸¸¸¸¸»»¾¾Â¾ÅÌÉÅÉÉÅÉÉ»´´¸´´ª´±´´»»¾Â¾»´¸¸´ª´§£ª§§£££ªªª´±±´¸´´´¸¸»¾»¾´»¸¸´´±±£±±ªªª§§£\9c\99\99\92\92\88\88\81~ptpcpmiimiimmimpmitmipmfcfc_fcimmmmmmmmfiff__ccc_cfccimwzwz\81~~wzwtttppmf_\\RURNURRDXXcfffmmpiimii_pif_\ci_c_\\UURRRNRRRRRUUU\XXX\\mimmiimfimmpmmc_\\0\0\0i\0\0tpif_\XUXRRRNKGGKNNNRXXX\_cfffp_pmpptptttwzz~\81\81~~~~\88~~~\81\81\81\81~zzzzzzzzzzzzzzzzzzzzzzwwwwwwwwwwwwz\81\85\85\85\88\81\85\85\88\81\81\85~~~~~~\81~zwzz\81\81\81\85\81\81\81\81\85\81\81\85\88\85\85\85\88\85\85\85~\81wwzzwwwtwpmiiiimmmmpppptttttpmmmiffipmtzzz~~\81~~\81~~~z~zzmiittc_XUU±´±´´¸¸»»»»»¾¾¾¾¾¾»»¸¸´´±ªªª\9c\9c\96\96\92\8f\88\88\88\88\88\8b\8b\8b\8f\96\99\9c £ªª±´´»¸»¸»¸±±§§£§ª§£§ \9c \9c\99\99\9c\9c\99\99\96\96\96\96\96\96\99\96\96\99\9c\9c £§´¸»¾¾¾Å¾¸¸´´¸¸¸±±±±±¸¸»¾Â¾ÉÉÌÌÉÌÌÌÌÏÓÓÓÖÓÓÖÓÚÚÚÚÚÚÚÚÝÝäàààààààÝÝÚÚÖÝÖÖÚÖÖÖÖÖÖÚÝÝÝÝÝÝÚÚÝÝÚÝÝààÝÝÚÚÚÚÖÚÖÓÓÖÖÚÝÚÝÚÚÖÚÖÓÖÖÚÚÚÚÝÚÖÖÓÓÏ̱ÌÌÌÌÉž»¸¸¸´»»»¾»¾¾»¸´¸¸¸±´´´´±±ª±±ª±´´¸»´»¾¾Â¾¾¸¸¸´±§ªª±´´»Âž¾¾»»¸»´»»¾¾¾¾¾»¾Â¾¾»¾»¸¸¸¸¸¸¾»»¾¾ÂÂÌÌÏÌÌÏÌÌÉž¸»¸¸´±±±±¸»»»¾¾»¸»»´±´±±±ªªªªªª§§±±´±±´´¸´¸´¾¾¸¾¸»¸´´¸ª´±§±ªªªª§ \9c\99\96\92\8b\8b\85\81pip_ppfmmmimmmmmimtimtpificcfcimiiimiiicfcc\cccfccfcfmmzwz~~~~wzztpwtmmfcXXRUNNURUAXX_cfimipimpmmfmfc\\_f\c\\XUXRRRNRRRRUUUXXX\\__mimmmipimmmmmmfc_\0\0\0m\0\0tpfc__XUXNNNKGDGKKNNRUXX\__cffm_cimmpppttwzz~~\85~~~~\85~~~~\81~~~zzzzzzzzzzzzzzzzzzzzzzwwwwwwwwwwww~\81\81\85\85\85\85\88\85\85\81\81\85~~~~~\81\81~zzzz\81\81\81\85\85\81\81\81\85\85\81\81\88\85\85\85\88\85\85\85\81\81zwwzzwwwttpmmmmmmmmptttwwttwtpmmmiiipmtwzzz~~~z~tzzzztwiffi\X\RRR±´±´¸¸¸»»»»¾¾¾Â¾»¾¾»»¸´±ª§§\9c\9c\96\96\8f\8b\88\88\88\88\88\8b\8b\8f\92\96\99\9c £§ª±´´¸¸¸»¾»´´±±ª§§§ªª§§ \99\99\9c\9c\9c\99\99\99\99\99\96\96\99\99\99\96\99\9c ££§´´»»»¾Â¾¾¾»´´´±´´¸£§´´»»¾¾ÉÉÉÉÉÌÌÌÏÓÓÏÖÓÏÓÓÓÚÚÚÖÝÝÝÚÚÝàààÝààÝÝÝÝÖÚÓÚÖÓÚÓÓÓÓÓÓÖÚÚÚÝÝÝÝÚÝÝÝààÝàÝÝÝÝÝÚÖÚÖÖÓÖÓÚÚÝÝÚÖÚÖÖÓÓÖÚÖÖÚÚÚÖÖÓÏÏ̱ÌÌÉÉÅžŸ´´¸¸¸»¾¾»¾Â¾¸¸¸¸¸´´±´¸´±´±ª±±±±±±±´±¸¸´»»¾¾¾»´´´±±ª§ª±´´´¸¾Â»»»¾¸»»´¾¾Â¾Â¾Â¾¾Â»Â¾Â¾»¸»´¸»»¸»»»ÂÂÉÏÓÏÏÓÏÏÌÉ»»¸¸±´´±±´¸»¾»»»»»»¸¸±±¸´±±ªªªª±±±±´±´´´¸´´±ª»¾»¾»»»¸¸¸ª¸´£±±±ª§ª£ \99\96\96\8f\8b\88\81pip_ttmpmpipmmiimitmmppmiiffffmiiffifff_c\_\cccfcffcipmwwzz~zzzzzwtwtmmfc\UURRNUNRAXXX_ffmipippppimic___f\_XXUUURRUNRRRUUUXX\\\___immmimpmmmpppmffc\0\0\0p\0\0tmfc_\XXUNKKGDDGKKNNRUXX\__cffm_cfimmppttwzz~~\81~~~~\85~~~\81~\81~zzzzzzzzzzzzzzzzzzzzzzzwwwwwwwwwwwwz\81\81\85\88\85\88\88\85\85\81\85\85~\81~~\81\85\85~~~~~\85\81\81\81\81\81\85\81\85\81\85\85\85\85\85\85\85\85\88\81\85\81~wwwwwwttwppppppmpmmpwttwwwwtppmmiimmpptwwwzzzwztwwwtppfcccXUUNNN±±´±±¸¸»»»»»¾¾¾¾Â»¾¾¾¸»´±±ª§£\9c\9c\99\92\8f\88\88\85\85\88\8b\8b\8b\8b\92\96\96\99 §ª´´´¸»¸¾¾»¸¸´±±ªªªªª \9c \9c\99\99\99\9c\99\99\99\99\99\99\96\96\9c£§£ª´´¸»¸»¾»»»¸§±±±´´ªª§£§§±±»¸¸ÂÅÅÉÅÉÉÌÏÏÏÏÏÓÓÓÓÖÓÖÚÖÖÝÚÚÝÝàÝàÝÚàÝÝÚÚÝÚÖÓÖÓÓÖÓÏÓÏÏÓÓÖÚÚÝÝÝÝÝÝÝÝàààÝÝÝÝÝÚÚÚÖÖÚÓÖÓÚÚÝÚÚÖÖÓÓÓÓÓÖÓÓÖÚÖÚÖÓÏÏÌÌɸ»ªÂ¾ÂÅ»¸¸¸¸¸¾Â¾¾Â»´»¸¸¸´¸´´¸´±±ª´±´´±±±´±´»¸»»»¾»¸±±±±ªªª±±´´´»¾¾¾¾¾»»»¸¾¾Â¾Âž¾¾¾Â¾¸»´»¸»»¾»»¾¾ÅÏÏÓÓÓÓÓÏ̸¸´´±´´´±¸´¸»»¸¸¸»»»¸´±»¸ª±§±ª±ª´±±´´±´¸¸´»´´´ª¾¾¾¾»»»¸¸¸ª¸¸ ´´´ª§ª§§ \99\92\96\92\8b\8b\81miw_wtptmtmmimmmpmpppptpmfffffmiifffcfi__\\_cccfffffipmttwwzz~zzzwwztppi_\UXNRNRNRNX\\_ccimpittttmmm__c\c\\XXXUURRRRUUUUXXX\\\\__iiimmimmmmpptpmiff\0\0\0t\0\0tmic_\\XUNKGDDAGGKNNRUX\_c_cffm_cffipmpptwzz~~\81~~~~\85\81~~~~~~~zzzzzzzzzzzzzzzzzzzzzzwwwwwwwwwwwwz\81\85\81\85\88\88\88\81\85\81\85\81\81\81~~~\85\81~\81~~~\81\81\81\81\81~\81\81\85\81\81\81\85\85\85\85\85\85\88\81\88\81\81zwwzwttttppppttppmpttwwwwwtttpmpimmipmmtttwwwtpptttpmfc\U\URRNNK´±±´´¸¸»»»»»¾»»Â¾¾¾¾¾¸»´±±ª§§ \9c\96\8f\8f\88\88\85\85\8b\8b\8b\8f\8f\8f\96\96\9c §ªª´¸¸»¸»»¾¾¸´¸´±±ªª££££ \9c\9c\9c \9c\9c\99\9c\99\99\99\99\9c£§£±´±¸¸´¸»´¸¸´§±±§§£ £§ª¸´¸¾ÂÅÅÅÅÌÌÏÌÌÏÌÖÏÏÏÓÏÓÖÓÓÚÝÚÚÚÝÝÝÝÚÝÚÚÖÖÚÖÖÓÏÏÓÓÏÏÏÏÌÓÓÖÚÚÝÝÝÝÝÝÝÝÝààÝÝÚÝÝÖÚÚÖÖÖÖÖÓÖÖÚÖÖÓÖÏÓÏÓÖÓÓÓÖÚÓÖÖÓÏÏÌÌű§¾»Â¾»¸¸¸¸¾ÂÂÂÅ»¸¾»¸¸´¸±¸´´´±±ª±±±´´´±±±´±´»¸»»¸»¸´ª§ª±±¸´»±¾Â¾¾»¾»»¾Â¾ÂÅÅž¾Â¾¸»¸¾¸»¸»»¾¾ÂÂÏÌÓÏÓÓÏÏɾ¸´ª±±±´±±´´¸¸¸¸±¸»¸»¸¸±»´§±±ª´±±´´´¸´±¸±´¸´´±¸´¸¸´»¾¾»¸¸¸¸¸¸ª¸´ ´¸´ª§§££\9c\99\92\92\96\8f\8b\85pizczptwpwipimpmtppttttmmfffffpmfcic_ci__\__ccfffifimpptpttww~zz~zz~wptfcXUUNNNRRURXX\___fmpiptpwpmi__c__\\XXXUUURURUUUUXXX\\\__fmmmmmmmppptttpmmii\0\0\0t\0\0pmic_\XXRKGDADADGKKNRUXX___cifm_ccfimppptwwz~~\81~~~~\81\81\81~~~~~~z~zzzzzzzzzzz~zzzzzzzzwwwwwwwwwwww~\81\85\85\85\85\85\88\81\85\85\81\81~~~~\81\85\81~\81\81~\81\81\85\81\81~~~\81\85\81~\81\85\85\81\85\85\81\85\85\85\85\81zwzwtttttptpttwttpptpwtwtwwttpmmimmimiimpptttpmmmpmmic_XUXRNNNNK±±´´´¸¸¸»»»»¾¾¾Â¾¾¾¾»´¸´±´ªª§£ \9c\92\8b\8b\8b\88\85\85\8b\88\8b\8b\8f\8f\92\99\9c\9c§±¸¸¸»¾»¾¾»¸»¸´±´±±±§§§§ £ \9c\9c\9c\99\9c\9c £ª±´±±´´´±¸±´¸±§ªª§ª£ ££§ª´´¸»¾ÅÅÅÉÉÌÌÌÉÌÌÓÏÌÌÓÏÓÓÓÏÚÚÚÚÚÚÚÚÚÚÚÖÚÓÚÖÓÖÏÏÏÓÏÌÌÏÌÉÏÓÓÖÚÝÝÝàÝÝÝÝÝÝÝÝÝÚÚÚÖÚÖÖÓÖÓÓÓÓÖÖÖÓÖÓÓÓÌÓÓÏÓÏÓÚÏÓÖÓÓÌÌ̾§£±¸¾Â¾»¸¸»¾ÂÂÅÅž¸»»¸»´¸´´´´´´±ª±´´´´¸±±±¸´´¸¸»»´¸¸±£ªªªª±´¸¸´¾Â¾¾¾»»ÂÂÂÂÅÅÉÅÅž¾¸»¸»¸¸»»»¾¾Â¾ÌÉÏÓÓÓÌÌÅ»´±ª±±±±´±¸´´¸´»»»¸¸»´¸±§´´´´±±¸¸¸»¸´´´¸´´´´¸´¸»¸»»¾»¸»»»»¸»¸´´´¸´ª§£\9c \99\96\92\92\96\92\8b\88pm\81z~w~wtzmtiptmpmtwptpimifffcpiccfc__f\___cfffffiimpppppttttzw~~~~~zttc_UXRRNNRRXUUX\\c\cimimp_ttmfccc__\\\XXXUUUURUUUXXXX\___cippmmmmmppptttpmmmi\0\0\0t\0\0mmfc_\XURNGDADADGKKNRUX\\__cffmccffimmpptwwz~~\81~~~~\85~~~~\81~~~zzzzzzzzzzzzz~zzzzzzzzwwwwwwwwwwww\81~\85\85\85\85\85\88\85\85\81\81\81~~\81~\81\85~\81~\81~\81\85\85\81\81~~~\81\81\81\81\81\85\81\81\81\81\81\85\85\85\81\85~~zwtttptptptwwwtttpttpwtwwtppmpmimiiffipimppmiiiifff_XURUNKNNKN±±´´´¸¸¸¾»»»»»¾Â¾¾¾»»¸´´±±ªª£\9c\99\8f\8b\8f\8b\88\85\88\8b\88\8b\8b\8f\8f\92\99 ªª±´´¸»¾»»Â¾¾¸»´¸´¸±´±±´ªªªª§£ ££££ ££ \9c\9c\9c §±±±±´±´±´±´ª§§§ £ \9c §§§±´´¸»ÂÅÂÅÅÉÉÉÅÌÉÏÏÌÏÏÏÓÓÓÓÖÖÚÚÖÚÚÚÚÖÖÖÖÖÖÖÓÓÌÌÏÏÌÌÉÌÌÌÏÏÓÓÖÝÝàÝÝÝÝÝÝÝÝÚÝÚÖÖÖÖÓÓÓÓÓÓÏÓÓÏÓÓÓÓÓÏÏÏÓÌÏÓÖÖÏÌÖÏÏÌÌÉ»±ª§´»¾¾»»»¸»»¾ÂÂÅ»»»¸»¸¸¸¸¸¸¸´´ª±´´´´¸´´´¸¸¸´»»¸´´¸ªªªª§§§ªª±±´´¸´Â¾Â¾¾¾¾¾ÂÂÅÅÉÅÉÉž»»¸¾»¸¸¾¾»»¾¸ÉÅÌÓÓÏÌÉ´¸±±ª±±´´¸±¸¸¸»»¸¸»»¸»´±´´±¸¸´´´»´»¸¸¸´´´¸¸´¸¸´»»»ª»¾»»¸¾»¸»´¸´´¸±ª£ \99\96\99\96\96\92\92\92\92\8f\88\85\85\85~\81z\81~wzmptttptipwtttfpifiicpif_cc__c\\_c_ffiffimmpppppppptwtz~~~~ztw\\UXRRNNRRUUXX\_cXcfifim_ptifccc__\\\XX\UURURUUXXX\\__ccfmpppmmmmppptttpmmim\0\0\0t\0\0iiic_\XUNKGDADADGGKNRUUX\_ccffmfccfimmpptwwz~~\81~~~~\85~~\81~~~~zzzz~zzzzzz~~~zzzzzzzzzwwwwwwwwwwww\81\81\88\85\88\85\88\88\81\81~\81\85~~~~\81\85\81~~\81~\81\81\81\81\81~~\81\81\81\81\85\81\85\81\81\81\81\81\85\85\85\85\88\81\81zwtppttptptzwwtttpppmtttwwttppmiiffccfmfi_ifffffccc\XUNNKGKNNR±´¸¸´»»¸¾»»»»»¾¾¾»»»»´´´±±±ªªª£ \96\92\8b\8b\8b\88\88\88\8b\8b\8f\8f\8f\92\92\9c ª¸´¸»»»»¾»¾¸¾¸¸¸¸´¸±´±±ªª§§§§§§£§ £££§´±´±±±±´±´±±±±ª§§ \99\9c\9c£§§±´±´»¾ÂÂÂÂÅÅÅÅÉÉÅÏÏÌÌÌÏÓÖÖÓÚÖÖÖÖÚÖÖÖÓÖÓÖÖÖÏÏÉÉÌÌÌÌÅÌÉÌÏÌÓÏÓÚÝÝÝÝÝÝÝÝÝÚÚÚÚÖÓÖÖÓÖÓÓÓÓÏÏÓÓÓÓÓÏÏÏÏÌÏÌÏÏÖÖÓÏÓÌÏÌÉÅ»±ªªª´»¾»»»»»¸»»Â¾Â¾¾»»»»»¸¸¸¸¸´¸¸´±±¸´¸¸¸¸¸¸¸¸»¸¾»»¸¸´±§§ªª§£ª§ª±´´¸Å¾¾ÂÅÅÅÅÉÅÅÅÅÅž»»»¸¸´»»»¸ª¸Â¾ÉÏÏÌÉ»´±±ª£´´¸ª¸¸»¸»»»»»»¸¸´±±´¸»¸¸¸¸´»¸»¸´´´´´´´´´»¸¸ª»¾»¾´¾»»»¸¸¸´¸´§\9c\96\96\96\92\96\92\92\92\92\92\88\88\85\88\81\85~\85\81zzppwwwtpitztttcpiifmfpiiccc_\\\\_c_fci\0fimmpmmmpmmmptpzzzz~~wtXUUURRRNURUUX\__c\fcffipcmpiic_c_c\\\\XXUURXUXXX\\\___ccfmmpppmmppptttppmmip\0\0\0p\0\0cifc_\XUNKGDAAADDGKNRRUX\\_cffmcfcfipmpttwwz~~\81\81~\81~\81\81~~\81~\81~zzzzzzzzzzz~zz~zzzzzzzzwwwwwwwwwwww\81\85\85\85\85\85\88\88\81\85\81\81\85\81\81~\81\81\81~~z~z\81\81\85\85\81~~~\85\85\85\85\85\85\81\81\81\81\81\85\85\85\85\85\85\85zwwttttpwtwwwwwwtpppmpptwwtppmmffcc_\cic\\\c_cc___\XURNNNDGNNN±´´¸¸»»¸»¸»»¾»»¾»»¸»¸¸´´±±§ª§££\99\96\8f\8b\8b\88\88\88\8f\8f\8f\92\92\96\96 £ªª´¸»»¾»»»»»»»»»¸¸´´´´´´±±±ªªª§§§ ££££££ª±´±´±±±±´´±±±±±ª§§£ \9c\9c §ª±±´´»¾Â¾ÂÂÂÂÅÉÉÌÌÏÏÏÓÓÓÓÓÖÓÓÖÓÖÖÓÖÓÓÓÓÖÓÌÌÅÅÉÉÉÌÉÉÉÌÌÏÓÏÓÚÝÝÝÝÝàÝÚÝÝÖÚÚÖÖÓÓÓÓÓÓÓÓÌÏÏÓÓÓÏÏÏÏÏÌÌÌÏÓÓÖÓÓÏÌÌÉÉÅ»¸ª±´»»»»»¸»¸»»¾»¾»»»»¸»¸¸»»¸¸´¸´±±±±±¸¸»¸¸¸»¸»»¸¸¾»¸»´´ª£§§§§£ª§ªªª±´¸¸Å¾¾¾»»¾ÂÅÂÂÅÉÉÂÂÅÅž»»¸¸¸±»¸¾´»´»ÅÌÌÉŸ±±±±ª§ª±±´ª¸»¸¸»¸¸»»¾»»±´´´´¾¸¸¸´¸»»¸´´´±´´´¸´´¸´»»¾¸¾»¸¾»¸¸¸±¸±ª§ \99\96\96\96\96\92\8f\92\92\8f\8b\8b\88\88\85\88\81\81\85~zppzwwttititptfpmifpipmifcc_X\____cfcf\0iimmmiiimRffmpmwwwwzztpKRURRNNRRRUX\\\_c\ccffip_ppmmccc____\\XXUUUXUX\\\\__ccccfimmmtppppptttttmmim\0\0\0t\0\0cmfc_\XUNKGDAAADDGKNRRUX\\_cffm_cffimmpttwzz~~\81~~~~~~~~~~~~~zzzzzzzz~~~~z~~zzzzzzzwwwwwwwwwwww\85\85\81\81\81\85\88\88\85\85\81\81\81\81~~~~\85~~zzz~\81\85\85\81\81~~\85\85\81\81\81\81\81\85\81\81\81\81\85\85\85\81\81\85~zzttwtttwwwwwzwttmmmmmttwpmmiiccXRUUXXXUXX\XU_XXXXURNNNNDGNNN´¸´¸¸»¸»»»¸»¾»¾¾¸»¸´´±±±§ª£§£\9c\96\92\8f\8f\8b\8b\8b\8f\92\92\92\96\99\99£ §§±¸»»»¸»¸»¸»¸»¸¸¸´´´´¸´±±±´±±±ªª£§ §£§§§±´¸±±±±±±´´±±±´±±ª§§£ \9c\9c £§±±¸¸¾Â¾¾¾¾¾ÂÂÂÅÉÌÌÌÌÓÓÖÓÓÓÓÓÖÖÓÖÓÏÓÓÓÓÏÓÏÉÅÉÅÅÅÅÉÉÅÉÌÌÌÏÓÏÚÝÝÝÝÝààÝÚÚÚÖÚÓÖÏÖÓÓÖÓÓÓÏÓÓÏÏÏÏÌÌÏÏÌÉÌÏÓÏÖÓÓÏÏÌÉÉž¾´´´´¸¸¸»¸¸¸¸¸»»¸¾¸¸»¸¸»¸¸¸¸¸¸´´´±±±±»¸¸¸»»»¸¾»¸»Â¾¸»´±±§ª§§££ª§ªªªª´¸´Â¾¾¾¾»»¾ÂÂÂÉÅÌÅÅÉÅÅ»»»¸»´¸´»±±»±¸¸ÅÉŸ¸±±ªª´´´±¸¸»¸¸´¸¸»»»»´´¸´»¸´¸¸¸»¸¸¸±´±´±´´±±´¸»±»¾´»±»¸»¸´´´´§££\9c\96\96\96\96\92\8f\92\8f\8f\8f\8b\8b\85\88\85\85\85\81~zpt~zzwtmpitmtfppmppmtpmi__c\___cccfci\0iiiimff_iRccciimi\piXU\GKRNNKNRUURX\_X\c___fcip\mtpmfcccc___\\XUXXXX\X\\\cccccfpimppttttttwwwttpmii\0\0\0p\0\0fif_\XURNKGDAAADDGKNRRUX\\_cffm_cffimmtptwz~~~\81\81~~~~\81~~~~\81~zzzzzzzzzzzzzzzz~z~zzzzwwwwwwwwwwww\81\81~~\81\81\85\85\81\85\81\81\81\81\81~~~\81~zz~z\81\81\85\85\85\85\81\81\88\85~\81~\81\81\81\81\81~~\81\85\85~\81\81~~zwwwwtwttzzzzztwpmiiipptmfiff\\NRNRUNURUUXRRUUUUURNKNKKDGNKR´´´¸»»¸»»¸¸¸»¾»»´»¸±±±ªª§£ \99\92\92\8f\8f\8f\8f\92\92\96\92\96\99\9c £§ªª¸¸¸¸»»»¸¸¸»¸¸¸¸´´´´´´´±±±´´±ª£§££§§§§ª±´¸´±´±±±±±´±±±´±±§§§ \9c ££££ª´¸¾Â¾¾¾¾»Â¾ÂÉÅÌÌÌÉÏÓÓÓÖÏÓÓÓÓÓÖÓÏÏÓÏÓÏÏÏÉÂÅÅÂÅÅÉÉÉÉÉÌÉÏÓÓÖÚÝàÝÝÝàÝÚÚÚÓÖÏÖÏÓÓÓÖÓÖÓÓÖÓÓÏÏÏÉÉÌÌÌÉÌÏÏÏÓÓÓÓÏÉÌÉɾ»¸¸¸»¸¸¸¸¸´¸¸»¸¸»±¸¸¸»»¸¸¸¸´¸´´´±±´´¸¸¸»»»»»¾¾»¾¾¾¸»¸ª§ª§£££§£§§§ª±´±¾Â¾Â¾¾¾»»»¸¸¾¾¾ÅÅÉÅÉÉÅž»¾¸»´¸´¸ª»±¸¸Â¾Â¸»±ªªªªªª±±´´´´»´¸¸¸´¸¸»¸±±±´¸»¸±»´»¸¸¸´´´´±±±´¸´»´»»´»´¸´¸´¸´´±ª£ £\9c\99\92\96\96\8f\8f\92\8b\8f\8b\88\88\88\88\88\85\85\81~~zw~~zzwmmitm~fttmttiwtpmf_c_c__cccffififf_mc\\_RUUNRUU\XUXNRUDKNNKNNNRUNX\\UXc\\\c_fm_ittiiffcccc_\\XXXX\\_\___fffffitmpttwwtttwwwwttppii\0\0\0m\0\0fic_\XURNKGDDAAADGKNRRUX\\_cffm_cffiiptttwz~\81\81\81~~~\81~~~~~~~~zzzzzz~zzzzzzzzzzzzzzzzwwwwwwwwwwww\81~~w~~\81\81\81\81~\81\81\81\81~~~~~zzz~\81\81\85\85\85\81\85\85\85\85\81~~\81~\81~~zz~\81\81~~~\81~~zwzwtwttzzwwwtwmmffimmpicc\_UUKNGDKKNNNAUGGKRNRNNKGKKKGKNNR±´´¸»»»»¸¸´¸¸»¸¸¸¸´±ªª§£ \9c\9c\9c\96\92\92\92\92\92\92\96\99\96\96\99 £§ª§ª´¸¸»»¸¸¸¸´¸¸¸¸¸´¸´¸´´±±±±´´±±±§§££§£ªª´´¸´±´ª±±´±´´´±´±±§ªª £ £§£ªªª§±¸¾¾¾¾¾¾»Â¾ÂÅÅÉÉÌÌÏÏÓÓÓÓÓÓÏÏÓÓÓÏÌÏÌÏÏÏÏÉÅÅÅÅÂÂÅÉÅÉÉÌÉÏÏÏÖÚÝÝÚàÝàÝÚÚÖÓÓÓÓÌÓÓÓÓÓÖÓÖÖÖÓÏÓÏÌÅÌÏÌÌÌÏÏÏÓÏÖÓÏÌÏÌÉÅž»»¸¸¸¸´´¸´´¸»´´¸´´¸¸¸¸¸¸¸¸¸¸¸´´±±±´´¸»¸»¾»¸»Â¾»¾¾¾»»¸§£§§ §£§§§§§ª±¾Â¾¾Â¾»¸¸´¸»¾»ÂÂÅÅÅÉÉÅÅÅ»¾¸¸¸¸¸±ª¸´´¸»¸»´¸ªªªªª±´¸¸¸»¸¸¸»´¸´»»±´´¸»»´´»´»´´´±´¸´´´±±¸±¸¸¸¸¸±´´¸´¸±±± \9c \9c\99\96\96\92\8f\8f\92\8b\8f\8b\88\88\85\88\88\85\81\85\81\81~tz~~wzpmmwm\81wwwpttUwttpicccf__cc_ffmfiff_i\XUURNRNRUUUR\aKKKKAGKKGKNNRRNXXXXRcX\\cXfmcfptpmifffcc__\XX\\_X___cifiimpwwppttwwttwwwwwwtptmi\0\0\0m\0\0cfc_\URRKGGDDAAADGKNRRUX\\_cffmc_ffiittptwwz\81\81\81~~~~~~~~~~z~zzzzzzzzzzzzzzz~zzzzzzzwzwwwwwwwwww~zzwzz~\81\81~~\81\81\81\81\81\81~~z~z~~\81\81\85\85\85\85\81\85\81\85\81\81z~~~~zztz~~~~~~~zzzzztttwzzzwwttmifcfifc\__XXRKGKDAGADKD=GADGDKKKKGDGKGGKNNR±±¸¸»»»»»»¸¸´´¸¸¸´´´±ªªªª§§ \9c\9c\99\9c\99\96\96\96\96\96\96\99\99\99\99\9c £££§§ª±´´¸»¸¸¸¸´¸¸¸¸´´´±´¸±±±±±±±±ªª§§ªªª±±´¸¸¸´±±±´´´´´´¸ªª§§££§£§§§ª§§ª´¾¾¾¾¾¾»ÂÂÂÅÅÉÉÌÏÏÏÓÖÖÓÏÏÌÓÏÓÓÏÏÏÌÏÏÌÌÉÉÅÅÅÂÅÂÉÅÉÉÌÌÏÓÓÖÖÚÚÖÝÚÝÝÝÖÖÓÏÏÓÏÏÓÓÖÓÖÖÖÖÚÓÓÏÏÉÉÌÌÌÌÏÏÏÏÓÌÓÓÏÏÏÌÉÉÅž¸¸»»´´¸´¸»¸¸´¸´´´¸¸¸¸¸¸»¸¸´´´±±´´¸»»»¾¾»»¾Â¾¾¾¾¾¾¸¸±ª£§§§ §£ª§§§ªª´´¾¾Â¾»Â¾»»»¸¸¸»»»¾ÂÅÉÉÉɸ»¸¸´¸»±±¸¸±´¸¸¸±´ª§ªª§±±¸¸»»»¸¸´»¸¸¸¾¸´¸¸¸¸»¸¸¸¸¸¸¸¸´´´±±´±´´¸¸¸¸´´±´¸´´´´±££\9c£\9c\99\96\96\96\92\92\92\8b\8f\8f\85\88\81\88\88\88\85\88\81\81\81t~z\81twtmmzt~ztttttRwtwtmfffi__cfcfimimff_f\XUUNNRNRRRRK\0
+GGGAGKKDGKNRRNXX\\Nc\\_cUfmffpttmmiffccc_\\\_cccicmcppipttzwtttwwwwwzzzzzwtttmm\0\0\0p\0\0cf_\XURNKGDDAAADDGGKRRUX\\_cffmfccffmtpptwz~\85\81\81~~~~~~~\81zzzzz~z~~zzzzz~zzz~~z~zzzzzwzwwwwwwwwwwzwwwzz~\81~\81\81\81\85\85\81\85\81~z~~z~~\81\81\85\85\85\85\81\85\81\81\81~z~zzzzztwzwzz~~~~~~wzwwtwwzzwwtppmfcfccXXURNNKGDDA6A==A==A=AADDGGADDDGKGKNNU´±¸¸»»»»»¸´¸´¸¸¸¸¸´±±ªªª§££\9c\99\9c\9c\9c\99\99\99\96\99\99\9c\9c\9c\9c ££££§§§´´¸¸¸»¸¸¸¸´¸¸¸´´´´¸±ª±±ªª´´¸¸¸¸¸±ª±´´¸¸´¸¸´ªª§§§§£§£§ªªª§§±±¾¾¾»»¾¾¾ÂÂÅÅÉÉÌÌÏÓÖÓÓÏÏÏÏÏÏÓÓÌÏÏÌÏÏÉÉÉÉÅÂÅÅžÉÅÉÌÏÏÓÓÓÖÚÚÚÖÚÚÝÝÚÓÓÓÌÌÏÏÌÏÏÖÓÓÖÖÚÚÖÏÏÏÉÉÏÌÌÌÌÏÌÏÓÌÏÓÏÏÏÏÌÌÉÅÅÅ»»»»´´¸¸¸¸¸´´´´´´´¸´´¸»»¸¸¸´´´±¸´»»¾¾Â¾¾¾¾Â¾Â¾»¾¾»¸§ª§§ § §£§§§ª¸¸¾¾Â¾¸¾¾¸¸»¸¸¸»»»¾ÂÅÉÉÉɾ¾¾¸»¸¸¸¸»±´´¸±´´´´±ªªªª§§§ªª´´´»¸»´¸¸¾»¸»»¸¸»»»»¸»´¸¸¸¸¸¸±´´´´´±±´±´ª´´¸´±´±´´±´´´´£ª£ \9c\99\96\96\96\92\8f\8f\8b\8b\8b\81\88~\85\85\85\85\85~\85\81\85~w~wztmmwz~~wwtptRwtttpifii__cifimpimif_c\XURRNRNRNRNK
+
+ADG=GKKDDKNRUNUUXXNc\\_cRfmffppwpmiiifiifccfficfmfpittmtwwwzwwwzwwwzzzzzzzwtpmm\0m\0m\0\0cc\XXURNKGDAAAAADDGKNRUX\\_cffmc_fcfippptwz~\81~\81~~~~~~~~zzzzzzzzzzzzzzzz~z~zzzzzzzzw~wwwwwwwwwwwwwwwz~\81~\81\81\81\85\85\81\81\81zz~\81~\81~\81\85\85\85\85\85\85\81\81\81\81~zzwwwwwttwtwwzz~~zzwzwwtwzzzwwpppifccc_XURNKKGDA::66:66::==AADADDADDDGKGKNRU±´¸»»¾¾¸»´´¸¸´´¸»´¸±´±ªªª§§ \9c\9c\9c\9c\9c\99\99\99\99\9c\9c \9c £££§§§ª±´¸»»»´»¸¸¸´¸´´±´±´ª£ªªªªª±±±±±ª±´¸¸¸»»»¸¸´±±´´´¸¸¸¸¸±ªªª§§§££§ª§§§ªªªª´´»¾»»»¾¾¾ÂÂÅÅÅÉÌÌÏÓÓÏÏÓÓÌÏÌÏÓÓÌÏÌÏÏÌÉÌÅÉÅÅÂÂÅÂÉÉÉÌÏÓÖÖÖÖÚÚÚÖÖÚÚÚÖÓÓÏÌÏÏÌÉÌÓÓÓÓÖÖÚÖÓÓÏÌÉÉÌÌÌÌÏÏÌÌÓÉÏÓÏÏÏÏÏÏÉÉÉɾ»¾¸´¸´¸¸¸¸´´¸´´¸±¸´´¸»»»¸¸´¸¸´¸¸»¾¾Â»¾Â¾Â¾¾¾¾¾¸ª£ªªª£§ §£§££ª±´»Â¾Â¾»¾¾»»¸´¸¸¸»»¾ÂÂÅÉÉɾ¾»»¸¸´¸¸±´´±´´´±±ª§§ª§ª§ª\92ª±±¸¸»¸»±´¸»»¸¾»¸»¸¸¸»¸¸¸¸´¸¸¸´´´´´¸´´±´±´ª±±´±±´±±±´´´´´£§§£\9c\9c\99\96\96\96\8f\8f\8f\8b\8b\8b\81\88z\88\85\85\81\85\81\85~\88\81w\81z~pmmw~~~zwpptUwwwttmificcfmfmmpmmmi__\\XUUNRNNRRNK\0
+ADG:GGKAAKNRURUUUXRf_X__Ufmifttwttmmmimmiifimpimpttpwwzwzzw~wwzzzzz~~~~~~~ztpmm\0i\0i\0\0c_\XURNNGGDADADADDGKKRUX\\_cffmf_icfimpptww\81~~\85\81~~~~~~~zzz~zzzzzz~zz~zzzzz~zzzzzzzw\81wwwwwwwwwwzwwwwzz\81\81\81\81\85\85\85~\81\81~~\81\81\81~~\81\85\85\85\85\85\85\81\81\81~~wwwtttttppttwzzzzzzzzwwwwzwzwwpppicc__\XRRNGGDAA::663366:::==A=DAAAADGKKKRRX´´»»¾»¾¸»´´´¸¸¸¸»´´´´ªª§£\9c \9c\99\9c\9c\9c\9c\9c\9c £ ££§£§§ª±´´»¸»»¸¸¸»¸±´´±±´´±ª §£§§ªª±±´´±´»»¸»¾¾¾¸¸¸´´´¸¸¸»¸¸´ª§§§£§§£§ª§ªªª§§ª±¸´»¾»»¾¾»»Â¾ÅÅÉÉÌÉÏÓÏÏÓÏÏÏÏÌÏÖÏÌÌÌÏÌÏÌÏÅÌÅÉÂÅÅÅÉÉÌÏÏÓÖÖÖÖÚÚÖÓÓÖÖÖÓÏÏÏÌÌÏÉÌÌÏÏÏÓÓÓÖÖÓÏÏÌÉÉÌÌÌÉÌÏÌÌÏÌÏÏÏÏÏÏÌÌÉÉÉÅž»¾¸±¸¸´¸´¸¸´´´´´´´´¸¸»»»¸¸¸»¸¸¸¸¾¾¾Â¾Â»¾Â¾¾¾¸ª§ª§§ §\9c££§§§ª´±¸¾Â¾¾Â¾»»¸¸»¸¸»¾»Â¾ÂÉÅÉž»»»¸±¸¸´¸¸±±´±´±§ª§£ª§ªª\8f±±¸»»¸»¸»¾»¸»»»¸´¸¸¸¸¸¸´¸´»¸´¸´±´¸¸´´¸´±ª±§ª±±´±´´ª´¸±±§§ª£\99\9cz\92\92\92\8f\92\8f\88\8f\8b\85\85z\85\85\88~\85\85\85~\88\85\81\85zzpmmz\81~~wwptwwwzzwwpmfiffipmmmmmimi__\\XXUUURRRURNNGDDD:GGKAAKRUURURXXNfc\c_Xfpiittwwwtpwpppptitptpppwwtzz~w~zz\81zzzz~~~~~~~~~~zwtmm\0i\0f\0\0c_XURRNKGDGAADAADDDGKNUX\\_cffmicffcfipptww~~\81\81\81~~\81~~~~zz~zz~zzz~zzz~zzzwzzwzwzzzzw\81wwwwwwwwwwwwwtww~\81~\81\81\81\85\81\81~~\81\81\81~~~\81\85\85\85\81\85\85\81\81\81\85\81zzttpppppmptptwz~zwzzzwwtwzwwwwtpmfcccc\XRRRKADAA666300636::==A=AAAAADGKKKURX´´¾¾¾¾»»»´´´¸»»»»¸´±´±±ª§§§ £ \9c \9c\9c\9c\9c\9c £££§§§£§ªª´´¸»¾¾»¸¸¸´±´´´´±±§\9c\9c\9c §ª§§ª±±±±´¾¾¾»¾¾¾¾»»¸¸´¸¸¸¸»´´±±ª§££££§§§ªªª§ª§´¸´»»¾»¾»»¸¾¾ÅÅÉÉÌÌÏÓÓÌÏÏÓÓÏÏÏÓÓÏÌÌÌÌÌÌÏÉÉÂÉÂÅÂÅÉÌÏÏÏÓÓÖÖÓÚÖÖÏÓÓÓÏÏÏÌÏÌÌÏÉÌÉÏÏÏÏÓÏÓÖÏÏÌÉÌÉÉÌÌÅÌÏÌÌÌÌÏÌÏÌÏÏÌÌÌÌÉÅɾ¾¾»±¸¸´´¸´¸´´´´´¸¸¸¸¸»»»»¸¸»¸¸¸¸¾¾¾Â¾¾Â¾¾Â¾Â¾¸§ªª§§ £ ££££ª±±±¸¾¾¾¾¾¾»»»¸¸¸»»»¾»Â»»ÅÅž»»»¸±¸»¸»¸±±±±¸±´§ª§£ª§§ªª\92ª±´¸»»¸¸±¸»»»»¸¸¸´´¸´´¸´¸´¸±¸¸¸´¸´´»¸´´´´±§´§ª±±±±±´ª±¸±±§£§£\99\9cw\8f\8f\92\92\8f\8b\8b\8b\8b\85\81z\81\81\85z\85\85\81\81\85\88\85\85z~tppz~~ztwmtttz~zwwtmiifimpppmmpmimc_\\\\XXXRURUURRNGDD:GGKDAKNRUUUR\UUfcff__ipifptwzzwtztttzwwwzwtwwzzwz~\81z\81~~\81~~zz~~~~~~~~~~zwtmm\0f\0f\0\0c\UURNKKKDGAADADGGGGKNRU\\_cffmffcicffmptww~\81~\81~~~~~\81~~zzzzzzzzz~zz~~z~zzzwwwwwwwww\81wwwwwwwwwwwwwttw~\81\81\81~\81\85\81~~~~\85\85\81\81~\81\85\85\85\85\81\81\81\81\85\81~zwppppmpmmmpptwzzzz~~zzwttwwwwwtpmfcffc_XURNNAA==63300,33666:==AA=AA=DGGKNRUX±¸»»¾¾¾¸»¸´´´¸¸¾»¸¸±´ª§§£ £££ \9c\9c\9c £ ££§§§ª§ª±±´¸»¾Â¾»´»´´´´¸´§ª£\9c\99 £§ª§¸Â¾¾Â¾¾»»¸»¸¸¸¸¸´±§£££§§§ªªª§ªªª±¸¸¸»»¾»»¸¸¸»ÂÅÉÅÌÏÏÌÏÓÏÏÏÓÏÌÏÓÏÓÓÌÌÌÏÌÌÌÌÉÂÅÂÅÅÅÌÏÏÓÏÓÖÖÖÓÖÖÓÏÓÌÏÏÌÌÌÌÌÌÏÌÌÌÏÏÓÏÓÏÏÓÏÏÉÉÌÉÌÌÌÉÌÏÉÉÌÉÌÌÌÌÌÏÏÌÌÌÉÅž»¾´¸´±±¸´¸´´´¸´¸¸¸¸¸¸¸»¾»¸»»»¸»»¾Â¾¾ÂÅž¾Â¸ªªªª§ £££§±±»¾¾¾Â»»¸»»¸´¸»»¾¾»¾»¸ÂÅÅÅž¾¾»¸´¸»»¸¸´´±´±´±´ªª§§ª§§ª§\92ª´´¸»¸¸´´¸¸¸»»»»´±´´±´¸¸¸¸¸´´´±¸¸´¸¸±´´´´£±£ª±±±ª±ª±´±±£ § \99 w\8f\8f\92\8f\92\8b\8f\8b\8b\85\85~\81~\81z\81\81\85\81\88\88\81\88~\81ttp~~~zttptpt~zwwtpmimimptttpptmimfc\\\\\\\UUUUUUUUKGK:KGKAAKNUXUXR\X_cfif_cmtiftwzz~zw~zww~zzz~zwzz~zwz\81\85~\81\81~\81~~~~~~~~~~~~~~zwtpm\0f\0c\0\0cXUUNRNKGDDADDDDGKKDKNNR\\_cffmcc_ifffimtwwz~~\85zzzzz\81~\81zzzzzzzzzzzzzz~zzwwwwwwwwwww~wwttwwwwwwtwtttw~~\81\81~\81\85~~\81~z\81\81\81\85\81\81\85\85\85\85\81\81~\81\85\85zztppmmmpmimpppwwzzz\81~zzwttwwwttppmifffccXURNKDA==60000)33366::=AA==AADKKNRUXX±´¸¸¾¾¾¸»´´´´´¸¾»»¸±±ª§§§££££§£ £££ \9c\9c £ §§ªªªªªª±´¸¾¾Â¾¸¸»´¸´¸¸±££ \9c\9c §£§§ªªª´¾¾¾Â¾¾¾»»¸¸¸»´´ª£§£§§§ªª±´¸´»»¾»»»»¸¸¾¾ÅÅÉÌÌÌÌÌÏÓÏÏÓÓÏÌÏÏÖÓÏÏÏÏÌÌÌÌÉÅÅÅÅÉÉÏÓÓÓÏÖÖÖÓÓÖÓÓÏÏÌÏÌÌÌÉÏÌÉÏÌÏÌÌÌÓÏÏÏÓÓÏÌÉÌÌÌÉÉÉÌÏÌÌÌÏÌÌÌÉÌÌÌÌÌÌÌÉÉÅž¾¸¸¸±±¸´´´´¸¸¸¸¸¸¸¸¸»»»»¸»¾»¸»»¾£Ì¾¾ÅÅž´ª§§£ £ £§±´»¾Â¾¾»»¸¸¸´´´¸»»¾»»»»¾ÅÅÅž¾¾»¸¸»»»¸¸´´´¸±´´§§§§ª§ªª\96§ª±±¸»»»¸¸¸¸´»»¸¸±±´±»»´¸¸¸¸´±´¸´¸¸±´¸±¸§£ª±±ª§±ª´±± \9c£ \9c\9ct\92\92\8f\8f\92\8f\8f\8b\8b\88\85\81\81z\85~\81~\85\85\8b\88\81\85\81\81wwp~~~zwtttmp~~wwtmmmmmptwtt\0ptmmmif_\_____XXXXXXXXXKX=NNK=AKRX\XXU_\cfipccfppifpz~~~~z~~zz~~z~z~z~~zz~~\85\88\81\81\85~\81~~~~~~~~~~~~~~zwtpm\0f\0c\0\0c\XXUUKGDDAAAADDGNNGGKRNXX_cffm__cficcfiptwz~~\85~zzz~\85z\81wwzzzzzzzzzzwzzzwwwwwwwwwwwwzwwtttttttwtttttw~~\81\81\81\81\85\81~~\81~\85\81\81\85~\81\85\85\85\81\81\85\81\85\85\81~wttpmimmmmmpppwwwzz\81~~zztwwttttpmpmiiifc\XUNGA==::3000,33366:6==A==AAGKNRUXXX±´´»»¾»¸¸¸±´´»¾»»¸±ªª§§£§§£££ £ ££ªªªª±±»»»Â¾»¸¸´¸¸´´ª £ \99\9c ££§§ªª§±»»¾ÂÅÂÅÅž»»¸»¸»´´±±§££§§§ªª±±±±±´´´´»»¾»»»»¸¸¾¾ÅÅÅÌÌÌÏÉÏÓÏÏÓÏÏÏÏÓÓÓÏÏÏÌÏÏÌÉÌÉÉÉÅÏÏÓÖÓÖÓÚÖÓÓÓÖÓÏÏÏÉÌÏÉÌÌÏÌÉÌÌÌÏÌÌÓÏÏÏÖÖÓÏÌÉÉÉÉÉÉÉÌÌÌÌÌÌÌÉÌÌÌÌÌÌÌÉÉÉÉž¾»»¸±´¸¸´´¸¸¸¸»¸»»¸¸»¸»»¸»»»»¸~Nc\9c¾¾¾ÅÅÅÅÅÅž´§££\9c \9c \9c£ª´¸»¾¾¾¾»¸´¸´´´±»»¾¾»¸¸´Åž»¾»»»»»»¸¸´´´´´±±§§§§ª§ªªª£´±¸¾¸¸»´´»¸¸¸¸¸±´±±»»´¸´±¸¸¸±´¸´¸´´±´±´ª ª±±ª´ª¸±±££ \9c p\96\8f\8b\92\92\8f\8f\8b\88\88\81~~~\81\81~~\85\85\88\88\81\81\81~zzpzz~wwwtpmmzztttpmmmptwwwt\0ttpppicc_cc__cXXX\X\\\\\\:RRKADK\\_\XX__cimttfctpitmz\81~~~~\81\81~z\81~zzz~~~~z~\81\81\85\88\81\81\88\81\85\81\81~~~~~~~~~~~~~wtpm\0f\0c\0\0c\\\XXNGDAAA=DAAGNRGDNNNXU\_ffmcc_if__cfmpwz~~\81\81~~~~\85\81\81zzzwwwwwzzzzwwzwwwwwwwwwwwwwzwwttttttttwptttwz~\81\81\81\81\85\85\81~\81\81\85\85\85\85\81~\85\85\81\81\85\85\81\81\81~~wwpppimimmmpmtttwzz~~~~ztwwtwttmmmpmmiif_\UNGA=:6:633003336:6::====AAGNRRUXXXªª±±¸»¾¾»¸¸´¸¸¾»»»¸ª´ªª§££§£§££££ £ §ªªª´¸¸»¾¾¾»¸¸¸¸´±ª§£££\9c\9c££§§§ª§§ª¸¸»¾ÅÅÉÅŸ¾¸¸»»±´±§£ ££§ª§±±±´±´´´¸¸´¸¾¾¾»»¾¸»»ÂÂÅÅÉÏÌÌÉÌÏÏÏÏÌÏÏÌÓÓÏÏÏÌÏÏÏÌÌÌÉÉÅÏÓÓÖÖÖÖÖÚÚÓÓÓÓÖÓÌÏÌÌÌÅÉÉÌÉÌÌÌÌÌÏÏÏÏÏÏÓÖÓÏÏÉÅÉÉÉÉÉÌÌÌÌÏÌÌÌÌÌÉÌÌÏÌÉÉÌÌÉž¸»¸´´¸´¸´¸¸´¸»»¾»»¸»»»¸¸¸¸¸¸¸R\1fR\9c¾ÂÂÉÅÅÅÅÅ»±±±ª££ \9c\9c £ª±¸»¸»»¾»»´¸¸´±±´»»»Â»»¸´Å¾¾¾¾¾¾¾»»¾»¸¸´´±´´±§§§§§ª§§§ª§±´´´»¸´¸¸±¸»»¸´´±±±±ª±¸¸´¸´´¸¸¸±´´´¸¸¸´´´±ª§±±±±´±»±´§§\9c \9c m\99\92\8b\92\8f\92\8f\8f\8b\8b\81t\81z\85\81~~\81\85\88\85~\81~\81wzzwz~zwwpmmmwwptpmiimptwwww\0wtppmicccccccf\X\\\______6UUNADU__\\\0Xcccmpwwicwpiziz\85~~zz\81\81~z~~wwz~\81~\81z\81\85\85\85\88~\85\88\85\85\81\81~~~~~~~~~~~~zztpm\0f\0c\0\0____\XUGGAA=AAAADKRDGKKRURX\ffmfc_fcc__cfiwz~\81\81\85\81\81\81\81\85\85\81~wwwwwwwwwwwtwwwwwwwwwwwwwwwwwwttttttttttpptwzz~\81\81\81\85\85\85\81\81\85\88\88\85\85\81~\85\81\81\81\85\81\85~~~~zttppmmmpmmpptttwww~\81~~~wzwwwtpiimmpmiii_XRNGDA:::6633033366::::=====DKRRXX\Xªª±»¾»»»»»¸¸¾¾»»¸´ªª§§§§§§££ £ £££ª§ªª±±´´»»»»¸´¸¸´±±§ª§ £ £§§§§ªªª§ªª´´¸»ÅÅÉÉÅž»»»»»»±±ª§£££§ª±´´´´´´´¸¸´´¾¾¾»¾»¸¾¾ÂÂÉÉÉÌÌÉÉÌÌÏÏÌÌÏÏÌÏÏÏÌÌÌÌÌÌÏÌÌÌÌÌÓÖÖÖÖÖÓÖÖÖÓÏÖÓÓÏÉÏÏÌÌÉÉÉÏÉÉÌÌÌÌÏÏÌÏÏÏÏÓÏÏÌÉÉÉÌÉÉÉÉÌÏÏÏÉÌÏÌÌÉÌÌÏÌÌÌÌÉÉÉÅ»¾»¸¸¸´¸¸»»´»¸¾¾¾¾´¾»¸¸¸´¸´¸¸w\1fw\9c¾ÂÂÅÅÅž±±§£§££ \9c£ £´¸¾»»¾»¾»¸´´´´±´±¸»¾Â¾¾¸¸Â¾¾»¾¾»»»¾Â»¸¸´±±´´±§ª§§§ª§ª§ªª±´±´¸¸´´´´¸¾»»´¸´±±±ª±´´´´´´¸¸´´´´¸»¸¸¸´±ªª±ª±±´±¸´¸¾´±ªª £\9c \9c\99\96\8f\92\8b\92\8f\8f\8f\88\85t\85w\85~~~\81\81\88\81\81\85z\81wz~zz~wwwpmiittpppiiimpttwtw\0wwtppmffffcccf_\\X\__cccc6UUNDD\c\__\0cffmmtzziftpi~iz\85\81~~~~\85zzzzzzw~~~\81~\85\88\88\85\85\81\88\88\85\85\85~~~zzzzzzzzz~~~tpi\0f\0_\\_____\XXD==:=A=DAKUAKGGNDDRXccmic_c_____ccz~\81\81\81\88\81\81\85\85\85\88\85~wwwwwttwwtttwwtttwwwwwwwtttwwwttttttttpppptwz~~\81\81\81\88\88\88\85\85\88\88\88\85\81\81~\81\81\81\85\81\85\85~~\81~wtpppmmmmmppppttwtwz\81\81\81~zzwwwtpffiimiiiic\URKAA==::633066636:6::=:::=AKRRXXXUªªª±¾¾¾¾¾¾¾»¾Â»¸¸±±§§§§ª§££§ £ £££££§ª±±±±´±¸»¸»´´¸´´±±ªª£§££§£§§§ªª§§ª±´´»ÂÂÅÅÉÅÅ»»¸¸»»±±§§§£§£ª±´´¸¸´¸´¸´¸´¾¾¾»¾¾»¾¾ÂÂÅÅÉÉÌÉÌÌÌÌÏÉÉÌÌÌÌÌÌÉÉÉÉÉÌÏÌÏÏÏÏÖÖÖÖÚÖÖÚÖÓÓÏÓÏÏÏÉÌÌÏÌÌÉÅÏÌÌÌÏÌÌÌÏÉÏÌÌÏÏÌÌÌÉÌÉÌÉÉÅÌÌÌÌÌÉÌÌÌÌÉÌÌÏÌÌÌÌÉÉÌÅž¾¾»»»¾¾»¾»»¾¾¾Â¾¸¾¾»¸´±´´´´UKc̾¾¾¾Åž±ªª£ª££ £ §£¸»¾¾»¾¾¾¸¸´´´±´´´»»Â»»»»¾Â¾¾»¾»»»»¾Â»¸¸¸±±±§§§§§§£§ªª§±´´´¸¸±±±´»»¾»´´±±±±´´¸´´¸´´¸¸´¸±´¸¸´»¸ª±±ª´±´»¸»¾´\8f§ £\9c \9c\99\96\92\92\8b\92\92\92\8f\8b\85t\85w\85~\81~~\81\88\81\81\81w~z~z~~~zzwpmiitpmmmiifimptwtw\0twwttpiicffcffc\\\__cfcff6XXNK__c__c\0fppttwzzmftpm\81i~\85~zz~~\81zwwzwwwz\81~\81\81\81\85\88\88\85\85\85\85\85\81\85zz~zzzzzzzz~~z~zpf\0c\0_\X__c_\\\XG:A::A=ADKR=KKDNAAG)__im_\\\\\_\__w\81\81\81\85\88\81~\81\85\88\88\81zttwtttptttttttttttttttttttptttttttttttttttttzz~~\85\85\88\8b\8b\88\88\88\8b\88\88\81\81~\81\85\85\85\81\81\85\81~\81~zwtptmmpppptpptpttww~\81~~z~zwtppfcfiifiifc\XUNADAA:::6636663666::=::::=GNUUUUUªª´¾Â¾Â¾Âž»´±±ªª§§ªªª§§£ ££ £££§££ªªª±±±±±±´»´¸±´¸±´±±ª§§££££§££§ªª§ªªª´´´»¾¾ÅÂÉÅÅ»¸¸¸¸¸±±±ª§ª£§§§ª´´´¸¸¸¸¸¸´¸´»»¾¾¾Â¾¾¾ÂÅÅÅÉÅÌÅÌÉÌÉÌÉÉÉÉÉÉÅÂÅÉÉÅÅÌÏÏÏÓÏÓÖÚÚÚÚÖÖÖÓÏÓÌÓÏÌÌÌÌÏÏÏÌÌÉÏÌÌÏÌÌÌÉÌÉÌÉÉÌÌÉÌÌÉÉÉÉÉÉÅÉÌÏÌÏÌÏÏÌÌÌÌÌÌÌÌÏÌÌÉÌÉÉ»»¾Â¾¾¾Â¾¾»»¾»´´±±±±´Gft¾¾Â¾¾¾ÂžÅ¾´§§ª££££££ª§±»¾¾Â»¾¾»¸´´±´´´´´»»¾¾¾¾»Â¾»¸¾¸¾»¾¾¾»¸¸´±±§§§§£§§§ª§ª£±±±´¸´´´¸¸»Â¾¸´´´±´±¸´´´¸´´¸´´´¸´´´´´¸´ª±±±±ª±±¸»»»»±ª\8fª££ £\9c\99\96\96\92\8f\96\92\92\92\8b\85p\85w\85~\85\81~\81\85\81\81\81z~~~~\81~~wztmiifpmmiififiimptpt\0wtwwwtmmciffff_\XX\cffffi6XXNNcccc_f\0ittwwwzzmi~p\85\85i~\85~w~\81~\81~ztzwwww\81\81\81\81\81\85\8b\8b\88\81\88\85\85~\81zzzzzzzwwwzz~~~~m_\ 3_\ 3\\U\__c\\XXK6=:====DGN:GNGK)%D%N\im_\\\\X\X\\z\81\85\81\88\88~\81~\81\88\88\85wpwtttpmttpppptppppppppttppmttttpppppptttwwwww~~\81\85\88\8b\8b\8b\8b\8b\88\8b\85\85\85\85\81\81\85\85\85\85~\81\81~~~wwwttpmmppttpttptwtzz~~\81~~~ztptffcifffifc\XXNDGDA=:=::666:6::6:::::6::GKRRURUªª¸¾ÂÅÂÅÅÅÂÅÅž¸´´ª§ª§ªª§§£ ££\9c\9c\9c\9c\9c\9c££§§££§ª±±±±±±»¸´´±´±´±´±±ªª£££££ £ªª§§ªª±´±»»¾Â¾Å¾»¸¸¸¸´±´±±ª§§§§£§ª±´´¸´¸¸¸¸¸¸´¸¸»»¾Â¾¾¾ÂÂÂÅÉÂÉÅÉÉÌÌÏÉÉÉÅÉÉÅÂÅÅÅÅÅÌÏÏÓÓÓÓÖÚÚÝÚÖÚÖÓÓÓÌÓÌÌÌÉÌÏÌÏÏÉÌÏÌÌÏÌÏÌÉÉÉÌÌÅÌÉÉÉÌÉÉÉÌÉÉÅÉÉÏÏÏÌÓÏÌÌÌÌÏÌÏÌÏÌÌÌÌÌÌÅž¾ÂÅÅÂÅÂÂÅÅÅž¾»»¸±´±´±´»Â»»Â¾»¾¾¾Â¾¸±ª§§££§§§§ª´»¾Â¾¾»»¸¸´´´´±´´¸¾»¾¾¾¾¾¾¾¾¾»¸¾¸»»¾¾Â¾¸¸´´ª±ªª£§§£§§ª§ª§§ª±±´¸´´´´´¾¾¾»¸¸´´¸´¸±±±¸´´¸¸¸´¸¸´¸¸´¸¸§±´´±±±±´»¸»¾¸§§ª£ £ \99\96\96\92\92\92\96\92\92\8b\81p\85z\85\81\81\81~\85\85\85\81\85~~\81~~~~~wwtmiifpiiifficfimpttw\0wptwzwppfiffff\_XX\cffifi3X\RRfcfccf_mwwzzw~~mm\81p\85\85\81~\85~i~\81~\81~~wztwww\81~\81\81\85\85\8b\8f\8b\85\85\88\85~~w~wz~~zttz~z~\81~\81pc\aX\a\XX____X\U\N3A=::::DGG=GNGK%\1f=)N\mpc_\_XX_UXU~\85\85\85\85\85z\81\81~\85\85\85t\18zptppXpppmppppmmpmmmippmmitppppppppppwwwtwwz~~\81\85\88\8b\8f\8b\8b\8b\88\88\88\85\88\85\85\85\88\85\88\88\81\81~\81~\81zwwwwtpptttttttppttwwz~~~~~~wtpcfciiffifc\XUNGGGDA:=:::::=:=:6:::666==DGNRRNU
\ No newline at end of file
--- /dev/null
+# Copyright (C) 2007-2012 CEA/DEN, EDF R&D
+#
+# 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.salome-platform.org/ or email : webmaster.salome@opencascade.com
+#
+
+ADD_SUBDIRECTORY(xmedpy)
--- /dev/null
+# Copyright (C) 2007-2012 CEA/DEN, EDF R&D, OPEN CASCADE
+#
+# 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.salome-platform.org/ or email : webmaster.salome@opencascade.com
+#
+
+# This folder contains the packages for the Text User Interfaces:
+# - xmedpy: python library for TUI (python package installed with name xmed)
+
+SUBDIRS= xmedpy
--- /dev/null
+# Copyright (C) 2007-2012 CEA/DEN, EDF R&D
+#
+# 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.salome-platform.org/ or email : webmaster.salome@opencascade.com
+#
+
+INCLUDE(${SALOME_MACROS_DIR}/InstallAndCompilePythonFile.cmake)
+
+SET(PYFILES_TO_INSTALL
+ __init__.py
+ fieldproxy.py
+ fieldtools.py
+ fieldguide.py
+ cmdtools.py
+# For the control of PARAVIS and VISU
+ driver_pvis.py
+ driver_visu.py
+# For the medop.sh executable program
+ medop.py
+# Modules that are required for test or tutorial purposes only:
+ properties.py
+ )
+
+INSTALL_AND_COMPILE_PYTHON_FILE("${PYFILES_TO_INSTALL}" ${MED_salomepythondir}/xmed)
+
+SET(TEST_SCRIPTS_XMED
+ tests/test_xmed_fieldOperations.py
+ tests/test_xmed_uiEventListener.py
+ tests/test_xmed_visualisation.py
+ )
+
+INSTALL(FILES ${TEST_SCRIPTS_XMED} PERMISSIONS OWNER_EXECUTE OWNER_WRITE OWNER_READ GROUP_EXECUTE GROUP_READ WORLD_EXECUTE WORLD_READ DESTINATION ${MED_salomebin_BINS}/xmed)
\ No newline at end of file
--- /dev/null
+# Copyright (C) 2007-2012 CEA/DEN, EDF R&D, OPEN CASCADE
+#
+# 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.salome-platform.org/ or email : webmaster.salome@opencascade.com
+#
+
+# Author : Guillaume Boulant (EDF)
+
+include $(top_srcdir)/adm_local/unix/make_common_starter.am
+
+mypkgpythondir = $(salomepythondir)/xmed
+
+# Modules that are strictly required for the fields operations in
+# SALOME:
+mainpkg = \
+ __init__.py \
+ fieldproxy.py \
+ fieldtools.py \
+ fieldguide.py \
+ cmdtools.py
+
+# For the control of PARAVIS and VISU
+mainpkg+= \
+ driver_pvis.py \
+ driver_visu.py
+
+# For the medop.sh executable program
+mainpkg+= \
+ medop.py
+
+# Modules that are required for test or tutorial purposes only:
+testpkg = \
+ properties.py
+
+mypkgpython_PYTHON = \
+ $(mainpkg) \
+ $(testpkg)
+
+mybindir = $(salomescriptdir)/med
+testscripts=\
+ tests/test_xmed_fieldOperations.py \
+ tests/test_xmed_uiEventListener.py \
+ tests/test_xmed_visualisation.py
+
+dist_mybin_SCRIPTS=\
+ $(testscripts)
--- /dev/null
+# -*- coding: iso-8859-1 -*-
+# Copyright (C) 2011 CEA/DEN, EDF R&D, OPEN CASCADE
+#
+# 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.salome-platform.org/ or email : webmaster.salome@opencascade.com
+#
+# Author : Guillaume Boulant (EDF)
+
+#
+# ===============================================================
+# This functions are to be used to notify the USER of some events
+# arising on the field operation. It is NOT to be used for logging
+# purpose
+# ===============================================================
+#
+def inf(msg):
+ print "INF: "+str(msg)
+
+def wrn(msg):
+ print "WRN: "+str(msg)
+
+def err(msg):
+ print "ERR: "+str(msg)
+
+def dbg(msg):
+ print "DBG: "+str(msg)
+
+#
+# ===============================================================
+# Initializing some CORBA stuff
+# ===============================================================
+#
+
+# Remember SALOME definitions:
+# ---------------------------
+#
+# componentName = Name of the component (a library lib<componentName>Engine
+# should exist with a C function named <componentName>Engine_factory, and the
+# component should be registered in the catalog MEDCatalog.xml).
+#
+# corbaModule = Name of the corba module that contains the IDL
+# specifications of the component (name as defined in the idl file)
+#
+# containerType = Name of the container factory
+#
+componentName = "MEDOPFactory"
+corbaModule = "MEDOP"
+containerType = "FactoryServer"
+
+import salome
+if salome.lcc is None:
+ salome.salome_init()
+__import__(corbaModule)
+factory = salome.lcc.FindOrLoadComponent(containerType,componentName)
+# The factory is not the main CORBA component of the SALOME module MED
+# (i.e. the engine associated to the active study), but the CORBA
+# entry point for MED fields operations (i.e. a CORBA component
+# reachable throught the LifeCycleCORBA). This entry point is used to
+# get the other SALOME CORBA components required for MED field
+# operations, in particular the dataManager and the calculator
+
+#
+# ===============================================================
+# Initializing the MED components required for MED fields operations
+# ===============================================================
+#
+dataManager = factory.getDataManager()
+calculator = factory.getCalculator()
+
+#
+# ===============================================================
+# Initializing the notification system (events from components to GUI)
+# ===============================================================
+#
+
+# The MEDEventListener is created in the GUI (WorkspaceController) and
+# a reference is transmitted to the python context throw its IOR. The
+# transmission consists in initializing the variable below from the
+# GUI (who knows the IOR) when importing xmed in the python console
+# (see WorkspaceController)
+eventListener = None
+import SALOME
+def connectEventListener():
+ global eventListener
+ try:
+ eventListenerIOR = dataManager.getEventListenerIOR()
+ eventListener = salome.orb.string_to_object(eventListenerIOR)
+ except SALOME.SALOME_Exception, e:
+ wrn("The event listener is not running yet")
+ msg ="When you'll have loaded the MED GUI, "
+ msg+="call explicitely \"xmed.connectEventListener()\" "
+ msg+="to connect the GUI event listener"
+ inf(msg)
+ eventListener = None
+ except Exception, e:
+ err("An unknown error occurs. Check if this ior=%s is valid."%eventListenerIOR)
+
+def eventListenerIsRunning():
+ global eventListener
+ if eventListener is not None:
+ return True
+
+ # Try to define the event listener
+ connectEventListener()
+ if eventListener is None:
+ # it definitly does not work
+ wrn("the GUI is not loaded yet and will not be notified of the modification")
+ return False
+
+ return True
+
+# One can try to connect to the eventListener, but it will fail if the
+# MED GUI is not loaded. That does not matter, because the event
+# listener is used only to notify the GUI of some event. If the GUI is
+# not loaded, there is no use of notification.
+connectEventListener()
+
+#
+# ===============================================================
+# Automatic import of some elements of the package
+# ===============================================================
+#
+from fieldtools import load, get, put, dup, ls, la, save, view
+from fieldguide import doc
+from cmdtools import cls, wipe
+
+#
+# ===============================================================
+# Some helper functions to deal with the fields and meshes
+# ===============================================================
+#
+import MEDCoupling
+__mapTypeOfFieldLabel={
+ MEDCoupling.ON_CELLS:"ON_CELLS",
+ MEDCoupling.ON_NODES:"ON_NODES",
+ MEDCoupling.ON_GAUSS_PT:"ON_GAUSS_PT",
+ MEDCoupling.ON_GAUSS_NE:"ON_GAUSS_NE"}
+
+def typeOfFieldLabel(typeOfField):
+ # A field name could identify several MEDCoupling fields, that
+ # differ by their spatial discretization on the mesh (values on
+ # cells, values on nodes, ...). This spatial discretization is
+ # specified (at least) by the TypeOfField that is an integer value
+ # in this list:
+ # 0 = ON_CELLS
+ # 1 = ON_NODES
+ # 2 = ON_GAUSS_PT
+ # 3 = ON_GAUSS_NE
+ try:
+ return __mapTypeOfFieldLabel[typeOfField]
+ except IndexError, e:
+ return "UNCKNOWN"
+
+#-----
+# This function is to be called from the working python console to
+# specify the globals() dictionnary (used in fieldtools for stat analysis)
+#
+# >>> xmed.setConsoleGlobals(globals())
+#
+import fieldtools
+def setConsoleGlobals(pyConsoleGlobals):
+ fieldtools.pyConsoleGlobals = pyConsoleGlobals
+
+#
+# ===================================================================
+# unit test functions
+# ===================================================================
+#
+def TEST_typeOfFieldLabel():
+ print typeOfFieldLabel(0)
+ print typeOfFieldLabel(5)
+
+# ===================================================================
+if __name__ == "__main__":
+ TEST_typeOfFieldLabel()
--- /dev/null
+# -*- coding: iso-8859-1 -*-
+# Copyright (C) 2011 CEA/DEN, EDF R&D, OPEN CASCADE
+#
+# 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.salome-platform.org/ or email : webmaster.salome@opencascade.com
+#
+# Author : Guillaume Boulant (EDF)
+
+#
+# ===================================================================
+# The functions of this module must be imported as global functions in
+# the SALOME python console. It provides the console context with
+# general purpose python commands.
+# ===================================================================
+#
+# add something to clear the screen
+class Cls(object):
+ """
+ This class can be used to create a command that clear the shell
+ screen running this python interpreter.
+ """
+ def __repr__(self):
+ import os
+ os.system('cls' if os.name == 'nt' else 'clear')
+ return ''
+
+cls = Cls()
+
+class Prompt:
+ """
+ This class can be used to create a special prompt
+ """
+ def __str__(self):
+ import os
+ return 'medop> '
+
+import sys
+sys.ps1 = Prompt()
+del sys
+del Prompt
+
+class Wipe(object):
+ def __repr__(self):
+ return '>>>\n'*40
+
+wipe = Wipe()
+
--- /dev/null
+# -*- coding: iso-8859-1 -*-
+# Copyright (C) 2011 CEA/DEN, EDF R&D, OPEN CASCADE
+#
+# 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.salome-platform.org/ or email : webmaster.salome@opencascade.com
+#
+# Author : Guillaume Boulant (EDF)
+
+import MEDCoupling
+__mapTypeOfField2ParavisLabel={
+ MEDCoupling.ON_CELLS:"OnCell",
+ MEDCoupling.ON_NODES:"OnPoint",
+ MEDCoupling.ON_GAUSS_PT:"ON_GAUSS_PT",
+ MEDCoupling.ON_GAUSS_NE:"ON_GAUSS_NE"}
+
+def pvis_typeOfFieldLabel(typeOfField):
+ # A field name could identify several MEDCoupling fields, that
+ # differ by their spatial discretization on the mesh (values on
+ # cells, values on nodes, ...). This spatial discretization is
+ # specified (at least) by the TypeOfField that is an integer value
+ # in this list:
+ # 0 = ON_CELLS = OnCell
+ # 1 = ON_NODES = OnPoint
+ # 2 = ON_GAUSS_PT
+ # 3 = ON_GAUSS_NE
+ try:
+ return __mapTypeOfField2ParavisLabel[typeOfField]
+ except IndexError, e:
+ return "UNCKNOWN"
+
+def pvis_scalarmap(filename,meshname,fieldname,typeOfField,iteration=-1):
+ """
+ This is the minimalist function to render a scalar map on a field
+ load from a med file using the PARAVIS module.
+ """
+ import pvsimple
+
+ reader = pvsimple.MEDReader( FileName=filename )
+ # For fiels defined on cells, it seems to be required to specify
+ # the type of fields
+ if typeOfField == MEDCoupling.ON_CELLS:
+ reader.Groups = ["GROUP/%s/%s/No_Group"%(meshname,pvis_typeOfFieldLabel(typeOfField))]
+
+ representation = pvsimple.GetDisplayProperties(reader)
+ representation.ColorArrayName = fieldname
+
+ lookupTable = pvsimple.GetLookupTableForArray(
+ fieldname, 1, NanColor=[0.25, 0.0, 0.0],
+ RGBPoints=[25.0, 0.23, 0.30, 0.754, 245.0, 0.71, 0.016, 0.15],
+ VectorMode='Magnitude', ColorSpace='Diverging', ScalarRangeInitialized=1.0 )
+ representation.LookupTable = lookupTable
+
+ pvsimple.Render()
+
+ return True
+
+
+def TEST_scalarmap():
+ import os
+ from xmed import properties
+ properties.setup(properties.testdata_02) # test with nodes
+ #properties.setup(properties.testdata_03) # test with cells
+ pvis_scalarmap(properties.testFilePath,
+ properties.testMeshName,
+ properties.testFieldName,
+ properties.testTypeOfField,
+ properties.testFieldIt)
+
+if __name__ == "__main__":
+ TEST_scalarmap()
+
+
--- /dev/null
+# -*- coding: iso-8859-1 -*-
+# Copyright (C) 2011 CEA/DEN, EDF R&D, OPEN CASCADE
+#
+# 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.salome-platform.org/ or email : webmaster.salome@opencascade.com
+#
+# Author : Guillaume Boulant (EDF)
+
+import VISU
+import MEDCoupling
+__mapMedType2VisuType={
+ MEDCoupling.ON_CELLS:VISU.CELL,
+ MEDCoupling.ON_NODES:VISU.NODE,
+ MEDCoupling.ON_GAUSS_PT:VISU.TGAUSSPOINTS
+ }
+
+def visu_typeOfField(medTypeOfField):
+ """
+ This function gives the visu type corresponding to the specified
+ med type.
+ """
+ try:
+ return __mapMedType2VisuType[medTypeOfField]
+ except IndexError, e:
+ return "UNCKNOWN"
+
+
+import salome
+from libSALOME_Swig import SALOMEGUI_Swig
+
+def visu_scalarmap(filename,meshname,fieldname,typeOfField,iteration=-1):
+ """
+ This is the minimalist function to render a scalar map on a field
+ load from a med file using the VISU module.
+ """
+
+ # We first have to prepare a pointer to the VISU component engine.
+ visuComp = salome.lcc.FindOrLoadComponent("FactoryServer", "VISU")
+ visuComp.SetCurrentStudy(salome.myStudy)
+
+ visumed = visuComp.CreateResult(filename)
+ visumed.SetBuildGroups(True)
+ visumed.SetBuildFields(True, True)
+ visumed.Build(False, True)
+ if not visumed.IsDone() :
+ print "ERR: can't create a representation of med data"
+ return False
+
+ visuComp.RenameEntityInStudy(visumed, meshname, VISU.NODE, 'onNodes')
+ visuComp.RenameEntityInStudy(visumed, meshname, VISU.CELL, 'onCells')
+
+ visuType = visu_typeOfField(typeOfField)
+ scalarmap = visuComp.ScalarMapOnField(visumed,
+ meshname,
+ visuType,
+ fieldname,
+ iteration)
+ if scalarmap is None:
+ print "ERR: can't create a scalar map"
+ return False
+
+ # __GBO__ maybe it could be appreciated to select the component to
+ # display. In this interface, the modulus of the field is
+ # considered.
+ component = 1
+ scalarmap.SetScalarMode(component)
+ scalarmap.SetSourceRange()
+ scalarmap.SetScaling(VISU.LINEAR)
+ scalarmap.SetTitle(fieldname)
+
+ # This final part is to automatically display the scalar map in a
+ # VISU viewer.
+ sg = SALOMEGUI_Swig()
+ sg.updateObjBrowser(1)
+
+ # Display the scalar map in the viewer
+ myViewManager = visuComp.GetViewManager()
+ myView = myViewManager.Create3DView()
+ myView.Maximize()
+ myView.Display(scalarmap);
+ myView.SetFocalPoint([0,0,0]);
+ myView.FitAll();
+
+ return True
+
+
+def TEST_scalarmap():
+ import os
+ from xmed import properties
+ #properties.setup(properties.testdata_02) # test with nodes
+ properties.setup(properties.testdata_03) # test with cells
+
+ # __GBO__: WARN due to a specific feature of VISU, when only one
+ # field timestamps exists in the med file, we have to specify an
+ # iteration number of 1, whatever the iteration value is in the
+ # med file.
+ #iteration = properties.testFieldIt
+ iteration = 1
+
+ visu_scalarmap(properties.testFilePath,
+ properties.testMeshName,
+ properties.testFieldName,
+ properties.testTypeOfField,
+ iteration)
+
+if __name__ == "__main__":
+ TEST_scalarmap()
--- /dev/null
+# -*- coding: iso-8859-1 -*-
+# Copyright (C) 2011 CEA/DEN, EDF R&D, OPEN CASCADE
+#
+# 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.salome-platform.org/ or email : webmaster.salome@opencascade.com
+#
+# Author : Guillaume Boulant (EDF)
+
+#
+# ===================================================================
+# Th module must be imported as global in the SALOME python console to
+# provide the user with documentation on fields operations.
+# ===================================================================
+#
+
+class UserGuide:
+ """
+ In this python console, you manipulate variables that identifies
+ field objects. These variables are proxy objects towards the real
+ MED fields stored as MEDCoupling instances in the SALOME
+ container.
+
+ What you can do with this proxy object:
+
+ - you can manipulate this object in algebric operations (+,-,*,/):
+ >>> add = f1 + f2
+ >>> dif = f1 - f2
+ >>> mul = f1 * f2
+ >>> div = f1 / f2 (an exception is raised in case of division by 0)
+ >>> square = pow(f1, 2)
+
+ - the operande could be a scalar numerical value:
+ >>> offset = f1 + 4.2
+ >>> scaling = 3.8 * f1
+
+ - any combination of this operations can be done on a single instruction:
+ >>> x = f1 + pow(f2)
+ >>> y = f1 + x - f2
+
+ - you can request some helper functions on this object:
+ >>> doc : print the user documentation for field operations
+ >>> print f : print the main properties of the field f (name, values, ...)
+ >>> f.dup() : create a dublicate of the field f
+ >>> dup(f) : do the same thing
+ >>> f.visu() : display the modulus of this field using VISU post-processor.
+ """
+
+ def __repr__(self):
+ return UserGuide.__doc__
+
+ def __call__(self, command):
+ print "help on command %s"%command
+
+doc=UserGuide()
--- /dev/null
+# -*- coding: iso-8859-1 -*-
+# Copyright (C) 2011 CEA/DEN, EDF R&D, OPEN CASCADE
+#
+# 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.salome-platform.org/ or email : webmaster.salome@opencascade.com
+#
+# Author : Guillaume Boulant (EDF)
+
+import xmed
+import MEDOP
+import SALOME
+
+def newFieldProxy(fieldHandlerId):
+ '''
+ This creates a new FieldProxy wrapping the field whose
+ fieldHandlerId is passed in argument. The function requests the
+ xmedDataManager to get the fieldHandler from its id.
+ '''
+ fieldHandler = xmed.dataManager.getFieldHandler(fieldHandlerId)
+ return FieldProxy(fieldHandler)
+
+# This define the map between attributes of a FieldProxy and those of
+# the associated FieldHandler
+PROXY_ATTRIBUTES_MAP = {"id":None,
+ "fieldseriesId":None,
+ "fieldname":"name",
+ "meshname":None,
+ "meshid":None,
+ "type":None,
+ "iteration":"iteration",
+ "order":"order",
+ "source":"source"}
+
+class FieldProxy:
+ """
+ This object is a proxy to manipulate a remote MEDCoupling field
+ from within the SALOME python interpreter. Remote means that the
+ MEDCoupling field is in the SALOME container and not in the
+ client. See UserGuide class for detailed documentation of what can
+ be done with a field proxy.
+ """
+ def __init__( self, fieldHandler ):
+ """
+ This defines the wrapping on the field specified by its
+ fieldHandler id.
+ """
+ self.__fieldHandler = fieldHandler
+ self.__restriction = None
+ print self.__repr__()
+
+ def __getattr__(self, name ):
+ """
+ This method realizes the read proxy pattern toward the field
+ handler.
+ """
+ # WRN: Note that the modification of this function can lead to
+ # coercion problem. Modify this function with extrem care.
+ return getattr( self.__fieldHandler, name )
+
+ def __setattr__(self, name, value):
+ """
+ This method realizes the write proxy pattern toward the field
+ handler. Only some attributes are writable. The list is
+ specified in the PROXY_ATTRIBUTES_MAP table.
+ """
+ if name in PROXY_ATTRIBUTES_MAP.keys():
+ if PROXY_ATTRIBUTES_MAP[name] is not None:
+ xmed.wrn("The modification of this attribute can't be done that way")
+ msg="Use f.update(%s=\"%s\") instead to ensure synchronisation of data."
+ xmed.inf(msg%(PROXY_ATTRIBUTES_MAP[name],value))
+ else:
+ xmed.err("The modification of the attribute %s is not possible"%name)
+ else:
+ self.__dict__[name] = value
+
+ def __repr__(self):
+ """
+ Return a string containing a printable representation of this
+ object (what is displayed when typing the variable name and
+ carriage return).
+ """
+ # We need first to update the handler because some data can
+ # have changed (the meshid for example in case of change of
+ # underlying mesh).
+ # __GBO__ : TODO check the performance
+ self.__fieldHandler = xmed.dataManager.getFieldHandler(self.id)
+ text = "field name (id)\t = %s (%s)\n"%(self.fieldname, self.id)
+ text+= "mesh name (id) \t = %s (%s)\n"%(self.meshname,self.meshid)
+ text+= "discretization \t = %s\n"%xmed.typeOfFieldLabel(self.type)
+ text+= "(iter, order) \t = (%s,%s)\n"%(str(self.iteration),str(self.order))
+ text+= "data source \t = %s"%self.source
+ return text
+
+ def __str__(self):
+ """
+ This is what is displayed when you type 'print myField'. Note
+ that this function prints the values of the field and then you
+ must be aware that a huge amount of data could be
+ displayed. Moreover, it means that this operation triggers the
+ loading of the associated MEDCouplingFied data in the SALOME
+ container.
+ """
+ text = xmed.dataManager.getFieldRepresentation(self.id)
+ return text
+
+ def __add__(self, operande):
+ """
+ This makes the addition of two fields or the addition of a
+ scalar to a field. It depends weither the operande is a
+ FieldProxy or a simple scalar numerical value.
+ """
+ # The xmed calculator could raise exceptions coming from
+ # MEDCoupling. Note that the fieldproxy instances are used
+ # from within the python console, and for ergonomic reason, we
+ # choose to not raise the possible exceptions to the console
+ # by a clear message. Keep this in mind for unit test. You
+ # have to test the return value, which should not be
+ # null. This principle is applyed for all operations.
+ try:
+ if isinstance(operande, FieldProxy):
+ # The operande is an other field
+ xmed.inf("Addition of %s and %s"%(self.fieldname, operande.fieldname))
+ rfieldHandler = xmed.calculator.add(self.__fieldHandler, operande.__fieldHandler)
+ else:
+ # The operande is a scalar numerical value that must be
+ # considered as an offset in a linear transformation
+ factor = 1
+ offset = operande
+ xmed.inf("Application of the offset %s to %s" % (offset, self.fieldname))
+ rfieldHandler = xmed.calculator.lin(self.__fieldHandler, factor, offset)
+ except SALOME.SALOME_Exception, ex:
+ xmed.err(ex.details.text)
+ return None
+
+ return FieldProxy(rfieldHandler)
+
+ def __radd__(self, operande):
+ """
+ The user typed 'operande+self', we replace by 'self+operande'
+ to automatically activate the __add__ method of fieldpoxy.
+ """
+ return self+operande
+
+ def __iadd__(self, operande):
+ """
+ These methods implements the augmented arithmetic assignments (+=)
+ """
+ xmed.wrn("NOT IMPLEMENTED YET")
+
+ def __sub__(self,operande):
+ """
+ This makes the substraction of two fields or the substraction
+ of a scalar to a field. It depends weither the operande is a
+ FieldProxy or a simple scalar numerical value.
+ """
+ try:
+ if isinstance(operande, FieldProxy):
+ # The operande is an other field
+ xmed.inf("Substraction of %s by %s"%(self.fieldname, operande.fieldname))
+ rfieldHandler = xmed.calculator.sub(self.__fieldHandler, operande.__fieldHandler)
+ else:
+ # The operande is a scalar numerical value that must be
+ # considered as an offset in a linear transformation
+ factor = 1
+ offset = -operande
+ xmed.inf("Application of the offset %s to %s" % (offset, self.fieldname))
+ rfieldHandler = xmed.calculator.lin(self.__fieldHandler, factor, offset)
+ except SALOME.SALOME_Exception, ex:
+ xmed.err(ex.details.text)
+ return None
+
+ return FieldProxy(rfieldHandler)
+
+ def __rsub__(self, operande):
+ """
+ The user typed 'operande-self' where operande is not a field
+ proxy. This function process the situation.
+ """
+ # The operande is a numerical value (because otherwise, the
+ # "sub" method would have been called instead). We may apply
+ # the command '(self-operande)*(-1)' to activate the __sub__
+ # method of fieldpoxy.
+ #
+ #return (self-operande)*(-1)
+ #
+ # We prefer to apply a linear transformation because it can be
+ # done in one single request to the med calculator.
+
+ factor = -1
+ offset = operande
+ xmed.inf("Linear transformation %s%s*%s" % (offset, factor, self.fieldname))
+ try:
+ rfieldHandler = xmed.calculator.lin(self.__fieldHandler, factor, offset)
+ except SALOME.SALOME_Exception, ex:
+ xmed.err(ex.details.text)
+ return None
+
+ return FieldProxy(rfieldHandler)
+
+ def __mul__(self, operande):
+ """
+ This makes the multiplication of two fields or the
+ multiplication of a scalar to a field. It depends weither the
+ operande is a FieldProxy or a simple scalar numerical value.
+ """
+ try:
+ if isinstance(operande, FieldProxy):
+ # The operande is an other field
+ xmed.inf("Multiplication of %s by %s"%(self.fieldname, operande.fieldname))
+ rfieldHandler = xmed.calculator.mul(self.__fieldHandler, operande.__fieldHandler)
+ else:
+ # The operande is a scalar numerical value that must be
+ # considered as an offset in a linear transformation
+ factor = operande
+ offset = 0
+ xmed.inf("Scaling %s by factor %s" % (self.fieldname, factor))
+ rfieldHandler = xmed.calculator.lin(self.__fieldHandler, factor, offset)
+ except SALOME.SALOME_Exception, ex:
+ xmed.err(ex.details.text)
+ return None
+
+ return FieldProxy(rfieldHandler)
+
+ def __rmul__(self, operande):
+ """
+ The user typed 'operande*self', we want to execute
+ 'self*operande' to activate the __mul__ method of fieldpoxy.
+ """
+ return self*operande
+
+ def __div__(self, operande):
+ """
+ This makes the division of two fields or the division of field
+ by a scalar. It depends weither the operande is a FieldProxy
+ or a simple scalar numerical value.
+ """
+ try:
+ if isinstance(operande, FieldProxy):
+ # The operande is an other field
+ xmed.inf("Division of %s by %s"%(self.fieldname, operande.fieldname))
+ rfieldHandler = xmed.calculator.div(self.__fieldHandler, operande.__fieldHandler)
+ else:
+ # The operande is a scalar numerical value that must be
+ # considered as an offset in a linear transformation
+ factor = 1./operande
+ offset = 0
+ xmed.inf("Scaling %s by factor 1/%s" % (self.fieldname, operande))
+ rfieldHandler = xmed.calculator.lin(self.__fieldHandler, factor, offset)
+ except SALOME.SALOME_Exception, ex:
+ xmed.err(ex.details.text)
+ return None
+
+ return FieldProxy(rfieldHandler)
+
+ def __rdiv__(self, operande):
+ """
+ The user typed 'operande/self', we want to execute for each
+ value of the field the operation 'operande/value'.
+ """
+ xmed.inf("Division of %s by %s" % (operande, self.fieldname))
+ function = "%s/u"%operande
+ nbResComp = MEDOP.NBCOMP_DEFAULT
+ try:
+ rfieldHandler = xmed.calculator.fct(self.__fieldHandler,function,nbResComp)
+ except SALOME.SALOME_Exception, ex:
+ xmed.err(ex.details.text)
+ return None
+
+ return FieldProxy(rfieldHandler)
+
+ def __pow__(self, power):
+ """
+ This compute the power of the field to the specified value.
+ """
+ function = "abs(u)^%s"%power
+ return self.ope(function,duplicate=True)
+
+ def __abs__(self):
+ """
+ This compute the absolute value of the field. We use here
+ """
+ return self.ope(function="abs(u)",duplicate=True)
+
+ def __neg__(self):
+ """
+ This computes the negative of this field (when you type -f)
+ """
+ return -1*self
+
+ def dup(self):
+ """
+ This creates a duplicate of the field. The whole data are
+ duplicated.
+ """
+ xmed.inf("Duplication of %s"%self.fieldname)
+ try:
+ rfieldHandler = xmed.calculator.dup(self.__fieldHandler)
+ except SALOME.SALOME_Exception, ex:
+ xmed.err(ex.details.text)
+ return None
+
+ return FieldProxy(rfieldHandler)
+
+ def ope(self, function, duplicate=True):
+ """
+ This can be used to apply a transformation function to this
+ field. The transformation is specified using a literal
+ equation given as a string where u stands for the field.
+ """
+ # _GBO_ TO BE IMPLEMENTED: the case where duplicate = False
+ # must modify the object itself and not create a new field
+ xmed.inf("Operate the equation \"%s\" to %s"%(function,self.fieldname))
+ try:
+ rfieldHandler = xmed.calculator.fct(self.__fieldHandler,
+ function,
+ MEDOP.NBCOMP_DEFAULT)
+ except SALOME.SALOME_Exception, ex:
+ xmed.err(ex.details.text)
+ return None
+
+ return FieldProxy(rfieldHandler)
+
+
+ def __call__(self, restriction=None):
+ """
+ This could be used to return a fieldproxy binded on the same
+ fieldHandler than self, but with options that restrict the
+ usage to a domain specified by the given arguments (restricted
+ to a component, to a part of the mesh, ...).
+ """
+ xmed.wrn("Not implemented yet. Return the field itself")
+ self.__restriction = restriction
+ return self
+
+ def update(self,name=None,iteration=None,order=None,source=None):
+ """
+ This function can be used to update the meta-data associated
+ to this field. It can modify the name, the iteration, the
+ order and the source.
+ """
+ if name is None:
+ name = self.fieldname
+ if iteration is None:
+ iteration = self.iteration
+ if order is None:
+ order = self.order
+ if source is None:
+ source = self.source
+
+ xmed.dataManager.updateFieldMetadata(self.id,name,iteration,order,source)
+ self.__fieldHandler.fieldname = name
+ self.__fieldHandler.iteration = iteration
+ self.__fieldHandler.order = order
+ self.__fieldHandler.source = source
+ # WARN: Note that you have to update directly the fieldHandler
+ # object because of the presence of the method __setattr__
+ # that make the proxy to this update method
+
+ # Finally, we have to notify the GUI for update of field prestations
+ #self.__notifyGui_update()
+ notifyGui_update(self.id)
+
+ # Print for visual control
+ print self.__repr__()
+
+#
+# ===================================================================
+# Functions for events notification
+# ===================================================================
+#
+# Note that these functions are not part of the class FieldProxy so
+# that they could be used in another context than the FieldProxy instances
+import MEDOP
+
+def __notifyGui(type, fieldId):
+ medEvent = MEDOP.MedEvent(type, fieldId)
+
+ if not xmed.eventListenerIsRunning(): return
+
+ # Notify the GUI of the update event
+ xmed.eventListener.processMedEvent(medEvent)
+
+
+def notifyGui_update(fieldId):
+ """
+ This function must be used to notify the GUI that the field
+ meta-data have changed so it could update the gui
+ presentations of this field.
+ """
+ __notifyGui(MEDOP.EVENT_UPDATE_FIELD,fieldId)
+
+def notifyGui_add(fieldId):
+ __notifyGui(MEDOP.EVENT_ADDNEW_FIELD,fieldId)
+
+#
+# ===================================================================
+# use case functions
+# ===================================================================
+#
+
+# ===================================================================
+if __name__ == "__main__":
+ # See test_medoperation.py
+ pass
+
+
+
+
+
--- /dev/null
+# -*- coding: iso-8859-1 -*-
+# Copyright (C) 2011 CEA/DEN, EDF R&D, OPEN CASCADE
+#
+# 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.salome-platform.org/ or email : webmaster.salome@opencascade.com
+#
+# Author : Guillaume Boulant (EDF)
+
+#
+# ===================================================================
+# The functions of this module must be imported as global functions in
+# the SALOME python console. It provides the console context with Tool
+# functions to manipulate field throw there fieldproxy.
+# ===================================================================
+#
+
+import xmed
+from xmed.fieldproxy import FieldProxy, newFieldProxy
+
+# ===================================================================
+# Operations on fields
+
+def dup(aFieldProxy):
+ """
+ This function returns a duplicate of the specified field.
+ It's equivalent to the call '>>> copy = f.dup()'.
+ """
+ try:
+ clone = aFieldProxy.dup()
+ except Exception:
+ print "ERR: the argument can't be duplicated as a field object"
+ return None
+ return clone
+
+# ===================================================================
+# Get list a field with information using the commands ls and/or la
+
+# IMPORTANT NOTE:
+# the pyConsoleGlobals variable should holds the globals() dictionnary of
+# the python console context
+pyConsoleGlobals=None
+
+def status(local=True,remote=False):
+ """
+ This function return the status of the medop context, i.e. the
+ list of fields defined in this python session.
+ """
+ status=""
+ if local is True:
+ dvars = pyConsoleGlobals
+ if dvars is None:
+ xmed.wrn("The stat function required the specification of the python context")
+ xmed.inf("Type this command \"import xmed; xmed.setConsoleGlobals(globals())")
+ if remote is True:
+ status="========= Fields used in the current context ===\n"
+ for varkey in dvars.keys():
+ var = dvars[varkey]
+ if isinstance(var, FieldProxy):
+ status+="%s \t(id=%s, name=%s)\n"%(varkey,var.id,var.fieldname)
+
+ if remote is True:
+ if local is True:
+ status+="\n========= Fields available in the data manager ===\n"
+ fieldHandlerList = xmed.dataManager.getFieldHandlerList()
+ for fieldHandler in fieldHandlerList:
+ status+="id=%s\tname\t= %s\n\tmesh\t= %s\n\t(it,dt)\t= (%s,%s)\n\tsource\t= %s\n"%(
+ fieldHandler.id,
+ fieldHandler.fieldname,
+ fieldHandler.meshname,
+ fieldHandler.iteration,
+ fieldHandler.order,
+ fieldHandler.source)
+ status+="---------\n"
+
+ if len(fieldHandlerList) > 0:
+ status+="(use 'f=get(id)' to get a field in the current context)"
+
+ return status
+
+# For simpler typing, one can create a python command for status
+# (avoid to type "print status()")
+class ListFields(object):
+ """
+ A stat object displays the status of the med operating context, i.e. the
+ list of fields defined in this python session.
+ """
+ def __init__(self,all=False):
+ self.__local = True
+ self.__remote = all
+ # all = True means that the local metadata (fieldproxy) and the
+ # remote metadata on the engine (MEDCouplingFieldDouble) are
+ # displayed by the stat command. Otherwise, only the local
+ # metadata are displayed.
+
+ def __repr__(self):
+ return status(self.__local, self.__remote)
+
+# Creating the commands list (ls) and list all (la)
+ls=ListFields(all=False)
+la=ListFields(all=True)
+
+# ===================================================================
+# Field Data Management
+from xmed import properties
+filepath = properties.testFilePath
+
+def load(medFileName=filepath):
+ """
+ This function indicates that we want to use the fields from the
+ specified med file. The fields meta-data are loaded in the engine
+ part of the module. To get a fieldproxy on a field, call the get
+ function with the id of the required field. To display the whole
+ list of fields loaded in the engine, type 'ls' (la verbose).
+ """
+ xmed.dataManager.addDatasource(filepath)
+ print status(local=False,remote=True)
+
+def get(fieldHandlerId):
+ """
+ This return a field proxy on the field identified by the specified
+ field handler id.
+ """
+ return newFieldProxy(fieldHandlerId)
+
+from xmed.fieldproxy import notifyGui_add
+def put(aFieldProxy):
+ """
+ This function puts a reference to this field in the GUI data
+ model. When a field is referenced in the GUI data model, then it
+ belongs to the workspace. When the workspace is saved, all the
+ field that belongs to the workspace are saved.
+ """
+ xmed.dataManager.markAsPersistent(aFieldProxy.id, True)
+ notifyGui_add(aFieldProxy.id)
+
+import SALOME
+def save(filename):
+ """
+ Dump your job in a med file. Only the fields marked as persistent
+ are saved in the specified file.
+ """
+ try:
+ xmed.dataManager.savePersistentFields(filename)
+ except SALOME.SALOME_Exception, ex:
+ xmed.err(ex.details.text)
+
+# ===================================================================
+# Field Data visualization
+VIEWER_VISU = "VISU"
+VIEWER_PARAVIS = "PARAVIS"
+VIEWER_DEFAULT = VIEWER_VISU
+
+VIEWER_TMP_FILE = "/tmp/medop_viewer.med"
+
+def view_using_paravis(aFieldProxy):
+ # __GBO__ TO BE IMPROVED: we used a tmp file in this first step of
+ # development, but we should used at last a MEDCoupling corba
+ # object (see how to use the stuff in PARAVIS/src/Plugins)
+ xmed.dataManager.saveFields(VIEWER_TMP_FILE, [aFieldProxy.id])
+
+ from xmed.driver_pvis import pvis_scalarmap
+ pvis_scalarmap(VIEWER_TMP_FILE,
+ aFieldProxy.meshname,
+ aFieldProxy.fieldname,
+ aFieldProxy.type,
+ aFieldProxy.iteration)
+
+def view_using_visu(aFieldProxy):
+ # __GBO__ TO BE IMPROVED: we used a tmp file in this first step of
+ # development, but we should used at last a MEDCoupling corba
+ # object (see how to use the stuff in PARAVIS/src/Plugins)
+ xmed.dataManager.saveFields(VIEWER_TMP_FILE, [aFieldProxy.id])
+
+ # __GBO__: WARN due to a specific feature of VISU, when only one
+ # field timestamps exists in the med file, we have to specify an
+ # iteration number of 1, whatever the iteration value is in the
+ # med file.
+ iteration = 1 # __GBO__ for bug VISU
+ # instead of:
+ # iteration = aFieldProxy.iteration
+
+ from xmed.driver_visu import visu_scalarmap
+ result = visu_scalarmap(VIEWER_TMP_FILE,
+ aFieldProxy.meshname,
+ aFieldProxy.fieldname,
+ aFieldProxy.type,
+ iteration)
+ if result is False:
+ xmed.err("the field can't be displayed")
+
+def view(aFieldProxy, using=VIEWER_DEFAULT):
+ """
+ This displays a 3D view of the field using VISU or PARAVIS,
+ depending on the configuration. This view is for quick visual
+ control of a field and is not intended to be parametrizable. For
+ custom display, you should import the fields in VISU or PARAVIS
+ and continue the job in one of this SALOME module.
+ """
+ if using == VIEWER_PARAVIS:
+ view_using_paravis(aFieldProxy)
+ else:
+ view_using_visu(aFieldProxy)
+
--- /dev/null
+# -*- coding: iso-8859-1 -*-
+# Copyright (C) 2011 CEA/DEN, EDF R&D, OPEN CASCADE
+#
+# 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.salome-platform.org/ or email : webmaster.salome@opencascade.com
+#
+# Author : Guillaume Boulant (EDF)
+
+#
+# ===================================================================
+# medop.py is a tools to initialize a python console outside of the
+# GUI for field operations. A salome session must be running
+# first. For example:
+# $ ./runAppli -t
+# $ ./runSession
+# $ python -i path/to/medop.py
+# ===================================================================
+#
+
+import xmed
+# Set the globals dictionnary so that the fields tools work properly.
+xmed.setConsoleGlobals(globals())
+# Import the tools required for field operations
+from xmed import load, get, put, dup, ls, la, save, view, doc, wipe
--- /dev/null
+#!/usr/bin/env python
+# This file defines some properties for test purposes
+
+import os
+
+try:
+ MED_ROOT_DIR=os.environ["MED_ROOT_DIR"]
+except KeyError, e:
+ raise RuntimeError("MED_ROOT_DIR should be defined to load the test data")
+
+RESDIR=os.path.join(MED_ROOT_DIR,"share","salome","resources","med","medop_testfiles")
+
+def testdata_01():
+ testFileName = "testfield.med"
+ testMeshName = "Mesh"
+ testFieldName= "testfield1"
+ testFieldIt = -1
+ testFieldDt = -1
+ testTypeOfField = 0 # On cells
+ return testFileName, testMeshName, testFieldName, testTypeOfField, testFieldIt, testFieldDt
+
+def testdata_02():
+ testFileName = "smallmesh_varfield.med"
+ testMeshName = "My2DMesh"
+ testFieldName= "testfield2"
+ testFieldIt = 1
+ testFieldDt = 1
+ testTypeOfField = 1 # On nodes
+ return testFileName, testMeshName, testFieldName, testTypeOfField, testFieldIt, testFieldDt
+
+def testdata_03():
+ testFileName = "fieldlena.med"
+ testMeshName = "lenamesh"
+ testFieldName= "lenafield"
+ testFieldIt = 3
+ testFieldDt = 0
+ testTypeOfField = 0 # On cells
+ return testFileName, testMeshName, testFieldName, testTypeOfField, testFieldIt, testFieldDt
+
+# Default values
+testdata=testdata_02
+testFileName, testMeshName, testFieldName, testTypeOfField, testFieldIt, testFieldDt = testdata()
+testFilePath = os.path.join(RESDIR,testFileName)
+
+# Setup test values
+def setup(testdata=testdata_02):
+ global testFileName, testMeshName, testFieldName
+ global testFieldIt, testFieldDt, testFilePath, testTypeOfField
+ testFileName, testMeshName, testFieldName, testTypeOfField, testFieldIt, testFieldDt = testdata()
+ testFilePath = os.path.join(RESDIR,testFileName)
+
+def display():
+ """
+ Displays the properties values defined in this script.
+ """
+ print 60*"=" + " Properties values - START"
+ print "MED_ROOT_DIR = ",MED_ROOT_DIR
+ print "RESDIR = ",RESDIR
+ print "testFileName = ",testFileName
+ print "testFilePath = ",testFilePath
+ print 60*"=" + " Properties values - END"
+
+#display()
+
+def getFilePath(filename):
+ """
+ Returns the absolute path for a given file base name. The base
+ name must match with a file contained in the test files directory.
+ """
+ filepath = os.path.join(RESDIR,filename)
+ if not os.path.exists(filepath):
+ raise RuntimeError("The file %s does not exists"%filepath)
+ return filepath
--- /dev/null
+#!/usr/bin/env python
+# -*- coding: iso-8859-1 -*-
+#
+# This file is a set of basic use case to test (from the python
+# context) the functions developped in MED modules for the field
+# operations.
+#
+# (gboulant - 16/6/2011)
+#
+import xmed
+from xmed import properties
+from xmed import fieldproxy
+from xmed.fieldproxy import FieldProxy
+#from xmed.fieldtools import dup, stat, get, save
+#from xmed.fieldguide import doc
+
+# Don't forget to set the globals dictionnary for the fields tools to
+# work properly
+xmed.setConsoleGlobals(globals())
+
+# Load some test data in the MedDataManager
+filepath = properties.testFilePath
+xmed.dataManager.addDatasource(filepath)
+fieldHandlerList = xmed.dataManager.getFieldHandlerList()
+
+def setup():
+ """
+ This function defines a set of field variable for quick tests in
+ the python console. You just have to execute the function to get
+ the variables defined in the global context.
+ """
+ fh1=fieldHandlerList[0]
+ fh2=fieldHandlerList[1]
+ f1 = FieldProxy(fh1)
+ f2 = FieldProxy(fh2)
+ return fh1, fh2, f1, f2
+
+# Setup for quick tests in the python console
+fh1, fh2, f1, f2 = setup()
+
+def TEST_addition():
+ fieldHandler0 = fieldHandlerList[0]
+ fieldHandler1 = fieldHandlerList[1]
+
+ # The addition can be done using field handler directly
+ addFieldHandler = xmed.calculator.add(fieldHandler0, fieldHandler1)
+ print addFieldHandler
+
+ # Or with a field proxy that ease the writing of operations
+ fieldProxy0 = FieldProxy(fieldHandler0)
+ fieldProxy1 = FieldProxy(fieldHandler1)
+
+ res = fieldProxy0 + fieldProxy1
+ if res is None: return False
+
+ return True
+
+def TEST_arithmetics():
+ fieldProxy0 = FieldProxy(fieldHandlerList[0])
+ fieldProxy1 = FieldProxy(fieldHandlerList[1])
+
+ # Standard operations where operandes are fields
+ res = fieldProxy0 + fieldProxy1
+ if res is None: return False
+ res = fieldProxy0 - fieldProxy1
+ if res is None: return False
+ res = fieldProxy0 * fieldProxy1
+ if res is None: return False
+ res = fieldProxy0 / fieldProxy1
+
+ # Standard operations with scalar operandes
+ res = fieldProxy0 + 3.4
+ if res is None: return False
+ res = 3.4 + fieldProxy0
+ if res is None: return False
+ res = fieldProxy0 - 3.4
+ if res is None: return False
+ res = 3.4 - fieldProxy0
+ if res is None: return False
+ res = fieldProxy0 * 3.4
+ if res is None: return False
+ res = 3.4 * fieldProxy0
+ if res is None: return False
+ res = fieldProxy0 / 3.4
+ if res is None: return False
+ res = 3.4 / fieldProxy0
+ if res is None: return False
+
+ return True
+
+def TEST_unary_operations():
+ fieldProxy0 = FieldProxy(fieldHandlerList[0])
+
+ res = fieldProxy0.dup()
+ if res is None: return False
+ res = xmed.dup(fieldProxy0)
+ if res is None: return False
+ res = pow(fieldProxy0,2)
+ if res is None: return False
+
+ return True
+
+def TEST_composition():
+ # In this test, we combine operandes that are supposed
+ # to be compatible. We expect that no error occur.
+ fieldProxy0 = FieldProxy(fieldHandlerList[0])
+ fieldProxy1 = FieldProxy(fieldHandlerList[1])
+
+ res = pow(fieldProxy0,2) + fieldProxy1
+ if res is None: return False
+
+ return True
+
+def TEST_litteral_equation():
+ fieldProxy0 = FieldProxy(fieldHandlerList[0])
+ res = fieldProxy0.ope("abs(u)^2")
+ if res is None: return False
+ return True
+
+def TEST_use_restriction():
+ fieldProxy0 = FieldProxy(fieldHandlerList[0])
+ res = fieldProxy0("c=1;g='toto'")
+ if res is None: return False
+ return True
+
+def TEST_modification_of_attributes():
+ fieldProxy0 = FieldProxy(fieldHandlerList[0])
+ id_ref = fieldProxy0.id
+ fieldname_ref = fieldProxy0.fieldname
+ meshname_ref = fieldProxy0.meshname
+
+ #
+ # This operations are not allowed, or not that way
+ #
+ # This should print that it is not allowed:
+ fieldProxy0.id = id_ref+3
+ if fieldProxy0.id != id_ref:
+ print "ERR: the id should be %d (%d found)"%(id_ref,fieldProxy0.id)
+ return False
+ # This should print that it must be done using the command update
+ fieldProxy0.fieldname = fieldname_ref+"toto"
+ if fieldProxy0.fieldname != fieldname_ref:
+ print "ERR: the fieldname should be %s (%s found)"%(fieldname_ref,fieldProxy0.fieldname)
+ return False
+ # This should print that it is not allowed:
+ fieldProxy0.meshname = meshname_ref+"titi"
+ if fieldProxy0.meshname != meshname_ref:
+ print "ERR: the meshname should be %s (%s found)"%(meshname_ref,fieldProxy0.meshname)
+ return False
+
+ return True
+
+def TEST_update_metadata():
+ fieldProxyRef = FieldProxy(fieldHandlerList[0])
+ id = fieldProxyRef.id
+
+ name_ref = "toto"
+ fieldProxyRef.update(name=name_ref)
+
+ fieldProxyRes = xmed.get(id)
+ name_res = fieldProxyRes.fieldname
+ if name_res != name_ref:
+ print "ERR: the fieldname should be %s (%s found)"%(name_ref,name_res)
+ return False
+ return True
+
+#
+# =============================================================
+# Unit tests
+# =============================================================
+#
+import unittest
+from salome.kernel import pyunittester
+class MyTestSuite(unittest.TestCase):
+ def test_addition(self):
+ result = pyunittester.execAndConvertExceptionToBoolean(TEST_addition)
+ self.assertTrue(result)
+
+ def test_arithmetics(self):
+ result = pyunittester.execAndConvertExceptionToBoolean(TEST_arithmetics)
+ self.assertTrue(result)
+
+ def test_unary_operations(self):
+ result = pyunittester.execAndConvertExceptionToBoolean(TEST_unary_operations)
+ self.assertTrue(result)
+
+ def test_composition(self):
+ result = pyunittester.execAndConvertExceptionToBoolean(TEST_composition)
+ self.assertTrue(result)
+
+ def test_litteral_equation(self):
+ result = pyunittester.execAndConvertExceptionToBoolean(TEST_litteral_equation)
+ self.assertTrue(result)
+
+ def test_modification_of_attributes(self):
+ self.assertTrue(TEST_modification_of_attributes())
+
+ def test_update_metadata(self):
+ self.assertTrue(TEST_update_metadata())
+
+def myunittests():
+ pyunittester.run(MyTestSuite)
+
+def myusecases():
+ TEST_addition()
+ #TEST_arithmetics()
+ #TEST_unary_operations()
+ #TEST_update_metadata()
+ #TEST_composition()
+
+if __name__ == "__main__":
+ #myusecases()
+ myunittests()
+ pass
+
--- /dev/null
+# -*- coding: iso-8859-1 -*-
+# Copyright (C) 2011 CEA/DEN, EDF R&D, OPEN CASCADE
+#
+# 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.salome-platform.org/ or email : webmaster.salome@opencascade.com
+#
+# Author : Guillaume Boulant (EDF)
+
+# This script can be used to test the event listener. Note that the
+# event listener is a CORBA object created inside the XMED GUI and
+# that it could be reached if and only if the XMED GUI is loaded
+# first.
+#
+# Then two tests are defined:
+# - First you can try to import and use this script in the python
+# console while the XMED GUI is NOT loaded. Then you will check that
+# the script detects that the event listener is not available.
+# - Second you can try to import this script AFTER having load the
+# XMED GUI. Then the test will be completed.
+#
+
+import xmed
+xmed.connectEventListener()
+
+if xmed.eventListener is None:
+ raise RuntimeError("The test must stop because the event listener is not defined")
+
+import MEDOP
+
+# We can first try to retrieve the IOR using the data manager (just
+# for internal test because it's not required in the use cases)
+print xmed.dataManager.getEventListenerIOR()
+print xmed.dataManager.getEventListenerIOR()
+print xmed.dataManager.getEventListenerIOR()
+# Make it several time to check the memory releases.
+
+# We can then test the standard use case of the event listener
+fieldHandler = MEDOP.FieldHandler(id = 0,
+ fieldname = "testfield",
+ meshname = "testmesh",
+ type = 0,
+ iteration = 0,
+ order = 0,
+ source = "test//:test_medEventListener.py")
+
+medEvent = MEDOP.MedEvent(type = MEDOP.EVENT_UPDATE_FIELD,
+ fieldid = fieldHandler.id)
+
+print fieldHandler
+print medEvent
+
+xmed.eventListener.processMedEvent(medEvent)
+print "Test completed"
--- /dev/null
+#!/usr/bin/env python
+# -*- coding: iso-8859-1 -*-
+#
+# This file is a set of basic use case to test (from the python
+# context) the functions developped in XMED and MED modules for the
+# visualization of fields using VISU or PARAVIS.
+#
+# (gboulant - 6/7/2011)
+#
+
+import xmed
+from xmed import properties
+from xmed.fieldproxy import FieldProxy
+
+# Load some test data in the MedDataManager
+filepath = properties.testFilePath
+fieldHandlerList = xmed.dataManager.addFieldsFromFile(filepath)
+
+def setup():
+ """
+ This function defines a set of field variable for quick tests in
+ the python console. You just have to execute the function to get
+ the variables defined in the global context.
+ """
+ fh1=fieldHandlerList[0]
+ fh2=fieldHandlerList[1]
+ f1 = FieldProxy(fh1)
+ f2 = FieldProxy(fh2)
+ return fh1, fh2, f1, f2
+
+# Setup for quick tests in the python console
+fh1, fh2, f1, f2 = setup()
+
+def TEST_driver_visu():
+ from xmed import fieldtools
+ fieldtools.view_using_visu(f1)
+
+if __name__ == "__main__":
+ TEST_driver_visu()
# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
#
-ADD_SUBDIRECTORY(Test)
+IF(CPPUNIT_IS_OK)
+ ADD_SUBDIRECTORY(Test)
+ENDIF(CPPUNIT_IS_OK)
INCLUDE_DIRECTORIES(
${PARMETIS_INCLUDE_DIRS}
${METIS_INCLUDE_DIRS}
${SCOTCH_INCLUDE_DIRS}
- ${BOOST_INCLUDE_DIRS}
${METIS_INCLUDE_DIRS}
${LIBXML_INCLUDE_DIRS}
${MED3_INCLUDE_DIRS}
${HDF5_INCLUDE_DIRS}
${MPI_INCLUDE_DIRS}
+ ${PTHREADS_INCLUDE_DIRS}
${CMAKE_CURRENT_SOURCE_DIR}/../MEDLoader
${CMAKE_CURRENT_SOURCE_DIR}/../MEDCoupling
${CMAKE_CURRENT_SOURCE_DIR}/../INTERP_KERNEL
MEDPARTITIONER_SkyLineArray.cxx
)
-SET(medpartitionercpp_DEFINITIONS "${HDF5_DEFINITIONS} ${MED3_DEFINITIONS} ${BOOST_DEFINITIONS} ${LIBXML_DEFINITIONS}")
-SET(medpartitionercpp_LDFLAGS medloader ${LIBXML_LIBS})
-
-IF(MED_ENABLE_SCOTCH)
- SET(medpartitionercpp_SOURCES ${medpartitionercpp_SOURCES} MEDPARTITIONER_ScotchGraph.cxx)
- SET(medpartitionercpp_HEADERS_HXX ${medpartitionercpp_HEADERS_HXX} MEDPARTITIONER_ScotchGraph.hxx)
- SET(medpartitionercpp_DEFINITIONS "${medpartitionercpp_DEFINITIONS} ${SCOTCH_DEFINITIONS}")
- SET(medpartitionercpp_LDFLAGS ${medpartitionercpp_LDFLAGS} ${SCOTCH_LIBS})
-ENDIF(MED_ENABLE_SCOTCH)
-
-IF(MPI_IS_OK)
- IF(MED_ENABLE_PARMETIS)
- SET(medpartitionercpp_SOURCES ${medpartitionercpp_SOURCES} MEDPARTITIONER_ParMetisGraph.cxx
- MEDPARTITIONER_UtilsPara.cxx
- MEDPARTITIONER_JointFinder.cxx
- )
- SET(medpartitionercpp_HEADERS_HXX ${medpartitionercpp_HEADERS_HXX} MEDPARTITIONER_JointFinder.hxx MEDPARTITIONER_MetisGraph.hxx)
- SET(medpartitionercpp_DEFINITIONS "${medpartitionercpp_DEFINITIONS} ${MPI_DEFINITIONS} ${PARMETIS_DEFINITIONS}")
- SET(medpartitionercpp_LDFLAGS ${medpartitionercpp_LDFLAGS} ${PARMETIS_LIBS} ${MPI_LIBS})
- ELSE(MED_ENABLE_PARMETIS)
- SET(medpartitionercpp_SOURCES ${medpartitionercpp_SOURCES}
- MEDPARTITIONER_UtilsPara.cxx
- MEDPARTITIONER_JointFinder.cxx
- )
- SET(medpartitionercpp_DEFINITIONS "${medpartitionercpp_DEFINITIONS} ${MPI_DEFINITIONS}")
- SET(medpartitionercpp_LDFLAGS ${medpartitionercpp_LDFLAGS} ${MPI_LIBS})
- ENDIF(MED_ENABLE_PARMETIS)
-ELSE(MPI_IS_OK)
+SET(medpartitionercpp_DEFINITIONS "${HDF5_DEFINITIONS} ${MED3_DEFINITIONS} ${LIBXML_DEFINITIONS} ${MPI_DEFINITIONS}")
+SET(medpartitionercpp_LDFLAGS
+ ${MED3_LIBS_C_ONLY}
+ ${HDF5_LIBS}
+ ${STDLIB}
+ ${LIBXML_LIBS}
+ ${MPI_LIBS}
+ interpkernel
+ medcoupling
+ medloader
+)
+IF(MED_ENABLE_PARMETIS)
+ SET(medpartitionercpp_HEADERS_HXX ${medpartitionercpp_HEADERS_HXX} MEDPARTITIONER_MetisGraph.hxx)
+ SET(medpartitionercpp_SOURCES ${medpartitionercpp_SOURCES} MEDPARTITIONER_ParMetisGraph.cxx)
+ SET(medpartitionercpp_DEFINITIONS "${medpartitionercpp_DEFINITIONS} ${PARMETIS_DEFINITIONS}")
+ SET(medpartitionercpp_LDFLAGS ${medpartitionercpp_LDFLAGS} ${PARMETIS_LIBS})
+ELSE(MED_ENABLE_PARMETIS)
IF(MED_ENABLE_METIS)
+ SET(medpartitionercpp_HEADERS_HXX ${medpartitionercpp_HEADERS_HXX} MEDPARTITIONER_MetisGraph.hxx)
SET(medpartitionercpp_SOURCES ${medpartitionercpp_SOURCES} MEDPARTITIONER_MetisGraph.cxx)
- SET(medpartitionercpp_HEADERS_HXX ${medpartitionercpp_HEADERS_HXX} MEDPARTITIONER_MetisGraph.hxx)
SET(medpartitionercpp_DEFINITIONS "${medpartitionercpp_DEFINITIONS} ${METIS_DEFINITIONS}")
SET(medpartitionercpp_LDFLAGS ${medpartitionercpp_LDFLAGS} ${METIS_LIBS})
ENDIF(MED_ENABLE_METIS)
-ENDIF(MPI_IS_OK)
-
-
+ IF(MED_ENABLE_SCOTCH)
+ SET(medpartitionercpp_HEADERS_HXX ${medpartitionercpp_HEADERS_HXX} MEDPARTITIONER_ScotchGraph.hxx)
+ SET(medpartitionercpp_SOURCES ${medpartitionercpp_SOURCES} MEDPARTITIONER_ScotchGraph.cxx)
+ SET(medpartitionercpp_DEFINITIONS "${medpartitionercpp_DEFINITIONS} ${SCOTCH_DEFINITIONS}")
+ SET(medpartitionercpp_LDFLAGS ${medpartitionercpp_LDFLAGS} ${SCOTCH_LIBS})
+ ENDIF(MED_ENABLE_SCOTCH)
+ENDIF(MED_ENABLE_PARMETIS)
+
IF(MPI_IS_OK)
+ SET(medpartitionercpp_SOURCES ${medpartitionercpp_SOURCES}
+ MEDPARTITIONER_UtilsPara.cxx
+ MEDPARTITIONER_JointFinder.cxx
+ )
+ENDIF(MPI_IS_OK)
+
+ADD_LIBRARY(medpartitionercpp SHARED ${medpartitionercpp_SOURCES})
+SET_TARGET_PROPERTIES(medpartitionercpp PROPERTIES COMPILE_FLAGS "${PLATFORM_DEFINITIONS} ${medpartitionercpp_DEFINITIONS}")
+TARGET_LINK_LIBRARIES(medpartitionercpp ${medpartitionercpp_LDFLAGS} ${PLATFORM_LIBS} ${PTHREAD_LIBS})
+INSTALL(TARGETS medpartitionercpp DESTINATION ${MED_salomelib_LIBS})
+
+IF(MED_ENABLE_PARMETIS)
ADD_EXECUTABLE(medpartitioner_para medpartitioner_para.cxx)
SET_TARGET_PROPERTIES(medpartitioner_para PROPERTIES COMPILE_FLAGS "${medpartitionercpp_DEFINITIONS}")
- TARGET_LINK_LIBRARIES(medpartitioner_para medpartitionercpp)
+ TARGET_LINK_LIBRARIES(medpartitioner_para medpartitionercpp ${medpartitionercpp_LDFLAGS})
INSTALL(TARGETS medpartitioner_para DESTINATION ${MED_salomebin_BINS})
-ELSE(MPI_IS_OK)
+ELSE(MED_ENABLE_PARMETIS)
ADD_EXECUTABLE(medpartitioner medpartitioner.cxx)
- SET_TARGET_PROPERTIES(medpartitioner PROPERTIES COMPILE_FLAGS "${medpartitionercpp_DEFINITIONS}")
- TARGET_LINK_LIBRARIES(medpartitioner medpartitionercpp)
+ SET_TARGET_PROPERTIES(medpartitioner PROPERTIES COMPILE_FLAGS "${PLATFORM_DEFINITIONS} ${medpartitionercpp_DEFINITIONS}")
+ TARGET_LINK_LIBRARIES(medpartitioner medpartitionercpp ${medpartitionercpp_LDFLAGS})
INSTALL(TARGETS medpartitioner DESTINATION ${MED_salomebin_BINS})
-ENDIF(MPI_IS_OK)
-
-ADD_LIBRARY(medpartitionercpp SHARED ${medpartitionercpp_SOURCES})
-SET_TARGET_PROPERTIES(medpartitionercpp PROPERTIES COMPILE_FLAGS "${medpartitionercpp_DEFINITIONS}")
-TARGET_LINK_LIBRARIES(medpartitionercpp ${medpartitionercpp_LDFLAGS})
-INSTALL(TARGETS medpartitionercpp DESTINATION ${MED_salomelib_LIBS})
+ENDIF(MED_ENABLE_PARMETIS)
INSTALL(FILES ${medpartitionercpp_HEADERS_HXX} DESTINATION ${MED_salomeinclude_HEADERS})
#define __MEDPARTITIONER_HXX__
#ifdef WIN32
-# if defined MEDPARTITIONER_EXPORTS || defined medpartitioner_EXPORTS
+# if defined MEDPARTITIONERCPP_EXPORTS || defined medpartitionercpp_EXPORTS
# define MEDPARTITIONER_EXPORT __declspec( dllexport )
# else
# define MEDPARTITIONER_EXPORT __declspec( dllimport )
${PARMETIS_INCLUDE_DIRS}
${METIS_INCLUDE_DIRS}
${SCOTCH_INCLUDE_DIRS}
- ${BOOST_INCLUDE_DIRS}
+ ${CPPUNIT_INCLUDE_DIRS}
${METIS_INCLUDE_DIRS}
${LIBXML_INCLUDE_DIRS}
${MED3_INCLUDE_DIRS}
MEDPARTITIONERTest.cxx
)
-SET(MEDPARTITIONERTest_DEFINITIONS "${HDF5_DEFINITIONS} ${MED3_DEFINITIONS} ${BOOST_DEFINITIONS} ${LIBXML_DEFINITIONS} ${CPPUNIT_DEFINITIONS}")
+SET(MEDPARTITIONERTest_DEFINITIONS "${HDF5_DEFINITIONS} ${MED3_DEFINITIONS} ${BOOST_DEFINITIONS} ${LIBXML_DEFINITIONS} ${CPPUNIT_DEFINITIONS} ${PLATFORM_DEFINITIONS}")
SET(MEDPARTITIONERTest_LDFLAGS medpartitionercpp ${CPPUNIT_LIBS})
IF(MED_ENABLE_SCOTCH)
# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
#
-ADD_SUBDIRECTORY(Test)
-
+IF(CPPUNIT_IS_OK)
+ ADD_SUBDIRECTORY(Test)
+ENDIF(CPPUNIT_IS_OK)
+
INCLUDE_DIRECTORIES(
${PARMETIS_INCLUDE_DIRS}
${METIS_INCLUDE_DIRS}
MEDSPLITTER_JointExchangeData.cxx
)
-SET(medsplittercpp_DEFINITIONS "${HDF5_DEFINITIONS} ${MED3_DEFINITIONS} ${BOOST_DEFINITIONS} ${LIBXML_DEFINITIONS}")
-SET(medsplittercpp_LDFLAGS medmem ${LIBXML_LIBS})
+SET(medsplittercpp_DEFINITIONS "${HDF5_DEFINITIONS} ${MED3_DEFINITIONS} ${BOOST_DEFINITIONS} ${LIBXML_DEFINITIONS} ${MPI_DEFINITIONS} ${PLATFORM_DEFINITIONS}")
+SET(medsplittercpp_LDFLAGS medmem ${LIBXML_LIBS} interpkernel ${MPI_LIBS} ${HDF5_LIBS} ${MED3_LIBS_C_ONLY} ${STDLIB} ${PLATFORM_LIBS})
IF(MED_ENABLE_SCOTCH)
SET(medsplittercpp_SOURCES ${medsplittercpp_SOURCES} MEDSPLITTER_SCOTCHGraph.cxx)
SET(medsplittercpp_LDFLAGS ${medsplittercpp_LDFLAGS} ${SCOTCH_LIBS})
ENDIF(MED_ENABLE_SCOTCH)
+IF(MED_ENABLE_METIS)
+ SET(medsplittercpp_HEADERS_HXX ${medsplittercpp_HEADERS_HXX} MEDSPLITTER_METISGraph.hxx)
+ENDIF(MED_ENABLE_METIS)
+
IF(MPI_IS_OK)
IF(MED_ENABLE_PARMETIS)
SET(medsplittercpp_SOURCES ${medsplittercpp_SOURCES} MEDSPLITTER_METISGraph.cxx)
- SET(medsplittercpp_HEADERS_HXX ${medsplittercpp_HEADERS_HXX} MEDSPLITTER_METISGraph.hxx)
SET(medsplittercpp_DEFINITIONS "${medsplittercpp_DEFINITIONS} ${MPI_DEFINITIONS} ${PARMETIS_DEFINITIONS}")
- SET(medsplittercpp_LDFLAGS ${medsplittercpp_LDFLAGS} ${PARMETIS_LIBS} ${MPI_LIBS})
+ SET(medsplittercpp_LDFLAGS ${medsplittercpp_LDFLAGS} ${PARMETIS_LIBS})
ENDIF(MED_ENABLE_PARMETIS)
ELSE(MPI_IS_OK)
IF(MED_ENABLE_METIS)
SET(medsplittercpp_SOURCES ${medsplittercpp_SOURCES} MEDSPLITTER_METISGraph.cxx)
- SET(medsplittercpp_HEADERS_HXX ${medsplittercpp_HEADERS_HXX} MEDSPLITTER_METISGraph.hxx)
SET(medsplittercpp_DEFINITIONS "${medsplittercpp_DEFINITIONS} ${METIS_DEFINITIONS}")
SET(medsplittercpp_LDFLAGS ${medsplittercpp_LDFLAGS} ${METIS_LIBS})
ENDIF(MED_ENABLE_METIS)
ENDIF(MPI_IS_OK)
+SET(medsplitter_LDFLAGS ${medsplittercpp_LDFLAGS})
+IF(MED_ENABLE_KERNEL)
+ INCLUDE_DIRECTORIES(${KERNEL_ROOT_DIR}/include/salome)
+ SET(medsplittercpp_LDFLAGS ${medsplittercpp_LDFLAGS} ${BOSST_LIBS} ${SALOMELocalTrace})
+ SET(medsplitter_LDFLAGS ${medsplittercpp_LDFLAGS} ${SALOMEBasics})
+ENDIF(MED_ENABLE_KERNEL)
+
+ADD_EXECUTABLE(medsplitter medsplitter.cxx)
+SET_TARGET_PROPERTIES(medsplitter PROPERTIES COMPILE_FLAGS "${medsplittercpp_DEFINITIONS}")
+TARGET_LINK_LIBRARIES(medsplitter medsplittercpp ${medsplitter_LDFLAGS})
+INSTALL(TARGETS medsplitter DESTINATION ${MED_salomebin_BINS})
IF(MPI_IS_OK)
ADD_EXECUTABLE(medsplitter_para medsplitter_para.cxx)
SET_TARGET_PROPERTIES(medsplitter_para PROPERTIES COMPILE_FLAGS "${medsplittercpp_DEFINITIONS}")
- TARGET_LINK_LIBRARIES(medsplitter_para medsplittercpp)
+ TARGET_LINK_LIBRARIES(medsplitter_para medsplittercpp ${medsplitter_LDFLAGS})
INSTALL(TARGETS medsplitter_para DESTINATION ${MED_salomebin_BINS})
-ELSE(MPI_IS_OK)
- ADD_EXECUTABLE(medsplitter medsplitter.cxx)
- SET_TARGET_PROPERTIES(medsplitter PROPERTIES COMPILE_FLAGS "${medsplittercpp_DEFINITIONS}")
- TARGET_LINK_LIBRARIES(medsplitter medsplittercpp)
- INSTALL(TARGETS medsplitter DESTINATION ${MED_salomebin_BINS})
ENDIF(MPI_IS_OK)
ADD_LIBRARY(medsplittercpp SHARED ${medsplittercpp_SOURCES})
#define MEDSPLITTER_HXX_
#ifdef WIN32
-# if defined MEDSPLITTER_EXPORTS || defined medsplitter_EXPORTS
+# if defined MEDSPLITTERCPP_EXPORTS || defined medsplittercpp_EXPORTS
# define MEDSPLITTER_EXPORT __declspec( dllexport )
# else
# define MEDSPLITTER_EXPORT __declspec( dllimport )
${PARMETIS_INCLUDE_DIRS}
${METIS_INCLUDE_DIRS}
${SCOTCH_INCLUDE_DIRS}
- ${BOOST_INCLUDE_DIRS}
- ${METIS_INCLUDE_DIRS}
+ ${BOOST_INCLUDE_DIRS}
+ ${CPPUNIT_INCLUDE_DIRS}
${LIBXML_INCLUDE_DIRS}
${MED3_INCLUDE_DIRS}
${HDF5_INCLUDE_DIRS}
- ${MPI_INCLUDE_DIRS}
+ ${MPI_INCLUDE_DIRS}
${CMAKE_CURRENT_SOURCE_DIR}/..
${CMAKE_CURRENT_SOURCE_DIR}/../../MEDMEM
${CMAKE_CURRENT_SOURCE_DIR}/../../INTERP_KERNELTest # for BasicMainTest.cxx
${CMAKE_CURRENT_SOURCE_DIR}/../../INTERP_KERNEL/Geometric2D
${CMAKE_CURRENT_SOURCE_DIR}/../../INTERP_KERNEL/ExprEval
${CMAKE_CURRENT_SOURCE_DIR}/../../INTERP_KERNEL/GaussPoints
- )
+)
SET(MEDSPLITTERTest_HEADERS_HXX
MEDSPLITTERTest.hxx
MEDSPLITTERTest_Utils.hxx
MEDSPLITTERTest_defs.hxx
- )
+)
SET(MEDSPLITTERTest_SOURCES
MEDSPLITTERTest.cxx
MEDSPLITTERTest_MESHCollection.cxx
MEDSPLITTERTest_ParallelTopology.cxx
MEDSPLITTERTest_Utils.cxx
- )
-
-SET(MEDSPLITTERTest_DEFINITIONS "${HDF5_DEFINITIONS} ${MED3_DEFINITIONS} ${BOOST_DEFINITIONS} ${LIBXML_DEFINITIONS} ${CPPUNIT_DEFINITIONS}")
-SET(MEDSPLITTERTest_LDFLAGS medsplittercpp ${CPPUNIT_LIBS})
+)
-IF(MED_ENABLE_SCOTCH)
- SET(MEDSPLITTERTest_DEFINITIONS "${MEDSPLITTERTest_DEFINITIONS} ${SCOTCH_DEFINITIONS}")
-ENDIF(MED_ENABLE_SCOTCH)
+SET(MEDSPLITTERTest_DEFINITIONS "${HDF5_DEFINITIONS} ${MED3_DEFINITIONS} ${BOOST_DEFINITIONS} ${LIBXML_DEFINITIONS} ${CPPUNIT_DEFINITIONS} ${MPI_DEFINITIONS} ${PLATFORM_DEFINITIONS}")
+SET(MEDSPLITTERTest_LDFLAGS ${CPPUNIT_LIBS} ${MED3_LIBS_C_ONLY} medsplittercpp)
-IF(MPI_IS_OK)
+IF(MED_ENABLE_PARMETIS)
SET(MEDSPLITTERTest_SOURCES
${MEDSPLITTERTest_SOURCES}
ParaMEDSPLITTERTest_MeshSendReceive.cxx
ParaMEDSPLITTERTest_ParaDomainSelector.cxx
ParaMEDSPLITTERTest_medsplitter_para.cxx
- )
- SET(MEDSPLITTERTest_HEADERS_HXX ${MEDSPLITTERTest_HEADERS_HXX} ParaMEDSPLITTERTest.hxx)
- IF(MED_ENABLE_PARMETIS)
- SET(MEDSPLITTERTest_DEFINITIONS "${MEDSPLITTERTest_DEFINITIONS} ${MPI_DEFINITIONS} ${PARMETIS_DEFINITIONS}")
- ENDIF(MED_ENABLE_PARMETIS)
-ELSE(MPI_IS_OK)
- IF(MED_ENABLE_METIS)
- SET(MEDSPLITTERTest_DEFINITIONS "${MEDSPLITTERTest_DEFINITIONS} ${METIS_DEFINITIONS}")
- ENDIF(MED_ENABLE_METIS)
-ENDIF(MPI_IS_OK)
+ ParaMEDSPLITTERTest.hxx
+ )
+ SET(MEDSPLITTERTest_DEFINITIONS "${MEDSPLITTERTest_DEFINITIONS} ${PARMETIS_DEFINITIONS}")
+ SET(MEDSPLITTERTest_LDFLAGS ${MEDSPLITTERTest_LDFLAGS} ${PARMETIS_LIBS})
+ENDIF(MED_ENABLE_PARMETIS)
+
+IF(MED_ENABLE_METIS)
+ SET(MEDSPLITTERTest_DEFINITIONS "${MEDSPLITTERTest_DEFINITIONS} ${METIS_DEFINITIONS}")
+ SET(MEDSPLITTERTest_LDFLAGS ${MEDSPLITTERTest_LDFLAGS} ${METIS_LIBS})
+ENDIF(MED_ENABLE_METIS)
+
+IF(MED_ENABLE_KERNEL)
+ INCLUDE_DIRECTORIES(${KERNEL_ROOT_DIR}/include/salome)
+ SET(MEDSPLITTERTest_LDFLAGS ${MEDSPLITTERTest_LDFLAGS} ${SALOMELocalTrace})
+ENDIF(MED_ENABLE_KERNEL)
+
+IF(MED_ENABLE_SCOTCH)
+ SET(MEDSPLITTERTest_DEFINITIONS "${MEDSPLITTERTest_DEFINITIONS} ${SCOTCH_DEFINITIONS}")
+ SET(MEDSPLITTERTest_LDFLAGS ${MEDSPLITTERTest_LDFLAGS} ${SCOTCH_LIBS})
+ENDIF(MED_ENABLE_SCOTCH)
+
+SET(SCRIPTS testMEDSPLITTER.py)
+
IF(MPI_IS_OK)
- ADD_EXECUTABLE(TestParaMEDSPLITTER TestParaMEDSPLITTER.cxx)
- SET_TARGET_PROPERTIES(TestParaMEDSPLITTER PROPERTIES COMPILE_FLAGS "${MEDSPLITTERTest_DEFINITIONS}")
- TARGET_LINK_LIBRARIES(TestParaMEDSPLITTER MEDSPLITTERTest)
- INSTALL(TARGETS TestParaMEDSPLITTER DESTINATION ${MED_salomebin_BINS})
-ELSE(MPI_IS_OK)
+ IF(MED_ENABLE_PARMETIS)
+ SET(TestParaMEDSPLITTER_LDFLAGS ${MEDSPLITTERTest_LDFLAGS} MEDSPLITTERTest medmem interpkernel medsplittercpp)
+ SET(SCRIPTS ${SCRIPTS} testMEDSPLITTER.py)
+
+ ADD_EXECUTABLE(TestParaMEDSPLITTER TestParaMEDSPLITTER.cxx)
+ SET_TARGET_PROPERTIES(TestParaMEDSPLITTER PROPERTIES COMPILE_FLAGS "${MEDSPLITTERTest_DEFINITIONS}")
+ TARGET_LINK_LIBRARIES(TestParaMEDSPLITTER ${TestParaMEDSPLITTER_LDFLAGS})
+ INSTALL(TARGETS TestParaMEDSPLITTER DESTINATION ${MED_salomebin_BINS})
+ ENDIF(MED_ENABLE_PARMETIS)
+ELSE(MPI_IS_OK)
IF(MED_ENABLE_METIS)
+ SET(TestMEDSPLITTER_LDFLAGS ${MEDSPLITTERTest_LDFLAGSS} MEDSPLITTERTest medmem interpkernel medsplittercpp)
+ IF(MED_ENABLE_KERNEL)
+ SET(MEDSPLITTERTest_LDFLAGS ${MEDSPLITTERTest_LDFLAGS} ${SALOMEBasics})
+ ENDIF(MED_ENABLE_KERNEL)
+
ADD_EXECUTABLE(TestMEDSPLITTER TestMEDSPLITTER.cxx)
SET_TARGET_PROPERTIES(TestMEDSPLITTER PROPERTIES COMPILE_FLAGS "${MEDSPLITTERTest_DEFINITIONS}")
- TARGET_LINK_LIBRARIES(TestMEDSPLITTER MEDSPLITTERTest)
+ TARGET_LINK_LIBRARIES(TestMEDSPLITTER ${TestMEDSPLITTER_LDFLAGS})
INSTALL(TARGETS TestMEDSPLITTER DESTINATION ${MED_salomebin_BINS})
ENDIF(MED_ENABLE_METIS)
ENDIF(MPI_IS_OK)
-
+
ADD_LIBRARY(MEDSPLITTERTest SHARED ${MEDSPLITTERTest_SOURCES})
SET_TARGET_PROPERTIES(MEDSPLITTERTest PROPERTIES COMPILE_FLAGS "${MEDSPLITTERTest_DEFINITIONS}")
TARGET_LINK_LIBRARIES(MEDSPLITTERTest ${MEDSPLITTERTest_LDFLAGS})
INSTALL(TARGETS MEDSPLITTERTest DESTINATION ${MED_salomelib_LIBS})
INSTALL(FILES ${MEDSPLITTERTest_HEADERS_HXX} DESTINATION ${MED_salomeinclude_HEADERS})
+INSTALL(FILES ${SCRIPTS} DESTINATION ${MED_salomebin_BINS})
if MED_ENABLE_PARMETIS
PARA_BIN_TEST_PROGS = TestParaMEDSPLITTER
TestParaMEDSPLITTER_SOURCES= TestParaMEDSPLITTER.cxx
- TestParaMEDSPLITTER_CPPFLAGS = $(TestMEDSPLITTER_CPPFLAGS) $(MPI_INCLUDES)
+ TestParaMEDSPLITTER_CPPFLAGS = $(TestMEDSPLITTER_CPPFLAGS) $(MPI_INCLUDES) $(CPPUNIT_INCLUDES)
TestParaMEDSPLITTER_CXXFLAGS = @CXXTMPDPTHFLAGS@
TestParaMEDSPLITTER_LDADD = $(MED3_LIBS_C_ONLY) $(libMEDSPLITTERTest_la_LDFLAGS) -lm \
libMEDSPLITTERTest.la \
# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
#
-INCLUDE(${KERNEL_ROOT_DIR}/salome_adm/cmake_files/InstallAndCompilePythonFile.cmake)
FIND_PACKAGE(SWIG REQUIRED)
INCLUDE(${SWIG_USE_FILE})
)
SWIG_ADD_MODULE(libMEDSPLITTER_Swig python libMEDSPLITTER_Swig.i)
-SWIG_LINK_LIBRARIES(libMEDSPLITTER_Swig ${PYTHON_LIBRARIES} medsplittercpp)
-SET_TARGET_PROPERTIES(_libMEDSPLITTER_Swig PROPERTIES COMPILE_FLAGS "${BOOST_DEFINITIONS}")
-
+SWIG_LINK_LIBRARIES(libMEDSPLITTER_Swig ${PYTHON_LIBS} medsplittercpp)
+SET_TARGET_PROPERTIES(_libMEDSPLITTER_Swig PROPERTIES COMPILE_FLAGS "${BOOST_DEFINITIONS} ${PLATFORM_DEFINITIONS}")
+IF(${MACHINE} STREQUAL WINDOWS)
+ SET_TARGET_PROPERTIES(_libMEDSPLITTER_Swig PROPERTIES DEBUG_OUTPUT_NAME _libMEDSPLITTER_Swig_d)
+ENDIF(${MACHINE} STREQUAL WINDOWS)
INSTALL(TARGETS _libMEDSPLITTER_Swig DESTINATION ${MED_salomepythondir})
INSTALL(FILES libMEDSPLITTER_Swig.i DESTINATION ${MED_salomeinclude_HEADERS})
-INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/libMEDSPLITTER_Swig.py MEDSPLITTER.py test_MEDSPLITTER.py DESTINATION ${MED_salomescript_PYTHON})
-INSTALL_AND_COMPILE_PYTHON_FILE(${CMAKE_CURRENT_SOURCE_DIR}/MEDSPLITTER.py ${MED_salomescript_PYTHON})
+INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/libMEDSPLITTER_Swig.py DESTINATION ${MED_salomepythondir})
+INSTALL(FILES MEDSPLITTER.py test_MEDSPLITTER.py DESTINATION ${MED_salomescript_DATA})
INCLUDE_DIRECTORIES(
${HDF5_INCLUDE_DIRS}
${BOOST_INCLUDE_DIRS}
- ${KERNEL_ROOT_DIR}/include/salome
- )
+)
+
+IF(MED_ENABLE_KERNEL)
+ INCLUDE_DIRECTORIES(${KERNEL_ROOT_DIR}/include/salome)
+ELSE(MED_ENABLE_KERNEL)
+ INCLUDE_DIRECTORIES(${CMAKE_BINARY_DIR}/adm_local_without_kernel)
+ENDIF(MED_ENABLE_KERNEL)
SET(MEDWrapperBase_SOURCES
MED_Structures.cxx
)
ADD_LIBRARY(MEDWrapperBase SHARED ${MEDWrapperBase_SOURCES})
-SET_TARGET_PROPERTIES(MEDWrapperBase PROPERTIES COMPILE_FLAGS "-D${MACHINE} ${HDF5_DEFINITIONS} ${BOOST_DEFINITIONS}")
+SET_TARGET_PROPERTIES(MEDWrapperBase PROPERTIES COMPILE_FLAGS "-D${MACHINE} ${HDF5_DEFINITIONS} ${BOOST_DEFINITIONS} ${PLATFORM_DEFINITIONS}")
TARGET_LINK_LIBRARIES(MEDWrapperBase ${BOOST_LIB_THREAD} ${BOOST_LIB_DATE_TIME})
INSTALL(TARGETS MEDWrapperBase DESTINATION ${MED_salomelib_LIBS})
#include "MED_SharedPtr.hxx"
#include "MED_SliceArray.hxx"
-#ifdef WNT
+#ifdef WIN32
#pragma warning(disable:4099)
#endif
#ifndef MED_SliceArray_HeaderFile
#define MED_SliceArray_HeaderFile
-#ifdef WNT // for correctly compiling "valarray" in modules, which are includes this file
+#ifdef WIN32 // for correctly compiling "valarray" in modules, which are includes this file
#undef max
#undef min
#endif
#include "MED_Common.hxx"
#include "MED_Utilities.hxx"
-#ifdef WNT
+#ifdef WIN32
#pragma warning(disable:4251)
#endif
#include "MED_Structures.hxx"
-#ifdef WNT
+#ifdef WIN32
#pragma warning(disable:4250)
#endif
#ifndef _MED_WrapperBase_HXX_
#define _MED_WrapperBase_HXX_
-#ifdef WNT
+#ifdef WIN32
#if defined MEDWRAPPER_BASE_EXPORTS || defined MEDWrapperBase_EXPORTS
#if defined WIN32
#define MEDWRAPPER_EXPORT __declspec( dllexport )
${BOOST_INCLUDE_DIRS}
${MED3_INCLUDE_DIRS}
${CMAKE_CURRENT_SOURCE_DIR}/../Base
- ${CMAKE_CURRENT_SOURCE_DIR}/../V2_1/Wrapper
${CMAKE_CURRENT_SOURCE_DIR}/../V2_2
)
IF(MED_ENABLE_KERNEL)
INCLUDE_DIRECTORIES(${KERNEL_ROOT_DIR}/include/salome)
ELSE(MED_ENABLE_KERNEL)
- INCLUDE_DIRECTORIES(${CMAKE_BINARY_DIR}/adm_local_without_kernel/unix)
+ INCLUDE_DIRECTORIES(${CMAKE_BINARY_DIR}/adm_local_without_kernel)
ENDIF(MED_ENABLE_KERNEL)
SET(MEDWrapper_SOURCES
MED_Factory.cxx
- )
+)
SET(mprint_version_SOURCES
mprint_version.cxx
)
ADD_LIBRARY(MEDWrapper SHARED ${MEDWrapper_SOURCES})
-SET_TARGET_PROPERTIES(MEDWrapper PROPERTIES COMPILE_FLAGS "${BOOST_DEFINITIONS} ${MED3_DEFINITIONS}")
-TARGET_LINK_LIBRARIES(MEDWrapper MEDWrapperBase MEDWrapper_V2_1 MEDWrapper_V2_2)
+SET_TARGET_PROPERTIES(MEDWrapper PROPERTIES COMPILE_FLAGS "${BOOST_DEFINITIONS} ${MED3_DEFINITIONS} ${PLATFORM_DEFINITIONS}")
+TARGET_LINK_LIBRARIES(MEDWrapper MEDWrapper_V2_2)
INSTALL(TARGETS MEDWrapper DESTINATION ${MED_salomelib_LIBS})
ADD_EXECUTABLE(mprint_version ${mprint_version_SOURCES})
-SET_TARGET_PROPERTIES(mprint_version PROPERTIES COMPILE_FLAGS "${BOOST_DEFINITIONS} ${MED3_DEFINITIONS}")
-TARGET_LINK_LIBRARIES(mprint_version MEDWrapper)
+SET_TARGET_PROPERTIES(mprint_version PROPERTIES COMPILE_FLAGS "${BOOST_DEFINITIONS} ${MED3_DEFINITIONS} ${PLATFORM_DEFINITIONS}")
+TARGET_LINK_LIBRARIES(mprint_version MEDWrapper MEDWrapper_V2_2 MEDWrapperBase ${BOOST_LIBS} ${MED3_LIBS_C_ONLY})
+
+ADD_EXECUTABLE(MED_Test ${mprint_version_SOURCES})
+SET_TARGET_PROPERTIES(MED_Test PROPERTIES COMPILE_FLAGS "${BOOST_DEFINITIONS} ${MED3_DEFINITIONS} ${PLATFORM_DEFINITIONS}")
+TARGET_LINK_LIBRARIES(MED_Test MEDWrapper MEDWrapper_V2_2 MEDWrapperBase ${BOOST_LIBS})
FILE(GLOB MEDWrapper_HEADERS_HXX "${CMAKE_CURRENT_SOURCE_DIR}/*.hxx")
INSTALL(FILES ${MEDWrapper_HEADERS_HXX} DESTINATION ${MED_salomeinclude_HEADERS})
-INSTALL(TARGETS mprint_version DESTINATION ${MED_salomebin_BINS})
\ No newline at end of file
+INSTALL(TARGETS mprint_version MED_Test DESTINATION ${MED_salomebin_BINS})
CopyMed(theFileName,theFileName2,theVersion,theNbCopy);
}
-#ifdef WNT
+#ifdef WIN32
#pragma warning(disable:4101) // exc unreferenced ... ??
#endif
#ifndef _MED_WrapperFactory_HXX_
#define _MED_WrapperFactory_HXX_
-#ifdef WNT
+#ifdef WIN32
#if defined MEDWRAPPER_FACTORY_EXPORTS || defined MEDWrapper_EXPORTS
#if defined WIN32
#define MEDWRAPPER_FACTORY_EXPORT __declspec( dllexport )
include $(top_srcdir)/adm_local/unix/make_common_starter.am
-# if without KERNEL, build only med 2.1 library
if MED_ENABLE_KERNEL
SUBDIRS = Base V2_2 Factory
else !MED_ENABLE_KERNEL
IF(MED_ENABLE_KERNEL)
INCLUDE_DIRECTORIES(${KERNEL_ROOT_DIR}/include/salome)
ELSE(MED_ENABLE_KERNEL)
- INCLUDE_DIRECTORIES(${CMAKE_BINARY_DIR}/adm_local_without_kernel/unix)
+ INCLUDE_DIRECTORIES(${CMAKE_BINARY_DIR}/adm_local_without_kernel)
ENDIF(MED_ENABLE_KERNEL)
ADD_LIBRARY(MEDWrapper_V2_2 SHARED ${MEDWrapper_V2_2_SOURCES})
-SET_TARGET_PROPERTIES(MEDWrapper_V2_2 PROPERTIES COMPILE_FLAGS "${HDF5_DEFINITIONS} ${MED3_DEFINITIONS} ${BOOST_DEFINITIONS}")
+SET_TARGET_PROPERTIES(MEDWrapper_V2_2 PROPERTIES COMPILE_FLAGS "${HDF5_DEFINITIONS} ${MED3_DEFINITIONS} ${BOOST_DEFINITIONS} ${PLATFORM_DEFINITIONS}")
TARGET_LINK_LIBRARIES(MEDWrapper_V2_2 MEDWrapperBase ${MED3_LIBS_C_ONLY} ${HDF5_LIBS})
INSTALL(TARGETS MEDWrapper_V2_2 DESTINATION ${MED_salomelib_LIBS})
#ifndef MED_V2_2_Wrapper_HeaderFile
#define MED_V2_2_Wrapper_HeaderFile
-#ifdef WNT
+#ifdef WIN32
#if defined MEDWRAPPER_V2_2_EXPORTS || defined MEDWrapper_V2_2_EXPORTS
#if defined WIN32
#define MED_V22_WRAPPER_EXPORT __declspec( dllexport )
# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
#
-INSTALL(FILES MED_shared_modules.py DESTINATION ${MED_salomescript_PYTHON})
+INSTALL(FILES MED_shared_modules.py DESTINATION ${MED_sharedpkgpython_PYTHON})
endif
if MED_ENABLE_GUI
- GUI_SUBDIRS = MEDGUI
+ GUI_SUBDIRS = MEDGUI MEDOP
endif
endif
MEDMEMBinTest MEDMEMCppTest INTERP_KERNELTest ParaMEDMEM ParaMEDMEM_Swig MEDLoader \
MEDSPLITTER MEDSPLITTER_Swig MEDPartitioner RENUMBER MEDCouplingCorba MEDCouplingCorba_Swig \
MEDMEM_I MED MED_SWIG MedCorba_Swig ParaMEDLoader MedClient ParaMEDMEMComponent \
- ParaMEDCouplingCorba MEDCalculator MEDGUI ParaMEDMEMTest
+ ParaMEDCouplingCorba MEDCalculator MEDGUI MEDOP ParaMEDMEMTest
# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
#
-INCLUDE(${KERNEL_ROOT_DIR}/salome_adm/cmake_files/InstallAndCompilePythonFile.cmake)
+INCLUDE(${SALOME_MACROS_DIR}/InstallAndCompilePythonFile.cmake)
FIND_PACKAGE(SWIG REQUIRED)
INCLUDE(${SWIG_USE_FILE})
INCLUDE_DIRECTORIES(
${PYTHON_INCLUDE_DIRS}
+ ${PTHREAD_INCLUDE_DIRS}
${OMNIORB_INCLUDE_DIRS}
${MED3_INCLUDE_DIRS}
${HDF5_INCLUDE_DIRS}
ADD_LIBRARY(MEDClientcmodule SHARED ${MEDClientcmodule_SOURCES})
INSTALL(FILES libMEDClient.i DESTINATION ${MED_salomeinclude_HEADERS})
-SET_TARGET_PROPERTIES(MEDClientcmodule PROPERTIES COMPILE_FLAGS "${OMNIORB_DEFINITIONS} ${HDF5_DEFINITIONS} ${MED3_DEFINITIONS} ${XDR_DEFINITIONS}")
-TARGET_LINK_LIBRARIES(MEDClientcmodule MEDMEMImpl MEDEngine)
+SET_TARGET_PROPERTIES(MEDClientcmodule PROPERTIES COMPILE_FLAGS "${OMNIORB_DEFINITIONS} ${HDF5_DEFINITIONS} ${MED3_DEFINITIONS} ${XDR_DEFINITIONS} ${PLATFORM_DEFINITIONS}")
+TARGET_LINK_LIBRARIES(MEDClientcmodule MEDMEMImpl MEDEngine ${PTHREAD_LIBS})
INSTALL(TARGETS MEDClientcmodule DESTINATION ${MED_salomelib_LIBS})
SWIG_ADD_MODULE(libMEDClient python libMEDClient.i)
-SWIG_LINK_LIBRARIES(libMEDClient ${PYTHON_LIBRARIES} MEDClientcmodule)
-SET_TARGET_PROPERTIES(_libMEDClient PROPERTIES COMPILE_FLAGS "${OMNIORB_DEFINITIONS} ${HDF5_DEFINITIONS} ${MED3_DEFINITIONS} ${XDR_DEFINITIONS}")
+SWIG_LINK_LIBRARIES(libMEDClient ${PYTHON_LIBS} MEDClientcmodule)
+SET_TARGET_PROPERTIES(_libMEDClient PROPERTIES COMPILE_FLAGS "${OMNIORB_DEFINITIONS} ${HDF5_DEFINITIONS} ${MED3_DEFINITIONS} ${XDR_DEFINITIONS} ${PLATFORM_DEFINITIONS}")
+
+IF(${MACHINE} STREQUAL WINDOWS)
+ SET_TARGET_PROPERTIES(_libMEDClient PROPERTIES DEBUG_OUTPUT_NAME _libMEDClient_d)
+ENDIF(${MACHINE} STREQUAL WINDOWS)
INSTALL(TARGETS _libMEDClient DESTINATION ${MED_salomepythondir})
INSTALL_AND_COMPILE_PYTHON_FILE(${CMAKE_CURRENT_BINARY_DIR}/libMEDClient.py ${MED_salomescript_PYTHON})
#ifndef _MEDCLIENT_HXX_
#define _MEDCLIENT_HXX_
-#ifdef WNT
+#ifdef WIN32
# if defined MEDCLIENT_EXPORTS || defined MEDClientcmodule_EXPORTS
# define MEDCLIENT_EXPORT __declspec( dllexport )
# else
ADD_SUBDIRECTORY(csh)
-SET(MedClientTestsConfig runTestMedCorba runContainer)
+SET(MedClientTestsConfig
+# runTestMedCorba
+ runContainer
+)
FOREACH(MedClientTestConfig ${MedClientTestsConfig})
SET(input ${CMAKE_CURRENT_SOURCE_DIR}/${MedClientTestConfig}.in)
# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
#
-INCLUDE(${KERNEL_ROOT_DIR}/salome_adm/cmake_files/InstallAndCompilePythonFile.cmake)
+INCLUDE(${SALOME_MACROS_DIR}/InstallAndCompilePythonFile.cmake)
FIND_PACKAGE(SWIG REQUIRED)
INCLUDE(${SWIG_USE_FILE})
INCLUDE_DIRECTORIES(
${PYTHON_INCLUDE_DIRS}
+ ${PTHREAD_INCLUDE_DIRS}
${OMNIORB_INCLUDE_DIRS}
${MED3_INCLUDE_DIRS}
${HDF5_INCLUDE_DIRS}
SET_SOURCE_FILES_PROPERTIES(libCompo2.i PROPERTIES SWIG_DEFINITIONS "-shadow")
SWIG_ADD_MODULE(libCompo2 python libCompo2.i Compo2.cxx)
-SWIG_LINK_LIBRARIES(libCompo2 ${PYTHON_LIBRARIES} MEDClientcmodule)
-SET_TARGET_PROPERTIES(_libCompo2 PROPERTIES COMPILE_FLAGS "${OMNIORB_DEFINITIONS} ${HDF5_DEFINITIONS} ${MED3_DEFINITIONS} ${XDR_DEFINITIONS}")
+SWIG_LINK_LIBRARIES(libCompo2 ${PYTHON_LIBS} MEDClientcmodule)
+SET_TARGET_PROPERTIES(_libCompo2 PROPERTIES COMPILE_FLAGS "${OMNIORB_DEFINITIONS} ${HDF5_DEFINITIONS} ${MED3_DEFINITIONS} ${XDR_DEFINITIONS} ${PLATFORM_DEFINITIONS}")
+
+IF(${MACHINE} STREQUAL WINDOWS)
+ SET_TARGET_PROPERTIES(_libCompo2 PROPERTIES DEBUG_OUTPUT_NAME _libCompo2_d)
+ENDIF(${MACHINE} STREQUAL WINDOWS)
+
INSTALL(TARGETS _libCompo2 DESTINATION ${MED_salomepythondir})
INSTALL_AND_COMPILE_PYTHON_FILE(${CMAKE_CURRENT_BINARY_DIR}/libCompo2.py ${MED_salomescript_PYTHON})
INCLUDE_DIRECTORIES(
${PYTHON_INCLUDE_DIRS}
+ ${PTHREAD_INCLUDE_DIRS}
${OMNIORB_INCLUDE_DIRS}
${MED3_INCLUDE_DIRS}
${HDF5_INCLUDE_DIRS}
)
SWIG_ADD_MODULE(libMedCorba_Swig python libMedCorba_Swig.i)
-SWIG_LINK_LIBRARIES(libMedCorba_Swig ${PYTHON_LIBRARIES} MEDMEMImpl MEDEngine)
-SET_TARGET_PROPERTIES(_libMedCorba_Swig PROPERTIES COMPILE_FLAGS "${OMNIORB_DEFINITIONS} ${HDF5_DEFINITIONS} ${MED3_DEFINITIONS} ${XDR_DEFINITIONS}")
+SWIG_LINK_LIBRARIES(libMedCorba_Swig ${PYTHON_LIBS} MEDMEMImpl MEDEngine ${PLATFORM_LIBS})
+SET_TARGET_PROPERTIES(_libMedCorba_Swig PROPERTIES COMPILE_FLAGS "${OMNIORB_DEFINITIONS} ${HDF5_DEFINITIONS} ${MED3_DEFINITIONS} ${XDR_DEFINITIONS} ${PLATFORM_DEFINITIONS}")
SET(MED_MedCorba_Swig_salomescript_DATA
medcorba_test.py batchmode_medcorba_test.py batchmode_medcorba_test1.py
)
+IF(${MACHINE} STREQUAL WINDOWS)
+ SET_TARGET_PROPERTIES(_libMedCorba_Swig PROPERTIES DEBUG_OUTPUT_NAME _libMedCorba_Swig_d)
+ENDIF(${MACHINE} STREQUAL WINDOWS)
INSTALL(TARGETS _libMedCorba_Swig DESTINATION ${MED_salomepythondir})
INSTALL(FILES libMedCorba_Swig.i DESTINATION ${MED_salomeinclude_HEADERS})
INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/libMedCorba_Swig.py DESTINATION ${MED_salomescript_PYTHON})
#
# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
#
+# Author : Anthony Geay (CEA/DEN)
INCLUDE_DIRECTORIES(
${MPI_INCLUDE_DIRS}
ADD_LIBRARY(paramedloader SHARED ${paramedloader_SOURCES})
SET_TARGET_PROPERTIES(paramedloader PROPERTIES COMPILE_FLAGS "${HDF5_DEFINITIONS} ${MED3_DEFINITIONS}")
-TARGET_LINK_LIBRARIES(paramedloader paramedmem medloader)
+TARGET_LINK_LIBRARIES(paramedloader paramedmem medloader ${PLATFORM_LIBS})
INSTALL(TARGETS paramedloader DESTINATION ${MED_salomelib_LIBS})
FILE(GLOB paramedloader_HEADERS_HXX "${CMAKE_CURRENT_SOURCE_DIR}/*.hxx")
#
# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
#
+# Author : Anthony Geay (CEA/DEN)
include $(top_srcdir)/adm_local/unix/make_common_starter.am
//
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
+// Author : Anthony Geay (CEA/DEN)
#include "ParaMEDLoader.hxx"
#include "MEDLoader.hxx"
//
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
+// Author : Anthony Geay (CEA/DEN)
#ifndef __PARAMEDLOADER_HXX__
#define __PARAMEDLOADER_HXX__
#
# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
#
+# Author : Anthony Geay (CEA/DEN)
INCLUDE_DIRECTORIES(
${MPI_INCLUDE_DIRS}
//
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
+// Author : Anthony Geay (CEA/DEN)
#include "OverlapDEC.hxx"
#include "CommInterface.hxx"
//
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
+// Author : Anthony Geay (CEA/DEN)
#ifndef __OVERLAPDEC_HXX__
#define __OVERLAPDEC_HXX__
//
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
+// Author : Anthony Geay (CEA/DEN)
#include "OverlapElementLocator.hxx"
//
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
+// Author : Anthony Geay (CEA/DEN)
#ifndef __OVERLAPELEMENTLOCATOR_HXX__
#define __OVERLAPELEMENTLOCATOR_HXX__
//
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
+// Author : Anthony Geay (CEA/DEN)
#include "OverlapInterpolationMatrix.hxx"
#include "ParaMESH.hxx"
//
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
+// Author : Anthony Geay (CEA/DEN)
#ifndef __OVERLAPINTERPOLATIONMATRIX_HXX__
#define __OVERLAPINTERPOLATIONMATRIX_HXX__
//
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
+// Author : Anthony Geay (CEA/DEN)
#include "OverlapMapping.hxx"
#include "MPIProcessorGroup.hxx"
//
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
+// Author : Anthony Geay (CEA/DEN)
#ifndef __OVERLAPMAPPING_HXX__
#define __OVERLAPMAPPING_HXX__
ENDFOREACH(bintestparamem ${TESTSParaMEDMEM})
INSTALL(TARGETS ${TESTSParaMEDMEM} DESTINATION ${MED_salomebin_BINS})
+SET(COMMON_HEADERS_HXX
+ MPIMainTest.hxx
+ MPIAccessDECTest.hxx
+ MPIAccessTest.hxx
+ ParaMEDMEMTest.hxx
+ MPI2Connector.hxx
+)
+INSTALL(FILES ${COMMON_HEADERS_HXX} DESTINATION ${MED_salomeinclude_HEADERS})
+
+
\ No newline at end of file
# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
#
-INCLUDE(${KERNEL_ROOT_DIR}/salome_adm/cmake_files/InstallAndCompilePythonFile.cmake)
+INCLUDE(${SALOME_MACROS_DIR}/InstallAndCompilePythonFile.cmake)
FIND_PACKAGE(SWIG REQUIRED)
INCLUDE(${SWIG_USE_FILE})
)
SWIG_ADD_MODULE(ParaMEDMEM python ParaMEDMEM.i)
-SWIG_LINK_LIBRARIES(ParaMEDMEM ${PYTHON_LIBRARIES} paramedmem medloader)
+SWIG_LINK_LIBRARIES(ParaMEDMEM ${PYTHON_LIBS} paramedmem medloader)
SET_SOURCE_FILES_PROPERTIES(ParaMEDMEM.i PROPERTIES CPLUSPLUS ON)
SET_SOURCE_FILES_PROPERTIES(ParaMEDMEM.i PROPERTIES SWIG_DEFINITIONS "-shadow")
INSTALL(TARGETS _ParaMEDMEM DESTINATION ${MED_salomepythondir})
INSTALL(FILES ParaMEDMEM.i DESTINATION ${MED_salomeinclude_HEADERS})
-INSTALL_AND_COMPILE_PYTHON_FILE(${CMAKE_CURRENT_BINARY_DIR}/ParaMEDMEM.py ${MED_salomescript_PYTHON})
+INSTALL_AND_COMPILE_PYTHON_FILE(${CMAKE_CURRENT_BINARY_DIR}/ParaMEDMEM.py ${MED_salomepythondir})
+INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/ParaMEDMEM.py test_InterpKernelDEC.py test_NonCoincidentDEC.py test_StructuredCoincidentDEC.py DESTINATION ${MED_salomescript_PYTHON})
\ No newline at end of file
)
SET(renumbercpp_LDFLAGS medmem)
-SET(renumber_DEFINITIONS "${HDF5_DEFINITIONS} ${MED3_DEFINITIONS} ${BOOST_DEFINITIONS}")
+SET(renumber_DEFINITIONS "${HDF5_DEFINITIONS} ${MED3_DEFINITIONS} ${BOOST_DEFINITIONS} ${PLATFORM_DEFINITIONS}")
IF(MED_ENABLE_METIS)
SET(renumbercpp_SOURCES ${renumbercpp_SOURCES} RENUMBER_METISRenumbering.cxx)
//export symbols
#ifdef WIN32
-# if defined RENUMBER_EXPORTS || defined renumber_EXPORTS
+# if defined RENUMBERCPP_EXPORTS || defined renumbercpp_EXPORTS
# define RENUMBER_EXPORT __declspec(dllexport)
# else
# define RENUMBER_EXPORT __declspec(dllimport)