diff --git a/.gitignore b/.gitignore index 1399389afcbdd97743d9c51bf7b4a32237e26828..3affdd38e54123c27b697377e6d500ce0025aa1c 100644 --- a/.gitignore +++ b/.gitignore @@ -38,9 +38,6 @@ Thumbs.db ###### Other -*.vtk -*.swp -install-sh AUTHORS COPYING ChangeLog @@ -50,21 +47,15 @@ README Makefile Makefile.in config.status -config.guess -config.sub configure numerics **/.deps **/src/config aclocal.m4 **/autom4te.cache -compile -depcomp -missing -src/mem_map -#**/performance/ -previous_measure -previous_measureg -previous_measurev +src/io +csv_out.csv +test_graph.graphml +test_graph2.graphml *.html -test_save + diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 36bd74d4b25325e09cdedffac562e4dcc20ad3c3..6280a89b71e9b698942a560f15d4fa4c37aceed2 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -4,7 +4,12 @@ centos_build: - centos artifacts: paths: +<<<<<<< HEAD - ./openfpm_data/build/src/mem_map +======= + - ./openfpm_io/build/src/io + - ./openfpm_io/test_data +>>>>>>> origin/master script: - ./build.sh $CI_PROJECT_DIR $CI_RUNNER_TAGS NO $CI_COMMIT_REF_NAME @@ -15,7 +20,11 @@ centos_run: dependencies: - centos_build script: +<<<<<<< HEAD - ./openfpm_data/build/src/mem_map +======= + - ./run.sh $CI_PROJECT_DIR $CI_RUNNER_TAGS NO $CI_COMMIT_REF_NAME +>>>>>>> origin/master mac_build: stage: build @@ -23,7 +32,12 @@ mac_build: - mac artifacts: paths: +<<<<<<< HEAD - ./openfpm_data/build/src/mem_map +======= + - ./openfpm_io/build/src/io + - ./openfpm_io/test_data +>>>>>>> origin/master script: - ./build.sh $CI_PROJECT_DIR $CI_RUNNER_TAGS NO $CI_COMMIT_REF_NAME @@ -34,7 +48,11 @@ mac_run: dependencies: - mac_build script: +<<<<<<< HEAD - ./openfpm_data/build/src/mem_map +======= + - ./run.sh $CI_PROJECT_DIR $CI_RUNNER_TAGS NO $CI_COMMIT_REF_NAME +>>>>>>> origin/master ubuntu_build: stage: build @@ -42,7 +60,12 @@ ubuntu_build: - ubuntu artifacts: paths: +<<<<<<< HEAD - ./openfpm_data/build/src/mem_map +======= + - ./openfpm_io/build/src/io + - ./openfpm_io/test_data +>>>>>>> origin/master script: - ./build.sh $CI_PROJECT_DIR $CI_RUNNER_EXECUTABLE_TAGS NO $CI_COMMIT_REF_NAME @@ -53,5 +76,9 @@ ubuntu_run: dependencies: - ubuntu_build script: +<<<<<<< HEAD - ./openfpm_data/build/src/mem_map +======= + - ./run.sh $CI_PROJECT_DIR $CI_RUNNER_TAGS NO $CI_COMMIT_REF_NAME +>>>>>>> origin/master diff --git a/CMakeLists.txt b/CMakeLists.txt index 1ddf767cd6567232e0372285c018f0011b986615..39610d7e7df4cc9cb2ac5a7449ea8ded343acd36 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -5,6 +5,7 @@ if (POLICY CMP0074) cmake_policy(SET CMP0074 OLD) endif () +<<<<<<< HEAD list(APPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_LIST_DIR}/cmake_modules/ /opt/rocm/hip/cmake) set(BOOST_INCLUDE ${Boost_INCLUDE_DIR} CACHE PATH "Include directory for BOOST") @@ -17,6 +18,26 @@ set(HIP_ENABLE CACHE BOOL "Enable HIP compiler") set(AMD_ARCH_COMPILE "gfx900" CACHE STRING "AMD gpu architecture used to compile kernels") add_subdirectory (../openfpm_devices/ openfpm_devices) +======= +list(APPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_LIST_DIR}/cmake_modules/) + +if (POLICY CMP0074) + cmake_policy(SET CMP0074 NEW) +endif() + +set(BOOST_INCLUDE ${Boost_INCLUDE_DIR} CACHE PATH "Include directory for BOOST") +set(HDF5_ROOT CACHE PATH "HDF5 root path") +set(SE_CLASS1 CACHE BOOL "Activate compilation with SE_CLASS1") +set(SE_CLASS3 CACHE BOOL "Activate compilation with SE_CLASS3") +set(ENV{HDF5_ROOT} ${HDF5_ROOT}) +set(OPENFPM_PDATA_DIR CACHE PATH "OpenFPM_pdata dirs") +set(PETSC_ROOT CACHE PATH "If compiling with linear algebra indicate the PETSC root directory") +set(ENV{PETSC_DIR} ${PETSC_ROOT}) +set(HIP_ENABLE CACHE BOOL "Enable HIP compiler") +set(AMD_ARCH_COMPILE "gfx900" CACHE STRING "AMD gpu architecture used to compile kernels") + +add_subdirectory (../openfpm_vcluster openfpm_vcluster) +>>>>>>> origin/master if (CUDA_ON_BACKEND STREQUAL "CUDA") enable_language(CUDA) @@ -25,6 +46,7 @@ endif() set (CMAKE_CXX_STANDARD 14) set (CMAKE_CUDA_STANDARD 14) +<<<<<<< HEAD set(Vc_DIR "${Vc_ROOT}/lib/cmake/Vc/") message("Searching Vc in ${Vc_DIR}") @@ -39,6 +61,43 @@ endif() if (NOT CUDA_ON_BACKEND STREQUAL "HIP") find_package(OpenMP) +======= +if(NOT TINYOBJLOADER_FOUND) + set(TINYOBJLOADER_ROOT CACHE PATH "TinyObjLoader library path") +endif() + +set(ENV{PATH} "$ENV{PATH}:${HDF5_ROOT}/bin") +set(HDF5_PREFER_PARALLEL TRUE) + +set (ENV{BOOST_ROOT} ${BOOST_ROOT}) +set (Boost_NO_BOOST_CMAKE OFF) +find_package(Boost 1.72.0 REQUIRED COMPONENTS unit_test_framework iostreams program_options system filesystem + OPTIONAL_COMPONENTS fiber context) +find_package(MPI REQUIRED) +find_package(HDF5 REQUIRED) +find_package(TinyObjLoader) +find_package(PETSc) +if (NOT CUDA_ON_BACKEND STREQUAL "HIP") + find_package(OpenMP) +endif() +if (CUDA_ON_BACKEND STREQUAL "HIP" AND NOT HIP_FOUND) + find_package(HIP) +endif() + +if(HIP_FOUND) + set(DEFINE_HIP_GPU "#define HIP_GPU") + set(DEFINE_CUDIFY_USE_HIP "#define CUDIFY_USE_HIP") +endif() + +if(HIP_FOUND) + set(DEFINE_CUDA_GPU "#define CUDA_GPU") +endif() + +if(CUDA_FOUND) + set(OPENFPM_INIT_FILE "initialize/initialize_wrapper_cuda.cu") +else() + set(OPENFPM_INIT_FILE "initialize/initialize_wrapper_cuda.cpp") +>>>>>>> origin/master endif() ###### CONFIG.h FILE ###### @@ -51,6 +110,7 @@ if(SE_CLASS3) set(DEFINE_SE_CLASS3 "#define SE_CLASS3") endif() +<<<<<<< HEAD if(TEST_PERFORMANCE) set(DEFINE_PERFORMANCE_TEST "#define PERFORMANCE_TEST") endif() @@ -94,10 +154,44 @@ if(LIBHILBERT_FOUND) set(DEFINE_HAVE_LIBHILBERT "#define HAVE_LIBHILBERT 1") else() message( FATAL_ERROR "LibHilbert is required in order to install OpenFPM") +======= +if(CUDA_FOUND) + set(DEFINE_CUDA_GPU "#define CUDA_GPU") +endif() + +if(MPI_FOUND) + set(DEFINE_HAVE_MPI "#define HAVE_MPI") +else() + message( FATAL_ERROR "MPI is required in order to install OpenFPM" ) +endif() + +if(PETSC_FOUND) + set(DEFINE_HAVE_PETSC "#define HAVE_PETSC") +endif() + +if(HDF5_FOUND) + if (HDF5_IS_PARALLEL) + set(DEFINE_HAVE_HDF5 "#define HAVE_HDF5") + else() + message( STATUS "HDF5 found ${HDF5_INCLUDE_DIRS} does not have parallel support, OpenFPM require it" ) + endif() +else() + message( FATAL_ERROR "HDF5 with parallel support is required in order to install OpenFPM" ) +endif() + +if(TINYOBJLOADER_FOUND) + set(DEFINE_HAVE_TINYOBJLOADER "#define HAVE_TINYOBJLOADER 1") +>>>>>>> origin/master endif() configure_file(${CMAKE_CURRENT_SOURCE_DIR}/src/config/config_cmake.h.in ${CMAKE_CURRENT_SOURCE_DIR}/src/config/config.h) +<<<<<<< HEAD +======= +include_directories(SYSTEM ${MPI_INCLUDE_PATH}) + + +>>>>>>> origin/master add_subdirectory (src) get_directory_property(hasParent PARENT_DIRECTORY) diff --git a/Jenkinsfile b/Jenkinsfile new file mode 100644 index 0000000000000000000000000000000000000000..207c3da88a038af26f4f5422b227a379499634c5 --- /dev/null +++ b/Jenkinsfile @@ -0,0 +1,100 @@ +#!groovy + +parallel ( + +"nyu" : {node ('nyu') + { + deleteDir() + + int ntry = 5 + while (ntry != 0) + { + try { + checkout scm + ntry = 0 + } + catch (IOException e) + { + ntry-- + sleep(50) + } + } + + stage ('build_nyu') + { + sh "./build.sh $WORKSPACE $NODE_NAME $BRANCH_NAME" + } + + stage ('run_nyu') + { + sh "cd openfpm_io && ./run.sh $WORKSPACE $NODE_NAME $BRANCH_NAME" + sh "cd openfpm_io && ./success.sh 2 nyu openfpm_io" + } + } + }, + + +"sb15" : {node ('sbalzarini-mac-15') + { + deleteDir() + env.PATH = "/usr/local/bin:${env.PATH}" + + int ntry = 5 + while (ntry != 0) + { + try { + checkout scm + ntry = 0 + } + catch (IOException e) + { + ntry-- + sleep(50) + } + } + + stage ('build_sb15') + { + sh "echo $PATH && ./build.sh $WORKSPACE $NODE_NAME $BRANCH_NAME" + } + + stage ('run_sb15') + { + sh "cd openfpm_io && ./run.sh $WORKSPACE $NODE_NAME $BRANCH_NAME" + sh "cd openfpm_io && ./success.sh 2 sbalzarini-mac-15 openfpm_io" + } + } + }, + +"gin" : {node ('gin') + { + deleteDir() + + int ntry = 5 + while (ntry != 0) + { + try { + checkout scm + ntry = 0 + } + catch (IOException e) + { + ntry-- + sleep(50) + } + } + + stage ('build_gin') + { + sh "echo $PATH && ./build.sh $WORKSPACE $NODE_NAME $BRANCH_NAME" + } + + stage ('run_gin') + { + sh "cd openfpm_io && ./run.sh $WORKSPACE $NODE_NAME $BRANCH_NAME" + sh "cd openfpm_io && ./success.sh 2 gin openfpm_io" + } + } + } +) + diff --git a/Jenkinsfile_mpi b/Jenkinsfile_mpi index 642cb804a86c79955edee8d3ecaf5ce27a1f1cef..0cab6265950aff48f31c50821e3c9832870a2401 100644 --- a/Jenkinsfile_mpi +++ b/Jenkinsfile_mpi @@ -2,7 +2,11 @@ parallel ( +<<<<<<< HEAD "ubuntu" : {node ('cifarm-ubuntu-node') +======= +"cifarm-ubuntu-node" : {node ('cifarm-ubuntu-node') +>>>>>>> origin/master { deleteDir() @@ -16,6 +20,7 @@ parallel ( catch (IOException e) { ntry-- +<<<<<<< HEAD sleep(10) } } @@ -29,13 +34,64 @@ parallel ( { sh "cd openfpm_data && ./run.sh $WORKSPACE $NODE_NAME NO" sh "cd openfpm_data && ./success.sh 2 ubuntu openfpm_data" +======= + sleep(50) + } + } + + stage ('build ubuntu') + { + sh "./build.sh $WORKSPACE $NODE_NAME $BRANCH_NAME" + } + + stage ('run ubuntu') + { + sh "cd openfpm_io && ./run.sh $WORKSPACE $NODE_NAME $BRANCH_NAME" + sh "cd openfpm_io && ./success.sh 2 ubuntu openfpm_io" +>>>>>>> origin/master } } }, +<<<<<<< HEAD "macosx" : {node ('cifarm-mac-node') +======= +"cifarm-mac-node" : {node ('cifarm-mac-node') + { + deleteDir() + env.PATH = "/usr/local/bin:${env.PATH}" + + int ntry = 5 + while (ntry != 0) + { + try { + checkout scm + ntry = 0 + } + catch (IOException e) + { + ntry-- + sleep(50) + } + } + + stage ('build mac') + { + sh "echo $PATH && ./build.sh $WORKSPACE $NODE_NAME $BRANCH_NAME" + } + + stage ('run mac') + { + sh "cd openfpm_io && ./run.sh $WORKSPACE $NODE_NAME $BRANCH_NAME" + sh "cd openfpm_io && ./success.sh 2 mac openfpm_io" + } + } + }, + +"cifarm-centos-node" : {node ('cifarm-centos-node') +>>>>>>> origin/master { deleteDir() @@ -49,6 +105,7 @@ parallel ( catch (IOException e) { ntry-- +<<<<<<< HEAD sleep(10) } } @@ -99,5 +156,23 @@ parallel ( +======= + sleep(50) + } + } + + stage ('build_gin') + { + sh "echo $PATH && ./build.sh $WORKSPACE $NODE_NAME $BRANCH_NAME" + } + + stage ('run_gin') + { + sh "cd openfpm_io && ./run.sh $WORKSPACE $NODE_NAME $BRANCH_NAME" + sh "cd openfpm_io && ./success.sh 2 centos openfpm_io" + } + } + } +>>>>>>> origin/master ) diff --git a/Makefile.am b/Makefile.am new file mode 100755 index 0000000000000000000000000000000000000000..bad0185690207b20c536ceace77718261a0f6833 --- /dev/null +++ b/Makefile.am @@ -0,0 +1,7 @@ +SUBDIRS = src + +bin_PROGRAMS = + +test: + cd src && make test + diff --git a/build.sh b/build.sh index 2b80de126c3064c3d6c4e32bae5e87e6895ddc63..48406c1a45a9e4eb16ed095472137ce25970bcce 100755 --- a/build.sh +++ b/build.sh @@ -1,5 +1,6 @@ #! /bin/bash +<<<<<<< HEAD # Make a directory in /tmp/openfpm_data workspace=$1 @@ -94,5 +95,88 @@ if [ $? -ne 0 ]; then fi ls build/src/mem_map +======= +workspace=$1 +hostname=$(hostname) +branch=$3 + +echo "Directory: $workspace" +echo "Machine: $hostname" +echo "Branch name: $branch" + +echo "Branch: $3" + +# Make a directory in /tmp/openfpm_data + +mkdir /tmp/openfpm_io +mv * .[^.]* /tmp/openfpm_io +mv /tmp/openfpm_io openfpm_io + +git clone git@git.mpi-cbg.de:openfpm/openfpm_devices.git openfpm_devices +cd openfpm_devices +git checkout develop +cd .. +git clone git@git.mpi-cbg.de:openfpm/openfpm_data.git openfpm_data +cd openfpm_data +git checkout develop +cd .. +git clone git@git.mpi-cbg.de:openfpm/openfpm_pdata.git openfpm_pdata +cd openfpm_pdata +git checkout develop +cd .. +git clone git@git.mpi-cbg.de:openfpm/openfpm_vcluster.git openfpm_vcluster +cd openfpm_vcluster +git checkout develop +cd .. + +cd "$1/openfpm_io" + +#rm -rf $HOME/openfpm_dependencies/openfpm_io/$branch/MPI +#rm -rf $HOME/openfpm_dependencies/openfpm_io/$branch/HDF5 +#rm -rf $HOME/openfpm_dependencies/openfpm_io/$branch/BOOST + + +if [ x"$hostname" == x"cifarm-centos-node.mpi-cbg.de" ]; then + source /opt/rh/devtoolset-7/enable + ./install_MPI.sh $HOME/openfpm_dependencies/openfpm_io/$branch/ 4 + export PATH="$HOME/openfpm_dependencies/openfpm_io/$branch/MPI/bin/:$PATH" + ./install_BOOST.sh $HOME/openfpm_dependencies/openfpm_io/$branch/ 4 + ./install_HDF5.sh $HOME/openfpm_dependencies/openfpm_io/$branch/ 4 + ./install_LIBHILBERT.sh $HOME/openfpm_dependencies/openfpm_io/$branch/ 4 + ./install_VCDEVEL.sh $HOME/openfpm_dependencies/openfpm_io/$branch/ 4 gcc g++ +fi + +if [ x"$hostname" == x"cifarm-ubuntu-node" ]; then + ./install_MPI.sh $HOME/openfpm_dependencies/openfpm_io/$branch/ 4 + export PATH="/opt/bin:$HOME/openfpm_dependencies/openfpm_io/$branch/MPI/bin/:$PATH" + ./install_BOOST.sh $HOME/openfpm_dependencies/openfpm_io/$branch/ 4 + ./install_HDF5.sh $HOME/openfpm_dependencies/openfpm_io/$branch/ 4 + ./install_LIBHILBERT.sh $HOME/openfpm_dependencies/openfpm_io/$branch/ 4 + ./install_VCDEVEL.sh $HOME/openfpm_dependencies/openfpm_io/$branch/ 4 gcc g++ +fi + +if [ x"$hostname" == x"cifarm-mac-node.mpi-cbg.de" ]; then + export PATH="/usr/local/bin:$PATH" + ./install_MPI.sh $HOME/openfpm_dependencies/openfpm_io/$branch/ 4 + export PATH="$HOME/openfpm_dependencies/openfpm_io/$branch/MPI/bin/:$PATH" + ./install_BOOST.sh $HOME/openfpm_dependencies/openfpm_io/$branch/ 4 + ./install_HDF5.sh $HOME/openfpm_dependencies/openfpm_io/$branch/ 4 + ./install_LIBHILBERT.sh $HOME/openfpm_dependencies/openfpm_io/$branch/ 4 + ./install_VCDEVEL.sh $HOME/openfpm_dependencies/openfpm_io/$branch/ 4 gcc g++ +fi + +# Go in the right branch + +echo "Compiling on $2" + +sh ./autogen.sh +if [ x"$hostname" == x"cifarm-mac-node.mpi-cbg.de" ]; then + sh ./configure CXX=mpic++ --with-vcdevel=$HOME/openfpm_dependencies/openfpm_io/$branch/VCDEVEL --with-libhilbert=$HOME/openfpm_dependencies/openfpm_io/$branch/LIBHILBERT --with-hdf5=$HOME/openfpm_dependencies/openfpm_io/$branch/HDF5 --with-boost=$HOME/openfpm_dependencies/openfpm_io/$branch/BOOST --with-pdata=../../openfpm_pdata/ --enable-cuda-on-cpu +else + sh ./configure CXX=mpic++ --with-vcdevel=$HOME/openfpm_dependencies/openfpm_io/$branch/VCDEVEL --with-libhilbert=$HOME/openfpm_dependencies/openfpm_io/$branch/LIBHILBERT --with-hdf5=$HOME/openfpm_dependencies/openfpm_io/$branch/HDF5 --with-boost=$HOME/openfpm_dependencies/openfpm_io/$branch/BOOST --with-pdata=../../openfpm_pdata/ --with-cuda-on-backend=OpenMP +fi + +make VERBOSE=1 -j 4 +>>>>>>> origin/master diff --git a/build_io.sh b/build_io.sh new file mode 100755 index 0000000000000000000000000000000000000000..fc419ca8a28b1ef699f36cb03e1a306cdf1dbb2b --- /dev/null +++ b/build_io.sh @@ -0,0 +1,45 @@ +#! /bin/bash + +source $HOME/.bashrc + +echo "$PATH" + +# Make a directory in /tmp/openfpm_data + +mkdir /tmp/openfpm_io +mv * .[^.]* /tmp/openfpm_io +mv /tmp/openfpm_io openfpm_io + +mkdir openfpm_io/src/config + +git clone git@ppmcore.mpi-cbg.de:incardon/openfpm_devices.git openfpm_devices +git clone git@ppmcore.mpi-cbg.de:incardon/openfpm_data.git openfpm_data +git clone git@ppmcore.mpi-cbg.de:incardon/openfpm_pdata.git openfpm_pdata +git clone git@ppmcore.mpi-cbg.de:incardon/openfpm_vcluster.git openfpm_vcluster + +cd "$1/openfpm_io" + +echo "Compiling on $2" + +sh ./autogen.sh +if [ "$2" == "master" ] +then + sh ./configure CXX=mpic++ --with-hdf5=$HOME/HDF5/bin/h5pcc --disable-gpu +elif [ "$2" == "gin" ] +then + module load gcc/4.8.2 + module load boost/1.54.0 + sh ./configure CXX=mpic++ --with-boost=/sw/apps/boost/1.54.0/ --with-hdf5=$HOME/HDF5/bin/h5pcc +else + sh ./configure CXX=mpic++ --with-hdf5=$HOME/HDF5/bin/h5pcc +fi +make + +./src/io +if [ $? -ne 0 ]; then + curl -X POST --data "payload={\"icon_emoji\": \":jenkins:\", \"username\": \"jenkins\" , \"attachments\":[{ \"title\":\"Error:\", \"color\": \"#FF0000\", \"text\":\"$2 failed to complete the openfpm_io test \" }] }" https://hooks.slack.com/services/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 + exit 1 ; +fi + +curl -X POST --data "payload={\"icon_emoji\": \":jenkins:\", \"username\": \"jenkins\" , \"attachments\":[{ \"title\":\"Info:\", \"color\": \"#00FF00\", \"text\":\"$2 completed succeffuly the openfpm_io test \" }] }" https://hooks.slack.com/services/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 + diff --git a/cmake_modules/CorrectWindowsPaths.cmake b/cmake_modules/CorrectWindowsPaths.cmake new file mode 100644 index 0000000000000000000000000000000000000000..09bcdd67dcd04fd001d2b7acbd904b5014ebe42b --- /dev/null +++ b/cmake_modules/CorrectWindowsPaths.cmake @@ -0,0 +1,14 @@ +# CorrectWindowsPaths - this module defines one macro +# +# CONVERT_CYGWIN_PATH( PATH ) +# This uses the command cygpath (provided by cygwin) to convert +# unix-style paths into paths useable by cmake on windows + +macro (CONVERT_CYGWIN_PATH _path) + if (WIN32) + EXECUTE_PROCESS(COMMAND cygpath.exe -m ${${_path}} + OUTPUT_VARIABLE ${_path}) + string (STRIP ${${_path}} ${_path}) + endif (WIN32) +endmacro (CONVERT_CYGWIN_PATH) + diff --git a/cmake_modules/FindPETSc.cmake b/cmake_modules/FindPETSc.cmake new file mode 100644 index 0000000000000000000000000000000000000000..f8ea15b67fbb5a237169411fe37fa5227e6b7aee --- /dev/null +++ b/cmake_modules/FindPETSc.cmake @@ -0,0 +1,349 @@ +# - Try to find PETSc +# Once done this will define +# +# PETSC_FOUND - system has PETSc +# PETSC_INCLUDES - the PETSc include directories +# PETSC_LIBRARIES - Link these to use PETSc +# PETSC_COMPILER - Compiler used by PETSc, helpful to find a compatible MPI +# PETSC_DEFINITIONS - Compiler switches for using PETSc +# PETSC_MPIEXEC - Executable for running MPI programs +# PETSC_VERSION - Version string (MAJOR.MINOR.SUBMINOR) +# +# Usage: +# find_package(PETSc COMPONENTS CXX) - required if build --with-clanguage=C++ --with-c-support=0 +# find_package(PETSc COMPONENTS C) - standard behavior of checking build using a C compiler +# find_package(PETSc) - same as above +# +# Setting these changes the behavior of the search +# PETSC_DIR - directory in which PETSc resides +# PETSC_ARCH - build architecture +# +# Redistribution and use is allowed according to the terms of the BSD license. +# For details see the accompanying COPYING-CMAKE-SCRIPTS file. +# + +cmake_policy(VERSION 3.3) + +set(PETSC_VALID_COMPONENTS + C + CXX) + +if(NOT PETSc_FIND_COMPONENTS) + get_property (_enabled_langs GLOBAL PROPERTY ENABLED_LANGUAGES) + if ("C" IN_LIST _enabled_langs) + set(PETSC_LANGUAGE_BINDINGS "C") + else () + set(PETSC_LANGUAGE_BINDINGS "CXX") + endif () +else() + # Right now, this is designed for compatability with the --with-clanguage option, so + # only allow one item in the components list. + list(LENGTH ${PETSc_FIND_COMPONENTS} components_length) + if(${components_length} GREATER 1) + message(FATAL_ERROR "Only one component for PETSc is allowed to be specified") + endif() + # This is a stub for allowing multiple components should that time ever come. Perhaps + # to also test Fortran bindings? + foreach(component ${PETSc_FIND_COMPONENTS}) + list(FIND PETSC_VALID_COMPONENTS ${component} component_location) + if(${component_location} EQUAL -1) + message(FATAL_ERROR "\"${component}\" is not a valid PETSc component.") + else() + list(APPEND PETSC_LANGUAGE_BINDINGS ${component}) + endif() + endforeach() +endif() + +function (petsc_get_version) + if (EXISTS "${PETSC_DIR}/include/petscversion.h") + file (STRINGS "${PETSC_DIR}/include/petscversion.h" vstrings REGEX "#define PETSC_VERSION_(RELEASE|MAJOR|MINOR|SUBMINOR|PATCH) ") + foreach (line ${vstrings}) + string (REGEX REPLACE " +" ";" fields ${line}) # break line into three fields (the first is always "#define") + list (GET fields 1 var) + list (GET fields 2 val) + set (${var} ${val} PARENT_SCOPE) + set (${var} ${val}) # Also in local scope so we have access below + endforeach () + if (PETSC_VERSION_RELEASE) + if ($(PETSC_VERSION_PATCH) GREATER 0) + set (PETSC_VERSION "${PETSC_VERSION_MAJOR}.${PETSC_VERSION_MINOR}.${PETSC_VERSION_SUBMINOR}p${PETSC_VERSION_PATCH}" CACHE INTERNAL "PETSc version") + else () + set (PETSC_VERSION "${PETSC_VERSION_MAJOR}.${PETSC_VERSION_MINOR}.${PETSC_VERSION_SUBMINOR}" CACHE INTERNAL "PETSc version") + endif () + else () + # make dev version compare higher than any patch level of a released version + set (PETSC_VERSION "${PETSC_VERSION_MAJOR}.${PETSC_VERSION_MINOR}.${PETSC_VERSION_SUBMINOR}.99" CACHE INTERNAL "PETSc version") + endif () + else () + message (SEND_ERROR "PETSC_DIR can not be used, ${PETSC_DIR}/include/petscversion.h does not exist") + endif () +endfunction () + +# Debian uses versioned paths e.g /usr/lib/petscdir/3.5/ +file (GLOB DEB_PATHS "/usr/lib/petscdir/*") + +find_path (PETSC_DIR include/petsc.h + HINTS ENV PETSC_DIR + PATHS + /usr/lib/petsc + # Debian paths + ${DEB_PATHS} + # Arch Linux path + /opt/petsc/linux-c-opt + # MacPorts path + /opt/local/lib/petsc + $ENV{HOME}/petsc + DOC "PETSc Directory") + +find_program (MAKE_EXECUTABLE NAMES make gmake) + +if (PETSC_DIR AND NOT PETSC_ARCH) + set (_petsc_arches + $ENV{PETSC_ARCH} # If set, use environment variable first + linux-gnu-c-debug linux-gnu-c-opt # Debian defaults + x86_64-unknown-linux-gnu i386-unknown-linux-gnu) + set (petscconf "NOTFOUND" CACHE FILEPATH "Cleared" FORCE) + foreach (arch ${_petsc_arches}) + if (NOT PETSC_ARCH) + find_path (petscconf petscconf.h + HINTS ${PETSC_DIR} + PATH_SUFFIXES ${arch}/include bmake/${arch} + NO_DEFAULT_PATH) + if (petscconf) + set (PETSC_ARCH "${arch}" CACHE STRING "PETSc build architecture") + endif (petscconf) + endif (NOT PETSC_ARCH) + endforeach (arch) + set (petscconf "NOTFOUND" CACHE INTERNAL "Scratch variable" FORCE) +endif (PETSC_DIR AND NOT PETSC_ARCH) + +set (petsc_slaves LIBRARIES_SYS LIBRARIES_VEC LIBRARIES_MAT LIBRARIES_DM LIBRARIES_KSP LIBRARIES_SNES LIBRARIES_TS + INCLUDE_DIR INCLUDE_CONF) +include (FindPackageMultipass) +find_package_multipass (PETSc petsc_config_current + STATES DIR ARCH + DEPENDENTS INCLUDES LIBRARIES COMPILER MPIEXEC ${petsc_slaves}) + +# Determine whether the PETSc layout is old-style (through 2.3.3) or +# new-style (>= 3.0.0) +if (EXISTS "${PETSC_DIR}/${PETSC_ARCH}/lib/petsc/conf/petscvariables") # > 3.5 + set (petsc_conf_rules "${PETSC_DIR}/lib/petsc/conf/rules") + set (petsc_conf_variables "${PETSC_DIR}/lib/petsc/conf/variables") +elseif (EXISTS "${PETSC_DIR}/${PETSC_ARCH}/include/petscconf.h") # > 2.3.3 + set (petsc_conf_rules "${PETSC_DIR}/conf/rules") + set (petsc_conf_variables "${PETSC_DIR}/conf/variables") +elseif (EXISTS "${PETSC_DIR}/bmake/${PETSC_ARCH}/petscconf.h") # <= 2.3.3 + set (petsc_conf_rules "${PETSC_DIR}/bmake/common/rules") + set (petsc_conf_variables "${PETSC_DIR}/bmake/common/variables") +elseif (PETSC_DIR) + message (SEND_ERROR "The pair PETSC_DIR=${PETSC_DIR} PETSC_ARCH=${PETSC_ARCH} do not specify a valid PETSc installation") +endif () + +if (petsc_conf_rules AND petsc_conf_variables AND NOT petsc_config_current) + petsc_get_version() + + # Put variables into environment since they are needed to get + # configuration (petscvariables) in the PETSc makefile + set (ENV{PETSC_DIR} "${PETSC_DIR}") + set (ENV{PETSC_ARCH} "${PETSC_ARCH}") + + # A temporary makefile to probe the PETSc configuration + set (petsc_config_makefile "${PROJECT_BINARY_DIR}/Makefile.petsc") + file (WRITE "${petsc_config_makefile}" +"## This file was autogenerated by FindPETSc.cmake +# PETSC_DIR = ${PETSC_DIR} +# PETSC_ARCH = ${PETSC_ARCH} +include ${petsc_conf_rules} +include ${petsc_conf_variables} +show : +\t-@echo -n \${\${VARIABLE}} +") + + macro (PETSC_GET_VARIABLE name var) + set (${var} "NOTFOUND" CACHE INTERNAL "Cleared" FORCE) + execute_process (COMMAND ${MAKE_EXECUTABLE} --no-print-directory -f ${petsc_config_makefile} show VARIABLE=${name} + OUTPUT_VARIABLE ${var} + RESULT_VARIABLE petsc_return) + endmacro (PETSC_GET_VARIABLE) + petsc_get_variable (PETSC_LIB_DIR petsc_lib_dir) + petsc_get_variable (PETSC_EXTERNAL_LIB_BASIC petsc_libs_external) + petsc_get_variable (PETSC_CCPPFLAGS petsc_cpp_line) + petsc_get_variable (PETSC_INCLUDE petsc_include) + petsc_get_variable (PCC petsc_cc) + petsc_get_variable (PCC_FLAGS petsc_cc_flags) + petsc_get_variable (MPIEXEC petsc_mpiexec) + # We are done with the temporary Makefile, calling PETSC_GET_VARIABLE after this point is invalid! + file (REMOVE ${petsc_config_makefile}) + + execute_process(COMMAND ${MPI_C_COMPILER} --showme:compile OUTPUT_VARIABLE mpi_compile_options ERROR_VARIABLE mpi_compile_error) + set(petsc_cpp_line ${petsc_cpp_line} ${mpi_compile_options}) + + include (ResolveCompilerPaths) + # Extract include paths and libraries from compile command line + resolve_includes (petsc_includes_all "${petsc_cpp_line}") + + #on windows we need to make sure we're linking against the right + #runtime library + if (WIN32) + if (petsc_cc_flags MATCHES "-MT") + set(using_md False) + foreach(flag_var + CMAKE_C_FLAGS CMAKE_C_FLAGS_DEBUG CMAKE_C_FLAGS_RELEASE + CMAKE_C_FLAGS_MINSIZEREL CMAKE_C_FLAGS_RELWITHDEBINFO + CMAKE_CXX_FLAGS CMAKE_CXX_FLAGS_DEBUG CMAKE_CXX_FLAGS_RELEASE + CMAKE_CXX_FLAGS_MINSIZEREL CMAKE_CXX_FLAGS_RELWITHDEBINFO) + if(${flag_var} MATCHES "/MD") + set(using_md True) + endif(${flag_var} MATCHES "/MD") + endforeach(flag_var) + if(${using_md} MATCHES "True") + message(WARNING "PETSc was built with /MT, but /MD is currently set. + See http://www.cmake.org/Wiki/CMake_FAQ#How_can_I_build_my_MSVC_application_with_a_static_runtime.3F") + endif(${using_md} MATCHES "True") + endif (petsc_cc_flags MATCHES "-MT") + endif (WIN32) + + include (CorrectWindowsPaths) + convert_cygwin_path(petsc_lib_dir) + message (STATUS "petsc_lib_dir ${petsc_lib_dir}") + + macro (PETSC_FIND_LIBRARY suffix name) + set (PETSC_LIBRARY_${suffix} "NOTFOUND" CACHE INTERNAL "Cleared" FORCE) # Clear any stale value, if we got here, we need to find it again + if (WIN32) + set (libname lib${name}) #windows expects "libfoo", linux expects "foo" + else (WIN32) + set (libname ${name}) + endif (WIN32) + find_library (PETSC_LIBRARY_${suffix} NAMES ${libname} HINTS ${petsc_lib_dir} NO_DEFAULT_PATH) + set (PETSC_LIBRARIES_${suffix} "${PETSC_LIBRARY_${suffix}}") + mark_as_advanced (PETSC_LIBRARY_${suffix}) + endmacro (PETSC_FIND_LIBRARY suffix name) + + # Look for petscvec first, if it doesn't exist, we must be using single-library + petsc_find_library (VEC petscvec) + if (PETSC_LIBRARY_VEC) + petsc_find_library (SYS "petscsys;petsc") # libpetscsys is called libpetsc prior to 3.1 (when single-library was introduced) + petsc_find_library (MAT petscmat) + petsc_find_library (DM petscdm) + petsc_find_library (KSP petscksp) + petsc_find_library (SNES petscsnes) + petsc_find_library (TS petscts) + macro (PETSC_JOIN libs deps) + list (APPEND PETSC_LIBRARIES_${libs} ${PETSC_LIBRARIES_${deps}}) + endmacro (PETSC_JOIN libs deps) + petsc_join (VEC SYS) + petsc_join (MAT VEC) + petsc_join (DM MAT) + petsc_join (KSP DM) + petsc_join (SNES KSP) + petsc_join (TS SNES) + petsc_join (ALL TS) + else () + set (PETSC_LIBRARY_VEC "NOTFOUND" CACHE INTERNAL "Cleared" FORCE) # There is no libpetscvec + petsc_find_library (SINGLE petsc) + # Debian 9/Ubuntu 16.04 uses _real and _complex extensions when using libraries in /usr/lib/petsc. + if (NOT PETSC_LIBRARY_SINGLE) + petsc_find_library (SINGLE petsc_real) + endif() + if (NOT PETSC_LIBRARY_SINGLE) + petsc_find_library (SINGLE petsc_complex) + endif() + foreach (pkg SYS VEC MAT DM KSP SNES TS ALL) + set (PETSC_LIBRARIES_${pkg} "${PETSC_LIBRARY_SINGLE}") + endforeach () + endif () + if (PETSC_LIBRARY_TS) + message (STATUS "Recognized PETSc install with separate libraries for each package") + else () + message (STATUS "Recognized PETSc install with single library for all packages") + endif () + + include(Check${PETSC_LANGUAGE_BINDINGS}SourceRuns) + macro (PETSC_TEST_RUNS includes libraries runs) + if (PETSC_VERSION VERSION_GREATER 3.1) + set (_PETSC_TSDestroy "TSDestroy(&ts)") + else () + set (_PETSC_TSDestroy "TSDestroy(ts)") + endif () + + set(_PETSC_TEST_SOURCE " +static const char help[] = \"PETSc test program.\"; +#include <petscts.h> +int main(int argc,char *argv[]) { + PetscErrorCode ierr; + TS ts; + + ierr = PetscInitialize(&argc,&argv,0,help);CHKERRQ(ierr); + ierr = TSCreate(PETSC_COMM_WORLD,&ts);CHKERRQ(ierr); + ierr = TSSetFromOptions(ts);CHKERRQ(ierr); + ierr = ${_PETSC_TSDestroy};CHKERRQ(ierr); + ierr = PetscFinalize();CHKERRQ(ierr); + return 0; +} +") + multipass_source_runs ("${includes}" "${libraries}" "${_PETSC_TEST_SOURCE}" ${runs} "${PETSC_LANGUAGE_BINDINGS}") + if (${${runs}}) + set (PETSC_EXECUTABLE_RUNS "YES" CACHE BOOL + "Can the system successfully run a PETSc executable? This variable can be manually set to \"YES\" to force CMake to accept a given PETSc configuration, but this will almost always result in a broken build. If you change PETSC_DIR, PETSC_ARCH, or PETSC_CURRENT you would have to reset this variable." FORCE) + endif (${${runs}}) + endmacro (PETSC_TEST_RUNS) + + + find_path (PETSC_INCLUDE_DIR petscts.h HINTS "${PETSC_DIR}" PATH_SUFFIXES include NO_DEFAULT_PATH) + find_path (PETSC_INCLUDE_CONF petscconf.h HINTS "${PETSC_DIR}" PATH_SUFFIXES "${PETSC_ARCH}/include" "bmake/${PETSC_ARCH}" NO_DEFAULT_PATH) + mark_as_advanced (PETSC_INCLUDE_DIR PETSC_INCLUDE_CONF) + set (petsc_includes_minimal ${PETSC_INCLUDE_CONF} ${PETSC_INCLUDE_DIR}) + + petsc_test_runs ("${petsc_includes_minimal}" "${PETSC_LIBRARIES_TS}" petsc_works_minimal) + if (petsc_works_minimal) + message (STATUS "Minimal PETSc includes and libraries work. This probably means we are building with shared libs.") + set (petsc_includes_needed "${petsc_includes_minimal}") + else (petsc_works_minimal) # Minimal includes fail, see if just adding full includes fixes it + petsc_test_runs ("${petsc_includes_all}" "${PETSC_LIBRARIES_TS}" petsc_works_allincludes) + if (petsc_works_allincludes) # It does, we just need all the includes ( + message (STATUS "PETSc requires extra include paths, but links correctly with only interface libraries. This is an unexpected configuration (but it seems to work fine).") + set (petsc_includes_needed ${petsc_includes_all}) + else (petsc_works_allincludes) # We are going to need to link the external libs explicitly + resolve_libraries (petsc_libraries_external "${petsc_libs_external}") + foreach (pkg SYS VEC MAT DM KSP SNES TS ALL) + list (APPEND PETSC_LIBRARIES_${pkg} ${petsc_libraries_external}) + endforeach (pkg) + petsc_test_runs ("${petsc_includes_minimal}" "${PETSC_LIBRARIES_TS}" petsc_works_alllibraries) + if (petsc_works_alllibraries) + message (STATUS "PETSc only need minimal includes, but requires explicit linking to all dependencies. This is expected when PETSc is built with static libraries.") + set (petsc_includes_needed ${petsc_includes_minimal}) + else (petsc_works_alllibraries) + # It looks like we really need everything, should have listened to Matt + set (petsc_includes_needed ${petsc_includes_all}) + petsc_test_runs ("${petsc_includes_all}" "${PETSC_LIBRARIES_TS}" petsc_works_all) + if (petsc_works_all) # We fail anyways + message (STATUS "PETSc requires extra include paths and explicit linking to all dependencies. This probably means you have static libraries and something unexpected in PETSc headers.") + else (petsc_works_all) # We fail anyways + message (STATUS "PETSc could not be used, maybe the install is broken.") + endif (petsc_works_all) + endif (petsc_works_alllibraries) + endif (petsc_works_allincludes) + endif (petsc_works_minimal) + + # We do an out-of-source build so __FILE__ will be an absolute path, hence __INSDIR__ is superfluous + if (${PETSC_VERSION} VERSION_LESS 3.1) + set (PETSC_DEFINITIONS "-D__SDIR__=\"\"" CACHE STRING "PETSc definitions" FORCE) + else () + set (PETSC_DEFINITIONS "-D__INSDIR__=" CACHE STRING "PETSc definitions" FORCE) + endif () + # Sometimes this can be used to assist FindMPI.cmake + set (PETSC_MPIEXEC ${petsc_mpiexec} CACHE FILEPATH "Executable for running PETSc MPI programs" FORCE) + set (PETSC_INCLUDES ${petsc_includes_needed} CACHE STRING "PETSc include path" FORCE) + set (PETSC_LIBRARIES ${PETSC_LIBRARIES_ALL} CACHE STRING "PETSc libraries" FORCE) + set (PETSC_COMPILER ${petsc_cc} CACHE FILEPATH "PETSc compiler" FORCE) + # Note that we have forced values for all these choices. If you + # change these, you are telling the system to trust you that they + # work. It is likely that you will end up with a broken build. + mark_as_advanced (PETSC_INCLUDES PETSC_LIBRARIES PETSC_COMPILER PETSC_DEFINITIONS PETSC_MPIEXEC PETSC_EXECUTABLE_RUNS) +endif () + +include (FindPackageHandleStandardArgs) +find_package_handle_standard_args (PETSc + REQUIRED_VARS PETSC_INCLUDES PETSC_LIBRARIES PETSC_EXECUTABLE_RUNS + VERSION_VAR PETSC_VERSION + FAIL_MESSAGE "PETSc could not be found. Be sure to set PETSC_DIR and PETSC_ARCH.") diff --git a/cmake_modules/FindPackageMultipass.cmake b/cmake_modules/FindPackageMultipass.cmake new file mode 100644 index 0000000000000000000000000000000000000000..fbf06a7f0fc3aa20a0387f091eac4f74e7ffdab2 --- /dev/null +++ b/cmake_modules/FindPackageMultipass.cmake @@ -0,0 +1,106 @@ +# PackageMultipass - this module defines two macros +# +# FIND_PACKAGE_MULTIPASS (Name CURRENT +# STATES VAR0 VAR1 ... +# DEPENDENTS DEP0 DEP1 ...) +# +# This function creates a cache entry <UPPERCASED-Name>_CURRENT which +# the user can set to "NO" to trigger a reconfiguration of the package. +# The first time this function is called, the values of +# <UPPERCASED-Name>_VAR0, ... are saved. If <UPPERCASED-Name>_CURRENT +# is false or if any STATE has changed since the last time +# FIND_PACKAGE_MULTIPASS() was called, then CURRENT will be set to "NO", +# otherwise CURRENT will be "YES". IF not CURRENT, then +# <UPPERCASED-Name>_DEP0, ... will be FORCED to NOTFOUND. +# Example: +# find_path (FOO_DIR include/foo.h) +# FIND_PACKAGE_MULTIPASS (Foo foo_current +# STATES DIR +# DEPENDENTS INCLUDES LIBRARIES) +# if (NOT foo_current) +# # Make temporary files, run programs, etc, to determine FOO_INCLUDES and FOO_LIBRARIES +# endif (NOT foo_current) +# +# MULTIPASS_SOURCE_RUNS (Name INCLUDES LIBRARIES SOURCE RUNS LANGUAGE) +# Always runs the given test, use this when you need to re-run tests +# because parent variables have made old cache entries stale. The LANGUAGE +# variable is either C or CXX indicating which compiler the test should +# use. +# MULTIPASS_C_SOURCE_RUNS (Name INCLUDES LIBRARIES SOURCE RUNS) +# DEPRECATED! This is only included for backwards compatability. Use +# the more general MULTIPASS_SOURCE_RUNS instead. +# Always runs the given test, use this when you need to re-run tests +# because parent variables have made old cache entries stale. + +macro (FIND_PACKAGE_MULTIPASS _name _current) + string (TOUPPER ${_name} _NAME) + set (_args ${ARGV}) + list (REMOVE_AT _args 0 1) + + set (_states_current "YES") + list (GET _args 0 _cmd) + if (_cmd STREQUAL "STATES") + list (REMOVE_AT _args 0) + list (GET _args 0 _state) + while (_state AND NOT _state STREQUAL "DEPENDENTS") + # The name of the stored value for the given state + set (_stored_var PACKAGE_MULTIPASS_${_NAME}_${_state}) + if (NOT "${${_stored_var}}" STREQUAL "${${_NAME}_${_state}}") + set (_states_current "NO") + endif (NOT "${${_stored_var}}" STREQUAL "${${_NAME}_${_state}}") + set (${_stored_var} "${${_NAME}_${_state}}" CACHE INTERNAL "Stored state for ${_name}." FORCE) + list (REMOVE_AT _args 0) + list (GET _args 0 _state) + endwhile (_state AND NOT _state STREQUAL "DEPENDENTS") + endif (_cmd STREQUAL "STATES") + + set (_stored ${_NAME}_CURRENT) + if (NOT ${_stored}) + set (${_stored} "YES" CACHE BOOL "Is the configuration for ${_name} current? Set to \"NO\" to reconfigure." FORCE) + set (_states_current "NO") + endif (NOT ${_stored}) + + set (${_current} ${_states_current}) + if (NOT ${_current} AND PACKAGE_MULTIPASS_${_name}_CALLED) + message (STATUS "Clearing ${_name} dependent variables") + # Clear all the dependent variables so that the module can reset them + list (GET _args 0 _cmd) + if (_cmd STREQUAL "DEPENDENTS") + list (REMOVE_AT _args 0) + foreach (dep ${_args}) + set (${_NAME}_${dep} "NOTFOUND" CACHE INTERNAL "Cleared" FORCE) + endforeach (dep) + endif (_cmd STREQUAL "DEPENDENTS") + set (${_NAME}_FOUND "NOTFOUND" CACHE INTERNAL "Cleared" FORCE) + endif () + set (PACKAGE_MULTIPASS_${name}_CALLED YES CACHE INTERNAL "Private" FORCE) +endmacro (FIND_PACKAGE_MULTIPASS) + + +macro (MULTIPASS_SOURCE_RUNS includes libraries source runs language) + include (Check${language}SourceRuns) + # This is a ridiculous hack. CHECK_${language}_SOURCE_* thinks that if the + # *name* of the return variable doesn't change, then the test does + # not need to be re-run. We keep an internal count which we + # increment to guarantee that every test name is unique. If we've + # gotten here, then the configuration has changed enough that the + # test *needs* to be rerun. + if (NOT MULTIPASS_TEST_COUNT) + set (MULTIPASS_TEST_COUNT 00) + endif (NOT MULTIPASS_TEST_COUNT) + math (EXPR _tmp "${MULTIPASS_TEST_COUNT} + 1") # Why can't I add to a cache variable? + set (MULTIPASS_TEST_COUNT ${_tmp} CACHE INTERNAL "Unique test ID") + set (testname MULTIPASS_TEST_${MULTIPASS_TEST_COUNT}_${runs}) + set (CMAKE_REQUIRED_INCLUDES ${includes}) + set (CMAKE_REQUIRED_LIBRARIES ${libraries}) + if(${language} STREQUAL "C") + check_c_source_runs ("${source}" ${testname}) + elseif(${language} STREQUAL "CXX") + check_cxx_source_runs ("${source}" ${testname}) + endif() + set (${runs} "${${testname}}") +endmacro (MULTIPASS_SOURCE_RUNS) + +macro (MULTIPASS_C_SOURCE_RUNS includes libraries source runs) + multipass_source_runs("${includes}" "${libraries}" "${source}" ${runs} "C") +endmacro (MULTIPASS_C_SOURCE_RUNS) diff --git a/cmake_modules/FindTinyObjLoader.cmake b/cmake_modules/FindTinyObjLoader.cmake new file mode 100644 index 0000000000000000000000000000000000000000..3410fb89255b171376592f8a3aa4ccaf0a8bc9e9 --- /dev/null +++ b/cmake_modules/FindTinyObjLoader.cmake @@ -0,0 +1,99 @@ +# - Try to find LibHilbert +# Once done this will define +# +# TINYOBJLOADER_FOUND - system has TinyObjLoader +# TINYOBJLOADER_INCLUDE_DIRS - include directories for TinyObjLoader +# TINYOBJLOADER_LIBRARY_DIRS - library directories for TinyObjLoader +# TINYOBJLOADER_LIBRARIES - libraries for TinyObjLoader +# +#============================================================================= +# Copyright (C) 2010-2016 Pietro Incardona +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# +# 1. Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# 2. Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in +# the documentation and/or other materials provided with the +# distribution. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS +# FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE +# COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, +# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, +# BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN +# ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +# POSSIBILITY OF SUCH DAMAGE. +#============================================================================= + + +if (TINYOBJLOADER_FOUND OR TARGET tinyobjloader) + return() +endif() + +add_library(tinyobjloader INTERFACE IMPORTED) + +# Add libraries (static) +set(_libs "-L${TINYOBJLOADER_ROOT}/lib64 -ltinyobjloader") +set_property(TARGET tinyobjloader PROPERTY INTERFACE_LINK_LIBRARIES "${_libs}") + + +# Create LibHilbert test program +set(TINYOBJLOADER_TEST_LIB_CPP + "${CMAKE_CURRENT_BINARY_DIR}/CMakeFiles/tinyobjloader_test_lib.cpp") + + +file(WRITE ${TINYOBJLOADER_TEST_LIB_CPP} " +#define TINYOBJLOADER_IMPLEMENTATION +#include \"tiny_obj_loader.h\" + + +int main() +{ + std::string inputfile = \"null.obj\"; + tinyobj::attrib_t attrib; + std::vector<tinyobj::shape_t> shapes; + std::vector<tinyobj::material_t> materials; + + std::string err; + bool ret = tinyobj::LoadObj(&attrib, &shapes, &materials, &err, inputfile.c_str()); + + return 0; +} +") + +# Try to run test program (static linking) +try_run( + TINYOBJLOADER_TEST_LIB_EXITCODE + TINYOBJLOADER_TEST_LIB_COMPILED + ${CMAKE_CURRENT_BINARY_DIR} + ${TINYOBJLOADER_TEST_LIB_CPP} + CMAKE_FLAGS + "-DINCLUDE_DIRECTORIES:STRING=${TINYOBJLOADER_ROOT}/include" + "-DLINK_LIBRARIES:STRING=${TINYOBJLOADER_ROOT}/lib" + LINK_LIBRARIES tinyobjloader + COMPILE_OUTPUT_VARIABLE TINYOBJLOADER_TEST_LIB_COMPILE_OUTPUT + RUN_OUTPUT_VARIABLE TINYOBJLOADER_TEST_LIB_OUTPUT) + + +if (TINYOBJLOADER_TEST_LIB_COMPILED AND TINYOBJLOADER_TEST_LIB_EXITCODE EQUAL 0) + message(STATUS "Test TinyObjLoader_TEST_RUNS static linking - Success") + set(TINYOBJLOADER_TEST_RUNS TRUE) + set(TINYOBJLOADER_FOUND TRUE) + set(TINYOBJLOADER_INCLUDE_DIRS ${TINYOBJLOADER_ROOT}/include) + set(TINYOBJLOADER_LIBRARY_DIRS ${TINYOBJLOADER_ROOT}/lib64) + set(TINYOBJLOADER_LIBRARIES -ltinyobjloader) +else() + message(STATUS "Test TinyObjLoader_TEST_RUNS static linking - Failed") + set(TINYOBJLOADER_TEST_RUNS FALSE) +endif() + diff --git a/cmake_modules/ResolveCompilerPaths.cmake b/cmake_modules/ResolveCompilerPaths.cmake new file mode 100644 index 0000000000000000000000000000000000000000..54787fa38ffa50136414e6c788c50fb3c63746b8 --- /dev/null +++ b/cmake_modules/ResolveCompilerPaths.cmake @@ -0,0 +1,105 @@ +# ResolveCompilerPaths - this module defines two macros +# +# RESOLVE_LIBRARIES (XXX_LIBRARIES LINK_LINE) +# This macro is intended to be used by FindXXX.cmake modules. +# It parses a compiler link line and resolves all libraries +# (-lfoo) using the library path contexts (-L/path) in scope. +# The result in XXX_LIBRARIES is the list of fully resolved libs. +# Example: +# +# RESOLVE_LIBRARIES (FOO_LIBRARIES "-L/A -la -L/B -lb -lc -ld") +# +# will be resolved to +# +# FOO_LIBRARIES:STRING="/A/liba.so;/B/libb.so;/A/libc.so;/usr/lib/libd.so" +# +# if the filesystem looks like +# +# /A: liba.so libc.so +# /B: liba.so libb.so +# /usr/lib: liba.so libb.so libc.so libd.so +# +# and /usr/lib is a system directory. +# +# Note: If RESOLVE_LIBRARIES() resolves a link line differently from +# the native linker, there is a bug in this macro (please report it). +# +# RESOLVE_INCLUDES (XXX_INCLUDES INCLUDE_LINE) +# This macro is intended to be used by FindXXX.cmake modules. +# It parses a compile line and resolves all includes +# (-I/path/to/include) to a list of directories. Other flags are ignored. +# Example: +# +# RESOLVE_INCLUDES (FOO_INCLUDES "-I/A -DBAR='\"irrelevant -I/string here\"' -I/B") +# +# will be resolved to +# +# FOO_INCLUDES:STRING="/A;/B" +# +# assuming both directories exist. +# Note: as currently implemented, the -I/string will be picked up mistakenly (cry, cry) +include (CorrectWindowsPaths) + +macro (RESOLVE_LIBRARIES LIBS LINK_LINE) + string (REGEX MATCHALL "((-L|-l|-Wl)([^\" ]+|\"[^\"]+\")|[^\" ]+\\.(a|so|dll|lib))" _all_tokens "${LINK_LINE}") + set (_libs_found "") + set (_directory_list "") + foreach (token ${_all_tokens}) + if (token MATCHES "-L([^\" ]+|\"[^\"]+\")") + # If it's a library path, add it to the list + string (REGEX REPLACE "^-L" "" token ${token}) + string (REGEX REPLACE "//" "/" token ${token}) + convert_cygwin_path(token) + list (APPEND _directory_list ${token}) + elseif (token MATCHES "^(-l([^\" ]+|\"[^\"]+\")|[^\" ]+\\.(a|so|dll|lib))") + # It's a library, resolve the path by looking in the list and then (by default) in system directories + if (WIN32) #windows expects "libfoo", linux expects "foo" + string (REGEX REPLACE "^-l" "lib" token ${token}) + else (WIN32) + string (REGEX REPLACE "^-l" "" token ${token}) + endif (WIN32) + set (_root "") + if (token MATCHES "^/") # We have an absolute path + #separate into a path and a library name: + string (REGEX MATCH "[^/]*\\.(a|so|dll|lib)$" libname ${token}) + string (REGEX MATCH ".*[^${libname}$]" libpath ${token}) + convert_cygwin_path(libpath) + set (_directory_list ${_directory_list} ${libpath}) + set (token ${libname}) + endif (token MATCHES "^/") + set (_lib "NOTFOUND" CACHE FILEPATH "Cleared" FORCE) + find_library (_lib ${token} HINTS ${_directory_list} ${_root}) + if (_lib) + string (REPLACE "//" "/" _lib ${_lib}) + list (APPEND _libs_found ${_lib}) + else (_lib) + message (STATUS "Unable to find library ${token}") + endif (_lib) + endif (token MATCHES "-L([^\" ]+|\"[^\"]+\")") + endforeach (token) + set (_lib "NOTFOUND" CACHE INTERNAL "Scratch variable" FORCE) + # only the LAST occurence of each library is required since there should be no circular dependencies + if (_libs_found) + list (REVERSE _libs_found) + list (REMOVE_DUPLICATES _libs_found) + list (REVERSE _libs_found) + endif (_libs_found) + set (${LIBS} "${_libs_found}") +endmacro (RESOLVE_LIBRARIES) + +macro (RESOLVE_INCLUDES INCS COMPILE_LINE) + string (REGEX MATCHALL "-I([^\" ]+|\"[^\"]+\")" _all_tokens "${COMPILE_LINE}") + set (_incs_found "") + foreach (token ${_all_tokens}) + string (REGEX REPLACE "^-I" "" token ${token}) + string (REGEX REPLACE "//" "/" token ${token}) + convert_cygwin_path(token) + if (EXISTS ${token}) + list (APPEND _incs_found ${token}) + else (EXISTS ${token}) + message (STATUS "Include directory ${token} does not exist") + endif (EXISTS ${token}) + endforeach (token) + list (REMOVE_DUPLICATES _incs_found) + set (${INCS} "${_incs_found}") +endmacro (RESOLVE_INCLUDES) diff --git a/image/g_graph_hist.jpg b/image/g_graph_hist.jpg new file mode 100644 index 0000000000000000000000000000000000000000..eb94c8098ca8b8ad40ff25fb9857f80801c754e3 Binary files /dev/null and b/image/g_graph_hist.jpg differ diff --git a/image/g_graph_plot.jpg b/image/g_graph_plot.jpg new file mode 100644 index 0000000000000000000000000000000000000000..3c174a15cbfa7bb868d38cdec76b7b197db686e2 Binary files /dev/null and b/image/g_graph_plot.jpg differ diff --git a/image/g_graph_plot2.jpg b/image/g_graph_plot2.jpg new file mode 100644 index 0000000000000000000000000000000000000000..320553d86c3f8059fb301629c9a3dc408a7ebd46 Binary files /dev/null and b/image/g_graph_plot2.jpg differ diff --git a/install_HDF5.sh b/install_HDF5.sh new file mode 100755 index 0000000000000000000000000000000000000000..6477e1869f69f6904cff24b7229249e0a5ff2725 --- /dev/null +++ b/install_HDF5.sh @@ -0,0 +1,57 @@ +#! /bin/bash + +source script/discover_os + +discover_os + +# check if the directory $1/HDF5 exist + +if [ -d "$1/HDF5" -a -f "$1/HDF5/include/hdf5.h" ]; then + echo "HDF5 is already installed" + exit 0 +fi + +if [ ! -d "$1/ZLIB" -a x"$platform" != x"cygwin" ]; then + rm zlib-1.2.11.tar.gz + rm -rf zlib-1.2.11 + wget https://zlib.net/zlib-1.2.11.tar.gz + if [ $? -ne 0 ]; then + echo -e "\033[91;5;1m FAILED! Installation requires an Internet connection \033[0m" + exit 1 + fi + tar -xf zlib-1.2.11.tar.gz + cd zlib-1.2.11 + + CC=mpicc ./configure --prefix=$1/ZLIB + make -j $2 + cd .. + if [ $? -eq 0 ]; then + make check install + else + echo -e "\033[91;5;1m ZLIB Installation FAILED \033[0m" + exit 1 + fi + +else + echo "ZLIB is already installed" +fi + +### 1.8.19 does not compile on CYGWIN +wget http://ppmcore.mpi-cbg.de/upload/hdf5-1.10.7.tar.gz +tar -xf hdf5-1.10.7.tar.gz +cd hdf5-1.10.7 + +if [ x"$platform" != x"cygwin" ]; then + CC=mpicc ./configure --with-zlib=$1/ZLIB --enable-parallel --prefix=$1/HDF5 + make -j $2 +else + CC=mpicc ./configure --enable-parallel --prefix=$1/HDF5 + make CFLAGS=-D_POSIX_C_SOURCE -j $2 +fi +mkdir $1/HDF5 +make install +if [ $? -ne 0 ]; then + echo "HDF5 error installing" + exit 0 +fi +echo 3 > $1/HDF5/version diff --git a/install_MPI.sh b/install_MPI.sh new file mode 100755 index 0000000000000000000000000000000000000000..66fa52740360c63d247543d9664dc41d8006b642 --- /dev/null +++ b/install_MPI.sh @@ -0,0 +1,34 @@ +#!/bin/bash + +# check if the directory $1/MPI exist + +if [ -d "$1/MPI" ]; then + echo "MPI already installed" + exit 0 +fi + +./script/download_MPI.sh +cd openmpi-4.1.1 + +if [ -f ../mpi_add_options ]; then + mpi_options=$(cat ../mpi_add_options) + echo "Adding MPI options: $mpi_options" +fi + +if [ x"$3" == x"1" ]; then + echo "Installing MPI with GPU support" + + # Detect where is nvcc + cuda_location=$(dirname $(dirname $(which nvcc)) ) + + ./configure --with-hwloc=internal --with-libevent=internal $mpi_options --with-cuda=$cuda_location --prefix=$1/MPI --enable-mpi-fortran=yes CC=$4 CXX=$5 F77=$6 FC=$7 $8 +else + echo "Installing MPI without GPU support" + ./configure --with-hwloc=internal --with-libevent=internal $mpi_options --prefix=$1/MPI --enable-mpi-fortran=yes CC=$4 CXX=$5 F77=$6 FC=$7 $8 +fi +make -j $2 +make install + +# Mark the installation +echo 10 > $1/MPI/version + diff --git a/install_MPI_mpich.sh b/install_MPI_mpich.sh new file mode 100755 index 0000000000000000000000000000000000000000..07fe079cf3697ff9dac49428a8a622364c053dca --- /dev/null +++ b/install_MPI_mpich.sh @@ -0,0 +1,41 @@ +#!/bin/bash + +# check if the directory $1/MPI exist + +if [ -d "$1/MPI" ]; then + echo "MPI already installed" + exit 0 +fi +rm -rf mpich-3.4.2 +rm mpich-3.4.2.tar.gz +wget http://ppmcore.mpi-cbg.de/upload/mpich-3.4.2.tar.gz +tar -xvf mpich-3.4.2.tar.gz +cd mpich-3.4.2 + +# +# --disable-mca-dso \ +# --disable-sysv-shmem \ +# --enable-cxx-exceptions \ +# --with-threads=posix \ +# --without-cs-fs \ +# --with-mpi-param_check=always \ +# --enable-contrib-no-build=vt,libompitrace \ +# +#--enable-mca-no-build=paffinity,installdirs-windows,timer-windows,shmem-sysv +# +# + + +if [ x"$6" == x"1" ]; then + echo "Installing MPI with GPU support" + ./configure --prefix=$1/MPI --enable-fortran CC=$3 CXX=$4 F77=$5 FC=$5 FFLAGS=-fallow-argument-mismatch +else + echo "Installing MPI without GPU support" + ./configure --prefix=$1/MPI --enable-fortran CC=$3 CXX=$4 F77=$5 FC=$5 FFLAGS=-fallow-argument-mismatch +fi +make -j $2 +make install + +# Mark the installation +echo 4 > $1/MPI/version + diff --git a/install_VCDEVEL.sh b/install_VCDEVEL.sh index 671db944275766f0bda85f90f402504e82e6ebf6..fe67aa8f1fdccc9b266c4d266fdf89a5aa40a639 100755 --- a/install_VCDEVEL.sh +++ b/install_VCDEVEL.sh @@ -2,7 +2,11 @@ # check if the directory $1/VCDEVEL exist +<<<<<<< HEAD if [ -d "$1/VCDEVEL" && -f "$1/VCDEVEL/include/Vc/Vc" ]; then +======= +if [ -d "$1/VCDEVEL" -a -f "$1/VCDEVEL/include/Vc/Vc" ]; then +>>>>>>> origin/master echo "VCDEVEL already installed" exit 0 fi @@ -13,7 +17,11 @@ tar -xf Vc-1.4.1.tar.gz cd Vc-1.4.1 mkdir build cd build +<<<<<<< HEAD cmake -DCMAKE_INSTALL_PREFIX:PATH=$1/VCDEVEL .. +======= +cmake -DCMAKE_INSTALL_PREFIX:PATH=$1/VCDEVEL -DCMAKE_C_COMPILER=$3 -DCMAKE_CXX_COMPILER=$4 .. +>>>>>>> origin/master make make install diff --git a/openfpm_io.doc b/openfpm_io.doc new file mode 100644 index 0000000000000000000000000000000000000000..a8340ae302cf064df6b549895504f17f83193847 --- /dev/null +++ b/openfpm_io.doc @@ -0,0 +1,2303 @@ +# Doxyfile 1.8.6 + +# This file describes the settings to be used by the documentation system +# doxygen (www.doxygen.org) for a project. +# +# All text after a double hash (##) is considered a comment and is placed in +# front of the TAG it is preceding. +# +# All text after a single hash (#) is considered a comment and will be ignored. +# The format is: +# TAG = value [value, ...] +# For lists, items can also be appended using: +# TAG += value [value, ...] +# Values that contain spaces should be placed between quotes (\" \"). + +#--------------------------------------------------------------------------- +# Project related configuration options +#--------------------------------------------------------------------------- + +# This tag specifies the encoding used for all characters in the config file +# that follow. The default is UTF-8 which is also the encoding used for all text +# before the first occurrence of this tag. Doxygen uses libiconv (or the iconv +# built into libc) for the transcoding. See http://www.gnu.org/software/libiconv +# for the list of possible encodings. +# The default value is: UTF-8. + +DOXYFILE_ENCODING = UTF-8 + +# The PROJECT_NAME tag is a single word (or a sequence of words surrounded by +# double-quotes, unless you are using Doxywizard) that should identify the +# project for which the documentation is generated. This name is used in the +# title of most generated pages and in a few other places. +# The default value is: My Project. + +PROJECT_NAME = "OpenFPM_io" + +# The PROJECT_NUMBER tag can be used to enter a project or revision number. This +# could be handy for archiving the generated documentation or if some version +# control system is used. + +PROJECT_NUMBER = 0.2.0 + +# Using the PROJECT_BRIEF tag one can provide an optional one line description +# for a project that appears at the top of each page and should give viewer a +# quick idea about the purpose of the project. Keep the description short. + +PROJECT_BRIEF = "Project that contain the implementation and interfaces for basic structure like vectors, grids, graph ... ." + +# With the PROJECT_LOGO tag one can specify an logo or icon that is included in +# the documentation. The maximum height of the logo should not exceed 55 pixels +# and the maximum width should not exceed 200 pixels. Doxygen will copy the logo +# to the output directory. + +PROJECT_LOGO = + +# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) path +# into which the generated documentation will be written. If a relative path is +# entered, it will be relative to the location where doxygen was started. If +# left blank the current directory will be used. + +OUTPUT_DIRECTORY = doxygen/ + +# If the CREATE_SUBDIRS tag is set to YES, then doxygen will create 4096 sub- +# directories (in 2 levels) under the output directory of each output format and +# will distribute the generated files over these directories. Enabling this +# option can be useful when feeding doxygen a huge amount of source files, where +# putting all generated files in the same directory would otherwise causes +# performance problems for the file system. +# The default value is: NO. + +CREATE_SUBDIRS = NO + +# The OUTPUT_LANGUAGE tag is used to specify the language in which all +# documentation generated by doxygen is written. Doxygen will use this +# information to generate all constant output in the proper language. +# Possible values are: Afrikaans, Arabic, Armenian, Brazilian, Catalan, Chinese, +# Chinese-Traditional, Croatian, Czech, Danish, Dutch, English (United States), +# Esperanto, Farsi (Persian), Finnish, French, German, Greek, Hungarian, +# Indonesian, Italian, Japanese, Japanese-en (Japanese with English messages), +# Korean, Korean-en (Korean with English messages), Latvian, Lithuanian, +# Macedonian, Norwegian, Persian (Farsi), Polish, Portuguese, Romanian, Russian, +# Serbian, Serbian-Cyrillic, Slovak, Slovene, Spanish, Swedish, Turkish, +# Ukrainian and Vietnamese. +# The default value is: English. + +OUTPUT_LANGUAGE = English + +# If the BRIEF_MEMBER_DESC tag is set to YES doxygen will include brief member +# descriptions after the members that are listed in the file and class +# documentation (similar to Javadoc). Set to NO to disable this. +# The default value is: YES. + +BRIEF_MEMBER_DESC = YES + +# If the REPEAT_BRIEF tag is set to YES doxygen will prepend the brief +# description of a member or function before the detailed description +# +# Note: If both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the +# brief descriptions will be completely suppressed. +# The default value is: YES. + +REPEAT_BRIEF = YES + +# This tag implements a quasi-intelligent brief description abbreviator that is +# used to form the text in various listings. Each string in this list, if found +# as the leading text of the brief description, will be stripped from the text +# and the result, after processing the whole list, is used as the annotated +# text. Otherwise, the brief description is used as-is. If left blank, the +# following values are used ($name is automatically replaced with the name of +# the entity):The $name class, The $name widget, The $name file, is, provides, +# specifies, contains, represents, a, an and the. + +ABBREVIATE_BRIEF = + +# If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then +# doxygen will generate a detailed section even if there is only a brief +# description. +# The default value is: NO. + +ALWAYS_DETAILED_SEC = NO + +# If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show all +# inherited members of a class in the documentation of that class as if those +# members were ordinary class members. Constructors, destructors and assignment +# operators of the base classes will not be shown. +# The default value is: NO. + +INLINE_INHERITED_MEMB = NO + +# If the FULL_PATH_NAMES tag is set to YES doxygen will prepend the full path +# before files name in the file list and in the header files. If set to NO the +# shortest path that makes the file name unique will be used +# The default value is: YES. + +FULL_PATH_NAMES = YES + +# The STRIP_FROM_PATH tag can be used to strip a user-defined part of the path. +# Stripping is only done if one of the specified strings matches the left-hand +# part of the path. The tag can be used to show relative paths in the file list. +# If left blank the directory from which doxygen is run is used as the path to +# strip. +# +# Note that you can specify absolute paths here, but also relative paths, which +# will be relative from the directory where doxygen is started. +# This tag requires that the tag FULL_PATH_NAMES is set to YES. + +STRIP_FROM_PATH = + +# The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of the +# path mentioned in the documentation of a class, which tells the reader which +# header file to include in order to use a class. If left blank only the name of +# the header file containing the class definition is used. Otherwise one should +# specify the list of include paths that are normally passed to the compiler +# using the -I flag. + +STRIP_FROM_INC_PATH = + +# If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter (but +# less readable) file names. This can be useful is your file systems doesn't +# support long names like on DOS, Mac, or CD-ROM. +# The default value is: NO. + +SHORT_NAMES = NO + +# If the JAVADOC_AUTOBRIEF tag is set to YES then doxygen will interpret the +# first line (until the first dot) of a Javadoc-style comment as the brief +# description. If set to NO, the Javadoc-style will behave just like regular Qt- +# style comments (thus requiring an explicit @brief command for a brief +# description.) +# The default value is: NO. + +JAVADOC_AUTOBRIEF = NO + +# If the QT_AUTOBRIEF tag is set to YES then doxygen will interpret the first +# line (until the first dot) of a Qt-style comment as the brief description. If +# set to NO, the Qt-style will behave just like regular Qt-style comments (thus +# requiring an explicit \brief command for a brief description.) +# The default value is: NO. + +QT_AUTOBRIEF = NO + +# The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make doxygen treat a +# multi-line C++ special comment block (i.e. a block of //! or /// comments) as +# a brief description. This used to be the default behavior. The new default is +# to treat a multi-line C++ comment block as a detailed description. Set this +# tag to YES if you prefer the old behavior instead. +# +# Note that setting this tag to YES also means that rational rose comments are +# not recognized any more. +# The default value is: NO. + +MULTILINE_CPP_IS_BRIEF = NO + +# If the INHERIT_DOCS tag is set to YES then an undocumented member inherits the +# documentation from any documented member that it re-implements. +# The default value is: YES. + +INHERIT_DOCS = YES + +# If the SEPARATE_MEMBER_PAGES tag is set to YES, then doxygen will produce a +# new page for each member. If set to NO, the documentation of a member will be +# part of the file/class/namespace that contains it. +# The default value is: NO. + +SEPARATE_MEMBER_PAGES = NO + +# The TAB_SIZE tag can be used to set the number of spaces in a tab. Doxygen +# uses this value to replace tabs by spaces in code fragments. +# Minimum value: 1, maximum value: 16, default value: 4. + +TAB_SIZE = 4 + +# This tag can be used to specify a number of aliases that act as commands in +# the documentation. An alias has the form: +# name=value +# For example adding +# "sideeffect=@par Side Effects:\n" +# will allow you to put the command \sideeffect (or @sideeffect) in the +# documentation, which will result in a user-defined paragraph with heading +# "Side Effects:". You can put \n's in the value part of an alias to insert +# newlines. + +ALIASES = + +# This tag can be used to specify a number of word-keyword mappings (TCL only). +# A mapping has the form "name=value". For example adding "class=itcl::class" +# will allow you to use the command class in the itcl::class meaning. + +TCL_SUBST = + +# Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C sources +# only. Doxygen will then generate output that is more tailored for C. For +# instance, some of the names that are used will be different. The list of all +# members will be omitted, etc. +# The default value is: NO. + +OPTIMIZE_OUTPUT_FOR_C = YES + +# Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java or +# Python sources only. Doxygen will then generate output that is more tailored +# for that language. For instance, namespaces will be presented as packages, +# qualified scopes will look different, etc. +# The default value is: NO. + +OPTIMIZE_OUTPUT_JAVA = NO + +# Set the OPTIMIZE_FOR_FORTRAN tag to YES if your project consists of Fortran +# sources. Doxygen will then generate output that is tailored for Fortran. +# The default value is: NO. + +OPTIMIZE_FOR_FORTRAN = NO + +# Set the OPTIMIZE_OUTPUT_VHDL tag to YES if your project consists of VHDL +# sources. Doxygen will then generate output that is tailored for VHDL. +# The default value is: NO. + +OPTIMIZE_OUTPUT_VHDL = NO + +# Doxygen selects the parser to use depending on the extension of the files it +# parses. With this tag you can assign which parser to use for a given +# extension. Doxygen has a built-in mapping, but you can override or extend it +# using this tag. The format is ext=language, where ext is a file extension, and +# language is one of the parsers supported by doxygen: IDL, Java, Javascript, +# C#, C, C++, D, PHP, Objective-C, Python, Fortran, VHDL. For instance to make +# doxygen treat .inc files as Fortran files (default is PHP), and .f files as C +# (default is Fortran), use: inc=Fortran f=C. +# +# Note For files without extension you can use no_extension as a placeholder. +# +# Note that for custom extensions you also need to set FILE_PATTERNS otherwise +# the files are not read by doxygen. + +EXTENSION_MAPPING = + +# If the MARKDOWN_SUPPORT tag is enabled then doxygen pre-processes all comments +# according to the Markdown format, which allows for more readable +# documentation. See http://daringfireball.net/projects/markdown/ for details. +# The output of markdown processing is further processed by doxygen, so you can +# mix doxygen, HTML, and XML commands with Markdown formatting. Disable only in +# case of backward compatibilities issues. +# The default value is: YES. + +MARKDOWN_SUPPORT = YES + +# When enabled doxygen tries to link words that correspond to documented +# classes, or namespaces to their corresponding documentation. Such a link can +# be prevented in individual cases by by putting a % sign in front of the word +# or globally by setting AUTOLINK_SUPPORT to NO. +# The default value is: YES. + +AUTOLINK_SUPPORT = YES + +# If you use STL classes (i.e. std::string, std::vector, etc.) but do not want +# to include (a tag file for) the STL sources as input, then you should set this +# tag to YES in order to let doxygen match functions declarations and +# definitions whose arguments contain STL classes (e.g. func(std::string); +# versus func(std::string) {}). This also make the inheritance and collaboration +# diagrams that involve STL classes more complete and accurate. +# The default value is: NO. + +BUILTIN_STL_SUPPORT = NO + +# If you use Microsoft's C++/CLI language, you should set this option to YES to +# enable parsing support. +# The default value is: NO. + +CPP_CLI_SUPPORT = NO + +# Set the SIP_SUPPORT tag to YES if your project consists of sip (see: +# http://www.riverbankcomputing.co.uk/software/sip/intro) sources only. Doxygen +# will parse them like normal C++ but will assume all classes use public instead +# of private inheritance when no explicit protection keyword is present. +# The default value is: NO. + +SIP_SUPPORT = NO + +# For Microsoft's IDL there are propget and propput attributes to indicate +# getter and setter methods for a property. Setting this option to YES will make +# doxygen to replace the get and set methods by a property in the documentation. +# This will only work if the methods are indeed getting or setting a simple +# type. If this is not the case, or you want to show the methods anyway, you +# should set this option to NO. +# The default value is: YES. + +IDL_PROPERTY_SUPPORT = NO + +# If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC +# tag is set to YES, then doxygen will reuse the documentation of the first +# member in the group (if any) for the other members of the group. By default +# all members of a group must be documented explicitly. +# The default value is: NO. + +DISTRIBUTE_GROUP_DOC = NO + +# Set the SUBGROUPING tag to YES to allow class member groups of the same type +# (for instance a group of public functions) to be put as a subgroup of that +# type (e.g. under the Public Functions section). Set it to NO to prevent +# subgrouping. Alternatively, this can be done per class using the +# \nosubgrouping command. +# The default value is: YES. + +SUBGROUPING = YES + +# When the INLINE_GROUPED_CLASSES tag is set to YES, classes, structs and unions +# are shown inside the group in which they are included (e.g. using \ingroup) +# instead of on a separate page (for HTML and Man pages) or section (for LaTeX +# and RTF). +# +# Note that this feature does not work in combination with +# SEPARATE_MEMBER_PAGES. +# The default value is: NO. + +INLINE_GROUPED_CLASSES = NO + +# When the INLINE_SIMPLE_STRUCTS tag is set to YES, structs, classes, and unions +# with only public data fields or simple typedef fields will be shown inline in +# the documentation of the scope in which they are defined (i.e. file, +# namespace, or group documentation), provided this scope is documented. If set +# to NO, structs, classes, and unions are shown on a separate page (for HTML and +# Man pages) or section (for LaTeX and RTF). +# The default value is: NO. + +INLINE_SIMPLE_STRUCTS = NO + +# When TYPEDEF_HIDES_STRUCT tag is enabled, a typedef of a struct, union, or +# enum is documented as struct, union, or enum with the name of the typedef. So +# typedef struct TypeS {} TypeT, will appear in the documentation as a struct +# with name TypeT. When disabled the typedef will appear as a member of a file, +# namespace, or class. And the struct will be named TypeS. This can typically be +# useful for C code in case the coding convention dictates that all compound +# types are typedef'ed and only the typedef is referenced, never the tag name. +# The default value is: NO. + +TYPEDEF_HIDES_STRUCT = NO + +# The size of the symbol lookup cache can be set using LOOKUP_CACHE_SIZE. This +# cache is used to resolve symbols given their name and scope. Since this can be +# an expensive process and often the same symbol appears multiple times in the +# code, doxygen keeps a cache of pre-resolved symbols. If the cache is too small +# doxygen will become slower. If the cache is too large, memory is wasted. The +# cache size is given by this formula: 2^(16+LOOKUP_CACHE_SIZE). The valid range +# is 0..9, the default is 0, corresponding to a cache size of 2^16=65536 +# symbols. At the end of a run doxygen will report the cache usage and suggest +# the optimal cache size from a speed point of view. +# Minimum value: 0, maximum value: 9, default value: 0. + +LOOKUP_CACHE_SIZE = 0 + +#--------------------------------------------------------------------------- +# Build related configuration options +#--------------------------------------------------------------------------- + +# If the EXTRACT_ALL tag is set to YES doxygen will assume all entities in +# documentation are documented, even if no documentation was available. Private +# class members and static file members will be hidden unless the +# EXTRACT_PRIVATE respectively EXTRACT_STATIC tags are set to YES. +# Note: This will also disable the warnings about undocumented members that are +# normally produced when WARNINGS is set to YES. +# The default value is: NO. + +EXTRACT_ALL = NO + +# If the EXTRACT_PRIVATE tag is set to YES all private members of a class will +# be included in the documentation. +# The default value is: NO. + +EXTRACT_PRIVATE = YES + +# If the EXTRACT_PACKAGE tag is set to YES all members with package or internal +# scope will be included in the documentation. +# The default value is: NO. + +EXTRACT_PACKAGE = YES + +# If the EXTRACT_STATIC tag is set to YES all static members of a file will be +# included in the documentation. +# The default value is: NO. + +EXTRACT_STATIC = YES + +# If the EXTRACT_LOCAL_CLASSES tag is set to YES classes (and structs) defined +# locally in source files will be included in the documentation. If set to NO +# only classes defined in header files are included. Does not have any effect +# for Java sources. +# The default value is: YES. + +EXTRACT_LOCAL_CLASSES = YES + +# This flag is only useful for Objective-C code. When set to YES local methods, +# which are defined in the implementation section but not in the interface are +# included in the documentation. If set to NO only methods in the interface are +# included. +# The default value is: NO. + +EXTRACT_LOCAL_METHODS = NO + +# If this flag is set to YES, the members of anonymous namespaces will be +# extracted and appear in the documentation as a namespace called +# 'anonymous_namespace{file}', where file will be replaced with the base name of +# the file that contains the anonymous namespace. By default anonymous namespace +# are hidden. +# The default value is: NO. + +EXTRACT_ANON_NSPACES = NO + +# If the HIDE_UNDOC_MEMBERS tag is set to YES, doxygen will hide all +# undocumented members inside documented classes or files. If set to NO these +# members will be included in the various overviews, but no documentation +# section is generated. This option has no effect if EXTRACT_ALL is enabled. +# The default value is: NO. + +HIDE_UNDOC_MEMBERS = NO + +# If the HIDE_UNDOC_CLASSES tag is set to YES, doxygen will hide all +# undocumented classes that are normally visible in the class hierarchy. If set +# to NO these classes will be included in the various overviews. This option has +# no effect if EXTRACT_ALL is enabled. +# The default value is: NO. + +HIDE_UNDOC_CLASSES = NO + +# If the HIDE_FRIEND_COMPOUNDS tag is set to YES, doxygen will hide all friend +# (class|struct|union) declarations. If set to NO these declarations will be +# included in the documentation. +# The default value is: NO. + +HIDE_FRIEND_COMPOUNDS = NO + +# If the HIDE_IN_BODY_DOCS tag is set to YES, doxygen will hide any +# documentation blocks found inside the body of a function. If set to NO these +# blocks will be appended to the function's detailed documentation block. +# The default value is: NO. + +HIDE_IN_BODY_DOCS = NO + +# The INTERNAL_DOCS tag determines if documentation that is typed after a +# \internal command is included. If the tag is set to NO then the documentation +# will be excluded. Set it to YES to include the internal documentation. +# The default value is: NO. + +INTERNAL_DOCS = NO + +# If the CASE_SENSE_NAMES tag is set to NO then doxygen will only generate file +# names in lower-case letters. If set to YES upper-case letters are also +# allowed. This is useful if you have classes or files whose names only differ +# in case and if your file system supports case sensitive file names. Windows +# and Mac users are advised to set this option to NO. +# The default value is: system dependent. + +CASE_SENSE_NAMES = YES + +# If the HIDE_SCOPE_NAMES tag is set to NO then doxygen will show members with +# their full class and namespace scopes in the documentation. If set to YES the +# scope will be hidden. +# The default value is: NO. + +HIDE_SCOPE_NAMES = NO + +# If the SHOW_INCLUDE_FILES tag is set to YES then doxygen will put a list of +# the files that are included by a file in the documentation of that file. +# The default value is: YES. + +SHOW_INCLUDE_FILES = YES + +# If the SHOW_GROUPED_MEMB_INC tag is set to YES then Doxygen will add for each +# grouped member an include statement to the documentation, telling the reader +# which file to include in order to use the member. +# The default value is: NO. + +SHOW_GROUPED_MEMB_INC = NO + +# If the FORCE_LOCAL_INCLUDES tag is set to YES then doxygen will list include +# files with double quotes in the documentation rather than with sharp brackets. +# The default value is: NO. + +FORCE_LOCAL_INCLUDES = NO + +# If the INLINE_INFO tag is set to YES then a tag [inline] is inserted in the +# documentation for inline members. +# The default value is: YES. + +INLINE_INFO = YES + +# If the SORT_MEMBER_DOCS tag is set to YES then doxygen will sort the +# (detailed) documentation of file and class members alphabetically by member +# name. If set to NO the members will appear in declaration order. +# The default value is: YES. + +SORT_MEMBER_DOCS = YES + +# If the SORT_BRIEF_DOCS tag is set to YES then doxygen will sort the brief +# descriptions of file, namespace and class members alphabetically by member +# name. If set to NO the members will appear in declaration order. Note that +# this will also influence the order of the classes in the class list. +# The default value is: NO. + +SORT_BRIEF_DOCS = NO + +# If the SORT_MEMBERS_CTORS_1ST tag is set to YES then doxygen will sort the +# (brief and detailed) documentation of class members so that constructors and +# destructors are listed first. If set to NO the constructors will appear in the +# respective orders defined by SORT_BRIEF_DOCS and SORT_MEMBER_DOCS. +# Note: If SORT_BRIEF_DOCS is set to NO this option is ignored for sorting brief +# member documentation. +# Note: If SORT_MEMBER_DOCS is set to NO this option is ignored for sorting +# detailed member documentation. +# The default value is: NO. + +SORT_MEMBERS_CTORS_1ST = NO + +# If the SORT_GROUP_NAMES tag is set to YES then doxygen will sort the hierarchy +# of group names into alphabetical order. If set to NO the group names will +# appear in their defined order. +# The default value is: NO. + +SORT_GROUP_NAMES = NO + +# If the SORT_BY_SCOPE_NAME tag is set to YES, the class list will be sorted by +# fully-qualified names, including namespaces. If set to NO, the class list will +# be sorted only by class name, not including the namespace part. +# Note: This option is not very useful if HIDE_SCOPE_NAMES is set to YES. +# Note: This option applies only to the class list, not to the alphabetical +# list. +# The default value is: NO. + +SORT_BY_SCOPE_NAME = NO + +# If the STRICT_PROTO_MATCHING option is enabled and doxygen fails to do proper +# type resolution of all parameters of a function it will reject a match between +# the prototype and the implementation of a member function even if there is +# only one candidate or it is obvious which candidate to choose by doing a +# simple string match. By disabling STRICT_PROTO_MATCHING doxygen will still +# accept a match between prototype and implementation in such cases. +# The default value is: NO. + +STRICT_PROTO_MATCHING = NO + +# The GENERATE_TODOLIST tag can be used to enable ( YES) or disable ( NO) the +# todo list. This list is created by putting \todo commands in the +# documentation. +# The default value is: YES. + +GENERATE_TODOLIST = YES + +# The GENERATE_TESTLIST tag can be used to enable ( YES) or disable ( NO) the +# test list. This list is created by putting \test commands in the +# documentation. +# The default value is: YES. + +GENERATE_TESTLIST = YES + +# The GENERATE_BUGLIST tag can be used to enable ( YES) or disable ( NO) the bug +# list. This list is created by putting \bug commands in the documentation. +# The default value is: YES. + +GENERATE_BUGLIST = YES + +# The GENERATE_DEPRECATEDLIST tag can be used to enable ( YES) or disable ( NO) +# the deprecated list. This list is created by putting \deprecated commands in +# the documentation. +# The default value is: YES. + +GENERATE_DEPRECATEDLIST= YES + +# The ENABLED_SECTIONS tag can be used to enable conditional documentation +# sections, marked by \if <section_label> ... \endif and \cond <section_label> +# ... \endcond blocks. + +ENABLED_SECTIONS = + +# The MAX_INITIALIZER_LINES tag determines the maximum number of lines that the +# initial value of a variable or macro / define can have for it to appear in the +# documentation. If the initializer consists of more lines than specified here +# it will be hidden. Use a value of 0 to hide initializers completely. The +# appearance of the value of individual variables and macros / defines can be +# controlled using \showinitializer or \hideinitializer command in the +# documentation regardless of this setting. +# Minimum value: 0, maximum value: 10000, default value: 30. + +MAX_INITIALIZER_LINES = 30 + +# Set the SHOW_USED_FILES tag to NO to disable the list of files generated at +# the bottom of the documentation of classes and structs. If set to YES the list +# will mention the files that were used to generate the documentation. +# The default value is: YES. + +SHOW_USED_FILES = YES + +# Set the SHOW_FILES tag to NO to disable the generation of the Files page. This +# will remove the Files entry from the Quick Index and from the Folder Tree View +# (if specified). +# The default value is: YES. + +SHOW_FILES = YES + +# Set the SHOW_NAMESPACES tag to NO to disable the generation of the Namespaces +# page. This will remove the Namespaces entry from the Quick Index and from the +# Folder Tree View (if specified). +# The default value is: YES. + +SHOW_NAMESPACES = YES + +# The FILE_VERSION_FILTER tag can be used to specify a program or script that +# doxygen should invoke to get the current version for each file (typically from +# the version control system). Doxygen will invoke the program by executing (via +# popen()) the command command input-file, where command is the value of the +# FILE_VERSION_FILTER tag, and input-file is the name of an input file provided +# by doxygen. Whatever the program writes to standard output is used as the file +# version. For an example see the documentation. + +FILE_VERSION_FILTER = + +# The LAYOUT_FILE tag can be used to specify a layout file which will be parsed +# by doxygen. The layout file controls the global structure of the generated +# output files in an output format independent way. To create the layout file +# that represents doxygen's defaults, run doxygen with the -l option. You can +# optionally specify a file name after the option, if omitted DoxygenLayout.xml +# will be used as the name of the layout file. +# +# Note that if you run doxygen from a directory containing a file called +# DoxygenLayout.xml, doxygen will parse it automatically even if the LAYOUT_FILE +# tag is left empty. + +LAYOUT_FILE = DoxygenLayout.xml + +# The CITE_BIB_FILES tag can be used to specify one or more bib files containing +# the reference definitions. This must be a list of .bib files. The .bib +# extension is automatically appended if omitted. This requires the bibtex tool +# to be installed. See also http://en.wikipedia.org/wiki/BibTeX for more info. +# For LaTeX the style of the bibliography can be controlled using +# LATEX_BIB_STYLE. To use this feature you need bibtex and perl available in the +# search path. Do not use file names with spaces, bibtex cannot handle them. See +# also \cite for info how to create references. + +CITE_BIB_FILES = + +#--------------------------------------------------------------------------- +# Configuration options related to warning and progress messages +#--------------------------------------------------------------------------- + +# The QUIET tag can be used to turn on/off the messages that are generated to +# standard output by doxygen. If QUIET is set to YES this implies that the +# messages are off. +# The default value is: NO. + +QUIET = NO + +# The WARNINGS tag can be used to turn on/off the warning messages that are +# generated to standard error ( stderr) by doxygen. If WARNINGS is set to YES +# this implies that the warnings are on. +# +# Tip: Turn warnings on while writing the documentation. +# The default value is: YES. + +WARNINGS = YES + +# If the WARN_IF_UNDOCUMENTED tag is set to YES, then doxygen will generate +# warnings for undocumented members. If EXTRACT_ALL is set to YES then this flag +# will automatically be disabled. +# The default value is: YES. + +WARN_IF_UNDOCUMENTED = YES + +# If the WARN_IF_DOC_ERROR tag is set to YES, doxygen will generate warnings for +# potential errors in the documentation, such as not documenting some parameters +# in a documented function, or documenting parameters that don't exist or using +# markup commands wrongly. +# The default value is: YES. + +WARN_IF_DOC_ERROR = YES + +# This WARN_NO_PARAMDOC option can be enabled to get warnings for functions that +# are documented, but have no documentation for their parameters or return +# value. If set to NO doxygen will only warn about wrong or incomplete parameter +# documentation, but not about the absence of documentation. +# The default value is: NO. + +WARN_NO_PARAMDOC = YES + +# The WARN_FORMAT tag determines the format of the warning messages that doxygen +# can produce. The string should contain the $file, $line, and $text tags, which +# will be replaced by the file and line number from which the warning originated +# and the warning text. Optionally the format may contain $version, which will +# be replaced by the version of the file (if it could be obtained via +# FILE_VERSION_FILTER) +# The default value is: $file:$line: $text. + +WARN_FORMAT = "$file:$line: $text" + +# The WARN_LOGFILE tag can be used to specify a file to which warning and error +# messages should be written. If left blank the output is written to standard +# error (stderr). + +WARN_LOGFILE = + +#--------------------------------------------------------------------------- +# Configuration options related to the input files +#--------------------------------------------------------------------------- + +# The INPUT tag is used to specify the files and/or directories that contain +# documented source files. You may enter file names like myfile.cpp or +# directories like /usr/src/myproject. Separate the files or directories with +# spaces. +# Note: If this tag is empty the current directory is searched. + +INPUT = src + +# This tag can be used to specify the character encoding of the source files +# that doxygen parses. Internally doxygen uses the UTF-8 encoding. Doxygen uses +# libiconv (or the iconv built into libc) for the transcoding. See the libiconv +# documentation (see: http://www.gnu.org/software/libiconv) for the list of +# possible encodings. +# The default value is: UTF-8. + +INPUT_ENCODING = UTF-8 + +# If the value of the INPUT tag contains directories, you can use the +# FILE_PATTERNS tag to specify one or more wildcard patterns (like *.cpp and +# *.h) to filter out the source-files in the directories. If left blank the +# following patterns are tested:*.c, *.cc, *.cxx, *.cpp, *.c++, *.java, *.ii, +# *.ixx, *.ipp, *.i++, *.inl, *.idl, *.ddl, *.odl, *.h, *.hh, *.hxx, *.hpp, +# *.h++, *.cs, *.d, *.php, *.php4, *.php5, *.phtml, *.inc, *.m, *.markdown, +# *.md, *.mm, *.dox, *.py, *.f90, *.f, *.for, *.tcl, *.vhd, *.vhdl, *.ucf, +# *.qsf, *.as and *.js. + +FILE_PATTERNS = *.hpp *.cpp *.ipp *.h + +# The RECURSIVE tag can be used to specify whether or not subdirectories should +# be searched for input files as well. +# The default value is: NO. + +RECURSIVE = YES + +# The EXCLUDE tag can be used to specify files and/or directories that should be +# excluded from the INPUT source files. This way you can easily exclude a +# subdirectory from a directory tree whose root is specified with the INPUT tag. +# +# Note that relative paths are relative to the directory from which doxygen is +# run. + +EXCLUDE = + +# The EXCLUDE_SYMLINKS tag can be used to select whether or not files or +# directories that are symbolic links (a Unix file system feature) are excluded +# from the input. +# The default value is: NO. + +EXCLUDE_SYMLINKS = NO + +# If the value of the INPUT tag contains directories, you can use the +# EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude +# certain files from those directories. +# +# Note that the wildcards are matched against the file with absolute path, so to +# exclude all test directories for example use the pattern */test/* + +EXCLUDE_PATTERNS =*/map_units_test/* */for_each_ref.hpp + +# The EXCLUDE_SYMBOLS tag can be used to specify one or more symbol names +# (namespaces, classes, functions, etc.) that should be excluded from the +# output. The symbol name can be a fully qualified name, a word, or if the +# wildcard * is used, a substring. Examples: ANamespace, AClass, +# AClass::ANamespace, ANamespace::*Test +# +# Note that the wildcards are matched against the file with absolute path, so to +# exclude all test directories use the pattern */test/* + +EXCLUDE_SYMBOLS = + +# The EXAMPLE_PATH tag can be used to specify one or more files or directories +# that contain example code fragments that are included (see the \include +# command). + +EXAMPLE_PATH = src + +# If the value of the EXAMPLE_PATH tag contains directories, you can use the +# EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp and +# *.h) to filter out the source-files in the directories. If left blank all +# files are included. + +EXAMPLE_PATTERNS = + +# If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be +# searched for input files to be used with the \include or \dontinclude commands +# irrespective of the value of the RECURSIVE tag. +# The default value is: NO. + +EXAMPLE_RECURSIVE = YES + +# The IMAGE_PATH tag can be used to specify one or more files or directories +# that contain images that are to be included in the documentation (see the +# \image command). + +IMAGE_PATH = image + +# The INPUT_FILTER tag can be used to specify a program that doxygen should +# invoke to filter for each input file. Doxygen will invoke the filter program +# by executing (via popen()) the command: +# +# <filter> <input-file> +# +# where <filter> is the value of the INPUT_FILTER tag, and <input-file> is the +# name of an input file. Doxygen will then use the output that the filter +# program writes to standard output. If FILTER_PATTERNS is specified, this tag +# will be ignored. +# +# Note that the filter must not add or remove lines; it is applied before the +# code is scanned, but not when the output code is generated. If lines are added +# or removed, the anchors will not be placed correctly. + +INPUT_FILTER = + +# The FILTER_PATTERNS tag can be used to specify filters on a per file pattern +# basis. Doxygen will compare the file name with each pattern and apply the +# filter if there is a match. The filters are a list of the form: pattern=filter +# (like *.cpp=my_cpp_filter). See INPUT_FILTER for further information on how +# filters are used. If the FILTER_PATTERNS tag is empty or if none of the +# patterns match the file name, INPUT_FILTER is applied. + +FILTER_PATTERNS = + +# If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using +# INPUT_FILTER ) will also be used to filter the input files that are used for +# producing the source files to browse (i.e. when SOURCE_BROWSER is set to YES). +# The default value is: NO. + +FILTER_SOURCE_FILES = NO + +# The FILTER_SOURCE_PATTERNS tag can be used to specify source filters per file +# pattern. A pattern will override the setting for FILTER_PATTERN (if any) and +# it is also possible to disable source filtering for a specific pattern using +# *.ext= (so without naming a filter). +# This tag requires that the tag FILTER_SOURCE_FILES is set to YES. + +FILTER_SOURCE_PATTERNS = + +# If the USE_MDFILE_AS_MAINPAGE tag refers to the name of a markdown file that +# is part of the input, its contents will be placed on the main page +# (index.html). This can be useful if you have a project on for instance GitHub +# and want to reuse the introduction page also for the doxygen output. + +USE_MDFILE_AS_MAINPAGE = + +#--------------------------------------------------------------------------- +# Configuration options related to source browsing +#--------------------------------------------------------------------------- + +# If the SOURCE_BROWSER tag is set to YES then a list of source files will be +# generated. Documented entities will be cross-referenced with these sources. +# +# Note: To get rid of all source code in the generated output, make sure that +# also VERBATIM_HEADERS is set to NO. +# The default value is: NO. + +SOURCE_BROWSER = YES + +# Setting the INLINE_SOURCES tag to YES will include the body of functions, +# classes and enums directly into the documentation. +# The default value is: NO. + +INLINE_SOURCES = NO + +# Setting the STRIP_CODE_COMMENTS tag to YES will instruct doxygen to hide any +# special comment blocks from generated source code fragments. Normal C, C++ and +# Fortran comments will always remain visible. +# The default value is: YES. + +STRIP_CODE_COMMENTS = YES + +# If the REFERENCED_BY_RELATION tag is set to YES then for each documented +# function all documented functions referencing it will be listed. +# The default value is: NO. + +REFERENCED_BY_RELATION = NO + +# If the REFERENCES_RELATION tag is set to YES then for each documented function +# all documented entities called/used by that function will be listed. +# The default value is: NO. + +REFERENCES_RELATION = NO + +# If the REFERENCES_LINK_SOURCE tag is set to YES and SOURCE_BROWSER tag is set +# to YES, then the hyperlinks from functions in REFERENCES_RELATION and +# REFERENCED_BY_RELATION lists will link to the source code. Otherwise they will +# link to the documentation. +# The default value is: YES. + +REFERENCES_LINK_SOURCE = YES + +# If SOURCE_TOOLTIPS is enabled (the default) then hovering a hyperlink in the +# source code will show a tooltip with additional information such as prototype, +# brief description and links to the definition and documentation. Since this +# will make the HTML file larger and loading of large files a bit slower, you +# can opt to disable this feature. +# The default value is: YES. +# This tag requires that the tag SOURCE_BROWSER is set to YES. + +SOURCE_TOOLTIPS = YES + +# If the USE_HTAGS tag is set to YES then the references to source code will +# point to the HTML generated by the htags(1) tool instead of doxygen built-in +# source browser. The htags tool is part of GNU's global source tagging system +# (see http://www.gnu.org/software/global/global.html). You will need version +# 4.8.6 or higher. +# +# To use it do the following: +# - Install the latest version of global +# - Enable SOURCE_BROWSER and USE_HTAGS in the config file +# - Make sure the INPUT points to the root of the source tree +# - Run doxygen as normal +# +# Doxygen will invoke htags (and that will in turn invoke gtags), so these +# tools must be available from the command line (i.e. in the search path). +# +# The result: instead of the source browser generated by doxygen, the links to +# source code will now point to the output of htags. +# The default value is: NO. +# This tag requires that the tag SOURCE_BROWSER is set to YES. + +USE_HTAGS = NO + +# If the VERBATIM_HEADERS tag is set the YES then doxygen will generate a +# verbatim copy of the header file for each class for which an include is +# specified. Set to NO to disable this. +# See also: Section \class. +# The default value is: YES. + +VERBATIM_HEADERS = YES + +#--------------------------------------------------------------------------- +# Configuration options related to the alphabetical class index +#--------------------------------------------------------------------------- + +# If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index of all +# compounds will be generated. Enable this if the project contains a lot of +# classes, structs, unions or interfaces. +# The default value is: YES. + +ALPHABETICAL_INDEX = YES + +# The COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns in +# which the alphabetical index list will be split. +# Minimum value: 1, maximum value: 20, default value: 5. +# This tag requires that the tag ALPHABETICAL_INDEX is set to YES. + +COLS_IN_ALPHA_INDEX = 5 + +# In case all classes in a project start with a common prefix, all classes will +# be put under the same header in the alphabetical index. The IGNORE_PREFIX tag +# can be used to specify a prefix (or a list of prefixes) that should be ignored +# while generating the index headers. +# This tag requires that the tag ALPHABETICAL_INDEX is set to YES. + +IGNORE_PREFIX = + +#--------------------------------------------------------------------------- +# Configuration options related to the HTML output +#--------------------------------------------------------------------------- + +# If the GENERATE_HTML tag is set to YES doxygen will generate HTML output +# The default value is: YES. + +GENERATE_HTML = YES + +# The HTML_OUTPUT tag is used to specify where the HTML docs will be put. If a +# relative path is entered the value of OUTPUT_DIRECTORY will be put in front of +# it. +# The default directory is: html. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_OUTPUT = html + +# The HTML_FILE_EXTENSION tag can be used to specify the file extension for each +# generated HTML page (for example: .htm, .php, .asp). +# The default value is: .html. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_FILE_EXTENSION = .html + +# The HTML_HEADER tag can be used to specify a user-defined HTML header file for +# each generated HTML page. If the tag is left blank doxygen will generate a +# standard header. +# +# To get valid HTML the header file that includes any scripts and style sheets +# that doxygen needs, which is dependent on the configuration options used (e.g. +# the setting GENERATE_TREEVIEW). It is highly recommended to start with a +# default header using +# doxygen -w html new_header.html new_footer.html new_stylesheet.css +# YourConfigFile +# and then modify the file new_header.html. See also section "Doxygen usage" +# for information on how to generate the default header that doxygen normally +# uses. +# Note: The header is subject to change so you typically have to regenerate the +# default header when upgrading to a newer version of doxygen. For a description +# of the possible markers and block names see the documentation. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_HEADER = + +# The HTML_FOOTER tag can be used to specify a user-defined HTML footer for each +# generated HTML page. If the tag is left blank doxygen will generate a standard +# footer. See HTML_HEADER for more information on how to generate a default +# footer and what special commands can be used inside the footer. See also +# section "Doxygen usage" for information on how to generate the default footer +# that doxygen normally uses. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_FOOTER = + +# The HTML_STYLESHEET tag can be used to specify a user-defined cascading style +# sheet that is used by each HTML page. It can be used to fine-tune the look of +# the HTML output. If left blank doxygen will generate a default style sheet. +# See also section "Doxygen usage" for information on how to generate the style +# sheet that doxygen normally uses. +# Note: It is recommended to use HTML_EXTRA_STYLESHEET instead of this tag, as +# it is more robust and this tag (HTML_STYLESHEET) will in the future become +# obsolete. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_STYLESHEET = + +# The HTML_EXTRA_STYLESHEET tag can be used to specify an additional user- +# defined cascading style sheet that is included after the standard style sheets +# created by doxygen. Using this option one can overrule certain style aspects. +# This is preferred over using HTML_STYLESHEET since it does not replace the +# standard style sheet and is therefor more robust against future updates. +# Doxygen will copy the style sheet file to the output directory. For an example +# see the documentation. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_EXTRA_STYLESHEET = + +# The HTML_EXTRA_FILES tag can be used to specify one or more extra images or +# other source files which should be copied to the HTML output directory. Note +# that these files will be copied to the base HTML output directory. Use the +# $relpath^ marker in the HTML_HEADER and/or HTML_FOOTER files to load these +# files. In the HTML_STYLESHEET file, use the file name only. Also note that the +# files will be copied as-is; there are no commands or markers available. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_EXTRA_FILES = + +# The HTML_COLORSTYLE_HUE tag controls the color of the HTML output. Doxygen +# will adjust the colors in the stylesheet and background images according to +# this color. Hue is specified as an angle on a colorwheel, see +# http://en.wikipedia.org/wiki/Hue for more information. For instance the value +# 0 represents red, 60 is yellow, 120 is green, 180 is cyan, 240 is blue, 300 +# purple, and 360 is red again. +# Minimum value: 0, maximum value: 359, default value: 220. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_COLORSTYLE_HUE = 220 + +# The HTML_COLORSTYLE_SAT tag controls the purity (or saturation) of the colors +# in the HTML output. For a value of 0 the output will use grayscales only. A +# value of 255 will produce the most vivid colors. +# Minimum value: 0, maximum value: 255, default value: 100. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_COLORSTYLE_SAT = 100 + +# The HTML_COLORSTYLE_GAMMA tag controls the gamma correction applied to the +# luminance component of the colors in the HTML output. Values below 100 +# gradually make the output lighter, whereas values above 100 make the output +# darker. The value divided by 100 is the actual gamma applied, so 80 represents +# a gamma of 0.8, The value 220 represents a gamma of 2.2, and 100 does not +# change the gamma. +# Minimum value: 40, maximum value: 240, default value: 80. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_COLORSTYLE_GAMMA = 80 + +# If the HTML_TIMESTAMP tag is set to YES then the footer of each generated HTML +# page will contain the date and time when the page was generated. Setting this +# to NO can help when comparing the output of multiple runs. +# The default value is: YES. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_TIMESTAMP = NO + +# If the HTML_DYNAMIC_SECTIONS tag is set to YES then the generated HTML +# documentation will contain sections that can be hidden and shown after the +# page has loaded. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_DYNAMIC_SECTIONS = YES + +# With HTML_INDEX_NUM_ENTRIES one can control the preferred number of entries +# shown in the various tree structured indices initially; the user can expand +# and collapse entries dynamically later on. Doxygen will expand the tree to +# such a level that at most the specified number of entries are visible (unless +# a fully collapsed tree already exceeds this amount). So setting the number of +# entries 1 will produce a full collapsed tree by default. 0 is a special value +# representing an infinite number of entries and will result in a full expanded +# tree by default. +# Minimum value: 0, maximum value: 9999, default value: 100. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_INDEX_NUM_ENTRIES = 100 + +# If the GENERATE_DOCSET tag is set to YES, additional index files will be +# generated that can be used as input for Apple's Xcode 3 integrated development +# environment (see: http://developer.apple.com/tools/xcode/), introduced with +# OSX 10.5 (Leopard). To create a documentation set, doxygen will generate a +# Makefile in the HTML output directory. Running make will produce the docset in +# that directory and running make install will install the docset in +# ~/Library/Developer/Shared/Documentation/DocSets so that Xcode will find it at +# startup. See http://developer.apple.com/tools/creatingdocsetswithdoxygen.html +# for more information. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +GENERATE_DOCSET = NO + +# This tag determines the name of the docset feed. A documentation feed provides +# an umbrella under which multiple documentation sets from a single provider +# (such as a company or product suite) can be grouped. +# The default value is: Doxygen generated docs. +# This tag requires that the tag GENERATE_DOCSET is set to YES. + +DOCSET_FEEDNAME = "OpenFPM data" + +# This tag specifies a string that should uniquely identify the documentation +# set bundle. This should be a reverse domain-name style string, e.g. +# com.mycompany.MyDocSet. Doxygen will append .docset to the name. +# The default value is: org.doxygen.Project. +# This tag requires that the tag GENERATE_DOCSET is set to YES. + +DOCSET_BUNDLE_ID = ppcore.mpi-cbg.de + +# The DOCSET_PUBLISHER_ID tag specifies a string that should uniquely identify +# the documentation publisher. This should be a reverse domain-name style +# string, e.g. com.mycompany.MyDocSet.documentation. +# The default value is: org.doxygen.Publisher. +# This tag requires that the tag GENERATE_DOCSET is set to YES. + +DOCSET_PUBLISHER_ID = ppmcore.mpi-cbg.de + +# The DOCSET_PUBLISHER_NAME tag identifies the documentation publisher. +# The default value is: Publisher. +# This tag requires that the tag GENERATE_DOCSET is set to YES. + +DOCSET_PUBLISHER_NAME = Pietro Incardona + +# If the GENERATE_HTMLHELP tag is set to YES then doxygen generates three +# additional HTML index files: index.hhp, index.hhc, and index.hhk. The +# index.hhp is a project file that can be read by Microsoft's HTML Help Workshop +# (see: http://www.microsoft.com/en-us/download/details.aspx?id=21138) on +# Windows. +# +# The HTML Help Workshop contains a compiler that can convert all HTML output +# generated by doxygen into a single compiled HTML file (.chm). Compiled HTML +# files are now used as the Windows 98 help format, and will replace the old +# Windows help format (.hlp) on all Windows platforms in the future. Compressed +# HTML files also contain an index, a table of contents, and you can search for +# words in the documentation. The HTML workshop also contains a viewer for +# compressed HTML files. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +GENERATE_HTMLHELP = NO + +# The CHM_FILE tag can be used to specify the file name of the resulting .chm +# file. You can add a path in front of the file if the result should not be +# written to the html output directory. +# This tag requires that the tag GENERATE_HTMLHELP is set to YES. + +CHM_FILE = + +# The HHC_LOCATION tag can be used to specify the location (absolute path +# including file name) of the HTML help compiler ( hhc.exe). If non-empty +# doxygen will try to run the HTML help compiler on the generated index.hhp. +# The file has to be specified with full path. +# This tag requires that the tag GENERATE_HTMLHELP is set to YES. + +HHC_LOCATION = + +# The GENERATE_CHI flag controls if a separate .chi index file is generated ( +# YES) or that it should be included in the master .chm file ( NO). +# The default value is: NO. +# This tag requires that the tag GENERATE_HTMLHELP is set to YES. + +GENERATE_CHI = NO + +# The CHM_INDEX_ENCODING is used to encode HtmlHelp index ( hhk), content ( hhc) +# and project file content. +# This tag requires that the tag GENERATE_HTMLHELP is set to YES. + +CHM_INDEX_ENCODING = + +# The BINARY_TOC flag controls whether a binary table of contents is generated ( +# YES) or a normal table of contents ( NO) in the .chm file. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTMLHELP is set to YES. + +BINARY_TOC = NO + +# The TOC_EXPAND flag can be set to YES to add extra items for group members to +# the table of contents of the HTML help documentation and to the tree view. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTMLHELP is set to YES. + +TOC_EXPAND = NO + +# If the GENERATE_QHP tag is set to YES and both QHP_NAMESPACE and +# QHP_VIRTUAL_FOLDER are set, an additional index file will be generated that +# can be used as input for Qt's qhelpgenerator to generate a Qt Compressed Help +# (.qch) of the generated HTML documentation. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +GENERATE_QHP = NO + +# If the QHG_LOCATION tag is specified, the QCH_FILE tag can be used to specify +# the file name of the resulting .qch file. The path specified is relative to +# the HTML output folder. +# This tag requires that the tag GENERATE_QHP is set to YES. + +QCH_FILE = + +# The QHP_NAMESPACE tag specifies the namespace to use when generating Qt Help +# Project output. For more information please see Qt Help Project / Namespace +# (see: http://qt-project.org/doc/qt-4.8/qthelpproject.html#namespace). +# The default value is: org.doxygen.Project. +# This tag requires that the tag GENERATE_QHP is set to YES. + +QHP_NAMESPACE = org.doxygen.Project + +# The QHP_VIRTUAL_FOLDER tag specifies the namespace to use when generating Qt +# Help Project output. For more information please see Qt Help Project / Virtual +# Folders (see: http://qt-project.org/doc/qt-4.8/qthelpproject.html#virtual- +# folders). +# The default value is: doc. +# This tag requires that the tag GENERATE_QHP is set to YES. + +QHP_VIRTUAL_FOLDER = doc + +# If the QHP_CUST_FILTER_NAME tag is set, it specifies the name of a custom +# filter to add. For more information please see Qt Help Project / Custom +# Filters (see: http://qt-project.org/doc/qt-4.8/qthelpproject.html#custom- +# filters). +# This tag requires that the tag GENERATE_QHP is set to YES. + +QHP_CUST_FILTER_NAME = + +# The QHP_CUST_FILTER_ATTRS tag specifies the list of the attributes of the +# custom filter to add. For more information please see Qt Help Project / Custom +# Filters (see: http://qt-project.org/doc/qt-4.8/qthelpproject.html#custom- +# filters). +# This tag requires that the tag GENERATE_QHP is set to YES. + +QHP_CUST_FILTER_ATTRS = + +# The QHP_SECT_FILTER_ATTRS tag specifies the list of the attributes this +# project's filter section matches. Qt Help Project / Filter Attributes (see: +# http://qt-project.org/doc/qt-4.8/qthelpproject.html#filter-attributes). +# This tag requires that the tag GENERATE_QHP is set to YES. + +QHP_SECT_FILTER_ATTRS = + +# The QHG_LOCATION tag can be used to specify the location of Qt's +# qhelpgenerator. If non-empty doxygen will try to run qhelpgenerator on the +# generated .qhp file. +# This tag requires that the tag GENERATE_QHP is set to YES. + +QHG_LOCATION = + +# If the GENERATE_ECLIPSEHELP tag is set to YES, additional index files will be +# generated, together with the HTML files, they form an Eclipse help plugin. To +# install this plugin and make it available under the help contents menu in +# Eclipse, the contents of the directory containing the HTML and XML files needs +# to be copied into the plugins directory of eclipse. The name of the directory +# within the plugins directory should be the same as the ECLIPSE_DOC_ID value. +# After copying Eclipse needs to be restarted before the help appears. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +GENERATE_ECLIPSEHELP = NO + +# A unique identifier for the Eclipse help plugin. When installing the plugin +# the directory name containing the HTML and XML files should also have this +# name. Each documentation set should have its own identifier. +# The default value is: org.doxygen.Project. +# This tag requires that the tag GENERATE_ECLIPSEHELP is set to YES. + +ECLIPSE_DOC_ID = ppmcore.mpi-cbg.de + +# If you want full control over the layout of the generated HTML pages it might +# be necessary to disable the index and replace it with your own. The +# DISABLE_INDEX tag can be used to turn on/off the condensed index (tabs) at top +# of each HTML page. A value of NO enables the index and the value YES disables +# it. Since the tabs in the index contain the same information as the navigation +# tree, you can set this option to YES if you also set GENERATE_TREEVIEW to YES. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +DISABLE_INDEX = YES + +# The GENERATE_TREEVIEW tag is used to specify whether a tree-like index +# structure should be generated to display hierarchical information. If the tag +# value is set to YES, a side panel will be generated containing a tree-like +# index structure (just like the one that is generated for HTML Help). For this +# to work a browser that supports JavaScript, DHTML, CSS and frames is required +# (i.e. any modern browser). Windows users are probably better off using the +# HTML help feature. Via custom stylesheets (see HTML_EXTRA_STYLESHEET) one can +# further fine-tune the look of the index. As an example, the default style +# sheet generated by doxygen has an example that shows how to put an image at +# the root of the tree instead of the PROJECT_NAME. Since the tree basically has +# the same information as the tab index, you could consider setting +# DISABLE_INDEX to YES when enabling this option. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +GENERATE_TREEVIEW = YES + +# The ENUM_VALUES_PER_LINE tag can be used to set the number of enum values that +# doxygen will group on one line in the generated HTML documentation. +# +# Note that a value of 0 will completely suppress the enum values from appearing +# in the overview section. +# Minimum value: 0, maximum value: 20, default value: 4. +# This tag requires that the tag GENERATE_HTML is set to YES. + +ENUM_VALUES_PER_LINE = 4 + +# If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be used +# to set the initial width (in pixels) of the frame in which the tree is shown. +# Minimum value: 0, maximum value: 1500, default value: 250. +# This tag requires that the tag GENERATE_HTML is set to YES. + +TREEVIEW_WIDTH = 250 + +# When the EXT_LINKS_IN_WINDOW option is set to YES doxygen will open links to +# external symbols imported via tag files in a separate window. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +EXT_LINKS_IN_WINDOW = NO + +# Use this tag to change the font size of LaTeX formulas included as images in +# the HTML documentation. When you change the font size after a successful +# doxygen run you need to manually remove any form_*.png images from the HTML +# output directory to force them to be regenerated. +# Minimum value: 8, maximum value: 50, default value: 10. +# This tag requires that the tag GENERATE_HTML is set to YES. + +FORMULA_FONTSIZE = 10 + +# Use the FORMULA_TRANPARENT tag to determine whether or not the images +# generated for formulas are transparent PNGs. Transparent PNGs are not +# supported properly for IE 6.0, but are supported on all modern browsers. +# +# Note that when changing this option you need to delete any form_*.png files in +# the HTML output directory before the changes have effect. +# The default value is: YES. +# This tag requires that the tag GENERATE_HTML is set to YES. + +FORMULA_TRANSPARENT = YES + +# Enable the USE_MATHJAX option to render LaTeX formulas using MathJax (see +# http://www.mathjax.org) which uses client side Javascript for the rendering +# instead of using prerendered bitmaps. Use this if you do not have LaTeX +# installed or if you want to formulas look prettier in the HTML output. When +# enabled you may also need to install MathJax separately and configure the path +# to it using the MATHJAX_RELPATH option. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +USE_MATHJAX = YES + +# When MathJax is enabled you can set the default output format to be used for +# the MathJax output. See the MathJax site (see: +# http://docs.mathjax.org/en/latest/output.html) for more details. +# Possible values are: HTML-CSS (which is slower, but has the best +# compatibility), NativeMML (i.e. MathML) and SVG. +# The default value is: HTML-CSS. +# This tag requires that the tag USE_MATHJAX is set to YES. + +MATHJAX_FORMAT = HTML-CSS + +# When MathJax is enabled you need to specify the location relative to the HTML +# output directory using the MATHJAX_RELPATH option. The destination directory +# should contain the MathJax.js script. For instance, if the mathjax directory +# is located at the same level as the HTML output directory, then +# MATHJAX_RELPATH should be ../mathjax. The default value points to the MathJax +# Content Delivery Network so you can quickly see the result without installing +# MathJax. However, it is strongly recommended to install a local copy of +# MathJax from http://www.mathjax.org before deployment. +# The default value is: http://cdn.mathjax.org/mathjax/latest. +# This tag requires that the tag USE_MATHJAX is set to YES. + +MATHJAX_RELPATH = http://cdn.mathjax.org/mathjax/latest + +# The MATHJAX_EXTENSIONS tag can be used to specify one or more MathJax +# extension names that should be enabled during MathJax rendering. For example +# MATHJAX_EXTENSIONS = TeX/AMSmath TeX/AMSsymbols +# This tag requires that the tag USE_MATHJAX is set to YES. + +MATHJAX_EXTENSIONS = + +# The MATHJAX_CODEFILE tag can be used to specify a file with javascript pieces +# of code that will be used on startup of the MathJax code. See the MathJax site +# (see: http://docs.mathjax.org/en/latest/output.html) for more details. For an +# example see the documentation. +# This tag requires that the tag USE_MATHJAX is set to YES. + +MATHJAX_CODEFILE = + +# When the SEARCHENGINE tag is enabled doxygen will generate a search box for +# the HTML output. The underlying search engine uses javascript and DHTML and +# should work on any modern browser. Note that when using HTML help +# (GENERATE_HTMLHELP), Qt help (GENERATE_QHP), or docsets (GENERATE_DOCSET) +# there is already a search function so this one should typically be disabled. +# For large projects the javascript based search engine can be slow, then +# enabling SERVER_BASED_SEARCH may provide a better solution. It is possible to +# search using the keyboard; to jump to the search box use <access key> + S +# (what the <access key> is depends on the OS and browser, but it is typically +# <CTRL>, <ALT>/<option>, or both). Inside the search box use the <cursor down +# key> to jump into the search results window, the results can be navigated +# using the <cursor keys>. Press <Enter> to select an item or <escape> to cancel +# the search. The filter options can be selected when the cursor is inside the +# search box by pressing <Shift>+<cursor down>. Also here use the <cursor keys> +# to select a filter and <Enter> or <escape> to activate or cancel the filter +# option. +# The default value is: YES. +# This tag requires that the tag GENERATE_HTML is set to YES. + +SEARCHENGINE = YES + +# When the SERVER_BASED_SEARCH tag is enabled the search engine will be +# implemented using a web server instead of a web client using Javascript. There +# are two flavours of web server based searching depending on the +# EXTERNAL_SEARCH setting. When disabled, doxygen will generate a PHP script for +# searching and an index file used by the script. When EXTERNAL_SEARCH is +# enabled the indexing and searching needs to be provided by external tools. See +# the section "External Indexing and Searching" for details. +# The default value is: NO. +# This tag requires that the tag SEARCHENGINE is set to YES. + +SERVER_BASED_SEARCH = NO + +# When EXTERNAL_SEARCH tag is enabled doxygen will no longer generate the PHP +# script for searching. Instead the search results are written to an XML file +# which needs to be processed by an external indexer. Doxygen will invoke an +# external search engine pointed to by the SEARCHENGINE_URL option to obtain the +# search results. +# +# Doxygen ships with an example indexer ( doxyindexer) and search engine +# (doxysearch.cgi) which are based on the open source search engine library +# Xapian (see: http://xapian.org/). +# +# See the section "External Indexing and Searching" for details. +# The default value is: NO. +# This tag requires that the tag SEARCHENGINE is set to YES. + +EXTERNAL_SEARCH = NO + +# The SEARCHENGINE_URL should point to a search engine hosted by a web server +# which will return the search results when EXTERNAL_SEARCH is enabled. +# +# Doxygen ships with an example indexer ( doxyindexer) and search engine +# (doxysearch.cgi) which are based on the open source search engine library +# Xapian (see: http://xapian.org/). See the section "External Indexing and +# Searching" for details. +# This tag requires that the tag SEARCHENGINE is set to YES. + +SEARCHENGINE_URL = + +# When SERVER_BASED_SEARCH and EXTERNAL_SEARCH are both enabled the unindexed +# search data is written to a file for indexing by an external tool. With the +# SEARCHDATA_FILE tag the name of this file can be specified. +# The default file is: searchdata.xml. +# This tag requires that the tag SEARCHENGINE is set to YES. + +SEARCHDATA_FILE = searchdata.xml + +# When SERVER_BASED_SEARCH and EXTERNAL_SEARCH are both enabled the +# EXTERNAL_SEARCH_ID tag can be used as an identifier for the project. This is +# useful in combination with EXTRA_SEARCH_MAPPINGS to search through multiple +# projects and redirect the results back to the right project. +# This tag requires that the tag SEARCHENGINE is set to YES. + +EXTERNAL_SEARCH_ID = + +# The EXTRA_SEARCH_MAPPINGS tag can be used to enable searching through doxygen +# projects other than the one defined by this configuration file, but that are +# all added to the same external search index. Each project needs to have a +# unique id set via EXTERNAL_SEARCH_ID. The search mapping then maps the id of +# to a relative location where the documentation can be found. The format is: +# EXTRA_SEARCH_MAPPINGS = tagname1=loc1 tagname2=loc2 ... +# This tag requires that the tag SEARCHENGINE is set to YES. + +EXTRA_SEARCH_MAPPINGS = + +#--------------------------------------------------------------------------- +# Configuration options related to the LaTeX output +#--------------------------------------------------------------------------- + +# If the GENERATE_LATEX tag is set to YES doxygen will generate LaTeX output. +# The default value is: YES. + +GENERATE_LATEX = YES + +# The LATEX_OUTPUT tag is used to specify where the LaTeX docs will be put. If a +# relative path is entered the value of OUTPUT_DIRECTORY will be put in front of +# it. +# The default directory is: latex. +# This tag requires that the tag GENERATE_LATEX is set to YES. + +LATEX_OUTPUT = latex + +# The LATEX_CMD_NAME tag can be used to specify the LaTeX command name to be +# invoked. +# +# Note that when enabling USE_PDFLATEX this option is only used for generating +# bitmaps for formulas in the HTML output, but not in the Makefile that is +# written to the output directory. +# The default file is: latex. +# This tag requires that the tag GENERATE_LATEX is set to YES. + +LATEX_CMD_NAME = latex + +# The MAKEINDEX_CMD_NAME tag can be used to specify the command name to generate +# index for LaTeX. +# The default file is: makeindex. +# This tag requires that the tag GENERATE_LATEX is set to YES. + +MAKEINDEX_CMD_NAME = makeindex + +# If the COMPACT_LATEX tag is set to YES doxygen generates more compact LaTeX +# documents. This may be useful for small projects and may help to save some +# trees in general. +# The default value is: NO. +# This tag requires that the tag GENERATE_LATEX is set to YES. + +COMPACT_LATEX = NO + +# The PAPER_TYPE tag can be used to set the paper type that is used by the +# printer. +# Possible values are: a4 (210 x 297 mm), letter (8.5 x 11 inches), legal (8.5 x +# 14 inches) and executive (7.25 x 10.5 inches). +# The default value is: a4. +# This tag requires that the tag GENERATE_LATEX is set to YES. + +PAPER_TYPE = a4 + +# The EXTRA_PACKAGES tag can be used to specify one or more LaTeX package names +# that should be included in the LaTeX output. To get the times font for +# instance you can specify +# EXTRA_PACKAGES=times +# If left blank no extra packages will be included. +# This tag requires that the tag GENERATE_LATEX is set to YES. + +EXTRA_PACKAGES = + +# The LATEX_HEADER tag can be used to specify a personal LaTeX header for the +# generated LaTeX document. The header should contain everything until the first +# chapter. If it is left blank doxygen will generate a standard header. See +# section "Doxygen usage" for information on how to let doxygen write the +# default header to a separate file. +# +# Note: Only use a user-defined header if you know what you are doing! The +# following commands have a special meaning inside the header: $title, +# $datetime, $date, $doxygenversion, $projectname, $projectnumber. Doxygen will +# replace them by respectively the title of the page, the current date and time, +# only the current date, the version number of doxygen, the project name (see +# PROJECT_NAME), or the project number (see PROJECT_NUMBER). +# This tag requires that the tag GENERATE_LATEX is set to YES. + +LATEX_HEADER = + +# The LATEX_FOOTER tag can be used to specify a personal LaTeX footer for the +# generated LaTeX document. The footer should contain everything after the last +# chapter. If it is left blank doxygen will generate a standard footer. +# +# Note: Only use a user-defined footer if you know what you are doing! +# This tag requires that the tag GENERATE_LATEX is set to YES. + +LATEX_FOOTER = + +# The LATEX_EXTRA_FILES tag can be used to specify one or more extra images or +# other source files which should be copied to the LATEX_OUTPUT output +# directory. Note that the files will be copied as-is; there are no commands or +# markers available. +# This tag requires that the tag GENERATE_LATEX is set to YES. + +LATEX_EXTRA_FILES = + +# If the PDF_HYPERLINKS tag is set to YES, the LaTeX that is generated is +# prepared for conversion to PDF (using ps2pdf or pdflatex). The PDF file will +# contain links (just like the HTML output) instead of page references. This +# makes the output suitable for online browsing using a PDF viewer. +# The default value is: YES. +# This tag requires that the tag GENERATE_LATEX is set to YES. + +PDF_HYPERLINKS = YES + +# If the LATEX_PDFLATEX tag is set to YES, doxygen will use pdflatex to generate +# the PDF file directly from the LaTeX files. Set this option to YES to get a +# higher quality PDF documentation. +# The default value is: YES. +# This tag requires that the tag GENERATE_LATEX is set to YES. + +USE_PDFLATEX = YES + +# If the LATEX_BATCHMODE tag is set to YES, doxygen will add the \batchmode +# command to the generated LaTeX files. This will instruct LaTeX to keep running +# if errors occur, instead of asking the user for help. This option is also used +# when generating formulas in HTML. +# The default value is: NO. +# This tag requires that the tag GENERATE_LATEX is set to YES. + +LATEX_BATCHMODE = NO + +# If the LATEX_HIDE_INDICES tag is set to YES then doxygen will not include the +# index chapters (such as File Index, Compound Index, etc.) in the output. +# The default value is: NO. +# This tag requires that the tag GENERATE_LATEX is set to YES. + +LATEX_HIDE_INDICES = NO + +# If the LATEX_SOURCE_CODE tag is set to YES then doxygen will include source +# code with syntax highlighting in the LaTeX output. +# +# Note that which sources are shown also depends on other settings such as +# SOURCE_BROWSER. +# The default value is: NO. +# This tag requires that the tag GENERATE_LATEX is set to YES. + +LATEX_SOURCE_CODE = NO + +# The LATEX_BIB_STYLE tag can be used to specify the style to use for the +# bibliography, e.g. plainnat, or ieeetr. See +# http://en.wikipedia.org/wiki/BibTeX and \cite for more info. +# The default value is: plain. +# This tag requires that the tag GENERATE_LATEX is set to YES. + +LATEX_BIB_STYLE = plain + +#--------------------------------------------------------------------------- +# Configuration options related to the RTF output +#--------------------------------------------------------------------------- + +# If the GENERATE_RTF tag is set to YES doxygen will generate RTF output. The +# RTF output is optimized for Word 97 and may not look too pretty with other RTF +# readers/editors. +# The default value is: NO. + +GENERATE_RTF = NO + +# The RTF_OUTPUT tag is used to specify where the RTF docs will be put. If a +# relative path is entered the value of OUTPUT_DIRECTORY will be put in front of +# it. +# The default directory is: rtf. +# This tag requires that the tag GENERATE_RTF is set to YES. + +RTF_OUTPUT = rtf + +# If the COMPACT_RTF tag is set to YES doxygen generates more compact RTF +# documents. This may be useful for small projects and may help to save some +# trees in general. +# The default value is: NO. +# This tag requires that the tag GENERATE_RTF is set to YES. + +COMPACT_RTF = NO + +# If the RTF_HYPERLINKS tag is set to YES, the RTF that is generated will +# contain hyperlink fields. The RTF file will contain links (just like the HTML +# output) instead of page references. This makes the output suitable for online +# browsing using Word or some other Word compatible readers that support those +# fields. +# +# Note: WordPad (write) and others do not support links. +# The default value is: NO. +# This tag requires that the tag GENERATE_RTF is set to YES. + +RTF_HYPERLINKS = NO + +# Load stylesheet definitions from file. Syntax is similar to doxygen's config +# file, i.e. a series of assignments. You only have to provide replacements, +# missing definitions are set to their default value. +# +# See also section "Doxygen usage" for information on how to generate the +# default style sheet that doxygen normally uses. +# This tag requires that the tag GENERATE_RTF is set to YES. + +RTF_STYLESHEET_FILE = + +# Set optional variables used in the generation of an RTF document. Syntax is +# similar to doxygen's config file. A template extensions file can be generated +# using doxygen -e rtf extensionFile. +# This tag requires that the tag GENERATE_RTF is set to YES. + +RTF_EXTENSIONS_FILE = + +#--------------------------------------------------------------------------- +# Configuration options related to the man page output +#--------------------------------------------------------------------------- + +# If the GENERATE_MAN tag is set to YES doxygen will generate man pages for +# classes and files. +# The default value is: NO. + +GENERATE_MAN = NO + +# The MAN_OUTPUT tag is used to specify where the man pages will be put. If a +# relative path is entered the value of OUTPUT_DIRECTORY will be put in front of +# it. A directory man3 will be created inside the directory specified by +# MAN_OUTPUT. +# The default directory is: man. +# This tag requires that the tag GENERATE_MAN is set to YES. + +MAN_OUTPUT = man + +# The MAN_EXTENSION tag determines the extension that is added to the generated +# man pages. In case the manual section does not start with a number, the number +# 3 is prepended. The dot (.) at the beginning of the MAN_EXTENSION tag is +# optional. +# The default value is: .3. +# This tag requires that the tag GENERATE_MAN is set to YES. + +MAN_EXTENSION = .3 + +# If the MAN_LINKS tag is set to YES and doxygen generates man output, then it +# will generate one additional man file for each entity documented in the real +# man page(s). These additional files only source the real man page, but without +# them the man command would be unable to find the correct page. +# The default value is: NO. +# This tag requires that the tag GENERATE_MAN is set to YES. + +MAN_LINKS = NO + +#--------------------------------------------------------------------------- +# Configuration options related to the XML output +#--------------------------------------------------------------------------- + +# If the GENERATE_XML tag is set to YES doxygen will generate an XML file that +# captures the structure of the code including all documentation. +# The default value is: NO. + +GENERATE_XML = YES + +# The XML_OUTPUT tag is used to specify where the XML pages will be put. If a +# relative path is entered the value of OUTPUT_DIRECTORY will be put in front of +# it. +# The default directory is: xml. +# This tag requires that the tag GENERATE_XML is set to YES. + +XML_OUTPUT = xml + +# The XML_SCHEMA tag can be used to specify a XML schema, which can be used by a +# validating XML parser to check the syntax of the XML files. +# This tag requires that the tag GENERATE_XML is set to YES. + +XML_SCHEMA = + +# The XML_DTD tag can be used to specify a XML DTD, which can be used by a +# validating XML parser to check the syntax of the XML files. +# This tag requires that the tag GENERATE_XML is set to YES. + +XML_DTD = + +# If the XML_PROGRAMLISTING tag is set to YES doxygen will dump the program +# listings (including syntax highlighting and cross-referencing information) to +# the XML output. Note that enabling this will significantly increase the size +# of the XML output. +# The default value is: YES. +# This tag requires that the tag GENERATE_XML is set to YES. + +XML_PROGRAMLISTING = YES + +#--------------------------------------------------------------------------- +# Configuration options related to the DOCBOOK output +#--------------------------------------------------------------------------- + +# If the GENERATE_DOCBOOK tag is set to YES doxygen will generate Docbook files +# that can be used to generate PDF. +# The default value is: NO. + +GENERATE_DOCBOOK = NO + +# The DOCBOOK_OUTPUT tag is used to specify where the Docbook pages will be put. +# If a relative path is entered the value of OUTPUT_DIRECTORY will be put in +# front of it. +# The default directory is: docbook. +# This tag requires that the tag GENERATE_DOCBOOK is set to YES. + +DOCBOOK_OUTPUT = docbook + +#--------------------------------------------------------------------------- +# Configuration options for the AutoGen Definitions output +#--------------------------------------------------------------------------- + +# If the GENERATE_AUTOGEN_DEF tag is set to YES doxygen will generate an AutoGen +# Definitions (see http://autogen.sf.net) file that captures the structure of +# the code including all documentation. Note that this feature is still +# experimental and incomplete at the moment. +# The default value is: NO. + +GENERATE_AUTOGEN_DEF = NO + +#--------------------------------------------------------------------------- +# Configuration options related to the Perl module output +#--------------------------------------------------------------------------- + +# If the GENERATE_PERLMOD tag is set to YES doxygen will generate a Perl module +# file that captures the structure of the code including all documentation. +# +# Note that this feature is still experimental and incomplete at the moment. +# The default value is: NO. + +GENERATE_PERLMOD = NO + +# If the PERLMOD_LATEX tag is set to YES doxygen will generate the necessary +# Makefile rules, Perl scripts and LaTeX code to be able to generate PDF and DVI +# output from the Perl module output. +# The default value is: NO. +# This tag requires that the tag GENERATE_PERLMOD is set to YES. + +PERLMOD_LATEX = NO + +# If the PERLMOD_PRETTY tag is set to YES the Perl module output will be nicely +# formatted so it can be parsed by a human reader. This is useful if you want to +# understand what is going on. On the other hand, if this tag is set to NO the +# size of the Perl module output will be much smaller and Perl will parse it +# just the same. +# The default value is: YES. +# This tag requires that the tag GENERATE_PERLMOD is set to YES. + +PERLMOD_PRETTY = YES + +# The names of the make variables in the generated doxyrules.make file are +# prefixed with the string contained in PERLMOD_MAKEVAR_PREFIX. This is useful +# so different doxyrules.make files included by the same Makefile don't +# overwrite each other's variables. +# This tag requires that the tag GENERATE_PERLMOD is set to YES. + +PERLMOD_MAKEVAR_PREFIX = + +#--------------------------------------------------------------------------- +# Configuration options related to the preprocessor +#--------------------------------------------------------------------------- + +# If the ENABLE_PREPROCESSING tag is set to YES doxygen will evaluate all +# C-preprocessor directives found in the sources and include files. +# The default value is: YES. + +ENABLE_PREPROCESSING = YES + +# If the MACRO_EXPANSION tag is set to YES doxygen will expand all macro names +# in the source code. If set to NO only conditional compilation will be +# performed. Macro expansion can be done in a controlled way by setting +# EXPAND_ONLY_PREDEF to YES. +# The default value is: NO. +# This tag requires that the tag ENABLE_PREPROCESSING is set to YES. + +MACRO_EXPANSION = NO + +# If the EXPAND_ONLY_PREDEF and MACRO_EXPANSION tags are both set to YES then +# the macro expansion is limited to the macros specified with the PREDEFINED and +# EXPAND_AS_DEFINED tags. +# The default value is: NO. +# This tag requires that the tag ENABLE_PREPROCESSING is set to YES. + +EXPAND_ONLY_PREDEF = NO + +# If the SEARCH_INCLUDES tag is set to YES the includes files in the +# INCLUDE_PATH will be searched if a #include is found. +# The default value is: YES. +# This tag requires that the tag ENABLE_PREPROCESSING is set to YES. + +SEARCH_INCLUDES = YES + +# The INCLUDE_PATH tag can be used to specify one or more directories that +# contain include files that are not input files but should be processed by the +# preprocessor. +# This tag requires that the tag SEARCH_INCLUDES is set to YES. + +INCLUDE_PATH = + +# You can use the INCLUDE_FILE_PATTERNS tag to specify one or more wildcard +# patterns (like *.h and *.hpp) to filter out the header-files in the +# directories. If left blank, the patterns specified with FILE_PATTERNS will be +# used. +# This tag requires that the tag ENABLE_PREPROCESSING is set to YES. + +INCLUDE_FILE_PATTERNS = + +# The PREDEFINED tag can be used to specify one or more macro names that are +# defined before the preprocessor is started (similar to the -D option of e.g. +# gcc). The argument of the tag is a list of macros of the form: name or +# name=definition (no spaces). If the definition and the "=" are omitted, "=1" +# is assumed. To prevent a macro definition from being undefined via #undef or +# recursively expanded use the := operator instead of the = operator. +# This tag requires that the tag ENABLE_PREPROCESSING is set to YES. + +PREDEFINED = + +# If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES then this +# tag can be used to specify a list of macro names that should be expanded. The +# macro definition that is found in the sources will be used. Use the PREDEFINED +# tag if you want to use a different macro definition that overrules the +# definition found in the source code. +# This tag requires that the tag ENABLE_PREPROCESSING is set to YES. + +EXPAND_AS_DEFINED = + +# If the SKIP_FUNCTION_MACROS tag is set to YES then doxygen's preprocessor will +# remove all refrences to function-like macros that are alone on a line, have an +# all uppercase name, and do not end with a semicolon. Such function macros are +# typically used for boiler-plate code, and will confuse the parser if not +# removed. +# The default value is: YES. +# This tag requires that the tag ENABLE_PREPROCESSING is set to YES. + +SKIP_FUNCTION_MACROS = YES + +#--------------------------------------------------------------------------- +# Configuration options related to external references +#--------------------------------------------------------------------------- + +# The TAGFILES tag can be used to specify one or more tag files. For each tag +# file the location of the external documentation should be added. The format of +# a tag file without this location is as follows: +# TAGFILES = file1 file2 ... +# Adding location for the tag files is done as follows: +# TAGFILES = file1=loc1 "file2 = loc2" ... +# where loc1 and loc2 can be relative or absolute paths or URLs. See the +# section "Linking to external documentation" for more information about the use +# of tag files. +# Note: Each tag file must have an unique name (where the name does NOT include +# the path). If a tag file is not located in the directory in which doxygen is +# run, you must also specify the path to the tagfile here. + +TAGFILES = + +# When a file name is specified after GENERATE_TAGFILE, doxygen will create a +# tag file that is based on the input files it reads. See section "Linking to +# external documentation" for more information about the usage of tag files. + +GENERATE_TAGFILE = + +# If the ALLEXTERNALS tag is set to YES all external class will be listed in the +# class index. If set to NO only the inherited external classes will be listed. +# The default value is: NO. + +ALLEXTERNALS = NO + +# If the EXTERNAL_GROUPS tag is set to YES all external groups will be listed in +# the modules index. If set to NO, only the current project's groups will be +# listed. +# The default value is: YES. + +EXTERNAL_GROUPS = YES + +# If the EXTERNAL_PAGES tag is set to YES all external pages will be listed in +# the related pages index. If set to NO, only the current project's pages will +# be listed. +# The default value is: YES. + +EXTERNAL_PAGES = YES + +# The PERL_PATH should be the absolute path and name of the perl script +# interpreter (i.e. the result of 'which perl'). +# The default file (with absolute path) is: /usr/bin/perl. + +PERL_PATH = /usr/bin/perl + +#--------------------------------------------------------------------------- +# Configuration options related to the dot tool +#--------------------------------------------------------------------------- + +# If the CLASS_DIAGRAMS tag is set to YES doxygen will generate a class diagram +# (in HTML and LaTeX) for classes with base or super classes. Setting the tag to +# NO turns the diagrams off. Note that this option also works with HAVE_DOT +# disabled, but it is recommended to install and use dot, since it yields more +# powerful graphs. +# The default value is: YES. + +CLASS_DIAGRAMS = YES + +# You can define message sequence charts within doxygen comments using the \msc +# command. Doxygen will then run the mscgen tool (see: +# http://www.mcternan.me.uk/mscgen/)) to produce the chart and insert it in the +# documentation. The MSCGEN_PATH tag allows you to specify the directory where +# the mscgen tool resides. If left empty the tool is assumed to be found in the +# default search path. + +MSCGEN_PATH = + +# You can include diagrams made with dia in doxygen documentation. Doxygen will +# then run dia to produce the diagram and insert it in the documentation. The +# DIA_PATH tag allows you to specify the directory where the dia binary resides. +# If left empty dia is assumed to be found in the default search path. + +DIA_PATH = + +# If set to YES, the inheritance and collaboration graphs will hide inheritance +# and usage relations if the target is undocumented or is not a class. +# The default value is: YES. + +HIDE_UNDOC_RELATIONS = YES + +# If you set the HAVE_DOT tag to YES then doxygen will assume the dot tool is +# available from the path. This tool is part of Graphviz (see: +# http://www.graphviz.org/), a graph visualization toolkit from AT&T and Lucent +# Bell Labs. The other options in this section have no effect if this option is +# set to NO +# The default value is: NO. + +HAVE_DOT = NO + +# The DOT_NUM_THREADS specifies the number of dot invocations doxygen is allowed +# to run in parallel. When set to 0 doxygen will base this on the number of +# processors available in the system. You can set it explicitly to a value +# larger than 0 to get control over the balance between CPU load and processing +# speed. +# Minimum value: 0, maximum value: 32, default value: 0. +# This tag requires that the tag HAVE_DOT is set to YES. + +DOT_NUM_THREADS = 0 + +# When you want a differently looking font n the dot files that doxygen +# generates you can specify the font name using DOT_FONTNAME. You need to make +# sure dot is able to find the font, which can be done by putting it in a +# standard location or by setting the DOTFONTPATH environment variable or by +# setting DOT_FONTPATH to the directory containing the font. +# The default value is: Helvetica. +# This tag requires that the tag HAVE_DOT is set to YES. + +DOT_FONTNAME = Helvetica + +# The DOT_FONTSIZE tag can be used to set the size (in points) of the font of +# dot graphs. +# Minimum value: 4, maximum value: 24, default value: 10. +# This tag requires that the tag HAVE_DOT is set to YES. + +DOT_FONTSIZE = 10 + +# By default doxygen will tell dot to use the default font as specified with +# DOT_FONTNAME. If you specify a different font using DOT_FONTNAME you can set +# the path where dot can find it using this tag. +# This tag requires that the tag HAVE_DOT is set to YES. + +DOT_FONTPATH = + +# If the CLASS_GRAPH tag is set to YES then doxygen will generate a graph for +# each documented class showing the direct and indirect inheritance relations. +# Setting this tag to YES will force the CLASS_DIAGRAMS tag to NO. +# The default value is: YES. +# This tag requires that the tag HAVE_DOT is set to YES. + +CLASS_GRAPH = YES + +# If the COLLABORATION_GRAPH tag is set to YES then doxygen will generate a +# graph for each documented class showing the direct and indirect implementation +# dependencies (inheritance, containment, and class references variables) of the +# class with other documented classes. +# The default value is: YES. +# This tag requires that the tag HAVE_DOT is set to YES. + +COLLABORATION_GRAPH = YES + +# If the GROUP_GRAPHS tag is set to YES then doxygen will generate a graph for +# groups, showing the direct groups dependencies. +# The default value is: YES. +# This tag requires that the tag HAVE_DOT is set to YES. + +GROUP_GRAPHS = YES + +# If the UML_LOOK tag is set to YES doxygen will generate inheritance and +# collaboration diagrams in a style similar to the OMG's Unified Modeling +# Language. +# The default value is: NO. +# This tag requires that the tag HAVE_DOT is set to YES. + +UML_LOOK = NO + +# If the UML_LOOK tag is enabled, the fields and methods are shown inside the +# class node. If there are many fields or methods and many nodes the graph may +# become too big to be useful. The UML_LIMIT_NUM_FIELDS threshold limits the +# number of items for each type to make the size more manageable. Set this to 0 +# for no limit. Note that the threshold may be exceeded by 50% before the limit +# is enforced. So when you set the threshold to 10, up to 15 fields may appear, +# but if the number exceeds 15, the total amount of fields shown is limited to +# 10. +# Minimum value: 0, maximum value: 100, default value: 10. +# This tag requires that the tag HAVE_DOT is set to YES. + +UML_LIMIT_NUM_FIELDS = 10 + +# If the TEMPLATE_RELATIONS tag is set to YES then the inheritance and +# collaboration graphs will show the relations between templates and their +# instances. +# The default value is: NO. +# This tag requires that the tag HAVE_DOT is set to YES. + +TEMPLATE_RELATIONS = NO + +# If the INCLUDE_GRAPH, ENABLE_PREPROCESSING and SEARCH_INCLUDES tags are set to +# YES then doxygen will generate a graph for each documented file showing the +# direct and indirect include dependencies of the file with other documented +# files. +# The default value is: YES. +# This tag requires that the tag HAVE_DOT is set to YES. + +INCLUDE_GRAPH = YES + +# If the INCLUDED_BY_GRAPH, ENABLE_PREPROCESSING and SEARCH_INCLUDES tags are +# set to YES then doxygen will generate a graph for each documented file showing +# the direct and indirect include dependencies of the file with other documented +# files. +# The default value is: YES. +# This tag requires that the tag HAVE_DOT is set to YES. + +INCLUDED_BY_GRAPH = YES + +# If the CALL_GRAPH tag is set to YES then doxygen will generate a call +# dependency graph for every global function or class method. +# +# Note that enabling this option will significantly increase the time of a run. +# So in most cases it will be better to enable call graphs for selected +# functions only using the \callgraph command. +# The default value is: NO. +# This tag requires that the tag HAVE_DOT is set to YES. + +CALL_GRAPH = NO + +# If the CALLER_GRAPH tag is set to YES then doxygen will generate a caller +# dependency graph for every global function or class method. +# +# Note that enabling this option will significantly increase the time of a run. +# So in most cases it will be better to enable caller graphs for selected +# functions only using the \callergraph command. +# The default value is: NO. +# This tag requires that the tag HAVE_DOT is set to YES. + +CALLER_GRAPH = NO + +# If the GRAPHICAL_HIERARCHY tag is set to YES then doxygen will graphical +# hierarchy of all classes instead of a textual one. +# The default value is: YES. +# This tag requires that the tag HAVE_DOT is set to YES. + +GRAPHICAL_HIERARCHY = YES + +# If the DIRECTORY_GRAPH tag is set to YES then doxygen will show the +# dependencies a directory has on other directories in a graphical way. The +# dependency relations are determined by the #include relations between the +# files in the directories. +# The default value is: YES. +# This tag requires that the tag HAVE_DOT is set to YES. + +DIRECTORY_GRAPH = YES + +# The DOT_IMAGE_FORMAT tag can be used to set the image format of the images +# generated by dot. +# Note: If you choose svg you need to set HTML_FILE_EXTENSION to xhtml in order +# to make the SVG files visible in IE 9+ (other browsers do not have this +# requirement). +# Possible values are: png, jpg, gif and svg. +# The default value is: png. +# This tag requires that the tag HAVE_DOT is set to YES. + +DOT_IMAGE_FORMAT = png + +# If DOT_IMAGE_FORMAT is set to svg, then this option can be set to YES to +# enable generation of interactive SVG images that allow zooming and panning. +# +# Note that this requires a modern browser other than Internet Explorer. Tested +# and working are Firefox, Chrome, Safari, and Opera. +# Note: For IE 9+ you need to set HTML_FILE_EXTENSION to xhtml in order to make +# the SVG files visible. Older versions of IE do not have SVG support. +# The default value is: NO. +# This tag requires that the tag HAVE_DOT is set to YES. + +INTERACTIVE_SVG = NO + +# The DOT_PATH tag can be used to specify the path where the dot tool can be +# found. If left blank, it is assumed the dot tool can be found in the path. +# This tag requires that the tag HAVE_DOT is set to YES. + +DOT_PATH = + +# The DOTFILE_DIRS tag can be used to specify one or more directories that +# contain dot files that are included in the documentation (see the \dotfile +# command). +# This tag requires that the tag HAVE_DOT is set to YES. + +DOTFILE_DIRS = + +# The MSCFILE_DIRS tag can be used to specify one or more directories that +# contain msc files that are included in the documentation (see the \mscfile +# command). + +MSCFILE_DIRS = + +# The DIAFILE_DIRS tag can be used to specify one or more directories that +# contain dia files that are included in the documentation (see the \diafile +# command). + +DIAFILE_DIRS = + +# The DOT_GRAPH_MAX_NODES tag can be used to set the maximum number of nodes +# that will be shown in the graph. If the number of nodes in a graph becomes +# larger than this value, doxygen will truncate the graph, which is visualized +# by representing a node as a red box. Note that doxygen if the number of direct +# children of the root node in a graph is already larger than +# DOT_GRAPH_MAX_NODES then the graph will not be shown at all. Also note that +# the size of a graph can be further restricted by MAX_DOT_GRAPH_DEPTH. +# Minimum value: 0, maximum value: 10000, default value: 50. +# This tag requires that the tag HAVE_DOT is set to YES. + +DOT_GRAPH_MAX_NODES = 50 + +# The MAX_DOT_GRAPH_DEPTH tag can be used to set the maximum depth of the graphs +# generated by dot. A depth value of 3 means that only nodes reachable from the +# root by following a path via at most 3 edges will be shown. Nodes that lay +# further from the root node will be omitted. Note that setting this option to 1 +# or 2 may greatly reduce the computation time needed for large code bases. Also +# note that the size of a graph can be further restricted by +# DOT_GRAPH_MAX_NODES. Using a depth of 0 means no depth restriction. +# Minimum value: 0, maximum value: 1000, default value: 0. +# This tag requires that the tag HAVE_DOT is set to YES. + +MAX_DOT_GRAPH_DEPTH = 0 + +# Set the DOT_TRANSPARENT tag to YES to generate images with a transparent +# background. This is disabled by default, because dot on Windows does not seem +# to support this out of the box. +# +# Warning: Depending on the platform used, enabling this option may lead to +# badly anti-aliased labels on the edges of a graph (i.e. they become hard to +# read). +# The default value is: NO. +# This tag requires that the tag HAVE_DOT is set to YES. + +DOT_TRANSPARENT = NO + +# Set the DOT_MULTI_TARGETS tag to YES allow dot to generate multiple output +# files in one run (i.e. multiple -o and -T options on the command line). This +# makes dot run faster, but since only newer versions of dot (>1.8.10) support +# this, this feature is disabled by default. +# The default value is: NO. +# This tag requires that the tag HAVE_DOT is set to YES. + +DOT_MULTI_TARGETS = NO + +# If the GENERATE_LEGEND tag is set to YES doxygen will generate a legend page +# explaining the meaning of the various boxes and arrows in the dot generated +# graphs. +# The default value is: YES. +# This tag requires that the tag HAVE_DOT is set to YES. + +GENERATE_LEGEND = YES + +# If the DOT_CLEANUP tag is set to YES doxygen will remove the intermediate dot +# files that are used to generate the various graphs. +# The default value is: YES. +# This tag requires that the tag HAVE_DOT is set to YES. + +DOT_CLEANUP = YES diff --git a/run.sh b/run.sh index 185d155748e08ffba78e8b7478e8fa1d37b1501c..43c500db52885f6756d48ae7b5d4fef3f95cff5c 100755 --- a/run.sh +++ b/run.sh @@ -1,3 +1,4 @@ +<<<<<<< HEAD #! \bin\bash $pre_command ./build/src/mem_map @@ -7,3 +8,37 @@ if [ $? -ne 0 ]; then fi +======= +#! /bin/bash + +hostname=$(hostname) +branch=$3 + +# Make a directory in /tmp/openfpm_data + +cd "openfpm_io" + +echo "CHECKING MACHINE" +if [ x"$hostname" == x"cifarm-centos-node.mpi-cbg.de" ]; then + echo "CENTOS" + export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:$HOME/openfpm_dependencies/openfpm_io/$branch/HDF5/lib" + export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:$HOME/openfpm_dependencies/openfpm_io/$branch/BOOST/lib" +fi + +if [ x"$hostname" == x"cifarm-ubuntu-node" ]; then + export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:$HOME/openfpm_dependencies/openfpm_io/$branch/HDF5/lib" + export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:$HOME/openfpm_dependencies/openfpm_io/$branch/BOOST/lib" +fi + +if [ x"$hostname" == x"cifarm-mac-node.mpi-cbg.de" ]; then + echo "MACOS X" + export DYLD_LIBRARY_PATH="$DYLD_LIBRARY_PATH:$HOME/openfpm_dependencies/openfpm_io/$branch/HDF5/lib" + export DYLD_LIBRARY_PATH="$DYLD_LIBRARY_PATH:$HOME/openfpm_dependencies/openfpm_io/$branch/BOOST/lib" +fi + +pwd + +./build/src/io + + +>>>>>>> origin/master diff --git a/script/discover_os b/script/discover_os new file mode 100755 index 0000000000000000000000000000000000000000..b80dda2b84e5d61b919a8d92e65e5661602337c2 --- /dev/null +++ b/script/discover_os @@ -0,0 +1,37 @@ +#! /bin/bash + +function discover_os() { +platform=unknown + + + if [[ "$OSTYPE" == "linux-gnu" ]]; then + echo -e "We are on\033[1;34m LINUX \033[0m" + platform=linux + elif [[ "$OSTYPE" == "linux" ]]; then + echo -e "We are on\033[1;34m LINUX \033[0m" + platform=linux + elif [[ "$OSTYPE" == "darwin"* ]]; then + echo -e "We are on\033[1;34m MAC OSX \033[0m" + platform=osx + elif [[ "$OSTYPE" == "cygwin" ]]; then + echo -e "We are on\033[1;34m CYGWIN \033[0m" + platform=cygwin + elif [[ "$OSTYPE" == "msys" ]]; then + echo -e "We are on\033[1;34m Microsoft Window \033[0m" + echo "This platform is not supported" + exit 1 + elif [[ "$OSTYPE" == "win32" ]]; then + echo -e "We are on\033[1;34m Microsoft Window \033[0m" + echo "This platform is not supported" + exit 1 + elif [[ "$OSTYPE" == "freebsd"* ]]; then + echo -e "We are on\033[1;34m FREEBSD \033[0m" + echo "This platform is not supported" + exit 1 + else + echo -e "We are on an\033[1;34m unknown OS \033[0m" + echo "This platform is not supported" + exit 1 + fi +} + diff --git a/script/download_MPI.sh b/script/download_MPI.sh new file mode 100755 index 0000000000000000000000000000000000000000..87c15208e4449bf7ca1a8b0a74bcf82f1c7a880f --- /dev/null +++ b/script/download_MPI.sh @@ -0,0 +1,9 @@ +#!/bin/bash + +# check if the directory $1/MPI exist + +rm -rf openmpi-4.1.1 +rm openmpi-4.1.1.tar.gz +wget http://ppmcore.mpi-cbg.de/upload/openmpi-4.1.1.tar.gz +tar -xvf openmpi-4.1.1.tar.gz + diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index cc9991a00e7c7bede93c56623d7b557727d496ff..e2eaa93b97f24610d2afb1d0cadcd7160805fb36 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -1,5 +1,6 @@ cmake_minimum_required(VERSION 3.8 FATAL_ERROR) +<<<<<<< HEAD ########################### Executables @@ -52,10 +53,17 @@ if (CUDA_ON_BACKEND STREQUAL "OpenMP" OR CUDA_ON_BACKEND STREQUAL "SEQUENTIAL") if(CMAKE_CXX_COMPILER_ID STREQUAL "GNU" OR CMAKE_CXX_COMPILER_ID STREQUAL "AppleClang" OR CMAKE_CXX_COMPILER_ID STREQUAL "Clang" OR CMAKE_CXX_COMPILER_ID STREQUAL "Intel") add_definitions("-x c++") endif() +======= +########################### Executables + +if(NOT CUDA_ON_BACKEND STREQUAL "None") + set(CUDA_SOURCES HDF5_wr/HDF5_writer_cuda.cu) +>>>>>>> origin/master endif() if ( CUDA_ON_BACKEND STREQUAL "HIP" AND HIP_FOUND ) +<<<<<<< HEAD list(APPEND HIP_HIPCC_FLAGS ${CMAKE_CXX_FLAGS_DEBUG}) if (CMAKE_BUILD_TYPE STREQUAL "Debug") @@ -77,10 +85,30 @@ if ( CUDA_ON_BACKEND STREQUAL "HIP" AND HIP_FOUND ) SparseGrid/SparseGrid_chunk_copy_unit_tests.cpp Grid/copy_grid_unit_test.cpp NN/Mem_type/Mem_type_unit_tests.cpp Grid/Geometry/tests/grid_smb_tests.cpp) +======= + list(APPEND HIP_HIPCC_FLAGS ${CMAKE_CXX_FLAGS_DEBUG}) + + if (CMAKE_BUILD_TYPE STREQUAL "Debug") + list(APPEND HIP_HIPCC_FLAGS -O0) + endif() + +# set(CMAKE_CXX_COMPILER ${HIP_HIPCC_EXECUTABLE}) + + list(APPEND HIP_HIPCC_FLAGS -D__NVCC__ -D__HIP__ -DCUDART_VERSION=11000 -D__CUDACC__ -D__CUDACC_VER_MAJOR__=11 -D__CUDACC_VER_MINOR__=0 -D__CUDACC_VER_BUILD__=0) + + set_source_files_properties(${CUDA_SOURCES} PROPERTIES LANGUAGE CXX) + + hip_add_executable(io main.cpp + MetaParser/MetaParser_unit_test.cpp + ${CUDA_SOURCES} + ObjReader/ObjReader_unit_test.cpp + CSVReader/tests/CSVReader_unit_test.cpp) +>>>>>>> origin/master else() +<<<<<<< HEAD add_executable(mem_map ${CUDA_SOURCES} main.cpp data_type/aggregate_unit_tests.cpp @@ -133,11 +161,33 @@ if (CMAKE_COMPILER_IS_GNUCC) target_compile_options(mem_map PRIVATE $<$<COMPILE_LANGUAGE:CXX>: -fprofile-arcs -ftest-coverage>) endif () endif () +======= + add_executable(io main.cpp + MetaParser/MetaParser_unit_test.cpp + ${CUDA_SOURCES} + ObjReader/ObjReader_unit_test.cpp + CSVReader/tests/CSVReader_unit_test.cpp) + + set_property(TARGET io PROPERTY CUDA_ARCHITECTURES OFF) + +endif() + +add_dependencies(io ofpmmemory) +add_dependencies(io vcluster) + +if ( CMAKE_COMPILER_IS_GNUCC ) + target_compile_options(io PRIVATE "-Wno-deprecated-declarations") + if (TEST_COVERAGE) + target_compile_options(io PRIVATE $<$<COMPILE_LANGUAGE:CXX>: -fprofile-arcs -ftest-coverage>) + endif() +endif() +>>>>>>> origin/master if (CMAKE_CUDA_COMPILER_ID STREQUAL "Clang") add_definitions(-D__STRICT_ANSI__) endif() +<<<<<<< HEAD ########################### @@ -530,6 +580,125 @@ install(FILES util/cuda/moderngpu/context.hxx DESTINATION openfpm_data/include/util/cuda/moderngpu/ COMPONENT OpenFPM) +======= +########################### + +if (CUDA_FOUND) + target_include_directories (io PUBLIC ${MPI_C_INCLUDE_DIRS}) + + if( CMAKE_CXX_COMPILER_VERSION VERSION_LESS 5.0 ) + add_compile_options( "-fabi-version=6" ) + endif() + + if (TEST_COVERAGE) + target_compile_options(io PRIVATE $<$<COMPILE_LANGUAGE:CUDA>: -Xcompiler "-fprofile-arcs -ftest-coverage" >) + endif() +endif() + +target_include_directories (io PUBLIC ${CMAKE_CUDA_TOOLKIT_INCLUDE_DIRECTORIES}) +target_include_directories (io PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}) +target_include_directories (io PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/../../openfpm_devices/src/) +target_include_directories (io PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/../../openfpm_vcluster/src/) +target_include_directories (io PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/../../openfpm_data/src/) +target_include_directories (io PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/../../src/) +target_include_directories (io PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/config) +target_include_directories (io PUBLIC ${HDF5_ROOT}/include) +target_include_directories (io PUBLIC ${TINYOBJLOADER_INCLUDE_DIRS} ) +target_include_directories (io PUBLIC ${Boost_INCLUDE_DIRS}) +target_include_directories (io PUBLIC ${OPENFPM_PDATA_DIR}/src) +target_include_directories (io PUBLIC ${ALPAKA_ROOT}/include) + +if (PETSC_FOUND) + target_include_directories(io PUBLIC ${PETSC_INCLUDES}) +endif() + +target_link_libraries(io ${Boost_LIBRARIES}) +target_link_libraries(io ${HDF5_LIBRARIES}) +target_link_libraries(io ${TINYOBJLOADER_LIBRARIES} ) +target_link_libraries(io vcluster) +target_link_libraries(io ofpmmemory) +if (OPENMP_FOUND) + target_link_libraries(io OpenMP::OpenMP_CXX) +endif() + +if (PETSC_FOUND) + target_link_libraries(io ${PETSC_LIBRARIES}) +endif() + +# Request that particles be built with -std=c++11 +# As this is a public compile feature anything that links to particles +# will also build with -std=c++11 +target_compile_features(io PUBLIC cxx_std_11) +target_link_libraries(io ${MPI_C_LIBRARIES}) +target_link_libraries(io ${MPI_CXX_LIBRARIES}) +if (TEST_COVERAGE) + target_link_libraries(io -lgcov) +endif() + +install(FILES RawReader/RawReader.hpp + RawReader/RawReader_unit_tests.hpp + DESTINATION openfpm_io/include/RawReader + COMPONENT OpenFPM) + +install(FILES CSVWriter/csv_multiarray.hpp + CSVWriter/CSVWriter.hpp + CSVWriter/is_csv_writable.hpp + DESTINATION openfpm_io/include/CSVWriter/ + COMPONENT OpenFPM) + +install(FILES CSVReader/CSVReader.hpp + DESTINATION openfpm_io/include/CSVReader/ + COMPONENT OpenFPM) + +install(FILES GraphMLWriter/GraphMLWriter.hpp + DESTINATION openfpm_io/include/GraphMLWriter + COMPONENT OpenFPM) + +install(FILES util/util.hpp util/GBoxes.hpp + DESTINATION openfpm_io/include/util + COMPONENT OpenFPM) + +install(FILES VTKWriter/VTKWriter.hpp + VTKWriter/byteswap_portable.hpp + VTKWriter/VTKWriter_dist_graph.hpp + VTKWriter/VTKWriter_graph.hpp + VTKWriter/VTKWriter_point_set.hpp + VTKWriter/VTKWriter_grids.hpp + VTKWriter/VTKWriter_grids_st.hpp + VTKWriter/VTKWriter_grids_util.hpp + VTKWriter/VTKWriter_vector_box.hpp + VTKWriter/is_vtk_writable.hpp + DESTINATION openfpm_io/include/VTKWriter/ + COMPONENT OpenFPM) + +install(FILES MetaParser/MetaParser.hpp + DESTINATION openfpm_io/include/MetaParser/ + COMPONENT OpenFPM) + +install(FILES HDF5_wr/HDF5_wr.hpp + HDF5_wr/HDF5_writer.hpp + HDF5_wr/HDF5_writer_vd.hpp + HDF5_wr/HDF5_writer_gd.hpp + HDF5_wr/HDF5_reader_gd.hpp + HDF5_wr/HDF5_reader.hpp + HDF5_wr/HDF5_reader_vd.hpp + DESTINATION openfpm_io/include/HDF5_wr + COMPONENT OpenFPM) + +install(FILES RawReader/InitGridWithPixel.hpp + DESTINATION openfpm_io/include/RawReader/ + COMPONENT OpenFPM) + +install(FILES util/PathsAndFiles.hpp + DESTINATION openfpm_io/include/util + COMPONENT OpenFPM) + +install(FILES Plot/GoogleChart.hpp Plot/util.hpp + DESTINATION openfpm_io/include/Plot + COMPONENT OpenFPM) + + +>>>>>>> origin/master #if(BUILD_TESTING) # add_executable(particle_test test.cu) @@ -541,9 +710,17 @@ install(FILES util/cuda/moderngpu/context.hxx # add_test(NAME particles_256k COMMAND particle_test 256000 ) # if(APPLE) +<<<<<<< HEAD # We need to add the default path to the driver (libcuda.dylib) as an rpath, # so that the static cuda runtime can find it at runtime. # set_property(TARGET particle_test PROPERTY BUILD_RPATH ${CMAKE_CUDA_IMPLICIT_LINK_DIRECTORIES}) # endif() #endif() +======= + # We need to add the default path to the driver (libcuda.dylib) as an rpath, + # so that the static cuda runtime can find it at runtime. + # set_property(TARGET particle_test PROPERTY BUILD_RPATH ${CMAKE_CUDA_IMPLICIT_LINK_DIRECTORIES}) + # endif() + #endif() +>>>>>>> origin/master diff --git a/src/CSVReader/CSVReader.hpp b/src/CSVReader/CSVReader.hpp new file mode 100644 index 0000000000000000000000000000000000000000..b83a2eea57424a388ef066c8ca4a19d1f8aeb968 --- /dev/null +++ b/src/CSVReader/CSVReader.hpp @@ -0,0 +1,87 @@ +// +// Created by jstark on 23.12.21. +// + +#ifndef OPENFPM_IO_CSVREADER_HPP +#define OPENFPM_IO_CSVREADER_HPP + +#include <iostream> +#include <sstream> +#include <string> + +#include "Vector/map_vector.hpp" +#include "util/PathsAndFiles.hpp" +#include "VCluster/VCluster.hpp" + +/**@brief Converts string into template type T. + * + * @tparam T Destination type. + * @param string_to_convert String that will be streamed into a variable of type T + * @return T-type variable storing the content of string_to_convert + */ +template <typename T> +T string_to_type(const std::string & string_to_convert) +{ + T x_new_type; + std::istringstream istream_string_to_convert(string_to_convert); + istream_string_to_convert >> x_new_type; + return x_new_type; +} + + +/**@brief Csv file is read by process rank 0 and the elements are saved into a linearized vector. The vector is + * broadcasted to the other processes. + * + * @tparam T Type that elements from csv file shall be converted to. + * @param input_file std::string containing the path to the input csv file. + * @param output_vector Empty openfpm::vector<T> to which linearized matrix from csv file will be written. + * @param m Size_t variable to which number of rows of the csv file will be returned. + * @param n Size_t variable to which number of columns of the csv file will be returned. + */ +template <typename T> +void read_csv_to_vector(const std::string & input_file, openfpm::vector<T> & output_vector, size_t & m, size_t & n) +{ + size_t total_size = 0; + m = 0; + n = 0; + auto & v_cl = create_vcluster(); + // File is accessed and read only by one process + if (v_cl.rank() == 0) + { + if(!check_if_file_exists(input_file)) + { + std::cout << "Cannot find < " << input_file << " >. Please check path specification. Aborting..." + << std::endl; + abort(); + } + std::ifstream file(input_file); // Create file pointer and open file + std::string line, element; + while (getline(file, line)) // Read entire row and store as one string in line + { + std::stringstream stream_line(line); // Needed to break line into elements later one + while (getline(stream_line, element, ',')) // Read every column of line and store content as string in element + { + output_vector.add(string_to_type<T>(element)); // Convert element from string to type T and append to + // output_vector + total_size += 1; // Increase n by one for each element read + } + m += 1; // Increase m by one for each row read + } + if(m >= 1) n = total_size / m; // If at least one row present, divide number of elements read by number of rows to get + // the number of columns + } + // Distribute size of the lin. vector to all other processes s.t. their output_vector can be resized accordingly. + MPI_Bcast(&total_size,1,MPI_UNSIGNED,0,MPI_COMM_WORLD); + MPI_Bcast(&m,1,MPI_UNSIGNED,0,MPI_COMM_WORLD); + MPI_Bcast(&n,1,MPI_UNSIGNED,0,MPI_COMM_WORLD); + + if (v_cl.rank() != 0) + { + output_vector.resize(total_size); + } + // After the output_vector has been resized to correct size, it can receive the content from process 0. + v_cl.Bcast(output_vector, 0); + v_cl.execute(); +} + +#endif //OPENFPM_IO_CSVREADER_HPP diff --git a/src/CSVReader/tests/CSVReader_unit_test.cpp b/src/CSVReader/tests/CSVReader_unit_test.cpp new file mode 100644 index 0000000000000000000000000000000000000000..c8d2fbee9d9c57d52048aa4a30c00df8aa908981 --- /dev/null +++ b/src/CSVReader/tests/CSVReader_unit_test.cpp @@ -0,0 +1,62 @@ +// +// Created by jstark on 28.12.21. +// +#define BOOST_TEST_DYN_LINK +#include <boost/test/unit_test.hpp> +#include "CSVReader/CSVReader.hpp" + +BOOST_AUTO_TEST_SUITE(CSVReaderTestSuite) +BOOST_AUTO_TEST_CASE(csv_reader_int_test) + { +#ifdef OPENFPM_PDATA + std::string csv_file = std::string("openfpm_io/test_data/integer.csv"); +#else + std::string csv_file = std::string("test_data/integer.csv"); +#endif + // Read csv file into vector while linearizing + openfpm::vector<int> v_lin; // Vector to which csv file will be read to + size_t m, n; // Number of rows m and columns n + + read_csv_to_vector(csv_file, v_lin, m, n); + + BOOST_CHECK(m == 4); + BOOST_CHECK(n == 3); + BOOST_CHECK(m * n == v_lin.size()); + + for(int i = 0; i < v_lin.size() / n; ++i) + { + BOOST_CHECK( v_lin.get(i * n) == i + 1); + BOOST_CHECK( v_lin.get(i * n + 1) == (i + 1) * 2); + BOOST_CHECK( v_lin.get(i * n + 2) == v_lin.get(i * n) * v_lin.get(i * n + 1)); + } + } + + +BOOST_AUTO_TEST_CASE(csv_reader_char_test) + { +#ifdef OPENFPM_PDATA + std::string csv_file = std::string("openfpm_io/test_data/char.csv"); +#else + std::string csv_file = std::string("test_data/char.csv"); +#endif + // Read csv file into vector while linearizing + openfpm::vector<std::string> v_lin; // Vector to which csv file will be read to + size_t m, n; // Number of rows m and columns n + + read_csv_to_vector(csv_file, v_lin, m, n); + + BOOST_CHECK(m == 5); + BOOST_CHECK(n == 2); + BOOST_CHECK(m * n == v_lin.size()); + + openfpm::vector<std::string> col1 = {"a", "b", "c", "d", "e"}; + openfpm::vector<std::string> col2 = {"antilope", "ballena", "camel", "dackel", "elefant"}; + + for(int i = 0; i < v_lin.size() / n; ++i) + { + BOOST_CHECK(col1.get(i) == v_lin.get(i * n)); + BOOST_CHECK(col2.get(i) == v_lin.get(i * n + 1)); + } + + } +BOOST_AUTO_TEST_SUITE_END() diff --git a/src/CSVWriter/CSVWriter.hpp b/src/CSVWriter/CSVWriter.hpp new file mode 100644 index 0000000000000000000000000000000000000000..c7abc933923e4115cf88a2e057ff287cc6279924 --- /dev/null +++ b/src/CSVWriter/CSVWriter.hpp @@ -0,0 +1,281 @@ +/* + * CSVWriter.hpp + * + * Created on: Dec 15, 2014 + * Author: Pietro Incardona + */ + +#ifndef CSVWRITER_HPP_ +#define CSVWRITER_HPP_ + +#include <iostream> +#include <boost/fusion/include/mpl.hpp> +#include <boost/fusion/include/for_each.hpp> +#include <fstream> +#include "util/common.hpp" +#include <boost/mpl/range_c.hpp> +#include "util/for_each_ref_host.hpp" +#include "csv_multiarray.hpp" +#include "util/util.hpp" +#include "is_csv_writable.hpp" + +#define CSV_WRITER 0x30000 + +/*! \brief this class is a functor for "for_each" algorithm + * + * For each element of the boost::vector the operator() is called. + * Is mainly used to create a string containing all the properties of the object + * + * \tparam Tobj object + * + */ + +template<typename Tobj> +struct csv_prp +{ + //! String containing the csv line constructed from an object + std::stringstream & str; + + //! Object to write + Tobj & obj; + + /*! \brief Constructor + * + * Create a vertex properties list + * + * \param str streamstring + * \param obj object to write + * + */ + csv_prp(std::stringstream & str, Tobj & obj) + :str(str),obj(obj) + { + }; + + //! It call the functor for each member + template<typename T> + void operator()(T& t) + { + // This is the type of the csv column + typedef typename boost::mpl::at<typename Tobj::type,T>::type col_type; + + // Remove the reference from the column type + typedef typename boost::remove_reference<col_type>::type col_rtype; + typedef typename std::remove_all_extents<col_rtype>::type base_col_rtype; + + csv_value_str<col_rtype, is_csv_writable<base_col_rtype>::value >(obj.template get<T::value>(),str); + } +}; + +/*! \brief this class is a functor for "for_each" algorithm + * + * For each element of the boost::vector the operator() is called. + * Is mainly used to create a string containing all the properties of the object + * + * \tparam T object + * + */ + +template<typename Tobj, bool attr> +struct csv_col +{ + //! String containing the colums list as string + std::stringstream & str; + + /*! \brief Constructor + * + * \str String where to put the colum list + * + */ + csv_col(std::stringstream & str) + :str(str) + { + }; + + //! It call the functor for each member + template<typename T> + inline void operator()(T& t) + { + // This is the type of the csv column + typedef typename boost::mpl::at<typename Tobj::type,boost::mpl::int_<T::value>>::type col_type; + + csv_col_str<col_type>(std::string(Tobj::attributes::name[T::value]),str); + } +}; + +/*! \brief this class is a functor for "for_each" algorithm + * + * This class is a functor for "for_each" algorithm. For each + * element of the boost::vector the operator() is called. + * Is mainly used to create a string containing all the vertex + * properties + * + * Specialization when we do not have vertex attributes + * + * \tparam G graph type + * + */ + +template<typename Tobj> +struct csv_col<Tobj,false> +{ + //! String containing the colums list as string + std::stringstream & str; + + /*! \brief Constructor + * + * \str String where to put the colum list + * + */ + csv_col(std::stringstream & str) + :str(str) + { + }; + + //! It call the functor for each member + template<typename T> + void operator()(T& t) + { + // This is the type of the csv column + typedef typename boost::fusion::result_of::at_c<typename Tobj::type,T::value>::type col_type; + + // Remove the reference from the column type + typedef typename boost::remove_reference<col_type>::type col_rtype; + + std::stringstream str2; + str2 << "column_" << T::value; + + csv_col_str<col_rtype>(str2.str(),str); + } +}; + +//#define VECTOR 1 + +/*! \brief CSV Writer + * + * It write in CSV format vector of objects living into an N-dimensional space + * + * \tparam v_pos Positional vector + * \tparam v_prp Property vector + * + */ +template <typename v_pos, typename v_prp, unsigned int impl = 1> +class CSVWriter +{ + /*! \brief Get the colums name (also the positional name) + * + */ + std::string get_csv_colums() + { + std::stringstream str; + + // write positional columns + for (size_t i = 0 ; i < v_pos::value_type::dims ; i++) + { + if (i == 0) + str << "x[" << i << "]"; + else + str << "," << "x[" << i << "]"; + } + + // write positional information + + csv_col<typename v_prp::value_type,has_attributes<typename v_prp::value_type>::value> col(str); + + // Iterate through all the vertex and create the vertex list + boost::mpl::for_each_ref_host< boost::mpl::range_c<int,0,v_prp::value_type::max_prop> >(col); + + str << "\n"; + + return str.str(); + } + + /*! \brief Get the csv data section + * + * \param vp vector that contain the positional information + * \param vpr vector that contain the property information + * \param offset from where to start + * + */ + std::string get_csv_data(v_pos & vp, v_prp & vpr, size_t offset) + { + std::stringstream str; + + // The position and property vector size must match + if (vp.size() != vpr.size()) + { + std::cerr << "Error: " << __FILE__ << ":" << __LINE__ << " position vector and property vector must have the same size \n"; + return std::string(""); + } + + // Write the data + for (size_t i = offset ; i < vp.size() ; i++) + { + for (size_t j = 0 ; j < v_pos::value_type::dims ; j++) + { + if (j == 0) + str << vp.template get<0>(i)[j]; + else + str << "," << vp.template get<0>(i)[j]; + } + + // Object to write + auto obj = vpr.get(i); + + csv_prp<decltype(obj)> c_prp(str,obj); + + // write the properties to the stream string + boost::mpl::for_each_ref_host< boost::mpl::range_c<int,0,v_prp::value_type::max_prop> >(c_prp); + + str << "\n"; + } + + return str.str(); + } + +public: + + /*! \brief It write a CSV file + * + * \tparam prp which properties to output [default = -1 (all)] + * + * \param file path where to write + * \param v positional vector + * \param prp properties vector + * \param offset from where to start to write + * + */ + bool write(std::string file, v_pos & v , v_prp & prp, size_t offset=0) + { + // Header for csv (colums name) + std::string csv_header; + // Data point + std::string point_data; + + // Get csv columns + csv_header = get_csv_colums(); + + // For each property in the vertex type produce a point data + point_data = get_csv_data(v,prp,offset); + + // write the file + std::ofstream ofs(file); + + // Check if the file is open + if (ofs.is_open() == false) + {std::cerr << "Error " << __FILE__ << ":" << __LINE__ << " cannot create the CSV file: " << file << std::endl;} + + ofs << csv_header << point_data; + + // Close the file + + ofs.close(); + + // Completed succefully + return true; + } +}; + + +#endif /* CSVWRITER_HPP_ */ + diff --git a/src/CSVWriter/CSVWriter_unit_tests.hpp b/src/CSVWriter/CSVWriter_unit_tests.hpp new file mode 100644 index 0000000000000000000000000000000000000000..ed01d3c21ce130fcc7311556a926648e72752c64 --- /dev/null +++ b/src/CSVWriter/CSVWriter_unit_tests.hpp @@ -0,0 +1,87 @@ +#ifndef CSVWRITER_UNIT_TESTS_HPP_ +#define CSVWRITER_UNIT_TESTS_HPP_ + +#include "CSVWriter.hpp" +#include "Vector/vector_test_util.hpp" + +BOOST_AUTO_TEST_SUITE( csv_writer_test ) + + +BOOST_AUTO_TEST_CASE( csv_writer_particles ) +{ + Vcluster<> & v_cl = create_vcluster(); + + if (v_cl.getProcessUnitID() != 0) + return; + +#ifdef OPENFPM_PDATA + + if (v_cl.rank() != 0) {return;} + std::string c2 = std::string("openfpm_io/test_data/csv_out_test.csv"); + std::string c3 = std::string("openfpm_io/test_data/csv_out_unk_test.csv"); + + +#else + + std::string c2 = std::string("test_data/csv_out_test.csv"); + std::string c3 = std::string("test_data/csv_out_unk_test.csv"); + +#endif + + { + // Allocate a property vector + auto v_prp = allocate_openfpm_prp(16); + // Vector of position + openfpm::vector<Point<3,float>> v_pos; + + // create a positional vector + for (size_t i = 0 ; i < v_prp.size() ; i++) + { + Point<3,float> p({1.0,2.0,3.0}); + + v_pos.add(p); + } + + // CSVWriter test + CSVWriter<openfpm::vector<Point<3,float>>, openfpm::vector<Point_test_prp<float>> > csv_writer; + + // Write the CSV + csv_writer.write("csv_out.csv",v_pos,v_prp); + + bool test = compare("csv_out.csv",c2); + BOOST_REQUIRE_EQUAL(true,test); + } + + { + // Allocate a property vector + auto v_prp = allocate_openfpm_aggregate_with_complex(16); + // Vector of position + openfpm::vector<Point<3,float>> v_pos; + + // create a positional vector + for (size_t i = 0 ; i < v_prp.size() ; i++) + { + Point<3,float> p({1.0,2.0,3.0}); + + v_pos.add(p); + } + + // CSVWriter test + CSVWriter<openfpm::vector<Point<3,float>>, openfpm::vector< aggregate<float,float,float,float,float[3],float[3][3],openfpm::vector<int>> > > csv_writer; + + // Write the CSV + csv_writer.write("csv_out_unk.csv",v_pos,v_prp); + + // In case of SE_CLASS3 enabled the number of properties change + +#ifndef SE_CLASS3 + bool test = compare("csv_out_unk.csv",c3); + BOOST_REQUIRE_EQUAL(true,test); +#endif + } + +} + +BOOST_AUTO_TEST_SUITE_END() + +#endif diff --git a/src/CSVWriter/csv_multiarray.hpp b/src/CSVWriter/csv_multiarray.hpp new file mode 100644 index 0000000000000000000000000000000000000000..6d91899f626798730a0dc77fed1a953ee44c2e78 --- /dev/null +++ b/src/CSVWriter/csv_multiarray.hpp @@ -0,0 +1,218 @@ +/* + * csv_multiarray_copy.hpp + * + * Created on: Jun 20, 2015 + * Author: i-bird + */ + +#ifndef CSV_MULTIARRAY_COPY_HPP_ +#define CSV_MULTIARRAY_COPY_HPP_ + + + +/*! \brief This class is an helper to produce csv headers from multi-array + * + * Usage: + * + * \code{.cpp} + * + * float src[3]; + * + * std::stringstream str; + * csv_col_str<float[3]> cp(std::string("test"),str); + * + * std::cout << str.str() << "\n"; + * + * \endcode + * + * Will produce ",test[0],test[1],test[2]" + * + */ +template<typename T> +struct csv_col_str +{ + inline csv_col_str(std::string prp, std::stringstream & str) + { + str << "," << prp; + } +}; + +//! Partial specialization for N=1 1D-Array +template<typename T,size_t N1> +struct csv_col_str<T[N1]> +{ + inline csv_col_str(std::string prp, std::stringstream & str) + { + for (size_t i = 0 ; i < N1 ; i++) + str << "," << prp << "_" << "[" << i << "]"; + } +}; + +//! Partial specialization for N=2 2D-Array +template<typename T,size_t N1,size_t N2> +struct csv_col_str<T[N1][N2]> +{ + inline csv_col_str(std::string prp, std::stringstream & str) + { + for (size_t i1 = 0 ; i1 < N1 ; i1++) + { + for (size_t i2 = 0 ; i2 < N2 ; i2++) + { + str << "," << prp << "_" << "[" << i1 << "]" << "[" << i2 << "]"; + } + } + } +}; + +//! Partial specialization for N=3 +template<typename T,size_t N1,size_t N2,size_t N3> +struct csv_col_str<T[N1][N2][N3]> +{ + inline csv_col_str(std::string prp, std::stringstream & str) + { + for (size_t i1 = 0 ; i1 < N1 ; i1++) + { + for (size_t i2 = 0 ; i2 < N2 ; i2++) + { + for (size_t i3 = 0 ; i3 < N3 ; i3++) + { + str << "," << prp << "_" << "[" << i1 << "]" << "[" << i2 << "]" << "[" << i3 << "]"; + } + } + } + } +}; + +//! Partial specialization for N=4 +template<typename T,size_t N1,size_t N2,size_t N3,size_t N4> +struct csv_col_str<T[N1][N2][N3][N4]> +{ + inline csv_col_str(std::string prp, std::stringstream & str) + { + for (size_t i1 = 0 ; i1 < N1 ; i1++) + { + for (size_t i2 = 0 ; i2 < N2 ; i2++) + { + for (size_t i3 = 0 ; i3 < N3 ; i3++) + { + for (size_t i4 = 0 ; i4 < N4 ; i4++) + { + str << "," << prp << "_" << "[" << i1 << "]" << "[" << i2 << "]" << "[" << i3 << "]" << "[" << i4 << "]"; + } + } + } + } + } +}; + + +/*! \brief This class is an helper to produce csv data from multi-array + * + * Usage: + * + * \code{.cpp} + * + * float src[3] = {1.0,2.0,3.0}; + * + * std::stringstream str; + * csv_value_str<float[3]> cp(src,str); + * + * std::cout << str.str() << "\n"; + * + * \endcode + * + * Will produce ",1.0,2.0,3.0" + * + */ +template<typename T, bool is_writable> +struct csv_value_str +{ + inline csv_value_str(T & v, std::stringstream & str) + { + str << "," << v; + } +}; + +//! Partial specialization for N=1 1D-Array +template<typename T,size_t N1, bool is_writable> +struct csv_value_str<T[N1], is_writable> +{ + template<typename ArrObject> + inline csv_value_str(const ArrObject v, std::stringstream & str) + { + for (size_t i = 0 ; i < N1 ; i++) + str << "," << v[i]; + } +}; + +//! Partial specialization for N=2 2D-Array +template<typename T,size_t N1,size_t N2, bool is_writable> +struct csv_value_str<T[N1][N2], is_writable> +{ + template<typename ArrObject> + inline csv_value_str(const ArrObject v, std::stringstream & str) + { + for (size_t i1 = 0 ; i1 < N1 ; i1++) + { + for (size_t i2 = 0 ; i2 < N2 ; i2++) + { + str << "," << v[i1][i2]; + } + } + } +}; + +//! Partial specialization for N=3 +template<typename T,size_t N1,size_t N2,size_t N3, bool is_writable> +struct csv_value_str<T[N1][N2][N3], is_writable> +{ + template<typename ArrObject> + inline csv_value_str(const ArrObject v, std::stringstream & str) + { + for (size_t i1 = 0 ; i1 < N1 ; i1++) + { + for (size_t i2 = 0 ; i2 < N2 ; i2++) + { + for (size_t i3 = 0 ; i3 < N3 ; i3++) + { + str << "," << v[i1][i2][i3]; + } + } + } + } +}; + +//! Partial specialization for N=4 +template<typename T,size_t N1,size_t N2,size_t N3,size_t N4, bool is_writable> +struct csv_value_str<T[N1][N2][N3][N4],is_writable> +{ + template<typename ArrObject> + inline csv_value_str(const ArrObject v, std::stringstream & str) + { + for (size_t i1 = 0 ; i1 < N1 ; i1++) + { + for (size_t i2 = 0 ; i2 < N2 ; i2++) + { + for (size_t i3 = 0 ; i3 < N3 ; i3++) + { + for (size_t i4 = 0 ; i4 < N4 ; i4++) + { + str << "," << v[i1][i2][i3][i4]; + } + } + } + } + } +}; + +//! Partial specialization for unknown property +template<typename T> +struct csv_value_str<T,false> +{ + inline csv_value_str(const T v, std::stringstream & str) + { + str << "," << 0.0; + } +}; + +#endif /* CSV_MULTIARRAY_COPY_HPP_ */ diff --git a/src/CSVWriter/is_csv_writable.hpp b/src/CSVWriter/is_csv_writable.hpp new file mode 100644 index 0000000000000000000000000000000000000000..48beba760ab6169b962bc252a6ba38f615d57e05 --- /dev/null +++ b/src/CSVWriter/is_csv_writable.hpp @@ -0,0 +1,177 @@ +/* + * is_csv_writable.hpp + * + * Created on: Jul 18, 2016 + * Author: i-bird + */ + +#ifndef OPENFPM_IO_SRC_CSVWRITER_IS_CSV_WRITABLE_HPP_ +#define OPENFPM_IO_SRC_CSVWRITER_IS_CSV_WRITABLE_HPP_ + + +//! Indicate if the property T is writable in CSV +template<typename T> +struct is_csv_writable +{ + //! as default if not recognized is not writable + enum + { + value = false + }; +}; + +//! Indicate if the property T is writable in CSV +template<> +struct is_csv_writable<float> +{ + //! float is writable + enum + { + value = true + }; +}; + +//! Indicate if the property T is writable in CSV +template<> +struct is_csv_writable<double> +{ + //! double is writable + enum + { + value = true + }; +}; + +//! Indicate if the property T is writable in CSV +template<> +struct is_csv_writable<char> +{ + //! char is writable + enum + { + value = true + }; +}; + +//! Indicate if the property T is writable in CSV +template<> +struct is_csv_writable<unsigned char> +{ + //! unsigned char is writable + enum + { + value = true + }; +}; + +//! Indicate if the property T is writable in CSV +template<> +struct is_csv_writable<short> +{ + //! short is writable + enum + { + value = true + }; +}; + +//! Indicate if the property T is writable in CSV +template<> +struct is_csv_writable<unsigned short> +{ + //! unsigned is writable + enum + { + value = true + }; +}; + +//! Indicate if the property T is writable in CSV +template<> +struct is_csv_writable<int> +{ + //! int is writable + enum + { + value = true + }; +}; + +//! Indicate if the property T is writable in CSV +template<> +struct is_csv_writable<unsigned int> +{ + //! unsigned int is writable + enum + { + value = true + }; +}; + +//! Indicate if the property T is writable in CSV +template<> +struct is_csv_writable<long int> +{ + //! long int is writable + enum + { + value = true + }; +}; + +//! Indicate if the property T is writable in CSV +template<> +struct is_csv_writable<unsigned long int> +{ + //! unsigned long int is writable + enum + { + value = true + }; +}; + +//! Indicate if the property T is writable in CSV +template<> +struct is_csv_writable<bool> +{ + //! bool is writable + enum + { + value = true + }; +}; + +//! Indicate if the property T is writable in CSV +template<typename T, unsigned int N1> +struct is_csv_writable<T[N1]> +{ + //! bool is writable + enum + { + value = true + }; +}; + +//! Indicate if the property T is writable in CSV +template<typename T, unsigned int N1, unsigned int N2> +struct is_csv_writable<T[N1][N2]> +{ + //! bool is writable + enum + { + value = true + }; +}; + +//! Indicate if the property T is writable in CSV +template<typename T, unsigned int N1, unsigned int N2, unsigned int N3> +struct is_csv_writable<T[N1][N2][N3]> +{ + //! bool is writable + enum + { + value = true + }; +}; + +#endif /* OPENFPM_IO_SRC_CSVWRITER_IS_CSV_WRITABLE_HPP_ */ diff --git a/src/GraphMLWriter/GraphMLWriter.hpp b/src/GraphMLWriter/GraphMLWriter.hpp new file mode 100644 index 0000000000000000000000000000000000000000..d34504e9220116119f086da98002418a606b61ed --- /dev/null +++ b/src/GraphMLWriter/GraphMLWriter.hpp @@ -0,0 +1,764 @@ +#ifndef GRAPHML_WRITER_HPP +#define GRAPHML_WRITER_HPP + +#include "Graph/map_graph.hpp" +#include <iostream> +#include <fstream> +#include "util/common.hpp" + + +/*! \brief Create properties name starting from a type T + * + * if T has defined some properties name that name are used otherwise + * default name are created + * + * \tparam T vertex type + * + */ + +template <typename T> +void create_prop(std::string * str) +{ + // if T has attributes defined + if (has_attributes<T>::value ) + { + // Create properties names based on the attributes name defined + for (size_t i = 0 ; i < T::max_prop ; i++) + { + str[i] = std::string(T::attributes::name[i]); + } + } + else + { + // Create default properties name + for (size_t i = 0 ; i < T::max_prop ; i++) + { + str[i] = "attr" + std::to_string(i); + } + } +} + +/*! \brief this class is a functor for "for_each" algorithm + * + * This class is a functor for "for_each" algorithm. For each + * element of the boost::vector the operator() is called. + * Is mainly used to create a string containing all the vertex + * properties + * + */ + +template<typename G> +struct vertex_prop +{ + //! Properties counter + int cnt = 0; + + //! vertex properties + std::string & v_prop; + + //! Attribute names + std::string * attributes_names; + + //! Number of attributes name defined into the vertex + int n_attr = 0; + + //! indicate if attributes_names is to destroy + bool to_destroy = false; + + /*! \brief Constructor + * + * Create a vertex properties list + * + * \param v_prop std::string that is filled with the graph properties in the GraphML format + * \param a_name array with the names of the properties + * + */ + vertex_prop(std::string & v_prop, typename G::V_type::attributes & a_name) + :v_prop(v_prop),attributes_names(a_name.name) + { + // Calculate the number of attributes name + n_attr = sizeof(a_name.name)/sizeof(std::string); + }; + + /*! \brief Constructor + * + * Create a vertex properties list + * + * \param v_prop std::string that is filled with the graph properties in the GraphML format + * + */ + vertex_prop(std::string & v_prop) + :v_prop(v_prop),attributes_names(NULL) + { + // Calculate the number of attributes + n_attr = G::V_type::max_prop; + + // Create default property names + attributes_names = new std::string[G::V_type::max_prop]; + to_destroy = true; + + // Create default property names + create_prop<typename G::V_type>(attributes_names); + }; + + //! destructor + ~vertex_prop() + { + if (to_destroy == true) + {delete [] attributes_names;} + } + + /*! It call the functor for each member + * + * \param t each member + * + */ + template<typename T> + void operator()(T& t) + { + //! Create an entry for the attribute + if (cnt < n_attr) + { + // if it is a yFile extension property name, does not process it + if (attributes_names[cnt] == "x" || attributes_names[cnt] == "y" + || attributes_names[cnt] == "z" || attributes_names[cnt] == "shape" ) + {cnt++; return ;} + + // Create a property string based on the type of the property + if (std::is_same<T,float>::value) + v_prop += "<key id=\"vk" + std::to_string(cnt) + "\" for=\"node\" attr.name=\"" + attributes_names[cnt] + "\" attr.type=\"float\"/>\n"; + else if (std::is_same<T,double>::value) + v_prop += "<key id=\"vk" + std::to_string(cnt) + "\" for=\"node\" attr.name=\"" + attributes_names[cnt] + "\" attr.type=\"double\"/>\n"; + else if (std::is_same<T,int>::value) + v_prop += "<key id=\"vk" + std::to_string(cnt) + "\" for=\"node\" attr.name=\"" + attributes_names[cnt] + "\" attr.type=\"int\"/>\n"; + else if (std::is_same<T,long int>::value) + v_prop += "<key id=\"vk" + std::to_string(cnt) + "\" for=\"node\" attr.name=\"" + attributes_names[cnt] + "\" attr.type=\"long\"/>\n"; + else if (std::is_same<T,bool>::value) + v_prop += "<key id=\"vk" + std::to_string(cnt) + "\" for=\"node\" attr.name=\"" + attributes_names[cnt] + "\" attr.type=\"boolean\"/>\n"; + else if (std::is_same<T,std::string>::value) + v_prop += "<key id=\"vk" + std::to_string(cnt) + "\" for=\"node\" attr.name=\"" + attributes_names[cnt] + "\" attr.type=\"string\"/>\n"; + } + + cnt++; + } +}; + +/*! \brief this class is a functor for "for_each" algorithm + * + * This class is a functor for "for_each" algorithm. For each + * element of the boost::vector the operator() is called. + * Is mainly used to create a string containing all the vertex + * properties + * + */ + +template<typename G> +struct vertex_node +{ + //! Vertex object container + const typename G::V_container & vo; + + //! Properties counter + int cnt = 0; + + //! vertex node string + std::string & v_node; + + //! Attribute names + std::string * attributes_names; + + //! Number of attributes name defined into the vertex + int n_attr = 0; + + //! indicate if attributes_names is to destroy + bool to_destroy = false; + + /*! \brief Constructor + * + * Create a vertex node + * + * \param v_node std::string that is filled with the graph node definition in the GraphML format + * \param n_obj object container to access its properties for example encapc<...> + * \param a_name stub SFINAE, it basically check if G has properties names defined, if yes this + * constructor is selected over the other one + * + */ + inline vertex_node(std::string & v_node, const typename G::V_container & n_obj, typename G::V_type::attributes & a_name) + :vo(n_obj),v_node(v_node),attributes_names(a_name.name) + { + // Calculate the number of attributes name + n_attr = sizeof(a_name.name)/sizeof(std::string); + }; + +#ifdef DEBUG + /*! \brief Constructor + * + * Calling this constructor produce an error. This class store the reference of the object, + * this mean that the object passed must not be a temporal object + * + */ + inline vertex_node(std::string & v_node, const typename G::V_container && n_obj, typename G::V_type::attributes & a_name) + :vo(n_obj),v_node(v_node),attributes_names(a_name.name) + {std::cerr << "Error: " <<__FILE__ << ":" << __LINE__ << " Passing a temporal object\n";}; +#endif + + /*! \brief Constructor + * + * Create a vertex properties list + * + * \param v_node std::string that is filled with the graph properties in the GraphML format + * \param n_obj object container to access its properties for example encapc<...> + * + */ + inline vertex_node(std::string & v_node, const typename G::V_container & n_obj) + :vo(n_obj),v_node(v_node),attributes_names(NULL) + { + // Calculate the number of attributes + n_attr = G::V_type::max_prop; + + // Create default property names + attributes_names = new std::string[G::V_type::max_prop]; + to_destroy = true; + + // Create default property names + create_prop<typename G::V_type>(attributes_names); + }; + + inline ~vertex_node() + { + if (to_destroy == true) + {delete [] attributes_names;} + } + +#ifdef DEBUG + /*! \brief Constructor + * + * Calling this constructor produce an error. This class store the reference of the object, + * this mean that the object passed must not be a temporal object + * + */ + inline vertex_node(std::string & v_node, const typename G::V_container && n_obj) + :vo(n_obj),v_node(v_node),attributes_names(NULL) + {std::cerr << "Error: " <<__FILE__ << ":" << __LINE__ << " Passing a temporal object\n";}; +#endif + + /*! \brief Create a new node + * + * \param v_c id of the node + * + */ + void new_node(size_t v_c) + { + // start a new node + v_node += "<node id=\"n"+ std::to_string(v_c) + "\">\n"; + + // reset the counter properties + cnt = 0; + } + + /*! \brief Close a node + * + * Close a node + * + */ + void end_node() + { + // close a node + v_node += "</node>\n"; + } + + /*! \brief It call the functor for each member + * + * \param t each member + * + */ + template<typename T> + void operator()(T& t) + { + //! Create an entry for the attribute + if (T::value < n_attr) + { + typedef typename std::remove_reference<decltype(vo.template get<T::value>())>::type type_get; + + // Create a property string based on the type of the property + if (std::is_same<type_get,float>::value) + v_node += " <data key=\"vk" + std::to_string(cnt) + "\">" + std::to_string(vo.template get<T::value>()) + "</data>\n"; + else if (std::is_same<type_get,double>::value) + v_node += " <data key=\"vk" + std::to_string(cnt) + "\">" + std::to_string(vo.template get<T::value>()) + "</data>\n"; + else if (std::is_same<type_get,int>::value ) + v_node += " <data key=\"vk" + std::to_string(cnt) + "\">" + std::to_string(vo.template get<T::value>()) + "</data>\n"; + else if (std::is_same<type_get,long int>::value) + v_node += " <data key=\"vk" + std::to_string(cnt) + "\">" + std::to_string(vo.template get<T::value>()) + "</data>\n"; + else if (std::is_same<type_get,bool>::value) + v_node += " <data key=\"vk" + std::to_string(cnt) + "\">" + std::to_string(vo.template get<T::value>()) + "</data>\n"; + else if (std::is_same<type_get,std::string>::value) + v_node += " <data key=\"vk" + std::to_string(cnt) + "\">" + std::to_string(vo.template get<T::value>()) + "</data>\n"; + } + + cnt++; + } +}; + +/*! \brief this class is a functor for "for_each" algorithm + * + * This class is a functor for "for_each" algorithm. For each + * element of the boost::vector the operator() is called. + * Is mainly used to create a string containing all the edge + * properties + * + */ + +template<typename G> +struct edge_prop +{ + //! Properties counter + int cnt = 0; + + //! edge properties + std::string & e_prop; + + //! Attribute names + std::string * attributes_names; + + //! Number of attributes name defined into the vertex + int n_attr = 0; + + //! indicate if attributes_names is to destroy + bool to_destroy = false; + + /*! \brief Constructor + * + * Create an edge properties list + * + * \param e_prop std::string that is filled with the graph properties in the GraphML format + * \param a_name stub SFINAE, it basically check if G::E_type has properties names defined, if yes this + * constructor is selected over the other one + * + */ + edge_prop(std::string & e_prop, typename G::E_type::attributes & a_name) + :e_prop(e_prop),attributes_names(a_name.name) + { + // Calculate the number of attributes name + n_attr = sizeof(a_name.name)/sizeof(std::string); + }; + + /*! \brief Constructor + * + * Create an edge properties list + * + * \param e_prop std::string that is filled with the graph properties in the GraphML format + * + */ + edge_prop(std::string & e_prop) + :e_prop(e_prop),attributes_names(NULL) + { + // Calculate the number of attributes + n_attr = G::E_type::max_prop; + + // Create default property names + attributes_names = new std::string[G::E_type::max_prop]; + to_destroy = true; + + // Create default property names + create_prop<typename G::E_type>(attributes_names); + }; + + inline ~edge_prop() + { + if (to_destroy == true) + {delete [] attributes_names;} + } + + /*! \brief It call the functor for each member + * + * \param t each member + * + */ + template<typename T> + void operator()(T& t) + { + //! Create an entry for the attribute + if (cnt < n_attr) + { + // Create a property string based on the type of the property + if (std::is_same<T,float>::value) + e_prop += "<key id=\"ek" + std::to_string(cnt) + "\" for=\"edge\" attr.name=\"" + attributes_names[cnt] + "\" attr.type=\"float\"/>\n"; + else if (std::is_same<T,double>::value) + e_prop += "<key id=\"ek" + std::to_string(cnt) + "\" for=\"edge\" attr.name=\"" + attributes_names[cnt] + "\" attr.type=\"double\"/>\n"; + else if (std::is_same<T,int>::value) + e_prop += "<key id=\"ek" + std::to_string(cnt) + "\" for=\"edge\" attr.name=\"" + attributes_names[cnt] + "\" attr.type=\"int\"/>\n"; + else if (std::is_same<T,long int>::value) + e_prop += "<key id=\"ek" + std::to_string(cnt) + "\" for=\"edge\" attr.name=\"" + attributes_names[cnt] + "\" attr.type=\"long\"/>\n"; + else if (std::is_same<T,bool>::value) + e_prop += "<key id=\"ek" + std::to_string(cnt) + "\" for=\"edge\" attr.name=\"" + attributes_names[cnt] + "\" attr.type=\"boolean\"/>\n"; + else if (std::is_same<T,std::string>::value) + e_prop += "<key id=\"ek" + std::to_string(cnt) + "\" for=\"edge\" attr.name=\"" + attributes_names[cnt] + "\" attr.type=\"string\"/>\n"; + } + + cnt++; + } +}; + +/*! \brief this class is a functor for "for_each" algorithm + * + * This class is a functor for "for_each" algorithm. For each + * element of the boost::vector the operator() is called. + * Is mainly used to create a string containing all the edge + * properties + * + */ + +template<typename G> +struct edge_node +{ + //! Vertex object container + typename G::E_container & vo; + + //! Properties counter + int cnt = 0; + + //! edge node string + std::string & e_node; + + //! Attribute names + std::string * attributes_names; + + //! Number of attributes name defined into the vertex + int n_attr = 0; + + //! indicate if attributes_names is to destroy + bool to_destroy = false; + + /*! \brief Constructor + * + * Create an edge node + * + * \param e_node std::string that is filled with the graph node definition in the GraphML format + * \param n_obj object container to access the object properties for example encapc<...> + * \param a_name attributes names + * + */ + edge_node(std::string & e_node, typename G::E_container & n_obj, typename G::E_type::attributes & a_name) + :vo(n_obj),e_node(e_node),attributes_names(a_name.name) + { + // Calculate the number of attributes name + n_attr = sizeof(a_name.name)/sizeof(std::string); + }; + + /*! \brief Constructor + * + * Create an edge node + * + * \param e_node std::string that is filled with the graph properties in the GraphML format + * \param n_obj object container to access the object properties for example encapc<...> + * + */ + edge_node(std::string & e_node, typename G::E_container & n_obj) + :vo(n_obj),e_node(e_node),attributes_names(NULL) + { + // Calculate the number of attributes + n_attr = G::E_type::max_prop; + + // Create a number of default properties name + attributes_names = new std::string[G::E_type::max_prop]; + to_destroy = true; + + // Create default property names + create_prop<typename G::E_type>(attributes_names); + + }; + + inline ~edge_node() + { + if (to_destroy == true) + {delete [] attributes_names;} + } + + /*! \brief Create a new node + * + * \param v_c node number + * \param s source node id + * \param d destination node id + * + */ + void new_node(size_t v_c, size_t s, size_t d) + { + // start a new node + e_node += "<edge id=\"e"+ std::to_string(v_c) + "\" source=\"n" + std::to_string(s) + "\" target=\"n" + std::to_string(d) + "\">\n"; + + // reset the counter properties + cnt = 0; + } + + /*! \brief Close a node + * + * Close a node + * + */ + void end_node() + { + // close a node + e_node += "</edge>\n"; + } + + /*! It call the functor for each member + * + * \param t each member + * + */ + template<typename T> + void operator()(T& t) + { + //! Create an entry for the attribute + if (T::value < n_attr) + { + typedef typename std::remove_reference<decltype(vo.template get<T::value>())>::type type_get; + + // Create a property string based on the type of the property + if (std::is_same<type_get,float>::value) + e_node += " <data key=\"ek" + std::to_string(cnt) + "\">" + std::to_string(vo.template get<T::value>()) + "</data>\n"; + else if (std::is_same<type_get,double>::value) + e_node += " <data key=\"ek" + std::to_string(cnt) + "\">" + std::to_string(vo.template get<T::value>()) + "</data>\n"; + else if (std::is_same<type_get,int>::value) + e_node += " <data key=\"ek" + std::to_string(cnt) + "\">" + std::to_string(vo.template get<T::value>()) + "</data>\n"; + else if (std::is_same<type_get,long int>::value) + e_node += " <data key=\"ek" + std::to_string(cnt) + "\">" + std::to_string(vo.template get<T::value>()) + "</data>\n"; + else if (std::is_same<type_get,bool>::value) + e_node += " <data key=\"ek" + std::to_string(cnt) + "\">" + std::to_string(vo.template get<T::value>()) + "</data>\n"; + else if (std::is_same<type_get,std::string>::value) + e_node += " <data key=\"ek" + std::to_string(cnt) + "\">" + std::to_string(vo.template get<T::value>()) + "</data>\n"; + } + + cnt++; + } +}; + +/*! + * + * From a Graphbasic structure it write a GraphML format file + * + */ + +template <typename Graph> +class GraphMLWriter +{ + //! Graph to write + Graph & g; + + /*! \brief It get the vertex properties list + * + * It get the vertex properties list of the vertex defined as a GraphML header + * and + * define position and shape of the node + * + * \return a string that define the vertex properties in graphML format + * + */ + std::string get_vertex_properties_list() + { + //! vertex property output string + std::string v_out(""); + + // create a vertex property functor + vertex_prop<Graph> vp(v_out); + + // Iterate through all the vertex and create the vertex list + boost::mpl::for_each_ref< typename Graph::V_type::type >(vp); + + // return the vertex properties string + return v_out; + } + + /*! \brief It get the edge properties list + * + * It get the edge properties list of the edge defined as a GraphML header + * + * \return a string that define the edge properties in graphML format + * + */ + std::string get_edge_properties_list() + { + //! edge property output string + std::string e_out; + + // create a vertex property functor + edge_prop<Graph> ep(e_out); + + // Iterate through all the vertex and create the vertex list + boost::mpl::for_each_ref< typename Graph::E_type::type >(ep); + + // return the edge properties string + return e_out; + } + + /*! \brief Get the string containing the set of vertices + * + * \return the set of vertices as string + * + */ + std::string get_vertex_list() + { + // node counter + size_t nc = 0; + + //! vertex node output string + std::string v_out; + + //! Get a vertex iterator + auto it = g.getVertexIterator(); + + // if there is the next element + while (it.isNext()) + { + auto v = g.vertex(it.get()); + + // create a vertex list functor + vertex_node<Graph> vn(v_out,v); + + // create new node + vn.new_node(nc); + + // Iterate through all the vertex and create the vertex list + boost::mpl::for_each_ref< boost::mpl::range_c<int,0,Graph::V_type::max_prop> >(vn); + + // end node + vn.end_node(); + + // increment the iterator and counter + ++it; + nc++; + } + + // return the vertex list + return v_out; + } + + /*! \brief return the edge list as a string + * + * \return the edge list as string + * + */ + std::string get_edge_list() + { + // node counter + size_t nc = 0; + + //! edge node output string + std::string e_out; + + //! Get an edge iterator + auto it = g.getEdgeIterator(); + + // if there is the next element + while (it.isNext()) + { + // Get the edge object + auto obj = g.edge(it.get()); + + // create an edge list functor + edge_node<Graph> en(e_out,obj); + + // create a new node + en.new_node(nc,it.source(),it.target()); + + // Iterate through all the edges and create the edge list + boost::mpl::for_each_ref< boost::mpl::range_c<int,0,Graph::E_type::max_prop> >(en); + + // end new node + en.end_node(); + + // increment the operator + ++it; + nc++; + } + + // return the edge list + return e_out; + } + +public: + + /*! + * + * GraphMLWriter constructor, it take a graph and write a GraphML format + * + * \param g Graph to write + * + */ + GraphMLWriter(Graph & g) + :g(g) + {} + + /*! \brief It write a GraphML file from a graph + * + * \param file path where to write + * \param name of the graph + * + */ + bool write(std::string file, std::string graph_name="Graph") + { + // Header for the GraphML + std::string gml_header; + // Vertex list of the GraphML + std::string vertex_list; + // End for the GraphML + std::string gml_header_end; + // Graph header + std::string graph_header; + // Graph header end + std::string graph_header_end; + // Edge list of the GraphML + std::string edge_list; + // vertex properties header + std::string vertex_prop_header; + // edge properties header + std::string edge_prop_header; + + // GraphML header + gml_header = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n\ + <graphml xmlns=\"http://graphml.graphdrawing.org/xmlns\"\n\ + xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n\ + xsi:schemaLocation=\"http://graphml.graphdrawing.org/xmlns\n\ + http://graphml.graphdrawing.org/xmlns/1.0/graphml.xsd\">\n"; + + // Graph header to define an header + graph_header = "<graph id=\"" + graph_name + "\" edgedefault=\"undirected\">\n"; + // Graph header end + graph_header_end = "</graph>\n"; + + // Vertex properties header + vertex_prop_header = get_vertex_properties_list(); + + // Edge properties header + edge_prop_header = get_edge_properties_list(); + + // Get the node graph list + vertex_list = get_vertex_list(); + + // Get the edge graph list + edge_list = get_edge_list(); + + // Header end + gml_header_end = "</graphml>"; + + // write the file + + std::ofstream ofs(file); + + // Check if the file is open + if (ofs.is_open() == false) + {std::cerr << "Error cannot creare the graphML file: " + file;} + + ofs << gml_header << graph_header << vertex_prop_header << edge_prop_header << + vertex_list << edge_list << graph_header_end << gml_header_end; + + // Close the file + + ofs.close(); + + // Completed succefully + return true; + } +}; + +#endif diff --git a/src/GraphMLWriter/GraphMLWriter_unit_tests.hpp b/src/GraphMLWriter/GraphMLWriter_unit_tests.hpp new file mode 100644 index 0000000000000000000000000000000000000000..953cfc7cfb043a438f77af622d08d50d40175e55 --- /dev/null +++ b/src/GraphMLWriter/GraphMLWriter_unit_tests.hpp @@ -0,0 +1,171 @@ +/* + * GraphMLWriter_unit_tests.hpp + * + * Created on: Dec 9, 2014 + * Author: i-bird + */ + +#ifndef GRAPHMLWRITER_UNIT_TESTS_HPP_ +#define GRAPHMLWRITER_UNIT_TESTS_HPP_ + +#define GS_SIZE 8 + +#include "GraphMLWriter.hpp" +#include "Graph/CartesianGraphFactory.hpp" +#include "util/util.hpp" + +BOOST_AUTO_TEST_SUITE( graphml_writer_test ) + +/*! + * + * Test node and edge + * + */ + +struct ne_cp +{ + //! The node contain several properties + typedef boost::fusion::vector<float,float,float,double,long int,int,std::string> type; + + //! The data + type data; + + //! x property id in boost::fusion::vector + static const unsigned int x = 0; + //! y property id in boost::fusion::vector + static const unsigned int y = 1; + //! z property id in boost::fusion::vector + static const unsigned int z = 2; + //! double_num property id in boost::fusion::vector + static const unsigned int double_num = 3; + //! long_num property id in boost::fusion::vector + static const unsigned int long_num = 4; + //! integer property id in boost::fusion::vector + static const unsigned int integer = 5; + //! string property id in boost::fusion::vector + static const unsigned int string = 6; + //! total number of properties boost::fusion::vector + static const unsigned int max_prop = 7; + + //! get x + float & get_x() {return boost::fusion::at_c<x>(data);} + //! get y + float & get_y() {return boost::fusion::at_c<y>(data);} + //! get z + float & get_z() {return boost::fusion::at_c<z>(data);} + //! get double number + double & get_dn() {return boost::fusion::at_c<double_num>(data);} + //! get long number + long int & get_ln() {return boost::fusion::at_c<long_num>(data);} + //! get integer + int & get_i() {return boost::fusion::at_c<integer>(data);} + //! get string + std::string & get_str() {return boost::fusion::at_c<string>(data);} + + //! define attributes names + struct attributes + { + static const std::string name[max_prop]; + }; + + static inline bool noPointers() + { + return true; + } + + //! type of the spatial information + typedef float s_type; +}; + +// Initialize the attributes strings array +const std::string ne_cp::attributes::name[] = {"x","y","z","double_num","long_num","integer","string"}; + +BOOST_AUTO_TEST_CASE( graphml_writer_use) +{ + Vcluster<> & v_cl = create_vcluster(); + + if (v_cl.getProcessUnitID() != 0) + return; + +#ifdef OPENFPM_PDATA + + if (v_cl.rank() != 0) {return;} + std::string c2 = std::string("openfpm_io/test_data/test_graph2_test.graphml"); + std::string c3 = std::string("openfpm_io/test_data/test_graph_test.graphml"); + +#else + + std::string c2 = std::string("test_data/test_graph2_test.graphml"); + std::string c3 = std::string("test_data/test_graph_test.graphml"); + +#endif + + Graph_CSR<ne_cp,ne_cp> g_csr2; + + // Add 4 vertex and connect + + struct ne_cp n1; + n1.get_x() = 1.0; + n1.get_y() = 2.0; + n1.get_z() = 3.0; + n1.get_dn() = 4.0; + n1.get_ln() = 5.0; + n1.get_i() = 6.0; + n1.get_str() = std::string("test"); + g_csr2.addVertex(n1); + n1.get_str() = std::string("tes2"); + g_csr2.addVertex(n1); + n1.get_str() = std::string("test3"); + g_csr2.addVertex(n1); + n1.get_str() = std::string("test4"); + g_csr2.addVertex(n1); + n1.get_str() = std::string("test5"); + + g_csr2.addEdge(0,1,n1); + n1.get_str() = std::string("test6"); + g_csr2.addEdge(2,1,n1); + n1.get_str() = std::string("test7"); + g_csr2.addEdge(3,1,n1); + n1.get_str() = std::string("test8"); + g_csr2.addEdge(2,0,n1); + n1.get_str() = std::string("test9"); + g_csr2.addEdge(3,2,n1); + + // Create a graph ML + GraphMLWriter<Graph_CSR<ne_cp,ne_cp>> gv2(g_csr2); + gv2.write("test_graph2.graphml"); + + // check that match + + bool test = compare("test_graph2.graphml",c2); + BOOST_REQUIRE_EQUAL(true,test); + + //! Create a graph + + CartesianGraphFactory<3,Graph_CSR<ne_cp,ne_cp>> g_factory; + + // Cartesian grid + size_t sz[] = {GS_SIZE,GS_SIZE,GS_SIZE}; + + // Box + Box<3,float> box({0.0,0.0,0.0},{1.0,1.0,1.0}); + + // Boundary conditions, non periodic + size_t bc[] = {NON_PERIODIC,NON_PERIODIC,NON_PERIODIC}; + + Graph_CSR<ne_cp,ne_cp> g_csr = g_factory.construct<5,NO_VERTEX_ID,float,2,ne_cp::x,ne_cp::y,ne_cp::z>(sz,box,bc); + + // Create a graph ML + GraphMLWriter<Graph_CSR<ne_cp,ne_cp>> gw(g_csr); + gw.write("test_graph.graphml"); + + + // check that match + test = compare("test_graph.graphml",c3); + BOOST_REQUIRE_EQUAL(true,test); +} + +BOOST_AUTO_TEST_SUITE_END() + + +#endif /* GRAPHMLWRITER_UNIT_TESTS_HPP_ */ diff --git a/src/HDF5_wr/HDF5_reader.hpp b/src/HDF5_wr/HDF5_reader.hpp new file mode 100644 index 0000000000000000000000000000000000000000..d5b4a2ffd0e595220e3048988a5383656f814a0e --- /dev/null +++ b/src/HDF5_wr/HDF5_reader.hpp @@ -0,0 +1,25 @@ +/* + * HDF5_loader.hpp + * + * Created on: May 1, 2017 + * Author: i-bird + */ + +#ifndef OPENFPM_IO_SRC_HDF5_WR_HDF5_READER_HPP_ +#define OPENFPM_IO_SRC_HDF5_WR_HDF5_READER_HPP_ + +#include "VCluster/VCluster.hpp" + +template <unsigned int type> +class HDF5_reader +{ + void load() + { + std::cerr << __FILE__ << ":" << __LINE__ << " Error: we do not know how to write this type of data" << std::endl; + } +}; + +#include "HDF5_reader_vd.hpp" +#include "HDF5_reader_gd.hpp" + +#endif /* OPENFPM_IO_SRC_HDF5_WR_HDF5_READER_HPP_ */ diff --git a/src/HDF5_wr/HDF5_reader_gd.hpp b/src/HDF5_wr/HDF5_reader_gd.hpp new file mode 100644 index 0000000000000000000000000000000000000000..500f9715b3cdb76a685f1c4eb49243b950bdeb3e --- /dev/null +++ b/src/HDF5_wr/HDF5_reader_gd.hpp @@ -0,0 +1,248 @@ +/* + * HDF5_reader_gr.hpp + * + * Created on: May 2, 2017 + * Author: i-bird + */ + +#ifndef OPENFPM_IO_SRC_HDF5_WR_HDF5_READER_GD_HPP_ +#define OPENFPM_IO_SRC_HDF5_WR_HDF5_READER_GD_HPP_ + + +#include "Packer_Unpacker/Pack_selector.hpp" +#include "Packer_Unpacker/Packer.hpp" +#include "Packer_Unpacker/Unpacker.hpp" +#include "util/GBoxes.hpp" + +template <> +class HDF5_reader<GRID_DIST> +{ + template<typename device_grid> void load_block(long int bid, + hssize_t mpi_size_old, + long int * metadata_out, + openfpm::vector<size_t> & metadata_accum, + hid_t plist_id, + hid_t dataset_2, + openfpm::vector<device_grid> & loc_grid_old, + openfpm::vector<GBoxes<device_grid::dims>> & gdb_ext_old) + { + hsize_t offset[1]; + hsize_t block[1]; + + if (bid < mpi_size_old && bid != -1) + { + offset[0] = metadata_accum.get(bid); + block[0] = metadata_out[bid]; + } + else + { + offset[0] = 0; + block[0] = 0; + } + + hsize_t count[1] = {1}; + + // allocate the memory + HeapMemory pmem; + //pmem.allocate(req); + ExtPreAlloc<HeapMemory> & mem = *(new ExtPreAlloc<HeapMemory>(block[0],pmem)); + mem.incRef(); + + //Select file dataspace + hid_t file_dataspace_id_2 = H5Dget_space(dataset_2); + + size_t to_read = block[0]; + size_t coffset = 0; + + auto & v_cl = create_vcluster(); + + int read_test = (to_read != 0); + v_cl.max(read_test); + v_cl.execute(); + + while (read_test) + { + hsize_t block_c[1]; + block_c[0] = std::min((size_t)(to_read),(size_t)0x7FFFFFFF); + + hsize_t offset_c[1] = {offset[0] + coffset}; + H5Sselect_hyperslab(file_dataspace_id_2, H5S_SELECT_SET, offset_c, NULL, count, block_c); + + hsize_t mdim_2[1] = {block_c[0]}; + + //Create data space in memory + hid_t mem_dataspace_id_2 = H5Screate_simple(1, mdim_2, NULL); + + // Read the dataset. + H5Dread(dataset_2, H5T_NATIVE_CHAR, mem_dataspace_id_2, file_dataspace_id_2, plist_id, (char *)mem.getPointer() + coffset); + + coffset += std::min((size_t)(to_read),(size_t)0x7FFFFFFF); + to_read -= std::min((size_t)(to_read),(size_t)0x7FFFFFFF); + + read_test = (to_read != 0); + v_cl.max(read_test); + v_cl.execute(); + } + + mem.allocate(pmem.size()); + + Unpack_stat ps; + + openfpm::vector<device_grid> loc_grid_old_unp; + openfpm::vector<GBoxes<device_grid::dims>> gdb_ext_old_unp; + + Unpacker<typename std::remove_reference<decltype(loc_grid_old)>::type,HeapMemory>::unpack(mem,loc_grid_old_unp,ps,1); + Unpacker<typename std::remove_reference<decltype(gdb_ext_old)>::type,HeapMemory>::unpack(mem,gdb_ext_old_unp,ps,1); + + for (size_t i = 0; i < loc_grid_old_unp.size(); i++) + { + loc_grid_old.add(); + loc_grid_old.last().swap(loc_grid_old_unp.get(i)); + } + + for (size_t i = 0; i < gdb_ext_old_unp.size(); i++) + gdb_ext_old.add(gdb_ext_old_unp.get(i)); + + mem.decRef(); + delete &mem; + + } + +public: + + template<typename device_grid> inline void load(const std::string & filename, + openfpm::vector<device_grid> & loc_grid_old, + openfpm::vector<GBoxes<device_grid::dims>> & gdb_ext_old) + { + Vcluster<> & v_cl = create_vcluster(); + + MPI_Comm comm = v_cl.getMPIComm(); + MPI_Info info = MPI_INFO_NULL; + + int mpi_rank = v_cl.getProcessUnitID(); + //int mpi_size = v_cl.getProcessingUnits(); + + // Set up file access property list with parallel I/O access + hid_t plist_id = H5Pcreate(H5P_FILE_ACCESS); + H5Pset_fapl_mpio(plist_id, comm, info); + + //Open a file + hid_t file = H5Fopen (filename.c_str(), H5F_ACC_RDONLY, plist_id); + H5Pclose(plist_id); + + //Open dataset + hid_t dataset = H5Dopen (file, "metadata", H5P_DEFAULT); + + //Create property list for collective dataset read + plist_id = H5Pcreate(H5P_DATASET_XFER); + H5Pset_dxpl_mpio(plist_id, H5FD_MPIO_COLLECTIVE); + + //Select file dataspace + hid_t file_dataspace_id = H5Dget_space(dataset); + + hssize_t mpi_size_old = H5Sget_select_npoints (file_dataspace_id); + + //if (mpi_rank == 0) + //printf ("\nOld MPI size: %llu\n", mpi_size_old); + + //Where to read metadata + long int metadata_out[mpi_size_old]; + + for (int i = 0; i < mpi_size_old; i++) + { + metadata_out[i] = 0; + } + + //Size for data space in memory + hsize_t mdim[1] = {(size_t)mpi_size_old}; + + //Create data space in memory + hid_t mem_dataspace_id = H5Screate_simple(1, mdim, NULL); + + // Read the dataset. + H5Dread(dataset, H5T_NATIVE_LLONG, mem_dataspace_id, file_dataspace_id, plist_id, metadata_out); + + + openfpm::vector<size_t> metadata_accum; + metadata_accum.resize(mpi_size_old); + + metadata_accum.get(0) = 0; + for (int i = 1 ; i < mpi_size_old ; i++) + metadata_accum.get(i) = metadata_accum.get(i-1) + metadata_out[i-1]; + + //Open dataset + hid_t dataset_2 = H5Dopen (file, "grid_dist", H5P_DEFAULT); + + //Create property list for collective dataset read + plist_id = H5Pcreate(H5P_DATASET_XFER); + H5Pset_dxpl_mpio(plist_id, H5FD_MPIO_COLLECTIVE); + + ///////////////////////////////////// + + openfpm::vector<size_t> n_block; + n_block.resize(v_cl.getProcessingUnits()); + + + for(size_t i = 0 ; i < n_block.size() ; i++) + n_block.get(i) = mpi_size_old / v_cl.getProcessingUnits(); + + size_t rest_block = mpi_size_old % v_cl.getProcessingUnits(); + + size_t max_block; + + if (rest_block != 0) + max_block = n_block.get(0) + 1; + else + max_block = n_block.get(0); + + //for(size_t i = 0 ; i < n_block.size() ; i++) + for(size_t i = 0 ; i < rest_block ; i++) + n_block.get(i) += 1; + + + //for(size_t i = 0 ; i < n_block.size() ; i++) + //std::cout << "n_block.get(i): " << n_block.get(i) << std::endl; + + size_t start_block = 0; + size_t stop_block = 0; + + + if (v_cl.getProcessUnitID() != 0) + { + for(size_t i = 0 ; i < v_cl.getProcessUnitID() ; i++) + start_block += n_block.get(i); + } + + stop_block = start_block + n_block.get(v_cl.getProcessUnitID()); + +// std::cout << "ID: " << v_cl.getProcessUnitID() << "; Start block: " << start_block << "; " << "Stop block: " << stop_block << std::endl; + + if (mpi_rank >= mpi_size_old) + load_block(start_block,mpi_size_old,metadata_out,metadata_accum,plist_id,dataset_2,loc_grid_old,gdb_ext_old); + else + { + size_t n_bl = 0; + size_t lb = start_block; + for ( ; lb < stop_block ; lb++, n_bl++) + load_block(lb,mpi_size_old,metadata_out,metadata_accum,plist_id,dataset_2,loc_grid_old,gdb_ext_old); + + if (n_bl < max_block) + load_block(-1,mpi_size_old,metadata_out,metadata_accum,plist_id,dataset_2,loc_grid_old,gdb_ext_old); + } + + //////////////////////////////////// + + //std::cout << "LOAD: sum: " << sum << std::endl; + + // Close the dataset. + H5Dclose(dataset); + H5Dclose(dataset_2); + // Close the file. + H5Fclose(file); + H5Pclose(plist_id); + } + +}; + + +#endif /* OPENFPM_IO_SRC_HDF5_WR_HDF5_READER_GD_HPP_ */ diff --git a/src/HDF5_wr/HDF5_reader_vd.hpp b/src/HDF5_wr/HDF5_reader_vd.hpp new file mode 100644 index 0000000000000000000000000000000000000000..34497d46f5505e760617ad254326c5d6536d7204 --- /dev/null +++ b/src/HDF5_wr/HDF5_reader_vd.hpp @@ -0,0 +1,244 @@ +/* + * HDF5_reader_vd.hpp + * + * Created on: May 1, 2017 + * Author: i-bird + */ + +#ifndef OPENFPM_IO_SRC_HDF5_WR_HDF5_READER_VD_HPP_ +#define OPENFPM_IO_SRC_HDF5_WR_HDF5_READER_VD_HPP_ + + +template <> +class HDF5_reader<VECTOR_DIST> +{ +private: + + template<typename vector_pos_type, typename vector_prp_type> + bool load_block(long int bid, + hssize_t mpi_size_old, + int * metadata_out, + openfpm::vector<size_t> metadata_accum, + hid_t plist_id, + hid_t dataset_2, + size_t & g_m, + vector_pos_type & v_pos, + vector_prp_type & v_prp) + { + hsize_t offset[1]; + hsize_t block[1]; + + if (bid < mpi_size_old && bid != -1) + { + offset[0] = metadata_accum.get(bid); + block[0] = metadata_out[bid]; + } + else + { + offset[0] = 0; + block[0] = 0; + } + + hsize_t count[1] = {1}; + + + //Select file dataspace + hid_t file_dataspace_id_2 = H5Dget_space(dataset_2); + if (file_dataspace_id_2 < 0) {return false;} + + herr_t err = H5Sselect_hyperslab(file_dataspace_id_2, H5S_SELECT_SET, offset, NULL, count, block); + if (err < 0) {return false;} + + hsize_t mdim_2[1] = {block[0]}; + + + //Create data space in memory + hid_t mem_dataspace_id_2 = H5Screate_simple(1, mdim_2, NULL); + if (mem_dataspace_id_2 < 0) {return false;} + + size_t sum = 0; + + for (int i = 0; i < mpi_size_old; i++) + sum += metadata_out[i]; + + // allocate the memory + HeapMemory pmem; + + ExtPreAlloc<HeapMemory> & mem = *(new ExtPreAlloc<HeapMemory>(block[0],pmem)); + mem.incRef(); + + // Read the dataset. + err = H5Dread(dataset_2, H5T_NATIVE_CHAR, mem_dataspace_id_2, file_dataspace_id_2, plist_id, (char *)mem.getPointer()); + if (err < 0) {return false;} + + mem.allocate(pmem.size()); + + Unpack_stat ps; + + vector_pos_type v_pos_unp; + + vector_prp_type v_prp_unp; + + Unpacker<decltype(v_pos_unp),HeapMemory>::unpack(mem,v_pos_unp,ps,1); + Unpacker<decltype(v_prp_unp),HeapMemory>::unpack(mem,v_prp_unp,ps,1); + + mem.decRef(); + delete &mem; + + for (size_t i = 0; i < v_pos_unp.size(); i++) + v_pos.add(v_pos_unp.get(i)); + + for (size_t i = 0; i < v_prp_unp.size(); i++) + v_prp.add(v_prp_unp.get(i)); + + g_m = v_pos.size(); + + H5Sclose(file_dataspace_id_2); + H5Sclose(mem_dataspace_id_2); + + return true; + } + +public: + + template<typename vector_pos_type, typename vector_prp_type> inline bool load(const std::string & filename, + vector_pos_type & v_pos, + vector_prp_type & v_prp, + size_t & g_m) + { + Vcluster<> & v_cl = create_vcluster(); + + v_pos.clear(); + v_prp.clear(); + + g_m = 0; + + MPI_Comm comm = v_cl.getMPIComm(); + MPI_Info info = MPI_INFO_NULL; + + int mpi_rank = v_cl.getProcessUnitID(); + + // Set up file access property list with parallel I/O access + hid_t plist_id = H5Pcreate(H5P_FILE_ACCESS); + if (plist_id == -1) {return false;} + herr_t err = H5Pset_fapl_mpio(plist_id, comm, info); + if (err < 0) + return false; + + //Open a file + hid_t file = H5Fopen (filename.c_str(), H5F_ACC_RDONLY, plist_id); + if (file < 0) {return false;} + H5Pclose(plist_id); + + //Open dataset + hid_t dataset = H5Dopen (file, "metadata", H5P_DEFAULT); + if (dataset < 0) {return false;} + + //Create property list for collective dataset read + plist_id = H5Pcreate(H5P_DATASET_XFER); + if (plist_id == -1) {return false;} + H5Pset_dxpl_mpio(plist_id, H5FD_MPIO_COLLECTIVE); + + //Select file dataspace + hid_t file_dataspace_id = H5Dget_space(dataset); + if (file_dataspace_id < 0) {return false;} + + hssize_t mpi_size_old = H5Sget_select_npoints (file_dataspace_id); + if (mpi_size_old < 0) {return false;} + + //Where to read metadata + int metadata_out[mpi_size_old]; + + for (int i = 0; i < mpi_size_old; i++) + {metadata_out[i] = 0;} + + //Size for data space in memory + hsize_t mdim[1] = {(size_t)mpi_size_old}; + + //Create data space in memory + hid_t mem_dataspace_id = H5Screate_simple(1, mdim, NULL); + if (mem_dataspace_id < 0) {return false;} + + // Read the dataset. + err = H5Dread(dataset, H5T_NATIVE_INT, mem_dataspace_id, file_dataspace_id, plist_id, metadata_out); + if (err < 0) {return false;} + + openfpm::vector<size_t> metadata_accum; + metadata_accum.resize(mpi_size_old); + + metadata_accum.get(0) = 0; + for (int i = 1 ; i < mpi_size_old ; i++) + metadata_accum.get(i) = metadata_accum.get(i-1) + metadata_out[i-1]; + + //Open dataset + hid_t dataset_2 = H5Dopen (file, "vector_dist", H5P_DEFAULT); + if (dataset_2 < 0) {return false;} + + //Create property list for collective dataset read + plist_id = H5Pcreate(H5P_DATASET_XFER); + if (plist_id == -1) {return false;} + + err = H5Pset_dxpl_mpio(plist_id, H5FD_MPIO_COLLECTIVE); + if (err < 0) {return false;} + + openfpm::vector<size_t> n_block; + n_block.resize(v_cl.getProcessingUnits()); + + + for(size_t i = 0 ; i < n_block.size() ; i++) + n_block.get(i) = mpi_size_old / v_cl.getProcessingUnits(); + + size_t rest_block = mpi_size_old % v_cl.getProcessingUnits(); + + size_t max_block; + + if (rest_block != 0) + max_block = n_block.get(0) + 1; + else + max_block = n_block.get(0); + + //for(size_t i = 0 ; i < n_block.size() ; i++) + for(size_t i = 0 ; i < rest_block ; i++) + n_block.get(i) += 1; + + size_t start_block = 0; + size_t stop_block = 0; + + + if (v_cl.getProcessUnitID() != 0) + { + for(size_t i = 0 ; i < v_cl.getProcessUnitID() ; i++) + start_block += n_block.get(i); + } + + stop_block = start_block + n_block.get(v_cl.getProcessUnitID()); + + if (mpi_rank >= mpi_size_old) + {load_block(start_block,mpi_size_old,metadata_out,metadata_accum,plist_id,dataset_2,g_m,v_pos,v_prp);} + else + { + size_t n_bl = 0; + size_t lb = start_block; + for ( ; lb < stop_block ; lb++, n_bl++) + {load_block(lb,mpi_size_old,metadata_out,metadata_accum,plist_id,dataset_2,g_m,v_pos,v_prp);} + + if (n_bl < max_block) + {load_block(-1,mpi_size_old,metadata_out,metadata_accum,plist_id,dataset_2,g_m,v_pos,v_prp);} + } + + // Close open object + H5Sclose(mem_dataspace_id); + H5Sclose(file_dataspace_id); + // Close the dataset. + H5Dclose(dataset); + H5Dclose(dataset_2); + // Close the file. + H5Fclose(file); + H5Pclose(plist_id); + + return true; + } +}; + + +#endif /* OPENFPM_IO_SRC_HDF5_WR_HDF5_READER_VD_HPP_ */ diff --git a/src/HDF5_wr/HDF5_wr.hpp b/src/HDF5_wr/HDF5_wr.hpp new file mode 100644 index 0000000000000000000000000000000000000000..69fa3936cccb8d76065ce8e00812678f6fa21b2a --- /dev/null +++ b/src/HDF5_wr/HDF5_wr.hpp @@ -0,0 +1,19 @@ +/* + * HDF5_wr.hpp + * + * Created on: May 1, 2017 + * Author: i-bird + */ + +#ifndef OPENFPM_IO_SRC_HDF5_WR_HDF5_WR_HPP_ +#define OPENFPM_IO_SRC_HDF5_WR_HDF5_WR_HPP_ + + +#define VECTOR_DIST 1 +#define GRID_DIST 2 + +#include "HDF5_writer.hpp" +#include "HDF5_reader.hpp" + + +#endif /* OPENFPM_IO_SRC_HDF5_WR_HDF5_WR_HPP_ */ diff --git a/src/HDF5_wr/HDF5_writer.hpp b/src/HDF5_wr/HDF5_writer.hpp new file mode 100644 index 0000000000000000000000000000000000000000..d0c2b673ddaf6efaddc1efe063f9bebe92f3fefc --- /dev/null +++ b/src/HDF5_wr/HDF5_writer.hpp @@ -0,0 +1,29 @@ +/* + * HDF5_writer.hpp + * + * Created on: May 1, 2017 + * Author: i-bird + */ + +#ifndef OPENFPM_IO_SRC_HDF5_WR_HDF5_WRITER_HPP_ +#define OPENFPM_IO_SRC_HDF5_WR_HDF5_WRITER_HPP_ + + +#include "VCluster/VCluster.hpp" +#include "hdf5.h" + +template <unsigned int type> +class HDF5_writer +{ + + void save() + { + std::cerr << __FILE__ << ":" << __LINE__ << " Error: we do not know how to write this type of data" << std::endl; + } + +}; + +#include "HDF5_writer_vd.hpp" +#include "HDF5_writer_gd.hpp" + +#endif /* OPENFPM_IO_SRC_HDF5_WR_HDF5_WRITER_HPP_ */ diff --git a/src/HDF5_wr/HDF5_writer_cuda.cu b/src/HDF5_wr/HDF5_writer_cuda.cu new file mode 100644 index 0000000000000000000000000000000000000000..5dfd6862322423485f7a870e9db9a9ab7afc226a --- /dev/null +++ b/src/HDF5_wr/HDF5_writer_cuda.cu @@ -0,0 +1,101 @@ +#include "config.h" +#define BOOST_TEST_DYN_LINK +#include <boost/test/unit_test.hpp> + +#include "HDF5_wr.hpp" + +#include "hdf5.h" + +BOOST_AUTO_TEST_SUITE( vd_hdf5_chckpnt_rstrt_test_gpu ) + +// Dimensionality +const size_t dim = 3; + +BOOST_AUTO_TEST_CASE( vector_dist_hdf5_save_test_gpu ) +{ + openfpm::vector_gpu<Point<3,float>> vpos; + openfpm::vector_gpu<aggregate<double,float[dim],size_t,float[dim][dim]>> vprp; + + // Put forces + + for (size_t i = 0 ; i < 1024 ; i++) + { + Point<3,float> p; + + p.get(0) = i; + p.get(1) = i+13; + p.get(2) = i+17; + + vpos.add(p); + + vprp.add(); + + vprp.template get<0>(vprp.size()-1) = p.get(0) + 113.0; + + vprp.template get<1>(vprp.size()-1)[0] = p.get(0) + 100.0; + vprp.template get<1>(vprp.size()-1)[1] = p.get(1) + 200.0; + vprp.template get<1>(vprp.size()-1)[2] = p.get(2) + 300.0; + + vprp.template get<2>(vprp.size()-1) = p.get(0) + 10013.0; + + vprp.template get<3>(vprp.size()-1)[0][0] = p.get(0) + 600.0; + vprp.template get<3>(vprp.size()-1)[0][1] = p.get(0) + 900.0; + vprp.template get<3>(vprp.size()-1)[0][2] = p.get(0) + 1600.0; + vprp.template get<3>(vprp.size()-1)[1][0] = p.get(0) + 5600.0; + vprp.template get<3>(vprp.size()-1)[1][1] = p.get(0) + 6900.0; + vprp.template get<3>(vprp.size()-1)[1][2] = p.get(0) + 7600.0; + vprp.template get<3>(vprp.size()-1)[2][0] = p.get(0) + 9600.0; + vprp.template get<3>(vprp.size()-1)[2][1] = p.get(0) + 1900.0; + vprp.template get<3>(vprp.size()-1)[2][2] = p.get(0) + 101600.0; + } + + HDF5_writer<VECTOR_DIST> h5; + + // Save the vector + h5.save("vector_dist.h5",vpos,vprp); + + HDF5_reader<VECTOR_DIST> h5r; + + openfpm::vector_gpu<Point<3,float>> vpos2; + openfpm::vector_gpu<aggregate<double,float[dim],size_t,float[dim][dim]>> vprp2; + + size_t g_m = 0; + h5r.load("vector_dist.h5",vpos2,vprp2,g_m); + + BOOST_REQUIRE_EQUAL(1024ul,vpos2.size()); + BOOST_REQUIRE_EQUAL(1024ul,vprp2.size()); + + BOOST_REQUIRE_EQUAL(1024ul,g_m); + + // Check that vpos == vpos2 and vprp2 == vprp2 + + bool check = true; + for (size_t i = 0 ; i < vpos.size() ; i++) + { + Point<3,float> p1 = vpos.get(i); + Point<3,float> p2 = vpos2.get(i); + + check &= (p1 == p2); + + check &= (vprp.template get<1>(i)[0] == vprp2.template get<1>(i)[0]); + check &= (vprp.template get<1>(i)[1] == vprp2.template get<1>(i)[1]); + check &= (vprp.template get<1>(i)[2] == vprp2.template get<1>(i)[2]); + + check &= (vprp.template get<0>(i) == vprp2.template get<0>(i)); + check &= (vprp.template get<2>(i) == vprp2.template get<2>(i)); + + check &= (vprp.template get<3>(i)[0][0] == vprp2.template get<3>(i)[0][0]); + check &= (vprp.template get<3>(i)[0][1] == vprp2.template get<3>(i)[0][1]); + check &= (vprp.template get<3>(i)[0][2] == vprp2.template get<3>(i)[0][2]); + check &= (vprp.template get<3>(i)[1][0] == vprp2.template get<3>(i)[1][0]); + check &= (vprp.template get<3>(i)[1][1] == vprp2.template get<3>(i)[1][1]); + check &= (vprp.template get<3>(i)[1][2] == vprp2.template get<3>(i)[1][2]); + check &= (vprp.template get<3>(i)[2][0] == vprp2.template get<3>(i)[2][0]); + check &= (vprp.template get<3>(i)[2][1] == vprp2.template get<3>(i)[2][1]); + check &= (vprp.template get<3>(i)[2][2] == vprp2.template get<3>(i)[2][2]); + } + + BOOST_REQUIRE_EQUAL(check,true); +} + +BOOST_AUTO_TEST_SUITE_END() diff --git a/src/HDF5_wr/HDF5_writer_gd.hpp b/src/HDF5_wr/HDF5_writer_gd.hpp new file mode 100644 index 0000000000000000000000000000000000000000..f41de0fec8f6c888a78e2f2118c7f1b0e6048576 --- /dev/null +++ b/src/HDF5_wr/HDF5_writer_gd.hpp @@ -0,0 +1,183 @@ +/* + * HDF5_writer_gd.hpp + * + * Created on: May 2, 2017 + * Author: i-bird + */ + +#ifndef OPENFPM_IO_SRC_HDF5_WR_HDF5_WRITER_GD_HPP_ +#define OPENFPM_IO_SRC_HDF5_WR_HDF5_WRITER_GD_HPP_ + + +#include "Packer_Unpacker/Pack_selector.hpp" +#include "Packer_Unpacker/Packer.hpp" +#include "Packer_Unpacker/Unpacker.hpp" +#include "util/GBoxes.hpp" + +template <> +class HDF5_writer<GRID_DIST> +{ +public: + + template<typename device_grid> + inline void save(const std::string & filename, + const openfpm::vector<device_grid> & loc_grid, + const openfpm::vector<GBoxes<device_grid::dims>> & gdb_ext) const + { + Vcluster<> & v_cl = create_vcluster(); + + //Pack_request vector + size_t req = 0; + + //Pack request + Packer<typename std::remove_reference<decltype(loc_grid)>::type,HeapMemory>::packRequest(loc_grid,req); + Packer<typename std::remove_reference<decltype(gdb_ext)>::type,HeapMemory>::packRequest(gdb_ext,req); + + //std::cout << "Req: " << req << std::endl; + + // allocate the memory + HeapMemory pmem; + //pmem.allocate(req); + ExtPreAlloc<HeapMemory> & mem = *(new ExtPreAlloc<HeapMemory>(req,pmem)); + mem.incRef(); + + //Packing + + Pack_stat sts; + + Packer<typename std::remove_reference<decltype(loc_grid)>::type,HeapMemory>::pack(mem,loc_grid,sts); + Packer<typename std::remove_reference<decltype(gdb_ext)>::type,HeapMemory>::pack(mem,gdb_ext,sts); + + /***************************************************************** + * Create a new file with default creation and access properties.* + * Then create a dataset and write data to it and close the file * + * and dataset. * + *****************************************************************/ + + int mpi_rank = v_cl.getProcessUnitID(); + int mpi_size = v_cl.getProcessingUnits(); + + MPI_Comm comm = v_cl.getMPIComm(); + MPI_Info info = MPI_INFO_NULL; + + // Set up file access property list with parallel I/O access + + hid_t plist_id = H5Pcreate(H5P_FILE_ACCESS); + H5Pset_fapl_mpio(plist_id, comm, info); + + // Create a new file collectively and release property list identifier. + hid_t file = H5Fcreate (filename.c_str(), H5F_ACC_TRUNC, H5P_DEFAULT, plist_id); + H5Pclose(plist_id); + + size_t sz = pmem.size(); + //std::cout << "Pmem.size: " << pmem.size() << std::endl; + openfpm::vector<size_t> sz_others; + v_cl.allGather(sz,sz_others); + v_cl.execute(); + + size_t sum = 0; + + for (size_t i = 0; i < sz_others.size(); i++) + sum += sz_others.get(i); + + //Size for data space in file + hsize_t fdim[1] = {sum}; + + //Size for data space in file + hsize_t fdim2[1] = {(size_t)mpi_size}; + + //Create data space in file + hid_t file_dataspace_id = H5Screate_simple(1, fdim, NULL); + + //Create data space in file + hid_t file_dataspace_id_2 = H5Screate_simple(1, fdim2, NULL); + + //if (mpi_rank == 0) + //std::cout << "Total object size: " << sum << std::endl; + + //Create data set in file + hid_t file_dataset = H5Dcreate (file, "grid_dist", H5T_NATIVE_CHAR, file_dataspace_id, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); + + //Create data set 2 in file + hid_t file_dataset_2 = H5Dcreate (file, "metadata", H5T_NATIVE_LLONG, file_dataspace_id_2, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); + + //H5Pclose(plist_id); + H5Sclose(file_dataspace_id); + H5Sclose(file_dataspace_id_2); + + hsize_t block[1] = {pmem.size()}; + + //hsize_t stride[1] = {1}; + + hsize_t count[1] = {1}; + + hsize_t offset[1] = {0}; + + for (int i = 0; i < mpi_rank; i++) + { + if (mpi_rank == 0) + { + /* coverity[dead_error_line] */ + offset[0] = 0; + } + else + offset[0] += sz_others.get(i); + } + + // std::cout << "MPI rank: " << mpi_rank << ", MPI size: " << mpi_size << ", Offset: " << offset[0] << ", Block: " << block[0] << std::endl; + + long int metadata[mpi_size]; + + for (int i = 0; i < mpi_size; i++) + metadata[i] = sz_others.get(i); + + //Select hyperslab in the file. + file_dataspace_id = H5Dget_space(file_dataset); + + //Create property list for collective dataset write. + plist_id = H5Pcreate(H5P_DATASET_XFER); + H5Pset_dxpl_mpio(plist_id, H5FD_MPIO_COLLECTIVE); + + // We slipt the write in chunk of 2GB maximum + size_t to_write = block[0]; + size_t coffset = 0; + while (to_write) + { + hsize_t block_c[1]; + block_c[0] = std::min((size_t)(to_write),(size_t)0x7FFFFFFF); + + //Create data space in memory + hid_t mem_dataspace_id = H5Screate_simple(1, block_c, NULL); + + hsize_t offset_c[1] = {offset[0] + coffset}; + H5Sselect_hyperslab(file_dataspace_id, H5S_SELECT_SET, offset_c, NULL, count, block_c); + + //Write a data set to a file + H5Dwrite(file_dataset, H5T_NATIVE_CHAR, mem_dataspace_id, file_dataspace_id, plist_id, (const char *)pmem.getPointer() + coffset); + + coffset += std::min((size_t)(to_write),(size_t)0x7FFFFFFF); + to_write -= std::min((size_t)(to_write),(size_t)0x7FFFFFFF); + + H5Sclose(mem_dataspace_id); + } + + file_dataspace_id_2 = H5Dget_space(file_dataset_2); + + //Write a data set 2 to a file + H5Dwrite(file_dataset_2, H5T_NATIVE_LLONG, H5S_ALL, file_dataspace_id_2, plist_id, metadata); + + //Close/release resources. + H5Dclose(file_dataset); + H5Sclose(file_dataspace_id); + H5Dclose(file_dataset_2); + H5Sclose(file_dataspace_id_2); + H5Pclose(plist_id); + H5Fclose(file); + + mem.decRef(); + delete &mem; + } + +}; + +#endif /* OPENFPM_IO_SRC_HDF5_WR_HDF5_WRITER_GD_HPP_ */ diff --git a/src/HDF5_wr/HDF5_writer_unit_tests.hpp b/src/HDF5_wr/HDF5_writer_unit_tests.hpp new file mode 100644 index 0000000000000000000000000000000000000000..4a3106781fb2ad2b24ad41a927a3150654581b5c --- /dev/null +++ b/src/HDF5_wr/HDF5_writer_unit_tests.hpp @@ -0,0 +1,125 @@ +/* + * HDF5_writer_unit_test.hpp + * + * Created on: May 1, 2017 + * Author: i-bird + */ + +#ifndef OPENFPM_IO_SRC_HDF5_WR_HDF5_WRITER_UNIT_TESTS_HPP_ +#define OPENFPM_IO_SRC_HDF5_WR_HDF5_WRITER_UNIT_TESTS_HPP_ + +#include "HDF5_wr.hpp" + +#include "hdf5.h" + +BOOST_AUTO_TEST_SUITE( vd_hdf5_chckpnt_rstrt_test_io ) + +// Dimensionality +const size_t dim = 3; + +BOOST_AUTO_TEST_CASE( vector_dist_hdf5_save_test ) +{ + openfpm::vector<Point<3,float>> vpos; + openfpm::vector<aggregate<float[dim]>> vprp; + + // Put forces + + for (size_t i = 0 ; i < 1024 ; i++) + { + Point<3,float> p; + + p.get(0) = i; + p.get(1) = i+13; + p.get(2) = i+17; + + vpos.add(p); + + vprp.add(); + vprp.template get<0>(vprp.size()-1)[0] = p.get(0) + 100.0; + vprp.template get<0>(vprp.size()-1)[1] = p.get(1) + 200.0; + vprp.template get<0>(vprp.size()-1)[2] = p.get(2) + 300.0; + } + + HDF5_writer<VECTOR_DIST> h5; + + // Save the vector + h5.save("vector_dist.h5",vpos,vprp); + + HDF5_reader<VECTOR_DIST> h5r; + + openfpm::vector<Point<3,float>> vpos2; + openfpm::vector<aggregate<float[dim]>> vprp2; + + size_t g_m = 0; + h5r.load("vector_dist.h5",vpos2,vprp2,g_m); + + BOOST_REQUIRE_EQUAL(1024ul,vpos2.size()); + BOOST_REQUIRE_EQUAL(1024ul,vprp2.size()); + + BOOST_REQUIRE_EQUAL(1024ul,g_m); + + // Check that vpos == vpos2 and vprp2 == vprp2 + + bool check = true; + for (size_t i = 0 ; i < vpos.size() ; i++) + { + check &= (vpos.get(i) == vpos2.get(i)); + check &= (vprp.get_o(i) == vprp2.get_o(i)); + } + + BOOST_REQUIRE_EQUAL(check,true); +} + + + +BOOST_AUTO_TEST_CASE( vector_dist_hdf5_load_test ) +{ + Vcluster<> & v_cl = create_vcluster(); + +#ifdef OPENFPM_PDATA + + std::string c2 = std::string("openfpm_io/test_data/vector_dist_24.h5"); + +#else + + std::string c2 = std::string("test_data/vector_dist_24.h5"); + +#endif + + openfpm::vector<Point<3,float>> vpos; + openfpm::vector<aggregate<float[dim]>> vprp; + + HDF5_reader<VECTOR_DIST> h5; + + size_t g_m = 0; + + // Load the vector + h5.load(c2,vpos,vprp,g_m); + + /////////////////// Checking data /////////////////////// + + // Check total number of particles + size_t n_part = vpos.size(); + v_cl.sum(n_part); + v_cl.execute(); + + BOOST_REQUIRE_EQUAL(n_part,1024ul*24ul); + + BOOST_REQUIRE_EQUAL(vpos.size(),vprp.size()); + + bool check = true; + + for (size_t i = 0 ; i < vpos.size() ; i++) + { + check &= (vprp.template get<0>(i)[0] == vpos.template get<0>(i)[0] + 100.0); + check &= (vprp.template get<0>(i)[1] == vpos.template get<0>(i)[1] + 200.0); + check &= (vprp.template get<0>(i)[2] == vpos.template get<0>(i)[2] + 300.0); + } + + +} + +BOOST_AUTO_TEST_SUITE_END() + + +#endif /* OPENFPM_IO_SRC_HDF5_WR_HDF5_WRITER_UNIT_TESTS_HPP_ */ diff --git a/src/HDF5_wr/HDF5_writer_vd.hpp b/src/HDF5_wr/HDF5_writer_vd.hpp new file mode 100644 index 0000000000000000000000000000000000000000..f6bd869a75ee2bb1897f6cb9ab982ca85ab50a9e --- /dev/null +++ b/src/HDF5_wr/HDF5_writer_vd.hpp @@ -0,0 +1,236 @@ +/* + * HDF5_loader_vector_dist.hpp + * + * Created on: May 1, 2017 + * Author: i-bird + */ + +#ifndef OPENFPM_IO_SRC_HDF5_WR_HDF5_WRITER_VD_HPP_ +#define OPENFPM_IO_SRC_HDF5_WR_HDF5_WRITER_VD_HPP_ + +#include "Packer_Unpacker/Pack_selector.hpp" +#include "Packer_Unpacker/Packer.hpp" +#include "Packer_Unpacker/Unpacker.hpp" + +template <> +class HDF5_writer<VECTOR_DIST> +{ +public: + + template<typename vector_pos_type, typename vector_prp_type> + inline void save(const std::string & filename, + const vector_pos_type & v_pos, + const vector_prp_type & v_prp) const + { + Vcluster<> & v_cl = create_vcluster(); + + //Pack_request vector + size_t req = 0; + + //std::cout << "V_pos.size() before save: " << v_pos.size() << std::endl; + + //Pack request + Packer<typename std::remove_reference<decltype(v_pos)>::type,HeapMemory>::packRequest(v_pos,req); + Packer<typename std::remove_reference<decltype(v_prp)>::type,HeapMemory>::packRequest(v_prp,req); + + // allocate the memory + HeapMemory pmem; + //pmem.allocate(req); + ExtPreAlloc<HeapMemory> & mem = *(new ExtPreAlloc<HeapMemory>(req,pmem)); + mem.incRef(); + + //Packing + + Pack_stat sts; + + Packer<typename std::remove_reference<decltype(v_pos)>::type,HeapMemory>::pack(mem,v_pos,sts); + Packer<typename std::remove_reference<decltype(v_prp)>::type,HeapMemory>::pack(mem,v_prp,sts); + + /***************************************************************** + * Create a new file with default creation and access properties.* + * Then create a dataset and write data to it and close the file * + * and dataset. * + *****************************************************************/ + + int mpi_rank = v_cl.getProcessUnitID(); + int mpi_size = v_cl.getProcessingUnits(); + + MPI_Comm comm = v_cl.getMPIComm(); + MPI_Info info = MPI_INFO_NULL; + + // Set up file access property list with parallel I/O access + + hid_t plist_id = H5Pcreate(H5P_FILE_ACCESS); + H5Pset_fapl_mpio(plist_id, comm, info); + + // Create a new file collectively and release property list identifier. + hid_t file = H5Fcreate (filename.c_str(), H5F_ACC_TRUNC, H5P_DEFAULT, plist_id); + H5Pclose(plist_id); + + size_t sz = pmem.size(); + //std::cout << "Pmem.size: " << pmem.size() << std::endl; + openfpm::vector<size_t> sz_others; + v_cl.allGather(sz,sz_others); + v_cl.execute(); + + size_t sum = 0; + + for (size_t i = 0; i < sz_others.size(); i++) + sum += sz_others.get(i); + + //Size for data space in file + hsize_t fdim[1] = {sum}; + + //Size for data space in file + hsize_t fdim2[1] = {(size_t)mpi_size}; + + //Create data space in file + hid_t file_dataspace_id = H5Screate_simple(1, fdim, NULL); + + //Create data space in file + hid_t file_dataspace_id_2 = H5Screate_simple(1, fdim2, NULL); + + //Size for data space in memory + hsize_t mdim[1] = {pmem.size()}; + + //Create data space in memory + hid_t mem_dataspace_id = H5Screate_simple(1, mdim, NULL); + + //Create data set in file + hid_t file_dataset = H5Dcreate (file, "vector_dist", H5T_NATIVE_CHAR, file_dataspace_id, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); + + //Create data set 2 in file + hid_t file_dataset_2 = H5Dcreate (file, "metadata", H5T_NATIVE_INT, file_dataspace_id_2, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); + + //H5Pclose(plist_id); + H5Sclose(file_dataspace_id); + H5Sclose(file_dataspace_id_2); + + hsize_t block[1] = {pmem.size()}; + + //hsize_t stride[1] = {1}; + + hsize_t count[1] = {1}; + + hsize_t offset[1] = {0}; + + for (int i = 0; i < mpi_rank; i++) + { + if (mpi_rank == 0) + { + /* coverity[dead_error_line] */ + offset[0] = 0; + } + else + {offset[0] += sz_others.get(i);} + } + + int metadata[mpi_size]; + + for (int i = 0; i < mpi_size; i++) + metadata[i] = sz_others.get(i); + + //Select hyperslab in the file. + file_dataspace_id = H5Dget_space(file_dataset); + H5Sselect_hyperslab(file_dataspace_id, H5S_SELECT_SET, offset, NULL, count, block); + + file_dataspace_id_2 = H5Dget_space(file_dataset_2); + + + //Create property list for collective dataset write. + plist_id = H5Pcreate(H5P_DATASET_XFER); + H5Pset_dxpl_mpio(plist_id, H5FD_MPIO_COLLECTIVE); + + //Write a data set to a file + H5Dwrite(file_dataset, H5T_NATIVE_CHAR, mem_dataspace_id, file_dataspace_id, plist_id, (const char *)pmem.getPointer()); + + //Write a data set 2 to a file + H5Dwrite(file_dataset_2, H5T_NATIVE_INT, H5S_ALL, file_dataspace_id_2, plist_id, metadata); + + + //Close/release resources. + H5Dclose(file_dataset); + H5Sclose(file_dataspace_id); + H5Dclose(file_dataset_2); + H5Sclose(file_dataspace_id_2); + H5Sclose(mem_dataspace_id); + H5Pclose(plist_id); + H5Fclose(file); + mem.decRef(); + delete &mem; + } + + /*! \brief Return the equivalent HDF5 type for T + * + * \return The HDF5 type equivalent to T + * + */ + template<typename T> + hid_t getType() + { + if (std::is_same<T,float>::value) + {return H5T_IEEE_F32LE;} + else if (std::is_same<T,double>::value) + {return H5T_IEEE_F64LE;} + else if (std::is_same<T,char>::value || std::is_same<T,unsigned char>::value) + {return H5T_STD_I8LE;} + else if (std::is_same<T,short>::value || std::is_same<T,unsigned short>::value) + {return H5T_STD_I16LE;} + else if (std::is_same<T,int>::value || std::is_same<T,unsigned int>::value) + {return H5T_STD_I32LE;} + else if (std::is_same<T,long int>::value || std::is_same<T,unsigned long int>::value) + {return H5T_STD_I64LE;} + } + + /*! \brief It add an attribute to an already opened file + * + * \param dataset_id dataset_id + * \param name_ name of the attribute + * \param att_ attribute value + */ + template<typename value_type> + void addAttributeHDF5(hid_t dataset_id, std::string name_, value_type att_) + { + //create the data space for the scalar attibute + hid_t dataspace_id = H5Screate(H5S_SCALAR); + + //create the dataset attribute (H5T_IEEE_F64BE: 64-bit float little endian) + hid_t attribute_id = H5Acreate2(dataset_id, name_.c_str(), H5T_IEEE_F32LE, dataspace_id, H5P_DEFAULT, H5P_DEFAULT); + //write the attibute data + herr_t status = H5Awrite(attribute_id,H5T_NATIVE_DOUBLE, &att_); + //close the attribute + status = H5Aclose(attribute_id); + //close the dataspace + status = H5Sclose(dataspace_id); + } + + /*! \brief It add an attribute to an already opened file + * + * \param dataset_id dataset_id + * \param name_ name of the attribute + * \param att_ attribute value + */ + template<typename value_type> + void addAttributeHDF5(std::string filename, std::string name_, value_type att_) + { + Vcluster<> & v_cl = create_vcluster(); + MPI_Comm comm = v_cl.getMPIComm(); + MPI_Info info = MPI_INFO_NULL; + // Set up file access property list with parallel I/O access + hid_t plist_id = H5Pcreate(H5P_FILE_ACCESS); + + hid_t file_id = H5Fopen(filename.c_str(),H5F_ACC_RDWR, plist_id); + hid_t dataset_id = H5Dopen2(file_id,"/vector_dist", H5P_DEFAULT); + + addAttributeHDF5(dataset_id,name_.c_str(),att_); + + //close the dataset + herr_t status = H5Dclose(dataset_id); + //close the file + status = H5Fclose(file_id); + } + +}; + + +#endif /* OPENFPM_IO_SRC_HDF5_WR_HDF5_WRITER_VD_HPP_ */ diff --git a/src/Makefile.am b/src/Makefile.am new file mode 100755 index 0000000000000000000000000000000000000000..a32d6ef4025c2340ef0c4f5eb2380a5b3b85663a --- /dev/null +++ b/src/Makefile.am @@ -0,0 +1,21 @@ + +LINKLIBS = $(PTHREAD_LIBS) $(HDF5_LDFLAGS) $(HDF5_LIBS) $(OPT_LIBS) $(BOOST_IOSTREAMS_LIB) $(BOOST_LDFLAGS) $(BOOST_PROGRAM_OPTIONS_LIB) $(BOOST_THREAD_LIB) $(CUDA_LIBS) + +noinst_PROGRAMS = io +io_SOURCES = main.cpp ../../openfpm_vcluster/src/VCluster/VCluster.cpp ../../openfpm_devices/src/memory/CudaMemory.cu ../../openfpm_devices/src/memory/HeapMemory.cpp ../../openfpm_devices/src/Memleak_check.cpp ../../openfpm_devices/src/memory/PtrMemory.cpp +io_CXXFLAGS = $(AM_CXXFLAGS) $(CUDA_CFLAGS) $(INCLUDES_PATH) $(HDF5_CPPFLAGS) $(BOOST_CPPFLAGS) -I/usr/local/include +io_CFLAGS = $(CUDA_CFLAGS) +io_LDADD = $(LINKLIBS) + +nobase_include_HEADERS = RawReader/RawReader.hpp RawReader/RawReader_unit_tests.hpp CSVWriter/csv_multiarray.hpp CSVWriter/CSVWriter.hpp CSVWriter/is_csv_writable.hpp \ +GraphMLWriter/GraphMLWriter.hpp util/util.hpp util/GBoxes.hpp \ +VTKWriter/VTKWriter.hpp VTKWriter/byteswap_portable.hpp VTKWriter/VTKWriter_dist_graph.hpp VTKWriter/VTKWriter_graph.hpp VTKWriter/VTKWriter_point_set.hpp VTKWriter/VTKWriter_grids.hpp VTKWriter/VTKWriter_grids_st.hpp VTKWriter/VTKWriter_grids_util.hpp VTKWriter/VTKWriter_vector_box.hpp VTKWriter/is_vtk_writable.hpp HDF5_wr/HDF5_wr.hpp HDF5_wr/HDF5_writer.hpp HDF5_wr/HDF5_writer_vd.hpp HDF5_wr/HDF5_writer_gd.hpp HDF5_wr/HDF5_reader_gd.hpp HDF5_wr/HDF5_reader.hpp HDF5_wr/HDF5_reader_vd.hpp \ +Plot/GoogleChart.hpp Plot/util.hpp + + +.cu.o : + $(NVCC) $(NVCCFLAGS) -o $@ -c $< + +test: io + source $(HOME)/openfpm_vars && cd .. && ./src/io + diff --git a/src/MatLabWriter.hpp b/src/MatLabWriter.hpp new file mode 100644 index 0000000000000000000000000000000000000000..a50d3a1e3c7e676446f6c3137cdb8ce6a7f3f225 --- /dev/null +++ b/src/MatLabWriter.hpp @@ -0,0 +1,111 @@ +#ifndef MATLABWRITER_HPP +#define MATLABWRITER_HPP + +#include <iostream> +#include "tiffio.h" +#include "map_grid.hpp" +#include <string> + +/*! \brief This class is able to save grid into tiff files + * + * This class is able to save grid into tiff files + * + */ + +template<unsigned int dim, typename T> +class MatLabWriter +{ + /*! \brief Save grid into tiff files + * + * Save grid into tiff files + * + */ + + template<typename grid, typename Mem> int operator<<(grid data, std::string file) + { + // Grid can have several properties we can save only scalar fields + // for each properties save one scalar fields + + // Tiff files can be saved up to 5D + + if (dim > 5) + { + std::cerr << "Error Tiff writer support until 5D images" << "\n"; + } + + // Open the tiff image + + uint32 width; + uint32 height; + TIFF *tif = TIFFOpen(file.c_str(),"w"); + + // if the file is open + + if(tif) + { + // set width and height for 2D + + width = data.getGrid().size(0); + height = data.getGrid().size(1); + + TIFFSetField(tif,TIFFTAG_IMAGEWIDTH, &width); + TIFFSetField(tif,TIFFTAG_IMAGELENGTH, &height); + + // Create the tiff line, in case the grid is CPU, we have only + // one property and is a scalar, we can directly copy the line + + typename boost::fusion::result_of::at<T::type,0>::type first_element_type; + + if (typeid(grid).name() == "grid_cpu" && T::num_prop == 1 && boost::is_array<first_element_type>::type::value == true) + { + // Get the grid key iterator + + grid_key_dx_iterator<dim> key = data.getIterator(); + + // write all lines + + for(int i = 0; i < height ; i++) + { + // select the correct lines + + key.set(1,i); + + // we have only one scalar properties, get the buffer pointer + void * buf = &data.template get<0>(key); + + TIFFWriteScanline(tif,buf,i, 0); + } + } + else + { + // we have to create the a scan line for each properties and index array + // each property and index array became a channel + + // Get the grid key iterator + + grid_key_dx_iterator<dim> key = data.getIterator(); + + // count how many properties and how many indexes we have + + const int n_prp = total_prop<T>; + + // write all lines + + for(int i = 0; i < height ; i++) + { + // select the correct lines + + key.set(1,i); + + // we have only one scalar properties, get the buffer pointer + void * buf = &data.template get<0>(key); + + TIFFWriteScanline(tif,buf,i, 0); + } + } + } + } + +}; + +#endif diff --git a/src/MetaParser/MetaParser.hpp b/src/MetaParser/MetaParser.hpp new file mode 100644 index 0000000000000000000000000000000000000000..7ce43539daf7fd2a7e1114e3bb5327ff9f2851e0 --- /dev/null +++ b/src/MetaParser/MetaParser.hpp @@ -0,0 +1,84 @@ +/* + * MetaParser.hpp + * + * Created on: Mar 3, 2019 + * Author: i-bird + */ + +#ifndef METAPARSER_HPP_ +#define METAPARSER_HPP_ + +#include <algorithm> +#include <iostream> +#include <iterator> +#include <string> +#include <vector> + +#include <boost/bind/bind.hpp> +#include <boost/program_options.hpp> +#include <boost/tokenizer.hpp> + +typedef boost::program_options::options_description MetaParser_options; +namespace MetaParser_def = boost::program_options; + +class MetaParser +{ + boost::program_options::options_description desc; + + boost::program_options::variables_map vm; + +public: + + explicit MetaParser(boost::program_options::options_description & desc) + :desc(desc) + { + } + + /*! \brief Parse the string of options + * + * \param string of options + * + */ + bool parse(std::string & opts) + { + std::istringstream iss(opts); + + // Parse mocked up input. + boost::program_options::store(boost::program_options::parse_config_file(iss,desc), vm); + boost::program_options::notify(vm); + + return true; + } + + /*! \brief Return the option opt in value + * + * \param opt option to check + * \param value where to store the value of the option + * + * \return true if the option has been set + * + */ + template<typename T> + bool getOption(std::string opt,T & value) + { + if (vm.count(opt)) + { + value = vm[opt].as<T>(); + return true; + } + + return false; + } + + /*! \brief clear everything you parsed so far + * + * + */ + void clear() + { + vm.clear(); + } +}; + + +#endif /* METAPARSER_HPP_ */ diff --git a/src/MetaParser/MetaParser_unit_test.cpp b/src/MetaParser/MetaParser_unit_test.cpp new file mode 100644 index 0000000000000000000000000000000000000000..a02a9c2d05806df230770856719429f208e99488 --- /dev/null +++ b/src/MetaParser/MetaParser_unit_test.cpp @@ -0,0 +1,117 @@ +/* + * MetaParser_unit_test.cpp + * + * Created on: Mar 3, 2019 + * Author: i-bird + */ + +#define BOOST_TEST_DYN_LINK +#include <boost/test/unit_test.hpp> + +#include "MetaParser.hpp" + +BOOST_AUTO_TEST_SUITE( vtk_writer_tests ) + +BOOST_AUTO_TEST_CASE( vtk_writer_meta_parser_use ) +{ + std::string test_options("time = 5.0"); + std::string test_options2("time=6.0"); + std::string test_options3("time =7.0"); + std::string test_options4("time= 8.0"); + std::string test_options5("time= 9.0"); + + double time = 1.0; + + MetaParser_options opts; + opts.add_options() + ("time", MetaParser_def::value<double>(&time)); + + MetaParser mp(opts); + mp.parse(test_options); + + BOOST_REQUIRE_EQUAL(time,5.0); + + time = 0.0; + bool exist = mp.getOption("time",time); + + BOOST_REQUIRE_EQUAL(exist,true); + BOOST_REQUIRE_EQUAL(time,5.0); + + exist = mp.getOption("invalid",time); + BOOST_REQUIRE_EQUAL(exist,false); + + // parse another + + mp.clear(); + + time = 0.0; + mp.parse(test_options2); + + BOOST_REQUIRE_EQUAL(time,6.0); + + time = 0.0; + exist = mp.getOption("time",time); + + BOOST_REQUIRE_EQUAL(exist,true); + BOOST_REQUIRE_EQUAL(time,6.0); + + exist = mp.getOption("invalid",time); + BOOST_REQUIRE_EQUAL(exist,false); + + // parse another + + mp.clear(); + + time = 0.0; + mp.parse(test_options3); + + BOOST_REQUIRE_EQUAL(time,7.0); + + time = 0.0; + exist = mp.getOption("time",time); + + BOOST_REQUIRE_EQUAL(exist,true); + BOOST_REQUIRE_EQUAL(time,7.0); + + exist = mp.getOption("invalid",time); + BOOST_REQUIRE_EQUAL(exist,false); + + // parse another + + mp.clear(); + + time = 0.0; + mp.parse(test_options4); + + BOOST_REQUIRE_EQUAL(time,8.0); + + time = 0.0; + exist = mp.getOption("time",time); + + BOOST_REQUIRE_EQUAL(exist,true); + BOOST_REQUIRE_EQUAL(time,8.0); + + exist = mp.getOption("invalid",time); + BOOST_REQUIRE_EQUAL(exist,false); + + // parse another + + mp.clear(); + + time = 0.0; + mp.parse(test_options5); + + BOOST_REQUIRE_EQUAL(time,9.0); + + time = 0.0; + exist = mp.getOption("time",time); + + BOOST_REQUIRE_EQUAL(exist,true); + BOOST_REQUIRE_EQUAL(time,9.0); + + exist = mp.getOption("invalid",time); + BOOST_REQUIRE_EQUAL(exist,false); + +} + +BOOST_AUTO_TEST_SUITE_END() diff --git a/src/ObjReader/ObjReader.hpp b/src/ObjReader/ObjReader.hpp new file mode 100644 index 0000000000000000000000000000000000000000..a62d1dec61a3b660a5c3d30a87aa7793a24bb7e5 --- /dev/null +++ b/src/ObjReader/ObjReader.hpp @@ -0,0 +1,188 @@ +/* + * ObjReader.hpp + * + * Created on: Oct 31, 2018 + * Author: i-bird + */ + +#ifndef OBJREADER_HPP_ +#define OBJREADER_HPP_ + +#include "config.h" +#include "Space/Shape/Point.hpp" + +#ifdef HAVE_TINYOBJLOADER +#include "tiny_obj_loader.h" + +/*! \brief Wavefront obj File reader + * + * \tparam T precision of the 3D space + * + */ +template<typename T> +class ObjReader +{ + size_t shape_counter; + size_t face_counter; + size_t index_offset; + + tinyobj::attrib_t attrib; + std::vector<tinyobj::shape_t> shapes; + std::vector<tinyobj::material_t> materials; + + size_t end_shape; + + public: + + /*! \brief Constructor + * + * + */ + ObjReader() + {} + + /*! \brief Read an Wavefront obj file + * + * \param file to open + * + * \return true if the read succeed + */ + bool read(std::string file) + { + shape_counter = 0; + face_counter = 0; + index_offset = 0; + + shapes.clear(); + materials.clear(); + + std::string err; + bool ret = tinyobj::LoadObj(&attrib, &shapes, &materials, &err, file.c_str()); + + if (!err.empty()) + {std::cerr << err << std::endl;} + + if (!ret) + {return false;} + + end_shape = shapes.size(); + + return true; + } + + + /*! \brief Next triangle + * + * \return itself + * + */ + ObjReader & operator++() + { + index_offset += getFaceNVertex(); + ++face_counter; + + if (face_counter >= shapes[shape_counter].mesh.num_face_vertices.size()) + { + face_counter = 0; + index_offset = 0; + ++shape_counter; + } + + return *this; + } + + /*! \brief Return true if we have another face + * + * \return true if we have next face + */ + inline bool isNext() + { + return shape_counter < end_shape; + } + + /*! \brief Iterate only on a partucular object faces + * + * \param i object to iterate + * + * \return + */ + inline void setObject(int i) + { + if (i >= shapes.size()) + { + std::cerr << "Error " << __FILE__ << ":" << __LINE__ << " you selected object " << i << " but the file contain " << shapes.size() << " objects" << std::endl; + } + + shape_counter = i; + end_shape = i+1; + } + + + /*! \brief Get the number of vertices in the face + * + * \return number of vertices a face has + */ + unsigned int getFaceNVertex() + { + return shapes[shape_counter].mesh.num_face_vertices[face_counter]; + } + + /*! \brief return the vertex v of the actual face + * + * \param v vertex + * \return the position of such vertex + */ + inline Point<3,T> getVertex(unsigned int v) + { + Point<3,T> p; + + tinyobj::index_t idx = shapes[shape_counter].mesh.indices[index_offset + v]; + + p.get(0) = attrib.vertices[3*idx.vertex_index+0]; + p.get(1) = attrib.vertices[3*idx.vertex_index+1]; + p.get(2) = attrib.vertices[3*idx.vertex_index+2]; + + return p; + } + + /*! \brief return the vertex v of the actual face + * + * \param v vertex + * \return the position of such vertex + */ + inline Point<3,T> getNormal(unsigned int v) + { + Point<3,T> p; + + tinyobj::index_t idx = shapes[shape_counter].mesh.indices[index_offset + v]; + + p.get(0) = attrib.normals[3*idx.normal_index+0]; + p.get(1) = attrib.normals[3*idx.normal_index+1]; + p.get(2) = attrib.normals[3*idx.normal_index+2]; + + return p; + } + + /*! \brief Get the texture coordinates + * + * \param v vertex + * + * \return The texture coordinates of the vertex v + * + */ + inline Point<2,T> getTexCoord(unsigned int v) + { + Point<2,T> p; + + tinyobj::index_t idx = shapes[shape_counter].mesh.indices[index_offset + v]; + + p.get(0) = attrib.texcoords[2*idx.texcoord_index+0]; + p.get(1) = attrib.texcoords[2*idx.texcoord_index+1]; + + return p; + } +}; + +#endif + +#endif /* OBJREADER_HPP_ */ diff --git a/src/ObjReader/ObjReader_unit_test.cpp b/src/ObjReader/ObjReader_unit_test.cpp new file mode 100644 index 0000000000000000000000000000000000000000..79c2b6644e7438d6f1f81007c2ef2047fa42afcf --- /dev/null +++ b/src/ObjReader/ObjReader_unit_test.cpp @@ -0,0 +1,20 @@ +#define BOOST_TEST_DYN_LINK +#include <boost/test/unit_test.hpp> + +#include "ObjReader.hpp" + +#ifdef HAVE_TINYOBJLOADER + +BOOST_AUTO_TEST_SUITE( obj_reader_test_suite ) + +BOOST_AUTO_TEST_CASE( obj_reader_test_use) +{ + ObjReader<float> reader; + + reader.read(""); +} + +BOOST_AUTO_TEST_SUITE_END() + + +#endif diff --git a/src/Plot/GoogleChart.hpp b/src/Plot/GoogleChart.hpp new file mode 100644 index 0000000000000000000000000000000000000000..ef0a9af292ee01d70fa07f1327f42c8082a436c5 --- /dev/null +++ b/src/Plot/GoogleChart.hpp @@ -0,0 +1,1001 @@ +/* + * GoogleChart.hpp + * + * Created on: Jan 9, 2016 + * Author: i-bird + */ + +#ifndef OPENFPM_DATA_SRC_PLOT_GOOGLECHART_HPP_ +#define OPENFPM_DATA_SRC_PLOT_GOOGLECHART_HPP_ + +#include <fstream> +#include "Vector/map_vector.hpp" +#include <cmath> + +#define GGRAPH_COLUMS 1 +#define GGRAPH_POINTS 2 + +#define GC_ZOOM std::string("explorer: {actions: ['dragToZoom', 'rightClickToReset'],axis: 'horizontal,vertical',keepInBounds: true, maxZoomIn: 128.0}") +#define GC_X_LOG std::string("hAxis: { logScale: true }") +#define GC_Y_LOG std::string("vAxis: { logScale: true }") + +/*! \brief Google chart options + * + */ +struct GCoptions +{ + //! Title of the chart + std::string title; + //! Y axis name + std::string yAxis; + //! X axis name + std::string xAxis; + + //! Type of chart (list of the option can be founded in Google Chart API for seriesType) + //! Possible options are: + //! 'line', 'area', 'bars', 'candlesticks', and 'steppedArea' + //! default: line + std::string stype; + + //! Extended series options + //! Example {5: {type: 'line'}} specify that the series number 5 must be represented + //! with a line + std::string stypeext; + + //! width of the graph in pixels + size_t width=900; + + //! height of the graph in pixels + size_t heigh=500; + + //! Flag that specify if the colums are stacked + //! Check in Google Chart for is stacked option + bool isStacked = false; + + //! Width of the line + size_t lineWidth = 4; + + //! Style for all the intervals + //! Check Google Chart API intervals option + std::string intervalsext; + + //! Style for each interval + //! Check Google Chart API interval option + std::string intervalext; + + //! more + std::string more; + + //! curve type + std::string curveType = "function"; + + //! barWD + bool barWD = false; + + /*! \brief copy operator + * + * \param opt object to copy + * + * \return itself + * + */ + GCoptions & operator=(const GCoptions & opt) + { + title = opt.title; + yAxis = opt.yAxis; + xAxis = opt.xAxis; + stype = opt.stype; + stypeext = opt.stypeext; + width=opt.width; + heigh=opt.heigh; + + lineWidth = opt.lineWidth; + intervalsext = opt.intervalsext; + more = opt.more; + + return *this; + } +}; + +/*! \brief Google Graph + * + */ +struct GGraph +{ + //! TypeOfGraph + size_t type; + + //! data + std::string data; + + //! option + std::string option; + + //! view in case we need a view + std::string view; + + //! Google chart option + GCoptions opt; +}; + +/////////////////// Constants strings usefull to construct the HTML page ////////// + +const std::string begin_data ="<html>\n\ + <head>\n\ + <script type=\"text/javascript\" src=\"https://www.gstatic.com/charts/loader.js\"></script>\n\ + <script src=\"https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js\"></script>\n\ + <script type=\"text/javascript\">\n\ + google.charts.load('current', {'packages':['corechart']});\n\ + google.charts.setOnLoadCallback(drawVisualization);\n\ +\n\ +function exportToSVG(i)\n\ +{\n\ +var e = document.getElementById('chart_div'+i);\n\ +var svg = e.getElementsByTagName('svg')[0].parentNode.innerHTML;\n\ +var pos = svg.lastIndexOf(\"</svg>\");\n\ +pos += 6;\n\ +svg = svg.substring(0,4) + \" xmlns='http://www.w3.org/2000/svg' xmlns:xlink= 'http://www.w3.org/1999/xlink' \" + svg.substring(4,pos);\n\ +svgData = 'data:image/svg+xml;charset=utf-8,' + encodeURIComponent(svg);\n\ +$(this).attr({'href': svgData,'target': '_blank'});\n\ +}\n\ +\n\ + function drawVisualization() {\n"; + +const std::string end_data="]);\n\n"; + +const std::string begin_div = "}</script>\n\ +</head>\n\ +<body>\n"; + +const std::string div_end = "</body>\n\ +</html>\n"; + +const std::string saving_javascript = "function save(i)\n\ + var e = document.getElementById('chart_')\n\ + e.getElementsByTagName('svg')[0].parentNode.innerHTML"; + +template<typename T> +struct check_nan +{ + static bool check(const T & n) + { + return false; + } +}; + +template<> +struct check_nan<float> +{ + static bool check(const float & n) + { + return std::isnan(n); + } +}; + +template<> +struct check_nan<double> +{ + static bool check(const double & n) + { + return std::isnan(n); + } +}; + +///////////////////////////////////////////////////////////////////// + +/*! \brief Small class to produce graph with Google chart in HTML + * + * This Class can produce several graph using google chart + * + * ### Create Histogram graph + * + * \image html g_graph_hist.jpg + * + * This code produce the graph above + * + * \snippet Plot_unit_tests.hpp Producing an Histogram graph + * + * ### Create Lines + * + * \image html g_graph_plot2.jpg + * + * This code produce the graph above + * + * \snippet Plot_unit_tests.hpp Producing lines + * + * ### Create lines with different styles + * + * \image html g_graph_plot.jpg + * + * This code produce the graph above + * + * \snippet Plot_unit_tests.hpp Producing lines graph with style + * + */ +class GoogleChart +{ + template<typename arg_0, typename ... args> + struct get_value_type + { + typedef typename arg_0::value_type type; + }; + + //! set of graphs + openfpm::vector<GGraph> set_of_graphs; + + //! set inject HTML; + openfpm::vector<std::string> injectHTML; + + //! Data has holes + bool holes = false; + + /*! \brief Recursively sort variadic template of vectors + * + * \param x vector with x + * \param y vector with y + * \param xy all the other vectors + * + */ + template<typename X, typename ... Xs> + void recursive_sort(X & x,X & y,Xs& ... xy) + { + struct srt_xy + { + typename X::value_type x; + unsigned int id; + + bool operator<(const srt_xy & tmp) const + { + return x < tmp.x; + } + }; + + openfpm::vector<srt_xy> reord; + X y_tmp; + + reord.resize(x.size()); + y_tmp.resize(x.size()); + + for (size_t i = 0 ; i < x.size() ; i++) + { + reord.get(i).x = x.get(i); + reord.get(i).id = i; + } + + reord.sort(); + + // reorder x and y + + for (size_t i = 0 ; i < x.size() ; i++) + { + x.get(i) = reord.get(i).x; + y_tmp.get(i) = y.get(reord.get(i).id); + } + + y_tmp.swap(y); + + // sort x + + recursive_sort(xy ...); + } + + //! terminator for recursive sort + void recursive_sort() + {} + + /*! \brief Recursively sort variadic template of vectors + * + * \param counters indexes + * \param x vector with x + * \param y vector with y + * \param xy all the other vectors + * + */ + template<typename X, typename ... Xs> + bool isNext(size_t * counters,X & x,X & y,Xs& ... xy) + { + if (counters[0] < x.size()) + { + return true; + } + return isNext(&counters[1],xy ...); + } + + /*! \brief Recursively sort variadic template of vectors + * + * \param counters indexes + * + */ + bool isNext(size_t * counters) + { + return false; + } + + + /*! \brief Recursively sort variadic template of vectors + * + * \param counters indexes + * \param x vector with x + * \param y vector with y + * \param xy all the other vectors + * + */ + template<typename T, typename X, typename ... Xs> + T get_low(size_t * counters,X & x,X & y,Xs& ... xy) + { + if (sizeof...(Xs) != 0) + { + T low1; + if (counters[0] >= x.size()) + {low1 = std::numeric_limits<typename X::value_type>::infinity();} + else + {low1 = x.get(counters[0]);} + + T low2 = get_low<T>(&counters[1],xy ...); + return (low1 < low2)?low1:low2; + } + + if (counters[0] >= x.size()) + {return std::numeric_limits<typename X::value_type>::infinity();} + return x.get(counters[0]); + } + + /*! \brief Recursively sort variadic template of vectors + * + * \param counters indexes + * + */ + template<typename T> + T get_low(size_t * counters) + { + return 0.0; + } + + /*! \brief Recursively sort variadic template of vectors + * + * \param x vector with x + * \param y vector with y + * \param xy all the other vectors + * + */ + template<typename X, typename ... Xs> + void get_point(typename X::value_type low, + typename X::value_type * point, + size_t * counters, + X & x, + X & y, + Xs& ... xy) + { + if (counters[0] < x.size() && low == x.get(counters[0])) + { + point[0] = y.get(counters[0]); + counters[0]++; + } + else + { + point[0] = std::numeric_limits<typename X::value_type>::quiet_NaN(); + } + + get_point(low,&point[1],&counters[1],xy...); + } + + /*! \brief Recursively sort variadic template of vectors + * + * \param x vector with x + * \param y vector with y + * \param xy all the other vectors + * + */ + template<typename T> + void get_point(T low, + T * point, + size_t * counters) + { + return; + } + + /*! \brief Recursively sort variadic template of vectors + * + * \param x vector with x + * \param y vector with y + * \param xy all the other vectors + * + */ + template<typename ... Xs> + bool get_v(typename get_value_type<Xs...>::type & x, + typename get_value_type<Xs...>::type * point, + size_t * counters, + Xs& ... xy) + { + // if exist the next element + if (isNext(counters,xy...) == false) + {return false;} + + // get lowest x + typename get_value_type<Xs...>::type low = get_low<typename get_value_type<Xs...>::type>(counters,xy...); + + x = low; + + get_point(low,point,counters,xy...); + + return true; + } + + /*! \brief Given X and Y vector return the string representing the data section of the Google Chart + * + * \tparam X type for the X coordinates + * \tparam Y type for the Y coordinates + * + * \param x vector of points on x + * \param y vector of points on y + * \param yn vector containing the name of each graph + * \param opt options to draw the graph + * \param i index of the graph we are drawing + * + * \return string with the data section + * + */ + template<typename X, typename Y> std::string get_points_plot_data(const openfpm::vector<X> & x, const openfpm::vector<Y> & y, const openfpm::vector<std::string> & yn, const GCoptions & opt, size_t i) + { + std::stringstream data; + + size_t interval = 0; + + // we require that the number of x elements are the same as y elements + + if (x.size() != y.size()) + {std::cerr << "Error: " << __FILE__ << ":" << __LINE__ << " vector x and the vector y must have the same number of elements " << x.size() << "!=" << y.size() << "\n";} + + // Google chart visualization + data << "var data" << i << " = new google.visualization.DataTable();\n"; + if (std::is_same<X,typename std::string>::value == true) + data << "data" << i << ".addColumn(" << "'string'" << "," << "'" << opt.xAxis <<"');\n"; + else + data << "data" << i << ".addColumn(" << "'number'" << "," << "'" << opt.xAxis <<"');\n"; + + for (size_t j = 0 ; j < y.last().size() ; j++) + { + if (yn.get(j) == std::string("interval")) + { + data << "data" << i << ".addColumn({id:'i" << interval/2 << "', type:'number', role:'interval'});\n"; + interval++; + } + else + data << "data" << i << ".addColumn(" << "'number'" << "," << "'" << yn.get(j) <<"');\n"; + } + + data << "data" << i << ".addRows([\n"; + for (size_t i = 0 ; i < y.size() && x.size() ; i++) + { + + for (size_t j = 0 ; j < y.get(i).size()+1 ; j++) + { + // the first is x + if (j == 0) + { + if (std::is_same<X,typename std::string>::value == true) + data << "['" << x.get(i) << "'"; + else + data << "[" << x.get(i); + } + else + { + if (check_nan<typename Y::value_type>::check(y.get(i).get(j-1)) == false) + { + data << "," << y.get(i).get(j-1); + } + else + { + holes = true; + data << "," << "null"; + } + } + } + data << "],\n"; + } + + return data.str(); + } + + /*! \brief Construct a view option + * + * \param opt GoogleChart option + * + * \return the string + * + */ + std::string get_view_bar_option(const GCoptions & opt, size_t n_col) + { + if (opt.barWD == false) + return std::string(); + + std::stringstream str; + + str << "[0" << std::endl; + + for (size_t i = 1 ; i < n_col ; i++) + { + str << "," << i << ",{ calc: \"stringify\"," << std::endl; + str << "sourceColumn: " << i << "," << std::endl; + str << "type: \"string\"," << std::endl; + str << "role: \"annotation\" }"<< std::endl; + } + + str << "]" << std::endl; + + return str.str(); + } + + std::string get_colums_bar_option(const GCoptions & opt) + { + std::stringstream str; + str << "title : '" << opt.title << "'"; + str << ",\nvAxis: {title: '" << opt.yAxis << "'}"; + str << ",\nhAxis: {title: '" << opt.xAxis << "'}"; + str << ",\nseriesType: '" << opt.stype << "'"; + if (opt.stypeext.size() != 0) + str << ",\nseries: " << opt.stypeext; + if (opt.more.size() != 0) + str << ",\n" <<opt.more; + + return str.str(); + } + + std::string get_points_plot_option(const GCoptions & opt) + { + std::stringstream str; + str << "title : '" << opt.title << "'"; + str << ",\nvAxis: {title: '" << opt.yAxis << "'}"; + str << ",\nhAxis: {title: '" << opt.xAxis << "'}"; + str << ",\ncurveType: '"<< opt.curveType << "'"; + + str << ",\nlineWidth: " << opt.lineWidth; + if (opt.intervalsext.size() != 0) + str << ",\nintervals: " << opt.intervalsext; + else + str << ",\nintervals: " << "{ 'style':'area' }"; + + if (opt.intervalext.size() != 0) + str << ",\ninterval: " << opt.intervalext << "\n"; + + if (opt.more.size() != 0) + str << ",\n" << opt.more; + + return str.str(); + } + + /*! \brief Add a graph data variable + * + * \param of file out + * \param i id + * \param data string + * + */ + void addData(std::ofstream & of, size_t i, const std::string & data) + { + + of << data; + of << "]);\n"; + } + + /*! \brief Add an option data variable + * + * \param of file out + * \param i id + * \param opt string + * + */ + void addOption(std::ofstream & of, size_t i, const std::string & opt) + { + of << "var options"; + of << i; + of << "= {\n"; + if (holes == true) + {of << "interpolateNulls : true,\n";} + of << opt; + of << "};\n"; + } + + /*! \brief Add a view data variable + * + * \param of file out + * \param i id + * \param view string + * + */ + void addView(std::ofstream & of, size_t i, std::string view) + { + if (view.size() == 0) + return; + + of << "var view" << i << " = new google.visualization.DataView(data" << i << ");" << std::endl; + of << "view"<< i << ".setColumns("; + of << view << ");" << std::endl; + } + + /*! \brief Add a draw div section + * + * \param of file out + * \param i id + * \param draw_view draw a chart(true) or view(false) + * + */ + void addDrawDiv(std::ofstream & of, size_t i, bool draw_view) + { + of << "$(\"#export_svg" << i << "\").on(\"click\", function (event) {exportToSVG.apply(this,[" << i << "]);});\n"; + of << "var chart = new google.visualization.ComboChart(document.getElementById('chart_div"; + of << i; + of << "'));" << std::endl; + if (draw_view == true) + { + of << "chart.draw(data"; + of << i; + } + else + { + of << "chart.draw(view"; + of << i; + } + of << ", options"; + of << i; + of << ");\n"; + } + + /*! \brief Add a div section + * + * \param of file ofstream + * \param i id of the graph + * \param gc GoogleChart option + * + */ + void addDiv(std::ofstream & of, size_t i, const GCoptions & gc) + { + of << "<a href=\"#\" download=\"graph1.svg\" id=\"export_svg" << i << "\"><button>Export data into svg</button></a>"; + of << "<div id=\"chart_div"; + of << i; + of << "\" style=\"width: "; + of << gc.width; + of << "px; height: "; + of << gc.heigh; + of << "px;\"></div>\n"; + } + +public: + + GoogleChart() + { + injectHTML.add(); + } + + /*! \brief Add an histogram graph + * + * \param y A vector of vectors the size of y indicate how many values we have on x + * each x value can have multiple values or datasets + * + */ + template<typename Y> void AddHistGraph(openfpm::vector<Y> & y) + { + openfpm::vector<std::string> x; + x.resize(y.size()); + + AddHistGraph<std::string,Y>(x,y); + } + + /*! \brief Add an histogram graph + * + * \param y A vector of vectors the size of y indicate how many values we have on x + * each x value can have multiple values or datasets + * + * \param x Give a name or number to each colums. Can be a string or a number + * + */ + template<typename X, typename Y> void AddHistGraph(openfpm::vector<X> & x, openfpm::vector<Y> & y) + { + GCoptions opt; + + openfpm::vector<std::string> yn; + + if (y.size() != 0) + yn.resize(y.get(0).size()); + + AddHistGraph<X,Y,std::string>(x,y,yn,opt); + } + + /*! \brief Add an histogram graph + * + * \param y A vector of vectors the size of y indicate how many values we have on x + * each x value can have multiple values or datasets + * + * \param x Give a name or number to each colums. Can be a string or a number + * + * \param yn Give a name to each dataset + * + */ + template<typename X, typename Y, typename Yn> void AddHistGraph(openfpm::vector<X> & x, openfpm::vector<Y> & y, openfpm::vector<Yn> & yn) + { + GCoptions opt; + + AddHistGraph(x,y,yn,opt); + } + + /*! \brief Add an histogram graph + * + * \param y A vector of vectors the size of y indicate how many values we have on x + * each x value can have multiple values or datasets + * + * \param x Give a name or number to each colums. Can be a string or a number + * + * \param yn Give a name to each dataset + * + * \param opt Graph options + * + */ + template<typename X, typename Y, typename Yn> void AddHistGraph(openfpm::vector<X> & x, openfpm::vector<Y> & y, openfpm::vector<Yn> & yn , const GCoptions & opt) + { + set_of_graphs.add(); + injectHTML.add(); + + // Check that all the internal vector has the same number of elements + + if (y.size() != 0) + { + size_t sz = y.get(0).size(); + for (size_t i = 0; i < y.size() ; i++) + { + if (y.get(i).size() != sz) + std::cerr << __FILE__ << ":" << __LINE__ << " error all the elements in the y vector must have the same numbers, element " << i << ": " << y.get(i).size() << " " << " mismatch the numbers of elements at 0: " << sz << "/n"; + } + } + + set_of_graphs.last().type = GGRAPH_COLUMS; + set_of_graphs.last().data = get_points_plot_data(x,y,yn,opt,set_of_graphs.size()-1); + set_of_graphs.last().option = get_colums_bar_option(opt); + set_of_graphs.last().view = get_view_bar_option(opt,y.get(0).size()); + set_of_graphs.last().opt = opt; + } + + + /*! \brief Add lines graph + * + * \param xy list of vectors like openfpm::vector<float> or openfpm::vector<double>. Suppose you have a dataset of points x1,y1 + * and a dataset x2,y2 and you want to display all these points in one graph. Than you call this function with + * AddLines(x1,y1,x2,y2,opt) + * + * \param opt Graph options + * + */ + template<typename ... X> void AddLines(const openfpm::vector<std::string> & yn, + const GCoptions & opt, + X ... xy) + { + // first we sort the vectors + recursive_sort(xy ... ); + + size_t counters[sizeof...(X)]; + memset(&counters,0,sizeof(counters)); + + typename get_value_type<X...>::type point[sizeof...(X)]; + typename get_value_type<X...>::type xe; + + openfpm::vector<typename get_value_type<X...>::type> x; + + openfpm::vector<openfpm::vector<typename get_value_type<X...>::type>> y; + + + while (get_v(xe,point,counters,xy...)) + { + y.add(); + x.add(xe); + + for (size_t i = 0 ; i < sizeof...(X)/2 ; i++) + { + y.last().add(point[i]); + } + } + + AddLinesGraph(x,y,yn,opt); + } + + /*! \brief Add lines graph + * + * If the x vector contain 0.0,0.1,0.2,0.3,0.4 and you want to draw two lines you specifying two y values for each of the x points + * you create an openfpm::vector<openfpm::vector<float>> y such that + * + * \verbatim + ------ j ------- | + y.get(i).get(j) = 3.2 3.4 5.4 1.3 2.3 i + 1.4 5.3 3.2 2.1 1.1 | + + \endverbatim + * + * \param y A vector of vectors of values. each vector contain the graph points, compared to AddLinesGraph the points are stored + * + * + * \param x axis values + * + * \param opt Graph options + * + */ + template<typename X, typename Y> void AddLinesGraphT(openfpm::vector<X> & x, openfpm::vector<Y> & y , const GCoptions & opt) + { + openfpm::vector<std::string> yn; + + if (y.size() == 0) + { + std::cerr << "Error: " << __FILE__ << ":" << __LINE__ << " vector y must be filled" << std::endl; + return; + } + + for (size_t i = 0 ; i < y.last().size() ; i++) + yn.add(std::string("line") + std::to_string(i)); + + if (y.size() == 0) + return; + + // number of points + size_t np = y.last().size(); + + for (size_t j = 0 ; j < y.size() ; j++) + { + if (y.get(j).size() != np) + std::cerr << __FILE__ << ":" << __LINE__ << " Error all the graph must have the same number of points " << np << "!=" << y.get(j).size() << std::endl; + } + + openfpm::vector<openfpm::vector<X>> swap; + + + // swap the vector + // Each vector is a graph + // It is different from the other call where each vector + // has multiple value for the same point + for (size_t i = 0 ; i < np ; i++) + { + swap.add(); + for (size_t j = 0 ; j < y.size() ; j++) + { + swap.last().add(y.get(j).get(i)); + } + } + + AddLinesGraph(x,swap,yn,opt); + } + + /*! \brief Add a simple lines graph + * + * If the x vector contain 0.0,0.1,0.2,0.3,0.4 and you want to draw two lines you specifying two y values for each of the x points + * you create an openfpm::vector<openfpm::vector<float>> y such that + * + * \verbatim + -- j -- + y.get(i).get(j) = 3.2 3.4 + 1.4 5.3 | + 5.4 3.2 i + 1.3 2.2 | + 2.3 1.1 + \endverbatim + * + * \param y A vector of vectors of values. The size of y indicate how many x values + * we have, while the internal vector can store multiple value of the same point, + * for example error bar + * + * \param x Give a name or number to each x value, so can be a string or a number + * + * \param opt Graph options + * + */ + template<typename X, typename Y> void AddLinesGraph(openfpm::vector<X> & x, openfpm::vector<Y> & y , const GCoptions & opt) + { + openfpm::vector<std::string> yn; + + if (y.size() == 0) + { + std::cerr << "Error: " << __FILE__ << ":" << __LINE__ << " vector y must be filled"; + return; + } + + for (size_t i = 0 ; i < y.last().size() ; i++) + yn.add(std::string("line") + std::to_string(i)); + + AddLinesGraph(x,y,yn,opt); + } + + /*! \brief Add a simple plot graph + * + * \param y A vector of vector of values (numbers) the size of y indicate how many x values + * or colums we have, while the internal vector store multiple lines, + * or error bars + * + * \param x Give a name or number to each colums, so can be a string or a number + * + * \param yn Give a name to each line, or specify an error bar + * + * \param opt Graph options + * + */ + template<typename X, typename Y> void AddLinesGraph(openfpm::vector<X> & x, openfpm::vector<Y> & y , const openfpm::vector<std::string> & yn, const GCoptions & opt) + { + if (y.size() == 0) + { + std::cerr << "Error: " << __FILE__ << ":" << __LINE__ << " vector y must be filled\n"; + return; + } + + set_of_graphs.add(); + injectHTML.add(); + + // Check that all the internal vectors has the same number of elements + + if (y.size() != 0) + { + size_t sz = y.get(0).size(); + for (size_t i = 0; i < y.size() ; i++) + { + if (y.get(i).size() != sz) + std::cerr << __FILE__ << ":" << __LINE__ << " error all the elements in the y vector must have the same numbers of elements " << y.get(i).size() << " != " << sz << "\n"; + } + } + + set_of_graphs.last().type = GGRAPH_POINTS; + set_of_graphs.last().data = get_points_plot_data(x,y,yn,opt,set_of_graphs.size()-1); + set_of_graphs.last().option = get_points_plot_option(opt); + set_of_graphs.last().opt = opt; + } + + /*! \brief Add HTML text + * + * \param html add html text in the page + * + */ + void addHTML(const std::string & html) + { + injectHTML.last() = html; + } + + /*! \brief It write the graphs on file in html format using Google charts + * + * \param file output file + * + */ + void write(std::string file) + { + // Open a file + + std::ofstream of(file); + + // Check if the file is open + if (of.is_open() == false) + {std::cerr << "Error cannot create the HTML file: " + file + "\n";} + + // write the file + + of << begin_data; + + for (size_t i = 0 ; i < set_of_graphs.size() ; i++) + addData(of,i,set_of_graphs.get(i).data); + + for (size_t i = 0 ; i < set_of_graphs.size() ; i++) + addOption(of,i,set_of_graphs.get(i).option); + + for (size_t i = 0 ; i < set_of_graphs.size() ; i++) + addView(of,i,set_of_graphs.get(i).view); + + for (size_t i = 0 ; i < set_of_graphs.size() ; i++) + addDrawDiv(of,i,set_of_graphs.get(i).view.size() == 0); + + of << begin_div; + + of << injectHTML.get(0); + + for (size_t i = 0 ; i < set_of_graphs.size() ; i++) + { + addDiv(of,i,set_of_graphs.get(i).opt); + of << injectHTML.get(i+1); + } + + of << div_end; + + of.close(); + } +}; + +#endif /* OPENFPM_DATA_SRC_PLOT_GOOGLECHART_HPP_ */ diff --git a/src/Plot/Plot_unit_tests.hpp b/src/Plot/Plot_unit_tests.hpp new file mode 100644 index 0000000000000000000000000000000000000000..3d261ab81c15e1ba675bdec99f9406b26826a761 --- /dev/null +++ b/src/Plot/Plot_unit_tests.hpp @@ -0,0 +1,793 @@ +/* + * Plot_unit_tests.hpp + * + * Created on: Jan 9, 2016 + * Author: i-bird + */ + +#ifndef OPENFPM_DATA_SRC_PLOT_PLOT_UNIT_TESTS_HPP_ +#define OPENFPM_DATA_SRC_PLOT_PLOT_UNIT_TESTS_HPP_ + +#include "GoogleChart.hpp" +#include "Plot/util.hpp" + +BOOST_AUTO_TEST_SUITE( plot_unit_test ) + + +BOOST_AUTO_TEST_CASE( google_chart_bar_string ) +{ + Vcluster<> & v_cl = create_vcluster(); + + if (v_cl.getProcessUnitID() != 0) + return; + +#ifdef OPENFPM_PDATA + + std::string c2 = std::string("openfpm_io/test_data/gc_out_sc_test.html"); + +#else + + std::string c2 = std::string("test_data/gc_out_sc_test.html"); + +#endif + + //! [Producing an Histogram graph] + + openfpm::vector<std::string> x; + openfpm::vector<openfpm::vector<size_t>> y; + openfpm::vector<std::string> yn; + + x.add("colum1"); + x.add("colum2"); + x.add("colum3"); + x.add("colum4"); + x.add("colum5"); + x.add("colum6"); + + // Each colum can have multiple data set (in this case 4 dataset) + // Each dataset can have a name + yn.add("dataset1"); + yn.add("dataset2"); + yn.add("dataset3"); + yn.add("dataset4"); + + // Each colums can have multiple data-set + y.add({2,3,5,6}); + y.add({5,6,1,6}); + y.add({2,1,6,9}); + y.add({1,6,3,2}); + y.add({3,3,0,6}); + y.add({2,1,4,6}); + + // Google charts options + GCoptions options; + + options.title = std::string("Example"); + options.yAxis = std::string("Y Axis"); + options.xAxis = std::string("X Axis"); + options.stype = std::string("bars"); + options.barWD = true; + + // it say that the colum4 must me represented with a line + options.stypeext = std::string("{3: {type: 'line'}}"); + + GoogleChart cg; + cg.AddHistGraph(x,y,yn,options); + cg.write("gc_out_sc.html"); + + //! [Producing an Histogram graph] + + bool test = compare("gc_out_sc.html",c2); + BOOST_REQUIRE_EQUAL(true,test); +} + + +BOOST_AUTO_TEST_CASE( google_chart ) +{ + Vcluster<> & v_cl = create_vcluster(); + + if (v_cl.getProcessUnitID() != 0) + return; + +#ifdef OPENFPM_PDATA + + std::string c2 = std::string("openfpm_io/test_data/gc_out_test.html"); + +#else + + std::string c2 = std::string("test_data/gc_out_test.html"); + +#endif + + //! [Producing an Histogram graph] + + openfpm::vector<std::string> x; + openfpm::vector<openfpm::vector<size_t>> y; + openfpm::vector<std::string> yn; + + x.add("colum1"); + x.add("colum2"); + x.add("colum3"); + x.add("colum4"); + x.add("colum5"); + x.add("colum6"); + + // Each colum can have multiple data set (in this case 4 dataset) + // Each dataset can have a name + yn.add("dataset1"); + yn.add("dataset2"); + yn.add("dataset3"); + yn.add("dataset4"); + + // Each colums can have multiple data-set + y.add({2,3,5,6}); + y.add({5,6,1,6}); + y.add({2,1,6,9}); + y.add({1,6,3,2}); + y.add({3,3,0,6}); + y.add({2,1,4,6}); + + // Google charts options + GCoptions options; + + options.title = std::string("Example"); + options.yAxis = std::string("Y Axis"); + options.xAxis = std::string("X Axis"); + options.stype = std::string("bars"); + + // it say that the colum4 must me represented with a line + options.stypeext = std::string("{3: {type: 'line'}}"); + + GoogleChart cg; + cg.AddHistGraph(x,y,yn,options); + cg.write("gc_out.html"); + + //! [Producing an Histogram graph] + + bool test = compare("gc_out.html",c2); + BOOST_REQUIRE_EQUAL(true,test); +} + +BOOST_AUTO_TEST_CASE( google_chart2 ) +{ + Vcluster<> & v_cl = create_vcluster(); + + if (v_cl.getProcessUnitID() != 0) + return; + +#ifdef OPENFPM_PDATA + + std::string c2 = std::string("openfpm_io/test_data/gc_out2_test.html"); + +#else + + std::string c2 = std::string("test_data/gc_out2_test.html"); + +#endif + + openfpm::vector<std::string> x; + openfpm::vector<openfpm::vector<float>> y; + openfpm::vector<std::string> yn; + + x.add("colum1"); + x.add("colum2"); + x.add("colum3"); + x.add("colum4"); + x.add("colum5"); + x.add("colum6"); + + // Each colum can have multiple data set (in this case 4 dataset) + // Each dataset can have a name + yn.add("dataset1"); + yn.add("dataset2"); + yn.add("dataset3"); + yn.add("dataset4"); + + // Each colums can have multiple data-set + y.add({2.2,1.3,4.5,0.6}); + y.add({5.0,6.1,1.3,2.6}); + y.add({2.1,1.0,6.1,9.3}); + y.add({1.1,6.1,3.0,2.0}); + y.add({3.3,0.3,0.0,6.2}); + y.add({2.0,1.1,4.0,6.1}); + + // Google charts options + GCoptions options; + + options.title = std::string("Example"); + options.yAxis = std::string("Y Axis"); + options.xAxis = std::string("X Axis"); + options.stype = std::string("bars"); + + GoogleChart cg; + cg.AddHistGraph(x,y,yn,options); + cg.write("gc_out2.html"); + + bool test = compare("gc_out2.html",c2); + BOOST_REQUIRE_EQUAL(true,test); +} + +BOOST_AUTO_TEST_CASE( google_chart3 ) +{ + Vcluster<> & v_cl = create_vcluster(); + + if (v_cl.getProcessUnitID() != 0) + return; + +#ifdef OPENFPM_PDATA + + std::string c2 = std::string("openfpm_io/test_data/gc_out3_test.html"); + +#else + + std::string c2 = std::string("test_data/gc_out3_test.html"); + +#endif + + openfpm::vector<std::string> x; + openfpm::vector<openfpm::vector<float>> y; + openfpm::vector<std::string> yn; + + x.add("colum1"); + x.add("colum2"); + x.add("colum3"); + x.add("colum4"); + x.add("colum5"); + x.add("colum6"); + + // Each colum can have multiple data set (in this case 4 dataset) + // Each dataset can have a name + yn.add("dataset1"); + yn.add("dataset2"); + yn.add("dataset3"); + yn.add("dataset4"); + + // Each colums can have multiple data-set + y.add({2.2,1.3,4.5,0.6}); + y.add({5.0,6.1,1.3,2.6}); + y.add({2.1,1.0,6.1,9.3}); + y.add({1.1,6.1,3.0,2.0}); + y.add({3.3,0.3,0.0,6.2}); + y.add({2.0,1.1,4.0,6.1}); + + // Google charts options + GCoptions options; + + options.title = std::string("Example"); + options.yAxis = std::string("Y Axis"); + options.xAxis = std::string("X Axis"); + + GoogleChart cg; + cg.AddHistGraph(x,y,yn,options); + cg.write("gc_out3.html"); + + bool test = compare("gc_out3.html",c2); + BOOST_REQUIRE_EQUAL(true,test); +} + +BOOST_AUTO_TEST_CASE( google_chart4 ) +{ + Vcluster<> & v_cl = create_vcluster(); + + if (v_cl.getProcessUnitID() != 0) + return; + +#ifdef OPENFPM_PDATA + + std::string c2 = std::string("openfpm_io/test_data/gc_out4_test.html"); + +#else + + std::string c2 = std::string("test_data/gc_out4_test.html"); + +#endif + + openfpm::vector<std::string> x; + openfpm::vector<openfpm::vector<float>> y; + openfpm::vector<std::string> yn; + + x.add("colum1"); + x.add("colum2"); + x.add("colum3"); + x.add("colum4"); + x.add("colum5"); + x.add("colum6"); + + // Each colum can have multiple data set (in this case 4 dataset) + // Each dataset can have a name + yn.add("dataset1"); + yn.add("dataset2"); + yn.add("dataset3"); + yn.add("dataset4"); + + // Each colums can have multiple data-set + y.add({2.2,1.3,4.5,0.6}); + y.add({5.0,6.1,1.3,2.6}); + y.add({2.1,1.0,6.1,9.3}); + y.add({1.1,6.1,3.0,2.0}); + y.add({3.3,0.3,0.0,6.2}); + y.add({2.0,1.1,4.0,6.1}); + + GoogleChart cg; + cg.AddHistGraph(x,y,yn); + cg.write("gc_out4.html"); + + bool test = compare("gc_out4.html",c2); + BOOST_REQUIRE_EQUAL(true,test); +} + +BOOST_AUTO_TEST_CASE( google_chart5 ) +{ + Vcluster<> & v_cl = create_vcluster(); + + if (v_cl.getProcessUnitID() != 0) + return; + +#ifdef OPENFPM_PDATA + + std::string c2 = std::string("openfpm_io/test_data/gc_out5_test.html"); + +#else + + std::string c2 = std::string("test_data/gc_out5_test.html"); + +#endif + + openfpm::vector<std::string> x; + openfpm::vector<openfpm::vector<float>> y; + + x.add("colum1"); + x.add("colum2"); + x.add("colum3"); + x.add("colum4"); + x.add("colum5"); + x.add("colum6"); + + // Each colums can have multiple data-set + y.add({2.2,1.3,4.5,0.6}); + y.add({5.0,6.1,1.3,2.6}); + y.add({2.1,1.0,6.1,9.3}); + y.add({1.1,6.1,3.0,2.0}); + y.add({3.3,0.3,0.0,6.2}); + y.add({2.0,1.1,4.0,6.1}); + + GoogleChart cg; + cg.AddHistGraph(x,y); + cg.write("gc_out5.html"); + + bool test = compare("gc_out5.html",c2); + BOOST_REQUIRE_EQUAL(true,test); +} + +BOOST_AUTO_TEST_CASE( google_chart6 ) +{ + Vcluster<> & v_cl = create_vcluster(); + + if (v_cl.getProcessUnitID() != 0) + return; + +#ifdef OPENFPM_PDATA + + std::string c2 = std::string("openfpm_io/test_data/gc_out6_test.html"); + +#else + + std::string c2 = std::string("test_data/gc_out6_test.html"); + +#endif + + openfpm::vector<openfpm::vector<float>> y; + + // Each colums can have multiple data-set + y.add({2.2,1.3,4.5,0.6}); + y.add({5.0,6.1,1.3,2.6}); + y.add({2.1,1.0,6.1,9.3}); + y.add({1.1,6.1,3.0,2.0}); + y.add({3.3,0.3,0.0,6.2}); + y.add({2.0,1.1,4.0,6.1}); + + GoogleChart cg; + cg.AddHistGraph(y); + cg.write("gc_out6.html"); + + bool test = compare("gc_out6.html",c2); + BOOST_REQUIRE_EQUAL(true,test); +} + +BOOST_AUTO_TEST_CASE( google_chart_with_inject_HTML ) +{ + Vcluster<> & v_cl = create_vcluster(); + + if (v_cl.getProcessUnitID() != 0) + return; + +#ifdef OPENFPM_PDATA + + std::string c2 = std::string("openfpm_io/test_data/gc_out7_test.html"); + +#else + + std::string c2 = std::string("test_data/gc_out7_test.html"); + +#endif + + //! [Producing a set of histograms graphs] + + openfpm::vector<std::string> x; + openfpm::vector<openfpm::vector<size_t>> y; + openfpm::vector<std::string> yn; + + x.add("colum1"); + x.add("colum2"); + x.add("colum3"); + x.add("colum4"); + x.add("colum5"); + x.add("colum6"); + + // Each colum can have multiple data set (in this case 4 dataset) + // Each dataset can have a name + yn.add("dataset1"); + yn.add("dataset2"); + yn.add("dataset3"); + yn.add("dataset4"); + + // Each colums can have multiple data-set + y.add({2,3,5,6}); + y.add({5,6,1,6}); + y.add({2,1,6,9}); + y.add({1,6,3,2}); + y.add({3,3,0,6}); + y.add({2,1,4,6}); + + // Google charts options + GCoptions options; + + options.title = std::string("Example"); + options.yAxis = std::string("Y Axis"); + options.xAxis = std::string("X Axis"); + options.stype = std::string("bars"); + + // it say that the colum4 must me represented with a line + options.stypeext = std::string("{3: {type: 'line'}}"); + + GoogleChart cg; + // + cg.addHTML("<h2>Before first graph</h2>"); + cg.AddHistGraph(x,y,yn,options); + cg.addHTML("<h2>Before second graph</h2>"); + cg.AddHistGraph(x,y,yn,options); + cg.addHTML("<h2>Before third graph</h2>"); + cg.AddHistGraph(x,y,yn,options); + cg.addHTML("<h2>At the end</h2>"); + cg.write("gc_out7.html"); + + //! [Producing a set of histograms graphs] + + bool test = compare("gc_out7.html",c2); + BOOST_REQUIRE_EQUAL(true,test); +} + +BOOST_AUTO_TEST_CASE( google_chart_number ) +{ + Vcluster<> & v_cl = create_vcluster(); + + if (v_cl.getProcessUnitID() != 0) + return; + +#ifdef OPENFPM_PDATA + + std::string c2 = std::string("openfpm_io/test_data/gc_num_plot_test.html"); + +#else + + std::string c2 = std::string("test_data/gc_num_plot_test.html"); + +#endif + + //! [Producing a set of histograms graphs] + + openfpm::vector<float> x; + openfpm::vector<openfpm::vector<size_t>> y; + openfpm::vector<std::string> yn; + + x.add(0.1); + x.add(0.2); + x.add(0.3); + x.add(0.4); + x.add(0.5); + x.add(0.6); + + // Each colum can have multiple data set (in this case 4 dataset) + // Each dataset can have a name + yn.add("dataset1"); + yn.add("dataset2"); + yn.add("dataset3"); + yn.add("dataset4"); + + // Each colums can have multiple data-set + y.add({2,3,5,6}); + y.add({5,6,1,6}); + y.add({2,1,6,9}); + y.add({1,6,3,2}); + y.add({3,3,0,6}); + y.add({2,1,4,6}); + + // Google charts options + GCoptions options; + + options.title = std::string("Example"); + options.yAxis = std::string("Y Axis"); + options.xAxis = std::string("X Axis"); + options.stype = std::string("line"); + + GoogleChart cg; + // + cg.AddLinesGraph(x,y,yn,options); + cg.write("gc_num_plot.html"); + + //! [Producing a set of histograms graphs] + + bool test = compare("gc_num_plot.html",c2); + BOOST_REQUIRE_EQUAL(true,test); +} + +BOOST_AUTO_TEST_CASE( google_chart_number_lines_different_x ) +{ + Vcluster<> & v_cl = create_vcluster(); + + if (v_cl.getProcessUnitID() != 0) + return; + +#ifdef OPENFPM_PDATA + + std::string c2 = std::string("openfpm_io/test_data/gc_num_ydif_plot_test.html"); + +#else + + std::string c2 = std::string("test_data/gc_num_ydif_plot_test.html"); + +#endif + + //! [Producing a set of histograms graphs] + + openfpm::vector<float> x1; + openfpm::vector<float> y1; + openfpm::vector<float> x2; + openfpm::vector<float> y2; + openfpm::vector<float> x3; + openfpm::vector<float> y3; + openfpm::vector<std::string> yn; + + x1.add(0.1); y1.add(4.5); + x1.add(0.2); y1.add(3.0); + x1.add(0.3); y1.add(5.5); + x1.add(0.4); y1.add(3.3); + x1.add(0.5); y1.add(1.0); + x1.add(0.6); y1.add(7.0); + + x2.add(0.15); y2.add(1.5); + x2.add(0.2); y2.add(4.5); + x2.add(0.35); y2.add(2.5); + x2.add(0.45); y2.add(6.5); + + x3.add(0.1); y3.add(3.5); + x3.add(0.2); y3.add(6.5); + x3.add(0.63); y3.add(1.5); + x3.add(0.37); y3.add(1.5); + x3.add(0.7); y3.add(3.5); + x3.add(0.82); y3.add(2.5); + x3.add(0.4); y3.add(2.5); + x3.add(1.0); y3.add(1.5); + x3.add(0.5); y3.add(7.5); + x3.add(0.91); y3.add(5.5); + + // Each colum can have multiple data set (in this case 4 dataset) + // Each dataset can have a name + yn.add("dataset1"); + yn.add("dataset2"); + yn.add("dataset3"); + + + // Google charts options + GCoptions options; + + options.title = std::string("Example"); + options.yAxis = std::string("Y Axis"); + options.xAxis = std::string("X Axis"); + options.stype = std::string("line"); + + GoogleChart cg; + + cg.AddLines(yn,options,x1,y1,x2,y2,x3,y3); + cg.write("gc_num_ydif_plot.html"); + + //! [Producing a set of histograms graphs] + + bool test = compare("gc_num_ydif_plot.html",c2); + BOOST_REQUIRE_EQUAL(true,test); +} + +BOOST_AUTO_TEST_CASE( google_chart_linear_plot ) +{ + Vcluster<> & v_cl = create_vcluster(); + + if (v_cl.getProcessUnitID() != 0) + return; + +#ifdef OPENFPM_PDATA + + std::string c2 = std::string("openfpm_io/test_data/gc_plot_out_test.html"); + +#else + + std::string c2 = std::string("test_data/gc_plot_out_test.html"); + +#endif + + //! [Producing lines graph with style] + + openfpm::vector<std::string> x; + openfpm::vector<openfpm::vector<double>> y; + openfpm::vector<std::string> yn; + + x.add("colum1"); + x.add("colum2"); + x.add("colum3"); + x.add("colum4"); + x.add("colum5"); + x.add("colum6"); + + // Here we specify how many lines we have + // first Line + yn.add("line1"); + + // second line + 2 intervals (Error bands) + yn.add("line2"); + yn.add("interval"); + yn.add("interval"); + yn.add("interval"); + yn.add("interval"); + + // third line + 1 interval (Error bands) + yn.add("line3"); + yn.add("interval"); + yn.add("interval"); + + // Each line can have multiple intervals or error bars + // The first number specify the bottom line + // The last three numbers specify the top line + error band (min, max) + // The middle 5 line specify the middle lines + one external error band + one internal error band + + y.add({0.10,0.20,0.19,0.22,0.195,0.215,0.35,0.34,0.36}); + y.add({0.11,0.21,0.18,0.22,0.19,0.215,0.36,0.35,0.37}); + y.add({0.12,0.22,0.21,0.23,0.215,0.225,0.35,0.34,0.36}); + y.add({0.15,0.25,0.20,0.26,0.22,0.255,0.36,0.35,0.37}); + y.add({0.09,0.29,0.25,0.30,0.26,0.295,0.35,0.34,0.36}); + y.add({0.08,0.28,0.27,0.29,0.275,0.285,0.36,0.35,0.37}); + + // Google charts options + GCoptions options; + + options.title = std::string("Example"); + options.yAxis = std::string("Y Axis"); + options.xAxis = std::string("X Axis"); + options.lineWidth = 1.0; + options.intervalext = std::string("{'i2': { 'color': '#4374E0', 'style':'bars', 'lineWidth':4, 'fillOpacity':1 } }"); + + GoogleChart cg; + cg.AddLinesGraph(x,y,yn,options); + cg.write("gc_plot_out.html"); + + //! [Producing lines graph with style] + + bool test = compare("gc_plot_out.html",c2); + BOOST_REQUIRE_EQUAL(true,test); +} + +BOOST_AUTO_TEST_CASE( google_chart_linear_plot2 ) +{ + Vcluster<> & v_cl = create_vcluster(); + + if (v_cl.getProcessUnitID() != 0) + return; + +#ifdef OPENFPM_PDATA + + std::string c2 = std::string("openfpm_io/test_data/gc_plot2_out_test.html"); + +#else + + std::string c2 = std::string("test_data/gc_plot2_out_test.html"); + +#endif + + //! [Producing lines] + + openfpm::vector<std::string> x; + openfpm::vector<openfpm::vector<double>> y; + + x.add("colum1"); + x.add("colum2"); + x.add("colum3"); + x.add("colum4"); + x.add("colum5"); + x.add("colum6"); + + // Each line can have multiple intervals or error bars + // The first number specify the bottom line + // The last three numbers specify the top line + error band (min, max) + // The middle 5 line specify the middle lines + one external error band + one internal error band + + y.add({0.10,0.20,0.19,0.22,0.195,0.215,0.35,0.34,0.36}); + y.add({0.11,0.21,0.18,0.22,0.19,0.215,0.36,0.35,0.37}); + y.add({0.12,0.22,0.21,0.23,0.215,0.225,0.35,0.34,0.36}); + y.add({0.15,0.25,0.20,0.26,0.22,0.255,0.36,0.35,0.37}); + y.add({0.09,0.29,0.25,0.30,0.26,0.295,0.35,0.34,0.36}); + y.add({0.08,0.28,0.27,0.29,0.275,0.285,0.36,0.35,0.37}); + + // Google charts options + GCoptions options; + + options.title = std::string("Example"); + options.yAxis = std::string("Y Axis"); + options.xAxis = std::string("X Axis"); + options.lineWidth = 1.0; + + GoogleChart cg; + cg.AddLinesGraph(x,y,options); + cg.write("gc_plot2_out.html"); + + //! [Producing lines] + + bool test = compare("gc_plot2_out.html",c2); + BOOST_REQUIRE_EQUAL(true,test); +} + +//! [Definition of a function] + +double f(double x) +{ + return x*x; +} + +//! [Definition of a function] + +BOOST_AUTO_TEST_CASE( plot_util ) +{ + Vcluster<> & v_cl = create_vcluster(); + + if (v_cl.getProcessUnitID() != 0) + return; + + //! [fill a vector] + + openfpm::vector<double> x; + + Fill1D(0.0,2.0,5,x); + + BOOST_REQUIRE_EQUAL(x.get(0),0.0); + BOOST_REQUIRE_EQUAL(x.get(1),0.5); + BOOST_REQUIRE_EQUAL(x.get(2),1.0); + BOOST_REQUIRE_EQUAL(x.get(3),1.5); + BOOST_REQUIRE_EQUAL(x.get(4),2.0); + + //! [fill a vector] + + x.clear(); + + //! [fill a vector with a function] + + Fill1D(0.0,2.0,5,x,f); + + BOOST_REQUIRE_EQUAL(x.get(0),0.0); + BOOST_REQUIRE_EQUAL(x.get(1),0.25); + BOOST_REQUIRE_EQUAL(x.get(2),1.0); + BOOST_REQUIRE_EQUAL(x.get(3),2.25); + BOOST_REQUIRE_EQUAL(x.get(4),4.0); + + //! [fill a vector function] +} + +BOOST_AUTO_TEST_SUITE_END() + +#endif /* OPENFPM_DATA_SRC_PLOT_PLOT_UNIT_TESTS_HPP_ */ diff --git a/src/Plot/util.hpp b/src/Plot/util.hpp new file mode 100644 index 0000000000000000000000000000000000000000..b9a53c529877493353f35f4e9f56d030e2425ba4 --- /dev/null +++ b/src/Plot/util.hpp @@ -0,0 +1,45 @@ +/* + * util.hpp + * + * Created on: Feb 23, 2016 + * Author: i-bird + */ + +#ifndef OPENFPM_IO_SRC_PLOT_UTIL_HPP_ +#define OPENFPM_IO_SRC_PLOT_UTIL_HPP_ + +/*! \brief It fill the vector x with function values + * + * ### Define a function + * \snippet Plot_unit_tests.hpp Definition of a function + * ### Example vector with points on a specified range + * \snippet Plot_unit_tests.hpp fill a vector with a function + * + */ +template<typename T> static inline void Fill1D(T start, T stop, size_t np, openfpm::vector<T> & x,T f(T x)) +{ + x.resize(np); + + T spacing = (stop - start) / (np - 1); + + for (size_t i = 0 ; i < np ; i++) + x.get(i) = f(start + i*spacing); +} + +/*! \brief It fill the vector x with uniformly distributed set of points + * + * ### Example vector with points on a specified range + * \snippet Plot_unit_tests.hpp fill a vector + * + */ +template<typename T> static inline void Fill1D(T start, T stop, size_t np, openfpm::vector<T> & x) +{ + x.resize(np); + + T spacing = (stop - start) / (np - 1); + + for (size_t i = 0 ; i < np ; i++) + x.get(i) = start + i*spacing; +} + +#endif /* OPENFPM_IO_SRC_PLOT_UTIL_HPP_ */ diff --git a/src/RawReader/InitGridWithPixel.hpp b/src/RawReader/InitGridWithPixel.hpp new file mode 100644 index 0000000000000000000000000000000000000000..c4acf96ca9c9cc3451b05fa8348cfcdcbe690fb3 --- /dev/null +++ b/src/RawReader/InitGridWithPixel.hpp @@ -0,0 +1,190 @@ +// +// Created by jstark on 2019-11-07. +// +/** + * @file InitGridWithPixel.hpp + * + * @brief Header file containing functions for loading pixel values from 2D image or 3D image stack (volume) stored + * in a binary file onto an openFPM grid. + * + * @details Can be run in parallel. + * + * @author Justina Stark & Pietro Incardona + * @date November 2019 - August 2020 + */ +#ifndef IMAGE_BASED_RECONSTRUCTION_GETINITIALGRID_HPP +#define IMAGE_BASED_RECONSTRUCTION_GETINITIALGRID_HPP + +#include <iostream> +#include <typeinfo> +#include <cmath> +#include <sys/stat.h> + +#include "Vector/vector_dist.hpp" +#include "Grid/grid_dist_id.hpp" +#include "data_type/aggregate.hpp" +#include "Decomposition/CartDecomposition.hpp" + +#include "level_set/redistancing_Sussman/HelpFunctionsForGrid.hpp" +typedef signed char BYTE; + +inline bool exists_test (const std::string& name) { + struct stat buffer; + return (stat (name.c_str(), &buffer) == 0); +} + + + +/**@brief Read the number of pixels per dimension from a csv-file in order to create a grid with the same size. + * + * @param path_to_file Std::string containing the path to the csv file that holds the image/volume size in + * #pixels per dimension. + * @return Std::vector containing the count of pixels for each dimension as it was read from the csv file. + */ +std::vector<int> get_size(const std::string & path_to_file) +{ + std::vector<int> stack_dimst_1d; + // check if file exists and stream input csv file + if(!exists_test(path_to_file)){ + std::cout << "------------------------------------------------------------------------" << std::endl; + std::cout << "Error: file " << path_to_file << " does not exist. Aborting..." << std::endl; + std::cout << "------------------------------------------------------------------------" << std::endl; + abort(); + } + std::ifstream file(path_to_file); + + + // get its size + std::streampos fileSize; + file.seekg(0, std::ios::end); + fileSize = file.tellg(); + file.seekg(0, std::ios::beg); + + // reserve capacity + stack_dimst_1d.reserve(fileSize); + + std::string field; + while ( getline(file, field) ) // 1 field per axis + { + std::istringstream iss(field); + int val; + iss >> val; + stack_dimst_1d.push_back(val); // add the #pixels for current axis to the array + } + + // reverse order to compensate reverse reading + std::reverse(std::begin(stack_dimst_1d), std::end(stack_dimst_1d)); + + return stack_dimst_1d; +} + + +/**@brief Converts the pixel values stored in a binary file into doubles and loads them onto an OpenFPM grid. + * + * @tparam Phi_0 Index of property in which pixel value should be stored. + * @tparam grid_type Type of OpenFPM grid. + * @param grid Grid of type grid_type, on which image / image-stack should be loaded. + * @param file_name Std::string containing the path + name of the binary file that stores the pixel values. + * @param stack_dims Size_t variable that contains the dimensionality of the image / image stack. Can be given + * manually or loaded from a csv file before (see: #get_size()) + */ +template <size_t Phi_0, typename grid_type> +void load_pixel_onto_grid(grid_type & grid, std::string file_name, std::vector <int> & stack_dims) +{ + constexpr size_t x = 0; + constexpr size_t y = 1; + constexpr size_t z = 2; + + // check if file exists and stream input file + if(!exists_test(file_name)){ + std::cout << "------------------------------------------------------------------------" << std::endl; + std::cout << "Error: file " << file_name << " does not exist. Aborting..." << std::endl; + std::cout << "------------------------------------------------------------------------" << std::endl; + abort(); + } + std::ifstream file_stream (file_name, std::ifstream::binary); + + auto & v_cl = create_vcluster(); + if (v_cl.rank() == 0) + { + for (int d = 0; d < grid_type::dims; d++) + { + std::cout << "# grid points in dimension " << d << " = " << grid.size(d) << std::endl; + } + } + + // assign pixel values to domain. For each pixel get factor_refinement number of grid points with corresponding value + auto dom = grid.getDomainIterator(); + std::vector<BYTE> pixel_line; // one x-line of the image stack which will be read + + size_t sz_img[grid_type::dims]; + for (int d = 0; d < grid_type::dims; d++) + { + sz_img[d] = stack_dims[d]; + } + grid_sm<grid_type::dims,void> ginfo_image(sz_img); // in order to get the image related key later on + + double refinement[grid_type::dims]; + for (int d = 0; d < grid_type::dims; d++) + { + refinement[d] = (double) grid.size(d) / (double)stack_dims[d]; // get the factor, by which the grid resolution differs from the image stack resolution + if (v_cl.rank() == 0) std::cout << "effective refinement in dimension " << d << " = " << refinement[d] << std::endl; + } + + while(dom.isNext()) + { + auto key = dom.get(); + auto gkey = grid.getGKey(key); + + // In case a patch starts within a group of nodes to which same pixel-value should be assigned, get the + // respective rest-offset + int rest_offset = (int) (fmod(gkey.get(0), refinement[x])); // get the remainder + + + // get l as the length of one x-line of the original image stack for the specific patch on the processor + auto & gbox = grid.getLocalGridsInfo(); + auto & DomBox = gbox.get(key.getSub()).Dbox; + size_t patch_size = DomBox.getHigh(0) - DomBox.getLow(0) + 1; + + size_t l = (size_t) ceil( (patch_size + rest_offset) / refinement[x]); + + // in case that the grid has a different resolution than the underlying image stack: + // create a key which is used to get the offset for the file reading + // the indices in this key are corrected by the refinement factor + for (int d = 0; d < grid_type::dims; d++) + { + gkey.set_d(d, floor(gkey.get(d) / refinement[d])); + } + + // the offset matches the pixel from the image stack to the corresponding current position of the iterator + // in the grid + size_t offset = ginfo_image.LinId(gkey); + file_stream.seekg(offset); // jump to the correct position in the file + + // prepare space for the pixel values of one x-line in the original image stack + pixel_line.resize(l); + // stream the file and fill pixel values into pixel_line + file_stream.read((char*) & pixel_line[0], l); + + // run over a whole grid-line in x and assign pixel values from pixel_line to grid nodes + // if the grid is finer in x as the image stack, the same pixel value from pixel_line is + // assigned refinement[x] times + for (int k = 0; k < patch_size; ++k) + { + auto key = dom.get(); + // get the correct index of the pixel to be read from pixel_line by considering a potential rest-offset, + // when the patch divides group of nodes that belong to the same pixel + size_t i = (size_t) floor((k + rest_offset) / refinement[x]); + grid.template get<Phi_0>(key) = (double) pixel_line[i]; + ++dom; + } + // now one grid line in x is finished and the iterator dom has advanced accordingly s.t. next loop continues + // with next line, meaning that y increased by 1 (or z respectivley, when y = ymax + 1) + } + + grid.template ghost_get<Phi_0>(); +} + + + +#endif //IMAGE_BASED_RECONSTRUCTION_GETINITIALGRID_HPP diff --git a/src/RawReader/RawReader.hpp b/src/RawReader/RawReader.hpp new file mode 100644 index 0000000000000000000000000000000000000000..706c84960ac1aa7568957df65fc9f31c5be1fc19 --- /dev/null +++ b/src/RawReader/RawReader.hpp @@ -0,0 +1,193 @@ +/*! \brief This class read a Grid raw data format + * + * A grid row data format is very simple. The first n numbers indicate the + * size in every dimension of the grid. The other is the data contained by the grid. + * In particular if we are in 3D and we are saving a 45x50x30 grid after the 3 numbers + * I am expecting 45x50x30 = 67500 objects of type T. There is no check the dimensionality + * is correct, neither the type is correct + * + * \tparam dim dimensionality of the grid + * \tparam T type of the grid + * + */ +#include <iostream> +#include <Grid/map_grid.hpp> +#include <fstream> + +#define FORTRAN_STYLE 1 +#define STRUCT_OF_ARRAY 2 + +/*! \brief This is the scalar case + * + * \tparam T scalar type + * + */ +template<unsigned int dim, typename Tg, typename Tr, unsigned int i> +struct meta_raw_read +{ + static inline void read(grid_cpu<dim,Tg> & gr,std::ifstream & raw) + { + auto it = gr.getIterator(); + + while (it.isNext()) + { + auto key = it.get(); + + raw.read((char *)&gr.template get<i>(key),sizeof(Tr)); + + ++it; + } + } +}; + +/*! \brief This is the vector case + * + * \tparam T vector type + * + */ +template<unsigned int dim, typename Tg, typename Tr ,unsigned int i, unsigned int nv> +struct meta_raw_read<dim,Tg,Tr[nv],i> +{ + static inline void read(grid_cpu<dim,Tg> & gr,std::ifstream & raw) + { + for (size_t k = 0 ; k < nv ; k++) + { + auto it = gr.getIterator(); + + while (it.isNext()) + { + auto key = it.get(); + + raw.read((char *)&gr.template get<i>(key)[k],sizeof(Tr)); + + ++it; + } + } + } +}; + +/*! \brief this class is a functor for "for_each" algorithm + * + * This class is a functor for "for_each" algorithm. For each + * element of the boost::vector the operator() is called. + * Is mainly used to read each property + * + * \tparam ele_g element that store the grid and its attributes + * \param St type of space where the grid live + * + */ +template<unsigned int dim, typename Tg> +struct raw_read +{ + //! Grid out + grid_cpu<dim,Tg> & gr; + + //! File stream + std::ifstream & fl; + + /*! \brief constructor + * + * \param gr grid to fill + * \param fl file from where to read + * + */ + raw_read(grid_cpu<dim,Tg> & gr,std::ifstream & fl) + :gr(gr),fl(fl) + {}; + + //! It read for each property + template<typename T> + void operator()(T& t) const + { + typedef typename boost::mpl::at<typename Tg::type,boost::mpl::int_<T::value>>::type Tr; + + meta_raw_read<dim,Tg,Tr,T::value>::read(gr,fl); + } +}; + +template <unsigned int dim, typename T, typename idx_type> +class GridRawReader +{ +public: + + //! Constructor + GridRawReader() {}; + + + /*! \brief Read a raw grid + * + * \param file raw file to read + * \param gr grid to fill + * \param opt option (FORTRAN_STYLE) + * \param skip skip N byte + * + */ + bool read(std::string file, grid_cpu<dim,T> & gr, size_t opt = 0, size_t skip = 0) + { + idx_type tmp; + std::ifstream raw; + raw.open (file, std::ios::binary ); + + if (raw.is_open() == false) + { + std::cerr << __FILE__ << ":" << __LINE__ << " error in opening the file: " << file << std::endl; + return false; + } + + // get length of file: + raw.seekg (0, std::ios::end); + size_t length = raw.tellg(); + raw.seekg (skip, std::ios::beg); + + if (opt & FORTRAN_STYLE) + raw.read((char *)&tmp,sizeof(idx_type)); + + size_t sz[dim]; + + for (size_t i = 0 ; i < dim ; i++) + { + sz[i] = 0; + raw.read((char *)&sz[i],sizeof(idx_type)); + } + + if (opt & FORTRAN_STYLE) + raw.read((char *)&tmp,sizeof(idx_type)); + + if (opt & FORTRAN_STYLE) + raw.read((char *)&tmp,sizeof(idx_type)); + + grid_sm<dim,void> gs(sz); + + size_t offset = 0; + if (opt & FORTRAN_STYLE) + offset += 2*sizeof(idx_type)*2; + + // Check the the file size make sense + if (length - dim*sizeof(idx_type) - offset - skip != gs.size()*sizeof(T) ) + { + std::cout << __FILE__ << ":" << __LINE__ << " Error the size of the raw file does not match with the calculated one" << std::endl; + return false; + } + + gr.setMemory(); + + // resize the grid + gr.resize(sz); + + if (!(opt & STRUCT_OF_ARRAY)) + { + // read the data + raw.read((char *)gr.getPointer(),gr.size()*sizeof(T)); + raw.close(); + } + else + { + // for each property + raw_read<dim,T> rr(gr,raw); + + boost::mpl::for_each< boost::mpl::range_c<int,0, T::max_prop> >(rr); + } + + return true; + } +}; diff --git a/src/RawReader/RawReader_unit_tests.hpp b/src/RawReader/RawReader_unit_tests.hpp new file mode 100644 index 0000000000000000000000000000000000000000..97443d04eadb4608b7b488ebe6bcfff826698eef --- /dev/null +++ b/src/RawReader/RawReader_unit_tests.hpp @@ -0,0 +1,64 @@ +/* + * RawReader_unit_tests.hpp + * + * Created on: April 16, 2016 + * Author: i-bird + */ + +#ifndef OPENFPM_IO_RAW_READER_UNIT_TESTS_HPP_ +#define OPENFPM_IO_RAW_READER_UNIT_TESTS_HPP_ + +#include "RawReader.hpp" + +BOOST_AUTO_TEST_SUITE( raw_reader_unit_test ) + + +BOOST_AUTO_TEST_CASE( raw_reader_read_test ) +{ + Vcluster<> & v_cl = create_vcluster(); + + if (v_cl.getProcessUnitID() != 0) + return; + +#ifdef OPENFPM_PDATA + + if (v_cl.rank() != 0) {return;} + std::string c2 = std::string("openfpm_io/test_data/raw_read_sv_test.bin"); + +#else + + std::string c2 = std::string("test_data/raw_read_sv_test.bin"); + +#endif + + grid_cpu<3,aggregate<float,float[3]>> read_bin_test; + + GridRawReader<3,aggregate<float,float[3]>,int> rr; + +#ifndef SE_CLASS3 + + rr.read(c2,read_bin_test,FORTRAN_STYLE | STRUCT_OF_ARRAY,12); + + auto it = read_bin_test.getIterator(); + + while (it.isNext()) + { + auto key = it.get(); + + BOOST_REQUIRE_EQUAL(read_bin_test.template get<0>(key),1.5f); + + BOOST_REQUIRE_EQUAL(read_bin_test.template get<1>(key)[0],1.5f); + BOOST_REQUIRE_EQUAL(read_bin_test.template get<1>(key)[1],2.5f); + BOOST_REQUIRE_EQUAL(read_bin_test.template get<1>(key)[2],3.5f); + + ++it; + } + +#endif +} + + + +BOOST_AUTO_TEST_SUITE_END() + +#endif /* OPENFPM_DATA_SRC_PLOT_PLOT_UNIT_TESTS_HPP_ */ diff --git a/src/SparseGridGpu/SparseGridGpu.hpp b/src/SparseGridGpu/SparseGridGpu.hpp index 00a31a272a0d8a56fc5e333fbbab9bb64b2cdc67..1d6f32b7a979ed16d4ac0eb067116432de165d96 100644 --- a/src/SparseGridGpu/SparseGridGpu.hpp +++ b/src/SparseGridGpu/SparseGridGpu.hpp @@ -718,6 +718,8 @@ public: typedef sparse_grid_gpu_index<self> base_key; + typedef indexT indexT_; + typedef decltype(std::declval<BMG>().toKernel().insertBlock(0)) insert_encap; /*! \brief return the size of the grid @@ -2775,12 +2777,37 @@ public: typedef BlockMapGpu<AggregateInternalT, threadBlockSize, indexT, layout_base> BMG; - auto block_data = this->insertBlockFlush(block_id); + auto block_data = BlockMapGpu<AggregateInternalT, threadBlockSize, indexT, layout_base>::insertBlockFlush(block_id); block_data.template get<BMG::pMask>()[local_id] = 1; return block_data.template get<p>()[local_id]; } + /*! \brief Insert the point on host side and flush directly + * + * First you have to move everything on host with deviceToHost, insertFlush and than move to GPU again + * + * \param grid point where to insert + * + * \return a reference to the data to fill + * + * + */ + template<typename CoordT> + auto insertBlockFlush(const grid_key_dx<dim,CoordT> &coord, indexT & local_id) -> decltype(BlockMapGpu<AggregateInternalT, threadBlockSize, indexT, layout_base>::insertBlockFlush(0)) + { + auto lin = gridGeometry.LinId(coord); + indexT block_id = lin / blockSize; + local_id = lin % blockSize; + + typedef BlockMapGpu<AggregateInternalT, threadBlockSize, indexT, layout_base> BMG; + + auto block_data = BlockMapGpu<AggregateInternalT, threadBlockSize, indexT, layout_base>::insertBlockFlush(block_id); + block_data.template get<BMG::pMask>()[local_id] = 1; + + return block_data; + } + /*! \brief Insert the point on host side and flush directly * * First you have to move everything on host with deviceToHost, insertFlush and than move to GPU again @@ -2801,7 +2828,7 @@ public: typedef BlockMapGpu<AggregateInternalT, threadBlockSize, indexT, layout_base> BMG; - auto block_data = this->insertBlockFlush(block_id); + auto block_data = BlockMapGpu<AggregateInternalT, threadBlockSize, indexT, layout_base>::insertBlockFlush(block_id); block_data.template get<BMG::pMask>()[local_id] = 1; return block_data.template get<p>()[local_id]; diff --git a/src/TiffWriter.hpp b/src/TiffWriter.hpp new file mode 100644 index 0000000000000000000000000000000000000000..241eef6e79cecaa6f70ee9fdcbe180001a783d26 --- /dev/null +++ b/src/TiffWriter.hpp @@ -0,0 +1,111 @@ +#ifndef TIFFWRITER_HPP +#define TIFFWRITER_HPP + +#include <iostream> +#include "tiffio.h" +#include "map_grid.hpp" +#include <string> + +/*! \brief This class is able to save grid into tiff files + * + * This class is able to save grid into tiff files + * + */ + +template<unsigned int dim, typename T> +class TiffWriter +{ + /*! \brief Save grid into tiff files + * + * Save grid into tiff files + * + */ + + template<typename grid, typename Mem> int write(grid data, std::string file) + { + // Grid can have several properties we can save only scalar fields + // for each properties save one scalar fields + + // Tiff files can be saved up to 5D + + if (dim > 5) + { + std::cerr << "Error Tiff writer support until 5D images" << "\n"; + } + + // Open the tiff image + + uint32 width; + uint32 height; + TIFF *tif = TIFFOpen(file.c_str(),"w"); + + // if the file is open + + if(tif) + { + // set width and height for 2D + + width = data.getGrid().size(0); + height = data.getGrid().size(1); + + TIFFSetField(tif,TIFFTAG_IMAGEWIDTH, &width); + TIFFSetField(tif,TIFFTAG_IMAGELENGTH, &height); + + // Create the tiff line, in case the grid is CPU, we have only + // one property and is a scalar, we can directly copy the line + + typename boost::fusion::result_of::at<T::type,0>::type first_element_type; + + if (typeid(grid).name() == "grid_cpu" && T::num_prop == 1 && boost::is_array<first_element_type>::type::value == true) + { + // Get the grid key iterator + + grid_key_dx_iterator<dim> key = data.getIterator(); + + // write all lines + + for(int i = 0; i < height ; i++) + { + // select the correct lines + + key.set(1,i); + + // we have only one scalar properties, get the buffer pointer + void * buf = &data.template get<0>(key); + + TIFFWriteScanline(tif,buf,i, 0); + } + } + else + { + // we have to create the a scan line for each properties and index array + // each property and index array became a channel + + // Get the grid key iterator + + grid_key_dx_iterator<dim> key = data.getIterator(); + + // count how many properties and how many indexes we have + + const int n_prp = total_prop<T>; + + // write all lines + + for(int i = 0; i < height ; i++) + { + // select the correct lines + + key.set(1,i); + + // we have only one scalar properties, get the buffer pointer + void * buf = &data.template get<0>(key); + + TIFFWriteScanline(tif,buf,i, 0); + } + } + } + } + +}; + +#endif diff --git a/src/VTKWriter/VTKWriter.hpp b/src/VTKWriter/VTKWriter.hpp new file mode 100644 index 0000000000000000000000000000000000000000..a5bfcd5bca4fcd12a7b38f37bb8474e2dd7326f6 --- /dev/null +++ b/src/VTKWriter/VTKWriter.hpp @@ -0,0 +1,164 @@ +/* + * VTKWriter.hpp + * + * Created on: Dec 15, 2014 + * Author: Pietro Incardona + */ + +#ifndef VTKWRITER_HPP_ +#define VTKWRITER_HPP_ + +#include "Graph/map_graph.hpp" +#include <iostream> +#include <boost/fusion/include/mpl.hpp> +#include <boost/fusion/include/for_each.hpp> +#include <fstream> +#include "util/common.hpp" + +/*! \brief Get the type Old + * + * It convert T to a string identify the corrispondent type in VTK format + * + */ + +template <typename T> std::string getType() +{ + // Create a property string based on the type of the property + if (std::is_same<T,float>::value) + return "float"; + else if (std::is_same<T,double>::value) + return "double"; + else if (std::is_same<T,char>::value) + return "char"; + else if (std::is_same<T,unsigned char>::value) + return "unsigned_char"; + else if (std::is_same<T,short>::value) + return "short"; + else if (std::is_same<T,unsigned short>::value) + return "unsigned_short"; + else if (std::is_same<T,int>::value) + return "int"; + else if (std::is_same<T,unsigned int>::value) + return "unsigned_int"; + else if (std::is_same<T,long int>::value) + return "int"; + else if (std::is_same<T,unsigned long int>::value ) + return "unsigned_int"; + else if (std::is_same<T,bool>::value ) + return "bit"; + + return ""; +} + + + +/*! \brief Get the type + * + * It convert T to a string identify the corrispondent type in VTK format + * + */ + +template <typename T> std::string getTypeNew() +{ + // Create a property string based on the type of the property + if (std::is_same<T,float>::value) + return "Float32"; + else if (std::is_same<T,double>::value) + return "Float64"; + else if (std::is_same<T,char>::value) + return "Int8"; + else if (std::is_same<T,unsigned char>::value) + return "Uint8"; + else if (std::is_same<T,short>::value) + return "Int16"; + else if (std::is_same<T,unsigned short>::value) + return "Uint16"; + else if (std::is_same<T,int>::value) + return "Int32"; + else if (std::is_same<T,unsigned int>::value) + return "Uint32"; + else if (std::is_same<T,long int>::value) + return "Int64"; + else if (std::is_same<T,unsigned long int>::value ) + return "Uint64"; + else if (std::is_same<T,bool>::value ) + return "Int8"; + + return ""; +} + +/*! \brief Set a conversion map between A and B + * + * Convert A to B + * + * \tparam B destination type + * \tparam A source type + * + */ + +template<typename A> +class convert +{ +public: + template<typename B> static B to(const A & data) + { + return static_cast<B>(data); + } +}; + +/*! \brief Partial specialization when A is a string + * + * + */ + +template<> +class convert<std::string> +{ +public: + template<typename B> static B to(const std::string & data) + { + return atof(data.c_str()); + } +}; + +/*! \brief It specify the VTK output file type + * + */ + +enum file_type +{ + BINARY, + ASCII +}; + +#define VTK_GRAPH 1 +#define VECTOR_BOX 2 +#define VECTOR_GRIDS 3 +#define VECTOR_ST_GRIDS 4 +#define DIST_GRAPH 5 +#define VECTOR_POINTS 6 +#define VTK_WRITER 0x10000 +#define FORMAT_ASCII 0x0 +#define FORMAT_BINARY 0x10000000 +#define PRINT_GHOST 1 + +template <typename Object, unsigned int imp> +class VTKWriter +{ + +}; + +#include "VTKWriter_graph.hpp" +#include "VTKWriter_vector_box.hpp" +#include "VTKWriter_grids.hpp" +#include "VTKWriter_grids_st.hpp" + +// This is only active if MPI compiler work + +#ifndef DISABLE_MPI_WRITTERS +#include "VTKWriter_dist_graph.hpp" +#endif + +#include "VTKWriter_point_set.hpp" + +#endif /* VTKWRITER_HPP_ */ diff --git a/src/VTKWriter/VTKWriter_dist_graph.hpp b/src/VTKWriter/VTKWriter_dist_graph.hpp new file mode 100644 index 0000000000000000000000000000000000000000..b059be9336c3135d857fd35e194d8475801fe3d4 --- /dev/null +++ b/src/VTKWriter/VTKWriter_dist_graph.hpp @@ -0,0 +1,1289 @@ +/* + * VTKWriter_graph.hpp + * + * Created on: May 5, 2015 + * Author: Pietro Incardona + */ + +#ifndef VTKWRITER_DIST_GRAPH_HPP_ +#define VTKWRITER_DIST_GRAPH_HPP_ + +#include "VCluster/VCluster.hpp" + +/*! Property data store for scalar and vector + * + */ +template<bool is_array> +struct vtk_dist_vertex_node_array_scalar_selector +{ + /*! /brief Print the geometric informations in case it is not an array + * + * \tparam T Type of the vertex + * \tparam ele_v Attribute element to check + * \tparam G Graph of reference + * \tparam s_type Vertex spatial type information + * + * \param vo Vertex object container + * \param x Array to store geometric informations + * \param z_set Value set to true id z axis is in use + */ + template<typename T, typename ele_v, typename G, typename s_type> + static inline void move(typename G::V_container &vo, s_type (&x)[3], bool &z_set) + { + if (G::V_type::attributes::name[T::value] == "x") + { + x[0] = convert<typename boost::remove_reference<decltype(vo.template get<T::value>())>::type>::template to<s_type>(vo.template get<T::value>()); + } + else if (G::V_type::attributes::name[T::value] == "y") + { + x[1] = convert<typename boost::remove_reference<decltype(vo.template get<T::value>())>::type>::template to<s_type>(vo.template get<T::value>()); + } + else if (G::V_type::attributes::name[T::value] == "z") + { + x[2] = convert<typename boost::remove_reference<decltype(vo.template get<T::value>())>::type>::template to<s_type>(vo.template get<T::value>()); + z_set = true; + } + } +}; + +/*! Template specialization in the case of array type attribute + * + */ +template<> +struct vtk_dist_vertex_node_array_scalar_selector<true> +{ + /*! \brief Store the geometric informations in case it is an array + * + * \tparam T Type of the vertex + * \tparam ele_v Attribute element to check + * \tparam G Graph of reference + * \tparam s_type Vertex spatial type information + * + * \param vo Vertex object container + * \param x Array to store geometric informations + * \param z_set Value set to true id z axis is in use + */ + template<typename T, typename ele_v, typename G, typename s_type> + static inline void move(typename G::V_container &vo, s_type (&x)[3], bool &z_set) + { + if (std::extent<ele_v>::value == 3) + z_set = true; + + for (size_t i = 0; i < std::extent<ele_v>::value; i++) + x[i] = convert<typename boost::remove_reference<decltype(vo.template get<T::value>()[i])>::type>::template to<s_type>(vo.template get<T::value>()[i]); + + } +}; + +/*! \brief this class is a functor for "for_each" algorithm + * + * This class is a functor for "for_each" algorithm. For each + * element of the boost::vector the operator() is called. + * Is mainly used to create a string containing all the vertex + * properties + * + * \tparam G graph type + * \tparam attr has the vertex attributes + * + */ + +template<typename G, bool attr> +struct vtk_dist_vertex_node +{ + //! Vertex spatial type information + typedef typename G::V_type::s_type s_type; + + //! indicate if the z coordinate has been set + bool z_set; + + //! coordinate of the vertex node + s_type (&x)[3]; + + //! Vertex object container + typename G::V_container & vo; + + //! vertex position converted to string + std::string & v_node; + + /*! \brief Constructor + * + * Create a vertex properties list + * + * \param v_node std::string that is filled with the graph properties in the GraphML format + * \param n_obj object container to access its properties for example encapc<...> + * \param x position of the vertex + * + */ + vtk_dist_vertex_node(std::string & v_node, typename G::V_container & n_obj, s_type (&x)[3]) + :z_set(false),x(x), vo(n_obj), v_node(v_node) + { + } + + //! \brief Write collected information + void write() + { + v_node += std::to_string(x[0]) + " " + std::to_string(x[1]) + " " + std::to_string(x[2]) + "\n"; + } + + /*! \brief It call the functor for each attribute + * + * \param t attribute id + * + */ + template<typename T> + void operator()(T& t) + { + typedef typename boost::mpl::at<typename G::V_type::type, boost::mpl::int_<T::value>>::type ele_v; + + // if the attribute name is x y or z, create a string with the value of the properties and store it + + vtk_dist_vertex_node_array_scalar_selector<std::is_array<ele_v>::value>::template move<T, ele_v, G, s_type>(vo, x, z_set); + + } +}; + +/*! \brief this class is a functor for "for_each" algorithm + * + * This class is a functor for "for_each" algorithm. For each + * element of the boost::vector the operator() is called. + * Is mainly used to create a string containing all the vertex + * properties + * + * Specialization when we do not have vertex attributes + * + * \tparam G graph type + * + */ + +template<typename G> +struct vtk_dist_vertex_node<G, false> +{ + //! Vertex object container + typename G::V_container & vo; + + //! vertex position string + std::string & v_node; + + /*! \brief Constructor + * + * Create a vertex properties list + * + * \param v_node std::string that is filled with the graph properties in the GraphML format + * \param n_obj object container to access its properties for example encapc<...> + * + */ + vtk_dist_vertex_node(std::string & v_node, typename G::V_container & n_obj) : + vo(n_obj), v_node(v_node) + { + } + + /*! \brief It call the functor for each attribute + * + * \param t attribute id + * + */ + template<typename T> + void operator()(T& t) + { + v_node += "0 0 0\n"; + } +}; + +/*! \brief this class is a functor for "for_each" algorithm + * + * This class is a functor for "for_each" algorithm. For each + * element of the boost::vector the operator() is called. + * Is mainly used to create a string containing all the edge + * properties + * + */ + +template<typename G> +struct vtk_dist_edge_node +{ + //! Vertex object container + typename G::E_container & vo; + + //! edge node string + std::string & e_node; + + /*! \brief Constructor + * + * Create an edge node + * + * \param e_node std::string that is filled with the graph properties in the GraphML format + * \param n_obj object container to access the object properties for example encapc<...> + * + */ + vtk_dist_edge_node(std::string & e_node, typename G::E_container & n_obj) + :vo(n_obj), e_node(e_node) + { + } + + /*! \brief Create an edge + * + * \param vc node id + * \param s source node + * \param d destination node + * + */ + void new_node(size_t vc, size_t s, size_t d) + { + // start a new node + e_node += "2 " + std::to_string(s) + " " + std::to_string(d) + "\n"; + } +}; + +/*! \brief Property writer for scalar and vector + * + */ +template<bool is_array> +struct dist_prop_output_array_scalar_selector_vertex +{ + /*! \brief Writer in case the property is not an array + * + * \tparam ele_v Property element + * \tparam Graph Graph of reference + * \tparam i Property id + * + * \param v_out Buffer to write into + * \param g Graph + * \param p Property id + */ + template<typename ele_v, typename Graph, unsigned int i> + static inline void write(std::string &v_out, const Graph &g, size_t p) + { + v_out += std::to_string(g.vertex(p).template get<i>()) + "\n"; + } +}; + +/*! \brief Property writer for vector + * + */ +template<> +struct dist_prop_output_array_scalar_selector_vertex<true> +{ + /*! \brief Writer in case the property is an array + * + * \tparam ele_v Property element + * \tparam Graph Graph of reference + * \tparam i Property id + * + * \param v_out Buffer to write into + * \param g Graph + * \param p Property id + */ + template<typename ele_v, typename Graph, unsigned int i> + static inline void write(std::string &v_out, const Graph &g, size_t p) + { + for (size_t j = 0; j < 2; j++) + { + v_out += std::to_string(g.vertex(p).template get<i>()[j]) + " "; + } + + if (std::extent<ele_v>::value == 2) + v_out += "0"; + else + v_out += std::to_string(g.vertex(p).template get<i>()[2]); + + v_out += "\n"; + } +}; + +/*! \brief Property writer for scalar and vector + * + */ +template<bool is_array> +struct dist_prop_output_array_scalar_selector_edge +{ + /*! \brief Writer in case the property is not an array + * + * \tparam ele_v Property element + * \tparam Graph Graph of reference + * \tparam i Property id for the edge + * + * \param v_out Buffer to write into + * \param g Graph + * \param edge edge object + */ + template<typename ele_v, typename Graph, unsigned int i> + static inline void write(std::string &v_out, const Graph &g, const typename Graph::E_container &edge) + { + v_out += std::to_string(edge.template get<i>()) + "\n"; + } +}; + +/*! \brief Property writer for vector + * + */ +template<> +struct dist_prop_output_array_scalar_selector_edge<true> +{ + /*! \brief Writer in case the property is an array + * + * \tparam ele_v Property element + * \tparam Graph Graph of reference + * \tparam i Property id + * + * \param v_out Buffer to write into + * \param g Graph + * \param edge edge object + */ + template<typename ele_v, typename Graph, unsigned int i> + static inline void write(std::string &v_out, const Graph &g, const typename Graph::E_container &edge) + { + for (size_t j = 0; j < 2; j++) + { + v_out += std::to_string(edge.template get<i>()[j]) + " "; + } + + if (std::extent<ele_v>::value == 2) + v_out += "0"; + else + v_out += std::to_string(edge.template get<i>()[2]); + + v_out += "\n"; + } +}; + +/*! \brief Property writer for scalar and vector, it fill the vertex data (needed for edge representation in vtk) + * + */ +template<bool is_array> +struct dist_prop_output_array_scalar_selector_edge_fill_vertex +{ + /*! \brief Writer in case the property is not an array + * + * \param v_out Buffer to write into + */ + static inline void write(std::string &v_out) + { + v_out += "0\n"; + } +}; + +/*! \brief Property writer for vector + * + */ +template<> +struct dist_prop_output_array_scalar_selector_edge_fill_vertex<true> +{ + /*! \brief Writer in case the property is an array + * + * \param v_out Buffer to write into + */ + static inline void write(std::string &v_out) + { + v_out += "0 0 0\n"; + } +}; + +/*! \brief This class specialize functions in the case the type T + * has or not defined attributes + * + * In C++ partial specialization of a function is not allowed so we have to + * encapsulate this function in a class + * + * \tparam has_attributes parameter that specialize the function in case the vertex + * define or not attributes name + * + * \tparam Graph type of graph we are processing + * \tparam i the property we are going to write + * + */ + +template<bool has_attributes, typename Graph, unsigned int i> +class dist_prop_output +{ +public: + + /*! \brief For each vertex set the value + * + * + * \param g graph to output + * + * \return get the point data string + * + */ + static std::string get_point_data(const Graph & g) + { + //! vertex node output string + std::string v_out; + + //! Get a vertex iterator + auto it = g.getVertexIterator(); + + // if there is the next element + while (it.isNext()) + { + typedef typename boost::mpl::at<typename Graph::V_type::type, boost::mpl::int_<i>>::type ele_v; + dist_prop_output_array_scalar_selector_vertex<std::is_array<ele_v>::value>::template write<ele_v, Graph, i>(v_out, g, it.get()); + + // increment the iterator and counter + ++it; + } + + return v_out; + } + + /*! \brief For each edge set the value, set 1 on vertices, needed by vtk file format + * + * \param g graph to output + * + * \return the cell-data string + * + */ + + static std::string get_cell_data(const Graph & g) + { + //! vertex node output string + std::string e_out; + + //! Get a vertex iterator + auto it_v = g.getVertexIterator(); + + // if there is the next element + while (it_v.isNext()) + { + // Print the property + typedef typename boost::mpl::at<typename Graph::E_type::type, boost::mpl::int_<i>>::type ele_v; + dist_prop_output_array_scalar_selector_edge_fill_vertex<std::is_array<ele_v>::value>::write(e_out); + + // increment the iterator and counter + ++it_v; + } + + //! Get an edge iterator + auto it_e = g.getEdgeIterator(); + + // if there is the next element + while (it_e.isNext()) + { + typedef typename boost::mpl::at<typename Graph::E_type::type, boost::mpl::int_<i>>::type ele_v; + dist_prop_output_array_scalar_selector_edge<std::is_array<ele_v>::value>::template write<ele_v, Graph, i>(e_out, g, g.edge(it_e.get())); + + // increment the iterator and counter + ++it_e; + } + + return e_out; + } + + /*! \brief Given a Graph return the point data header for a typename T + * + * \param prop property id + * + * \return the string with the property header + * + */ + static std::string get_point_property_header(size_t prop) + { + //! vertex node output string + std::string v_out; + + // Type of the property + std::string type; + + typedef typename boost::mpl::at<typename Graph::V_type::type, boost::mpl::int_<i>>::type T; + + // Check if T is a supported format + // for now we support only scalar of native type + if (std::is_array<T>::value == true && std::is_array<typename std::remove_extent<T>::type>::value == false) + { + //Get type of the property + type = getType<typename std::remove_all_extents<T>::type>(); + + // if the type is not supported return + if (type.size() == 0) + return v_out; + + // Create point data properties + v_out += "VECTORS " + get_attributes_vertex() + " " + type + "\n"; + } + else + { + type = getType<T>(); + + // if the type is not supported return + if (type.size() == 0) + return v_out; + + // Create point data properties + v_out += "SCALARS " + get_attributes_vertex() + " " + type + "\n"; + + // Default lookup table + v_out += "LOOKUP_TABLE default\n"; + + } + + // return the vertex list + return v_out; + } + + /*! \brief Given a Graph return the cell data header for a typename T + * + * \param prop property number + * + * \return the cell string header + * + */ + static std::string get_cell_property_header(size_t prop) + { + //! edge node output string + std::string e_out; + + // Type of the property + std::string type; + + typedef typename boost::mpl::at<typename Graph::E_type::type, boost::mpl::int_<i>>::type T; + + // Check if T is a supported format + // for now we support only scalar of native type + if (std::is_array<T>::value == true && std::is_array<typename std::remove_extent<T>::type>::value == false) + { + //Get type of the property + type = getType<typename std::remove_all_extents<T>::type>(); + + // if the type is not supported return + if (type.size() == 0) + return e_out; + + // Create point data properties + e_out += "VECTORS " + get_attributes_edge() + " " + type + "\n"; + } + else + { + type = getType<T>(); + + // if the type is not supported return + if (type.size() == 0) + return e_out; + + // Create point data properties + e_out += "SCALARS " + get_attributes_edge() + " " + type + "\n"; + + // Default lookup table + e_out += "LOOKUP_TABLE default\n"; + + } + + // return the vertex list + return e_out; + } + + /*! \brief Get the attributes name for vertex + * + * \return string with the attribute name + * + */ + static std::string get_attributes_vertex() + { + return Graph::V_type::attributes::name[i]; + } + + /*! \brief Get the attributes name for edge + * + * \return the attribute name for the edge + * + */ + static std::string get_attributes_edge() + { + return Graph::E_type::attributes::name[i]; + } +}; + +/*! \brief This class specialize functions in the case the type T + * has not defined attributes + * + * In C++ partial specialization of a function is not allowed so we have to + * encapsulate this function in a class + * + * \tparam has_attributes parameter that specialize the function in case the vertex + * define or not attributes name + * + * \tparam i id of the property we are going to write + * + */ + +template<typename Graph, unsigned int i> +class dist_prop_output<false, Graph, i> +{ + /*! \brief For each vertex output the property string + * + * \param g graph to print + * + * \return the string with the point data + * + */ + static std::string get_point_data(Graph & g) + { + //! vertex node output string + std::string v_out; + + //! Get a vertex iterator + auto it = g.getVertexIterator(); + + // if there is the next element + while (it.isNext()) + { + // Print the property + v_out += std::to_string(g.vertex(it.get()).template get<i>()) + "\n"; + + // increment the iterator and counter + ++it; + } + + return v_out; + } + + /*! \brief For each edge output the property string + * + * \param g graph to print + * + * \return the string containing cell-data + * + */ + static std::string get_cell_data(const Graph & g) + { + //! vertex node output string + std::string e_out; + + //! Get a vertex iterator + auto it_v = g.getVertexIterator(); + + // if there is the next element + while (it_v.isNext()) + { + // Print the property + e_out += std::to_string(0) + "\n"; + + // increment the iterator and counter + ++it_v; + } + + //! Get an edge iterator + auto it_e = g.getEdgeIterator(); + + // if there is the next element + while (it_e.isNext()) + { + // Print the property + e_out += std::to_string(g.edge(it_e.get()).template get<i>()) + "\n"; + + // increment the iterator and counter + ++it_e; + } + + return e_out; + } + + /*! \brief Given a Graph return the point data header for a typename T + * + * \param prop id of the property + * + * \return the string containing the header + * + */ + static std::string get_point_property_header(size_t prop) + { + //! vertex node output string + std::string v_out; + + // Check if T is a supported format + // for now we support only scalar of native type + + std::string type = getType<boost::fusion::result_of::at<typename Graph::V_type::type, boost::mpl::int_<i>>>("attr" + std::to_string(prop)); + + // if the type is not supported return + if (type.size() == 0) + { + return v_out; + } + + // Create point data properties + v_out += "SCALARS " + get_attributes_vertex() + " " + type + "\n"; + + // Default lookup table + v_out += "LOOKUP_TABLE default\n"; + + // return the vertex list + return v_out; + } + + /*! \brief Given a Graph return the cell data header for a typename T + * + * \param prop property id + * + * \return the string containing the header + * + */ + static std::string get_cell_property_header(size_t prop) + { + //! edge node output string + std::string e_out; + + // Type of the property + std::string type; + + typedef typename boost::mpl::at<typename Graph::E_type::type, boost::mpl::int_<i>>::type T; + + // Check if T is a supported format + // for now we support only scalar of native type + if (std::is_array<T>::value == true && std::is_array<typename std::remove_extent<T>::type>::value == false) + { + //Get type of the property + type = getType<typename std::remove_all_extents<T>::type>(); + + // if the type is not supported return + if (type.size() == 0) + return e_out; + + // Create point data properties + e_out += "VECTORS " + get_attributes_edge() + " " + type + "\n"; + } + else + { + type = getType<T>(); + + // if the type is not supported return + if (type.size() == 0) + return e_out; + + // Create point data properties + e_out += "SCALARS " + get_attributes_edge() + " " + type + "\n"; + + // Default lookup table + e_out += "LOOKUP_TABLE default\n"; + + } + + // return the vertex list + return e_out; + } + + /*! \brief Get the attributes name for vertex + * + * \return the string containing the vertex attribute name + * + */ + static std::string get_attributes_vertex() + { + return Graph::V_type::attributes::name[i]; + } + + /*! \brief Get the attributes name for edge + * + * \return the edge attribute name + * + */ + static std::string get_attributes_edge() + { + return Graph::E_type::attributes::name[i]; + } +}; + +/*! \brief this class is a functor for "for_each" algorithm + * + * This class is a functor for "for_each" algorithm. For each + * element of the boost::vector the operator() is called. + * Is mainly used to produce at output for each property + * + * \tparam Graph graph we are processing + * + * \param dim Dimensionality + * \param S type of grid + * + */ + +template<typename Graph> +struct dist_prop_out_vertex +{ + //! property output string + std::string & v_out; + + //! Graph that we are processing + const Graph & g; + + /*! \brief constructor + * + * \param v_out string to fill with the vertex properties + * \param g graph to process + * + */ + dist_prop_out_vertex(std::string & v_out, const Graph & g) + :v_out(v_out), g(g) + { + } + + /*! \brief It produce an output for each property + * + * \param t property id + * + */ + template<typename T> + void operator()(T& t) const + { + // actual string size + size_t sz = v_out.size(); + + // Produce the point properties header + v_out += dist_prop_output<has_attributes<typename Graph::V_type>::value, Graph, T::value>::get_point_property_header(t); + + // If the output has changed, we have to write the properties + if (v_out.size() != sz) + { + std::string attr = dist_prop_output<has_attributes<typename Graph::V_type>::value, Graph, T::value>::get_attributes_vertex(); + + // Produce point data + v_out += dist_prop_output<has_attributes<typename Graph::V_type>::value, Graph, T::value>::get_point_data(g); + } + } +}; + +/*! \brief this class is a functor for "for_each" algorithm + * + * This class is a functor for "for_each" algorithm. For each + * element of the boost::vector the operator() is called. + * Is mainly used to produce at output for each property + * + * \tparam Graph graph we are processing + * + * \param dim Dimensionality + * \param S type of grid + * + */ + +template<typename Graph> +struct dist_prop_out_edge +{ + //! property output string + std::string & e_out; + + //! Graph that we are processing + const Graph & g; + + /*! \brief constructor + * + * \param e_out string to fill with the edge properties + * \param g graph to write + * + */ + dist_prop_out_edge(std::string & e_out, const Graph & g) : + e_out(e_out), g(g) + {}; + + /*! \brief It produce an output for each property + * + * \param t index property + * + */ + template<typename T> + void operator()(T& t) const + { + // actual string size + size_t sz = e_out.size(); + + // Produce the point properties header + e_out += dist_prop_output<has_attributes<typename Graph::E_type>::value, Graph, T::value>::get_cell_property_header(t); + + // If the output has changed, we have to write the properties + if (e_out.size() != sz) + { + std::string attr = dist_prop_output<has_attributes<typename Graph::E_type>::value, Graph, T::value>::get_attributes_edge(); + + // Produce cell data + e_out += dist_prop_output<has_attributes<typename Graph::E_type>::value, Graph, T::value>::get_cell_data(g); + } + } +}; + +/*! + * + * It write a VTK format file in case for a graph + * + * \tparam Type of graph + * + */ + +template<typename Graph> +class VTKWriter<Graph, DIST_GRAPH> +{ + //! Graph to output + Graph & g; + + /*! \brief It get the vertex properties list + * + * It get the vertex properties list of the vertex defined as VTK header + * + * \return a string that define the vertex properties in graphML format + * + */ + + std::string get_vertex_properties_list() + { + //! vertex property output string + std::string v_out; + + // write the number of vertex + v_out += "VERTICES " + std::to_string(g.getNVertex()) + " " + std::to_string(g.getNVertex() * 2) + "\n"; + + // return the vertex properties string + return v_out; + } + + /*! \brief It get the vertex properties list + * + * It get the vertex properties list of the vertex defined as a VTK header + * + * \return a string that define the vertex properties in graphML format + * + */ + + std::string get_point_properties_list() + { + //! vertex property output string + std::string v_out; + + // write the number of vertex + v_out += "POINTS " + std::to_string(g.getNVertex()) + " float" + "\n"; + + // return the vertex properties string + return v_out; + } + + /*! \brief Get the VTK point info string + * + * \return the point info string + * + */ + std::string get_point_info() + { + //! vertex property output string + std::string v_out; + + // write the ids + v_out += "SCALARS id unsigned_long\nLOOKUP_TABLE default\n"; + + for (size_t i = 0; i < g.getNVertex(); ++i) + { + v_out += std::to_string(g.getVertexId(i)) + "\n"; + } + + // write the ids + v_out += "SCALARS gid unsigned_long\nLOOKUP_TABLE default\n"; + + for (size_t i = 0; i < g.getNVertex(); ++i) + { + v_out += std::to_string(g.getVertexGlobalId(i)) + "\n"; + } + + // return the vertex properties string + return v_out; + } + + /*! \brief It get the edge properties list + * + * It get the edge properties list of the edge defined as a GraphML header + * + * \return a string that define the edge properties in graphML format + * + */ + + std::string get_edge_properties_list() + { + //! vertex property output string + std::string e_out; + + // write the number of lines + e_out += "LINES " + std::to_string(g.getNEdge()) + " " + std::to_string(3 * g.getNEdge()) + "\n"; + + // return the vertex properties string + return e_out; + } + + /*! \brief Create the VTK point definition + * + * \tparam attr false x,y,z are set to 0 for each vertex + * + * \return the point list string + * + */ + + template<bool attr> std::string get_point_list() + { + //! VTK spatial information + typename Graph::V_type::s_type x[3] = { 0, 0, 0 }; + + //! vertex node output string + std::string v_out; + + //! Get a vertex iterator + auto it = g.getVertexIterator(); + + // if there is the next element + while (it.isNext()) + { + // Get vtk vertex node + auto obj = g.vertex(it.get()); + + // create a vertex list functor + vtk_dist_vertex_node<Graph, attr> vn(v_out, obj, x); + + // Iterate through all the vertex and create the vertex list + boost::mpl::for_each<boost::mpl::range_c<int, 0, Graph::V_type::max_prop> >(vn); + + // write the node string + vn.write(); + + // increment the iterator and counter + ++it; + } + + // return the vertex list + return v_out; + } + + /*! \brief Create the VTK vertex definition + * + * \tparam attr false x,y,z are set to 0 for each vertex + * + * \return the vertex list string + * + */ + std::string get_vertex_list() + { + //! vertex node output string + std::string v_out; + + //! For each point create a vertex + for (size_t i = 0; i < g.getNVertex(); i++) + { + v_out += "1 " + std::to_string(i) + "\n"; + } + + // return the vertex list + return v_out; + } + + /*! \brief Get the point data header + * + * \return a string with the point data header for VTK format + * + */ + + std::string get_point_data_header() + { + std::string v_out; + + v_out += "POINT_DATA " + std::to_string(g.getNVertex()) + "\n"; + + return v_out; + } + + /*! \brief Get the point data header + * + * \return a string with the point data header for VTK format + * + */ + + std::string get_cell_data_header() + { + std::string v_out; + + v_out += "CELL_DATA " + std::to_string(g.getNVertex() + g.getNEdge()) + "\n"; + + return v_out; + } + + /*! \brief Return the edge list + * + * \return the edge list + * + */ + + std::string get_edge_list() + { + //! edge node output string + std::string e_out; + + //! Get an edge iterator + auto it = g.getEdgeIterator(); + + // if there is the next element + while (it.isNext()) + { + e_out += "2 " + std::to_string(it.source()) + " " + std::to_string(g.nodeById(it.target())) + "\n"; + + // increment the operator + ++it; + } + + // return the edge list + return e_out; + } + +public: + + /*! + * + * VTKWriter constructor, it take a graph and write a GraphML format + * + * \param g Graph to write + * + */ + VTKWriter(Graph & g) : + g(g) + { + } + + /*! \brief It write a VTK file from a graph + * + * \tparam prp_out which properties to output [default = -1 (all)] + * + * \param file path where to write + * \param graph_name of the graph + * \param ft specify if it is a VTK BINARY or ASCII file [default = ASCII] + * + * \return true if it succeed + * + */ + template<int prp = -1> bool write(std::string file, std::string graph_name = "Graph", file_type ft = file_type::ASCII) + { + + Vcluster<> & v_cl = create_vcluster(); + + g.deleteGhosts(); + + if (v_cl.getProcessUnitID() == 0) + { + for (size_t i = 0; i < g.getTotNVertex(); ++i) + { + g.reqVertex(i); + } + } + + g.sync(); + + if (v_cl.getProcessUnitID() == 0) + { + // Check that the Vertex type define x y and z attributes + + if (has_attributes<typename Graph::V_type>::value == false) + { + std::cerr << "Error writing a graph: Vertex must has defines x,y,z properties" << "\n"; + return false; + } + + // Header for the vtk + std::string vtk_header; + // Point list of the VTK + std::string point_list; + // Vertex list of the VTK + std::string vertex_list; + // Graph header + std::string vtk_binary_or_ascii; + // Edge list of the GraphML + std::string edge_list; + // vertex properties header + std::string point_prop_header; + // edge properties header + std::string vertex_prop_header; + // edge properties header + std::string edge_prop_header; + // Data point header + std::string point_data_header; + // Ids point + std::string point_ids; + // Data point + std::string point_data; + // Cell data header + std::string cell_data_header; + // Cell data + std::string cell_data; + + // VTK header + vtk_header = "# vtk DataFile Version 3.0\n" + graph_name + "\n"; + + // Choose if binary or ASCII + if (ft == file_type::ASCII) + { + vtk_header += "ASCII\n"; + } + else + { + vtk_header += "BINARY\n"; + } + + // Data type for graph is DATASET POLYDATA + vtk_header += "DATASET POLYDATA\n"; + + // point properties header + point_prop_header = get_point_properties_list(); + + // Get point list + point_list = get_point_list<has_attributes<typename Graph::V_type>::value>(); + + // vertex properties header + vertex_prop_header = get_vertex_properties_list(); + + // Get vertex list + vertex_list = get_vertex_list(); + + // Edge properties header + edge_prop_header = get_edge_properties_list(); + + // Get the edge graph list + edge_list = get_edge_list(); + + // Get the point data header + point_data_header = get_point_data_header(); + + // Get the point info + point_ids = get_point_info(); + + // Get the cell data header + cell_data_header = get_cell_data_header(); + + // For each property in the vertex type produce a point data + + dist_prop_out_vertex<Graph> pp(point_data, g); + + if (prp == -1) + boost::mpl::for_each<boost::mpl::range_c<int, 0, Graph::V_type::max_prop> >(pp); + else + boost::mpl::for_each<boost::mpl::range_c<int, prp, prp> >(pp); + + // For each property in the edge type produce a point data + + dist_prop_out_edge<Graph> ep(cell_data, g); + + if (prp == -1) + boost::mpl::for_each<boost::mpl::range_c<int, 0, Graph::E_type::max_prop> >(ep); + else + boost::mpl::for_each<boost::mpl::range_c<int, prp, prp> >(ep); + + // write the file + std::ofstream ofs(file); + + // Check if the file is open + if (ofs.is_open() == false) + { + std::cerr << "Error cannot create the VTK file: " + file; + } + + ofs << vtk_header << point_prop_header << point_list << vertex_prop_header << vertex_list << edge_prop_header << edge_list << point_data_header << point_ids << point_data << cell_data_header << cell_data; + + // Close the file + + ofs.close(); + + } + + g.deleteGhosts(); + + // Completed succefully + return true; + } +}; + +#endif /* VTKWRITER_GRAPH_HPP_ */ diff --git a/src/VTKWriter/VTKWriter_graph.hpp b/src/VTKWriter/VTKWriter_graph.hpp new file mode 100644 index 0000000000000000000000000000000000000000..3b4bb1e61a00b564d4c0cd902b030c588915cd29 --- /dev/null +++ b/src/VTKWriter/VTKWriter_graph.hpp @@ -0,0 +1,1243 @@ +/* + * VTKWriter_graph.hpp + * + * Created on: May 5, 2015 + * Author: Pietro Incardona + */ + +#ifndef VTKWRITER_GRAPH_HPP_ +#define VTKWRITER_GRAPH_HPP_ + +/*! Property data store for scalar and vector + * + */ +template<bool is_array> +struct vtk_vertex_node_array_scalar_selector +{ + /*! /brief Print the geometric informations in case it is not an array + * + * \tparam T Type of the vertex + * \tparam ele_v Attribute element to check + * \tparam G Graph of reference + * \tparam s_type Vertex spatial type information + * + * \param vo Vertex object container + * \param x Array to store geometric informations + * \param z_set Value set to true id z axis is in use + */ + template<typename T, typename ele_v, typename G, typename s_type> + static inline void move(typename G::V_container &vo, s_type (&x)[3], bool &z_set) + { + if (G::V_type::attributes::name[T::value] == "x") + { + x[0] = convert<typename boost::remove_reference<decltype(vo.template get<T::value>())>::type>::template to<s_type>(vo.template get<T::value>()); + } + else if (G::V_type::attributes::name[T::value] == "y") + { + x[1] = convert<typename boost::remove_reference<decltype(vo.template get<T::value>())>::type>::template to<s_type>(vo.template get<T::value>()); + } + else if (G::V_type::attributes::name[T::value] == "z") + { + x[2] = convert<typename boost::remove_reference<decltype(vo.template get<T::value>())>::type>::template to<s_type>(vo.template get<T::value>()); + z_set = true; + } + } +}; + +/*! Template specialization in the case of array type attribute + * + */ +template<> +struct vtk_vertex_node_array_scalar_selector<true> +{ + /*! \brief Store the geometric informations in case it is an array + * + * \tparam T Type of the vertex + * \tparam ele_v Attribute element to check + * \tparam G Graph of reference + * \tparam s_type Vertex spatial type information + * + * \param vo Vertex object container + * \param x Array to store geometric informations + * \param z_set Value set to true id z axis is in use + */ + template<typename T, typename ele_v, typename G, typename s_type> + static inline void move(typename G::V_container &vo, s_type (&x)[3], bool &z_set) + { + if (G::V_type::attributes::name[T::value] != "x") + {return;} + + if (std::extent<ele_v>::value == 3) + {z_set = true;} + + for (size_t i = 0; i < std::extent<ele_v>::value; i++) + {x[i] = convert<typename boost::remove_reference<decltype(vo.template get<T::value>()[i])>::type>::template to<s_type>(vo.template get<T::value>()[i]);} + } +}; + +/*! \brief this class is a functor for "for_each" algorithm + * + * This class is a functor for "for_each" algorithm. For each + * element of the boost::vector the operator() is called. + * Is mainly used to create a string containing all the vertex + * properties + * + * \tparam G graph type + * \tparam attr has the vertex attributes + * + */ + +template<typename G, bool attr> +struct vtk_vertex_node +{ + //! Vertex spatial type information + typedef typename G::V_type::s_type s_type; + + //! Indicate if there is the information about the z coordinate + bool z_set; + + //! point to write + s_type (&x)[3]; + + //! Vertex object container + typename G::V_container & vo; + + //! vertex node string + std::string & v_node; + + /*! \brief Constructor + * + * Create a vertex properties list + * + * \param v_node std::string that is filled with the graph properties in the GraphML format + * \param n_obj object container to access its properties for example encapc<...> + * \param x temporal buffer to store the point coordinates + * + */ + vtk_vertex_node(std::string & v_node, typename G::V_container & n_obj, s_type (&x)[3]) + :z_set(false),x(x),vo(n_obj),v_node(v_node) + { + } + + //! \brief Write collected information + void write() + { + v_node += std::to_string(x[0]) + " " + std::to_string(x[1]) + " " + std::to_string(x[2]) + "\n"; + } + + /*! \brief It call the functor for each member + * + * \param t property id + * + */ + template<typename T> + void operator()(T& t) + { + typedef typename boost::mpl::at<typename G::V_type::type, boost::mpl::int_<T::value>>::type ele_v; + + // if the attribute name is x y or z, create a string with the value of the properties and store it + + vtk_vertex_node_array_scalar_selector<std::is_array<ele_v>::value>::template move<T, ele_v, G, s_type>(vo, x, z_set); + + } +}; + +/*! \brief this class is a functor for "for_each" algorithm + * + * This class is a functor for "for_each" algorithm. For each + * element of the boost::vector the operator() is called. + * Is mainly used to create a string containing all the vertex + * properties + * + * Specialization when we do not have vertex attributes + * + * \tparam G graph type + * + */ + +template<typename G> +struct vtk_vertex_node<G, false> +{ + //! Vertex object container + typename G::V_container & vo; + + //! vertex node string + std::string & v_node; + + /*! \brief Constructor + * + * Create a vertex properties list + * + * \param v_node std::string that is filled with the graph properties in the GraphML format + * \param n_obj object container to access its properties for example encapc<...> + * + */ + vtk_vertex_node(std::string & v_node, typename G::V_container & n_obj) : + vo(n_obj), v_node(v_node) + { + } + ; + + /*! \brief It call the functor for each member + * + * It set the position of vertex to zero + * + * \param t property id + * + */ + template<typename T> + void operator()(T& t) + { + v_node += "0 0 0\n"; + } +}; + +/*! \brief this class is a functor for "for_each" algorithm + * + * This class is a functor for "for_each" algorithm. For each + * element of the boost::vector the operator() is called. + * Is mainly used to create a string containing all the edge + * properties + * + */ + +template<typename G> +struct vtk_edge_node +{ + //! Vertex object container + typename G::E_container & vo; + + //! edge node string + std::string & e_node; + + /*! \brief Constructor + * + * Create an edge node + * + * \param e_node std::string that is filled with the graph properties in the GraphML format + * \param n_obj object container to access the object properties for example encapc<...> + * + */ + vtk_edge_node(std::string & e_node, typename G::E_container & n_obj) : + vo(n_obj), e_node(e_node) + { + } + ; + + /*! \brief Create a new node + * + * \param v_c unused + * \param s source of the edge + * \param d destination of the edge + * + */ + void new_node(size_t v_c, size_t s, size_t d) + { + // start a new node + e_node += "2 " + std::to_string(s) + " " + std::to_string(d) + "\n"; + } +}; + +/*! \brief Property writer for scalar and vector + * + */ +template<bool is_array> +struct prop_output_array_scalar_selector_vertex +{ + /*! \brief Writer in case the property is not an array + * + * \tparam ele_v Property element + * \tparam Graph Graph of reference + * \tparam i Property id + * + * \param v_out Buffer to write into + * \param g Graph + * \param p Property id + */ + template<typename ele_v, typename Graph, unsigned int i> + static inline void write(std::string &v_out, const Graph &g, size_t p) + { + v_out += std::to_string(g.vertex(p).template get<i>()) + "\n"; + } +}; + +/*! \brief Property writer for vector + * + */ +template<> +struct prop_output_array_scalar_selector_vertex<true> +{ + /*! \brief Writer in case the property is an array + * + * \tparam ele_v Property element + * \tparam Graph Graph of reference + * \tparam i Property id + * + * \param v_out Buffer to write into + * \param g Graph + * \param p Property id + */ + template<typename ele_v, typename Graph, unsigned int i> + static inline void write(std::string &v_out, const Graph &g, size_t p) + { + for (size_t j = 0; j < 2; j++) + { + v_out += std::to_string(g.vertex(p).template get<i>()[j]) + " "; + } + + if (std::extent<ele_v>::value == 2) + v_out += "0"; + else + v_out += std::to_string(g.vertex(p).template get<i>()[2]); + + v_out += "\n"; + } +}; + +/*! \brief Property writer for scalar and vector + * + */ +template<bool is_array> +struct prop_output_array_scalar_selector_edge +{ + /*! \brief Writer in case the property is not an array + * + * \tparam ele_v Property element + * \tparam Graph Graph of reference + * \tparam i Property id + * + * \param v_out Buffer to write into + * \param g Graph + * \param edge to write + */ + template<typename ele_v, typename Graph, unsigned int i> + static inline void write(std::string &v_out, const Graph &g, const typename Graph::E_container &edge) + { + v_out += std::to_string(edge.template get<i>()) + "\n"; + } +}; + +/*! \brief Property writer for vector + * + */ +template<> +struct prop_output_array_scalar_selector_edge<true> +{ + /*! \brief Writer in case the property is an array + * + * \tparam ele_v Property element + * \tparam Graph Graph of reference + * \tparam i Property id + * + * \param v_out Buffer to write into + * \param g Graph + * \param edge to write + */ + template<typename ele_v, typename Graph, unsigned int i> + static inline void write(std::string &v_out, const Graph &g, const typename Graph::E_container &edge) + { + for (size_t j = 0; j < 2; j++) + { + v_out += std::to_string(edge.template get<i>()[j]) + " "; + } + + if (std::extent<ele_v>::value == 2) + v_out += "0"; + else + v_out += std::to_string(edge.template get<i>()[2]); + + v_out += "\n"; + } +}; + +/*! \brief Property writer for scalar and vector, it fill the vertex data (needed for edge representation in vtk) + * + */ +template<bool is_array> +struct prop_output_array_scalar_selector_edge_fill_vertex +{ + /*! \brief Writer in case the property is not an array + * + * \param v_out Buffer to write into + */ + static inline void write(std::string &v_out) + { + v_out += "0\n"; + } +}; + +/*! \brief Property writer for vector + * + */ +template<> +struct prop_output_array_scalar_selector_edge_fill_vertex<true> +{ + /*! \brief Writer in case the property is an array + * + * \param v_out Buffer to write into + */ + static inline void write(std::string &v_out) + { + v_out += "0 0 0\n"; + } +}; + +/*! \brief This class specialize functions in the case the type T + * has or not defined attributes + * + * In C++ partial specialization of a function is not allowed so we have to + * encapsulate this function in a class + * + * \tparam has_attributes parameter that specialize the function in case the vertex + * define or not attributes name + * + * \tparam Graph type of graph we are processing + * \tparam i the property we are going to write + * + */ + +template<bool has_attributes, typename Graph, unsigned int i> +class prop_output +{ +public: + + /*! \brief Get the vtk point data section for a graph g + * + * \param g graph + * + * \return point data section string + * + */ + static std::string get_point_data(const Graph & g) + { + //! vertex node output string + std::string v_out; + + //! Get a vertex iterator + auto it = g.getVertexIterator(); + + // if there is the next element + while (it.isNext()) + { + typedef typename boost::mpl::at<typename Graph::V_type::type, boost::mpl::int_<i>>::type ele_v; + prop_output_array_scalar_selector_vertex<std::is_array<ele_v>::value>::template write<ele_v, Graph, i>(v_out, g, it.get()); + + // increment the iterator and counter + ++it; + } + + return v_out; + } + + /*! \brief Get the cell data section for a graph g + * + * \param g graph + * + * \return the cell data section + * + */ + static std::string get_cell_data(const Graph & g) + { + //! vertex node output string + std::string e_out; + + //! Get a vertex iterator + auto it_v = g.getVertexIterator(); + + // if there is the next element + while (it_v.isNext()) + { + // Print the property + typedef typename boost::mpl::at<typename Graph::E_type::type, boost::mpl::int_<i>>::type ele_v; + prop_output_array_scalar_selector_edge_fill_vertex<std::is_array<ele_v>::value>::write(e_out); + + // increment the iterator and counter + ++it_v; + } + + //! Get an edge iterator + auto it_e = g.getEdgeIterator(); + + // if there is the next element + while (it_e.isNext()) + { + typedef typename boost::mpl::at<typename Graph::E_type::type, boost::mpl::int_<i>>::type ele_v; + prop_output_array_scalar_selector_edge<std::is_array<ele_v>::value>::template write<ele_v, Graph, i>(e_out, g, g.edge(it_e.get())); + + // increment the iterator and counter + ++it_e; + } + + return e_out; + } + + /*! \brief Return the point header for the property prop + * + * \param prop property to write + * + * \return a string containing the header of the properties + * + */ + + static std::string get_point_property_header(size_t prop) + { + // vertex node output string + std::string v_out; + + // Type of the property + std::string type; + + typedef typename boost::mpl::at<typename Graph::V_type::type, boost::mpl::int_<i>>::type T; + + // Check if T is a supported format + // for now we support only scalar of native type + if (std::rank<T>::value == 1) + { + //Get type of the property + type = getType<typename std::remove_all_extents<T>::type>(); + + // if the type is not supported return + if (type.size() == 0) + return v_out; + + // Create point data properties + v_out += "VECTORS " + get_attributes_vertex() + " " + type + "\n"; + } + else + { + type = getType<T>(); + + // if the type is not supported return + if (type.size() == 0) + return v_out; + + // Create point data properties + v_out += "SCALARS " + get_attributes_vertex() + " " + type + "\n"; + + // Default lookup table + v_out += "LOOKUP_TABLE default\n"; + + } + + // return the vertex list + return v_out; + } + + /*! \brief Given a Graph return the cell data header for a typename T + * + * \param prop property id + * + * \return the string with the cell property header + * + */ + static std::string get_cell_property_header(size_t prop) + { + //! edge node output string + std::string e_out; + + // Type of the property + std::string type; + + typedef typename boost::mpl::at<typename Graph::E_type::type, boost::mpl::int_<i>>::type T; + + // Check if T is a supported format + // for now we support only scalar of native type + if (std::is_array<T>::value == true && std::is_array<typename std::remove_extent<T>::type>::value == false) + { + //Get type of the property + type = getType<typename std::remove_all_extents<T>::type>(); + + // if the type is not supported return + if (type.size() == 0) + return e_out; + + // Create point data properties + e_out += "VECTORS " + get_attributes_edge() + " " + type + "\n"; + } + else + { + type = getType<T>(); + + // if the type is not supported return + if (type.size() == 0) + return e_out; + + // Create point data properties + e_out += "SCALARS " + get_attributes_edge() + " " + type + "\n"; + + // Default lookup table + e_out += "LOOKUP_TABLE default\n"; + + } + + // return the vertex list + return e_out; + } + + /*! \brief Get the attributes name for the property i (template parameter) + * + * \return vertex attribute name + * + */ + static std::string get_attributes_vertex() + { + return Graph::V_type::attributes::name[i]; + } + + /*! \brief Get the attributes name for edge property i (template parameter) + * + * \return edge attribute name + * + */ + static std::string get_attributes_edge() + { + return Graph::E_type::attributes::name[i]; + } +}; + +/*! \brief This class specialize functions in the case the type T + * has not defined attributes + * + * In C++ partial specialization of a function is not allowed so we have to + * encapsulate this function in a class + * + * \tparam has_attributes parameter that specialize the function in case the vertex + * define or not attributes name + * + * \tparam i id of the property we are going to write + * + */ + +template<typename Graph, unsigned int i> +class prop_output<false, Graph, i> +{ +public: + /*! \brief Return the point data section for a graph g + * + * \param g graph + * + * \return the point data section string + * + */ + static std::string get_point_data(Graph & g) + { + //! vertex node output string + std::string v_out; + + //! Get a vertex iterator + auto it = g.getVertexIterator(); + + // if there is the next element + while (it.isNext()) + { + // Print the property + v_out += std::to_string(g.vertex(it.get()).template get<i>()) + "\n"; + + // increment the iterator and counter + ++it; + } + + return v_out; + } + + /*! \brief Return the cell data section for a graph g + * + * \param g graph + * + * \return the cell data section + * + */ + + static std::string get_cell_data(const Graph & g) + { + // vertex node output string + std::string e_out; + + // Get a vertex iterator + auto it_v = g.getVertexIterator(); + + // if there is the next element + while (it_v.isNext()) + { + // Print the property + e_out += std::to_string(0) + "\n"; + + // increment the iterator and counter + ++it_v; + } + + //! Get an edge iterator + auto it_e = g.getEdgeIterator(); + + // if there is the next element + while (it_e.isNext()) + { + // Print the property + e_out += std::to_string(g.edge(it_e.get()).template get<i>()) + "\n"; + + // increment the iterator and counter + ++it_e; + } + + return e_out; + } + + /*! \brief Given a Graph return the point data header for the property prop + * + * \param prop id of the property + * + * \return the string of the property header + * + */ + + static std::string get_point_property_header(size_t prop) + { + //! vertex node output string + std::string v_out; + + // Check if T is a supported format + // for now we support only scalar of native type + + std::string type = getType<boost::fusion::result_of::at<typename Graph::V_type::type, boost::mpl::int_<i>>>("attr" + std::to_string(prop)); + + // if the type is not supported return + if (type.size() == 0) + { + return v_out; + } + + // Create point data properties + v_out += "SCALARS " + get_attributes_vertex() + " " + type + "\n"; + + // Default lookup table + v_out += "LOOKUP_TABLE default\n"; + + // return the vertex list + return v_out; + } + + /*! \brief Given a Graph return the cell data header + * + * \param prop property id + * + * \return the cell property header + * + */ + + static std::string get_cell_property_header(size_t prop) + { + //! edge node output string + std::string e_out; + + // Type of the property + std::string type; + + typedef typename boost::mpl::at<typename Graph::E_type::type, boost::mpl::int_<i>>::type T; + + // Check if T is a supported format + // for now we support only scalar of native type + if (std::is_array<T>::value == true && std::is_array<typename std::remove_extent<T>::type>::value == false) + { + //Get type of the property + type = getType<typename std::remove_all_extents<T>::type>(); + + // if the type is not supported return + if (type.size() == 0) + return e_out; + + // Create point data properties + e_out += "VECTORS " + get_attributes_edge() + " " + type + "\n"; + } + else + { + type = getType<T>(); + + // if the type is not supported return + if (type.size() == 0) + return e_out; + + // Create point data properties + e_out += "SCALARS " + get_attributes_edge() + " " + type + "\n"; + + // Default lookup table + e_out += "LOOKUP_TABLE default\n"; + + } + + // return the vertex list + return e_out; + } + + /*! \brief Get the attributes name for vertex + * + * \return get attributes vertex name + * + */ + static std::string get_attributes_vertex() + { + return std::string("attr" + std::to_string(i)); + } + + /*! \brief Get the attributes name for edge + * + * \return get attributes edge name + * + */ + static std::string get_attributes_edge() + { + return std::string("attr" + std::to_string(i)); + } +}; + +/*! \brief this class is a functor for "for_each" algorithm + * + * This class is a functor for "for_each" algorithm. For each + * element of the boost::vector the operator() is called. + * Is mainly used to produce at output for each property + * + * \tparam Graph graph we are processing + * + * \param dim Dimensionality + * \param S type of grid + * + */ + +template<typename Graph> +struct prop_out_vertex +{ + //! property output string + std::string & v_out; + + //! Graph that we are processing + const Graph & g; + + /*! \brief constructor + * + * \param v_out string to fill with the vertex properties + * \param g graph to output + * + */ + prop_out_vertex(std::string & v_out, const Graph & g) : + v_out(v_out), g(g) + { + } + ; + + /*! \brief It produce an output for each property + * + * \param t property id + * + */ + template<typename T> + void operator()(T& t) const + { + // actual string size + size_t sz = v_out.size(); + + // Produce the point properties header + v_out += prop_output<has_attributes<typename Graph::V_type>::value, Graph, T::value>::get_point_property_header(t); + + // If the output has changed, we have to write the properties + if (v_out.size() != sz) + { + std::string attr = prop_output<has_attributes<typename Graph::V_type>::value, Graph, T::value>::get_attributes_vertex(); + + // Produce point data + v_out += prop_output<has_attributes<typename Graph::V_type>::value, Graph, T::value>::get_point_data(g); + } + } +}; + +/*! \brief this class is a functor for "for_each" algorithm + * + * This class is a functor for "for_each" algorithm. For each + * element of the boost::vector the operator() is called. + * Is mainly used to produce at output for each property + * + * \tparam Graph graph we are processing + * + * \param dim Dimensionality + * \param S type of grid + * + */ + +template<typename Graph> +struct prop_out_edge +{ + //! property output string + std::string & e_out; + + //! Graph that we are processing + const Graph & g; + + /*! \brief constructor + * + * \param e_out string to fill with the edge properties + * \param g graph we are writing + * + */ + prop_out_edge(std::string & e_out, const Graph & g) : + e_out(e_out), g(g) + { + } + ; + + /*! \brief It produce an output for each property + * + * \param t property index + * + */ + template<typename T> + void operator()(T& t) const + { + // actual string size + size_t sz = e_out.size(); + + // Produce the point properties header + e_out += prop_output<has_attributes<typename Graph::E_type>::value, Graph, T::value>::get_cell_property_header(t); + + // If the output has changed, we have to write the properties + if (e_out.size() != sz) + { + std::string attr = prop_output<has_attributes<typename Graph::E_type>::value, Graph, T::value>::get_attributes_edge(); + + // Produce cell data + e_out += prop_output<has_attributes<typename Graph::E_type>::value, Graph, T::value>::get_cell_data(g); + } + } +}; + +/*! + * + * It write a VTK format file in case for a graph + * + * \tparam Type of graph + * + */ + +template<typename Graph> +class VTKWriter<Graph, VTK_GRAPH> +{ + //! graph we are writing + const Graph & g; + + /*! \brief It get the vertex properties list + * + * It get the vertex properties list of the vertex defined as VTK header + * + * \return a string that define the vertex properties in graphML format + * + */ + + std::string get_vertex_properties_list() + { + //! vertex property output string + std::string v_out; + + // write the number of vertex + v_out += "VERTICES " + std::to_string(g.getNVertex()) + " " + std::to_string(g.getNVertex() * 2) + "\n"; + + // return the vertex properties string + return v_out; + } + + /*! \brief It get the vertex properties list + * + * It get the vertex properties list of the vertex defined as a VTK header + * + * \return a string that define the vertex properties in graphML format + * + */ + + std::string get_point_properties_list() + { + //! vertex property output string + std::string v_out; + + // write the number of vertex + v_out += "POINTS " + std::to_string(g.getNVertex()) + " float" + "\n"; + + // return the vertex properties string + return v_out; + } + + /*! \brief It get the edge properties list + * + * It get the edge properties list of the edge defined as a GraphML header + * + * \return a string that define the edge properties in graphML format + * + */ + + std::string get_edge_properties_list() + { + //! vertex property output string + std::string e_out; + + // write the number of lines + e_out += "LINES " + std::to_string(g.getNEdge()) + " " + std::to_string(3 * g.getNEdge()) + "\n"; + + // return the vertex properties string + return e_out; + } + + /*! \brief Create the VTK point definition + * + * \tparam attr false x,y,z are set to 0 for each vertex + * + * \return a string with the point list + * + */ + template<bool attr> std::string get_point_list() + { + //! VTK spatial information + typename Graph::V_type::s_type x[3] = { 0, 0, 0 }; + + //! vertex node output string + std::string v_out; + + //! Get a vertex iterator + auto it = g.getVertexIterator(); + + // if there is the next element + while (it.isNext()) + { + // Get vtk vertex node + auto obj = g.vertex(it.get()); + + // create a vertex list functor + vtk_vertex_node<Graph, attr> vn(v_out, obj, x); + + // Iterate through all the vertex and create the vertex list + boost::mpl::for_each<boost::mpl::range_c<int, 0, Graph::V_type::max_prop > >(vn); + + // write the node string + vn.write(); + + // increment the iterator and counter + ++it; + } + + // return the vertex list + return v_out; + } + + /*! \brief Create the VTK vertex definition + * + * \return a string with the vertex definition + * + */ + std::string get_vertex_list() + { + //! vertex node output string + std::string v_out; + + //! For each point create a vertex + for (size_t i = 0; i < g.getNVertex(); i++) + { + v_out += "1 " + std::to_string(i) + "\n"; + } + + // return the vertex list + return v_out; + } + + /*! \brief Get the point data header + * + * \return a string with the point data header for VTK format + * + */ + + std::string get_point_data_header() + { + std::string v_out; + + v_out += "POINT_DATA " + std::to_string(g.getNVertex()) + "\n"; + + return v_out; + } + + /*! \brief Get the point data header + * + * \return a string with the point data header for VTK format + * + */ + + std::string get_cell_data_header() + { + std::string v_out; + + v_out += "CELL_DATA " + std::to_string(g.getNVertex() + g.getNEdge()) + "\n"; + + return v_out; + } + + /*! \brief Return the edge list + * + * \return the edge list + * + */ + + std::string get_edge_list() + { + //! edge node output string + std::string e_out; + + //! Get an edge iterator + auto it = g.getEdgeIterator(); + + // if there is the next element + while (it.isNext()) + { + // create an edge list functor +// edge_node<Graph> en(e_out,g.edge(it.get())); + + e_out += "2 " + std::to_string(it.source()) + " " + std::to_string(it.target()) + "\n"; + + // increment the operator + ++it; + } + + // return the edge list + return e_out; + } + +public: + + /*! + * + * VTKWriter constructor, it take a graph and write a GraphML format + * + * \param g Graph to write + * + */ + VTKWriter(const Graph & g) : + g(g) + { + } + + /*! \brief It write a VTK file from a graph + * + * \tparam prp_out which properties to output [default = -1 (all)] + * + * \param file path where to write + * \param graph_name of the graph + * \param ft specify if it is a VTK BINARY or ASCII file [default = ASCII] + * + * \return true if it write correctly + * + */ + template<int prp = -1> bool write(std::string file, std::string graph_name = "Graph", file_type ft = file_type::ASCII) + { + // Check that the Vertex type define x y and z attributes + + if (has_attributes<typename Graph::V_type>::value == false) + { + std::cerr << "Error writing a graph: Vertex must has defines x,y,z properties" << "\n"; + return false; + } + + // Header for the vtk + std::string vtk_header; + // Point list of the VTK + std::string point_list; + // Vertex list of the VTK + std::string vertex_list; + // Graph header + std::string vtk_binary_or_ascii; + // Edge list of the GraphML + std::string edge_list; + // vertex properties header + std::string point_prop_header; + // edge properties header + std::string vertex_prop_header; + // edge properties header + std::string edge_prop_header; + // Data point header + std::string point_data_header; + // Data point + std::string point_data; + // Cell data header + std::string cell_data_header; + // Cell data + std::string cell_data; + + // VTK header + vtk_header = "# vtk DataFile Version 3.0\n" + graph_name + "\n"; + + // Choose if binary or ASCII + if (ft == file_type::ASCII) + { + vtk_header += "ASCII\n"; + } + else + { + vtk_header += "BINARY\n"; + } + + // Data type for graph is DATASET POLYDATA + vtk_header += "DATASET POLYDATA\n"; + + // point properties header + point_prop_header = get_point_properties_list(); + + // Get point list + point_list = get_point_list<has_attributes<typename Graph::V_type>::value>(); + + // vertex properties header + vertex_prop_header = get_vertex_properties_list(); + + // Get vertex list + vertex_list = get_vertex_list(); + + // Edge properties header + edge_prop_header = get_edge_properties_list(); + + // Get the edge graph list + edge_list = get_edge_list(); + + // Get the point data header + point_data_header = get_point_data_header(); + + // Get the cell data header + cell_data_header = get_cell_data_header(); + + // For each property in the vertex type produce a point data + + prop_out_vertex<Graph> pp(point_data, g); + + if (prp == -1) + boost::mpl::for_each<boost::mpl::range_c<int, 0, Graph::V_type::max_prop> >(pp); + else + boost::mpl::for_each<boost::mpl::range_c<int, prp, prp> >(pp); + + // For each property in the edge type produce a point data + + prop_out_edge<Graph> ep(cell_data, g); + + if (prp == -1) + boost::mpl::for_each<boost::mpl::range_c<int, 0, Graph::E_type::max_prop> >(ep); + else + boost::mpl::for_each<boost::mpl::range_c<int, prp, prp> >(ep); + + // write the file + std::ofstream ofs(file); + + // Check if the file is open + if (ofs.is_open() == false) + { + std::cerr << "Error cannot create the VTK file: " + file; + } + + ofs << vtk_header << point_prop_header << point_list << vertex_prop_header << vertex_list << edge_prop_header << edge_list << point_data_header << point_data << cell_data_header << cell_data; + + // Close the file + + ofs.close(); + + // Completed succefully + return true; + } +}; + +#endif /* VTKWRITER_GRAPH_HPP_ */ diff --git a/src/VTKWriter/VTKWriter_grids.hpp b/src/VTKWriter/VTKWriter_grids.hpp new file mode 100644 index 0000000000000000000000000000000000000000..2616af75e78e70abf7be5861b29abe4ed1685c14 --- /dev/null +++ b/src/VTKWriter/VTKWriter_grids.hpp @@ -0,0 +1,444 @@ +/* + * VTKWriter_grids.hpp + * + * Created on: May 5, 2015 + * Author: Pietro Incardona + */ + +#ifndef VTKWRITER_GRIDS_HPP_ +#define VTKWRITER_GRIDS_HPP_ + +#include <boost/mpl/pair.hpp> +#include "VTKWriter_grids_util.hpp" +#include "is_vtk_writable.hpp" + +/*! \brief It store one grid + * + * \tparam Grid type of grid + * \tparam St type of space where the grid is defined + * + */ +template <typename Grid, typename St> +class ele_g +{ +public: + + typedef Grid value_type; + + ele_g(const Grid & g, const Point<Grid::dims,St> & offset, const Point<Grid::dims,St> & spacing, const Box<Grid::dims,St> & dom) + :g(g),offset(offset),spacing(spacing),dom(dom) + {} + + //! Dataset name + std::string dataset; + //! Grid + const Grid & g; + //! offset where it start + Point<Grid::dims,St> offset; + // spacing of the grid + Point<Grid::dims,St> spacing; + // Part of the grid that is real domain + Box<Grid::dims,size_t> dom; +}; + + + +/*! \brief this class is a functor for "for_each" algorithm + * + * This class is a functor for "for_each" algorithm. For each + * element of the boost::vector the operator() is called. + * Is mainly used to produce at output for each property + * + * \tparam ele_g element that store the grid and its attributes + * \param St type of space where the grid live + * + */ + +template<typename ele_g, typename St> +struct prop_out_g +{ + //! property output string + std::string & v_out; + + //! grid that we are processing + const openfpm::vector_std< ele_g > & vg; + + //! File type + file_type ft; + + //! list of names for the properties + const openfpm::vector<std::string> & prop_names; + + /*! \brief constructor + * + * \param v_out string to fill with the vertex properties + * \param vg vector of elements to write + * \param prop_names properties name + * \param ft file type + * + */ + prop_out_g(std::string & v_out, const openfpm::vector_std< ele_g > & vg, const openfpm::vector<std::string> & prop_names ,file_type ft) + :v_out(v_out),vg(vg),ft(ft),prop_names(prop_names) + {}; + + /*! It produce an output for each propert + * + * \param t prop-id + * + */ + template<typename T> + void operator()(T& t) const + { + typedef typename boost::mpl::at<typename ele_g::value_type::value_type::type,boost::mpl::int_<T::value>>::type ptype; + typedef typename std::remove_all_extents<ptype>::type base_ptype; + + meta_prop<boost::mpl::int_<T::value> ,ele_g,St, ptype, is_vtk_writable<base_ptype>::value > m(vg,v_out,prop_names,ft); + } + + /*! \brief Write the last property + * + * + * + */ + void lastProp() + { + // Create point data properties + v_out += "SCALARS domain float\n"; + + // Default lookup table + v_out += "LOOKUP_TABLE default\n"; + + // Produce point data + for (size_t k = 0 ; k < vg.size() ; k++) + { + //! Get a vertex iterator + auto it = vg.get(k).g.getIterator(); + + // if there is the next element + while (it.isNext()) + { + if (ft == file_type::ASCII) + { + if (vg.get(k).dom.isInside(it.get().toPoint()) == true) + { + float flag = 1.0; + flag += vg.get(k).g.getFlag(it.get()) * 2; + v_out += std::to_string(flag) + "\n"; + } + else + { + float flag = 0.0; + flag += vg.get(k).g.getFlag(it.get()) * 2; + v_out += std::to_string(flag) + "\n"; + } + } + else + { + if (vg.get(k).dom.isInside(it.get().toPoint()) == true) + { + float flag = 1.0; + flag = swap_endian_lt(flag); + v_out.append((const char *)&flag,sizeof(flag)); + } + else + { + float flag = 0.0; + flag = swap_endian_lt(flag); + v_out.append((const char *)&flag,sizeof(flag)); + } + } + + // increment the iterator and counter + ++it; + } + } + } +}; + +/*! + * + * It write a VTK format file in case of grids defined on a space + * + * \tparam boost::mpl::pair<G,S> + * + * where G is the type of grid S is the type of space, float, double ... + * + */ +template <typename pair> +class VTKWriter<pair,VECTOR_GRIDS> +{ + //! Vector of grids + + openfpm::vector< ele_g<typename pair::first,typename pair::second> > vg; + /*! \brief Get the total number of points + * + * \return the total number + * + */ + size_t get_total() + { + size_t tot = 0; + + //! Calculate the full number of vertices + for (size_t i = 0 ; i < vg.size() ; i++) + { + tot += vg.get(i).g.size(); + } + return tot; + } + + /*! \brief It get the vertex properties list + * + * It get the vertex properties list of the vertex defined as VTK header + * + * \return a string that define the vertex properties in graphML format + * + */ + + std::string get_vertex_properties_list() + { + //! vertex property output string + std::string v_out; + + // write the number of vertex + v_out += "VERTICES " + std::to_string(get_total()) + " " + std::to_string(get_total() * 2) + "\n"; + + // return the vertex properties string + return v_out; + } + + /*! \brief It get the vertex properties list + * + * It get the vertex properties list of the vertex defined as a VTK header + * + * \return a string that define the vertex properties in graphML format + * + */ + std::string get_point_properties_list() + { + //! vertex property output string + std::string v_out; + + // write the number of vertex + if (std::is_same<typename pair::second,float>::value == true) + {v_out += "POINTS " + std::to_string(get_total()) + " float" + "\n";} + else + {v_out += "POINTS " + std::to_string(get_total()) + " double" + "\n";} + + // return the vertex properties string + return v_out; + } + + /*! \brief Create the VTK point definition + * + * \param ft file type + * + * \return the string with the point list + * + */ + std::string get_point_list(file_type ft) + { + //! vertex node output string + std::stringstream v_out; + + if (std::is_same<typename pair::second,float>::value == true) + {v_out << std::setprecision(7);} + else + {v_out << std::setprecision(16);} + + //! For each defined grid + + for (size_t i = 0 ; i < vg.size() ; i++) + { + //! Get the iterator + auto it = vg.get(i).g.getIterator(); + + //! Where the grid is defined + Box<pair::first::dims,typename pair::second> dom; + + // if there is the next element + while (it.isNext()) + { + Point<pair::first::dims,typename pair::second> p; + p = it.get().toPoint(); + p = pmul(p,vg.get(i).spacing) + vg.get(i).offset; + + output_point<pair::first::dims,typename pair::second>(p,v_out,ft); + + // increment the iterator and counter + ++it; + } + } + + // return the vertex list + return v_out.str(); + } + + /*! \brief Create the VTK vertex definition + * + * \param ft file type + * + */ + std::string get_vertex_list(file_type ft) + { + //! vertex node output string + std::string v_out; + + size_t k = 0; + + for (size_t i = 0 ; i < vg.size() ; i++) + { + //! For each grid point create a vertex + auto it = vg.get(i).g.getIterator(); + + while (it.isNext()) + { + output_vertex(k,v_out,ft); + + ++k; + ++it; + } + } + // return the vertex list + return v_out; + } + + /*! \brief Get the point data header + * + * \return a string with the point data header for VTK format + * + */ + + std::string get_point_data_header() + { + std::string v_out; + + v_out += "POINT_DATA " + std::to_string(get_total()) + "\n"; + + return v_out; + } + +public: + + /*! + * + * VTKWriter constructor + * + */ + VTKWriter() + {} + + /*! \brief Add grid dataset + * + * \param g Grid to add + * \param offset grid offset + * \param spacing spacing of the grid + * \param dom part of the space that is the domain + * + */ + void add(const typename pair::first & g, + const Point<pair::first::dims,typename pair::second> & offset, + const Point<pair::first::dims,typename pair::second> & spacing, + const Box<pair::first::dims,typename pair::second> & dom) + { + ele_g<typename pair::first,typename pair::second> t(g,offset,spacing,dom); + + vg.add(t); + } + + /*! \brief It write a VTK file from a graph + * + * \tparam prp_out which properties to output [default = -1 (all)] + * + * \param file path where to write + * \param name of the graph + * \param prop_names properties name (can also be a vector of size 0) + * \param ft specify if it is a VTK BINARY or ASCII file [default = ASCII] + * + * \return true if the function write successfully + * + */ + template<int prp = -1> bool write(std::string file, + const openfpm::vector<std::string> & prop_names, + std::string f_name = "grids", + file_type ft = file_type::ASCII) + { + // Header for the vtk + std::string vtk_header; + // Point list of the VTK + std::string point_list; + // Vertex list of the VTK + std::string vertex_list; + // Graph header + std::string vtk_binary_or_ascii; + // vertex properties header + std::string point_prop_header; + // edge properties header + std::string vertex_prop_header; + // Data point header + std::string point_data_header; + // Data point + std::string point_data; + + // VTK header + vtk_header = "# vtk DataFile Version 3.0\n" + + f_name + "\n"; + + // Choose if binary or ASCII + if (ft == file_type::ASCII) + {vtk_header += "ASCII\n";} + else + {vtk_header += "BINARY\n";} + + // Data type for graph is DATASET POLYDATA + vtk_header += "DATASET POLYDATA\n"; + + // point properties header + point_prop_header = get_point_properties_list(); + + // Get point list + point_list = get_point_list(ft); + + // vertex properties header + vertex_prop_header = get_vertex_properties_list(); + + // Get vertex list + vertex_list = get_vertex_list(ft); + + // Get the point data header + point_data_header = get_point_data_header(); + + // For each property in the vertex type produce a point data + + prop_out_g< ele_g<typename pair::first,typename pair::second>, typename pair::second > pp(point_data, vg, prop_names, ft); + + if (prp == -1) + {boost::mpl::for_each< boost::mpl::range_c<int,0, pair::first::value_type::max_prop> >(pp);} + else + {boost::mpl::for_each< boost::mpl::range_c<int,prp, prp> >(pp);} + + // Add the last property + pp.lastProp(); + + + // write the file + std::ofstream ofs(file); + + // Check if the file is open + if (ofs.is_open() == false) + {std::cerr << "Error cannot create the VTK file: " + file + "\n";} + + ofs << vtk_header << point_prop_header << point_list << + vertex_prop_header << vertex_list << point_data_header << point_data; + + // Close the file + + ofs.close(); + + // Completed succefully + return true; + } +}; + + +#endif /* VTKWRITER_GRAPH_HPP_ */ diff --git a/src/VTKWriter/VTKWriter_grids_st.hpp b/src/VTKWriter/VTKWriter_grids_st.hpp new file mode 100644 index 0000000000000000000000000000000000000000..b6b523a83e1f843f00aca92d44c541237e75f25d --- /dev/null +++ b/src/VTKWriter/VTKWriter_grids_st.hpp @@ -0,0 +1,727 @@ +/* + * VTKWriter_grids_st.hpp + * + * Created on: Sep 3, 2015 + * Author: Pietro Incardona + */ + +#ifndef SRC_VTKWRITER_GRIDS_ST_HPP_ +#define SRC_VTKWRITER_GRIDS_ST_HPP_ + + +#include <boost/mpl/pair.hpp> +#include "VTKWriter_grids_util.hpp" +#include "util/util_debug.hpp" +#include "util/convert.hpp" + +/*! \brief for each combination in the cell grid you can have different grids + * + * \tparam Grid type of grid + * + */ +template <typename Grid> +struct cell_grid +{ + //! vector of fused grids + openfpm::vector<const Grid *> grids; + + //! combination + //! (used to calculate the grid shift from the starting point of the cell) + comb<Grid::dims> cmb; + + cell_grid() {} + + /*! \brief construct a cell grid + * + * \param cmb in which position this grid live + * + */ + cell_grid(const comb<Grid::dims> & cmb) + :cmb(cmb) + {} + + /*! \brief copy contructor + * + * \param cg element to copy + * + */ + cell_grid(const cell_grid<Grid> & cg) + { + this->operator=(cg); + } + + /*! \brief copy constructor + * + * \param cg element to copy + * + */ + cell_grid(cell_grid<Grid> && cg) + { + this->operator=(cg); + } + + /*! \brief Copy the cell grid + * + * \param cg cell_grid to copy + * + * \return itself + * + */ + cell_grid<Grid> & operator=(const cell_grid<Grid> & cg) + { + cmb = cg.cmb; + grids = cg.grids; + + return *this; + } + + /*! \brief Copy the cell grid + * + * \param cg cell_grid to copy + * + * \return itself + * + */ + cell_grid<Grid> & operator=(cell_grid<Grid> && cg) + { + cmb = cg.cmb; + grids = cg.grids; + + return *this; + } +}; + +/*! \brief convert a staggered element into a string for vtk write + * + * \tparam Grid type of the grid + * \tparam St space type + * + */ +template <typename Grid, typename St> +class ele_g_st +{ +public: + + //! grid type + typedef Grid value_type; + + //! constructor + ele_g_st(){}; + + /*! \brief convert a staggered grid property into a string + * + * \param offset shift of the staggered element + * \param spacing of the grid + * \param dom Part of the grid that is real domain + * + */ + ele_g_st(const Point<Grid::dims,St> & offset, + const Point<Grid::dims,St> & spacing, + const Box<Grid::dims,St> & dom) + :offset(offset),spacing(spacing),dom(dom) + {} + + //! output string + std::string dataset; + //! fused grids + openfpm::vector<cell_grid<Grid>> g; + //! offset where it start the grid + Point<Grid::dims,St> offset; + //! spacing of the grid + Point<Grid::dims,St> spacing; + //! Part of the grid that is real domain + Box<Grid::dims,size_t> dom; + + /*! \brief Copy constructor + * + * \param ele element to copy + * + */ + inline ele_g_st(const ele_g_st & ele) + { + this->operator=(ele); + } + + /*! \brief Copy constructor + * + * \param ele element to copy + * + */ + inline ele_g_st(ele_g_st && ele) + { + this->operator=(ele); + } + + /*! \brief Copy the object + * + * \param ele ele_g_st to copy + * + * \return itself + * + */ + ele_g_st<Grid,St> & operator=(const ele_g_st & ele) + { + dataset = ele.dataset; + g = ele.g; + offset = ele.offset; + spacing = ele.spacing; + dom = ele.dom; + + return *this; + } + + /*! \brief Copy the object + * + * \param ele ele_g_st to copy + * + * \return itself + * + */ + ele_g_st<Grid,St> & operator=(ele_g_st && ele) + { + dataset = ele.dataset; + g = ele.g; + offset = ele.offset; + spacing = ele.spacing; + dom = ele.dom; + + return *this; + } +}; + +/*! + * + * It write a VTK format file in case of grids defined on a space + * + * \tparam boost::mpl::pair<G,S> + * + * where G is the type of grid S is the type of space, float, double ... + * + */ +template <typename pair> +class VTKWriter<pair,VECTOR_ST_GRIDS> +{ + //! Vector of grids + openfpm::vector< ele_g_st<typename pair::first,typename pair::second> > vg; + + /*! \brief Get the total number of points + * + * \return the total number + * + */ + size_t get_total() + { + size_t tot = 0; + + //! Calculate the full number of vertices + for (size_t i = 0 ; i < vg.size() ; i++) + { + for (size_t j = 0 ; j < vg.get(i).g.size() ; j++) + { + if (vg.get(i).g.get(j).grids.size() != 0) + tot += vg.get(i).g.get(j).grids.get(0)->size(); + } + } + return tot; + } + + /*! \brief It get the vertex properties list + * + * It get the vertex properties list of the vertex defined as VTK header + * + * \return a string that define the vertex properties in graphML format + * + */ + + std::string get_vertex_properties_list() + { + //! vertex property output string + std::string v_out; + + // write the number of vertex + v_out += "VERTICES " + std::to_string(get_total()) + " " + std::to_string(get_total() * 2) + "\n"; + + // return the vertex properties string + return v_out; + } + + /*! \brief It get the vertex properties list + * + * It get the vertex properties list of the vertex defined as a VTK header + * + * \return a string that define the vertex properties in graphML format + * + */ + + std::string get_point_properties_list() + { + //! vertex property output string + std::string v_out; + + // write the number of vertex + v_out += "POINTS " + std::to_string(get_total()) + " float" + "\n"; + + // return the vertex properties string + return v_out; + } + + /*! \brief Create the VTK point definition + * + * \return the list of points + * + */ + std::string get_point_list() + { + //! vertex node output string + std::stringstream v_out; + + //! For each sub-domain + for (size_t i = 0 ; i < vg.size() ; i++) + { + // For each position in the cell + for (size_t j = 0 ; j < vg.get(i).g.size() ; j++) + { + // If there are no grid in this position + if (vg.get(i).g.get(j).grids.size() == 0) + continue; + + //! Get the iterator + auto it = vg.get(i).g.get(j).grids.get(0)->getIterator(); + + //! Where the grid is defined + Box<pair::first::dims,typename pair::second> dom; + + // Calculate the offset of the grid considering its cell position + Point<pair::first::dims,typename pair::second> middle = vg.get(i).spacing / 2; + Point<pair::first::dims,typename pair::second> one; + one.one(); + one = one + toPoint<pair::first::dims,typename pair::second>::convert(vg.get(i).g.get(j).cmb); + Point<pair::first::dims,typename pair::second> offset = pmul(middle,one) + vg.get(i).offset; + + // if there is the next element + while (it.isNext()) + { + Point<pair::first::dims,typename pair::second> p; + p = it.get().toPoint(); + p = pmul(p,vg.get(i).spacing) + offset; + + if (pair::first::dims == 2) + v_out << p.toString() << " 0.0" << "\n"; + else + v_out << p.toString() << "\n"; + + // increment the iterator + ++it; + } + } + } + + // return the vertex list + return v_out.str(); + } + + /*! \brief It generate a name for the property cell component + * + * \param k component in the cell + * + * \return property name + * + */ + std::string get_prop_components(size_t k) + { + std::stringstream v_out; + + //! For each sub-domain + for (size_t i = 0 ; i < vg.size() ; i++) + { + // For each position in the cell + for (size_t j = 0 ; j < vg.get(i).g.size() ; j++) + { + if (k < vg.get(i).g.get(j).grids.size()) + { + // get the combination string + v_out << vg.get(i).g.get(j).cmb.to_string(); + } + } + } + + return v_out.str(); + } + + /*! \brief Create the VTK properties output + * + * \param k component + * \param prop_name property name + * + * \return the property output string for the grid + * + */ + std::string get_properties_output(size_t k, std::string prop_name) + { + //! vertex node output string + std::stringstream v_out; + + // Check if T is a supported format + // for now we support only scalar of native type + + typedef typename boost::mpl::at<typename pair::first::value_type::type,boost::mpl::int_<0>>::type ctype; + + std::string type = getType<ctype>(); + + // if the type is not supported return + if (type.size() == 0) + { +#ifndef DISABLE_ALL_RTTI + std::cerr << "Error " << __FILE__ << ":" << __LINE__ << " the type " << demangle(typeid(ctype).name()) << " is not supported by vtk\n"; +#endif + return ""; + } + + std::string prp_cp = get_prop_components(k); + + // Create point data properties + v_out << "SCALARS " << prop_name << "_" << prp_cp << " " << type + "\n"; + + // Default lookup table + v_out << "LOOKUP_TABLE default\n"; + + //! For each sub-domain + for (size_t i = 0 ; i < vg.size() ; i++) + { + // For each position in the cell + for (size_t j = 0 ; j < vg.get(i).g.size() ; j++) + { + // If there are no grid in this position + if (vg.get(i).g.get(j).grids.size() == 0) + continue; + + if (k < vg.get(i).g.get(j).grids.size()) + { + // Grid source + auto & g_src = *vg.get(i).g.get(j).grids.get(k); + + //! Get the iterator + auto it = g_src.getIterator(); + + //! Where the grid is defined + Box<pair::first::dims,typename pair::second> dom; + + // if there is the next element + while (it.isNext()) + { + auto key = it.get(); + + v_out << std::to_string(g_src.template get<0>(key)) << "\n"; + + // increment the iterator + ++it; + } + } + else + { + // Grid source + auto & g_src = *vg.get(i).g.get(j).grids.get(0); + + //! Get the iterator + auto it = g_src.getIterator(); + + //! Where the grid is defined + Box<pair::first::dims,typename pair::second> dom; + + // if there is the next element + while (it.isNext()) + { + v_out << "0\n"; + + // increment the iterator + ++it; + } + } + } + } + + // return the vertex list + return v_out.str(); + } + + /*! \brief Return the output of the domain property + * + * \return vtk output + * + */ + std::string lastProp() + { + //! vertex node output string + std::stringstream v_out; + + // Create point data properties + v_out << "SCALARS domain float\n"; + + // Default lookup table + v_out << "LOOKUP_TABLE default\n"; + + //! For each sub-domain + for (size_t i = 0 ; i < vg.size() ; i++) + { + // For each position in the cell + for (size_t j = 0 ; j < vg.get(i).g.size() ; j++) + { + // If there are no grid in this position + if (vg.get(i).g.get(j).grids.size() == 0) + continue; + + //! Get the iterator + auto it = vg.get(i).g.get(j).grids.get(0)->getIterator(); + + // if there is the next element + while (it.isNext()) + { + if (vg.get(i).dom.isInside(it.get().toPoint()) == true) + v_out << "1.0\n"; + else + v_out << "0.0\n"; + + // increment the iterator and counter + ++it; + } + } + } + + return v_out.str(); + } + + /*! \brief Get the maximum number of fused grid + * + * \return the maximum number of fused grids + * + */ + size_t getMaxFused() + { + size_t max = 0; + + //! For each sub-domain + for (size_t i = 0 ; i < vg.size() ; i++) + { + // For each position in the cell + for (size_t j = 0 ; j < vg.get(i).g.size() ; j++) + { + // If there are no grid in this position + if (vg.get(i).g.get(j).grids.size() > max) + max = vg.get(i).g.get(j).grids.size(); + } + } + + return max; + } + + /*! \brief Create the VTK vertex definition + * + * \return the string with the vertices as string + * + */ + std::string get_vertex_list() + { + //! vertex node output string + std::string v_out; + + size_t k = 0; + + //! For each sub-domain + for (size_t i = 0 ; i < vg.size() ; i++) + { + // For each position in the cell + for (size_t j = 0 ; j < vg.get(i).g.size() ; j++) + { + // If there are no grid in this position + if (vg.get(i).g.get(j).grids.size() == 0) + continue; + //! For each grid point create a vertex + auto it = vg.get(i).g.get(j).grids.get(0)->getIterator(); + + while (it.isNext()) + { + v_out += "1 " + std::to_string(k) + "\n"; + + ++k; + ++it; + } + } + } + // return the vertex list + return v_out; + } + + /*! \brief Get the point data header + * + * \return a string with the point data header for VTK format + * + */ + + std::string get_point_data_header() + { + std::string v_out; + + v_out += "POINT_DATA " + std::to_string(get_total()) + "\n"; + + return v_out; + } + + /*! \brief Append the grid to the sub-domain, if for a sub-domain we have a grid that is overlapping + * fuse them, otherwise create a new combination and grid + * + * \param id sub-domain id + * \param g grid to output + * \param cmb position of the grid + * + * \return a valid slot, if does not exist it append the grid at the end with the new combination + * + */ + void append_grid(size_t id, const typename pair::first & g, const comb<pair::first::dims> & cmb) + { + for(size_t i = 0 ; i < vg.get(id).g.size() ; i++) + { + // for each defined grid if exist the combination fuse + if (cmb == vg.get(id).g.get(i).cmb) + { + vg.get(id).g.get(i).grids.add(&g); + return; + } + } + + // if the combination does not exist add the grid + cell_grid< typename pair::first> cg(cmb); + vg.get(id).g.add(cg); + vg.get(id).g.last().grids.add(&g); + } + +public: + + /*! + * + * VTKWriter constructor + * + */ + VTKWriter() + {} + + /*! \brief Add grid dataset + * + * \param i sub-domain id + * \param g Grid to add + * \param offset grid offset + * \param spacing spacing of the grid + * \param dom part of the spacethat is the domain + * \param cmb position of the grid + * + */ + void add(size_t i, + const typename pair::first & g, + const Point<pair::first::dims,typename pair::second> & offset, + const Point<pair::first::dims,typename pair::second> & spacing, + const Box<pair::first::dims,typename pair::second> & dom, + const comb<pair::first::dims> & cmb) + { + //! Increase the size + if (i >= vg.size()) + vg.resize(i+1); + + vg.get(i).offset = offset; + vg.get(i).spacing = spacing; + vg.get(i).dom = dom; + + // append the grid + append_grid(i,g,cmb); + } + + /*! \brief It write a VTK file from a graph + * + * \tparam prp_out which properties to output [default = -1 (all)] + * + * \param file path where to write + * \param g_name of the set of grids + * \param ft specify if it is a VTK BINARY or ASCII file [default = ASCII] + * + * \return true if the file is succeful written + * + */ + + template<int prp = -1> bool write(std::string file, + std::string g_name = "grids", + file_type ft = file_type::ASCII) + { + // Header for the vtk + std::string vtk_header; + // Point list of the VTK + std::string point_list; + // Vertex list of the VTK + std::string vertex_list; + // Graph header + std::string vtk_binary_or_ascii; + // vertex properties header + std::string point_prop_header; + // edge properties header + std::string vertex_prop_header; + // Data point header + std::string point_data_header; + // Data point + std::string point_data; + + // VTK header + vtk_header = "# vtk DataFile Version 3.0\n" + + g_name + "\n"; + + // Choose if binary or ASCII + if (ft == file_type::ASCII) + {vtk_header += "ASCII\n";} + else + {vtk_header += "BINARY\n";} + + // Data type for graph is DATASET POLYDATA + vtk_header += "DATASET POLYDATA\n"; + + // point properties header + point_prop_header = get_point_properties_list(); + + // Get point list + point_list = get_point_list(); + + // vertex properties header + vertex_prop_header = get_vertex_properties_list(); + + // Get vertex list + vertex_list = get_vertex_list(); + + // Get the point data header + point_data_header = get_point_data_header(); + + // Get the maximum number of fused grids + size_t mf = getMaxFused(); + + // For each property in the vertex type produce a point data + for (size_t i = 0 ; i < mf ; i++) + point_data += get_properties_output(i,g_name); + + lastProp(); + + + // write the file + std::ofstream ofs(file); + + // Check if the file is open + if (ofs.is_open() == false) + {std::cerr << "Error cannot create the VTK file: " + file + "\n";} + + ofs << vtk_header << point_prop_header << point_list << + vertex_prop_header << vertex_list << point_data_header << point_data; + + // Close the file + + ofs.close(); + + // Completed succefully + return true; + } +}; + + +#endif /* SRC_VTKWRITER_GRIDS_ST_HPP_ */ diff --git a/src/VTKWriter/VTKWriter_grids_util.hpp b/src/VTKWriter/VTKWriter_grids_util.hpp new file mode 100644 index 0000000000000000000000000000000000000000..cf95d89dd9411af3f5bc19605637156d5272a433 --- /dev/null +++ b/src/VTKWriter/VTKWriter_grids_util.hpp @@ -0,0 +1,1117 @@ +/* + * VTKWriter_grids_util.hpp + * + * Created on: Aug 10, 2015 + * Author: Pietro Incardona + */ + +#ifndef SRC_VTKWRITER_GRIDS_UTIL_HPP_ +#define SRC_VTKWRITER_GRIDS_UTIL_HPP_ + +#include "util/util_debug.hpp" +#include "is_vtk_writable.hpp" +#include "byteswap_portable.hpp" + +/*! \brief Return the Attributes name from the type + * + * + */ +template<typename ele_g, bool has_attributes> +struct getAttrName +{ + /*! \brief Get attribute name + * + * \param i id of the attribute + * \param oprp post-fix to add + * \param prop_names properties name + * + * \return the string with the property name + * + */ + static inline std::string get(size_t i, const openfpm::vector<std::string> & prop_names, const std::string & oprp) + { + return ele_g::value_type::value_type::attributes::name[i] + oprp; + } +}; + +/*! \brief Return the Attributes name from the type + * + * This is the case when the type has no name + * + */ +template<typename ele_g> +struct getAttrName<ele_g,false> +{ + /*! \brief Get attribute name + * + * \param i id of the attribute + * \param oprp post-fix to add + * \param prop_names properties name + * + * \return return the string with the property name + * + */ + static inline std::string get(size_t i, const openfpm::vector<std::string> & prop_names, const std::string & oprp) + { + if (i >= prop_names.size()) + { + return std::string("attr" + std::to_string(i) + oprp); + } + else + { + return prop_names.get(i) + oprp; + } + } +}; + +/*! \brief Get the vtk properties header appending a prefix at the end + * + * \tparam has_attributes indicate if the properties have attributes name + * \param oprp prefix + * + */ +template<unsigned int i, typename ele_g, bool has_attributes> std::string get_point_property_header_impl(const std::string & oprp, const openfpm::vector<std::string> & prop_names) +{ + //! vertex node output string + std::string v_out; + + typedef typename boost::mpl::at<typename ele_g::value_type::value_type::type,boost::mpl::int_<i>>::type ctype; + + // Check if T is a supported format + // for now we support only scalar of native type + if (std::rank<ctype>::value == 1) + { + if (std::extent<ctype>::value <= 3) + { + //Get type of the property + std::string type = getType<typename std::remove_all_extents<ctype>::type>(); + + // if the type is not supported skip-it + if (type.size() == 0) + { +#ifndef DISABLE_ALL_RTTI + std::cerr << "Error " << __FILE__ << ":" << __LINE__ << " the type " << demangle(typeid(ctype).name()) << " is not supported by vtk\n"; +#endif + return ""; + } + + // Create point data properties + v_out += "VECTORS " + getAttrName<ele_g,has_attributes>::get(i,prop_names,oprp) + " " + type + "\n"; + } + } + else + { + std::string type = getType<typename std::remove_all_extents<ctype>::type>(); + + // if the type is not supported return + if (type.size() == 0) + { + // We check if is a custom vtk writable object + + if (is_vtk_writable<ctype>::value == true) + { + type = getType<typename vtk_type<ctype,is_custom_vtk_writable<ctype>::value>::type >(); + + // We check if it is a vector or scalar like type + if (vtk_dims<ctype>::value == 1) + { + v_out += "SCALARS " + getAttrName<ele_g,has_attributes>::get(i,prop_names,oprp) + " " + type + "\n"; + v_out += "LOOKUP_TABLE default\n"; + } + else + v_out += "VECTORS " + getAttrName<ele_g,has_attributes>::get(i,prop_names,oprp) + " " + type + "\n"; + } + + return v_out; + } + + // Create point data properties + v_out += "SCALARS " + getAttrName<ele_g,has_attributes>::get(i,prop_names,oprp) + " " + type + "\n"; + + // Default lookup table + v_out += "LOOKUP_TABLE default\n"; + + } + + // return the vertex list + return v_out; +} + + + +/*! \brief Get the vtp properties header appending a prefix at the end + * + * \tparam has_attributes indicate if the properties have attributes name + * \param oprp prefix + * + */ +template<unsigned int i, typename ele_g, bool has_attributes> std::string get_point_property_header_impl_new_pvtp(const std::string & oprp, const openfpm::vector<std::string> & prop_names) +{ + //! vertex node output string + std::string v_out; + + typedef typename boost::mpl::at<typename ele_g::value_type::value_type::type,boost::mpl::int_<i>>::type ctype; + + // Check if T is a supported format + // for now we support only scalar of native type + if (std::rank<ctype>::value == 1) + { + if (std::extent<ctype>::value <= 3) + { + //Get type of the property + std::string type = getTypeNew<typename std::remove_all_extents<ctype>::type>(); + + // if the type is not supported skip-it + if (type.size() == 0) + { +#ifndef DISABLE_ALL_RTTI + std::cerr << "Error " << __FILE__ << ":" << __LINE__ << " the type " << demangle(typeid(ctype).name()) << " is not supported by vtp\n"; +#endif + return ""; + } + + // Create point data properties + v_out += " <PDataArray type=\""+type+"\" Name=\""+getAttrName<ele_g,has_attributes>::get(i,prop_names,oprp)+"\""+" NumberOfComponents=\"3\"/>\n"; + //v_out += "VECTORS " + getAttrName<ele_g,has_attributes>::get(i,prop_names,oprp) + " " + type + "\n"; + } + } + else + { + std::string type = getTypeNew<typename std::remove_all_extents<ctype>::type>(); + + // if the type is not supported return + if (type.size() == 0) + { + // We check if is a custom vtk writable object + + if (is_vtk_writable<ctype>::value == true) + { + type = getTypeNew<typename vtk_type<ctype,is_custom_vtk_writable<ctype>::value>::type >(); + + // We check if it is a vector or scalar like type + if (vtk_dims<ctype>::value == 1) { + v_out += " <PDataArray type=\"" + type + "\" Name=\"" + + getAttrName<ele_g, has_attributes>::get(i, prop_names, oprp) + "\"/>\n"; + //v_out += "SCALARS " + getAttrName<ele_g,has_attributes>::get(i,prop_names,oprp) + " " + type + "\n"; + } + else{ + v_out += " <PDataArray type=\""+type+"\" Name=\""+getAttrName<ele_g,has_attributes>::get(i,prop_names,oprp)+"\""+" NumberOfComponents=\"3\"/>\n"; + //v_out += "VECTORS " + getAttrName<ele_g,has_attributes>::get(i,prop_names,oprp) + " " + type + "\n"; + } + } + + return v_out; + } + + // Create point data properties + v_out += " <PDataArray type=\"" + type + "\" Name=\"" + + getAttrName<ele_g, has_attributes>::get(i, prop_names, oprp) + "\"/>\n"; + //v_out += "SCALARS " + getAttrName<ele_g,has_attributes>::get(i,prop_names,oprp) + " " + type + "\n"; + // Default lookup table + //v_out += "LOOKUP_TABLE default\n"; + + } + + // return the vertex list + return v_out; +} + + +/*! \brief Get the vtk properties header appending a prefix at the end + * + * \tparam has_attributes indicate if the properties have attributes name + * \param oprp prefix + * + */ +template<unsigned int i, typename ele_g, bool has_attributes> std::string get_point_property_header_impl_new(const std::string & oprp, const openfpm::vector<std::string> & prop_names,file_type ft) +{ + //! vertex node output string + std::string v_out; + + typedef typename boost::mpl::at<typename ele_g::value_type::value_type::type,boost::mpl::int_<i>>::type ctype; + + // Check if T is a supported format + // for now we support only scalar of native type + if (std::rank<ctype>::value == 1) + { + if (std::extent<ctype>::value <= 3) + { + //Get type of the property + std::string type = getTypeNew<typename std::remove_all_extents<ctype>::type>(); + + // if the type is not supported skip-it + if (type.size() == 0) + { +#ifndef DISABLE_ALL_RTTI + std::cerr << "Error " << __FILE__ << ":" << __LINE__ << " the type " << demangle(typeid(ctype).name()) << " is not supported by vtk\n"; +#endif + return ""; + } + + // Create point data properties + v_out += " <DataArray type=\""+type+"\" Name=\""+getAttrName<ele_g,has_attributes>::get(i,prop_names,oprp)+"\""+" NumberOfComponents=\"3\""; + if(ft==file_type::ASCII){ + v_out+=" format=\"ascii\">\n"; + } + else{ + v_out+=" format=\"binary\">\n"; + } + + //v_out += "VECTORS " + getAttrName<ele_g,has_attributes>::get(i,prop_names,oprp) + " " + type + "\n"; + } + } + else + { + std::string type = getTypeNew<typename std::remove_all_extents<ctype>::type>(); + + // if the type is not supported return + if (type.size() == 0) + { + // We check if is a custom vtk writable object + + if (is_vtk_writable<ctype>::value == true) + { + type = getTypeNew<typename vtk_type<ctype,is_custom_vtk_writable<ctype>::value>::type >(); + + // We check if it is a vector or scalar like type + if (vtk_dims<ctype>::value == 1) { + v_out += " <DataArray type=\"" + type + "\" Name=\"" + + getAttrName<ele_g, has_attributes>::get(i, prop_names, oprp) + "\""; + if (ft == file_type::ASCII) { + v_out += " format=\"ascii\">\n"; + } else { + v_out += " format=\"binary\">\n"; + } + //v_out += "SCALARS " + getAttrName<ele_g,has_attributes>::get(i,prop_names,oprp) + " " + type + "\n"; + } + else{ + v_out += " <DataArray type=\""+type+"\" Name=\""+getAttrName<ele_g,has_attributes>::get(i,prop_names,oprp)+"\""+" NumberOfComponents=\"3\""; + if(ft==file_type::ASCII){ + v_out+=" format=\"ascii\">\n"; + } + else{ + v_out+=" format=\"binary\">\n"; + } + //v_out += "VECTORS " + getAttrName<ele_g,has_attributes>::get(i,prop_names,oprp) + " " + type + "\n"; + } + } + + return v_out; + } + + // Create point data properties + v_out += " <DataArray type=\"" + type + "\" Name=\"" +getAttrName<ele_g, has_attributes>::get(i, prop_names, oprp) + "\""; + if (ft == file_type::ASCII) { + v_out += " format=\"ascii\">\n"; + } + else { + v_out += " format=\"binary\">\n"; + } + //v_out += "SCALARS " + getAttrName<ele_g,has_attributes>::get(i,prop_names,oprp) + " " + type + "\n"; + // Default lookup table + //v_out += "LOOKUP_TABLE default\n"; + + } + + // return the vertex list + return v_out; +} + +/*! \brief Write the vectror property + * + * \tparam dim Dimensionality of the property + * + */ +template<unsigned int dim, typename T> +class prop_write_out +{ +public: + + template<typename vector, typename iterator, typename I> static void write(std::ostringstream & v_out, vector & vg, size_t k, iterator & it, file_type ft) + { + if (ft == file_type::ASCII) + { + // Print the properties + for (size_t i1 = 0 ; i1 < vtk_dims<T>::value ; i1++) + { + v_out << vg.get(k).g.get_o(it.get()).template get<I::value>().get_vtk(i1) << " "; + } + if (vtk_dims<T>::value == 2) + { + v_out << "0.0"; + } + v_out << "\n"; + } + else + { + typedef decltype(vg.get(k).g.get_o(it.get()).template get<I::value>().get_vtk(0)) ctype_; + typedef typename std::remove_reference<ctype_>::type ctype; + + // Print the properties + for (size_t i1 = 0 ; i1 < vtk_dims<T>::value ; i1++) + { + typename is_vtk_writable<ctype>::base tmp = vg.get(k).g.get_o(it.get()).template get<I::value>().get_vtk(i1); + tmp = swap_endian_lt(tmp); + v_out.write((const char *)&tmp,sizeof(tmp)); + } + if (vtk_dims<T>::value == 2) + { + typename is_vtk_writable<ctype>::base zero = 0.0; + zero = swap_endian_lt(zero); + v_out.write((const char *)&zero,sizeof(zero)); + } + } + } +}; + +/*! \brief Write the scalar property + * + * + */ +template<typename T> +class prop_write_out<0,T> +{ +public: + + /*! \brief Write the property + * + * \param v_out output string of the property + * \param vg vector of properties + * \param k data-set to output + * \param it iterator with the point to output + * \param ft output type BINARY or ASCII + * + */ + template<typename vector, typename iterator, typename I> static void write(std::ostringstream & v_out, vector & vg, size_t k, iterator & it, file_type ft) + { + typedef decltype(vg.get(k).g.template get<I::value>(it.get())) ctype_; + typedef typename std::remove_const<typename std::remove_reference<ctype_>::type>::type ctype; + + if (ft == file_type::ASCII) + { + // Print the property + v_out << vg.get(k).g.template get<I::value>(it.get()) << "\n"; + } + else + { + typename is_vtk_writable<ctype>::base tmp = vg.get(k).g.template get<I::value>(it.get()); + tmp = swap_endian_lt(tmp); + v_out.write((const char *)&tmp,sizeof(tmp)); + } + } +}; + +/*! \brief Write the vectror property + * + * \tparam dim Dimensionality of the property + * + */ +template<unsigned int dim, typename T> +class prop_write_out_new +{ +public: + + template<typename vector, typename iterator, typename I> static void write(std::ostringstream & v_out, vector & vg, size_t k, iterator & it, file_type ft) + { + + if (ft == file_type::ASCII) + { + // Print the properties + for (size_t i1 = 0 ; i1 < vtk_dims<T>::value ; i1++) + { + v_out << vg.get(k).g.get_o(it.get()).template get<I::value>().get_vtk(i1) << " "; + } + if (vtk_dims<T>::value == 2) + { + v_out << "0.0"; + } + v_out << "\n"; + } + else + { + typedef decltype(vg.get(k).g.get_o(it.get()).template get<I::value>().get_vtk(0)) ctype_; + typedef typename std::remove_reference<ctype_>::type ctype; + + // Print the properties + for (size_t i1 = 0 ; i1 < vtk_dims<T>::value ; i1++) + { + typename is_vtk_writable<ctype>::base tmp = vg.get(k).g.get_o(it.get()).template get<I::value>().get_vtk(i1); + v_out.write((const char *)&tmp,sizeof(tmp)); + } + if (vtk_dims<T>::value == 2) + { + typename is_vtk_writable<ctype>::base zero = 0.0; + v_out.write((const char *)&zero,sizeof(zero)); + } + } + } +}; + +/*! \brief Write the scalar property + * + * + */ +template<typename T> +class prop_write_out_new<0,T> +{ +public: + + /*! \brief Write the property + * + * \param v_out output string of the property + * \param vg vector of properties + * \param k data-set to output + * \param it iterator with the point to output + * \param ft output type BINARY or ASCII + * + */ + template<typename vector, typename iterator, typename I> static void write(std::ostringstream & v_out, vector & vg, size_t k, iterator & it, file_type ft) + { + typedef decltype(vg.get(k).g.template get<I::value>(it.get())) ctype_; + typedef typename std::remove_const<typename std::remove_reference<ctype_>::type>::type ctype; + + if (ft == file_type::ASCII) + { + // Print the property + v_out << vg.get(k).g.template get<I::value>(it.get()) << "\n"; + } + else + { + typename is_vtk_writable<ctype>::base tmp = vg.get(k).g.template get<I::value>(it.get()); + v_out.write((const char *)&tmp,sizeof(tmp)); + } + } +}; + + +/*! \brief This class is an helper to create properties output from scalar and compile-time array elements + * + * \tparam I It is an boost::mpl::int_ that indicate which property we are writing + * \tparam ele_g element type that store the grid information + * \tparam St type of space where the grid live + * \tparam T the type of the property + * \tparam is_writable flag that indicate if a property is writable + * + */ +template<typename I, typename ele_g, typename St, typename T, bool is_writable> +struct meta_prop +{ + /*! \brief Write a vtk compatible type into vtk format + * + * \param vg array of elements to write + * \param v_out string containing the string + * \param prop_names property names + * \param ft ASCII or BINARY + * + */ + inline meta_prop(const openfpm::vector< ele_g > & vg, std::string & v_out, const openfpm::vector<std::string> & prop_names, file_type ft) + { + // actual string size + size_t sz = v_out.size(); + + // Produce the point properties header + v_out += get_point_property_header_impl<I::value,ele_g,has_attributes<typename ele_g::value_type::value_type>::value>("",prop_names); + + // If the output has changed, we have to write the properties + if (v_out.size() != sz) + { + std::ostringstream stream_out; + if (std::is_same<T,float>::value == true) + {stream_out << std::setprecision(7);} + else + {stream_out << std::setprecision(16);} + + // Produce point data + + for (size_t k = 0 ; k < vg.size() ; k++) + { + //! Get a vertex iterator + auto it = vg.get(k).g.getIterator(); + + // if there is the next element + while (it.isNext()) + { + prop_write_out<vtk_dims<T>::value != 1,T>::template write<decltype(vg),decltype(it),I>(stream_out,vg,k,it,ft); + + // increment the iterator and counter + ++it; + } + } + + v_out += stream_out.str(); + + if (ft == file_type::BINARY) + v_out += "\n"; + } + } +}; + +//! Partial specialization for N=1 1D-Array +template<typename I, typename ele_g, typename St, typename T, size_t N1, bool is_writable> +struct meta_prop<I, ele_g,St,T[N1],is_writable> +{ + /*! \brief Write a vtk compatible type into vtk format + * + * \param vg array of elements to write + * \param v_out string containing the string + * \param prop_names properties name + * \param ft ASCII or BINARY + * + */ + inline meta_prop(const openfpm::vector< ele_g > & vg, std::string & v_out, const openfpm::vector<std::string> & prop_names , file_type ft) + { + // actual string size + size_t sz = v_out.size(); + + // Produce the point properties header + v_out += get_point_property_header_impl<I::value,ele_g,has_attributes<typename ele_g::value_type::value_type>::value>("",prop_names); + + // If the output has changed, we have to write the properties + if (v_out.size() != sz) + { + std::ostringstream stream_out; + if (std::is_same<T,float>::value == true) + {stream_out << std::setprecision(7);} + else + {stream_out << std::setprecision(16);} + + // Produce point data + + for (size_t k = 0 ; k < vg.size() ; k++) + { + //! Get a vertex iterator + auto it = vg.get(k).g.getIterator(); + + // if there is the next element + while (it.isNext()) + { + if (ft == file_type::ASCII) + { + // Print the properties + stream_out << vg.get(k).g.template get<I::value>(it.get())[0]; + for (size_t i1 = 1 ; i1 < N1 ; i1++) + {stream_out << " " << vg.get(k).g.template get<I::value>(it.get())[i1];} + + if (N1 == 2) + {stream_out << " " << (decltype(vg.get(k).g.template get<I::value>(it.get())[0])) 0;} + + stream_out << "\n"; + } + else + { + T tmp; + + // Print the properties + for (size_t i1 = 0 ; i1 < N1 ; i1++) + { + tmp = vg.get(k).g.template get<I::value>(it.get())[i1]; + tmp = swap_endian_lt(tmp); + stream_out.write((const char *)&tmp,sizeof(T)); + } + if (N1 == 2) + { + tmp = 0.0; + tmp = swap_endian_lt(tmp); + stream_out.write((const char *)&tmp,sizeof(T)); + } + } + + // increment the iterator and counter + ++it; + } + } + + v_out += stream_out.str(); + + if (ft == file_type::BINARY) + {v_out += "\n";} + } + } +}; + +//! Partial specialization for N=2 2D-Array +template<typename I, typename ele_g, typename St ,typename T,size_t N1,size_t N2, bool is_writable> +struct meta_prop<I, ele_g,St, T[N1][N2],is_writable> +{ + + /*! \brief Write a vtk compatible type into vtk format + * + * \param vg array of elements to write + * \param v_out string containing the string + * \param prop_names property names + * \param ft ASCII or BINARY + * + */ + inline meta_prop(const openfpm::vector< ele_g > & vg, std::string & v_out, const openfpm::vector<std::string> & prop_names, file_type ft) + { + for (size_t i1 = 0 ; i1 < N1 ; i1++) + { + for (size_t i2 = 0 ; i2 < N2 ; i2++) + { + std::ostringstream stream_out; + if (std::is_same<T,float>::value == true) + {stream_out << std::setprecision(7);} + else + {stream_out << std::setprecision(16);} + + // actual string size + size_t sz = v_out.size(); + + // Produce the point properties header + v_out += get_point_property_header_impl<I::value,ele_g,has_attributes<typename ele_g::value_type::value_type>::value>("_" + std::to_string(i1) + "_" + std::to_string(i2),prop_names); + + // If the output has changed, we have to write the properties + if (v_out.size() != sz) + { + // Produce point data + + for (size_t k = 0 ; k < vg.size() ; k++) + { + //! Get a vertex iterator + auto it = vg.get(k).g.getIterator(); + + // if there is the next element + while (it.isNext()) + { + T tmp; + + if (ft == file_type::ASCII) + { + // Print the property + stream_out << vg.get(k).g.template get<I::value>(it.get())[i1][i2] << "\n"; + } + else + { + tmp = vg.get(k).g.template get<I::value>(it.get())[i1][i2]; + tmp = swap_endian_lt(tmp); + stream_out.write((const char *)&tmp,sizeof(tmp)); + } + + // increment the iterator and counter + ++it; + } + } + + v_out += stream_out.str(); + + if (ft == file_type::BINARY) + v_out += "\n"; + } + } + } + } +}; + + +//! Specialication when is not writable +template<typename I, typename ele_g, typename St, typename T> +struct meta_prop<I,ele_g,St,T,false> +{ + + /*! \brief Write a vtk compatible type into vtk format + * + * \param vg array of elements to write + * \param v_out string containing the string + * \param prop_names properties name + * \param ft ASCII or BINARY + * + */ + inline meta_prop(const openfpm::vector< ele_g > & vg, std::string & v_out, const openfpm::vector<std::string> & prop_names, file_type ft) + { + } +}; + + +/*! \brief This class is an helper to create properties output from scalar and compile-time array elements + * + * \tparam I It is an boost::mpl::int_ that indicate which property we are writing + * \tparam ele_g element type that store the grid information + * \tparam St type of space where the grid live + * \tparam T the type of the property + * \tparam is_writable flag that indicate if a property is writable + * + */ +template<typename I, typename ele_g, typename St, typename T, bool is_writable> +struct meta_prop_new +{ + /*! \brief Write a vtk compatible type into vtk format + * + * \param vg array of elements to write + * \param v_out string containing the string + * \param prop_names property names + * \param ft ASCII or BINARY + * + */ + inline meta_prop_new(const openfpm::vector< ele_g > & vg, std::string & v_out, const openfpm::vector<std::string> & prop_names, file_type ft) + { + // actual string size + size_t sz = v_out.size(); + std::ostringstream v_outToEncode_; + std::string v_Encoded; + + if (std::is_same<T,float>::value == true) + {v_outToEncode_ << std::setprecision(7);} + else + {v_outToEncode_ << std::setprecision(16);} + + // Produce the point properties header + v_out += get_point_property_header_impl_new<I::value,ele_g,has_attributes<typename ele_g::value_type::value_type>::value>("",prop_names,ft); + + // If the output has changed, we have to write the properties + if (v_out.size() != sz) + { + if (ft == file_type::BINARY) { + size_t pp; + v_outToEncode_.write((char *)&pp,8); + } + // Produce point data + for (size_t k = 0 ; k < vg.size() ; k++) + { + //! Get a vertex iterator + auto it = vg.get(k).g.getIterator(); + + // if there is the next element + while (it.isNext()) + { + prop_write_out_new<vtk_dims<T>::value != 1,T>::template write<decltype(vg),decltype(it),I>(v_outToEncode_,vg,k,it,ft); + + // increment the iterator and counter + ++it; + } + } + + if (ft == file_type::BINARY) + { + std::string v_outToEncode = v_outToEncode_.str(); + *(size_t *) &v_outToEncode[0] = v_outToEncode.size()-sizeof(size_t); + v_Encoded.resize(v_outToEncode.size()/3*4+4); + size_t sz=EncodeToBase64((const unsigned char*)&v_outToEncode[0],v_outToEncode.size(),(unsigned char *)&v_Encoded[0],0); + v_Encoded.resize(sz); + v_out += v_Encoded + "\n"; + } + else{ + v_out += v_outToEncode_.str(); + }; + v_out += " </DataArray>\n"; + + } + } + static inline void get_pvtp_out(std::string & v_out, const openfpm::vector<std::string> & prop_names){ + + v_out += get_point_property_header_impl_new_pvtp<I::value,ele_g,has_attributes<typename ele_g::value_type::value_type>::value>("",prop_names); + + } +}; + +//! Partial specialization for N=1 1D-Array +template<typename I, typename ele_g, typename St, typename T, size_t N1, bool is_writable> +struct meta_prop_new<I, ele_g,St,T[N1],is_writable> +{ + /*! \brief Write a vtk compatible type into vtk format + * + * \param vg array of elements to write + * \param v_out string containing the string + * \param prop_names properties name + * \param ft ASCII or BINARY + * + */ + inline meta_prop_new(const openfpm::vector< ele_g > & vg, std::string & v_out, const openfpm::vector<std::string> & prop_names , file_type ft) + { + // actual string size + size_t sz = v_out.size(); + std::ostringstream v_outToEncode_; + std::string v_Encoded; + + if (std::is_same<T,float>::value == true) + {v_outToEncode_ << std::setprecision(7);} + else + {v_outToEncode_ << std::setprecision(16);} + + // Produce the point properties header + v_out += get_point_property_header_impl_new<I::value,ele_g,has_attributes<typename ele_g::value_type::value_type>::value>("",prop_names,ft); + + // If the output has changed, we have to write the properties + if (v_out.size() != sz) + { + if (ft == file_type::BINARY) { + size_t pp = 0; + v_outToEncode_.write((char *)&pp,8); + } + // Produce point data + + for (size_t k = 0 ; k < vg.size() ; k++) + { + //! Get a vertex iterator + auto it = vg.get(k).g.getIterator(); + + // if there is the next element + while (it.isNext()) + { + if (ft == file_type::ASCII) + { + // Print the properties + v_outToEncode_ << vg.get(k).g.template get<I::value>(it.get())[0]; + for (size_t i1 = 1 ; i1 < N1 ; i1++) + {v_outToEncode_ << " " << vg.get(k).g.template get<I::value>(it.get())[i1];} + + if (N1 == 2) + {v_outToEncode_ << " "<< (decltype(vg.get(k).g.template get<I::value>(it.get())[0])) 0;} + + v_outToEncode_ << "\n"; + } + else + { + T tmp; + + // Print the properties + for (size_t i1 = 0 ; i1 < N1 ; i1++) + { + tmp = vg.get(k).g.template get<I::value>(it.get())[i1]; + //tmp = swap_endian_lt(tmp); + v_outToEncode_.write((const char *)&tmp,sizeof(T)); + } + if (N1 == 2) + { + tmp = 0.0; + //tmp = swap_endian_lt(tmp); + v_outToEncode_.write((const char *)&tmp,sizeof(T)); + } + } + + // increment the iterator and counter + ++it; + } + } + if (ft == file_type::BINARY) + { + std::string v_outToEncode = v_outToEncode_.str(); + *(size_t *) &v_outToEncode[0] = v_outToEncode.size()-sizeof(size_t); + v_Encoded.resize(v_outToEncode.size()/3*4+4); + size_t sz=EncodeToBase64((const unsigned char*)&v_outToEncode[0],v_outToEncode.size(),(unsigned char *)&v_Encoded[0],0); + v_Encoded.resize(sz); + v_out += v_Encoded + "\n"; + } + else{ + v_out += v_outToEncode_.str(); + }; + v_out += " </DataArray>\n"; + } + } + + static inline void get_pvtp_out(std::string & v_out, const openfpm::vector<std::string> & prop_names){ + + v_out += get_point_property_header_impl_new_pvtp<I::value,ele_g,has_attributes<typename ele_g::value_type::value_type>::value>("",prop_names); + + } +}; + +//! Partial specialization for N=2 2D-Array +template<typename I, typename ele_g, typename St ,typename T,size_t N1,size_t N2, bool is_writable> +struct meta_prop_new<I, ele_g,St, T[N1][N2],is_writable> +{ + + /*! \brief Write a vtk compatible type into vtk format + * + * \param vg array of elements to write + * \param v_out string containing the string + * \param prop_names property names + * \param ft ASCII or BINARY + * + */ + inline meta_prop_new(const openfpm::vector< ele_g > & vg, std::string & v_out, const openfpm::vector<std::string> & prop_names, file_type ft) + { + std::string v_outToEncode,v_Encoded; + + for (size_t i1 = 0 ; i1 < N1 ; i1++) + { + for (size_t i2 = 0 ; i2 < N2 ; i2++) + { + v_outToEncode.clear(); + // actual string size + size_t sz = v_out.size(); + + // Produce the point properties header + v_out += get_point_property_header_impl_new<I::value,ele_g,has_attributes<typename ele_g::value_type::value_type>::value>("_" + std::to_string(i1) + "_" + std::to_string(i2),prop_names, ft); + + // If the output has changed, we have to write the properties + if (v_out.size() != sz) + { + if (ft == file_type::BINARY) { + v_outToEncode.append(8,0); + } + // Produce point data + + for (size_t k = 0 ; k < vg.size() ; k++) + { + //! Get a vertex iterator + auto it = vg.get(k).g.getIterator(); + + // if there is the next element + while (it.isNext()) + { + T tmp; + + if (ft == file_type::ASCII) + { + // Print the property + v_outToEncode += std::to_string(vg.get(k).g.template get<I::value>(it.get())[i1][i2]) + "\n"; + } + else + { + tmp = vg.get(k).g.template get<I::value>(it.get())[i1][i2]; + //tmp = swap_endian_lt(tmp); + v_outToEncode.append((const char *)&tmp,sizeof(tmp)); + } + + // increment the iterator and counter + ++it; + } + } + if (ft == file_type::BINARY) + { + *(size_t *) &v_outToEncode[0] = v_outToEncode.size()-sizeof(size_t); + v_Encoded.resize(v_outToEncode.size()/3*4+4); + size_t sz=EncodeToBase64((const unsigned char*)&v_outToEncode[0],v_outToEncode.size(),(unsigned char *)&v_Encoded[0],0); + v_Encoded.resize(sz); + v_out += v_Encoded + "\n"; + } + else{ + v_out += v_outToEncode; + }; + v_out += " </DataArray>\n"; + + } + } + } + } + + static inline void get_pvtp_out(std::string & v_out, const openfpm::vector<std::string> & prop_names) + { + for (size_t i1 = 0 ; i1 < N1 ; i1++) + { + for (size_t i2 = 0 ; i2 < N2 ; i2++) + { + v_out += get_point_property_header_impl_new_pvtp<I::value,ele_g,has_attributes<typename ele_g::value_type::value_type>::value>("_" + std::to_string(i1) + "_" + std::to_string(i2),prop_names); + } + } + } +}; + + +//! Specialication when is not writable +template<typename I, typename ele_g, typename St, typename T> +struct meta_prop_new<I,ele_g,St,T,false> +{ + + /*! \brief Write a vtk compatible type into vtk format + * + * \param vg array of elements to write + * \param v_out string containing the string + * \param prop_names properties name + * \param ft ASCII or BINARY + * + */ + inline meta_prop_new(const openfpm::vector< ele_g > & vg, std::string & v_out, const openfpm::vector<std::string> & prop_names, file_type ft) + { + } + + static inline void get_pvtp_out(std::string & v_out, const openfpm::vector<std::string> & prop_names) + {} +}; + +template<unsigned int dims,typename T> inline void output_point(Point<dims,T> & p,std::stringstream & v_out, file_type ft) +{ + if (ft == file_type::ASCII) + { + v_out << p[0]; + for (int i = 1 ; i < dims ; i++) + {v_out << " " << p[i];} + size_t i = dims; + for ( ; i < 3 ; i++) + {v_out << " 0.0";} + v_out << "\n"; + } + else + { + size_t i = 0; + for ( ; i < dims ; i++) + { + // we use float so we have to convert to float + auto tmp = p.get(i); + tmp = swap_endian_lt(tmp); + v_out.write((const char *)&tmp,sizeof(tmp)); + } + for ( ; i < 3 ; i++) + { + // we use float so we have to convert to float + + /* coverity[dead_error_begin] */ + T tmp = 0.0; + tmp = swap_endian_lt(tmp); + v_out.write((const char *)&tmp,sizeof(tmp)); + } + } +} + + +template<unsigned int dims,typename T> inline void output_point_new(Point<dims,T> & p,std::stringstream & v_out, file_type ft) +{ + if (ft == file_type::ASCII) + { + v_out << p[0]; + for (int i = 1 ; i < dims ; i++) + {v_out << " " << p[i];} + size_t i = dims; + for ( ; i < 3 ; i++) + {v_out << " 0.0";} + v_out << "\n"; + } + else + { + size_t i = 0; + for ( ; i < dims ; i++) + { + // we use float so we have to convert to float + auto tmp = p.get(i); + v_out.write((const char *)&tmp,sizeof(tmp)); + } + for ( ; i < 3 ; i++) + { + // we use float so we have to convert to float + + /* coverity[dead_error_begin] */ + T tmp = 0.0; + v_out.write((const char *)&tmp,sizeof(tmp)); + } + } +} + +inline void output_vertex(size_t k,std::string & v_out, file_type ft) +{ + if (ft == file_type::ASCII) + {v_out += "1 " + std::to_string(k) + "\n";} + else + { + int tmp; + tmp = 1; + tmp = swap_endian_lt(tmp); + v_out.append((const char *)&tmp,sizeof(int)); + tmp = k; + tmp = swap_endian_lt(tmp); + v_out.append((const char *)&tmp,sizeof(int)); + } +} + +inline void output_vertex_new(size_t k,std::string & v_out, file_type ft) +{ + if (ft == file_type::ASCII) + {v_out += std::to_string(k) + "\n";} + else + { + size_t tmp; + tmp = k; + v_out.append((const char *)&tmp,sizeof(size_t)); + } +} + +#endif /* SRC_VTKWRITER_GRIDS_UTIL_HPP_ */ diff --git a/src/VTKWriter/VTKWriter_point_set.hpp b/src/VTKWriter/VTKWriter_point_set.hpp new file mode 100644 index 0000000000000000000000000000000000000000..4c1fae250972a99e26d6eba7c53529bf0aad42a6 --- /dev/null +++ b/src/VTKWriter/VTKWriter_point_set.hpp @@ -0,0 +1,770 @@ +/* + * VTKWriter_point_set.hpp + * + * Created on: Feb 6, 2016 + * Author: i-bird + */ + +#ifndef OPENFPM_IO_SRC_VTKWRITER_POINT_SET_HPP_ +#define OPENFPM_IO_SRC_VTKWRITER_POINT_SET_HPP_ + +#include <cstddef> +#include <boost/mpl/pair.hpp> +#include "VTKWriter_grids_util.hpp" +#include "is_vtk_writable.hpp" +#include <string> +#include "byteswap_portable.hpp" +#include "MetaParser/MetaParser.hpp" + +/*! \brief Store a reference to the vector position + * + * \tparam Vps Type of vector that store the position of the particles + * + */ +template <typename Vps> +class ele_vps +{ +public: + + //! type of vector that store the particle position + typedef Vps value_type; + + //! particle position vector + const Vps & g; + + //! ghost marker + size_t mark; + + //! constructor + ele_vps(const Vps & g, size_t mark) + :g(g),mark(mark) + {} + +}; + +/*! \brief Store a reference to the vector properties + * + * \tparam Vpp Type of vector that store the property of the particles + * + */ +template <typename Vpp> +class ele_vpp +{ +public: + + //! type of vector that store the particle properties + typedef Vpp value_type; + + + //! Reference to the particle properties + const Vpp & g; + + //! ghost marker + size_t mark; + + //! constructor + ele_vpp(const Vpp & vpp, size_t mark) + :g(vpp),mark(mark) + {} + +}; + + +/*! \brief this class is a functor for "for_each" algorithm + * + * This class is a functor for "for_each" algorithm. For each + * element of the boost::vector the operator() is called. + * Is mainly used to produce an output for each property + * + * \tparam ele_v It is the class ele_v that store the couple vector of position and property + * + * + */ +template<typename ele_v, typename St> +struct prop_out_v +{ + //! Binary or ASCII + file_type ft; + + //! property output string + std::string & v_out; + + //! vector that we are processing + const openfpm::vector_std< ele_v > & vv; + + //! properties names + const openfpm::vector<std::string> & prop_names; + + /*! \brief constructor + * + * \param v_out string to fill with the vertex properties + * \param vv vector we are processing + * \param ft ASCII or BINARY format + * + */ + prop_out_v(std::string & v_out, + const openfpm::vector_std< ele_v > & vv, + const openfpm::vector<std::string> & prop_names, + file_type ft) + :ft(ft),v_out(v_out),vv(vv),prop_names(prop_names) + {}; + + /*! \brief It produce an output for each property + * + * \param t property id + * + */ + template<typename T> + void operator()(T& t) const + { + typedef typename boost::mpl::at<typename ele_v::value_type::value_type::type,boost::mpl::int_<T::value>>::type ptype; + typedef typename std::remove_all_extents<ptype>::type base_ptype; + + meta_prop_new<boost::mpl::int_<T::value> ,ele_v,St, ptype, is_vtk_writable<base_ptype>::value > m(vv,v_out,prop_names,ft); + } + + void lastProp() + { + std::string v_outToEncode,v_Encoded; + // Create point data properties + //v_out += "SCALARS domain float\n"; + // Default lookup table + //v_out += "LOOKUP_TABLE default\n"; + v_out += " <DataArray type=\"Float32\" Name=\"domain\""; + if (ft == file_type::ASCII) { + v_out += " format=\"ascii\">\n"; + } + else { + v_out += " format=\"binary\">\n"; + } + + if (ft == file_type::BINARY) { + v_outToEncode.append(8,0); + } + // Produce point data + for (size_t k = 0 ; k < vv.size() ; k++) + { + //! Get a vertex iterator + auto it = vv.get(k).g.getIterator(); + + // if there is the next element + while (it.isNext()) + { + if (ft == file_type::ASCII) + { + if (it.get() < vv.get(k).mark) + v_outToEncode += "1.0\n"; + else + v_outToEncode += "0.0\n"; + } + else + { + if (it.get() < vv.get(k).mark) + { + float one = 1; + //one = swap_endian_lt(one); + v_outToEncode.append((const char *)&one,sizeof(int)); + } + else + { + float zero = 0; + //zero = swap_endian_lt(zero); + v_outToEncode.append((const char *)&zero,sizeof(int)); + } + } + + // increment the iterator and counter + ++it; + } + } + if (ft == file_type::BINARY) + { + *(size_t *) &v_outToEncode[0] = v_outToEncode.size()-sizeof(size_t); + v_Encoded.resize(v_outToEncode.size()/3*4+4); + size_t sz=EncodeToBase64((const unsigned char*)&v_outToEncode[0],v_outToEncode.size(),(unsigned char *)&v_Encoded[0],0); + v_Encoded.resize(sz); + v_out += v_Encoded + "\n"; + } + else{ + v_out += v_outToEncode; + }; + v_out+=" </DataArray>\n"; + } + +}; + + +/*! \brief this class is a functor for "for_each" algorithm + * + * This class is a functor for "for_each" algorithm. For each + * element of the boost::vector the operator() is called. + * Is mainly used to produce an output for each property + * + * \tparam ele_v It is the class ele_v that store the couple vector of position and property + * + * + */ +template<typename ele_v, typename St> +struct prop_out_v_pvtp +{ + //! property output string + std::string & v_out; + + //! properties names + const openfpm::vector<std::string> & prop_names; + + /*! \brief constructor + * + * \param v_out string to fill with the vertex properties + * \param vv vector we are processing + * \param ft ASCII or BINARY format + * + */ + prop_out_v_pvtp(std::string & v_out, + const openfpm::vector<std::string> & prop_names) + :v_out(v_out),prop_names(prop_names) + { + //meta_prop_new<boost::mpl::int_<T::value> ,ele_v,St, ptype, is_vtk_writable<base_ptype>::value > m(vv,v_out,prop_names,ft); + }; + + /*! \brief It produce an output for each property + * + * \param t property id + * + */ + template<typename T> + void operator()(T& t) const + { + typedef typename boost::mpl::at<typename ele_v::value_type::value_type::type,boost::mpl::int_<T::value>>::type ptype; + typedef typename std::remove_all_extents<ptype>::type base_ptype; + + //std::string type = getTypeNew<base_ptype>(); + meta_prop_new<boost::mpl::int_<T::value> ,ele_v,St, ptype, is_vtk_writable<base_ptype>::value >::get_pvtp_out(v_out,prop_names); + //v_out += " <PDataArray type=\""+type+"\" Name=\""+getAttrName<ele_g,has_attributes>::get(i,prop_names,oprp)+"\""+" NumberOfComponents=\"3\""; + } + + + void lastProp() + { +v_out += " <PDataArray type=\"Float32\" Name=\"domain\"/>\n </PPointData>\n"; + } +}; + +/*! + * + * It write a VTK format file for a list of grids defined on a space + * + * \tparam boost::mpl::pair<G,S> + * + * where G is the type of the vector containing the properties, S is the + * type of vector containing the particle positions + * + */ +template <typename pair> +class VTKWriter<pair,VECTOR_POINTS> +{ + //! Vector of position + openfpm::vector< ele_vps<typename pair::first >> vps; + //! Vector of properties + openfpm::vector< ele_vpp<typename pair::second>> vpp; + + /*! \brief Get the total number of points + * + * \return the total number + * + */ + size_t get_total() + { + size_t tot = 0; + + //! Calculate the full number of vertices + for (size_t i = 0 ; i < vps.size() ; i++) + { + tot += vps.get(i).g.size(); + } + return tot; + } + + /*! \brief It get the vertex properties list + * + * It get the vertex properties list of the vertex defined as VTK header + * + * \return a string that define the vertex properties in graphML format + * + */ + std::string get_vertex_properties_list(file_type & opt) + { + //! vertex property output string + std::string v_out; + + v_out += " <Verts>\n"; + if (opt == file_type::ASCII) + + { + v_out+=" <DataArray type=\"Int64\" Name=\"connectivity\" format=\"ascii\">\n"; + } + else + { + v_out+=" <DataArray type=\"Int64\" Name=\"connectivity\" format=\"binary\">\n"; + } + + // write the number of vertex + //v_out += "VERTICES " + std::to_string(get_total()) + " " + std::to_string(get_total() * 2) + "\n"; + // return the vertex properties string + return v_out; + } + + /*! \brief It get the point position header string + * + * It get the vertex position header of the vertex defined as a VTK header + * + * \return a string that define the vertex position format + * + */ + std::string get_point_properties_list(file_type ft) + { + //! vertex property output string + std::string v_out; + + // write the number of vertex + + v_out += " <Piece NumberOfPoints=\"" + std::to_string(get_total()) + "\" " +"NumberOfVerts=\"" + std::to_string(get_total()) + "\">\n"; + + // return the vertex properties string + return v_out; + } + + /*! \brief Create the VTK point list + * + * \param ft file_type + * + * \return the list of points + * + */ + std::string get_point_list(file_type & opt) + { + //! vertex node output string + std::stringstream v_out; + + v_out<<" <Points>\n"; + + if (std::is_same<float,typename pair::first::value_type::coord_type>::value == true) + { + if (opt == file_type::ASCII) + { + v_out<<" <DataArray type=\"Float32\" Name=\"Points\" NumberOfComponents=\"3\" format=\"ascii\">\n"; + } + else + { + v_out<<" <DataArray type=\"Float32\" Name=\"Points\" NumberOfComponents=\"3\" format=\"binary\">\n"; + } + } + else + { + if (opt == file_type::ASCII) + { + v_out<<" <DataArray type=\"Float64\" Name=\"Points\" NumberOfComponents=\"3\" format=\"ascii\">\n"; + } + else + { + v_out<<" <DataArray type=\"Float64\" Name=\"Points\" NumberOfComponents=\"3\" format=\"binary\">\n"; + } + } + + std::stringstream binaryToEncode; + if (std::is_same<float,typename pair::first::value_type::coord_type>::value == true) + { + binaryToEncode << std::setprecision(7); + } + else + { + binaryToEncode << std::setprecision(16); + } + + //! For each defined grid + if (opt == file_type::BINARY) + { + size_t tmp=0; + binaryToEncode.write((const char *)&tmp,sizeof(tmp)); + } + + for (size_t i = 0 ; i < vps.size() ; i++) + { + //! write the particle position + auto it = vps.get(i).g.getIterator(); + + // if there is the next element + while (it.isNext()) + { + Point<pair::first::value_type::dims,typename pair::first::value_type::coord_type> p; + p = vps.get(i).g.get(it.get()); + + output_point_new<pair::first::value_type::dims,typename pair::first::value_type::coord_type>(p,binaryToEncode,opt); + + // increment the iterator and counter + ++it; + } + } + //! In case of binary we have to add a new line at the end of the list + if (opt == file_type::BINARY){ + std::string buffer_out,buffer_bin; + buffer_bin=binaryToEncode.str(); + *(size_t *)&buffer_bin[0]=buffer_bin.size()-8; + buffer_out.resize(buffer_bin.size()/3*4+4); + unsigned long sz = EncodeToBase64((const unsigned char*)&buffer_bin[0],buffer_bin.size(),(unsigned char*)&buffer_out[0],0); + buffer_out.resize(sz); + v_out << buffer_out<<std::endl; + } + else + { + v_out<<binaryToEncode.str(); + } + v_out<<" </DataArray>\n"; + v_out<<" </Points>\n"; + // return the vertex list + return v_out.str(); + } + + /*! \brief Create the VTK vertex list + * + * \param ft file_type + * + * \return the list of vertices + * + */ + std::string get_vertex_list(file_type ft) + { + // vertex node output string + std::string v_out,v_outToEncode,v_Encoded; + + size_t k = 0; + if (ft == file_type::BINARY) { + v_outToEncode.append(8,0); + } + for (size_t i = 0 ; i < vps.size() ; i++) + { + //! For each grid point create a vertex + auto it = vps.get(i).g.getIterator(); + + while (it.isNext()) + { + output_vertex_new(k,v_outToEncode,ft); + + ++k; + ++it; + } + } + //! In case of binary we have to add a new line at the end of the list + if (ft == file_type::BINARY) + { + *(size_t *) &v_outToEncode[0] = v_outToEncode.size()-sizeof(size_t); + v_Encoded.resize(v_outToEncode.size()/3*4+4); + size_t sz=EncodeToBase64((const unsigned char*)&v_outToEncode[0],v_outToEncode.size(),(unsigned char *)&v_Encoded[0],0); + v_Encoded.resize(sz); + v_out += v_Encoded + "\n"; + } + else{ + v_out += v_outToEncode; + }; + v_out += " </DataArray>\n"; + v_out += " <DataArray type=\"Int64\" Name=\"offsets\" "; + + if (ft == file_type::ASCII) + { + v_out += "format=\"ascii\">\n"; + } + else{ + v_out += "format=\"binary\">\n"; + } + + k=0; + v_outToEncode.clear(); + if (ft == file_type::BINARY) { + v_outToEncode.append(8,0); + } + + for (size_t i = 0 ; i < vps.size() ; i++) + { + //! For each grid point create a vertex + auto it = vps.get(i).g.getIterator(); + while (it.isNext()) + { + output_vertex_new(k+1,v_outToEncode,ft); + + ++k; + ++it; + } + } + if (ft == file_type::BINARY) + { + *(size_t *) &v_outToEncode[0] = v_outToEncode.size()-sizeof(size_t); + v_Encoded.resize(v_outToEncode.size()/3*4+4); + size_t sz=EncodeToBase64((const unsigned char*)&v_outToEncode[0],v_outToEncode.size(),(unsigned char *)&v_Encoded[0],0); + v_Encoded.resize(sz); + v_out += v_Encoded + "\n"; + } + else{ + v_out += v_outToEncode; + }; + v_out += " </DataArray>\n"; + v_out += " </Verts>\n"; + // return the vertex list + return v_out; + } + + /*! \brief Get the point data header + * + * \return a string with the point data header for VTK format + * + */ + std::string get_point_data_header() + { + std::string v_out; + + v_out += " <PointData>\n"; + + return v_out; + } + struct doubleint{ + long int i; + double d; + }; + /*! \brief return the meta data string + * + * \param meta_data string with the meta-data to add + * + */ + std::string add_meta_data(std::string & meta_data, file_type & opt) + { + std::string meta_string; + + // check for time metadata + MetaParser_options opts; + opts.add_options() + ("time", MetaParser_def::value<double>()); + + MetaParser mp(opts); + mp.parse(meta_data); + + double time = 0.0; + bool exist = mp.getOption("time",time); + + if (exist == true) + { + //<DataArray type="Float64" Name="TimeValue" NumberOfTuples="1" format="ascii" RangeMin="2" RangeMax="2"> + //meta_string += ""; + meta_string += " <FieldData>\n"; + + if (opt == file_type::ASCII) + { meta_string += " <DataArray type=\"Float64\" Name=\"TimeValue\" NumberOfTuples=\"1\" format=\"ascii\">\n"; + meta_string += std::to_string(time); + } + else + { + meta_string += " <DataArray type=\"Float64\" Name=\"TimeValue\" NumberOfTuples=\"1\" format=\"binary\">\n"; + + //time = swap_endian_lt(time); + unsigned char time_string[24];//= base64_encode((const unsigned char*)&time,6); + //const unsigned char Time=(const unsigned char)time; + doubleint timeInit; + timeInit.i=8; + timeInit.d=time; + size_t sz=EncodeToBase64((const unsigned char*)&timeInit,16,time_string,0); + //meta_string.append((const char *)&time,sizeof(double)); + //meta_string += time_string; + meta_string.append((const char *)time_string,sz); + } + meta_string += "\n"; + meta_string += " </DataArray>\n"; + meta_string += " </FieldData>\n"; + } + + + return meta_string; + } + +public: + + /*! + * + * VTKWriter constructor + * + */ + VTKWriter() + {} + + /*! \brief Add a vector dataset + * + * \param vps vector of positions + * \param vpp vector of properties + * \param mark additional information that divide the dataset into 2 (in general is used to mark real from ghost information) + * \param opt_names optional parameter that indicate the names of the properties + * + */ + void add(const typename pair::first & vps, + const typename pair::second & vpp, + size_t mark) + { + ele_vps<typename pair::first> t1(vps,mark); + ele_vpp<typename pair::second> t2(vpp,mark); + + this->vps.add(t1); + this->vpp.add(t2); + } + +/*! \brief It write a Merged VTP type file from a vector of points + * + * \tparam prp_out which properties to output [default = -1 (all)] + * + * \return true if the write complete successfully + * + */ + bool write_pvtp(std::string file,const openfpm::vector<std::string> & prop_names,size_t n,long int timestamp=-1,double time=-1) + { + //openfpm::vector< ele_vpp<typename pair::second>> vpp; + // Header for the vtk + std::string vtk_header; + std::string Name_data; + std::string PpointEnd; + std::string Piece; + if(time==-1){ + vtk_header = "<VTKFile type=\"PPolyData\" version=\"1.0\" byte_order=\"LittleEndian\" header_type=\"UInt64\">\n <PPolyData>\n <PPointData>\n"; + } + else{ + vtk_header = "<VTKFile type=\"PPolyData\" version=\"1.0\" byte_order=\"LittleEndian\" header_type=\"UInt64\">\n <PPolyData>\n <FieldData> \n <DataArray type=\"Float64\" Name=\"TimeValue\" NumberOfTuples=\"1\" format=\"ASCII\">\n "+std::to_string(time)+"\n </DataArray>\n </FieldData>\n <PPointData>\n"; + } + prop_out_v_pvtp< ele_vpp<typename pair::second>, typename pair::first::value_type::coord_type> pp(Name_data,prop_names); + boost::mpl::for_each< boost::mpl::range_c<int,0, pair::second::value_type::max_prop> >(pp); + pp.lastProp(); + PpointEnd += " <PPoints>\n <PDataArray type=\""+getTypeNew<typename decltype(vps)::value_type::value_type::value_type::coord_type>()+"\" Name=\"Points\" NumberOfComponents=\"3\"/>\n </PPoints>\n"; + + + if (timestamp==-1) { + for (int i = 0; i < n; i++) + { Piece += " <Piece Source=\"" + file.substr(0, file.size()) + "_" +std::to_string(i) + ".vtp\"/>\n";} + file += ".pvtp"; + } + else{ + for (int i = 0; i < n; i++) + { Piece += " <Piece Source=\"" + file.substr(0, file.size()) + "_" +std::to_string(i) + "_" + std::to_string(timestamp) + ".vtp\"/>\n";} + file += "_" + std::to_string(timestamp) + ".pvtp"; + } + std::string closingFile=" </PPolyData>\n</VTKFile>"; + + // write the file + std::ofstream ofs(file); + + // Check if the file is open + if (ofs.is_open() == false) + {std::cerr << "Error cannot create the PVTP file: " + file + "\n";} + + ofs << vtk_header << Name_data <<PpointEnd<< Piece << closingFile; + + // Close the file + + ofs.close(); + + return true; + } + + /*! \brief It write a VTK file from a vector of points + * + * \tparam prp_out which properties to output [default = -1 (all)] + * + * \param file path where to write + * \param f_name name of the dataset + * \param prop_names properties names + * \param ft specify if it is a VTK BINARY or ASCII file [default = ASCII] + * + * \return true if the write complete successfully + * + */ + template<int prp = -1> bool write(std::string file, + const openfpm::vector<std::string> & prop_names, + std::string f_name = "points" , + std::string meta_data = "", + file_type ft = file_type::ASCII) + { + // Header for the vtk + std::string vtk_header; + // Point list of the VTK + std::string point_list; + // Vertex list of the VTK + std::string vertex_list; + // Graph header + std::string vtk_binary_or_ascii; + // vertex properties header + std::string point_prop_header; + // edge properties header + std::string vertex_prop_header; + // Data point header + std::string point_data_header; + // Data point + std::string point_data; + + // VTK header + vtk_header = "<VTKFile type=\"PolyData\" version=\"1.0\" byte_order=\"LittleEndian\" header_type=\"UInt64\">\n"; + + vtk_header +=" <PolyData>\n"; + + // Choose if binary or ASCII +/* if (ft == file_type::ASCII) + {vtk_header += "ASCII\n";} + else + {vtk_header += "BINARY\n";}*/ + + // Data type for graph is DATASET POLYDATA + //vtk_header += "DATASET POLYDATA\n"; + + vtk_header += add_meta_data(meta_data,ft); + + // point properties header + point_prop_header = get_point_properties_list(ft); + + // Get point list + point_list = get_point_list(ft); + + // vertex properties header + vertex_prop_header = get_vertex_properties_list(ft); + + // Get vertex list + vertex_list = get_vertex_list(ft); + + // Get the point data header + point_data_header = get_point_data_header(); + + // For each property in the vertex type produce a point data + + prop_out_v< ele_vpp<typename pair::second>, typename pair::first::value_type::coord_type> pp(point_data, vpp, prop_names,ft); + + if (prp == -1) + {boost::mpl::for_each< boost::mpl::range_c<int,0, pair::second::value_type::max_prop> >(pp);} + else + {boost::mpl::for_each< boost::mpl::range_c<int,prp, prp> >(pp);} + + // Add the last property + pp.lastProp(); + + std::string closingFile=" </PointData>\n </Piece>\n </PolyData>\n</VTKFile>"; + + // write the file + std::ofstream ofs(file); + + // Check if the file is open + if (ofs.is_open() == false) + {std::cerr << "Error cannot create the VTK file: " + file + "\n";} + + ofs << vtk_header << point_prop_header << point_list << + vertex_prop_header << vertex_list << point_data_header << point_data << closingFile; + + // Close the file + + ofs.close(); + + // Completed succefully + return true; + } +}; + + +#endif /* OPENFPM_IO_SRC_VTKWRITER_POINT_SET_HPP_ */ diff --git a/src/VTKWriter/VTKWriter_unit_tests.hpp b/src/VTKWriter/VTKWriter_unit_tests.hpp new file mode 100644 index 0000000000000000000000000000000000000000..a909c31da497a743986e83794633b87f73d1423a --- /dev/null +++ b/src/VTKWriter/VTKWriter_unit_tests.hpp @@ -0,0 +1,1531 @@ +/* + * VTKWriter_unit_tests.hpp + * + * Created on: May 6, 2015 + * Author: Pietro Incardona + * + * Modified by Abhinav Singh May 17, 2021 + */ + +#ifndef VTKWRITER_UNIT_TESTS_HPP_ +#define VTKWRITER_UNIT_TESTS_HPP_ + +#include "data_type/aggregate.hpp" +#include <random> +#include "VTKWriter.hpp" +#include "util/SimpleRNG.hpp" + +BOOST_AUTO_TEST_SUITE( vtk_writer_test ) + +/*! \brief Sub-domain vertex graph node + * + */ +struct vertex +{ + //! The node contain 3 unsigned long integer for communication computation memory and id + typedef boost::fusion::vector<float,float,float,float,size_t,double,unsigned char,long int> type; + + //! type of the positional field + typedef float s_type; + + //! Attributes name + struct attributes + { + static const std::string name[]; + }; + + //! The data + type data; + + //! x + static const unsigned int x = 0; + //! y + static const unsigned int y = 1; + //! z + static const unsigned int z = 2; + //! property 1 + static const unsigned int prp1 = 3; + //! property 2 + static const unsigned int prp2 = 4; + //! property 3 + static const unsigned int prp3 = 5; + //! property 4 + static const unsigned int prp4 = 6; + //! property 5 + static const unsigned int prp5 = 7; + + //! total number of properties boost::fusion::vector + static const unsigned int max_prop = 8; + + /*! + * Default constructor + * + */ + vertex() + { + + } + + static inline bool noPointers() + { + return true; + } + + /*! \brief Initialize the VTKVertex + * + * \param x coordinate x + * \param y coordinate y + * \param z coordinate z + * + */ + vertex(float x, float y, float z) + { + boost::fusion::at_c<vertex::x>(data) = x; + boost::fusion::at_c<vertex::y>(data) = y; + boost::fusion::at_c<vertex::z>(data) = z; + } +}; + +const std::string vertex::attributes::name[] = {"x","y","z","prp1","prp2","prp3","prp4","prp5"}; + +struct vertex2 +{ + //! The node contain 3 unsigned long integer for communication computation memory and id + typedef boost::fusion::vector<float[3],size_t,double> type; + + //! type of the positional field + typedef float s_type; + + //! Attributes name + struct attributes + { + static const std::string name[]; + }; + + //! The data + type data; + + //! computation property id in boost::fusion::vector + static const unsigned int x = 0; + static const unsigned int prp1 = 1; + static const unsigned int prp2 = 2; + + //! total number of properties boost::fusion::vector + static const unsigned int max_prop = 3; + + /*! + * Default constructor + * + */ + vertex2() + { + + } + + static inline bool noPointers() + { + return true; + } + + /*! \brief Initialize the VTKVertex + * + * \param x coordinate x + * \param y coordinate y + * \param z coordinate z + * + */ + vertex2(float x, float y, float z) + { + boost::fusion::at_c<vertex::x>(data)[0] = x; + boost::fusion::at_c<vertex::x>(data)[1] = y; + boost::fusion::at_c<vertex::x>(data)[2] = z; + } +}; + +// use the vertex like the edge +typedef vertex edge; + +const std::string vertex2::attributes::name[] = {"x","prp1","prp2"}; + + + +BOOST_AUTO_TEST_CASE( vtk_writer_use_graph3D ) +{ + Vcluster<> & v_cl = create_vcluster(); + + if (v_cl.getProcessUnitID() != 0) + return; + + // Create some graphs and output them + + // Graph + + Graph_CSR<vertex2,edge> gr; + + // Create a cube graph + + gr.addVertex(vertex2(0.0,0.0,0.0)); + gr.addVertex(vertex2(0.0,0.0,1.0)); + gr.addVertex(vertex2(0.0,1.0,0.0)); + gr.addVertex(vertex2(0.0,1.0,1.0)); + gr.addVertex(vertex2(1.0,0.0,0.0)); + gr.addVertex(vertex2(1.0,0.0,1.0)); + gr.addVertex(vertex2(1.0,1.0,0.0)); + gr.addVertex(vertex2(1.0,1.0,1.0)); + + gr.addEdge(0,6); + gr.addEdge(6,4); + gr.addEdge(4,0); + + gr.addEdge(0,2); + gr.addEdge(2,6); + gr.addEdge(6,0); + + gr.addEdge(0,3); + gr.addEdge(3,2); + gr.addEdge(2,0); + + gr.addEdge(0,1); + gr.addEdge(1,3); + gr.addEdge(3,0); + + gr.addEdge(2,7); + gr.addEdge(7,6); + gr.addEdge(6,2); + + gr.addEdge(2,3); + gr.addEdge(3,7); + gr.addEdge(7,2); + + gr.addEdge(4,6); + gr.addEdge(6,7); + gr.addEdge(7,4); + + gr.addEdge(4,7); + gr.addEdge(7,5); + gr.addEdge(5,4); + + gr.addEdge(0,4); + gr.addEdge(4,5); + gr.addEdge(5,0); + + gr.addEdge(0,5); + gr.addEdge(5,1); + gr.addEdge(1,0); + + gr.addEdge(1,5); + gr.addEdge(5,7); + gr.addEdge(7,1); + + gr.addEdge(1,7); + gr.addEdge(7,3); + gr.addEdge(3,1); + + // Write the VTK file + +#ifdef OPENFPM_PDATA + + if (v_cl.rank() != 0) {return;} + std::string c2 = std::string("openfpm_io/test_data/vtk_graph_v2_test.vtk"); + +#else + + std::string c2 = std::string("test_data/vtk_graph_v2_test.vtk"); + +#endif + + VTKWriter<Graph_CSR<vertex2,edge>,VTK_GRAPH> vtk(gr); + vtk.write("vtk_graph_v2.vtk"); + + // check that match + + bool test = compare("vtk_graph_v2.vtk",c2); + BOOST_REQUIRE_EQUAL(true,test); +} + +BOOST_AUTO_TEST_CASE( vtk_writer_use_graph3D_edge ) +{ + Vcluster<> & v_cl = create_vcluster(); + + if (v_cl.getProcessUnitID() != 0) + return; + + // Create some graphs and output them + + // Graph + + Graph_CSR<vertex2,vertex2> gr; + + // Create a cube graph + + gr.addVertex(vertex2(0.0,0.0,0.0)); + gr.addVertex(vertex2(0.0,0.0,1.0)); + gr.addVertex(vertex2(0.0,1.0,0.0)); + gr.addVertex(vertex2(0.0,1.0,1.0)); + gr.addVertex(vertex2(1.0,0.0,0.0)); + gr.addVertex(vertex2(1.0,0.0,1.0)); + gr.addVertex(vertex2(1.0,1.0,0.0)); + gr.addVertex(vertex2(1.0,1.0,1.0)); + + gr.addEdge(0,6,vertex2(0.0,0.0,1.0)); + gr.addEdge(6,4,vertex2(0.0,0.0,1.0)); + gr.addEdge(4,0,vertex2(0.0,0.0,1.0)); + + gr.addEdge(0,2,vertex2(0.0,0.0,1.0)); + gr.addEdge(2,6,vertex2(0.0,0.0,1.0)); + gr.addEdge(6,0,vertex2(0.0,0.0,1.0)); + + gr.addEdge(0,3,vertex2(0.0,0.0,1.0)); + gr.addEdge(3,2,vertex2(0.0,0.0,1.0)); + gr.addEdge(2,0,vertex2(0.0,0.0,1.0)); + + gr.addEdge(0,1,vertex2(0.0,0.0,1.0)); + gr.addEdge(1,3,vertex2(0.0,0.0,1.0)); + gr.addEdge(3,0,vertex2(0.0,0.0,1.0)); + + gr.addEdge(2,7,vertex2(0.0,0.0,1.0)); + gr.addEdge(7,6,vertex2(0.0,0.0,1.0)); + gr.addEdge(6,2,vertex2(0.0,0.0,1.0)); + + gr.addEdge(2,3,vertex2(0.0,0.0,1.0)); + gr.addEdge(3,7,vertex2(0.0,0.0,1.0)); + gr.addEdge(7,2,vertex2(0.0,0.0,1.0)); + + gr.addEdge(4,6,vertex2(0.0,0.0,1.0)); + gr.addEdge(6,7,vertex2(0.0,0.0,1.0)); + gr.addEdge(7,4,vertex2(0.0,0.0,1.0)); + + gr.addEdge(4,7,vertex2(0.0,0.0,1.0)); + gr.addEdge(7,5,vertex2(0.0,0.0,1.0)); + gr.addEdge(5,4,vertex2(0.0,0.0,1.0)); + + gr.addEdge(0,4,vertex2(0.0,0.0,1.0)); + gr.addEdge(4,5,vertex2(0.0,0.0,1.0)); + gr.addEdge(5,0,vertex2(0.0,0.0,1.0)); + + gr.addEdge(0,5,vertex2(0.0,0.0,1.0)); + gr.addEdge(5,1,vertex2(0.0,0.0,1.0)); + gr.addEdge(1,0,vertex2(0.0,0.0,1.0)); + + gr.addEdge(1,5,vertex2(0.0,0.0,1.0)); + gr.addEdge(5,7,vertex2(0.0,0.0,1.0)); + gr.addEdge(7,1,vertex2(0.0,0.0,1.0)); + + gr.addEdge(1,7,vertex2(0.0,0.0,1.0)); + gr.addEdge(7,3,vertex2(0.0,0.0,1.0)); + gr.addEdge(3,1,vertex2(0.0,0.0,1.0)); + + // Write the VTK file + +#ifdef OPENFPM_PDATA + + if (v_cl.rank() != 0) {return;} + std::string c2 = std::string("openfpm_io/test_data/vtk_graph_v4_test.vtk"); + +#else + + std::string c2 = std::string("test_data/vtk_graph_v4_test.vtk"); + +#endif + + VTKWriter<Graph_CSR<vertex2,vertex2>,VTK_GRAPH> vtk(gr); + vtk.write("vtk_graph_v4.vtk"); + + // check that match + + bool test = compare("vtk_graph_v4.vtk",c2); + BOOST_REQUIRE_EQUAL(true,test); +} + +struct vertex3 +{ + //! The node contain 3 unsigned long integer for communication computation memory and id + typedef boost::fusion::vector<float[2],size_t,double> type; + + //! type of the positional field + typedef float s_type; + + //! Attributes name + struct attributes + { + static const std::string name[]; + }; + + //! The data + type data; + + //! computation property id in boost::fusion::vector + static const unsigned int x = 0; + static const unsigned int prp1 = 1; + static const unsigned int prp2 = 2; + + //! total number of properties boost::fusion::vector + static const unsigned int max_prop = 3; + + /*! + * Default constructor + * + */ + vertex3() + { + + } + + static inline bool noPointers() + { + return true; + } + + /*! \brief Initialize the VTKVertex + * + * \param + * + */ + vertex3(float x, float y) + { + boost::fusion::at_c<vertex::x>(data)[0] = x; + boost::fusion::at_c<vertex::x>(data)[1] = y; + } +}; + +// use the vertex like the edge +typedef vertex edge; + +const std::string vertex3::attributes::name[] = {"x","prp1","prp2"}; + +BOOST_AUTO_TEST_CASE( vtk_writer_use_graph2D ) +{ + Vcluster<> & v_cl = create_vcluster(); + + if (v_cl.getProcessUnitID() != 0) + return; + + // Create some graphs and output them + + // Graph + + Graph_CSR<vertex3,edge> gr; + + // Create a cube graph + + gr.addVertex(vertex3(0.0,0.0)); + gr.addVertex(vertex3(0.0,1.0)); + gr.addVertex(vertex3(1.0,0.0)); + gr.addVertex(vertex3(1.0,1.0)); + + gr.addEdge(0,1); + gr.addEdge(1,3); + gr.addEdge(3,2); + gr.addEdge(2,0); + + // Write the VTK file + +#ifdef OPENFPM_PDATA + + if (v_cl.rank() != 0) {return;} + std::string c2 = std::string("openfpm_io/test_data/vtk_graph_v3_test.vtk"); + +#else + + std::string c2 = std::string("test_data/vtk_graph_v3_test.vtk"); + +#endif + + VTKWriter<Graph_CSR<vertex3,edge>,VTK_GRAPH> vtk(gr); + vtk.write("vtk_graph_v3.vtk"); + + // check that match + + bool test = compare("vtk_graph_v3.vtk",c2); + BOOST_REQUIRE_EQUAL(true,test); +} + +BOOST_AUTO_TEST_CASE( vtk_writer_use_graph) +{ + Vcluster<> & v_cl = create_vcluster(); + + if (v_cl.getProcessUnitID() != 0) + return; + + // Create some graphs and output them + + std::cout << "Graph unit test start" << "\n"; + + // Graph + + Graph_CSR<vertex,edge> gr; + + // Create a cube graph + + gr.addVertex(vertex(0.0,0.0,0.0)); + gr.addVertex(vertex(0.0,0.0,1.0)); + gr.addVertex(vertex(0.0,1.0,0.0)); + gr.addVertex(vertex(0.0,1.0,1.0)); + gr.addVertex(vertex(1.0,0.0,0.0)); + gr.addVertex(vertex(1.0,0.0,1.0)); + gr.addVertex(vertex(1.0,1.0,0.0)); + gr.addVertex(vertex(1.0,1.0,1.0)); + + gr.addEdge(0,6); + gr.addEdge(6,4); + gr.addEdge(4,0); + + gr.addEdge(0,2); + gr.addEdge(2,6); + gr.addEdge(6,0); + + gr.addEdge(0,3); + gr.addEdge(3,2); + gr.addEdge(2,0); + + gr.addEdge(0,1); + gr.addEdge(1,3); + gr.addEdge(3,0); + + gr.addEdge(2,7); + gr.addEdge(7,6); + gr.addEdge(6,2); + + gr.addEdge(2,3); + gr.addEdge(3,7); + gr.addEdge(7,2); + + gr.addEdge(4,6); + gr.addEdge(6,7); + gr.addEdge(7,4); + + gr.addEdge(4,7); + gr.addEdge(7,5); + gr.addEdge(5,4); + + gr.addEdge(0,4); + gr.addEdge(4,5); + gr.addEdge(5,0); + + gr.addEdge(0,5); + gr.addEdge(5,1); + gr.addEdge(1,0); + + gr.addEdge(1,5); + gr.addEdge(5,7); + gr.addEdge(7,1); + + gr.addEdge(1,7); + gr.addEdge(7,3); + gr.addEdge(3,1); + +#ifdef OPENFPM_PDATA + + if (v_cl.rank() != 0) {return;} + std::string c2 = std::string("openfpm_io/test_data/vtk_graph_test.vtk"); + +#else + + std::string c2 = std::string("test_data/vtk_graph_test.vtk"); + +#endif + + // Write the VTK file + + VTKWriter<Graph_CSR<vertex,edge>,VTK_GRAPH> vtk(gr); + vtk.write("vtk_graph.vtk"); + + // check that match + + bool test = compare("vtk_graph.vtk",c2); + BOOST_REQUIRE_EQUAL(true,test); +} + +BOOST_AUTO_TEST_CASE( vtk_writer_use_vector_box) +{ + Vcluster<> & v_cl = create_vcluster(); + + if (v_cl.getProcessUnitID() != 0) + return; + +#ifdef OPENFPM_PDATA + + if (v_cl.rank() != 0) {return;} + std::string c2 = std::string("openfpm_io/test_data/vtk_box_test.vtk"); + std::string c3 = std::string("openfpm_io/test_data/vtk_box_3D_test.vtk"); + std::string c4 = std::string("openfpm_io/test_data/vtk_box_3D_2_test.vtk"); + +#else + + std::string c2 = std::string("test_data/vtk_box_test.vtk"); + std::string c3 = std::string("test_data/vtk_box_3D_test.vtk"); + std::string c4 = std::string("test_data/vtk_box_3D_2_test.vtk"); + +#endif + + // Create a vector of boxes + openfpm::vector<Box<2,float>> vb; + + vb.add(Box<2,float>({0.2,0.2},{1.0,0.5})); + vb.add(Box<2,float>({0.0,0.0},{0.2,0.2})); + vb.add(Box<2,float>({0.2,0.0},{0.5,0.2})); + vb.add(Box<2,float>({0.5,0.0},{1.0,0.2})); + vb.add(Box<2,float>({0.0,0.2},{0.2,0.5})); + vb.add(Box<2,float>({0.0,0.5},{1.0,1.0})); + + // Create a writer and write + VTKWriter<openfpm::vector<Box<2,float>>,VECTOR_BOX> vtk_box; + vtk_box.add(vb); + vtk_box.write("vtk_box.vtk"); + + // Check that match + bool test = compare("vtk_box.vtk",c2); + BOOST_REQUIRE_EQUAL(test,true); + + // Create a vector of boxes + openfpm::vector<Box<3,float>> vb2; + + vb2.add(Box<3,float>({0.2,0.2,0.0},{1.0,0.5,0.5})); + vb2.add(Box<3,float>({0.0,0.0,0.0},{0.2,0.2,0.5})); + vb2.add(Box<3,float>({0.2,0.0,0.0},{0.5,0.2,0.5})); + vb2.add(Box<3,float>({0.5,0.0,0.0},{1.0,0.2,0.5})); + vb2.add(Box<3,float>({0.0,0.2,0.0},{0.2,0.5,0.5})); + vb2.add(Box<3,float>({0.0,0.5,0.0},{1.0,1.0,0.5})); + + // Create a writer and write + VTKWriter<openfpm::vector<Box<3,float>>,VECTOR_BOX> vtk_box2; + vtk_box2.add(vb2); + vtk_box2.write("vtk_box_3D.vtk"); + + // Check that match + test = compare("vtk_box_3D.vtk",c3); + BOOST_REQUIRE_EQUAL(test,true); + + // Create a vector of boxes + openfpm::vector<Box<3,float>> vb3; + vb3.add(Box<3,float>({0.2,0.2,0.5},{1.0,0.5,1.0})); + vb3.add(Box<3,float>({0.0,0.0,0.5},{0.2,0.2,1.0})); + vb3.add(Box<3,float>({0.2,0.0,0.5},{0.5,0.2,1.0})); + vb3.add(Box<3,float>({0.5,0.0,0.5},{1.0,0.2,1.0})); + vb3.add(Box<3,float>({0.0,0.2,0.5},{0.2,0.5,1.0})); + vb3.add(Box<3,float>({0.0,0.5,0.5},{1.0,1.0,1.0})); + + // Create a writer and write + VTKWriter<openfpm::vector<Box<3,float>>,VECTOR_BOX> vtk_box3; + vtk_box3.add(vb2); + vtk_box3.add(vb3); + vtk_box3.write("vtk_box_3D_2.vtk"); + + // Check that match + test = compare("vtk_box_3D_2.vtk",c4); + BOOST_REQUIRE_EQUAL(test,true); +} + +/*! \brief fill the grid with some random data + * + * \param g Grid to fill + * + */ +template<typename grid_type> void fill_grid_some_data(grid_type & g) +{ + typedef Point_test<float> p; + + auto it = g.getIterator(); + + while (it.isNext()) + { + g.template get<p::x>(it.get()) = it.get().get(0); + if (grid_type::dims != 1) + {g.template get<p::y>(it.get()) = it.get().get(1);} + else + {g.template get<p::y>(it.get()) = 0.0;} + g.template get<p::z>(it.get()) = 0; + g.template get<p::s>(it.get()) = 1.0; + g.template get<p::v>(it.get())[0] = g.getGrid().LinId(it.get()); + g.template get<p::v>(it.get())[1] = g.getGrid().LinId(it.get()); + g.template get<p::v>(it.get())[2] = g.getGrid().LinId(it.get()); + + g.template get<p::t>(it.get())[0][0] = g.getGrid().LinId(it.get()); + g.template get<p::t>(it.get())[0][1] = g.getGrid().LinId(it.get()); + g.template get<p::t>(it.get())[0][2] = g.getGrid().LinId(it.get()); + g.template get<p::t>(it.get())[1][0] = g.getGrid().LinId(it.get()); + g.template get<p::t>(it.get())[1][1] = g.getGrid().LinId(it.get()); + g.template get<p::t>(it.get())[1][2] = g.getGrid().LinId(it.get()); + g.template get<p::t>(it.get())[2][0] = g.getGrid().LinId(it.get()); + g.template get<p::t>(it.get())[2][1] = g.getGrid().LinId(it.get()); + g.template get<p::t>(it.get())[2][2] = g.getGrid().LinId(it.get()); + + ++it; + } +} + +/*! \brief fill the grid with some random data + * + * \param g Grid to fill + * + */ +void fill_grid_some_data_prp(grid_cpu<2,Point_test_prp<float>> & g) +{ + typedef Point_test<float> p; + + auto it = g.getIterator(); + + while (it.isNext()) + { + g.template get<p::x>(it.get()) = it.get().get(0); + g.template get<p::y>(it.get()) = it.get().get(1); + g.template get<p::z>(it.get()) = 0; + g.template get<p::s>(it.get()) = 1.0; + g.template get<p::v>(it.get())[0] = g.getGrid().LinId(it.get()); + g.template get<p::v>(it.get())[1] = g.getGrid().LinId(it.get()); + g.template get<p::v>(it.get())[2] = g.getGrid().LinId(it.get()); + + g.template get<p::t>(it.get())[0][0] = g.getGrid().LinId(it.get()); + g.template get<p::t>(it.get())[0][1] = g.getGrid().LinId(it.get()); + g.template get<p::t>(it.get())[0][2] = g.getGrid().LinId(it.get()); + g.template get<p::t>(it.get())[1][0] = g.getGrid().LinId(it.get()); + g.template get<p::t>(it.get())[1][1] = g.getGrid().LinId(it.get()); + g.template get<p::t>(it.get())[1][2] = g.getGrid().LinId(it.get()); + g.template get<p::t>(it.get())[2][0] = g.getGrid().LinId(it.get()); + g.template get<p::t>(it.get())[2][1] = g.getGrid().LinId(it.get()); + g.template get<p::t>(it.get())[2][2] = g.getGrid().LinId(it.get()); + + ++it; + } +} + +/*! \brief fill the grid with some random data + * + * + */ +void fill_grid_some_data_scal(grid_cpu<2,Point_test_scal<float>> & g) +{ + typedef Point_test<float> p; + + auto it = g.getIterator(); + + while (it.isNext()) + { + g.template get<p::x>(it.get()) = it.get().get(0); + g.template get<p::y>(it.get()) = it.get().get(1); + g.template get<p::z>(it.get()) = 0; + g.template get<p::s>(it.get()) = 1.0; + + ++it; + } +} + +BOOST_AUTO_TEST_CASE( vtk_writer_use_grids) +{ + Vcluster<> & v_cl = create_vcluster(); + + if (v_cl.getProcessUnitID() != 0) + {return;} + +#ifdef OPENFPM_PDATA + + if (v_cl.rank() != 0) {return;} + std::string c2 = std::string("openfpm_io/test_data/vtk_grids_test_1d.vtk"); + std::string c3 = std::string("openfpm_io/test_data/vtk_grids_test.vtk"); + std::string c4 = std::string("openfpm_io/test_data/vtk_grids_st_test.vtk"); + std::string c5 = std::string("openfpm_io/test_data/vtk_grids_prp_test.vtk"); + std::string c6 = std::string("openfpm_io/test_data/vtk_grids_test.vtk"); + +#else + + std::string c2 = std::string("test_data/vtk_grids_test_1d.vtk"); + std::string c3 = std::string("test_data/vtk_grids_test.vtk"); + std::string c4 = std::string("test_data/vtk_grids_st_test.vtk"); + std::string c5 = std::string("test_data/vtk_grids_prp_test.vtk"); + std::string c6 = std::string("test_data/vtk_grids_test.vtk"); + +#endif + + { + + // Create box grids + Point<1,double> offset1({0.0}); + Point<1,double> spacing1({0.1}); + Box<1,size_t> d1({1},{14}); + + // Create box grids + Point<1,double> offset2({5.0}); + Point<1,float> spacing2({0.2}); + Box<1,size_t> d2({2},{13}); + + // Create box grids + Point<1,double> offset3({0.0}); + Point<1,double> spacing3({0.05}); + Box<1,size_t> d3({3},{11}); + + // Create box grids + Point<1,double> offset4({5.0}); + Point<1,double> spacing4({0.1}); + Box<1,size_t> d4({1},{7}); + + size_t sz[] = {16}; + grid_cpu<1,Point_test<double>> g1(sz); + g1.setMemory(); + fill_grid_some_data(g1); + grid_cpu<1,Point_test<double>> g2(sz); + g2.setMemory(); + fill_grid_some_data(g2); + grid_cpu<1,Point_test<double>> g3(sz); + g3.setMemory(); + fill_grid_some_data(g3); + grid_cpu<1,Point_test<double>> g4(sz); + g4.setMemory(); + fill_grid_some_data(g4); + + g4.template get<Point_test<double>::s>(0) = 1.0/3.0; + + // Create a writer and write + VTKWriter<boost::mpl::pair<grid_cpu<1,Point_test<double>>,double>,VECTOR_GRIDS> vtk_g; + vtk_g.add(g1,offset1,spacing1,d1); + vtk_g.add(g2,offset2,spacing2,d2); + vtk_g.add(g3,offset3,spacing3,d3); + vtk_g.add(g4,offset4,spacing4,d4); + + openfpm::vector<std::string> prp_names; + vtk_g.write("vtk_grids_1d.vtk",prp_names); + + #ifndef SE_CLASS3 + + // Check that match + bool test = compare("vtk_grids_1d.vtk",c2); + BOOST_REQUIRE_EQUAL(test,true); + + #endif + } + + { + + // Create box grids + Point<2,float> offset1({0.0,0.0}); + Point<2,float> spacing1({0.1,0.2}); + Box<2,size_t> d1({1,2},{14,15}); + + // Create box grids + Point<2,float> offset2({5.0,7.0}); + Point<2,float> spacing2({0.2,0.1}); + Box<2,size_t> d2({2,1},{13,15}); + + // Create box grids + Point<2,float> offset3({0.0,7.0}); + Point<2,float> spacing3({0.05,0.07}); + Box<2,size_t> d3({3,2},{11,10}); + + // Create box grids + Point<2,float> offset4({5.0,0.0}); + Point<2,float> spacing4({0.1,0.1}); + Box<2,size_t> d4({1,1},{7,7}); + + size_t sz[] = {16,16}; + grid_cpu<2,Point_test<float>> g1(sz); + g1.setMemory(); + fill_grid_some_data(g1); + grid_cpu<2,Point_test<float>> g2(sz); + g2.setMemory(); + fill_grid_some_data(g2); + grid_cpu<2,Point_test<float>> g3(sz); + g3.setMemory(); + fill_grid_some_data(g3); + grid_cpu<2,Point_test<float>> g4(sz); + g4.setMemory(); + fill_grid_some_data(g4); + + // Create a writer and write + VTKWriter<boost::mpl::pair<grid_cpu<2,Point_test<float>>,float>,VECTOR_GRIDS> vtk_g; + vtk_g.add(g1,offset1,spacing1,d1); + vtk_g.add(g2,offset2,spacing2,d2); + vtk_g.add(g3,offset3,spacing3,d3); + vtk_g.add(g4,offset4,spacing4,d4); + + openfpm::vector<std::string> prp_names; + vtk_g.write("vtk_grids.vtk",prp_names); + + #ifndef SE_CLASS3 + + // Check that match + bool test = compare("vtk_grids.vtk",c3); + BOOST_REQUIRE_EQUAL(test,true); + + #endif + } + + { + // Create box grids + Point<2,float> offset1({0.0,0.0}); + Point<2,float> spacing1({0.1,0.1}); + Box<2,size_t> d1({1,2},{14,15}); + + // Create box grids + Point<2,float> offset2({0.0,0.0}); + Point<2,float> spacing2({0.1,0.1}); + Box<2,size_t> d2({2,1},{13,15}); + + // Create box grids + Point<2,float> offset3({5.0,5.0}); + Point<2,float> spacing3({0.1,0.1}); + Box<2,size_t> d3({3,2},{11,10}); + + // Create box grids + Point<2,float> offset4({5.0,5.0}); + Point<2,float> spacing4({0.1,0.1}); + Box<2,size_t> d4({1,1},{7,7}); + + size_t sz[] = {16,16}; + grid_cpu<2,Point_test<float>> g1(sz); + g1.setMemory(); + fill_grid_some_data(g1); + grid_cpu<2,Point_test<float>> g2(sz); + g2.setMemory(); + fill_grid_some_data(g2); + grid_cpu<2,Point_test<float>> g3(sz); + g3.setMemory(); + fill_grid_some_data(g3); + grid_cpu<2,Point_test<float>> g4(sz); + g4.setMemory(); + fill_grid_some_data(g4); + + comb<2> cmb; + cmb.zero(); + + comb<2> cmb2; + cmb2.mone(); + + // Create a writer and write + VTKWriter<boost::mpl::pair<grid_cpu<2,Point_test<float>>,float>,VECTOR_ST_GRIDS> vtk_g; + vtk_g.add(0,g1,offset1,spacing1,d1,cmb); + vtk_g.add(0,g2,offset2,spacing2,d2,cmb); + vtk_g.add(1,g3,offset3,spacing3,d3,cmb); + vtk_g.add(1,g4,offset4,spacing4,d4,cmb2); + + vtk_g.write("vtk_grids_st.vtk"); + + // Check that match + bool test = compare("vtk_grids_st.vtk",c4); + BOOST_REQUIRE_EQUAL(test,true); + } + + { + // Create box grids + Point<2,float> offset1({0.0,0.0}); + Point<2,float> spacing1({0.1,0.1}); + Box<2,size_t> d1({1,2},{14,15}); + + // Create box grids + Point<2,float> offset2({0.0,0.0}); + Point<2,float> spacing2({0.1,0.1}); + Box<2,size_t> d2({2,1},{13,15}); + + // Create box grids + Point<2,float> offset3({5.0,5.0}); + Point<2,float> spacing3({0.1,0.1}); + Box<2,size_t> d3({3,2},{11,10}); + + // Create box grids + Point<2,float> offset4({5.0,5.0}); + Point<2,float> spacing4({0.1,0.1}); + Box<2,size_t> d4({1,1},{7,7}); + + size_t sz[] = {16,16}; + grid_cpu<2,Point_test_scal<float>> g1(sz); + g1.setMemory(); + fill_grid_some_data_scal(g1); + grid_cpu<2,Point_test_scal<float>> g2(sz); + g2.setMemory(); + fill_grid_some_data_scal(g2); + grid_cpu<2,Point_test_scal<float>> g3(sz); + g3.setMemory(); + fill_grid_some_data_scal(g3); + grid_cpu<2,Point_test_scal<float>> g4(sz); + g4.setMemory(); + fill_grid_some_data_scal(g4); + + // Create a writer and write + VTKWriter<boost::mpl::pair<grid_cpu<2,Point_test_scal<float>>,float>,VECTOR_GRIDS> vtk_g; + vtk_g.add(g1,offset1,spacing1,d1); + vtk_g.add(g2,offset2,spacing2,d2); + vtk_g.add(g3,offset3,spacing3,d3); + vtk_g.add(g4,offset4,spacing4,d4); + + openfpm::vector<std::string> prp_names; + vtk_g.write("vtk_grids_prp.vtk",prp_names); + + // Check that match + bool test = compare("vtk_grids_prp.vtk",c5); + BOOST_REQUIRE_EQUAL(test,true); + } + + { + // Create box grids + Point<2,float> offset1({0.0,0.0}); + Point<2,float> spacing1({0.1,0.2}); + Box<2,size_t> d1({1,2},{14,15}); + + // Create box grids + Point<2,float> offset2({5.0,7.0}); + Point<2,float> spacing2({0.2,0.1}); + Box<2,size_t> d2({2,1},{13,15}); + + // Create box grids + Point<2,float> offset3({0.0,7.0}); + Point<2,float> spacing3({0.05,0.07}); + Box<2,size_t> d3({3,2},{11,10}); + + // Create box grids + Point<2,float> offset4({5.0,0.0}); + Point<2,float> spacing4({0.1,0.1}); + Box<2,size_t> d4({1,1},{7,7}); + + size_t sz[] = {16,16}; + grid_cpu<2,aggregate<float,float,float,float,float[3],float[3][3],openfpm::vector<int>> > g1(sz); + g1.setMemory(); + fill_grid_some_data(g1); + grid_cpu<2,aggregate<float,float,float,float,float[3],float[3][3],openfpm::vector<int>> > g2(sz); + g2.setMemory(); + fill_grid_some_data(g2); + grid_cpu<2,aggregate<float,float,float,float,float[3],float[3][3],openfpm::vector<int>> > g3(sz); + g3.setMemory(); + fill_grid_some_data(g3); + grid_cpu<2,aggregate<float,float,float,float,float[3],float[3][3],openfpm::vector<int>> > g4(sz); + g4.setMemory(); + fill_grid_some_data(g4); + + // Create a writer and write + VTKWriter<boost::mpl::pair<grid_cpu<2,aggregate<float,float,float,float,float[3],float[3][3],openfpm::vector<int>> >,float>,VECTOR_GRIDS> vtk_g; + vtk_g.add(g1,offset1,spacing1,d1); + vtk_g.add(g2,offset2,spacing2,d2); + vtk_g.add(g3,offset3,spacing3,d3); + vtk_g.add(g4,offset4,spacing4,d4); + + openfpm::vector<std::string> prp_names; + vtk_g.write("vtk_grids_unk.vtk",prp_names); + +#ifndef SE_CLASS3 + + // Check that match + bool test = compare("vtk_grids_unk.vtk",c6); + BOOST_REQUIRE_EQUAL(test,true); + +#endif + + } + + // Try + + { + bool ret = is_vtk_writable<Point<3,float>>::value; + BOOST_REQUIRE_EQUAL(ret,true); + ret = is_vtk_writable<Point<3,double>>::value; + BOOST_REQUIRE_EQUAL(ret,true); + + int dims = vtk_dims<Point<3,float>>::value; + BOOST_REQUIRE_EQUAL(dims,3); + + dims = vtk_dims<long int>::value; + BOOST_REQUIRE_EQUAL(dims,1); + } + +} + + +BOOST_AUTO_TEST_CASE( vtk_writer_use_point_set ) +{ + Vcluster<> & v_cl = create_vcluster(); + + if (v_cl.getProcessUnitID() != 0) + return; + +#ifdef OPENFPM_PDATA + + if (v_cl.rank() != 0) {return;} + std::string c2 = std::string("openfpm_io/test_data/vtk_points_test.vtk"); + std::string c3 = std::string("openfpm_io/test_data/vtk_points_pp_test.vtk"); + std::string c4 = std::string("openfpm_io/test_data/vtk_points_pp_header_test.vtk"); + +#else + + std::string c2 = std::string("test_data/vtk_points_test.vtk"); + std::string c3 = std::string("test_data/vtk_points_pp_test.vtk"); + std::string c4 = std::string("test_data/vtk_points_pp_header_test.vtk"); + +#endif + + { + // Create 3 vectors with random particles + openfpm::vector<Point<3,double>> v1ps; + openfpm::vector<Point<3,double>> v2ps; + openfpm::vector<Point<3,double>> v3ps; + openfpm::vector<aggregate<float,float[3]>> v1pp; + openfpm::vector<aggregate<float,float[3]>> v2pp; + openfpm::vector<aggregate<float,float[3]>> v3pp; + openfpm::vector<aggregate<float,Point<3,float>>> v4pp; + + // set the seed + // create the random generator engine + SimpleRNG rng; + + // fill the vector with random data + v1ps.resize(100); + v2ps.resize(100); + v3ps.resize(100); + + v1pp.resize(100); + v2pp.resize(100); + v3pp.resize(100); + v4pp.resize(100); + + for (size_t i = 0 ; i < v1ps.size(); i++) + { + v1ps.template get<0>(i)[0] = rng.GetUniform(); + v1ps.template get<0>(i)[1] = rng.GetUniform(); + v1ps.template get<0>(i)[2] = rng.GetUniform(); + + v2ps.template get<0>(i)[0] = rng.GetUniform()*0.5; + v2ps.template get<0>(i)[1] = rng.GetUniform()*0.5; + v2ps.template get<0>(i)[2] = rng.GetUniform()*0.5; + + v3ps.template get<0>(i)[0] = rng.GetUniform()*0.3; + v3ps.template get<0>(i)[1] = rng.GetUniform()*0.3; + v3ps.template get<0>(i)[2] = rng.GetUniform()*0.3; + + v1pp.template get<0>(i) = rng.GetUniform(); + v1pp.template get<1>(i)[0] = rng.GetUniform(); + v1pp.template get<1>(i)[1] = rng.GetUniform(); + v1pp.template get<1>(i)[2] = rng.GetUniform(); + + v2pp.template get<0>(i) = rng.GetUniform(); + v2pp.template get<1>(i)[0] = rng.GetUniform(); + v2pp.template get<1>(i)[1] = rng.GetUniform(); + v2pp.template get<1>(i)[2] = rng.GetUniform(); + + v3pp.template get<0>(i) = rng.GetUniform(); + v3pp.template get<1>(i)[0] = rng.GetUniform(); + v3pp.template get<1>(i)[1] = rng.GetUniform(); + v3pp.template get<1>(i)[2] = rng.GetUniform(); + + v4pp.template get<0>(i) = rng.GetUniform(); + v4pp.template get<1>(i).get(0) = rng.GetUniform(); + v4pp.template get<1>(i).get(1) = rng.GetUniform(); + v4pp.template get<1>(i).get(2) = rng.GetUniform(); + } + + // Create a writer and write + VTKWriter<boost::mpl::pair<openfpm::vector<Point<3,double>>,openfpm::vector<aggregate<float,float[3]>>>,VECTOR_POINTS> vtk_v; + vtk_v.add(v1ps,v1pp,75); + vtk_v.add(v2ps,v2pp,88); + vtk_v.add(v3ps,v3pp,90); + + openfpm::vector<std::string> prp_names; + vtk_v.write("vtk_points.vtp",prp_names); + //auto &v_cl=create_vcluster(); + //size_t n=v_cl.size(); + vtk_v.write_pvtp("vtk_points",prp_names,2); + + +#ifndef SE_CLASS3 + + bool test = true; + + // Check that match + test = compare("vtk_points.vtp","test_data/vtk_points_test.vtp"); + BOOST_REQUIRE_EQUAL(test,true); + + //It just checks generation of the format and not actual data (File names) + test = compare("vtk_points.pvtp","test_data/pvtp_points_test.pvtp"); + BOOST_REQUIRE_EQUAL(test,true); + +#endif + + // Create a writer and write + VTKWriter<boost::mpl::pair<openfpm::vector<Point<3,double>>,openfpm::vector<aggregate<float,Point<3,float>>>>,VECTOR_POINTS> vtk_v2; + vtk_v2.add(v1ps,v4pp,75); + + vtk_v2.write("vtk_points_pp.vtp",prp_names); + +#ifndef SE_CLASS3 + + // Check that match + test = compare("vtk_points_pp.vtp","test_data/vtk_points_pp_test.vtp"); + BOOST_REQUIRE_EQUAL(test,true); + +#endif + + // Create a writer and write + VTKWriter<boost::mpl::pair<openfpm::vector<Point<3,double>>,openfpm::vector<aggregate<float,Point<3,float>>>>,VECTOR_POINTS> vtk_v3; + vtk_v3.add(v1ps,v4pp,75); + + vtk_v3.write("vtk_points_pp_header.vtp",prp_names,"points","time=5.123"); + + // We try binary + vtk_v3.write("vtk_points_pp_header_bin.vtp",prp_names,"points","time=5.123",file_type::BINARY); + +#ifndef SE_CLASS3 + + // Check that match + test = compare("vtk_points_pp_header.vtp","test_data/vtk_points_pp_header_test.vtp"); + BOOST_REQUIRE_EQUAL(test,true); + + test = compare("vtk_points_pp_header_bin.vtp","test_data/vtk_points_pp_header_bin_test.vtp"); + BOOST_REQUIRE_EQUAL(test,true); + +#endif + + } +} + +BOOST_AUTO_TEST_CASE( vtk_writer_use_point_set_properties ) +{ + Vcluster<> & v_cl = create_vcluster(); + + if (v_cl.getProcessUnitID() != 0) + return; + +#ifdef OPENFPM_PDATA + + if (v_cl.rank() != 0) {return;} + std::string c2 = std::string("openfpm_io/test_data/vtk_points_with_prp_names_test.vtk"); + +#else + + std::string c2 = std::string("test_data/vtk_points_with_prp_names_test.vtk"); + +#endif + + { + // Create 3 vectors with random particles + openfpm::vector<Point<3,double>> v1ps; + openfpm::vector<aggregate<float,float[3]>> v1pp; + + // set the seed + // create the random generator engine + SimpleRNG rng; + + // fill the vector with random data + v1ps.resize(100); + v1pp.resize(100); + + for (size_t i = 0 ; i < v1ps.size(); i++) + { + v1ps.template get<0>(i)[0] = rng.GetUniform(); + v1ps.template get<0>(i)[1] = rng.GetUniform(); + v1ps.template get<0>(i)[2] = rng.GetUniform(); + + + v1pp.template get<0>(i) = rng.GetUniform(); + v1pp.template get<1>(i)[0] = rng.GetUniform(); + v1pp.template get<1>(i)[1] = rng.GetUniform(); + v1pp.template get<1>(i)[2] = rng.GetUniform(); + } + + openfpm::vector<std::string> prop_names; + + // Create a writer and write adding names to the properties + VTKWriter<boost::mpl::pair<openfpm::vector<Point<3,double>>,openfpm::vector<aggregate<float,float[3]>>>,VECTOR_POINTS> vtk_v; + vtk_v.add(v1ps,v1pp,75); + openfpm::vector<std::string> prp_names({"scalar","vector"}); + vtk_v.write("vtk_points_with_prp_names.vtp",prp_names); + +#ifndef SE_CLASS3 + + // Check that match + bool test = compare("vtk_points_with_prp_names.vtp","test_data/vtk_points_with_prp_names_test.vtp"); + BOOST_REQUIRE_EQUAL(test,true); + +#endif + + } +} + +BOOST_AUTO_TEST_CASE( vtk_writer_use_point_set_check_out_precision ) +{ + Vcluster<> & v_cl = create_vcluster(); + + if (v_cl.getProcessUnitID() != 0) + return; + +#ifdef OPENFPM_PDATA + + if (v_cl.rank() != 0) {return;} + std::string c2 = std::string("openfpm_io/test_data/vtk_points_with_prp_names_prec_check_test.vtk"); + +#else + + std::string c2 = std::string("test_data/vtk_points_with_prp_names_prec_check_test.vtk"); + +#endif + + { + // Create 3 vectors with random particles + openfpm::vector<Point<3,double>> v1ps; + openfpm::vector<aggregate<float,double[3]>> v1pp; + + // fill the vector with random data + v1ps.resize(100); + v1pp.resize(100); + + for (size_t i = 0 ; i < v1ps.size(); i++) + { + v1ps.template get<0>(i)[0] = std::numeric_limits<double>::max(); + v1ps.template get<0>(i)[1] = std::numeric_limits<double>::max(); + v1ps.template get<0>(i)[2] = std::numeric_limits<double>::max(); + + + v1pp.template get<0>(i) = std::numeric_limits<float>::max(); + v1pp.template get<1>(i)[0] = std::numeric_limits<double>::max(); + v1pp.template get<1>(i)[1] = std::numeric_limits<double>::max(); + v1pp.template get<1>(i)[2] = std::numeric_limits<double>::max(); + } + + openfpm::vector<std::string> prop_names; + + // Create a writer and write adding names to the properties + VTKWriter<boost::mpl::pair<openfpm::vector<Point<3,double>>,openfpm::vector<aggregate<float,double[3]>>>,VECTOR_POINTS> vtk_v; + vtk_v.add(v1ps,v1pp,75); + openfpm::vector<std::string> prp_names({"scalar","vector"}); + vtk_v.write("vtk_points_with_prp_names_prec_check.vtp",prp_names); + +#ifndef SE_CLASS3 + + // Check that match + bool test = compare("vtk_points_with_prp_names_prec_check.vtp","test_data/vtk_points_with_prp_names_prec_check_test.vtp"); + BOOST_REQUIRE_EQUAL(test,true); + +#endif + + } +} + +BOOST_AUTO_TEST_CASE( vtk_writer_use_point_set_binary ) +{ + Vcluster<> & v_cl = create_vcluster(); + + if (v_cl.getProcessUnitID() != 0) + return; + +#ifdef OPENFPM_PDATA + + if (v_cl.rank() != 0) {return;} + std::string c2 = std::string("openfpm_io/test_data/vtk_points_bin_test.vtk"); + std::string c3 = std::string("openfpm_io/test_data/vtk_points_pp_bin_test.vtk"); + std::string c4 = std::string("openfpm_io/test_data/vtk_points_2d_bin_test.vtk"); + std::string c5 = std::string("openfpm_io/test_data/vtk_points_2d_pp_bin_test.vtk"); + +#else + + std::string c2 = std::string("test_data/vtk_points_bin_test.vtk"); + std::string c3 = std::string("test_data/vtk_points_pp_bin_test.vtk"); + std::string c4 = std::string("test_data/vtk_points_2d_bin_test.vtk"); + std::string c5 = std::string("test_data/vtk_points_2d_pp_bin_test.vtk"); + +#endif + + { + // Create 3 vectors with random particles + openfpm::vector<Point<3,double>> v1ps; + openfpm::vector<Point<3,double>> v2ps; + openfpm::vector<Point<3,double>> v3ps; + openfpm::vector<aggregate<float,float[3]>> v1pp; + openfpm::vector<aggregate<float,float[3]>> v2pp; + openfpm::vector<aggregate<float,float[3]>> v3pp; + openfpm::vector<aggregate<float,Point<3,float>>> v4pp; + + // set the seed + // create the random generator engine + SimpleRNG rng; + + // fill the vector with random data + v1ps.resize(100); + v2ps.resize(100); + v3ps.resize(100); + + v1pp.resize(100); + v2pp.resize(100); + v3pp.resize(100); + v4pp.resize(100); + + for (size_t i = 0 ; i < v1ps.size(); i++) + { + v1ps.template get<0>(i)[0] = rng.GetUniform(); + v1ps.template get<0>(i)[1] = rng.GetUniform(); + v1ps.template get<0>(i)[2] = rng.GetUniform(); + + v2ps.template get<0>(i)[0] = rng.GetUniform()*0.5; + v2ps.template get<0>(i)[1] = rng.GetUniform()*0.5; + v2ps.template get<0>(i)[2] = rng.GetUniform()*0.5; + + v3ps.template get<0>(i)[0] = rng.GetUniform()*0.3; + v3ps.template get<0>(i)[1] = rng.GetUniform()*0.3; + v3ps.template get<0>(i)[2] = rng.GetUniform()*0.3; + + v1pp.template get<0>(i) = rng.GetUniform(); + v1pp.template get<1>(i)[0] = rng.GetUniform(); + v1pp.template get<1>(i)[1] = rng.GetUniform(); + v1pp.template get<1>(i)[2] = rng.GetUniform(); + + v2pp.template get<0>(i) = rng.GetUniform(); + v2pp.template get<1>(i)[0] = rng.GetUniform(); + v2pp.template get<1>(i)[1] = rng.GetUniform(); + v2pp.template get<1>(i)[2] = rng.GetUniform(); + + v3pp.template get<0>(i) = rng.GetUniform(); + v3pp.template get<1>(i)[0] = rng.GetUniform(); + v3pp.template get<1>(i)[1] = rng.GetUniform(); + v3pp.template get<1>(i)[2] = rng.GetUniform(); + + v4pp.template get<0>(i) = rng.GetUniform(); + v4pp.template get<1>(i).get(0) = rng.GetUniform(); + v4pp.template get<1>(i).get(1) = rng.GetUniform(); + v4pp.template get<1>(i).get(2) = rng.GetUniform(); + } + + // Create a writer and write + VTKWriter<boost::mpl::pair<openfpm::vector<Point<3,double>>,openfpm::vector<aggregate<float,float[3]>>>,VECTOR_POINTS> vtk_v; + vtk_v.add(v1ps,v1pp,75); + vtk_v.add(v2ps,v2pp,88); + vtk_v.add(v3ps,v3pp,90); + + openfpm::vector<std::string> prp_names; + vtk_v.write("vtk_points_bin.vtp",prp_names,"vtk output","",file_type::BINARY); + vtk_v.write("vtk_points_bin2.vtp",prp_names,"vtk output","",file_type::BINARY); + +#ifndef SE_CLASS3 + + bool test = true; + + // Check that match + test = compare("vtk_points_bin.vtp","test_data/vtk_points_bin_test.vtp"); + BOOST_REQUIRE_EQUAL(test,true); + test = compare("vtk_points_bin2.vtp","test_data/vtk_points_bin_test.vtp"); + BOOST_REQUIRE_EQUAL(test,true); + +#endif + + // Create a writer and write + VTKWriter<boost::mpl::pair<openfpm::vector<Point<3,double>>,openfpm::vector<aggregate<float,Point<3,float>>>>,VECTOR_POINTS> vtk_v2; + vtk_v2.add(v1ps,v4pp,75); + + vtk_v2.write("vtk_points_pp_bin.vtp",prp_names,"vtk output","",file_type::BINARY); + +#ifndef SE_CLASS3 + + // Check that match + test = compare("vtk_points_pp_bin.vtp","test_data/vtk_points_pp_bin_test.vtp"); + BOOST_REQUIRE_EQUAL(test,true); + +#endif + + } + + + { + // Create 3 vectors with random particles + openfpm::vector<Point<2,double>> v1ps; + openfpm::vector<Point<2,double>> v2ps; + openfpm::vector<Point<2,double>> v3ps; + openfpm::vector<aggregate<float,float[3][3]>> v1pp; + openfpm::vector<aggregate<float,float[3][3]>> v2pp; + openfpm::vector<aggregate<float,float[3][3]>> v3pp; + openfpm::vector<aggregate<float[3],double[2]>> v4pp; + + // set the seed + // create the random generator engine + SimpleRNG rng; + + // fill the vector with random data + v1ps.resize(100); + v2ps.resize(100); + v3ps.resize(100); + + v1pp.resize(100); + v2pp.resize(100); + v3pp.resize(100); + v4pp.resize(100); + + for (size_t i = 0 ; i < v1ps.size(); i++) + { + v1ps.template get<0>(i)[0] = rng.GetUniform(); + v1ps.template get<0>(i)[1] = rng.GetUniform(); + + v2ps.template get<0>(i)[0] = rng.GetUniform()*0.5; + v2ps.template get<0>(i)[1] = rng.GetUniform()*0.5; + + v3ps.template get<0>(i)[0] = rng.GetUniform()*0.3; + v3ps.template get<0>(i)[1] = rng.GetUniform()*0.3; + + v1pp.template get<0>(i) = rng.GetUniform(); + v1pp.template get<1>(i)[0][0] = rng.GetUniform(); + v1pp.template get<1>(i)[0][1] = rng.GetUniform(); + v1pp.template get<1>(i)[0][2] = rng.GetUniform(); + v1pp.template get<1>(i)[1][0] = rng.GetUniform(); + v1pp.template get<1>(i)[1][1] = rng.GetUniform(); + v1pp.template get<1>(i)[1][2] = rng.GetUniform(); + v1pp.template get<1>(i)[2][0] = rng.GetUniform(); + v1pp.template get<1>(i)[2][1] = rng.GetUniform(); + v1pp.template get<1>(i)[2][2] = rng.GetUniform(); + + v2pp.template get<0>(i) = rng.GetUniform(); + v2pp.template get<1>(i)[0][0] = rng.GetUniform(); + v2pp.template get<1>(i)[0][1] = rng.GetUniform(); + v2pp.template get<1>(i)[0][2] = rng.GetUniform(); + v2pp.template get<1>(i)[1][0] = rng.GetUniform(); + v2pp.template get<1>(i)[1][1] = rng.GetUniform(); + v2pp.template get<1>(i)[1][2] = rng.GetUniform(); + v2pp.template get<1>(i)[2][0] = rng.GetUniform(); + v2pp.template get<1>(i)[2][1] = rng.GetUniform(); + v2pp.template get<1>(i)[2][2] = rng.GetUniform(); + + v3pp.template get<0>(i) = rng.GetUniform(); + v3pp.template get<1>(i)[0][0] = rng.GetUniform(); + v3pp.template get<1>(i)[0][1] = rng.GetUniform(); + v3pp.template get<1>(i)[0][2] = rng.GetUniform(); + v3pp.template get<1>(i)[1][0] = rng.GetUniform(); + v3pp.template get<1>(i)[1][1] = rng.GetUniform(); + v3pp.template get<1>(i)[1][2] = rng.GetUniform(); + v3pp.template get<1>(i)[2][0] = rng.GetUniform(); + v3pp.template get<1>(i)[2][1] = rng.GetUniform(); + v3pp.template get<1>(i)[2][2] = rng.GetUniform(); + + v4pp.template get<0>(i)[0] = rng.GetUniform(); + v4pp.template get<0>(i)[1] = rng.GetUniform(); + v4pp.template get<0>(i)[2] = rng.GetUniform(); + v4pp.template get<1>(i)[0] = rng.GetUniform(); + v4pp.template get<1>(i)[1] = rng.GetUniform(); + } + + // Create a writer and write + VTKWriter<boost::mpl::pair<openfpm::vector<Point<2,double>>,openfpm::vector<aggregate<float,float[3][3]>>>,VECTOR_POINTS> vtk_v; + vtk_v.add(v1ps,v1pp,75); + vtk_v.add(v2ps,v2pp,88); + vtk_v.add(v3ps,v3pp,90); + + openfpm::vector<std::string> stub; + + vtk_v.write("vtk_points_2d_bin.vtp",stub,"vtk output","",file_type::BINARY); + +#ifndef SE_CLASS3 + + bool test = true; + + // Check that match + test = compare("vtk_points_2d_bin.vtp","test_data/vtk_points_2d_bin_test.vtp"); + BOOST_REQUIRE_EQUAL(test,true); + +#endif + + // Create a writer and write + VTKWriter<boost::mpl::pair<openfpm::vector<Point<2,double>>,openfpm::vector<aggregate<float[3],double[2]>>>,VECTOR_POINTS> vtk_v2; + vtk_v2.add(v1ps,v4pp,75); + + vtk_v2.write("vtk_points_2d_pp_bin.vtp",stub,"vtk output","",file_type::BINARY); + +#ifndef SE_CLASS3 + + // Check that match + test = compare("vtk_points_2d_pp_bin.vtp","test_data/vtk_points_2d_pp_bin_test.vtp"); + BOOST_REQUIRE_EQUAL(test,true); + +#endif + } +} + +BOOST_AUTO_TEST_SUITE_END() + +#endif /* VTKWRITER_UNIT_TESTS_HPP_ */ diff --git a/src/VTKWriter/VTKWriter_vector_box.hpp b/src/VTKWriter/VTKWriter_vector_box.hpp new file mode 100644 index 0000000000000000000000000000000000000000..136ff16dbf6df5d96ba70084cca03e2d7b7020d8 --- /dev/null +++ b/src/VTKWriter/VTKWriter_vector_box.hpp @@ -0,0 +1,466 @@ +/* + * VTKWriter_vector_box.hpp + * + * Created on: May 5, 2015 + * Author: i-bird + */ + +#ifndef VTKWRITER_VECTOR_BOX_HPP_ +#define VTKWRITER_VECTOR_BOX_HPP_ + +#include <boost/math/special_functions/pow.hpp> +#include "Space/Shape/HyperCube.hpp" +#include <random> +#include "util/util.hpp" + +template <typename vector> +class v_box +{ +public: + + /*! \brief Constructor + * + * \param v + * + */ + v_box(const vector & v) + :v(v) + {} + + //! dataset-name + std::string dataset; + + //! vector + const vector & v; +}; + +/*! + * + * From a basic structure it write a VTK format file in case of a vector of Boxes + * + * \tparam vector type + * + */ + +template <typename vector> +class VTKWriter<vector,VECTOR_BOX> +{ + //! data to write + openfpm::vector<v_box<vector>> v; + + /*! \brief It get the vertex properties list + * + * It get the vertex properties list of the vertex defined as a VTK header + * + * \return a string that define the vertex properties in graphML format + * + */ + + std::string get_point_properties_list() + { + //! vertex property output string + std::string v_out; + + // number of points + size_t np = 0; + + // count the number of points + for (size_t i = 0 ; i < v.size() ; i++) + { + np += v.get(i).v.size() * boost::math::pow<vector::value_type::dims>(2); + } + + // write the number of vertex + v_out += "POINTS " + std::to_string(np) + " float" + "\n"; + + // return the vertex properties string + return v_out; + } + + /*! \brief It get the edge properties list + * + * It get the edge properties list of the edge defined as a GraphML header + * + * \return a string that define the edge properties in graphML format + * + */ + + std::string get_cell_properties_list() + { + //! vertex property output string + std::string e_out; + + //! number of cells and box + size_t nc = 0; + size_t nb = 0; + + // count the number of cells + for (size_t i = 0 ; i < v.size() ; i++) + { + nb += v.get(i).v.size(); + } + + nc = nb * (boost::math::pow<vector::value_type::dims>(2) + 1); + + // write the number of lines + e_out += "CELLS " + std::to_string(nb) + " " + std::to_string(nc) + "\n"; + + // return the vertex properties string + return e_out; + } + + /*! \brief Create the VTK point definition + * + * \tparam s_type spatial type of the data + * \tparam attr false x,y,z are set to 0 for each vertex + * + */ + + std::string get_point_list() + { + //! vertex node output string + std::string v_out; + + //! for each vertex dataset + + for (size_t i = 0 ; i < v.size() ; i++) + { + auto it = v.get(i).v.getIterator(); + + // if there is the next element + while (it.isNext()) + { + // Get the box + auto box = v.get(i).v.get(it.get()); + + // Create an hyper-cube and get the vertex combinations + + HyperCube<vector::value_type::dims> hyp; + std::vector<comb<vector::value_type::dims>> comb = hyp.getCombinations_R(0); + + // Create the box vertex points + + for (size_t j = 0; j < comb.size() ; j++) + { + Point<vector::value_type::dims,float> p; + + for (size_t k = 0 ; k < 3 ; k++) + { + if (k < vector::value_type::dims) + { + if (comb[j].value(k) < 0) + v_out += std::to_string(box.template get<vector::value_type::p1>()[k]) + " "; + else + v_out += std::to_string(box.template get<vector::value_type::p2>()[k]) + " "; + } + else + { + /* coverity[dead_error_line] */ + v_out += "0.0"; + } + } + v_out += "\n"; + } + + // increment the iterator and counter + ++it; + } + } + // return the vertex list + return v_out; + } + + /*! \brief Create the VTK vertex definition + * + * + * \return the string with the vertex definition + * + */ + std::string get_cell_list() + { + // base + size_t base = 0; + + //! vertex node output string + std::string v_out; + + //! for each vector in the dataset + + for (size_t i = 0 ; i < v.size() ; i++) + { + auto it = v.get(i).v.getIterator(); + + // for each box + while (it.isNext()) + { + // Output the box vertex id + v_out += std::to_string((size_t)boost::math::pow<vector::value_type::dims>(2)) + " "; + for (size_t k = 0 ; k < boost::math::pow<vector::value_type::dims>(2) ; k++) + { + v_out += " " + std::to_string(base+k); + } + base += boost::math::pow<vector::value_type::dims>(2); + v_out += "\n"; + + ++it; + } + v_out += "\n"; + } + + // return the vertex list + return v_out; + } + + /*! \brief Get the point data header + * + * \return a string with the point data header for VTK format + * + */ + + std::string get_point_data_header() + { + std::string v_out; + + // number of points + size_t np = 0; + + // count the number of points + for (size_t i = 0 ; i < v.size() ; i++) + { + np += v.get(i).v.size() * boost::math::pow<vector::value_type::dims>(2); + } + + + v_out += "POINT_DATA " + std::to_string(np) + "\n"; + + return v_out; + } + + std::string get_cell_types_header() + { + //! vertex property output string + std::string e_out; + + //! number of cells and box + size_t nb = 0; + + // count the number of cells + for (size_t i = 0 ; i < v.size() ; i++) + { + nb += v.get(i).v.size(); + } + + // write the number of lines + e_out += "CELL_TYPES " + std::to_string(nb) + "\n"; + + // return the vertex properties string + return e_out; + } + + std::string get_cell_types_list() + { + // Cell id + size_t cell_id; + if (vector::value_type::dims == 2) + cell_id = 8; + else + cell_id = 11; + + //! vertex node output string + std::string v_out; + + //! for each vector in the dataset + + for (size_t i = 0 ; i < v.size() ; i++) + { + auto it = v.get(i).v.getIterator(); + + // for each box + while (it.isNext()) + { + v_out += std::to_string(cell_id) + "\n"; + + ++it; + } + } + + // return the vertex list + return v_out; + } + + + std::string get_cell_data_header() + { + //! vertex property output string + std::string e_out; + + //! number of cells and box + size_t nb = 0; + + // count the number of cells + for (size_t i = 0 ; i < v.size() ; i++) + { + nb += v.get(i).v.size(); + } + + // write the number of lines + e_out += "CELL_DATA " + std::to_string(nb) + "\n"; + e_out += "COLOR_SCALARS data 4\n"; + + // return the vertex properties string + return e_out; + } + + std::string get_cell_data_list() + { + // random engine + SimpleRNG rng; + + //! vertex node output string + std::string v_out; + + size_t col_group = 0; + + //! for each vector in the dataset + for (size_t i = 0 ; i < v.size() ; i++) + { + auto it = v.get(i).v.getIterator(); + + // for each box + while (it.isNext()) + { + // write a color + v_out += getColor(col_group,rng).toString() + " 1.0" + "\n"; + + ++it; + } + v_out += "\n"; + col_group++; + } + + // return the vertex list + return v_out; + } + +public: + + /*! + * + * VTKWriter constructor + * + */ + VTKWriter() + {} + + /*! \brief Add box vector dataset + * + * \param v vector to add + * + */ + void add(const vector & vc) + { + v_box<vector> t(vc); + + v.add(t); + } + + /*! \brief It write a VTK file from a graph + * + * \tparam prp_out which properties to output [default = -1 (all)] + * + * \param file path where to write + * \param name of the graph + * \param ft specify if it is a VTK BINARY or ASCII file [default = ASCII] + * + */ + + template<int prp = -1> bool write(std::string file, std::string graph_name="Graph", file_type ft = file_type::ASCII) + { + // Header for the vtk + std::string vtk_header; + // Point list of the VTK + std::string point_list; + // Vertex list of the VTK + std::string cell_list; + // Graph header + std::string vtk_binary_or_ascii; + // Edge list of the GraphML + std::string edge_list; + // vertex properties header + std::string point_prop_header; + // edge properties header + std::string cell_prop_header; + // edge properties header + std::string edge_prop_header; + // Data point header + std::string point_data_header; + // Data point + std::string point_data; + // Cell type header + std::string cell_types_header; + // Cell type list + std::string cell_types_list; + // Cell data header + std::string cell_data_header; + // Cell data list + std::string cell_data_list; + + // VTK header + vtk_header = "# vtk DataFile Version 3.0\n" + + graph_name + "\n"; + + // Choose if binary or ASCII + if (ft == file_type::ASCII) + {vtk_header += "ASCII\n";} + else + {vtk_header += "BINARY\n";} + + // Data type for graph is DATASET POLYDATA + vtk_header += "DATASET UNSTRUCTURED_GRID\n"; + + // point properties header + point_prop_header = get_point_properties_list(); + + // Get point list + point_list = get_point_list(); + + // cell properties header + cell_prop_header = get_cell_properties_list(); + + // Get cell list + cell_list = get_cell_list(); + + // Get cell types + cell_types_header = get_cell_types_header(); + + // Get cell type list + cell_types_list = get_cell_types_list(); + + // Get cell data header + cell_data_header = get_cell_data_header(); + + // Get cell data list + cell_data_list = get_cell_data_list(); + + // write the file + std::ofstream ofs(file); + + // Check if the file is open + if (ofs.is_open() == false) + {std::cerr << "Error cannot create the VTK file: " + file + "\n";} + + ofs << vtk_header << point_prop_header << point_list << + cell_prop_header << cell_list << cell_types_header << cell_types_list << cell_data_header << cell_data_list; + + // Close the file + + ofs.close(); + + // Completed succefully + return true; + } +}; + + + +#endif /* VTKWRITER_VECTOR_BOX_HPP_ */ diff --git a/src/VTKWriter/byteswap_portable.hpp b/src/VTKWriter/byteswap_portable.hpp new file mode 100644 index 0000000000000000000000000000000000000000..32182636efe1c6c67cbd7fe7dbee10a88118c632 --- /dev/null +++ b/src/VTKWriter/byteswap_portable.hpp @@ -0,0 +1,41 @@ +/* + * byteswap_portable.hpp + * + * Created on: Feb 20, 2017 + * Author: i-bird + */ + +#ifndef OPENFPM_IO_SRC_VTKWRITER_BYTESWAP_PORTABLE_HPP_ +#define OPENFPM_IO_SRC_VTKWRITER_BYTESWAP_PORTABLE_HPP_ + +#include <climits> + +/*! \brief This function swap byte from little endian to big endian format + * + * \warning in the case of big-endian machine this function should do nothing. + * Unfortunately this is not the case because I never had the bad luck + * of getting one + * + * \param T value to convert + * + */ +template <typename T> +T swap_endian_lt(T u) +{ + static_assert (CHAR_BIT == 8, "CHAR_BIT != 8"); + + union + { + T u; + unsigned char u8[sizeof(T)]; + } source, dest; + + source.u = u; + + for (size_t k = 0; k < sizeof(T); k++) + {dest.u8[k] = source.u8[sizeof(T) - k - 1];} + + return dest.u; +} + +#endif /* OPENFPM_IO_SRC_VTKWRITER_BYTESWAP_PORTABLE_HPP_ */ diff --git a/src/VTKWriter/is_vtk_writable.hpp b/src/VTKWriter/is_vtk_writable.hpp new file mode 100644 index 0000000000000000000000000000000000000000..a7484a3f5b57dc5b59c744a502487e1f4c5d7631 --- /dev/null +++ b/src/VTKWriter/is_vtk_writable.hpp @@ -0,0 +1,238 @@ +/* + * is_vtk_writable.hpp + * + * Created on: Jul 18, 2016 + * Author: i-bird + */ + +#ifndef OPENFPM_IO_SRC_VTKWRITER_IS_VTK_WRITABLE_HPP_ +#define OPENFPM_IO_SRC_VTKWRITER_IS_VTK_WRITABLE_HPP_ + +//! the vtk type +template<typename T, bool is_w> +struct vtk_type +{ + //! get the vtk type for the property + typedef decltype(std::declval<T>().get_vtk(0)) type; +}; + +//! the vtk type +template<typename T> +struct vtk_type<T,false> +{ + //! non writable vtk property (so void) + typedef void type; +}; + +/*! \brief it check if the type is vtk writable + * + * + */ +template<typename ObjType, typename Sfinae = void> +struct is_custom_vtk_writable: std::false_type {}; + +/*! \brief it check if the type is vtk writable + * + * \tparam ObjType check the type + * + */ +template<typename ObjType> +struct is_custom_vtk_writable <ObjType, typename Void< typename ObjType::is_vtk_writable >::type> : std::true_type +{}; + +/*! \brief it check if the type is vtk writable + * + * + */ +template<typename ObjType, typename Sfinae = void> +struct is_vtk_vector_dims: std::false_type {}; + +//! If it has not dims property defined the object is considered scalar +template<typename ObjType, bool has_dims = is_vtk_vector_dims<ObjType>::value > +struct vtk_dims +{ + //! dimensionality of the vtk property (scalar) + enum + { + value = 1 + }; +}; + +//! return the dimansionality of the object +template<typename ObjType > +struct vtk_dims<ObjType,true> +{ + //! dimansionality of the vtk proverty (vector) in case of an object point + //! or an object that define dimansionality + enum + { + value = ObjType::dims + }; +}; + +/*! \brief it check if the type is vtk writable + * + * \tparam ObjType check the type + * + */ +template<typename ObjType> +struct is_vtk_vector_dims<ObjType, typename Void< decltype(ObjType::dims) >::type> : std::true_type +{}; + +//! check for T to be writable +template<typename T> +struct is_vtk_writable +{ + typedef T base; + + //! It check if the object is vtk compatible + enum + { + value = is_custom_vtk_writable<T>::value + }; +}; + +//! check float +template<> +struct is_vtk_writable<float> +{ + typedef float base; + + //! float is vtk writable + enum + { + value = true + }; +}; + +//! check double +template<> +struct is_vtk_writable<double> +{ + typedef double base; + + //! double is vtk writable + enum + { + value = true + }; +}; + +//! check char +template<> +struct is_vtk_writable<char> +{ + typedef char base; + + //! char is vtk writable + enum + { + value = true + }; +}; + +//! check unsigned char +template<> +struct is_vtk_writable<unsigned char> +{ + typedef unsigned char base; + + //! unsigned char is vtk writable + enum + { + value = true + }; +}; + +//! check short +template<> +struct is_vtk_writable<short> +{ + typedef short base; + + //! short is vtk writable + enum + { + value = true + }; +}; + +//! check unsigned short +template<> +struct is_vtk_writable<unsigned short> +{ + typedef unsigned short base; + + //! unsigned short is vtk writable + enum + { + value = true + }; +}; + +//! check int +template<> +struct is_vtk_writable<int> +{ + typedef int base; + + //! int is vtk writable + enum + { + value = true + }; +}; + +//! check unsigned int +template<> +struct is_vtk_writable<unsigned int> +{ + typedef unsigned int base; + + //! unsigned int is vtk writable + enum + { + value = true + }; +}; + +//! check long int +template<> +struct is_vtk_writable<long int> +{ + typedef int base; + + //! long int is vtk writable + enum + { + value = true + }; +}; + +//! check unsigned long int +template<> +struct is_vtk_writable<unsigned long int> +{ + typedef unsigned int base; + + //! unsigned long int is vtk writable + enum + { + value = true + }; +}; + +//! check bool +template<> +struct is_vtk_writable<bool> +{ + typedef bool base; + + //! bool is vtk writable + enum + { + value = true + }; +}; + +#endif /* OPENFPM_IO_SRC_VTKWRITER_IS_VTK_WRITABLE_HPP_ */ diff --git a/src/config/config_cmake.h.in b/src/config/config_cmake.h.in index b15e33f40c557f801cc251b997c2876e21f71e08..8c9545e0bd8d61f151ca60fb26d8024b57d7bce5 100644 --- a/src/config/config_cmake.h.in +++ b/src/config/config_cmake.h.in @@ -1,6 +1,15 @@ /* Coverty scan */ ${DEFINE_COVERTY_SCAN} +<<<<<<< HEAD +======= +/* HIP GPU support */ +${DEFINE_HIP_GPU} + +/* HIP Cudify GPU support */ +${DEFINE_CUDIFY_USE_HIP} + +>>>>>>> origin/master /* GPU support */ ${DEFINE_CUDA_GPU} @@ -198,3 +207,7 @@ ${DEFINE_TEST_COVERAGE_MODE} /* Version number of package */ #define VERSION "1.0.0" +<<<<<<< HEAD +======= +#define OPENFPM_IO +>>>>>>> origin/master diff --git a/src/garbage/HDF5_XdmfWriter.hpp b/src/garbage/HDF5_XdmfWriter.hpp new file mode 100644 index 0000000000000000000000000000000000000000..597c69b92eb18877741c75e0723dc0e9340a5973 --- /dev/null +++ b/src/garbage/HDF5_XdmfWriter.hpp @@ -0,0 +1,24 @@ +/* + * H5PartWriter.hpp + * + * Created on: Feb 7, 2016 + * Author: i-bird + */ + +#ifndef OPENFPM_IO_SRC_HDF5_XDMFWRITER_HDF5_XDMFWRITER_HPP_ +#define OPENFPM_IO_SRC_HDF5_XDMFWRITER_HDF5_XDMFWRITER_HPP_ + +#define H5PART_WRITER 0x20000 + +#define H5_POINTSET 1 + +template <unsigned int imp> +class HDF5_XdmfWriter +{ + +}; + +#include "HDF5_XdmfWriter_point_set.hpp" + + +#endif /* OPENFPM_IO_SRC_HDF5_XDMFWRITER_HDF5_XDMFWRITER_HPP_ */ diff --git a/src/garbage/HDF5_XdmfWriter_point_set.hpp b/src/garbage/HDF5_XdmfWriter_point_set.hpp new file mode 100644 index 0000000000000000000000000000000000000000..5be3e3a5cb7554d8f4732ec151f5327c55981953 --- /dev/null +++ b/src/garbage/HDF5_XdmfWriter_point_set.hpp @@ -0,0 +1,193 @@ +/* + * H5PartWriter_point_set.hpp + * + * Created on: Feb 7, 2016 + * Author: i-bird + */ + +#ifndef OPENFPM_IO_SRC_HDF5_XDMFWRITER_HDF5_XDMFWRITER_POINT_SET_HPP_ +#define OPENFPM_IO_SRC_HDF5_XDMFWRITER_HDF5_XDMFWRITER_POINT_SET_HPP_ + +#include "HDF5_XdmfWriter_util.hpp" +#include "Vector/map_vector.hpp" +#include "VCluster/VCluster.hpp" + +/*! \brief this class is a functor for "for_each" algorithm + * + * This class is a functor for "for_each" algorithm. For each + * element of the boost::vector the operator() is called. + * Is mainly used to produce write each property in H5Part + * + * \tparam ele_v is the vector of properties + * \tparam seq, sequence of property to output + * \tparam has_name define if the structure define names for the properties + * + */ + +template<typename ele_v, bool has_name> +struct H5_prop_out +{ + //! HDF5 file + hid_t file_id; + + //! vector that we are processing + ele_v & vv; + + //! Up to which element to write + size_t stop; + + /*! \brief constructor + * + * \param v_out string to fill with the vertex properties + * + */ + H5_prop_out(hid_t file_id, ele_v & vv, size_t stop) + :file_id(file_id),vv(vv),stop(stop) + {}; + + /*! \brief It produce an output for each property + * + * \param t property id + * + */ + template<typename T> + void operator()(T& t) const + { + typedef typename boost::mpl::at<typename ele_v::value_type::value_type::type,boost::mpl::int_<T::value>>::type ptype; + + H5_write<ptype,T::value,ele_v>::write(file_id,std::string(ele_v::value_type::attributes::names[T::value]),vv,stop); + } +}; + + + +/*! \brief this class is a functor for "for_each" algorithm + * + * This class is a functor for "for_each" algorithm. For each + * element of the boost::vector the operator() is called. + * Is mainly used to produce an output for each property + * + * \tparam ele_v is the vector of properties + * \tparam seq, sequence of property to output + * \tparam has_name define if the structure define names + * + */ +template<typename ele_v> +struct H5_prop_out<ele_v,false> +{ + //! HDF5 file + hid_t file_id; + + //! vector that we are processing + ele_v & vv; + + //! Up to which element to write + size_t stop; + + /*! \brief constructor + * + * \param file_id handle of the file + * \param vv element to write + * \param stop up to which element to write + * + */ + H5_prop_out(hid_t file_id, ele_v & vv, size_t stop) + :file_id(file_id),vv(vv),stop(stop) + {}; + + /*! \brief It produce an output for each property + * + * \param t property id + * + */ + template<typename T> + void operator()(T& t) const + { + typedef typename boost::mpl::at<typename ele_v::value_type::type,boost::mpl::int_<T::value>>::type ptype; + + H5_write<ptype,T::value,ele_v>::write(file_id,std::string("attr") + std::to_string(T::value),vv,stop); + } +}; + +/*! \brief HDF5 writer for a point set + * + * + */ +template <> +class HDF5_XdmfWriter<H5_POINTSET> +{ + //! HDF5 file + hid_t file_id; + +public: + + /*! + * + * H5PartWriter constructor + * + */ + HDF5_XdmfWriter() + {} + + + /*! + * + * \brief Write a set of particle positions and properties into HDF5 + * + * \tparam Pos Vector of positions type + * \taparam Prp Vector of properties type + * \tparam prp list of properties to output + * + * \param file output file + * \param v_pos Vector with the positions + * \param v_prp Vector with the properties + * \param stop size of the vector to output + * + */ + template<typename VPos, typename VPrp, int ... prp > + bool write(const std::string & file, + openfpm::vector<VPos> & v_pos, + openfpm::vector<VPrp> & v_prp, + size_t stop) + { + Vcluster & v_cl = create_vcluster(); + + // Open and HDF5 file in parallel + + hid_t plist_id = H5Pcreate(H5P_FILE_ACCESS); + H5Pset_fapl_mpio(plist_id, v_cl.getMPIComm(), MPI_INFO_NULL); + file_id = H5Fcreate(file.c_str(), H5F_ACC_TRUNC, H5P_DEFAULT, plist_id); + H5Pclose(plist_id); + + // Single coordinate positional vector + openfpm::vector<typename VPos::coord_type> x_n; + x_n.resize(stop); + + //for each component, fill x_n + for (size_t i = 0 ; i < VPos::dims ; i++) + { + // + for (size_t j = 0 ; j < stop ; j++) + x_n.get(j) = v_pos.template get<0>(j)[i]; + + std::stringstream str; + str << "x" << i; + + HDF5CreateDataSet<typename VPos::coord_type>(file_id,str.str(),x_n.getPointer(),stop*sizeof(typename VPos::coord_type)); + } + + // Now we write the properties + + typedef typename to_boost_vmpl<prp ... >::type v_prp_seq; + H5_prop_out<openfpm::vector<VPrp>,has_attributes<VPrp>::value> f(file_id,v_prp,stop); + + boost::mpl::for_each_ref<v_prp_seq>(f); + + H5Fclose(file_id); + + return true; + } +}; + + +#endif /* OPENFPM_IO_SRC_HDF5_XDMFWRITER_HDF5_XDMFWRITER_POINT_SET_HPP_ */ diff --git a/src/garbage/HDF5_XdmfWriter_unit_tests.hpp b/src/garbage/HDF5_XdmfWriter_unit_tests.hpp new file mode 100644 index 0000000000000000000000000000000000000000..86bd879f3da0f221c1f3e6fa675d1fc00587de3f --- /dev/null +++ b/src/garbage/HDF5_XdmfWriter_unit_tests.hpp @@ -0,0 +1,64 @@ +/* + * H5PartWriter_unit_tests.hpp + * + * Created on: Feb 22, 2016 + * Author: i-bird + */ + +#ifndef OPENFPM_IO_SRC_HDF5_XDMFWRITER_HDF5_XDMFWRITER_UNIT_TESTS_HPP_ +#define OPENFPM_IO_SRC_HDF5_XDMFWRITER_HDF5_XDMFWRITER_UNIT_TESTS_HPP_ + +#include "VCluster.hpp" +#include "util/SimpleRNG.hpp" +#include "HDF5_XdmfWriter.hpp" + +BOOST_AUTO_TEST_SUITE( HDF5_writer_test ) + + +BOOST_AUTO_TEST_CASE( HDF5_writer_use) +{ + openfpm::vector<Point<3,double>> pv; + openfpm::vector<Point_test<double>> pvp; + + SimpleRNG rng; + + Vcluster & v_cl = *global_v_cluster; + + if (v_cl.getProcessingUnits() != 3) + return; + + double z_base = v_cl.getProcessUnitID(); + + // fill 1000 particles for each processors + + for (size_t i = 0 ; i < 1000 ; i++) + { + Point<3,double> p; + p[0] = rng.GetUniform(); + p[1] = rng.GetUniform(); + p[2] = z_base+rng.GetUniform(); + + pv.add(p); + + p[0] += 2.0; + + Point_test<double> pt; + pt.fill(); + + pvp.add(pt); + } + + HDF5_XdmfWriter<H5_POINTSET> h5p; + h5p.template write<Point<3,double>,Point_test<double>,0,1,4,5>("h5part.h5",pv,pvp,1000); + + // check that match + + bool test = compare("test_h5part.h5part","test_h5part_test.h5part"); + BOOST_REQUIRE_EQUAL(true,test); +} + +BOOST_AUTO_TEST_SUITE_END() + + + +#endif /* OPENFPM_IO_SRC_HDF5_XDMFWRITER_HDF5_XDMFWRITER_UNIT_TESTS_HPP_ */ diff --git a/src/garbage/HDF5_XdmfWriter_util.hpp b/src/garbage/HDF5_XdmfWriter_util.hpp new file mode 100644 index 0000000000000000000000000000000000000000..db7acd59b26ee8da0ed7e25da3a7071f17e6f3ff --- /dev/null +++ b/src/garbage/HDF5_XdmfWriter_util.hpp @@ -0,0 +1,300 @@ +/* + * H5PartWriteData_meta.hpp + * + * Created on: Feb 22, 2016 + * Author: i-bird + */ + +#ifndef OPENFPM_IO_SRC_HDF5_XDMFWRITER_HDF5_XDMFWRITER_UTIL_HPP_ +#define OPENFPM_IO_SRC_HDF5_XDMFWRITER_HDF5_XDMFWRITER_UTIL_HPP_ + +#include "hdf5.h" +#include "Vector/map_vector.hpp" + +/*! \brief HDF5 Create the data-set in the file + * + * \tparam type Type to write + * + * \param file_id Id of the file + * \param filespace id where to write + * \param str dataset to write + * \param ptr pointer with the data to write + * \param sz size of the data to write + * + * \return true if the function succeed + * + */ +template<typename type> bool HDF5CreateDataSet(hid_t file_id, const std::string & str ,void * ptr, size_t sz) +{ + hid_t plist_id = H5Pcreate(H5P_DATASET_XFER); + if (plist_id < 0) + return false; + + /* Create the dataspace for the position dataset. */ + hsize_t dimsf[1] = {sz}; + hid_t filespace = H5Screate_simple(1, dimsf, NULL); + if (filespace < 0) + return false; + + if (std::is_same<type,char>::value == true) + { + hid_t dset_id = H5Dcreate(file_id, str.c_str(), H5T_NATIVE_CHAR, filespace, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); + if (dset_id < 0) + return false; + + herr_t status = H5Dwrite(dset_id, H5T_NATIVE_CHAR, H5S_ALL, H5S_ALL, plist_id, ptr); + if (status < 0) + return false; + + H5Dclose(dset_id); + H5Dclose(filespace); + return true; + } +/* else if (std::is_same<type,signed char>::value == true) + { + dset_id = H5Dcreate(file_id, std.c_str(), H5T_NATIVE_SCHAR, filespace, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); + H5Dclose(dset_id); + return status; + } + else if (std::is_same<type,unsigned char>::value == true) + { + dset_id = H5Dcreate(file_id, std.c_str(), H5T_NATIVE_UCHAR, filespace, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); + } + else if (std::is_same<type,short>::value == true) + { + dset_id = H5Dcreate(file_id, std.c_str(), H5T_NATIVE_SHORT, filespace, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); + } + else if (std::is_same<type,unsigned short>::value == true) + { + dset_id = H5Dcreate(file_id, std.c_str(), H5T_NATIVE_USHORT, filespace, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); + } + else if (std::is_same<type,int>::value == true) + { + dset_id = H5Dcreate(file_id, std.c_str(), H5T_NATIVE_INT, filespace, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); + } + else if (std::is_same<type,unsigned int>::value == true) + { + dset_id = H5Dcreate(file_id, std.c_str(), H5T_NATIVE_UINT, filespace, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); + } + else if (std::is_same<type,long>::value == true) + { + dset_id = H5Dcreate(file_id, std.c_str(), H5T_NATIVE_LONG, filespace, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); + } + else if (std::is_same<type,unsigned long>::value == true) + { + dset_id = H5Dcreate(file_id, std.c_str(), H5T_NATIVE_ULONG, filespace, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); + } + else if (std::is_same<type,long long>::value == true) + { + dset_id = H5Dcreate(file_id, std.c_str(), H5T_NATIVE_LLONG, filespace, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); + } + else if (std::is_same<type,unsigned long long>::value == true) + { + dset_id = H5Dcreate(file_id, std.c_str(), H5T_NATIVE_ULLONG, filespace, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); + } + else if (std::is_same<type,float>::value == true) + { + dset_id = H5Dcreate(file_id, std.c_str(), H5T_NATIVE_FLOAT, filespace, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); + }*/ + else if (std::is_same<type,double>::value == true) + { + hid_t dset_id = H5Dcreate(file_id, str.c_str(), H5T_NATIVE_DOUBLE, filespace, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); + if (dset_id < 0) + return false; + + herr_t status = H5Dwrite(dset_id, H5T_NATIVE_DOUBLE, H5S_ALL, H5S_ALL, plist_id, ptr); + if (status < 0) + return false; + + H5Dclose(dset_id); + H5Dclose(filespace); + return true; + } + /*else if (std::is_same<type,long double>::value == true) + { + dset_id = H5Dcreate(file_id, std.c_str(), H5T_NATIVE_LDOUBLE, filespace, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); + }*/ + + return true; +} + + +/*! \brief Write an HDF5 dataset in case of scalars and vectors + * + * \tparam T type to write + * \tparam pid Property id + * \tparam V Vector containing the information + * + */ +template<typename T,size_t pid, typename V> +struct H5_write +{ + /*! \brief write + * + * \param file_id HDF5 file + * \param str dataset name + * \param v Vector containing the information + * \param stop size to store + * + */ + static inline void write(hid_t file_id, const std::string & str, V & v, size_t stop) + { + // Create the buffer + openfpm::vector<T> buffer; + buffer.resize(stop); + + for (size_t j = 0 ; j < stop ; j++) + buffer.get(j) = v.template get<pid>(j); + + HDF5CreateDataSet<T>(file_id,str.c_str(),buffer.getPointer(),stop*sizeof(T)); + } +}; + +//! Partial specialization for N=1 1D-Array +template<typename T,size_t pid, typename V,size_t N1> +struct H5_write<T[N1],pid,V> +{ + + /*! \brief write + * + * \param file_id HDF5 file + * \param str dataset name + * \param v Vector containing the information + * \param stop size to store + * + */ + static inline void write(hid_t file_id, const std::string & str, V & v, size_t stop) + { + for (size_t i1 = 0 ; i1 < N1 ; i1++) + { + // Create the buffer + openfpm::vector<T> buffer; + buffer.resize(stop); + + for (size_t j = 0 ; j < stop ; j++) + buffer.get(j) = v.template get<pid>(j)[i1]; + + std::stringstream sstr; + sstr << "_" << i1; + + HDF5CreateDataSet<T>(file_id,std::string(str) + sstr.str(),v.getPointer(),stop*sizeof(T)); + } + } +}; + +//! Partial specialization for N=2 2D-Array +template<typename T, size_t pid, typename V,size_t N1,size_t N2> +struct H5_write<T[N1][N2],pid,V> +{ + + /*! \brief write + * + * \param file_id HDF5 file + * \param str dataset name + * \param v Vector containing the information + * \param stop size to store + * + */ + static inline void write(hid_t file_id, const std::string & str, V & v, size_t stop) + { + for (size_t i1 = 0 ; i1 < N1 ; i1++) + { + for (size_t i2 = 0 ; i2 < N2 ; i2++) + { + // Create the buffer + openfpm::vector<T> buffer; + buffer.resize(stop); + + for (size_t j = 0 ; j < stop ; j++) + buffer.get(j) = v.template get<pid>(j)[i1][i2]; + + std::stringstream sstr; + sstr << "_" << i1 << "_" << i2; + + HDF5CreateDataSet<T>(file_id,std::string(str) + sstr.str(),v.getPointer(),stop*sizeof(T)); + } + } + } +}; + +//! Partial specialization for N=3 +template<typename T, size_t pid, typename V,size_t N1,size_t N2,size_t N3> +struct H5_write<T[N1][N2][N3],pid,V> +{ + + /*! \brief write + * + * \param file_id HDF5 file + * \param str dataset name + * \param v Vector containing the information + * \param stop size to store + * + */ + static inline void write(hid_t file_id, const std::string & str, V & v, size_t stop) + { + for (size_t i1 = 0 ; i1 < N1 ; i1++) + { + for (size_t i2 = 0 ; i2 < N2 ; i2++) + { + for (size_t i3 = 0 ; i3 < N3 ; i3++) + { + // Create the buffer + openfpm::vector<T> buffer; + buffer.resize(stop); + + for (size_t j = 0 ; j < stop ; j++) + buffer.get(j) = v.template get<pid>(j)[i1][i2][i3]; + + std::stringstream sstr; + sstr << "_" << i1 << "_" << i2 << "_" << i3; + + HDF5CreateDataSet<T>(file_id,std::string(str) + sstr.str(),v.getPointer(),stop*sizeof(T)); + } + } + } + } +}; + +//! Partial specialization for N=4 +template<typename T, size_t pid, typename V ,size_t N1,size_t N2,size_t N3,size_t N4> +struct H5_write<T[N1][N2][N3][N4],pid,V> +{ + + /*! \brief write + * + * \param file_id HDF5 file + * \param str dataset name + * \param v Vector containing the information + * \param stop size to store + * + */ + static inline void write(hid_t file_id, const std::string & str, V & v, size_t stop) + { + for (size_t i1 = 0 ; i1 < N1 ; i1++) + { + for (size_t i2 = 0 ; i2 < N2 ; i2++) + { + for (size_t i3 = 0 ; i3 < N3 ; i3++) + { + for (size_t i4 = 0 ; i4 < N4 ; i4++) + { + // Create the buffer + openfpm::vector<T> buffer; + buffer.resize(stop); + + for (size_t j = 0 ; j < stop ; j++) + buffer.get(j) = v.template get<pid>(j)[i1][i2][i3][i4]; + + + std::stringstream sstr; + sstr << "_" << i1 << "_" << i2 << "_" << i3 << "_" << i4; + + HDF5CreateDataSet<T>(file_id,std::string(str) + sstr.str(),v.getPointer(),stop*sizeof(T)); + } + } + } + } + } +}; + +#endif /* OPENFPM_IO_SRC_HDF5_XDMFWRITER_HDF5_XDMFWRITER_UTIL_HPP_ */ diff --git a/src/main.cpp b/src/main.cpp index 893167fb884a3377a884127ce7e013bade27a617..fbcfde254e740d902f1346d57d2bfbd5458a0ee9 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -1,3 +1,4 @@ +<<<<<<< HEAD #define BOOST_DISABLE_ASSERTS #define FUSION_MAX_VECTOR_SIZE 20 @@ -45,6 +46,23 @@ #ifdef PERFORMANCE_TEST #include "performance.hpp" #endif +======= +#include "config.h" +#undef VERSION + +#include <iostream> + +#ifdef OPENFPM_PDATA +#include "VCluster/VCluster.hpp" +#endif + +#define BOOST_DISABLE_ASSERTS + +#define BOOST_TEST_DYN_LINK +#include <boost/test/unit_test.hpp> + +#include "VCluster/VCluster.hpp" +>>>>>>> origin/master #ifndef NO_INIT_AND_MAIN @@ -54,6 +72,7 @@ bool init_unit_test() return true; } +<<<<<<< HEAD std::vector<int> sieve_spf; // entry point: @@ -70,3 +89,23 @@ int main(int argc, char* argv[]) +======= +// entry point: +int main(int argc, char* argv[]) +{ + return boost::unit_test::unit_test_main( &init_unit_test, argc, argv ); +} + +#include "unit_test_init_cleanup_io.hpp" + +#endif + +#include "VCluster/VCluster.hpp" +#include "CSVWriter/CSVWriter_unit_tests.hpp" +#include "GraphMLWriter/GraphMLWriter_unit_tests.hpp" +#include "VTKWriter/VTKWriter_unit_tests.hpp" +//#include "HDF5_XdmfWriter/HDF5_XdmfWriter_unit_tests.hpp" +#include "Plot/Plot_unit_tests.hpp" +#include "RawReader/RawReader_unit_tests.hpp" +#include "HDF5_wr/HDF5_writer_unit_tests.hpp" +>>>>>>> origin/master diff --git a/src/unit_test_init_cleanup_io.hpp b/src/unit_test_init_cleanup_io.hpp new file mode 100644 index 0000000000000000000000000000000000000000..c4fbc1b3d5c133d6b96579c5fbac529947f52115 --- /dev/null +++ b/src/unit_test_init_cleanup_io.hpp @@ -0,0 +1,34 @@ +/* + * unit_test_init_cleanup.hpp + * + * Created on: May 1, 2017 + * Author: i-bird + */ + +#ifndef OPENFPM_IO_SRC_UNIT_TEST_INIT_CLEANUP_IO_HPP_ +#define OPENFPM_IO_SRC_UNIT_TEST_INIT_CLEANUP_IO_HPP_ + + +struct ut_start +{ + //! + ut_start() + { + BOOST_TEST_MESSAGE("Initialize global VCluster"); + + openfpm_init(&boost::unit_test::framework::master_test_suite().argc,&boost::unit_test::framework::master_test_suite().argv); + } + + ~ut_start() + { + BOOST_TEST_MESSAGE("Delete global VClster"); + openfpm_finalize(); + } +}; + +//____________________________________________________________________________// + +BOOST_GLOBAL_FIXTURE( ut_start ); + + +#endif /* OPENFPM_IO_SRC_UNIT_TEST_INIT_CLEANUP_IO_HPP_ */ diff --git a/src/util/GBoxes.hpp b/src/util/GBoxes.hpp new file mode 100644 index 0000000000000000000000000000000000000000..8ece35653eded808bbf8aa4911b8f0bb30fafc85 --- /dev/null +++ b/src/util/GBoxes.hpp @@ -0,0 +1,64 @@ +/* + * Gboxes.hpp + * + * Created on: May 2, 2017 + * Author: i-bird + */ + +#ifndef OPENFPM_IO_SRC_UTIL_GBOXES_HPP_ +#define OPENFPM_IO_SRC_UTIL_GBOXES_HPP_ + + +/*! \brief This structure store the Box that define the domain inside the Ghost + domain box + * + \verbatim + + (Ghost + Domain) + +------------------+ + | | + | +------------+ <---------- (Domain) + | | | | + | | Domain | | + | | Box | | + | | | | + | | | | + | +------------+ | + | | + +------------------+ +(0,0) local coordinate ---> ( x, y ) + + \endverbatim + + * + * * Domain + * + * \tparam dim dimensionality + * + */ +template<unsigned int dim> +struct GBoxes +{ + //! Ghost + Domain ghost + Box<dim,long int> GDbox; + //! Domain box + Box<dim,long int> Dbox; + //! origin of GDbox in global grid coordinates + Point<dim,long int> origin; + + //! In case the grid is not defined everywhere but is defined by a set of boxes + //! indicate from which box it come from + size_t k; + + /*! \brief Indicate that this structure has no pointers inside + * + * \return true + * + */ + static bool noPointers() + { + return true; + } +}; + + +#endif /* OPENFPM_IO_SRC_UTIL_GBOXES_HPP_ */ diff --git a/src/util/PathsAndFiles.hpp b/src/util/PathsAndFiles.hpp new file mode 100644 index 0000000000000000000000000000000000000000..41e4ad8772afedf7d1b94f05c1a28ae93fcb3cca --- /dev/null +++ b/src/util/PathsAndFiles.hpp @@ -0,0 +1,123 @@ +// +// Created by jstark on 2019-12-03. +// +/** + * @file PathsAndFiles.hpp + * + * @brief Header file containing functions for creating files and folders. + * + * @author Justina Stark + * @date December 2019 + */ + +#ifndef FILES_READ_AND_WRITE_PATHSANDFILES_HPP +#define FILES_READ_AND_WRITE_PATHSANDFILES_HPP +#include <unistd.h> +#include <iostream> +#include <fstream> +#include <boost/filesystem.hpp> +#include "VCluster/VCluster.hpp" +/**@brief Gets the current working directory and returns path as string. + * + * @return Std::string of path to current working directory. + */ +static std::string get_cwd() +{ + char *cwd = nullptr; + size_t size; + cwd = getcwd(cwd, size); + + // convert current directory to string + std::string s_cwd; + s_cwd = cwd; + + // std::cout << "The current working directory is: " << dir << std::endl; + return s_cwd; +} +/**@brief Checks if a file already exists. + * + * @param path Std::string with path of file for which existence should be checked. + * @return True, if file exists, false if not. + */ +static bool check_if_file_exists(std::string path) +{ + try + { + // Create a filesystem::path object from given path string + boost::filesystem::path pathObj(path); + if (boost::filesystem::exists(pathObj) && boost::filesystem::is_regular_file(pathObj)) + { + return true; +// BOOST_LOG_TRIVIAL(info) << path << " -> File exists."; + } + + } + catch (boost::filesystem::filesystem_error & e) + { + std::cerr << e.what() << std::endl; +// BOOST_LOG_TRIVIAL(error) << "Error when checking existence of file ( " << path << " ): " << e.what(); + } + return false; +} +/**@brief Creates a file if not already existent. + * + * @param path Std::string that contains path including filename of the file that should be created. + */ +static void create_file_if_not_exist(std::string path) +{ + auto & v_cl = create_vcluster(); + if (v_cl.rank() == 0) + { + if ( ! check_if_file_exists(path)) + { + std::ofstream outfile (path); +// BOOST_LOG_TRIVIAL(info) << "Created file with name: " << path; + } + } +} + + +/**@brief Checks if a directory already exists. + * + * @param path Std::string with path of directory for which existence should be checked. + * @return True, if directory exists, false if not. + */ +static bool check_if_directory_exists(std::string path) +{ + try + { + // Create a filesystem::path object from given path string + boost::filesystem::path pathObj(path); + if (boost::filesystem::exists(pathObj) && boost::filesystem::is_directory(pathObj)) return true; + } + catch (boost::filesystem::filesystem_error & e) + { + std::cerr << e.what() << std::endl; + } + return false; +} +/**@brief Creates a directory if not already existent. + * + * @param path Std::string that contains path including name of the folder that should be created. + */ +static void create_directory_if_not_exist(std::string path) +{ + auto & v_cl = create_vcluster(); + if (v_cl.rank() == 0) + { + if ( ! check_if_directory_exists(path)) + { + boost::filesystem::create_directory(path); +// BOOST_LOG_TRIVIAL(info) << "Created directory with name: " << path; + } + else std::cout << "Folder for current settings ( '" << path << "' ) already exists. New files will be saved to this folder." << std::endl; +// BOOST_LOG_TRIVIAL(info) << "Folder for current settings ( '" << path << "' ) already exists. New files will be saved to this folder."; + } +} + + + + + +#endif //FILES_READ_AND_WRITE_PATHSANDFILES_HPP + diff --git a/src/util/util.hpp b/src/util/util.hpp new file mode 100644 index 0000000000000000000000000000000000000000..70a8e48827f9e3c9ece093f9fbc1b2cded2b5777 --- /dev/null +++ b/src/util/util.hpp @@ -0,0 +1,390 @@ +/* + * util.hpp + * + * Created on: May 7, 2015 + * Author: Pietro Incardona + */ + +#include "config.h" + +#include "util/SimpleRNG.hpp" + +#ifndef UTIL_HPP_ +#define UTIL_HPP_ + +#include <boost/iostreams/device/mapped_file.hpp> + + +/*! \brief Compare two files, return true if they match + * + * \param file1 path1 + * \param file2 path2 + * + * \return true if they match + * + */ +static inline bool compare(std::string file1, std::string file2) +{ + boost::iostreams::mapped_file_source f1(file1); + boost::iostreams::mapped_file_source f2(file2); + + if( f1.size() == f2.size() && std::equal(f1.data(), f1.data() + f1.size(), f2.data()) ) + return true; + else + return false; +} + +//! RGB color struct +struct RGB +{ + //! Red + float R; + + //! Green + float G; + + //! Blue + float B; + + //! Return the color as string + std::string toString() + { + return std::to_string(R) + " " + std::to_string(G) + " " + std::to_string(B); + } +}; + +/*! \brief Return the color sampled from one group + * + * groups: + * + * 0: Red + * 1: Green + * 2: Blue + * 3: Yellow + * 4: Cyan + * 5: Magenta + * 6: Orange + * 7: Chartreuse-Green + * 8: Spring Green + * 9: Azure + * 10: Violet + * 11: Rose + * + * \param group + * + */ + +static inline struct RGB getColor(int group, SimpleRNG & d) +{ + struct RGB col; + + float s = (float)d.GetUniform(); + + group = group % 12; + +#ifdef ON_IO_UNIT_TESTS + s = 0.5; +#endif + + if (group == 0) + { + col.R = s/2 + 0.5; + col.G = 0.0; + col.B = 0.0; + } + else if (group == 1) + { + col.R = 0.0; + col.G = s/2 + 0.5; + col.B = 0.0; + } + else if (group == 2) + { + col.R = 0.0; + col.G = 0.0; + col.B = s; + } + else if (group == 3) + { + col.R = s/2 + 0.5; + col.G = s/2 + 0.5; + col.B = 0.0; + } + else if (group == 4) + { + col.R = s/2 + 0.5; + col.G = 0.0; + col.B = s/2 + 0.5; + } + else if (group == 5) + { + col.R = 0.0; + col.G = s/2 + 0.5; + col.B = s/2 + 0.5; + } + else if (group == 6) + { + col.R = s/2 + 0.5; + col.G = s/4 + 0.5; + col.B = 0.0; + } + else if (group == 7) + { + col.R = s/4 + 0.5; + col.G = s/2 + 0.5; + col.B = 0.0; + } + else if (group == 8) + { + col.R = 0.0; + col.G = s/2 + 0.5; + col.B = s/4 + 0.5; + } + else if (group == 9) + { + col.R = 0.0; + col.G = s/4 + 0.5; + col.B = s/2 + 0.5; + } + else if (group == 10) + { + col.R = s/4 + 0.5; + col.G = 0.0; + col.B = s/2 + 0.5; + } + else + { + col.R = s/2 + 0.5; + col.G = 0.0; + col.B = s/4 + 0.5; + } + + return col; +} + +/*! \brief Check if one string end with a particular string + * + * \param fullString string to check + * \param ending ending string to check + * + */ +static inline bool hasEnding (std::string const &fullString, std::string const &ending) +{ + if (fullString.length() >= ending.length()) + {return (0 == fullString.compare (fullString.length() - ending.length(), ending.length(), ending));} + else + {return false;} +} + +static const std::string base64_chars = + "ABCDEFGHIJKLMNOPQRSTUVWXYZ" + "abcdefghijklmnopqrstuvwxyz" + "0123456789+/"; + + +static inline bool is_base64(unsigned char c) { + return (isalnum(c) || (c == '+') || (c == '/')); +} + +/*! \brief Encode to base64 + * + * \param Byte String to encode + * \param Number of bytes to encode + * + */ +/*std::string base64_encode(unsigned char const* bytes_to_encode, unsigned int in_len) { + std::string ret; + int i = 0; + int j = 0; + unsigned char char_array_3[3]; + unsigned char char_array_4[4]; + + while (in_len--) { + char_array_3[i++] = *(bytes_to_encode++); + if (i == 3) { + char_array_4[0] = (char_array_3[0] & 0xfc) >> 2; + char_array_4[1] = ((char_array_3[0] & 0x03) << 4) + ((char_array_3[1] & 0xf0) >> 4); + char_array_4[2] = ((char_array_3[1] & 0x0f) << 2) + ((char_array_3[2] & 0xc0) >> 6); + char_array_4[3] = char_array_3[2] & 0x3f; + + for(i = 0; (i <4) ; i++) + ret += base64_chars[char_array_4[i]]; + i = 0; + } + } + + if (i) + { + for(j = i; j < 3; j++) + char_array_3[j] = '\0'; + + char_array_4[0] = (char_array_3[0] & 0xfc) >> 2; + char_array_4[1] = ((char_array_3[0] & 0x03) << 4) + ((char_array_3[1] & 0xf0) >> 4); + char_array_4[2] = ((char_array_3[1] & 0x0f) << 2) + ((char_array_3[2] & 0xc0) >> 6); + char_array_4[3] = char_array_3[2] & 0x3f; + + for (j = 0; (j < i + 1); j++) + ret += base64_chars[char_array_4[j]]; + + while((i++ < 3)) + ret += '='; + + } + + return ret; + +} + +*//*! \brief Decode base64 + * + * \param Coded string + * + *//* +std::string base64_decode(std::string const& encoded_string) { + int in_len = encoded_string.size(); + int i = 0; + int j = 0; + int in_ = 0; + unsigned char char_array_4[4], char_array_3[3]; + std::string ret; + + while (in_len-- && ( encoded_string[in_] != '=') && is_base64(encoded_string[in_])) { + char_array_4[i++] = encoded_string[in_]; in_++; + if (i ==4) { + for (i = 0; i <4; i++) + char_array_4[i] = base64_chars.find(char_array_4[i]); + + char_array_3[0] = (char_array_4[0] << 2) + ((char_array_4[1] & 0x30) >> 4); + char_array_3[1] = ((char_array_4[1] & 0xf) << 4) + ((char_array_4[2] & 0x3c) >> 2); + char_array_3[2] = ((char_array_4[2] & 0x3) << 6) + char_array_4[3]; + + for (i = 0; (i < 3); i++) + ret += char_array_3[i]; + i = 0; + } + } + + if (i) { + for (j = i; j <4; j++) + char_array_4[j] = 0; + + for (j = 0; j <4; j++) + char_array_4[j] = base64_chars.find(char_array_4[j]); + + char_array_3[0] = (char_array_4[0] << 2) + ((char_array_4[1] & 0x30) >> 4); + char_array_3[1] = ((char_array_4[1] & 0xf) << 4) + ((char_array_4[2] & 0x3c) >> 2); + char_array_3[2] = ((char_array_4[2] & 0x3) << 6) + char_array_4[3]; + + for (j = 0; (j < i - 1); j++) ret += char_array_3[j]; + } + + return ret; +}*/ + + +static const unsigned char vtkBase64UtilitiesEncodeTable[65] = + "ABCDEFGHIJKLMNOPQRSTUVWXYZ" + "abcdefghijklmnopqrstuvwxyz" + "0123456789+/"; + +//---------------------------------------------------------------------------- +inline static unsigned char vtkBase64UtilitiesEncodeChar(unsigned char c) +{ + assert( c < 65 ); + return vtkBase64UtilitiesEncodeTable[c]; +} + +//---------------------------------------------------------------------------- +static void EncodeTriplet(unsigned char i0, + unsigned char i1, + unsigned char i2, + unsigned char *o0, + unsigned char *o1, + unsigned char *o2, + unsigned char *o3) +{ + *o0 = vtkBase64UtilitiesEncodeChar((i0 >> 2) & 0x3F); + *o1 = vtkBase64UtilitiesEncodeChar(((i0 << 4) & 0x30)|((i1 >> 4) & 0x0F)); + *o2 = vtkBase64UtilitiesEncodeChar(((i1 << 2) & 0x3C)|((i2 >> 6) & 0x03)); + *o3 = vtkBase64UtilitiesEncodeChar(i2 & 0x3F); +} + +//---------------------------------------------------------------------------- +static void EncodePair(unsigned char i0, + unsigned char i1, + unsigned char *o0, + unsigned char *o1, + unsigned char *o2, + unsigned char *o3) +{ + *o0 = vtkBase64UtilitiesEncodeChar((i0 >> 2) & 0x3F); + *o1 = vtkBase64UtilitiesEncodeChar(((i0 << 4) & 0x30)|((i1 >> 4) & 0x0F)); + *o2 = vtkBase64UtilitiesEncodeChar(((i1 << 2) & 0x3C)); + *o3 = '='; +} + +//---------------------------------------------------------------------------- +static void EncodeSingle(unsigned char i0, + unsigned char *o0, + unsigned char *o1, + unsigned char *o2, + unsigned char *o3) +{ + *o0 = vtkBase64UtilitiesEncodeChar((i0 >> 2) & 0x3F); + *o1 = vtkBase64UtilitiesEncodeChar(((i0 << 4) & 0x30)); + *o2 = '='; + *o3 = '='; +} + +//---------------------------------------------------------------------------- +static unsigned long EncodeToBase64(const unsigned char *input, + unsigned long length, + unsigned char *output, + int mark_end) +{ + + const unsigned char *ptr = input; + const unsigned char *end = input + length; + unsigned char *optr = output; + + // Encode complete triplet + + while ((end - ptr) >= 3) + { + EncodeTriplet(ptr[0], ptr[1], ptr[2], + &optr[0], &optr[1], &optr[2], &optr[3]); + ptr += 3; + optr += 4; + } + + // Encodes a 2-byte ending into 3 bytes and 1 pad byte and writes. + + if (end - ptr == 2) + { + EncodePair(ptr[0], ptr[1], + &optr[0], &optr[1], &optr[2], &optr[3]); + optr += 4; + } + + // Encodes a 1-byte ending into 2 bytes and 2 pad bytes + + else if (end - ptr == 1) + { + EncodeSingle(ptr[0], + &optr[0], &optr[1], &optr[2], &optr[3]); + optr += 4; + } + + // Do we need to mark the end + + else if (mark_end) + { + optr[0] = optr[1] = optr[2] = optr[3] = '='; + optr += 4; + } + + return optr - output; +} + + +#endif /* UTIL_HPP_ */ diff --git a/test_data/char.csv b/test_data/char.csv new file mode 100644 index 0000000000000000000000000000000000000000..91fcfcd53c9450c0816312df0860a464515d6049 --- /dev/null +++ b/test_data/char.csv @@ -0,0 +1,5 @@ +a,antilope +b,ballena +c,camel +d,dackel +e,elefant \ No newline at end of file diff --git a/test_data/csv_out_test.csv b/test_data/csv_out_test.csv new file mode 100644 index 0000000000000000000000000000000000000000..a282d1bf36e8166650172be409bd953650989d0d --- /dev/null +++ b/test_data/csv_out_test.csv @@ -0,0 +1,17 @@ +x[0],x[1],x[2],x,y,z,s,v_[0],v_[1],v_[2],t_[0][0],t_[0][1],t_[0][2],t_[1][0],t_[1][1],t_[1][2],t_[2][0],t_[2][1],t_[2][2] +1,2,3,1,2,3,4,1,2,7,10,13,8,19,23,5,4,3,11 +1,2,3,1,2,3,4,2,3,8,11,14,9,20,24,6,5,4,12 +1,2,3,1,2,3,4,3,4,9,12,15,10,21,25,7,6,5,13 +1,2,3,1,2,3,4,4,5,10,13,16,11,22,26,8,7,6,14 +1,2,3,1,2,3,4,5,6,11,14,17,12,23,27,9,8,7,15 +1,2,3,1,2,3,4,6,7,12,15,18,13,24,28,10,9,8,16 +1,2,3,1,2,3,4,7,8,13,16,19,14,25,29,11,10,9,17 +1,2,3,1,2,3,4,8,9,14,17,20,15,26,30,12,11,10,18 +1,2,3,0,0,0,0,9,10,15,18,21,16,27,31,13,12,11,19 +1,2,3,0,0,0,0,10,11,16,19,22,17,28,32,14,13,12,20 +1,2,3,0,0,0,0,11,12,17,20,23,18,29,33,15,14,13,21 +1,2,3,0,0,0,0,12,13,18,21,24,19,30,34,16,15,14,22 +1,2,3,0,0,0,0,13,14,19,22,25,20,31,35,17,16,15,23 +1,2,3,0,0,0,0,14,15,20,23,26,21,32,36,18,17,16,24 +1,2,3,0,0,0,0,15,16,21,24,27,22,33,37,19,18,17,25 +1,2,3,0,0,0,0,16,17,22,25,28,23,34,38,20,19,18,26 diff --git a/test_data/csv_out_unk_test.csv b/test_data/csv_out_unk_test.csv new file mode 100644 index 0000000000000000000000000000000000000000..76fe7f51015868b919e8bbb9b4e2fa13c3c50bf7 --- /dev/null +++ b/test_data/csv_out_unk_test.csv @@ -0,0 +1,17 @@ +x[0],x[1],x[2],column_0,column_1,column_2,column_3,column_4_[0],column_4_[1],column_4_[2],column_5_[0][0],column_5_[0][1],column_5_[0][2],column_5_[1][0],column_5_[1][1],column_5_[1][2],column_5_[2][0],column_5_[2][1],column_5_[2][2],column_6 +1,2,3,100,102,107,109,1,2,7,10,13,8,19,23,5,4,3,11,0 +1,2,3,101,103,108,110,2,3,8,11,14,9,20,24,6,5,4,12,0 +1,2,3,102,104,109,111,3,4,9,12,15,10,21,25,7,6,5,13,0 +1,2,3,103,105,110,112,4,5,10,13,16,11,22,26,8,7,6,14,0 +1,2,3,104,106,111,113,5,6,11,14,17,12,23,27,9,8,7,15,0 +1,2,3,105,107,112,114,6,7,12,15,18,13,24,28,10,9,8,16,0 +1,2,3,106,108,113,115,7,8,13,16,19,14,25,29,11,10,9,17,0 +1,2,3,107,109,114,116,8,9,14,17,20,15,26,30,12,11,10,18,0 +1,2,3,108,110,115,117,9,10,15,18,21,16,27,31,13,12,11,19,0 +1,2,3,109,111,116,118,10,11,16,19,22,17,28,32,14,13,12,20,0 +1,2,3,110,112,117,119,11,12,17,20,23,18,29,33,15,14,13,21,0 +1,2,3,111,113,118,120,12,13,18,21,24,19,30,34,16,15,14,22,0 +1,2,3,112,114,119,121,13,14,19,22,25,20,31,35,17,16,15,23,0 +1,2,3,113,115,120,122,14,15,20,23,26,21,32,36,18,17,16,24,0 +1,2,3,114,116,121,123,15,16,21,24,27,22,33,37,19,18,17,25,0 +1,2,3,115,117,122,124,16,17,22,25,28,23,34,38,20,19,18,26,0 diff --git a/test_data/gc_num_plot_test.html b/test_data/gc_num_plot_test.html new file mode 100644 index 0000000000000000000000000000000000000000..455f7c46e1ee67ad0c4a5a38faad543bd4917c38 --- /dev/null +++ b/test_data/gc_num_plot_test.html @@ -0,0 +1,50 @@ +<html> + <head> + <script type="text/javascript" src="https://www.gstatic.com/charts/loader.js"></script> + <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script> + <script type="text/javascript"> + google.charts.load('current', {'packages':['corechart']}); + google.charts.setOnLoadCallback(drawVisualization); + +function exportToSVG(i) +{ +var e = document.getElementById('chart_div'+i); +var svg = e.getElementsByTagName('svg')[0].parentNode.innerHTML; +var pos = svg.lastIndexOf("</svg>"); +pos += 6; +svg = svg.substring(0,4) + " xmlns='http://www.w3.org/2000/svg' xmlns:xlink= 'http://www.w3.org/1999/xlink' " + svg.substring(4,pos); +svgData = 'data:image/svg+xml;charset=utf-8,' + encodeURIComponent(svg); +$(this).attr({'href': svgData,'target': '_blank'}); +} + + function drawVisualization() { +var data0 = new google.visualization.DataTable(); +data0.addColumn('number','X Axis'); +data0.addColumn('number','dataset1'); +data0.addColumn('number','dataset2'); +data0.addColumn('number','dataset3'); +data0.addColumn('number','dataset4'); +data0.addRows([ +[0.1,2,3,5,6], +[0.2,5,6,1,6], +[0.3,2,1,6,9], +[0.4,1,6,3,2], +[0.5,3,3,0,6], +[0.6,2,1,4,6], +]); +var options0= { +title : 'Example', +vAxis: {title: 'Y Axis'}, +hAxis: {title: 'X Axis'}, +curveType: 'function', +lineWidth: 4, +intervals: { 'style':'area' }}; +$("#export_svg0").on("click", function (event) {exportToSVG.apply(this,[0]);}); +var chart = new google.visualization.ComboChart(document.getElementById('chart_div0')); +chart.draw(data0, options0); +}</script> +</head> +<body> +<a href="#" download="graph1.svg" id="export_svg0"><button>Export data into svg</button></a><div id="chart_div0" style="width: 900px; height: 500px;"></div> +</body> +</html> diff --git a/test_data/gc_num_ydif_plot_test.html b/test_data/gc_num_ydif_plot_test.html new file mode 100644 index 0000000000000000000000000000000000000000..0a54032227398f1544586ea733e28cf5c22cd276 --- /dev/null +++ b/test_data/gc_num_ydif_plot_test.html @@ -0,0 +1,59 @@ +<html> + <head> + <script type="text/javascript" src="https://www.gstatic.com/charts/loader.js"></script> + <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script> + <script type="text/javascript"> + google.charts.load('current', {'packages':['corechart']}); + google.charts.setOnLoadCallback(drawVisualization); + +function exportToSVG(i) +{ +var e = document.getElementById('chart_div'+i); +var svg = e.getElementsByTagName('svg')[0].parentNode.innerHTML; +var pos = svg.lastIndexOf("</svg>"); +pos += 6; +svg = svg.substring(0,4) + " xmlns='http://www.w3.org/2000/svg' xmlns:xlink= 'http://www.w3.org/1999/xlink' " + svg.substring(4,pos); +svgData = 'data:image/svg+xml;charset=utf-8,' + encodeURIComponent(svg); +$(this).attr({'href': svgData,'target': '_blank'}); +} + + function drawVisualization() { +var data0 = new google.visualization.DataTable(); +data0.addColumn('number','X Axis'); +data0.addColumn('number','dataset1'); +data0.addColumn('number','dataset2'); +data0.addColumn('number','dataset3'); +data0.addRows([ +[0.1,4.5,null,3.5], +[0.15,null,1.5,null], +[0.2,3,4.5,6.5], +[0.3,5.5,null,null], +[0.35,null,2.5,null], +[0.37,null,null,1.5], +[0.4,3.3,null,2.5], +[0.45,null,6.5,null], +[0.5,1,null,7.5], +[0.6,7,null,null], +[0.63,null,null,1.5], +[0.7,null,null,3.5], +[0.82,null,null,2.5], +[0.91,null,null,5.5], +[1,null,null,1.5], +]); +var options0= { +interpolateNulls : true, +title : 'Example', +vAxis: {title: 'Y Axis'}, +hAxis: {title: 'X Axis'}, +curveType: 'function', +lineWidth: 4, +intervals: { 'style':'area' }}; +$("#export_svg0").on("click", function (event) {exportToSVG.apply(this,[0]);}); +var chart = new google.visualization.ComboChart(document.getElementById('chart_div0')); +chart.draw(data0, options0); +}</script> +</head> +<body> +<a href="#" download="graph1.svg" id="export_svg0"><button>Export data into svg</button></a><div id="chart_div0" style="width: 900px; height: 500px;"></div> +</body> +</html> diff --git a/test_data/gc_out2_test.html b/test_data/gc_out2_test.html new file mode 100644 index 0000000000000000000000000000000000000000..16f6147e1cae865ac05b60a01a8385b70007554f --- /dev/null +++ b/test_data/gc_out2_test.html @@ -0,0 +1,48 @@ +<html> + <head> + <script type="text/javascript" src="https://www.gstatic.com/charts/loader.js"></script> + <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script> + <script type="text/javascript"> + google.charts.load('current', {'packages':['corechart']}); + google.charts.setOnLoadCallback(drawVisualization); + +function exportToSVG(i) +{ +var e = document.getElementById('chart_div'+i); +var svg = e.getElementsByTagName('svg')[0].parentNode.innerHTML; +var pos = svg.lastIndexOf("</svg>"); +pos += 6; +svg = svg.substring(0,4) + " xmlns='http://www.w3.org/2000/svg' xmlns:xlink= 'http://www.w3.org/1999/xlink' " + svg.substring(4,pos); +svgData = 'data:image/svg+xml;charset=utf-8,' + encodeURIComponent(svg); +$(this).attr({'href': svgData,'target': '_blank'}); +} + + function drawVisualization() { +var data0 = new google.visualization.DataTable(); +data0.addColumn('string','X Axis'); +data0.addColumn('number','dataset1'); +data0.addColumn('number','dataset2'); +data0.addColumn('number','dataset3'); +data0.addColumn('number','dataset4'); +data0.addRows([ +['colum1',2.2,1.3,4.5,0.6], +['colum2',5,6.1,1.3,2.6], +['colum3',2.1,1,6.1,9.3], +['colum4',1.1,6.1,3,2], +['colum5',3.3,0.3,0,6.2], +['colum6',2,1.1,4,6.1], +]); +var options0= { +title : 'Example', +vAxis: {title: 'Y Axis'}, +hAxis: {title: 'X Axis'}, +seriesType: 'bars'}; +$("#export_svg0").on("click", function (event) {exportToSVG.apply(this,[0]);}); +var chart = new google.visualization.ComboChart(document.getElementById('chart_div0')); +chart.draw(data0, options0); +}</script> +</head> +<body> +<a href="#" download="graph1.svg" id="export_svg0"><button>Export data into svg</button></a><div id="chart_div0" style="width: 900px; height: 500px;"></div> +</body> +</html> diff --git a/test_data/gc_out3_test.html b/test_data/gc_out3_test.html new file mode 100644 index 0000000000000000000000000000000000000000..3eaf8466eb869c19006628900982ec5dd46783ac --- /dev/null +++ b/test_data/gc_out3_test.html @@ -0,0 +1,48 @@ +<html> + <head> + <script type="text/javascript" src="https://www.gstatic.com/charts/loader.js"></script> + <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script> + <script type="text/javascript"> + google.charts.load('current', {'packages':['corechart']}); + google.charts.setOnLoadCallback(drawVisualization); + +function exportToSVG(i) +{ +var e = document.getElementById('chart_div'+i); +var svg = e.getElementsByTagName('svg')[0].parentNode.innerHTML; +var pos = svg.lastIndexOf("</svg>"); +pos += 6; +svg = svg.substring(0,4) + " xmlns='http://www.w3.org/2000/svg' xmlns:xlink= 'http://www.w3.org/1999/xlink' " + svg.substring(4,pos); +svgData = 'data:image/svg+xml;charset=utf-8,' + encodeURIComponent(svg); +$(this).attr({'href': svgData,'target': '_blank'}); +} + + function drawVisualization() { +var data0 = new google.visualization.DataTable(); +data0.addColumn('string','X Axis'); +data0.addColumn('number','dataset1'); +data0.addColumn('number','dataset2'); +data0.addColumn('number','dataset3'); +data0.addColumn('number','dataset4'); +data0.addRows([ +['colum1',2.2,1.3,4.5,0.6], +['colum2',5,6.1,1.3,2.6], +['colum3',2.1,1,6.1,9.3], +['colum4',1.1,6.1,3,2], +['colum5',3.3,0.3,0,6.2], +['colum6',2,1.1,4,6.1], +]); +var options0= { +title : 'Example', +vAxis: {title: 'Y Axis'}, +hAxis: {title: 'X Axis'}, +seriesType: ''}; +$("#export_svg0").on("click", function (event) {exportToSVG.apply(this,[0]);}); +var chart = new google.visualization.ComboChart(document.getElementById('chart_div0')); +chart.draw(data0, options0); +}</script> +</head> +<body> +<a href="#" download="graph1.svg" id="export_svg0"><button>Export data into svg</button></a><div id="chart_div0" style="width: 900px; height: 500px;"></div> +</body> +</html> diff --git a/test_data/gc_out4_test.html b/test_data/gc_out4_test.html new file mode 100644 index 0000000000000000000000000000000000000000..f851830c498ab3315b7e8585f9d0cb6ac2e27b47 --- /dev/null +++ b/test_data/gc_out4_test.html @@ -0,0 +1,48 @@ +<html> + <head> + <script type="text/javascript" src="https://www.gstatic.com/charts/loader.js"></script> + <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script> + <script type="text/javascript"> + google.charts.load('current', {'packages':['corechart']}); + google.charts.setOnLoadCallback(drawVisualization); + +function exportToSVG(i) +{ +var e = document.getElementById('chart_div'+i); +var svg = e.getElementsByTagName('svg')[0].parentNode.innerHTML; +var pos = svg.lastIndexOf("</svg>"); +pos += 6; +svg = svg.substring(0,4) + " xmlns='http://www.w3.org/2000/svg' xmlns:xlink= 'http://www.w3.org/1999/xlink' " + svg.substring(4,pos); +svgData = 'data:image/svg+xml;charset=utf-8,' + encodeURIComponent(svg); +$(this).attr({'href': svgData,'target': '_blank'}); +} + + function drawVisualization() { +var data0 = new google.visualization.DataTable(); +data0.addColumn('string',''); +data0.addColumn('number','dataset1'); +data0.addColumn('number','dataset2'); +data0.addColumn('number','dataset3'); +data0.addColumn('number','dataset4'); +data0.addRows([ +['colum1',2.2,1.3,4.5,0.6], +['colum2',5,6.1,1.3,2.6], +['colum3',2.1,1,6.1,9.3], +['colum4',1.1,6.1,3,2], +['colum5',3.3,0.3,0,6.2], +['colum6',2,1.1,4,6.1], +]); +var options0= { +title : '', +vAxis: {title: ''}, +hAxis: {title: ''}, +seriesType: ''}; +$("#export_svg0").on("click", function (event) {exportToSVG.apply(this,[0]);}); +var chart = new google.visualization.ComboChart(document.getElementById('chart_div0')); +chart.draw(data0, options0); +}</script> +</head> +<body> +<a href="#" download="graph1.svg" id="export_svg0"><button>Export data into svg</button></a><div id="chart_div0" style="width: 900px; height: 500px;"></div> +</body> +</html> diff --git a/test_data/gc_out5_test.html b/test_data/gc_out5_test.html new file mode 100644 index 0000000000000000000000000000000000000000..4ef5259fdec336339185223f522efd6d0e93930d --- /dev/null +++ b/test_data/gc_out5_test.html @@ -0,0 +1,48 @@ +<html> + <head> + <script type="text/javascript" src="https://www.gstatic.com/charts/loader.js"></script> + <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script> + <script type="text/javascript"> + google.charts.load('current', {'packages':['corechart']}); + google.charts.setOnLoadCallback(drawVisualization); + +function exportToSVG(i) +{ +var e = document.getElementById('chart_div'+i); +var svg = e.getElementsByTagName('svg')[0].parentNode.innerHTML; +var pos = svg.lastIndexOf("</svg>"); +pos += 6; +svg = svg.substring(0,4) + " xmlns='http://www.w3.org/2000/svg' xmlns:xlink= 'http://www.w3.org/1999/xlink' " + svg.substring(4,pos); +svgData = 'data:image/svg+xml;charset=utf-8,' + encodeURIComponent(svg); +$(this).attr({'href': svgData,'target': '_blank'}); +} + + function drawVisualization() { +var data0 = new google.visualization.DataTable(); +data0.addColumn('string',''); +data0.addColumn('number',''); +data0.addColumn('number',''); +data0.addColumn('number',''); +data0.addColumn('number',''); +data0.addRows([ +['colum1',2.2,1.3,4.5,0.6], +['colum2',5,6.1,1.3,2.6], +['colum3',2.1,1,6.1,9.3], +['colum4',1.1,6.1,3,2], +['colum5',3.3,0.3,0,6.2], +['colum6',2,1.1,4,6.1], +]); +var options0= { +title : '', +vAxis: {title: ''}, +hAxis: {title: ''}, +seriesType: ''}; +$("#export_svg0").on("click", function (event) {exportToSVG.apply(this,[0]);}); +var chart = new google.visualization.ComboChart(document.getElementById('chart_div0')); +chart.draw(data0, options0); +}</script> +</head> +<body> +<a href="#" download="graph1.svg" id="export_svg0"><button>Export data into svg</button></a><div id="chart_div0" style="width: 900px; height: 500px;"></div> +</body> +</html> diff --git a/test_data/gc_out6_test.html b/test_data/gc_out6_test.html new file mode 100644 index 0000000000000000000000000000000000000000..8b1afbb0f181a8cab8efceb11bc61e786a851d64 --- /dev/null +++ b/test_data/gc_out6_test.html @@ -0,0 +1,48 @@ +<html> + <head> + <script type="text/javascript" src="https://www.gstatic.com/charts/loader.js"></script> + <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script> + <script type="text/javascript"> + google.charts.load('current', {'packages':['corechart']}); + google.charts.setOnLoadCallback(drawVisualization); + +function exportToSVG(i) +{ +var e = document.getElementById('chart_div'+i); +var svg = e.getElementsByTagName('svg')[0].parentNode.innerHTML; +var pos = svg.lastIndexOf("</svg>"); +pos += 6; +svg = svg.substring(0,4) + " xmlns='http://www.w3.org/2000/svg' xmlns:xlink= 'http://www.w3.org/1999/xlink' " + svg.substring(4,pos); +svgData = 'data:image/svg+xml;charset=utf-8,' + encodeURIComponent(svg); +$(this).attr({'href': svgData,'target': '_blank'}); +} + + function drawVisualization() { +var data0 = new google.visualization.DataTable(); +data0.addColumn('string',''); +data0.addColumn('number',''); +data0.addColumn('number',''); +data0.addColumn('number',''); +data0.addColumn('number',''); +data0.addRows([ +['',2.2,1.3,4.5,0.6], +['',5,6.1,1.3,2.6], +['',2.1,1,6.1,9.3], +['',1.1,6.1,3,2], +['',3.3,0.3,0,6.2], +['',2,1.1,4,6.1], +]); +var options0= { +title : '', +vAxis: {title: ''}, +hAxis: {title: ''}, +seriesType: ''}; +$("#export_svg0").on("click", function (event) {exportToSVG.apply(this,[0]);}); +var chart = new google.visualization.ComboChart(document.getElementById('chart_div0')); +chart.draw(data0, options0); +}</script> +</head> +<body> +<a href="#" download="graph1.svg" id="export_svg0"><button>Export data into svg</button></a><div id="chart_div0" style="width: 900px; height: 500px;"></div> +</body> +</html> diff --git a/test_data/gc_out7_test.html b/test_data/gc_out7_test.html new file mode 100644 index 0000000000000000000000000000000000000000..b157cd50033ee4c2af1833d719f7d38d4996ea54 --- /dev/null +++ b/test_data/gc_out7_test.html @@ -0,0 +1,97 @@ +<html> + <head> + <script type="text/javascript" src="https://www.gstatic.com/charts/loader.js"></script> + <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script> + <script type="text/javascript"> + google.charts.load('current', {'packages':['corechart']}); + google.charts.setOnLoadCallback(drawVisualization); + +function exportToSVG(i) +{ +var e = document.getElementById('chart_div'+i); +var svg = e.getElementsByTagName('svg')[0].parentNode.innerHTML; +var pos = svg.lastIndexOf("</svg>"); +pos += 6; +svg = svg.substring(0,4) + " xmlns='http://www.w3.org/2000/svg' xmlns:xlink= 'http://www.w3.org/1999/xlink' " + svg.substring(4,pos); +svgData = 'data:image/svg+xml;charset=utf-8,' + encodeURIComponent(svg); +$(this).attr({'href': svgData,'target': '_blank'}); +} + + function drawVisualization() { +var data0 = new google.visualization.DataTable(); +data0.addColumn('string','X Axis'); +data0.addColumn('number','dataset1'); +data0.addColumn('number','dataset2'); +data0.addColumn('number','dataset3'); +data0.addColumn('number','dataset4'); +data0.addRows([ +['colum1',2,3,5,6], +['colum2',5,6,1,6], +['colum3',2,1,6,9], +['colum4',1,6,3,2], +['colum5',3,3,0,6], +['colum6',2,1,4,6], +]); +var data1 = new google.visualization.DataTable(); +data1.addColumn('string','X Axis'); +data1.addColumn('number','dataset1'); +data1.addColumn('number','dataset2'); +data1.addColumn('number','dataset3'); +data1.addColumn('number','dataset4'); +data1.addRows([ +['colum1',2,3,5,6], +['colum2',5,6,1,6], +['colum3',2,1,6,9], +['colum4',1,6,3,2], +['colum5',3,3,0,6], +['colum6',2,1,4,6], +]); +var data2 = new google.visualization.DataTable(); +data2.addColumn('string','X Axis'); +data2.addColumn('number','dataset1'); +data2.addColumn('number','dataset2'); +data2.addColumn('number','dataset3'); +data2.addColumn('number','dataset4'); +data2.addRows([ +['colum1',2,3,5,6], +['colum2',5,6,1,6], +['colum3',2,1,6,9], +['colum4',1,6,3,2], +['colum5',3,3,0,6], +['colum6',2,1,4,6], +]); +var options0= { +title : 'Example', +vAxis: {title: 'Y Axis'}, +hAxis: {title: 'X Axis'}, +seriesType: 'bars', +series: {3: {type: 'line'}}}; +var options1= { +title : 'Example', +vAxis: {title: 'Y Axis'}, +hAxis: {title: 'X Axis'}, +seriesType: 'bars', +series: {3: {type: 'line'}}}; +var options2= { +title : 'Example', +vAxis: {title: 'Y Axis'}, +hAxis: {title: 'X Axis'}, +seriesType: 'bars', +series: {3: {type: 'line'}}}; +$("#export_svg0").on("click", function (event) {exportToSVG.apply(this,[0]);}); +var chart = new google.visualization.ComboChart(document.getElementById('chart_div0')); +chart.draw(data0, options0); +$("#export_svg1").on("click", function (event) {exportToSVG.apply(this,[1]);}); +var chart = new google.visualization.ComboChart(document.getElementById('chart_div1')); +chart.draw(data1, options1); +$("#export_svg2").on("click", function (event) {exportToSVG.apply(this,[2]);}); +var chart = new google.visualization.ComboChart(document.getElementById('chart_div2')); +chart.draw(data2, options2); +}</script> +</head> +<body> +<h2>Before first graph</h2><a href="#" download="graph1.svg" id="export_svg0"><button>Export data into svg</button></a><div id="chart_div0" style="width: 900px; height: 500px;"></div> +<h2>Before second graph</h2><a href="#" download="graph1.svg" id="export_svg1"><button>Export data into svg</button></a><div id="chart_div1" style="width: 900px; height: 500px;"></div> +<h2>Before third graph</h2><a href="#" download="graph1.svg" id="export_svg2"><button>Export data into svg</button></a><div id="chart_div2" style="width: 900px; height: 500px;"></div> +<h2>At the end</h2></body> +</html> diff --git a/test_data/gc_out_sc_test.html b/test_data/gc_out_sc_test.html new file mode 100644 index 0000000000000000000000000000000000000000..c704abb8a4653bbb95e732b3eed2d6ba78eb67ba --- /dev/null +++ b/test_data/gc_out_sc_test.html @@ -0,0 +1,65 @@ +<html> + <head> + <script type="text/javascript" src="https://www.gstatic.com/charts/loader.js"></script> + <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script> + <script type="text/javascript"> + google.charts.load('current', {'packages':['corechart']}); + google.charts.setOnLoadCallback(drawVisualization); + +function exportToSVG(i) +{ +var e = document.getElementById('chart_div'+i); +var svg = e.getElementsByTagName('svg')[0].parentNode.innerHTML; +var pos = svg.lastIndexOf("</svg>"); +pos += 6; +svg = svg.substring(0,4) + " xmlns='http://www.w3.org/2000/svg' xmlns:xlink= 'http://www.w3.org/1999/xlink' " + svg.substring(4,pos); +svgData = 'data:image/svg+xml;charset=utf-8,' + encodeURIComponent(svg); +$(this).attr({'href': svgData,'target': '_blank'}); +} + + function drawVisualization() { +var data0 = new google.visualization.DataTable(); +data0.addColumn('string','X Axis'); +data0.addColumn('number','dataset1'); +data0.addColumn('number','dataset2'); +data0.addColumn('number','dataset3'); +data0.addColumn('number','dataset4'); +data0.addRows([ +['colum1',2,3,5,6], +['colum2',5,6,1,6], +['colum3',2,1,6,9], +['colum4',1,6,3,2], +['colum5',3,3,0,6], +['colum6',2,1,4,6], +]); +var options0= { +title : 'Example', +vAxis: {title: 'Y Axis'}, +hAxis: {title: 'X Axis'}, +seriesType: 'bars', +series: {3: {type: 'line'}}}; +var view0 = new google.visualization.DataView(data0); +view0.setColumns([0 +,1,{ calc: "stringify", +sourceColumn: 1, +type: "string", +role: "annotation" } +,2,{ calc: "stringify", +sourceColumn: 2, +type: "string", +role: "annotation" } +,3,{ calc: "stringify", +sourceColumn: 3, +type: "string", +role: "annotation" } +] +); +$("#export_svg0").on("click", function (event) {exportToSVG.apply(this,[0]);}); +var chart = new google.visualization.ComboChart(document.getElementById('chart_div0')); +chart.draw(view0, options0); +}</script> +</head> +<body> +<a href="#" download="graph1.svg" id="export_svg0"><button>Export data into svg</button></a><div id="chart_div0" style="width: 900px; height: 500px;"></div> +</body> +</html> diff --git a/test_data/gc_out_test.html b/test_data/gc_out_test.html new file mode 100644 index 0000000000000000000000000000000000000000..b65719ef3b2d79be7ccad9ed89d3b0fe9ce04126 --- /dev/null +++ b/test_data/gc_out_test.html @@ -0,0 +1,49 @@ +<html> + <head> + <script type="text/javascript" src="https://www.gstatic.com/charts/loader.js"></script> + <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script> + <script type="text/javascript"> + google.charts.load('current', {'packages':['corechart']}); + google.charts.setOnLoadCallback(drawVisualization); + +function exportToSVG(i) +{ +var e = document.getElementById('chart_div'+i); +var svg = e.getElementsByTagName('svg')[0].parentNode.innerHTML; +var pos = svg.lastIndexOf("</svg>"); +pos += 6; +svg = svg.substring(0,4) + " xmlns='http://www.w3.org/2000/svg' xmlns:xlink= 'http://www.w3.org/1999/xlink' " + svg.substring(4,pos); +svgData = 'data:image/svg+xml;charset=utf-8,' + encodeURIComponent(svg); +$(this).attr({'href': svgData,'target': '_blank'}); +} + + function drawVisualization() { +var data0 = new google.visualization.DataTable(); +data0.addColumn('string','X Axis'); +data0.addColumn('number','dataset1'); +data0.addColumn('number','dataset2'); +data0.addColumn('number','dataset3'); +data0.addColumn('number','dataset4'); +data0.addRows([ +['colum1',2,3,5,6], +['colum2',5,6,1,6], +['colum3',2,1,6,9], +['colum4',1,6,3,2], +['colum5',3,3,0,6], +['colum6',2,1,4,6], +]); +var options0= { +title : 'Example', +vAxis: {title: 'Y Axis'}, +hAxis: {title: 'X Axis'}, +seriesType: 'bars', +series: {3: {type: 'line'}}}; +$("#export_svg0").on("click", function (event) {exportToSVG.apply(this,[0]);}); +var chart = new google.visualization.ComboChart(document.getElementById('chart_div0')); +chart.draw(data0, options0); +}</script> +</head> +<body> +<a href="#" download="graph1.svg" id="export_svg0"><button>Export data into svg</button></a><div id="chart_div0" style="width: 900px; height: 500px;"></div> +</body> +</html> diff --git a/test_data/gc_plot2_out_test.html b/test_data/gc_plot2_out_test.html new file mode 100644 index 0000000000000000000000000000000000000000..f48dbf2078e27c13cdce1be8f88222b2029c8627 --- /dev/null +++ b/test_data/gc_plot2_out_test.html @@ -0,0 +1,55 @@ +<html> + <head> + <script type="text/javascript" src="https://www.gstatic.com/charts/loader.js"></script> + <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script> + <script type="text/javascript"> + google.charts.load('current', {'packages':['corechart']}); + google.charts.setOnLoadCallback(drawVisualization); + +function exportToSVG(i) +{ +var e = document.getElementById('chart_div'+i); +var svg = e.getElementsByTagName('svg')[0].parentNode.innerHTML; +var pos = svg.lastIndexOf("</svg>"); +pos += 6; +svg = svg.substring(0,4) + " xmlns='http://www.w3.org/2000/svg' xmlns:xlink= 'http://www.w3.org/1999/xlink' " + svg.substring(4,pos); +svgData = 'data:image/svg+xml;charset=utf-8,' + encodeURIComponent(svg); +$(this).attr({'href': svgData,'target': '_blank'}); +} + + function drawVisualization() { +var data0 = new google.visualization.DataTable(); +data0.addColumn('string','X Axis'); +data0.addColumn('number','line0'); +data0.addColumn('number','line1'); +data0.addColumn('number','line2'); +data0.addColumn('number','line3'); +data0.addColumn('number','line4'); +data0.addColumn('number','line5'); +data0.addColumn('number','line6'); +data0.addColumn('number','line7'); +data0.addColumn('number','line8'); +data0.addRows([ +['colum1',0.1,0.2,0.19,0.22,0.195,0.215,0.35,0.34,0.36], +['colum2',0.11,0.21,0.18,0.22,0.19,0.215,0.36,0.35,0.37], +['colum3',0.12,0.22,0.21,0.23,0.215,0.225,0.35,0.34,0.36], +['colum4',0.15,0.25,0.2,0.26,0.22,0.255,0.36,0.35,0.37], +['colum5',0.09,0.29,0.25,0.3,0.26,0.295,0.35,0.34,0.36], +['colum6',0.08,0.28,0.27,0.29,0.275,0.285,0.36,0.35,0.37], +]); +var options0= { +title : 'Example', +vAxis: {title: 'Y Axis'}, +hAxis: {title: 'X Axis'}, +curveType: 'function', +lineWidth: 1, +intervals: { 'style':'area' }}; +$("#export_svg0").on("click", function (event) {exportToSVG.apply(this,[0]);}); +var chart = new google.visualization.ComboChart(document.getElementById('chart_div0')); +chart.draw(data0, options0); +}</script> +</head> +<body> +<a href="#" download="graph1.svg" id="export_svg0"><button>Export data into svg</button></a><div id="chart_div0" style="width: 900px; height: 500px;"></div> +</body> +</html> diff --git a/test_data/gc_plot_out_test.html b/test_data/gc_plot_out_test.html new file mode 100644 index 0000000000000000000000000000000000000000..a52ce00093bec66089e37e2099e7899cc5492169 --- /dev/null +++ b/test_data/gc_plot_out_test.html @@ -0,0 +1,57 @@ +<html> + <head> + <script type="text/javascript" src="https://www.gstatic.com/charts/loader.js"></script> + <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script> + <script type="text/javascript"> + google.charts.load('current', {'packages':['corechart']}); + google.charts.setOnLoadCallback(drawVisualization); + +function exportToSVG(i) +{ +var e = document.getElementById('chart_div'+i); +var svg = e.getElementsByTagName('svg')[0].parentNode.innerHTML; +var pos = svg.lastIndexOf("</svg>"); +pos += 6; +svg = svg.substring(0,4) + " xmlns='http://www.w3.org/2000/svg' xmlns:xlink= 'http://www.w3.org/1999/xlink' " + svg.substring(4,pos); +svgData = 'data:image/svg+xml;charset=utf-8,' + encodeURIComponent(svg); +$(this).attr({'href': svgData,'target': '_blank'}); +} + + function drawVisualization() { +var data0 = new google.visualization.DataTable(); +data0.addColumn('string','X Axis'); +data0.addColumn('number','line1'); +data0.addColumn('number','line2'); +data0.addColumn({id:'i0', type:'number', role:'interval'}); +data0.addColumn({id:'i0', type:'number', role:'interval'}); +data0.addColumn({id:'i1', type:'number', role:'interval'}); +data0.addColumn({id:'i1', type:'number', role:'interval'}); +data0.addColumn('number','line3'); +data0.addColumn({id:'i2', type:'number', role:'interval'}); +data0.addColumn({id:'i2', type:'number', role:'interval'}); +data0.addRows([ +['colum1',0.1,0.2,0.19,0.22,0.195,0.215,0.35,0.34,0.36], +['colum2',0.11,0.21,0.18,0.22,0.19,0.215,0.36,0.35,0.37], +['colum3',0.12,0.22,0.21,0.23,0.215,0.225,0.35,0.34,0.36], +['colum4',0.15,0.25,0.2,0.26,0.22,0.255,0.36,0.35,0.37], +['colum5',0.09,0.29,0.25,0.3,0.26,0.295,0.35,0.34,0.36], +['colum6',0.08,0.28,0.27,0.29,0.275,0.285,0.36,0.35,0.37], +]); +var options0= { +title : 'Example', +vAxis: {title: 'Y Axis'}, +hAxis: {title: 'X Axis'}, +curveType: 'function', +lineWidth: 1, +intervals: { 'style':'area' }, +interval: {'i2': { 'color': '#4374E0', 'style':'bars', 'lineWidth':4, 'fillOpacity':1 } } +}; +$("#export_svg0").on("click", function (event) {exportToSVG.apply(this,[0]);}); +var chart = new google.visualization.ComboChart(document.getElementById('chart_div0')); +chart.draw(data0, options0); +}</script> +</head> +<body> +<a href="#" download="graph1.svg" id="export_svg0"><button>Export data into svg</button></a><div id="chart_div0" style="width: 900px; height: 500px;"></div> +</body> +</html> diff --git a/test_data/integer.csv b/test_data/integer.csv new file mode 100644 index 0000000000000000000000000000000000000000..26f59ab685209150603a0b8f06eba7a4eb0d03b5 --- /dev/null +++ b/test_data/integer.csv @@ -0,0 +1,4 @@ +1,2,2 +2,4,8 +3,6,18 +4,8,32 \ No newline at end of file diff --git a/test_data/pvtp_points_test.pvtp b/test_data/pvtp_points_test.pvtp new file mode 100644 index 0000000000000000000000000000000000000000..62f5f01d003d720e127fb1e4123ed9de3c5c357c --- /dev/null +++ b/test_data/pvtp_points_test.pvtp @@ -0,0 +1,14 @@ +<VTKFile type="PPolyData" version="1.0" byte_order="LittleEndian" header_type="UInt64"> + <PPolyData> + <PPointData> + <PDataArray type="Float32" Name="attr0"/> + <PDataArray type="Float32" Name="attr1" NumberOfComponents="3"/> + <PDataArray type="Float32" Name="domain"/> + </PPointData> + <PPoints> + <PDataArray type="Float64" Name="Points" NumberOfComponents="3"/> + </PPoints> + <Piece Source="vtk_points_0.vtp"/> + <Piece Source="vtk_points_1.vtp"/> + </PPolyData> +</VTKFile> \ No newline at end of file diff --git a/test_data/raw_read_sv_test.bin b/test_data/raw_read_sv_test.bin new file mode 100644 index 0000000000000000000000000000000000000000..72ebe08fa554496f4257363ad24236f3b7237b2c Binary files /dev/null and b/test_data/raw_read_sv_test.bin differ diff --git a/test_data/test_graph2_test.graphml b/test_data/test_graph2_test.graphml new file mode 100644 index 0000000000000000000000000000000000000000..da443afbd0fe26b6a72dea6329f9b8ea8b80c29f --- /dev/null +++ b/test_data/test_graph2_test.graphml @@ -0,0 +1,100 @@ +<?xml version="1.0" encoding="UTF-8"?> + <graphml xmlns="http://graphml.graphdrawing.org/xmlns" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://graphml.graphdrawing.org/xmlns + http://graphml.graphdrawing.org/xmlns/1.0/graphml.xsd"> +<graph id="Graph" edgedefault="undirected"> +<key id="vk3" for="node" attr.name="double_num" attr.type="double"/> +<key id="vk4" for="node" attr.name="long_num" attr.type="long"/> +<key id="vk5" for="node" attr.name="integer" attr.type="int"/> +<key id="vk6" for="node" attr.name="string" attr.type="string"/> +<key id="ek0" for="edge" attr.name="x" attr.type="float"/> +<key id="ek1" for="edge" attr.name="y" attr.type="float"/> +<key id="ek2" for="edge" attr.name="z" attr.type="float"/> +<key id="ek3" for="edge" attr.name="double_num" attr.type="double"/> +<key id="ek4" for="edge" attr.name="long_num" attr.type="long"/> +<key id="ek5" for="edge" attr.name="integer" attr.type="int"/> +<key id="ek6" for="edge" attr.name="string" attr.type="string"/> +<node id="n0"> + <data key="vk0">1.000000</data> + <data key="vk1">2.000000</data> + <data key="vk2">3.000000</data> + <data key="vk3">4.000000</data> + <data key="vk4">5</data> + <data key="vk5">6</data> + <data key="vk6">test</data> +</node> +<node id="n1"> + <data key="vk0">1.000000</data> + <data key="vk1">2.000000</data> + <data key="vk2">3.000000</data> + <data key="vk3">4.000000</data> + <data key="vk4">5</data> + <data key="vk5">6</data> + <data key="vk6">tes2</data> +</node> +<node id="n2"> + <data key="vk0">1.000000</data> + <data key="vk1">2.000000</data> + <data key="vk2">3.000000</data> + <data key="vk3">4.000000</data> + <data key="vk4">5</data> + <data key="vk5">6</data> + <data key="vk6">test3</data> +</node> +<node id="n3"> + <data key="vk0">1.000000</data> + <data key="vk1">2.000000</data> + <data key="vk2">3.000000</data> + <data key="vk3">4.000000</data> + <data key="vk4">5</data> + <data key="vk5">6</data> + <data key="vk6">test4</data> +</node> +<edge id="e0" source="n0" target="n1"> + <data key="ek0">1.000000</data> + <data key="ek1">2.000000</data> + <data key="ek2">3.000000</data> + <data key="ek3">4.000000</data> + <data key="ek4">5</data> + <data key="ek5">6</data> + <data key="ek6">test5</data> +</edge> +<edge id="e1" source="n2" target="n1"> + <data key="ek0">1.000000</data> + <data key="ek1">2.000000</data> + <data key="ek2">3.000000</data> + <data key="ek3">4.000000</data> + <data key="ek4">5</data> + <data key="ek5">6</data> + <data key="ek6">test6</data> +</edge> +<edge id="e2" source="n2" target="n0"> + <data key="ek0">1.000000</data> + <data key="ek1">2.000000</data> + <data key="ek2">3.000000</data> + <data key="ek3">4.000000</data> + <data key="ek4">5</data> + <data key="ek5">6</data> + <data key="ek6">test8</data> +</edge> +<edge id="e3" source="n3" target="n1"> + <data key="ek0">1.000000</data> + <data key="ek1">2.000000</data> + <data key="ek2">3.000000</data> + <data key="ek3">4.000000</data> + <data key="ek4">5</data> + <data key="ek5">6</data> + <data key="ek6">test7</data> +</edge> +<edge id="e4" source="n3" target="n2"> + <data key="ek0">1.000000</data> + <data key="ek1">2.000000</data> + <data key="ek2">3.000000</data> + <data key="ek3">4.000000</data> + <data key="ek4">5</data> + <data key="ek5">6</data> + <data key="ek6">test9</data> +</edge> +</graph> +</graphml> \ No newline at end of file diff --git a/test_data/test_graph_test.graphml b/test_data/test_graph_test.graphml new file mode 100644 index 0000000000000000000000000000000000000000..df8e14858909042ab0960a8557e54eb5ce8ddbf1 --- /dev/null +++ b/test_data/test_graph_test.graphml @@ -0,0 +1,28819 @@ +<?xml version="1.0" encoding="UTF-8"?> + <graphml xmlns="http://graphml.graphdrawing.org/xmlns" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://graphml.graphdrawing.org/xmlns + http://graphml.graphdrawing.org/xmlns/1.0/graphml.xsd"> +<graph id="Graph" edgedefault="undirected"> +<key id="vk3" for="node" attr.name="double_num" attr.type="double"/> +<key id="vk4" for="node" attr.name="long_num" attr.type="long"/> +<key id="vk5" for="node" attr.name="integer" attr.type="int"/> +<key id="vk6" for="node" attr.name="string" attr.type="string"/> +<key id="ek0" for="edge" attr.name="x" attr.type="float"/> +<key id="ek1" for="edge" attr.name="y" attr.type="float"/> +<key id="ek2" for="edge" attr.name="z" attr.type="float"/> +<key id="ek3" for="edge" attr.name="double_num" attr.type="double"/> +<key id="ek4" for="edge" attr.name="long_num" attr.type="long"/> +<key id="ek5" for="edge" attr.name="integer" attr.type="int"/> +<key id="ek6" for="edge" attr.name="string" attr.type="string"/> +<node id="n0"> + <data key="vk0">0.000000</data> + <data key="vk1">0.000000</data> + <data key="vk2">0.000000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n1"> + <data key="vk0">0.125000</data> + <data key="vk1">0.000000</data> + <data key="vk2">0.000000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n2"> + <data key="vk0">0.250000</data> + <data key="vk1">0.000000</data> + <data key="vk2">0.000000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n3"> + <data key="vk0">0.375000</data> + <data key="vk1">0.000000</data> + <data key="vk2">0.000000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n4"> + <data key="vk0">0.500000</data> + <data key="vk1">0.000000</data> + <data key="vk2">0.000000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n5"> + <data key="vk0">0.625000</data> + <data key="vk1">0.000000</data> + <data key="vk2">0.000000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n6"> + <data key="vk0">0.750000</data> + <data key="vk1">0.000000</data> + <data key="vk2">0.000000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n7"> + <data key="vk0">0.875000</data> + <data key="vk1">0.000000</data> + <data key="vk2">0.000000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n8"> + <data key="vk0">0.000000</data> + <data key="vk1">0.125000</data> + <data key="vk2">0.000000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n9"> + <data key="vk0">0.125000</data> + <data key="vk1">0.125000</data> + <data key="vk2">0.000000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n10"> + <data key="vk0">0.250000</data> + <data key="vk1">0.125000</data> + <data key="vk2">0.000000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n11"> + <data key="vk0">0.375000</data> + <data key="vk1">0.125000</data> + <data key="vk2">0.000000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n12"> + <data key="vk0">0.500000</data> + <data key="vk1">0.125000</data> + <data key="vk2">0.000000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n13"> + <data key="vk0">0.625000</data> + <data key="vk1">0.125000</data> + <data key="vk2">0.000000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n14"> + <data key="vk0">0.750000</data> + <data key="vk1">0.125000</data> + <data key="vk2">0.000000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n15"> + <data key="vk0">0.875000</data> + <data key="vk1">0.125000</data> + <data key="vk2">0.000000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n16"> + <data key="vk0">0.000000</data> + <data key="vk1">0.250000</data> + <data key="vk2">0.000000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n17"> + <data key="vk0">0.125000</data> + <data key="vk1">0.250000</data> + <data key="vk2">0.000000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n18"> + <data key="vk0">0.250000</data> + <data key="vk1">0.250000</data> + <data key="vk2">0.000000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n19"> + <data key="vk0">0.375000</data> + <data key="vk1">0.250000</data> + <data key="vk2">0.000000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n20"> + <data key="vk0">0.500000</data> + <data key="vk1">0.250000</data> + <data key="vk2">0.000000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n21"> + <data key="vk0">0.625000</data> + <data key="vk1">0.250000</data> + <data key="vk2">0.000000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n22"> + <data key="vk0">0.750000</data> + <data key="vk1">0.250000</data> + <data key="vk2">0.000000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n23"> + <data key="vk0">0.875000</data> + <data key="vk1">0.250000</data> + <data key="vk2">0.000000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n24"> + <data key="vk0">0.000000</data> + <data key="vk1">0.375000</data> + <data key="vk2">0.000000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n25"> + <data key="vk0">0.125000</data> + <data key="vk1">0.375000</data> + <data key="vk2">0.000000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n26"> + <data key="vk0">0.250000</data> + <data key="vk1">0.375000</data> + <data key="vk2">0.000000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n27"> + <data key="vk0">0.375000</data> + <data key="vk1">0.375000</data> + <data key="vk2">0.000000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n28"> + <data key="vk0">0.500000</data> + <data key="vk1">0.375000</data> + <data key="vk2">0.000000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n29"> + <data key="vk0">0.625000</data> + <data key="vk1">0.375000</data> + <data key="vk2">0.000000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n30"> + <data key="vk0">0.750000</data> + <data key="vk1">0.375000</data> + <data key="vk2">0.000000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n31"> + <data key="vk0">0.875000</data> + <data key="vk1">0.375000</data> + <data key="vk2">0.000000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n32"> + <data key="vk0">0.000000</data> + <data key="vk1">0.500000</data> + <data key="vk2">0.000000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n33"> + <data key="vk0">0.125000</data> + <data key="vk1">0.500000</data> + <data key="vk2">0.000000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n34"> + <data key="vk0">0.250000</data> + <data key="vk1">0.500000</data> + <data key="vk2">0.000000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n35"> + <data key="vk0">0.375000</data> + <data key="vk1">0.500000</data> + <data key="vk2">0.000000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n36"> + <data key="vk0">0.500000</data> + <data key="vk1">0.500000</data> + <data key="vk2">0.000000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n37"> + <data key="vk0">0.625000</data> + <data key="vk1">0.500000</data> + <data key="vk2">0.000000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n38"> + <data key="vk0">0.750000</data> + <data key="vk1">0.500000</data> + <data key="vk2">0.000000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n39"> + <data key="vk0">0.875000</data> + <data key="vk1">0.500000</data> + <data key="vk2">0.000000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n40"> + <data key="vk0">0.000000</data> + <data key="vk1">0.625000</data> + <data key="vk2">0.000000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n41"> + <data key="vk0">0.125000</data> + <data key="vk1">0.625000</data> + <data key="vk2">0.000000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n42"> + <data key="vk0">0.250000</data> + <data key="vk1">0.625000</data> + <data key="vk2">0.000000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n43"> + <data key="vk0">0.375000</data> + <data key="vk1">0.625000</data> + <data key="vk2">0.000000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n44"> + <data key="vk0">0.500000</data> + <data key="vk1">0.625000</data> + <data key="vk2">0.000000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n45"> + <data key="vk0">0.625000</data> + <data key="vk1">0.625000</data> + <data key="vk2">0.000000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n46"> + <data key="vk0">0.750000</data> + <data key="vk1">0.625000</data> + <data key="vk2">0.000000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n47"> + <data key="vk0">0.875000</data> + <data key="vk1">0.625000</data> + <data key="vk2">0.000000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n48"> + <data key="vk0">0.000000</data> + <data key="vk1">0.750000</data> + <data key="vk2">0.000000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n49"> + <data key="vk0">0.125000</data> + <data key="vk1">0.750000</data> + <data key="vk2">0.000000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n50"> + <data key="vk0">0.250000</data> + <data key="vk1">0.750000</data> + <data key="vk2">0.000000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n51"> + <data key="vk0">0.375000</data> + <data key="vk1">0.750000</data> + <data key="vk2">0.000000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n52"> + <data key="vk0">0.500000</data> + <data key="vk1">0.750000</data> + <data key="vk2">0.000000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n53"> + <data key="vk0">0.625000</data> + <data key="vk1">0.750000</data> + <data key="vk2">0.000000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n54"> + <data key="vk0">0.750000</data> + <data key="vk1">0.750000</data> + <data key="vk2">0.000000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n55"> + <data key="vk0">0.875000</data> + <data key="vk1">0.750000</data> + <data key="vk2">0.000000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n56"> + <data key="vk0">0.000000</data> + <data key="vk1">0.875000</data> + <data key="vk2">0.000000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n57"> + <data key="vk0">0.125000</data> + <data key="vk1">0.875000</data> + <data key="vk2">0.000000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n58"> + <data key="vk0">0.250000</data> + <data key="vk1">0.875000</data> + <data key="vk2">0.000000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n59"> + <data key="vk0">0.375000</data> + <data key="vk1">0.875000</data> + <data key="vk2">0.000000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n60"> + <data key="vk0">0.500000</data> + <data key="vk1">0.875000</data> + <data key="vk2">0.000000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n61"> + <data key="vk0">0.625000</data> + <data key="vk1">0.875000</data> + <data key="vk2">0.000000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n62"> + <data key="vk0">0.750000</data> + <data key="vk1">0.875000</data> + <data key="vk2">0.000000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n63"> + <data key="vk0">0.875000</data> + <data key="vk1">0.875000</data> + <data key="vk2">0.000000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n64"> + <data key="vk0">0.000000</data> + <data key="vk1">0.000000</data> + <data key="vk2">0.125000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n65"> + <data key="vk0">0.125000</data> + <data key="vk1">0.000000</data> + <data key="vk2">0.125000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n66"> + <data key="vk0">0.250000</data> + <data key="vk1">0.000000</data> + <data key="vk2">0.125000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n67"> + <data key="vk0">0.375000</data> + <data key="vk1">0.000000</data> + <data key="vk2">0.125000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n68"> + <data key="vk0">0.500000</data> + <data key="vk1">0.000000</data> + <data key="vk2">0.125000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n69"> + <data key="vk0">0.625000</data> + <data key="vk1">0.000000</data> + <data key="vk2">0.125000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n70"> + <data key="vk0">0.750000</data> + <data key="vk1">0.000000</data> + <data key="vk2">0.125000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n71"> + <data key="vk0">0.875000</data> + <data key="vk1">0.000000</data> + <data key="vk2">0.125000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n72"> + <data key="vk0">0.000000</data> + <data key="vk1">0.125000</data> + <data key="vk2">0.125000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n73"> + <data key="vk0">0.125000</data> + <data key="vk1">0.125000</data> + <data key="vk2">0.125000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n74"> + <data key="vk0">0.250000</data> + <data key="vk1">0.125000</data> + <data key="vk2">0.125000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n75"> + <data key="vk0">0.375000</data> + <data key="vk1">0.125000</data> + <data key="vk2">0.125000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n76"> + <data key="vk0">0.500000</data> + <data key="vk1">0.125000</data> + <data key="vk2">0.125000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n77"> + <data key="vk0">0.625000</data> + <data key="vk1">0.125000</data> + <data key="vk2">0.125000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n78"> + <data key="vk0">0.750000</data> + <data key="vk1">0.125000</data> + <data key="vk2">0.125000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n79"> + <data key="vk0">0.875000</data> + <data key="vk1">0.125000</data> + <data key="vk2">0.125000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n80"> + <data key="vk0">0.000000</data> + <data key="vk1">0.250000</data> + <data key="vk2">0.125000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n81"> + <data key="vk0">0.125000</data> + <data key="vk1">0.250000</data> + <data key="vk2">0.125000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n82"> + <data key="vk0">0.250000</data> + <data key="vk1">0.250000</data> + <data key="vk2">0.125000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n83"> + <data key="vk0">0.375000</data> + <data key="vk1">0.250000</data> + <data key="vk2">0.125000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n84"> + <data key="vk0">0.500000</data> + <data key="vk1">0.250000</data> + <data key="vk2">0.125000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n85"> + <data key="vk0">0.625000</data> + <data key="vk1">0.250000</data> + <data key="vk2">0.125000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n86"> + <data key="vk0">0.750000</data> + <data key="vk1">0.250000</data> + <data key="vk2">0.125000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n87"> + <data key="vk0">0.875000</data> + <data key="vk1">0.250000</data> + <data key="vk2">0.125000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n88"> + <data key="vk0">0.000000</data> + <data key="vk1">0.375000</data> + <data key="vk2">0.125000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n89"> + <data key="vk0">0.125000</data> + <data key="vk1">0.375000</data> + <data key="vk2">0.125000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n90"> + <data key="vk0">0.250000</data> + <data key="vk1">0.375000</data> + <data key="vk2">0.125000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n91"> + <data key="vk0">0.375000</data> + <data key="vk1">0.375000</data> + <data key="vk2">0.125000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n92"> + <data key="vk0">0.500000</data> + <data key="vk1">0.375000</data> + <data key="vk2">0.125000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n93"> + <data key="vk0">0.625000</data> + <data key="vk1">0.375000</data> + <data key="vk2">0.125000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n94"> + <data key="vk0">0.750000</data> + <data key="vk1">0.375000</data> + <data key="vk2">0.125000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n95"> + <data key="vk0">0.875000</data> + <data key="vk1">0.375000</data> + <data key="vk2">0.125000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n96"> + <data key="vk0">0.000000</data> + <data key="vk1">0.500000</data> + <data key="vk2">0.125000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n97"> + <data key="vk0">0.125000</data> + <data key="vk1">0.500000</data> + <data key="vk2">0.125000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n98"> + <data key="vk0">0.250000</data> + <data key="vk1">0.500000</data> + <data key="vk2">0.125000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n99"> + <data key="vk0">0.375000</data> + <data key="vk1">0.500000</data> + <data key="vk2">0.125000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n100"> + <data key="vk0">0.500000</data> + <data key="vk1">0.500000</data> + <data key="vk2">0.125000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n101"> + <data key="vk0">0.625000</data> + <data key="vk1">0.500000</data> + <data key="vk2">0.125000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n102"> + <data key="vk0">0.750000</data> + <data key="vk1">0.500000</data> + <data key="vk2">0.125000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n103"> + <data key="vk0">0.875000</data> + <data key="vk1">0.500000</data> + <data key="vk2">0.125000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n104"> + <data key="vk0">0.000000</data> + <data key="vk1">0.625000</data> + <data key="vk2">0.125000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n105"> + <data key="vk0">0.125000</data> + <data key="vk1">0.625000</data> + <data key="vk2">0.125000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n106"> + <data key="vk0">0.250000</data> + <data key="vk1">0.625000</data> + <data key="vk2">0.125000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n107"> + <data key="vk0">0.375000</data> + <data key="vk1">0.625000</data> + <data key="vk2">0.125000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n108"> + <data key="vk0">0.500000</data> + <data key="vk1">0.625000</data> + <data key="vk2">0.125000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n109"> + <data key="vk0">0.625000</data> + <data key="vk1">0.625000</data> + <data key="vk2">0.125000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n110"> + <data key="vk0">0.750000</data> + <data key="vk1">0.625000</data> + <data key="vk2">0.125000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n111"> + <data key="vk0">0.875000</data> + <data key="vk1">0.625000</data> + <data key="vk2">0.125000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n112"> + <data key="vk0">0.000000</data> + <data key="vk1">0.750000</data> + <data key="vk2">0.125000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n113"> + <data key="vk0">0.125000</data> + <data key="vk1">0.750000</data> + <data key="vk2">0.125000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n114"> + <data key="vk0">0.250000</data> + <data key="vk1">0.750000</data> + <data key="vk2">0.125000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n115"> + <data key="vk0">0.375000</data> + <data key="vk1">0.750000</data> + <data key="vk2">0.125000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n116"> + <data key="vk0">0.500000</data> + <data key="vk1">0.750000</data> + <data key="vk2">0.125000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n117"> + <data key="vk0">0.625000</data> + <data key="vk1">0.750000</data> + <data key="vk2">0.125000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n118"> + <data key="vk0">0.750000</data> + <data key="vk1">0.750000</data> + <data key="vk2">0.125000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n119"> + <data key="vk0">0.875000</data> + <data key="vk1">0.750000</data> + <data key="vk2">0.125000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n120"> + <data key="vk0">0.000000</data> + <data key="vk1">0.875000</data> + <data key="vk2">0.125000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n121"> + <data key="vk0">0.125000</data> + <data key="vk1">0.875000</data> + <data key="vk2">0.125000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n122"> + <data key="vk0">0.250000</data> + <data key="vk1">0.875000</data> + <data key="vk2">0.125000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n123"> + <data key="vk0">0.375000</data> + <data key="vk1">0.875000</data> + <data key="vk2">0.125000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n124"> + <data key="vk0">0.500000</data> + <data key="vk1">0.875000</data> + <data key="vk2">0.125000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n125"> + <data key="vk0">0.625000</data> + <data key="vk1">0.875000</data> + <data key="vk2">0.125000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n126"> + <data key="vk0">0.750000</data> + <data key="vk1">0.875000</data> + <data key="vk2">0.125000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n127"> + <data key="vk0">0.875000</data> + <data key="vk1">0.875000</data> + <data key="vk2">0.125000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n128"> + <data key="vk0">0.000000</data> + <data key="vk1">0.000000</data> + <data key="vk2">0.250000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n129"> + <data key="vk0">0.125000</data> + <data key="vk1">0.000000</data> + <data key="vk2">0.250000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n130"> + <data key="vk0">0.250000</data> + <data key="vk1">0.000000</data> + <data key="vk2">0.250000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n131"> + <data key="vk0">0.375000</data> + <data key="vk1">0.000000</data> + <data key="vk2">0.250000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n132"> + <data key="vk0">0.500000</data> + <data key="vk1">0.000000</data> + <data key="vk2">0.250000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n133"> + <data key="vk0">0.625000</data> + <data key="vk1">0.000000</data> + <data key="vk2">0.250000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n134"> + <data key="vk0">0.750000</data> + <data key="vk1">0.000000</data> + <data key="vk2">0.250000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n135"> + <data key="vk0">0.875000</data> + <data key="vk1">0.000000</data> + <data key="vk2">0.250000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n136"> + <data key="vk0">0.000000</data> + <data key="vk1">0.125000</data> + <data key="vk2">0.250000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n137"> + <data key="vk0">0.125000</data> + <data key="vk1">0.125000</data> + <data key="vk2">0.250000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n138"> + <data key="vk0">0.250000</data> + <data key="vk1">0.125000</data> + <data key="vk2">0.250000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n139"> + <data key="vk0">0.375000</data> + <data key="vk1">0.125000</data> + <data key="vk2">0.250000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n140"> + <data key="vk0">0.500000</data> + <data key="vk1">0.125000</data> + <data key="vk2">0.250000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n141"> + <data key="vk0">0.625000</data> + <data key="vk1">0.125000</data> + <data key="vk2">0.250000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n142"> + <data key="vk0">0.750000</data> + <data key="vk1">0.125000</data> + <data key="vk2">0.250000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n143"> + <data key="vk0">0.875000</data> + <data key="vk1">0.125000</data> + <data key="vk2">0.250000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n144"> + <data key="vk0">0.000000</data> + <data key="vk1">0.250000</data> + <data key="vk2">0.250000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n145"> + <data key="vk0">0.125000</data> + <data key="vk1">0.250000</data> + <data key="vk2">0.250000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n146"> + <data key="vk0">0.250000</data> + <data key="vk1">0.250000</data> + <data key="vk2">0.250000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n147"> + <data key="vk0">0.375000</data> + <data key="vk1">0.250000</data> + <data key="vk2">0.250000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n148"> + <data key="vk0">0.500000</data> + <data key="vk1">0.250000</data> + <data key="vk2">0.250000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n149"> + <data key="vk0">0.625000</data> + <data key="vk1">0.250000</data> + <data key="vk2">0.250000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n150"> + <data key="vk0">0.750000</data> + <data key="vk1">0.250000</data> + <data key="vk2">0.250000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n151"> + <data key="vk0">0.875000</data> + <data key="vk1">0.250000</data> + <data key="vk2">0.250000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n152"> + <data key="vk0">0.000000</data> + <data key="vk1">0.375000</data> + <data key="vk2">0.250000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n153"> + <data key="vk0">0.125000</data> + <data key="vk1">0.375000</data> + <data key="vk2">0.250000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n154"> + <data key="vk0">0.250000</data> + <data key="vk1">0.375000</data> + <data key="vk2">0.250000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n155"> + <data key="vk0">0.375000</data> + <data key="vk1">0.375000</data> + <data key="vk2">0.250000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n156"> + <data key="vk0">0.500000</data> + <data key="vk1">0.375000</data> + <data key="vk2">0.250000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n157"> + <data key="vk0">0.625000</data> + <data key="vk1">0.375000</data> + <data key="vk2">0.250000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n158"> + <data key="vk0">0.750000</data> + <data key="vk1">0.375000</data> + <data key="vk2">0.250000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n159"> + <data key="vk0">0.875000</data> + <data key="vk1">0.375000</data> + <data key="vk2">0.250000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n160"> + <data key="vk0">0.000000</data> + <data key="vk1">0.500000</data> + <data key="vk2">0.250000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n161"> + <data key="vk0">0.125000</data> + <data key="vk1">0.500000</data> + <data key="vk2">0.250000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n162"> + <data key="vk0">0.250000</data> + <data key="vk1">0.500000</data> + <data key="vk2">0.250000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n163"> + <data key="vk0">0.375000</data> + <data key="vk1">0.500000</data> + <data key="vk2">0.250000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n164"> + <data key="vk0">0.500000</data> + <data key="vk1">0.500000</data> + <data key="vk2">0.250000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n165"> + <data key="vk0">0.625000</data> + <data key="vk1">0.500000</data> + <data key="vk2">0.250000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n166"> + <data key="vk0">0.750000</data> + <data key="vk1">0.500000</data> + <data key="vk2">0.250000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n167"> + <data key="vk0">0.875000</data> + <data key="vk1">0.500000</data> + <data key="vk2">0.250000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n168"> + <data key="vk0">0.000000</data> + <data key="vk1">0.625000</data> + <data key="vk2">0.250000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n169"> + <data key="vk0">0.125000</data> + <data key="vk1">0.625000</data> + <data key="vk2">0.250000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n170"> + <data key="vk0">0.250000</data> + <data key="vk1">0.625000</data> + <data key="vk2">0.250000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n171"> + <data key="vk0">0.375000</data> + <data key="vk1">0.625000</data> + <data key="vk2">0.250000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n172"> + <data key="vk0">0.500000</data> + <data key="vk1">0.625000</data> + <data key="vk2">0.250000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n173"> + <data key="vk0">0.625000</data> + <data key="vk1">0.625000</data> + <data key="vk2">0.250000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n174"> + <data key="vk0">0.750000</data> + <data key="vk1">0.625000</data> + <data key="vk2">0.250000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n175"> + <data key="vk0">0.875000</data> + <data key="vk1">0.625000</data> + <data key="vk2">0.250000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n176"> + <data key="vk0">0.000000</data> + <data key="vk1">0.750000</data> + <data key="vk2">0.250000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n177"> + <data key="vk0">0.125000</data> + <data key="vk1">0.750000</data> + <data key="vk2">0.250000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n178"> + <data key="vk0">0.250000</data> + <data key="vk1">0.750000</data> + <data key="vk2">0.250000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n179"> + <data key="vk0">0.375000</data> + <data key="vk1">0.750000</data> + <data key="vk2">0.250000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n180"> + <data key="vk0">0.500000</data> + <data key="vk1">0.750000</data> + <data key="vk2">0.250000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n181"> + <data key="vk0">0.625000</data> + <data key="vk1">0.750000</data> + <data key="vk2">0.250000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n182"> + <data key="vk0">0.750000</data> + <data key="vk1">0.750000</data> + <data key="vk2">0.250000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n183"> + <data key="vk0">0.875000</data> + <data key="vk1">0.750000</data> + <data key="vk2">0.250000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n184"> + <data key="vk0">0.000000</data> + <data key="vk1">0.875000</data> + <data key="vk2">0.250000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n185"> + <data key="vk0">0.125000</data> + <data key="vk1">0.875000</data> + <data key="vk2">0.250000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n186"> + <data key="vk0">0.250000</data> + <data key="vk1">0.875000</data> + <data key="vk2">0.250000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n187"> + <data key="vk0">0.375000</data> + <data key="vk1">0.875000</data> + <data key="vk2">0.250000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n188"> + <data key="vk0">0.500000</data> + <data key="vk1">0.875000</data> + <data key="vk2">0.250000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n189"> + <data key="vk0">0.625000</data> + <data key="vk1">0.875000</data> + <data key="vk2">0.250000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n190"> + <data key="vk0">0.750000</data> + <data key="vk1">0.875000</data> + <data key="vk2">0.250000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n191"> + <data key="vk0">0.875000</data> + <data key="vk1">0.875000</data> + <data key="vk2">0.250000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n192"> + <data key="vk0">0.000000</data> + <data key="vk1">0.000000</data> + <data key="vk2">0.375000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n193"> + <data key="vk0">0.125000</data> + <data key="vk1">0.000000</data> + <data key="vk2">0.375000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n194"> + <data key="vk0">0.250000</data> + <data key="vk1">0.000000</data> + <data key="vk2">0.375000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n195"> + <data key="vk0">0.375000</data> + <data key="vk1">0.000000</data> + <data key="vk2">0.375000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n196"> + <data key="vk0">0.500000</data> + <data key="vk1">0.000000</data> + <data key="vk2">0.375000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n197"> + <data key="vk0">0.625000</data> + <data key="vk1">0.000000</data> + <data key="vk2">0.375000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n198"> + <data key="vk0">0.750000</data> + <data key="vk1">0.000000</data> + <data key="vk2">0.375000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n199"> + <data key="vk0">0.875000</data> + <data key="vk1">0.000000</data> + <data key="vk2">0.375000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n200"> + <data key="vk0">0.000000</data> + <data key="vk1">0.125000</data> + <data key="vk2">0.375000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n201"> + <data key="vk0">0.125000</data> + <data key="vk1">0.125000</data> + <data key="vk2">0.375000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n202"> + <data key="vk0">0.250000</data> + <data key="vk1">0.125000</data> + <data key="vk2">0.375000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n203"> + <data key="vk0">0.375000</data> + <data key="vk1">0.125000</data> + <data key="vk2">0.375000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n204"> + <data key="vk0">0.500000</data> + <data key="vk1">0.125000</data> + <data key="vk2">0.375000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n205"> + <data key="vk0">0.625000</data> + <data key="vk1">0.125000</data> + <data key="vk2">0.375000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n206"> + <data key="vk0">0.750000</data> + <data key="vk1">0.125000</data> + <data key="vk2">0.375000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n207"> + <data key="vk0">0.875000</data> + <data key="vk1">0.125000</data> + <data key="vk2">0.375000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n208"> + <data key="vk0">0.000000</data> + <data key="vk1">0.250000</data> + <data key="vk2">0.375000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n209"> + <data key="vk0">0.125000</data> + <data key="vk1">0.250000</data> + <data key="vk2">0.375000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n210"> + <data key="vk0">0.250000</data> + <data key="vk1">0.250000</data> + <data key="vk2">0.375000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n211"> + <data key="vk0">0.375000</data> + <data key="vk1">0.250000</data> + <data key="vk2">0.375000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n212"> + <data key="vk0">0.500000</data> + <data key="vk1">0.250000</data> + <data key="vk2">0.375000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n213"> + <data key="vk0">0.625000</data> + <data key="vk1">0.250000</data> + <data key="vk2">0.375000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n214"> + <data key="vk0">0.750000</data> + <data key="vk1">0.250000</data> + <data key="vk2">0.375000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n215"> + <data key="vk0">0.875000</data> + <data key="vk1">0.250000</data> + <data key="vk2">0.375000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n216"> + <data key="vk0">0.000000</data> + <data key="vk1">0.375000</data> + <data key="vk2">0.375000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n217"> + <data key="vk0">0.125000</data> + <data key="vk1">0.375000</data> + <data key="vk2">0.375000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n218"> + <data key="vk0">0.250000</data> + <data key="vk1">0.375000</data> + <data key="vk2">0.375000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n219"> + <data key="vk0">0.375000</data> + <data key="vk1">0.375000</data> + <data key="vk2">0.375000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n220"> + <data key="vk0">0.500000</data> + <data key="vk1">0.375000</data> + <data key="vk2">0.375000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n221"> + <data key="vk0">0.625000</data> + <data key="vk1">0.375000</data> + <data key="vk2">0.375000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n222"> + <data key="vk0">0.750000</data> + <data key="vk1">0.375000</data> + <data key="vk2">0.375000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n223"> + <data key="vk0">0.875000</data> + <data key="vk1">0.375000</data> + <data key="vk2">0.375000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n224"> + <data key="vk0">0.000000</data> + <data key="vk1">0.500000</data> + <data key="vk2">0.375000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n225"> + <data key="vk0">0.125000</data> + <data key="vk1">0.500000</data> + <data key="vk2">0.375000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n226"> + <data key="vk0">0.250000</data> + <data key="vk1">0.500000</data> + <data key="vk2">0.375000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n227"> + <data key="vk0">0.375000</data> + <data key="vk1">0.500000</data> + <data key="vk2">0.375000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n228"> + <data key="vk0">0.500000</data> + <data key="vk1">0.500000</data> + <data key="vk2">0.375000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n229"> + <data key="vk0">0.625000</data> + <data key="vk1">0.500000</data> + <data key="vk2">0.375000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n230"> + <data key="vk0">0.750000</data> + <data key="vk1">0.500000</data> + <data key="vk2">0.375000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n231"> + <data key="vk0">0.875000</data> + <data key="vk1">0.500000</data> + <data key="vk2">0.375000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n232"> + <data key="vk0">0.000000</data> + <data key="vk1">0.625000</data> + <data key="vk2">0.375000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n233"> + <data key="vk0">0.125000</data> + <data key="vk1">0.625000</data> + <data key="vk2">0.375000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n234"> + <data key="vk0">0.250000</data> + <data key="vk1">0.625000</data> + <data key="vk2">0.375000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n235"> + <data key="vk0">0.375000</data> + <data key="vk1">0.625000</data> + <data key="vk2">0.375000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n236"> + <data key="vk0">0.500000</data> + <data key="vk1">0.625000</data> + <data key="vk2">0.375000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n237"> + <data key="vk0">0.625000</data> + <data key="vk1">0.625000</data> + <data key="vk2">0.375000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n238"> + <data key="vk0">0.750000</data> + <data key="vk1">0.625000</data> + <data key="vk2">0.375000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n239"> + <data key="vk0">0.875000</data> + <data key="vk1">0.625000</data> + <data key="vk2">0.375000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n240"> + <data key="vk0">0.000000</data> + <data key="vk1">0.750000</data> + <data key="vk2">0.375000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n241"> + <data key="vk0">0.125000</data> + <data key="vk1">0.750000</data> + <data key="vk2">0.375000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n242"> + <data key="vk0">0.250000</data> + <data key="vk1">0.750000</data> + <data key="vk2">0.375000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n243"> + <data key="vk0">0.375000</data> + <data key="vk1">0.750000</data> + <data key="vk2">0.375000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n244"> + <data key="vk0">0.500000</data> + <data key="vk1">0.750000</data> + <data key="vk2">0.375000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n245"> + <data key="vk0">0.625000</data> + <data key="vk1">0.750000</data> + <data key="vk2">0.375000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n246"> + <data key="vk0">0.750000</data> + <data key="vk1">0.750000</data> + <data key="vk2">0.375000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n247"> + <data key="vk0">0.875000</data> + <data key="vk1">0.750000</data> + <data key="vk2">0.375000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n248"> + <data key="vk0">0.000000</data> + <data key="vk1">0.875000</data> + <data key="vk2">0.375000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n249"> + <data key="vk0">0.125000</data> + <data key="vk1">0.875000</data> + <data key="vk2">0.375000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n250"> + <data key="vk0">0.250000</data> + <data key="vk1">0.875000</data> + <data key="vk2">0.375000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n251"> + <data key="vk0">0.375000</data> + <data key="vk1">0.875000</data> + <data key="vk2">0.375000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n252"> + <data key="vk0">0.500000</data> + <data key="vk1">0.875000</data> + <data key="vk2">0.375000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n253"> + <data key="vk0">0.625000</data> + <data key="vk1">0.875000</data> + <data key="vk2">0.375000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n254"> + <data key="vk0">0.750000</data> + <data key="vk1">0.875000</data> + <data key="vk2">0.375000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n255"> + <data key="vk0">0.875000</data> + <data key="vk1">0.875000</data> + <data key="vk2">0.375000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n256"> + <data key="vk0">0.000000</data> + <data key="vk1">0.000000</data> + <data key="vk2">0.500000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n257"> + <data key="vk0">0.125000</data> + <data key="vk1">0.000000</data> + <data key="vk2">0.500000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n258"> + <data key="vk0">0.250000</data> + <data key="vk1">0.000000</data> + <data key="vk2">0.500000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n259"> + <data key="vk0">0.375000</data> + <data key="vk1">0.000000</data> + <data key="vk2">0.500000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n260"> + <data key="vk0">0.500000</data> + <data key="vk1">0.000000</data> + <data key="vk2">0.500000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n261"> + <data key="vk0">0.625000</data> + <data key="vk1">0.000000</data> + <data key="vk2">0.500000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n262"> + <data key="vk0">0.750000</data> + <data key="vk1">0.000000</data> + <data key="vk2">0.500000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n263"> + <data key="vk0">0.875000</data> + <data key="vk1">0.000000</data> + <data key="vk2">0.500000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n264"> + <data key="vk0">0.000000</data> + <data key="vk1">0.125000</data> + <data key="vk2">0.500000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n265"> + <data key="vk0">0.125000</data> + <data key="vk1">0.125000</data> + <data key="vk2">0.500000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n266"> + <data key="vk0">0.250000</data> + <data key="vk1">0.125000</data> + <data key="vk2">0.500000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n267"> + <data key="vk0">0.375000</data> + <data key="vk1">0.125000</data> + <data key="vk2">0.500000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n268"> + <data key="vk0">0.500000</data> + <data key="vk1">0.125000</data> + <data key="vk2">0.500000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n269"> + <data key="vk0">0.625000</data> + <data key="vk1">0.125000</data> + <data key="vk2">0.500000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n270"> + <data key="vk0">0.750000</data> + <data key="vk1">0.125000</data> + <data key="vk2">0.500000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n271"> + <data key="vk0">0.875000</data> + <data key="vk1">0.125000</data> + <data key="vk2">0.500000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n272"> + <data key="vk0">0.000000</data> + <data key="vk1">0.250000</data> + <data key="vk2">0.500000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n273"> + <data key="vk0">0.125000</data> + <data key="vk1">0.250000</data> + <data key="vk2">0.500000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n274"> + <data key="vk0">0.250000</data> + <data key="vk1">0.250000</data> + <data key="vk2">0.500000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n275"> + <data key="vk0">0.375000</data> + <data key="vk1">0.250000</data> + <data key="vk2">0.500000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n276"> + <data key="vk0">0.500000</data> + <data key="vk1">0.250000</data> + <data key="vk2">0.500000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n277"> + <data key="vk0">0.625000</data> + <data key="vk1">0.250000</data> + <data key="vk2">0.500000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n278"> + <data key="vk0">0.750000</data> + <data key="vk1">0.250000</data> + <data key="vk2">0.500000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n279"> + <data key="vk0">0.875000</data> + <data key="vk1">0.250000</data> + <data key="vk2">0.500000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n280"> + <data key="vk0">0.000000</data> + <data key="vk1">0.375000</data> + <data key="vk2">0.500000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n281"> + <data key="vk0">0.125000</data> + <data key="vk1">0.375000</data> + <data key="vk2">0.500000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n282"> + <data key="vk0">0.250000</data> + <data key="vk1">0.375000</data> + <data key="vk2">0.500000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n283"> + <data key="vk0">0.375000</data> + <data key="vk1">0.375000</data> + <data key="vk2">0.500000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n284"> + <data key="vk0">0.500000</data> + <data key="vk1">0.375000</data> + <data key="vk2">0.500000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n285"> + <data key="vk0">0.625000</data> + <data key="vk1">0.375000</data> + <data key="vk2">0.500000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n286"> + <data key="vk0">0.750000</data> + <data key="vk1">0.375000</data> + <data key="vk2">0.500000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n287"> + <data key="vk0">0.875000</data> + <data key="vk1">0.375000</data> + <data key="vk2">0.500000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n288"> + <data key="vk0">0.000000</data> + <data key="vk1">0.500000</data> + <data key="vk2">0.500000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n289"> + <data key="vk0">0.125000</data> + <data key="vk1">0.500000</data> + <data key="vk2">0.500000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n290"> + <data key="vk0">0.250000</data> + <data key="vk1">0.500000</data> + <data key="vk2">0.500000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n291"> + <data key="vk0">0.375000</data> + <data key="vk1">0.500000</data> + <data key="vk2">0.500000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n292"> + <data key="vk0">0.500000</data> + <data key="vk1">0.500000</data> + <data key="vk2">0.500000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n293"> + <data key="vk0">0.625000</data> + <data key="vk1">0.500000</data> + <data key="vk2">0.500000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n294"> + <data key="vk0">0.750000</data> + <data key="vk1">0.500000</data> + <data key="vk2">0.500000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n295"> + <data key="vk0">0.875000</data> + <data key="vk1">0.500000</data> + <data key="vk2">0.500000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n296"> + <data key="vk0">0.000000</data> + <data key="vk1">0.625000</data> + <data key="vk2">0.500000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n297"> + <data key="vk0">0.125000</data> + <data key="vk1">0.625000</data> + <data key="vk2">0.500000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n298"> + <data key="vk0">0.250000</data> + <data key="vk1">0.625000</data> + <data key="vk2">0.500000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n299"> + <data key="vk0">0.375000</data> + <data key="vk1">0.625000</data> + <data key="vk2">0.500000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n300"> + <data key="vk0">0.500000</data> + <data key="vk1">0.625000</data> + <data key="vk2">0.500000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n301"> + <data key="vk0">0.625000</data> + <data key="vk1">0.625000</data> + <data key="vk2">0.500000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n302"> + <data key="vk0">0.750000</data> + <data key="vk1">0.625000</data> + <data key="vk2">0.500000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n303"> + <data key="vk0">0.875000</data> + <data key="vk1">0.625000</data> + <data key="vk2">0.500000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n304"> + <data key="vk0">0.000000</data> + <data key="vk1">0.750000</data> + <data key="vk2">0.500000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n305"> + <data key="vk0">0.125000</data> + <data key="vk1">0.750000</data> + <data key="vk2">0.500000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n306"> + <data key="vk0">0.250000</data> + <data key="vk1">0.750000</data> + <data key="vk2">0.500000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n307"> + <data key="vk0">0.375000</data> + <data key="vk1">0.750000</data> + <data key="vk2">0.500000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n308"> + <data key="vk0">0.500000</data> + <data key="vk1">0.750000</data> + <data key="vk2">0.500000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n309"> + <data key="vk0">0.625000</data> + <data key="vk1">0.750000</data> + <data key="vk2">0.500000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n310"> + <data key="vk0">0.750000</data> + <data key="vk1">0.750000</data> + <data key="vk2">0.500000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n311"> + <data key="vk0">0.875000</data> + <data key="vk1">0.750000</data> + <data key="vk2">0.500000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n312"> + <data key="vk0">0.000000</data> + <data key="vk1">0.875000</data> + <data key="vk2">0.500000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n313"> + <data key="vk0">0.125000</data> + <data key="vk1">0.875000</data> + <data key="vk2">0.500000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n314"> + <data key="vk0">0.250000</data> + <data key="vk1">0.875000</data> + <data key="vk2">0.500000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n315"> + <data key="vk0">0.375000</data> + <data key="vk1">0.875000</data> + <data key="vk2">0.500000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n316"> + <data key="vk0">0.500000</data> + <data key="vk1">0.875000</data> + <data key="vk2">0.500000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n317"> + <data key="vk0">0.625000</data> + <data key="vk1">0.875000</data> + <data key="vk2">0.500000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n318"> + <data key="vk0">0.750000</data> + <data key="vk1">0.875000</data> + <data key="vk2">0.500000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n319"> + <data key="vk0">0.875000</data> + <data key="vk1">0.875000</data> + <data key="vk2">0.500000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n320"> + <data key="vk0">0.000000</data> + <data key="vk1">0.000000</data> + <data key="vk2">0.625000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n321"> + <data key="vk0">0.125000</data> + <data key="vk1">0.000000</data> + <data key="vk2">0.625000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n322"> + <data key="vk0">0.250000</data> + <data key="vk1">0.000000</data> + <data key="vk2">0.625000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n323"> + <data key="vk0">0.375000</data> + <data key="vk1">0.000000</data> + <data key="vk2">0.625000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n324"> + <data key="vk0">0.500000</data> + <data key="vk1">0.000000</data> + <data key="vk2">0.625000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n325"> + <data key="vk0">0.625000</data> + <data key="vk1">0.000000</data> + <data key="vk2">0.625000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n326"> + <data key="vk0">0.750000</data> + <data key="vk1">0.000000</data> + <data key="vk2">0.625000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n327"> + <data key="vk0">0.875000</data> + <data key="vk1">0.000000</data> + <data key="vk2">0.625000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n328"> + <data key="vk0">0.000000</data> + <data key="vk1">0.125000</data> + <data key="vk2">0.625000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n329"> + <data key="vk0">0.125000</data> + <data key="vk1">0.125000</data> + <data key="vk2">0.625000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n330"> + <data key="vk0">0.250000</data> + <data key="vk1">0.125000</data> + <data key="vk2">0.625000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n331"> + <data key="vk0">0.375000</data> + <data key="vk1">0.125000</data> + <data key="vk2">0.625000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n332"> + <data key="vk0">0.500000</data> + <data key="vk1">0.125000</data> + <data key="vk2">0.625000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n333"> + <data key="vk0">0.625000</data> + <data key="vk1">0.125000</data> + <data key="vk2">0.625000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n334"> + <data key="vk0">0.750000</data> + <data key="vk1">0.125000</data> + <data key="vk2">0.625000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n335"> + <data key="vk0">0.875000</data> + <data key="vk1">0.125000</data> + <data key="vk2">0.625000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n336"> + <data key="vk0">0.000000</data> + <data key="vk1">0.250000</data> + <data key="vk2">0.625000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n337"> + <data key="vk0">0.125000</data> + <data key="vk1">0.250000</data> + <data key="vk2">0.625000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n338"> + <data key="vk0">0.250000</data> + <data key="vk1">0.250000</data> + <data key="vk2">0.625000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n339"> + <data key="vk0">0.375000</data> + <data key="vk1">0.250000</data> + <data key="vk2">0.625000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n340"> + <data key="vk0">0.500000</data> + <data key="vk1">0.250000</data> + <data key="vk2">0.625000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n341"> + <data key="vk0">0.625000</data> + <data key="vk1">0.250000</data> + <data key="vk2">0.625000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n342"> + <data key="vk0">0.750000</data> + <data key="vk1">0.250000</data> + <data key="vk2">0.625000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n343"> + <data key="vk0">0.875000</data> + <data key="vk1">0.250000</data> + <data key="vk2">0.625000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n344"> + <data key="vk0">0.000000</data> + <data key="vk1">0.375000</data> + <data key="vk2">0.625000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n345"> + <data key="vk0">0.125000</data> + <data key="vk1">0.375000</data> + <data key="vk2">0.625000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n346"> + <data key="vk0">0.250000</data> + <data key="vk1">0.375000</data> + <data key="vk2">0.625000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n347"> + <data key="vk0">0.375000</data> + <data key="vk1">0.375000</data> + <data key="vk2">0.625000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n348"> + <data key="vk0">0.500000</data> + <data key="vk1">0.375000</data> + <data key="vk2">0.625000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n349"> + <data key="vk0">0.625000</data> + <data key="vk1">0.375000</data> + <data key="vk2">0.625000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n350"> + <data key="vk0">0.750000</data> + <data key="vk1">0.375000</data> + <data key="vk2">0.625000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n351"> + <data key="vk0">0.875000</data> + <data key="vk1">0.375000</data> + <data key="vk2">0.625000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n352"> + <data key="vk0">0.000000</data> + <data key="vk1">0.500000</data> + <data key="vk2">0.625000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n353"> + <data key="vk0">0.125000</data> + <data key="vk1">0.500000</data> + <data key="vk2">0.625000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n354"> + <data key="vk0">0.250000</data> + <data key="vk1">0.500000</data> + <data key="vk2">0.625000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n355"> + <data key="vk0">0.375000</data> + <data key="vk1">0.500000</data> + <data key="vk2">0.625000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n356"> + <data key="vk0">0.500000</data> + <data key="vk1">0.500000</data> + <data key="vk2">0.625000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n357"> + <data key="vk0">0.625000</data> + <data key="vk1">0.500000</data> + <data key="vk2">0.625000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n358"> + <data key="vk0">0.750000</data> + <data key="vk1">0.500000</data> + <data key="vk2">0.625000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n359"> + <data key="vk0">0.875000</data> + <data key="vk1">0.500000</data> + <data key="vk2">0.625000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n360"> + <data key="vk0">0.000000</data> + <data key="vk1">0.625000</data> + <data key="vk2">0.625000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n361"> + <data key="vk0">0.125000</data> + <data key="vk1">0.625000</data> + <data key="vk2">0.625000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n362"> + <data key="vk0">0.250000</data> + <data key="vk1">0.625000</data> + <data key="vk2">0.625000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n363"> + <data key="vk0">0.375000</data> + <data key="vk1">0.625000</data> + <data key="vk2">0.625000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n364"> + <data key="vk0">0.500000</data> + <data key="vk1">0.625000</data> + <data key="vk2">0.625000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n365"> + <data key="vk0">0.625000</data> + <data key="vk1">0.625000</data> + <data key="vk2">0.625000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n366"> + <data key="vk0">0.750000</data> + <data key="vk1">0.625000</data> + <data key="vk2">0.625000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n367"> + <data key="vk0">0.875000</data> + <data key="vk1">0.625000</data> + <data key="vk2">0.625000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n368"> + <data key="vk0">0.000000</data> + <data key="vk1">0.750000</data> + <data key="vk2">0.625000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n369"> + <data key="vk0">0.125000</data> + <data key="vk1">0.750000</data> + <data key="vk2">0.625000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n370"> + <data key="vk0">0.250000</data> + <data key="vk1">0.750000</data> + <data key="vk2">0.625000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n371"> + <data key="vk0">0.375000</data> + <data key="vk1">0.750000</data> + <data key="vk2">0.625000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n372"> + <data key="vk0">0.500000</data> + <data key="vk1">0.750000</data> + <data key="vk2">0.625000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n373"> + <data key="vk0">0.625000</data> + <data key="vk1">0.750000</data> + <data key="vk2">0.625000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n374"> + <data key="vk0">0.750000</data> + <data key="vk1">0.750000</data> + <data key="vk2">0.625000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n375"> + <data key="vk0">0.875000</data> + <data key="vk1">0.750000</data> + <data key="vk2">0.625000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n376"> + <data key="vk0">0.000000</data> + <data key="vk1">0.875000</data> + <data key="vk2">0.625000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n377"> + <data key="vk0">0.125000</data> + <data key="vk1">0.875000</data> + <data key="vk2">0.625000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n378"> + <data key="vk0">0.250000</data> + <data key="vk1">0.875000</data> + <data key="vk2">0.625000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n379"> + <data key="vk0">0.375000</data> + <data key="vk1">0.875000</data> + <data key="vk2">0.625000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n380"> + <data key="vk0">0.500000</data> + <data key="vk1">0.875000</data> + <data key="vk2">0.625000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n381"> + <data key="vk0">0.625000</data> + <data key="vk1">0.875000</data> + <data key="vk2">0.625000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n382"> + <data key="vk0">0.750000</data> + <data key="vk1">0.875000</data> + <data key="vk2">0.625000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n383"> + <data key="vk0">0.875000</data> + <data key="vk1">0.875000</data> + <data key="vk2">0.625000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n384"> + <data key="vk0">0.000000</data> + <data key="vk1">0.000000</data> + <data key="vk2">0.750000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n385"> + <data key="vk0">0.125000</data> + <data key="vk1">0.000000</data> + <data key="vk2">0.750000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n386"> + <data key="vk0">0.250000</data> + <data key="vk1">0.000000</data> + <data key="vk2">0.750000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n387"> + <data key="vk0">0.375000</data> + <data key="vk1">0.000000</data> + <data key="vk2">0.750000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n388"> + <data key="vk0">0.500000</data> + <data key="vk1">0.000000</data> + <data key="vk2">0.750000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n389"> + <data key="vk0">0.625000</data> + <data key="vk1">0.000000</data> + <data key="vk2">0.750000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n390"> + <data key="vk0">0.750000</data> + <data key="vk1">0.000000</data> + <data key="vk2">0.750000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n391"> + <data key="vk0">0.875000</data> + <data key="vk1">0.000000</data> + <data key="vk2">0.750000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n392"> + <data key="vk0">0.000000</data> + <data key="vk1">0.125000</data> + <data key="vk2">0.750000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n393"> + <data key="vk0">0.125000</data> + <data key="vk1">0.125000</data> + <data key="vk2">0.750000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n394"> + <data key="vk0">0.250000</data> + <data key="vk1">0.125000</data> + <data key="vk2">0.750000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n395"> + <data key="vk0">0.375000</data> + <data key="vk1">0.125000</data> + <data key="vk2">0.750000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n396"> + <data key="vk0">0.500000</data> + <data key="vk1">0.125000</data> + <data key="vk2">0.750000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n397"> + <data key="vk0">0.625000</data> + <data key="vk1">0.125000</data> + <data key="vk2">0.750000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n398"> + <data key="vk0">0.750000</data> + <data key="vk1">0.125000</data> + <data key="vk2">0.750000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n399"> + <data key="vk0">0.875000</data> + <data key="vk1">0.125000</data> + <data key="vk2">0.750000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n400"> + <data key="vk0">0.000000</data> + <data key="vk1">0.250000</data> + <data key="vk2">0.750000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n401"> + <data key="vk0">0.125000</data> + <data key="vk1">0.250000</data> + <data key="vk2">0.750000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n402"> + <data key="vk0">0.250000</data> + <data key="vk1">0.250000</data> + <data key="vk2">0.750000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n403"> + <data key="vk0">0.375000</data> + <data key="vk1">0.250000</data> + <data key="vk2">0.750000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n404"> + <data key="vk0">0.500000</data> + <data key="vk1">0.250000</data> + <data key="vk2">0.750000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n405"> + <data key="vk0">0.625000</data> + <data key="vk1">0.250000</data> + <data key="vk2">0.750000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n406"> + <data key="vk0">0.750000</data> + <data key="vk1">0.250000</data> + <data key="vk2">0.750000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n407"> + <data key="vk0">0.875000</data> + <data key="vk1">0.250000</data> + <data key="vk2">0.750000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n408"> + <data key="vk0">0.000000</data> + <data key="vk1">0.375000</data> + <data key="vk2">0.750000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n409"> + <data key="vk0">0.125000</data> + <data key="vk1">0.375000</data> + <data key="vk2">0.750000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n410"> + <data key="vk0">0.250000</data> + <data key="vk1">0.375000</data> + <data key="vk2">0.750000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n411"> + <data key="vk0">0.375000</data> + <data key="vk1">0.375000</data> + <data key="vk2">0.750000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n412"> + <data key="vk0">0.500000</data> + <data key="vk1">0.375000</data> + <data key="vk2">0.750000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n413"> + <data key="vk0">0.625000</data> + <data key="vk1">0.375000</data> + <data key="vk2">0.750000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n414"> + <data key="vk0">0.750000</data> + <data key="vk1">0.375000</data> + <data key="vk2">0.750000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n415"> + <data key="vk0">0.875000</data> + <data key="vk1">0.375000</data> + <data key="vk2">0.750000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n416"> + <data key="vk0">0.000000</data> + <data key="vk1">0.500000</data> + <data key="vk2">0.750000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n417"> + <data key="vk0">0.125000</data> + <data key="vk1">0.500000</data> + <data key="vk2">0.750000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n418"> + <data key="vk0">0.250000</data> + <data key="vk1">0.500000</data> + <data key="vk2">0.750000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n419"> + <data key="vk0">0.375000</data> + <data key="vk1">0.500000</data> + <data key="vk2">0.750000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n420"> + <data key="vk0">0.500000</data> + <data key="vk1">0.500000</data> + <data key="vk2">0.750000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n421"> + <data key="vk0">0.625000</data> + <data key="vk1">0.500000</data> + <data key="vk2">0.750000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n422"> + <data key="vk0">0.750000</data> + <data key="vk1">0.500000</data> + <data key="vk2">0.750000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n423"> + <data key="vk0">0.875000</data> + <data key="vk1">0.500000</data> + <data key="vk2">0.750000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n424"> + <data key="vk0">0.000000</data> + <data key="vk1">0.625000</data> + <data key="vk2">0.750000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n425"> + <data key="vk0">0.125000</data> + <data key="vk1">0.625000</data> + <data key="vk2">0.750000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n426"> + <data key="vk0">0.250000</data> + <data key="vk1">0.625000</data> + <data key="vk2">0.750000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n427"> + <data key="vk0">0.375000</data> + <data key="vk1">0.625000</data> + <data key="vk2">0.750000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n428"> + <data key="vk0">0.500000</data> + <data key="vk1">0.625000</data> + <data key="vk2">0.750000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n429"> + <data key="vk0">0.625000</data> + <data key="vk1">0.625000</data> + <data key="vk2">0.750000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n430"> + <data key="vk0">0.750000</data> + <data key="vk1">0.625000</data> + <data key="vk2">0.750000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n431"> + <data key="vk0">0.875000</data> + <data key="vk1">0.625000</data> + <data key="vk2">0.750000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n432"> + <data key="vk0">0.000000</data> + <data key="vk1">0.750000</data> + <data key="vk2">0.750000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n433"> + <data key="vk0">0.125000</data> + <data key="vk1">0.750000</data> + <data key="vk2">0.750000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n434"> + <data key="vk0">0.250000</data> + <data key="vk1">0.750000</data> + <data key="vk2">0.750000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n435"> + <data key="vk0">0.375000</data> + <data key="vk1">0.750000</data> + <data key="vk2">0.750000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n436"> + <data key="vk0">0.500000</data> + <data key="vk1">0.750000</data> + <data key="vk2">0.750000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n437"> + <data key="vk0">0.625000</data> + <data key="vk1">0.750000</data> + <data key="vk2">0.750000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n438"> + <data key="vk0">0.750000</data> + <data key="vk1">0.750000</data> + <data key="vk2">0.750000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n439"> + <data key="vk0">0.875000</data> + <data key="vk1">0.750000</data> + <data key="vk2">0.750000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n440"> + <data key="vk0">0.000000</data> + <data key="vk1">0.875000</data> + <data key="vk2">0.750000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n441"> + <data key="vk0">0.125000</data> + <data key="vk1">0.875000</data> + <data key="vk2">0.750000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n442"> + <data key="vk0">0.250000</data> + <data key="vk1">0.875000</data> + <data key="vk2">0.750000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n443"> + <data key="vk0">0.375000</data> + <data key="vk1">0.875000</data> + <data key="vk2">0.750000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n444"> + <data key="vk0">0.500000</data> + <data key="vk1">0.875000</data> + <data key="vk2">0.750000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n445"> + <data key="vk0">0.625000</data> + <data key="vk1">0.875000</data> + <data key="vk2">0.750000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n446"> + <data key="vk0">0.750000</data> + <data key="vk1">0.875000</data> + <data key="vk2">0.750000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n447"> + <data key="vk0">0.875000</data> + <data key="vk1">0.875000</data> + <data key="vk2">0.750000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n448"> + <data key="vk0">0.000000</data> + <data key="vk1">0.000000</data> + <data key="vk2">0.875000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n449"> + <data key="vk0">0.125000</data> + <data key="vk1">0.000000</data> + <data key="vk2">0.875000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n450"> + <data key="vk0">0.250000</data> + <data key="vk1">0.000000</data> + <data key="vk2">0.875000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n451"> + <data key="vk0">0.375000</data> + <data key="vk1">0.000000</data> + <data key="vk2">0.875000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n452"> + <data key="vk0">0.500000</data> + <data key="vk1">0.000000</data> + <data key="vk2">0.875000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n453"> + <data key="vk0">0.625000</data> + <data key="vk1">0.000000</data> + <data key="vk2">0.875000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n454"> + <data key="vk0">0.750000</data> + <data key="vk1">0.000000</data> + <data key="vk2">0.875000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n455"> + <data key="vk0">0.875000</data> + <data key="vk1">0.000000</data> + <data key="vk2">0.875000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n456"> + <data key="vk0">0.000000</data> + <data key="vk1">0.125000</data> + <data key="vk2">0.875000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n457"> + <data key="vk0">0.125000</data> + <data key="vk1">0.125000</data> + <data key="vk2">0.875000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n458"> + <data key="vk0">0.250000</data> + <data key="vk1">0.125000</data> + <data key="vk2">0.875000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n459"> + <data key="vk0">0.375000</data> + <data key="vk1">0.125000</data> + <data key="vk2">0.875000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n460"> + <data key="vk0">0.500000</data> + <data key="vk1">0.125000</data> + <data key="vk2">0.875000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n461"> + <data key="vk0">0.625000</data> + <data key="vk1">0.125000</data> + <data key="vk2">0.875000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n462"> + <data key="vk0">0.750000</data> + <data key="vk1">0.125000</data> + <data key="vk2">0.875000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n463"> + <data key="vk0">0.875000</data> + <data key="vk1">0.125000</data> + <data key="vk2">0.875000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n464"> + <data key="vk0">0.000000</data> + <data key="vk1">0.250000</data> + <data key="vk2">0.875000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n465"> + <data key="vk0">0.125000</data> + <data key="vk1">0.250000</data> + <data key="vk2">0.875000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n466"> + <data key="vk0">0.250000</data> + <data key="vk1">0.250000</data> + <data key="vk2">0.875000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n467"> + <data key="vk0">0.375000</data> + <data key="vk1">0.250000</data> + <data key="vk2">0.875000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n468"> + <data key="vk0">0.500000</data> + <data key="vk1">0.250000</data> + <data key="vk2">0.875000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n469"> + <data key="vk0">0.625000</data> + <data key="vk1">0.250000</data> + <data key="vk2">0.875000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n470"> + <data key="vk0">0.750000</data> + <data key="vk1">0.250000</data> + <data key="vk2">0.875000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n471"> + <data key="vk0">0.875000</data> + <data key="vk1">0.250000</data> + <data key="vk2">0.875000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n472"> + <data key="vk0">0.000000</data> + <data key="vk1">0.375000</data> + <data key="vk2">0.875000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n473"> + <data key="vk0">0.125000</data> + <data key="vk1">0.375000</data> + <data key="vk2">0.875000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n474"> + <data key="vk0">0.250000</data> + <data key="vk1">0.375000</data> + <data key="vk2">0.875000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n475"> + <data key="vk0">0.375000</data> + <data key="vk1">0.375000</data> + <data key="vk2">0.875000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n476"> + <data key="vk0">0.500000</data> + <data key="vk1">0.375000</data> + <data key="vk2">0.875000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n477"> + <data key="vk0">0.625000</data> + <data key="vk1">0.375000</data> + <data key="vk2">0.875000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n478"> + <data key="vk0">0.750000</data> + <data key="vk1">0.375000</data> + <data key="vk2">0.875000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n479"> + <data key="vk0">0.875000</data> + <data key="vk1">0.375000</data> + <data key="vk2">0.875000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n480"> + <data key="vk0">0.000000</data> + <data key="vk1">0.500000</data> + <data key="vk2">0.875000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n481"> + <data key="vk0">0.125000</data> + <data key="vk1">0.500000</data> + <data key="vk2">0.875000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n482"> + <data key="vk0">0.250000</data> + <data key="vk1">0.500000</data> + <data key="vk2">0.875000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n483"> + <data key="vk0">0.375000</data> + <data key="vk1">0.500000</data> + <data key="vk2">0.875000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n484"> + <data key="vk0">0.500000</data> + <data key="vk1">0.500000</data> + <data key="vk2">0.875000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n485"> + <data key="vk0">0.625000</data> + <data key="vk1">0.500000</data> + <data key="vk2">0.875000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n486"> + <data key="vk0">0.750000</data> + <data key="vk1">0.500000</data> + <data key="vk2">0.875000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n487"> + <data key="vk0">0.875000</data> + <data key="vk1">0.500000</data> + <data key="vk2">0.875000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n488"> + <data key="vk0">0.000000</data> + <data key="vk1">0.625000</data> + <data key="vk2">0.875000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n489"> + <data key="vk0">0.125000</data> + <data key="vk1">0.625000</data> + <data key="vk2">0.875000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n490"> + <data key="vk0">0.250000</data> + <data key="vk1">0.625000</data> + <data key="vk2">0.875000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n491"> + <data key="vk0">0.375000</data> + <data key="vk1">0.625000</data> + <data key="vk2">0.875000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n492"> + <data key="vk0">0.500000</data> + <data key="vk1">0.625000</data> + <data key="vk2">0.875000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n493"> + <data key="vk0">0.625000</data> + <data key="vk1">0.625000</data> + <data key="vk2">0.875000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n494"> + <data key="vk0">0.750000</data> + <data key="vk1">0.625000</data> + <data key="vk2">0.875000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n495"> + <data key="vk0">0.875000</data> + <data key="vk1">0.625000</data> + <data key="vk2">0.875000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n496"> + <data key="vk0">0.000000</data> + <data key="vk1">0.750000</data> + <data key="vk2">0.875000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n497"> + <data key="vk0">0.125000</data> + <data key="vk1">0.750000</data> + <data key="vk2">0.875000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n498"> + <data key="vk0">0.250000</data> + <data key="vk1">0.750000</data> + <data key="vk2">0.875000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n499"> + <data key="vk0">0.375000</data> + <data key="vk1">0.750000</data> + <data key="vk2">0.875000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n500"> + <data key="vk0">0.500000</data> + <data key="vk1">0.750000</data> + <data key="vk2">0.875000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n501"> + <data key="vk0">0.625000</data> + <data key="vk1">0.750000</data> + <data key="vk2">0.875000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n502"> + <data key="vk0">0.750000</data> + <data key="vk1">0.750000</data> + <data key="vk2">0.875000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n503"> + <data key="vk0">0.875000</data> + <data key="vk1">0.750000</data> + <data key="vk2">0.875000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n504"> + <data key="vk0">0.000000</data> + <data key="vk1">0.875000</data> + <data key="vk2">0.875000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n505"> + <data key="vk0">0.125000</data> + <data key="vk1">0.875000</data> + <data key="vk2">0.875000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n506"> + <data key="vk0">0.250000</data> + <data key="vk1">0.875000</data> + <data key="vk2">0.875000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n507"> + <data key="vk0">0.375000</data> + <data key="vk1">0.875000</data> + <data key="vk2">0.875000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n508"> + <data key="vk0">0.500000</data> + <data key="vk1">0.875000</data> + <data key="vk2">0.875000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n509"> + <data key="vk0">0.625000</data> + <data key="vk1">0.875000</data> + <data key="vk2">0.875000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n510"> + <data key="vk0">0.750000</data> + <data key="vk1">0.875000</data> + <data key="vk2">0.875000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<node id="n511"> + <data key="vk0">0.875000</data> + <data key="vk1">0.875000</data> + <data key="vk2">0.875000</data> + <data key="vk3">0.000000</data> + <data key="vk4">0</data> + <data key="vk5">0</data> + <data key="vk6"></data> +</node> +<edge id="e0" source="n0" target="n1"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1" source="n0" target="n8"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2" source="n0" target="n64"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e3" source="n1" target="n2"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e4" source="n1" target="n0"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e5" source="n1" target="n9"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e6" source="n1" target="n65"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e7" source="n2" target="n3"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e8" source="n2" target="n1"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e9" source="n2" target="n10"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e10" source="n2" target="n66"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e11" source="n3" target="n4"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e12" source="n3" target="n2"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e13" source="n3" target="n11"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e14" source="n3" target="n67"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e15" source="n4" target="n5"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e16" source="n4" target="n3"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e17" source="n4" target="n12"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e18" source="n4" target="n68"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e19" source="n5" target="n6"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e20" source="n5" target="n4"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e21" source="n5" target="n13"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e22" source="n5" target="n69"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e23" source="n6" target="n7"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e24" source="n6" target="n5"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e25" source="n6" target="n14"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e26" source="n6" target="n70"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e27" source="n7" target="n6"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e28" source="n7" target="n15"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e29" source="n7" target="n71"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e30" source="n8" target="n9"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e31" source="n8" target="n16"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e32" source="n8" target="n0"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e33" source="n8" target="n72"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e34" source="n9" target="n10"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e35" source="n9" target="n8"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e36" source="n9" target="n17"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e37" source="n9" target="n1"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e38" source="n9" target="n73"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e39" source="n10" target="n11"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e40" source="n10" target="n9"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e41" source="n10" target="n18"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e42" source="n10" target="n2"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e43" source="n10" target="n74"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e44" source="n11" target="n12"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e45" source="n11" target="n10"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e46" source="n11" target="n19"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e47" source="n11" target="n3"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e48" source="n11" target="n75"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e49" source="n12" target="n13"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e50" source="n12" target="n11"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e51" source="n12" target="n20"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e52" source="n12" target="n4"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e53" source="n12" target="n76"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e54" source="n13" target="n14"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e55" source="n13" target="n12"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e56" source="n13" target="n21"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e57" source="n13" target="n5"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e58" source="n13" target="n77"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e59" source="n14" target="n15"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e60" source="n14" target="n13"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e61" source="n14" target="n22"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e62" source="n14" target="n6"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e63" source="n14" target="n78"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e64" source="n15" target="n14"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e65" source="n15" target="n23"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e66" source="n15" target="n7"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e67" source="n15" target="n79"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e68" source="n16" target="n17"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e69" source="n16" target="n24"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e70" source="n16" target="n8"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e71" source="n16" target="n80"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e72" source="n17" target="n18"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e73" source="n17" target="n16"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e74" source="n17" target="n25"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e75" source="n17" target="n9"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e76" source="n17" target="n81"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e77" source="n18" target="n19"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e78" source="n18" target="n17"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e79" source="n18" target="n26"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e80" source="n18" target="n10"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e81" source="n18" target="n82"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e82" source="n19" target="n20"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e83" source="n19" target="n18"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e84" source="n19" target="n27"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e85" source="n19" target="n11"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e86" source="n19" target="n83"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e87" source="n20" target="n21"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e88" source="n20" target="n19"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e89" source="n20" target="n28"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e90" source="n20" target="n12"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e91" source="n20" target="n84"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e92" source="n21" target="n22"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e93" source="n21" target="n20"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e94" source="n21" target="n29"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e95" source="n21" target="n13"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e96" source="n21" target="n85"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e97" source="n22" target="n23"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e98" source="n22" target="n21"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e99" source="n22" target="n30"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e100" source="n22" target="n14"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e101" source="n22" target="n86"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e102" source="n23" target="n22"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e103" source="n23" target="n31"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e104" source="n23" target="n15"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e105" source="n23" target="n87"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e106" source="n24" target="n25"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e107" source="n24" target="n32"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e108" source="n24" target="n16"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e109" source="n24" target="n88"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e110" source="n25" target="n26"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e111" source="n25" target="n24"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e112" source="n25" target="n33"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e113" source="n25" target="n17"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e114" source="n25" target="n89"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e115" source="n26" target="n27"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e116" source="n26" target="n25"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e117" source="n26" target="n34"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e118" source="n26" target="n18"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e119" source="n26" target="n90"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e120" source="n27" target="n28"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e121" source="n27" target="n26"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e122" source="n27" target="n35"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e123" source="n27" target="n19"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e124" source="n27" target="n91"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e125" source="n28" target="n29"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e126" source="n28" target="n27"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e127" source="n28" target="n36"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e128" source="n28" target="n20"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e129" source="n28" target="n92"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e130" source="n29" target="n30"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e131" source="n29" target="n28"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e132" source="n29" target="n37"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e133" source="n29" target="n21"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e134" source="n29" target="n93"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e135" source="n30" target="n31"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e136" source="n30" target="n29"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e137" source="n30" target="n38"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e138" source="n30" target="n22"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e139" source="n30" target="n94"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e140" source="n31" target="n30"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e141" source="n31" target="n39"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e142" source="n31" target="n23"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e143" source="n31" target="n95"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e144" source="n32" target="n33"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e145" source="n32" target="n40"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e146" source="n32" target="n24"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e147" source="n32" target="n96"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e148" source="n33" target="n34"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e149" source="n33" target="n32"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e150" source="n33" target="n41"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e151" source="n33" target="n25"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e152" source="n33" target="n97"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e153" source="n34" target="n35"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e154" source="n34" target="n33"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e155" source="n34" target="n42"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e156" source="n34" target="n26"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e157" source="n34" target="n98"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e158" source="n35" target="n36"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e159" source="n35" target="n34"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e160" source="n35" target="n43"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e161" source="n35" target="n27"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e162" source="n35" target="n99"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e163" source="n36" target="n37"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e164" source="n36" target="n35"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e165" source="n36" target="n44"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e166" source="n36" target="n28"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e167" source="n36" target="n100"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e168" source="n37" target="n38"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e169" source="n37" target="n36"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e170" source="n37" target="n45"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e171" source="n37" target="n29"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e172" source="n37" target="n101"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e173" source="n38" target="n39"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e174" source="n38" target="n37"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e175" source="n38" target="n46"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e176" source="n38" target="n30"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e177" source="n38" target="n102"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e178" source="n39" target="n38"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e179" source="n39" target="n47"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e180" source="n39" target="n31"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e181" source="n39" target="n103"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e182" source="n40" target="n41"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e183" source="n40" target="n48"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e184" source="n40" target="n32"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e185" source="n40" target="n104"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e186" source="n41" target="n42"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e187" source="n41" target="n40"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e188" source="n41" target="n49"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e189" source="n41" target="n33"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e190" source="n41" target="n105"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e191" source="n42" target="n43"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e192" source="n42" target="n41"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e193" source="n42" target="n50"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e194" source="n42" target="n34"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e195" source="n42" target="n106"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e196" source="n43" target="n44"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e197" source="n43" target="n42"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e198" source="n43" target="n51"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e199" source="n43" target="n35"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e200" source="n43" target="n107"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e201" source="n44" target="n45"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e202" source="n44" target="n43"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e203" source="n44" target="n52"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e204" source="n44" target="n36"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e205" source="n44" target="n108"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e206" source="n45" target="n46"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e207" source="n45" target="n44"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e208" source="n45" target="n53"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e209" source="n45" target="n37"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e210" source="n45" target="n109"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e211" source="n46" target="n47"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e212" source="n46" target="n45"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e213" source="n46" target="n54"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e214" source="n46" target="n38"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e215" source="n46" target="n110"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e216" source="n47" target="n46"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e217" source="n47" target="n55"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e218" source="n47" target="n39"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e219" source="n47" target="n111"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e220" source="n48" target="n49"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e221" source="n48" target="n56"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e222" source="n48" target="n40"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e223" source="n48" target="n112"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e224" source="n49" target="n50"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e225" source="n49" target="n48"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e226" source="n49" target="n57"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e227" source="n49" target="n41"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e228" source="n49" target="n113"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e229" source="n50" target="n51"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e230" source="n50" target="n49"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e231" source="n50" target="n58"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e232" source="n50" target="n42"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e233" source="n50" target="n114"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e234" source="n51" target="n52"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e235" source="n51" target="n50"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e236" source="n51" target="n59"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e237" source="n51" target="n43"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e238" source="n51" target="n115"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e239" source="n52" target="n53"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e240" source="n52" target="n51"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e241" source="n52" target="n60"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e242" source="n52" target="n44"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e243" source="n52" target="n116"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e244" source="n53" target="n54"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e245" source="n53" target="n52"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e246" source="n53" target="n61"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e247" source="n53" target="n45"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e248" source="n53" target="n117"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e249" source="n54" target="n55"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e250" source="n54" target="n53"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e251" source="n54" target="n62"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e252" source="n54" target="n46"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e253" source="n54" target="n118"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e254" source="n55" target="n54"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e255" source="n55" target="n63"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e256" source="n55" target="n47"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e257" source="n55" target="n119"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e258" source="n56" target="n57"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e259" source="n56" target="n48"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e260" source="n56" target="n120"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e261" source="n57" target="n58"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e262" source="n57" target="n56"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e263" source="n57" target="n49"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e264" source="n57" target="n121"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e265" source="n58" target="n59"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e266" source="n58" target="n57"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e267" source="n58" target="n50"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e268" source="n58" target="n122"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e269" source="n59" target="n60"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e270" source="n59" target="n58"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e271" source="n59" target="n51"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e272" source="n59" target="n123"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e273" source="n60" target="n61"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e274" source="n60" target="n59"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e275" source="n60" target="n52"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e276" source="n60" target="n124"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e277" source="n61" target="n62"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e278" source="n61" target="n60"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e279" source="n61" target="n53"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e280" source="n61" target="n125"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e281" source="n62" target="n63"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e282" source="n62" target="n61"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e283" source="n62" target="n54"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e284" source="n62" target="n126"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e285" source="n63" target="n62"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e286" source="n63" target="n55"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e287" source="n63" target="n127"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e288" source="n64" target="n65"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e289" source="n64" target="n72"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e290" source="n64" target="n128"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e291" source="n64" target="n0"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e292" source="n65" target="n66"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e293" source="n65" target="n64"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e294" source="n65" target="n73"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e295" source="n65" target="n129"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e296" source="n65" target="n1"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e297" source="n66" target="n67"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e298" source="n66" target="n65"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e299" source="n66" target="n74"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e300" source="n66" target="n130"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e301" source="n66" target="n2"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e302" source="n67" target="n68"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e303" source="n67" target="n66"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e304" source="n67" target="n75"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e305" source="n67" target="n131"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e306" source="n67" target="n3"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e307" source="n68" target="n69"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e308" source="n68" target="n67"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e309" source="n68" target="n76"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e310" source="n68" target="n132"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e311" source="n68" target="n4"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e312" source="n69" target="n70"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e313" source="n69" target="n68"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e314" source="n69" target="n77"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e315" source="n69" target="n133"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e316" source="n69" target="n5"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e317" source="n70" target="n71"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e318" source="n70" target="n69"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e319" source="n70" target="n78"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e320" source="n70" target="n134"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e321" source="n70" target="n6"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e322" source="n71" target="n70"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e323" source="n71" target="n79"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e324" source="n71" target="n135"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e325" source="n71" target="n7"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e326" source="n72" target="n73"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e327" source="n72" target="n80"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e328" source="n72" target="n64"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e329" source="n72" target="n136"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e330" source="n72" target="n8"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e331" source="n73" target="n74"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e332" source="n73" target="n72"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e333" source="n73" target="n81"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e334" source="n73" target="n65"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e335" source="n73" target="n137"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e336" source="n73" target="n9"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e337" source="n74" target="n75"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e338" source="n74" target="n73"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e339" source="n74" target="n82"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e340" source="n74" target="n66"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e341" source="n74" target="n138"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e342" source="n74" target="n10"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e343" source="n75" target="n76"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e344" source="n75" target="n74"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e345" source="n75" target="n83"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e346" source="n75" target="n67"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e347" source="n75" target="n139"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e348" source="n75" target="n11"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e349" source="n76" target="n77"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e350" source="n76" target="n75"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e351" source="n76" target="n84"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e352" source="n76" target="n68"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e353" source="n76" target="n140"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e354" source="n76" target="n12"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e355" source="n77" target="n78"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e356" source="n77" target="n76"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e357" source="n77" target="n85"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e358" source="n77" target="n69"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e359" source="n77" target="n141"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e360" source="n77" target="n13"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e361" source="n78" target="n79"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e362" source="n78" target="n77"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e363" source="n78" target="n86"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e364" source="n78" target="n70"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e365" source="n78" target="n142"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e366" source="n78" target="n14"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e367" source="n79" target="n78"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e368" source="n79" target="n87"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e369" source="n79" target="n71"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e370" source="n79" target="n143"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e371" source="n79" target="n15"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e372" source="n80" target="n81"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e373" source="n80" target="n88"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e374" source="n80" target="n72"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e375" source="n80" target="n144"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e376" source="n80" target="n16"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e377" source="n81" target="n82"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e378" source="n81" target="n80"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e379" source="n81" target="n89"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e380" source="n81" target="n73"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e381" source="n81" target="n145"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e382" source="n81" target="n17"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e383" source="n82" target="n83"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e384" source="n82" target="n81"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e385" source="n82" target="n90"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e386" source="n82" target="n74"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e387" source="n82" target="n146"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e388" source="n82" target="n18"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e389" source="n83" target="n84"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e390" source="n83" target="n82"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e391" source="n83" target="n91"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e392" source="n83" target="n75"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e393" source="n83" target="n147"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e394" source="n83" target="n19"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e395" source="n84" target="n85"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e396" source="n84" target="n83"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e397" source="n84" target="n92"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e398" source="n84" target="n76"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e399" source="n84" target="n148"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e400" source="n84" target="n20"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e401" source="n85" target="n86"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e402" source="n85" target="n84"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e403" source="n85" target="n93"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e404" source="n85" target="n77"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e405" source="n85" target="n149"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e406" source="n85" target="n21"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e407" source="n86" target="n87"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e408" source="n86" target="n85"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e409" source="n86" target="n94"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e410" source="n86" target="n78"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e411" source="n86" target="n150"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e412" source="n86" target="n22"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e413" source="n87" target="n86"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e414" source="n87" target="n95"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e415" source="n87" target="n79"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e416" source="n87" target="n151"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e417" source="n87" target="n23"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e418" source="n88" target="n89"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e419" source="n88" target="n96"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e420" source="n88" target="n80"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e421" source="n88" target="n152"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e422" source="n88" target="n24"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e423" source="n89" target="n90"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e424" source="n89" target="n88"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e425" source="n89" target="n97"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e426" source="n89" target="n81"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e427" source="n89" target="n153"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e428" source="n89" target="n25"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e429" source="n90" target="n91"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e430" source="n90" target="n89"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e431" source="n90" target="n98"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e432" source="n90" target="n82"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e433" source="n90" target="n154"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e434" source="n90" target="n26"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e435" source="n91" target="n92"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e436" source="n91" target="n90"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e437" source="n91" target="n99"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e438" source="n91" target="n83"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e439" source="n91" target="n155"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e440" source="n91" target="n27"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e441" source="n92" target="n93"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e442" source="n92" target="n91"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e443" source="n92" target="n100"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e444" source="n92" target="n84"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e445" source="n92" target="n156"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e446" source="n92" target="n28"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e447" source="n93" target="n94"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e448" source="n93" target="n92"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e449" source="n93" target="n101"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e450" source="n93" target="n85"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e451" source="n93" target="n157"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e452" source="n93" target="n29"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e453" source="n94" target="n95"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e454" source="n94" target="n93"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e455" source="n94" target="n102"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e456" source="n94" target="n86"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e457" source="n94" target="n158"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e458" source="n94" target="n30"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e459" source="n95" target="n94"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e460" source="n95" target="n103"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e461" source="n95" target="n87"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e462" source="n95" target="n159"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e463" source="n95" target="n31"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e464" source="n96" target="n97"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e465" source="n96" target="n104"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e466" source="n96" target="n88"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e467" source="n96" target="n160"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e468" source="n96" target="n32"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e469" source="n97" target="n98"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e470" source="n97" target="n96"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e471" source="n97" target="n105"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e472" source="n97" target="n89"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e473" source="n97" target="n161"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e474" source="n97" target="n33"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e475" source="n98" target="n99"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e476" source="n98" target="n97"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e477" source="n98" target="n106"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e478" source="n98" target="n90"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e479" source="n98" target="n162"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e480" source="n98" target="n34"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e481" source="n99" target="n100"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e482" source="n99" target="n98"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e483" source="n99" target="n107"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e484" source="n99" target="n91"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e485" source="n99" target="n163"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e486" source="n99" target="n35"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e487" source="n100" target="n101"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e488" source="n100" target="n99"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e489" source="n100" target="n108"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e490" source="n100" target="n92"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e491" source="n100" target="n164"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e492" source="n100" target="n36"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e493" source="n101" target="n102"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e494" source="n101" target="n100"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e495" source="n101" target="n109"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e496" source="n101" target="n93"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e497" source="n101" target="n165"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e498" source="n101" target="n37"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e499" source="n102" target="n103"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e500" source="n102" target="n101"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e501" source="n102" target="n110"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e502" source="n102" target="n94"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e503" source="n102" target="n166"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e504" source="n102" target="n38"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e505" source="n103" target="n102"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e506" source="n103" target="n111"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e507" source="n103" target="n95"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e508" source="n103" target="n167"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e509" source="n103" target="n39"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e510" source="n104" target="n105"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e511" source="n104" target="n112"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e512" source="n104" target="n96"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e513" source="n104" target="n168"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e514" source="n104" target="n40"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e515" source="n105" target="n106"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e516" source="n105" target="n104"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e517" source="n105" target="n113"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e518" source="n105" target="n97"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e519" source="n105" target="n169"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e520" source="n105" target="n41"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e521" source="n106" target="n107"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e522" source="n106" target="n105"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e523" source="n106" target="n114"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e524" source="n106" target="n98"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e525" source="n106" target="n170"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e526" source="n106" target="n42"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e527" source="n107" target="n108"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e528" source="n107" target="n106"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e529" source="n107" target="n115"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e530" source="n107" target="n99"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e531" source="n107" target="n171"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e532" source="n107" target="n43"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e533" source="n108" target="n109"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e534" source="n108" target="n107"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e535" source="n108" target="n116"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e536" source="n108" target="n100"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e537" source="n108" target="n172"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e538" source="n108" target="n44"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e539" source="n109" target="n110"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e540" source="n109" target="n108"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e541" source="n109" target="n117"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e542" source="n109" target="n101"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e543" source="n109" target="n173"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e544" source="n109" target="n45"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e545" source="n110" target="n111"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e546" source="n110" target="n109"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e547" source="n110" target="n118"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e548" source="n110" target="n102"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e549" source="n110" target="n174"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e550" source="n110" target="n46"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e551" source="n111" target="n110"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e552" source="n111" target="n119"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e553" source="n111" target="n103"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e554" source="n111" target="n175"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e555" source="n111" target="n47"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e556" source="n112" target="n113"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e557" source="n112" target="n120"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e558" source="n112" target="n104"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e559" source="n112" target="n176"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e560" source="n112" target="n48"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e561" source="n113" target="n114"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e562" source="n113" target="n112"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e563" source="n113" target="n121"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e564" source="n113" target="n105"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e565" source="n113" target="n177"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e566" source="n113" target="n49"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e567" source="n114" target="n115"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e568" source="n114" target="n113"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e569" source="n114" target="n122"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e570" source="n114" target="n106"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e571" source="n114" target="n178"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e572" source="n114" target="n50"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e573" source="n115" target="n116"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e574" source="n115" target="n114"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e575" source="n115" target="n123"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e576" source="n115" target="n107"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e577" source="n115" target="n179"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e578" source="n115" target="n51"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e579" source="n116" target="n117"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e580" source="n116" target="n115"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e581" source="n116" target="n124"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e582" source="n116" target="n108"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e583" source="n116" target="n180"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e584" source="n116" target="n52"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e585" source="n117" target="n118"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e586" source="n117" target="n116"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e587" source="n117" target="n125"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e588" source="n117" target="n109"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e589" source="n117" target="n181"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e590" source="n117" target="n53"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e591" source="n118" target="n119"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e592" source="n118" target="n117"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e593" source="n118" target="n126"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e594" source="n118" target="n110"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e595" source="n118" target="n182"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e596" source="n118" target="n54"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e597" source="n119" target="n118"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e598" source="n119" target="n127"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e599" source="n119" target="n111"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e600" source="n119" target="n183"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e601" source="n119" target="n55"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e602" source="n120" target="n121"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e603" source="n120" target="n112"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e604" source="n120" target="n184"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e605" source="n120" target="n56"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e606" source="n121" target="n122"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e607" source="n121" target="n120"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e608" source="n121" target="n113"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e609" source="n121" target="n185"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e610" source="n121" target="n57"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e611" source="n122" target="n123"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e612" source="n122" target="n121"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e613" source="n122" target="n114"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e614" source="n122" target="n186"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e615" source="n122" target="n58"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e616" source="n123" target="n124"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e617" source="n123" target="n122"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e618" source="n123" target="n115"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e619" source="n123" target="n187"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e620" source="n123" target="n59"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e621" source="n124" target="n125"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e622" source="n124" target="n123"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e623" source="n124" target="n116"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e624" source="n124" target="n188"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e625" source="n124" target="n60"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e626" source="n125" target="n126"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e627" source="n125" target="n124"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e628" source="n125" target="n117"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e629" source="n125" target="n189"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e630" source="n125" target="n61"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e631" source="n126" target="n127"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e632" source="n126" target="n125"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e633" source="n126" target="n118"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e634" source="n126" target="n190"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e635" source="n126" target="n62"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e636" source="n127" target="n126"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e637" source="n127" target="n119"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e638" source="n127" target="n191"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e639" source="n127" target="n63"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e640" source="n128" target="n129"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e641" source="n128" target="n136"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e642" source="n128" target="n192"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e643" source="n128" target="n64"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e644" source="n129" target="n130"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e645" source="n129" target="n128"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e646" source="n129" target="n137"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e647" source="n129" target="n193"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e648" source="n129" target="n65"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e649" source="n130" target="n131"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e650" source="n130" target="n129"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e651" source="n130" target="n138"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e652" source="n130" target="n194"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e653" source="n130" target="n66"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e654" source="n131" target="n132"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e655" source="n131" target="n130"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e656" source="n131" target="n139"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e657" source="n131" target="n195"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e658" source="n131" target="n67"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e659" source="n132" target="n133"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e660" source="n132" target="n131"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e661" source="n132" target="n140"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e662" source="n132" target="n196"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e663" source="n132" target="n68"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e664" source="n133" target="n134"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e665" source="n133" target="n132"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e666" source="n133" target="n141"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e667" source="n133" target="n197"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e668" source="n133" target="n69"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e669" source="n134" target="n135"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e670" source="n134" target="n133"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e671" source="n134" target="n142"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e672" source="n134" target="n198"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e673" source="n134" target="n70"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e674" source="n135" target="n134"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e675" source="n135" target="n143"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e676" source="n135" target="n199"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e677" source="n135" target="n71"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e678" source="n136" target="n137"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e679" source="n136" target="n144"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e680" source="n136" target="n128"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e681" source="n136" target="n200"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e682" source="n136" target="n72"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e683" source="n137" target="n138"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e684" source="n137" target="n136"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e685" source="n137" target="n145"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e686" source="n137" target="n129"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e687" source="n137" target="n201"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e688" source="n137" target="n73"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e689" source="n138" target="n139"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e690" source="n138" target="n137"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e691" source="n138" target="n146"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e692" source="n138" target="n130"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e693" source="n138" target="n202"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e694" source="n138" target="n74"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e695" source="n139" target="n140"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e696" source="n139" target="n138"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e697" source="n139" target="n147"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e698" source="n139" target="n131"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e699" source="n139" target="n203"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e700" source="n139" target="n75"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e701" source="n140" target="n141"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e702" source="n140" target="n139"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e703" source="n140" target="n148"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e704" source="n140" target="n132"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e705" source="n140" target="n204"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e706" source="n140" target="n76"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e707" source="n141" target="n142"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e708" source="n141" target="n140"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e709" source="n141" target="n149"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e710" source="n141" target="n133"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e711" source="n141" target="n205"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e712" source="n141" target="n77"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e713" source="n142" target="n143"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e714" source="n142" target="n141"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e715" source="n142" target="n150"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e716" source="n142" target="n134"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e717" source="n142" target="n206"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e718" source="n142" target="n78"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e719" source="n143" target="n142"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e720" source="n143" target="n151"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e721" source="n143" target="n135"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e722" source="n143" target="n207"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e723" source="n143" target="n79"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e724" source="n144" target="n145"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e725" source="n144" target="n152"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e726" source="n144" target="n136"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e727" source="n144" target="n208"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e728" source="n144" target="n80"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e729" source="n145" target="n146"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e730" source="n145" target="n144"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e731" source="n145" target="n153"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e732" source="n145" target="n137"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e733" source="n145" target="n209"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e734" source="n145" target="n81"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e735" source="n146" target="n147"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e736" source="n146" target="n145"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e737" source="n146" target="n154"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e738" source="n146" target="n138"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e739" source="n146" target="n210"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e740" source="n146" target="n82"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e741" source="n147" target="n148"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e742" source="n147" target="n146"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e743" source="n147" target="n155"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e744" source="n147" target="n139"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e745" source="n147" target="n211"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e746" source="n147" target="n83"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e747" source="n148" target="n149"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e748" source="n148" target="n147"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e749" source="n148" target="n156"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e750" source="n148" target="n140"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e751" source="n148" target="n212"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e752" source="n148" target="n84"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e753" source="n149" target="n150"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e754" source="n149" target="n148"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e755" source="n149" target="n157"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e756" source="n149" target="n141"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e757" source="n149" target="n213"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e758" source="n149" target="n85"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e759" source="n150" target="n151"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e760" source="n150" target="n149"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e761" source="n150" target="n158"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e762" source="n150" target="n142"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e763" source="n150" target="n214"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e764" source="n150" target="n86"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e765" source="n151" target="n150"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e766" source="n151" target="n159"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e767" source="n151" target="n143"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e768" source="n151" target="n215"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e769" source="n151" target="n87"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e770" source="n152" target="n153"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e771" source="n152" target="n160"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e772" source="n152" target="n144"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e773" source="n152" target="n216"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e774" source="n152" target="n88"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e775" source="n153" target="n154"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e776" source="n153" target="n152"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e777" source="n153" target="n161"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e778" source="n153" target="n145"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e779" source="n153" target="n217"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e780" source="n153" target="n89"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e781" source="n154" target="n155"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e782" source="n154" target="n153"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e783" source="n154" target="n162"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e784" source="n154" target="n146"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e785" source="n154" target="n218"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e786" source="n154" target="n90"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e787" source="n155" target="n156"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e788" source="n155" target="n154"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e789" source="n155" target="n163"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e790" source="n155" target="n147"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e791" source="n155" target="n219"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e792" source="n155" target="n91"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e793" source="n156" target="n157"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e794" source="n156" target="n155"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e795" source="n156" target="n164"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e796" source="n156" target="n148"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e797" source="n156" target="n220"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e798" source="n156" target="n92"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e799" source="n157" target="n158"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e800" source="n157" target="n156"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e801" source="n157" target="n165"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e802" source="n157" target="n149"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e803" source="n157" target="n221"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e804" source="n157" target="n93"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e805" source="n158" target="n159"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e806" source="n158" target="n157"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e807" source="n158" target="n166"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e808" source="n158" target="n150"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e809" source="n158" target="n222"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e810" source="n158" target="n94"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e811" source="n159" target="n158"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e812" source="n159" target="n167"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e813" source="n159" target="n151"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e814" source="n159" target="n223"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e815" source="n159" target="n95"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e816" source="n160" target="n161"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e817" source="n160" target="n168"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e818" source="n160" target="n152"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e819" source="n160" target="n224"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e820" source="n160" target="n96"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e821" source="n161" target="n162"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e822" source="n161" target="n160"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e823" source="n161" target="n169"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e824" source="n161" target="n153"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e825" source="n161" target="n225"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e826" source="n161" target="n97"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e827" source="n162" target="n163"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e828" source="n162" target="n161"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e829" source="n162" target="n170"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e830" source="n162" target="n154"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e831" source="n162" target="n226"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e832" source="n162" target="n98"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e833" source="n163" target="n164"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e834" source="n163" target="n162"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e835" source="n163" target="n171"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e836" source="n163" target="n155"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e837" source="n163" target="n227"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e838" source="n163" target="n99"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e839" source="n164" target="n165"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e840" source="n164" target="n163"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e841" source="n164" target="n172"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e842" source="n164" target="n156"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e843" source="n164" target="n228"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e844" source="n164" target="n100"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e845" source="n165" target="n166"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e846" source="n165" target="n164"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e847" source="n165" target="n173"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e848" source="n165" target="n157"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e849" source="n165" target="n229"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e850" source="n165" target="n101"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e851" source="n166" target="n167"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e852" source="n166" target="n165"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e853" source="n166" target="n174"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e854" source="n166" target="n158"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e855" source="n166" target="n230"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e856" source="n166" target="n102"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e857" source="n167" target="n166"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e858" source="n167" target="n175"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e859" source="n167" target="n159"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e860" source="n167" target="n231"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e861" source="n167" target="n103"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e862" source="n168" target="n169"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e863" source="n168" target="n176"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e864" source="n168" target="n160"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e865" source="n168" target="n232"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e866" source="n168" target="n104"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e867" source="n169" target="n170"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e868" source="n169" target="n168"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e869" source="n169" target="n177"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e870" source="n169" target="n161"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e871" source="n169" target="n233"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e872" source="n169" target="n105"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e873" source="n170" target="n171"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e874" source="n170" target="n169"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e875" source="n170" target="n178"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e876" source="n170" target="n162"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e877" source="n170" target="n234"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e878" source="n170" target="n106"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e879" source="n171" target="n172"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e880" source="n171" target="n170"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e881" source="n171" target="n179"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e882" source="n171" target="n163"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e883" source="n171" target="n235"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e884" source="n171" target="n107"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e885" source="n172" target="n173"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e886" source="n172" target="n171"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e887" source="n172" target="n180"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e888" source="n172" target="n164"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e889" source="n172" target="n236"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e890" source="n172" target="n108"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e891" source="n173" target="n174"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e892" source="n173" target="n172"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e893" source="n173" target="n181"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e894" source="n173" target="n165"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e895" source="n173" target="n237"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e896" source="n173" target="n109"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e897" source="n174" target="n175"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e898" source="n174" target="n173"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e899" source="n174" target="n182"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e900" source="n174" target="n166"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e901" source="n174" target="n238"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e902" source="n174" target="n110"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e903" source="n175" target="n174"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e904" source="n175" target="n183"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e905" source="n175" target="n167"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e906" source="n175" target="n239"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e907" source="n175" target="n111"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e908" source="n176" target="n177"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e909" source="n176" target="n184"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e910" source="n176" target="n168"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e911" source="n176" target="n240"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e912" source="n176" target="n112"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e913" source="n177" target="n178"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e914" source="n177" target="n176"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e915" source="n177" target="n185"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e916" source="n177" target="n169"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e917" source="n177" target="n241"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e918" source="n177" target="n113"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e919" source="n178" target="n179"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e920" source="n178" target="n177"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e921" source="n178" target="n186"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e922" source="n178" target="n170"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e923" source="n178" target="n242"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e924" source="n178" target="n114"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e925" source="n179" target="n180"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e926" source="n179" target="n178"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e927" source="n179" target="n187"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e928" source="n179" target="n171"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e929" source="n179" target="n243"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e930" source="n179" target="n115"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e931" source="n180" target="n181"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e932" source="n180" target="n179"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e933" source="n180" target="n188"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e934" source="n180" target="n172"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e935" source="n180" target="n244"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e936" source="n180" target="n116"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e937" source="n181" target="n182"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e938" source="n181" target="n180"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e939" source="n181" target="n189"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e940" source="n181" target="n173"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e941" source="n181" target="n245"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e942" source="n181" target="n117"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e943" source="n182" target="n183"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e944" source="n182" target="n181"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e945" source="n182" target="n190"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e946" source="n182" target="n174"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e947" source="n182" target="n246"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e948" source="n182" target="n118"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e949" source="n183" target="n182"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e950" source="n183" target="n191"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e951" source="n183" target="n175"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e952" source="n183" target="n247"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e953" source="n183" target="n119"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e954" source="n184" target="n185"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e955" source="n184" target="n176"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e956" source="n184" target="n248"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e957" source="n184" target="n120"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e958" source="n185" target="n186"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e959" source="n185" target="n184"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e960" source="n185" target="n177"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e961" source="n185" target="n249"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e962" source="n185" target="n121"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e963" source="n186" target="n187"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e964" source="n186" target="n185"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e965" source="n186" target="n178"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e966" source="n186" target="n250"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e967" source="n186" target="n122"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e968" source="n187" target="n188"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e969" source="n187" target="n186"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e970" source="n187" target="n179"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e971" source="n187" target="n251"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e972" source="n187" target="n123"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e973" source="n188" target="n189"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e974" source="n188" target="n187"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e975" source="n188" target="n180"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e976" source="n188" target="n252"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e977" source="n188" target="n124"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e978" source="n189" target="n190"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e979" source="n189" target="n188"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e980" source="n189" target="n181"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e981" source="n189" target="n253"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e982" source="n189" target="n125"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e983" source="n190" target="n191"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e984" source="n190" target="n189"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e985" source="n190" target="n182"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e986" source="n190" target="n254"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e987" source="n190" target="n126"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e988" source="n191" target="n190"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e989" source="n191" target="n183"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e990" source="n191" target="n255"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e991" source="n191" target="n127"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e992" source="n192" target="n193"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e993" source="n192" target="n200"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e994" source="n192" target="n256"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e995" source="n192" target="n128"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e996" source="n193" target="n194"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e997" source="n193" target="n192"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e998" source="n193" target="n201"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e999" source="n193" target="n257"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1000" source="n193" target="n129"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1001" source="n194" target="n195"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1002" source="n194" target="n193"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1003" source="n194" target="n202"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1004" source="n194" target="n258"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1005" source="n194" target="n130"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1006" source="n195" target="n196"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1007" source="n195" target="n194"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1008" source="n195" target="n203"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1009" source="n195" target="n259"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1010" source="n195" target="n131"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1011" source="n196" target="n197"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1012" source="n196" target="n195"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1013" source="n196" target="n204"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1014" source="n196" target="n260"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1015" source="n196" target="n132"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1016" source="n197" target="n198"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1017" source="n197" target="n196"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1018" source="n197" target="n205"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1019" source="n197" target="n261"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1020" source="n197" target="n133"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1021" source="n198" target="n199"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1022" source="n198" target="n197"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1023" source="n198" target="n206"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1024" source="n198" target="n262"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1025" source="n198" target="n134"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1026" source="n199" target="n198"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1027" source="n199" target="n207"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1028" source="n199" target="n263"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1029" source="n199" target="n135"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1030" source="n200" target="n201"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1031" source="n200" target="n208"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1032" source="n200" target="n192"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1033" source="n200" target="n264"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1034" source="n200" target="n136"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1035" source="n201" target="n202"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1036" source="n201" target="n200"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1037" source="n201" target="n209"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1038" source="n201" target="n193"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1039" source="n201" target="n265"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1040" source="n201" target="n137"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1041" source="n202" target="n203"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1042" source="n202" target="n201"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1043" source="n202" target="n210"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1044" source="n202" target="n194"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1045" source="n202" target="n266"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1046" source="n202" target="n138"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1047" source="n203" target="n204"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1048" source="n203" target="n202"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1049" source="n203" target="n211"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1050" source="n203" target="n195"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1051" source="n203" target="n267"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1052" source="n203" target="n139"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1053" source="n204" target="n205"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1054" source="n204" target="n203"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1055" source="n204" target="n212"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1056" source="n204" target="n196"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1057" source="n204" target="n268"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1058" source="n204" target="n140"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1059" source="n205" target="n206"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1060" source="n205" target="n204"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1061" source="n205" target="n213"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1062" source="n205" target="n197"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1063" source="n205" target="n269"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1064" source="n205" target="n141"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1065" source="n206" target="n207"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1066" source="n206" target="n205"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1067" source="n206" target="n214"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1068" source="n206" target="n198"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1069" source="n206" target="n270"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1070" source="n206" target="n142"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1071" source="n207" target="n206"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1072" source="n207" target="n215"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1073" source="n207" target="n199"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1074" source="n207" target="n271"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1075" source="n207" target="n143"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1076" source="n208" target="n209"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1077" source="n208" target="n216"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1078" source="n208" target="n200"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1079" source="n208" target="n272"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1080" source="n208" target="n144"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1081" source="n209" target="n210"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1082" source="n209" target="n208"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1083" source="n209" target="n217"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1084" source="n209" target="n201"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1085" source="n209" target="n273"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1086" source="n209" target="n145"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1087" source="n210" target="n211"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1088" source="n210" target="n209"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1089" source="n210" target="n218"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1090" source="n210" target="n202"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1091" source="n210" target="n274"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1092" source="n210" target="n146"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1093" source="n211" target="n212"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1094" source="n211" target="n210"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1095" source="n211" target="n219"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1096" source="n211" target="n203"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1097" source="n211" target="n275"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1098" source="n211" target="n147"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1099" source="n212" target="n213"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1100" source="n212" target="n211"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1101" source="n212" target="n220"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1102" source="n212" target="n204"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1103" source="n212" target="n276"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1104" source="n212" target="n148"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1105" source="n213" target="n214"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1106" source="n213" target="n212"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1107" source="n213" target="n221"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1108" source="n213" target="n205"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1109" source="n213" target="n277"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1110" source="n213" target="n149"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1111" source="n214" target="n215"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1112" source="n214" target="n213"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1113" source="n214" target="n222"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1114" source="n214" target="n206"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1115" source="n214" target="n278"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1116" source="n214" target="n150"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1117" source="n215" target="n214"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1118" source="n215" target="n223"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1119" source="n215" target="n207"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1120" source="n215" target="n279"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1121" source="n215" target="n151"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1122" source="n216" target="n217"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1123" source="n216" target="n224"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1124" source="n216" target="n208"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1125" source="n216" target="n280"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1126" source="n216" target="n152"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1127" source="n217" target="n218"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1128" source="n217" target="n216"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1129" source="n217" target="n225"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1130" source="n217" target="n209"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1131" source="n217" target="n281"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1132" source="n217" target="n153"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1133" source="n218" target="n219"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1134" source="n218" target="n217"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1135" source="n218" target="n226"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1136" source="n218" target="n210"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1137" source="n218" target="n282"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1138" source="n218" target="n154"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1139" source="n219" target="n220"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1140" source="n219" target="n218"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1141" source="n219" target="n227"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1142" source="n219" target="n211"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1143" source="n219" target="n283"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1144" source="n219" target="n155"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1145" source="n220" target="n221"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1146" source="n220" target="n219"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1147" source="n220" target="n228"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1148" source="n220" target="n212"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1149" source="n220" target="n284"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1150" source="n220" target="n156"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1151" source="n221" target="n222"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1152" source="n221" target="n220"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1153" source="n221" target="n229"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1154" source="n221" target="n213"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1155" source="n221" target="n285"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1156" source="n221" target="n157"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1157" source="n222" target="n223"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1158" source="n222" target="n221"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1159" source="n222" target="n230"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1160" source="n222" target="n214"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1161" source="n222" target="n286"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1162" source="n222" target="n158"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1163" source="n223" target="n222"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1164" source="n223" target="n231"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1165" source="n223" target="n215"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1166" source="n223" target="n287"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1167" source="n223" target="n159"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1168" source="n224" target="n225"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1169" source="n224" target="n232"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1170" source="n224" target="n216"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1171" source="n224" target="n288"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1172" source="n224" target="n160"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1173" source="n225" target="n226"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1174" source="n225" target="n224"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1175" source="n225" target="n233"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1176" source="n225" target="n217"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1177" source="n225" target="n289"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1178" source="n225" target="n161"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1179" source="n226" target="n227"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1180" source="n226" target="n225"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1181" source="n226" target="n234"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1182" source="n226" target="n218"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1183" source="n226" target="n290"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1184" source="n226" target="n162"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1185" source="n227" target="n228"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1186" source="n227" target="n226"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1187" source="n227" target="n235"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1188" source="n227" target="n219"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1189" source="n227" target="n291"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1190" source="n227" target="n163"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1191" source="n228" target="n229"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1192" source="n228" target="n227"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1193" source="n228" target="n236"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1194" source="n228" target="n220"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1195" source="n228" target="n292"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1196" source="n228" target="n164"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1197" source="n229" target="n230"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1198" source="n229" target="n228"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1199" source="n229" target="n237"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1200" source="n229" target="n221"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1201" source="n229" target="n293"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1202" source="n229" target="n165"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1203" source="n230" target="n231"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1204" source="n230" target="n229"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1205" source="n230" target="n238"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1206" source="n230" target="n222"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1207" source="n230" target="n294"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1208" source="n230" target="n166"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1209" source="n231" target="n230"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1210" source="n231" target="n239"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1211" source="n231" target="n223"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1212" source="n231" target="n295"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1213" source="n231" target="n167"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1214" source="n232" target="n233"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1215" source="n232" target="n240"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1216" source="n232" target="n224"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1217" source="n232" target="n296"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1218" source="n232" target="n168"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1219" source="n233" target="n234"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1220" source="n233" target="n232"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1221" source="n233" target="n241"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1222" source="n233" target="n225"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1223" source="n233" target="n297"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1224" source="n233" target="n169"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1225" source="n234" target="n235"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1226" source="n234" target="n233"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1227" source="n234" target="n242"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1228" source="n234" target="n226"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1229" source="n234" target="n298"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1230" source="n234" target="n170"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1231" source="n235" target="n236"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1232" source="n235" target="n234"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1233" source="n235" target="n243"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1234" source="n235" target="n227"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1235" source="n235" target="n299"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1236" source="n235" target="n171"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1237" source="n236" target="n237"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1238" source="n236" target="n235"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1239" source="n236" target="n244"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1240" source="n236" target="n228"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1241" source="n236" target="n300"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1242" source="n236" target="n172"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1243" source="n237" target="n238"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1244" source="n237" target="n236"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1245" source="n237" target="n245"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1246" source="n237" target="n229"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1247" source="n237" target="n301"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1248" source="n237" target="n173"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1249" source="n238" target="n239"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1250" source="n238" target="n237"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1251" source="n238" target="n246"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1252" source="n238" target="n230"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1253" source="n238" target="n302"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1254" source="n238" target="n174"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1255" source="n239" target="n238"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1256" source="n239" target="n247"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1257" source="n239" target="n231"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1258" source="n239" target="n303"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1259" source="n239" target="n175"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1260" source="n240" target="n241"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1261" source="n240" target="n248"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1262" source="n240" target="n232"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1263" source="n240" target="n304"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1264" source="n240" target="n176"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1265" source="n241" target="n242"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1266" source="n241" target="n240"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1267" source="n241" target="n249"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1268" source="n241" target="n233"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1269" source="n241" target="n305"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1270" source="n241" target="n177"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1271" source="n242" target="n243"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1272" source="n242" target="n241"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1273" source="n242" target="n250"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1274" source="n242" target="n234"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1275" source="n242" target="n306"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1276" source="n242" target="n178"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1277" source="n243" target="n244"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1278" source="n243" target="n242"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1279" source="n243" target="n251"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1280" source="n243" target="n235"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1281" source="n243" target="n307"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1282" source="n243" target="n179"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1283" source="n244" target="n245"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1284" source="n244" target="n243"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1285" source="n244" target="n252"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1286" source="n244" target="n236"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1287" source="n244" target="n308"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1288" source="n244" target="n180"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1289" source="n245" target="n246"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1290" source="n245" target="n244"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1291" source="n245" target="n253"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1292" source="n245" target="n237"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1293" source="n245" target="n309"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1294" source="n245" target="n181"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1295" source="n246" target="n247"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1296" source="n246" target="n245"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1297" source="n246" target="n254"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1298" source="n246" target="n238"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1299" source="n246" target="n310"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1300" source="n246" target="n182"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1301" source="n247" target="n246"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1302" source="n247" target="n255"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1303" source="n247" target="n239"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1304" source="n247" target="n311"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1305" source="n247" target="n183"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1306" source="n248" target="n249"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1307" source="n248" target="n240"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1308" source="n248" target="n312"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1309" source="n248" target="n184"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1310" source="n249" target="n250"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1311" source="n249" target="n248"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1312" source="n249" target="n241"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1313" source="n249" target="n313"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1314" source="n249" target="n185"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1315" source="n250" target="n251"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1316" source="n250" target="n249"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1317" source="n250" target="n242"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1318" source="n250" target="n314"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1319" source="n250" target="n186"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1320" source="n251" target="n252"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1321" source="n251" target="n250"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1322" source="n251" target="n243"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1323" source="n251" target="n315"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1324" source="n251" target="n187"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1325" source="n252" target="n253"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1326" source="n252" target="n251"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1327" source="n252" target="n244"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1328" source="n252" target="n316"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1329" source="n252" target="n188"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1330" source="n253" target="n254"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1331" source="n253" target="n252"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1332" source="n253" target="n245"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1333" source="n253" target="n317"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1334" source="n253" target="n189"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1335" source="n254" target="n255"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1336" source="n254" target="n253"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1337" source="n254" target="n246"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1338" source="n254" target="n318"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1339" source="n254" target="n190"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1340" source="n255" target="n254"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1341" source="n255" target="n247"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1342" source="n255" target="n319"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1343" source="n255" target="n191"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1344" source="n256" target="n257"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1345" source="n256" target="n264"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1346" source="n256" target="n320"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1347" source="n256" target="n192"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1348" source="n257" target="n258"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1349" source="n257" target="n256"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1350" source="n257" target="n265"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1351" source="n257" target="n321"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1352" source="n257" target="n193"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1353" source="n258" target="n259"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1354" source="n258" target="n257"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1355" source="n258" target="n266"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1356" source="n258" target="n322"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1357" source="n258" target="n194"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1358" source="n259" target="n260"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1359" source="n259" target="n258"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1360" source="n259" target="n267"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1361" source="n259" target="n323"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1362" source="n259" target="n195"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1363" source="n260" target="n261"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1364" source="n260" target="n259"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1365" source="n260" target="n268"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1366" source="n260" target="n324"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1367" source="n260" target="n196"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1368" source="n261" target="n262"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1369" source="n261" target="n260"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1370" source="n261" target="n269"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1371" source="n261" target="n325"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1372" source="n261" target="n197"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1373" source="n262" target="n263"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1374" source="n262" target="n261"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1375" source="n262" target="n270"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1376" source="n262" target="n326"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1377" source="n262" target="n198"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1378" source="n263" target="n262"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1379" source="n263" target="n271"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1380" source="n263" target="n327"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1381" source="n263" target="n199"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1382" source="n264" target="n265"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1383" source="n264" target="n272"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1384" source="n264" target="n256"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1385" source="n264" target="n328"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1386" source="n264" target="n200"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1387" source="n265" target="n266"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1388" source="n265" target="n264"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1389" source="n265" target="n273"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1390" source="n265" target="n257"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1391" source="n265" target="n329"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1392" source="n265" target="n201"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1393" source="n266" target="n267"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1394" source="n266" target="n265"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1395" source="n266" target="n274"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1396" source="n266" target="n258"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1397" source="n266" target="n330"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1398" source="n266" target="n202"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1399" source="n267" target="n268"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1400" source="n267" target="n266"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1401" source="n267" target="n275"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1402" source="n267" target="n259"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1403" source="n267" target="n331"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1404" source="n267" target="n203"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1405" source="n268" target="n269"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1406" source="n268" target="n267"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1407" source="n268" target="n276"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1408" source="n268" target="n260"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1409" source="n268" target="n332"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1410" source="n268" target="n204"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1411" source="n269" target="n270"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1412" source="n269" target="n268"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1413" source="n269" target="n277"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1414" source="n269" target="n261"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1415" source="n269" target="n333"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1416" source="n269" target="n205"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1417" source="n270" target="n271"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1418" source="n270" target="n269"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1419" source="n270" target="n278"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1420" source="n270" target="n262"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1421" source="n270" target="n334"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1422" source="n270" target="n206"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1423" source="n271" target="n270"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1424" source="n271" target="n279"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1425" source="n271" target="n263"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1426" source="n271" target="n335"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1427" source="n271" target="n207"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1428" source="n272" target="n273"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1429" source="n272" target="n280"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1430" source="n272" target="n264"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1431" source="n272" target="n336"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1432" source="n272" target="n208"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1433" source="n273" target="n274"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1434" source="n273" target="n272"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1435" source="n273" target="n281"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1436" source="n273" target="n265"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1437" source="n273" target="n337"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1438" source="n273" target="n209"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1439" source="n274" target="n275"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1440" source="n274" target="n273"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1441" source="n274" target="n282"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1442" source="n274" target="n266"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1443" source="n274" target="n338"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1444" source="n274" target="n210"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1445" source="n275" target="n276"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1446" source="n275" target="n274"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1447" source="n275" target="n283"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1448" source="n275" target="n267"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1449" source="n275" target="n339"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1450" source="n275" target="n211"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1451" source="n276" target="n277"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1452" source="n276" target="n275"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1453" source="n276" target="n284"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1454" source="n276" target="n268"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1455" source="n276" target="n340"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1456" source="n276" target="n212"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1457" source="n277" target="n278"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1458" source="n277" target="n276"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1459" source="n277" target="n285"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1460" source="n277" target="n269"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1461" source="n277" target="n341"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1462" source="n277" target="n213"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1463" source="n278" target="n279"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1464" source="n278" target="n277"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1465" source="n278" target="n286"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1466" source="n278" target="n270"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1467" source="n278" target="n342"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1468" source="n278" target="n214"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1469" source="n279" target="n278"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1470" source="n279" target="n287"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1471" source="n279" target="n271"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1472" source="n279" target="n343"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1473" source="n279" target="n215"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1474" source="n280" target="n281"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1475" source="n280" target="n288"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1476" source="n280" target="n272"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1477" source="n280" target="n344"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1478" source="n280" target="n216"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1479" source="n281" target="n282"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1480" source="n281" target="n280"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1481" source="n281" target="n289"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1482" source="n281" target="n273"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1483" source="n281" target="n345"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1484" source="n281" target="n217"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1485" source="n282" target="n283"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1486" source="n282" target="n281"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1487" source="n282" target="n290"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1488" source="n282" target="n274"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1489" source="n282" target="n346"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1490" source="n282" target="n218"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1491" source="n283" target="n284"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1492" source="n283" target="n282"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1493" source="n283" target="n291"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1494" source="n283" target="n275"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1495" source="n283" target="n347"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1496" source="n283" target="n219"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1497" source="n284" target="n285"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1498" source="n284" target="n283"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1499" source="n284" target="n292"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1500" source="n284" target="n276"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1501" source="n284" target="n348"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1502" source="n284" target="n220"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1503" source="n285" target="n286"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1504" source="n285" target="n284"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1505" source="n285" target="n293"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1506" source="n285" target="n277"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1507" source="n285" target="n349"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1508" source="n285" target="n221"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1509" source="n286" target="n287"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1510" source="n286" target="n285"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1511" source="n286" target="n294"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1512" source="n286" target="n278"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1513" source="n286" target="n350"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1514" source="n286" target="n222"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1515" source="n287" target="n286"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1516" source="n287" target="n295"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1517" source="n287" target="n279"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1518" source="n287" target="n351"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1519" source="n287" target="n223"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1520" source="n288" target="n289"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1521" source="n288" target="n296"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1522" source="n288" target="n280"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1523" source="n288" target="n352"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1524" source="n288" target="n224"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1525" source="n289" target="n290"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1526" source="n289" target="n288"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1527" source="n289" target="n297"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1528" source="n289" target="n281"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1529" source="n289" target="n353"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1530" source="n289" target="n225"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1531" source="n290" target="n291"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1532" source="n290" target="n289"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1533" source="n290" target="n298"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1534" source="n290" target="n282"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1535" source="n290" target="n354"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1536" source="n290" target="n226"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1537" source="n291" target="n292"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1538" source="n291" target="n290"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1539" source="n291" target="n299"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1540" source="n291" target="n283"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1541" source="n291" target="n355"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1542" source="n291" target="n227"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1543" source="n292" target="n293"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1544" source="n292" target="n291"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1545" source="n292" target="n300"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1546" source="n292" target="n284"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1547" source="n292" target="n356"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1548" source="n292" target="n228"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1549" source="n293" target="n294"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1550" source="n293" target="n292"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1551" source="n293" target="n301"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1552" source="n293" target="n285"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1553" source="n293" target="n357"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1554" source="n293" target="n229"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1555" source="n294" target="n295"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1556" source="n294" target="n293"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1557" source="n294" target="n302"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1558" source="n294" target="n286"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1559" source="n294" target="n358"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1560" source="n294" target="n230"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1561" source="n295" target="n294"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1562" source="n295" target="n303"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1563" source="n295" target="n287"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1564" source="n295" target="n359"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1565" source="n295" target="n231"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1566" source="n296" target="n297"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1567" source="n296" target="n304"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1568" source="n296" target="n288"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1569" source="n296" target="n360"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1570" source="n296" target="n232"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1571" source="n297" target="n298"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1572" source="n297" target="n296"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1573" source="n297" target="n305"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1574" source="n297" target="n289"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1575" source="n297" target="n361"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1576" source="n297" target="n233"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1577" source="n298" target="n299"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1578" source="n298" target="n297"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1579" source="n298" target="n306"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1580" source="n298" target="n290"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1581" source="n298" target="n362"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1582" source="n298" target="n234"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1583" source="n299" target="n300"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1584" source="n299" target="n298"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1585" source="n299" target="n307"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1586" source="n299" target="n291"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1587" source="n299" target="n363"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1588" source="n299" target="n235"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1589" source="n300" target="n301"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1590" source="n300" target="n299"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1591" source="n300" target="n308"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1592" source="n300" target="n292"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1593" source="n300" target="n364"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1594" source="n300" target="n236"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1595" source="n301" target="n302"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1596" source="n301" target="n300"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1597" source="n301" target="n309"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1598" source="n301" target="n293"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1599" source="n301" target="n365"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1600" source="n301" target="n237"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1601" source="n302" target="n303"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1602" source="n302" target="n301"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1603" source="n302" target="n310"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1604" source="n302" target="n294"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1605" source="n302" target="n366"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1606" source="n302" target="n238"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1607" source="n303" target="n302"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1608" source="n303" target="n311"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1609" source="n303" target="n295"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1610" source="n303" target="n367"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1611" source="n303" target="n239"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1612" source="n304" target="n305"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1613" source="n304" target="n312"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1614" source="n304" target="n296"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1615" source="n304" target="n368"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1616" source="n304" target="n240"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1617" source="n305" target="n306"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1618" source="n305" target="n304"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1619" source="n305" target="n313"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1620" source="n305" target="n297"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1621" source="n305" target="n369"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1622" source="n305" target="n241"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1623" source="n306" target="n307"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1624" source="n306" target="n305"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1625" source="n306" target="n314"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1626" source="n306" target="n298"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1627" source="n306" target="n370"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1628" source="n306" target="n242"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1629" source="n307" target="n308"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1630" source="n307" target="n306"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1631" source="n307" target="n315"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1632" source="n307" target="n299"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1633" source="n307" target="n371"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1634" source="n307" target="n243"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1635" source="n308" target="n309"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1636" source="n308" target="n307"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1637" source="n308" target="n316"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1638" source="n308" target="n300"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1639" source="n308" target="n372"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1640" source="n308" target="n244"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1641" source="n309" target="n310"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1642" source="n309" target="n308"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1643" source="n309" target="n317"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1644" source="n309" target="n301"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1645" source="n309" target="n373"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1646" source="n309" target="n245"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1647" source="n310" target="n311"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1648" source="n310" target="n309"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1649" source="n310" target="n318"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1650" source="n310" target="n302"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1651" source="n310" target="n374"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1652" source="n310" target="n246"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1653" source="n311" target="n310"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1654" source="n311" target="n319"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1655" source="n311" target="n303"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1656" source="n311" target="n375"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1657" source="n311" target="n247"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1658" source="n312" target="n313"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1659" source="n312" target="n304"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1660" source="n312" target="n376"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1661" source="n312" target="n248"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1662" source="n313" target="n314"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1663" source="n313" target="n312"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1664" source="n313" target="n305"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1665" source="n313" target="n377"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1666" source="n313" target="n249"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1667" source="n314" target="n315"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1668" source="n314" target="n313"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1669" source="n314" target="n306"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1670" source="n314" target="n378"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1671" source="n314" target="n250"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1672" source="n315" target="n316"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1673" source="n315" target="n314"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1674" source="n315" target="n307"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1675" source="n315" target="n379"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1676" source="n315" target="n251"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1677" source="n316" target="n317"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1678" source="n316" target="n315"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1679" source="n316" target="n308"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1680" source="n316" target="n380"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1681" source="n316" target="n252"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1682" source="n317" target="n318"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1683" source="n317" target="n316"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1684" source="n317" target="n309"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1685" source="n317" target="n381"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1686" source="n317" target="n253"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1687" source="n318" target="n319"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1688" source="n318" target="n317"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1689" source="n318" target="n310"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1690" source="n318" target="n382"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1691" source="n318" target="n254"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1692" source="n319" target="n318"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1693" source="n319" target="n311"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1694" source="n319" target="n383"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1695" source="n319" target="n255"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1696" source="n320" target="n321"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1697" source="n320" target="n328"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1698" source="n320" target="n384"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1699" source="n320" target="n256"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1700" source="n321" target="n322"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1701" source="n321" target="n320"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1702" source="n321" target="n329"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1703" source="n321" target="n385"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1704" source="n321" target="n257"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1705" source="n322" target="n323"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1706" source="n322" target="n321"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1707" source="n322" target="n330"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1708" source="n322" target="n386"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1709" source="n322" target="n258"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1710" source="n323" target="n324"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1711" source="n323" target="n322"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1712" source="n323" target="n331"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1713" source="n323" target="n387"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1714" source="n323" target="n259"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1715" source="n324" target="n325"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1716" source="n324" target="n323"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1717" source="n324" target="n332"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1718" source="n324" target="n388"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1719" source="n324" target="n260"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1720" source="n325" target="n326"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1721" source="n325" target="n324"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1722" source="n325" target="n333"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1723" source="n325" target="n389"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1724" source="n325" target="n261"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1725" source="n326" target="n327"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1726" source="n326" target="n325"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1727" source="n326" target="n334"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1728" source="n326" target="n390"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1729" source="n326" target="n262"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1730" source="n327" target="n326"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1731" source="n327" target="n335"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1732" source="n327" target="n391"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1733" source="n327" target="n263"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1734" source="n328" target="n329"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1735" source="n328" target="n336"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1736" source="n328" target="n320"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1737" source="n328" target="n392"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1738" source="n328" target="n264"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1739" source="n329" target="n330"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1740" source="n329" target="n328"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1741" source="n329" target="n337"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1742" source="n329" target="n321"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1743" source="n329" target="n393"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1744" source="n329" target="n265"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1745" source="n330" target="n331"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1746" source="n330" target="n329"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1747" source="n330" target="n338"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1748" source="n330" target="n322"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1749" source="n330" target="n394"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1750" source="n330" target="n266"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1751" source="n331" target="n332"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1752" source="n331" target="n330"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1753" source="n331" target="n339"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1754" source="n331" target="n323"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1755" source="n331" target="n395"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1756" source="n331" target="n267"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1757" source="n332" target="n333"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1758" source="n332" target="n331"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1759" source="n332" target="n340"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1760" source="n332" target="n324"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1761" source="n332" target="n396"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1762" source="n332" target="n268"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1763" source="n333" target="n334"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1764" source="n333" target="n332"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1765" source="n333" target="n341"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1766" source="n333" target="n325"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1767" source="n333" target="n397"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1768" source="n333" target="n269"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1769" source="n334" target="n335"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1770" source="n334" target="n333"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1771" source="n334" target="n342"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1772" source="n334" target="n326"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1773" source="n334" target="n398"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1774" source="n334" target="n270"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1775" source="n335" target="n334"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1776" source="n335" target="n343"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1777" source="n335" target="n327"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1778" source="n335" target="n399"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1779" source="n335" target="n271"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1780" source="n336" target="n337"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1781" source="n336" target="n344"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1782" source="n336" target="n328"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1783" source="n336" target="n400"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1784" source="n336" target="n272"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1785" source="n337" target="n338"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1786" source="n337" target="n336"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1787" source="n337" target="n345"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1788" source="n337" target="n329"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1789" source="n337" target="n401"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1790" source="n337" target="n273"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1791" source="n338" target="n339"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1792" source="n338" target="n337"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1793" source="n338" target="n346"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1794" source="n338" target="n330"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1795" source="n338" target="n402"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1796" source="n338" target="n274"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1797" source="n339" target="n340"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1798" source="n339" target="n338"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1799" source="n339" target="n347"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1800" source="n339" target="n331"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1801" source="n339" target="n403"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1802" source="n339" target="n275"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1803" source="n340" target="n341"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1804" source="n340" target="n339"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1805" source="n340" target="n348"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1806" source="n340" target="n332"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1807" source="n340" target="n404"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1808" source="n340" target="n276"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1809" source="n341" target="n342"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1810" source="n341" target="n340"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1811" source="n341" target="n349"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1812" source="n341" target="n333"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1813" source="n341" target="n405"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1814" source="n341" target="n277"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1815" source="n342" target="n343"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1816" source="n342" target="n341"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1817" source="n342" target="n350"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1818" source="n342" target="n334"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1819" source="n342" target="n406"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1820" source="n342" target="n278"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1821" source="n343" target="n342"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1822" source="n343" target="n351"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1823" source="n343" target="n335"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1824" source="n343" target="n407"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1825" source="n343" target="n279"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1826" source="n344" target="n345"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1827" source="n344" target="n352"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1828" source="n344" target="n336"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1829" source="n344" target="n408"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1830" source="n344" target="n280"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1831" source="n345" target="n346"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1832" source="n345" target="n344"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1833" source="n345" target="n353"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1834" source="n345" target="n337"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1835" source="n345" target="n409"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1836" source="n345" target="n281"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1837" source="n346" target="n347"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1838" source="n346" target="n345"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1839" source="n346" target="n354"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1840" source="n346" target="n338"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1841" source="n346" target="n410"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1842" source="n346" target="n282"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1843" source="n347" target="n348"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1844" source="n347" target="n346"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1845" source="n347" target="n355"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1846" source="n347" target="n339"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1847" source="n347" target="n411"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1848" source="n347" target="n283"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1849" source="n348" target="n349"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1850" source="n348" target="n347"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1851" source="n348" target="n356"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1852" source="n348" target="n340"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1853" source="n348" target="n412"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1854" source="n348" target="n284"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1855" source="n349" target="n350"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1856" source="n349" target="n348"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1857" source="n349" target="n357"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1858" source="n349" target="n341"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1859" source="n349" target="n413"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1860" source="n349" target="n285"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1861" source="n350" target="n351"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1862" source="n350" target="n349"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1863" source="n350" target="n358"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1864" source="n350" target="n342"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1865" source="n350" target="n414"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1866" source="n350" target="n286"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1867" source="n351" target="n350"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1868" source="n351" target="n359"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1869" source="n351" target="n343"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1870" source="n351" target="n415"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1871" source="n351" target="n287"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1872" source="n352" target="n353"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1873" source="n352" target="n360"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1874" source="n352" target="n344"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1875" source="n352" target="n416"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1876" source="n352" target="n288"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1877" source="n353" target="n354"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1878" source="n353" target="n352"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1879" source="n353" target="n361"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1880" source="n353" target="n345"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1881" source="n353" target="n417"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1882" source="n353" target="n289"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1883" source="n354" target="n355"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1884" source="n354" target="n353"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1885" source="n354" target="n362"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1886" source="n354" target="n346"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1887" source="n354" target="n418"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1888" source="n354" target="n290"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1889" source="n355" target="n356"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1890" source="n355" target="n354"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1891" source="n355" target="n363"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1892" source="n355" target="n347"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1893" source="n355" target="n419"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1894" source="n355" target="n291"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1895" source="n356" target="n357"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1896" source="n356" target="n355"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1897" source="n356" target="n364"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1898" source="n356" target="n348"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1899" source="n356" target="n420"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1900" source="n356" target="n292"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1901" source="n357" target="n358"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1902" source="n357" target="n356"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1903" source="n357" target="n365"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1904" source="n357" target="n349"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1905" source="n357" target="n421"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1906" source="n357" target="n293"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1907" source="n358" target="n359"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1908" source="n358" target="n357"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1909" source="n358" target="n366"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1910" source="n358" target="n350"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1911" source="n358" target="n422"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1912" source="n358" target="n294"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1913" source="n359" target="n358"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1914" source="n359" target="n367"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1915" source="n359" target="n351"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1916" source="n359" target="n423"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1917" source="n359" target="n295"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1918" source="n360" target="n361"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1919" source="n360" target="n368"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1920" source="n360" target="n352"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1921" source="n360" target="n424"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1922" source="n360" target="n296"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1923" source="n361" target="n362"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1924" source="n361" target="n360"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1925" source="n361" target="n369"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1926" source="n361" target="n353"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1927" source="n361" target="n425"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1928" source="n361" target="n297"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1929" source="n362" target="n363"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1930" source="n362" target="n361"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1931" source="n362" target="n370"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1932" source="n362" target="n354"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1933" source="n362" target="n426"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1934" source="n362" target="n298"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1935" source="n363" target="n364"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1936" source="n363" target="n362"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1937" source="n363" target="n371"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1938" source="n363" target="n355"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1939" source="n363" target="n427"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1940" source="n363" target="n299"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1941" source="n364" target="n365"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1942" source="n364" target="n363"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1943" source="n364" target="n372"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1944" source="n364" target="n356"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1945" source="n364" target="n428"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1946" source="n364" target="n300"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1947" source="n365" target="n366"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1948" source="n365" target="n364"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1949" source="n365" target="n373"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1950" source="n365" target="n357"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1951" source="n365" target="n429"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1952" source="n365" target="n301"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1953" source="n366" target="n367"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1954" source="n366" target="n365"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1955" source="n366" target="n374"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1956" source="n366" target="n358"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1957" source="n366" target="n430"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1958" source="n366" target="n302"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1959" source="n367" target="n366"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1960" source="n367" target="n375"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1961" source="n367" target="n359"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1962" source="n367" target="n431"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1963" source="n367" target="n303"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1964" source="n368" target="n369"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1965" source="n368" target="n376"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1966" source="n368" target="n360"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1967" source="n368" target="n432"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1968" source="n368" target="n304"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1969" source="n369" target="n370"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1970" source="n369" target="n368"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1971" source="n369" target="n377"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1972" source="n369" target="n361"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1973" source="n369" target="n433"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1974" source="n369" target="n305"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1975" source="n370" target="n371"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1976" source="n370" target="n369"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1977" source="n370" target="n378"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1978" source="n370" target="n362"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1979" source="n370" target="n434"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1980" source="n370" target="n306"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1981" source="n371" target="n372"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1982" source="n371" target="n370"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1983" source="n371" target="n379"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1984" source="n371" target="n363"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1985" source="n371" target="n435"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1986" source="n371" target="n307"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1987" source="n372" target="n373"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1988" source="n372" target="n371"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1989" source="n372" target="n380"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1990" source="n372" target="n364"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1991" source="n372" target="n436"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1992" source="n372" target="n308"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1993" source="n373" target="n374"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1994" source="n373" target="n372"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1995" source="n373" target="n381"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1996" source="n373" target="n365"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1997" source="n373" target="n437"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1998" source="n373" target="n309"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e1999" source="n374" target="n375"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2000" source="n374" target="n373"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2001" source="n374" target="n382"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2002" source="n374" target="n366"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2003" source="n374" target="n438"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2004" source="n374" target="n310"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2005" source="n375" target="n374"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2006" source="n375" target="n383"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2007" source="n375" target="n367"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2008" source="n375" target="n439"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2009" source="n375" target="n311"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2010" source="n376" target="n377"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2011" source="n376" target="n368"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2012" source="n376" target="n440"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2013" source="n376" target="n312"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2014" source="n377" target="n378"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2015" source="n377" target="n376"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2016" source="n377" target="n369"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2017" source="n377" target="n441"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2018" source="n377" target="n313"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2019" source="n378" target="n379"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2020" source="n378" target="n377"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2021" source="n378" target="n370"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2022" source="n378" target="n442"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2023" source="n378" target="n314"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2024" source="n379" target="n380"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2025" source="n379" target="n378"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2026" source="n379" target="n371"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2027" source="n379" target="n443"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2028" source="n379" target="n315"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2029" source="n380" target="n381"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2030" source="n380" target="n379"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2031" source="n380" target="n372"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2032" source="n380" target="n444"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2033" source="n380" target="n316"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2034" source="n381" target="n382"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2035" source="n381" target="n380"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2036" source="n381" target="n373"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2037" source="n381" target="n445"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2038" source="n381" target="n317"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2039" source="n382" target="n383"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2040" source="n382" target="n381"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2041" source="n382" target="n374"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2042" source="n382" target="n446"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2043" source="n382" target="n318"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2044" source="n383" target="n382"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2045" source="n383" target="n375"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2046" source="n383" target="n447"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2047" source="n383" target="n319"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2048" source="n384" target="n385"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2049" source="n384" target="n392"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2050" source="n384" target="n448"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2051" source="n384" target="n320"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2052" source="n385" target="n386"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2053" source="n385" target="n384"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2054" source="n385" target="n393"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2055" source="n385" target="n449"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2056" source="n385" target="n321"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2057" source="n386" target="n387"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2058" source="n386" target="n385"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2059" source="n386" target="n394"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2060" source="n386" target="n450"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2061" source="n386" target="n322"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2062" source="n387" target="n388"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2063" source="n387" target="n386"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2064" source="n387" target="n395"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2065" source="n387" target="n451"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2066" source="n387" target="n323"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2067" source="n388" target="n389"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2068" source="n388" target="n387"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2069" source="n388" target="n396"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2070" source="n388" target="n452"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2071" source="n388" target="n324"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2072" source="n389" target="n390"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2073" source="n389" target="n388"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2074" source="n389" target="n397"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2075" source="n389" target="n453"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2076" source="n389" target="n325"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2077" source="n390" target="n391"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2078" source="n390" target="n389"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2079" source="n390" target="n398"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2080" source="n390" target="n454"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2081" source="n390" target="n326"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2082" source="n391" target="n390"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2083" source="n391" target="n399"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2084" source="n391" target="n455"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2085" source="n391" target="n327"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2086" source="n392" target="n393"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2087" source="n392" target="n400"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2088" source="n392" target="n384"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2089" source="n392" target="n456"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2090" source="n392" target="n328"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2091" source="n393" target="n394"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2092" source="n393" target="n392"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2093" source="n393" target="n401"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2094" source="n393" target="n385"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2095" source="n393" target="n457"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2096" source="n393" target="n329"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2097" source="n394" target="n395"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2098" source="n394" target="n393"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2099" source="n394" target="n402"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2100" source="n394" target="n386"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2101" source="n394" target="n458"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2102" source="n394" target="n330"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2103" source="n395" target="n396"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2104" source="n395" target="n394"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2105" source="n395" target="n403"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2106" source="n395" target="n387"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2107" source="n395" target="n459"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2108" source="n395" target="n331"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2109" source="n396" target="n397"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2110" source="n396" target="n395"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2111" source="n396" target="n404"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2112" source="n396" target="n388"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2113" source="n396" target="n460"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2114" source="n396" target="n332"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2115" source="n397" target="n398"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2116" source="n397" target="n396"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2117" source="n397" target="n405"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2118" source="n397" target="n389"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2119" source="n397" target="n461"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2120" source="n397" target="n333"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2121" source="n398" target="n399"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2122" source="n398" target="n397"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2123" source="n398" target="n406"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2124" source="n398" target="n390"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2125" source="n398" target="n462"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2126" source="n398" target="n334"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2127" source="n399" target="n398"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2128" source="n399" target="n407"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2129" source="n399" target="n391"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2130" source="n399" target="n463"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2131" source="n399" target="n335"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2132" source="n400" target="n401"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2133" source="n400" target="n408"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2134" source="n400" target="n392"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2135" source="n400" target="n464"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2136" source="n400" target="n336"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2137" source="n401" target="n402"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2138" source="n401" target="n400"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2139" source="n401" target="n409"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2140" source="n401" target="n393"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2141" source="n401" target="n465"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2142" source="n401" target="n337"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2143" source="n402" target="n403"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2144" source="n402" target="n401"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2145" source="n402" target="n410"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2146" source="n402" target="n394"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2147" source="n402" target="n466"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2148" source="n402" target="n338"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2149" source="n403" target="n404"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2150" source="n403" target="n402"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2151" source="n403" target="n411"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2152" source="n403" target="n395"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2153" source="n403" target="n467"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2154" source="n403" target="n339"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2155" source="n404" target="n405"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2156" source="n404" target="n403"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2157" source="n404" target="n412"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2158" source="n404" target="n396"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2159" source="n404" target="n468"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2160" source="n404" target="n340"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2161" source="n405" target="n406"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2162" source="n405" target="n404"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2163" source="n405" target="n413"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2164" source="n405" target="n397"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2165" source="n405" target="n469"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2166" source="n405" target="n341"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2167" source="n406" target="n407"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2168" source="n406" target="n405"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2169" source="n406" target="n414"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2170" source="n406" target="n398"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2171" source="n406" target="n470"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2172" source="n406" target="n342"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2173" source="n407" target="n406"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2174" source="n407" target="n415"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2175" source="n407" target="n399"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2176" source="n407" target="n471"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2177" source="n407" target="n343"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2178" source="n408" target="n409"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2179" source="n408" target="n416"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2180" source="n408" target="n400"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2181" source="n408" target="n472"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2182" source="n408" target="n344"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2183" source="n409" target="n410"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2184" source="n409" target="n408"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2185" source="n409" target="n417"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2186" source="n409" target="n401"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2187" source="n409" target="n473"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2188" source="n409" target="n345"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2189" source="n410" target="n411"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2190" source="n410" target="n409"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2191" source="n410" target="n418"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2192" source="n410" target="n402"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2193" source="n410" target="n474"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2194" source="n410" target="n346"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2195" source="n411" target="n412"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2196" source="n411" target="n410"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2197" source="n411" target="n419"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2198" source="n411" target="n403"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2199" source="n411" target="n475"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2200" source="n411" target="n347"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2201" source="n412" target="n413"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2202" source="n412" target="n411"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2203" source="n412" target="n420"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2204" source="n412" target="n404"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2205" source="n412" target="n476"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2206" source="n412" target="n348"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2207" source="n413" target="n414"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2208" source="n413" target="n412"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2209" source="n413" target="n421"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2210" source="n413" target="n405"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2211" source="n413" target="n477"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2212" source="n413" target="n349"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2213" source="n414" target="n415"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2214" source="n414" target="n413"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2215" source="n414" target="n422"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2216" source="n414" target="n406"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2217" source="n414" target="n478"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2218" source="n414" target="n350"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2219" source="n415" target="n414"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2220" source="n415" target="n423"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2221" source="n415" target="n407"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2222" source="n415" target="n479"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2223" source="n415" target="n351"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2224" source="n416" target="n417"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2225" source="n416" target="n424"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2226" source="n416" target="n408"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2227" source="n416" target="n480"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2228" source="n416" target="n352"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2229" source="n417" target="n418"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2230" source="n417" target="n416"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2231" source="n417" target="n425"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2232" source="n417" target="n409"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2233" source="n417" target="n481"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2234" source="n417" target="n353"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2235" source="n418" target="n419"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2236" source="n418" target="n417"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2237" source="n418" target="n426"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2238" source="n418" target="n410"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2239" source="n418" target="n482"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2240" source="n418" target="n354"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2241" source="n419" target="n420"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2242" source="n419" target="n418"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2243" source="n419" target="n427"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2244" source="n419" target="n411"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2245" source="n419" target="n483"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2246" source="n419" target="n355"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2247" source="n420" target="n421"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2248" source="n420" target="n419"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2249" source="n420" target="n428"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2250" source="n420" target="n412"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2251" source="n420" target="n484"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2252" source="n420" target="n356"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2253" source="n421" target="n422"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2254" source="n421" target="n420"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2255" source="n421" target="n429"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2256" source="n421" target="n413"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2257" source="n421" target="n485"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2258" source="n421" target="n357"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2259" source="n422" target="n423"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2260" source="n422" target="n421"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2261" source="n422" target="n430"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2262" source="n422" target="n414"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2263" source="n422" target="n486"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2264" source="n422" target="n358"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2265" source="n423" target="n422"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2266" source="n423" target="n431"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2267" source="n423" target="n415"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2268" source="n423" target="n487"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2269" source="n423" target="n359"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2270" source="n424" target="n425"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2271" source="n424" target="n432"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2272" source="n424" target="n416"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2273" source="n424" target="n488"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2274" source="n424" target="n360"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2275" source="n425" target="n426"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2276" source="n425" target="n424"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2277" source="n425" target="n433"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2278" source="n425" target="n417"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2279" source="n425" target="n489"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2280" source="n425" target="n361"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2281" source="n426" target="n427"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2282" source="n426" target="n425"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2283" source="n426" target="n434"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2284" source="n426" target="n418"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2285" source="n426" target="n490"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2286" source="n426" target="n362"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2287" source="n427" target="n428"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2288" source="n427" target="n426"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2289" source="n427" target="n435"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2290" source="n427" target="n419"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2291" source="n427" target="n491"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2292" source="n427" target="n363"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2293" source="n428" target="n429"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2294" source="n428" target="n427"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2295" source="n428" target="n436"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2296" source="n428" target="n420"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2297" source="n428" target="n492"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2298" source="n428" target="n364"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2299" source="n429" target="n430"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2300" source="n429" target="n428"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2301" source="n429" target="n437"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2302" source="n429" target="n421"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2303" source="n429" target="n493"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2304" source="n429" target="n365"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2305" source="n430" target="n431"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2306" source="n430" target="n429"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2307" source="n430" target="n438"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2308" source="n430" target="n422"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2309" source="n430" target="n494"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2310" source="n430" target="n366"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2311" source="n431" target="n430"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2312" source="n431" target="n439"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2313" source="n431" target="n423"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2314" source="n431" target="n495"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2315" source="n431" target="n367"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2316" source="n432" target="n433"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2317" source="n432" target="n440"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2318" source="n432" target="n424"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2319" source="n432" target="n496"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2320" source="n432" target="n368"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2321" source="n433" target="n434"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2322" source="n433" target="n432"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2323" source="n433" target="n441"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2324" source="n433" target="n425"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2325" source="n433" target="n497"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2326" source="n433" target="n369"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2327" source="n434" target="n435"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2328" source="n434" target="n433"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2329" source="n434" target="n442"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2330" source="n434" target="n426"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2331" source="n434" target="n498"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2332" source="n434" target="n370"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2333" source="n435" target="n436"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2334" source="n435" target="n434"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2335" source="n435" target="n443"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2336" source="n435" target="n427"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2337" source="n435" target="n499"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2338" source="n435" target="n371"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2339" source="n436" target="n437"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2340" source="n436" target="n435"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2341" source="n436" target="n444"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2342" source="n436" target="n428"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2343" source="n436" target="n500"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2344" source="n436" target="n372"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2345" source="n437" target="n438"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2346" source="n437" target="n436"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2347" source="n437" target="n445"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2348" source="n437" target="n429"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2349" source="n437" target="n501"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2350" source="n437" target="n373"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2351" source="n438" target="n439"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2352" source="n438" target="n437"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2353" source="n438" target="n446"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2354" source="n438" target="n430"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2355" source="n438" target="n502"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2356" source="n438" target="n374"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2357" source="n439" target="n438"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2358" source="n439" target="n447"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2359" source="n439" target="n431"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2360" source="n439" target="n503"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2361" source="n439" target="n375"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2362" source="n440" target="n441"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2363" source="n440" target="n432"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2364" source="n440" target="n504"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2365" source="n440" target="n376"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2366" source="n441" target="n442"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2367" source="n441" target="n440"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2368" source="n441" target="n433"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2369" source="n441" target="n505"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2370" source="n441" target="n377"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2371" source="n442" target="n443"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2372" source="n442" target="n441"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2373" source="n442" target="n434"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2374" source="n442" target="n506"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2375" source="n442" target="n378"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2376" source="n443" target="n444"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2377" source="n443" target="n442"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2378" source="n443" target="n435"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2379" source="n443" target="n507"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2380" source="n443" target="n379"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2381" source="n444" target="n445"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2382" source="n444" target="n443"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2383" source="n444" target="n436"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2384" source="n444" target="n508"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2385" source="n444" target="n380"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2386" source="n445" target="n446"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2387" source="n445" target="n444"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2388" source="n445" target="n437"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2389" source="n445" target="n509"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2390" source="n445" target="n381"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2391" source="n446" target="n447"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2392" source="n446" target="n445"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2393" source="n446" target="n438"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2394" source="n446" target="n510"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2395" source="n446" target="n382"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2396" source="n447" target="n446"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2397" source="n447" target="n439"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2398" source="n447" target="n511"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2399" source="n447" target="n383"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2400" source="n448" target="n449"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2401" source="n448" target="n456"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2402" source="n448" target="n384"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2403" source="n449" target="n450"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2404" source="n449" target="n448"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2405" source="n449" target="n457"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2406" source="n449" target="n385"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2407" source="n450" target="n451"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2408" source="n450" target="n449"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2409" source="n450" target="n458"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2410" source="n450" target="n386"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2411" source="n451" target="n452"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2412" source="n451" target="n450"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2413" source="n451" target="n459"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2414" source="n451" target="n387"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2415" source="n452" target="n453"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2416" source="n452" target="n451"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2417" source="n452" target="n460"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2418" source="n452" target="n388"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2419" source="n453" target="n454"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2420" source="n453" target="n452"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2421" source="n453" target="n461"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2422" source="n453" target="n389"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2423" source="n454" target="n455"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2424" source="n454" target="n453"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2425" source="n454" target="n462"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2426" source="n454" target="n390"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2427" source="n455" target="n454"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2428" source="n455" target="n463"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2429" source="n455" target="n391"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2430" source="n456" target="n457"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2431" source="n456" target="n464"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2432" source="n456" target="n448"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2433" source="n456" target="n392"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2434" source="n457" target="n458"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2435" source="n457" target="n456"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2436" source="n457" target="n465"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2437" source="n457" target="n449"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2438" source="n457" target="n393"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2439" source="n458" target="n459"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2440" source="n458" target="n457"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2441" source="n458" target="n466"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2442" source="n458" target="n450"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2443" source="n458" target="n394"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2444" source="n459" target="n460"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2445" source="n459" target="n458"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2446" source="n459" target="n467"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2447" source="n459" target="n451"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2448" source="n459" target="n395"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2449" source="n460" target="n461"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2450" source="n460" target="n459"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2451" source="n460" target="n468"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2452" source="n460" target="n452"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2453" source="n460" target="n396"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2454" source="n461" target="n462"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2455" source="n461" target="n460"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2456" source="n461" target="n469"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2457" source="n461" target="n453"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2458" source="n461" target="n397"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2459" source="n462" target="n463"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2460" source="n462" target="n461"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2461" source="n462" target="n470"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2462" source="n462" target="n454"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2463" source="n462" target="n398"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2464" source="n463" target="n462"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2465" source="n463" target="n471"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2466" source="n463" target="n455"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2467" source="n463" target="n399"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2468" source="n464" target="n465"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2469" source="n464" target="n472"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2470" source="n464" target="n456"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2471" source="n464" target="n400"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2472" source="n465" target="n466"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2473" source="n465" target="n464"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2474" source="n465" target="n473"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2475" source="n465" target="n457"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2476" source="n465" target="n401"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2477" source="n466" target="n467"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2478" source="n466" target="n465"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2479" source="n466" target="n474"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2480" source="n466" target="n458"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2481" source="n466" target="n402"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2482" source="n467" target="n468"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2483" source="n467" target="n466"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2484" source="n467" target="n475"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2485" source="n467" target="n459"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2486" source="n467" target="n403"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2487" source="n468" target="n469"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2488" source="n468" target="n467"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2489" source="n468" target="n476"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2490" source="n468" target="n460"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2491" source="n468" target="n404"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2492" source="n469" target="n470"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2493" source="n469" target="n468"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2494" source="n469" target="n477"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2495" source="n469" target="n461"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2496" source="n469" target="n405"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2497" source="n470" target="n471"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2498" source="n470" target="n469"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2499" source="n470" target="n478"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2500" source="n470" target="n462"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2501" source="n470" target="n406"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2502" source="n471" target="n470"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2503" source="n471" target="n479"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2504" source="n471" target="n463"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2505" source="n471" target="n407"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2506" source="n472" target="n473"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2507" source="n472" target="n480"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2508" source="n472" target="n464"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2509" source="n472" target="n408"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2510" source="n473" target="n474"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2511" source="n473" target="n472"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2512" source="n473" target="n481"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2513" source="n473" target="n465"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2514" source="n473" target="n409"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2515" source="n474" target="n475"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2516" source="n474" target="n473"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2517" source="n474" target="n482"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2518" source="n474" target="n466"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2519" source="n474" target="n410"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2520" source="n475" target="n476"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2521" source="n475" target="n474"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2522" source="n475" target="n483"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2523" source="n475" target="n467"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2524" source="n475" target="n411"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2525" source="n476" target="n477"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2526" source="n476" target="n475"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2527" source="n476" target="n484"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2528" source="n476" target="n468"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2529" source="n476" target="n412"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2530" source="n477" target="n478"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2531" source="n477" target="n476"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2532" source="n477" target="n485"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2533" source="n477" target="n469"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2534" source="n477" target="n413"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2535" source="n478" target="n479"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2536" source="n478" target="n477"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2537" source="n478" target="n486"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2538" source="n478" target="n470"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2539" source="n478" target="n414"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2540" source="n479" target="n478"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2541" source="n479" target="n487"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2542" source="n479" target="n471"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2543" source="n479" target="n415"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2544" source="n480" target="n481"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2545" source="n480" target="n488"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2546" source="n480" target="n472"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2547" source="n480" target="n416"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2548" source="n481" target="n482"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2549" source="n481" target="n480"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2550" source="n481" target="n489"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2551" source="n481" target="n473"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2552" source="n481" target="n417"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2553" source="n482" target="n483"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2554" source="n482" target="n481"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2555" source="n482" target="n490"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2556" source="n482" target="n474"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2557" source="n482" target="n418"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2558" source="n483" target="n484"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2559" source="n483" target="n482"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2560" source="n483" target="n491"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2561" source="n483" target="n475"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2562" source="n483" target="n419"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2563" source="n484" target="n485"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2564" source="n484" target="n483"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2565" source="n484" target="n492"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2566" source="n484" target="n476"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2567" source="n484" target="n420"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2568" source="n485" target="n486"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2569" source="n485" target="n484"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2570" source="n485" target="n493"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2571" source="n485" target="n477"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2572" source="n485" target="n421"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2573" source="n486" target="n487"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2574" source="n486" target="n485"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2575" source="n486" target="n494"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2576" source="n486" target="n478"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2577" source="n486" target="n422"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2578" source="n487" target="n486"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2579" source="n487" target="n495"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2580" source="n487" target="n479"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2581" source="n487" target="n423"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2582" source="n488" target="n489"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2583" source="n488" target="n496"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2584" source="n488" target="n480"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2585" source="n488" target="n424"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2586" source="n489" target="n490"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2587" source="n489" target="n488"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2588" source="n489" target="n497"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2589" source="n489" target="n481"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2590" source="n489" target="n425"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2591" source="n490" target="n491"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2592" source="n490" target="n489"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2593" source="n490" target="n498"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2594" source="n490" target="n482"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2595" source="n490" target="n426"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2596" source="n491" target="n492"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2597" source="n491" target="n490"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2598" source="n491" target="n499"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2599" source="n491" target="n483"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2600" source="n491" target="n427"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2601" source="n492" target="n493"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2602" source="n492" target="n491"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2603" source="n492" target="n500"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2604" source="n492" target="n484"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2605" source="n492" target="n428"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2606" source="n493" target="n494"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2607" source="n493" target="n492"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2608" source="n493" target="n501"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2609" source="n493" target="n485"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2610" source="n493" target="n429"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2611" source="n494" target="n495"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2612" source="n494" target="n493"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2613" source="n494" target="n502"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2614" source="n494" target="n486"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2615" source="n494" target="n430"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2616" source="n495" target="n494"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2617" source="n495" target="n503"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2618" source="n495" target="n487"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2619" source="n495" target="n431"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2620" source="n496" target="n497"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2621" source="n496" target="n504"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2622" source="n496" target="n488"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2623" source="n496" target="n432"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2624" source="n497" target="n498"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2625" source="n497" target="n496"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2626" source="n497" target="n505"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2627" source="n497" target="n489"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2628" source="n497" target="n433"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2629" source="n498" target="n499"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2630" source="n498" target="n497"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2631" source="n498" target="n506"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2632" source="n498" target="n490"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2633" source="n498" target="n434"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2634" source="n499" target="n500"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2635" source="n499" target="n498"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2636" source="n499" target="n507"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2637" source="n499" target="n491"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2638" source="n499" target="n435"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2639" source="n500" target="n501"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2640" source="n500" target="n499"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2641" source="n500" target="n508"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2642" source="n500" target="n492"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2643" source="n500" target="n436"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2644" source="n501" target="n502"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2645" source="n501" target="n500"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2646" source="n501" target="n509"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2647" source="n501" target="n493"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2648" source="n501" target="n437"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2649" source="n502" target="n503"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2650" source="n502" target="n501"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2651" source="n502" target="n510"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2652" source="n502" target="n494"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2653" source="n502" target="n438"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2654" source="n503" target="n502"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2655" source="n503" target="n511"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2656" source="n503" target="n495"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2657" source="n503" target="n439"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2658" source="n504" target="n505"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2659" source="n504" target="n496"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2660" source="n504" target="n440"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2661" source="n505" target="n506"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2662" source="n505" target="n504"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2663" source="n505" target="n497"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2664" source="n505" target="n441"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2665" source="n506" target="n507"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2666" source="n506" target="n505"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2667" source="n506" target="n498"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2668" source="n506" target="n442"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2669" source="n507" target="n508"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2670" source="n507" target="n506"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2671" source="n507" target="n499"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2672" source="n507" target="n443"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2673" source="n508" target="n509"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2674" source="n508" target="n507"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2675" source="n508" target="n500"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2676" source="n508" target="n444"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2677" source="n509" target="n510"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2678" source="n509" target="n508"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2679" source="n509" target="n501"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2680" source="n509" target="n445"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2681" source="n510" target="n511"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2682" source="n510" target="n509"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2683" source="n510" target="n502"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2684" source="n510" target="n446"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2685" source="n511" target="n510"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2686" source="n511" target="n503"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +<edge id="e2687" source="n511" target="n447"> + <data key="ek0">0.000000</data> + <data key="ek1">0.000000</data> + <data key="ek2">0.000000</data> + <data key="ek3">0.000000</data> + <data key="ek4">0</data> + <data key="ek5">0</data> + <data key="ek6"></data> +</edge> +</graph> +</graphml> \ No newline at end of file diff --git a/test_data/vector_dist_24.h5 b/test_data/vector_dist_24.h5 new file mode 100644 index 0000000000000000000000000000000000000000..016650d4a39d830e6cb8b2c8579588cab0bc85ae Binary files /dev/null and b/test_data/vector_dist_24.h5 differ diff --git a/test_data/vtk_box_3D_2_test.vtk b/test_data/vtk_box_3D_2_test.vtk new file mode 100644 index 0000000000000000000000000000000000000000..962c243caa5554cba749ad7c57e19e99f1eee882 --- /dev/null +++ b/test_data/vtk_box_3D_2_test.vtk @@ -0,0 +1,145 @@ +# vtk DataFile Version 3.0 +Graph +ASCII +DATASET UNSTRUCTURED_GRID +POINTS 96 float +1.000000 0.500000 0.500000 +1.000000 0.500000 0.000000 +1.000000 0.200000 0.500000 +1.000000 0.200000 0.000000 +0.200000 0.500000 0.500000 +0.200000 0.500000 0.000000 +0.200000 0.200000 0.500000 +0.200000 0.200000 0.000000 +0.200000 0.200000 0.500000 +0.200000 0.200000 0.000000 +0.200000 0.000000 0.500000 +0.200000 0.000000 0.000000 +0.000000 0.200000 0.500000 +0.000000 0.200000 0.000000 +0.000000 0.000000 0.500000 +0.000000 0.000000 0.000000 +0.500000 0.200000 0.500000 +0.500000 0.200000 0.000000 +0.500000 0.000000 0.500000 +0.500000 0.000000 0.000000 +0.200000 0.200000 0.500000 +0.200000 0.200000 0.000000 +0.200000 0.000000 0.500000 +0.200000 0.000000 0.000000 +1.000000 0.200000 0.500000 +1.000000 0.200000 0.000000 +1.000000 0.000000 0.500000 +1.000000 0.000000 0.000000 +0.500000 0.200000 0.500000 +0.500000 0.200000 0.000000 +0.500000 0.000000 0.500000 +0.500000 0.000000 0.000000 +0.200000 0.500000 0.500000 +0.200000 0.500000 0.000000 +0.200000 0.200000 0.500000 +0.200000 0.200000 0.000000 +0.000000 0.500000 0.500000 +0.000000 0.500000 0.000000 +0.000000 0.200000 0.500000 +0.000000 0.200000 0.000000 +1.000000 1.000000 0.500000 +1.000000 1.000000 0.000000 +1.000000 0.500000 0.500000 +1.000000 0.500000 0.000000 +0.000000 1.000000 0.500000 +0.000000 1.000000 0.000000 +0.000000 0.500000 0.500000 +0.000000 0.500000 0.000000 +1.000000 0.500000 1.000000 +1.000000 0.500000 0.500000 +1.000000 0.200000 1.000000 +1.000000 0.200000 0.500000 +0.200000 0.500000 1.000000 +0.200000 0.500000 0.500000 +0.200000 0.200000 1.000000 +0.200000 0.200000 0.500000 +0.200000 0.200000 1.000000 +0.200000 0.200000 0.500000 +0.200000 0.000000 1.000000 +0.200000 0.000000 0.500000 +0.000000 0.200000 1.000000 +0.000000 0.200000 0.500000 +0.000000 0.000000 1.000000 +0.000000 0.000000 0.500000 +0.500000 0.200000 1.000000 +0.500000 0.200000 0.500000 +0.500000 0.000000 1.000000 +0.500000 0.000000 0.500000 +0.200000 0.200000 1.000000 +0.200000 0.200000 0.500000 +0.200000 0.000000 1.000000 +0.200000 0.000000 0.500000 +1.000000 0.200000 1.000000 +1.000000 0.200000 0.500000 +1.000000 0.000000 1.000000 +1.000000 0.000000 0.500000 +0.500000 0.200000 1.000000 +0.500000 0.200000 0.500000 +0.500000 0.000000 1.000000 +0.500000 0.000000 0.500000 +0.200000 0.500000 1.000000 +0.200000 0.500000 0.500000 +0.200000 0.200000 1.000000 +0.200000 0.200000 0.500000 +0.000000 0.500000 1.000000 +0.000000 0.500000 0.500000 +0.000000 0.200000 1.000000 +0.000000 0.200000 0.500000 +1.000000 1.000000 1.000000 +1.000000 1.000000 0.500000 +1.000000 0.500000 1.000000 +1.000000 0.500000 0.500000 +0.000000 1.000000 1.000000 +0.000000 1.000000 0.500000 +0.000000 0.500000 1.000000 +0.000000 0.500000 0.500000 +CELLS 12 108 +8 0 1 2 3 4 5 6 7 +8 8 9 10 11 12 13 14 15 +8 16 17 18 19 20 21 22 23 +8 24 25 26 27 28 29 30 31 +8 32 33 34 35 36 37 38 39 +8 40 41 42 43 44 45 46 47 + +8 48 49 50 51 52 53 54 55 +8 56 57 58 59 60 61 62 63 +8 64 65 66 67 68 69 70 71 +8 72 73 74 75 76 77 78 79 +8 80 81 82 83 84 85 86 87 +8 88 89 90 91 92 93 94 95 + +CELL_TYPES 12 +11 +11 +11 +11 +11 +11 +11 +11 +11 +11 +11 +11 +CELL_DATA 12 +COLOR_SCALARS data 4 +0.595560 0.000000 0.000000 1.0 +0.771386 0.000000 0.000000 1.0 +0.969554 0.000000 0.000000 1.0 +0.869033 0.000000 0.000000 1.0 +0.799516 0.000000 0.000000 1.0 +0.511738 0.000000 0.000000 1.0 + +0.000000 0.697585 0.000000 1.0 +0.000000 0.974377 0.000000 1.0 +0.000000 0.566741 0.000000 1.0 +0.000000 0.926485 0.000000 1.0 +0.000000 0.987427 0.000000 1.0 +0.000000 0.591356 0.000000 1.0 + diff --git a/test_data/vtk_box_3D_test.vtk b/test_data/vtk_box_3D_test.vtk new file mode 100644 index 0000000000000000000000000000000000000000..980304a73f66719820158482eb6a351a82227816 --- /dev/null +++ b/test_data/vtk_box_3D_test.vtk @@ -0,0 +1,77 @@ +# vtk DataFile Version 3.0 +Graph +ASCII +DATASET UNSTRUCTURED_GRID +POINTS 48 float +1.000000 0.500000 0.500000 +1.000000 0.500000 0.000000 +1.000000 0.200000 0.500000 +1.000000 0.200000 0.000000 +0.200000 0.500000 0.500000 +0.200000 0.500000 0.000000 +0.200000 0.200000 0.500000 +0.200000 0.200000 0.000000 +0.200000 0.200000 0.500000 +0.200000 0.200000 0.000000 +0.200000 0.000000 0.500000 +0.200000 0.000000 0.000000 +0.000000 0.200000 0.500000 +0.000000 0.200000 0.000000 +0.000000 0.000000 0.500000 +0.000000 0.000000 0.000000 +0.500000 0.200000 0.500000 +0.500000 0.200000 0.000000 +0.500000 0.000000 0.500000 +0.500000 0.000000 0.000000 +0.200000 0.200000 0.500000 +0.200000 0.200000 0.000000 +0.200000 0.000000 0.500000 +0.200000 0.000000 0.000000 +1.000000 0.200000 0.500000 +1.000000 0.200000 0.000000 +1.000000 0.000000 0.500000 +1.000000 0.000000 0.000000 +0.500000 0.200000 0.500000 +0.500000 0.200000 0.000000 +0.500000 0.000000 0.500000 +0.500000 0.000000 0.000000 +0.200000 0.500000 0.500000 +0.200000 0.500000 0.000000 +0.200000 0.200000 0.500000 +0.200000 0.200000 0.000000 +0.000000 0.500000 0.500000 +0.000000 0.500000 0.000000 +0.000000 0.200000 0.500000 +0.000000 0.200000 0.000000 +1.000000 1.000000 0.500000 +1.000000 1.000000 0.000000 +1.000000 0.500000 0.500000 +1.000000 0.500000 0.000000 +0.000000 1.000000 0.500000 +0.000000 1.000000 0.000000 +0.000000 0.500000 0.500000 +0.000000 0.500000 0.000000 +CELLS 6 54 +8 0 1 2 3 4 5 6 7 +8 8 9 10 11 12 13 14 15 +8 16 17 18 19 20 21 22 23 +8 24 25 26 27 28 29 30 31 +8 32 33 34 35 36 37 38 39 +8 40 41 42 43 44 45 46 47 + +CELL_TYPES 6 +11 +11 +11 +11 +11 +11 +CELL_DATA 6 +COLOR_SCALARS data 4 +0.595560 0.000000 0.000000 1.0 +0.771386 0.000000 0.000000 1.0 +0.969554 0.000000 0.000000 1.0 +0.869033 0.000000 0.000000 1.0 +0.799516 0.000000 0.000000 1.0 +0.511738 0.000000 0.000000 1.0 + diff --git a/test_data/vtk_box_test.vtk b/test_data/vtk_box_test.vtk new file mode 100644 index 0000000000000000000000000000000000000000..e8a1a70e32941cded7b1e5e4c7d964b77d8e27cf --- /dev/null +++ b/test_data/vtk_box_test.vtk @@ -0,0 +1,53 @@ +# vtk DataFile Version 3.0 +Graph +ASCII +DATASET UNSTRUCTURED_GRID +POINTS 24 float +1.000000 0.500000 0.0 +1.000000 0.200000 0.0 +0.200000 0.500000 0.0 +0.200000 0.200000 0.0 +0.200000 0.200000 0.0 +0.200000 0.000000 0.0 +0.000000 0.200000 0.0 +0.000000 0.000000 0.0 +0.500000 0.200000 0.0 +0.500000 0.000000 0.0 +0.200000 0.200000 0.0 +0.200000 0.000000 0.0 +1.000000 0.200000 0.0 +1.000000 0.000000 0.0 +0.500000 0.200000 0.0 +0.500000 0.000000 0.0 +0.200000 0.500000 0.0 +0.200000 0.200000 0.0 +0.000000 0.500000 0.0 +0.000000 0.200000 0.0 +1.000000 1.000000 0.0 +1.000000 0.500000 0.0 +0.000000 1.000000 0.0 +0.000000 0.500000 0.0 +CELLS 6 30 +4 0 1 2 3 +4 4 5 6 7 +4 8 9 10 11 +4 12 13 14 15 +4 16 17 18 19 +4 20 21 22 23 + +CELL_TYPES 6 +8 +8 +8 +8 +8 +8 +CELL_DATA 6 +COLOR_SCALARS data 4 +0.595560 0.000000 0.000000 1.0 +0.771386 0.000000 0.000000 1.0 +0.969554 0.000000 0.000000 1.0 +0.869033 0.000000 0.000000 1.0 +0.799516 0.000000 0.000000 1.0 +0.511738 0.000000 0.000000 1.0 + diff --git a/test_data/vtk_graph_test.vtk b/test_data/vtk_graph_test.vtk new file mode 100644 index 0000000000000000000000000000000000000000..70381888e9790b51068989b436beae7d47697c61 --- /dev/null +++ b/test_data/vtk_graph_test.vtk @@ -0,0 +1,509 @@ +# vtk DataFile Version 3.0 +Graph +ASCII +DATASET POLYDATA +POINTS 8 float +0.000000 0.000000 0.000000 +0.000000 0.000000 1.000000 +0.000000 1.000000 0.000000 +0.000000 1.000000 1.000000 +1.000000 0.000000 0.000000 +1.000000 0.000000 1.000000 +1.000000 1.000000 0.000000 +1.000000 1.000000 1.000000 +VERTICES 8 16 +1 0 +1 1 +1 2 +1 3 +1 4 +1 5 +1 6 +1 7 +LINES 36 108 +2 0 6 +2 0 2 +2 0 3 +2 0 1 +2 0 4 +2 0 5 +2 1 3 +2 1 0 +2 1 5 +2 1 7 +2 2 6 +2 2 0 +2 2 7 +2 2 3 +2 3 2 +2 3 0 +2 3 7 +2 3 1 +2 4 0 +2 4 6 +2 4 7 +2 4 5 +2 5 4 +2 5 0 +2 5 1 +2 5 7 +2 6 4 +2 6 0 +2 6 2 +2 6 7 +2 7 6 +2 7 2 +2 7 4 +2 7 5 +2 7 1 +2 7 3 +POINT_DATA 8 +SCALARS x float +LOOKUP_TABLE default +0.000000 +0.000000 +0.000000 +0.000000 +1.000000 +1.000000 +1.000000 +1.000000 +SCALARS y float +LOOKUP_TABLE default +0.000000 +0.000000 +1.000000 +1.000000 +0.000000 +0.000000 +1.000000 +1.000000 +SCALARS z float +LOOKUP_TABLE default +0.000000 +1.000000 +0.000000 +1.000000 +0.000000 +1.000000 +0.000000 +1.000000 +SCALARS prp1 float +LOOKUP_TABLE default +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +SCALARS prp2 unsigned_int +LOOKUP_TABLE default +0 +0 +0 +0 +0 +0 +0 +0 +SCALARS prp3 double +LOOKUP_TABLE default +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +SCALARS prp4 unsigned_char +LOOKUP_TABLE default +0 +0 +0 +0 +0 +0 +0 +0 +SCALARS prp5 int +LOOKUP_TABLE default +0 +0 +0 +0 +0 +0 +0 +0 +CELL_DATA 44 +SCALARS x float +LOOKUP_TABLE default +0 +0 +0 +0 +0 +0 +0 +0 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +SCALARS y float +LOOKUP_TABLE default +0 +0 +0 +0 +0 +0 +0 +0 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +SCALARS z float +LOOKUP_TABLE default +0 +0 +0 +0 +0 +0 +0 +0 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +SCALARS prp1 float +LOOKUP_TABLE default +0 +0 +0 +0 +0 +0 +0 +0 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +SCALARS prp2 unsigned_int +LOOKUP_TABLE default +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +SCALARS prp3 double +LOOKUP_TABLE default +0 +0 +0 +0 +0 +0 +0 +0 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +SCALARS prp4 unsigned_char +LOOKUP_TABLE default +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +SCALARS prp5 int +LOOKUP_TABLE default +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 diff --git a/test_data/vtk_graph_v2_test.vtk b/test_data/vtk_graph_v2_test.vtk new file mode 100644 index 0000000000000000000000000000000000000000..1aad699e246786556103a19bd63af7cc61123524 --- /dev/null +++ b/test_data/vtk_graph_v2_test.vtk @@ -0,0 +1,458 @@ +# vtk DataFile Version 3.0 +Graph +ASCII +DATASET POLYDATA +POINTS 8 float +0.000000 0.000000 0.000000 +0.000000 0.000000 1.000000 +0.000000 1.000000 0.000000 +0.000000 1.000000 1.000000 +1.000000 0.000000 0.000000 +1.000000 0.000000 1.000000 +1.000000 1.000000 0.000000 +1.000000 1.000000 1.000000 +VERTICES 8 16 +1 0 +1 1 +1 2 +1 3 +1 4 +1 5 +1 6 +1 7 +LINES 36 108 +2 0 6 +2 0 2 +2 0 3 +2 0 1 +2 0 4 +2 0 5 +2 1 3 +2 1 0 +2 1 5 +2 1 7 +2 2 6 +2 2 0 +2 2 7 +2 2 3 +2 3 2 +2 3 0 +2 3 7 +2 3 1 +2 4 0 +2 4 6 +2 4 7 +2 4 5 +2 5 4 +2 5 0 +2 5 1 +2 5 7 +2 6 4 +2 6 0 +2 6 2 +2 6 7 +2 7 6 +2 7 2 +2 7 4 +2 7 5 +2 7 1 +2 7 3 +POINT_DATA 8 +VECTORS x float +0.000000 0.000000 0.000000 +0.000000 0.000000 1.000000 +0.000000 1.000000 0.000000 +0.000000 1.000000 1.000000 +1.000000 0.000000 0.000000 +1.000000 0.000000 1.000000 +1.000000 1.000000 0.000000 +1.000000 1.000000 1.000000 +SCALARS prp1 unsigned_int +LOOKUP_TABLE default +0 +0 +0 +0 +0 +0 +0 +0 +SCALARS prp2 double +LOOKUP_TABLE default +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +CELL_DATA 44 +SCALARS x float +LOOKUP_TABLE default +0 +0 +0 +0 +0 +0 +0 +0 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +SCALARS y float +LOOKUP_TABLE default +0 +0 +0 +0 +0 +0 +0 +0 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +SCALARS z float +LOOKUP_TABLE default +0 +0 +0 +0 +0 +0 +0 +0 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +SCALARS prp1 float +LOOKUP_TABLE default +0 +0 +0 +0 +0 +0 +0 +0 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +SCALARS prp2 unsigned_int +LOOKUP_TABLE default +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +SCALARS prp3 double +LOOKUP_TABLE default +0 +0 +0 +0 +0 +0 +0 +0 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +SCALARS prp4 unsigned_char +LOOKUP_TABLE default +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +SCALARS prp5 int +LOOKUP_TABLE default +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 diff --git a/test_data/vtk_graph_v3_test.vtk b/test_data/vtk_graph_v3_test.vtk new file mode 100644 index 0000000000000000000000000000000000000000..e39bf864844b4439361778a94c5508b6d4587afb --- /dev/null +++ b/test_data/vtk_graph_v3_test.vtk @@ -0,0 +1,118 @@ +# vtk DataFile Version 3.0 +Graph +ASCII +DATASET POLYDATA +POINTS 4 float +0.000000 0.000000 0.000000 +0.000000 1.000000 0.000000 +1.000000 0.000000 0.000000 +1.000000 1.000000 0.000000 +VERTICES 4 8 +1 0 +1 1 +1 2 +1 3 +LINES 4 12 +2 0 1 +2 1 3 +2 2 0 +2 3 2 +POINT_DATA 4 +VECTORS x float +0.000000 0.000000 0 +0.000000 1.000000 0 +1.000000 0.000000 0 +1.000000 1.000000 0 +SCALARS prp1 unsigned_int +LOOKUP_TABLE default +0 +0 +0 +0 +SCALARS prp2 double +LOOKUP_TABLE default +0.000000 +0.000000 +0.000000 +0.000000 +CELL_DATA 8 +SCALARS x float +LOOKUP_TABLE default +0 +0 +0 +0 +0.000000 +0.000000 +0.000000 +0.000000 +SCALARS y float +LOOKUP_TABLE default +0 +0 +0 +0 +0.000000 +0.000000 +0.000000 +0.000000 +SCALARS z float +LOOKUP_TABLE default +0 +0 +0 +0 +0.000000 +0.000000 +0.000000 +0.000000 +SCALARS prp1 float +LOOKUP_TABLE default +0 +0 +0 +0 +0.000000 +0.000000 +0.000000 +0.000000 +SCALARS prp2 unsigned_int +LOOKUP_TABLE default +0 +0 +0 +0 +0 +0 +0 +0 +SCALARS prp3 double +LOOKUP_TABLE default +0 +0 +0 +0 +0.000000 +0.000000 +0.000000 +0.000000 +SCALARS prp4 unsigned_char +LOOKUP_TABLE default +0 +0 +0 +0 +0 +0 +0 +0 +SCALARS prp5 int +LOOKUP_TABLE default +0 +0 +0 +0 +0 +0 +0 +0 diff --git a/test_data/vtk_graph_v4_test.vtk b/test_data/vtk_graph_v4_test.vtk new file mode 100644 index 0000000000000000000000000000000000000000..f65cfa2932cbeed275fd9645a01c02ae7189b377 --- /dev/null +++ b/test_data/vtk_graph_v4_test.vtk @@ -0,0 +1,227 @@ +# vtk DataFile Version 3.0 +Graph +ASCII +DATASET POLYDATA +POINTS 8 float +0.000000 0.000000 0.000000 +0.000000 0.000000 1.000000 +0.000000 1.000000 0.000000 +0.000000 1.000000 1.000000 +1.000000 0.000000 0.000000 +1.000000 0.000000 1.000000 +1.000000 1.000000 0.000000 +1.000000 1.000000 1.000000 +VERTICES 8 16 +1 0 +1 1 +1 2 +1 3 +1 4 +1 5 +1 6 +1 7 +LINES 36 108 +2 0 6 +2 0 2 +2 0 3 +2 0 1 +2 0 4 +2 0 5 +2 1 3 +2 1 0 +2 1 5 +2 1 7 +2 2 6 +2 2 0 +2 2 7 +2 2 3 +2 3 2 +2 3 0 +2 3 7 +2 3 1 +2 4 0 +2 4 6 +2 4 7 +2 4 5 +2 5 4 +2 5 0 +2 5 1 +2 5 7 +2 6 4 +2 6 0 +2 6 2 +2 6 7 +2 7 6 +2 7 2 +2 7 4 +2 7 5 +2 7 1 +2 7 3 +POINT_DATA 8 +VECTORS x float +0.000000 0.000000 0.000000 +0.000000 0.000000 1.000000 +0.000000 1.000000 0.000000 +0.000000 1.000000 1.000000 +1.000000 0.000000 0.000000 +1.000000 0.000000 1.000000 +1.000000 1.000000 0.000000 +1.000000 1.000000 1.000000 +SCALARS prp1 unsigned_int +LOOKUP_TABLE default +0 +0 +0 +0 +0 +0 +0 +0 +SCALARS prp2 double +LOOKUP_TABLE default +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +CELL_DATA 44 +VECTORS x float +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0.000000 0.000000 1.000000 +0.000000 0.000000 1.000000 +0.000000 0.000000 1.000000 +0.000000 0.000000 1.000000 +0.000000 0.000000 1.000000 +0.000000 0.000000 1.000000 +0.000000 0.000000 1.000000 +0.000000 0.000000 1.000000 +0.000000 0.000000 1.000000 +0.000000 0.000000 1.000000 +0.000000 0.000000 1.000000 +0.000000 0.000000 1.000000 +0.000000 0.000000 1.000000 +0.000000 0.000000 1.000000 +0.000000 0.000000 1.000000 +0.000000 0.000000 1.000000 +0.000000 0.000000 1.000000 +0.000000 0.000000 1.000000 +0.000000 0.000000 1.000000 +0.000000 0.000000 1.000000 +0.000000 0.000000 1.000000 +0.000000 0.000000 1.000000 +0.000000 0.000000 1.000000 +0.000000 0.000000 1.000000 +0.000000 0.000000 1.000000 +0.000000 0.000000 1.000000 +0.000000 0.000000 1.000000 +0.000000 0.000000 1.000000 +0.000000 0.000000 1.000000 +0.000000 0.000000 1.000000 +0.000000 0.000000 1.000000 +0.000000 0.000000 1.000000 +0.000000 0.000000 1.000000 +0.000000 0.000000 1.000000 +0.000000 0.000000 1.000000 +0.000000 0.000000 1.000000 +SCALARS prp1 unsigned_int +LOOKUP_TABLE default +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +SCALARS prp2 double +LOOKUP_TABLE default +0 +0 +0 +0 +0 +0 +0 +0 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 diff --git a/test_data/vtk_grids_prp_test.vtk b/test_data/vtk_grids_prp_test.vtk new file mode 100644 index 0000000000000000000000000000000000000000..4bb0f0447ab7d3c80c4a03275327bd73216b95c3 --- /dev/null +++ b/test_data/vtk_grids_prp_test.vtk @@ -0,0 +1,7185 @@ +# vtk DataFile Version 3.0 +grids +ASCII +DATASET POLYDATA +POINTS 1024 float +0 0 0.0 +0.1 0 0.0 +0.2 0 0.0 +0.3 0 0.0 +0.4 0 0.0 +0.5 0 0.0 +0.6 0 0.0 +0.7 0 0.0 +0.8 0 0.0 +0.9 0 0.0 +1 0 0.0 +1.1 0 0.0 +1.2 0 0.0 +1.3 0 0.0 +1.4 0 0.0 +1.5 0 0.0 +0 0.1 0.0 +0.1 0.1 0.0 +0.2 0.1 0.0 +0.3 0.1 0.0 +0.4 0.1 0.0 +0.5 0.1 0.0 +0.6 0.1 0.0 +0.7 0.1 0.0 +0.8 0.1 0.0 +0.9 0.1 0.0 +1 0.1 0.0 +1.1 0.1 0.0 +1.2 0.1 0.0 +1.3 0.1 0.0 +1.4 0.1 0.0 +1.5 0.1 0.0 +0 0.2 0.0 +0.1 0.2 0.0 +0.2 0.2 0.0 +0.3 0.2 0.0 +0.4 0.2 0.0 +0.5 0.2 0.0 +0.6 0.2 0.0 +0.7 0.2 0.0 +0.8 0.2 0.0 +0.9 0.2 0.0 +1 0.2 0.0 +1.1 0.2 0.0 +1.2 0.2 0.0 +1.3 0.2 0.0 +1.4 0.2 0.0 +1.5 0.2 0.0 +0 0.3 0.0 +0.1 0.3 0.0 +0.2 0.3 0.0 +0.3 0.3 0.0 +0.4 0.3 0.0 +0.5 0.3 0.0 +0.6 0.3 0.0 +0.7 0.3 0.0 +0.8 0.3 0.0 +0.9 0.3 0.0 +1 0.3 0.0 +1.1 0.3 0.0 +1.2 0.3 0.0 +1.3 0.3 0.0 +1.4 0.3 0.0 +1.5 0.3 0.0 +0 0.4 0.0 +0.1 0.4 0.0 +0.2 0.4 0.0 +0.3 0.4 0.0 +0.4 0.4 0.0 +0.5 0.4 0.0 +0.6 0.4 0.0 +0.7 0.4 0.0 +0.8 0.4 0.0 +0.9 0.4 0.0 +1 0.4 0.0 +1.1 0.4 0.0 +1.2 0.4 0.0 +1.3 0.4 0.0 +1.4 0.4 0.0 +1.5 0.4 0.0 +0 0.5 0.0 +0.1 0.5 0.0 +0.2 0.5 0.0 +0.3 0.5 0.0 +0.4 0.5 0.0 +0.5 0.5 0.0 +0.6 0.5 0.0 +0.7 0.5 0.0 +0.8 0.5 0.0 +0.9 0.5 0.0 +1 0.5 0.0 +1.1 0.5 0.0 +1.2 0.5 0.0 +1.3 0.5 0.0 +1.4 0.5 0.0 +1.5 0.5 0.0 +0 0.6 0.0 +0.1 0.6 0.0 +0.2 0.6 0.0 +0.3 0.6 0.0 +0.4 0.6 0.0 +0.5 0.6 0.0 +0.6 0.6 0.0 +0.7 0.6 0.0 +0.8 0.6 0.0 +0.9 0.6 0.0 +1 0.6 0.0 +1.1 0.6 0.0 +1.2 0.6 0.0 +1.3 0.6 0.0 +1.4 0.6 0.0 +1.5 0.6 0.0 +0 0.7 0.0 +0.1 0.7 0.0 +0.2 0.7 0.0 +0.3 0.7 0.0 +0.4 0.7 0.0 +0.5 0.7 0.0 +0.6 0.7 0.0 +0.7 0.7 0.0 +0.8 0.7 0.0 +0.9 0.7 0.0 +1 0.7 0.0 +1.1 0.7 0.0 +1.2 0.7 0.0 +1.3 0.7 0.0 +1.4 0.7 0.0 +1.5 0.7 0.0 +0 0.8 0.0 +0.1 0.8 0.0 +0.2 0.8 0.0 +0.3 0.8 0.0 +0.4 0.8 0.0 +0.5 0.8 0.0 +0.6 0.8 0.0 +0.7 0.8 0.0 +0.8 0.8 0.0 +0.9 0.8 0.0 +1 0.8 0.0 +1.1 0.8 0.0 +1.2 0.8 0.0 +1.3 0.8 0.0 +1.4 0.8 0.0 +1.5 0.8 0.0 +0 0.9 0.0 +0.1 0.9 0.0 +0.2 0.9 0.0 +0.3 0.9 0.0 +0.4 0.9 0.0 +0.5 0.9 0.0 +0.6 0.9 0.0 +0.7 0.9 0.0 +0.8 0.9 0.0 +0.9 0.9 0.0 +1 0.9 0.0 +1.1 0.9 0.0 +1.2 0.9 0.0 +1.3 0.9 0.0 +1.4 0.9 0.0 +1.5 0.9 0.0 +0 1 0.0 +0.1 1 0.0 +0.2 1 0.0 +0.3 1 0.0 +0.4 1 0.0 +0.5 1 0.0 +0.6 1 0.0 +0.7 1 0.0 +0.8 1 0.0 +0.9 1 0.0 +1 1 0.0 +1.1 1 0.0 +1.2 1 0.0 +1.3 1 0.0 +1.4 1 0.0 +1.5 1 0.0 +0 1.1 0.0 +0.1 1.1 0.0 +0.2 1.1 0.0 +0.3 1.1 0.0 +0.4 1.1 0.0 +0.5 1.1 0.0 +0.6 1.1 0.0 +0.7 1.1 0.0 +0.8 1.1 0.0 +0.9 1.1 0.0 +1 1.1 0.0 +1.1 1.1 0.0 +1.2 1.1 0.0 +1.3 1.1 0.0 +1.4 1.1 0.0 +1.5 1.1 0.0 +0 1.2 0.0 +0.1 1.2 0.0 +0.2 1.2 0.0 +0.3 1.2 0.0 +0.4 1.2 0.0 +0.5 1.2 0.0 +0.6 1.2 0.0 +0.7 1.2 0.0 +0.8 1.2 0.0 +0.9 1.2 0.0 +1 1.2 0.0 +1.1 1.2 0.0 +1.2 1.2 0.0 +1.3 1.2 0.0 +1.4 1.2 0.0 +1.5 1.2 0.0 +0 1.3 0.0 +0.1 1.3 0.0 +0.2 1.3 0.0 +0.3 1.3 0.0 +0.4 1.3 0.0 +0.5 1.3 0.0 +0.6 1.3 0.0 +0.7 1.3 0.0 +0.8 1.3 0.0 +0.9 1.3 0.0 +1 1.3 0.0 +1.1 1.3 0.0 +1.2 1.3 0.0 +1.3 1.3 0.0 +1.4 1.3 0.0 +1.5 1.3 0.0 +0 1.4 0.0 +0.1 1.4 0.0 +0.2 1.4 0.0 +0.3 1.4 0.0 +0.4 1.4 0.0 +0.5 1.4 0.0 +0.6 1.4 0.0 +0.7 1.4 0.0 +0.8 1.4 0.0 +0.9 1.4 0.0 +1 1.4 0.0 +1.1 1.4 0.0 +1.2 1.4 0.0 +1.3 1.4 0.0 +1.4 1.4 0.0 +1.5 1.4 0.0 +0 1.5 0.0 +0.1 1.5 0.0 +0.2 1.5 0.0 +0.3 1.5 0.0 +0.4 1.5 0.0 +0.5 1.5 0.0 +0.6 1.5 0.0 +0.7 1.5 0.0 +0.8 1.5 0.0 +0.9 1.5 0.0 +1 1.5 0.0 +1.1 1.5 0.0 +1.2 1.5 0.0 +1.3 1.5 0.0 +1.4 1.5 0.0 +1.5 1.5 0.0 +0 0 0.0 +0.1 0 0.0 +0.2 0 0.0 +0.3 0 0.0 +0.4 0 0.0 +0.5 0 0.0 +0.6 0 0.0 +0.7 0 0.0 +0.8 0 0.0 +0.9 0 0.0 +1 0 0.0 +1.1 0 0.0 +1.2 0 0.0 +1.3 0 0.0 +1.4 0 0.0 +1.5 0 0.0 +0 0.1 0.0 +0.1 0.1 0.0 +0.2 0.1 0.0 +0.3 0.1 0.0 +0.4 0.1 0.0 +0.5 0.1 0.0 +0.6 0.1 0.0 +0.7 0.1 0.0 +0.8 0.1 0.0 +0.9 0.1 0.0 +1 0.1 0.0 +1.1 0.1 0.0 +1.2 0.1 0.0 +1.3 0.1 0.0 +1.4 0.1 0.0 +1.5 0.1 0.0 +0 0.2 0.0 +0.1 0.2 0.0 +0.2 0.2 0.0 +0.3 0.2 0.0 +0.4 0.2 0.0 +0.5 0.2 0.0 +0.6 0.2 0.0 +0.7 0.2 0.0 +0.8 0.2 0.0 +0.9 0.2 0.0 +1 0.2 0.0 +1.1 0.2 0.0 +1.2 0.2 0.0 +1.3 0.2 0.0 +1.4 0.2 0.0 +1.5 0.2 0.0 +0 0.3 0.0 +0.1 0.3 0.0 +0.2 0.3 0.0 +0.3 0.3 0.0 +0.4 0.3 0.0 +0.5 0.3 0.0 +0.6 0.3 0.0 +0.7 0.3 0.0 +0.8 0.3 0.0 +0.9 0.3 0.0 +1 0.3 0.0 +1.1 0.3 0.0 +1.2 0.3 0.0 +1.3 0.3 0.0 +1.4 0.3 0.0 +1.5 0.3 0.0 +0 0.4 0.0 +0.1 0.4 0.0 +0.2 0.4 0.0 +0.3 0.4 0.0 +0.4 0.4 0.0 +0.5 0.4 0.0 +0.6 0.4 0.0 +0.7 0.4 0.0 +0.8 0.4 0.0 +0.9 0.4 0.0 +1 0.4 0.0 +1.1 0.4 0.0 +1.2 0.4 0.0 +1.3 0.4 0.0 +1.4 0.4 0.0 +1.5 0.4 0.0 +0 0.5 0.0 +0.1 0.5 0.0 +0.2 0.5 0.0 +0.3 0.5 0.0 +0.4 0.5 0.0 +0.5 0.5 0.0 +0.6 0.5 0.0 +0.7 0.5 0.0 +0.8 0.5 0.0 +0.9 0.5 0.0 +1 0.5 0.0 +1.1 0.5 0.0 +1.2 0.5 0.0 +1.3 0.5 0.0 +1.4 0.5 0.0 +1.5 0.5 0.0 +0 0.6 0.0 +0.1 0.6 0.0 +0.2 0.6 0.0 +0.3 0.6 0.0 +0.4 0.6 0.0 +0.5 0.6 0.0 +0.6 0.6 0.0 +0.7 0.6 0.0 +0.8 0.6 0.0 +0.9 0.6 0.0 +1 0.6 0.0 +1.1 0.6 0.0 +1.2 0.6 0.0 +1.3 0.6 0.0 +1.4 0.6 0.0 +1.5 0.6 0.0 +0 0.7 0.0 +0.1 0.7 0.0 +0.2 0.7 0.0 +0.3 0.7 0.0 +0.4 0.7 0.0 +0.5 0.7 0.0 +0.6 0.7 0.0 +0.7 0.7 0.0 +0.8 0.7 0.0 +0.9 0.7 0.0 +1 0.7 0.0 +1.1 0.7 0.0 +1.2 0.7 0.0 +1.3 0.7 0.0 +1.4 0.7 0.0 +1.5 0.7 0.0 +0 0.8 0.0 +0.1 0.8 0.0 +0.2 0.8 0.0 +0.3 0.8 0.0 +0.4 0.8 0.0 +0.5 0.8 0.0 +0.6 0.8 0.0 +0.7 0.8 0.0 +0.8 0.8 0.0 +0.9 0.8 0.0 +1 0.8 0.0 +1.1 0.8 0.0 +1.2 0.8 0.0 +1.3 0.8 0.0 +1.4 0.8 0.0 +1.5 0.8 0.0 +0 0.9 0.0 +0.1 0.9 0.0 +0.2 0.9 0.0 +0.3 0.9 0.0 +0.4 0.9 0.0 +0.5 0.9 0.0 +0.6 0.9 0.0 +0.7 0.9 0.0 +0.8 0.9 0.0 +0.9 0.9 0.0 +1 0.9 0.0 +1.1 0.9 0.0 +1.2 0.9 0.0 +1.3 0.9 0.0 +1.4 0.9 0.0 +1.5 0.9 0.0 +0 1 0.0 +0.1 1 0.0 +0.2 1 0.0 +0.3 1 0.0 +0.4 1 0.0 +0.5 1 0.0 +0.6 1 0.0 +0.7 1 0.0 +0.8 1 0.0 +0.9 1 0.0 +1 1 0.0 +1.1 1 0.0 +1.2 1 0.0 +1.3 1 0.0 +1.4 1 0.0 +1.5 1 0.0 +0 1.1 0.0 +0.1 1.1 0.0 +0.2 1.1 0.0 +0.3 1.1 0.0 +0.4 1.1 0.0 +0.5 1.1 0.0 +0.6 1.1 0.0 +0.7 1.1 0.0 +0.8 1.1 0.0 +0.9 1.1 0.0 +1 1.1 0.0 +1.1 1.1 0.0 +1.2 1.1 0.0 +1.3 1.1 0.0 +1.4 1.1 0.0 +1.5 1.1 0.0 +0 1.2 0.0 +0.1 1.2 0.0 +0.2 1.2 0.0 +0.3 1.2 0.0 +0.4 1.2 0.0 +0.5 1.2 0.0 +0.6 1.2 0.0 +0.7 1.2 0.0 +0.8 1.2 0.0 +0.9 1.2 0.0 +1 1.2 0.0 +1.1 1.2 0.0 +1.2 1.2 0.0 +1.3 1.2 0.0 +1.4 1.2 0.0 +1.5 1.2 0.0 +0 1.3 0.0 +0.1 1.3 0.0 +0.2 1.3 0.0 +0.3 1.3 0.0 +0.4 1.3 0.0 +0.5 1.3 0.0 +0.6 1.3 0.0 +0.7 1.3 0.0 +0.8 1.3 0.0 +0.9 1.3 0.0 +1 1.3 0.0 +1.1 1.3 0.0 +1.2 1.3 0.0 +1.3 1.3 0.0 +1.4 1.3 0.0 +1.5 1.3 0.0 +0 1.4 0.0 +0.1 1.4 0.0 +0.2 1.4 0.0 +0.3 1.4 0.0 +0.4 1.4 0.0 +0.5 1.4 0.0 +0.6 1.4 0.0 +0.7 1.4 0.0 +0.8 1.4 0.0 +0.9 1.4 0.0 +1 1.4 0.0 +1.1 1.4 0.0 +1.2 1.4 0.0 +1.3 1.4 0.0 +1.4 1.4 0.0 +1.5 1.4 0.0 +0 1.5 0.0 +0.1 1.5 0.0 +0.2 1.5 0.0 +0.3 1.5 0.0 +0.4 1.5 0.0 +0.5 1.5 0.0 +0.6 1.5 0.0 +0.7 1.5 0.0 +0.8 1.5 0.0 +0.9 1.5 0.0 +1 1.5 0.0 +1.1 1.5 0.0 +1.2 1.5 0.0 +1.3 1.5 0.0 +1.4 1.5 0.0 +1.5 1.5 0.0 +5 5 0.0 +5.1 5 0.0 +5.2 5 0.0 +5.3 5 0.0 +5.4 5 0.0 +5.5 5 0.0 +5.6 5 0.0 +5.7 5 0.0 +5.8 5 0.0 +5.9 5 0.0 +6 5 0.0 +6.1 5 0.0 +6.2 5 0.0 +6.3 5 0.0 +6.4 5 0.0 +6.5 5 0.0 +5 5.1 0.0 +5.1 5.1 0.0 +5.2 5.1 0.0 +5.3 5.1 0.0 +5.4 5.1 0.0 +5.5 5.1 0.0 +5.6 5.1 0.0 +5.7 5.1 0.0 +5.8 5.1 0.0 +5.9 5.1 0.0 +6 5.1 0.0 +6.1 5.1 0.0 +6.2 5.1 0.0 +6.3 5.1 0.0 +6.4 5.1 0.0 +6.5 5.1 0.0 +5 5.2 0.0 +5.1 5.2 0.0 +5.2 5.2 0.0 +5.3 5.2 0.0 +5.4 5.2 0.0 +5.5 5.2 0.0 +5.6 5.2 0.0 +5.7 5.2 0.0 +5.8 5.2 0.0 +5.9 5.2 0.0 +6 5.2 0.0 +6.1 5.2 0.0 +6.2 5.2 0.0 +6.3 5.2 0.0 +6.4 5.2 0.0 +6.5 5.2 0.0 +5 5.3 0.0 +5.1 5.3 0.0 +5.2 5.3 0.0 +5.3 5.3 0.0 +5.4 5.3 0.0 +5.5 5.3 0.0 +5.6 5.3 0.0 +5.7 5.3 0.0 +5.8 5.3 0.0 +5.9 5.3 0.0 +6 5.3 0.0 +6.1 5.3 0.0 +6.2 5.3 0.0 +6.3 5.3 0.0 +6.4 5.3 0.0 +6.5 5.3 0.0 +5 5.4 0.0 +5.1 5.4 0.0 +5.2 5.4 0.0 +5.3 5.4 0.0 +5.4 5.4 0.0 +5.5 5.4 0.0 +5.6 5.4 0.0 +5.7 5.4 0.0 +5.8 5.4 0.0 +5.9 5.4 0.0 +6 5.4 0.0 +6.1 5.4 0.0 +6.2 5.4 0.0 +6.3 5.4 0.0 +6.4 5.4 0.0 +6.5 5.4 0.0 +5 5.5 0.0 +5.1 5.5 0.0 +5.2 5.5 0.0 +5.3 5.5 0.0 +5.4 5.5 0.0 +5.5 5.5 0.0 +5.6 5.5 0.0 +5.7 5.5 0.0 +5.8 5.5 0.0 +5.9 5.5 0.0 +6 5.5 0.0 +6.1 5.5 0.0 +6.2 5.5 0.0 +6.3 5.5 0.0 +6.4 5.5 0.0 +6.5 5.5 0.0 +5 5.6 0.0 +5.1 5.6 0.0 +5.2 5.6 0.0 +5.3 5.6 0.0 +5.4 5.6 0.0 +5.5 5.6 0.0 +5.6 5.6 0.0 +5.7 5.6 0.0 +5.8 5.6 0.0 +5.9 5.6 0.0 +6 5.6 0.0 +6.1 5.6 0.0 +6.2 5.6 0.0 +6.3 5.6 0.0 +6.4 5.6 0.0 +6.5 5.6 0.0 +5 5.7 0.0 +5.1 5.7 0.0 +5.2 5.7 0.0 +5.3 5.7 0.0 +5.4 5.7 0.0 +5.5 5.7 0.0 +5.6 5.7 0.0 +5.7 5.7 0.0 +5.8 5.7 0.0 +5.9 5.7 0.0 +6 5.7 0.0 +6.1 5.7 0.0 +6.2 5.7 0.0 +6.3 5.7 0.0 +6.4 5.7 0.0 +6.5 5.7 0.0 +5 5.8 0.0 +5.1 5.8 0.0 +5.2 5.8 0.0 +5.3 5.8 0.0 +5.4 5.8 0.0 +5.5 5.8 0.0 +5.6 5.8 0.0 +5.7 5.8 0.0 +5.8 5.8 0.0 +5.9 5.8 0.0 +6 5.8 0.0 +6.1 5.8 0.0 +6.2 5.8 0.0 +6.3 5.8 0.0 +6.4 5.8 0.0 +6.5 5.8 0.0 +5 5.9 0.0 +5.1 5.9 0.0 +5.2 5.9 0.0 +5.3 5.9 0.0 +5.4 5.9 0.0 +5.5 5.9 0.0 +5.6 5.9 0.0 +5.7 5.9 0.0 +5.8 5.9 0.0 +5.9 5.9 0.0 +6 5.9 0.0 +6.1 5.9 0.0 +6.2 5.9 0.0 +6.3 5.9 0.0 +6.4 5.9 0.0 +6.5 5.9 0.0 +5 6 0.0 +5.1 6 0.0 +5.2 6 0.0 +5.3 6 0.0 +5.4 6 0.0 +5.5 6 0.0 +5.6 6 0.0 +5.7 6 0.0 +5.8 6 0.0 +5.9 6 0.0 +6 6 0.0 +6.1 6 0.0 +6.2 6 0.0 +6.3 6 0.0 +6.4 6 0.0 +6.5 6 0.0 +5 6.1 0.0 +5.1 6.1 0.0 +5.2 6.1 0.0 +5.3 6.1 0.0 +5.4 6.1 0.0 +5.5 6.1 0.0 +5.6 6.1 0.0 +5.7 6.1 0.0 +5.8 6.1 0.0 +5.9 6.1 0.0 +6 6.1 0.0 +6.1 6.1 0.0 +6.2 6.1 0.0 +6.3 6.1 0.0 +6.4 6.1 0.0 +6.5 6.1 0.0 +5 6.2 0.0 +5.1 6.2 0.0 +5.2 6.2 0.0 +5.3 6.2 0.0 +5.4 6.2 0.0 +5.5 6.2 0.0 +5.6 6.2 0.0 +5.7 6.2 0.0 +5.8 6.2 0.0 +5.9 6.2 0.0 +6 6.2 0.0 +6.1 6.2 0.0 +6.2 6.2 0.0 +6.3 6.2 0.0 +6.4 6.2 0.0 +6.5 6.2 0.0 +5 6.3 0.0 +5.1 6.3 0.0 +5.2 6.3 0.0 +5.3 6.3 0.0 +5.4 6.3 0.0 +5.5 6.3 0.0 +5.6 6.3 0.0 +5.7 6.3 0.0 +5.8 6.3 0.0 +5.9 6.3 0.0 +6 6.3 0.0 +6.1 6.3 0.0 +6.2 6.3 0.0 +6.3 6.3 0.0 +6.4 6.3 0.0 +6.5 6.3 0.0 +5 6.4 0.0 +5.1 6.4 0.0 +5.2 6.4 0.0 +5.3 6.4 0.0 +5.4 6.4 0.0 +5.5 6.4 0.0 +5.6 6.4 0.0 +5.7 6.4 0.0 +5.8 6.4 0.0 +5.9 6.4 0.0 +6 6.4 0.0 +6.1 6.4 0.0 +6.2 6.4 0.0 +6.3 6.4 0.0 +6.4 6.4 0.0 +6.5 6.4 0.0 +5 6.5 0.0 +5.1 6.5 0.0 +5.2 6.5 0.0 +5.3 6.5 0.0 +5.4 6.5 0.0 +5.5 6.5 0.0 +5.6 6.5 0.0 +5.7 6.5 0.0 +5.8 6.5 0.0 +5.9 6.5 0.0 +6 6.5 0.0 +6.1 6.5 0.0 +6.2 6.5 0.0 +6.3 6.5 0.0 +6.4 6.5 0.0 +6.5 6.5 0.0 +5 5 0.0 +5.1 5 0.0 +5.2 5 0.0 +5.3 5 0.0 +5.4 5 0.0 +5.5 5 0.0 +5.6 5 0.0 +5.7 5 0.0 +5.8 5 0.0 +5.9 5 0.0 +6 5 0.0 +6.1 5 0.0 +6.2 5 0.0 +6.3 5 0.0 +6.4 5 0.0 +6.5 5 0.0 +5 5.1 0.0 +5.1 5.1 0.0 +5.2 5.1 0.0 +5.3 5.1 0.0 +5.4 5.1 0.0 +5.5 5.1 0.0 +5.6 5.1 0.0 +5.7 5.1 0.0 +5.8 5.1 0.0 +5.9 5.1 0.0 +6 5.1 0.0 +6.1 5.1 0.0 +6.2 5.1 0.0 +6.3 5.1 0.0 +6.4 5.1 0.0 +6.5 5.1 0.0 +5 5.2 0.0 +5.1 5.2 0.0 +5.2 5.2 0.0 +5.3 5.2 0.0 +5.4 5.2 0.0 +5.5 5.2 0.0 +5.6 5.2 0.0 +5.7 5.2 0.0 +5.8 5.2 0.0 +5.9 5.2 0.0 +6 5.2 0.0 +6.1 5.2 0.0 +6.2 5.2 0.0 +6.3 5.2 0.0 +6.4 5.2 0.0 +6.5 5.2 0.0 +5 5.3 0.0 +5.1 5.3 0.0 +5.2 5.3 0.0 +5.3 5.3 0.0 +5.4 5.3 0.0 +5.5 5.3 0.0 +5.6 5.3 0.0 +5.7 5.3 0.0 +5.8 5.3 0.0 +5.9 5.3 0.0 +6 5.3 0.0 +6.1 5.3 0.0 +6.2 5.3 0.0 +6.3 5.3 0.0 +6.4 5.3 0.0 +6.5 5.3 0.0 +5 5.4 0.0 +5.1 5.4 0.0 +5.2 5.4 0.0 +5.3 5.4 0.0 +5.4 5.4 0.0 +5.5 5.4 0.0 +5.6 5.4 0.0 +5.7 5.4 0.0 +5.8 5.4 0.0 +5.9 5.4 0.0 +6 5.4 0.0 +6.1 5.4 0.0 +6.2 5.4 0.0 +6.3 5.4 0.0 +6.4 5.4 0.0 +6.5 5.4 0.0 +5 5.5 0.0 +5.1 5.5 0.0 +5.2 5.5 0.0 +5.3 5.5 0.0 +5.4 5.5 0.0 +5.5 5.5 0.0 +5.6 5.5 0.0 +5.7 5.5 0.0 +5.8 5.5 0.0 +5.9 5.5 0.0 +6 5.5 0.0 +6.1 5.5 0.0 +6.2 5.5 0.0 +6.3 5.5 0.0 +6.4 5.5 0.0 +6.5 5.5 0.0 +5 5.6 0.0 +5.1 5.6 0.0 +5.2 5.6 0.0 +5.3 5.6 0.0 +5.4 5.6 0.0 +5.5 5.6 0.0 +5.6 5.6 0.0 +5.7 5.6 0.0 +5.8 5.6 0.0 +5.9 5.6 0.0 +6 5.6 0.0 +6.1 5.6 0.0 +6.2 5.6 0.0 +6.3 5.6 0.0 +6.4 5.6 0.0 +6.5 5.6 0.0 +5 5.7 0.0 +5.1 5.7 0.0 +5.2 5.7 0.0 +5.3 5.7 0.0 +5.4 5.7 0.0 +5.5 5.7 0.0 +5.6 5.7 0.0 +5.7 5.7 0.0 +5.8 5.7 0.0 +5.9 5.7 0.0 +6 5.7 0.0 +6.1 5.7 0.0 +6.2 5.7 0.0 +6.3 5.7 0.0 +6.4 5.7 0.0 +6.5 5.7 0.0 +5 5.8 0.0 +5.1 5.8 0.0 +5.2 5.8 0.0 +5.3 5.8 0.0 +5.4 5.8 0.0 +5.5 5.8 0.0 +5.6 5.8 0.0 +5.7 5.8 0.0 +5.8 5.8 0.0 +5.9 5.8 0.0 +6 5.8 0.0 +6.1 5.8 0.0 +6.2 5.8 0.0 +6.3 5.8 0.0 +6.4 5.8 0.0 +6.5 5.8 0.0 +5 5.9 0.0 +5.1 5.9 0.0 +5.2 5.9 0.0 +5.3 5.9 0.0 +5.4 5.9 0.0 +5.5 5.9 0.0 +5.6 5.9 0.0 +5.7 5.9 0.0 +5.8 5.9 0.0 +5.9 5.9 0.0 +6 5.9 0.0 +6.1 5.9 0.0 +6.2 5.9 0.0 +6.3 5.9 0.0 +6.4 5.9 0.0 +6.5 5.9 0.0 +5 6 0.0 +5.1 6 0.0 +5.2 6 0.0 +5.3 6 0.0 +5.4 6 0.0 +5.5 6 0.0 +5.6 6 0.0 +5.7 6 0.0 +5.8 6 0.0 +5.9 6 0.0 +6 6 0.0 +6.1 6 0.0 +6.2 6 0.0 +6.3 6 0.0 +6.4 6 0.0 +6.5 6 0.0 +5 6.1 0.0 +5.1 6.1 0.0 +5.2 6.1 0.0 +5.3 6.1 0.0 +5.4 6.1 0.0 +5.5 6.1 0.0 +5.6 6.1 0.0 +5.7 6.1 0.0 +5.8 6.1 0.0 +5.9 6.1 0.0 +6 6.1 0.0 +6.1 6.1 0.0 +6.2 6.1 0.0 +6.3 6.1 0.0 +6.4 6.1 0.0 +6.5 6.1 0.0 +5 6.2 0.0 +5.1 6.2 0.0 +5.2 6.2 0.0 +5.3 6.2 0.0 +5.4 6.2 0.0 +5.5 6.2 0.0 +5.6 6.2 0.0 +5.7 6.2 0.0 +5.8 6.2 0.0 +5.9 6.2 0.0 +6 6.2 0.0 +6.1 6.2 0.0 +6.2 6.2 0.0 +6.3 6.2 0.0 +6.4 6.2 0.0 +6.5 6.2 0.0 +5 6.3 0.0 +5.1 6.3 0.0 +5.2 6.3 0.0 +5.3 6.3 0.0 +5.4 6.3 0.0 +5.5 6.3 0.0 +5.6 6.3 0.0 +5.7 6.3 0.0 +5.8 6.3 0.0 +5.9 6.3 0.0 +6 6.3 0.0 +6.1 6.3 0.0 +6.2 6.3 0.0 +6.3 6.3 0.0 +6.4 6.3 0.0 +6.5 6.3 0.0 +5 6.4 0.0 +5.1 6.4 0.0 +5.2 6.4 0.0 +5.3 6.4 0.0 +5.4 6.4 0.0 +5.5 6.4 0.0 +5.6 6.4 0.0 +5.7 6.4 0.0 +5.8 6.4 0.0 +5.9 6.4 0.0 +6 6.4 0.0 +6.1 6.4 0.0 +6.2 6.4 0.0 +6.3 6.4 0.0 +6.4 6.4 0.0 +6.5 6.4 0.0 +5 6.5 0.0 +5.1 6.5 0.0 +5.2 6.5 0.0 +5.3 6.5 0.0 +5.4 6.5 0.0 +5.5 6.5 0.0 +5.6 6.5 0.0 +5.7 6.5 0.0 +5.8 6.5 0.0 +5.9 6.5 0.0 +6 6.5 0.0 +6.1 6.5 0.0 +6.2 6.5 0.0 +6.3 6.5 0.0 +6.4 6.5 0.0 +6.5 6.5 0.0 +VERTICES 1024 2048 +1 0 +1 1 +1 2 +1 3 +1 4 +1 5 +1 6 +1 7 +1 8 +1 9 +1 10 +1 11 +1 12 +1 13 +1 14 +1 15 +1 16 +1 17 +1 18 +1 19 +1 20 +1 21 +1 22 +1 23 +1 24 +1 25 +1 26 +1 27 +1 28 +1 29 +1 30 +1 31 +1 32 +1 33 +1 34 +1 35 +1 36 +1 37 +1 38 +1 39 +1 40 +1 41 +1 42 +1 43 +1 44 +1 45 +1 46 +1 47 +1 48 +1 49 +1 50 +1 51 +1 52 +1 53 +1 54 +1 55 +1 56 +1 57 +1 58 +1 59 +1 60 +1 61 +1 62 +1 63 +1 64 +1 65 +1 66 +1 67 +1 68 +1 69 +1 70 +1 71 +1 72 +1 73 +1 74 +1 75 +1 76 +1 77 +1 78 +1 79 +1 80 +1 81 +1 82 +1 83 +1 84 +1 85 +1 86 +1 87 +1 88 +1 89 +1 90 +1 91 +1 92 +1 93 +1 94 +1 95 +1 96 +1 97 +1 98 +1 99 +1 100 +1 101 +1 102 +1 103 +1 104 +1 105 +1 106 +1 107 +1 108 +1 109 +1 110 +1 111 +1 112 +1 113 +1 114 +1 115 +1 116 +1 117 +1 118 +1 119 +1 120 +1 121 +1 122 +1 123 +1 124 +1 125 +1 126 +1 127 +1 128 +1 129 +1 130 +1 131 +1 132 +1 133 +1 134 +1 135 +1 136 +1 137 +1 138 +1 139 +1 140 +1 141 +1 142 +1 143 +1 144 +1 145 +1 146 +1 147 +1 148 +1 149 +1 150 +1 151 +1 152 +1 153 +1 154 +1 155 +1 156 +1 157 +1 158 +1 159 +1 160 +1 161 +1 162 +1 163 +1 164 +1 165 +1 166 +1 167 +1 168 +1 169 +1 170 +1 171 +1 172 +1 173 +1 174 +1 175 +1 176 +1 177 +1 178 +1 179 +1 180 +1 181 +1 182 +1 183 +1 184 +1 185 +1 186 +1 187 +1 188 +1 189 +1 190 +1 191 +1 192 +1 193 +1 194 +1 195 +1 196 +1 197 +1 198 +1 199 +1 200 +1 201 +1 202 +1 203 +1 204 +1 205 +1 206 +1 207 +1 208 +1 209 +1 210 +1 211 +1 212 +1 213 +1 214 +1 215 +1 216 +1 217 +1 218 +1 219 +1 220 +1 221 +1 222 +1 223 +1 224 +1 225 +1 226 +1 227 +1 228 +1 229 +1 230 +1 231 +1 232 +1 233 +1 234 +1 235 +1 236 +1 237 +1 238 +1 239 +1 240 +1 241 +1 242 +1 243 +1 244 +1 245 +1 246 +1 247 +1 248 +1 249 +1 250 +1 251 +1 252 +1 253 +1 254 +1 255 +1 256 +1 257 +1 258 +1 259 +1 260 +1 261 +1 262 +1 263 +1 264 +1 265 +1 266 +1 267 +1 268 +1 269 +1 270 +1 271 +1 272 +1 273 +1 274 +1 275 +1 276 +1 277 +1 278 +1 279 +1 280 +1 281 +1 282 +1 283 +1 284 +1 285 +1 286 +1 287 +1 288 +1 289 +1 290 +1 291 +1 292 +1 293 +1 294 +1 295 +1 296 +1 297 +1 298 +1 299 +1 300 +1 301 +1 302 +1 303 +1 304 +1 305 +1 306 +1 307 +1 308 +1 309 +1 310 +1 311 +1 312 +1 313 +1 314 +1 315 +1 316 +1 317 +1 318 +1 319 +1 320 +1 321 +1 322 +1 323 +1 324 +1 325 +1 326 +1 327 +1 328 +1 329 +1 330 +1 331 +1 332 +1 333 +1 334 +1 335 +1 336 +1 337 +1 338 +1 339 +1 340 +1 341 +1 342 +1 343 +1 344 +1 345 +1 346 +1 347 +1 348 +1 349 +1 350 +1 351 +1 352 +1 353 +1 354 +1 355 +1 356 +1 357 +1 358 +1 359 +1 360 +1 361 +1 362 +1 363 +1 364 +1 365 +1 366 +1 367 +1 368 +1 369 +1 370 +1 371 +1 372 +1 373 +1 374 +1 375 +1 376 +1 377 +1 378 +1 379 +1 380 +1 381 +1 382 +1 383 +1 384 +1 385 +1 386 +1 387 +1 388 +1 389 +1 390 +1 391 +1 392 +1 393 +1 394 +1 395 +1 396 +1 397 +1 398 +1 399 +1 400 +1 401 +1 402 +1 403 +1 404 +1 405 +1 406 +1 407 +1 408 +1 409 +1 410 +1 411 +1 412 +1 413 +1 414 +1 415 +1 416 +1 417 +1 418 +1 419 +1 420 +1 421 +1 422 +1 423 +1 424 +1 425 +1 426 +1 427 +1 428 +1 429 +1 430 +1 431 +1 432 +1 433 +1 434 +1 435 +1 436 +1 437 +1 438 +1 439 +1 440 +1 441 +1 442 +1 443 +1 444 +1 445 +1 446 +1 447 +1 448 +1 449 +1 450 +1 451 +1 452 +1 453 +1 454 +1 455 +1 456 +1 457 +1 458 +1 459 +1 460 +1 461 +1 462 +1 463 +1 464 +1 465 +1 466 +1 467 +1 468 +1 469 +1 470 +1 471 +1 472 +1 473 +1 474 +1 475 +1 476 +1 477 +1 478 +1 479 +1 480 +1 481 +1 482 +1 483 +1 484 +1 485 +1 486 +1 487 +1 488 +1 489 +1 490 +1 491 +1 492 +1 493 +1 494 +1 495 +1 496 +1 497 +1 498 +1 499 +1 500 +1 501 +1 502 +1 503 +1 504 +1 505 +1 506 +1 507 +1 508 +1 509 +1 510 +1 511 +1 512 +1 513 +1 514 +1 515 +1 516 +1 517 +1 518 +1 519 +1 520 +1 521 +1 522 +1 523 +1 524 +1 525 +1 526 +1 527 +1 528 +1 529 +1 530 +1 531 +1 532 +1 533 +1 534 +1 535 +1 536 +1 537 +1 538 +1 539 +1 540 +1 541 +1 542 +1 543 +1 544 +1 545 +1 546 +1 547 +1 548 +1 549 +1 550 +1 551 +1 552 +1 553 +1 554 +1 555 +1 556 +1 557 +1 558 +1 559 +1 560 +1 561 +1 562 +1 563 +1 564 +1 565 +1 566 +1 567 +1 568 +1 569 +1 570 +1 571 +1 572 +1 573 +1 574 +1 575 +1 576 +1 577 +1 578 +1 579 +1 580 +1 581 +1 582 +1 583 +1 584 +1 585 +1 586 +1 587 +1 588 +1 589 +1 590 +1 591 +1 592 +1 593 +1 594 +1 595 +1 596 +1 597 +1 598 +1 599 +1 600 +1 601 +1 602 +1 603 +1 604 +1 605 +1 606 +1 607 +1 608 +1 609 +1 610 +1 611 +1 612 +1 613 +1 614 +1 615 +1 616 +1 617 +1 618 +1 619 +1 620 +1 621 +1 622 +1 623 +1 624 +1 625 +1 626 +1 627 +1 628 +1 629 +1 630 +1 631 +1 632 +1 633 +1 634 +1 635 +1 636 +1 637 +1 638 +1 639 +1 640 +1 641 +1 642 +1 643 +1 644 +1 645 +1 646 +1 647 +1 648 +1 649 +1 650 +1 651 +1 652 +1 653 +1 654 +1 655 +1 656 +1 657 +1 658 +1 659 +1 660 +1 661 +1 662 +1 663 +1 664 +1 665 +1 666 +1 667 +1 668 +1 669 +1 670 +1 671 +1 672 +1 673 +1 674 +1 675 +1 676 +1 677 +1 678 +1 679 +1 680 +1 681 +1 682 +1 683 +1 684 +1 685 +1 686 +1 687 +1 688 +1 689 +1 690 +1 691 +1 692 +1 693 +1 694 +1 695 +1 696 +1 697 +1 698 +1 699 +1 700 +1 701 +1 702 +1 703 +1 704 +1 705 +1 706 +1 707 +1 708 +1 709 +1 710 +1 711 +1 712 +1 713 +1 714 +1 715 +1 716 +1 717 +1 718 +1 719 +1 720 +1 721 +1 722 +1 723 +1 724 +1 725 +1 726 +1 727 +1 728 +1 729 +1 730 +1 731 +1 732 +1 733 +1 734 +1 735 +1 736 +1 737 +1 738 +1 739 +1 740 +1 741 +1 742 +1 743 +1 744 +1 745 +1 746 +1 747 +1 748 +1 749 +1 750 +1 751 +1 752 +1 753 +1 754 +1 755 +1 756 +1 757 +1 758 +1 759 +1 760 +1 761 +1 762 +1 763 +1 764 +1 765 +1 766 +1 767 +1 768 +1 769 +1 770 +1 771 +1 772 +1 773 +1 774 +1 775 +1 776 +1 777 +1 778 +1 779 +1 780 +1 781 +1 782 +1 783 +1 784 +1 785 +1 786 +1 787 +1 788 +1 789 +1 790 +1 791 +1 792 +1 793 +1 794 +1 795 +1 796 +1 797 +1 798 +1 799 +1 800 +1 801 +1 802 +1 803 +1 804 +1 805 +1 806 +1 807 +1 808 +1 809 +1 810 +1 811 +1 812 +1 813 +1 814 +1 815 +1 816 +1 817 +1 818 +1 819 +1 820 +1 821 +1 822 +1 823 +1 824 +1 825 +1 826 +1 827 +1 828 +1 829 +1 830 +1 831 +1 832 +1 833 +1 834 +1 835 +1 836 +1 837 +1 838 +1 839 +1 840 +1 841 +1 842 +1 843 +1 844 +1 845 +1 846 +1 847 +1 848 +1 849 +1 850 +1 851 +1 852 +1 853 +1 854 +1 855 +1 856 +1 857 +1 858 +1 859 +1 860 +1 861 +1 862 +1 863 +1 864 +1 865 +1 866 +1 867 +1 868 +1 869 +1 870 +1 871 +1 872 +1 873 +1 874 +1 875 +1 876 +1 877 +1 878 +1 879 +1 880 +1 881 +1 882 +1 883 +1 884 +1 885 +1 886 +1 887 +1 888 +1 889 +1 890 +1 891 +1 892 +1 893 +1 894 +1 895 +1 896 +1 897 +1 898 +1 899 +1 900 +1 901 +1 902 +1 903 +1 904 +1 905 +1 906 +1 907 +1 908 +1 909 +1 910 +1 911 +1 912 +1 913 +1 914 +1 915 +1 916 +1 917 +1 918 +1 919 +1 920 +1 921 +1 922 +1 923 +1 924 +1 925 +1 926 +1 927 +1 928 +1 929 +1 930 +1 931 +1 932 +1 933 +1 934 +1 935 +1 936 +1 937 +1 938 +1 939 +1 940 +1 941 +1 942 +1 943 +1 944 +1 945 +1 946 +1 947 +1 948 +1 949 +1 950 +1 951 +1 952 +1 953 +1 954 +1 955 +1 956 +1 957 +1 958 +1 959 +1 960 +1 961 +1 962 +1 963 +1 964 +1 965 +1 966 +1 967 +1 968 +1 969 +1 970 +1 971 +1 972 +1 973 +1 974 +1 975 +1 976 +1 977 +1 978 +1 979 +1 980 +1 981 +1 982 +1 983 +1 984 +1 985 +1 986 +1 987 +1 988 +1 989 +1 990 +1 991 +1 992 +1 993 +1 994 +1 995 +1 996 +1 997 +1 998 +1 999 +1 1000 +1 1001 +1 1002 +1 1003 +1 1004 +1 1005 +1 1006 +1 1007 +1 1008 +1 1009 +1 1010 +1 1011 +1 1012 +1 1013 +1 1014 +1 1015 +1 1016 +1 1017 +1 1018 +1 1019 +1 1020 +1 1021 +1 1022 +1 1023 +POINT_DATA 1024 +SCALARS x float +LOOKUP_TABLE default +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +SCALARS y float +LOOKUP_TABLE default +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +2 +2 +2 +2 +2 +2 +2 +2 +2 +2 +2 +2 +2 +2 +2 +2 +3 +3 +3 +3 +3 +3 +3 +3 +3 +3 +3 +3 +3 +3 +3 +3 +4 +4 +4 +4 +4 +4 +4 +4 +4 +4 +4 +4 +4 +4 +4 +4 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +6 +6 +6 +6 +6 +6 +6 +6 +6 +6 +6 +6 +6 +6 +6 +6 +7 +7 +7 +7 +7 +7 +7 +7 +7 +7 +7 +7 +7 +7 +7 +7 +8 +8 +8 +8 +8 +8 +8 +8 +8 +8 +8 +8 +8 +8 +8 +8 +9 +9 +9 +9 +9 +9 +9 +9 +9 +9 +9 +9 +9 +9 +9 +9 +10 +10 +10 +10 +10 +10 +10 +10 +10 +10 +10 +10 +10 +10 +10 +10 +11 +11 +11 +11 +11 +11 +11 +11 +11 +11 +11 +11 +11 +11 +11 +11 +12 +12 +12 +12 +12 +12 +12 +12 +12 +12 +12 +12 +12 +12 +12 +12 +13 +13 +13 +13 +13 +13 +13 +13 +13 +13 +13 +13 +13 +13 +13 +13 +14 +14 +14 +14 +14 +14 +14 +14 +14 +14 +14 +14 +14 +14 +14 +14 +15 +15 +15 +15 +15 +15 +15 +15 +15 +15 +15 +15 +15 +15 +15 +15 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +2 +2 +2 +2 +2 +2 +2 +2 +2 +2 +2 +2 +2 +2 +2 +2 +3 +3 +3 +3 +3 +3 +3 +3 +3 +3 +3 +3 +3 +3 +3 +3 +4 +4 +4 +4 +4 +4 +4 +4 +4 +4 +4 +4 +4 +4 +4 +4 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +6 +6 +6 +6 +6 +6 +6 +6 +6 +6 +6 +6 +6 +6 +6 +6 +7 +7 +7 +7 +7 +7 +7 +7 +7 +7 +7 +7 +7 +7 +7 +7 +8 +8 +8 +8 +8 +8 +8 +8 +8 +8 +8 +8 +8 +8 +8 +8 +9 +9 +9 +9 +9 +9 +9 +9 +9 +9 +9 +9 +9 +9 +9 +9 +10 +10 +10 +10 +10 +10 +10 +10 +10 +10 +10 +10 +10 +10 +10 +10 +11 +11 +11 +11 +11 +11 +11 +11 +11 +11 +11 +11 +11 +11 +11 +11 +12 +12 +12 +12 +12 +12 +12 +12 +12 +12 +12 +12 +12 +12 +12 +12 +13 +13 +13 +13 +13 +13 +13 +13 +13 +13 +13 +13 +13 +13 +13 +13 +14 +14 +14 +14 +14 +14 +14 +14 +14 +14 +14 +14 +14 +14 +14 +14 +15 +15 +15 +15 +15 +15 +15 +15 +15 +15 +15 +15 +15 +15 +15 +15 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +2 +2 +2 +2 +2 +2 +2 +2 +2 +2 +2 +2 +2 +2 +2 +2 +3 +3 +3 +3 +3 +3 +3 +3 +3 +3 +3 +3 +3 +3 +3 +3 +4 +4 +4 +4 +4 +4 +4 +4 +4 +4 +4 +4 +4 +4 +4 +4 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +6 +6 +6 +6 +6 +6 +6 +6 +6 +6 +6 +6 +6 +6 +6 +6 +7 +7 +7 +7 +7 +7 +7 +7 +7 +7 +7 +7 +7 +7 +7 +7 +8 +8 +8 +8 +8 +8 +8 +8 +8 +8 +8 +8 +8 +8 +8 +8 +9 +9 +9 +9 +9 +9 +9 +9 +9 +9 +9 +9 +9 +9 +9 +9 +10 +10 +10 +10 +10 +10 +10 +10 +10 +10 +10 +10 +10 +10 +10 +10 +11 +11 +11 +11 +11 +11 +11 +11 +11 +11 +11 +11 +11 +11 +11 +11 +12 +12 +12 +12 +12 +12 +12 +12 +12 +12 +12 +12 +12 +12 +12 +12 +13 +13 +13 +13 +13 +13 +13 +13 +13 +13 +13 +13 +13 +13 +13 +13 +14 +14 +14 +14 +14 +14 +14 +14 +14 +14 +14 +14 +14 +14 +14 +14 +15 +15 +15 +15 +15 +15 +15 +15 +15 +15 +15 +15 +15 +15 +15 +15 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +2 +2 +2 +2 +2 +2 +2 +2 +2 +2 +2 +2 +2 +2 +2 +2 +3 +3 +3 +3 +3 +3 +3 +3 +3 +3 +3 +3 +3 +3 +3 +3 +4 +4 +4 +4 +4 +4 +4 +4 +4 +4 +4 +4 +4 +4 +4 +4 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +6 +6 +6 +6 +6 +6 +6 +6 +6 +6 +6 +6 +6 +6 +6 +6 +7 +7 +7 +7 +7 +7 +7 +7 +7 +7 +7 +7 +7 +7 +7 +7 +8 +8 +8 +8 +8 +8 +8 +8 +8 +8 +8 +8 +8 +8 +8 +8 +9 +9 +9 +9 +9 +9 +9 +9 +9 +9 +9 +9 +9 +9 +9 +9 +10 +10 +10 +10 +10 +10 +10 +10 +10 +10 +10 +10 +10 +10 +10 +10 +11 +11 +11 +11 +11 +11 +11 +11 +11 +11 +11 +11 +11 +11 +11 +11 +12 +12 +12 +12 +12 +12 +12 +12 +12 +12 +12 +12 +12 +12 +12 +12 +13 +13 +13 +13 +13 +13 +13 +13 +13 +13 +13 +13 +13 +13 +13 +13 +14 +14 +14 +14 +14 +14 +14 +14 +14 +14 +14 +14 +14 +14 +14 +14 +15 +15 +15 +15 +15 +15 +15 +15 +15 +15 +15 +15 +15 +15 +15 +15 +SCALARS z float +LOOKUP_TABLE default +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +SCALARS s float +LOOKUP_TABLE default +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +SCALARS domain float +LOOKUP_TABLE default +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +0.000000 +0.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +0.000000 +0.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +0.000000 +0.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +0.000000 +0.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +0.000000 +0.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +0.000000 +0.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +0.000000 +0.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +0.000000 +0.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +0.000000 +0.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +0.000000 +0.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +0.000000 +0.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +0.000000 +0.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +0.000000 +0.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +0.000000 +0.000000 +0.000000 +0.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +0.000000 +0.000000 +0.000000 +0.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +0.000000 +0.000000 +0.000000 +0.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +0.000000 +0.000000 +0.000000 +0.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +0.000000 +0.000000 +0.000000 +0.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +0.000000 +0.000000 +0.000000 +0.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +0.000000 +0.000000 +0.000000 +0.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +0.000000 +0.000000 +0.000000 +0.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +0.000000 +0.000000 +0.000000 +0.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +0.000000 +0.000000 +0.000000 +0.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +0.000000 +0.000000 +0.000000 +0.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +0.000000 +0.000000 +0.000000 +0.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +0.000000 +0.000000 +0.000000 +0.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +0.000000 +0.000000 +0.000000 +0.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 diff --git a/test_data/vtk_grids_st_test.vtk b/test_data/vtk_grids_st_test.vtk new file mode 100644 index 0000000000000000000000000000000000000000..d6ab6ae2eda711e12e45df3219e8975028328b7f --- /dev/null +++ b/test_data/vtk_grids_st_test.vtk @@ -0,0 +1,3083 @@ +# vtk DataFile Version 3.0 +grids +ASCII +DATASET POLYDATA +POINTS 768 float +0.050000 0.050000 0.0 +0.150000 0.050000 0.0 +0.250000 0.050000 0.0 +0.350000 0.050000 0.0 +0.450000 0.050000 0.0 +0.550000 0.050000 0.0 +0.650000 0.050000 0.0 +0.750000 0.050000 0.0 +0.850000 0.050000 0.0 +0.950000 0.050000 0.0 +1.050000 0.050000 0.0 +1.150000 0.050000 0.0 +1.250000 0.050000 0.0 +1.350000 0.050000 0.0 +1.450000 0.050000 0.0 +1.550000 0.050000 0.0 +0.050000 0.150000 0.0 +0.150000 0.150000 0.0 +0.250000 0.150000 0.0 +0.350000 0.150000 0.0 +0.450000 0.150000 0.0 +0.550000 0.150000 0.0 +0.650000 0.150000 0.0 +0.750000 0.150000 0.0 +0.850000 0.150000 0.0 +0.950000 0.150000 0.0 +1.050000 0.150000 0.0 +1.150000 0.150000 0.0 +1.250000 0.150000 0.0 +1.350000 0.150000 0.0 +1.450000 0.150000 0.0 +1.550000 0.150000 0.0 +0.050000 0.250000 0.0 +0.150000 0.250000 0.0 +0.250000 0.250000 0.0 +0.350000 0.250000 0.0 +0.450000 0.250000 0.0 +0.550000 0.250000 0.0 +0.650000 0.250000 0.0 +0.750000 0.250000 0.0 +0.850000 0.250000 0.0 +0.950000 0.250000 0.0 +1.050000 0.250000 0.0 +1.150000 0.250000 0.0 +1.250000 0.250000 0.0 +1.350000 0.250000 0.0 +1.450000 0.250000 0.0 +1.550000 0.250000 0.0 +0.050000 0.350000 0.0 +0.150000 0.350000 0.0 +0.250000 0.350000 0.0 +0.350000 0.350000 0.0 +0.450000 0.350000 0.0 +0.550000 0.350000 0.0 +0.650000 0.350000 0.0 +0.750000 0.350000 0.0 +0.850000 0.350000 0.0 +0.950000 0.350000 0.0 +1.050000 0.350000 0.0 +1.150000 0.350000 0.0 +1.250000 0.350000 0.0 +1.350000 0.350000 0.0 +1.450000 0.350000 0.0 +1.550000 0.350000 0.0 +0.050000 0.450000 0.0 +0.150000 0.450000 0.0 +0.250000 0.450000 0.0 +0.350000 0.450000 0.0 +0.450000 0.450000 0.0 +0.550000 0.450000 0.0 +0.650000 0.450000 0.0 +0.750000 0.450000 0.0 +0.850000 0.450000 0.0 +0.950000 0.450000 0.0 +1.050000 0.450000 0.0 +1.150000 0.450000 0.0 +1.250000 0.450000 0.0 +1.350000 0.450000 0.0 +1.450000 0.450000 0.0 +1.550000 0.450000 0.0 +0.050000 0.550000 0.0 +0.150000 0.550000 0.0 +0.250000 0.550000 0.0 +0.350000 0.550000 0.0 +0.450000 0.550000 0.0 +0.550000 0.550000 0.0 +0.650000 0.550000 0.0 +0.750000 0.550000 0.0 +0.850000 0.550000 0.0 +0.950000 0.550000 0.0 +1.050000 0.550000 0.0 +1.150000 0.550000 0.0 +1.250000 0.550000 0.0 +1.350000 0.550000 0.0 +1.450000 0.550000 0.0 +1.550000 0.550000 0.0 +0.050000 0.650000 0.0 +0.150000 0.650000 0.0 +0.250000 0.650000 0.0 +0.350000 0.650000 0.0 +0.450000 0.650000 0.0 +0.550000 0.650000 0.0 +0.650000 0.650000 0.0 +0.750000 0.650000 0.0 +0.850000 0.650000 0.0 +0.950000 0.650000 0.0 +1.050000 0.650000 0.0 +1.150000 0.650000 0.0 +1.250000 0.650000 0.0 +1.350000 0.650000 0.0 +1.450000 0.650000 0.0 +1.550000 0.650000 0.0 +0.050000 0.750000 0.0 +0.150000 0.750000 0.0 +0.250000 0.750000 0.0 +0.350000 0.750000 0.0 +0.450000 0.750000 0.0 +0.550000 0.750000 0.0 +0.650000 0.750000 0.0 +0.750000 0.750000 0.0 +0.850000 0.750000 0.0 +0.950000 0.750000 0.0 +1.050000 0.750000 0.0 +1.150000 0.750000 0.0 +1.250000 0.750000 0.0 +1.350000 0.750000 0.0 +1.450000 0.750000 0.0 +1.550000 0.750000 0.0 +0.050000 0.850000 0.0 +0.150000 0.850000 0.0 +0.250000 0.850000 0.0 +0.350000 0.850000 0.0 +0.450000 0.850000 0.0 +0.550000 0.850000 0.0 +0.650000 0.850000 0.0 +0.750000 0.850000 0.0 +0.850000 0.850000 0.0 +0.950000 0.850000 0.0 +1.050000 0.850000 0.0 +1.150000 0.850000 0.0 +1.250000 0.850000 0.0 +1.350000 0.850000 0.0 +1.450000 0.850000 0.0 +1.550000 0.850000 0.0 +0.050000 0.950000 0.0 +0.150000 0.950000 0.0 +0.250000 0.950000 0.0 +0.350000 0.950000 0.0 +0.450000 0.950000 0.0 +0.550000 0.950000 0.0 +0.650000 0.950000 0.0 +0.750000 0.950000 0.0 +0.850000 0.950000 0.0 +0.950000 0.950000 0.0 +1.050000 0.950000 0.0 +1.150000 0.950000 0.0 +1.250000 0.950000 0.0 +1.350000 0.950000 0.0 +1.450000 0.950000 0.0 +1.550000 0.950000 0.0 +0.050000 1.050000 0.0 +0.150000 1.050000 0.0 +0.250000 1.050000 0.0 +0.350000 1.050000 0.0 +0.450000 1.050000 0.0 +0.550000 1.050000 0.0 +0.650000 1.050000 0.0 +0.750000 1.050000 0.0 +0.850000 1.050000 0.0 +0.950000 1.050000 0.0 +1.050000 1.050000 0.0 +1.150000 1.050000 0.0 +1.250000 1.050000 0.0 +1.350000 1.050000 0.0 +1.450000 1.050000 0.0 +1.550000 1.050000 0.0 +0.050000 1.150000 0.0 +0.150000 1.150000 0.0 +0.250000 1.150000 0.0 +0.350000 1.150000 0.0 +0.450000 1.150000 0.0 +0.550000 1.150000 0.0 +0.650000 1.150000 0.0 +0.750000 1.150000 0.0 +0.850000 1.150000 0.0 +0.950000 1.150000 0.0 +1.050000 1.150000 0.0 +1.150000 1.150000 0.0 +1.250000 1.150000 0.0 +1.350000 1.150000 0.0 +1.450000 1.150000 0.0 +1.550000 1.150000 0.0 +0.050000 1.250000 0.0 +0.150000 1.250000 0.0 +0.250000 1.250000 0.0 +0.350000 1.250000 0.0 +0.450000 1.250000 0.0 +0.550000 1.250000 0.0 +0.650000 1.250000 0.0 +0.750000 1.250000 0.0 +0.850000 1.250000 0.0 +0.950000 1.250000 0.0 +1.050000 1.250000 0.0 +1.150000 1.250000 0.0 +1.250000 1.250000 0.0 +1.350000 1.250000 0.0 +1.450000 1.250000 0.0 +1.550000 1.250000 0.0 +0.050000 1.350000 0.0 +0.150000 1.350000 0.0 +0.250000 1.350000 0.0 +0.350000 1.350000 0.0 +0.450000 1.350000 0.0 +0.550000 1.350000 0.0 +0.650000 1.350000 0.0 +0.750000 1.350000 0.0 +0.850000 1.350000 0.0 +0.950000 1.350000 0.0 +1.050000 1.350000 0.0 +1.150000 1.350000 0.0 +1.250000 1.350000 0.0 +1.350000 1.350000 0.0 +1.450000 1.350000 0.0 +1.550000 1.350000 0.0 +0.050000 1.450000 0.0 +0.150000 1.450000 0.0 +0.250000 1.450000 0.0 +0.350000 1.450000 0.0 +0.450000 1.450000 0.0 +0.550000 1.450000 0.0 +0.650000 1.450000 0.0 +0.750000 1.450000 0.0 +0.850000 1.450000 0.0 +0.950000 1.450000 0.0 +1.050000 1.450000 0.0 +1.150000 1.450000 0.0 +1.250000 1.450000 0.0 +1.350000 1.450000 0.0 +1.450000 1.450000 0.0 +1.550000 1.450000 0.0 +0.050000 1.550000 0.0 +0.150000 1.550000 0.0 +0.250000 1.550000 0.0 +0.350000 1.550000 0.0 +0.450000 1.550000 0.0 +0.550000 1.550000 0.0 +0.650000 1.550000 0.0 +0.750000 1.550000 0.0 +0.850000 1.550000 0.0 +0.950000 1.550000 0.0 +1.050000 1.550000 0.0 +1.150000 1.550000 0.0 +1.250000 1.550000 0.0 +1.350000 1.550000 0.0 +1.450000 1.550000 0.0 +1.550000 1.550000 0.0 +5.050000 5.050000 0.0 +5.150000 5.050000 0.0 +5.250000 5.050000 0.0 +5.350000 5.050000 0.0 +5.450000 5.050000 0.0 +5.550000 5.050000 0.0 +5.650000 5.050000 0.0 +5.750000 5.050000 0.0 +5.850000 5.050000 0.0 +5.950000 5.050000 0.0 +6.050000 5.050000 0.0 +6.150000 5.050000 0.0 +6.250000 5.050000 0.0 +6.350000 5.050000 0.0 +6.450000 5.050000 0.0 +6.550000 5.050000 0.0 +5.050000 5.150000 0.0 +5.150000 5.150000 0.0 +5.250000 5.150000 0.0 +5.350000 5.150000 0.0 +5.450000 5.150000 0.0 +5.550000 5.150000 0.0 +5.650000 5.150000 0.0 +5.750000 5.150000 0.0 +5.850000 5.150000 0.0 +5.950000 5.150000 0.0 +6.050000 5.150000 0.0 +6.150000 5.150000 0.0 +6.250000 5.150000 0.0 +6.350000 5.150000 0.0 +6.450000 5.150000 0.0 +6.550000 5.150000 0.0 +5.050000 5.250000 0.0 +5.150000 5.250000 0.0 +5.250000 5.250000 0.0 +5.350000 5.250000 0.0 +5.450000 5.250000 0.0 +5.550000 5.250000 0.0 +5.650000 5.250000 0.0 +5.750000 5.250000 0.0 +5.850000 5.250000 0.0 +5.950000 5.250000 0.0 +6.050000 5.250000 0.0 +6.150000 5.250000 0.0 +6.250000 5.250000 0.0 +6.350000 5.250000 0.0 +6.450000 5.250000 0.0 +6.550000 5.250000 0.0 +5.050000 5.350000 0.0 +5.150000 5.350000 0.0 +5.250000 5.350000 0.0 +5.350000 5.350000 0.0 +5.450000 5.350000 0.0 +5.550000 5.350000 0.0 +5.650000 5.350000 0.0 +5.750000 5.350000 0.0 +5.850000 5.350000 0.0 +5.950000 5.350000 0.0 +6.050000 5.350000 0.0 +6.150000 5.350000 0.0 +6.250000 5.350000 0.0 +6.350000 5.350000 0.0 +6.450000 5.350000 0.0 +6.550000 5.350000 0.0 +5.050000 5.450000 0.0 +5.150000 5.450000 0.0 +5.250000 5.450000 0.0 +5.350000 5.450000 0.0 +5.450000 5.450000 0.0 +5.550000 5.450000 0.0 +5.650000 5.450000 0.0 +5.750000 5.450000 0.0 +5.850000 5.450000 0.0 +5.950000 5.450000 0.0 +6.050000 5.450000 0.0 +6.150000 5.450000 0.0 +6.250000 5.450000 0.0 +6.350000 5.450000 0.0 +6.450000 5.450000 0.0 +6.550000 5.450000 0.0 +5.050000 5.550000 0.0 +5.150000 5.550000 0.0 +5.250000 5.550000 0.0 +5.350000 5.550000 0.0 +5.450000 5.550000 0.0 +5.550000 5.550000 0.0 +5.650000 5.550000 0.0 +5.750000 5.550000 0.0 +5.850000 5.550000 0.0 +5.950000 5.550000 0.0 +6.050000 5.550000 0.0 +6.150000 5.550000 0.0 +6.250000 5.550000 0.0 +6.350000 5.550000 0.0 +6.450000 5.550000 0.0 +6.550000 5.550000 0.0 +5.050000 5.650000 0.0 +5.150000 5.650000 0.0 +5.250000 5.650000 0.0 +5.350000 5.650000 0.0 +5.450000 5.650000 0.0 +5.550000 5.650000 0.0 +5.650000 5.650000 0.0 +5.750000 5.650000 0.0 +5.850000 5.650000 0.0 +5.950000 5.650000 0.0 +6.050000 5.650000 0.0 +6.150000 5.650000 0.0 +6.250000 5.650000 0.0 +6.350000 5.650000 0.0 +6.450000 5.650000 0.0 +6.550000 5.650000 0.0 +5.050000 5.750000 0.0 +5.150000 5.750000 0.0 +5.250000 5.750000 0.0 +5.350000 5.750000 0.0 +5.450000 5.750000 0.0 +5.550000 5.750000 0.0 +5.650000 5.750000 0.0 +5.750000 5.750000 0.0 +5.850000 5.750000 0.0 +5.950000 5.750000 0.0 +6.050000 5.750000 0.0 +6.150000 5.750000 0.0 +6.250000 5.750000 0.0 +6.350000 5.750000 0.0 +6.450000 5.750000 0.0 +6.550000 5.750000 0.0 +5.050000 5.850000 0.0 +5.150000 5.850000 0.0 +5.250000 5.850000 0.0 +5.350000 5.850000 0.0 +5.450000 5.850000 0.0 +5.550000 5.850000 0.0 +5.650000 5.850000 0.0 +5.750000 5.850000 0.0 +5.850000 5.850000 0.0 +5.950000 5.850000 0.0 +6.050000 5.850000 0.0 +6.150000 5.850000 0.0 +6.250000 5.850000 0.0 +6.350000 5.850000 0.0 +6.450000 5.850000 0.0 +6.550000 5.850000 0.0 +5.050000 5.950000 0.0 +5.150000 5.950000 0.0 +5.250000 5.950000 0.0 +5.350000 5.950000 0.0 +5.450000 5.950000 0.0 +5.550000 5.950000 0.0 +5.650000 5.950000 0.0 +5.750000 5.950000 0.0 +5.850000 5.950000 0.0 +5.950000 5.950000 0.0 +6.050000 5.950000 0.0 +6.150000 5.950000 0.0 +6.250000 5.950000 0.0 +6.350000 5.950000 0.0 +6.450000 5.950000 0.0 +6.550000 5.950000 0.0 +5.050000 6.050000 0.0 +5.150000 6.050000 0.0 +5.250000 6.050000 0.0 +5.350000 6.050000 0.0 +5.450000 6.050000 0.0 +5.550000 6.050000 0.0 +5.650000 6.050000 0.0 +5.750000 6.050000 0.0 +5.850000 6.050000 0.0 +5.950000 6.050000 0.0 +6.050000 6.050000 0.0 +6.150000 6.050000 0.0 +6.250000 6.050000 0.0 +6.350000 6.050000 0.0 +6.450000 6.050000 0.0 +6.550000 6.050000 0.0 +5.050000 6.150000 0.0 +5.150000 6.150000 0.0 +5.250000 6.150000 0.0 +5.350000 6.150000 0.0 +5.450000 6.150000 0.0 +5.550000 6.150000 0.0 +5.650000 6.150000 0.0 +5.750000 6.150000 0.0 +5.850000 6.150000 0.0 +5.950000 6.150000 0.0 +6.050000 6.150000 0.0 +6.150000 6.150000 0.0 +6.250000 6.150000 0.0 +6.350000 6.150000 0.0 +6.450000 6.150000 0.0 +6.550000 6.150000 0.0 +5.050000 6.250000 0.0 +5.150000 6.250000 0.0 +5.250000 6.250000 0.0 +5.350000 6.250000 0.0 +5.450000 6.250000 0.0 +5.550000 6.250000 0.0 +5.650000 6.250000 0.0 +5.750000 6.250000 0.0 +5.850000 6.250000 0.0 +5.950000 6.250000 0.0 +6.050000 6.250000 0.0 +6.150000 6.250000 0.0 +6.250000 6.250000 0.0 +6.350000 6.250000 0.0 +6.450000 6.250000 0.0 +6.550000 6.250000 0.0 +5.050000 6.350000 0.0 +5.150000 6.350000 0.0 +5.250000 6.350000 0.0 +5.350000 6.350000 0.0 +5.450000 6.350000 0.0 +5.550000 6.350000 0.0 +5.650000 6.350000 0.0 +5.750000 6.350000 0.0 +5.850000 6.350000 0.0 +5.950000 6.350000 0.0 +6.050000 6.350000 0.0 +6.150000 6.350000 0.0 +6.250000 6.350000 0.0 +6.350000 6.350000 0.0 +6.450000 6.350000 0.0 +6.550000 6.350000 0.0 +5.050000 6.450000 0.0 +5.150000 6.450000 0.0 +5.250000 6.450000 0.0 +5.350000 6.450000 0.0 +5.450000 6.450000 0.0 +5.550000 6.450000 0.0 +5.650000 6.450000 0.0 +5.750000 6.450000 0.0 +5.850000 6.450000 0.0 +5.950000 6.450000 0.0 +6.050000 6.450000 0.0 +6.150000 6.450000 0.0 +6.250000 6.450000 0.0 +6.350000 6.450000 0.0 +6.450000 6.450000 0.0 +6.550000 6.450000 0.0 +5.050000 6.550000 0.0 +5.150000 6.550000 0.0 +5.250000 6.550000 0.0 +5.350000 6.550000 0.0 +5.450000 6.550000 0.0 +5.550000 6.550000 0.0 +5.650000 6.550000 0.0 +5.750000 6.550000 0.0 +5.850000 6.550000 0.0 +5.950000 6.550000 0.0 +6.050000 6.550000 0.0 +6.150000 6.550000 0.0 +6.250000 6.550000 0.0 +6.350000 6.550000 0.0 +6.450000 6.550000 0.0 +6.550000 6.550000 0.0 +5.000000 5.000000 0.0 +5.100000 5.000000 0.0 +5.200000 5.000000 0.0 +5.300000 5.000000 0.0 +5.400000 5.000000 0.0 +5.500000 5.000000 0.0 +5.600000 5.000000 0.0 +5.700000 5.000000 0.0 +5.800000 5.000000 0.0 +5.900000 5.000000 0.0 +6.000000 5.000000 0.0 +6.100000 5.000000 0.0 +6.200000 5.000000 0.0 +6.300000 5.000000 0.0 +6.400000 5.000000 0.0 +6.500000 5.000000 0.0 +5.000000 5.100000 0.0 +5.100000 5.100000 0.0 +5.200000 5.100000 0.0 +5.300000 5.100000 0.0 +5.400000 5.100000 0.0 +5.500000 5.100000 0.0 +5.600000 5.100000 0.0 +5.700000 5.100000 0.0 +5.800000 5.100000 0.0 +5.900000 5.100000 0.0 +6.000000 5.100000 0.0 +6.100000 5.100000 0.0 +6.200000 5.100000 0.0 +6.300000 5.100000 0.0 +6.400000 5.100000 0.0 +6.500000 5.100000 0.0 +5.000000 5.200000 0.0 +5.100000 5.200000 0.0 +5.200000 5.200000 0.0 +5.300000 5.200000 0.0 +5.400000 5.200000 0.0 +5.500000 5.200000 0.0 +5.600000 5.200000 0.0 +5.700000 5.200000 0.0 +5.800000 5.200000 0.0 +5.900000 5.200000 0.0 +6.000000 5.200000 0.0 +6.100000 5.200000 0.0 +6.200000 5.200000 0.0 +6.300000 5.200000 0.0 +6.400000 5.200000 0.0 +6.500000 5.200000 0.0 +5.000000 5.300000 0.0 +5.100000 5.300000 0.0 +5.200000 5.300000 0.0 +5.300000 5.300000 0.0 +5.400000 5.300000 0.0 +5.500000 5.300000 0.0 +5.600000 5.300000 0.0 +5.700000 5.300000 0.0 +5.800000 5.300000 0.0 +5.900000 5.300000 0.0 +6.000000 5.300000 0.0 +6.100000 5.300000 0.0 +6.200000 5.300000 0.0 +6.300000 5.300000 0.0 +6.400000 5.300000 0.0 +6.500000 5.300000 0.0 +5.000000 5.400000 0.0 +5.100000 5.400000 0.0 +5.200000 5.400000 0.0 +5.300000 5.400000 0.0 +5.400000 5.400000 0.0 +5.500000 5.400000 0.0 +5.600000 5.400000 0.0 +5.700000 5.400000 0.0 +5.800000 5.400000 0.0 +5.900000 5.400000 0.0 +6.000000 5.400000 0.0 +6.100000 5.400000 0.0 +6.200000 5.400000 0.0 +6.300000 5.400000 0.0 +6.400000 5.400000 0.0 +6.500000 5.400000 0.0 +5.000000 5.500000 0.0 +5.100000 5.500000 0.0 +5.200000 5.500000 0.0 +5.300000 5.500000 0.0 +5.400000 5.500000 0.0 +5.500000 5.500000 0.0 +5.600000 5.500000 0.0 +5.700000 5.500000 0.0 +5.800000 5.500000 0.0 +5.900000 5.500000 0.0 +6.000000 5.500000 0.0 +6.100000 5.500000 0.0 +6.200000 5.500000 0.0 +6.300000 5.500000 0.0 +6.400000 5.500000 0.0 +6.500000 5.500000 0.0 +5.000000 5.600000 0.0 +5.100000 5.600000 0.0 +5.200000 5.600000 0.0 +5.300000 5.600000 0.0 +5.400000 5.600000 0.0 +5.500000 5.600000 0.0 +5.600000 5.600000 0.0 +5.700000 5.600000 0.0 +5.800000 5.600000 0.0 +5.900000 5.600000 0.0 +6.000000 5.600000 0.0 +6.100000 5.600000 0.0 +6.200000 5.600000 0.0 +6.300000 5.600000 0.0 +6.400000 5.600000 0.0 +6.500000 5.600000 0.0 +5.000000 5.700000 0.0 +5.100000 5.700000 0.0 +5.200000 5.700000 0.0 +5.300000 5.700000 0.0 +5.400000 5.700000 0.0 +5.500000 5.700000 0.0 +5.600000 5.700000 0.0 +5.700000 5.700000 0.0 +5.800000 5.700000 0.0 +5.900000 5.700000 0.0 +6.000000 5.700000 0.0 +6.100000 5.700000 0.0 +6.200000 5.700000 0.0 +6.300000 5.700000 0.0 +6.400000 5.700000 0.0 +6.500000 5.700000 0.0 +5.000000 5.800000 0.0 +5.100000 5.800000 0.0 +5.200000 5.800000 0.0 +5.300000 5.800000 0.0 +5.400000 5.800000 0.0 +5.500000 5.800000 0.0 +5.600000 5.800000 0.0 +5.700000 5.800000 0.0 +5.800000 5.800000 0.0 +5.900000 5.800000 0.0 +6.000000 5.800000 0.0 +6.100000 5.800000 0.0 +6.200000 5.800000 0.0 +6.300000 5.800000 0.0 +6.400000 5.800000 0.0 +6.500000 5.800000 0.0 +5.000000 5.900000 0.0 +5.100000 5.900000 0.0 +5.200000 5.900000 0.0 +5.300000 5.900000 0.0 +5.400000 5.900000 0.0 +5.500000 5.900000 0.0 +5.600000 5.900000 0.0 +5.700000 5.900000 0.0 +5.800000 5.900000 0.0 +5.900000 5.900000 0.0 +6.000000 5.900000 0.0 +6.100000 5.900000 0.0 +6.200000 5.900000 0.0 +6.300000 5.900000 0.0 +6.400000 5.900000 0.0 +6.500000 5.900000 0.0 +5.000000 6.000000 0.0 +5.100000 6.000000 0.0 +5.200000 6.000000 0.0 +5.300000 6.000000 0.0 +5.400000 6.000000 0.0 +5.500000 6.000000 0.0 +5.600000 6.000000 0.0 +5.700000 6.000000 0.0 +5.800000 6.000000 0.0 +5.900000 6.000000 0.0 +6.000000 6.000000 0.0 +6.100000 6.000000 0.0 +6.200000 6.000000 0.0 +6.300000 6.000000 0.0 +6.400000 6.000000 0.0 +6.500000 6.000000 0.0 +5.000000 6.100000 0.0 +5.100000 6.100000 0.0 +5.200000 6.100000 0.0 +5.300000 6.100000 0.0 +5.400000 6.100000 0.0 +5.500000 6.100000 0.0 +5.600000 6.100000 0.0 +5.700000 6.100000 0.0 +5.800000 6.100000 0.0 +5.900000 6.100000 0.0 +6.000000 6.100000 0.0 +6.100000 6.100000 0.0 +6.200000 6.100000 0.0 +6.300000 6.100000 0.0 +6.400000 6.100000 0.0 +6.500000 6.100000 0.0 +5.000000 6.200000 0.0 +5.100000 6.200000 0.0 +5.200000 6.200000 0.0 +5.300000 6.200000 0.0 +5.400000 6.200000 0.0 +5.500000 6.200000 0.0 +5.600000 6.200000 0.0 +5.700000 6.200000 0.0 +5.800000 6.200000 0.0 +5.900000 6.200000 0.0 +6.000000 6.200000 0.0 +6.100000 6.200000 0.0 +6.200000 6.200000 0.0 +6.300000 6.200000 0.0 +6.400000 6.200000 0.0 +6.500000 6.200000 0.0 +5.000000 6.300000 0.0 +5.100000 6.300000 0.0 +5.200000 6.300000 0.0 +5.300000 6.300000 0.0 +5.400000 6.300000 0.0 +5.500000 6.300000 0.0 +5.600000 6.300000 0.0 +5.700000 6.300000 0.0 +5.800000 6.300000 0.0 +5.900000 6.300000 0.0 +6.000000 6.300000 0.0 +6.100000 6.300000 0.0 +6.200000 6.300000 0.0 +6.300000 6.300000 0.0 +6.400000 6.300000 0.0 +6.500000 6.300000 0.0 +5.000000 6.400000 0.0 +5.100000 6.400000 0.0 +5.200000 6.400000 0.0 +5.300000 6.400000 0.0 +5.400000 6.400000 0.0 +5.500000 6.400000 0.0 +5.600000 6.400000 0.0 +5.700000 6.400000 0.0 +5.800000 6.400000 0.0 +5.900000 6.400000 0.0 +6.000000 6.400000 0.0 +6.100000 6.400000 0.0 +6.200000 6.400000 0.0 +6.300000 6.400000 0.0 +6.400000 6.400000 0.0 +6.500000 6.400000 0.0 +5.000000 6.500000 0.0 +5.100000 6.500000 0.0 +5.200000 6.500000 0.0 +5.300000 6.500000 0.0 +5.400000 6.500000 0.0 +5.500000 6.500000 0.0 +5.600000 6.500000 0.0 +5.700000 6.500000 0.0 +5.800000 6.500000 0.0 +5.900000 6.500000 0.0 +6.000000 6.500000 0.0 +6.100000 6.500000 0.0 +6.200000 6.500000 0.0 +6.300000 6.500000 0.0 +6.400000 6.500000 0.0 +6.500000 6.500000 0.0 +VERTICES 768 1536 +1 0 +1 1 +1 2 +1 3 +1 4 +1 5 +1 6 +1 7 +1 8 +1 9 +1 10 +1 11 +1 12 +1 13 +1 14 +1 15 +1 16 +1 17 +1 18 +1 19 +1 20 +1 21 +1 22 +1 23 +1 24 +1 25 +1 26 +1 27 +1 28 +1 29 +1 30 +1 31 +1 32 +1 33 +1 34 +1 35 +1 36 +1 37 +1 38 +1 39 +1 40 +1 41 +1 42 +1 43 +1 44 +1 45 +1 46 +1 47 +1 48 +1 49 +1 50 +1 51 +1 52 +1 53 +1 54 +1 55 +1 56 +1 57 +1 58 +1 59 +1 60 +1 61 +1 62 +1 63 +1 64 +1 65 +1 66 +1 67 +1 68 +1 69 +1 70 +1 71 +1 72 +1 73 +1 74 +1 75 +1 76 +1 77 +1 78 +1 79 +1 80 +1 81 +1 82 +1 83 +1 84 +1 85 +1 86 +1 87 +1 88 +1 89 +1 90 +1 91 +1 92 +1 93 +1 94 +1 95 +1 96 +1 97 +1 98 +1 99 +1 100 +1 101 +1 102 +1 103 +1 104 +1 105 +1 106 +1 107 +1 108 +1 109 +1 110 +1 111 +1 112 +1 113 +1 114 +1 115 +1 116 +1 117 +1 118 +1 119 +1 120 +1 121 +1 122 +1 123 +1 124 +1 125 +1 126 +1 127 +1 128 +1 129 +1 130 +1 131 +1 132 +1 133 +1 134 +1 135 +1 136 +1 137 +1 138 +1 139 +1 140 +1 141 +1 142 +1 143 +1 144 +1 145 +1 146 +1 147 +1 148 +1 149 +1 150 +1 151 +1 152 +1 153 +1 154 +1 155 +1 156 +1 157 +1 158 +1 159 +1 160 +1 161 +1 162 +1 163 +1 164 +1 165 +1 166 +1 167 +1 168 +1 169 +1 170 +1 171 +1 172 +1 173 +1 174 +1 175 +1 176 +1 177 +1 178 +1 179 +1 180 +1 181 +1 182 +1 183 +1 184 +1 185 +1 186 +1 187 +1 188 +1 189 +1 190 +1 191 +1 192 +1 193 +1 194 +1 195 +1 196 +1 197 +1 198 +1 199 +1 200 +1 201 +1 202 +1 203 +1 204 +1 205 +1 206 +1 207 +1 208 +1 209 +1 210 +1 211 +1 212 +1 213 +1 214 +1 215 +1 216 +1 217 +1 218 +1 219 +1 220 +1 221 +1 222 +1 223 +1 224 +1 225 +1 226 +1 227 +1 228 +1 229 +1 230 +1 231 +1 232 +1 233 +1 234 +1 235 +1 236 +1 237 +1 238 +1 239 +1 240 +1 241 +1 242 +1 243 +1 244 +1 245 +1 246 +1 247 +1 248 +1 249 +1 250 +1 251 +1 252 +1 253 +1 254 +1 255 +1 256 +1 257 +1 258 +1 259 +1 260 +1 261 +1 262 +1 263 +1 264 +1 265 +1 266 +1 267 +1 268 +1 269 +1 270 +1 271 +1 272 +1 273 +1 274 +1 275 +1 276 +1 277 +1 278 +1 279 +1 280 +1 281 +1 282 +1 283 +1 284 +1 285 +1 286 +1 287 +1 288 +1 289 +1 290 +1 291 +1 292 +1 293 +1 294 +1 295 +1 296 +1 297 +1 298 +1 299 +1 300 +1 301 +1 302 +1 303 +1 304 +1 305 +1 306 +1 307 +1 308 +1 309 +1 310 +1 311 +1 312 +1 313 +1 314 +1 315 +1 316 +1 317 +1 318 +1 319 +1 320 +1 321 +1 322 +1 323 +1 324 +1 325 +1 326 +1 327 +1 328 +1 329 +1 330 +1 331 +1 332 +1 333 +1 334 +1 335 +1 336 +1 337 +1 338 +1 339 +1 340 +1 341 +1 342 +1 343 +1 344 +1 345 +1 346 +1 347 +1 348 +1 349 +1 350 +1 351 +1 352 +1 353 +1 354 +1 355 +1 356 +1 357 +1 358 +1 359 +1 360 +1 361 +1 362 +1 363 +1 364 +1 365 +1 366 +1 367 +1 368 +1 369 +1 370 +1 371 +1 372 +1 373 +1 374 +1 375 +1 376 +1 377 +1 378 +1 379 +1 380 +1 381 +1 382 +1 383 +1 384 +1 385 +1 386 +1 387 +1 388 +1 389 +1 390 +1 391 +1 392 +1 393 +1 394 +1 395 +1 396 +1 397 +1 398 +1 399 +1 400 +1 401 +1 402 +1 403 +1 404 +1 405 +1 406 +1 407 +1 408 +1 409 +1 410 +1 411 +1 412 +1 413 +1 414 +1 415 +1 416 +1 417 +1 418 +1 419 +1 420 +1 421 +1 422 +1 423 +1 424 +1 425 +1 426 +1 427 +1 428 +1 429 +1 430 +1 431 +1 432 +1 433 +1 434 +1 435 +1 436 +1 437 +1 438 +1 439 +1 440 +1 441 +1 442 +1 443 +1 444 +1 445 +1 446 +1 447 +1 448 +1 449 +1 450 +1 451 +1 452 +1 453 +1 454 +1 455 +1 456 +1 457 +1 458 +1 459 +1 460 +1 461 +1 462 +1 463 +1 464 +1 465 +1 466 +1 467 +1 468 +1 469 +1 470 +1 471 +1 472 +1 473 +1 474 +1 475 +1 476 +1 477 +1 478 +1 479 +1 480 +1 481 +1 482 +1 483 +1 484 +1 485 +1 486 +1 487 +1 488 +1 489 +1 490 +1 491 +1 492 +1 493 +1 494 +1 495 +1 496 +1 497 +1 498 +1 499 +1 500 +1 501 +1 502 +1 503 +1 504 +1 505 +1 506 +1 507 +1 508 +1 509 +1 510 +1 511 +1 512 +1 513 +1 514 +1 515 +1 516 +1 517 +1 518 +1 519 +1 520 +1 521 +1 522 +1 523 +1 524 +1 525 +1 526 +1 527 +1 528 +1 529 +1 530 +1 531 +1 532 +1 533 +1 534 +1 535 +1 536 +1 537 +1 538 +1 539 +1 540 +1 541 +1 542 +1 543 +1 544 +1 545 +1 546 +1 547 +1 548 +1 549 +1 550 +1 551 +1 552 +1 553 +1 554 +1 555 +1 556 +1 557 +1 558 +1 559 +1 560 +1 561 +1 562 +1 563 +1 564 +1 565 +1 566 +1 567 +1 568 +1 569 +1 570 +1 571 +1 572 +1 573 +1 574 +1 575 +1 576 +1 577 +1 578 +1 579 +1 580 +1 581 +1 582 +1 583 +1 584 +1 585 +1 586 +1 587 +1 588 +1 589 +1 590 +1 591 +1 592 +1 593 +1 594 +1 595 +1 596 +1 597 +1 598 +1 599 +1 600 +1 601 +1 602 +1 603 +1 604 +1 605 +1 606 +1 607 +1 608 +1 609 +1 610 +1 611 +1 612 +1 613 +1 614 +1 615 +1 616 +1 617 +1 618 +1 619 +1 620 +1 621 +1 622 +1 623 +1 624 +1 625 +1 626 +1 627 +1 628 +1 629 +1 630 +1 631 +1 632 +1 633 +1 634 +1 635 +1 636 +1 637 +1 638 +1 639 +1 640 +1 641 +1 642 +1 643 +1 644 +1 645 +1 646 +1 647 +1 648 +1 649 +1 650 +1 651 +1 652 +1 653 +1 654 +1 655 +1 656 +1 657 +1 658 +1 659 +1 660 +1 661 +1 662 +1 663 +1 664 +1 665 +1 666 +1 667 +1 668 +1 669 +1 670 +1 671 +1 672 +1 673 +1 674 +1 675 +1 676 +1 677 +1 678 +1 679 +1 680 +1 681 +1 682 +1 683 +1 684 +1 685 +1 686 +1 687 +1 688 +1 689 +1 690 +1 691 +1 692 +1 693 +1 694 +1 695 +1 696 +1 697 +1 698 +1 699 +1 700 +1 701 +1 702 +1 703 +1 704 +1 705 +1 706 +1 707 +1 708 +1 709 +1 710 +1 711 +1 712 +1 713 +1 714 +1 715 +1 716 +1 717 +1 718 +1 719 +1 720 +1 721 +1 722 +1 723 +1 724 +1 725 +1 726 +1 727 +1 728 +1 729 +1 730 +1 731 +1 732 +1 733 +1 734 +1 735 +1 736 +1 737 +1 738 +1 739 +1 740 +1 741 +1 742 +1 743 +1 744 +1 745 +1 746 +1 747 +1 748 +1 749 +1 750 +1 751 +1 752 +1 753 +1 754 +1 755 +1 756 +1 757 +1 758 +1 759 +1 760 +1 761 +1 762 +1 763 +1 764 +1 765 +1 766 +1 767 +POINT_DATA 768 +SCALARS grids_(0,0)(0,0)(-1,-1) float +LOOKUP_TABLE default +0.000000 +1.000000 +2.000000 +3.000000 +4.000000 +5.000000 +6.000000 +7.000000 +8.000000 +9.000000 +10.000000 +11.000000 +12.000000 +13.000000 +14.000000 +15.000000 +0.000000 +1.000000 +2.000000 +3.000000 +4.000000 +5.000000 +6.000000 +7.000000 +8.000000 +9.000000 +10.000000 +11.000000 +12.000000 +13.000000 +14.000000 +15.000000 +0.000000 +1.000000 +2.000000 +3.000000 +4.000000 +5.000000 +6.000000 +7.000000 +8.000000 +9.000000 +10.000000 +11.000000 +12.000000 +13.000000 +14.000000 +15.000000 +0.000000 +1.000000 +2.000000 +3.000000 +4.000000 +5.000000 +6.000000 +7.000000 +8.000000 +9.000000 +10.000000 +11.000000 +12.000000 +13.000000 +14.000000 +15.000000 +0.000000 +1.000000 +2.000000 +3.000000 +4.000000 +5.000000 +6.000000 +7.000000 +8.000000 +9.000000 +10.000000 +11.000000 +12.000000 +13.000000 +14.000000 +15.000000 +0.000000 +1.000000 +2.000000 +3.000000 +4.000000 +5.000000 +6.000000 +7.000000 +8.000000 +9.000000 +10.000000 +11.000000 +12.000000 +13.000000 +14.000000 +15.000000 +0.000000 +1.000000 +2.000000 +3.000000 +4.000000 +5.000000 +6.000000 +7.000000 +8.000000 +9.000000 +10.000000 +11.000000 +12.000000 +13.000000 +14.000000 +15.000000 +0.000000 +1.000000 +2.000000 +3.000000 +4.000000 +5.000000 +6.000000 +7.000000 +8.000000 +9.000000 +10.000000 +11.000000 +12.000000 +13.000000 +14.000000 +15.000000 +0.000000 +1.000000 +2.000000 +3.000000 +4.000000 +5.000000 +6.000000 +7.000000 +8.000000 +9.000000 +10.000000 +11.000000 +12.000000 +13.000000 +14.000000 +15.000000 +0.000000 +1.000000 +2.000000 +3.000000 +4.000000 +5.000000 +6.000000 +7.000000 +8.000000 +9.000000 +10.000000 +11.000000 +12.000000 +13.000000 +14.000000 +15.000000 +0.000000 +1.000000 +2.000000 +3.000000 +4.000000 +5.000000 +6.000000 +7.000000 +8.000000 +9.000000 +10.000000 +11.000000 +12.000000 +13.000000 +14.000000 +15.000000 +0.000000 +1.000000 +2.000000 +3.000000 +4.000000 +5.000000 +6.000000 +7.000000 +8.000000 +9.000000 +10.000000 +11.000000 +12.000000 +13.000000 +14.000000 +15.000000 +0.000000 +1.000000 +2.000000 +3.000000 +4.000000 +5.000000 +6.000000 +7.000000 +8.000000 +9.000000 +10.000000 +11.000000 +12.000000 +13.000000 +14.000000 +15.000000 +0.000000 +1.000000 +2.000000 +3.000000 +4.000000 +5.000000 +6.000000 +7.000000 +8.000000 +9.000000 +10.000000 +11.000000 +12.000000 +13.000000 +14.000000 +15.000000 +0.000000 +1.000000 +2.000000 +3.000000 +4.000000 +5.000000 +6.000000 +7.000000 +8.000000 +9.000000 +10.000000 +11.000000 +12.000000 +13.000000 +14.000000 +15.000000 +0.000000 +1.000000 +2.000000 +3.000000 +4.000000 +5.000000 +6.000000 +7.000000 +8.000000 +9.000000 +10.000000 +11.000000 +12.000000 +13.000000 +14.000000 +15.000000 +0.000000 +1.000000 +2.000000 +3.000000 +4.000000 +5.000000 +6.000000 +7.000000 +8.000000 +9.000000 +10.000000 +11.000000 +12.000000 +13.000000 +14.000000 +15.000000 +0.000000 +1.000000 +2.000000 +3.000000 +4.000000 +5.000000 +6.000000 +7.000000 +8.000000 +9.000000 +10.000000 +11.000000 +12.000000 +13.000000 +14.000000 +15.000000 +0.000000 +1.000000 +2.000000 +3.000000 +4.000000 +5.000000 +6.000000 +7.000000 +8.000000 +9.000000 +10.000000 +11.000000 +12.000000 +13.000000 +14.000000 +15.000000 +0.000000 +1.000000 +2.000000 +3.000000 +4.000000 +5.000000 +6.000000 +7.000000 +8.000000 +9.000000 +10.000000 +11.000000 +12.000000 +13.000000 +14.000000 +15.000000 +0.000000 +1.000000 +2.000000 +3.000000 +4.000000 +5.000000 +6.000000 +7.000000 +8.000000 +9.000000 +10.000000 +11.000000 +12.000000 +13.000000 +14.000000 +15.000000 +0.000000 +1.000000 +2.000000 +3.000000 +4.000000 +5.000000 +6.000000 +7.000000 +8.000000 +9.000000 +10.000000 +11.000000 +12.000000 +13.000000 +14.000000 +15.000000 +0.000000 +1.000000 +2.000000 +3.000000 +4.000000 +5.000000 +6.000000 +7.000000 +8.000000 +9.000000 +10.000000 +11.000000 +12.000000 +13.000000 +14.000000 +15.000000 +0.000000 +1.000000 +2.000000 +3.000000 +4.000000 +5.000000 +6.000000 +7.000000 +8.000000 +9.000000 +10.000000 +11.000000 +12.000000 +13.000000 +14.000000 +15.000000 +0.000000 +1.000000 +2.000000 +3.000000 +4.000000 +5.000000 +6.000000 +7.000000 +8.000000 +9.000000 +10.000000 +11.000000 +12.000000 +13.000000 +14.000000 +15.000000 +0.000000 +1.000000 +2.000000 +3.000000 +4.000000 +5.000000 +6.000000 +7.000000 +8.000000 +9.000000 +10.000000 +11.000000 +12.000000 +13.000000 +14.000000 +15.000000 +0.000000 +1.000000 +2.000000 +3.000000 +4.000000 +5.000000 +6.000000 +7.000000 +8.000000 +9.000000 +10.000000 +11.000000 +12.000000 +13.000000 +14.000000 +15.000000 +0.000000 +1.000000 +2.000000 +3.000000 +4.000000 +5.000000 +6.000000 +7.000000 +8.000000 +9.000000 +10.000000 +11.000000 +12.000000 +13.000000 +14.000000 +15.000000 +0.000000 +1.000000 +2.000000 +3.000000 +4.000000 +5.000000 +6.000000 +7.000000 +8.000000 +9.000000 +10.000000 +11.000000 +12.000000 +13.000000 +14.000000 +15.000000 +0.000000 +1.000000 +2.000000 +3.000000 +4.000000 +5.000000 +6.000000 +7.000000 +8.000000 +9.000000 +10.000000 +11.000000 +12.000000 +13.000000 +14.000000 +15.000000 +0.000000 +1.000000 +2.000000 +3.000000 +4.000000 +5.000000 +6.000000 +7.000000 +8.000000 +9.000000 +10.000000 +11.000000 +12.000000 +13.000000 +14.000000 +15.000000 +0.000000 +1.000000 +2.000000 +3.000000 +4.000000 +5.000000 +6.000000 +7.000000 +8.000000 +9.000000 +10.000000 +11.000000 +12.000000 +13.000000 +14.000000 +15.000000 +0.000000 +1.000000 +2.000000 +3.000000 +4.000000 +5.000000 +6.000000 +7.000000 +8.000000 +9.000000 +10.000000 +11.000000 +12.000000 +13.000000 +14.000000 +15.000000 +0.000000 +1.000000 +2.000000 +3.000000 +4.000000 +5.000000 +6.000000 +7.000000 +8.000000 +9.000000 +10.000000 +11.000000 +12.000000 +13.000000 +14.000000 +15.000000 +0.000000 +1.000000 +2.000000 +3.000000 +4.000000 +5.000000 +6.000000 +7.000000 +8.000000 +9.000000 +10.000000 +11.000000 +12.000000 +13.000000 +14.000000 +15.000000 +0.000000 +1.000000 +2.000000 +3.000000 +4.000000 +5.000000 +6.000000 +7.000000 +8.000000 +9.000000 +10.000000 +11.000000 +12.000000 +13.000000 +14.000000 +15.000000 +0.000000 +1.000000 +2.000000 +3.000000 +4.000000 +5.000000 +6.000000 +7.000000 +8.000000 +9.000000 +10.000000 +11.000000 +12.000000 +13.000000 +14.000000 +15.000000 +0.000000 +1.000000 +2.000000 +3.000000 +4.000000 +5.000000 +6.000000 +7.000000 +8.000000 +9.000000 +10.000000 +11.000000 +12.000000 +13.000000 +14.000000 +15.000000 +0.000000 +1.000000 +2.000000 +3.000000 +4.000000 +5.000000 +6.000000 +7.000000 +8.000000 +9.000000 +10.000000 +11.000000 +12.000000 +13.000000 +14.000000 +15.000000 +0.000000 +1.000000 +2.000000 +3.000000 +4.000000 +5.000000 +6.000000 +7.000000 +8.000000 +9.000000 +10.000000 +11.000000 +12.000000 +13.000000 +14.000000 +15.000000 +0.000000 +1.000000 +2.000000 +3.000000 +4.000000 +5.000000 +6.000000 +7.000000 +8.000000 +9.000000 +10.000000 +11.000000 +12.000000 +13.000000 +14.000000 +15.000000 +0.000000 +1.000000 +2.000000 +3.000000 +4.000000 +5.000000 +6.000000 +7.000000 +8.000000 +9.000000 +10.000000 +11.000000 +12.000000 +13.000000 +14.000000 +15.000000 +0.000000 +1.000000 +2.000000 +3.000000 +4.000000 +5.000000 +6.000000 +7.000000 +8.000000 +9.000000 +10.000000 +11.000000 +12.000000 +13.000000 +14.000000 +15.000000 +0.000000 +1.000000 +2.000000 +3.000000 +4.000000 +5.000000 +6.000000 +7.000000 +8.000000 +9.000000 +10.000000 +11.000000 +12.000000 +13.000000 +14.000000 +15.000000 +0.000000 +1.000000 +2.000000 +3.000000 +4.000000 +5.000000 +6.000000 +7.000000 +8.000000 +9.000000 +10.000000 +11.000000 +12.000000 +13.000000 +14.000000 +15.000000 +0.000000 +1.000000 +2.000000 +3.000000 +4.000000 +5.000000 +6.000000 +7.000000 +8.000000 +9.000000 +10.000000 +11.000000 +12.000000 +13.000000 +14.000000 +15.000000 +0.000000 +1.000000 +2.000000 +3.000000 +4.000000 +5.000000 +6.000000 +7.000000 +8.000000 +9.000000 +10.000000 +11.000000 +12.000000 +13.000000 +14.000000 +15.000000 +0.000000 +1.000000 +2.000000 +3.000000 +4.000000 +5.000000 +6.000000 +7.000000 +8.000000 +9.000000 +10.000000 +11.000000 +12.000000 +13.000000 +14.000000 +15.000000 +SCALARS grids_(0,0) float +LOOKUP_TABLE default +0.000000 +1.000000 +2.000000 +3.000000 +4.000000 +5.000000 +6.000000 +7.000000 +8.000000 +9.000000 +10.000000 +11.000000 +12.000000 +13.000000 +14.000000 +15.000000 +0.000000 +1.000000 +2.000000 +3.000000 +4.000000 +5.000000 +6.000000 +7.000000 +8.000000 +9.000000 +10.000000 +11.000000 +12.000000 +13.000000 +14.000000 +15.000000 +0.000000 +1.000000 +2.000000 +3.000000 +4.000000 +5.000000 +6.000000 +7.000000 +8.000000 +9.000000 +10.000000 +11.000000 +12.000000 +13.000000 +14.000000 +15.000000 +0.000000 +1.000000 +2.000000 +3.000000 +4.000000 +5.000000 +6.000000 +7.000000 +8.000000 +9.000000 +10.000000 +11.000000 +12.000000 +13.000000 +14.000000 +15.000000 +0.000000 +1.000000 +2.000000 +3.000000 +4.000000 +5.000000 +6.000000 +7.000000 +8.000000 +9.000000 +10.000000 +11.000000 +12.000000 +13.000000 +14.000000 +15.000000 +0.000000 +1.000000 +2.000000 +3.000000 +4.000000 +5.000000 +6.000000 +7.000000 +8.000000 +9.000000 +10.000000 +11.000000 +12.000000 +13.000000 +14.000000 +15.000000 +0.000000 +1.000000 +2.000000 +3.000000 +4.000000 +5.000000 +6.000000 +7.000000 +8.000000 +9.000000 +10.000000 +11.000000 +12.000000 +13.000000 +14.000000 +15.000000 +0.000000 +1.000000 +2.000000 +3.000000 +4.000000 +5.000000 +6.000000 +7.000000 +8.000000 +9.000000 +10.000000 +11.000000 +12.000000 +13.000000 +14.000000 +15.000000 +0.000000 +1.000000 +2.000000 +3.000000 +4.000000 +5.000000 +6.000000 +7.000000 +8.000000 +9.000000 +10.000000 +11.000000 +12.000000 +13.000000 +14.000000 +15.000000 +0.000000 +1.000000 +2.000000 +3.000000 +4.000000 +5.000000 +6.000000 +7.000000 +8.000000 +9.000000 +10.000000 +11.000000 +12.000000 +13.000000 +14.000000 +15.000000 +0.000000 +1.000000 +2.000000 +3.000000 +4.000000 +5.000000 +6.000000 +7.000000 +8.000000 +9.000000 +10.000000 +11.000000 +12.000000 +13.000000 +14.000000 +15.000000 +0.000000 +1.000000 +2.000000 +3.000000 +4.000000 +5.000000 +6.000000 +7.000000 +8.000000 +9.000000 +10.000000 +11.000000 +12.000000 +13.000000 +14.000000 +15.000000 +0.000000 +1.000000 +2.000000 +3.000000 +4.000000 +5.000000 +6.000000 +7.000000 +8.000000 +9.000000 +10.000000 +11.000000 +12.000000 +13.000000 +14.000000 +15.000000 +0.000000 +1.000000 +2.000000 +3.000000 +4.000000 +5.000000 +6.000000 +7.000000 +8.000000 +9.000000 +10.000000 +11.000000 +12.000000 +13.000000 +14.000000 +15.000000 +0.000000 +1.000000 +2.000000 +3.000000 +4.000000 +5.000000 +6.000000 +7.000000 +8.000000 +9.000000 +10.000000 +11.000000 +12.000000 +13.000000 +14.000000 +15.000000 +0.000000 +1.000000 +2.000000 +3.000000 +4.000000 +5.000000 +6.000000 +7.000000 +8.000000 +9.000000 +10.000000 +11.000000 +12.000000 +13.000000 +14.000000 +15.000000 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 diff --git a/test_data/vtk_grids_test.vtk b/test_data/vtk_grids_test.vtk new file mode 100644 index 0000000000000000000000000000000000000000..681ef860b4a6b27581aa8a14337cebc520fd4aed --- /dev/null +++ b/test_data/vtk_grids_test.vtk @@ -0,0 +1,17444 @@ +# vtk DataFile Version 3.0 +grids +ASCII +DATASET POLYDATA +POINTS 1024 float +0 0 0.0 +0.1 0 0.0 +0.2 0 0.0 +0.3 0 0.0 +0.4 0 0.0 +0.5 0 0.0 +0.6 0 0.0 +0.7 0 0.0 +0.8 0 0.0 +0.9 0 0.0 +1 0 0.0 +1.1 0 0.0 +1.2 0 0.0 +1.3 0 0.0 +1.4 0 0.0 +1.5 0 0.0 +0 0.2 0.0 +0.1 0.2 0.0 +0.2 0.2 0.0 +0.3 0.2 0.0 +0.4 0.2 0.0 +0.5 0.2 0.0 +0.6 0.2 0.0 +0.7 0.2 0.0 +0.8 0.2 0.0 +0.9 0.2 0.0 +1 0.2 0.0 +1.1 0.2 0.0 +1.2 0.2 0.0 +1.3 0.2 0.0 +1.4 0.2 0.0 +1.5 0.2 0.0 +0 0.4 0.0 +0.1 0.4 0.0 +0.2 0.4 0.0 +0.3 0.4 0.0 +0.4 0.4 0.0 +0.5 0.4 0.0 +0.6 0.4 0.0 +0.7 0.4 0.0 +0.8 0.4 0.0 +0.9 0.4 0.0 +1 0.4 0.0 +1.1 0.4 0.0 +1.2 0.4 0.0 +1.3 0.4 0.0 +1.4 0.4 0.0 +1.5 0.4 0.0 +0 0.6 0.0 +0.1 0.6 0.0 +0.2 0.6 0.0 +0.3 0.6 0.0 +0.4 0.6 0.0 +0.5 0.6 0.0 +0.6 0.6 0.0 +0.7 0.6 0.0 +0.8 0.6 0.0 +0.9 0.6 0.0 +1 0.6 0.0 +1.1 0.6 0.0 +1.2 0.6 0.0 +1.3 0.6 0.0 +1.4 0.6 0.0 +1.5 0.6 0.0 +0 0.8 0.0 +0.1 0.8 0.0 +0.2 0.8 0.0 +0.3 0.8 0.0 +0.4 0.8 0.0 +0.5 0.8 0.0 +0.6 0.8 0.0 +0.7 0.8 0.0 +0.8 0.8 0.0 +0.9 0.8 0.0 +1 0.8 0.0 +1.1 0.8 0.0 +1.2 0.8 0.0 +1.3 0.8 0.0 +1.4 0.8 0.0 +1.5 0.8 0.0 +0 1 0.0 +0.1 1 0.0 +0.2 1 0.0 +0.3 1 0.0 +0.4 1 0.0 +0.5 1 0.0 +0.6 1 0.0 +0.7 1 0.0 +0.8 1 0.0 +0.9 1 0.0 +1 1 0.0 +1.1 1 0.0 +1.2 1 0.0 +1.3 1 0.0 +1.4 1 0.0 +1.5 1 0.0 +0 1.2 0.0 +0.1 1.2 0.0 +0.2 1.2 0.0 +0.3 1.2 0.0 +0.4 1.2 0.0 +0.5 1.2 0.0 +0.6 1.2 0.0 +0.7 1.2 0.0 +0.8 1.2 0.0 +0.9 1.2 0.0 +1 1.2 0.0 +1.1 1.2 0.0 +1.2 1.2 0.0 +1.3 1.2 0.0 +1.4 1.2 0.0 +1.5 1.2 0.0 +0 1.4 0.0 +0.1 1.4 0.0 +0.2 1.4 0.0 +0.3 1.4 0.0 +0.4 1.4 0.0 +0.5 1.4 0.0 +0.6 1.4 0.0 +0.7 1.4 0.0 +0.8 1.4 0.0 +0.9 1.4 0.0 +1 1.4 0.0 +1.1 1.4 0.0 +1.2 1.4 0.0 +1.3 1.4 0.0 +1.4 1.4 0.0 +1.5 1.4 0.0 +0 1.6 0.0 +0.1 1.6 0.0 +0.2 1.6 0.0 +0.3 1.6 0.0 +0.4 1.6 0.0 +0.5 1.6 0.0 +0.6 1.6 0.0 +0.7 1.6 0.0 +0.8 1.6 0.0 +0.9 1.6 0.0 +1 1.6 0.0 +1.1 1.6 0.0 +1.2 1.6 0.0 +1.3 1.6 0.0 +1.4 1.6 0.0 +1.5 1.6 0.0 +0 1.8 0.0 +0.1 1.8 0.0 +0.2 1.8 0.0 +0.3 1.8 0.0 +0.4 1.8 0.0 +0.5 1.8 0.0 +0.6 1.8 0.0 +0.7 1.8 0.0 +0.8 1.8 0.0 +0.9 1.8 0.0 +1 1.8 0.0 +1.1 1.8 0.0 +1.2 1.8 0.0 +1.3 1.8 0.0 +1.4 1.8 0.0 +1.5 1.8 0.0 +0 2 0.0 +0.1 2 0.0 +0.2 2 0.0 +0.3 2 0.0 +0.4 2 0.0 +0.5 2 0.0 +0.6 2 0.0 +0.7 2 0.0 +0.8 2 0.0 +0.9 2 0.0 +1 2 0.0 +1.1 2 0.0 +1.2 2 0.0 +1.3 2 0.0 +1.4 2 0.0 +1.5 2 0.0 +0 2.2 0.0 +0.1 2.2 0.0 +0.2 2.2 0.0 +0.3 2.2 0.0 +0.4 2.2 0.0 +0.5 2.2 0.0 +0.6 2.2 0.0 +0.7 2.2 0.0 +0.8 2.2 0.0 +0.9 2.2 0.0 +1 2.2 0.0 +1.1 2.2 0.0 +1.2 2.2 0.0 +1.3 2.2 0.0 +1.4 2.2 0.0 +1.5 2.2 0.0 +0 2.4 0.0 +0.1 2.4 0.0 +0.2 2.4 0.0 +0.3 2.4 0.0 +0.4 2.4 0.0 +0.5 2.4 0.0 +0.6 2.4 0.0 +0.7 2.4 0.0 +0.8 2.4 0.0 +0.9 2.4 0.0 +1 2.4 0.0 +1.1 2.4 0.0 +1.2 2.4 0.0 +1.3 2.4 0.0 +1.4 2.4 0.0 +1.5 2.4 0.0 +0 2.6 0.0 +0.1 2.6 0.0 +0.2 2.6 0.0 +0.3 2.6 0.0 +0.4 2.6 0.0 +0.5 2.6 0.0 +0.6 2.6 0.0 +0.7 2.6 0.0 +0.8 2.6 0.0 +0.9 2.6 0.0 +1 2.6 0.0 +1.1 2.6 0.0 +1.2 2.6 0.0 +1.3 2.6 0.0 +1.4 2.6 0.0 +1.5 2.6 0.0 +0 2.8 0.0 +0.1 2.8 0.0 +0.2 2.8 0.0 +0.3 2.8 0.0 +0.4 2.8 0.0 +0.5 2.8 0.0 +0.6 2.8 0.0 +0.7 2.8 0.0 +0.8 2.8 0.0 +0.9 2.8 0.0 +1 2.8 0.0 +1.1 2.8 0.0 +1.2 2.8 0.0 +1.3 2.8 0.0 +1.4 2.8 0.0 +1.5 2.8 0.0 +0 3 0.0 +0.1 3 0.0 +0.2 3 0.0 +0.3 3 0.0 +0.4 3 0.0 +0.5 3 0.0 +0.6 3 0.0 +0.7 3 0.0 +0.8 3 0.0 +0.9 3 0.0 +1 3 0.0 +1.1 3 0.0 +1.2 3 0.0 +1.3 3 0.0 +1.4 3 0.0 +1.5 3 0.0 +5 7 0.0 +5.2 7 0.0 +5.4 7 0.0 +5.6 7 0.0 +5.8 7 0.0 +6 7 0.0 +6.2 7 0.0 +6.4 7 0.0 +6.6 7 0.0 +6.8 7 0.0 +7 7 0.0 +7.2 7 0.0 +7.4 7 0.0 +7.6 7 0.0 +7.8 7 0.0 +8 7 0.0 +5 7.1 0.0 +5.2 7.1 0.0 +5.4 7.1 0.0 +5.6 7.1 0.0 +5.8 7.1 0.0 +6 7.1 0.0 +6.2 7.1 0.0 +6.4 7.1 0.0 +6.6 7.1 0.0 +6.8 7.1 0.0 +7 7.1 0.0 +7.2 7.1 0.0 +7.4 7.1 0.0 +7.6 7.1 0.0 +7.8 7.1 0.0 +8 7.1 0.0 +5 7.2 0.0 +5.2 7.2 0.0 +5.4 7.2 0.0 +5.6 7.2 0.0 +5.8 7.2 0.0 +6 7.2 0.0 +6.2 7.2 0.0 +6.4 7.2 0.0 +6.6 7.2 0.0 +6.8 7.2 0.0 +7 7.2 0.0 +7.2 7.2 0.0 +7.4 7.2 0.0 +7.6 7.2 0.0 +7.8 7.2 0.0 +8 7.2 0.0 +5 7.3 0.0 +5.2 7.3 0.0 +5.4 7.3 0.0 +5.6 7.3 0.0 +5.8 7.3 0.0 +6 7.3 0.0 +6.2 7.3 0.0 +6.4 7.3 0.0 +6.6 7.3 0.0 +6.8 7.3 0.0 +7 7.3 0.0 +7.2 7.3 0.0 +7.4 7.3 0.0 +7.6 7.3 0.0 +7.8 7.3 0.0 +8 7.3 0.0 +5 7.4 0.0 +5.2 7.4 0.0 +5.4 7.4 0.0 +5.6 7.4 0.0 +5.8 7.4 0.0 +6 7.4 0.0 +6.2 7.4 0.0 +6.4 7.4 0.0 +6.6 7.4 0.0 +6.8 7.4 0.0 +7 7.4 0.0 +7.2 7.4 0.0 +7.4 7.4 0.0 +7.6 7.4 0.0 +7.8 7.4 0.0 +8 7.4 0.0 +5 7.5 0.0 +5.2 7.5 0.0 +5.4 7.5 0.0 +5.6 7.5 0.0 +5.8 7.5 0.0 +6 7.5 0.0 +6.2 7.5 0.0 +6.4 7.5 0.0 +6.6 7.5 0.0 +6.8 7.5 0.0 +7 7.5 0.0 +7.2 7.5 0.0 +7.4 7.5 0.0 +7.6 7.5 0.0 +7.8 7.5 0.0 +8 7.5 0.0 +5 7.6 0.0 +5.2 7.6 0.0 +5.4 7.6 0.0 +5.6 7.6 0.0 +5.8 7.6 0.0 +6 7.6 0.0 +6.2 7.6 0.0 +6.4 7.6 0.0 +6.6 7.6 0.0 +6.8 7.6 0.0 +7 7.6 0.0 +7.2 7.6 0.0 +7.4 7.6 0.0 +7.6 7.6 0.0 +7.8 7.6 0.0 +8 7.6 0.0 +5 7.7 0.0 +5.2 7.7 0.0 +5.4 7.7 0.0 +5.6 7.7 0.0 +5.8 7.7 0.0 +6 7.7 0.0 +6.2 7.7 0.0 +6.4 7.7 0.0 +6.6 7.7 0.0 +6.8 7.7 0.0 +7 7.7 0.0 +7.2 7.7 0.0 +7.4 7.7 0.0 +7.6 7.7 0.0 +7.8 7.7 0.0 +8 7.7 0.0 +5 7.8 0.0 +5.2 7.8 0.0 +5.4 7.8 0.0 +5.6 7.8 0.0 +5.8 7.8 0.0 +6 7.8 0.0 +6.2 7.8 0.0 +6.4 7.8 0.0 +6.6 7.8 0.0 +6.8 7.8 0.0 +7 7.8 0.0 +7.2 7.8 0.0 +7.4 7.8 0.0 +7.6 7.8 0.0 +7.8 7.8 0.0 +8 7.8 0.0 +5 7.9 0.0 +5.2 7.9 0.0 +5.4 7.9 0.0 +5.6 7.9 0.0 +5.8 7.9 0.0 +6 7.9 0.0 +6.2 7.9 0.0 +6.4 7.9 0.0 +6.6 7.9 0.0 +6.8 7.9 0.0 +7 7.9 0.0 +7.2 7.9 0.0 +7.4 7.9 0.0 +7.6 7.9 0.0 +7.8 7.9 0.0 +8 7.9 0.0 +5 8 0.0 +5.2 8 0.0 +5.4 8 0.0 +5.6 8 0.0 +5.8 8 0.0 +6 8 0.0 +6.2 8 0.0 +6.4 8 0.0 +6.6 8 0.0 +6.8 8 0.0 +7 8 0.0 +7.2 8 0.0 +7.4 8 0.0 +7.6 8 0.0 +7.8 8 0.0 +8 8 0.0 +5 8.1 0.0 +5.2 8.1 0.0 +5.4 8.1 0.0 +5.6 8.1 0.0 +5.8 8.1 0.0 +6 8.1 0.0 +6.2 8.1 0.0 +6.4 8.1 0.0 +6.6 8.1 0.0 +6.8 8.1 0.0 +7 8.1 0.0 +7.2 8.1 0.0 +7.4 8.1 0.0 +7.6 8.1 0.0 +7.8 8.1 0.0 +8 8.1 0.0 +5 8.2 0.0 +5.2 8.2 0.0 +5.4 8.2 0.0 +5.6 8.2 0.0 +5.8 8.2 0.0 +6 8.2 0.0 +6.2 8.2 0.0 +6.4 8.2 0.0 +6.6 8.2 0.0 +6.8 8.2 0.0 +7 8.2 0.0 +7.2 8.2 0.0 +7.4 8.2 0.0 +7.6 8.2 0.0 +7.8 8.2 0.0 +8 8.2 0.0 +5 8.3 0.0 +5.2 8.3 0.0 +5.4 8.3 0.0 +5.6 8.3 0.0 +5.8 8.3 0.0 +6 8.3 0.0 +6.2 8.3 0.0 +6.4 8.3 0.0 +6.6 8.3 0.0 +6.8 8.3 0.0 +7 8.3 0.0 +7.2 8.3 0.0 +7.4 8.3 0.0 +7.6 8.3 0.0 +7.8 8.3 0.0 +8 8.3 0.0 +5 8.4 0.0 +5.2 8.4 0.0 +5.4 8.4 0.0 +5.6 8.4 0.0 +5.8 8.4 0.0 +6 8.4 0.0 +6.2 8.4 0.0 +6.4 8.4 0.0 +6.6 8.4 0.0 +6.8 8.4 0.0 +7 8.4 0.0 +7.2 8.4 0.0 +7.4 8.4 0.0 +7.6 8.4 0.0 +7.8 8.4 0.0 +8 8.4 0.0 +5 8.5 0.0 +5.2 8.5 0.0 +5.4 8.5 0.0 +5.6 8.5 0.0 +5.8 8.5 0.0 +6 8.5 0.0 +6.2 8.5 0.0 +6.4 8.5 0.0 +6.6 8.5 0.0 +6.8 8.5 0.0 +7 8.5 0.0 +7.2 8.5 0.0 +7.4 8.5 0.0 +7.6 8.5 0.0 +7.8 8.5 0.0 +8 8.5 0.0 +0 7 0.0 +0.05 7 0.0 +0.1 7 0.0 +0.15 7 0.0 +0.2 7 0.0 +0.25 7 0.0 +0.3 7 0.0 +0.35 7 0.0 +0.4 7 0.0 +0.45 7 0.0 +0.5 7 0.0 +0.55 7 0.0 +0.6 7 0.0 +0.65 7 0.0 +0.7 7 0.0 +0.75 7 0.0 +0 7.07 0.0 +0.05 7.07 0.0 +0.1 7.07 0.0 +0.15 7.07 0.0 +0.2 7.07 0.0 +0.25 7.07 0.0 +0.3 7.07 0.0 +0.35 7.07 0.0 +0.4 7.07 0.0 +0.45 7.07 0.0 +0.5 7.07 0.0 +0.55 7.07 0.0 +0.6 7.07 0.0 +0.65 7.07 0.0 +0.7 7.07 0.0 +0.75 7.07 0.0 +0 7.14 0.0 +0.05 7.14 0.0 +0.1 7.14 0.0 +0.15 7.14 0.0 +0.2 7.14 0.0 +0.25 7.14 0.0 +0.3 7.14 0.0 +0.35 7.14 0.0 +0.4 7.14 0.0 +0.45 7.14 0.0 +0.5 7.14 0.0 +0.55 7.14 0.0 +0.6 7.14 0.0 +0.65 7.14 0.0 +0.7 7.14 0.0 +0.75 7.14 0.0 +0 7.21 0.0 +0.05 7.21 0.0 +0.1 7.21 0.0 +0.15 7.21 0.0 +0.2 7.21 0.0 +0.25 7.21 0.0 +0.3 7.21 0.0 +0.35 7.21 0.0 +0.4 7.21 0.0 +0.45 7.21 0.0 +0.5 7.21 0.0 +0.55 7.21 0.0 +0.6 7.21 0.0 +0.65 7.21 0.0 +0.7 7.21 0.0 +0.75 7.21 0.0 +0 7.28 0.0 +0.05 7.28 0.0 +0.1 7.28 0.0 +0.15 7.28 0.0 +0.2 7.28 0.0 +0.25 7.28 0.0 +0.3 7.28 0.0 +0.35 7.28 0.0 +0.4 7.28 0.0 +0.45 7.28 0.0 +0.5 7.28 0.0 +0.55 7.28 0.0 +0.6 7.28 0.0 +0.65 7.28 0.0 +0.7 7.28 0.0 +0.75 7.28 0.0 +0 7.35 0.0 +0.05 7.35 0.0 +0.1 7.35 0.0 +0.15 7.35 0.0 +0.2 7.35 0.0 +0.25 7.35 0.0 +0.3 7.35 0.0 +0.35 7.35 0.0 +0.4 7.35 0.0 +0.45 7.35 0.0 +0.5 7.35 0.0 +0.55 7.35 0.0 +0.6 7.35 0.0 +0.65 7.35 0.0 +0.7 7.35 0.0 +0.75 7.35 0.0 +0 7.42 0.0 +0.05 7.42 0.0 +0.1 7.42 0.0 +0.15 7.42 0.0 +0.2 7.42 0.0 +0.25 7.42 0.0 +0.3 7.42 0.0 +0.35 7.42 0.0 +0.4 7.42 0.0 +0.45 7.42 0.0 +0.5 7.42 0.0 +0.55 7.42 0.0 +0.6 7.42 0.0 +0.65 7.42 0.0 +0.7 7.42 0.0 +0.75 7.42 0.0 +0 7.49 0.0 +0.05 7.49 0.0 +0.1 7.49 0.0 +0.15 7.49 0.0 +0.2 7.49 0.0 +0.25 7.49 0.0 +0.3 7.49 0.0 +0.35 7.49 0.0 +0.4 7.49 0.0 +0.45 7.49 0.0 +0.5 7.49 0.0 +0.55 7.49 0.0 +0.6 7.49 0.0 +0.65 7.49 0.0 +0.7 7.49 0.0 +0.75 7.49 0.0 +0 7.56 0.0 +0.05 7.56 0.0 +0.1 7.56 0.0 +0.15 7.56 0.0 +0.2 7.56 0.0 +0.25 7.56 0.0 +0.3 7.56 0.0 +0.35 7.56 0.0 +0.4 7.56 0.0 +0.45 7.56 0.0 +0.5 7.56 0.0 +0.55 7.56 0.0 +0.6 7.56 0.0 +0.65 7.56 0.0 +0.7 7.56 0.0 +0.75 7.56 0.0 +0 7.63 0.0 +0.05 7.63 0.0 +0.1 7.63 0.0 +0.15 7.63 0.0 +0.2 7.63 0.0 +0.25 7.63 0.0 +0.3 7.63 0.0 +0.35 7.63 0.0 +0.4 7.63 0.0 +0.45 7.63 0.0 +0.5 7.63 0.0 +0.55 7.63 0.0 +0.6 7.63 0.0 +0.65 7.63 0.0 +0.7 7.63 0.0 +0.75 7.63 0.0 +0 7.7 0.0 +0.05 7.7 0.0 +0.1 7.7 0.0 +0.15 7.7 0.0 +0.2 7.7 0.0 +0.25 7.7 0.0 +0.3 7.7 0.0 +0.35 7.7 0.0 +0.4 7.7 0.0 +0.45 7.7 0.0 +0.5 7.7 0.0 +0.55 7.7 0.0 +0.6 7.7 0.0 +0.65 7.7 0.0 +0.7 7.7 0.0 +0.75 7.7 0.0 +0 7.77 0.0 +0.05 7.77 0.0 +0.1 7.77 0.0 +0.15 7.77 0.0 +0.2 7.77 0.0 +0.25 7.77 0.0 +0.3 7.77 0.0 +0.35 7.77 0.0 +0.4 7.77 0.0 +0.45 7.77 0.0 +0.5 7.77 0.0 +0.55 7.77 0.0 +0.6 7.77 0.0 +0.65 7.77 0.0 +0.7 7.77 0.0 +0.75 7.77 0.0 +0 7.84 0.0 +0.05 7.84 0.0 +0.1 7.84 0.0 +0.15 7.84 0.0 +0.2 7.84 0.0 +0.25 7.84 0.0 +0.3 7.84 0.0 +0.35 7.84 0.0 +0.4 7.84 0.0 +0.45 7.84 0.0 +0.5 7.84 0.0 +0.55 7.84 0.0 +0.6 7.84 0.0 +0.65 7.84 0.0 +0.7 7.84 0.0 +0.75 7.84 0.0 +0 7.91 0.0 +0.05 7.91 0.0 +0.1 7.91 0.0 +0.15 7.91 0.0 +0.2 7.91 0.0 +0.25 7.91 0.0 +0.3 7.91 0.0 +0.35 7.91 0.0 +0.4 7.91 0.0 +0.45 7.91 0.0 +0.5 7.91 0.0 +0.55 7.91 0.0 +0.6 7.91 0.0 +0.65 7.91 0.0 +0.7 7.91 0.0 +0.75 7.91 0.0 +0 7.98 0.0 +0.05 7.98 0.0 +0.1 7.98 0.0 +0.15 7.98 0.0 +0.2 7.98 0.0 +0.25 7.98 0.0 +0.3 7.98 0.0 +0.35 7.98 0.0 +0.4 7.98 0.0 +0.45 7.98 0.0 +0.5 7.98 0.0 +0.55 7.98 0.0 +0.6 7.98 0.0 +0.65 7.98 0.0 +0.7 7.98 0.0 +0.75 7.98 0.0 +0 8.05 0.0 +0.05 8.05 0.0 +0.1 8.05 0.0 +0.15 8.05 0.0 +0.2 8.05 0.0 +0.25 8.05 0.0 +0.3 8.05 0.0 +0.35 8.05 0.0 +0.4 8.05 0.0 +0.45 8.05 0.0 +0.5 8.05 0.0 +0.55 8.05 0.0 +0.6 8.05 0.0 +0.65 8.05 0.0 +0.7 8.05 0.0 +0.75 8.05 0.0 +5 0 0.0 +5.1 0 0.0 +5.2 0 0.0 +5.3 0 0.0 +5.4 0 0.0 +5.5 0 0.0 +5.6 0 0.0 +5.7 0 0.0 +5.8 0 0.0 +5.9 0 0.0 +6 0 0.0 +6.1 0 0.0 +6.2 0 0.0 +6.3 0 0.0 +6.4 0 0.0 +6.5 0 0.0 +5 0.1 0.0 +5.1 0.1 0.0 +5.2 0.1 0.0 +5.3 0.1 0.0 +5.4 0.1 0.0 +5.5 0.1 0.0 +5.6 0.1 0.0 +5.7 0.1 0.0 +5.8 0.1 0.0 +5.9 0.1 0.0 +6 0.1 0.0 +6.1 0.1 0.0 +6.2 0.1 0.0 +6.3 0.1 0.0 +6.4 0.1 0.0 +6.5 0.1 0.0 +5 0.2 0.0 +5.1 0.2 0.0 +5.2 0.2 0.0 +5.3 0.2 0.0 +5.4 0.2 0.0 +5.5 0.2 0.0 +5.6 0.2 0.0 +5.7 0.2 0.0 +5.8 0.2 0.0 +5.9 0.2 0.0 +6 0.2 0.0 +6.1 0.2 0.0 +6.2 0.2 0.0 +6.3 0.2 0.0 +6.4 0.2 0.0 +6.5 0.2 0.0 +5 0.3 0.0 +5.1 0.3 0.0 +5.2 0.3 0.0 +5.3 0.3 0.0 +5.4 0.3 0.0 +5.5 0.3 0.0 +5.6 0.3 0.0 +5.7 0.3 0.0 +5.8 0.3 0.0 +5.9 0.3 0.0 +6 0.3 0.0 +6.1 0.3 0.0 +6.2 0.3 0.0 +6.3 0.3 0.0 +6.4 0.3 0.0 +6.5 0.3 0.0 +5 0.4 0.0 +5.1 0.4 0.0 +5.2 0.4 0.0 +5.3 0.4 0.0 +5.4 0.4 0.0 +5.5 0.4 0.0 +5.6 0.4 0.0 +5.7 0.4 0.0 +5.8 0.4 0.0 +5.9 0.4 0.0 +6 0.4 0.0 +6.1 0.4 0.0 +6.2 0.4 0.0 +6.3 0.4 0.0 +6.4 0.4 0.0 +6.5 0.4 0.0 +5 0.5 0.0 +5.1 0.5 0.0 +5.2 0.5 0.0 +5.3 0.5 0.0 +5.4 0.5 0.0 +5.5 0.5 0.0 +5.6 0.5 0.0 +5.7 0.5 0.0 +5.8 0.5 0.0 +5.9 0.5 0.0 +6 0.5 0.0 +6.1 0.5 0.0 +6.2 0.5 0.0 +6.3 0.5 0.0 +6.4 0.5 0.0 +6.5 0.5 0.0 +5 0.6 0.0 +5.1 0.6 0.0 +5.2 0.6 0.0 +5.3 0.6 0.0 +5.4 0.6 0.0 +5.5 0.6 0.0 +5.6 0.6 0.0 +5.7 0.6 0.0 +5.8 0.6 0.0 +5.9 0.6 0.0 +6 0.6 0.0 +6.1 0.6 0.0 +6.2 0.6 0.0 +6.3 0.6 0.0 +6.4 0.6 0.0 +6.5 0.6 0.0 +5 0.7 0.0 +5.1 0.7 0.0 +5.2 0.7 0.0 +5.3 0.7 0.0 +5.4 0.7 0.0 +5.5 0.7 0.0 +5.6 0.7 0.0 +5.7 0.7 0.0 +5.8 0.7 0.0 +5.9 0.7 0.0 +6 0.7 0.0 +6.1 0.7 0.0 +6.2 0.7 0.0 +6.3 0.7 0.0 +6.4 0.7 0.0 +6.5 0.7 0.0 +5 0.8 0.0 +5.1 0.8 0.0 +5.2 0.8 0.0 +5.3 0.8 0.0 +5.4 0.8 0.0 +5.5 0.8 0.0 +5.6 0.8 0.0 +5.7 0.8 0.0 +5.8 0.8 0.0 +5.9 0.8 0.0 +6 0.8 0.0 +6.1 0.8 0.0 +6.2 0.8 0.0 +6.3 0.8 0.0 +6.4 0.8 0.0 +6.5 0.8 0.0 +5 0.9 0.0 +5.1 0.9 0.0 +5.2 0.9 0.0 +5.3 0.9 0.0 +5.4 0.9 0.0 +5.5 0.9 0.0 +5.6 0.9 0.0 +5.7 0.9 0.0 +5.8 0.9 0.0 +5.9 0.9 0.0 +6 0.9 0.0 +6.1 0.9 0.0 +6.2 0.9 0.0 +6.3 0.9 0.0 +6.4 0.9 0.0 +6.5 0.9 0.0 +5 1 0.0 +5.1 1 0.0 +5.2 1 0.0 +5.3 1 0.0 +5.4 1 0.0 +5.5 1 0.0 +5.6 1 0.0 +5.7 1 0.0 +5.8 1 0.0 +5.9 1 0.0 +6 1 0.0 +6.1 1 0.0 +6.2 1 0.0 +6.3 1 0.0 +6.4 1 0.0 +6.5 1 0.0 +5 1.1 0.0 +5.1 1.1 0.0 +5.2 1.1 0.0 +5.3 1.1 0.0 +5.4 1.1 0.0 +5.5 1.1 0.0 +5.6 1.1 0.0 +5.7 1.1 0.0 +5.8 1.1 0.0 +5.9 1.1 0.0 +6 1.1 0.0 +6.1 1.1 0.0 +6.2 1.1 0.0 +6.3 1.1 0.0 +6.4 1.1 0.0 +6.5 1.1 0.0 +5 1.2 0.0 +5.1 1.2 0.0 +5.2 1.2 0.0 +5.3 1.2 0.0 +5.4 1.2 0.0 +5.5 1.2 0.0 +5.6 1.2 0.0 +5.7 1.2 0.0 +5.8 1.2 0.0 +5.9 1.2 0.0 +6 1.2 0.0 +6.1 1.2 0.0 +6.2 1.2 0.0 +6.3 1.2 0.0 +6.4 1.2 0.0 +6.5 1.2 0.0 +5 1.3 0.0 +5.1 1.3 0.0 +5.2 1.3 0.0 +5.3 1.3 0.0 +5.4 1.3 0.0 +5.5 1.3 0.0 +5.6 1.3 0.0 +5.7 1.3 0.0 +5.8 1.3 0.0 +5.9 1.3 0.0 +6 1.3 0.0 +6.1 1.3 0.0 +6.2 1.3 0.0 +6.3 1.3 0.0 +6.4 1.3 0.0 +6.5 1.3 0.0 +5 1.4 0.0 +5.1 1.4 0.0 +5.2 1.4 0.0 +5.3 1.4 0.0 +5.4 1.4 0.0 +5.5 1.4 0.0 +5.6 1.4 0.0 +5.7 1.4 0.0 +5.8 1.4 0.0 +5.9 1.4 0.0 +6 1.4 0.0 +6.1 1.4 0.0 +6.2 1.4 0.0 +6.3 1.4 0.0 +6.4 1.4 0.0 +6.5 1.4 0.0 +5 1.5 0.0 +5.1 1.5 0.0 +5.2 1.5 0.0 +5.3 1.5 0.0 +5.4 1.5 0.0 +5.5 1.5 0.0 +5.6 1.5 0.0 +5.7 1.5 0.0 +5.8 1.5 0.0 +5.9 1.5 0.0 +6 1.5 0.0 +6.1 1.5 0.0 +6.2 1.5 0.0 +6.3 1.5 0.0 +6.4 1.5 0.0 +6.5 1.5 0.0 +VERTICES 1024 2048 +1 0 +1 1 +1 2 +1 3 +1 4 +1 5 +1 6 +1 7 +1 8 +1 9 +1 10 +1 11 +1 12 +1 13 +1 14 +1 15 +1 16 +1 17 +1 18 +1 19 +1 20 +1 21 +1 22 +1 23 +1 24 +1 25 +1 26 +1 27 +1 28 +1 29 +1 30 +1 31 +1 32 +1 33 +1 34 +1 35 +1 36 +1 37 +1 38 +1 39 +1 40 +1 41 +1 42 +1 43 +1 44 +1 45 +1 46 +1 47 +1 48 +1 49 +1 50 +1 51 +1 52 +1 53 +1 54 +1 55 +1 56 +1 57 +1 58 +1 59 +1 60 +1 61 +1 62 +1 63 +1 64 +1 65 +1 66 +1 67 +1 68 +1 69 +1 70 +1 71 +1 72 +1 73 +1 74 +1 75 +1 76 +1 77 +1 78 +1 79 +1 80 +1 81 +1 82 +1 83 +1 84 +1 85 +1 86 +1 87 +1 88 +1 89 +1 90 +1 91 +1 92 +1 93 +1 94 +1 95 +1 96 +1 97 +1 98 +1 99 +1 100 +1 101 +1 102 +1 103 +1 104 +1 105 +1 106 +1 107 +1 108 +1 109 +1 110 +1 111 +1 112 +1 113 +1 114 +1 115 +1 116 +1 117 +1 118 +1 119 +1 120 +1 121 +1 122 +1 123 +1 124 +1 125 +1 126 +1 127 +1 128 +1 129 +1 130 +1 131 +1 132 +1 133 +1 134 +1 135 +1 136 +1 137 +1 138 +1 139 +1 140 +1 141 +1 142 +1 143 +1 144 +1 145 +1 146 +1 147 +1 148 +1 149 +1 150 +1 151 +1 152 +1 153 +1 154 +1 155 +1 156 +1 157 +1 158 +1 159 +1 160 +1 161 +1 162 +1 163 +1 164 +1 165 +1 166 +1 167 +1 168 +1 169 +1 170 +1 171 +1 172 +1 173 +1 174 +1 175 +1 176 +1 177 +1 178 +1 179 +1 180 +1 181 +1 182 +1 183 +1 184 +1 185 +1 186 +1 187 +1 188 +1 189 +1 190 +1 191 +1 192 +1 193 +1 194 +1 195 +1 196 +1 197 +1 198 +1 199 +1 200 +1 201 +1 202 +1 203 +1 204 +1 205 +1 206 +1 207 +1 208 +1 209 +1 210 +1 211 +1 212 +1 213 +1 214 +1 215 +1 216 +1 217 +1 218 +1 219 +1 220 +1 221 +1 222 +1 223 +1 224 +1 225 +1 226 +1 227 +1 228 +1 229 +1 230 +1 231 +1 232 +1 233 +1 234 +1 235 +1 236 +1 237 +1 238 +1 239 +1 240 +1 241 +1 242 +1 243 +1 244 +1 245 +1 246 +1 247 +1 248 +1 249 +1 250 +1 251 +1 252 +1 253 +1 254 +1 255 +1 256 +1 257 +1 258 +1 259 +1 260 +1 261 +1 262 +1 263 +1 264 +1 265 +1 266 +1 267 +1 268 +1 269 +1 270 +1 271 +1 272 +1 273 +1 274 +1 275 +1 276 +1 277 +1 278 +1 279 +1 280 +1 281 +1 282 +1 283 +1 284 +1 285 +1 286 +1 287 +1 288 +1 289 +1 290 +1 291 +1 292 +1 293 +1 294 +1 295 +1 296 +1 297 +1 298 +1 299 +1 300 +1 301 +1 302 +1 303 +1 304 +1 305 +1 306 +1 307 +1 308 +1 309 +1 310 +1 311 +1 312 +1 313 +1 314 +1 315 +1 316 +1 317 +1 318 +1 319 +1 320 +1 321 +1 322 +1 323 +1 324 +1 325 +1 326 +1 327 +1 328 +1 329 +1 330 +1 331 +1 332 +1 333 +1 334 +1 335 +1 336 +1 337 +1 338 +1 339 +1 340 +1 341 +1 342 +1 343 +1 344 +1 345 +1 346 +1 347 +1 348 +1 349 +1 350 +1 351 +1 352 +1 353 +1 354 +1 355 +1 356 +1 357 +1 358 +1 359 +1 360 +1 361 +1 362 +1 363 +1 364 +1 365 +1 366 +1 367 +1 368 +1 369 +1 370 +1 371 +1 372 +1 373 +1 374 +1 375 +1 376 +1 377 +1 378 +1 379 +1 380 +1 381 +1 382 +1 383 +1 384 +1 385 +1 386 +1 387 +1 388 +1 389 +1 390 +1 391 +1 392 +1 393 +1 394 +1 395 +1 396 +1 397 +1 398 +1 399 +1 400 +1 401 +1 402 +1 403 +1 404 +1 405 +1 406 +1 407 +1 408 +1 409 +1 410 +1 411 +1 412 +1 413 +1 414 +1 415 +1 416 +1 417 +1 418 +1 419 +1 420 +1 421 +1 422 +1 423 +1 424 +1 425 +1 426 +1 427 +1 428 +1 429 +1 430 +1 431 +1 432 +1 433 +1 434 +1 435 +1 436 +1 437 +1 438 +1 439 +1 440 +1 441 +1 442 +1 443 +1 444 +1 445 +1 446 +1 447 +1 448 +1 449 +1 450 +1 451 +1 452 +1 453 +1 454 +1 455 +1 456 +1 457 +1 458 +1 459 +1 460 +1 461 +1 462 +1 463 +1 464 +1 465 +1 466 +1 467 +1 468 +1 469 +1 470 +1 471 +1 472 +1 473 +1 474 +1 475 +1 476 +1 477 +1 478 +1 479 +1 480 +1 481 +1 482 +1 483 +1 484 +1 485 +1 486 +1 487 +1 488 +1 489 +1 490 +1 491 +1 492 +1 493 +1 494 +1 495 +1 496 +1 497 +1 498 +1 499 +1 500 +1 501 +1 502 +1 503 +1 504 +1 505 +1 506 +1 507 +1 508 +1 509 +1 510 +1 511 +1 512 +1 513 +1 514 +1 515 +1 516 +1 517 +1 518 +1 519 +1 520 +1 521 +1 522 +1 523 +1 524 +1 525 +1 526 +1 527 +1 528 +1 529 +1 530 +1 531 +1 532 +1 533 +1 534 +1 535 +1 536 +1 537 +1 538 +1 539 +1 540 +1 541 +1 542 +1 543 +1 544 +1 545 +1 546 +1 547 +1 548 +1 549 +1 550 +1 551 +1 552 +1 553 +1 554 +1 555 +1 556 +1 557 +1 558 +1 559 +1 560 +1 561 +1 562 +1 563 +1 564 +1 565 +1 566 +1 567 +1 568 +1 569 +1 570 +1 571 +1 572 +1 573 +1 574 +1 575 +1 576 +1 577 +1 578 +1 579 +1 580 +1 581 +1 582 +1 583 +1 584 +1 585 +1 586 +1 587 +1 588 +1 589 +1 590 +1 591 +1 592 +1 593 +1 594 +1 595 +1 596 +1 597 +1 598 +1 599 +1 600 +1 601 +1 602 +1 603 +1 604 +1 605 +1 606 +1 607 +1 608 +1 609 +1 610 +1 611 +1 612 +1 613 +1 614 +1 615 +1 616 +1 617 +1 618 +1 619 +1 620 +1 621 +1 622 +1 623 +1 624 +1 625 +1 626 +1 627 +1 628 +1 629 +1 630 +1 631 +1 632 +1 633 +1 634 +1 635 +1 636 +1 637 +1 638 +1 639 +1 640 +1 641 +1 642 +1 643 +1 644 +1 645 +1 646 +1 647 +1 648 +1 649 +1 650 +1 651 +1 652 +1 653 +1 654 +1 655 +1 656 +1 657 +1 658 +1 659 +1 660 +1 661 +1 662 +1 663 +1 664 +1 665 +1 666 +1 667 +1 668 +1 669 +1 670 +1 671 +1 672 +1 673 +1 674 +1 675 +1 676 +1 677 +1 678 +1 679 +1 680 +1 681 +1 682 +1 683 +1 684 +1 685 +1 686 +1 687 +1 688 +1 689 +1 690 +1 691 +1 692 +1 693 +1 694 +1 695 +1 696 +1 697 +1 698 +1 699 +1 700 +1 701 +1 702 +1 703 +1 704 +1 705 +1 706 +1 707 +1 708 +1 709 +1 710 +1 711 +1 712 +1 713 +1 714 +1 715 +1 716 +1 717 +1 718 +1 719 +1 720 +1 721 +1 722 +1 723 +1 724 +1 725 +1 726 +1 727 +1 728 +1 729 +1 730 +1 731 +1 732 +1 733 +1 734 +1 735 +1 736 +1 737 +1 738 +1 739 +1 740 +1 741 +1 742 +1 743 +1 744 +1 745 +1 746 +1 747 +1 748 +1 749 +1 750 +1 751 +1 752 +1 753 +1 754 +1 755 +1 756 +1 757 +1 758 +1 759 +1 760 +1 761 +1 762 +1 763 +1 764 +1 765 +1 766 +1 767 +1 768 +1 769 +1 770 +1 771 +1 772 +1 773 +1 774 +1 775 +1 776 +1 777 +1 778 +1 779 +1 780 +1 781 +1 782 +1 783 +1 784 +1 785 +1 786 +1 787 +1 788 +1 789 +1 790 +1 791 +1 792 +1 793 +1 794 +1 795 +1 796 +1 797 +1 798 +1 799 +1 800 +1 801 +1 802 +1 803 +1 804 +1 805 +1 806 +1 807 +1 808 +1 809 +1 810 +1 811 +1 812 +1 813 +1 814 +1 815 +1 816 +1 817 +1 818 +1 819 +1 820 +1 821 +1 822 +1 823 +1 824 +1 825 +1 826 +1 827 +1 828 +1 829 +1 830 +1 831 +1 832 +1 833 +1 834 +1 835 +1 836 +1 837 +1 838 +1 839 +1 840 +1 841 +1 842 +1 843 +1 844 +1 845 +1 846 +1 847 +1 848 +1 849 +1 850 +1 851 +1 852 +1 853 +1 854 +1 855 +1 856 +1 857 +1 858 +1 859 +1 860 +1 861 +1 862 +1 863 +1 864 +1 865 +1 866 +1 867 +1 868 +1 869 +1 870 +1 871 +1 872 +1 873 +1 874 +1 875 +1 876 +1 877 +1 878 +1 879 +1 880 +1 881 +1 882 +1 883 +1 884 +1 885 +1 886 +1 887 +1 888 +1 889 +1 890 +1 891 +1 892 +1 893 +1 894 +1 895 +1 896 +1 897 +1 898 +1 899 +1 900 +1 901 +1 902 +1 903 +1 904 +1 905 +1 906 +1 907 +1 908 +1 909 +1 910 +1 911 +1 912 +1 913 +1 914 +1 915 +1 916 +1 917 +1 918 +1 919 +1 920 +1 921 +1 922 +1 923 +1 924 +1 925 +1 926 +1 927 +1 928 +1 929 +1 930 +1 931 +1 932 +1 933 +1 934 +1 935 +1 936 +1 937 +1 938 +1 939 +1 940 +1 941 +1 942 +1 943 +1 944 +1 945 +1 946 +1 947 +1 948 +1 949 +1 950 +1 951 +1 952 +1 953 +1 954 +1 955 +1 956 +1 957 +1 958 +1 959 +1 960 +1 961 +1 962 +1 963 +1 964 +1 965 +1 966 +1 967 +1 968 +1 969 +1 970 +1 971 +1 972 +1 973 +1 974 +1 975 +1 976 +1 977 +1 978 +1 979 +1 980 +1 981 +1 982 +1 983 +1 984 +1 985 +1 986 +1 987 +1 988 +1 989 +1 990 +1 991 +1 992 +1 993 +1 994 +1 995 +1 996 +1 997 +1 998 +1 999 +1 1000 +1 1001 +1 1002 +1 1003 +1 1004 +1 1005 +1 1006 +1 1007 +1 1008 +1 1009 +1 1010 +1 1011 +1 1012 +1 1013 +1 1014 +1 1015 +1 1016 +1 1017 +1 1018 +1 1019 +1 1020 +1 1021 +1 1022 +1 1023 +POINT_DATA 1024 +SCALARS attr0 float +LOOKUP_TABLE default +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +SCALARS attr1 float +LOOKUP_TABLE default +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +2 +2 +2 +2 +2 +2 +2 +2 +2 +2 +2 +2 +2 +2 +2 +2 +3 +3 +3 +3 +3 +3 +3 +3 +3 +3 +3 +3 +3 +3 +3 +3 +4 +4 +4 +4 +4 +4 +4 +4 +4 +4 +4 +4 +4 +4 +4 +4 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +6 +6 +6 +6 +6 +6 +6 +6 +6 +6 +6 +6 +6 +6 +6 +6 +7 +7 +7 +7 +7 +7 +7 +7 +7 +7 +7 +7 +7 +7 +7 +7 +8 +8 +8 +8 +8 +8 +8 +8 +8 +8 +8 +8 +8 +8 +8 +8 +9 +9 +9 +9 +9 +9 +9 +9 +9 +9 +9 +9 +9 +9 +9 +9 +10 +10 +10 +10 +10 +10 +10 +10 +10 +10 +10 +10 +10 +10 +10 +10 +11 +11 +11 +11 +11 +11 +11 +11 +11 +11 +11 +11 +11 +11 +11 +11 +12 +12 +12 +12 +12 +12 +12 +12 +12 +12 +12 +12 +12 +12 +12 +12 +13 +13 +13 +13 +13 +13 +13 +13 +13 +13 +13 +13 +13 +13 +13 +13 +14 +14 +14 +14 +14 +14 +14 +14 +14 +14 +14 +14 +14 +14 +14 +14 +15 +15 +15 +15 +15 +15 +15 +15 +15 +15 +15 +15 +15 +15 +15 +15 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +2 +2 +2 +2 +2 +2 +2 +2 +2 +2 +2 +2 +2 +2 +2 +2 +3 +3 +3 +3 +3 +3 +3 +3 +3 +3 +3 +3 +3 +3 +3 +3 +4 +4 +4 +4 +4 +4 +4 +4 +4 +4 +4 +4 +4 +4 +4 +4 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +6 +6 +6 +6 +6 +6 +6 +6 +6 +6 +6 +6 +6 +6 +6 +6 +7 +7 +7 +7 +7 +7 +7 +7 +7 +7 +7 +7 +7 +7 +7 +7 +8 +8 +8 +8 +8 +8 +8 +8 +8 +8 +8 +8 +8 +8 +8 +8 +9 +9 +9 +9 +9 +9 +9 +9 +9 +9 +9 +9 +9 +9 +9 +9 +10 +10 +10 +10 +10 +10 +10 +10 +10 +10 +10 +10 +10 +10 +10 +10 +11 +11 +11 +11 +11 +11 +11 +11 +11 +11 +11 +11 +11 +11 +11 +11 +12 +12 +12 +12 +12 +12 +12 +12 +12 +12 +12 +12 +12 +12 +12 +12 +13 +13 +13 +13 +13 +13 +13 +13 +13 +13 +13 +13 +13 +13 +13 +13 +14 +14 +14 +14 +14 +14 +14 +14 +14 +14 +14 +14 +14 +14 +14 +14 +15 +15 +15 +15 +15 +15 +15 +15 +15 +15 +15 +15 +15 +15 +15 +15 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +2 +2 +2 +2 +2 +2 +2 +2 +2 +2 +2 +2 +2 +2 +2 +2 +3 +3 +3 +3 +3 +3 +3 +3 +3 +3 +3 +3 +3 +3 +3 +3 +4 +4 +4 +4 +4 +4 +4 +4 +4 +4 +4 +4 +4 +4 +4 +4 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +6 +6 +6 +6 +6 +6 +6 +6 +6 +6 +6 +6 +6 +6 +6 +6 +7 +7 +7 +7 +7 +7 +7 +7 +7 +7 +7 +7 +7 +7 +7 +7 +8 +8 +8 +8 +8 +8 +8 +8 +8 +8 +8 +8 +8 +8 +8 +8 +9 +9 +9 +9 +9 +9 +9 +9 +9 +9 +9 +9 +9 +9 +9 +9 +10 +10 +10 +10 +10 +10 +10 +10 +10 +10 +10 +10 +10 +10 +10 +10 +11 +11 +11 +11 +11 +11 +11 +11 +11 +11 +11 +11 +11 +11 +11 +11 +12 +12 +12 +12 +12 +12 +12 +12 +12 +12 +12 +12 +12 +12 +12 +12 +13 +13 +13 +13 +13 +13 +13 +13 +13 +13 +13 +13 +13 +13 +13 +13 +14 +14 +14 +14 +14 +14 +14 +14 +14 +14 +14 +14 +14 +14 +14 +14 +15 +15 +15 +15 +15 +15 +15 +15 +15 +15 +15 +15 +15 +15 +15 +15 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +2 +2 +2 +2 +2 +2 +2 +2 +2 +2 +2 +2 +2 +2 +2 +2 +3 +3 +3 +3 +3 +3 +3 +3 +3 +3 +3 +3 +3 +3 +3 +3 +4 +4 +4 +4 +4 +4 +4 +4 +4 +4 +4 +4 +4 +4 +4 +4 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +6 +6 +6 +6 +6 +6 +6 +6 +6 +6 +6 +6 +6 +6 +6 +6 +7 +7 +7 +7 +7 +7 +7 +7 +7 +7 +7 +7 +7 +7 +7 +7 +8 +8 +8 +8 +8 +8 +8 +8 +8 +8 +8 +8 +8 +8 +8 +8 +9 +9 +9 +9 +9 +9 +9 +9 +9 +9 +9 +9 +9 +9 +9 +9 +10 +10 +10 +10 +10 +10 +10 +10 +10 +10 +10 +10 +10 +10 +10 +10 +11 +11 +11 +11 +11 +11 +11 +11 +11 +11 +11 +11 +11 +11 +11 +11 +12 +12 +12 +12 +12 +12 +12 +12 +12 +12 +12 +12 +12 +12 +12 +12 +13 +13 +13 +13 +13 +13 +13 +13 +13 +13 +13 +13 +13 +13 +13 +13 +14 +14 +14 +14 +14 +14 +14 +14 +14 +14 +14 +14 +14 +14 +14 +14 +15 +15 +15 +15 +15 +15 +15 +15 +15 +15 +15 +15 +15 +15 +15 +15 +SCALARS attr2 float +LOOKUP_TABLE default +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +SCALARS attr3 float +LOOKUP_TABLE default +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +VECTORS attr4 float +0 0 0 +1 1 1 +2 2 2 +3 3 3 +4 4 4 +5 5 5 +6 6 6 +7 7 7 +8 8 8 +9 9 9 +10 10 10 +11 11 11 +12 12 12 +13 13 13 +14 14 14 +15 15 15 +16 16 16 +17 17 17 +18 18 18 +19 19 19 +20 20 20 +21 21 21 +22 22 22 +23 23 23 +24 24 24 +25 25 25 +26 26 26 +27 27 27 +28 28 28 +29 29 29 +30 30 30 +31 31 31 +32 32 32 +33 33 33 +34 34 34 +35 35 35 +36 36 36 +37 37 37 +38 38 38 +39 39 39 +40 40 40 +41 41 41 +42 42 42 +43 43 43 +44 44 44 +45 45 45 +46 46 46 +47 47 47 +48 48 48 +49 49 49 +50 50 50 +51 51 51 +52 52 52 +53 53 53 +54 54 54 +55 55 55 +56 56 56 +57 57 57 +58 58 58 +59 59 59 +60 60 60 +61 61 61 +62 62 62 +63 63 63 +64 64 64 +65 65 65 +66 66 66 +67 67 67 +68 68 68 +69 69 69 +70 70 70 +71 71 71 +72 72 72 +73 73 73 +74 74 74 +75 75 75 +76 76 76 +77 77 77 +78 78 78 +79 79 79 +80 80 80 +81 81 81 +82 82 82 +83 83 83 +84 84 84 +85 85 85 +86 86 86 +87 87 87 +88 88 88 +89 89 89 +90 90 90 +91 91 91 +92 92 92 +93 93 93 +94 94 94 +95 95 95 +96 96 96 +97 97 97 +98 98 98 +99 99 99 +100 100 100 +101 101 101 +102 102 102 +103 103 103 +104 104 104 +105 105 105 +106 106 106 +107 107 107 +108 108 108 +109 109 109 +110 110 110 +111 111 111 +112 112 112 +113 113 113 +114 114 114 +115 115 115 +116 116 116 +117 117 117 +118 118 118 +119 119 119 +120 120 120 +121 121 121 +122 122 122 +123 123 123 +124 124 124 +125 125 125 +126 126 126 +127 127 127 +128 128 128 +129 129 129 +130 130 130 +131 131 131 +132 132 132 +133 133 133 +134 134 134 +135 135 135 +136 136 136 +137 137 137 +138 138 138 +139 139 139 +140 140 140 +141 141 141 +142 142 142 +143 143 143 +144 144 144 +145 145 145 +146 146 146 +147 147 147 +148 148 148 +149 149 149 +150 150 150 +151 151 151 +152 152 152 +153 153 153 +154 154 154 +155 155 155 +156 156 156 +157 157 157 +158 158 158 +159 159 159 +160 160 160 +161 161 161 +162 162 162 +163 163 163 +164 164 164 +165 165 165 +166 166 166 +167 167 167 +168 168 168 +169 169 169 +170 170 170 +171 171 171 +172 172 172 +173 173 173 +174 174 174 +175 175 175 +176 176 176 +177 177 177 +178 178 178 +179 179 179 +180 180 180 +181 181 181 +182 182 182 +183 183 183 +184 184 184 +185 185 185 +186 186 186 +187 187 187 +188 188 188 +189 189 189 +190 190 190 +191 191 191 +192 192 192 +193 193 193 +194 194 194 +195 195 195 +196 196 196 +197 197 197 +198 198 198 +199 199 199 +200 200 200 +201 201 201 +202 202 202 +203 203 203 +204 204 204 +205 205 205 +206 206 206 +207 207 207 +208 208 208 +209 209 209 +210 210 210 +211 211 211 +212 212 212 +213 213 213 +214 214 214 +215 215 215 +216 216 216 +217 217 217 +218 218 218 +219 219 219 +220 220 220 +221 221 221 +222 222 222 +223 223 223 +224 224 224 +225 225 225 +226 226 226 +227 227 227 +228 228 228 +229 229 229 +230 230 230 +231 231 231 +232 232 232 +233 233 233 +234 234 234 +235 235 235 +236 236 236 +237 237 237 +238 238 238 +239 239 239 +240 240 240 +241 241 241 +242 242 242 +243 243 243 +244 244 244 +245 245 245 +246 246 246 +247 247 247 +248 248 248 +249 249 249 +250 250 250 +251 251 251 +252 252 252 +253 253 253 +254 254 254 +255 255 255 +0 0 0 +1 1 1 +2 2 2 +3 3 3 +4 4 4 +5 5 5 +6 6 6 +7 7 7 +8 8 8 +9 9 9 +10 10 10 +11 11 11 +12 12 12 +13 13 13 +14 14 14 +15 15 15 +16 16 16 +17 17 17 +18 18 18 +19 19 19 +20 20 20 +21 21 21 +22 22 22 +23 23 23 +24 24 24 +25 25 25 +26 26 26 +27 27 27 +28 28 28 +29 29 29 +30 30 30 +31 31 31 +32 32 32 +33 33 33 +34 34 34 +35 35 35 +36 36 36 +37 37 37 +38 38 38 +39 39 39 +40 40 40 +41 41 41 +42 42 42 +43 43 43 +44 44 44 +45 45 45 +46 46 46 +47 47 47 +48 48 48 +49 49 49 +50 50 50 +51 51 51 +52 52 52 +53 53 53 +54 54 54 +55 55 55 +56 56 56 +57 57 57 +58 58 58 +59 59 59 +60 60 60 +61 61 61 +62 62 62 +63 63 63 +64 64 64 +65 65 65 +66 66 66 +67 67 67 +68 68 68 +69 69 69 +70 70 70 +71 71 71 +72 72 72 +73 73 73 +74 74 74 +75 75 75 +76 76 76 +77 77 77 +78 78 78 +79 79 79 +80 80 80 +81 81 81 +82 82 82 +83 83 83 +84 84 84 +85 85 85 +86 86 86 +87 87 87 +88 88 88 +89 89 89 +90 90 90 +91 91 91 +92 92 92 +93 93 93 +94 94 94 +95 95 95 +96 96 96 +97 97 97 +98 98 98 +99 99 99 +100 100 100 +101 101 101 +102 102 102 +103 103 103 +104 104 104 +105 105 105 +106 106 106 +107 107 107 +108 108 108 +109 109 109 +110 110 110 +111 111 111 +112 112 112 +113 113 113 +114 114 114 +115 115 115 +116 116 116 +117 117 117 +118 118 118 +119 119 119 +120 120 120 +121 121 121 +122 122 122 +123 123 123 +124 124 124 +125 125 125 +126 126 126 +127 127 127 +128 128 128 +129 129 129 +130 130 130 +131 131 131 +132 132 132 +133 133 133 +134 134 134 +135 135 135 +136 136 136 +137 137 137 +138 138 138 +139 139 139 +140 140 140 +141 141 141 +142 142 142 +143 143 143 +144 144 144 +145 145 145 +146 146 146 +147 147 147 +148 148 148 +149 149 149 +150 150 150 +151 151 151 +152 152 152 +153 153 153 +154 154 154 +155 155 155 +156 156 156 +157 157 157 +158 158 158 +159 159 159 +160 160 160 +161 161 161 +162 162 162 +163 163 163 +164 164 164 +165 165 165 +166 166 166 +167 167 167 +168 168 168 +169 169 169 +170 170 170 +171 171 171 +172 172 172 +173 173 173 +174 174 174 +175 175 175 +176 176 176 +177 177 177 +178 178 178 +179 179 179 +180 180 180 +181 181 181 +182 182 182 +183 183 183 +184 184 184 +185 185 185 +186 186 186 +187 187 187 +188 188 188 +189 189 189 +190 190 190 +191 191 191 +192 192 192 +193 193 193 +194 194 194 +195 195 195 +196 196 196 +197 197 197 +198 198 198 +199 199 199 +200 200 200 +201 201 201 +202 202 202 +203 203 203 +204 204 204 +205 205 205 +206 206 206 +207 207 207 +208 208 208 +209 209 209 +210 210 210 +211 211 211 +212 212 212 +213 213 213 +214 214 214 +215 215 215 +216 216 216 +217 217 217 +218 218 218 +219 219 219 +220 220 220 +221 221 221 +222 222 222 +223 223 223 +224 224 224 +225 225 225 +226 226 226 +227 227 227 +228 228 228 +229 229 229 +230 230 230 +231 231 231 +232 232 232 +233 233 233 +234 234 234 +235 235 235 +236 236 236 +237 237 237 +238 238 238 +239 239 239 +240 240 240 +241 241 241 +242 242 242 +243 243 243 +244 244 244 +245 245 245 +246 246 246 +247 247 247 +248 248 248 +249 249 249 +250 250 250 +251 251 251 +252 252 252 +253 253 253 +254 254 254 +255 255 255 +0 0 0 +1 1 1 +2 2 2 +3 3 3 +4 4 4 +5 5 5 +6 6 6 +7 7 7 +8 8 8 +9 9 9 +10 10 10 +11 11 11 +12 12 12 +13 13 13 +14 14 14 +15 15 15 +16 16 16 +17 17 17 +18 18 18 +19 19 19 +20 20 20 +21 21 21 +22 22 22 +23 23 23 +24 24 24 +25 25 25 +26 26 26 +27 27 27 +28 28 28 +29 29 29 +30 30 30 +31 31 31 +32 32 32 +33 33 33 +34 34 34 +35 35 35 +36 36 36 +37 37 37 +38 38 38 +39 39 39 +40 40 40 +41 41 41 +42 42 42 +43 43 43 +44 44 44 +45 45 45 +46 46 46 +47 47 47 +48 48 48 +49 49 49 +50 50 50 +51 51 51 +52 52 52 +53 53 53 +54 54 54 +55 55 55 +56 56 56 +57 57 57 +58 58 58 +59 59 59 +60 60 60 +61 61 61 +62 62 62 +63 63 63 +64 64 64 +65 65 65 +66 66 66 +67 67 67 +68 68 68 +69 69 69 +70 70 70 +71 71 71 +72 72 72 +73 73 73 +74 74 74 +75 75 75 +76 76 76 +77 77 77 +78 78 78 +79 79 79 +80 80 80 +81 81 81 +82 82 82 +83 83 83 +84 84 84 +85 85 85 +86 86 86 +87 87 87 +88 88 88 +89 89 89 +90 90 90 +91 91 91 +92 92 92 +93 93 93 +94 94 94 +95 95 95 +96 96 96 +97 97 97 +98 98 98 +99 99 99 +100 100 100 +101 101 101 +102 102 102 +103 103 103 +104 104 104 +105 105 105 +106 106 106 +107 107 107 +108 108 108 +109 109 109 +110 110 110 +111 111 111 +112 112 112 +113 113 113 +114 114 114 +115 115 115 +116 116 116 +117 117 117 +118 118 118 +119 119 119 +120 120 120 +121 121 121 +122 122 122 +123 123 123 +124 124 124 +125 125 125 +126 126 126 +127 127 127 +128 128 128 +129 129 129 +130 130 130 +131 131 131 +132 132 132 +133 133 133 +134 134 134 +135 135 135 +136 136 136 +137 137 137 +138 138 138 +139 139 139 +140 140 140 +141 141 141 +142 142 142 +143 143 143 +144 144 144 +145 145 145 +146 146 146 +147 147 147 +148 148 148 +149 149 149 +150 150 150 +151 151 151 +152 152 152 +153 153 153 +154 154 154 +155 155 155 +156 156 156 +157 157 157 +158 158 158 +159 159 159 +160 160 160 +161 161 161 +162 162 162 +163 163 163 +164 164 164 +165 165 165 +166 166 166 +167 167 167 +168 168 168 +169 169 169 +170 170 170 +171 171 171 +172 172 172 +173 173 173 +174 174 174 +175 175 175 +176 176 176 +177 177 177 +178 178 178 +179 179 179 +180 180 180 +181 181 181 +182 182 182 +183 183 183 +184 184 184 +185 185 185 +186 186 186 +187 187 187 +188 188 188 +189 189 189 +190 190 190 +191 191 191 +192 192 192 +193 193 193 +194 194 194 +195 195 195 +196 196 196 +197 197 197 +198 198 198 +199 199 199 +200 200 200 +201 201 201 +202 202 202 +203 203 203 +204 204 204 +205 205 205 +206 206 206 +207 207 207 +208 208 208 +209 209 209 +210 210 210 +211 211 211 +212 212 212 +213 213 213 +214 214 214 +215 215 215 +216 216 216 +217 217 217 +218 218 218 +219 219 219 +220 220 220 +221 221 221 +222 222 222 +223 223 223 +224 224 224 +225 225 225 +226 226 226 +227 227 227 +228 228 228 +229 229 229 +230 230 230 +231 231 231 +232 232 232 +233 233 233 +234 234 234 +235 235 235 +236 236 236 +237 237 237 +238 238 238 +239 239 239 +240 240 240 +241 241 241 +242 242 242 +243 243 243 +244 244 244 +245 245 245 +246 246 246 +247 247 247 +248 248 248 +249 249 249 +250 250 250 +251 251 251 +252 252 252 +253 253 253 +254 254 254 +255 255 255 +0 0 0 +1 1 1 +2 2 2 +3 3 3 +4 4 4 +5 5 5 +6 6 6 +7 7 7 +8 8 8 +9 9 9 +10 10 10 +11 11 11 +12 12 12 +13 13 13 +14 14 14 +15 15 15 +16 16 16 +17 17 17 +18 18 18 +19 19 19 +20 20 20 +21 21 21 +22 22 22 +23 23 23 +24 24 24 +25 25 25 +26 26 26 +27 27 27 +28 28 28 +29 29 29 +30 30 30 +31 31 31 +32 32 32 +33 33 33 +34 34 34 +35 35 35 +36 36 36 +37 37 37 +38 38 38 +39 39 39 +40 40 40 +41 41 41 +42 42 42 +43 43 43 +44 44 44 +45 45 45 +46 46 46 +47 47 47 +48 48 48 +49 49 49 +50 50 50 +51 51 51 +52 52 52 +53 53 53 +54 54 54 +55 55 55 +56 56 56 +57 57 57 +58 58 58 +59 59 59 +60 60 60 +61 61 61 +62 62 62 +63 63 63 +64 64 64 +65 65 65 +66 66 66 +67 67 67 +68 68 68 +69 69 69 +70 70 70 +71 71 71 +72 72 72 +73 73 73 +74 74 74 +75 75 75 +76 76 76 +77 77 77 +78 78 78 +79 79 79 +80 80 80 +81 81 81 +82 82 82 +83 83 83 +84 84 84 +85 85 85 +86 86 86 +87 87 87 +88 88 88 +89 89 89 +90 90 90 +91 91 91 +92 92 92 +93 93 93 +94 94 94 +95 95 95 +96 96 96 +97 97 97 +98 98 98 +99 99 99 +100 100 100 +101 101 101 +102 102 102 +103 103 103 +104 104 104 +105 105 105 +106 106 106 +107 107 107 +108 108 108 +109 109 109 +110 110 110 +111 111 111 +112 112 112 +113 113 113 +114 114 114 +115 115 115 +116 116 116 +117 117 117 +118 118 118 +119 119 119 +120 120 120 +121 121 121 +122 122 122 +123 123 123 +124 124 124 +125 125 125 +126 126 126 +127 127 127 +128 128 128 +129 129 129 +130 130 130 +131 131 131 +132 132 132 +133 133 133 +134 134 134 +135 135 135 +136 136 136 +137 137 137 +138 138 138 +139 139 139 +140 140 140 +141 141 141 +142 142 142 +143 143 143 +144 144 144 +145 145 145 +146 146 146 +147 147 147 +148 148 148 +149 149 149 +150 150 150 +151 151 151 +152 152 152 +153 153 153 +154 154 154 +155 155 155 +156 156 156 +157 157 157 +158 158 158 +159 159 159 +160 160 160 +161 161 161 +162 162 162 +163 163 163 +164 164 164 +165 165 165 +166 166 166 +167 167 167 +168 168 168 +169 169 169 +170 170 170 +171 171 171 +172 172 172 +173 173 173 +174 174 174 +175 175 175 +176 176 176 +177 177 177 +178 178 178 +179 179 179 +180 180 180 +181 181 181 +182 182 182 +183 183 183 +184 184 184 +185 185 185 +186 186 186 +187 187 187 +188 188 188 +189 189 189 +190 190 190 +191 191 191 +192 192 192 +193 193 193 +194 194 194 +195 195 195 +196 196 196 +197 197 197 +198 198 198 +199 199 199 +200 200 200 +201 201 201 +202 202 202 +203 203 203 +204 204 204 +205 205 205 +206 206 206 +207 207 207 +208 208 208 +209 209 209 +210 210 210 +211 211 211 +212 212 212 +213 213 213 +214 214 214 +215 215 215 +216 216 216 +217 217 217 +218 218 218 +219 219 219 +220 220 220 +221 221 221 +222 222 222 +223 223 223 +224 224 224 +225 225 225 +226 226 226 +227 227 227 +228 228 228 +229 229 229 +230 230 230 +231 231 231 +232 232 232 +233 233 233 +234 234 234 +235 235 235 +236 236 236 +237 237 237 +238 238 238 +239 239 239 +240 240 240 +241 241 241 +242 242 242 +243 243 243 +244 244 244 +245 245 245 +246 246 246 +247 247 247 +248 248 248 +249 249 249 +250 250 250 +251 251 251 +252 252 252 +253 253 253 +254 254 254 +255 255 255 +SCALARS attr5_0_0 float +LOOKUP_TABLE default +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +36 +37 +38 +39 +40 +41 +42 +43 +44 +45 +46 +47 +48 +49 +50 +51 +52 +53 +54 +55 +56 +57 +58 +59 +60 +61 +62 +63 +64 +65 +66 +67 +68 +69 +70 +71 +72 +73 +74 +75 +76 +77 +78 +79 +80 +81 +82 +83 +84 +85 +86 +87 +88 +89 +90 +91 +92 +93 +94 +95 +96 +97 +98 +99 +100 +101 +102 +103 +104 +105 +106 +107 +108 +109 +110 +111 +112 +113 +114 +115 +116 +117 +118 +119 +120 +121 +122 +123 +124 +125 +126 +127 +128 +129 +130 +131 +132 +133 +134 +135 +136 +137 +138 +139 +140 +141 +142 +143 +144 +145 +146 +147 +148 +149 +150 +151 +152 +153 +154 +155 +156 +157 +158 +159 +160 +161 +162 +163 +164 +165 +166 +167 +168 +169 +170 +171 +172 +173 +174 +175 +176 +177 +178 +179 +180 +181 +182 +183 +184 +185 +186 +187 +188 +189 +190 +191 +192 +193 +194 +195 +196 +197 +198 +199 +200 +201 +202 +203 +204 +205 +206 +207 +208 +209 +210 +211 +212 +213 +214 +215 +216 +217 +218 +219 +220 +221 +222 +223 +224 +225 +226 +227 +228 +229 +230 +231 +232 +233 +234 +235 +236 +237 +238 +239 +240 +241 +242 +243 +244 +245 +246 +247 +248 +249 +250 +251 +252 +253 +254 +255 +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +36 +37 +38 +39 +40 +41 +42 +43 +44 +45 +46 +47 +48 +49 +50 +51 +52 +53 +54 +55 +56 +57 +58 +59 +60 +61 +62 +63 +64 +65 +66 +67 +68 +69 +70 +71 +72 +73 +74 +75 +76 +77 +78 +79 +80 +81 +82 +83 +84 +85 +86 +87 +88 +89 +90 +91 +92 +93 +94 +95 +96 +97 +98 +99 +100 +101 +102 +103 +104 +105 +106 +107 +108 +109 +110 +111 +112 +113 +114 +115 +116 +117 +118 +119 +120 +121 +122 +123 +124 +125 +126 +127 +128 +129 +130 +131 +132 +133 +134 +135 +136 +137 +138 +139 +140 +141 +142 +143 +144 +145 +146 +147 +148 +149 +150 +151 +152 +153 +154 +155 +156 +157 +158 +159 +160 +161 +162 +163 +164 +165 +166 +167 +168 +169 +170 +171 +172 +173 +174 +175 +176 +177 +178 +179 +180 +181 +182 +183 +184 +185 +186 +187 +188 +189 +190 +191 +192 +193 +194 +195 +196 +197 +198 +199 +200 +201 +202 +203 +204 +205 +206 +207 +208 +209 +210 +211 +212 +213 +214 +215 +216 +217 +218 +219 +220 +221 +222 +223 +224 +225 +226 +227 +228 +229 +230 +231 +232 +233 +234 +235 +236 +237 +238 +239 +240 +241 +242 +243 +244 +245 +246 +247 +248 +249 +250 +251 +252 +253 +254 +255 +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +36 +37 +38 +39 +40 +41 +42 +43 +44 +45 +46 +47 +48 +49 +50 +51 +52 +53 +54 +55 +56 +57 +58 +59 +60 +61 +62 +63 +64 +65 +66 +67 +68 +69 +70 +71 +72 +73 +74 +75 +76 +77 +78 +79 +80 +81 +82 +83 +84 +85 +86 +87 +88 +89 +90 +91 +92 +93 +94 +95 +96 +97 +98 +99 +100 +101 +102 +103 +104 +105 +106 +107 +108 +109 +110 +111 +112 +113 +114 +115 +116 +117 +118 +119 +120 +121 +122 +123 +124 +125 +126 +127 +128 +129 +130 +131 +132 +133 +134 +135 +136 +137 +138 +139 +140 +141 +142 +143 +144 +145 +146 +147 +148 +149 +150 +151 +152 +153 +154 +155 +156 +157 +158 +159 +160 +161 +162 +163 +164 +165 +166 +167 +168 +169 +170 +171 +172 +173 +174 +175 +176 +177 +178 +179 +180 +181 +182 +183 +184 +185 +186 +187 +188 +189 +190 +191 +192 +193 +194 +195 +196 +197 +198 +199 +200 +201 +202 +203 +204 +205 +206 +207 +208 +209 +210 +211 +212 +213 +214 +215 +216 +217 +218 +219 +220 +221 +222 +223 +224 +225 +226 +227 +228 +229 +230 +231 +232 +233 +234 +235 +236 +237 +238 +239 +240 +241 +242 +243 +244 +245 +246 +247 +248 +249 +250 +251 +252 +253 +254 +255 +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +36 +37 +38 +39 +40 +41 +42 +43 +44 +45 +46 +47 +48 +49 +50 +51 +52 +53 +54 +55 +56 +57 +58 +59 +60 +61 +62 +63 +64 +65 +66 +67 +68 +69 +70 +71 +72 +73 +74 +75 +76 +77 +78 +79 +80 +81 +82 +83 +84 +85 +86 +87 +88 +89 +90 +91 +92 +93 +94 +95 +96 +97 +98 +99 +100 +101 +102 +103 +104 +105 +106 +107 +108 +109 +110 +111 +112 +113 +114 +115 +116 +117 +118 +119 +120 +121 +122 +123 +124 +125 +126 +127 +128 +129 +130 +131 +132 +133 +134 +135 +136 +137 +138 +139 +140 +141 +142 +143 +144 +145 +146 +147 +148 +149 +150 +151 +152 +153 +154 +155 +156 +157 +158 +159 +160 +161 +162 +163 +164 +165 +166 +167 +168 +169 +170 +171 +172 +173 +174 +175 +176 +177 +178 +179 +180 +181 +182 +183 +184 +185 +186 +187 +188 +189 +190 +191 +192 +193 +194 +195 +196 +197 +198 +199 +200 +201 +202 +203 +204 +205 +206 +207 +208 +209 +210 +211 +212 +213 +214 +215 +216 +217 +218 +219 +220 +221 +222 +223 +224 +225 +226 +227 +228 +229 +230 +231 +232 +233 +234 +235 +236 +237 +238 +239 +240 +241 +242 +243 +244 +245 +246 +247 +248 +249 +250 +251 +252 +253 +254 +255 +SCALARS attr5_0_1 float +LOOKUP_TABLE default +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +36 +37 +38 +39 +40 +41 +42 +43 +44 +45 +46 +47 +48 +49 +50 +51 +52 +53 +54 +55 +56 +57 +58 +59 +60 +61 +62 +63 +64 +65 +66 +67 +68 +69 +70 +71 +72 +73 +74 +75 +76 +77 +78 +79 +80 +81 +82 +83 +84 +85 +86 +87 +88 +89 +90 +91 +92 +93 +94 +95 +96 +97 +98 +99 +100 +101 +102 +103 +104 +105 +106 +107 +108 +109 +110 +111 +112 +113 +114 +115 +116 +117 +118 +119 +120 +121 +122 +123 +124 +125 +126 +127 +128 +129 +130 +131 +132 +133 +134 +135 +136 +137 +138 +139 +140 +141 +142 +143 +144 +145 +146 +147 +148 +149 +150 +151 +152 +153 +154 +155 +156 +157 +158 +159 +160 +161 +162 +163 +164 +165 +166 +167 +168 +169 +170 +171 +172 +173 +174 +175 +176 +177 +178 +179 +180 +181 +182 +183 +184 +185 +186 +187 +188 +189 +190 +191 +192 +193 +194 +195 +196 +197 +198 +199 +200 +201 +202 +203 +204 +205 +206 +207 +208 +209 +210 +211 +212 +213 +214 +215 +216 +217 +218 +219 +220 +221 +222 +223 +224 +225 +226 +227 +228 +229 +230 +231 +232 +233 +234 +235 +236 +237 +238 +239 +240 +241 +242 +243 +244 +245 +246 +247 +248 +249 +250 +251 +252 +253 +254 +255 +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +36 +37 +38 +39 +40 +41 +42 +43 +44 +45 +46 +47 +48 +49 +50 +51 +52 +53 +54 +55 +56 +57 +58 +59 +60 +61 +62 +63 +64 +65 +66 +67 +68 +69 +70 +71 +72 +73 +74 +75 +76 +77 +78 +79 +80 +81 +82 +83 +84 +85 +86 +87 +88 +89 +90 +91 +92 +93 +94 +95 +96 +97 +98 +99 +100 +101 +102 +103 +104 +105 +106 +107 +108 +109 +110 +111 +112 +113 +114 +115 +116 +117 +118 +119 +120 +121 +122 +123 +124 +125 +126 +127 +128 +129 +130 +131 +132 +133 +134 +135 +136 +137 +138 +139 +140 +141 +142 +143 +144 +145 +146 +147 +148 +149 +150 +151 +152 +153 +154 +155 +156 +157 +158 +159 +160 +161 +162 +163 +164 +165 +166 +167 +168 +169 +170 +171 +172 +173 +174 +175 +176 +177 +178 +179 +180 +181 +182 +183 +184 +185 +186 +187 +188 +189 +190 +191 +192 +193 +194 +195 +196 +197 +198 +199 +200 +201 +202 +203 +204 +205 +206 +207 +208 +209 +210 +211 +212 +213 +214 +215 +216 +217 +218 +219 +220 +221 +222 +223 +224 +225 +226 +227 +228 +229 +230 +231 +232 +233 +234 +235 +236 +237 +238 +239 +240 +241 +242 +243 +244 +245 +246 +247 +248 +249 +250 +251 +252 +253 +254 +255 +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +36 +37 +38 +39 +40 +41 +42 +43 +44 +45 +46 +47 +48 +49 +50 +51 +52 +53 +54 +55 +56 +57 +58 +59 +60 +61 +62 +63 +64 +65 +66 +67 +68 +69 +70 +71 +72 +73 +74 +75 +76 +77 +78 +79 +80 +81 +82 +83 +84 +85 +86 +87 +88 +89 +90 +91 +92 +93 +94 +95 +96 +97 +98 +99 +100 +101 +102 +103 +104 +105 +106 +107 +108 +109 +110 +111 +112 +113 +114 +115 +116 +117 +118 +119 +120 +121 +122 +123 +124 +125 +126 +127 +128 +129 +130 +131 +132 +133 +134 +135 +136 +137 +138 +139 +140 +141 +142 +143 +144 +145 +146 +147 +148 +149 +150 +151 +152 +153 +154 +155 +156 +157 +158 +159 +160 +161 +162 +163 +164 +165 +166 +167 +168 +169 +170 +171 +172 +173 +174 +175 +176 +177 +178 +179 +180 +181 +182 +183 +184 +185 +186 +187 +188 +189 +190 +191 +192 +193 +194 +195 +196 +197 +198 +199 +200 +201 +202 +203 +204 +205 +206 +207 +208 +209 +210 +211 +212 +213 +214 +215 +216 +217 +218 +219 +220 +221 +222 +223 +224 +225 +226 +227 +228 +229 +230 +231 +232 +233 +234 +235 +236 +237 +238 +239 +240 +241 +242 +243 +244 +245 +246 +247 +248 +249 +250 +251 +252 +253 +254 +255 +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +36 +37 +38 +39 +40 +41 +42 +43 +44 +45 +46 +47 +48 +49 +50 +51 +52 +53 +54 +55 +56 +57 +58 +59 +60 +61 +62 +63 +64 +65 +66 +67 +68 +69 +70 +71 +72 +73 +74 +75 +76 +77 +78 +79 +80 +81 +82 +83 +84 +85 +86 +87 +88 +89 +90 +91 +92 +93 +94 +95 +96 +97 +98 +99 +100 +101 +102 +103 +104 +105 +106 +107 +108 +109 +110 +111 +112 +113 +114 +115 +116 +117 +118 +119 +120 +121 +122 +123 +124 +125 +126 +127 +128 +129 +130 +131 +132 +133 +134 +135 +136 +137 +138 +139 +140 +141 +142 +143 +144 +145 +146 +147 +148 +149 +150 +151 +152 +153 +154 +155 +156 +157 +158 +159 +160 +161 +162 +163 +164 +165 +166 +167 +168 +169 +170 +171 +172 +173 +174 +175 +176 +177 +178 +179 +180 +181 +182 +183 +184 +185 +186 +187 +188 +189 +190 +191 +192 +193 +194 +195 +196 +197 +198 +199 +200 +201 +202 +203 +204 +205 +206 +207 +208 +209 +210 +211 +212 +213 +214 +215 +216 +217 +218 +219 +220 +221 +222 +223 +224 +225 +226 +227 +228 +229 +230 +231 +232 +233 +234 +235 +236 +237 +238 +239 +240 +241 +242 +243 +244 +245 +246 +247 +248 +249 +250 +251 +252 +253 +254 +255 +SCALARS attr5_0_2 float +LOOKUP_TABLE default +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +36 +37 +38 +39 +40 +41 +42 +43 +44 +45 +46 +47 +48 +49 +50 +51 +52 +53 +54 +55 +56 +57 +58 +59 +60 +61 +62 +63 +64 +65 +66 +67 +68 +69 +70 +71 +72 +73 +74 +75 +76 +77 +78 +79 +80 +81 +82 +83 +84 +85 +86 +87 +88 +89 +90 +91 +92 +93 +94 +95 +96 +97 +98 +99 +100 +101 +102 +103 +104 +105 +106 +107 +108 +109 +110 +111 +112 +113 +114 +115 +116 +117 +118 +119 +120 +121 +122 +123 +124 +125 +126 +127 +128 +129 +130 +131 +132 +133 +134 +135 +136 +137 +138 +139 +140 +141 +142 +143 +144 +145 +146 +147 +148 +149 +150 +151 +152 +153 +154 +155 +156 +157 +158 +159 +160 +161 +162 +163 +164 +165 +166 +167 +168 +169 +170 +171 +172 +173 +174 +175 +176 +177 +178 +179 +180 +181 +182 +183 +184 +185 +186 +187 +188 +189 +190 +191 +192 +193 +194 +195 +196 +197 +198 +199 +200 +201 +202 +203 +204 +205 +206 +207 +208 +209 +210 +211 +212 +213 +214 +215 +216 +217 +218 +219 +220 +221 +222 +223 +224 +225 +226 +227 +228 +229 +230 +231 +232 +233 +234 +235 +236 +237 +238 +239 +240 +241 +242 +243 +244 +245 +246 +247 +248 +249 +250 +251 +252 +253 +254 +255 +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +36 +37 +38 +39 +40 +41 +42 +43 +44 +45 +46 +47 +48 +49 +50 +51 +52 +53 +54 +55 +56 +57 +58 +59 +60 +61 +62 +63 +64 +65 +66 +67 +68 +69 +70 +71 +72 +73 +74 +75 +76 +77 +78 +79 +80 +81 +82 +83 +84 +85 +86 +87 +88 +89 +90 +91 +92 +93 +94 +95 +96 +97 +98 +99 +100 +101 +102 +103 +104 +105 +106 +107 +108 +109 +110 +111 +112 +113 +114 +115 +116 +117 +118 +119 +120 +121 +122 +123 +124 +125 +126 +127 +128 +129 +130 +131 +132 +133 +134 +135 +136 +137 +138 +139 +140 +141 +142 +143 +144 +145 +146 +147 +148 +149 +150 +151 +152 +153 +154 +155 +156 +157 +158 +159 +160 +161 +162 +163 +164 +165 +166 +167 +168 +169 +170 +171 +172 +173 +174 +175 +176 +177 +178 +179 +180 +181 +182 +183 +184 +185 +186 +187 +188 +189 +190 +191 +192 +193 +194 +195 +196 +197 +198 +199 +200 +201 +202 +203 +204 +205 +206 +207 +208 +209 +210 +211 +212 +213 +214 +215 +216 +217 +218 +219 +220 +221 +222 +223 +224 +225 +226 +227 +228 +229 +230 +231 +232 +233 +234 +235 +236 +237 +238 +239 +240 +241 +242 +243 +244 +245 +246 +247 +248 +249 +250 +251 +252 +253 +254 +255 +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +36 +37 +38 +39 +40 +41 +42 +43 +44 +45 +46 +47 +48 +49 +50 +51 +52 +53 +54 +55 +56 +57 +58 +59 +60 +61 +62 +63 +64 +65 +66 +67 +68 +69 +70 +71 +72 +73 +74 +75 +76 +77 +78 +79 +80 +81 +82 +83 +84 +85 +86 +87 +88 +89 +90 +91 +92 +93 +94 +95 +96 +97 +98 +99 +100 +101 +102 +103 +104 +105 +106 +107 +108 +109 +110 +111 +112 +113 +114 +115 +116 +117 +118 +119 +120 +121 +122 +123 +124 +125 +126 +127 +128 +129 +130 +131 +132 +133 +134 +135 +136 +137 +138 +139 +140 +141 +142 +143 +144 +145 +146 +147 +148 +149 +150 +151 +152 +153 +154 +155 +156 +157 +158 +159 +160 +161 +162 +163 +164 +165 +166 +167 +168 +169 +170 +171 +172 +173 +174 +175 +176 +177 +178 +179 +180 +181 +182 +183 +184 +185 +186 +187 +188 +189 +190 +191 +192 +193 +194 +195 +196 +197 +198 +199 +200 +201 +202 +203 +204 +205 +206 +207 +208 +209 +210 +211 +212 +213 +214 +215 +216 +217 +218 +219 +220 +221 +222 +223 +224 +225 +226 +227 +228 +229 +230 +231 +232 +233 +234 +235 +236 +237 +238 +239 +240 +241 +242 +243 +244 +245 +246 +247 +248 +249 +250 +251 +252 +253 +254 +255 +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +36 +37 +38 +39 +40 +41 +42 +43 +44 +45 +46 +47 +48 +49 +50 +51 +52 +53 +54 +55 +56 +57 +58 +59 +60 +61 +62 +63 +64 +65 +66 +67 +68 +69 +70 +71 +72 +73 +74 +75 +76 +77 +78 +79 +80 +81 +82 +83 +84 +85 +86 +87 +88 +89 +90 +91 +92 +93 +94 +95 +96 +97 +98 +99 +100 +101 +102 +103 +104 +105 +106 +107 +108 +109 +110 +111 +112 +113 +114 +115 +116 +117 +118 +119 +120 +121 +122 +123 +124 +125 +126 +127 +128 +129 +130 +131 +132 +133 +134 +135 +136 +137 +138 +139 +140 +141 +142 +143 +144 +145 +146 +147 +148 +149 +150 +151 +152 +153 +154 +155 +156 +157 +158 +159 +160 +161 +162 +163 +164 +165 +166 +167 +168 +169 +170 +171 +172 +173 +174 +175 +176 +177 +178 +179 +180 +181 +182 +183 +184 +185 +186 +187 +188 +189 +190 +191 +192 +193 +194 +195 +196 +197 +198 +199 +200 +201 +202 +203 +204 +205 +206 +207 +208 +209 +210 +211 +212 +213 +214 +215 +216 +217 +218 +219 +220 +221 +222 +223 +224 +225 +226 +227 +228 +229 +230 +231 +232 +233 +234 +235 +236 +237 +238 +239 +240 +241 +242 +243 +244 +245 +246 +247 +248 +249 +250 +251 +252 +253 +254 +255 +SCALARS attr5_1_0 float +LOOKUP_TABLE default +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +36 +37 +38 +39 +40 +41 +42 +43 +44 +45 +46 +47 +48 +49 +50 +51 +52 +53 +54 +55 +56 +57 +58 +59 +60 +61 +62 +63 +64 +65 +66 +67 +68 +69 +70 +71 +72 +73 +74 +75 +76 +77 +78 +79 +80 +81 +82 +83 +84 +85 +86 +87 +88 +89 +90 +91 +92 +93 +94 +95 +96 +97 +98 +99 +100 +101 +102 +103 +104 +105 +106 +107 +108 +109 +110 +111 +112 +113 +114 +115 +116 +117 +118 +119 +120 +121 +122 +123 +124 +125 +126 +127 +128 +129 +130 +131 +132 +133 +134 +135 +136 +137 +138 +139 +140 +141 +142 +143 +144 +145 +146 +147 +148 +149 +150 +151 +152 +153 +154 +155 +156 +157 +158 +159 +160 +161 +162 +163 +164 +165 +166 +167 +168 +169 +170 +171 +172 +173 +174 +175 +176 +177 +178 +179 +180 +181 +182 +183 +184 +185 +186 +187 +188 +189 +190 +191 +192 +193 +194 +195 +196 +197 +198 +199 +200 +201 +202 +203 +204 +205 +206 +207 +208 +209 +210 +211 +212 +213 +214 +215 +216 +217 +218 +219 +220 +221 +222 +223 +224 +225 +226 +227 +228 +229 +230 +231 +232 +233 +234 +235 +236 +237 +238 +239 +240 +241 +242 +243 +244 +245 +246 +247 +248 +249 +250 +251 +252 +253 +254 +255 +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +36 +37 +38 +39 +40 +41 +42 +43 +44 +45 +46 +47 +48 +49 +50 +51 +52 +53 +54 +55 +56 +57 +58 +59 +60 +61 +62 +63 +64 +65 +66 +67 +68 +69 +70 +71 +72 +73 +74 +75 +76 +77 +78 +79 +80 +81 +82 +83 +84 +85 +86 +87 +88 +89 +90 +91 +92 +93 +94 +95 +96 +97 +98 +99 +100 +101 +102 +103 +104 +105 +106 +107 +108 +109 +110 +111 +112 +113 +114 +115 +116 +117 +118 +119 +120 +121 +122 +123 +124 +125 +126 +127 +128 +129 +130 +131 +132 +133 +134 +135 +136 +137 +138 +139 +140 +141 +142 +143 +144 +145 +146 +147 +148 +149 +150 +151 +152 +153 +154 +155 +156 +157 +158 +159 +160 +161 +162 +163 +164 +165 +166 +167 +168 +169 +170 +171 +172 +173 +174 +175 +176 +177 +178 +179 +180 +181 +182 +183 +184 +185 +186 +187 +188 +189 +190 +191 +192 +193 +194 +195 +196 +197 +198 +199 +200 +201 +202 +203 +204 +205 +206 +207 +208 +209 +210 +211 +212 +213 +214 +215 +216 +217 +218 +219 +220 +221 +222 +223 +224 +225 +226 +227 +228 +229 +230 +231 +232 +233 +234 +235 +236 +237 +238 +239 +240 +241 +242 +243 +244 +245 +246 +247 +248 +249 +250 +251 +252 +253 +254 +255 +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +36 +37 +38 +39 +40 +41 +42 +43 +44 +45 +46 +47 +48 +49 +50 +51 +52 +53 +54 +55 +56 +57 +58 +59 +60 +61 +62 +63 +64 +65 +66 +67 +68 +69 +70 +71 +72 +73 +74 +75 +76 +77 +78 +79 +80 +81 +82 +83 +84 +85 +86 +87 +88 +89 +90 +91 +92 +93 +94 +95 +96 +97 +98 +99 +100 +101 +102 +103 +104 +105 +106 +107 +108 +109 +110 +111 +112 +113 +114 +115 +116 +117 +118 +119 +120 +121 +122 +123 +124 +125 +126 +127 +128 +129 +130 +131 +132 +133 +134 +135 +136 +137 +138 +139 +140 +141 +142 +143 +144 +145 +146 +147 +148 +149 +150 +151 +152 +153 +154 +155 +156 +157 +158 +159 +160 +161 +162 +163 +164 +165 +166 +167 +168 +169 +170 +171 +172 +173 +174 +175 +176 +177 +178 +179 +180 +181 +182 +183 +184 +185 +186 +187 +188 +189 +190 +191 +192 +193 +194 +195 +196 +197 +198 +199 +200 +201 +202 +203 +204 +205 +206 +207 +208 +209 +210 +211 +212 +213 +214 +215 +216 +217 +218 +219 +220 +221 +222 +223 +224 +225 +226 +227 +228 +229 +230 +231 +232 +233 +234 +235 +236 +237 +238 +239 +240 +241 +242 +243 +244 +245 +246 +247 +248 +249 +250 +251 +252 +253 +254 +255 +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +36 +37 +38 +39 +40 +41 +42 +43 +44 +45 +46 +47 +48 +49 +50 +51 +52 +53 +54 +55 +56 +57 +58 +59 +60 +61 +62 +63 +64 +65 +66 +67 +68 +69 +70 +71 +72 +73 +74 +75 +76 +77 +78 +79 +80 +81 +82 +83 +84 +85 +86 +87 +88 +89 +90 +91 +92 +93 +94 +95 +96 +97 +98 +99 +100 +101 +102 +103 +104 +105 +106 +107 +108 +109 +110 +111 +112 +113 +114 +115 +116 +117 +118 +119 +120 +121 +122 +123 +124 +125 +126 +127 +128 +129 +130 +131 +132 +133 +134 +135 +136 +137 +138 +139 +140 +141 +142 +143 +144 +145 +146 +147 +148 +149 +150 +151 +152 +153 +154 +155 +156 +157 +158 +159 +160 +161 +162 +163 +164 +165 +166 +167 +168 +169 +170 +171 +172 +173 +174 +175 +176 +177 +178 +179 +180 +181 +182 +183 +184 +185 +186 +187 +188 +189 +190 +191 +192 +193 +194 +195 +196 +197 +198 +199 +200 +201 +202 +203 +204 +205 +206 +207 +208 +209 +210 +211 +212 +213 +214 +215 +216 +217 +218 +219 +220 +221 +222 +223 +224 +225 +226 +227 +228 +229 +230 +231 +232 +233 +234 +235 +236 +237 +238 +239 +240 +241 +242 +243 +244 +245 +246 +247 +248 +249 +250 +251 +252 +253 +254 +255 +SCALARS attr5_1_1 float +LOOKUP_TABLE default +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +36 +37 +38 +39 +40 +41 +42 +43 +44 +45 +46 +47 +48 +49 +50 +51 +52 +53 +54 +55 +56 +57 +58 +59 +60 +61 +62 +63 +64 +65 +66 +67 +68 +69 +70 +71 +72 +73 +74 +75 +76 +77 +78 +79 +80 +81 +82 +83 +84 +85 +86 +87 +88 +89 +90 +91 +92 +93 +94 +95 +96 +97 +98 +99 +100 +101 +102 +103 +104 +105 +106 +107 +108 +109 +110 +111 +112 +113 +114 +115 +116 +117 +118 +119 +120 +121 +122 +123 +124 +125 +126 +127 +128 +129 +130 +131 +132 +133 +134 +135 +136 +137 +138 +139 +140 +141 +142 +143 +144 +145 +146 +147 +148 +149 +150 +151 +152 +153 +154 +155 +156 +157 +158 +159 +160 +161 +162 +163 +164 +165 +166 +167 +168 +169 +170 +171 +172 +173 +174 +175 +176 +177 +178 +179 +180 +181 +182 +183 +184 +185 +186 +187 +188 +189 +190 +191 +192 +193 +194 +195 +196 +197 +198 +199 +200 +201 +202 +203 +204 +205 +206 +207 +208 +209 +210 +211 +212 +213 +214 +215 +216 +217 +218 +219 +220 +221 +222 +223 +224 +225 +226 +227 +228 +229 +230 +231 +232 +233 +234 +235 +236 +237 +238 +239 +240 +241 +242 +243 +244 +245 +246 +247 +248 +249 +250 +251 +252 +253 +254 +255 +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +36 +37 +38 +39 +40 +41 +42 +43 +44 +45 +46 +47 +48 +49 +50 +51 +52 +53 +54 +55 +56 +57 +58 +59 +60 +61 +62 +63 +64 +65 +66 +67 +68 +69 +70 +71 +72 +73 +74 +75 +76 +77 +78 +79 +80 +81 +82 +83 +84 +85 +86 +87 +88 +89 +90 +91 +92 +93 +94 +95 +96 +97 +98 +99 +100 +101 +102 +103 +104 +105 +106 +107 +108 +109 +110 +111 +112 +113 +114 +115 +116 +117 +118 +119 +120 +121 +122 +123 +124 +125 +126 +127 +128 +129 +130 +131 +132 +133 +134 +135 +136 +137 +138 +139 +140 +141 +142 +143 +144 +145 +146 +147 +148 +149 +150 +151 +152 +153 +154 +155 +156 +157 +158 +159 +160 +161 +162 +163 +164 +165 +166 +167 +168 +169 +170 +171 +172 +173 +174 +175 +176 +177 +178 +179 +180 +181 +182 +183 +184 +185 +186 +187 +188 +189 +190 +191 +192 +193 +194 +195 +196 +197 +198 +199 +200 +201 +202 +203 +204 +205 +206 +207 +208 +209 +210 +211 +212 +213 +214 +215 +216 +217 +218 +219 +220 +221 +222 +223 +224 +225 +226 +227 +228 +229 +230 +231 +232 +233 +234 +235 +236 +237 +238 +239 +240 +241 +242 +243 +244 +245 +246 +247 +248 +249 +250 +251 +252 +253 +254 +255 +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +36 +37 +38 +39 +40 +41 +42 +43 +44 +45 +46 +47 +48 +49 +50 +51 +52 +53 +54 +55 +56 +57 +58 +59 +60 +61 +62 +63 +64 +65 +66 +67 +68 +69 +70 +71 +72 +73 +74 +75 +76 +77 +78 +79 +80 +81 +82 +83 +84 +85 +86 +87 +88 +89 +90 +91 +92 +93 +94 +95 +96 +97 +98 +99 +100 +101 +102 +103 +104 +105 +106 +107 +108 +109 +110 +111 +112 +113 +114 +115 +116 +117 +118 +119 +120 +121 +122 +123 +124 +125 +126 +127 +128 +129 +130 +131 +132 +133 +134 +135 +136 +137 +138 +139 +140 +141 +142 +143 +144 +145 +146 +147 +148 +149 +150 +151 +152 +153 +154 +155 +156 +157 +158 +159 +160 +161 +162 +163 +164 +165 +166 +167 +168 +169 +170 +171 +172 +173 +174 +175 +176 +177 +178 +179 +180 +181 +182 +183 +184 +185 +186 +187 +188 +189 +190 +191 +192 +193 +194 +195 +196 +197 +198 +199 +200 +201 +202 +203 +204 +205 +206 +207 +208 +209 +210 +211 +212 +213 +214 +215 +216 +217 +218 +219 +220 +221 +222 +223 +224 +225 +226 +227 +228 +229 +230 +231 +232 +233 +234 +235 +236 +237 +238 +239 +240 +241 +242 +243 +244 +245 +246 +247 +248 +249 +250 +251 +252 +253 +254 +255 +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +36 +37 +38 +39 +40 +41 +42 +43 +44 +45 +46 +47 +48 +49 +50 +51 +52 +53 +54 +55 +56 +57 +58 +59 +60 +61 +62 +63 +64 +65 +66 +67 +68 +69 +70 +71 +72 +73 +74 +75 +76 +77 +78 +79 +80 +81 +82 +83 +84 +85 +86 +87 +88 +89 +90 +91 +92 +93 +94 +95 +96 +97 +98 +99 +100 +101 +102 +103 +104 +105 +106 +107 +108 +109 +110 +111 +112 +113 +114 +115 +116 +117 +118 +119 +120 +121 +122 +123 +124 +125 +126 +127 +128 +129 +130 +131 +132 +133 +134 +135 +136 +137 +138 +139 +140 +141 +142 +143 +144 +145 +146 +147 +148 +149 +150 +151 +152 +153 +154 +155 +156 +157 +158 +159 +160 +161 +162 +163 +164 +165 +166 +167 +168 +169 +170 +171 +172 +173 +174 +175 +176 +177 +178 +179 +180 +181 +182 +183 +184 +185 +186 +187 +188 +189 +190 +191 +192 +193 +194 +195 +196 +197 +198 +199 +200 +201 +202 +203 +204 +205 +206 +207 +208 +209 +210 +211 +212 +213 +214 +215 +216 +217 +218 +219 +220 +221 +222 +223 +224 +225 +226 +227 +228 +229 +230 +231 +232 +233 +234 +235 +236 +237 +238 +239 +240 +241 +242 +243 +244 +245 +246 +247 +248 +249 +250 +251 +252 +253 +254 +255 +SCALARS attr5_1_2 float +LOOKUP_TABLE default +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +36 +37 +38 +39 +40 +41 +42 +43 +44 +45 +46 +47 +48 +49 +50 +51 +52 +53 +54 +55 +56 +57 +58 +59 +60 +61 +62 +63 +64 +65 +66 +67 +68 +69 +70 +71 +72 +73 +74 +75 +76 +77 +78 +79 +80 +81 +82 +83 +84 +85 +86 +87 +88 +89 +90 +91 +92 +93 +94 +95 +96 +97 +98 +99 +100 +101 +102 +103 +104 +105 +106 +107 +108 +109 +110 +111 +112 +113 +114 +115 +116 +117 +118 +119 +120 +121 +122 +123 +124 +125 +126 +127 +128 +129 +130 +131 +132 +133 +134 +135 +136 +137 +138 +139 +140 +141 +142 +143 +144 +145 +146 +147 +148 +149 +150 +151 +152 +153 +154 +155 +156 +157 +158 +159 +160 +161 +162 +163 +164 +165 +166 +167 +168 +169 +170 +171 +172 +173 +174 +175 +176 +177 +178 +179 +180 +181 +182 +183 +184 +185 +186 +187 +188 +189 +190 +191 +192 +193 +194 +195 +196 +197 +198 +199 +200 +201 +202 +203 +204 +205 +206 +207 +208 +209 +210 +211 +212 +213 +214 +215 +216 +217 +218 +219 +220 +221 +222 +223 +224 +225 +226 +227 +228 +229 +230 +231 +232 +233 +234 +235 +236 +237 +238 +239 +240 +241 +242 +243 +244 +245 +246 +247 +248 +249 +250 +251 +252 +253 +254 +255 +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +36 +37 +38 +39 +40 +41 +42 +43 +44 +45 +46 +47 +48 +49 +50 +51 +52 +53 +54 +55 +56 +57 +58 +59 +60 +61 +62 +63 +64 +65 +66 +67 +68 +69 +70 +71 +72 +73 +74 +75 +76 +77 +78 +79 +80 +81 +82 +83 +84 +85 +86 +87 +88 +89 +90 +91 +92 +93 +94 +95 +96 +97 +98 +99 +100 +101 +102 +103 +104 +105 +106 +107 +108 +109 +110 +111 +112 +113 +114 +115 +116 +117 +118 +119 +120 +121 +122 +123 +124 +125 +126 +127 +128 +129 +130 +131 +132 +133 +134 +135 +136 +137 +138 +139 +140 +141 +142 +143 +144 +145 +146 +147 +148 +149 +150 +151 +152 +153 +154 +155 +156 +157 +158 +159 +160 +161 +162 +163 +164 +165 +166 +167 +168 +169 +170 +171 +172 +173 +174 +175 +176 +177 +178 +179 +180 +181 +182 +183 +184 +185 +186 +187 +188 +189 +190 +191 +192 +193 +194 +195 +196 +197 +198 +199 +200 +201 +202 +203 +204 +205 +206 +207 +208 +209 +210 +211 +212 +213 +214 +215 +216 +217 +218 +219 +220 +221 +222 +223 +224 +225 +226 +227 +228 +229 +230 +231 +232 +233 +234 +235 +236 +237 +238 +239 +240 +241 +242 +243 +244 +245 +246 +247 +248 +249 +250 +251 +252 +253 +254 +255 +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +36 +37 +38 +39 +40 +41 +42 +43 +44 +45 +46 +47 +48 +49 +50 +51 +52 +53 +54 +55 +56 +57 +58 +59 +60 +61 +62 +63 +64 +65 +66 +67 +68 +69 +70 +71 +72 +73 +74 +75 +76 +77 +78 +79 +80 +81 +82 +83 +84 +85 +86 +87 +88 +89 +90 +91 +92 +93 +94 +95 +96 +97 +98 +99 +100 +101 +102 +103 +104 +105 +106 +107 +108 +109 +110 +111 +112 +113 +114 +115 +116 +117 +118 +119 +120 +121 +122 +123 +124 +125 +126 +127 +128 +129 +130 +131 +132 +133 +134 +135 +136 +137 +138 +139 +140 +141 +142 +143 +144 +145 +146 +147 +148 +149 +150 +151 +152 +153 +154 +155 +156 +157 +158 +159 +160 +161 +162 +163 +164 +165 +166 +167 +168 +169 +170 +171 +172 +173 +174 +175 +176 +177 +178 +179 +180 +181 +182 +183 +184 +185 +186 +187 +188 +189 +190 +191 +192 +193 +194 +195 +196 +197 +198 +199 +200 +201 +202 +203 +204 +205 +206 +207 +208 +209 +210 +211 +212 +213 +214 +215 +216 +217 +218 +219 +220 +221 +222 +223 +224 +225 +226 +227 +228 +229 +230 +231 +232 +233 +234 +235 +236 +237 +238 +239 +240 +241 +242 +243 +244 +245 +246 +247 +248 +249 +250 +251 +252 +253 +254 +255 +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +36 +37 +38 +39 +40 +41 +42 +43 +44 +45 +46 +47 +48 +49 +50 +51 +52 +53 +54 +55 +56 +57 +58 +59 +60 +61 +62 +63 +64 +65 +66 +67 +68 +69 +70 +71 +72 +73 +74 +75 +76 +77 +78 +79 +80 +81 +82 +83 +84 +85 +86 +87 +88 +89 +90 +91 +92 +93 +94 +95 +96 +97 +98 +99 +100 +101 +102 +103 +104 +105 +106 +107 +108 +109 +110 +111 +112 +113 +114 +115 +116 +117 +118 +119 +120 +121 +122 +123 +124 +125 +126 +127 +128 +129 +130 +131 +132 +133 +134 +135 +136 +137 +138 +139 +140 +141 +142 +143 +144 +145 +146 +147 +148 +149 +150 +151 +152 +153 +154 +155 +156 +157 +158 +159 +160 +161 +162 +163 +164 +165 +166 +167 +168 +169 +170 +171 +172 +173 +174 +175 +176 +177 +178 +179 +180 +181 +182 +183 +184 +185 +186 +187 +188 +189 +190 +191 +192 +193 +194 +195 +196 +197 +198 +199 +200 +201 +202 +203 +204 +205 +206 +207 +208 +209 +210 +211 +212 +213 +214 +215 +216 +217 +218 +219 +220 +221 +222 +223 +224 +225 +226 +227 +228 +229 +230 +231 +232 +233 +234 +235 +236 +237 +238 +239 +240 +241 +242 +243 +244 +245 +246 +247 +248 +249 +250 +251 +252 +253 +254 +255 +SCALARS attr5_2_0 float +LOOKUP_TABLE default +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +36 +37 +38 +39 +40 +41 +42 +43 +44 +45 +46 +47 +48 +49 +50 +51 +52 +53 +54 +55 +56 +57 +58 +59 +60 +61 +62 +63 +64 +65 +66 +67 +68 +69 +70 +71 +72 +73 +74 +75 +76 +77 +78 +79 +80 +81 +82 +83 +84 +85 +86 +87 +88 +89 +90 +91 +92 +93 +94 +95 +96 +97 +98 +99 +100 +101 +102 +103 +104 +105 +106 +107 +108 +109 +110 +111 +112 +113 +114 +115 +116 +117 +118 +119 +120 +121 +122 +123 +124 +125 +126 +127 +128 +129 +130 +131 +132 +133 +134 +135 +136 +137 +138 +139 +140 +141 +142 +143 +144 +145 +146 +147 +148 +149 +150 +151 +152 +153 +154 +155 +156 +157 +158 +159 +160 +161 +162 +163 +164 +165 +166 +167 +168 +169 +170 +171 +172 +173 +174 +175 +176 +177 +178 +179 +180 +181 +182 +183 +184 +185 +186 +187 +188 +189 +190 +191 +192 +193 +194 +195 +196 +197 +198 +199 +200 +201 +202 +203 +204 +205 +206 +207 +208 +209 +210 +211 +212 +213 +214 +215 +216 +217 +218 +219 +220 +221 +222 +223 +224 +225 +226 +227 +228 +229 +230 +231 +232 +233 +234 +235 +236 +237 +238 +239 +240 +241 +242 +243 +244 +245 +246 +247 +248 +249 +250 +251 +252 +253 +254 +255 +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +36 +37 +38 +39 +40 +41 +42 +43 +44 +45 +46 +47 +48 +49 +50 +51 +52 +53 +54 +55 +56 +57 +58 +59 +60 +61 +62 +63 +64 +65 +66 +67 +68 +69 +70 +71 +72 +73 +74 +75 +76 +77 +78 +79 +80 +81 +82 +83 +84 +85 +86 +87 +88 +89 +90 +91 +92 +93 +94 +95 +96 +97 +98 +99 +100 +101 +102 +103 +104 +105 +106 +107 +108 +109 +110 +111 +112 +113 +114 +115 +116 +117 +118 +119 +120 +121 +122 +123 +124 +125 +126 +127 +128 +129 +130 +131 +132 +133 +134 +135 +136 +137 +138 +139 +140 +141 +142 +143 +144 +145 +146 +147 +148 +149 +150 +151 +152 +153 +154 +155 +156 +157 +158 +159 +160 +161 +162 +163 +164 +165 +166 +167 +168 +169 +170 +171 +172 +173 +174 +175 +176 +177 +178 +179 +180 +181 +182 +183 +184 +185 +186 +187 +188 +189 +190 +191 +192 +193 +194 +195 +196 +197 +198 +199 +200 +201 +202 +203 +204 +205 +206 +207 +208 +209 +210 +211 +212 +213 +214 +215 +216 +217 +218 +219 +220 +221 +222 +223 +224 +225 +226 +227 +228 +229 +230 +231 +232 +233 +234 +235 +236 +237 +238 +239 +240 +241 +242 +243 +244 +245 +246 +247 +248 +249 +250 +251 +252 +253 +254 +255 +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +36 +37 +38 +39 +40 +41 +42 +43 +44 +45 +46 +47 +48 +49 +50 +51 +52 +53 +54 +55 +56 +57 +58 +59 +60 +61 +62 +63 +64 +65 +66 +67 +68 +69 +70 +71 +72 +73 +74 +75 +76 +77 +78 +79 +80 +81 +82 +83 +84 +85 +86 +87 +88 +89 +90 +91 +92 +93 +94 +95 +96 +97 +98 +99 +100 +101 +102 +103 +104 +105 +106 +107 +108 +109 +110 +111 +112 +113 +114 +115 +116 +117 +118 +119 +120 +121 +122 +123 +124 +125 +126 +127 +128 +129 +130 +131 +132 +133 +134 +135 +136 +137 +138 +139 +140 +141 +142 +143 +144 +145 +146 +147 +148 +149 +150 +151 +152 +153 +154 +155 +156 +157 +158 +159 +160 +161 +162 +163 +164 +165 +166 +167 +168 +169 +170 +171 +172 +173 +174 +175 +176 +177 +178 +179 +180 +181 +182 +183 +184 +185 +186 +187 +188 +189 +190 +191 +192 +193 +194 +195 +196 +197 +198 +199 +200 +201 +202 +203 +204 +205 +206 +207 +208 +209 +210 +211 +212 +213 +214 +215 +216 +217 +218 +219 +220 +221 +222 +223 +224 +225 +226 +227 +228 +229 +230 +231 +232 +233 +234 +235 +236 +237 +238 +239 +240 +241 +242 +243 +244 +245 +246 +247 +248 +249 +250 +251 +252 +253 +254 +255 +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +36 +37 +38 +39 +40 +41 +42 +43 +44 +45 +46 +47 +48 +49 +50 +51 +52 +53 +54 +55 +56 +57 +58 +59 +60 +61 +62 +63 +64 +65 +66 +67 +68 +69 +70 +71 +72 +73 +74 +75 +76 +77 +78 +79 +80 +81 +82 +83 +84 +85 +86 +87 +88 +89 +90 +91 +92 +93 +94 +95 +96 +97 +98 +99 +100 +101 +102 +103 +104 +105 +106 +107 +108 +109 +110 +111 +112 +113 +114 +115 +116 +117 +118 +119 +120 +121 +122 +123 +124 +125 +126 +127 +128 +129 +130 +131 +132 +133 +134 +135 +136 +137 +138 +139 +140 +141 +142 +143 +144 +145 +146 +147 +148 +149 +150 +151 +152 +153 +154 +155 +156 +157 +158 +159 +160 +161 +162 +163 +164 +165 +166 +167 +168 +169 +170 +171 +172 +173 +174 +175 +176 +177 +178 +179 +180 +181 +182 +183 +184 +185 +186 +187 +188 +189 +190 +191 +192 +193 +194 +195 +196 +197 +198 +199 +200 +201 +202 +203 +204 +205 +206 +207 +208 +209 +210 +211 +212 +213 +214 +215 +216 +217 +218 +219 +220 +221 +222 +223 +224 +225 +226 +227 +228 +229 +230 +231 +232 +233 +234 +235 +236 +237 +238 +239 +240 +241 +242 +243 +244 +245 +246 +247 +248 +249 +250 +251 +252 +253 +254 +255 +SCALARS attr5_2_1 float +LOOKUP_TABLE default +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +36 +37 +38 +39 +40 +41 +42 +43 +44 +45 +46 +47 +48 +49 +50 +51 +52 +53 +54 +55 +56 +57 +58 +59 +60 +61 +62 +63 +64 +65 +66 +67 +68 +69 +70 +71 +72 +73 +74 +75 +76 +77 +78 +79 +80 +81 +82 +83 +84 +85 +86 +87 +88 +89 +90 +91 +92 +93 +94 +95 +96 +97 +98 +99 +100 +101 +102 +103 +104 +105 +106 +107 +108 +109 +110 +111 +112 +113 +114 +115 +116 +117 +118 +119 +120 +121 +122 +123 +124 +125 +126 +127 +128 +129 +130 +131 +132 +133 +134 +135 +136 +137 +138 +139 +140 +141 +142 +143 +144 +145 +146 +147 +148 +149 +150 +151 +152 +153 +154 +155 +156 +157 +158 +159 +160 +161 +162 +163 +164 +165 +166 +167 +168 +169 +170 +171 +172 +173 +174 +175 +176 +177 +178 +179 +180 +181 +182 +183 +184 +185 +186 +187 +188 +189 +190 +191 +192 +193 +194 +195 +196 +197 +198 +199 +200 +201 +202 +203 +204 +205 +206 +207 +208 +209 +210 +211 +212 +213 +214 +215 +216 +217 +218 +219 +220 +221 +222 +223 +224 +225 +226 +227 +228 +229 +230 +231 +232 +233 +234 +235 +236 +237 +238 +239 +240 +241 +242 +243 +244 +245 +246 +247 +248 +249 +250 +251 +252 +253 +254 +255 +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +36 +37 +38 +39 +40 +41 +42 +43 +44 +45 +46 +47 +48 +49 +50 +51 +52 +53 +54 +55 +56 +57 +58 +59 +60 +61 +62 +63 +64 +65 +66 +67 +68 +69 +70 +71 +72 +73 +74 +75 +76 +77 +78 +79 +80 +81 +82 +83 +84 +85 +86 +87 +88 +89 +90 +91 +92 +93 +94 +95 +96 +97 +98 +99 +100 +101 +102 +103 +104 +105 +106 +107 +108 +109 +110 +111 +112 +113 +114 +115 +116 +117 +118 +119 +120 +121 +122 +123 +124 +125 +126 +127 +128 +129 +130 +131 +132 +133 +134 +135 +136 +137 +138 +139 +140 +141 +142 +143 +144 +145 +146 +147 +148 +149 +150 +151 +152 +153 +154 +155 +156 +157 +158 +159 +160 +161 +162 +163 +164 +165 +166 +167 +168 +169 +170 +171 +172 +173 +174 +175 +176 +177 +178 +179 +180 +181 +182 +183 +184 +185 +186 +187 +188 +189 +190 +191 +192 +193 +194 +195 +196 +197 +198 +199 +200 +201 +202 +203 +204 +205 +206 +207 +208 +209 +210 +211 +212 +213 +214 +215 +216 +217 +218 +219 +220 +221 +222 +223 +224 +225 +226 +227 +228 +229 +230 +231 +232 +233 +234 +235 +236 +237 +238 +239 +240 +241 +242 +243 +244 +245 +246 +247 +248 +249 +250 +251 +252 +253 +254 +255 +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +36 +37 +38 +39 +40 +41 +42 +43 +44 +45 +46 +47 +48 +49 +50 +51 +52 +53 +54 +55 +56 +57 +58 +59 +60 +61 +62 +63 +64 +65 +66 +67 +68 +69 +70 +71 +72 +73 +74 +75 +76 +77 +78 +79 +80 +81 +82 +83 +84 +85 +86 +87 +88 +89 +90 +91 +92 +93 +94 +95 +96 +97 +98 +99 +100 +101 +102 +103 +104 +105 +106 +107 +108 +109 +110 +111 +112 +113 +114 +115 +116 +117 +118 +119 +120 +121 +122 +123 +124 +125 +126 +127 +128 +129 +130 +131 +132 +133 +134 +135 +136 +137 +138 +139 +140 +141 +142 +143 +144 +145 +146 +147 +148 +149 +150 +151 +152 +153 +154 +155 +156 +157 +158 +159 +160 +161 +162 +163 +164 +165 +166 +167 +168 +169 +170 +171 +172 +173 +174 +175 +176 +177 +178 +179 +180 +181 +182 +183 +184 +185 +186 +187 +188 +189 +190 +191 +192 +193 +194 +195 +196 +197 +198 +199 +200 +201 +202 +203 +204 +205 +206 +207 +208 +209 +210 +211 +212 +213 +214 +215 +216 +217 +218 +219 +220 +221 +222 +223 +224 +225 +226 +227 +228 +229 +230 +231 +232 +233 +234 +235 +236 +237 +238 +239 +240 +241 +242 +243 +244 +245 +246 +247 +248 +249 +250 +251 +252 +253 +254 +255 +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +36 +37 +38 +39 +40 +41 +42 +43 +44 +45 +46 +47 +48 +49 +50 +51 +52 +53 +54 +55 +56 +57 +58 +59 +60 +61 +62 +63 +64 +65 +66 +67 +68 +69 +70 +71 +72 +73 +74 +75 +76 +77 +78 +79 +80 +81 +82 +83 +84 +85 +86 +87 +88 +89 +90 +91 +92 +93 +94 +95 +96 +97 +98 +99 +100 +101 +102 +103 +104 +105 +106 +107 +108 +109 +110 +111 +112 +113 +114 +115 +116 +117 +118 +119 +120 +121 +122 +123 +124 +125 +126 +127 +128 +129 +130 +131 +132 +133 +134 +135 +136 +137 +138 +139 +140 +141 +142 +143 +144 +145 +146 +147 +148 +149 +150 +151 +152 +153 +154 +155 +156 +157 +158 +159 +160 +161 +162 +163 +164 +165 +166 +167 +168 +169 +170 +171 +172 +173 +174 +175 +176 +177 +178 +179 +180 +181 +182 +183 +184 +185 +186 +187 +188 +189 +190 +191 +192 +193 +194 +195 +196 +197 +198 +199 +200 +201 +202 +203 +204 +205 +206 +207 +208 +209 +210 +211 +212 +213 +214 +215 +216 +217 +218 +219 +220 +221 +222 +223 +224 +225 +226 +227 +228 +229 +230 +231 +232 +233 +234 +235 +236 +237 +238 +239 +240 +241 +242 +243 +244 +245 +246 +247 +248 +249 +250 +251 +252 +253 +254 +255 +SCALARS attr5_2_2 float +LOOKUP_TABLE default +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +36 +37 +38 +39 +40 +41 +42 +43 +44 +45 +46 +47 +48 +49 +50 +51 +52 +53 +54 +55 +56 +57 +58 +59 +60 +61 +62 +63 +64 +65 +66 +67 +68 +69 +70 +71 +72 +73 +74 +75 +76 +77 +78 +79 +80 +81 +82 +83 +84 +85 +86 +87 +88 +89 +90 +91 +92 +93 +94 +95 +96 +97 +98 +99 +100 +101 +102 +103 +104 +105 +106 +107 +108 +109 +110 +111 +112 +113 +114 +115 +116 +117 +118 +119 +120 +121 +122 +123 +124 +125 +126 +127 +128 +129 +130 +131 +132 +133 +134 +135 +136 +137 +138 +139 +140 +141 +142 +143 +144 +145 +146 +147 +148 +149 +150 +151 +152 +153 +154 +155 +156 +157 +158 +159 +160 +161 +162 +163 +164 +165 +166 +167 +168 +169 +170 +171 +172 +173 +174 +175 +176 +177 +178 +179 +180 +181 +182 +183 +184 +185 +186 +187 +188 +189 +190 +191 +192 +193 +194 +195 +196 +197 +198 +199 +200 +201 +202 +203 +204 +205 +206 +207 +208 +209 +210 +211 +212 +213 +214 +215 +216 +217 +218 +219 +220 +221 +222 +223 +224 +225 +226 +227 +228 +229 +230 +231 +232 +233 +234 +235 +236 +237 +238 +239 +240 +241 +242 +243 +244 +245 +246 +247 +248 +249 +250 +251 +252 +253 +254 +255 +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +36 +37 +38 +39 +40 +41 +42 +43 +44 +45 +46 +47 +48 +49 +50 +51 +52 +53 +54 +55 +56 +57 +58 +59 +60 +61 +62 +63 +64 +65 +66 +67 +68 +69 +70 +71 +72 +73 +74 +75 +76 +77 +78 +79 +80 +81 +82 +83 +84 +85 +86 +87 +88 +89 +90 +91 +92 +93 +94 +95 +96 +97 +98 +99 +100 +101 +102 +103 +104 +105 +106 +107 +108 +109 +110 +111 +112 +113 +114 +115 +116 +117 +118 +119 +120 +121 +122 +123 +124 +125 +126 +127 +128 +129 +130 +131 +132 +133 +134 +135 +136 +137 +138 +139 +140 +141 +142 +143 +144 +145 +146 +147 +148 +149 +150 +151 +152 +153 +154 +155 +156 +157 +158 +159 +160 +161 +162 +163 +164 +165 +166 +167 +168 +169 +170 +171 +172 +173 +174 +175 +176 +177 +178 +179 +180 +181 +182 +183 +184 +185 +186 +187 +188 +189 +190 +191 +192 +193 +194 +195 +196 +197 +198 +199 +200 +201 +202 +203 +204 +205 +206 +207 +208 +209 +210 +211 +212 +213 +214 +215 +216 +217 +218 +219 +220 +221 +222 +223 +224 +225 +226 +227 +228 +229 +230 +231 +232 +233 +234 +235 +236 +237 +238 +239 +240 +241 +242 +243 +244 +245 +246 +247 +248 +249 +250 +251 +252 +253 +254 +255 +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +36 +37 +38 +39 +40 +41 +42 +43 +44 +45 +46 +47 +48 +49 +50 +51 +52 +53 +54 +55 +56 +57 +58 +59 +60 +61 +62 +63 +64 +65 +66 +67 +68 +69 +70 +71 +72 +73 +74 +75 +76 +77 +78 +79 +80 +81 +82 +83 +84 +85 +86 +87 +88 +89 +90 +91 +92 +93 +94 +95 +96 +97 +98 +99 +100 +101 +102 +103 +104 +105 +106 +107 +108 +109 +110 +111 +112 +113 +114 +115 +116 +117 +118 +119 +120 +121 +122 +123 +124 +125 +126 +127 +128 +129 +130 +131 +132 +133 +134 +135 +136 +137 +138 +139 +140 +141 +142 +143 +144 +145 +146 +147 +148 +149 +150 +151 +152 +153 +154 +155 +156 +157 +158 +159 +160 +161 +162 +163 +164 +165 +166 +167 +168 +169 +170 +171 +172 +173 +174 +175 +176 +177 +178 +179 +180 +181 +182 +183 +184 +185 +186 +187 +188 +189 +190 +191 +192 +193 +194 +195 +196 +197 +198 +199 +200 +201 +202 +203 +204 +205 +206 +207 +208 +209 +210 +211 +212 +213 +214 +215 +216 +217 +218 +219 +220 +221 +222 +223 +224 +225 +226 +227 +228 +229 +230 +231 +232 +233 +234 +235 +236 +237 +238 +239 +240 +241 +242 +243 +244 +245 +246 +247 +248 +249 +250 +251 +252 +253 +254 +255 +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +36 +37 +38 +39 +40 +41 +42 +43 +44 +45 +46 +47 +48 +49 +50 +51 +52 +53 +54 +55 +56 +57 +58 +59 +60 +61 +62 +63 +64 +65 +66 +67 +68 +69 +70 +71 +72 +73 +74 +75 +76 +77 +78 +79 +80 +81 +82 +83 +84 +85 +86 +87 +88 +89 +90 +91 +92 +93 +94 +95 +96 +97 +98 +99 +100 +101 +102 +103 +104 +105 +106 +107 +108 +109 +110 +111 +112 +113 +114 +115 +116 +117 +118 +119 +120 +121 +122 +123 +124 +125 +126 +127 +128 +129 +130 +131 +132 +133 +134 +135 +136 +137 +138 +139 +140 +141 +142 +143 +144 +145 +146 +147 +148 +149 +150 +151 +152 +153 +154 +155 +156 +157 +158 +159 +160 +161 +162 +163 +164 +165 +166 +167 +168 +169 +170 +171 +172 +173 +174 +175 +176 +177 +178 +179 +180 +181 +182 +183 +184 +185 +186 +187 +188 +189 +190 +191 +192 +193 +194 +195 +196 +197 +198 +199 +200 +201 +202 +203 +204 +205 +206 +207 +208 +209 +210 +211 +212 +213 +214 +215 +216 +217 +218 +219 +220 +221 +222 +223 +224 +225 +226 +227 +228 +229 +230 +231 +232 +233 +234 +235 +236 +237 +238 +239 +240 +241 +242 +243 +244 +245 +246 +247 +248 +249 +250 +251 +252 +253 +254 +255 +SCALARS domain float +LOOKUP_TABLE default +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +0.000000 +0.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +0.000000 +0.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +0.000000 +0.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +0.000000 +0.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +0.000000 +0.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +0.000000 +0.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +0.000000 +0.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +0.000000 +0.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +0.000000 +0.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +0.000000 +0.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +0.000000 +0.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +0.000000 +0.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +0.000000 +0.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +0.000000 +0.000000 +0.000000 +0.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +0.000000 +0.000000 +0.000000 +0.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +0.000000 +0.000000 +0.000000 +0.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +0.000000 +0.000000 +0.000000 +0.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +0.000000 +0.000000 +0.000000 +0.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +0.000000 +0.000000 +0.000000 +0.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +0.000000 +0.000000 +0.000000 +0.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +0.000000 +0.000000 +0.000000 +0.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +0.000000 +0.000000 +0.000000 +0.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +0.000000 +0.000000 +0.000000 +0.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +0.000000 +0.000000 +0.000000 +0.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +0.000000 +0.000000 +0.000000 +0.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +0.000000 +0.000000 +0.000000 +0.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +0.000000 +0.000000 +0.000000 +0.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 diff --git a/test_data/vtk_grids_test_1d.vtk b/test_data/vtk_grids_test_1d.vtk new file mode 100644 index 0000000000000000000000000000000000000000..0ad208b3e2500e16120ec72b918a80ab8ef04c44 --- /dev/null +++ b/test_data/vtk_grids_test_1d.vtk @@ -0,0 +1,1124 @@ +# vtk DataFile Version 3.0 +grids +ASCII +DATASET POLYDATA +POINTS 64 double +0 0.0 0.0 +0.1 0.0 0.0 +0.2 0.0 0.0 +0.3 0.0 0.0 +0.4 0.0 0.0 +0.5 0.0 0.0 +0.6000000000000001 0.0 0.0 +0.7000000000000001 0.0 0.0 +0.8 0.0 0.0 +0.9 0.0 0.0 +1 0.0 0.0 +1.1 0.0 0.0 +1.2 0.0 0.0 +1.3 0.0 0.0 +1.4 0.0 0.0 +1.5 0.0 0.0 +5 0.0 0.0 +5.200000002980232 0.0 0.0 +5.400000005960464 0.0 0.0 +5.600000008940697 0.0 0.0 +5.800000011920929 0.0 0.0 +6.000000014901161 0.0 0.0 +6.200000017881393 0.0 0.0 +6.400000020861626 0.0 0.0 +6.600000023841858 0.0 0.0 +6.80000002682209 0.0 0.0 +7.000000029802322 0.0 0.0 +7.200000032782555 0.0 0.0 +7.400000035762787 0.0 0.0 +7.600000038743019 0.0 0.0 +7.800000041723251 0.0 0.0 +8.000000044703484 0.0 0.0 +0 0.0 0.0 +0.05 0.0 0.0 +0.1 0.0 0.0 +0.15 0.0 0.0 +0.2 0.0 0.0 +0.25 0.0 0.0 +0.3 0.0 0.0 +0.35 0.0 0.0 +0.4 0.0 0.0 +0.45 0.0 0.0 +0.5 0.0 0.0 +0.55 0.0 0.0 +0.6000000000000001 0.0 0.0 +0.65 0.0 0.0 +0.7000000000000001 0.0 0.0 +0.75 0.0 0.0 +5 0.0 0.0 +5.1 0.0 0.0 +5.2 0.0 0.0 +5.3 0.0 0.0 +5.4 0.0 0.0 +5.5 0.0 0.0 +5.6 0.0 0.0 +5.7 0.0 0.0 +5.8 0.0 0.0 +5.9 0.0 0.0 +6 0.0 0.0 +6.1 0.0 0.0 +6.2 0.0 0.0 +6.3 0.0 0.0 +6.4 0.0 0.0 +6.5 0.0 0.0 +VERTICES 64 128 +1 0 +1 1 +1 2 +1 3 +1 4 +1 5 +1 6 +1 7 +1 8 +1 9 +1 10 +1 11 +1 12 +1 13 +1 14 +1 15 +1 16 +1 17 +1 18 +1 19 +1 20 +1 21 +1 22 +1 23 +1 24 +1 25 +1 26 +1 27 +1 28 +1 29 +1 30 +1 31 +1 32 +1 33 +1 34 +1 35 +1 36 +1 37 +1 38 +1 39 +1 40 +1 41 +1 42 +1 43 +1 44 +1 45 +1 46 +1 47 +1 48 +1 49 +1 50 +1 51 +1 52 +1 53 +1 54 +1 55 +1 56 +1 57 +1 58 +1 59 +1 60 +1 61 +1 62 +1 63 +POINT_DATA 64 +SCALARS attr0 double +LOOKUP_TABLE default +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +SCALARS attr1 double +LOOKUP_TABLE default +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +SCALARS attr2 double +LOOKUP_TABLE default +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +SCALARS attr3 double +LOOKUP_TABLE default +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +0.3333333333333333 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +VECTORS attr4 double +0 0 0 +1 1 1 +2 2 2 +3 3 3 +4 4 4 +5 5 5 +6 6 6 +7 7 7 +8 8 8 +9 9 9 +10 10 10 +11 11 11 +12 12 12 +13 13 13 +14 14 14 +15 15 15 +0 0 0 +1 1 1 +2 2 2 +3 3 3 +4 4 4 +5 5 5 +6 6 6 +7 7 7 +8 8 8 +9 9 9 +10 10 10 +11 11 11 +12 12 12 +13 13 13 +14 14 14 +15 15 15 +0 0 0 +1 1 1 +2 2 2 +3 3 3 +4 4 4 +5 5 5 +6 6 6 +7 7 7 +8 8 8 +9 9 9 +10 10 10 +11 11 11 +12 12 12 +13 13 13 +14 14 14 +15 15 15 +0 0 0 +1 1 1 +2 2 2 +3 3 3 +4 4 4 +5 5 5 +6 6 6 +7 7 7 +8 8 8 +9 9 9 +10 10 10 +11 11 11 +12 12 12 +13 13 13 +14 14 14 +15 15 15 +SCALARS attr5_0_0 double +LOOKUP_TABLE default +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +SCALARS attr5_0_1 double +LOOKUP_TABLE default +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +SCALARS attr5_0_2 double +LOOKUP_TABLE default +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +SCALARS attr5_1_0 double +LOOKUP_TABLE default +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +SCALARS attr5_1_1 double +LOOKUP_TABLE default +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +SCALARS attr5_1_2 double +LOOKUP_TABLE default +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +SCALARS attr5_2_0 double +LOOKUP_TABLE default +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +SCALARS attr5_2_1 double +LOOKUP_TABLE default +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +SCALARS attr5_2_2 double +LOOKUP_TABLE default +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +SCALARS domain float +LOOKUP_TABLE default +0.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +0.000000 +0.000000 +0.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +1.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 diff --git a/test_data/vtk_points_2d_bin_test.vtp b/test_data/vtk_points_2d_bin_test.vtp new file mode 100644 index 0000000000000000000000000000000000000000..afb88be758be47eae33d0842bf456a8a5bcd53d7 --- /dev/null +++ b/test_data/vtk_points_2d_bin_test.vtp @@ -0,0 +1,54 @@ +<VTKFile type="PolyData" version="1.0" byte_order="LittleEndian" header_type="UInt64"> + <PolyData> + <Piece NumberOfPoints="300" NumberOfVerts="300"> + <Points> + <DataArray type="Float64" Name="Points" NumberOfComponents="3" format="binary"> +IBwAAAAAAAC6Ek/RonbIPzhDveBjXuE/AAAAAAAAAAD2WsoshdLaP6Tm/+WtDOA/AAAAAAAAAAC1XW26JVHpP0Nb0WBeUrc/AAAAAAAAAAAXRZpEdN3SP+Bi9BiQzuU/AAAAAAAAAAC2RLf9pF3kP5MUPXW2deE/AAAAAAAAAADYlM/7kzXoP3q6MCLDouc/AAAAAAAAAACPMH5huOfgP6Z0L9SsReg/AAAAAAAAAADFpsGfnSyvP+CPB8APOOw/AAAAAAAAAADJZIVkm03dP+fc8byMEec/AAAAAAAAAABCS5E4X1rXP4G3VaQ/JOU/AAAAAAAAAAAEPTHOfWHnPyWQlLHtt9U/AAAAAAAAAABg/Moe0IHaP0f6RkXcguw/AAAAAAAAAAD+7gwGgYjpP+TXxjIOlNw/AAAAAAAAAADnc9SHDMblPzouy8fiaMo/AAAAAAAAAACKqNf8uivUP3LZRgtHk+w/AAAAAAAAAADOMx35GGbhPyadQslsse4/AAAAAAAAAACzNM+gpmXYP7h62uWjwuI/AAAAAAAAAACuyMLQqJvOP9b4hSSVA+0/AAAAAAAAAABAUZ3BX1fhP3iFHBpEvdE/AAAAAAAAAACe6doPMYuiP44O0yG5eLY/AAAAAAAAAADPrf6ZGKngP5uRkaMyN+c/AAAAAAAAAAC3O8ieJOLrP/hP7wcEWOg/AAAAAAAAAABhRRVET13lP2UkWm3N7dI/AAAAAAAAAADUo2orFq7qPxY4a/T0Y+o/AAAAAAAAAABqlw3KSjTZPyTnfxRuDOA/AAAAAAAAAADEZAgRns3bPzK0R+fmJew/AAAAAAAAAABfUglp0FbbPzPP0YNmGLc/AAAAAAAAAAAbCLCh8vvnP+G88I6Poec/AAAAAAAAAAAIg4kHfD7bP2JEWzvPXeI/AAAAAAAAAAATKH2d9mvhP9gx2x8UZ2I/AAAAAAAAAAAUVVQedtXVPzi9zzBkIcg/AAAAAAAAAABwrxAtSKjnPzbPwNZkmL8/AAAAAAAAAAAINcbDe+WcP/OS25qGNrI/AAAAAAAAAACna0hdLMrrP06LVsVYutQ/AAAAAAAAAAAcKpgW8urTP11ly5FRTdo/AAAAAAAAAABUDMz01fnpP6hVnNMr1dE/AAAAAAAAAAD3VBt/hFXSPx3Fdo1xneQ/AAAAAAAAAADU987VFYS4PzuVybBiNes/AAAAAAAAAAB5QM2Aw1/pP5MAJFm2/+0/AAAAAAAAAACxQaePJ1/sPxjBwiZ0n+4/AAAAAAAAAAADi5eUfjrUP1K+XOXWoOE/AAAAAAAAAACP0ahFOJfrP2sR4FJK9+8/AAAAAAAAAAAqJB01623hP+L27wmPBOg/AAAAAAAAAAA7Gc9XYnOoP3bAo+LEH+4/AAAAAAAAAAASN18Ud2TQP5sJ3WUye7E/AAAAAAAAAABXTpyL1NjRP16H1xJRPLQ/AAAAAAAAAAAGVGo7/dXqPyxu9ivqyOQ/AAAAAAAAAACkU8k1LlbrP+RkFNGNzeU/AAAAAAAAAAAtgdi1ab+jP8QLyT4eess/AAAAAAAAAABenULXULHuPyoFoT1rfe8/AAAAAAAAAAAtJx62aezQPy5+u8roQOI/AAAAAAAAAACFA4imPf7rP5aK0/O0OpY/AAAAAAAAAADfaWdKEEvsP4TMXRK+GeE/AAAAAAAAAAA2ZRH/ZE3nP1lqHLDTyuE/AAAAAAAAAAAKbm3k+kjpP1jTHxlUFtA/AAAAAAAAAAA1VpBY5dTXPyVuQXjtSN8/AAAAAAAAAAC7doO5okTeP0FCSEnf3ts/AAAAAAAAAACigrM4rz7mP72F3V0hPcE/AAAAAAAAAACe4hYusY7UPxCFU8p3PcY/AAAAAAAAAAB6qq/cwiroP+yossKJq+Y/AAAAAAAAAACL/oukugDqP4hpyQg8S+s/AAAAAAAAAAD5pEOOgy3OP3uFVbBCPdU/AAAAAAAAAAAnOWZfbOPsP/zh+Q0CD+M/AAAAAAAAAAD+Wm8HgVLoP23J0rlJm9Y/AAAAAAAAAADZjYW+EzntP5xrwQAySu8/AAAAAAAAAAD93KJGgZHuP3+EzqbAveg/AAAAAAAAAAAc9DQx8oXlP6X1FWotBeU/AAAAAAAAAACIS9QWPNrVP/wwTMGB59k/AAAAAAAAAAAShUMWdz3OP8WS0XOdNtc/AAAAAAAAAAAgA17Eb/7QP6J5HyovQ+A/AAAAAAAAAACV49B7NY63P4QD2SI+fsM/AAAAAAAAAAAHzYSafJndP8XFiqcdneo/AAAAAAAAAADgv0D1D6DPP/CIS9CHO8o/AAAAAAAAAAAH49d6fA7kP/+1T4kAJcg/AAAAAAAAAABLo1NhWi7GPyjpTcBrC9k/AAAAAAAAAAA38FRF5IflPx1QsFLx1+c/AAAAAAAAAADJhTGyGz3nP2uDnX9KPuE/AAAAAAAAAAAlosdw7S7sPzjsUc7jCcc/AAAAAAAAAABlYwyOTc7pP0FOlWTfWOU/AAAAAAAAAADv7VtiCAnCP4sdAKA68d8/AAAAAAAAAABvKA+iyGvoPyh3df1rROU/AAAAAAAAAAB4V9XBQ1TlPyTr3ehtCtE/AAAAAAAAAACIONkyvGPDPyI3TBtv5Ok/AAAAAAAAAAD7aZCIAsvnP1qkz+/SLZg/AAAAAAAAAAB0U5MvRlbWP8XkFXadDeU/AAAAAAAAAADzqvFohirnP46bRgs5stw/AAAAAAAAAACRf5VbN0DVP0BKlvnf2tQ/AAAAAAAAAABuF9HFSHTHPzE5EI1n49c/AAAAAAAAAAA4jJzY47nhPw7ryzt5Cpo/AAAAAAAAAAB3Nh+6xGTgP/lWvkaD1OA/AAAAAAAAAADPV55SGNTgP5IUNjm39eQ/AAAAAAAAAAA+8FT94IflPxoTBOJy9t0/AAAAAAAAAACMCMXruXutP2/vgZVICN8/AAAAAAAAAACz01V4JhbFP8a5pvgco+w/AAAAAAAAAAAfVgBL8NTvP7FBGZonX+M/AAAAAAAAAADNPY5+GeHYP6662DupouM/AAAAAAAAAACnLJ21rGnhP++UN0SINeQ/AAAAAAAAAAA/Wlp94NLSP1l3PWVTROE/AAAAAAAAAADrfs9FikDYP9WaHHKVstE/AAAAAAAAAADJ7fN6GwnmP/nXy4YDFMo/AAAAAAAAAACm5eMfLQ3eP4rDkBA7ntc/AAAAAAAAAABtBM1fyX2ZP4bcwee8EY8/AAAAAAAAAACNBLZSuf3UP+XeWJmNkNM/AAAAAAAAAAA2WnX95FLVP22G3kfJvMA/AAAAAAAAAACVSNeCtVvUP+8k6lCI7do/AAAAAAAAAAASwMfE9h+8P0i4XdnbI7E/AAAAAAAAAABsI1QZSu61P7qb9vkistQ/AAAAAAAAAACii0H9LjrPP2oR1P9K90U/AAAAAAAAAABmlOrSzLXaP0UZ075dc7Y/AAAAAAAAAAAYMwDPc+bPP37UyRvBFYs/AAAAAAAAAAC+j0HXIDjPP1Pm3qHWjLA/AAAAAAAAAAC/Zl1JoEzBP5Kpr/U2K9g/AAAAAAAAAADeVhbskNTEP6lQ10yrV7Q/AAAAAAAAAACDA+ZGPv7cP7KbN/gmMtQ/AAAAAAAAAABBN1qfX+SyP05FOttY3dI/AAAAAAAAAACo1tATrJTHPxkdDbJzcck/AAAAAAAAAAA9G0yQYfK5P58dBKQw8c0/AAAAAAAAAAD8+0v/AQLaPwwwg9z5Z94/AAAAAAAAAAAKn9jIerDTPzdTxbFkVq0/AAAAAAAAAAC96WBGIYvfP2U+0ozN4LY/AAAAAAAAAADRB76jF/zQP4r8Uiq7gbY/AAAAAAAAAACx1duJJxXCPzjzVOFjhtU/AAAAAAAAAABM6sMG2grOP8Ku9yWfKNQ/AAAAAAAAAADKkpv9mjbCP/T0Rd2FBd0/AAAAAAAAAADpVU6NC9W4PyNo+mHuy9I/AAAAAAAAAADq7d7xComQP5vsTJWyidk/AAAAAAAAAABFIsKe3e7ePxMq1mr26tQ/AAAAAAAAAAAZ4taH8450P2/K0aXIGtc/AAAAAAAAAAByDlcMx3jUP8s1/Ewa5dE/AAAAAAAAAAAuiF7s6LvAPxnJiptzm9o/AAAAAAAAAAAok3X4azbVPyLwWRLvB8M/AAAAAAAAAAC6X90aI1DRP5alIxw1Ld4/AAAAAAAAAADnQsdnjF6cP/kvSXQDaLs/AAAAAAAAAAAw1snd5xS7P7Gp06YnK6Y/AAAAAAAAAADat9TmEqTVP4Z6yvu8wpo/AAAAAAAAAABapIon063KP2sdsrBK8dY/AAAAAAAAAAAjocqwbq+qP5GGQ2S3PM4/AAAAAAAAAADVYNdFlU/UP/xjHNMBztE/AAAAAAAAAAC6s9LSIqamP+BYR9ePU9w/AAAAAAAAAAARHsKb9/CePwsKz5X6esg/AAAAAAAAAADenRIMEbHGP9gg1ymUb9Q/AAAAAAAAAAC2Q1E1JV7HP4og0+e6b9Y/AAAAAAAAAAA37R5oZInAP+d1UWEMRdc/AAAAAAAAAACl9A9xrQXYP/mnfnEDrNA/AAAAAAAAAABZEURCU/fdP2fcwbjMEd8/AAAAAAAAAADqwScGCx/cP7hu08mjSJY/AAAAAAAAAAAkhMI77r2uP1X802TVAbY/AAAAAAAAAAD4igABhLrfPxqNf+VyOdA/AAAAAAAAAADdbx+vEUjAPxv3lGtyhNU/AAAAAAAAAADWuVPYFCPGPxX3S6B1BNo/AAAAAAAAAADV8l2WlQbRPwvA24P6H5I/AAAAAAAAAADN7bJ8GYnWPxqwFd3yJ8U/AAAAAAAAAAB8lNPdwTW2P9wvQdARaN8/AAAAAAAAAAB3UFClxNe3P+zeO8yJENI/AAAAAAAAAADTjtRKlrjVP7JuCtGmyMo/AAAAAAAAAACfjd6qMLnQP1ZkfuTUzdA/AAAAAAAAAACgQlHbr163PzHKyZ/nGrs/AAAAAAAAAABxQZN4R1/GP2ayGz3NJsI/AAAAAAAAAADnQMBHjN+vP2BEhj/Q3dw/AAAAAAAAAADHOppKnOLCPxFRTkl317g/AAAAAAAAAACRvzlXNyDTPyM6HXfuYtE/AAAAAAAAAAA30nWI5BbVP0SPZgZeuNw/AAAAAAAAAACRkBuMtzfCP5u+UHCyoNc/AAAAAAAAAACsO9c5KmK0P5A6yCe44ss/AAAAAAAAAAC6rCjyoqnbP2R3xiVOxNw/AAAAAAAAAACVbb2/NUnRP0sUpJna9d0/AAAAAAAAAACKyQLpOpveP+mLCUkLOts/AAAAAAAAAAAucUXKaEe9PxBizi34zqg/AAAAAAAAAADVJz+DFWzQP/8MVY+AedU/AAAAAAAAAADehYHyED3PP50JI44xe94/AAAAAAAAAAAfmw6QcLLIP1UEXIjV/cE/AAAAAAAAAAB7r3R0QqjVP7FzEI0nxtc/AAAAAAAAAADVo3JYFa7WP4Pul2K+CMQ/AAAAAAAAAABg72gGUIjbP24ISxHJe9o/AAAAAAAAAABsY0n9SU7LP1XHEFRVnNc/AAAAAAAAAACk8VQhLoe1P/0VCqwB9co/AAAAAAAAAACWYUI9Nc/eP0cYQqDc884/AAAAAAAAAAC2wP3IpB/RP5F2zFS3xMk/AAAAAAAAAACkPxfWLWDEP/wq2euBaoM/AAAAAAAAAADagIkmkz/LP5yt3yMyKYA/AAAAAAAAAACb3faWMpHUPwfy8Hr8htc/AAAAAAAAAADB0R6mH5fQP0i5yN9bo7s/AAAAAAAAAAA4ltTA47S1PyAFW+BvfcI/AAAAAAAAAABeSccAUVu8P/q8xi+Dobw/AAAAAAAAAADs2tMNihK2P0VPYGVd2N8/AAAAAAAAAACVSJ1EtVvRPx79TQdxAdk/AAAAAAAAAADPadCxGMunP/76yuOAgpo/AAAAAAAAAAAw3sAc6JC/P5aL2tA0usI/AAAAAAAAAACt5M+nqQ2YP+gzN+0LZtQ/AAAAAAAAAABA9k7o34TYP3HcmYjHEcM/AAAAAAAAAADc/tz/kYAhP/NLxlcG2qw/AAAAAAAAAAAzDlxW5vixP2VygmnNxs4/AAAAAAAAAACE6FXIvQu1Pz49sc1gYdc/AAAAAAAAAAAgy8MfcBpuPyW4EX7tI8c/AAAAAAAAAAC129aOJZK0P0QaEfHdcsc/AAAAAAAAAAB16iZ2xYrcP0wii/rZbso/AAAAAAAAAAD7eZtRAkPSP+W1NYcNJdU/AAAAAAAAAAC5uQWaIyPdP2x2uz3KRNI/AAAAAAAAAAB2edfkREO0P+RH0y8OXLY/AAAAAAAAAAAChUA5f72/P05VwMdY1b8/AAAAAAAAAABby96ouADHP5+B+arJ2Hw/AAAAAAAAAAAc/aoY2OfQP5oF797/SbU/AAAAAAAAAAAvpOjCG+HOP8axdp62QM4/AAAAAAAAAACfmvWSScyOP+irr22lw9E/AAAAAAAAAACnYrZDRmjOPy/MD1ToGcg/AAAAAAAAAADN9XVC5tGxP4Lkq6fxQL0/AAAAAAAAAABCMcan+IDGP37Hq5yngmA/AAAAAAAAAAC9U91tIVbRP+hkeNtYmtA/AAAAAAAAAAA9w/CVLmvEP2tm4q4wM8U/AAAAAAAAAAAimDdwIme3P3PKpT2T58k/AAAAAAAAAACcrwhtmA7SP0kYPVN1Dcs/AAAAAAAAAAD3FGTg6lvEPz/5Bcn5nLY/AAAAAAAAAAC12VsP8t/OPwke7rEuJMw/AAAAAAAAAADYCxBjrZORPysrVTY3N9I/AAAAAAAAAABbEWWMharQP14hbvIdvLU/AAAAAAAAAACBNFCtv+W3P5bCW8q0HtI/AAAAAAAAAADissXJjibNPxz6nzHyAsA/AAAAAAAAAADTdwXJr922PyODkzrVpLw/AAAAAAAAAACTOMmZtmObP8KwVIQFDsw/AAAAAAAAAAAbf44XDFrCPzosNBkWHbk/AAAAAAAAAADaeFCHksPHP91wYhL4LcU/AAAAAAAAAABwTowhyNjJPwima/ouYM0/AAAAAAAAAADvFEN6u6ixP5WKbceBB6Y/AAAAAAAAAABYt3OuIPHSP4sdDLbTisM/AAAAAAAAAAAsWzA1nQWrPykVFbvR27s/AAAAAAAAAAD8yFQHgpu1Pwy2QKb5pM8/AAAAAAAAAADFyRNXg4HMP0tzTezz38I/AAAAAAAAAADy/Vx4002uP1Gn7k/xRdI/AAAAAAAAAADTJfaYSSDIP6FPfD0v2NE/AAAAAAAAAABQxyRnvgLEPyO2r5ghWMs/AAAAAAAAAAC7TRHDu/JwP8Y8aappLqg/AAAAAAAAAADSwHk3ylLGP7V5Ck0lw8o/AAAAAAAAAADM7SuR5tXGPyXdHqFtkdA/AAAAAAAAAACY0RJczTCgP60m+Zbcn8Y/AAAAAAAAAABRF4h+vVrSP5ER+U4ERNA/AAAAAAAAAAC71NB5opW3P5JaLurpBZw/AAAAAAAAAAAzAQ2oZn/JP1fG16jUHMQ/AAAAAAAAAAC65W1IVkDMP9K0NqgwP84/AAAAAAAAAAC8eHNmO92/P/90TgUaX8I/AAAAAAAAAABrG9C2SvKnP1tQHVrSV9E/AAAAAAAAAABglwUDUDTNPxfeiAeOKrU/AAAAAAAAAAAakZWVcjfFP3PNyJus/9E/AAAAAAAAAAB2K1+pETetP+dbzvula8I/AAAAAAAAAABNb85L82HSP3uQFagonss/AAAAAAAAAAAve/IsNY/DP2e1blwZcqU/AAAAAAAAAADI3WKk6F27P7luycUJr9E/AAAAAAAAAAAMJsMSLaCxP8iyoEgCDYY/AAAAAAAAAAA1Ju+UGKDLPzUN3JRl+bE/AAAAAAAAAADeTm/yXSW1P73YjdQ6rcI/AAAAAAAAAACciN2sGKLHP4jHcUfVtdA/AAAAAAAAAAC9exa5hyi7P1JV0SNXVcc/AAAAAAAAAAALnfFvrWTKP1h81O3TwaU/AAAAAAAAAADdPBLDKntgP/CeO/CHMNI/AAAAAAAAAAC9pJgZCBS6PxFr1el2SsU/AAAAAAAAAACeedMRMUO2P+dfnKZyNqg/AAAAAAAAAAAEiakw5KHRPx230dYKvsA/AAAAAAAAAAD5sMPLtlrBP9wiYU/41MU/AAAAAAAAAAB1z6RMq/5DP73tXSHu1Z0/AAAAAAAAAAADPA69l3vCPwlt8yEV488/AAAAAAAAAADSCfYaSi7IP69RTogo17g/AAAAAAAAAAA7snhUr3OwP1IW6gkKKM4/AAAAAAAAAABuDv2mYhKbPxIXO+ypp6U/AAAAAAAAAAAbzcCWpcyyP9ReHQJjHc4/AAAAAAAAAAD4Px4IakbHP+YzQrMM5s4/AAAAAAAAAABAcmiMrJO4Py7QNq+CMc4/AAAAAAAAAAC4pMOXoy2OP0elajApesc/AAAAAAAAAADTb/nur+GcP+3+oFu8s9I/AAAAAAAAAAAm1SkWoEi+P406tmCGr8E/AAAAAAAAAADe7A5QKiOyP0GZDL34TLM/AAAAAAAAAABHrvwq3KjRPwjEjdiVt9I/AAAAAAAAAACf+JSZFuqrP/6of6Iaxbk/AAAAAAAAAACPA7lQBUvQPy2pcyU2+LI/AAAAAAAAAADjBjaqwS+IP8irZ2GCkNI/AAAAAAAAAABBIBhM3+/DPzLDVr1mnrQ/AAAAAAAAAABdPv2Vavq6P/7EATUat6g/AAAAAAAAAAA5sc1nYyepP6KCMgji8Zk/AAAAAAAAAAA7B6YlyWLDP7ouwf3Vm9I/AAAAAAAAAACgdieR4nfPP7ByIQIOrcU/AAAAAAAAAADL0I3vM7HSP72bLa1UZcw/AAAAAAAAAADGZfMftuavP2U+ohY0R6U/AAAAAAAAAABfczgNHZPAP+duIQbzrrU/AAAAAAAAAAA/Ae/3LEy1PzsFOrCVMMY/AAAAAAAAAABnny/3f2PLP7BhNOlaArk/AAAAAAAAAADCYjw60gHFP6ZOYyoTv8Q/AAAAAAAAAABFKJ1hQ9K3P07A9zhyuc0/AAAAAAAAAAC8JSoaVSCuP9ENpbR933M/AAAAAAAAAAD2l+eg0QC5P+cs+C0mg80/AAAAAAAAAACyIwVPwAeHP8sPHTQaeME/AAAAAAAAAACVNVF5NWW3P9btJiNIvL8/AAAAAAAAAABqmGakl4CpPxbMLm2OM9I/AAAAAAAAAAC6f2tGiabAP2dWa1KZIbc/AAAAAAAAAADGjtfTnDi0PzNWaAWzoYg/AAAAAAAAAABF+Ngt3YOTP3SfHWoS/c0/AAAAAAAAAADiUEycjte5PyGOjwGJ0rE/AAAAAAAAAABfuqfhA1bPP2291XNJIZU/AAAAAAAAAAAyrlvgs/WuP6waW/apcrI/AAAAAAAAAABK3VdIwXfKP1aQlfc6nrs/AAAAAAAAAACkHUgSlFfSPz0dPp6UJHQ/AAAAAAAAAAB0UCRq+QrRP3druSQRF8A/AAAAAAAAAABJF7z4jie1P1qcoG85GKY/AAAAAAAAAAA= + </DataArray> + </Points> + <Verts> + <DataArray type="Int64" Name="connectivity" format="binary"> +YAkAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAgAAAAAAAAADAAAAAAAAAAQAAAAAAAAABQAAAAAAAAAGAAAAAAAAAAcAAAAAAAAACAAAAAAAAAAJAAAAAAAAAAoAAAAAAAAACwAAAAAAAAAMAAAAAAAAAA0AAAAAAAAADgAAAAAAAAAPAAAAAAAAABAAAAAAAAAAEQAAAAAAAAASAAAAAAAAABMAAAAAAAAAFAAAAAAAAAAVAAAAAAAAABYAAAAAAAAAFwAAAAAAAAAYAAAAAAAAABkAAAAAAAAAGgAAAAAAAAAbAAAAAAAAABwAAAAAAAAAHQAAAAAAAAAeAAAAAAAAAB8AAAAAAAAAIAAAAAAAAAAhAAAAAAAAACIAAAAAAAAAIwAAAAAAAAAkAAAAAAAAACUAAAAAAAAAJgAAAAAAAAAnAAAAAAAAACgAAAAAAAAAKQAAAAAAAAAqAAAAAAAAACsAAAAAAAAALAAAAAAAAAAtAAAAAAAAAC4AAAAAAAAALwAAAAAAAAAwAAAAAAAAADEAAAAAAAAAMgAAAAAAAAAzAAAAAAAAADQAAAAAAAAANQAAAAAAAAA2AAAAAAAAADcAAAAAAAAAOAAAAAAAAAA5AAAAAAAAADoAAAAAAAAAOwAAAAAAAAA8AAAAAAAAAD0AAAAAAAAAPgAAAAAAAAA/AAAAAAAAAEAAAAAAAAAAQQAAAAAAAABCAAAAAAAAAEMAAAAAAAAARAAAAAAAAABFAAAAAAAAAEYAAAAAAAAARwAAAAAAAABIAAAAAAAAAEkAAAAAAAAASgAAAAAAAABLAAAAAAAAAEwAAAAAAAAATQAAAAAAAABOAAAAAAAAAE8AAAAAAAAAUAAAAAAAAABRAAAAAAAAAFIAAAAAAAAAUwAAAAAAAABUAAAAAAAAAFUAAAAAAAAAVgAAAAAAAABXAAAAAAAAAFgAAAAAAAAAWQAAAAAAAABaAAAAAAAAAFsAAAAAAAAAXAAAAAAAAABdAAAAAAAAAF4AAAAAAAAAXwAAAAAAAABgAAAAAAAAAGEAAAAAAAAAYgAAAAAAAABjAAAAAAAAAGQAAAAAAAAAZQAAAAAAAABmAAAAAAAAAGcAAAAAAAAAaAAAAAAAAABpAAAAAAAAAGoAAAAAAAAAawAAAAAAAABsAAAAAAAAAG0AAAAAAAAAbgAAAAAAAABvAAAAAAAAAHAAAAAAAAAAcQAAAAAAAAByAAAAAAAAAHMAAAAAAAAAdAAAAAAAAAB1AAAAAAAAAHYAAAAAAAAAdwAAAAAAAAB4AAAAAAAAAHkAAAAAAAAAegAAAAAAAAB7AAAAAAAAAHwAAAAAAAAAfQAAAAAAAAB+AAAAAAAAAH8AAAAAAAAAgAAAAAAAAACBAAAAAAAAAIIAAAAAAAAAgwAAAAAAAACEAAAAAAAAAIUAAAAAAAAAhgAAAAAAAACHAAAAAAAAAIgAAAAAAAAAiQAAAAAAAACKAAAAAAAAAIsAAAAAAAAAjAAAAAAAAACNAAAAAAAAAI4AAAAAAAAAjwAAAAAAAACQAAAAAAAAAJEAAAAAAAAAkgAAAAAAAACTAAAAAAAAAJQAAAAAAAAAlQAAAAAAAACWAAAAAAAAAJcAAAAAAAAAmAAAAAAAAACZAAAAAAAAAJoAAAAAAAAAmwAAAAAAAACcAAAAAAAAAJ0AAAAAAAAAngAAAAAAAACfAAAAAAAAAKAAAAAAAAAAoQAAAAAAAACiAAAAAAAAAKMAAAAAAAAApAAAAAAAAAClAAAAAAAAAKYAAAAAAAAApwAAAAAAAACoAAAAAAAAAKkAAAAAAAAAqgAAAAAAAACrAAAAAAAAAKwAAAAAAAAArQAAAAAAAACuAAAAAAAAAK8AAAAAAAAAsAAAAAAAAACxAAAAAAAAALIAAAAAAAAAswAAAAAAAAC0AAAAAAAAALUAAAAAAAAAtgAAAAAAAAC3AAAAAAAAALgAAAAAAAAAuQAAAAAAAAC6AAAAAAAAALsAAAAAAAAAvAAAAAAAAAC9AAAAAAAAAL4AAAAAAAAAvwAAAAAAAADAAAAAAAAAAMEAAAAAAAAAwgAAAAAAAADDAAAAAAAAAMQAAAAAAAAAxQAAAAAAAADGAAAAAAAAAMcAAAAAAAAAyAAAAAAAAADJAAAAAAAAAMoAAAAAAAAAywAAAAAAAADMAAAAAAAAAM0AAAAAAAAAzgAAAAAAAADPAAAAAAAAANAAAAAAAAAA0QAAAAAAAADSAAAAAAAAANMAAAAAAAAA1AAAAAAAAADVAAAAAAAAANYAAAAAAAAA1wAAAAAAAADYAAAAAAAAANkAAAAAAAAA2gAAAAAAAADbAAAAAAAAANwAAAAAAAAA3QAAAAAAAADeAAAAAAAAAN8AAAAAAAAA4AAAAAAAAADhAAAAAAAAAOIAAAAAAAAA4wAAAAAAAADkAAAAAAAAAOUAAAAAAAAA5gAAAAAAAADnAAAAAAAAAOgAAAAAAAAA6QAAAAAAAADqAAAAAAAAAOsAAAAAAAAA7AAAAAAAAADtAAAAAAAAAO4AAAAAAAAA7wAAAAAAAADwAAAAAAAAAPEAAAAAAAAA8gAAAAAAAADzAAAAAAAAAPQAAAAAAAAA9QAAAAAAAAD2AAAAAAAAAPcAAAAAAAAA+AAAAAAAAAD5AAAAAAAAAPoAAAAAAAAA+wAAAAAAAAD8AAAAAAAAAP0AAAAAAAAA/gAAAAAAAAD/AAAAAAAAAAABAAAAAAAAAQEAAAAAAAACAQAAAAAAAAMBAAAAAAAABAEAAAAAAAAFAQAAAAAAAAYBAAAAAAAABwEAAAAAAAAIAQAAAAAAAAkBAAAAAAAACgEAAAAAAAALAQAAAAAAAAwBAAAAAAAADQEAAAAAAAAOAQAAAAAAAA8BAAAAAAAAEAEAAAAAAAARAQAAAAAAABIBAAAAAAAAEwEAAAAAAAAUAQAAAAAAABUBAAAAAAAAFgEAAAAAAAAXAQAAAAAAABgBAAAAAAAAGQEAAAAAAAAaAQAAAAAAABsBAAAAAAAAHAEAAAAAAAAdAQAAAAAAAB4BAAAAAAAAHwEAAAAAAAAgAQAAAAAAACEBAAAAAAAAIgEAAAAAAAAjAQAAAAAAACQBAAAAAAAAJQEAAAAAAAAmAQAAAAAAACcBAAAAAAAAKAEAAAAAAAApAQAAAAAAACoBAAAAAAAAKwEAAAAAAAA= + </DataArray> + <DataArray type="Int64" Name="offsets" format="binary"> +YAkAAAAAAAABAAAAAAAAAAIAAAAAAAAAAwAAAAAAAAAEAAAAAAAAAAUAAAAAAAAABgAAAAAAAAAHAAAAAAAAAAgAAAAAAAAACQAAAAAAAAAKAAAAAAAAAAsAAAAAAAAADAAAAAAAAAANAAAAAAAAAA4AAAAAAAAADwAAAAAAAAAQAAAAAAAAABEAAAAAAAAAEgAAAAAAAAATAAAAAAAAABQAAAAAAAAAFQAAAAAAAAAWAAAAAAAAABcAAAAAAAAAGAAAAAAAAAAZAAAAAAAAABoAAAAAAAAAGwAAAAAAAAAcAAAAAAAAAB0AAAAAAAAAHgAAAAAAAAAfAAAAAAAAACAAAAAAAAAAIQAAAAAAAAAiAAAAAAAAACMAAAAAAAAAJAAAAAAAAAAlAAAAAAAAACYAAAAAAAAAJwAAAAAAAAAoAAAAAAAAACkAAAAAAAAAKgAAAAAAAAArAAAAAAAAACwAAAAAAAAALQAAAAAAAAAuAAAAAAAAAC8AAAAAAAAAMAAAAAAAAAAxAAAAAAAAADIAAAAAAAAAMwAAAAAAAAA0AAAAAAAAADUAAAAAAAAANgAAAAAAAAA3AAAAAAAAADgAAAAAAAAAOQAAAAAAAAA6AAAAAAAAADsAAAAAAAAAPAAAAAAAAAA9AAAAAAAAAD4AAAAAAAAAPwAAAAAAAABAAAAAAAAAAEEAAAAAAAAAQgAAAAAAAABDAAAAAAAAAEQAAAAAAAAARQAAAAAAAABGAAAAAAAAAEcAAAAAAAAASAAAAAAAAABJAAAAAAAAAEoAAAAAAAAASwAAAAAAAABMAAAAAAAAAE0AAAAAAAAATgAAAAAAAABPAAAAAAAAAFAAAAAAAAAAUQAAAAAAAABSAAAAAAAAAFMAAAAAAAAAVAAAAAAAAABVAAAAAAAAAFYAAAAAAAAAVwAAAAAAAABYAAAAAAAAAFkAAAAAAAAAWgAAAAAAAABbAAAAAAAAAFwAAAAAAAAAXQAAAAAAAABeAAAAAAAAAF8AAAAAAAAAYAAAAAAAAABhAAAAAAAAAGIAAAAAAAAAYwAAAAAAAABkAAAAAAAAAGUAAAAAAAAAZgAAAAAAAABnAAAAAAAAAGgAAAAAAAAAaQAAAAAAAABqAAAAAAAAAGsAAAAAAAAAbAAAAAAAAABtAAAAAAAAAG4AAAAAAAAAbwAAAAAAAABwAAAAAAAAAHEAAAAAAAAAcgAAAAAAAABzAAAAAAAAAHQAAAAAAAAAdQAAAAAAAAB2AAAAAAAAAHcAAAAAAAAAeAAAAAAAAAB5AAAAAAAAAHoAAAAAAAAAewAAAAAAAAB8AAAAAAAAAH0AAAAAAAAAfgAAAAAAAAB/AAAAAAAAAIAAAAAAAAAAgQAAAAAAAACCAAAAAAAAAIMAAAAAAAAAhAAAAAAAAACFAAAAAAAAAIYAAAAAAAAAhwAAAAAAAACIAAAAAAAAAIkAAAAAAAAAigAAAAAAAACLAAAAAAAAAIwAAAAAAAAAjQAAAAAAAACOAAAAAAAAAI8AAAAAAAAAkAAAAAAAAACRAAAAAAAAAJIAAAAAAAAAkwAAAAAAAACUAAAAAAAAAJUAAAAAAAAAlgAAAAAAAACXAAAAAAAAAJgAAAAAAAAAmQAAAAAAAACaAAAAAAAAAJsAAAAAAAAAnAAAAAAAAACdAAAAAAAAAJ4AAAAAAAAAnwAAAAAAAACgAAAAAAAAAKEAAAAAAAAAogAAAAAAAACjAAAAAAAAAKQAAAAAAAAApQAAAAAAAACmAAAAAAAAAKcAAAAAAAAAqAAAAAAAAACpAAAAAAAAAKoAAAAAAAAAqwAAAAAAAACsAAAAAAAAAK0AAAAAAAAArgAAAAAAAACvAAAAAAAAALAAAAAAAAAAsQAAAAAAAACyAAAAAAAAALMAAAAAAAAAtAAAAAAAAAC1AAAAAAAAALYAAAAAAAAAtwAAAAAAAAC4AAAAAAAAALkAAAAAAAAAugAAAAAAAAC7AAAAAAAAALwAAAAAAAAAvQAAAAAAAAC+AAAAAAAAAL8AAAAAAAAAwAAAAAAAAADBAAAAAAAAAMIAAAAAAAAAwwAAAAAAAADEAAAAAAAAAMUAAAAAAAAAxgAAAAAAAADHAAAAAAAAAMgAAAAAAAAAyQAAAAAAAADKAAAAAAAAAMsAAAAAAAAAzAAAAAAAAADNAAAAAAAAAM4AAAAAAAAAzwAAAAAAAADQAAAAAAAAANEAAAAAAAAA0gAAAAAAAADTAAAAAAAAANQAAAAAAAAA1QAAAAAAAADWAAAAAAAAANcAAAAAAAAA2AAAAAAAAADZAAAAAAAAANoAAAAAAAAA2wAAAAAAAADcAAAAAAAAAN0AAAAAAAAA3gAAAAAAAADfAAAAAAAAAOAAAAAAAAAA4QAAAAAAAADiAAAAAAAAAOMAAAAAAAAA5AAAAAAAAADlAAAAAAAAAOYAAAAAAAAA5wAAAAAAAADoAAAAAAAAAOkAAAAAAAAA6gAAAAAAAADrAAAAAAAAAOwAAAAAAAAA7QAAAAAAAADuAAAAAAAAAO8AAAAAAAAA8AAAAAAAAADxAAAAAAAAAPIAAAAAAAAA8wAAAAAAAAD0AAAAAAAAAPUAAAAAAAAA9gAAAAAAAAD3AAAAAAAAAPgAAAAAAAAA+QAAAAAAAAD6AAAAAAAAAPsAAAAAAAAA/AAAAAAAAAD9AAAAAAAAAP4AAAAAAAAA/wAAAAAAAAAAAQAAAAAAAAEBAAAAAAAAAgEAAAAAAAADAQAAAAAAAAQBAAAAAAAABQEAAAAAAAAGAQAAAAAAAAcBAAAAAAAACAEAAAAAAAAJAQAAAAAAAAoBAAAAAAAACwEAAAAAAAAMAQAAAAAAAA0BAAAAAAAADgEAAAAAAAAPAQAAAAAAABABAAAAAAAAEQEAAAAAAAASAQAAAAAAABMBAAAAAAAAFAEAAAAAAAAVAQAAAAAAABYBAAAAAAAAFwEAAAAAAAAYAQAAAAAAABkBAAAAAAAAGgEAAAAAAAAbAQAAAAAAABwBAAAAAAAAHQEAAAAAAAAeAQAAAAAAAB8BAAAAAAAAIAEAAAAAAAAhAQAAAAAAACIBAAAAAAAAIwEAAAAAAAAkAQAAAAAAACUBAAAAAAAAJgEAAAAAAAAnAQAAAAAAACgBAAAAAAAAKQEAAAAAAAAqAQAAAAAAACsBAAAAAAAALAEAAAAAAAA= + </DataArray> + </Verts> + <PointData> + <DataArray type="Float32" Name="attr0" format="binary"> +sAQAAAAAAADLU8o+iAuAPkwGxDpzTUc/lnBMPemtPj99JBM/8jJLP/yStT6z9Kg+cfIBP1YoRz+y8zs/rmtdPsJ30T3hWos+bc0xPwZXjD5qbMo+URkiP7uhUz+vUUU+QJVrPqe5VD1aW84+cvoLP+eXtT6qyh0/8fWHPp4fFz/Bszw/scVgPNkjoT5+SBg/o7U7P6+n5j4tyAA/U1tzP2vlFj9GbDw/DBpXP+s4Rz/Xs0c/yeeBPuiVVT8dhLA+0JgkP2Xcfj6wTaQ+b1oHPuyeRT/B3IA+pFN4P0CbTD6KV2M/305iP2lIOD/PXTA/uArQPtzgRT8S+UA/t49RP1JyRD+cOlw/NcINPnh6VD/bsYU+sVSPPQHEDT/XCCg/Np4hPEQaBz5sDqc+sThePw8WGj9+vek8Z0BXPrwmUT5tQhI/9xJyP3hHzj7OrYI9gAiCPtpD4T4cAlw/X2lRP63n6z4NEn4/k1AgPtoCkD3yMZY+wkkoPQXiIT/J97Y+psFlP+vbOD8SL8Y+6AmiPuOAKj5PM0I+q0H/Phv2Ej4psc0+E5EfP1ia6z72nl0/RnvuPrNFNT+kKhk+7Z9TP/RmWT7eaeU+XP7rPqDelz4R1wo/nytDPx2+HD/kicE+b5J5P+rpHz++5d8+IYRcPzEIOT4S1ig/6VY+P6V3KD7LC2w8w+abPhDDLD9YzEU/r+0FPzHbXj9g5sY9R9yxPTJqGz+njVM/vppEP84m/DoMmFo+Q/FnPsqPGD4aoAY+7TZ5P0xXYz8r8xs9vDMBPrQrgz5ls1M/ej49P7M3Pj+PW34/itbPPhdVUj9Qrx8+m8lZPUedmT6LI6w+fkttP5agIT+geSQ/F7kEP3dbRz8r5ws/3DKKPX2xfT4EeiU/J4dRPrm/Gz9N3nU/CHeaPLMKpz7li649iGilPHRFST9JkG4/+34sPCjxWj3OA4k+ZwoKP9lwFD9d+Ek/cV9sP42h5D7ajJ4+42n4Pt88ij7zMqQ90Bl5P4mZqT6gY0U/HvnTPipY3j7OsDI/iHxBP4odnD2ELGU/8FI2P9mlAT9uOEs/Wz8iPzPMNT8FGBg/+1JUPkFz1D366rw9aUIaP/vpdj98dHg/vTClPhBKrj5oCLA+qqcVP0IDCD8mWCc/Hs5EP+IxVj+Z7NA+/8R6Pv+pZz9QZEE/ZBdMPl93Mz71BTc/CvaHPrqC7z7wlWA/29u1PqlNtz0hSJY+NHCTPYDKWj/lFFc/9+yzPhwNrD6QH2w/QVMqPWh5fz6TvFs/MuISP+LBJT+DswM/T3IzPiCiyj6NUEU8MSolP80DDD+4Jw0/0C3OPfIftj0E91Y9fw2/PAESEj+DpvI+tR4KP7JkfD9EoJQ+A2F4P6IqNz8tknI/Fs7gPmd3bT+STZQ+FBZjP+UuWD9D/Vk7qXaqPUrybj8Wf1c+3nBLP85duD74ODE91Bc3P6suMz8DPhU/2M7dPi+nRj+2vFM/jZKxPsUsYz+tLC8+rkdsP4tmOz+AAFo//p2WPgYoPT9hSXg/QyUyP+ylBT+zkZE+EU1SP1TiDz+cM0Y99oRaPzG0XT/CdQw/iyC/Pt/uJz/+tJk+OxE3PvU4+jw= + </DataArray> + <DataArray type="Float32" Name="attr1_0_0" format="binary"> +sAQAAAAAAACV4XI/rHMbPze8Pz8JwXc/XGSvPqI1yj6OJjE/NtFEPzT9Ij/XczA9Gb9GP/5yxT1eQ0Y/kvfTPqV6Ij/98EY/j4oyPnQncj831xI/MQqSPsvfyT6DK888uAz1PqnEdT9hoE4+mrQsP0E2kj5AmD8+y3ogPiEG2jwhPjQ/Ikq0PhS8pT6bXwE/OEJpPzRCKj+eyGU/y793PmnbVj+wC1Q/grVCPIdEUD5tk9U+ZlDdPfg9PD90Bw0/F9WuPmyGJj9Ibgc9/0zKPcyyXj/IjXE/z8w8P93HKz+gyig/3/hkP8JMgT68UWE+pHFmP+UoMT+P0SI/jPngPhB5kz5m/z0/eQXnPjK3PD8RJFc/aHQqP+KGRD9O1no/7JIUP7uVFT+Jsrc+vBqOPSn+hj41v9I+Z4ACPpemuz6DZl8/6UTLPli8Kz/l+mw+PLkhP7cHFD+wz2A/4L8FPzREIz56XmA/jUAuP+Fifj864Rk/vj10P6WSGj++vSU/u0Y/P6hlDD9n0Ao//3vSPuhtAD9zMhs/a1uYPl5IRD/wjvM+qsc4PVluij7Iqd4+u/QlP+NDbD7L1Rg/Fr42PiOziD4ueVQ/0y51P7ltoT1e+QY/RxyaPlZhbD/3Db4+V+QfP++rRz+MZAM/vhkDP4DuKj460Ws/H8MrP4kCeT9ZMxc+j2pXP58iQj9Yjs0+bfluPr51vD7NSzg/RxFhPr7tIz8A9x4/gEsKPyDkzT5BFtM8RnZPP5UJSD+BBoE+T+BkP6toST/UmQA/C9qnPhI5Gz87NS8/3wFqPzTrIT+NCwM/oke5PbIASj/1PBQ/gzTHPoxZCz8FXIQ+b8vAPZeUeT6znlo9pSwfPicHUD/8KRg/9VMbPjSI8j4cUvA+SkUhPnA6MT9G3Pc+x+NTP2R8vT7+xzk9aOLCPhGZPD85Lnk/FClkP2xbLT94SIw+wIpPPPc9yD0wc+E+t5Y2P5CsbD8Z5Zc+KBzZPRi04T5E/DU/V/C/PebQJz5/Z849i0CvPmUYZz/DuXU/FtRyP3KBVj/qQHg+r+p6Pyps5j007co+xa33PWSoLj/zeuo+foJdP4XeEj/s6eo+kr7qPjrv5D6pwkw/0rUtP3vNdT94xmU9hRw9Pzxudj/b5xY//5awPO0e4z6LUsE9pD/7PV79MT/oZvw+XOEQPmjVQD4BxL0+/NhqP92OnD4oBXs9sJ0BP05M+jx6h6M+YZNTP2bUDz/5Rbg7LyfxPVAiFz8nc5A9MJ9ZP2g2Kj9T4zk+urqXPikU2j4LaRM/0mSePkMZSz+1Khw/bgMNPz16JD+yQzU/vLVOPwvMUz84C1w9vZHmPrFIOz8Ru7Y+k4aAPntUFz/8rIA+Ro5ePyAAAD90o4A+vmpgP/cGcT/MEmg/REo5PzJ/yT52zFM/pCgKP1Jo5T74L1A+ftfBPme6Zj6Y6lQ+2i9pP27wKT9lRGM/LZUbPwWVKT/4Be0+tBQwPW4ubD5Ec1I/yGlOP30UND9gsv89XfXjPvsnbD5o2BY+hVoHP1UWOj835m0+Y2zYPfpCOD+Bswk+FDpyP67M9j69FYA+uj8ZPmX8tj6KckY/RqLhPhuCqD4= + </DataArray> + <DataArray type="Float32" Name="attr1_0_1" format="binary"> +sAQAAAAAAACnrwg+DBSHPjAHkT4vLRA/xPIUPOfNoj2hvx8/o7m9PmQh0D6MRjA/H/KfPomOez6O7bk+jZABP4L2sz0EFr0+YRNaP+TLYT/+WXA/e8VsPk769j6imTY/6fKIPn4jWz4XfiA/ANFXPydFUj+pUc8+JL9CP5UPKj92RWs+DfJNPqvQcj918pk+gAZ2PiDEXz/61Xs+KmALPqvSGj/z0vk+FmRAP/3mDT9ZfWM/OJ3dPmD7Pz+Deqw8epcSP/YJEz/ihr8+N9ICPrH2BD9y4mY+rraaPY7cDT9pFXI+jNIzP95JCT+j1JE+HNR9P20+HT8ziPA+D4J1Pxf3tT6OS30//e5MP1cPBz2e2Ak/oFJ1P71IID8H1QM/jz5gPh3eeT9zqgk/p7pxPxZ7tT7tFb4+LxhKPuD2Az1aHWY/YkJVP1YiHj9dTpQ8DbBHP/80MT8TCRQ/CSfMPmdtpz7EvnI/AmeDOqF1VT89vWI/+uABP/Rrhz4ZeVY/6PhBP0pTJj/TFJQ9TjhkP1J9/D6PPIg+T+yuPGC+vz4BXUA/pE4QPwyZkD7NATg+S3/vPsRwlD1jn2A/NnNuPwbaBj8gp+A+Hxl4P1b4Uj/GVas+4tSAPjI2pT7jZEI/50IIP9K89D7r8Do+f3btPuW6JD8EM409P+srP8xzZD9gTOk+2cLLPgaWKT/V+2E/L0guPzEhNT9Do1s/JnaSPlyaPT4XjvY+8vfPParx3T4aR5g+AT7lPdtU4T53MxE/FV2vPuancD+y9fI+y8UrPWDUIj8v4WQ9SjNAPy6PFT8SeGg7g553PkwmqD7Bp3E/+U3KPuatYj6ZQDQ/zcM5P+DbKD8qufM9j7kTPzLmQj5V2Ek/byvlPSyZ+j4J1W8+NU+gPmlTAD5EzS0+iQ61PuPkHz0Y53w9byp6P/8A6D5Vpqg+xsd0PpmpVj34m4s+02x4PwxUaTtQmpU+GALTPneQ+z36WYg+7Pl6P1zYlj6Hj3g/rMgsPjIVbD4Gjy4+05FjPtdRCT+t0lY8VYlZPzTgej8hC2Y/5CcYPo09Bj/yR0w/17Z5P6Vscz+r5tM9AkyEPse0RD8y6ts+jmF+Po8XDT2Zog0/DzU2P2ctKz+TWhs/kXpEPYp3az8S6Ug+DythP8vPZj8xKAk/p0UeP4a/vT4SuD0/GHTjPhy/qz4DrX0/QVRdP4Dk/T7IjO0+cjFxP07+ID/JyzI/hBMHP/N4Yj/gsBY/BVZ1P79GKj6Ijzs/l13IO345ID9JMGc/NGOkPvFfqz3OVNY+Igs/P1Xi5z6swIs9DHcsP1NZJT9zy2M/gytiP1jibT8UeMc+sMXzPjmEbz/r6IQ+ba1JP/KqmT4BBEc/v0pTPxWgIz3xSZA9zDgFP00HvT4FKz8+CjF0P3u8ND/YQkQ+8E19P0leTD94Ip8+XEO4PukxEj4PXus+zXGnPnwu7D57oTA/IwUuPwTQJj/iKEU/ViSrPnTNKj8HG3Q8WR5hP96HFz8W8vI+02/RPpwETD816VE/GPA+P2wPeD/S89U+iAswPmrd5j7GBt0+GNVEPzzJRT/CeqE9zoUtPxHeoT5al88+sVW0PogiMj8= + </DataArray> + <DataArray type="Float32" Name="attr1_0_2" format="binary"> +sAQAAAAAAABMXFo/re1pPhpH8z7DPvk+KEMwP56PRj+6qkU+dndjPmAgnz5E4hA/G+nOPuZ1XT8bx3g/LueFO4BfNT4+pXU/oNZPP9sudj+p5DE/knpvPn2fFD+DUCU/xTivPlWs6T7D38A+Jah6PwqsdT7BHYk9kssQPkhkbz8MT789NIYnP9Pv6D4idJY+aZVJP18UOD94Dyo/OgxYPz7hYT7pum4/fs4SPywYUj+jBvs+ARlMPwUYHz9rc1A/CZAfP0BA2T4Z8Uw/fClVPz2qjzx5YAM/izH/PqYzJz8EYFg/O+iaPkwNeT9VAaA+NyIxP9qtMj8CLyY/IHmtPjDlUj7mzJk+5f2XPgW4Yz5H9hw+nTZ5PxoAbz/eRLw+RylnPn/hVz8qDOw+h1FVP1KxMD/nvb8+4RDmPkLoJz+uhBQ/5SD+O8tYaD9FOS8/zBEsPyQFQD6EWwQ+dkLAPlIgST9wj8k+fizcPuLl/T3/LWY/fbL/Pr/1fD/iYFo/T7eLPPqjVT5tMEY/C5tIPYeTYj94ZdQ+gUEcP+zPQj7LwgU/iSoQP/emZz+ovyw9esIxP6vYED+ncr49BmioPifZRj/eVWc/DVyXPk1Nmz5qpKM+/udNP1PMdz7zEkg/sY4mP/hTHD8+6Bk/h3q6PChpRD75aU4+DK1GP9MTLz8Btpg9U1mEPTcqnj4iLJs+ZjrxPvuiBj84vlk/rvKnPYyeUz8WSVA/8NcQPxpJIz+4sVk+a3WPPj/ydz8FGDc/B2D0PkoQID9vkKY+eEEgP+1sLj8EvaM+Z1NKPy8AbT+kxsU+T3E6PvlSHz8unDg/cVEyP5I5Pz8F8Cg/xYGfPZ7CJz8AWQo/62MIPV+1TD79rB8+Ig9LP3ZlED8W9Wo/mgh5PwJZHT4ivF8/ENlVP/m9rj6vLxY/oM9OPyW2YT9QDmc/UqiXPtobeT/zhCM/6wfEPc97kD1GAVM+GJWuPWgjJj+jZ70+o3Z9PoLPpj5sa+4+AukXPu/YNz+hExs/57wPP1wDHT85yxo/5x8tP5BV7z32+DA+5vANPYJWAj/EzZg+yYg8P3CqVz84Ifg+JcS0PZAIuTxdsxs/6mPyPYY3rD6b2o49EiQzPhXJSj6C6MA9JsCiPvtOLj9XEvk+ntLoPntSbT/fvo4+p9upPJF+kj6xJFk/ZU8/PytKFT8NCjs/v7YRP1J2qD75i9g+jAFCP++Tnz5ICk8/nMbGPvXLST/WCYw+MA3cPaZ6NT5LRyw/sv+UPnIfez8HnA8//h99PzXFAD+u1aM+WsSEPr6YRD4IT2k+iCEqP0qKxz5t3Vo/hR1GP/ifNz/nmMQ9cxAYP0ktwT5o/1Q+7sExP9eDjj3qcis/04qsPViVoD5HU60+vHJ0P3AY7j6eIVQ/i7pEP5UeIz8+gvY+pIckP7qx1z76tcg+NasyP53RXD/uQws/pbtpP+ohqD5dGzg/XLGLPRSlTT127ZQ9nUSOPrKgOj2Dr30/ibimPr3MkD724Rc+2ohNP/8iUD5x30A/o8hHP2/aPj+7qCk+XF8mP0uxIz4PdYo+Nk0sPwaXRj/geo0+8iQwPxKPST/RaF8/6r9IP49EAD8= + </DataArray> + <DataArray type="Float32" Name="attr1_1_0" format="binary"> +sAQAAAAAAAASkHk/V1oDP+uTRT51Jg8/5q+hPp8Qfz98jWM/Nkg/PzHbdj9uMQQ/0HCUPbttnj5FTBE/Ll88Pp4/5T5r5zE+WNZxP98EuT7lGl8/XTltPUwrNz9967k9SIAUP9ysCz+JliU+oloVPz3Oej+pMEI+cG+3Pq1iAT+rA3E/vqxjP1NaYD23C2I/7LEvP7skMz/vt1k/zut+P/EbrD53FU8/YAf8PqWcYz4VCdI7mL5cP8CcQD/4uGk/5FitPh/4BD9kMYY+Wi16PskpqT2spEQ/a9KnPmfJDT73mkE95XsKPnqPTT1wV2k/3LVIP5Q+KD8eLzQ/BJDTPjYGNj8z4tg8N8pGP8ivIT9WIU8/tdO8PtiCcT/t1Go/sp8hPx9SXD8aUkM/ox0VP/vNkj78OAc/TDTfPovDrD5EbUQ+mOdCPhDePD51M7A9j8ZpP9JR1T3nhj0/i3xqP121mT6ALHY/JlsKP35Kqj5GHz4/iFA4P3Xj+z6uArw9qpjIPgFteD8GTh4/JhpSPygg4z5cwPQ96fJ5P26Tez1ZlEk+aXg9PwZLfj8Okys/nel1P0z88D5oWXM/b4ZxPjNrED8b3QM/ssF1PnddIz0PFDM/f8ylPhCW9z1xJVs/RqLaPuflDj/y60k/AP/zPV5FIT24z/0+WiRrP3kpTD79L5A+CiIjPuDf2j7vmUs/9CtcP2a2TT9sLCk97K0PP331Dj9jtxs/g5x/P8NOqD4D+Zs+G5LjPT1gmj1Pig0/9PFoPxKzYT85O7M+EnQfP/sQ3j7NlGU/DlIPP+PnKD+tLSo/bxKRPgIxRD/J0pU+bCQ0P66aBD5I4mE9vkJpPvrXgD5nnOI+f7AtP8jC6j4teao+muh6P3W7cD+ttko/kfPzPjnHAD69pmI/c8RQPRb00D3UOK0+LbJ0P8VSJz7S824/bTh4Plpqcj+clGE/w0z6PptsFT7A2wM/ghOkPtF1ED/7cVM/lIbYPqzQCT9RoAM/z2RTPnZp8zr6AW8/zc8gP1wzUT/h7AY/698yP1QDbj+0l2Q/cvkcPnkptj1gn+M+0ZhLP9EQEj4EvcA+FFoEP7EU6j6p24I+oTsQP5hXUj5jqaI8/3P4PWTYsj4hcBQ+3L3ZPi8d+j1qnhE+rdmbPiUsvj7vLYc+EzhaP/kbZT+8E+E+JBzcPVajIT8GNgc/3+S6Pat1Fz7wqW8/0XYIPxVyYz9VE68+WcwfP+qIIj909hc9Fk6DPas+tj6X1/A+Mu43PmERWj9Owpg+fD88PxxmJj+Nvkk/l1uyPnncTD+xLzI/uA6uPpA8Uz1ephE/TNMwPxdkzz14yb0+L+nNPpzRfz+McqQ+qTyqPhM6cj8Kqa0+ssImP9RyeT9A1Yw+EFErPw3XHz9m4SU/i83XPqOUFD+FO+k9T2QZPz+cBj9EQTo+AZVzP0ShMz/6QWM/WwjWPgaCSD+bTNc9nXmzPoUlQj/shEE/W0suPoxu5j5yptY+THg5P5QYnT4i3Xc/QC1iP77giT5AE+s94FNaPtzIrj6AGDc/IE8bPsDgEz9hYS8/AyWePqALAD9uydE+klIcPsfjMD7YJRU/xnkeP8KNiD0= + </DataArray> + <DataArray type="Float32" Name="attr1_1_1" format="binary"> +sAQAAAAAAADcGDs+ILjgPpJE1j50tB0/0A1APwUj6D1gxyM/uixdPwdINj8XXxI/TNkHP4J6Oj8CXCQ/sAjJPvtX6D2QYwY+YvTKPgTcdD+Qgzw+3r45P8tGEz9Asio7eGASP4sBSD+VCMA+NWx/PkPdMD+a3z0+euxxP4X0CD8wJ2E/x3PKPqCmJD819kM96B7KPUDLRj/CKkQ/KOhEP7khnT47Bm4+OuIxP9ztsj4/Iy4/REOvPdRt9T7amyA/umxnP9aKYT+Of3o/YomJPq2Osj6n0HM/e8dLP4cuDz+n2zg94HWZPiekET6GQes+smkxP9J6Oz/6dXQ/4k/ePoSClT28FDo+xMivPYTkfj+GUn0/pV2/Pjn+Bz7JAB8+9r23PguUyj46rqc+axLpPo1EQD6WQNs+uf6oPpFE9z416VI+UnFUP/fTiT6EATE/WEJkP691Jz/jUyE/cEFMP+eiKz/g9r09VWILPaynQz5KVk0+nkKfPsO6Wz4+an8/NPLvPjDD1D7jvWY/sTELP5sUqz4rdRA/jQ1zPwoavz7sT3c+QHEzPzS6JT/Jvm4/Dc7lPNcoUz/1Fiw/anALP6Mrez4xyx8/qUtmPyHNXT97ZC89M4pwP9Nffj/iXSo/uGeEPtTqZz9BIQI9teOjPq9I8j5SNN8+ehliP5PTej8REyA+McKtOwhshz7/jAI/X/ouPjVLBD/9gl4+DezBPvaNsD7Hvno/1TgiPkIjpTx7zlU/stlBPxu37D4eWQ4/744RPrWybj1wmSw/++lxP0QQqDxFFig+uo2hPHiSnz5fp4c+VSKiPue7oj4YPOA9fYWuPv1uQz8fTPE+e89TPjuEcD/o5FE+YeDfPsoocj9c5zo/ApYzP1U0mz1H0To+FZNXP4ZItT4e6EE+8Il3P/ffyD5lc0U+9osYP/cRLz8gPhw/iGIVP/d9eD8oYD4/fQpSPzrYnz7AuD8/QQjzPsfBrT6tl18/fdZJPybrAj8mKD8/UPAlP5iHNj9TVuo91RBKP99HLD7Is4I9ZjASPzVCET+UiLQ+S6ulPrcaZT/pPl8/+tyuPo6vQz88Wz0/4tV7P/e37T6L704/p5WXPkGA4T56xCA+vg42PwEvxD30Hz49PZVnPBXVIj+Pg6M+Z7vmPaIZbT91ewQ/hDjoPl7MRj/LCfA+67mTPBU4sT4mqTY9vYWYPkGNFz9nlCU+pFMmP8MIBj3ugo8+LksHP4c3Uj+lNU0/1fMtP96PYT1NwCg/VuV4PzSJRD8kyck8OR/+PaRUwD4i1E09GjURP+0GzD62P7M9ypJlP7RaUj5qCXU8fHlIP29eyT7nTls/f+gqP/Pf9D6IPSg/b8khPv63fT9gFXQ/EXlnP/HXjz7Ibi4/x086P0WVLD/k9Ec/WYaLPPEulz7cWQk/9cZuPwAtNT4OjaY+82aVPuIiID/YLos+O6A/PofN8j7oP+0+BOGqPjihwzwJGwc/Gh9fP+hACD9pUEc/j4y8Pdb7Tj6u+HU8z8BkPU0Dfj90xM0+irhRP0i6YD+Bp8k9PYO7PiMBqD5QNu4+VC18PxSmMz4CCJU+s6ALP6c/hD7o2Rc++8vsPjsIVj8= + </DataArray> + <DataArray type="Float32" Name="attr1_1_2" format="binary"> +sAQAAAAAAAANAbU+gvp5P3IU9z4x0G4/c1OgPiMBJj/BAhA/55d6PzTZBz/J9j8/2egCP1CWEj9JLv4+2KiMPYvuFjzwDTg+oCQpP8uhRT857gE/94TYPfF+fj8ZRNg+deN/P90yTT/rKTI/fwEnPxwzaj+SPVQ/ep73PkwVGz9stLM+uUL1PVfnHD9pUtY+CnDsPm8R3z1DdzQ/LOWLPtfrsz45v6w+htNqP0CsND8UfK0+dlRCPv0Saz6Kqns/4NLdPY1Hxj3HdZQ+vtUHPwd8JT+QOBI/dBQQP6hpbj/+lJc9BwjsOzgC0D6UaXg/1YWCPrM9XD/AuUQ/3ySiPtLg4T7tiSg/F4NhP24XvT3XgBc/iIsXP2Kd4T6Ah1A/LyyUPnV0Nj+fyac9rdJVPzlP0T45g3g/i9nYPsDqDT+TPGc/x5ogP4wSST5N6+4+ZUYLP1QVhz6zYGY/YbA9PTEMsjx+Fb46k7RyP6Xh5j7bY24/dIhvP+G8KD9XpiY/9bcwP654uz4aiOc+Gq47PTogAD/VKDQ/WTsoPxCQWj5IUv091PhVO8zlbz8qD1o+SNVfPzdtGj+lmaU+i5PhPndIFz+34kU+0cWVPnlpST9yK3o/8ulhP+LvhT4Dnfk+xvIeP8ky2j4upkQ/zgnbPlg1sj1nvgw/CmU5P/yhNT+gNpA+TqlMP41Tcj8XHh49DclmP9IxfT/BHXA/9wC+PkFvuz7Ng+M+TxJ6PhN7Nj80S+8945R/P8pKKD/6dLU+b84PPwN91z7RTyE/eSsGP+bUiT6BrH4/N8iWPhlLGT7uZZs9rnJxP4fjlD3k2xU/Kx2/Pl6Wyj50WJQ+grtEP+UqSD4wu5w9fyRxPni2AD9YIp8+LNZZPj1I9j6CmhI/r0XGPsz40D7CkR0/2CQJP2vkND8Du1o/7ppRPsxEvz5IeH0/jYw0P63KpT0de34/PLDVPpPgUz+++lc/xQDiPX8O1z40uso9TQiWPaYLIT8i56k+ZmBDP3y3rT42Fy0/mdlwP4t/6jw1qk4/emnqPidbUj5qlQY+4oUvP0vGYz9eZEg/QC/KPYp6MD7Y0R89suUbP78ziz6Nqk8/hkamPZT+Sz/7uhQ+oGEqP3cMITyguTo/+rmNPSKRej86w6w9hiI7P4jrOj59kfw99yfDPtD5BT/4lhw/l6b7PcRuWD3muyY/fZZWP6T4Ez84DQI/CM3CPjyZYD6v3bM+hdh7P/ejyD6a/LA+kbdRP2pfKj5IH2g/MIghPywUFD+9pIk+6iwjP+sthT7ruXM/qMT9PrtX1D5AN2A/t1/rPjkMLj9CVnA/T2JIP90xBj8zTTQ/vpv4PsWUAT1wIh4+k5zqPdMFBz9FlUw/ulZoPbleLz+Rb7g+/dYAPiotDj8rv68+UURhP2WVET9DD78+LQH3PdTFPT/ya04/PEVFPPbWEz5Ur0c/dJFQP2d4Pz9a+QM+ELIDPtWmuz4xKCg/8ZcMPbvDPT8RtkM/rj5+PS2H9T3sKl4/HB9eP1SiPD9yUPk+Waj6PpvVIT6C0WQ+AFT0PSfD9T4iqkw/XTV0Pxs7dz6qhoc+xP2RPaavrT5HLis/LQMaPeXmaz8= + </DataArray> + <DataArray type="Float32" Name="attr1_2_0" format="binary"> +sAQAAAAAAABWXRY/yvJsP56idD/n4Es/G21DPgBCjDwEJJw8eMcNP8rzIT7bes0+L5E8P56Xdz9Ih7E+v/oCPt+1zT57bZw9E1RQP5qscz+6eiI/g7g/P1NkBD9JtcI9UPl4P/BmIT9hBgE/TtPjPgIJOj7ftr8+TUAbP8HkXD4pAv0+HyUDP8ZxWz8ytFw/eEUUPwolLD6y0m8/XjmjPXokgjxO2yE/GNLMPemKcj/DKy8/6mcTP1IvFz80Zks/gIxZPy+e3T4rq/U+Uev/PloyBDtIZRE+vxpqP9sJiT6+Jzw/n5a+PUAqoD3nCfg+wxD3PtwKdj+4Kps+LJRFP6iJ/j7oh2s/a7c1P8PUWT/Mhh8/2mVHPyHVmj2MDkE/K+NPP0fHuT6T3aY+FR/NPtXNCz59wzY+daQsP6kxXz7U32s/m0QoP66wKD8+83o/GhcDPlcpZj8X/T8/CQSLPr0ZHT8Yr5k+bPFfP+EWGT9LSwQ/LR/NPl/Akz6UYBA/wb73Pt+GGj9a3B0+zHPNPju9Sj/020E+ypkuP5eduDwuYXk/hSxOP1+ypz7PkcA+QXwEP8Be1D7m9zk+6IHvPoDwUD9HLmc/xl0PP7XG1T5S9dc+YRB4PkfKLD+NN+E+psRqP4S/eD5FcRE/hbsyP+jkbz+lTSU/9LFFP0rW/Tt6/8A+ZhRqPxD9qz6ygpM+PQqoPpcCMz7UFwY/JuZ6PmzxWD7Itlw/q+i8PlAWCj5R1mk/t+Y8P97Amj23k3Q/YqBCP1kaKj9h9HU+BnJMPxaa2z2kuOM+WrmrPhz/Bz9s05o+7WJfPzzGNj+9AoU+RNVYP2Kdvz6G7SE/RtALPrbWCj3I7m8/D2FxP5BAoD47jTs+B0cTPf2vZD+xKH8/JowtP8uESj+2uT8/5CpBPkIthz2hdN49F2dlP13EkD5Xz7E+RAYhPyhk0T1E8g8/cicWPmFSYT+iugk+vLlkP23+RD9cfkA+/sFtPnAEcD9c+Bg/E4QHP4Pl7j42W1s/zC4sP18uyT6hMUk/nPliPwN1CD86fZM+A69OPihnXz+fVBM/1ZcfP4SkBT9zt+o99E8fP49NND/FxSo/9soNP9Mczj6Jz2I/r4M9P24WTT8XRuM8dlWiPjlGRj7cirU+hFIgP3JRaD+pFyE/azs2PxhAVT+bT1k/5ktTP3XKMzyA9Gs+BYA0P1npQz/uvy8/SYgoPwc4iT7VU5o9OPMXP9odPT+Hlms9mwjQPgE1Bj+eiWs/WlIAP1+kwz7mYnU/9xh0P31LAT+KZM4+xdmOPXvtjj5S+V0/lP8tP8AUST65PLc+qy65PsW3yT7cZkU/lH2EPl2vdD99Hkc/YcDMPnniaz9DhdI+B9dzP3vWLT92jv8+/s0bP1xhCD+LBzY+FthGPxrviD50wwE/rAotP97CDT8bzwc/wIhHP7yDBD8KwRs+GdIkP3gsKz9v12g/tVw+P/b0vT7RPeU+vAcVPSuXGT90Q5Q9VivyPIupvT4IokM/U3RtPnueyj6vhHU+Gb2zPgl8jz4V9R4/5MrbPozsfD+gnC4/HvINP7pkCz7n9RI//ki3Pgxp6D5CwC4/NLVOPgSyIj8= + </DataArray> + <DataArray type="Float32" Name="attr1_2_1" format="binary"> +sAQAAAAAAACCZfM9peSnPvWjAD8SAEM/lLR/P21AmT5yKkk/CpU9P2ixGj/9fww+t5apPlJPTT+x1uQ+ABUiP0rFcj/qAzE/ROBfPsspYj5M2N4+uFIdPwD9yD7/kuI87vppP1DBNz4dvw09r5I8PxeAkT6iRao97pF+PdtoRT+IejQ6juh+Oxtd7z6McJI+Fih7PYCuVT8A8/I+POYWP97jYD/7gHg/6b7aPqPQLz9rbA8+UdWCPox7Oz++9gk/DuLmPoeyAD6JzXk/TdkjPj0BcT2l5Us/uo4bP5djej8h2Q0//+1zPqRZST5IZ3A/DVltPc3p/j711Hc/oyFVP2QUJj8WIgY/LgNjP2sleT5SRwM/I+FvP4VwWj4bl2U/mTwnPz5hpT3FmLs+jVIBP6Wr7T57xVA/bTx0PH7aDz8OwNo9b7EjP08gGD/AjnI/vxhGP6yFmD4ZoKg+EMLVPhARBj+fzg0+B3BxP2uMDD8uggI/Wd+cPEx3Zz/TUE8/mVXXPhO+rD2yf/4+eFgSPwUOKj98UeA+4kzOPMUwXj7TN44+YzyAPOOvbz2hWoI9+BVEP+G8mz7snnE/ZUs7Pty82z3AK/E+iOOzPRDhVj16+jQ/VlHvPlFFrz13l/4+f26ZPtakcD+lBg8/UaUQPXnULz/Xm8s+Dk1VP1fRsj7+Z2A/gwjrPgPTqT0Ot0E/61wYP/SWEz81g2M+0y30PYa2aT605yI/fQsNP913TD9DADM/+srDPhZDsD7gvAI/rGf+PpXpsz05+eE+K5ptP8W22j7X7uY+8myoPuIfpz4iS1I/Yp4qP1HVFz6fIEM/J53MPZElPT8Ohh4+wSzXPgdA7z1Ai5Y9mr8OP3y30z685uk+Hm+WPnE+RT8a69Q+ftU4Py0Gkz4KozY8FwKCPl7RNT+xPzY/+WhYP5KZTD+TdRY//sf0Pa0BAD875W0/2fCUPoWB9z4tBlM/Oi+zPrr5wz0T0gg9o+F3P4ILCT/m1xU/FL4KPl0YQz/FBaU+KkP1PlW9Tz8lsF4/Bp8GP5RH7T74CCE/wjkSPz4nBD8b52Q/N9XOPlHZmD6eZDM/TT89P5VKYzyNJQc9qsVLPtma+D52Oy4/KJkwP6KnXT/4/+4+F20KP/D+QT0tb1U//O58P1h0hz58JTQ/Xa4cP83/IT910SM/bq+1Pr/fSj8EYvw+kI7CPsrYCz/SBb08Py6rPkzpaD+U4x4/my1vPy2tXz9YfDg/sfFRP52mfj39YKk+SLvbPbp2TD8fh94+4AwLP1fHXT8p6l8/dx3bPk8p7z7bSWY/zexsP+3kGz/BXls+lEWLPgNTDT/pFk8/I27GPjVYSj+YXik/jEc/PwEKbD+L+GM/Imt7P0rbQz3YFiQ8eGcAPGWK3j4sAfQ9LsRhPzpYLT/alR89UspHP9PowT7eAzQ/scF9PoXJJj8NxJQ+i/RsP72dPz5A3Gk+YyFDP056Lz9WYC4/7/UzP+bzWT8ZUxY/3q4BPgvI0T4X4QY/652APU8IAT+f7tE+ZJc5Phx1CD8jsKU+ctkfP0/7Uj+2nBU+fdovP9dxxz7TYKo++LhOP7rIqD4ndAI+vlD4PkCyTz8= + </DataArray> + <DataArray type="Float32" Name="attr1_2_2" format="binary"> +sAQAAAAAAACNtJE+eAJ3P3ZXRz6jgk8/SvodPzsVfT/jzHg/KsCEPdo5ez8t1M4+YN+yPtivET8LIQs/WdMwPg1DMD9ibDE/GqAUPwXjSj+iYXk/sHMcPi6FLz/FoKE+PDNxPx2Ghj4sHRU/7ge/PjykLj9FLHY++0pGP7nWXD6eRUQ/hdbePp+mID8H85U+6OgxP6gjOT9TYGY/nAFxPqhzPj7uJY4+olZpP1C4jT15rh0+EB5TPZSlmT7bZEo+ZYnLPib/Oj+W0gM/YdA3PwueVj93EDY+0X9DP9Sm2D5gKjQ/e2CDPn+Ebj8iK18+rs2ZOyQpcj1qTxo/jPO8PrR4GD/EeSU+r/nHPgkwfz93Ogg/8KBWP8JCAj+OzyM/FDgeP6VOED9drgI/4/XiPmH4tD5qGTw+T+F2PiDeXz/7f0s/kqmcPp8yJD3gIHg/45scPxM6RT7bhG8/xFdDPzBadj/l6BI/lBDIPpGNYT9tlS8+/Kj1Pt82dT8x6+U+YXRvPqng2D6hTWQ+QWBXPlYYLz5EeX8/WftuP3B8eT5cg+8+ZjcnP4jyCT82QUY/12BbPgepez+DDpM+mTkcP4nxTz+lPks+JjjoPjvcHz5iKFM/UiuvPvPRqz29uEw/kf/ZPMckWD7LfA8/7bBIP/z1Vj748X09ZGwIP/hvdD9msrw+HxcOP/cHGD9omY8+sO0rP285aj9NA3s+y2t7P1ZeJz/y2Ys+UNRUP+tmKz+KDrY8RhtlPwzQEj1VKmA/xKL0PYt0pj4sqnw/01hPP+Pwbj+AXwI/hJiIPBfiLz8nyQk/nEfHPUp7Bj8MS3Q9zwUdPgnF5z40Cjg/XfpvPzmgiD58hPU+1Xa2Posmiz0lkPM+CHuuPf4HGD9EZJc+Pm+9PmxJGj6HoVA+oWJvP3npEzxmaT8/K/eOPtgwIj7O4Oc+vNusPrzOJD/+OXQ9VGLsPmc/zT7JUyI/c/otPzwpZD8cqmU/Gm09PyAH9j7jXDQ+7SiMPvnYJD+GHxw/bm0RP+uaQT/ScF4/XTXePmCJcj9y1Bc/reBkP6Bz8z4Ng5Q9+4nmPoMr2T7UUt8+3m0YP1kpBD9JX4Y+WX/GPaWJsT5nKyA/qYxjP3AsJz/CMBw+/UHGPlQBsj6ZsWI/+6uuPskcyT7+SXU/4oU4PyDZbj8LzgI9czF+P61RUT8TKiQ++vg8PlvTcj8BlnI/+P6VPqx3QD8SI00/AkPmPipBIT/uF1w/vDxTP8RQfj/inbM+UCmhPmObOj8r7U8/v39kPKVP4j69dRg/+ZE+PzjSiz4KyAI/GtJ2P44TlT6dUWE+vwYQPaoDQD8EGXk/N+nRPlRymj4IF5Q+nr3yPjK9bz89PHY/2ERRP+gx7z6NWtg9llB+P/zf5T49lyQ/LRpNPxnFfD2VuE0/gafpPnxX8j74BTU/6zTwPJ6XAz7dAkM+kqwMPILI/z2XIS4/c3spPy+iYT8jp7I8bn+GPnYaiD1U2ac+iNjOPp9H9j6nwwc/gMULPo6lAD8SagA+z3UBP+KsMz990+k+mdGQPAonzD3/1hc/mvInP0IUMD+LBwI+p+zMOwZWaj/bYnc/67+APrYB/z4= + </DataArray> + <DataArray type="Float32" Name="domain" format="binary"> +sAQAAAAAAAAAAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA= + </DataArray> + </PointData> + </Piece> + </PolyData> +</VTKFile> \ No newline at end of file diff --git a/test_data/vtk_points_2d_pp_bin_test.vtp b/test_data/vtk_points_2d_pp_bin_test.vtp new file mode 100644 index 0000000000000000000000000000000000000000..0ae065fff49829bc8176966e73ab9ed962597d92 --- /dev/null +++ b/test_data/vtk_points_2d_pp_bin_test.vtp @@ -0,0 +1,30 @@ +<VTKFile type="PolyData" version="1.0" byte_order="LittleEndian" header_type="UInt64"> + <PolyData> + <Piece NumberOfPoints="100" NumberOfVerts="100"> + <Points> + <DataArray type="Float64" Name="Points" NumberOfComponents="3" format="binary"> +YAkAAAAAAAC6Ek/RonbIPzhDveBjXuE/AAAAAAAAAAD2WsoshdLaP6Tm/+WtDOA/AAAAAAAAAAC1XW26JVHpP0Nb0WBeUrc/AAAAAAAAAAAXRZpEdN3SP+Bi9BiQzuU/AAAAAAAAAAC2RLf9pF3kP5MUPXW2deE/AAAAAAAAAADYlM/7kzXoP3q6MCLDouc/AAAAAAAAAACPMH5huOfgP6Z0L9SsReg/AAAAAAAAAADFpsGfnSyvP+CPB8APOOw/AAAAAAAAAADJZIVkm03dP+fc8byMEec/AAAAAAAAAABCS5E4X1rXP4G3VaQ/JOU/AAAAAAAAAAAEPTHOfWHnPyWQlLHtt9U/AAAAAAAAAABg/Moe0IHaP0f6RkXcguw/AAAAAAAAAAD+7gwGgYjpP+TXxjIOlNw/AAAAAAAAAADnc9SHDMblPzouy8fiaMo/AAAAAAAAAACKqNf8uivUP3LZRgtHk+w/AAAAAAAAAADOMx35GGbhPyadQslsse4/AAAAAAAAAACzNM+gpmXYP7h62uWjwuI/AAAAAAAAAACuyMLQqJvOP9b4hSSVA+0/AAAAAAAAAABAUZ3BX1fhP3iFHBpEvdE/AAAAAAAAAACe6doPMYuiP44O0yG5eLY/AAAAAAAAAADPrf6ZGKngP5uRkaMyN+c/AAAAAAAAAAC3O8ieJOLrP/hP7wcEWOg/AAAAAAAAAABhRRVET13lP2UkWm3N7dI/AAAAAAAAAADUo2orFq7qPxY4a/T0Y+o/AAAAAAAAAABqlw3KSjTZPyTnfxRuDOA/AAAAAAAAAADEZAgRns3bPzK0R+fmJew/AAAAAAAAAABfUglp0FbbPzPP0YNmGLc/AAAAAAAAAAAbCLCh8vvnP+G88I6Poec/AAAAAAAAAAAIg4kHfD7bP2JEWzvPXeI/AAAAAAAAAAATKH2d9mvhP9gx2x8UZ2I/AAAAAAAAAAAUVVQedtXVPzi9zzBkIcg/AAAAAAAAAABwrxAtSKjnPzbPwNZkmL8/AAAAAAAAAAAINcbDe+WcP/OS25qGNrI/AAAAAAAAAACna0hdLMrrP06LVsVYutQ/AAAAAAAAAAAcKpgW8urTP11ly5FRTdo/AAAAAAAAAABUDMz01fnpP6hVnNMr1dE/AAAAAAAAAAD3VBt/hFXSPx3Fdo1xneQ/AAAAAAAAAADU987VFYS4PzuVybBiNes/AAAAAAAAAAB5QM2Aw1/pP5MAJFm2/+0/AAAAAAAAAACxQaePJ1/sPxjBwiZ0n+4/AAAAAAAAAAADi5eUfjrUP1K+XOXWoOE/AAAAAAAAAACP0ahFOJfrP2sR4FJK9+8/AAAAAAAAAAAqJB01623hP+L27wmPBOg/AAAAAAAAAAA7Gc9XYnOoP3bAo+LEH+4/AAAAAAAAAAASN18Ud2TQP5sJ3WUye7E/AAAAAAAAAABXTpyL1NjRP16H1xJRPLQ/AAAAAAAAAAAGVGo7/dXqPyxu9ivqyOQ/AAAAAAAAAACkU8k1LlbrP+RkFNGNzeU/AAAAAAAAAAAtgdi1ab+jP8QLyT4eess/AAAAAAAAAABenULXULHuPyoFoT1rfe8/AAAAAAAAAAAtJx62aezQPy5+u8roQOI/AAAAAAAAAACFA4imPf7rP5aK0/O0OpY/AAAAAAAAAADfaWdKEEvsP4TMXRK+GeE/AAAAAAAAAAA2ZRH/ZE3nP1lqHLDTyuE/AAAAAAAAAAAKbm3k+kjpP1jTHxlUFtA/AAAAAAAAAAA1VpBY5dTXPyVuQXjtSN8/AAAAAAAAAAC7doO5okTeP0FCSEnf3ts/AAAAAAAAAACigrM4rz7mP72F3V0hPcE/AAAAAAAAAACe4hYusY7UPxCFU8p3PcY/AAAAAAAAAAB6qq/cwiroP+yossKJq+Y/AAAAAAAAAACL/oukugDqP4hpyQg8S+s/AAAAAAAAAAD5pEOOgy3OP3uFVbBCPdU/AAAAAAAAAAAnOWZfbOPsP/zh+Q0CD+M/AAAAAAAAAAD+Wm8HgVLoP23J0rlJm9Y/AAAAAAAAAADZjYW+EzntP5xrwQAySu8/AAAAAAAAAAD93KJGgZHuP3+EzqbAveg/AAAAAAAAAAAc9DQx8oXlP6X1FWotBeU/AAAAAAAAAACIS9QWPNrVP/wwTMGB59k/AAAAAAAAAAAShUMWdz3OP8WS0XOdNtc/AAAAAAAAAAAgA17Eb/7QP6J5HyovQ+A/AAAAAAAAAACV49B7NY63P4QD2SI+fsM/AAAAAAAAAAAHzYSafJndP8XFiqcdneo/AAAAAAAAAADgv0D1D6DPP/CIS9CHO8o/AAAAAAAAAAAH49d6fA7kP/+1T4kAJcg/AAAAAAAAAABLo1NhWi7GPyjpTcBrC9k/AAAAAAAAAAA38FRF5IflPx1QsFLx1+c/AAAAAAAAAADJhTGyGz3nP2uDnX9KPuE/AAAAAAAAAAAlosdw7S7sPzjsUc7jCcc/AAAAAAAAAABlYwyOTc7pP0FOlWTfWOU/AAAAAAAAAADv7VtiCAnCP4sdAKA68d8/AAAAAAAAAABvKA+iyGvoPyh3df1rROU/AAAAAAAAAAB4V9XBQ1TlPyTr3ehtCtE/AAAAAAAAAACIONkyvGPDPyI3TBtv5Ok/AAAAAAAAAAD7aZCIAsvnP1qkz+/SLZg/AAAAAAAAAAB0U5MvRlbWP8XkFXadDeU/AAAAAAAAAADzqvFohirnP46bRgs5stw/AAAAAAAAAACRf5VbN0DVP0BKlvnf2tQ/AAAAAAAAAABuF9HFSHTHPzE5EI1n49c/AAAAAAAAAAA4jJzY47nhPw7ryzt5Cpo/AAAAAAAAAAB3Nh+6xGTgP/lWvkaD1OA/AAAAAAAAAADPV55SGNTgP5IUNjm39eQ/AAAAAAAAAAA+8FT94IflPxoTBOJy9t0/AAAAAAAAAACMCMXruXutP2/vgZVICN8/AAAAAAAAAACz01V4JhbFP8a5pvgco+w/AAAAAAAAAAAfVgBL8NTvP7FBGZonX+M/AAAAAAAAAADNPY5+GeHYP6662DupouM/AAAAAAAAAACnLJ21rGnhP++UN0SINeQ/AAAAAAAAAAA/Wlp94NLSP1l3PWVTROE/AAAAAAAAAADrfs9FikDYP9WaHHKVstE/AAAAAAAAAADJ7fN6GwnmP/nXy4YDFMo/AAAAAAAAAAA= + </DataArray> + </Points> + <Verts> + <DataArray type="Int64" Name="connectivity" format="binary"> +IAMAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAgAAAAAAAAADAAAAAAAAAAQAAAAAAAAABQAAAAAAAAAGAAAAAAAAAAcAAAAAAAAACAAAAAAAAAAJAAAAAAAAAAoAAAAAAAAACwAAAAAAAAAMAAAAAAAAAA0AAAAAAAAADgAAAAAAAAAPAAAAAAAAABAAAAAAAAAAEQAAAAAAAAASAAAAAAAAABMAAAAAAAAAFAAAAAAAAAAVAAAAAAAAABYAAAAAAAAAFwAAAAAAAAAYAAAAAAAAABkAAAAAAAAAGgAAAAAAAAAbAAAAAAAAABwAAAAAAAAAHQAAAAAAAAAeAAAAAAAAAB8AAAAAAAAAIAAAAAAAAAAhAAAAAAAAACIAAAAAAAAAIwAAAAAAAAAkAAAAAAAAACUAAAAAAAAAJgAAAAAAAAAnAAAAAAAAACgAAAAAAAAAKQAAAAAAAAAqAAAAAAAAACsAAAAAAAAALAAAAAAAAAAtAAAAAAAAAC4AAAAAAAAALwAAAAAAAAAwAAAAAAAAADEAAAAAAAAAMgAAAAAAAAAzAAAAAAAAADQAAAAAAAAANQAAAAAAAAA2AAAAAAAAADcAAAAAAAAAOAAAAAAAAAA5AAAAAAAAADoAAAAAAAAAOwAAAAAAAAA8AAAAAAAAAD0AAAAAAAAAPgAAAAAAAAA/AAAAAAAAAEAAAAAAAAAAQQAAAAAAAABCAAAAAAAAAEMAAAAAAAAARAAAAAAAAABFAAAAAAAAAEYAAAAAAAAARwAAAAAAAABIAAAAAAAAAEkAAAAAAAAASgAAAAAAAABLAAAAAAAAAEwAAAAAAAAATQAAAAAAAABOAAAAAAAAAE8AAAAAAAAAUAAAAAAAAABRAAAAAAAAAFIAAAAAAAAAUwAAAAAAAABUAAAAAAAAAFUAAAAAAAAAVgAAAAAAAABXAAAAAAAAAFgAAAAAAAAAWQAAAAAAAABaAAAAAAAAAFsAAAAAAAAAXAAAAAAAAABdAAAAAAAAAF4AAAAAAAAAXwAAAAAAAABgAAAAAAAAAGEAAAAAAAAAYgAAAAAAAABjAAAAAAAAAA== + </DataArray> + <DataArray type="Int64" Name="offsets" format="binary"> +IAMAAAAAAAABAAAAAAAAAAIAAAAAAAAAAwAAAAAAAAAEAAAAAAAAAAUAAAAAAAAABgAAAAAAAAAHAAAAAAAAAAgAAAAAAAAACQAAAAAAAAAKAAAAAAAAAAsAAAAAAAAADAAAAAAAAAANAAAAAAAAAA4AAAAAAAAADwAAAAAAAAAQAAAAAAAAABEAAAAAAAAAEgAAAAAAAAATAAAAAAAAABQAAAAAAAAAFQAAAAAAAAAWAAAAAAAAABcAAAAAAAAAGAAAAAAAAAAZAAAAAAAAABoAAAAAAAAAGwAAAAAAAAAcAAAAAAAAAB0AAAAAAAAAHgAAAAAAAAAfAAAAAAAAACAAAAAAAAAAIQAAAAAAAAAiAAAAAAAAACMAAAAAAAAAJAAAAAAAAAAlAAAAAAAAACYAAAAAAAAAJwAAAAAAAAAoAAAAAAAAACkAAAAAAAAAKgAAAAAAAAArAAAAAAAAACwAAAAAAAAALQAAAAAAAAAuAAAAAAAAAC8AAAAAAAAAMAAAAAAAAAAxAAAAAAAAADIAAAAAAAAAMwAAAAAAAAA0AAAAAAAAADUAAAAAAAAANgAAAAAAAAA3AAAAAAAAADgAAAAAAAAAOQAAAAAAAAA6AAAAAAAAADsAAAAAAAAAPAAAAAAAAAA9AAAAAAAAAD4AAAAAAAAAPwAAAAAAAABAAAAAAAAAAEEAAAAAAAAAQgAAAAAAAABDAAAAAAAAAEQAAAAAAAAARQAAAAAAAABGAAAAAAAAAEcAAAAAAAAASAAAAAAAAABJAAAAAAAAAEoAAAAAAAAASwAAAAAAAABMAAAAAAAAAE0AAAAAAAAATgAAAAAAAABPAAAAAAAAAFAAAAAAAAAAUQAAAAAAAABSAAAAAAAAAFMAAAAAAAAAVAAAAAAAAABVAAAAAAAAAFYAAAAAAAAAVwAAAAAAAABYAAAAAAAAAFkAAAAAAAAAWgAAAAAAAABbAAAAAAAAAFwAAAAAAAAAXQAAAAAAAABeAAAAAAAAAF8AAAAAAAAAYAAAAAAAAABhAAAAAAAAAGIAAAAAAAAAYwAAAAAAAABkAAAAAAAAAA== + </DataArray> + </Verts> + <PointData> + <DataArray type="Float32" Name="attr0" NumberOfComponents="3" format="binary"> +sAQAAAAAAACXgeE9oTsUP8e+Xz+bld4+rbtFP8nfdz+l2j4+E/6iPuk/ej9hk6g9ilJPPr4Jbz/H+QE/4vWLPpZBhz5D2FQ/On8PPw6qNT8mPIA+unAcP8AacT/xi/M+Y4YdP362Qz/73WA/3O7xPhLumTxSh6Y+Xy5+PfCjUz+dQrs+CQ9cPoevaz+/70k/JczKPhIExTwPcug+5jNzP0nQfT+uhq4+MlnQPtimNz8zK2M9UQQzP9mbcz+EVRA/aJemPs36yT43oqE+PvFtPUuOLz+T8Bs/3ds6P5URKT9wnnI/gJpbPykcUD+UHus+FM9+P3dQXT+JOGg/jq9bPzAfKj6XlV8/YpdRO/76DT+/OVU//gYPP8LcOj+cC4A+pioPP4Z+Ez5hECQ/ArcuP/FLYj+ce18/KzcgP1NNGj8YzEY+0iecPndEkj2id7A+Gq2uPQRFGj+hkg8/d3EzP4YqaD82tW4/ly0iP05ddD+o0a0+3+3jPh2Fuz7QHKU+PmsrP/yAyz5FjC0/xcCiPk6yQD8e9CE/YBQ5P+TIOz/IZdc+rpLTPrWvVj2xTxc/mShBP1Bi0D6Fxwo7jQR6P5GMZz5d8qs9oNkNP/XgeT9IcAM/p1NMPknfGz7wzSc/AGJNP57NzT0rYNA90NopPgplET9SiII+jApkPt9bED1BWgA+2k+DPgAKKj9Uf/k+EoJJP+2N2j7q1N09Ga2bPlQ6Hj1slho/wrUwP0wzBD/c0jI+/gz9Po3hLjw4pnA/AT0AP7FAFT8W21k/Yq4oP84IGD+7HLg+wK4tP1xjTT+ZMRY/8Hx8PFhPYT4+6zE9DswPPykZCz83RDE/P2dIP6/pZT/z2mk/TbMuP+6dHT/y1Ic9A1y6Pv/DrD6o1U4/M4SfPptArj6IcTw/FS6iPgY1/j7cELk+x1pIP27wtT7jWd49Z7UHP2ObWj+qjbI+oAEWPyVobz/4rfI9D+t+P13cRz/68+4+82EpPi8pJT9aMDE/2dVcP3+/RD5N8lE/X8BDPmoWJD/O6CE//Q8pPXIbPz6+uY0+EiGIPhe+oD5NKeg+AY9CPymmSz3swVY/tF4UP7LeFT/MdFI+y2VxPkb6Zj82J3A/w60kPlXImj7CMOM+4JgpP7acGD9MHw0+QQ3HPcE9HT5YvH8/NfDPPsnyEj9mOO0+184mPzcJFz8TxDc9izAXPzaiij6jLkc/X7HnPol6Fz8MhDc/70g/PhCmZT5BY1M/MOnHPgnrRT24DD0+ZxUWP7ve0T6BxRc/hOdIP+f2HD927CU/KkiPPg7gEj+KGSQ9HjJSP9AB5z7on7Y+fEMEP+o8gT73+14/TJpSP5kCXD9o16Y9pH/hPrjkVT2lhm8/kdJlPx8aSj8cuMU+l3hoP4OEbD9TLC0/C1hXP0uuBj2gfnA+qqD0PtUeKj8UkQM/3i6VO3JpRD+z6G0/vu0XPxwWIj/Qdzs/mcIyP78kFz+fZgs9n5gDP5uiMz8B1S8/8sXQPCAZuT0zktY+E8k8Pu5NJj3plCA+9TpXPySufj+HCIo+eHF5Pkzcej6kcm8/fhBGP5HGUz6oGew+JFEdP2t3lj7vi28/iogXPi3L3j4= + </DataArray> + <DataArray type="Float64" Name="attr1" NumberOfComponents="3" format="binary"> +YAkAAAAAAAAtaASK6cvdP+1H0Y4JXMc/AAAAAAAAAAB9pdNzQS3GP9sWiVGSdNs/AAAAAAAAAAAJq1WueyrlPw0IC335e9o/AAAAAAAAAACCS8QiP9rNP14Kd/jQeuQ/AAAAAAAAAAAmTNPh7FnGP9Po1K2Wi7U/AAAAAAAAAABjJMJ4zu3uPxlqYYTzSu8/AAAAAAAAAADcDB3kkXnhP0M2/6LeZOA/AAAAAAAAAAAf+INd8APeP8nMR2+bGew/AAAAAAAAAADcHKY8kvHsP1m9FllToeQ/AAAAAAAAAABkD8zxTfjZP/kCJUGDfu0/AAAAAAAAAABGPpnw3GDTP1Hl0GtXjdc/AAAAAAAAAABEwRY3Xp/UP4PY+LW+k+M/AAAAAAAAAAC8gqbnob7sP6VBwbctX58/AAAAAAAAAABlwlyezZ7BP+1DTHwJ3tk/AAAAAAAAAACGjNP/vDm2P6Y+3d+sYGE/AAAAAAAAAABKla7/WrXoP3yV2u5BteI/AAAAAAAAAACstMgHqqWrP0TJluJdm9Q/AAAAAAAAAADZA9x/E/6hP+QHr88NfOg/AAAAAAAAAAD5Qd6NA9/QP+btxAUNia0/AAAAAAAAAAAaMMPr8mfOPyFu2G/vyNM/AAAAAAAAAACWs9wPNaZxPziqzR/kKuk/AAAAAAAAAAANpUi+ea3rP7GX1EsntKU/AAAAAAAAAACObMDluMmvP15ZTTJRU9k/AAAAAAAAAADD0H6XnpfgP/Ep3okH68A/AAAAAAAAAAD00DPPhRfmP9zQXyySF8A/AAAAAAAAAABZ7Bu40wniP3a3FCBFpOU/AAAAAAAAAACTZcyMNs3ZP274OyXJA+I/AAAAAAAAAAC0hsAbprzPP49Qwm+4164/AAAAAAAAAADTZwxhFszpPzkHBWNjfN0/AAAAAAAAAACMgVMvOj/mP2kA2nDL/9I/AAAAAAAAAAAFFcazffXcPw9/g3R4QN4/AAAAAAAAAAD8UJEbglfXP5zo2gWyi6I/AAAAAAAAAAAIqIHP+yvvPxtXSaZyVNs/AAAAAAAAAAANdqFG+UTvP+ZaU+KMUtY/AAAAAAAAAABDx4eIXhzsPx4S0yvxdqY/AAAAAAAAAACWDZnkNHnTP3twtZTCR+U/AAAAAAAAAACPfYdWOEHcP9yBwhMSv74/AAAAAAAAAABgiLoG0LviP3Q2VgLG5NQ/AAAAAAAAAABg990VUASxP4Bq9si/yuQ/AAAAAAAAAADNPPtYmWHiP7DHIvwnnO4/AAAAAAAAAACJctF7u0a3P7F3y2EnROo/AAAAAAAAAABkB3LBTfzmPwjdW/17EeI/AAAAAAAAAADP5JZUmI3UP/INyPYG+ds/AAAAAAAAAAB7MgRlwubdP6Ot3n8uqdA/AAAAAAAAAAD0hz0rBjzhP+VGkWCNXNc/AAAAAAAAAAAy998EZwTgP+2HUmMJvOY/AAAAAAAAAACcsp4ssqbgP85CRTaZXs0/AAAAAAAAAAD88m0fggbpP6ZWyOis1Os/AAAAAAAAAAD7wsZbgp6cP6UM3YuteZE/AAAAAAAAAADRx86mF5zoP95zgCURxt8/AAAAAAAAAADdYSWsEU/tP+UCkVuNftc/AAAAAAAAAABiXdQXT9HVP4fceF28keM/AAAAAAAAAACZ9HekswXkP7eHB2kkPOw/AAAAAAAAAAC/88ZYIIbMPwgUqdP7des/AAAAAAAAAAAe/U8pcQHYP4oVpPc69e0/AAAAAAAAAACgUpI5sNbmP5m43GSzo7E/AAAAAAAAAAD1UKVbhVftP7HE+qunneI/AAAAAAAAAAA0XoDY5dDvP51WplSx1Ow/AAAAAAAAAABn5UOOTA3uPx4y3BHx5rE/AAAAAAAAAAAIfrwy/MDhP12UzZ7RNek/AAAAAAAAAAC7psePoiyMP7SNhDsmud0/AAAAAAAAAAB5KRiEQ+vTP5e3loI0pNQ/AAAAAAAAAAB1Ul5kxdbQPxilGBh0reM/AAAAAAAAAAB6FdD3QvXnP4+zXVU4JuE/AAAAAAAAAAAEPdbhfeHEP/EYh2+Hc+w/AAAAAAAAAACCrtUgvyjVP5AfwMA38O8/AAAAAAAAAADGoN/hnC/QP/DUktCHldY/AAAAAAAAAAAA+MkVAATLPwDuQB0Aic8/AAAAAAAAAABPMlij2ObTP+Ug/6eNb+A/AAAAAAAAAAAvz1WaaBjVPz9Bmp1g39I/AAAAAAAAAABzw96xRp6wP9RQ/+WVV+A/AAAAAAAAAABwVM3Px1XpP6CbQj4wss4/AAAAAAAAAABu+esVSQPqP/mTkIkDttc/AAAAAAAAAABZugR306LdP+m2276LJLI/AAAAAAAAAAArIcB6au/fP09uCrbYyNo/AAAAAAAAAABagX7rUr/gP5mJ+kczu+I/AAAAAAAAAADv42ewCA7sPwsI1L36+8U/AAAAAAAAAADp6F+UiwvgP5X8ynC1gbo/AAAAAAAAAAAqSAAj69vfPy2stKvpqeU/AAAAAAAAAADOHEommfHaPx9iUanwTuc/AAAAAAAAAAAHTQCWfNnfP8w+/OqZ4OE/AAAAAAAAAADPY9d4GE7kP0p2K/zaROo/AAAAAAAAAACxEtOap3bmP8VelKid0OU/AAAAAAAAAAAsRe0mal3pPxIEwub2/d4/AAAAAAAAAABtNcBLSeWvP61SQZOpVt8/AAAAAAAAAACIZBkhvE3jP0yVOi5ateI/AAAAAAAAAAAUHFQk9vHVP+InnukO7OA/AAAAAAAAAAD588V/AwadPwbOyf38GKs/AAAAAAAAAABh7thOz4jTPwJB1xB/X7Q/AAAAAAAAAABBp6hTX6zrP5f3YJU0hO8/AAAAAAAAAACbThllsljjP2fF339MHUA/AAAAAAAAAAC01ATopZXdP6kFz0grfcg/AAAAAAAAAAD1lsaUhbTMPyOQXqPut8A/AAAAAAAAAADNL8iTGejbP9kGeZKTfOM/AAAAAAAAAAAQQYLmd9/eP7Laiiqnkuo/AAAAAAAAAAB6X1/eQlDgP1guTt/T6Mg/AAAAAAAAAAB0Tk/IxVjIP79wP0agR+A/AAAAAAAAAADfebBlEMPnP5Cpiu83q+o/AAAAAAAAAAD3Tc2tBFm5PwWiVX39LtU/AAAAAAAAAAD5JzZNA+zkPzO9025mIbY/AAAAAAAAAAA= + </DataArray> + <DataArray type="Float32" Name="domain" format="binary"> +kAEAAAAAAAAAAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + </DataArray> + </PointData> + </Piece> + </PolyData> +</VTKFile> \ No newline at end of file diff --git a/test_data/vtk_points_bin_test.vtp b/test_data/vtk_points_bin_test.vtp new file mode 100644 index 0000000000000000000000000000000000000000..be9a64ab51241e74464a12178506be850ad99d3d --- /dev/null +++ b/test_data/vtk_points_bin_test.vtp @@ -0,0 +1,30 @@ +<VTKFile type="PolyData" version="1.0" byte_order="LittleEndian" header_type="UInt64"> + <PolyData> + <Piece NumberOfPoints="300" NumberOfVerts="300"> + <Points> + <DataArray type="Float64" Name="Points" NumberOfComponents="3" format="binary"> +IBwAAAAAAAC6Ek/RonbIPzhDveBjXuE/puXjHy0N7j8qQQQga9/tP/OM0lOGueY/51U0hAzV5T+VhMWrtT3NP2opP9xKa+A/+NHHBgQX3D/YJlPPk2zmP0srCHta6ts/mVrIUbPS2z/A6C8foAvoP02PvmBZuOA/6ppNEosyyT82WnX95FLlP22G3kfJvNA/havMTz2qqT9fSBuV0FviP87Sju2Ylug/3L3R/xEhlz+M/K/6uQHoPyPrF2tuCtQ/uSTPaqNtyD+OgT/WOD/gP4gCnTO8ftE/my+evDLo0D89G3WxYXLlP05QxBHZ1+0/NnxJNOVByz9ifno2z8DiPyf3yK9shHs/4TabkY9k4j8e8pTN8IbVPxpqSwvzSso/8J9HHwgw3D8ijtwM77jhP76a0DChsuc/9c/eQgWYsD9gEg/Az3boPx/4g13wA94/ycxHb5sZ7D+XmZauNLPUPwaC0b/8Psc/RZjjcd0z7j/TwtVZlh7VPwrj09d6DqY/Xe6zf9EI5j9A9M4a4IW4P+K819eOIYQ/ZbqMtc2i6T8oSNP061vWP0OmyYveLMs/N9OdXmQW0T9R5dBrV43XP2D8yh7Qgdo/R/pGRdyC7D8QtUP5dyXeP1cwzZHUZ8k/FZa6TfW04j+dhBG0sT3XPznO4VjjGO8/76xbo4gp4j9ybk4px8jIP0SAzwfeP6g/q3+TgSpA1j+SpNchty20P+pB68cKX+o/rSwZk6lp0z9y2UYLR5PsP0E3Wp9f5MI/TkU621jd4j95zO6xw5noP0Da09/fEpY/PLWn6WEl7D8lhtNu7TzGPxxnXgByzMA/hPxRDr4Bxz/OuE0omSPZP5/qm4qwCuI/JlrWDO3S1D/rDEJlivnOP3wawv3B8r4/C2iAWPrL7z8MMIPc+WfuP9vj2XwSDtM/nULQsLHe1z+WbpjRtMjjPxaJ1dt0O5U/+3GpUwJH6z9yhF8Qxz3gP1Jh1zFXT+Q/7UlIjQnb2z9gGenwT3PrP/b4yyaFA+o/+UHejQPf0D9LBQZ5Wv3sP05zyRBZRts/H9DBjfAXzz9js/y5TqbhP5EXi283dOo/DYjNWvk72T/3+MiMhIO7P4UR2289d5I/WhbB19J0vz9AW8fTX1KcP8+XF6wYNNQ/+N5oF4SQ6z8NpUi+ea3rP7GX1EsntKU/YUUVRE9d5T/GBiTynPztP+IK9BKP+uU/gUJKjb/eyj/WjsIqlbjuPyA3Sc1vZMs/65SFqIo13T9hWmqZz9LqP//fkpwAkOY/XFzP9dFR2D9GahAl3crnPzgPddxjeOU/MAU16Wd95T/EZAgRns3bPzK0R+fmJew/6u3e8QqJoD8C5KL+/o3uP4Tap/29Euw/tj7B9aRgrz/9lMJNgbXOP3FM4aDHWe8/r8jTZqgb5j9wNJXWx2XVP0KAmgffv9I/+kxO/oLZyD9KD80tW3jZP6vp3lwqi7A/fTdXTkFkxD9yDlcMx3jkP8s1/Ewa5eE/MMp3/+ca5D8iHhc973DUPw5Nsxl5WeY/bj2MCEnh6T/fwj2gkB7hP606eYGpYuM/0MZIJJicyz+yUuTHptbtP5p0d++yReQ/reiitKmL7j8D9Qh7foXrP2hB1OxL38U/vU0GmSHZ7D9ayzouU5riP2xlM8BJTeY/lM7HL7YYjD+K/dy/OoHRP2MC2nfO/qI/l7JMn7Sm6T+PI4m8OG7rP7koRFWj690/WNY33dMU5D9s00/NSRboPwiogc/7K+8/G1dJpnJU2z/Cf9DXHsDXP3dGwb3EXM8/i/TCUrqFvj+XElFitHbnP3KvxfZGKO0/YH5C/c/Azj/tz/WfCRjlPy74RfzoA+0/mB2lwjNx7T8Wt/H6dCTnP5Yc69O0ceo/QEIYA+De4z97cLWUwkflP/dUG3+EVdI/HcV2jXGd5D8hvfyvb6HhP+zKivCJmuo/piFABC3vzz/2J900BWzBP/L8STCHAes/DUVguXnd7z9Hp4K8XKzuPzheSN7j0Ns/tQRsXqX96T9wOssfyGKaPzruWT/jCNM/kpPJ+jY2yz8YwcImdJ/uPxEewpv38K4/CwrPlfp62D+IjzY1PLjkP/Z6yRGFQts/BCjVK/5rtT8o/kD064DfP3KH8ztHPOY/HkslyXBa7T+R4nmatw7jP/Xny20FDLo/TInV9lk7xT//OfKYAOPmP2ydvOlJseE/uWn8tSPL4T/ndVFhDEXnP+NOz7eOWMg/LJkC+Wmz3j9rB4atSvzcP9HZzrIXk8g/4shMKY+b6T/jas+yjkrIPwUm20j9bOI/rEqfEKpa0D97n+1PQjDpP4VcCaq9Uds/ezIEZcLm3T+k2bQALpPlPwystxv6KeQ/6IJCEoy+zj/fDaVJEHntP/neU5uDENY/I748e+6g4T/cMMsHkmeqP1NpS4lWS8o/8nyUGofB5T98R0bBQdzcP6cdTagscdk/EzVfj3Zl0D+csp4ssqbgP85CRTaZXs0/pFPJNS5W6z/XEUeOFHfcP0pEBtTa3dw/IGif8u9L4D9uJN7xyO2gP0ge0DPc8Nc/usPsLSOe6T+Jc/6tO8bgPw+STZP4Ntk/P6scXGCq4T8TctBS9sbnPzOF13pmPeQ/NJyax+Wx4j8tJx62aezQPy5+u8roQOI/1fJdlpUG4T+2jf3gJDnhP6A80Oev4Zc/kVsGojfS3D/iJ38jD2zgP9XWLneVlOg/1gtD7BR67j/zac2oBkvpP2tjGXFKTtM/MIXTxWc9pj9t9tWLyQTVP0Ir+C9f6uM/v/NuTyCG6D93UFClxNfHP+zeO8yJEOI/SIlUFVy71T9b3l9q0hDQP6WULZKtNek/hY9Tuz045j8WydHldBunP8Aa2s+f8rI/EfaQvPeE5z/DCt5AnvqwP/9oUWuAS9c/AM/U4X+Y1T9U2V7PVZPAP0Ekj63fbeg/aFqNzMtS2T/0Jkb+hezcPw2de5d5MeI/5u2RKg0J5z9L3dRgWpG1P1NPlkpW2OQ/vCEmLCLv7D+G/YHvPAHfPy7mQwHpDO4/ODVIMWTlyz/lg1K7Db7WPzRegNjl0O8/nVamVLHU7D9H9c2uXAXJP1JK3cHWWqE//i/E6QDovT/Jhw56G7zoP8e1U58cJeY/ZbDYmc2n4z8ObJHr+EnnP0HK36/fGsA/gAwZzr954z8mbHk+7UnjP7rRfu4il+A/1zRYrZTlwz+Kw5AQO57XP3epuYxEK9M/BezPY/0JiD/XJMOQlG3eP2QV6vVN9do/zHtbGBpCsj9fgYFJUD/fP03DZE9Znt0/1wZWopT8xD8Vkc6odbfYPw4IAhL5+94/faXTc0Ettj8FLMKB/em+P26rwARJqq8/tKcBxiUs3z8uySQMaZvdP6MsTmGu6dg/vg8CKiH43j/UeoUdlkLNPwKSBOz+ts0/EDPd0ndmwT/bEsBxkvbfP22BeERJv9M/ahnF8UpzzT8mTNPh7Fm2P9Po1K2Wi6U/2JTP+5M12D+M20/lORLIP1hp3ydUS6A/s29OuSbI2D9dthOw0STWPxgQmBD099M/UpXONle1uD9bAC2I0n/ZP8t4DGOaw8k/StkBHlsTzz+TrrJntqjWPwfvxGh8iL0/z+PaihiOoj/JZIVkm03NP+fc8byMEdc/ZpTq0sy12j9fPJth0GHCP9Gz1qQXpsQ/jJLUPbq21T9vx7uHSBzSP6XzXrothtA/Omi71eJL0j8Ylgg49LTbP+Q01g2O5dQ/K15WR+rQxD9+Sd7BQNvQP7ZJjtQk29g/M+U7Z2YN0j+/Zl1JoEzBP5Kpr/U2K9g/eRH+ukP30D/fuHCakKPXP1zhzh9Sj5g/9k/XygRYxD8A6VY5gIvUP250wBrJxc8/Lp6T++gwxj9840XhQQ7NPwYzQ8h8Zt4/7ovgHwm63z+iKNfhrmuUP7iMaBWkuds/oqVtHS8t2T9DcqiU3sbbP3nGW5/DHMI/D6LLQvguqj9Zy8W5UxrNP5UJGZk1e8M/JlHG62zXrD+h5Nhfr42jPwa/szh9INY/56QzQYwt1j9NgQ2SWT/JP0qVrv9atdg/fJXa7kG10j8IhN41/L3AP27NVOJImdU/rC7UFqropT8+6tzP4IrBPyN2w4juRN4/B41nh3w53D/f8YWIEAfNPwI2T+/+ZMg/JXESZ23H1j+Yp8EwNCzfP2SbodVNMt8/6gaY14r80z/m7cQFDYmdP57p2g8xi5I/jg7TIbl4pj/L1gO/mhTeP872ydGYBLs/7KaP9oks2D9tQYK7Sd/OPyHYWqzvk9I/LTUSdGnl1j8GLUvEfGnaPyWUErbttcY/o3OAVi7G3z+ROV+7N2PQP2CiRNvPrs0/XmHR11BPhz9lJFptze3CP0zqwwbaCs4/wq73JZ8o1D+DPtKnvuDWPwCPECaAuMc/v5RgW6C13z/JFD2Bm3XRP53/jVoxANk/SbPMn1um2T/BwVBEH5+3Pxn9345zAcA/VzV8s1Tl0T+9VG5zodXYP+k2JUSLZN0/onnnOS9D3D+b7EyVsonZP9L8GwaXAcI/YEKLCtBe2j/OnIQBmbHNPwLdySF/Ecs/hBXk9D313T85c0V+Y0bdP8B9UTMgQbc/+p9b4wIwwj8M9tg1+oTDP+Ju29SOSKI/k2XMjDbNyT90j9QvRrhlP6zVzM8pldk/5nplwYxC3T+4hCQRpL3dP4QC3iy+/sA/TeHXb1kPtD8rO9StauLFP0QfXMJd8ME/lAjT7LV7xj/JpU5sG63YP1LKSBnXmrs/6owO/Iq52D+MgVMvOj/WP2kA2nDL/8I/FFVUHnbVxT9x/VWhRwHFP8XoWWKdC9M/lAQVCrZ91T947VI/RInGP32DzKhBvrk/cx42f8bw1D/awJMykx/GP14axeHQcp0/6uDRAosP1z9oRs7xy9yoPw3tkZ55Cdc/LxdJUmh02z+na0hdLMrbP06LVsVYusQ/MNbJ3ecUuz8NJSFseW3fP7n8FHOjgcU/bDd680nk0j+mmo0trTLZP4UT9H899tU/RnjN9NxDqT/Bp5WnHyzFP4gY0zK8c8Y/jiaKDbnsyj96XALlwtHOP7rty8giCdo/JxK5a+x20z8jocqwbq+qP5GGQ2S3PM4/AIG1NoA/1T9mctUKzUbVP6HxN70vB9Q/JDjhOO5j3z/2xU7xBJ3YP7UGnX2lfME/qTHXvCtnpD9pA9WoS36lP5iJfAk0u9E/w4fBkB483z+/AVlSIH/DP2GMSmDPudo/My3EcmbprT/ZFliYk/SzP5gwhuuz59w/7+RQuoiN1z+zzh+gphjQP3lm1oPDzNQ/1+rPj5QKyD96y8wFQ5qpP0ZQiRzdV8s/V6rlQNQq3T++ppsxoSzSP4ly0Xu7Rqc/sXfLYSdE2j/CohIyn67GPxLbwtR2kt4/yFCfDpxX0D8KE47qevbYPyWbCqttsso/qiBnHKtv3D9F/gyd3YDJPxHqCmT3iso/oUQcYq/dwT98OMvxwWOaPy0qp3bpatw/1aUtVRUt2T+jrd5/LqnAPxI3XxR3ZMA/mwndZTJ7oT+ygYcnJz/MP3XVAIBFld8/dLV2Kkal1D9f4dRbUI+FPyXjC1ZtDto/wpHl8R433T/Qus0MmCK5P8UGea2dfNM/HbtavXGiwj+7MdlDImfTP+hKF/SLWtQ/xWQ0qZ3N1T/kZBTRjc3VP/iKAAGEut8/Go1/5XI50D+MdMwJusWpP5FSLHu31tk/H3XnZnBF3D+ncx5/LMbAPx1gYbfxT98/juKa6LiOwj8V/+9OdQDYPzqJKcliO9s/aNQ1PswV1T/0v4TpBaDdPwfGVVj8HNU/YhtY+07ywz8LwNuD+h+SP3O8km/GocY/bxzZnchx0z+UDsMJtnjOP+P7uWkOAtM/tIWM7yW9yT/ccTsDEkfSP66m2wypLLI/lwZtrLR82T/8DPzCgfnRP7Y5/RwlY9E/Yl3UF0/RxT8GUdfRfFfEPx7H2t5wnKI/cU4ShsfY1j/kg9zCDb7RPzDZTAVok7k/CQ51q/t41T/WcFUQlUfFP6SNV9ItObQ/21jFZJJTrT+4iXwuJLvRP2j18gxMhdY/mY3JYTM5mz8e/U8pcQHIP4oVpPc69d0/NVaQWOXUxz+nGNBOrPPHP5y2sCyypNc/vg5GI6H4zD/QrN8ymCnAP4itvcs7KdE/rbyBfqkh3z9S6sU31wqdPz4Ko+bget4/NyWhTWRt3z8grQTNb6ndPyTNz9ltGag/DY/xkHk41z+e4hYusY7EPxCFU8p3PbY/50DAR4zfrz/y150TBxTBP3Vb45NFUt4/I9efcW4UwD+KVHMyu1XWP1vwNYTSB9U/SyExTFpv1z8i5t//7gxwP9trILISyt8/llwTP7VRxj+cERvSMXfSPwXn3Vd9DJE/4JP00g+21T92gPZyXlm+P12Rm4xRN9I/tDEKgr+ApD9WS0VAVVrNPz3bl9bHeKo/pU6+q+ALxD+hv+fUlYbSP5EcB9dQC6Y/sVD4OUFxzT/qQFKXJHnAPwwKUHlgYc4/UDr7QHH8mz9zIiJpLFW1P3/fqOim9sE/57MmRT/Zrz/YWO6iYKDFP2IDQc6BscI/qqeu4vd4xT9VgiMvogvLP9C0qmT+C3E/zCZlnADTwz9/eNaQwMO0P+OeVKCOsLU/J9rW7rhf0T8sRgcp6lzMPz5zEXb637A/VhAKOG6RpD9HH7iujyPHP2pjtrkXm8E/kaSm4B0Usz8tETHpAhHRP/0Qwiobkcg/xpghSgOaxT8bvcpYcqG6P1tUJts4PLM//KoqF093xz8z8jq4GbrFP45AwhbsEsI/v3NNrIaszz+GUf3k1vCqPz3D8JUua8Q/a2birjAzxT8V8OIywlTLP5XbY68C36o/M4intEyioj+Rz2zhasvMP/EnD5tt0r4/AUA8uTITpT/YRUAiRxCTPzi1M5D9vs8/eBIoIvcpvz/aH6cFedayP9wDuRFFscY/QB5Ob0ZXzz8/+QXJ+Zy2P7JABIWm380/Gff3kgyenT8fvUWuo1TAP2p2EJNkXnE/ARVv7UtClT//EgSosynBP+NCFnSO3sQ/pWbpuBOzwT8K6GPxLT/RP5Za2ge10oI/ryQy1tsgyj+YiPnOgAjAPworRgiuHZA/IXE2eqL6pz/PdEJKMl/IPws2/ZKT/po/jZbJibk0qz89DzuM+hHMPwu03IdgDMg/wHWg5lL40j8cpngZi0bNP+pda3LXHbc/8IwM2SFTsz/W2Cv0x0a9P6n50hMrg8Y/fO30edsirz+d2jJ65MWZP59SwXuwVr8/CTT5ypT/nD/FRQ7NtnbSP72x+wK7wLs/ZkW7FE1d0j+xy13xjYDHP3Bxlaeurcs/oASeHhZkxz/t6+OEb3DEP5g7QbTN+8g/25qFR8VlwD+k8gb3E+3SPxN+L9wpdKs/G3+OFwxawj9dvbM6Hu7CP8hIutM1dcw/TAcZ4yZJ0D/2nWA2axfGP/Vssw5SFtM/5+FxSdnbwz+4Kr3bo2rRP6qlOHP3edA/PpBmh62EqT/AmQ6XuUyiP0rVTjdblbg/uvFrDYltwD/vFEN6u6ixP5WKbceBB6Y/nalckTGrsT/8fKG8Tg7MP/+iinwaSMQ/D5ovEixmiz8eYRws1zXIP84S/GcykKs/kaRXjLcttD8LWm08xx+mP+pgy7Uk6cM/u5gKPzxNpD9K++HcJ8/LPwOxRCp+p80/4WimIsL+zz94zqKtKv/EP5+WMtrj58k/c23sy6wv0D+thgG3QtaoP9XIpaP7gcM/a0YLG8pcyj+Hm4spPDLKP6FkqaQVtHE//9YFGRqupj+3wxSTJJ7FP1OjOfXvx8w/dK/tEXlbzD9SWHZlo6DBPxD5bptEUMU/Gs+VWtl+mz91kwVmRTbNPyD2OrQiuKU/Xit8deqDuz8NGjjCLCaXP1NVECJW1cc/rag1tULFzj8YIg8MWtW+P6CAxCXj8tA/jz8euJ5Gtz92Sfmg3vSsP/0WjZCBdMk/j4YFFlLWtj/TlCWXyWjQP62mIV0Pk8U/221EcEX80D8WpmoQWxPRP3cQEK0qXr4/ZJxBEQFloj82yatwy4HQP8HdNF1SxLg/B5NMcny2yT9E8PidqlTQP3k/zVdDYIk/Jzl4YDmwsD/U/v2UL5qaP5jRElzNMKA/rSb5ltyfxj9ghGaenIqpP8/0LxjMOKs/zIb8MTNWuz+YVSlcmrvBP/W3xsyePcY/L+1z3zTWkj/+Uw3nZry/P9iYrF76GZA/KBHrUdLd0D+Vli32Ts7SPzus6v9IEME/yBeyZLWN0D9Xxteo1BzEP4xdme85UcM/te6jrNg70T/+FuxH51rQPz09uPj6es0/WWDgvzk2xj/uupL9iKLGPyimqBpSE7I/lGANc0/pQj+mo6yh+XrGPyUOATaHErk/9+aPmupyzj90uWmBrInRP1LmY6Sj2co/PZX8CvtOez/kYkCOjc7PP/W5jQ+fvMI/wzB8TJ7n0T9spXFsFvqzP/QC5mjsZMM/f4iriyai0D+qoThKXuKmP1Mwt/BvAc4/RTNePV3mwD9WFzKQ7o3QP0DX7GT5LdM/2urHDJMKvD9zxuSN+c/QP4EqyhC/6qo/8xRqvlLCtz8BvwCdstPCP3ow9NJcgV8/bfV+H+Meyj80IBzn5e/BP1Wn7w0i+bQ/IBhzAb1Aoz83TcKklwzSPxz7z4txAsg/V1gxI27t0D811yiOy/rRP6TqDaJHpNI/L3vyLDWPwz+RGHwm6ibFP3wPWUOo3sk/io+mmweFyT+kN7a+YBfIP9EMx43939I/Iy522YeCzj9GOevDKTDHP6v8Su6pgco/ab2+n37Uwz9ASnhorKfAPx/7M76jNXk/VHMjKLystD81Ju+UGKDLPzUN3JRl+bE/JJImV1Qdsz++kITDoLfNPzZacSEYhso/J3Wd8zgSzj+5jMFu1mzCP5KHGgs3vNI/oA1y2PzFwz+PMJ/cHs7GP/10qtDnK4E/X0IJ22n4dD9FNgUCd/6mP6tmijFEZsQ/O0O0HJURuT+5tgRdo6TNP5TLMUTPs9A/mE/LxM3xwz+mIDPb36LJPwlP9N1HpcI/7XOL/KLfsz8P+2IURU+rP28MKCf7LL8/tp37sr7Kmz+iCJHWrnvHPx/ZCpPW+dA/BY9wfEqFxD9opgXKZcamP510ZNQXLMQ/bM3OcuMywj8JcdWue0fFP7WjWg+MFMk/lEOiO5xEpT9JxvXsdLa+P4lqE78hscw/j2NoB580wj/YCRELeuG9P2i1qeZ+WL4/kecwh2q/yj8WQidIW8XCPyXd15ltEcQ/zd7KqzIqxD/rzzlmPUu2P4EyJtQlTbM/zH43UzPazT+O7luJhdWOP8FO1Hqf2KU/Isx0VIgzvz8lOMFA7WPPP4p3h8g6RMw/LfLoZrZTuD9FjDbOEO2XP5bPqRWbfrE/wUGNk4XFrz9tj1BZ41HRPwM8Dr2Xe8I/CW3zIRXjzz84UG71sKSVP50ATACx/7k/04wiyPwftT++9t6loITQP19+IbwDdNI/VMPZz1Uewz+2MsZfPoDGP/pJD1uc9NE/CWQVcPtNxT/xN+u0bcrAPyDU2+TvFbI/15douHoa0j8= + </DataArray> + </Points> + <Verts> + <DataArray type="Int64" Name="connectivity" format="binary"> +YAkAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAgAAAAAAAAADAAAAAAAAAAQAAAAAAAAABQAAAAAAAAAGAAAAAAAAAAcAAAAAAAAACAAAAAAAAAAJAAAAAAAAAAoAAAAAAAAACwAAAAAAAAAMAAAAAAAAAA0AAAAAAAAADgAAAAAAAAAPAAAAAAAAABAAAAAAAAAAEQAAAAAAAAASAAAAAAAAABMAAAAAAAAAFAAAAAAAAAAVAAAAAAAAABYAAAAAAAAAFwAAAAAAAAAYAAAAAAAAABkAAAAAAAAAGgAAAAAAAAAbAAAAAAAAABwAAAAAAAAAHQAAAAAAAAAeAAAAAAAAAB8AAAAAAAAAIAAAAAAAAAAhAAAAAAAAACIAAAAAAAAAIwAAAAAAAAAkAAAAAAAAACUAAAAAAAAAJgAAAAAAAAAnAAAAAAAAACgAAAAAAAAAKQAAAAAAAAAqAAAAAAAAACsAAAAAAAAALAAAAAAAAAAtAAAAAAAAAC4AAAAAAAAALwAAAAAAAAAwAAAAAAAAADEAAAAAAAAAMgAAAAAAAAAzAAAAAAAAADQAAAAAAAAANQAAAAAAAAA2AAAAAAAAADcAAAAAAAAAOAAAAAAAAAA5AAAAAAAAADoAAAAAAAAAOwAAAAAAAAA8AAAAAAAAAD0AAAAAAAAAPgAAAAAAAAA/AAAAAAAAAEAAAAAAAAAAQQAAAAAAAABCAAAAAAAAAEMAAAAAAAAARAAAAAAAAABFAAAAAAAAAEYAAAAAAAAARwAAAAAAAABIAAAAAAAAAEkAAAAAAAAASgAAAAAAAABLAAAAAAAAAEwAAAAAAAAATQAAAAAAAABOAAAAAAAAAE8AAAAAAAAAUAAAAAAAAABRAAAAAAAAAFIAAAAAAAAAUwAAAAAAAABUAAAAAAAAAFUAAAAAAAAAVgAAAAAAAABXAAAAAAAAAFgAAAAAAAAAWQAAAAAAAABaAAAAAAAAAFsAAAAAAAAAXAAAAAAAAABdAAAAAAAAAF4AAAAAAAAAXwAAAAAAAABgAAAAAAAAAGEAAAAAAAAAYgAAAAAAAABjAAAAAAAAAGQAAAAAAAAAZQAAAAAAAABmAAAAAAAAAGcAAAAAAAAAaAAAAAAAAABpAAAAAAAAAGoAAAAAAAAAawAAAAAAAABsAAAAAAAAAG0AAAAAAAAAbgAAAAAAAABvAAAAAAAAAHAAAAAAAAAAcQAAAAAAAAByAAAAAAAAAHMAAAAAAAAAdAAAAAAAAAB1AAAAAAAAAHYAAAAAAAAAdwAAAAAAAAB4AAAAAAAAAHkAAAAAAAAAegAAAAAAAAB7AAAAAAAAAHwAAAAAAAAAfQAAAAAAAAB+AAAAAAAAAH8AAAAAAAAAgAAAAAAAAACBAAAAAAAAAIIAAAAAAAAAgwAAAAAAAACEAAAAAAAAAIUAAAAAAAAAhgAAAAAAAACHAAAAAAAAAIgAAAAAAAAAiQAAAAAAAACKAAAAAAAAAIsAAAAAAAAAjAAAAAAAAACNAAAAAAAAAI4AAAAAAAAAjwAAAAAAAACQAAAAAAAAAJEAAAAAAAAAkgAAAAAAAACTAAAAAAAAAJQAAAAAAAAAlQAAAAAAAACWAAAAAAAAAJcAAAAAAAAAmAAAAAAAAACZAAAAAAAAAJoAAAAAAAAAmwAAAAAAAACcAAAAAAAAAJ0AAAAAAAAAngAAAAAAAACfAAAAAAAAAKAAAAAAAAAAoQAAAAAAAACiAAAAAAAAAKMAAAAAAAAApAAAAAAAAAClAAAAAAAAAKYAAAAAAAAApwAAAAAAAACoAAAAAAAAAKkAAAAAAAAAqgAAAAAAAACrAAAAAAAAAKwAAAAAAAAArQAAAAAAAACuAAAAAAAAAK8AAAAAAAAAsAAAAAAAAACxAAAAAAAAALIAAAAAAAAAswAAAAAAAAC0AAAAAAAAALUAAAAAAAAAtgAAAAAAAAC3AAAAAAAAALgAAAAAAAAAuQAAAAAAAAC6AAAAAAAAALsAAAAAAAAAvAAAAAAAAAC9AAAAAAAAAL4AAAAAAAAAvwAAAAAAAADAAAAAAAAAAMEAAAAAAAAAwgAAAAAAAADDAAAAAAAAAMQAAAAAAAAAxQAAAAAAAADGAAAAAAAAAMcAAAAAAAAAyAAAAAAAAADJAAAAAAAAAMoAAAAAAAAAywAAAAAAAADMAAAAAAAAAM0AAAAAAAAAzgAAAAAAAADPAAAAAAAAANAAAAAAAAAA0QAAAAAAAADSAAAAAAAAANMAAAAAAAAA1AAAAAAAAADVAAAAAAAAANYAAAAAAAAA1wAAAAAAAADYAAAAAAAAANkAAAAAAAAA2gAAAAAAAADbAAAAAAAAANwAAAAAAAAA3QAAAAAAAADeAAAAAAAAAN8AAAAAAAAA4AAAAAAAAADhAAAAAAAAAOIAAAAAAAAA4wAAAAAAAADkAAAAAAAAAOUAAAAAAAAA5gAAAAAAAADnAAAAAAAAAOgAAAAAAAAA6QAAAAAAAADqAAAAAAAAAOsAAAAAAAAA7AAAAAAAAADtAAAAAAAAAO4AAAAAAAAA7wAAAAAAAADwAAAAAAAAAPEAAAAAAAAA8gAAAAAAAADzAAAAAAAAAPQAAAAAAAAA9QAAAAAAAAD2AAAAAAAAAPcAAAAAAAAA+AAAAAAAAAD5AAAAAAAAAPoAAAAAAAAA+wAAAAAAAAD8AAAAAAAAAP0AAAAAAAAA/gAAAAAAAAD/AAAAAAAAAAABAAAAAAAAAQEAAAAAAAACAQAAAAAAAAMBAAAAAAAABAEAAAAAAAAFAQAAAAAAAAYBAAAAAAAABwEAAAAAAAAIAQAAAAAAAAkBAAAAAAAACgEAAAAAAAALAQAAAAAAAAwBAAAAAAAADQEAAAAAAAAOAQAAAAAAAA8BAAAAAAAAEAEAAAAAAAARAQAAAAAAABIBAAAAAAAAEwEAAAAAAAAUAQAAAAAAABUBAAAAAAAAFgEAAAAAAAAXAQAAAAAAABgBAAAAAAAAGQEAAAAAAAAaAQAAAAAAABsBAAAAAAAAHAEAAAAAAAAdAQAAAAAAAB4BAAAAAAAAHwEAAAAAAAAgAQAAAAAAACEBAAAAAAAAIgEAAAAAAAAjAQAAAAAAACQBAAAAAAAAJQEAAAAAAAAmAQAAAAAAACcBAAAAAAAAKAEAAAAAAAApAQAAAAAAACoBAAAAAAAAKwEAAAAAAAA= + </DataArray> + <DataArray type="Int64" Name="offsets" format="binary"> +YAkAAAAAAAABAAAAAAAAAAIAAAAAAAAAAwAAAAAAAAAEAAAAAAAAAAUAAAAAAAAABgAAAAAAAAAHAAAAAAAAAAgAAAAAAAAACQAAAAAAAAAKAAAAAAAAAAsAAAAAAAAADAAAAAAAAAANAAAAAAAAAA4AAAAAAAAADwAAAAAAAAAQAAAAAAAAABEAAAAAAAAAEgAAAAAAAAATAAAAAAAAABQAAAAAAAAAFQAAAAAAAAAWAAAAAAAAABcAAAAAAAAAGAAAAAAAAAAZAAAAAAAAABoAAAAAAAAAGwAAAAAAAAAcAAAAAAAAAB0AAAAAAAAAHgAAAAAAAAAfAAAAAAAAACAAAAAAAAAAIQAAAAAAAAAiAAAAAAAAACMAAAAAAAAAJAAAAAAAAAAlAAAAAAAAACYAAAAAAAAAJwAAAAAAAAAoAAAAAAAAACkAAAAAAAAAKgAAAAAAAAArAAAAAAAAACwAAAAAAAAALQAAAAAAAAAuAAAAAAAAAC8AAAAAAAAAMAAAAAAAAAAxAAAAAAAAADIAAAAAAAAAMwAAAAAAAAA0AAAAAAAAADUAAAAAAAAANgAAAAAAAAA3AAAAAAAAADgAAAAAAAAAOQAAAAAAAAA6AAAAAAAAADsAAAAAAAAAPAAAAAAAAAA9AAAAAAAAAD4AAAAAAAAAPwAAAAAAAABAAAAAAAAAAEEAAAAAAAAAQgAAAAAAAABDAAAAAAAAAEQAAAAAAAAARQAAAAAAAABGAAAAAAAAAEcAAAAAAAAASAAAAAAAAABJAAAAAAAAAEoAAAAAAAAASwAAAAAAAABMAAAAAAAAAE0AAAAAAAAATgAAAAAAAABPAAAAAAAAAFAAAAAAAAAAUQAAAAAAAABSAAAAAAAAAFMAAAAAAAAAVAAAAAAAAABVAAAAAAAAAFYAAAAAAAAAVwAAAAAAAABYAAAAAAAAAFkAAAAAAAAAWgAAAAAAAABbAAAAAAAAAFwAAAAAAAAAXQAAAAAAAABeAAAAAAAAAF8AAAAAAAAAYAAAAAAAAABhAAAAAAAAAGIAAAAAAAAAYwAAAAAAAABkAAAAAAAAAGUAAAAAAAAAZgAAAAAAAABnAAAAAAAAAGgAAAAAAAAAaQAAAAAAAABqAAAAAAAAAGsAAAAAAAAAbAAAAAAAAABtAAAAAAAAAG4AAAAAAAAAbwAAAAAAAABwAAAAAAAAAHEAAAAAAAAAcgAAAAAAAABzAAAAAAAAAHQAAAAAAAAAdQAAAAAAAAB2AAAAAAAAAHcAAAAAAAAAeAAAAAAAAAB5AAAAAAAAAHoAAAAAAAAAewAAAAAAAAB8AAAAAAAAAH0AAAAAAAAAfgAAAAAAAAB/AAAAAAAAAIAAAAAAAAAAgQAAAAAAAACCAAAAAAAAAIMAAAAAAAAAhAAAAAAAAACFAAAAAAAAAIYAAAAAAAAAhwAAAAAAAACIAAAAAAAAAIkAAAAAAAAAigAAAAAAAACLAAAAAAAAAIwAAAAAAAAAjQAAAAAAAACOAAAAAAAAAI8AAAAAAAAAkAAAAAAAAACRAAAAAAAAAJIAAAAAAAAAkwAAAAAAAACUAAAAAAAAAJUAAAAAAAAAlgAAAAAAAACXAAAAAAAAAJgAAAAAAAAAmQAAAAAAAACaAAAAAAAAAJsAAAAAAAAAnAAAAAAAAACdAAAAAAAAAJ4AAAAAAAAAnwAAAAAAAACgAAAAAAAAAKEAAAAAAAAAogAAAAAAAACjAAAAAAAAAKQAAAAAAAAApQAAAAAAAACmAAAAAAAAAKcAAAAAAAAAqAAAAAAAAACpAAAAAAAAAKoAAAAAAAAAqwAAAAAAAACsAAAAAAAAAK0AAAAAAAAArgAAAAAAAACvAAAAAAAAALAAAAAAAAAAsQAAAAAAAACyAAAAAAAAALMAAAAAAAAAtAAAAAAAAAC1AAAAAAAAALYAAAAAAAAAtwAAAAAAAAC4AAAAAAAAALkAAAAAAAAAugAAAAAAAAC7AAAAAAAAALwAAAAAAAAAvQAAAAAAAAC+AAAAAAAAAL8AAAAAAAAAwAAAAAAAAADBAAAAAAAAAMIAAAAAAAAAwwAAAAAAAADEAAAAAAAAAMUAAAAAAAAAxgAAAAAAAADHAAAAAAAAAMgAAAAAAAAAyQAAAAAAAADKAAAAAAAAAMsAAAAAAAAAzAAAAAAAAADNAAAAAAAAAM4AAAAAAAAAzwAAAAAAAADQAAAAAAAAANEAAAAAAAAA0gAAAAAAAADTAAAAAAAAANQAAAAAAAAA1QAAAAAAAADWAAAAAAAAANcAAAAAAAAA2AAAAAAAAADZAAAAAAAAANoAAAAAAAAA2wAAAAAAAADcAAAAAAAAAN0AAAAAAAAA3gAAAAAAAADfAAAAAAAAAOAAAAAAAAAA4QAAAAAAAADiAAAAAAAAAOMAAAAAAAAA5AAAAAAAAADlAAAAAAAAAOYAAAAAAAAA5wAAAAAAAADoAAAAAAAAAOkAAAAAAAAA6gAAAAAAAADrAAAAAAAAAOwAAAAAAAAA7QAAAAAAAADuAAAAAAAAAO8AAAAAAAAA8AAAAAAAAADxAAAAAAAAAPIAAAAAAAAA8wAAAAAAAAD0AAAAAAAAAPUAAAAAAAAA9gAAAAAAAAD3AAAAAAAAAPgAAAAAAAAA+QAAAAAAAAD6AAAAAAAAAPsAAAAAAAAA/AAAAAAAAAD9AAAAAAAAAP4AAAAAAAAA/wAAAAAAAAAAAQAAAAAAAAEBAAAAAAAAAgEAAAAAAAADAQAAAAAAAAQBAAAAAAAABQEAAAAAAAAGAQAAAAAAAAcBAAAAAAAACAEAAAAAAAAJAQAAAAAAAAoBAAAAAAAACwEAAAAAAAAMAQAAAAAAAA0BAAAAAAAADgEAAAAAAAAPAQAAAAAAABABAAAAAAAAEQEAAAAAAAASAQAAAAAAABMBAAAAAAAAFAEAAAAAAAAVAQAAAAAAABYBAAAAAAAAFwEAAAAAAAAYAQAAAAAAABkBAAAAAAAAGgEAAAAAAAAbAQAAAAAAABwBAAAAAAAAHQEAAAAAAAAeAQAAAAAAAB8BAAAAAAAAIAEAAAAAAAAhAQAAAAAAACIBAAAAAAAAIwEAAAAAAAAkAQAAAAAAACUBAAAAAAAAJgEAAAAAAAAnAQAAAAAAACgBAAAAAAAAKQEAAAAAAAAqAQAAAAAAACsBAAAAAAAALAEAAAAAAAA= + </DataArray> + </Verts> + <PointData> + <DataArray type="Float32" Name="attr0" format="binary"> +sAQAAAAAAABMXFo/UdmYPmC+vz7L7Sc/foJdP3S0HT9hk6g9Bkt+P1OZbT7qY/I9BCScPMAacT83bRo//JK1Pr4ONj8t1M4+GvRrP9y82z2Jjns+dlWiPtMudT8WR1M+JlgnP54/5T77q64+/udNP4WJ7z4xKAk/y6FFP93bOj+4Z4Q+k2ynPrwT4T4A/cg+qDGNO4W7Mj+4DPU+5rsmPxLWKD9Wosk+ZGwIPyWoej/SBb08YEzpPpx3JDxOTPo8euxxP6GSDz/vmUs/x/lhPPXLST8fJQM//IDLPsEdcD9+SBg/3o9hPejoMT+JtzM9tOciP/rVez5fpMM+IOTNPrP9bz8y4hI/dxVPP6VP4j4/8nc/130zPyILPz8UfK0+2k+DPrWybj2p+A4+uA6uPr72CT84IwA/FprbPWyGJj9PYkg/ej49P4eKdT8X4i8/PaqPPCNuxj6Dnnc+D64xPhG7tj6HLg8/89ppP2wkND84GWs/6nIrP0AqoD0GNf4+grtEP7gK0D7Ibi4/JClyPY2uST+avw4/Vl0WP8e+Xz8QkFo+TAbEOuLVez+jgk8/iNYjP+Ovbz3nzaI99soNP7v0JT9+wGE/fHR4PzHbdj+pjGM/BmioPrVmBD6TWhs/UJYSPyXMyj6pS2Y/NeByP2qeET5KxXI/6M2xPWEQeD6PijI+fZH8PeSJwT7+ugo/kf/ZPJJ6bz510SM/6/A6PjypkD5o1UA+eGASP785VT+4z/0+bSU0PlJ2qD5O0+M+U00aP6A2kD6qyh0/wwgGPftKRj8b4+s+DrdBP3ZFaz7aHT0/vnW8PjW0kT337LM+twtiP8RQfj+MnlM/Voo3P5ddyDtDdzQ/jQR6P0IjpTwG9PQ+fD88P/uAeD/LDBM/3sCaPYdEUD6oxP0+7TZ5PxObQz2LdKY+BRgfP83sbD/LxSs9cu/1PbJDNT/WimE/OKZwPw5SDz/6jR0/55jEPVoyBDtYT2E+rnJxP6RTeD+IPSg/1KbYPt+vWz8nncw9jNIzP0OF0j4FXIQ+C+kJPqIqNz/ctUg/jVrYPQBZCj90Fws/TQe9PmtbmD5vZQA/BRgYP+uTRT7ebRg/iSoQP0NsVz8y6ts+IwEmPzp/Dz8NzuU8S19dP2OpojxosRo/koxnP+iB7z4Zv0Y/oLk6P95p5T4IREw/JjjoPi7nhTstb1U/xlWrPmGlvD7tHuM+YvTKPjeioT5xJVs/wZi2PZF+kj6DuD8/d1BdPy6mRD+vUUU+FTixPjwzcT+Kmso+15vLPhd+ID9Z6UM/iQJ5PzTDuD3b27U+qTBCPqx3QD83Kp4+ndtUP4QTBz9stLM+3+3jPjVLBD9g6Fw/Fk6DPYxwkj7KJ3o/bPFYPjRCKj8wiCE/vppEP68gxD3rZis/PuFhPuAMCz8BPuU9iIi1PgtpEz/c7bI+UoiCPvTxaD8BGnU/CE9pPlIvFz9UOh49eSsGP9CYJD9qCXU8Jv86P2elXj/ybKg+N9ICPtxmRT+NCwM/qNWxPAESEj9r0qc+CBeUPi6cOD83RdY+8qqZPgcI7DszhJ8+H0zxPonnxj3Ucnk/DVltPWRqcD/I7m8/j9EiPyotDj8= + </DataArray> + <DataArray type="Float32" Name="attr1" NumberOfComponents="3" format="binary"> +EA4AAAAAAAASkHk/3Bg7Pg0BtT6DK9k+l4HhPaE7FD/sz0I+bpN7PQoavz5thBw/udxNP2yvST8CTIQ+JcS0PRRaBD8x0G4/5+BLPxIAQz+KUk8+vglvP/nRbj40uiU/zOVvP1+ypz5LBsM+6a0+P6I1yj6hOxA/p5WXPoZGpj1yKkk/48x4P0Z77j6PzAs/9SYDP+1keT3AXtQ+4bybPgepez80/SI/ZCHQPmAgnz6gYSo/r4M9PyiZMD/tn1M/Fr42PjZzbj/uCzs/br+tPgfB+T6J8U8/aAiwPnjGZT3mdV0/u22ePoJ6Oj8XbQo//UHGPr/vST8fGXg/DVyXPrLBdT7y8Wc/OJEhP7Jbaj3b5xY/EulIPlcS+T77V+g9i+4WPN+1zT4zK2M9UQQzP9mbcz9/zKU+M4pwP/LpYT9jVkI/nXzVPm3NMT/fvo4+7y2HPnV7BD+arHM/yyliPgXjSj+VESk/nPAPPW7gQz/G8h4/psRqP39umT5RGSI/MQqSPnvFbD7LCfA++JYcP5tPWT8uhS8/vuXfPoxkAz8hV0k/JRFfPyDAQj9RpRA97bBIP193Mz7p8og+xTivPkiAFD+A9Gs+BGL8PhMqJD460Ws/BDONPflpTj5xYwA/XKhGPnNfFj+6gu8+3Y6cPoDk/T6iWhU/NWx/Pn8BJz8BlnI/nHtfPys3ID8Btpg9/S+QPhETID5F1jg/1wZKPpGkcz9O/iA/75OfPhVyYz96nvc+TUAbP+6Rfj13cTM/hipoP7NgTj//jAI/Fx4ePbKCkz5rNSE+wbM8PyE+ND/qiCI/hzdSP/ejyD6O6H47hdbePjHbXj8RvLo+kF0UPd4r5zzUFwY/NYNjPk0Dez6bXwE/dfKZPiJ0lj5qXyo+ATUGP52mfj0yahs/vu0jP1yaPT6wzk8/X6mOPplu1T7y2Ys+QVMqPTCfWT94Dyo/77dZP8IqRD+6dkw/Y5s6P4XHCjuq8d0+GkkjP8NOqD4XMbU9f5xiP4xt1D66upc+NGOkPv4ffT87Bm4+Ob+sPk7bIT/wzSc/AGJNP57NzT09YJo9G7fsPspKKD+ncQ0/qPtvP+s4Rz9axIQ+l1uyPho1ET/DKy8/a2wPPnmuHT4ACio/w2ykPjjI3z4Dfdc+WRoqP5Xpsz3olVU/+D08P2D7Pz/KkmU/t1/rPpT/LT/bZEo+vDMBPgvapz5L4DU/6q9WP1FHJj/Ftto+4/BuP7gnDT/2CRM/QEDZPh/4BD+rLrk+lEWLPr8GED3fAWo/SjNAP2dTSj9a63s/pxixPq0jUD8E91Y9OAtcPRR4xz7JKak9rY6yPgd8JT836dE+mTEWP/B8fDxPcTo+bxKRPlUioj6PQHs/j7/bOxWHcj/r6IQ+aP9UPoxypD6oaW4/2wmJPpdjej9Nsy4/7p0dPwMxZD59ha4+Kx2/PkTVWD87O98+305iP9/4ZD8Kqa0+YBV0P0WVTD+kWUk+f4RuP4sjrD4rvGo/Pe0UP3r1MT9G0As+wSzXPl36bz+kcWY/HNR9PzciMT+Rb7g+do7/PtgWJDygeSQ/s55aPSq58z3VBVA/4FlaP7sBGT/VdrY+Z3dtP/cGcT+CZfM9jbSRPqtB/z5MX+4+TOA6PimU1j6Xnbg8xTBePnB8eT43vD8/MAeRPhpH8z6y5Rs/9E8fP00/PT8TkR8/qsc4PaROED8o7SI/tK0LP6zdIj+I8gk/+uq8Pezp6j6ej0Y/nxB/PwUj6D2qxUs+WX/GPUPYVD9Lf+8+esIxP53pdT940fk+WLqvOhMnZz+pwkw/maINP5vajj0HSDY/NNkHP8rzIT773WA/3O7xPhLumTxvhnE+anALP4uT4T6bwnA/uVk0P3HyAT+C6MA9IXAUPvQfPj2el3c/Uk9NP9ivET8SBMU88vqkPvadHD/RxZU+xl0PP4jjsz2ua10+kvfTPo2QAT+Pg6M+OsOsPdyKtT4NQzA/EdcKP175Bj9nBQs7yDALP2aLdT9WUe8+UiuvPuIxVj9hE1o/oNZPP1jWcT+pFyE/fCU0P/5JdT/3Db4+42RCP/MSSD8h6o0+1oMdPyaz6j3/qWc/Xv0xP4a/vT5dOW093r45P/eE2D0LzgI9lB7rPhTPfj8+6Bk/8utJP0EhAj0fMyw/4U8sP4/WQz8cv6s+K0oVP1ajIT91438/UPl4P+76aT/+Bg8/wtw6P8dNfj1SNN8+Z74MP6VNJT92ubk+WlvOPmGgTj6rdRc+QY0XP6T4Ez+vkjw/7ge/PqV3KD6eThA/KSItP4O22j56/8A+/mdgP2ayvD5AmD8+qVHPPsEdiT08mWA+BziJPkzpaD8Qwyw/nyJCPwaWKT+1Xws/oTgTO0ffhT5omY8+NHCTPWGTUz8MT789qwNxPzAnYT8trV8/KkEhP6jRrT4xITU/+6IGP2a2TT9j9GI9HEBbPqw8GD8vJ/E9BVZ1PzAN3D019kM9aVLWPjK0XD8e9CE/YBQ5P+TIOz999Q4/9o2wPkFvuz7mOp0+F9K6Pa+n5j6y/5Q+Mu43PlbleD+y0m8/APPyPlNgZj+RjGc+wwniPpH49T0TezY/UBYKPt13TD9r5RY/adtWP6vSGj85H/496iwjP/cYdD/uJY4+Q/FnPkZ2Tz9A4XQ/9dOhPrcGDT8WQ7A+DNASPYOzAz/95g0/LBhSP6WcYz7F2Y49dx3bPvmRPj9P4GQ/FV2vPgdg9D4n/nA/bC1APxxgBT+NUEU8tSocP6zAiz3AnEA/1G31Pv0Saz4a0nY/6tTdPRmtmz54QSA/EnQfP/vpcT+rDjA+WQJrPmUBEz1zy2M/bd1aP16mET+NR8Y9L57dPoeyAD4BPQA/sUAVPxE0SD+6jaE8N8iWPlq5qz7GzV4/b1oHPv9Myj14yb0+505bPzNNND89AXE9C55WP49bfj+NeGo/a/S7Pu3xXz/tYl8/Yp4qP5xHxz3PzDw/rraaPYsx/z5wIh4+fR5HP5heKT9Qrx8+9TwUP8GncT/XR0o/obKAPrLELT/PBR0+smR8P3tUFz876Jo+5XsKPuB1mT6L+GM/PTx2P6jVTj+ZQDQ/BfAoP0jiYT08+rI+ajaRPnZMBTsgAAA/FaAjPViVoD6yaTE/1YWCPsMQ9z7jWd49Z7UHP2ObWj9nnOI+6ORRPjC7nD3MW1s+7gpJPxL5QD9wGO4+DdcfP0WVLD9P7K48gUEcP+nyeT9L7ks95434PJdoYT/zeuo+q+bTPTgh+D6SRNY+chT3Pp6idD+l2j4+E/6iPuk/ej9peD0/QHEzP9T4VTsqt0o/uKwgP5ZwTD1dsxs/qduCPovvTj8AQow8bUCZPjsVfT8OqjU/dG53P5xXej9I1V8/QXwEP/gVRD/yMks/NtFEP6O5vT56xCA++7oUPonPYj/aOXs/pCoZPsvVGD+bCiU/+tK6Pv0hKT9lSzs+mTkcPxBKrj4f8p8+G+nOPtBwlD0XRuM8+P/uPsIwHD4ueVQ/IKfgPt5VZz9yoOQ+h6SmPlq9Ij5CAwg/PG52P4p3az8uXzw+sAjJPtiojD2ZsWI/roauPjJZ0D5qpKM+DxQzP3tkLz2ei8s+/lCfPmuZcT/Lz2Y/e1JtPyUsvj6gJCk/E1RQP0TgXz4+8W09S44vP1AtXT3iXSo/A535Po034T4lCDs/amzKPjfXEj/5G2U/XsxGP9D5BT+4Uh0/sHMcPurpHz+XP3M+e0eePsVIBT9FcRE/pQYPP8t8Dz+DK888opk2P4NQJT/Eblg9dcozPL/fSj8xCDk+gO4qPuW6JD+xcFU/qB9TP9i0kT748X09CvaHPvzYaj/D38A+iZYlPpUIwD7K2As/W9NyP2EQJD/Mc2Q/0xMvP3kpTD7tdnc/s1cnPxYKPj+wnQE/cjFxP4wBQj+a3z0+kj1UP9+2vz6id7A+Gq2uPQRFGj/g39o+CGyHPo1Tcj+gZwU/i0s2P54fFz+cxsY+WcwfPy5LBz8pAv0+iHo0Op5FRD8dhbs+7qvnPsQD8j7SMX0/lwIzPvSWEz/ZI6E+FLylPqvQcj/V8y0/kbdRP5sI0D4H85U+R9yxPUcRYT5nlLI+kVefPo1q0j6Gtmk+Vl4nP5AfbD8gxF8/XxQ4P7skMz9aUgA/SLvbPVApoT6ASwo/8vfPPfDXED8Wq1k/qnwiPw9wDj+TvFs/U+M5PkkwZz/xG6w+uSGdPtfrsz6/f2Q8SHADP6dTTD5rdY8+G5LjPbLZQT+hfCM/FbJCP7MbjT7OVNY+rtWjPo2+ST9ArDQ/6YpyP6PQLz+MCmQ+31sQPW7iNz/vjhE+b84PP2KgQj9kHjg/yeeBPmZQ3T2xLzI/tj+zPUA3YD+Mezs/lKWZPivzGz0x4Ak/a+S6PqTGjj4Gckw/K5ptP9NYTz8X1a4+epcSPwmQHz9CVnA/uTy3PsFeWz5ls1M/OzUvPy/hZD1O+x098tBbPo1Agj6EmIg88h+2PQvMUz98KVU/Wi16PmKJiT7pFk8/BBl5P7scuD4SeGg7pMbFPq0tKj/MSDQ/lz+pPoT0Lz+xSDs/OYRvP0ktwT57x0s/dBQQP78aaj83RDE/P2dIP6/pZT/J0pU+GDzgPeTbFT+capQ+/GohPopXYz/Xg449EzpyP/63fT+flr49/+1zPntggz6bQK4+grU2P5sdjT10WJQ+hu0hPw6GHj7PXTA/vFFhPqPUkT7x148+uV4vP3vWLT+uzZk7lqAhP5eUeT6JN489F1ZBP05cNT9Ai5Y9fIT1PhbO4D4ziPA+Ai8mPx4vND9cYQg/ZYrePvzf5T4= + </DataArray> + <DataArray type="Float32" Name="domain" format="binary"> +sAQAAAAAAAAAAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA= + </DataArray> + </PointData> + </Piece> + </PolyData> +</VTKFile> \ No newline at end of file diff --git a/test_data/vtk_points_pp_bin_test.vtp b/test_data/vtk_points_pp_bin_test.vtp new file mode 100644 index 0000000000000000000000000000000000000000..1638c7d9a23415626f0f74fce79cf54e2f094eb7 --- /dev/null +++ b/test_data/vtk_points_pp_bin_test.vtp @@ -0,0 +1,30 @@ +<VTKFile type="PolyData" version="1.0" byte_order="LittleEndian" header_type="UInt64"> + <PolyData> + <Piece NumberOfPoints="100" NumberOfVerts="100"> + <Points> + <DataArray type="Float64" Name="Points" NumberOfComponents="3" format="binary"> +YAkAAAAAAAC6Ek/RonbIPzhDveBjXuE/puXjHy0N7j8qQQQga9/tP/OM0lOGueY/51U0hAzV5T+VhMWrtT3NP2opP9xKa+A/+NHHBgQX3D/YJlPPk2zmP0srCHta6ts/mVrIUbPS2z/A6C8foAvoP02PvmBZuOA/6ppNEosyyT82WnX95FLlP22G3kfJvNA/havMTz2qqT9fSBuV0FviP87Sju2Ylug/3L3R/xEhlz+M/K/6uQHoPyPrF2tuCtQ/uSTPaqNtyD+OgT/WOD/gP4gCnTO8ftE/my+evDLo0D89G3WxYXLlP05QxBHZ1+0/NnxJNOVByz9ifno2z8DiPyf3yK9shHs/4TabkY9k4j8e8pTN8IbVPxpqSwvzSso/8J9HHwgw3D8ijtwM77jhP76a0DChsuc/9c/eQgWYsD9gEg/Az3boPx/4g13wA94/ycxHb5sZ7D+XmZauNLPUPwaC0b/8Psc/RZjjcd0z7j/TwtVZlh7VPwrj09d6DqY/Xe6zf9EI5j9A9M4a4IW4P+K819eOIYQ/ZbqMtc2i6T8oSNP061vWP0OmyYveLMs/N9OdXmQW0T9R5dBrV43XP2D8yh7Qgdo/R/pGRdyC7D8QtUP5dyXeP1cwzZHUZ8k/FZa6TfW04j+dhBG0sT3XPznO4VjjGO8/76xbo4gp4j9ybk4px8jIP0SAzwfeP6g/q3+TgSpA1j+SpNchty20P+pB68cKX+o/rSwZk6lp0z9y2UYLR5PsP0E3Wp9f5MI/TkU621jd4j95zO6xw5noP0Da09/fEpY/PLWn6WEl7D8lhtNu7TzGPxxnXgByzMA/hPxRDr4Bxz/OuE0omSPZP5/qm4qwCuI/JlrWDO3S1D/rDEJlivnOP3wawv3B8r4/C2iAWPrL7z8MMIPc+WfuP9vj2XwSDtM/nULQsLHe1z+WbpjRtMjjPxaJ1dt0O5U/+3GpUwJH6z9yhF8Qxz3gP1Jh1zFXT+Q/7UlIjQnb2z9gGenwT3PrP/b4yyaFA+o/+UHejQPf0D9LBQZ5Wv3sP05zyRBZRts/H9DBjfAXzz9js/y5TqbhP5EXi283dOo/DYjNWvk72T/3+MiMhIO7P4UR2289d5I/WhbB19J0vz9AW8fTX1KcP8+XF6wYNNQ/+N5oF4SQ6z8NpUi+ea3rP7GX1EsntKU/YUUVRE9d5T/GBiTynPztP+IK9BKP+uU/gUJKjb/eyj/WjsIqlbjuPyA3Sc1vZMs/65SFqIo13T9hWmqZz9LqP//fkpwAkOY/XFzP9dFR2D9GahAl3crnPzgPddxjeOU/MAU16Wd95T/EZAgRns3bPzK0R+fmJew/6u3e8QqJoD8C5KL+/o3uP4Tap/29Euw/tj7B9aRgrz/9lMJNgbXOP3FM4aDHWe8/r8jTZqgb5j9wNJXWx2XVP0KAmgffv9I/+kxO/oLZyD9KD80tW3jZP6vp3lwqi7A/fTdXTkFkxD9yDlcMx3jkP8s1/Ewa5eE/MMp3/+ca5D8iHhc973DUPw5Nsxl5WeY/bj2MCEnh6T/fwj2gkB7hP606eYGpYuM/0MZIJJicyz+yUuTHptbtP5p0d++yReQ/reiitKmL7j8D9Qh7foXrP2hB1OxL38U/vU0GmSHZ7D9ayzouU5riP2xlM8BJTeY/lM7HL7YYjD+K/dy/OoHRP2MC2nfO/qI/l7JMn7Sm6T+PI4m8OG7rP7koRFWj690/WNY33dMU5D9s00/NSRboPwiogc/7K+8/G1dJpnJU2z/Cf9DXHsDXP3dGwb3EXM8/i/TCUrqFvj+XElFitHbnP3KvxfZGKO0/YH5C/c/Azj/tz/WfCRjlPy74RfzoA+0/mB2lwjNx7T8Wt/H6dCTnP5Yc69O0ceo/QEIYA+De4z97cLWUwkflP/dUG3+EVdI/HcV2jXGd5D8hvfyvb6HhP+zKivCJmuo/piFABC3vzz/2J900BWzBP/L8STCHAes/DUVguXnd7z9Hp4K8XKzuPzheSN7j0Ns/tQRsXqX96T9wOssfyGKaPzruWT/jCNM/kpPJ+jY2yz8YwcImdJ/uPxEewpv38K4/CwrPlfp62D+IjzY1PLjkP/Z6yRGFQts/BCjVK/5rtT8o/kD064DfP3KH8ztHPOY/HkslyXBa7T+R4nmatw7jP/Xny20FDLo/TInV9lk7xT//OfKYAOPmP2ydvOlJseE/uWn8tSPL4T/ndVFhDEXnP+NOz7eOWMg/LJkC+Wmz3j9rB4atSvzcP9HZzrIXk8g/4shMKY+b6T/jas+yjkrIPwUm20j9bOI/rEqfEKpa0D97n+1PQjDpP4VcCaq9Uds/ezIEZcLm3T+k2bQALpPlPwystxv6KeQ/6IJCEoy+zj/fDaVJEHntP/neU5uDENY/I748e+6g4T/cMMsHkmeqP1NpS4lWS8o/8nyUGofB5T98R0bBQdzcP6cdTagscdk/EzVfj3Zl0D+csp4ssqbgP85CRTaZXs0/pFPJNS5W6z/XEUeOFHfcP0pEBtTa3dw/IGif8u9L4D9uJN7xyO2gP0ge0DPc8Nc/usPsLSOe6T+Jc/6tO8bgPw+STZP4Ntk/P6scXGCq4T8TctBS9sbnPzOF13pmPeQ/NJyax+Wx4j8tJx62aezQPy5+u8roQOI/1fJdlpUG4T+2jf3gJDnhP6A80Oev4Zc/kVsGojfS3D/iJ38jD2zgP9XWLneVlOg/1gtD7BR67j/zac2oBkvpP2tjGXFKTtM/MIXTxWc9pj9t9tWLyQTVP0Ir+C9f6uM/v/NuTyCG6D93UFClxNfHP+zeO8yJEOI/SIlUFVy71T9b3l9q0hDQP6WULZKtNek/hY9Tuz045j8WydHldBunP8Aa2s+f8rI/EfaQvPeE5z/DCt5AnvqwP/9oUWuAS9c/AM/U4X+Y1T9U2V7PVZPAP0Ekj63fbeg/aFqNzMtS2T/0Jkb+hezcPw2de5d5MeI/5u2RKg0J5z9L3dRgWpG1P1NPlkpW2OQ/vCEmLCLv7D+G/YHvPAHfPy7mQwHpDO4/ODVIMWTlyz/lg1K7Db7WPzRegNjl0O8/nVamVLHU7D9H9c2uXAXJP1JK3cHWWqE//i/E6QDovT/Jhw56G7zoP8e1U58cJeY/ZbDYmc2n4z8ObJHr+EnnP0HK36/fGsA/gAwZzr954z8mbHk+7UnjP7rRfu4il+A/1zRYrZTlwz8= + </DataArray> + </Points> + <Verts> + <DataArray type="Int64" Name="connectivity" format="binary"> +IAMAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAgAAAAAAAAADAAAAAAAAAAQAAAAAAAAABQAAAAAAAAAGAAAAAAAAAAcAAAAAAAAACAAAAAAAAAAJAAAAAAAAAAoAAAAAAAAACwAAAAAAAAAMAAAAAAAAAA0AAAAAAAAADgAAAAAAAAAPAAAAAAAAABAAAAAAAAAAEQAAAAAAAAASAAAAAAAAABMAAAAAAAAAFAAAAAAAAAAVAAAAAAAAABYAAAAAAAAAFwAAAAAAAAAYAAAAAAAAABkAAAAAAAAAGgAAAAAAAAAbAAAAAAAAABwAAAAAAAAAHQAAAAAAAAAeAAAAAAAAAB8AAAAAAAAAIAAAAAAAAAAhAAAAAAAAACIAAAAAAAAAIwAAAAAAAAAkAAAAAAAAACUAAAAAAAAAJgAAAAAAAAAnAAAAAAAAACgAAAAAAAAAKQAAAAAAAAAqAAAAAAAAACsAAAAAAAAALAAAAAAAAAAtAAAAAAAAAC4AAAAAAAAALwAAAAAAAAAwAAAAAAAAADEAAAAAAAAAMgAAAAAAAAAzAAAAAAAAADQAAAAAAAAANQAAAAAAAAA2AAAAAAAAADcAAAAAAAAAOAAAAAAAAAA5AAAAAAAAADoAAAAAAAAAOwAAAAAAAAA8AAAAAAAAAD0AAAAAAAAAPgAAAAAAAAA/AAAAAAAAAEAAAAAAAAAAQQAAAAAAAABCAAAAAAAAAEMAAAAAAAAARAAAAAAAAABFAAAAAAAAAEYAAAAAAAAARwAAAAAAAABIAAAAAAAAAEkAAAAAAAAASgAAAAAAAABLAAAAAAAAAEwAAAAAAAAATQAAAAAAAABOAAAAAAAAAE8AAAAAAAAAUAAAAAAAAABRAAAAAAAAAFIAAAAAAAAAUwAAAAAAAABUAAAAAAAAAFUAAAAAAAAAVgAAAAAAAABXAAAAAAAAAFgAAAAAAAAAWQAAAAAAAABaAAAAAAAAAFsAAAAAAAAAXAAAAAAAAABdAAAAAAAAAF4AAAAAAAAAXwAAAAAAAABgAAAAAAAAAGEAAAAAAAAAYgAAAAAAAABjAAAAAAAAAA== + </DataArray> + <DataArray type="Int64" Name="offsets" format="binary"> +IAMAAAAAAAABAAAAAAAAAAIAAAAAAAAAAwAAAAAAAAAEAAAAAAAAAAUAAAAAAAAABgAAAAAAAAAHAAAAAAAAAAgAAAAAAAAACQAAAAAAAAAKAAAAAAAAAAsAAAAAAAAADAAAAAAAAAANAAAAAAAAAA4AAAAAAAAADwAAAAAAAAAQAAAAAAAAABEAAAAAAAAAEgAAAAAAAAATAAAAAAAAABQAAAAAAAAAFQAAAAAAAAAWAAAAAAAAABcAAAAAAAAAGAAAAAAAAAAZAAAAAAAAABoAAAAAAAAAGwAAAAAAAAAcAAAAAAAAAB0AAAAAAAAAHgAAAAAAAAAfAAAAAAAAACAAAAAAAAAAIQAAAAAAAAAiAAAAAAAAACMAAAAAAAAAJAAAAAAAAAAlAAAAAAAAACYAAAAAAAAAJwAAAAAAAAAoAAAAAAAAACkAAAAAAAAAKgAAAAAAAAArAAAAAAAAACwAAAAAAAAALQAAAAAAAAAuAAAAAAAAAC8AAAAAAAAAMAAAAAAAAAAxAAAAAAAAADIAAAAAAAAAMwAAAAAAAAA0AAAAAAAAADUAAAAAAAAANgAAAAAAAAA3AAAAAAAAADgAAAAAAAAAOQAAAAAAAAA6AAAAAAAAADsAAAAAAAAAPAAAAAAAAAA9AAAAAAAAAD4AAAAAAAAAPwAAAAAAAABAAAAAAAAAAEEAAAAAAAAAQgAAAAAAAABDAAAAAAAAAEQAAAAAAAAARQAAAAAAAABGAAAAAAAAAEcAAAAAAAAASAAAAAAAAABJAAAAAAAAAEoAAAAAAAAASwAAAAAAAABMAAAAAAAAAE0AAAAAAAAATgAAAAAAAABPAAAAAAAAAFAAAAAAAAAAUQAAAAAAAABSAAAAAAAAAFMAAAAAAAAAVAAAAAAAAABVAAAAAAAAAFYAAAAAAAAAVwAAAAAAAABYAAAAAAAAAFkAAAAAAAAAWgAAAAAAAABbAAAAAAAAAFwAAAAAAAAAXQAAAAAAAABeAAAAAAAAAF8AAAAAAAAAYAAAAAAAAABhAAAAAAAAAGIAAAAAAAAAYwAAAAAAAABkAAAAAAAAAA== + </DataArray> + </Verts> + <PointData> + <DataArray type="Float32" Name="attr0" format="binary"> +kAEAAAAAAACNDXM/VO2NPgS9wD71owA/3VMpP4UsTj9cZK8+japPP/aeXT/DPQc/12BbPnZ3Yz52Oy4/Y59gP54z/z57zXU/TNkHP51Cuz4b3QM/+NRNP/tOLj+/+gI+2KY3P3Irej/hWos+ohltPxqgFD/v2qQ+d5f+Pv5ZcD8YQFU/76tHP5W5OT9kF0w+feu5Pa1RUT8oaUQ+LyxoP0FUXT/rKTI/ArcuP5PTej8Kqvs+0XYIP6JFqj0x5X0+EP2rPiEG2jyF2Hs/r+0FP0FCPT9vOWo/0+/oPrHxUT8mdpI+lyAtPydzkD1Ay0Y/sU8XP4Ocfz+VVzw/B5wPP3okgjxJ3xs+45R/PwwaVz8i1E09ULiNPeCLED+sZ/4+OJ3dPlL5XT/UmQA/ieKhPc0DDD/kWK0+nVFhPgS9oz6TIyw/WOJtP77VBz/Ari0/X6eHPjAMET6c0X8/uo4bP50tID+9AoU+oMooP9MFBz9HnZk+FiXyPjQKOD9VAaA+SttDPeDbKD/iFJc+vmpgP/p1dD/4rfI9 + </DataArray> + <DataArray type="Float32" Name="attr1" NumberOfComponents="3" format="binary"> +sAQAAAAAAABZOyg/ypkuP+JMzjyIC4A+rHMbPwwUhz48Wz0/2NEfPXO36j12V0c+KbHNPvCO8z7M39M+ouuWPoF0Lj9jPIA8ZjcnP0Fz1D3E8hQ8KEMwP+avoT7FxSo/jSUHPUlfhj7Iqd4+zQE4Pqi/LD1nLUI/UXIvPhiRJT/76XY/Ou/kPo8XDT02SD8/uixdP+eXej9nKyA/8YvzPmOGHT+ncr49aFlzP/UWLD8Jrtg85gScPoCyLD9nLSs/FclKPmTYsj7Z6AI/L5E8P7eWqT4JD1w+h69rP+gGmz4xyx8/t+JFPkcuZz/imzs/svM7P15DRj8vHfo9FdUiPyKRej8AFSI/WdMwPqDelz5t9gw+TPDOPthdoT5S9dc+evo0P2IoUz/98EY/BBa9Pj6ldT+I6zo+clFoP1h0hz4dvhw/VmFsPzI2pT5H3XQ+qRxoPxAQUD+9uEw//8R6PqQ/+z2p5DE/5RpfP5CDPD7N/yE/INluP3Cecj/SvPQ++FMcP+flDj+94Ac/2Q00PiZtHj9c4RA+GHTjPmVPPz9Asio7GUTYPkm1wj2XlV8/YpdRO/76DT9eRSE9r0jyPlg1sj0Jj3w/LkgCP6e5VD2/thE/3+S6Pb2FmD5hBgE/Hb8NPSwdFT/xS2I/LrwwP5G8AD78oTU/Stb9O1fRsj7nl7U+QTaSPidFUj+kUyY/CM3CPkmIKD9FLHY+w+abPo9qVz/DvXY94PPZPnruEj8D06k99wcYPyFIlj6VDyo/SGRvP61iAT848xc/my1vPwJD5j5t+W4+L0guP2Y68T4nw/w9GYEKP6lpcT/lFFc/+UW4O+CwFj9TWmA9oKYkP1fnHD+8PFM/RYwtP8XAoj6u8qc97K0PPw3swT7oFVY937l0PzngWD+Ijzs/S0csP5fX8D5vEd89CiUsPoCuVT+ZKEE/UGLQPqfJmz7VOCI+TxJ6PqvovD5EpUk/U1tzP8u/dz5Owpg+JMnJPL2kiT7e42A/qHM+PgyYWj6BIog9/lUmPzz5Yj+35jw/+srDPkYbZT+CtUI8FmRAP37OEj/ruXM/imTOPinqXz8aoAY+gQaBPnczET9abws/eCRAPyNLhD7EovQ9IKLKPkMZSz8BGUw/mL5cP0RDrz3bSWY/CsgCP1R/+T6y9fI+b5CmPjk7sz5Y+GA/HkUyPQ9ytj49eiQ/U1klP0qKxz66bGc/4NLdPYCMWT/c0jI+/gz9Po3hLjzNlGU/RRYoPoGsfj8d+Yw+uwX5PrBNpD74nzc/F2TPPW9eyT5R6/8+TdkjPmHQNz9cY00/veBEP4kw/j7uZZs9bNOaPiJLUj/B3IA+yI1xP3LiZj7z3/Q+xZQBPV2vdD/Rf0M/F1VSP7IASj8j4WE/KGs6P55WDj+fIEM/DEt0PbUeCj9pFXI+BGBYP/eaQT154ms/AQpsPzK9bz+MWQs/5q1iPpI5Pz/69t4+f/U6Pj3XWD4DYXg/Ro5eP79KUz9wV2k/hkHrPpRpeD/oMe8+3BC5PsdaSD+ewic/+teAPjuEcD+6u0Y+mTQhP2SapT7MOAU/vHJ0PxBRKz/AuUQ/uCqbPvXUdz8P634/XdxHPxRlYTw= + </DataArray> + <DataArray type="Float32" Name="domain" format="binary"> +kAEAAAAAAAAAAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + </DataArray> + </PointData> + </Piece> + </PolyData> +</VTKFile> \ No newline at end of file diff --git a/test_data/vtk_points_pp_header_bin_test.vtp b/test_data/vtk_points_pp_header_bin_test.vtp new file mode 100644 index 0000000000000000000000000000000000000000..da6d2e69126c8f0918f245d41df7c00c946e4a2c --- /dev/null +++ b/test_data/vtk_points_pp_header_bin_test.vtp @@ -0,0 +1,35 @@ +<VTKFile type="PolyData" version="1.0" byte_order="LittleEndian" header_type="UInt64"> + <PolyData> + <FieldData> + <DataArray type="Float64" Name="TimeValue" NumberOfTuples="1" format="binary"> +CAAAAAAAAADLoUW2830UQA== + </DataArray> + </FieldData> + <Piece NumberOfPoints="100" NumberOfVerts="100"> + <Points> + <DataArray type="Float64" Name="Points" NumberOfComponents="3" format="binary"> +YAkAAAAAAAC6Ek/RonbIPzhDveBjXuE/puXjHy0N7j8qQQQga9/tP/OM0lOGueY/51U0hAzV5T+VhMWrtT3NP2opP9xKa+A/+NHHBgQX3D/YJlPPk2zmP0srCHta6ts/mVrIUbPS2z/A6C8foAvoP02PvmBZuOA/6ppNEosyyT82WnX95FLlP22G3kfJvNA/havMTz2qqT9fSBuV0FviP87Sju2Ylug/3L3R/xEhlz+M/K/6uQHoPyPrF2tuCtQ/uSTPaqNtyD+OgT/WOD/gP4gCnTO8ftE/my+evDLo0D89G3WxYXLlP05QxBHZ1+0/NnxJNOVByz9ifno2z8DiPyf3yK9shHs/4TabkY9k4j8e8pTN8IbVPxpqSwvzSso/8J9HHwgw3D8ijtwM77jhP76a0DChsuc/9c/eQgWYsD9gEg/Az3boPx/4g13wA94/ycxHb5sZ7D+XmZauNLPUPwaC0b/8Psc/RZjjcd0z7j/TwtVZlh7VPwrj09d6DqY/Xe6zf9EI5j9A9M4a4IW4P+K819eOIYQ/ZbqMtc2i6T8oSNP061vWP0OmyYveLMs/N9OdXmQW0T9R5dBrV43XP2D8yh7Qgdo/R/pGRdyC7D8QtUP5dyXeP1cwzZHUZ8k/FZa6TfW04j+dhBG0sT3XPznO4VjjGO8/76xbo4gp4j9ybk4px8jIP0SAzwfeP6g/q3+TgSpA1j+SpNchty20P+pB68cKX+o/rSwZk6lp0z9y2UYLR5PsP0E3Wp9f5MI/TkU621jd4j95zO6xw5noP0Da09/fEpY/PLWn6WEl7D8lhtNu7TzGPxxnXgByzMA/hPxRDr4Bxz/OuE0omSPZP5/qm4qwCuI/JlrWDO3S1D/rDEJlivnOP3wawv3B8r4/C2iAWPrL7z8MMIPc+WfuP9vj2XwSDtM/nULQsLHe1z+WbpjRtMjjPxaJ1dt0O5U/+3GpUwJH6z9yhF8Qxz3gP1Jh1zFXT+Q/7UlIjQnb2z9gGenwT3PrP/b4yyaFA+o/+UHejQPf0D9LBQZ5Wv3sP05zyRBZRts/H9DBjfAXzz9js/y5TqbhP5EXi283dOo/DYjNWvk72T/3+MiMhIO7P4UR2289d5I/WhbB19J0vz9AW8fTX1KcP8+XF6wYNNQ/+N5oF4SQ6z8NpUi+ea3rP7GX1EsntKU/YUUVRE9d5T/GBiTynPztP+IK9BKP+uU/gUJKjb/eyj/WjsIqlbjuPyA3Sc1vZMs/65SFqIo13T9hWmqZz9LqP//fkpwAkOY/XFzP9dFR2D9GahAl3crnPzgPddxjeOU/MAU16Wd95T/EZAgRns3bPzK0R+fmJew/6u3e8QqJoD8C5KL+/o3uP4Tap/29Euw/tj7B9aRgrz/9lMJNgbXOP3FM4aDHWe8/r8jTZqgb5j9wNJXWx2XVP0KAmgffv9I/+kxO/oLZyD9KD80tW3jZP6vp3lwqi7A/fTdXTkFkxD9yDlcMx3jkP8s1/Ewa5eE/MMp3/+ca5D8iHhc973DUPw5Nsxl5WeY/bj2MCEnh6T/fwj2gkB7hP606eYGpYuM/0MZIJJicyz+yUuTHptbtP5p0d++yReQ/reiitKmL7j8D9Qh7foXrP2hB1OxL38U/vU0GmSHZ7D9ayzouU5riP2xlM8BJTeY/lM7HL7YYjD+K/dy/OoHRP2MC2nfO/qI/l7JMn7Sm6T+PI4m8OG7rP7koRFWj690/WNY33dMU5D9s00/NSRboPwiogc/7K+8/G1dJpnJU2z/Cf9DXHsDXP3dGwb3EXM8/i/TCUrqFvj+XElFitHbnP3KvxfZGKO0/YH5C/c/Azj/tz/WfCRjlPy74RfzoA+0/mB2lwjNx7T8Wt/H6dCTnP5Yc69O0ceo/QEIYA+De4z97cLWUwkflP/dUG3+EVdI/HcV2jXGd5D8hvfyvb6HhP+zKivCJmuo/piFABC3vzz/2J900BWzBP/L8STCHAes/DUVguXnd7z9Hp4K8XKzuPzheSN7j0Ns/tQRsXqX96T9wOssfyGKaPzruWT/jCNM/kpPJ+jY2yz8YwcImdJ/uPxEewpv38K4/CwrPlfp62D+IjzY1PLjkP/Z6yRGFQts/BCjVK/5rtT8o/kD064DfP3KH8ztHPOY/HkslyXBa7T+R4nmatw7jP/Xny20FDLo/TInV9lk7xT//OfKYAOPmP2ydvOlJseE/uWn8tSPL4T/ndVFhDEXnP+NOz7eOWMg/LJkC+Wmz3j9rB4atSvzcP9HZzrIXk8g/4shMKY+b6T/jas+yjkrIPwUm20j9bOI/rEqfEKpa0D97n+1PQjDpP4VcCaq9Uds/ezIEZcLm3T+k2bQALpPlPwystxv6KeQ/6IJCEoy+zj/fDaVJEHntP/neU5uDENY/I748e+6g4T/cMMsHkmeqP1NpS4lWS8o/8nyUGofB5T98R0bBQdzcP6cdTagscdk/EzVfj3Zl0D+csp4ssqbgP85CRTaZXs0/pFPJNS5W6z/XEUeOFHfcP0pEBtTa3dw/IGif8u9L4D9uJN7xyO2gP0ge0DPc8Nc/usPsLSOe6T+Jc/6tO8bgPw+STZP4Ntk/P6scXGCq4T8TctBS9sbnPzOF13pmPeQ/NJyax+Wx4j8tJx62aezQPy5+u8roQOI/1fJdlpUG4T+2jf3gJDnhP6A80Oev4Zc/kVsGojfS3D/iJ38jD2zgP9XWLneVlOg/1gtD7BR67j/zac2oBkvpP2tjGXFKTtM/MIXTxWc9pj9t9tWLyQTVP0Ir+C9f6uM/v/NuTyCG6D93UFClxNfHP+zeO8yJEOI/SIlUFVy71T9b3l9q0hDQP6WULZKtNek/hY9Tuz045j8WydHldBunP8Aa2s+f8rI/EfaQvPeE5z/DCt5AnvqwP/9oUWuAS9c/AM/U4X+Y1T9U2V7PVZPAP0Ekj63fbeg/aFqNzMtS2T/0Jkb+hezcPw2de5d5MeI/5u2RKg0J5z9L3dRgWpG1P1NPlkpW2OQ/vCEmLCLv7D+G/YHvPAHfPy7mQwHpDO4/ODVIMWTlyz/lg1K7Db7WPzRegNjl0O8/nVamVLHU7D9H9c2uXAXJP1JK3cHWWqE//i/E6QDovT/Jhw56G7zoP8e1U58cJeY/ZbDYmc2n4z8ObJHr+EnnP0HK36/fGsA/gAwZzr954z8mbHk+7UnjP7rRfu4il+A/1zRYrZTlwz8= + </DataArray> + </Points> + <Verts> + <DataArray type="Int64" Name="connectivity" format="binary"> +IAMAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAgAAAAAAAAADAAAAAAAAAAQAAAAAAAAABQAAAAAAAAAGAAAAAAAAAAcAAAAAAAAACAAAAAAAAAAJAAAAAAAAAAoAAAAAAAAACwAAAAAAAAAMAAAAAAAAAA0AAAAAAAAADgAAAAAAAAAPAAAAAAAAABAAAAAAAAAAEQAAAAAAAAASAAAAAAAAABMAAAAAAAAAFAAAAAAAAAAVAAAAAAAAABYAAAAAAAAAFwAAAAAAAAAYAAAAAAAAABkAAAAAAAAAGgAAAAAAAAAbAAAAAAAAABwAAAAAAAAAHQAAAAAAAAAeAAAAAAAAAB8AAAAAAAAAIAAAAAAAAAAhAAAAAAAAACIAAAAAAAAAIwAAAAAAAAAkAAAAAAAAACUAAAAAAAAAJgAAAAAAAAAnAAAAAAAAACgAAAAAAAAAKQAAAAAAAAAqAAAAAAAAACsAAAAAAAAALAAAAAAAAAAtAAAAAAAAAC4AAAAAAAAALwAAAAAAAAAwAAAAAAAAADEAAAAAAAAAMgAAAAAAAAAzAAAAAAAAADQAAAAAAAAANQAAAAAAAAA2AAAAAAAAADcAAAAAAAAAOAAAAAAAAAA5AAAAAAAAADoAAAAAAAAAOwAAAAAAAAA8AAAAAAAAAD0AAAAAAAAAPgAAAAAAAAA/AAAAAAAAAEAAAAAAAAAAQQAAAAAAAABCAAAAAAAAAEMAAAAAAAAARAAAAAAAAABFAAAAAAAAAEYAAAAAAAAARwAAAAAAAABIAAAAAAAAAEkAAAAAAAAASgAAAAAAAABLAAAAAAAAAEwAAAAAAAAATQAAAAAAAABOAAAAAAAAAE8AAAAAAAAAUAAAAAAAAABRAAAAAAAAAFIAAAAAAAAAUwAAAAAAAABUAAAAAAAAAFUAAAAAAAAAVgAAAAAAAABXAAAAAAAAAFgAAAAAAAAAWQAAAAAAAABaAAAAAAAAAFsAAAAAAAAAXAAAAAAAAABdAAAAAAAAAF4AAAAAAAAAXwAAAAAAAABgAAAAAAAAAGEAAAAAAAAAYgAAAAAAAABjAAAAAAAAAA== + </DataArray> + <DataArray type="Int64" Name="offsets" format="binary"> +IAMAAAAAAAABAAAAAAAAAAIAAAAAAAAAAwAAAAAAAAAEAAAAAAAAAAUAAAAAAAAABgAAAAAAAAAHAAAAAAAAAAgAAAAAAAAACQAAAAAAAAAKAAAAAAAAAAsAAAAAAAAADAAAAAAAAAANAAAAAAAAAA4AAAAAAAAADwAAAAAAAAAQAAAAAAAAABEAAAAAAAAAEgAAAAAAAAATAAAAAAAAABQAAAAAAAAAFQAAAAAAAAAWAAAAAAAAABcAAAAAAAAAGAAAAAAAAAAZAAAAAAAAABoAAAAAAAAAGwAAAAAAAAAcAAAAAAAAAB0AAAAAAAAAHgAAAAAAAAAfAAAAAAAAACAAAAAAAAAAIQAAAAAAAAAiAAAAAAAAACMAAAAAAAAAJAAAAAAAAAAlAAAAAAAAACYAAAAAAAAAJwAAAAAAAAAoAAAAAAAAACkAAAAAAAAAKgAAAAAAAAArAAAAAAAAACwAAAAAAAAALQAAAAAAAAAuAAAAAAAAAC8AAAAAAAAAMAAAAAAAAAAxAAAAAAAAADIAAAAAAAAAMwAAAAAAAAA0AAAAAAAAADUAAAAAAAAANgAAAAAAAAA3AAAAAAAAADgAAAAAAAAAOQAAAAAAAAA6AAAAAAAAADsAAAAAAAAAPAAAAAAAAAA9AAAAAAAAAD4AAAAAAAAAPwAAAAAAAABAAAAAAAAAAEEAAAAAAAAAQgAAAAAAAABDAAAAAAAAAEQAAAAAAAAARQAAAAAAAABGAAAAAAAAAEcAAAAAAAAASAAAAAAAAABJAAAAAAAAAEoAAAAAAAAASwAAAAAAAABMAAAAAAAAAE0AAAAAAAAATgAAAAAAAABPAAAAAAAAAFAAAAAAAAAAUQAAAAAAAABSAAAAAAAAAFMAAAAAAAAAVAAAAAAAAABVAAAAAAAAAFYAAAAAAAAAVwAAAAAAAABYAAAAAAAAAFkAAAAAAAAAWgAAAAAAAABbAAAAAAAAAFwAAAAAAAAAXQAAAAAAAABeAAAAAAAAAF8AAAAAAAAAYAAAAAAAAABhAAAAAAAAAGIAAAAAAAAAYwAAAAAAAABkAAAAAAAAAA== + </DataArray> + </Verts> + <PointData> + <DataArray type="Float32" Name="attr0" format="binary"> +kAEAAAAAAACNDXM/VO2NPgS9wD71owA/3VMpP4UsTj9cZK8+japPP/aeXT/DPQc/12BbPnZ3Yz52Oy4/Y59gP54z/z57zXU/TNkHP51Cuz4b3QM/+NRNP/tOLj+/+gI+2KY3P3Irej/hWos+ohltPxqgFD/v2qQ+d5f+Pv5ZcD8YQFU/76tHP5W5OT9kF0w+feu5Pa1RUT8oaUQ+LyxoP0FUXT/rKTI/ArcuP5PTej8Kqvs+0XYIP6JFqj0x5X0+EP2rPiEG2jyF2Hs/r+0FP0FCPT9vOWo/0+/oPrHxUT8mdpI+lyAtPydzkD1Ay0Y/sU8XP4Ocfz+VVzw/B5wPP3okgjxJ3xs+45R/PwwaVz8i1E09ULiNPeCLED+sZ/4+OJ3dPlL5XT/UmQA/ieKhPc0DDD/kWK0+nVFhPgS9oz6TIyw/WOJtP77VBz/Ari0/X6eHPjAMET6c0X8/uo4bP50tID+9AoU+oMooP9MFBz9HnZk+FiXyPjQKOD9VAaA+SttDPeDbKD/iFJc+vmpgP/p1dD/4rfI9 + </DataArray> + <DataArray type="Float32" Name="attr1" NumberOfComponents="3" format="binary"> +sAQAAAAAAABZOyg/ypkuP+JMzjyIC4A+rHMbPwwUhz48Wz0/2NEfPXO36j12V0c+KbHNPvCO8z7M39M+ouuWPoF0Lj9jPIA8ZjcnP0Fz1D3E8hQ8KEMwP+avoT7FxSo/jSUHPUlfhj7Iqd4+zQE4Pqi/LD1nLUI/UXIvPhiRJT/76XY/Ou/kPo8XDT02SD8/uixdP+eXej9nKyA/8YvzPmOGHT+ncr49aFlzP/UWLD8Jrtg85gScPoCyLD9nLSs/FclKPmTYsj7Z6AI/L5E8P7eWqT4JD1w+h69rP+gGmz4xyx8/t+JFPkcuZz/imzs/svM7P15DRj8vHfo9FdUiPyKRej8AFSI/WdMwPqDelz5t9gw+TPDOPthdoT5S9dc+evo0P2IoUz/98EY/BBa9Pj6ldT+I6zo+clFoP1h0hz4dvhw/VmFsPzI2pT5H3XQ+qRxoPxAQUD+9uEw//8R6PqQ/+z2p5DE/5RpfP5CDPD7N/yE/INluP3Cecj/SvPQ++FMcP+flDj+94Ac/2Q00PiZtHj9c4RA+GHTjPmVPPz9Asio7GUTYPkm1wj2XlV8/YpdRO/76DT9eRSE9r0jyPlg1sj0Jj3w/LkgCP6e5VD2/thE/3+S6Pb2FmD5hBgE/Hb8NPSwdFT/xS2I/LrwwP5G8AD78oTU/Stb9O1fRsj7nl7U+QTaSPidFUj+kUyY/CM3CPkmIKD9FLHY+w+abPo9qVz/DvXY94PPZPnruEj8D06k99wcYPyFIlj6VDyo/SGRvP61iAT848xc/my1vPwJD5j5t+W4+L0guP2Y68T4nw/w9GYEKP6lpcT/lFFc/+UW4O+CwFj9TWmA9oKYkP1fnHD+8PFM/RYwtP8XAoj6u8qc97K0PPw3swT7oFVY937l0PzngWD+Ijzs/S0csP5fX8D5vEd89CiUsPoCuVT+ZKEE/UGLQPqfJmz7VOCI+TxJ6PqvovD5EpUk/U1tzP8u/dz5Owpg+JMnJPL2kiT7e42A/qHM+PgyYWj6BIog9/lUmPzz5Yj+35jw/+srDPkYbZT+CtUI8FmRAP37OEj/ruXM/imTOPinqXz8aoAY+gQaBPnczET9abws/eCRAPyNLhD7EovQ9IKLKPkMZSz8BGUw/mL5cP0RDrz3bSWY/CsgCP1R/+T6y9fI+b5CmPjk7sz5Y+GA/HkUyPQ9ytj49eiQ/U1klP0qKxz66bGc/4NLdPYCMWT/c0jI+/gz9Po3hLjzNlGU/RRYoPoGsfj8d+Yw+uwX5PrBNpD74nzc/F2TPPW9eyT5R6/8+TdkjPmHQNz9cY00/veBEP4kw/j7uZZs9bNOaPiJLUj/B3IA+yI1xP3LiZj7z3/Q+xZQBPV2vdD/Rf0M/F1VSP7IASj8j4WE/KGs6P55WDj+fIEM/DEt0PbUeCj9pFXI+BGBYP/eaQT154ms/AQpsPzK9bz+MWQs/5q1iPpI5Pz/69t4+f/U6Pj3XWD4DYXg/Ro5eP79KUz9wV2k/hkHrPpRpeD/oMe8+3BC5PsdaSD+ewic/+teAPjuEcD+6u0Y+mTQhP2SapT7MOAU/vHJ0PxBRKz/AuUQ/uCqbPvXUdz8P634/XdxHPxRlYTw= + </DataArray> + <DataArray type="Float32" Name="domain" format="binary"> +kAEAAAAAAAAAAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + </DataArray> + </PointData> + </Piece> + </PolyData> +</VTKFile> \ No newline at end of file diff --git a/test_data/vtk_points_pp_header_test.vtp b/test_data/vtk_points_pp_header_test.vtp new file mode 100644 index 0000000000000000000000000000000000000000..79f2228ac371b9f414e1922000ef7278d6c9a5dc --- /dev/null +++ b/test_data/vtk_points_pp_header_test.vtp @@ -0,0 +1,629 @@ +<VTKFile type="PolyData" version="1.0" byte_order="LittleEndian" header_type="UInt64"> + <PolyData> + <FieldData> + <DataArray type="Float64" Name="TimeValue" NumberOfTuples="1" format="ascii"> +5.123000 + </DataArray> + </FieldData> + <Piece NumberOfPoints="100" NumberOfVerts="100"> + <Points> + <DataArray type="Float64" Name="Points" NumberOfComponents="3" format="ascii"> +0.1911204835906995 0.542772234863242 0.9391084311347881 +0.9335227608990284 0.7101470601232037 0.6822569448583494 +0.2284457291343968 0.5130972196287023 0.4389047685829435 +0.7007540749848102 0.4361787988170149 0.434735135904171 +0.7514191254733973 0.5225035562075192 0.1968549575205636 +0.6663689566001441 0.2615225984428438 0.05012694930186171 +0.5737078582990413 0.7683834686091247 0.02258709072014918 +0.7502107521285253 0.3131366773447317 0.19084589686671 +0.5077175316364888 0.273360300449021 0.2641722528430763 +0.6702125993695983 0.9325986239441677 0.2129484658534879 +0.5860363067658449 0.006718086774126586 0.5747754901765029 +0.3363611228594737 0.2054122738980631 0.440431623980202 +0.5538249255373027 0.7405553773322351 0.06481964953019299 +0.7645033599042783 0.4689904130208351 0.8781258748480464 +0.3234378533328707 0.1816097199071153 0.9438311790843349 +0.3299919011397325 0.04307922253241799 0.6885764593311695 +0.09579277662756258 0.009829631769177675 0.8011234804051354 +0.349360455596186 0.2123068029934974 0.2669917034138964 +0.3680017998591057 0.4141731548988385 0.8909741738387503 +0.4710369047378018 0.1984811508103827 0.58458962613503 +0.3631405123215446 0.9717880950906369 0.5675700369442022 +0.1936272575083993 0.04736226888030662 0.3476663842575315 +0.07882256103734367 0.8241018204371902 0.303324121142121 +0.8929782123803263 0.1475944068992537 0.5895199090756849 +0.7687700724840304 0.02155637553820555 0.8795632899834014 +0.1737343588966251 0.1312391759682264 0.17974067401153 +0.3927977460470061 0.5638048846443161 0.3253738999714265 +0.2419903749870181 0.1208916897322556 0.9936496475741036 +0.9501923853763414 0.2977338999986025 0.3729671694464203 +0.6182502835904014 0.02073462096940045 0.8524181016942401 +0.5075412101542851 0.6346851323569729 0.43524397656543 +0.8578262048038532 0.812929702544152 0.2636116872245391 +0.9059269298306075 0.4261686958250736 0.2429180805371524 +0.5515512116013322 0.8266865900593406 0.3942855250116971 +0.1074755519593714 0.01803298945630296 0.1228763367408531 +0.02765798311323953 0.3156797104442121 0.861391111108758 +0.8649262157897809 0.04239008713402315 0.6676403360126352 +0.9370865563689328 0.6868358011418787 0.2099227371113735 +0.960032065883264 0.2140025856373819 0.456392921993326 +0.8382337566752761 0.7050784166412994 0.3799939060676871 +0.7435136531742692 0.6709460550123145 0.6715583376718879 +0.4344248930297676 0.8796267049016306 0.03229555323147422 +0.954833504997737 0.8772878603184187 0.06128421306550307 +0.2399140958488387 0.9797094480694694 0.6908761986108142 +0.3343371959243262 0.2929608892682191 0.1941379300811617 +0.397970957496217 0.06462349669792526 0.1593095428965476 +0.6397433510796431 0.5592166427247148 0.6282844533546434 +0.3193929764351841 0.6984220029793577 0.80875064534659 +0.5349810723983771 0.6057937172680191 0.2157163788956979 +0.9324525741709151 0.6335081746180038 0.9545486953786814 +0.8600456622149583 0.1708769709007456 0.9015052784692937 +0.5813384917185929 0.6969345811768739 0.01371900876345159 +0.273512542120408 0.03710026944191182 0.8015997992821039 +0.8572047884309643 0.4675072033575237 0.6275424309412285 +0.752720738410614 0.9741190960751291 0.4270292877093753 +0.3711011035502417 0.2450185705698009 0.1192280246786643 +0.7332403106925821 0.911166650750131 0.2402591692561939 +0.6591842769835218 0.9067273070538755 0.9200686265621014 +0.7232003117803483 0.8263801707297656 0.6209564266628789 +0.6650097755878187 0.2864695779110912 0.6442191851585083 +0.5509565770388783 0.8313646028603592 0.2494865675692043 +0.1361090191006153 0.8439365332741586 0.9957855816484497 +0.9585403138964715 0.434624640534341 0.8122126430681847 +0.02576744741491627 0.2974174612679438 0.212592003302373 +0.9569645649953911 0.06043218399377904 0.3825060332275433 +0.6474896468466662 0.4259350465489854 0.08367909021504266 +0.4922437558452395 0.6948581858562035 0.9172901085497391 +0.5955465333091344 0.1017459290559655 0.165873761677242 +0.7152102458219928 0.5528916897937228 0.5560473017133553 +0.7271787548776815 0.1902025601872231 0.4797005588283294 +0.4528986639562535 0.1919889090620033 0.8002391630782564 +0.1897753117653656 0.5758043692559914 0.2555337107016082 +0.7871409951303429 0.4268640671265945 0.467209433220695 +0.6742162717626354 0.6301241437298599 0.2401900376471737 +0.9210282743810544 0.3447579399939822 0.5508949667909672 +0.05157142968309511 0.2054241342910453 0.6798739928380242 +0.4509434115835729 0.3975326198164688 0.2561928176990744 +0.5203486320002244 0.2294494166367457 0.8542700815693149 +0.4447680844716876 0.4510409422446783 0.5092696894382733 +0.03306415512549497 0.3740759378419836 0.8005538842172577 +0.5241983793563217 0.3939801634317356 0.5520479010641351 +0.7430373780694616 0.6324951552634616 0.5842160128130502 +0.2644295004362103 0.5704235038392136 0.5320537506919104 +0.5382255930275537 0.02332186558129179 0.4503306467317368 +0.5131908124251334 0.768137676982145 0.9524025549402448 +0.7904084488794169 0.3016534904941667 0.04343723573561886 +0.3284171929916287 0.6223598420050183 0.7663728286203123 +0.1862722212978302 0.5645188321059016 0.3395605285933425 +0.2510267294705721 0.7878024916687038 0.6943653734892768 +0.04513135247624882 0.0740146524859524 0.7349814112600958 +0.06632412990260676 0.3639832542445589 0.3374328332313183 +0.1294963133384025 0.7634123220278825 0.3956784722881026 +0.4519362433571665 0.5685394247674666 0.7198549109884282 +0.08424916137743314 0.6514083344249947 0.9041910993847107 +0.4844505633299935 0.9390759491645377 0.2179379692683285 +0.3553499535865384 0.9942502239745807 0.9009634640994651 +0.1954761365449633 0.03389617077359176 0.1168213434904714 +0.7729623207017023 0.6920302497725793 0.6142337803662598 +0.7277798272074294 0.1258201226006168 0.6086119675968718 +0.602774259586458 0.5184492738831559 0.1554437490853277 + </DataArray> + </Points> + <Verts> + <DataArray type="Int64" Name="connectivity" format="ascii"> +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +36 +37 +38 +39 +40 +41 +42 +43 +44 +45 +46 +47 +48 +49 +50 +51 +52 +53 +54 +55 +56 +57 +58 +59 +60 +61 +62 +63 +64 +65 +66 +67 +68 +69 +70 +71 +72 +73 +74 +75 +76 +77 +78 +79 +80 +81 +82 +83 +84 +85 +86 +87 +88 +89 +90 +91 +92 +93 +94 +95 +96 +97 +98 +99 + </DataArray> + <DataArray type="Int64" Name="offsets" format="ascii"> +1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +36 +37 +38 +39 +40 +41 +42 +43 +44 +45 +46 +47 +48 +49 +50 +51 +52 +53 +54 +55 +56 +57 +58 +59 +60 +61 +62 +63 +64 +65 +66 +67 +68 +69 +70 +71 +72 +73 +74 +75 +76 +77 +78 +79 +80 +81 +82 +83 +84 +85 +86 +87 +88 +89 +90 +91 +92 +93 +94 +95 +96 +97 +98 +99 +100 + </DataArray> + </Verts> + <PointData> + <DataArray type="Float32" Name="attr0" format="ascii"> +0.9494255 +0.2772013 +0.3764421 +0.5025018 +0.6614359 +0.8053668 +0.3425626 +0.8111961 +0.8657068 +0.5282862 +0.2142366 +0.2221354 +0.6805948 +0.877432 +0.4984407 +0.9601666 +0.5306594 +0.3657426 +0.5150926 +0.8040309 +0.6808926 +0.1279096 +0.7173896 +0.9772254 +0.2721777 +0.9261724 +0.580568 +0.3219828 +0.4972493 +0.9388732 +0.8330092 +0.7799672 +0.725488 +0.199308 +0.09078119 +0.8176525 +0.1918074 +0.9069242 +0.8645669 +0.6959521 +0.68248 +0.9797909 +0.4915317 +0.533063 +0.08314063 +0.2479446 +0.3359151 +0.02661425 +0.9837726 +0.523158 +0.7392922 +0.9149389 +0.4549547 +0.8200942 +0.2860577 +0.6762785 +0.07053214 +0.7765388 +0.5910597 +0.9984819 +0.7357114 +0.5609745 +0.01588653 +0.152219 +0.9983656 +0.8402412 +0.05025113 +0.0691992 +0.5646343 +0.4968847 +0.4328401 +0.8670856 +0.5023472 +0.07904536 +0.546933 +0.3385688 +0.2200379 +0.3198014 +0.6724178 +0.929235 +0.5306052 +0.6784477 +0.2649488 +0.1416481 +0.9992921 +0.6076466 +0.625696 +0.2597865 +0.6593418 +0.5274326 +0.3000281 +0.4729392 +0.7189057 +0.3125102 +0.04781655 +0.659605 +0.2950812 +0.8766288 +0.9549252 +0.1184959 + </DataArray> + <DataArray type="Float32" Name="attr1" NumberOfComponents="3" format="ascii"> +0.6571555733680725 0.6820341348648071 0.02518314495682716 +0.2500879764556885 0.6072337627410889 0.2638248205184937 +0.739673376083374 0.03901848196983337 0.1146077141165733 +0.1946695744991302 0.4017422497272491 0.4756999015808105 +0.4138168096542358 0.2947664856910706 0.681465208530426 +0.01565379463136196 0.6531890630722046 0.1037354543805122 +0.009091082960367203 0.6885247230529785 0.3157951235771179 +0.6670802235603333 0.03299479559063911 0.2624457180500031 +0.4348890781402588 0.1796943694353104 0.04217496514320374 +0.7585052847862244 0.171334519982338 0.6467452049255371 +0.9645077586174011 0.4471376538276672 0.03444629535079002 +0.7471956014633179 0.8639637231826782 0.9788803458213806 +0.6256622672080994 0.4756770431995392 0.6153318285942078 +0.09299211949110031 0.9505829811096191 0.672225296497345 +0.02645017392933369 0.3047248721122742 0.6745986938476562 +0.6686615347862244 0.1980326920747757 0.3493071794509888 +0.5113654732704163 0.7365903258323669 0.3312279880046844 +0.2149011045694351 0.9206470847129822 0.3027870655059814 +0.6241942048072815 0.1932476609945297 0.9030498862266541 +0.7328473329544067 0.7341872453689575 0.7744654417037964 +0.1221259757876396 0.6360638737678528 0.9787770509719849 +0.6331329345703125 0.1726812273263931 0.2966203689575195 +0.1376587897539139 0.4041770696640015 0.315169095993042 +0.421793520450592 0.7069469690322876 0.824834942817688 +0.7771146893501282 0.3693085908889771 0.9595526456832886 +0.1825391054153442 0.9074927568435669 0.2645595073699951 +0.6122758984565735 0.9233602285385132 0.3226791024208069 +0.2391253560781479 0.906687319278717 0.8127450942993164 +0.7996938824653625 0.2448921054601669 0.1226799786090851 +0.694895327091217 0.8715041279792786 0.1840956211090088 +0.6328094601631165 0.9330005645751953 0.9477300643920898 +0.4780030846595764 0.6106562614440918 0.5581955313682556 +0.5307729840278625 0.1758340746164322 0.618852972984314 +0.1414846777915955 0.4442451000213623 0.7473052144050598 +0.002604618668556213 0.4223945438861847 0.09507233649492264 +0.8733763098716736 0.003198110032826662 0.5546110868453979 +0.03937279433012009 0.4732107818126678 0.08701580762863159 +0.9865575432777405 0.5089138746261597 0.051934864372015 +0.5691947340965271 0.09125684946775436 0.2978953421115875 +0.5040035843849182 0.03460608795285225 0.5824763774871826 +0.8839712738990784 0.6903713941574097 0.1257193237543106 +0.7095029354095459 0.007746492512524128 0.349253386259079 +0.3546745479106903 0.2855701744556427 0.8213676810264587 +0.6497137546539307 0.3804705142974854 0.6583295464515686 +0.2404032498598099 0.3044949471950531 0.8414697051048279 +0.06023956462740898 0.4256887435913086 0.5739513635635376 +0.08292200416326523 0.593871533870697 0.2935190498828888 +0.664300262928009 0.9351239204406738 0.5054119229316711 +0.5935549736022949 0.9342896342277527 0.4497299790382385 +0.2333733588457108 0.6807889342308044 0.471148669719696 +0.1234190985560417 0.5410323739051819 0.9430184960365295 +0.8401625752449036 0.005623575765639544 0.5886363983154297 +0.05477363988757133 0.6431674957275391 0.612904965877533 +0.8251454830169678 0.6779215931892395 0.3178769648075104 +0.08200584352016449 0.5612475872039795 0.378754049539566 +0.05226698517799377 0.9559611678123474 0.8471713662147522 +0.732658863067627 0.6729628443717957 0.4703948199748993 +0.1089199706912041 0.1681100428104401 0.8346939086914062 +0.7545257210731506 0.4070000648498535 0.30427286028862 +0.1584199219942093 0.2442104667425156 0.3689626157283783 +0.7876780033111572 0.9506122469902039 0.2419425696134567 +0.2983574271202087 0.0246320441365242 0.2688349783420563 +0.8784769773483276 0.1859880685806274 0.2134706377983093 +0.06647206097841263 0.6497496366500854 0.886615514755249 +0.7378954291343689 0.3824079632759094 0.8949474096298218 +0.01188409514725208 0.7515271902084351 0.5734633207321167 +0.9520556330680847 0.4031108021736145 0.8746667504310608 +0.131470113992691 0.2520027458667755 0.5671915411949158 +0.5446678400039673 0.750556468963623 0.2583857476711273 +0.1194510757923126 0.3957681655883789 0.7933542132377625 +0.7972565293312073 0.8622832298278809 0.08557751774787903 +0.8995644450187683 0.5108648538589478 0.4872995615005493 +0.4745307564735413 0.325320690870285 0.3500612080097198 +0.8787894248962402 0.04352294653654099 0.3563389480113983 +0.6424902081489563 0.6458942294120789 0.3897269368171692 +0.9040027856826782 0.1083123683929443 0.8498001098632812 +0.1746324896812439 0.4942397475242615 0.01067389268428087 +0.896801769733429 0.1641474515199661 0.994819700717926 +0.2753380835056305 0.4863718450069427 0.3209052085876465 +0.7172846794128418 0.101265124976635 0.3932985961437225 +0.4998421967029572 0.1600086241960526 0.7180233597755432 +0.8022973537445068 0.7690542340278625 0.4964640438556671 +0.07587800920009613 0.3023942708969116 0.8214589357376099 +0.2516842186450958 0.9435696601867676 0.2254731953144073 +0.478271096944809 0.03163601830601692 0.9558008313179016 +0.7636690735816956 0.8216108679771423 0.78907310962677 +0.8823415637016296 0.7281975746154785 0.5560091733932495 +0.7622165083885193 0.05964188277721405 0.5395310521125793 +0.2364097982645035 0.8452150821685791 0.04726692661643028 +0.9214244484901428 0.9220276474952698 0.9364806413650513 +0.5443351268768311 0.2213664948940277 0.7469722032546997 +0.4354780316352844 0.1825771182775497 0.2117585688829422 +0.9702302813529968 0.8693584203720093 0.8253592848777771 +0.9114904403686523 0.4594842791557312 0.9703609943389893 +0.4671776294708252 0.3614567518234253 0.7826351523399353 +0.6553133726119995 0.2516477704048157 0.9395176768302917 +0.1940754950046539 0.6297088265419006 0.3234435319900513 +0.5203979015350342 0.9548757076263428 0.6692056655883789 +0.7684593200683594 0.3030602931976318 0.96809321641922 +0.9957742094993591 0.7807062268257141 0.01375700905919075 + </DataArray> + <DataArray type="Float32" Name="domain" format="ascii"> +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +0.0 +0.0 +0.0 +0.0 +0.0 +0.0 +0.0 +0.0 +0.0 +0.0 +0.0 +0.0 +0.0 +0.0 +0.0 +0.0 +0.0 +0.0 +0.0 +0.0 +0.0 +0.0 +0.0 +0.0 +0.0 + </DataArray> + </PointData> + </Piece> + </PolyData> +</VTKFile> \ No newline at end of file diff --git a/test_data/vtk_points_pp_test.vtp b/test_data/vtk_points_pp_test.vtp new file mode 100644 index 0000000000000000000000000000000000000000..cef332caf4341d6a98ddea79f5e38b216e28153d --- /dev/null +++ b/test_data/vtk_points_pp_test.vtp @@ -0,0 +1,624 @@ +<VTKFile type="PolyData" version="1.0" byte_order="LittleEndian" header_type="UInt64"> + <PolyData> + <Piece NumberOfPoints="100" NumberOfVerts="100"> + <Points> + <DataArray type="Float64" Name="Points" NumberOfComponents="3" format="ascii"> +0.1911204835906995 0.542772234863242 0.9391084311347881 +0.9335227608990284 0.7101470601232037 0.6822569448583494 +0.2284457291343968 0.5130972196287023 0.4389047685829435 +0.7007540749848102 0.4361787988170149 0.434735135904171 +0.7514191254733973 0.5225035562075192 0.1968549575205636 +0.6663689566001441 0.2615225984428438 0.05012694930186171 +0.5737078582990413 0.7683834686091247 0.02258709072014918 +0.7502107521285253 0.3131366773447317 0.19084589686671 +0.5077175316364888 0.273360300449021 0.2641722528430763 +0.6702125993695983 0.9325986239441677 0.2129484658534879 +0.5860363067658449 0.006718086774126586 0.5747754901765029 +0.3363611228594737 0.2054122738980631 0.440431623980202 +0.5538249255373027 0.7405553773322351 0.06481964953019299 +0.7645033599042783 0.4689904130208351 0.8781258748480464 +0.3234378533328707 0.1816097199071153 0.9438311790843349 +0.3299919011397325 0.04307922253241799 0.6885764593311695 +0.09579277662756258 0.009829631769177675 0.8011234804051354 +0.349360455596186 0.2123068029934974 0.2669917034138964 +0.3680017998591057 0.4141731548988385 0.8909741738387503 +0.4710369047378018 0.1984811508103827 0.58458962613503 +0.3631405123215446 0.9717880950906369 0.5675700369442022 +0.1936272575083993 0.04736226888030662 0.3476663842575315 +0.07882256103734367 0.8241018204371902 0.303324121142121 +0.8929782123803263 0.1475944068992537 0.5895199090756849 +0.7687700724840304 0.02155637553820555 0.8795632899834014 +0.1737343588966251 0.1312391759682264 0.17974067401153 +0.3927977460470061 0.5638048846443161 0.3253738999714265 +0.2419903749870181 0.1208916897322556 0.9936496475741036 +0.9501923853763414 0.2977338999986025 0.3729671694464203 +0.6182502835904014 0.02073462096940045 0.8524181016942401 +0.5075412101542851 0.6346851323569729 0.43524397656543 +0.8578262048038532 0.812929702544152 0.2636116872245391 +0.9059269298306075 0.4261686958250736 0.2429180805371524 +0.5515512116013322 0.8266865900593406 0.3942855250116971 +0.1074755519593714 0.01803298945630296 0.1228763367408531 +0.02765798311323953 0.3156797104442121 0.861391111108758 +0.8649262157897809 0.04239008713402315 0.6676403360126352 +0.9370865563689328 0.6868358011418787 0.2099227371113735 +0.960032065883264 0.2140025856373819 0.456392921993326 +0.8382337566752761 0.7050784166412994 0.3799939060676871 +0.7435136531742692 0.6709460550123145 0.6715583376718879 +0.4344248930297676 0.8796267049016306 0.03229555323147422 +0.954833504997737 0.8772878603184187 0.06128421306550307 +0.2399140958488387 0.9797094480694694 0.6908761986108142 +0.3343371959243262 0.2929608892682191 0.1941379300811617 +0.397970957496217 0.06462349669792526 0.1593095428965476 +0.6397433510796431 0.5592166427247148 0.6282844533546434 +0.3193929764351841 0.6984220029793577 0.80875064534659 +0.5349810723983771 0.6057937172680191 0.2157163788956979 +0.9324525741709151 0.6335081746180038 0.9545486953786814 +0.8600456622149583 0.1708769709007456 0.9015052784692937 +0.5813384917185929 0.6969345811768739 0.01371900876345159 +0.273512542120408 0.03710026944191182 0.8015997992821039 +0.8572047884309643 0.4675072033575237 0.6275424309412285 +0.752720738410614 0.9741190960751291 0.4270292877093753 +0.3711011035502417 0.2450185705698009 0.1192280246786643 +0.7332403106925821 0.911166650750131 0.2402591692561939 +0.6591842769835218 0.9067273070538755 0.9200686265621014 +0.7232003117803483 0.8263801707297656 0.6209564266628789 +0.6650097755878187 0.2864695779110912 0.6442191851585083 +0.5509565770388783 0.8313646028603592 0.2494865675692043 +0.1361090191006153 0.8439365332741586 0.9957855816484497 +0.9585403138964715 0.434624640534341 0.8122126430681847 +0.02576744741491627 0.2974174612679438 0.212592003302373 +0.9569645649953911 0.06043218399377904 0.3825060332275433 +0.6474896468466662 0.4259350465489854 0.08367909021504266 +0.4922437558452395 0.6948581858562035 0.9172901085497391 +0.5955465333091344 0.1017459290559655 0.165873761677242 +0.7152102458219928 0.5528916897937228 0.5560473017133553 +0.7271787548776815 0.1902025601872231 0.4797005588283294 +0.4528986639562535 0.1919889090620033 0.8002391630782564 +0.1897753117653656 0.5758043692559914 0.2555337107016082 +0.7871409951303429 0.4268640671265945 0.467209433220695 +0.6742162717626354 0.6301241437298599 0.2401900376471737 +0.9210282743810544 0.3447579399939822 0.5508949667909672 +0.05157142968309511 0.2054241342910453 0.6798739928380242 +0.4509434115835729 0.3975326198164688 0.2561928176990744 +0.5203486320002244 0.2294494166367457 0.8542700815693149 +0.4447680844716876 0.4510409422446783 0.5092696894382733 +0.03306415512549497 0.3740759378419836 0.8005538842172577 +0.5241983793563217 0.3939801634317356 0.5520479010641351 +0.7430373780694616 0.6324951552634616 0.5842160128130502 +0.2644295004362103 0.5704235038392136 0.5320537506919104 +0.5382255930275537 0.02332186558129179 0.4503306467317368 +0.5131908124251334 0.768137676982145 0.9524025549402448 +0.7904084488794169 0.3016534904941667 0.04343723573561886 +0.3284171929916287 0.6223598420050183 0.7663728286203123 +0.1862722212978302 0.5645188321059016 0.3395605285933425 +0.2510267294705721 0.7878024916687038 0.6943653734892768 +0.04513135247624882 0.0740146524859524 0.7349814112600958 +0.06632412990260676 0.3639832542445589 0.3374328332313183 +0.1294963133384025 0.7634123220278825 0.3956784722881026 +0.4519362433571665 0.5685394247674666 0.7198549109884282 +0.08424916137743314 0.6514083344249947 0.9041910993847107 +0.4844505633299935 0.9390759491645377 0.2179379692683285 +0.3553499535865384 0.9942502239745807 0.9009634640994651 +0.1954761365449633 0.03389617077359176 0.1168213434904714 +0.7729623207017023 0.6920302497725793 0.6142337803662598 +0.7277798272074294 0.1258201226006168 0.6086119675968718 +0.602774259586458 0.5184492738831559 0.1554437490853277 + </DataArray> + </Points> + <Verts> + <DataArray type="Int64" Name="connectivity" format="ascii"> +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +36 +37 +38 +39 +40 +41 +42 +43 +44 +45 +46 +47 +48 +49 +50 +51 +52 +53 +54 +55 +56 +57 +58 +59 +60 +61 +62 +63 +64 +65 +66 +67 +68 +69 +70 +71 +72 +73 +74 +75 +76 +77 +78 +79 +80 +81 +82 +83 +84 +85 +86 +87 +88 +89 +90 +91 +92 +93 +94 +95 +96 +97 +98 +99 + </DataArray> + <DataArray type="Int64" Name="offsets" format="ascii"> +1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +36 +37 +38 +39 +40 +41 +42 +43 +44 +45 +46 +47 +48 +49 +50 +51 +52 +53 +54 +55 +56 +57 +58 +59 +60 +61 +62 +63 +64 +65 +66 +67 +68 +69 +70 +71 +72 +73 +74 +75 +76 +77 +78 +79 +80 +81 +82 +83 +84 +85 +86 +87 +88 +89 +90 +91 +92 +93 +94 +95 +96 +97 +98 +99 +100 + </DataArray> + </Verts> + <PointData> + <DataArray type="Float32" Name="attr0" format="ascii"> +0.9494255 +0.2772013 +0.3764421 +0.5025018 +0.6614359 +0.8053668 +0.3425626 +0.8111961 +0.8657068 +0.5282862 +0.2142366 +0.2221354 +0.6805948 +0.877432 +0.4984407 +0.9601666 +0.5306594 +0.3657426 +0.5150926 +0.8040309 +0.6808926 +0.1279096 +0.7173896 +0.9772254 +0.2721777 +0.9261724 +0.580568 +0.3219828 +0.4972493 +0.9388732 +0.8330092 +0.7799672 +0.725488 +0.199308 +0.09078119 +0.8176525 +0.1918074 +0.9069242 +0.8645669 +0.6959521 +0.68248 +0.9797909 +0.4915317 +0.533063 +0.08314063 +0.2479446 +0.3359151 +0.02661425 +0.9837726 +0.523158 +0.7392922 +0.9149389 +0.4549547 +0.8200942 +0.2860577 +0.6762785 +0.07053214 +0.7765388 +0.5910597 +0.9984819 +0.7357114 +0.5609745 +0.01588653 +0.152219 +0.9983656 +0.8402412 +0.05025113 +0.0691992 +0.5646343 +0.4968847 +0.4328401 +0.8670856 +0.5023472 +0.07904536 +0.546933 +0.3385688 +0.2200379 +0.3198014 +0.6724178 +0.929235 +0.5306052 +0.6784477 +0.2649488 +0.1416481 +0.9992921 +0.6076466 +0.625696 +0.2597865 +0.6593418 +0.5274326 +0.3000281 +0.4729392 +0.7189057 +0.3125102 +0.04781655 +0.659605 +0.2950812 +0.8766288 +0.9549252 +0.1184959 + </DataArray> + <DataArray type="Float32" Name="attr1" NumberOfComponents="3" format="ascii"> +0.6571555733680725 0.6820341348648071 0.02518314495682716 +0.2500879764556885 0.6072337627410889 0.2638248205184937 +0.739673376083374 0.03901848196983337 0.1146077141165733 +0.1946695744991302 0.4017422497272491 0.4756999015808105 +0.4138168096542358 0.2947664856910706 0.681465208530426 +0.01565379463136196 0.6531890630722046 0.1037354543805122 +0.009091082960367203 0.6885247230529785 0.3157951235771179 +0.6670802235603333 0.03299479559063911 0.2624457180500031 +0.4348890781402588 0.1796943694353104 0.04217496514320374 +0.7585052847862244 0.171334519982338 0.6467452049255371 +0.9645077586174011 0.4471376538276672 0.03444629535079002 +0.7471956014633179 0.8639637231826782 0.9788803458213806 +0.6256622672080994 0.4756770431995392 0.6153318285942078 +0.09299211949110031 0.9505829811096191 0.672225296497345 +0.02645017392933369 0.3047248721122742 0.6745986938476562 +0.6686615347862244 0.1980326920747757 0.3493071794509888 +0.5113654732704163 0.7365903258323669 0.3312279880046844 +0.2149011045694351 0.9206470847129822 0.3027870655059814 +0.6241942048072815 0.1932476609945297 0.9030498862266541 +0.7328473329544067 0.7341872453689575 0.7744654417037964 +0.1221259757876396 0.6360638737678528 0.9787770509719849 +0.6331329345703125 0.1726812273263931 0.2966203689575195 +0.1376587897539139 0.4041770696640015 0.315169095993042 +0.421793520450592 0.7069469690322876 0.824834942817688 +0.7771146893501282 0.3693085908889771 0.9595526456832886 +0.1825391054153442 0.9074927568435669 0.2645595073699951 +0.6122758984565735 0.9233602285385132 0.3226791024208069 +0.2391253560781479 0.906687319278717 0.8127450942993164 +0.7996938824653625 0.2448921054601669 0.1226799786090851 +0.694895327091217 0.8715041279792786 0.1840956211090088 +0.6328094601631165 0.9330005645751953 0.9477300643920898 +0.4780030846595764 0.6106562614440918 0.5581955313682556 +0.5307729840278625 0.1758340746164322 0.618852972984314 +0.1414846777915955 0.4442451000213623 0.7473052144050598 +0.002604618668556213 0.4223945438861847 0.09507233649492264 +0.8733763098716736 0.003198110032826662 0.5546110868453979 +0.03937279433012009 0.4732107818126678 0.08701580762863159 +0.9865575432777405 0.5089138746261597 0.051934864372015 +0.5691947340965271 0.09125684946775436 0.2978953421115875 +0.5040035843849182 0.03460608795285225 0.5824763774871826 +0.8839712738990784 0.6903713941574097 0.1257193237543106 +0.7095029354095459 0.007746492512524128 0.349253386259079 +0.3546745479106903 0.2855701744556427 0.8213676810264587 +0.6497137546539307 0.3804705142974854 0.6583295464515686 +0.2404032498598099 0.3044949471950531 0.8414697051048279 +0.06023956462740898 0.4256887435913086 0.5739513635635376 +0.08292200416326523 0.593871533870697 0.2935190498828888 +0.664300262928009 0.9351239204406738 0.5054119229316711 +0.5935549736022949 0.9342896342277527 0.4497299790382385 +0.2333733588457108 0.6807889342308044 0.471148669719696 +0.1234190985560417 0.5410323739051819 0.9430184960365295 +0.8401625752449036 0.005623575765639544 0.5886363983154297 +0.05477363988757133 0.6431674957275391 0.612904965877533 +0.8251454830169678 0.6779215931892395 0.3178769648075104 +0.08200584352016449 0.5612475872039795 0.378754049539566 +0.05226698517799377 0.9559611678123474 0.8471713662147522 +0.732658863067627 0.6729628443717957 0.4703948199748993 +0.1089199706912041 0.1681100428104401 0.8346939086914062 +0.7545257210731506 0.4070000648498535 0.30427286028862 +0.1584199219942093 0.2442104667425156 0.3689626157283783 +0.7876780033111572 0.9506122469902039 0.2419425696134567 +0.2983574271202087 0.0246320441365242 0.2688349783420563 +0.8784769773483276 0.1859880685806274 0.2134706377983093 +0.06647206097841263 0.6497496366500854 0.886615514755249 +0.7378954291343689 0.3824079632759094 0.8949474096298218 +0.01188409514725208 0.7515271902084351 0.5734633207321167 +0.9520556330680847 0.4031108021736145 0.8746667504310608 +0.131470113992691 0.2520027458667755 0.5671915411949158 +0.5446678400039673 0.750556468963623 0.2583857476711273 +0.1194510757923126 0.3957681655883789 0.7933542132377625 +0.7972565293312073 0.8622832298278809 0.08557751774787903 +0.8995644450187683 0.5108648538589478 0.4872995615005493 +0.4745307564735413 0.325320690870285 0.3500612080097198 +0.8787894248962402 0.04352294653654099 0.3563389480113983 +0.6424902081489563 0.6458942294120789 0.3897269368171692 +0.9040027856826782 0.1083123683929443 0.8498001098632812 +0.1746324896812439 0.4942397475242615 0.01067389268428087 +0.896801769733429 0.1641474515199661 0.994819700717926 +0.2753380835056305 0.4863718450069427 0.3209052085876465 +0.7172846794128418 0.101265124976635 0.3932985961437225 +0.4998421967029572 0.1600086241960526 0.7180233597755432 +0.8022973537445068 0.7690542340278625 0.4964640438556671 +0.07587800920009613 0.3023942708969116 0.8214589357376099 +0.2516842186450958 0.9435696601867676 0.2254731953144073 +0.478271096944809 0.03163601830601692 0.9558008313179016 +0.7636690735816956 0.8216108679771423 0.78907310962677 +0.8823415637016296 0.7281975746154785 0.5560091733932495 +0.7622165083885193 0.05964188277721405 0.5395310521125793 +0.2364097982645035 0.8452150821685791 0.04726692661643028 +0.9214244484901428 0.9220276474952698 0.9364806413650513 +0.5443351268768311 0.2213664948940277 0.7469722032546997 +0.4354780316352844 0.1825771182775497 0.2117585688829422 +0.9702302813529968 0.8693584203720093 0.8253592848777771 +0.9114904403686523 0.4594842791557312 0.9703609943389893 +0.4671776294708252 0.3614567518234253 0.7826351523399353 +0.6553133726119995 0.2516477704048157 0.9395176768302917 +0.1940754950046539 0.6297088265419006 0.3234435319900513 +0.5203979015350342 0.9548757076263428 0.6692056655883789 +0.7684593200683594 0.3030602931976318 0.96809321641922 +0.9957742094993591 0.7807062268257141 0.01375700905919075 + </DataArray> + <DataArray type="Float32" Name="domain" format="ascii"> +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +0.0 +0.0 +0.0 +0.0 +0.0 +0.0 +0.0 +0.0 +0.0 +0.0 +0.0 +0.0 +0.0 +0.0 +0.0 +0.0 +0.0 +0.0 +0.0 +0.0 +0.0 +0.0 +0.0 +0.0 +0.0 + </DataArray> + </PointData> + </Piece> + </PolyData> +</VTKFile> \ No newline at end of file diff --git a/test_data/vtk_points_test.vtp b/test_data/vtk_points_test.vtp new file mode 100644 index 0000000000000000000000000000000000000000..9cea49ec937c8dc8c070253b64176a8cb773d7b5 --- /dev/null +++ b/test_data/vtk_points_test.vtp @@ -0,0 +1,1824 @@ +<VTKFile type="PolyData" version="1.0" byte_order="LittleEndian" header_type="UInt64"> + <PolyData> + <Piece NumberOfPoints="300" NumberOfVerts="300"> + <Points> + <DataArray type="Float64" Name="Points" NumberOfComponents="3" format="ascii"> +0.1911204835906995 0.542772234863242 0.9391084311347881 +0.9335227608990284 0.7101470601232037 0.6822569448583494 +0.2284457291343968 0.5130972196287023 0.4389047685829435 +0.7007540749848102 0.4361787988170149 0.434735135904171 +0.7514191254733973 0.5225035562075192 0.1968549575205636 +0.6663689566001441 0.2615225984428438 0.05012694930186171 +0.5737078582990413 0.7683834686091247 0.02258709072014918 +0.7502107521285253 0.3131366773447317 0.19084589686671 +0.5077175316364888 0.273360300449021 0.2641722528430763 +0.6702125993695983 0.9325986239441677 0.2129484658534879 +0.5860363067658449 0.006718086774126586 0.5747754901765029 +0.3363611228594737 0.2054122738980631 0.440431623980202 +0.5538249255373027 0.7405553773322351 0.06481964953019299 +0.7645033599042783 0.4689904130208351 0.8781258748480464 +0.3234378533328707 0.1816097199071153 0.9438311790843349 +0.3299919011397325 0.04307922253241799 0.6885764593311695 +0.09579277662756258 0.009829631769177675 0.8011234804051354 +0.349360455596186 0.2123068029934974 0.2669917034138964 +0.3680017998591057 0.4141731548988385 0.8909741738387503 +0.4710369047378018 0.1984811508103827 0.58458962613503 +0.3631405123215446 0.9717880950906369 0.5675700369442022 +0.1936272575083993 0.04736226888030662 0.3476663842575315 +0.07882256103734367 0.8241018204371902 0.303324121142121 +0.8929782123803263 0.1475944068992537 0.5895199090756849 +0.7687700724840304 0.02155637553820555 0.8795632899834014 +0.1737343588966251 0.1312391759682264 0.17974067401153 +0.3927977460470061 0.5638048846443161 0.3253738999714265 +0.2419903749870181 0.1208916897322556 0.9936496475741036 +0.9501923853763414 0.2977338999986025 0.3729671694464203 +0.6182502835904014 0.02073462096940045 0.8524181016942401 +0.5075412101542851 0.6346851323569729 0.43524397656543 +0.8578262048038532 0.812929702544152 0.2636116872245391 +0.9059269298306075 0.4261686958250736 0.2429180805371524 +0.5515512116013322 0.8266865900593406 0.3942855250116971 +0.1074755519593714 0.01803298945630296 0.1228763367408531 +0.02765798311323953 0.3156797104442121 0.861391111108758 +0.8649262157897809 0.04239008713402315 0.6676403360126352 +0.9370865563689328 0.6868358011418787 0.2099227371113735 +0.960032065883264 0.2140025856373819 0.456392921993326 +0.8382337566752761 0.7050784166412994 0.3799939060676871 +0.7435136531742692 0.6709460550123145 0.6715583376718879 +0.4344248930297676 0.8796267049016306 0.03229555323147422 +0.954833504997737 0.8772878603184187 0.06128421306550307 +0.2399140958488387 0.9797094480694694 0.6908761986108142 +0.3343371959243262 0.2929608892682191 0.1941379300811617 +0.397970957496217 0.06462349669792526 0.1593095428965476 +0.6397433510796431 0.5592166427247148 0.6282844533546434 +0.3193929764351841 0.6984220029793577 0.80875064534659 +0.5349810723983771 0.6057937172680191 0.2157163788956979 +0.9324525741709151 0.6335081746180038 0.9545486953786814 +0.8600456622149583 0.1708769709007456 0.9015052784692937 +0.5813384917185929 0.6969345811768739 0.01371900876345159 +0.273512542120408 0.03710026944191182 0.8015997992821039 +0.8572047884309643 0.4675072033575237 0.6275424309412285 +0.752720738410614 0.9741190960751291 0.4270292877093753 +0.3711011035502417 0.2450185705698009 0.1192280246786643 +0.7332403106925821 0.911166650750131 0.2402591692561939 +0.6591842769835218 0.9067273070538755 0.9200686265621014 +0.7232003117803483 0.8263801707297656 0.6209564266628789 +0.6650097755878187 0.2864695779110912 0.6442191851585083 +0.5509565770388783 0.8313646028603592 0.2494865675692043 +0.1361090191006153 0.8439365332741586 0.9957855816484497 +0.9585403138964715 0.434624640534341 0.8122126430681847 +0.02576744741491627 0.2974174612679438 0.212592003302373 +0.9569645649953911 0.06043218399377904 0.3825060332275433 +0.6474896468466662 0.4259350465489854 0.08367909021504266 +0.4922437558452395 0.6948581858562035 0.9172901085497391 +0.5955465333091344 0.1017459290559655 0.165873761677242 +0.7152102458219928 0.5528916897937228 0.5560473017133553 +0.7271787548776815 0.1902025601872231 0.4797005588283294 +0.4528986639562535 0.1919889090620033 0.8002391630782564 +0.1897753117653656 0.5758043692559914 0.2555337107016082 +0.7871409951303429 0.4268640671265945 0.467209433220695 +0.6742162717626354 0.6301241437298599 0.2401900376471737 +0.9210282743810544 0.3447579399939822 0.5508949667909672 +0.05157142968309511 0.2054241342910453 0.6798739928380242 +0.4509434115835729 0.3975326198164688 0.2561928176990744 +0.5203486320002244 0.2294494166367457 0.8542700815693149 +0.4447680844716876 0.4510409422446783 0.5092696894382733 +0.03306415512549497 0.3740759378419836 0.8005538842172577 +0.5241983793563217 0.3939801634317356 0.5520479010641351 +0.7430373780694616 0.6324951552634616 0.5842160128130502 +0.2644295004362103 0.5704235038392136 0.5320537506919104 +0.5382255930275537 0.02332186558129179 0.4503306467317368 +0.5131908124251334 0.768137676982145 0.9524025549402448 +0.7904084488794169 0.3016534904941667 0.04343723573561886 +0.3284171929916287 0.6223598420050183 0.7663728286203123 +0.1862722212978302 0.5645188321059016 0.3395605285933425 +0.2510267294705721 0.7878024916687038 0.6943653734892768 +0.04513135247624882 0.0740146524859524 0.7349814112600958 +0.06632412990260676 0.3639832542445589 0.3374328332313183 +0.1294963133384025 0.7634123220278825 0.3956784722881026 +0.4519362433571665 0.5685394247674666 0.7198549109884282 +0.08424916137743314 0.6514083344249947 0.9041910993847107 +0.4844505633299935 0.9390759491645377 0.2179379692683285 +0.3553499535865384 0.9942502239745807 0.9009634640994651 +0.1954761365449633 0.03389617077359176 0.1168213434904714 +0.7729623207017023 0.6920302497725793 0.6142337803662598 +0.7277798272074294 0.1258201226006168 0.6086119675968718 +0.602774259586458 0.5184492738831559 0.1554437490853277 +0.3690326368114759 0.2995158552427237 0.01173780403950354 +0.4754382528013372 0.4212222005374626 0.07132113547002844 +0.4882393567877638 0.4627898478820967 0.1639581482559637 +0.3861974857811828 0.4841292072161431 0.08662804677773824 +0.1207579080384421 0.0618460481931241 0.4870695527703177 +0.4626104944792527 0.3892627668617001 0.4838946256861582 +0.2285945552966583 0.2321470882826731 0.1359395770654364 +0.4994245634882596 0.3085501831683562 0.2300809555546935 +0.08730965150179823 0.0420806014248726 0.378270145329521 +0.1880562181174493 0.03182471262671765 0.3872162637360319 +0.3459972590925185 0.3120088731814135 0.09651703918514912 +0.3984266595689456 0.2012818320881194 0.2427781960029257 +0.3540473950076627 0.1153638606819492 0.03624035544402881 +0.2289308777642758 0.3604461522258604 0.4173461971025233 +0.1436100460618688 0.1613187365414022 0.339277801877224 +0.282976276924379 0.2581896133449909 0.2858817183711185 +0.4329195544436018 0.326510919105955 0.1626255844428085 +0.2633821385617451 0.388375480245624 0.2820678718704414 +0.1351509435869982 0.3776376151351083 0.2650918317888436 +0.3693582065778979 0.0239842254556789 0.1589361181673891 +0.3210144576984391 0.2482234364150914 0.1733676174546743 +0.2269975995984871 0.4750053363502932 0.4957297145176075 +0.01994202855511474 0.4332056244913463 0.3933828151117159 +0.4340130283106058 0.1415028122060454 0.05113960090040248 +0.2273659379094067 0.152197551493441 0.05633106592282137 +0.03819034619341122 0.3457329801303647 0.3465300213561719 +0.1972457850597586 0.3860690590757555 0.292313082938868 +0.1307978880913938 0.3374807558313567 0.04279071358368233 +0.1370507254558379 0.472957261617781 0.4410086939153221 +0.2267780939690871 0.1905821484091775 0.3559220797121888 +0.4870729900491084 0.487445315002722 0.3122889619263406 +0.02884312007630099 0.01810909899971024 0.04388979471107489 +0.4700075974827597 0.1055388939075456 0.3777184398482933 +0.2411892095156064 0.2902793105271276 0.3577521928317136 +0.4126884381227715 0.1774270190263973 0.4964710087531847 +0.2560557679943481 0.231897337021354 0.01138175161956728 +0.1478821548410309 0.2347061665567075 0.3149793501640766 +0.3574673308257632 0.1853180108893113 0.4954605953556203 +0.2728031885238349 0.3906367668459952 0.4007786808531831 +0.09227176111085723 0.1250442931777591 0.2796222451005028 +0.3880389811759633 0.4592617192728157 0.4416006150694561 +0.3990293939602425 0.140673521025724 0.4120369055718012 +0.2319823510563083 0.2114714541419077 0.4680933848870483 +0.4574211819761334 0.09083749058617396 0.1420901880403561 +0.1524956477095859 0.03570982311586392 0.2015751063816365 +0.002651345332781158 0.3997292069719502 0.4571868790280135 +0.4646997611435597 0.1327741355016948 0.07835921268986575 +0.1709721897863913 0.1401478957197871 0.1756503492707152 +0.3855656202018421 0.1078314244012202 0.386324640416389 +0.3476090871972921 0.1484312344582606 0.1705768249600302 +0.1641015565655653 0.2975839100323692 0.3357977961023348 +0.17606404392232 0.1005593335253376 0.3271957628535127 +0.1728385922392651 0.02875830057134931 0.3603236701524241 +0.04855954481821528 0.3599533127341637 0.4289799502915796 +0.4342146788564442 0.161936851841427 0.1057877460933347 +0.4910567813827392 0.1680187522815453 0.2951836469372811 +0.3937180466513531 0.3431543111367364 0.04934587944329442 +0.1654090469631324 0.175406956497856 0.2103492084609581 +0.2407764070710277 0.4068076096443424 0.3041335155469675 +0.05211969287967324 0.236227916676445 0.3320007833736014 +0.3324463468359568 0.312938627990457 0.4904742770639834 +0.3845836979408824 0.1366164077135658 0.03984963112052082 +0.04197918353975789 0.2770509808198311 0.488044396746883 +0.1523170854652686 0.4175909462302965 0.05842132712322225 +0.07795069188440652 0.4516420173683939 0.3680135554782983 +0.2515045703614575 0.3249977862811658 0.187822885723867 +0.05000504918861899 0.2136188878381537 0.4557390817414321 +0.2839739784672978 0.04546152006580424 0.4104097800280853 +0.1772040361877512 0.4776894643541009 0.2553472655101925 +0.3900439539504964 0.2085702023661834 0.4443156983729845 +0.1992451683854474 0.2073659170617508 0.1395777920775219 +0.02577117002766059 0.4440253885956363 0.3933766681498956 +0.1301630138744772 0.1280659532043776 0.03414304250192687 +0.2206772749914428 0.493485808375531 0.3225875296291953 +0.01052725582359021 0.4071305599496092 0.456489311435032 +0.09818411171520869 0.304480952651016 0.1455824064809911 +0.3031697905142001 0.3180265315724413 0.340674796332291 +0.3406710187715147 0.4957590112482388 0.2535063973611656 +0.05033666009533375 0.4037302687513967 0.4417382244990495 +0.1310477848718652 0.4892544070075944 0.1449805389181801 +0.3750279684900176 0.4254996265864467 0.3294554336092177 +0.4628920345739964 0.3298941481253625 0.1558321692720837 +0.01770011358070182 0.1768119854727704 0.30381980337956 +0.2380588100114563 0.2970005066380834 0.2010848445579946 +0.2855877906384003 0.07099396289745627 0.3982364353033545 +0.2808536914964888 0.2716763289544376 0.1704501024584984 +0.1589199089636468 0.03634979935067249 0.3569811639110645 +0.2772249606078374 0.09990549210929056 0.3355092214953577 +0.1662470178370145 0.07899748215964181 0.0572782276164376 +0.2770472005815026 0.3518858076530109 0.02658539089533249 +0.1875440074654557 0.4680926721924484 0.1861845667305474 +0.1871238121822831 0.3694272457531527 0.2263375684961967 +0.1262693642050636 0.2681416978509437 0.4864295707147431 +0.02836166646873501 0.476249909621547 0.4910517461872418 +0.4634665968066702 0.04706900867304345 0.3628219523873078 +0.1606046176000477 0.08687542619329158 0.06225241065851766 +0.133423695162207 0.4737714714259973 0.125623517494824 +0.3489826195412397 0.3286024371261697 0.3661714309751189 +0.003918584434353474 0.4967085589902901 0.1743685300814135 +0.2885250617803423 0.016649206626858 0.3392371711836955 +0.1185511618300568 0.2846263764497701 0.04004476988220365 +0.2293192447492298 0.05170273298784032 0.1566124762144813 +0.2894644335892683 0.04305508255816293 0.2300187619263219 +0.1286969889520216 0.2373467056605282 0.02733017882456529 +0.08333089415294541 0.1403397213014123 0.06220433920984885 +0.1689568324624762 0.1460420853709606 0.1677541596266655 +0.2112925272149534 0.004161828731111331 0.1548767818115294 +0.08111194168165702 0.08472529806442312 0.271467431298705 +0.2215855312665992 0.06591763861201813 0.04017204698632841 +0.180772743522761 0.1375455529021353 0.07452570662157344 +0.2666632916700731 0.1919282873897216 0.1687625991791661 +0.1040259806420533 0.07513766622862887 0.1833285201185716 +0.1697418355523879 0.1412024603964749 0.2474525777169258 +0.05261870904238024 0.1595209343081709 0.1656246999671568 +0.2135241268605347 0.05248268500320489 0.03639449792150664 +0.2249578095157827 0.1203983787119396 0.04116209517644621 +0.01861678263236918 0.2480160669432878 0.1217340906515093 +0.07358509433754482 0.1772848450218864 0.2448509257776426 +0.08833275945469142 0.2333877706046273 0.02892322203660233 +0.1275829888286148 0.00424041067983936 0.02076071392709356 +0.1340851374044618 0.1630418841200686 0.1382774975671072 +0.2694811684920074 0.00919095449652944 0.2041277690771372 +0.1252594957941866 0.01573821950436653 0.04683406583646588 +0.1904051649661711 0.02636175713205628 0.05313663298583746 +0.2192986664505216 0.1878777182950276 0.2964064838614284 +0.2287153124209887 0.09029909652178217 0.07548724698112941 +0.114361283409241 0.1758779379651519 0.06081281532029956 +0.02516896243897781 0.1224165250908506 0.02831871498920083 +0.2884957315919475 0.1084095842631489 0.2869446470695806 +0.1836106709048102 0.2162378614692773 0.1827418946741419 +0.159681262863017 0.1951844339514224 0.1281057929256438 +0.2957200920462049 0.05362063229381078 0.1433730235121339 +0.1478917872077358 0.222326973326352 0.2544648378135335 +0.1725896850123118 0.298237337452249 0.1551467522256324 +0.2721337934387225 0.2574442506034652 0.04984037664260697 +0.0357416149993699 0.0960289964703708 0.1283427539382396 +0.06898090109742204 0.04302602347776944 0.06901845740200092 +0.2191866322564023 0.1584504230607066 0.01337847166537379 +0.1891430821785968 0.05383451003402727 0.0788225858338072 +0.04321119892727062 0.1555524718921853 0.03965175885723356 +0.2172593906907088 0.2316739756000815 0.2499621075811041 +0.1640370700675822 0.2023892226617834 0.2529098502579565 +0.04850967868766296 0.1524042653141523 0.2059567100573532 +0.2046580508096804 0.004322132629192372 0.04429704242185827 +0.1688886373681535 0.2248516032589359 0.2215415322819997 +0.1377147908612551 0.1665120848610475 0.02685107818019992 +0.228218722167323 0.04242046785428166 0.1074816262081817 +0.02260656295222856 0.1861980120017202 0.2403949150860333 +0.1204429892960736 0.264824664003763 0.09092132563659859 +0.05655570712100914 0.1988679843727183 0.08920777356754626 +0.2563957191508283 0.1685504154914289 0.2653974148140301 +0.2668063793485954 0.1186243698612673 0.03592685065887549 +0.2579220390608897 0.09674563193845299 0.2008815343953289 +0.2551676314067246 0.01239063846301723 0.0651889668008364 +0.02597879740596805 0.03162233113235685 0.1767535912679724 +0.0498856490478452 0.05316770358329281 0.1067840573346316 +0.138537688255991 0.1737555026897436 0.01839525808189285 +0.1239685358135176 0.01572409823270324 0.2635389137251587 +0.2938420681078722 0.1333094834893432 0.258649204574223 +0.157129843180473 0.1509163303296471 0.2692777334157015 +0.255548305737065 0.2303155626727661 0.1735298334976985 +0.1768351781988353 0.07060731078004123 0.0005771291672358619 +0.1756279029298444 0.09793896740398418 0.2378819708535997 +0.2740279449270908 0.2097668221174894 0.006667118679421433 +0.2484909958445974 0.1463812662072567 0.279761862461566 +0.07803478381688017 0.1515174400519964 0.2598968852963778 +0.04469580322285378 0.2344188619011925 0.132030158009366 +0.2586628349457575 0.2996810422513256 0.1095363527491985 +0.2626937757187086 0.05257222251846817 0.09280888699329974 +0.1470855013480943 0.001922932289576655 0.2040676025189145 +0.1401336077181 0.08192646827924695 0.0376032890576854 +0.2820185765242118 0.1875745709112032 0.2644915908507576 +0.2809323204304406 0.2912768442690015 0.1528078526943885 +0.165250080863363 0.2021074608657009 0.1993722448361235 +0.1882134371957679 0.2949212917848856 0.2383584796738073 +0.1811573225626921 0.207082024911846 0.1549223213200819 +0.1301169881922579 0.006154670353906848 0.08076072673743556 +0.2158232428758297 0.07021174320475583 0.07466628196431963 +0.2321663813282892 0.2072172320647085 0.2349311055685714 +0.1439464608002703 0.2927377327379129 0.1544796044218915 +0.1781653001074841 0.008384524398304278 0.005119718073345852 +0.04491016292250242 0.1593709222695926 0.09792453718933995 +0.2315868572417708 0.2609747091257131 0.1558167658719156 +0.2002830334006422 0.1456689676057226 0.07763117471354493 +0.05333915590153115 0.1217801066014077 0.02714059798645759 +0.1834620044410871 0.2652489124260615 0.1603177173247944 +0.044482403670213 0.1575956141540801 0.1421779928765362 +0.1662439922028016 0.1959395480128287 0.04153907993271058 +0.1199715689197315 0.2241556342113038 0.1422308717890499 +0.1167217518823586 0.1185378373281388 0.208966556559798 +0.146647844534997 0.156781864279517 0.1575377787428266 +0.08708556886432432 0.07539593152450587 0.2332214504558493 +0.01505569768368467 0.04266832708722524 0.1218800741378776 +0.2452370229897848 0.2208322028299644 0.09502735149812543 +0.02336527117371314 0.0683381011857008 0.0620538466088223 +0.2706230518544917 0.1443967507479727 0.2491175094390672 +0.02113605974189189 0.1015577913021865 0.08251933942897276 +0.2580949420770188 0.2883309685912305 0.1493632569213569 +0.1757886855742947 0.2805548562293151 0.166442327240276 +0.1311776288407027 0.07064723336573353 0.2828661728730117 + </DataArray> + </Points> + <Verts> + <DataArray type="Int64" Name="connectivity" format="ascii"> +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +36 +37 +38 +39 +40 +41 +42 +43 +44 +45 +46 +47 +48 +49 +50 +51 +52 +53 +54 +55 +56 +57 +58 +59 +60 +61 +62 +63 +64 +65 +66 +67 +68 +69 +70 +71 +72 +73 +74 +75 +76 +77 +78 +79 +80 +81 +82 +83 +84 +85 +86 +87 +88 +89 +90 +91 +92 +93 +94 +95 +96 +97 +98 +99 +100 +101 +102 +103 +104 +105 +106 +107 +108 +109 +110 +111 +112 +113 +114 +115 +116 +117 +118 +119 +120 +121 +122 +123 +124 +125 +126 +127 +128 +129 +130 +131 +132 +133 +134 +135 +136 +137 +138 +139 +140 +141 +142 +143 +144 +145 +146 +147 +148 +149 +150 +151 +152 +153 +154 +155 +156 +157 +158 +159 +160 +161 +162 +163 +164 +165 +166 +167 +168 +169 +170 +171 +172 +173 +174 +175 +176 +177 +178 +179 +180 +181 +182 +183 +184 +185 +186 +187 +188 +189 +190 +191 +192 +193 +194 +195 +196 +197 +198 +199 +200 +201 +202 +203 +204 +205 +206 +207 +208 +209 +210 +211 +212 +213 +214 +215 +216 +217 +218 +219 +220 +221 +222 +223 +224 +225 +226 +227 +228 +229 +230 +231 +232 +233 +234 +235 +236 +237 +238 +239 +240 +241 +242 +243 +244 +245 +246 +247 +248 +249 +250 +251 +252 +253 +254 +255 +256 +257 +258 +259 +260 +261 +262 +263 +264 +265 +266 +267 +268 +269 +270 +271 +272 +273 +274 +275 +276 +277 +278 +279 +280 +281 +282 +283 +284 +285 +286 +287 +288 +289 +290 +291 +292 +293 +294 +295 +296 +297 +298 +299 + </DataArray> + <DataArray type="Int64" Name="offsets" format="ascii"> +1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +36 +37 +38 +39 +40 +41 +42 +43 +44 +45 +46 +47 +48 +49 +50 +51 +52 +53 +54 +55 +56 +57 +58 +59 +60 +61 +62 +63 +64 +65 +66 +67 +68 +69 +70 +71 +72 +73 +74 +75 +76 +77 +78 +79 +80 +81 +82 +83 +84 +85 +86 +87 +88 +89 +90 +91 +92 +93 +94 +95 +96 +97 +98 +99 +100 +101 +102 +103 +104 +105 +106 +107 +108 +109 +110 +111 +112 +113 +114 +115 +116 +117 +118 +119 +120 +121 +122 +123 +124 +125 +126 +127 +128 +129 +130 +131 +132 +133 +134 +135 +136 +137 +138 +139 +140 +141 +142 +143 +144 +145 +146 +147 +148 +149 +150 +151 +152 +153 +154 +155 +156 +157 +158 +159 +160 +161 +162 +163 +164 +165 +166 +167 +168 +169 +170 +171 +172 +173 +174 +175 +176 +177 +178 +179 +180 +181 +182 +183 +184 +185 +186 +187 +188 +189 +190 +191 +192 +193 +194 +195 +196 +197 +198 +199 +200 +201 +202 +203 +204 +205 +206 +207 +208 +209 +210 +211 +212 +213 +214 +215 +216 +217 +218 +219 +220 +221 +222 +223 +224 +225 +226 +227 +228 +229 +230 +231 +232 +233 +234 +235 +236 +237 +238 +239 +240 +241 +242 +243 +244 +245 +246 +247 +248 +249 +250 +251 +252 +253 +254 +255 +256 +257 +258 +259 +260 +261 +262 +263 +264 +265 +266 +267 +268 +269 +270 +271 +272 +273 +274 +275 +276 +277 +278 +279 +280 +281 +282 +283 +284 +285 +286 +287 +288 +289 +290 +291 +292 +293 +294 +295 +296 +297 +298 +299 +300 + </DataArray> + </Verts> + <PointData> + <DataArray type="Float32" Name="attr0" format="ascii"> +0.8529708 +0.298533 +0.3744993 +0.6559722 +0.8652724 +0.6160347 +0.08231235 +0.9933323 +0.2320302 +0.1183546 +0.01906014 +0.9418144 +0.603229 +0.354637 +0.7111624 +0.4039625 +0.9216934 +0.1072938 +0.2456609 +0.3170583 +0.9577457 +0.2063259 +0.6536888 +0.447751 +0.3411559 +0.8043212 +0.4678461 +0.5357695 +0.772 +0.7299173 +0.2586038 +0.3270002 +0.4396037 +0.3925552 +0.004308898 +0.6981738 +0.4786127 +0.6513046 +0.6595165 +0.3938166 +0.5329039 +0.9791282 +0.02307406 +0.4556608 +0.01003828 +0.03055396 +0.9450146 +0.5608311 +0.7953176 +0.01379246 +0.7882684 +0.5122852 +0.3974684 +0.937954 +0.5948561 +0.05506884 +0.6949601 +0.0438762 +0.636348 +0.2459334 +0.3821134 +0.4021311 +0.9374649 +0.573764 +0.8089213 +0.4420139 +0.9685401 +0.7011389 +0.7462636 +0.3388373 +0.2564686 +0.0582759 +0.1396204 +0.339956 +0.5389212 +0.5005374 +0.1072275 +0.6504886 +0.7827501 +0.7392346 +0.959145 +0.6870436 +0.01753723 +0.387559 +0.2418156 +0.1735155 +0.356896 +0.5593037 +0.9134971 +0.7036808 +0.9183536 +0.6697222 +0.07820559 +0.4964983 +0.7684861 +0.4063318 +0.6813779 +0.05912127 +0.7878197 +0.5576111 +0.5873617 +0.8740048 +0.2134402 +0.001495549 +0.9837323 +0.8105871 +0.6399922 +0.05851735 +0.07949429 +0.5538782 +0.6482655 +0.8818434 +0.9705274 +0.9642821 +0.8888651 +0.3289186 +0.129298 +0.6068508 +0.5726061 +0.3960887 +0.899592 +0.9487336 +0.1422059 +0.9483229 +0.08681852 +0.24225 +0.1743567 +0.1233244 +0.3780051 +0.5419158 +0.02661112 +0.233866 +0.6399148 +0.1825597 +0.2825412 +0.1883141 +0.5717845 +0.8329124 +0.4957254 +0.175924 +0.3290277 +0.4449715 +0.6027424 +0.2816668 +0.6163737 +0.0327232 +0.7745816 +0.4607171 +0.7566994 +0.2297572 +0.7387367 +0.3680858 +0.0711445 +0.3514173 +0.8829913 +0.9934199 +0.826638 +0.7169546 +0.006114672 +0.7049448 +0.9766319 +0.02015841 +0.4784243 +0.7353437 +0.9707181 +0.574414 +0.07556318 +0.2033864 +0.495641 +0.9734944 +0.04775531 +0.3251079 +0.6214603 +0.9254883 +0.04193668 +0.1200856 +0.7080642 +0.8810247 +0.9400363 +0.5598458 +0.6154476 +0.09599476 +0.002017161 +0.2200292 +0.9431561 +0.9700263 +0.6571889 +0.4231478 +0.8581523 +0.09990912 +0.7024314 +0.411173 +0.2585146 +0.1346781 +0.7154943 +0.784025 +0.1056415 +0.5404205 +0.5433266 +0.3691963 +0.2975725 +0.5015478 +0.5941165 +0.1929471 +0.5954264 +0.563149 +0.8414957 +0.4295211 +0.6484548 +0.5605351 +0.02805235 +0.8647353 +0.01985616 +0.6042695 +0.9044887 +0.467788 +0.7763534 +0.7293949 +0.4480733 +0.7979131 +0.4535534 +0.004086397 +0.8337277 +0.3346388 +0.3684492 +0.4435953 +0.3963957 +0.3156907 +0.8560401 +0.08915854 +0.2861219 +0.7489092 +0.864509 +0.7681607 +0.1926944 +0.346131 +0.942188 +0.3957103 +0.3976733 +0.626924 +0.7652794 +0.9726949 +0.09021607 +0.355193 +0.1896387 +0.751826 +0.3089158 +0.831476 +0.5276415 +0.3509859 +0.4451742 +0.5167726 +0.8629208 +0.06411378 +0.2860149 +0.9771696 +0.2118585 +0.6650727 +0.6309843 +0.7679862 +0.09576546 +0.6695392 +0.2205858 +0.5431652 +0.1119347 +0.3545573 +0.5758216 +0.349471 +0.2549463 +0.9099419 +0.957428 +0.2278405 +0.5905658 +0.03862984 +0.5241008 +0.6429567 +0.01495586 +0.7304558 +0.8697113 +0.3289562 +0.127755 +0.7711008 +0.511895 +0.02170832 +0.5705872 +0.3277772 +0.2892382 +0.7211331 +0.4184968 +0.3001323 +0.007203105 +0.3115555 +0.4712839 +0.09712131 +0.9744084 +0.05794625 +0.9391234 +0.9372373 +0.6360101 +0.5553766 + </DataArray> + <DataArray type="Float32" Name="attr1" NumberOfComponents="3" format="ascii"> +0.9748546 0.182712 0.3535236 +0.4241601 0.1101105 0.5790349 +0.1902463 0.0614199 0.3732455 +0.6113957 0.8041492 0.787833 +0.2583924 0.08826474 0.5169995 +0.9328642 0.7964005 0.7617198 +0.2024633 0.9337424 0.2332229 +0.6473725 0.9371002 0.3275327 +0.3809074 0.7448412 0.3949404 +0.5634099 0.2960636 0.0811892 +0.7858039 0.9718763 0.4657843 +0.5460901 0.5123132 0.06088727 +0.4147854 0.3041754 0.9830479 +0.6366761 0.4065048 0.3107939 +0.6655521 0.7402906 0.689837 +0.826659 0.1784595 0.9314455 +0.7306508 0.3393511 0.4878008 +0.8122793 0.3438141 0.05609748 +0.8650802 0.3094309 0.7284318 +0.5407271 0.3872222 0.7888145 +0.9691333 0.2956242 0.2399967 +0.9060355 0.6311221 0.05721635 +0.5894753 0.1962016 0.486468 +0.1134491 0.009212147 0.4017782 +0.05546112 0.6992846 0.9515968 +0.3238258 0.9396088 0.882476 +0.7591307 0.4169663 0.6945408 +0.2788 0.2640223 0.5175088 +0.9518524 0.2208626 0.7925265 +0.6604245 0.03514157 0.7651433 +0.6208919 0.9170631 0.2996711 +0.6331988 0.285234 0.2312221 +0.4688247 0.6116786 0.8488709 +0.6856259 0.4372997 0.513253 +0.7864857 0.8713554 0.7607441 +0.03531391 0.7839497 0.1752601 +0.2674783 0.34223 0.5800824 +0.2304249 0.4929353 0.1603168 +0.9211613 0.06894496 0.2015761 +0.5015174 0.1940016 0.5873939 +0.4677942 0.3057775 0.4958839 +0.5834142 0.2494362 0.6523666 +0.9476014 0.8729799 0.6258418 +0.07456589 0.2816161 0.1563227 +0.7220195 0.1972917 0.9517298 +0.6288804 0.3116755 0.8884595 +0.483631 0.6064499 0.06215089 +0.7009501 0.9068989 0.806163 +0.5099639 0.03860291 0.2881065 +0.1574303 0.7371178 0.704073 +0.6349016 0.8211598 0.391876 +0.003889594 0.4352304 0.8705321 +0.3647161 0.03622204 0.02821916 +0.5238011 0.2221802 0.2451298 +0.5053651 0.3006779 0.2938548 +0.1663796 0.5242463 0.06217061 +0.6070892 0.6403464 0.1851591 +0.8117476 0.2786359 0.4168594 +0.2731472 0.0415833 0.8500853 +0.6642985 0.8504629 0.7662774 +0.7986866 0.7289335 0.002117605 +0.4334844 0.6378342 0.3287259 +0.08847254 0.8852004 0.4148983 +0.2963465 0.3210694 0.9887694 +0.2324456 0.3373964 0.6322526 +0.6554861 0.8022766 0.1004898 +0.07537887 0.4623345 0.6573912 +0.5525154 0.9374337 0.7782122 +0.2593105 0.348355 0.5672165 +0.6842615 0.140062 0.1539859 +0.6642151 0.3211423 0.4370744 +0.4208756 0.6644645 0.08784787 +0.8343186 0.7353206 0.7499294 +0.8967711 0.4597146 0.6796811 +0.1976504 0.1261739 0.3278354 +0.7104537 0.8386217 0.6495257 +0.4271757 0.9333631 0.5513873 +0.5743707 0.4243183 0.519411 +0.3616842 0.2720152 0.03516268 +0.9140911 0.7507826 0.7903351 +0.9840599 0.3458912 0.8130444 +0.05248167 0.05372164 0.389588 +0.08259923 0.3487448 0.6464238 +0.4099824 0.5866943 0.01541065 +0.1820729 0.2833438 0.3166682 +0.9814538 0.006706185 0.9473737 +0.2595895 0.2080055 0.3211864 +0.9312997 0.2676533 0.9780821 +0.6824234 0.6156911 0.2228432 +0.3408622 0.3732694 0.8470042 +0.4359988 0.884016 0.8944225 +0.3391803 0.9534512 0.7991527 +0.196631 0.9317092 0.3362087 +0.9169337 0.581745 0.6951519 +0.1365367 0.4202633 0.937414 +0.9001715 0.9915178 0.6919283 +0.3602262 0.4991338 0.01001521 +0.6424809 0.053374 0.1190055 +0.812589 0.8529339 0.5976827 +0.3563754 0.9276032 0.9415125 +0.118846 0.2845806 0.4985479 +0.4655708 0.1824962 0.4190991 +0.02253608 0.2169829 0.2436388 +0.7489657 0.283258 0.4751518 +0.6089736 0.6223137 0.7392471 +0.6233074 0.04511229 0.5637 +0.6364312 0.5456192 0.6361949 +0.538857 0.09224506 0.4588159 +0.7756289 0.9963474 0.113348 +0.1989962 0.09692258 0.8314249 +0.467768 0.6943737 0.9605959 +0.4879262 0.001340698 0.90294 +0.7998453 0.5532623 0.06975289 +0.7120366 0.530658 0.1581565 +0.8783872 0.4725255 0.01879028 +0.2358644 0.5446841 0.4405788 +0.9404694 0.7044941 0.5076056 +0.09419347 0.144959 0.04641719 +0.9671572 0.8019916 0.5690894 +0.02404979 0.3222271 0.6117853 +0.2925248 0.5600246 0.08783633 +0.2162311 0.4139982 0.5061119 +0.3193631 0.08435674 0.354575 +0.6885231 0.5423442 0.5272425 +0.002121294 0.5437131 0.9591583 +0.4674174 0.3421274 0.8366987 +0.8518582 0.8118687 0.9446769 +0.6292673 0.703697 0.9581603 +0.3712003 0.7593519 0.7815391 +0.2771769 0.6152929 0.1145995 +0.9049377 0.6952723 0.3706018 +0.05791603 0.7255687 0.1057224 +0.03193478 0.4592177 0.9953473 +0.6012 0.7887565 0.03176999 +0.672655 0.6730939 0.7649927 +0.3354424 0.583163 0.6313986 +0.9995645 0.9725542 0.9139851 +0.5587004 0.729931 0.06208589 +0.435946 0.5497803 0.645716 +0.3627431 0.4030407 0.2017837 +0.1479098 0.5919991 0.5780127 +0.7366132 0.3731074 0.1645189 +0.5636996 0.6763025 0.4271737 +0.3769491 0.8765868 0.3685486 +0.1871042 0.4049199 0.06695128 +0.2193345 0.2680056 0.9098098 +0.6748514 0.7583408 0.6624454 +0.5444291 0.002246417 0.2614691 +0.2804673 0.07199135 0.8264676 +0.09341249 0.9414622 0.8795042 +0.8737362 0.6299006 0.3394902 +0.7075377 0.5259244 0.8035644 +0.05540885 0.2141117 0.5946758 +0.1177505 0.9583438 0.107447 +0.04784222 0.4185975 0.8621246 +0.6326312 0.7229671 0.7335341 +0.5584334 0.3448331 0.3660832 +0.30709 0.09122103 0.4504981 +0.2910133 0.1796196 0.9722494 +0.9368087 0.4745102 0.8999073 +0.2261222 0.4414807 0.120103 +0.7128155 0.1348507 0.798704 +0.5894381 0.8392854 0.604777 +0.124083 0.6374041 0.9535059 +0.2776331 0.2265063 0.8103985 +0.956562 0.3160702 0.5508837 +0.3442618 0.03584294 0.5144579 +0.5543059 0.8206813 0.2222772 +0.0697513 0.4279592 0.7444149 +0.8940477 0.342507 0.4772951 +0.9413781 0.7506931 0.5209978 +0.01204313 0.6100267 0.06823859 +0.7523918 0.4793535 0.2295646 +0.9641434 0.1083163 0.304055 +0.625999 0.6228648 0.9449765 +0.171931 0.2295011 0.03589 +0.8898231 0.8549412 0.5689448 +0.09681616 0.4328475 0.125681 +0.5009308 0.5830184 0.7820445 +0.0197209 0.2944963 0.3353985 +0.8703274 0.1321809 0.09877967 +0.3706777 0.8566727 0.704303 +0.05883907 0.838349 0.9935846 +0.915902 0.3670991 0.8747852 +0.8726032 0.6664792 0.09730455 +0.7375001 0.07554375 0.4984249 +0.1544282 0.777809 0.6615996 +0.1559422 0.5790551 0.943966 +0.7901587 0.2513628 0.6787826 +0.1533425 0.9859115 0.5911328 +0.302553 0.1352382 0.2997274 +0.8905112 0.9618567 0.8079476 +0.7041107 0.6599124 0.05514744 +0.3495654 0.2836183 0.002033976 +0.5000019 0.03994759 0.3136394 +0.693019 0.2549273 0.4825498 +0.1085699 0.5301117 0.8539335 +0.4425995 0.2049748 0.07652891 +0.2142174 0.785323 0.7538005 +0.4650302 0.6243752 0.6741527 +0.02135292 0.6103745 0.9763628 +0.0497878 0.0303411 0.8805022 +0.4579693 0.1034673 0.4846284 +0.4184919 0.4825779 0.9556063 +0.1863809 0.3183447 0.9775377 +0.7401186 0.7009468 0.003264953 +0.7918574 0.6276355 0.04991206 +0.6082056 0.2555821 0.8083426 +0.01712132 0.2993197 0.9886052 +0.7096261 0.9665291 0.9778993 +0.8743482 0.517521 0.7659602 +0.7937461 0.7688173 0.3705569 +0.1569995 0.1452445 0.8859792 +0.9813515 0.1495767 0.5970122 +0.6446931 0.3648909 0.6606749 +0.1829048 0.6102539 0.3404088 +0.3123941 0.4041222 0.0724808 +0.02774338 0.4667966 0.1525297 +0.8299741 0.4387751 0.903654 +0.4465366 0.325474 0.1589254 +0.5312997 0.9626195 0.9197928 +0.1839568 0.3926444 0.06868142 +0.8855224 0.3408713 0.4069305 +0.3196138 0.6995248 0.04282044 +0.3975496 0.3111648 0.9437472 +0.9016082 0.9270398 0.3714305 +0.6607151 0.8137829 0.2186289 +0.05809139 0.685765 0.05399829 +0.665495 0.487526 0.4398769 +0.730593 0.3953584 0.5735964 +0.8949581 0.7765559 0.5233431 +0.6145434 0.1527851 0.624663 +0.2375473 0.3091391 0.5206416 +0.5681346 0.5586951 0.5604979 +0.0252893 0.7132818 0.6457598 +0.05284001 0.01097356 0.7924766 +0.1806953 0.1669254 0.6434768 +0.8337508 0.8247018 0.2845829 +0.06199834 0.265549 0.9173734 +0.3767072 0.1617071 0.3750655 +0.5462767 0.9485375 0.6408749 +0.8923919 0.6838962 0.199377 +0.9666584 0.6536819 0.7423414 +0.5063124 0.9421607 0.7578361 +0.1854233 0.8290645 0.3744421 +0.3446627 0.0852911 0.6026156 +0.4274893 0.2644961 0.9465874 +0.5211124 0.7120902 0.5903262 +0.388234 0.6242118 0.5284909 +0.4941571 0.0006884714 0.7666873 +0.3662499 0.4524836 0.472685 +0.9890414 0.1748146 0.5765221 +0.3147266 0.3237005 0.9484965 +0.6795018 0.8192073 0.4063157 +0.2928698 0.08684593 0.2197925 +0.3487885 0.311215 0.4109692 +0.2282353 0.6537832 0.9223566 +0.8740864 0.7190608 0.6997792 +0.5012566 0.1072908 0.3147683 +0.5402145 0.1015471 0.5657949 +0.8502668 0.6347147 0.5563974 +0.8583462 0.1815312 0.9030805 +0.3361507 0.3068979 0.3514087 +0.01394647 0.513432 0.1995379 +0.2801927 0.1111185 0.757228 +0.6386204 0.7605298 0.275602 +0.4186158 0.3199896 0.7880638 +0.7057533 0.9474321 0.6867773 +0.2226965 0.03524387 0.7182988 +0.1421468 0.5617437 0.7602597 +0.7192137 0.2537215 0.1080635 +0.6960402 0.08752386 0.875843 +0.7323539 0.3000914 0.0380737 +0.5385771 0.3650239 0.2788593 +0.7986149 0.9281337 0.8099491 +0.3414695 0.5726238 0.6232916 +0.9388162 0.3578852 0.2142286 +0.8269561 0.684406 0.05587881 +0.03856974 0.2146643 0.2543987 +0.01667429 0.08892812 0.8273322 +0.8326643 0.2443136 0.2686263 +0.8089433 0.973038 0.3595942 +0.003547196 0.3862811 0.6647595 +0.7042358 0.3305633 0.6873248 +0.7315779 0.9356113 0.3772986 +0.7960126 0.5628121 0.9144706 +0.6924471 0.7828254 0.898097 +0.2926238 0.1094896 0.5853865 +0.2898759 0.1576347 0.8880545 +0.0695874 0.9461986 0.9910887 +0.09306072 0.2382126 0.2565955 +0.3403367 0.7137071 0.06890412 +0.2897373 0.6325306 0.1548083 +0.6889314 0.2200384 0.2848254 +0.2809444 0.6850391 0.679054 +0.004693708 0.6313566 0.2437309 +0.06993014 0.7552199 0.7084397 +0.07350779 0.4795264 0.4390723 +0.4697891 0.6491548 0.703844 +0.5327356 0.4346496 0.4489745 + </DataArray> + <DataArray type="Float32" Name="domain" format="ascii"> +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +0.0 +0.0 +0.0 +0.0 +0.0 +0.0 +0.0 +0.0 +0.0 +0.0 +0.0 +0.0 +0.0 +0.0 +0.0 +0.0 +0.0 +0.0 +0.0 +0.0 +0.0 +0.0 +0.0 +0.0 +0.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +0.0 +0.0 +0.0 +0.0 +0.0 +0.0 +0.0 +0.0 +0.0 +0.0 +0.0 +0.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +0.0 +0.0 +0.0 +0.0 +0.0 +0.0 +0.0 +0.0 +0.0 +0.0 + </DataArray> + </PointData> + </Piece> + </PolyData> +</VTKFile> \ No newline at end of file diff --git a/test_data/vtk_points_with_prp_names_prec_check_test.vtk b/test_data/vtk_points_with_prp_names_prec_check_test.vtk new file mode 100644 index 0000000000000000000000000000000000000000..db8cdb097c78efc3b835a67f09011d74c5139a2f --- /dev/null +++ b/test_data/vtk_points_with_prp_names_prec_check_test.vtk @@ -0,0 +1,512 @@ +# vtk DataFile Version 3.0 +points +ASCII +DATASET POLYDATA +POINTS 100 double +1.79769e+308 1.79769e+308 1.79769e+308 +1.79769e+308 1.79769e+308 1.79769e+308 +1.79769e+308 1.79769e+308 1.79769e+308 +1.79769e+308 1.79769e+308 1.79769e+308 +1.79769e+308 1.79769e+308 1.79769e+308 +1.79769e+308 1.79769e+308 1.79769e+308 +1.79769e+308 1.79769e+308 1.79769e+308 +1.79769e+308 1.79769e+308 1.79769e+308 +1.79769e+308 1.79769e+308 1.79769e+308 +1.79769e+308 1.79769e+308 1.79769e+308 +1.79769e+308 1.79769e+308 1.79769e+308 +1.79769e+308 1.79769e+308 1.79769e+308 +1.79769e+308 1.79769e+308 1.79769e+308 +1.79769e+308 1.79769e+308 1.79769e+308 +1.79769e+308 1.79769e+308 1.79769e+308 +1.79769e+308 1.79769e+308 1.79769e+308 +1.79769e+308 1.79769e+308 1.79769e+308 +1.79769e+308 1.79769e+308 1.79769e+308 +1.79769e+308 1.79769e+308 1.79769e+308 +1.79769e+308 1.79769e+308 1.79769e+308 +1.79769e+308 1.79769e+308 1.79769e+308 +1.79769e+308 1.79769e+308 1.79769e+308 +1.79769e+308 1.79769e+308 1.79769e+308 +1.79769e+308 1.79769e+308 1.79769e+308 +1.79769e+308 1.79769e+308 1.79769e+308 +1.79769e+308 1.79769e+308 1.79769e+308 +1.79769e+308 1.79769e+308 1.79769e+308 +1.79769e+308 1.79769e+308 1.79769e+308 +1.79769e+308 1.79769e+308 1.79769e+308 +1.79769e+308 1.79769e+308 1.79769e+308 +1.79769e+308 1.79769e+308 1.79769e+308 +1.79769e+308 1.79769e+308 1.79769e+308 +1.79769e+308 1.79769e+308 1.79769e+308 +1.79769e+308 1.79769e+308 1.79769e+308 +1.79769e+308 1.79769e+308 1.79769e+308 +1.79769e+308 1.79769e+308 1.79769e+308 +1.79769e+308 1.79769e+308 1.79769e+308 +1.79769e+308 1.79769e+308 1.79769e+308 +1.79769e+308 1.79769e+308 1.79769e+308 +1.79769e+308 1.79769e+308 1.79769e+308 +1.79769e+308 1.79769e+308 1.79769e+308 +1.79769e+308 1.79769e+308 1.79769e+308 +1.79769e+308 1.79769e+308 1.79769e+308 +1.79769e+308 1.79769e+308 1.79769e+308 +1.79769e+308 1.79769e+308 1.79769e+308 +1.79769e+308 1.79769e+308 1.79769e+308 +1.79769e+308 1.79769e+308 1.79769e+308 +1.79769e+308 1.79769e+308 1.79769e+308 +1.79769e+308 1.79769e+308 1.79769e+308 +1.79769e+308 1.79769e+308 1.79769e+308 +1.79769e+308 1.79769e+308 1.79769e+308 +1.79769e+308 1.79769e+308 1.79769e+308 +1.79769e+308 1.79769e+308 1.79769e+308 +1.79769e+308 1.79769e+308 1.79769e+308 +1.79769e+308 1.79769e+308 1.79769e+308 +1.79769e+308 1.79769e+308 1.79769e+308 +1.79769e+308 1.79769e+308 1.79769e+308 +1.79769e+308 1.79769e+308 1.79769e+308 +1.79769e+308 1.79769e+308 1.79769e+308 +1.79769e+308 1.79769e+308 1.79769e+308 +1.79769e+308 1.79769e+308 1.79769e+308 +1.79769e+308 1.79769e+308 1.79769e+308 +1.79769e+308 1.79769e+308 1.79769e+308 +1.79769e+308 1.79769e+308 1.79769e+308 +1.79769e+308 1.79769e+308 1.79769e+308 +1.79769e+308 1.79769e+308 1.79769e+308 +1.79769e+308 1.79769e+308 1.79769e+308 +1.79769e+308 1.79769e+308 1.79769e+308 +1.79769e+308 1.79769e+308 1.79769e+308 +1.79769e+308 1.79769e+308 1.79769e+308 +1.79769e+308 1.79769e+308 1.79769e+308 +1.79769e+308 1.79769e+308 1.79769e+308 +1.79769e+308 1.79769e+308 1.79769e+308 +1.79769e+308 1.79769e+308 1.79769e+308 +1.79769e+308 1.79769e+308 1.79769e+308 +1.79769e+308 1.79769e+308 1.79769e+308 +1.79769e+308 1.79769e+308 1.79769e+308 +1.79769e+308 1.79769e+308 1.79769e+308 +1.79769e+308 1.79769e+308 1.79769e+308 +1.79769e+308 1.79769e+308 1.79769e+308 +1.79769e+308 1.79769e+308 1.79769e+308 +1.79769e+308 1.79769e+308 1.79769e+308 +1.79769e+308 1.79769e+308 1.79769e+308 +1.79769e+308 1.79769e+308 1.79769e+308 +1.79769e+308 1.79769e+308 1.79769e+308 +1.79769e+308 1.79769e+308 1.79769e+308 +1.79769e+308 1.79769e+308 1.79769e+308 +1.79769e+308 1.79769e+308 1.79769e+308 +1.79769e+308 1.79769e+308 1.79769e+308 +1.79769e+308 1.79769e+308 1.79769e+308 +1.79769e+308 1.79769e+308 1.79769e+308 +1.79769e+308 1.79769e+308 1.79769e+308 +1.79769e+308 1.79769e+308 1.79769e+308 +1.79769e+308 1.79769e+308 1.79769e+308 +1.79769e+308 1.79769e+308 1.79769e+308 +1.79769e+308 1.79769e+308 1.79769e+308 +1.79769e+308 1.79769e+308 1.79769e+308 +1.79769e+308 1.79769e+308 1.79769e+308 +1.79769e+308 1.79769e+308 1.79769e+308 +1.79769e+308 1.79769e+308 1.79769e+308 +VERTICES 100 200 +1 0 +1 1 +1 2 +1 3 +1 4 +1 5 +1 6 +1 7 +1 8 +1 9 +1 10 +1 11 +1 12 +1 13 +1 14 +1 15 +1 16 +1 17 +1 18 +1 19 +1 20 +1 21 +1 22 +1 23 +1 24 +1 25 +1 26 +1 27 +1 28 +1 29 +1 30 +1 31 +1 32 +1 33 +1 34 +1 35 +1 36 +1 37 +1 38 +1 39 +1 40 +1 41 +1 42 +1 43 +1 44 +1 45 +1 46 +1 47 +1 48 +1 49 +1 50 +1 51 +1 52 +1 53 +1 54 +1 55 +1 56 +1 57 +1 58 +1 59 +1 60 +1 61 +1 62 +1 63 +1 64 +1 65 +1 66 +1 67 +1 68 +1 69 +1 70 +1 71 +1 72 +1 73 +1 74 +1 75 +1 76 +1 77 +1 78 +1 79 +1 80 +1 81 +1 82 +1 83 +1 84 +1 85 +1 86 +1 87 +1 88 +1 89 +1 90 +1 91 +1 92 +1 93 +1 94 +1 95 +1 96 +1 97 +1 98 +1 99 +POINT_DATA 100 +SCALARS scalar float +LOOKUP_TABLE default +3.402823e+38 +3.402823e+38 +3.402823e+38 +3.402823e+38 +3.402823e+38 +3.402823e+38 +3.402823e+38 +3.402823e+38 +3.402823e+38 +3.402823e+38 +3.402823e+38 +3.402823e+38 +3.402823e+38 +3.402823e+38 +3.402823e+38 +3.402823e+38 +3.402823e+38 +3.402823e+38 +3.402823e+38 +3.402823e+38 +3.402823e+38 +3.402823e+38 +3.402823e+38 +3.402823e+38 +3.402823e+38 +3.402823e+38 +3.402823e+38 +3.402823e+38 +3.402823e+38 +3.402823e+38 +3.402823e+38 +3.402823e+38 +3.402823e+38 +3.402823e+38 +3.402823e+38 +3.402823e+38 +3.402823e+38 +3.402823e+38 +3.402823e+38 +3.402823e+38 +3.402823e+38 +3.402823e+38 +3.402823e+38 +3.402823e+38 +3.402823e+38 +3.402823e+38 +3.402823e+38 +3.402823e+38 +3.402823e+38 +3.402823e+38 +3.402823e+38 +3.402823e+38 +3.402823e+38 +3.402823e+38 +3.402823e+38 +3.402823e+38 +3.402823e+38 +3.402823e+38 +3.402823e+38 +3.402823e+38 +3.402823e+38 +3.402823e+38 +3.402823e+38 +3.402823e+38 +3.402823e+38 +3.402823e+38 +3.402823e+38 +3.402823e+38 +3.402823e+38 +3.402823e+38 +3.402823e+38 +3.402823e+38 +3.402823e+38 +3.402823e+38 +3.402823e+38 +3.402823e+38 +3.402823e+38 +3.402823e+38 +3.402823e+38 +3.402823e+38 +3.402823e+38 +3.402823e+38 +3.402823e+38 +3.402823e+38 +3.402823e+38 +3.402823e+38 +3.402823e+38 +3.402823e+38 +3.402823e+38 +3.402823e+38 +3.402823e+38 +3.402823e+38 +3.402823e+38 +3.402823e+38 +3.402823e+38 +3.402823e+38 +3.402823e+38 +3.402823e+38 +3.402823e+38 +3.402823e+38 +VECTORS vector double +1.797693134862316e+308 1.797693134862316e+308 1.797693134862316e+308 +1.797693134862316e+308 1.797693134862316e+308 1.797693134862316e+308 +1.797693134862316e+308 1.797693134862316e+308 1.797693134862316e+308 +1.797693134862316e+308 1.797693134862316e+308 1.797693134862316e+308 +1.797693134862316e+308 1.797693134862316e+308 1.797693134862316e+308 +1.797693134862316e+308 1.797693134862316e+308 1.797693134862316e+308 +1.797693134862316e+308 1.797693134862316e+308 1.797693134862316e+308 +1.797693134862316e+308 1.797693134862316e+308 1.797693134862316e+308 +1.797693134862316e+308 1.797693134862316e+308 1.797693134862316e+308 +1.797693134862316e+308 1.797693134862316e+308 1.797693134862316e+308 +1.797693134862316e+308 1.797693134862316e+308 1.797693134862316e+308 +1.797693134862316e+308 1.797693134862316e+308 1.797693134862316e+308 +1.797693134862316e+308 1.797693134862316e+308 1.797693134862316e+308 +1.797693134862316e+308 1.797693134862316e+308 1.797693134862316e+308 +1.797693134862316e+308 1.797693134862316e+308 1.797693134862316e+308 +1.797693134862316e+308 1.797693134862316e+308 1.797693134862316e+308 +1.797693134862316e+308 1.797693134862316e+308 1.797693134862316e+308 +1.797693134862316e+308 1.797693134862316e+308 1.797693134862316e+308 +1.797693134862316e+308 1.797693134862316e+308 1.797693134862316e+308 +1.797693134862316e+308 1.797693134862316e+308 1.797693134862316e+308 +1.797693134862316e+308 1.797693134862316e+308 1.797693134862316e+308 +1.797693134862316e+308 1.797693134862316e+308 1.797693134862316e+308 +1.797693134862316e+308 1.797693134862316e+308 1.797693134862316e+308 +1.797693134862316e+308 1.797693134862316e+308 1.797693134862316e+308 +1.797693134862316e+308 1.797693134862316e+308 1.797693134862316e+308 +1.797693134862316e+308 1.797693134862316e+308 1.797693134862316e+308 +1.797693134862316e+308 1.797693134862316e+308 1.797693134862316e+308 +1.797693134862316e+308 1.797693134862316e+308 1.797693134862316e+308 +1.797693134862316e+308 1.797693134862316e+308 1.797693134862316e+308 +1.797693134862316e+308 1.797693134862316e+308 1.797693134862316e+308 +1.797693134862316e+308 1.797693134862316e+308 1.797693134862316e+308 +1.797693134862316e+308 1.797693134862316e+308 1.797693134862316e+308 +1.797693134862316e+308 1.797693134862316e+308 1.797693134862316e+308 +1.797693134862316e+308 1.797693134862316e+308 1.797693134862316e+308 +1.797693134862316e+308 1.797693134862316e+308 1.797693134862316e+308 +1.797693134862316e+308 1.797693134862316e+308 1.797693134862316e+308 +1.797693134862316e+308 1.797693134862316e+308 1.797693134862316e+308 +1.797693134862316e+308 1.797693134862316e+308 1.797693134862316e+308 +1.797693134862316e+308 1.797693134862316e+308 1.797693134862316e+308 +1.797693134862316e+308 1.797693134862316e+308 1.797693134862316e+308 +1.797693134862316e+308 1.797693134862316e+308 1.797693134862316e+308 +1.797693134862316e+308 1.797693134862316e+308 1.797693134862316e+308 +1.797693134862316e+308 1.797693134862316e+308 1.797693134862316e+308 +1.797693134862316e+308 1.797693134862316e+308 1.797693134862316e+308 +1.797693134862316e+308 1.797693134862316e+308 1.797693134862316e+308 +1.797693134862316e+308 1.797693134862316e+308 1.797693134862316e+308 +1.797693134862316e+308 1.797693134862316e+308 1.797693134862316e+308 +1.797693134862316e+308 1.797693134862316e+308 1.797693134862316e+308 +1.797693134862316e+308 1.797693134862316e+308 1.797693134862316e+308 +1.797693134862316e+308 1.797693134862316e+308 1.797693134862316e+308 +1.797693134862316e+308 1.797693134862316e+308 1.797693134862316e+308 +1.797693134862316e+308 1.797693134862316e+308 1.797693134862316e+308 +1.797693134862316e+308 1.797693134862316e+308 1.797693134862316e+308 +1.797693134862316e+308 1.797693134862316e+308 1.797693134862316e+308 +1.797693134862316e+308 1.797693134862316e+308 1.797693134862316e+308 +1.797693134862316e+308 1.797693134862316e+308 1.797693134862316e+308 +1.797693134862316e+308 1.797693134862316e+308 1.797693134862316e+308 +1.797693134862316e+308 1.797693134862316e+308 1.797693134862316e+308 +1.797693134862316e+308 1.797693134862316e+308 1.797693134862316e+308 +1.797693134862316e+308 1.797693134862316e+308 1.797693134862316e+308 +1.797693134862316e+308 1.797693134862316e+308 1.797693134862316e+308 +1.797693134862316e+308 1.797693134862316e+308 1.797693134862316e+308 +1.797693134862316e+308 1.797693134862316e+308 1.797693134862316e+308 +1.797693134862316e+308 1.797693134862316e+308 1.797693134862316e+308 +1.797693134862316e+308 1.797693134862316e+308 1.797693134862316e+308 +1.797693134862316e+308 1.797693134862316e+308 1.797693134862316e+308 +1.797693134862316e+308 1.797693134862316e+308 1.797693134862316e+308 +1.797693134862316e+308 1.797693134862316e+308 1.797693134862316e+308 +1.797693134862316e+308 1.797693134862316e+308 1.797693134862316e+308 +1.797693134862316e+308 1.797693134862316e+308 1.797693134862316e+308 +1.797693134862316e+308 1.797693134862316e+308 1.797693134862316e+308 +1.797693134862316e+308 1.797693134862316e+308 1.797693134862316e+308 +1.797693134862316e+308 1.797693134862316e+308 1.797693134862316e+308 +1.797693134862316e+308 1.797693134862316e+308 1.797693134862316e+308 +1.797693134862316e+308 1.797693134862316e+308 1.797693134862316e+308 +1.797693134862316e+308 1.797693134862316e+308 1.797693134862316e+308 +1.797693134862316e+308 1.797693134862316e+308 1.797693134862316e+308 +1.797693134862316e+308 1.797693134862316e+308 1.797693134862316e+308 +1.797693134862316e+308 1.797693134862316e+308 1.797693134862316e+308 +1.797693134862316e+308 1.797693134862316e+308 1.797693134862316e+308 +1.797693134862316e+308 1.797693134862316e+308 1.797693134862316e+308 +1.797693134862316e+308 1.797693134862316e+308 1.797693134862316e+308 +1.797693134862316e+308 1.797693134862316e+308 1.797693134862316e+308 +1.797693134862316e+308 1.797693134862316e+308 1.797693134862316e+308 +1.797693134862316e+308 1.797693134862316e+308 1.797693134862316e+308 +1.797693134862316e+308 1.797693134862316e+308 1.797693134862316e+308 +1.797693134862316e+308 1.797693134862316e+308 1.797693134862316e+308 +1.797693134862316e+308 1.797693134862316e+308 1.797693134862316e+308 +1.797693134862316e+308 1.797693134862316e+308 1.797693134862316e+308 +1.797693134862316e+308 1.797693134862316e+308 1.797693134862316e+308 +1.797693134862316e+308 1.797693134862316e+308 1.797693134862316e+308 +1.797693134862316e+308 1.797693134862316e+308 1.797693134862316e+308 +1.797693134862316e+308 1.797693134862316e+308 1.797693134862316e+308 +1.797693134862316e+308 1.797693134862316e+308 1.797693134862316e+308 +1.797693134862316e+308 1.797693134862316e+308 1.797693134862316e+308 +1.797693134862316e+308 1.797693134862316e+308 1.797693134862316e+308 +1.797693134862316e+308 1.797693134862316e+308 1.797693134862316e+308 +1.797693134862316e+308 1.797693134862316e+308 1.797693134862316e+308 +1.797693134862316e+308 1.797693134862316e+308 1.797693134862316e+308 +1.797693134862316e+308 1.797693134862316e+308 1.797693134862316e+308 +SCALARS domain float +LOOKUP_TABLE default +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +0.0 +0.0 +0.0 +0.0 +0.0 +0.0 +0.0 +0.0 +0.0 +0.0 +0.0 +0.0 +0.0 +0.0 +0.0 +0.0 +0.0 +0.0 +0.0 +0.0 +0.0 +0.0 +0.0 +0.0 +0.0 diff --git a/test_data/vtk_points_with_prp_names_prec_check_test.vtp b/test_data/vtk_points_with_prp_names_prec_check_test.vtp new file mode 100644 index 0000000000000000000000000000000000000000..34790ee338d297ee59864e5e87a04766da41e35e --- /dev/null +++ b/test_data/vtk_points_with_prp_names_prec_check_test.vtp @@ -0,0 +1,624 @@ +<VTKFile type="PolyData" version="1.0" byte_order="LittleEndian" header_type="UInt64"> + <PolyData> + <Piece NumberOfPoints="100" NumberOfVerts="100"> + <Points> + <DataArray type="Float64" Name="Points" NumberOfComponents="3" format="ascii"> +1.797693134862316e+308 1.797693134862316e+308 1.797693134862316e+308 +1.797693134862316e+308 1.797693134862316e+308 1.797693134862316e+308 +1.797693134862316e+308 1.797693134862316e+308 1.797693134862316e+308 +1.797693134862316e+308 1.797693134862316e+308 1.797693134862316e+308 +1.797693134862316e+308 1.797693134862316e+308 1.797693134862316e+308 +1.797693134862316e+308 1.797693134862316e+308 1.797693134862316e+308 +1.797693134862316e+308 1.797693134862316e+308 1.797693134862316e+308 +1.797693134862316e+308 1.797693134862316e+308 1.797693134862316e+308 +1.797693134862316e+308 1.797693134862316e+308 1.797693134862316e+308 +1.797693134862316e+308 1.797693134862316e+308 1.797693134862316e+308 +1.797693134862316e+308 1.797693134862316e+308 1.797693134862316e+308 +1.797693134862316e+308 1.797693134862316e+308 1.797693134862316e+308 +1.797693134862316e+308 1.797693134862316e+308 1.797693134862316e+308 +1.797693134862316e+308 1.797693134862316e+308 1.797693134862316e+308 +1.797693134862316e+308 1.797693134862316e+308 1.797693134862316e+308 +1.797693134862316e+308 1.797693134862316e+308 1.797693134862316e+308 +1.797693134862316e+308 1.797693134862316e+308 1.797693134862316e+308 +1.797693134862316e+308 1.797693134862316e+308 1.797693134862316e+308 +1.797693134862316e+308 1.797693134862316e+308 1.797693134862316e+308 +1.797693134862316e+308 1.797693134862316e+308 1.797693134862316e+308 +1.797693134862316e+308 1.797693134862316e+308 1.797693134862316e+308 +1.797693134862316e+308 1.797693134862316e+308 1.797693134862316e+308 +1.797693134862316e+308 1.797693134862316e+308 1.797693134862316e+308 +1.797693134862316e+308 1.797693134862316e+308 1.797693134862316e+308 +1.797693134862316e+308 1.797693134862316e+308 1.797693134862316e+308 +1.797693134862316e+308 1.797693134862316e+308 1.797693134862316e+308 +1.797693134862316e+308 1.797693134862316e+308 1.797693134862316e+308 +1.797693134862316e+308 1.797693134862316e+308 1.797693134862316e+308 +1.797693134862316e+308 1.797693134862316e+308 1.797693134862316e+308 +1.797693134862316e+308 1.797693134862316e+308 1.797693134862316e+308 +1.797693134862316e+308 1.797693134862316e+308 1.797693134862316e+308 +1.797693134862316e+308 1.797693134862316e+308 1.797693134862316e+308 +1.797693134862316e+308 1.797693134862316e+308 1.797693134862316e+308 +1.797693134862316e+308 1.797693134862316e+308 1.797693134862316e+308 +1.797693134862316e+308 1.797693134862316e+308 1.797693134862316e+308 +1.797693134862316e+308 1.797693134862316e+308 1.797693134862316e+308 +1.797693134862316e+308 1.797693134862316e+308 1.797693134862316e+308 +1.797693134862316e+308 1.797693134862316e+308 1.797693134862316e+308 +1.797693134862316e+308 1.797693134862316e+308 1.797693134862316e+308 +1.797693134862316e+308 1.797693134862316e+308 1.797693134862316e+308 +1.797693134862316e+308 1.797693134862316e+308 1.797693134862316e+308 +1.797693134862316e+308 1.797693134862316e+308 1.797693134862316e+308 +1.797693134862316e+308 1.797693134862316e+308 1.797693134862316e+308 +1.797693134862316e+308 1.797693134862316e+308 1.797693134862316e+308 +1.797693134862316e+308 1.797693134862316e+308 1.797693134862316e+308 +1.797693134862316e+308 1.797693134862316e+308 1.797693134862316e+308 +1.797693134862316e+308 1.797693134862316e+308 1.797693134862316e+308 +1.797693134862316e+308 1.797693134862316e+308 1.797693134862316e+308 +1.797693134862316e+308 1.797693134862316e+308 1.797693134862316e+308 +1.797693134862316e+308 1.797693134862316e+308 1.797693134862316e+308 +1.797693134862316e+308 1.797693134862316e+308 1.797693134862316e+308 +1.797693134862316e+308 1.797693134862316e+308 1.797693134862316e+308 +1.797693134862316e+308 1.797693134862316e+308 1.797693134862316e+308 +1.797693134862316e+308 1.797693134862316e+308 1.797693134862316e+308 +1.797693134862316e+308 1.797693134862316e+308 1.797693134862316e+308 +1.797693134862316e+308 1.797693134862316e+308 1.797693134862316e+308 +1.797693134862316e+308 1.797693134862316e+308 1.797693134862316e+308 +1.797693134862316e+308 1.797693134862316e+308 1.797693134862316e+308 +1.797693134862316e+308 1.797693134862316e+308 1.797693134862316e+308 +1.797693134862316e+308 1.797693134862316e+308 1.797693134862316e+308 +1.797693134862316e+308 1.797693134862316e+308 1.797693134862316e+308 +1.797693134862316e+308 1.797693134862316e+308 1.797693134862316e+308 +1.797693134862316e+308 1.797693134862316e+308 1.797693134862316e+308 +1.797693134862316e+308 1.797693134862316e+308 1.797693134862316e+308 +1.797693134862316e+308 1.797693134862316e+308 1.797693134862316e+308 +1.797693134862316e+308 1.797693134862316e+308 1.797693134862316e+308 +1.797693134862316e+308 1.797693134862316e+308 1.797693134862316e+308 +1.797693134862316e+308 1.797693134862316e+308 1.797693134862316e+308 +1.797693134862316e+308 1.797693134862316e+308 1.797693134862316e+308 +1.797693134862316e+308 1.797693134862316e+308 1.797693134862316e+308 +1.797693134862316e+308 1.797693134862316e+308 1.797693134862316e+308 +1.797693134862316e+308 1.797693134862316e+308 1.797693134862316e+308 +1.797693134862316e+308 1.797693134862316e+308 1.797693134862316e+308 +1.797693134862316e+308 1.797693134862316e+308 1.797693134862316e+308 +1.797693134862316e+308 1.797693134862316e+308 1.797693134862316e+308 +1.797693134862316e+308 1.797693134862316e+308 1.797693134862316e+308 +1.797693134862316e+308 1.797693134862316e+308 1.797693134862316e+308 +1.797693134862316e+308 1.797693134862316e+308 1.797693134862316e+308 +1.797693134862316e+308 1.797693134862316e+308 1.797693134862316e+308 +1.797693134862316e+308 1.797693134862316e+308 1.797693134862316e+308 +1.797693134862316e+308 1.797693134862316e+308 1.797693134862316e+308 +1.797693134862316e+308 1.797693134862316e+308 1.797693134862316e+308 +1.797693134862316e+308 1.797693134862316e+308 1.797693134862316e+308 +1.797693134862316e+308 1.797693134862316e+308 1.797693134862316e+308 +1.797693134862316e+308 1.797693134862316e+308 1.797693134862316e+308 +1.797693134862316e+308 1.797693134862316e+308 1.797693134862316e+308 +1.797693134862316e+308 1.797693134862316e+308 1.797693134862316e+308 +1.797693134862316e+308 1.797693134862316e+308 1.797693134862316e+308 +1.797693134862316e+308 1.797693134862316e+308 1.797693134862316e+308 +1.797693134862316e+308 1.797693134862316e+308 1.797693134862316e+308 +1.797693134862316e+308 1.797693134862316e+308 1.797693134862316e+308 +1.797693134862316e+308 1.797693134862316e+308 1.797693134862316e+308 +1.797693134862316e+308 1.797693134862316e+308 1.797693134862316e+308 +1.797693134862316e+308 1.797693134862316e+308 1.797693134862316e+308 +1.797693134862316e+308 1.797693134862316e+308 1.797693134862316e+308 +1.797693134862316e+308 1.797693134862316e+308 1.797693134862316e+308 +1.797693134862316e+308 1.797693134862316e+308 1.797693134862316e+308 +1.797693134862316e+308 1.797693134862316e+308 1.797693134862316e+308 +1.797693134862316e+308 1.797693134862316e+308 1.797693134862316e+308 +1.797693134862316e+308 1.797693134862316e+308 1.797693134862316e+308 + </DataArray> + </Points> + <Verts> + <DataArray type="Int64" Name="connectivity" format="ascii"> +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +36 +37 +38 +39 +40 +41 +42 +43 +44 +45 +46 +47 +48 +49 +50 +51 +52 +53 +54 +55 +56 +57 +58 +59 +60 +61 +62 +63 +64 +65 +66 +67 +68 +69 +70 +71 +72 +73 +74 +75 +76 +77 +78 +79 +80 +81 +82 +83 +84 +85 +86 +87 +88 +89 +90 +91 +92 +93 +94 +95 +96 +97 +98 +99 + </DataArray> + <DataArray type="Int64" Name="offsets" format="ascii"> +1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +36 +37 +38 +39 +40 +41 +42 +43 +44 +45 +46 +47 +48 +49 +50 +51 +52 +53 +54 +55 +56 +57 +58 +59 +60 +61 +62 +63 +64 +65 +66 +67 +68 +69 +70 +71 +72 +73 +74 +75 +76 +77 +78 +79 +80 +81 +82 +83 +84 +85 +86 +87 +88 +89 +90 +91 +92 +93 +94 +95 +96 +97 +98 +99 +100 + </DataArray> + </Verts> + <PointData> + <DataArray type="Float32" Name="scalar" format="ascii"> +3.402823e+38 +3.402823e+38 +3.402823e+38 +3.402823e+38 +3.402823e+38 +3.402823e+38 +3.402823e+38 +3.402823e+38 +3.402823e+38 +3.402823e+38 +3.402823e+38 +3.402823e+38 +3.402823e+38 +3.402823e+38 +3.402823e+38 +3.402823e+38 +3.402823e+38 +3.402823e+38 +3.402823e+38 +3.402823e+38 +3.402823e+38 +3.402823e+38 +3.402823e+38 +3.402823e+38 +3.402823e+38 +3.402823e+38 +3.402823e+38 +3.402823e+38 +3.402823e+38 +3.402823e+38 +3.402823e+38 +3.402823e+38 +3.402823e+38 +3.402823e+38 +3.402823e+38 +3.402823e+38 +3.402823e+38 +3.402823e+38 +3.402823e+38 +3.402823e+38 +3.402823e+38 +3.402823e+38 +3.402823e+38 +3.402823e+38 +3.402823e+38 +3.402823e+38 +3.402823e+38 +3.402823e+38 +3.402823e+38 +3.402823e+38 +3.402823e+38 +3.402823e+38 +3.402823e+38 +3.402823e+38 +3.402823e+38 +3.402823e+38 +3.402823e+38 +3.402823e+38 +3.402823e+38 +3.402823e+38 +3.402823e+38 +3.402823e+38 +3.402823e+38 +3.402823e+38 +3.402823e+38 +3.402823e+38 +3.402823e+38 +3.402823e+38 +3.402823e+38 +3.402823e+38 +3.402823e+38 +3.402823e+38 +3.402823e+38 +3.402823e+38 +3.402823e+38 +3.402823e+38 +3.402823e+38 +3.402823e+38 +3.402823e+38 +3.402823e+38 +3.402823e+38 +3.402823e+38 +3.402823e+38 +3.402823e+38 +3.402823e+38 +3.402823e+38 +3.402823e+38 +3.402823e+38 +3.402823e+38 +3.402823e+38 +3.402823e+38 +3.402823e+38 +3.402823e+38 +3.402823e+38 +3.402823e+38 +3.402823e+38 +3.402823e+38 +3.402823e+38 +3.402823e+38 +3.402823e+38 + </DataArray> + <DataArray type="Float64" Name="vector" NumberOfComponents="3" format="ascii"> +1.797693134862316e+308 1.797693134862316e+308 1.797693134862316e+308 +1.797693134862316e+308 1.797693134862316e+308 1.797693134862316e+308 +1.797693134862316e+308 1.797693134862316e+308 1.797693134862316e+308 +1.797693134862316e+308 1.797693134862316e+308 1.797693134862316e+308 +1.797693134862316e+308 1.797693134862316e+308 1.797693134862316e+308 +1.797693134862316e+308 1.797693134862316e+308 1.797693134862316e+308 +1.797693134862316e+308 1.797693134862316e+308 1.797693134862316e+308 +1.797693134862316e+308 1.797693134862316e+308 1.797693134862316e+308 +1.797693134862316e+308 1.797693134862316e+308 1.797693134862316e+308 +1.797693134862316e+308 1.797693134862316e+308 1.797693134862316e+308 +1.797693134862316e+308 1.797693134862316e+308 1.797693134862316e+308 +1.797693134862316e+308 1.797693134862316e+308 1.797693134862316e+308 +1.797693134862316e+308 1.797693134862316e+308 1.797693134862316e+308 +1.797693134862316e+308 1.797693134862316e+308 1.797693134862316e+308 +1.797693134862316e+308 1.797693134862316e+308 1.797693134862316e+308 +1.797693134862316e+308 1.797693134862316e+308 1.797693134862316e+308 +1.797693134862316e+308 1.797693134862316e+308 1.797693134862316e+308 +1.797693134862316e+308 1.797693134862316e+308 1.797693134862316e+308 +1.797693134862316e+308 1.797693134862316e+308 1.797693134862316e+308 +1.797693134862316e+308 1.797693134862316e+308 1.797693134862316e+308 +1.797693134862316e+308 1.797693134862316e+308 1.797693134862316e+308 +1.797693134862316e+308 1.797693134862316e+308 1.797693134862316e+308 +1.797693134862316e+308 1.797693134862316e+308 1.797693134862316e+308 +1.797693134862316e+308 1.797693134862316e+308 1.797693134862316e+308 +1.797693134862316e+308 1.797693134862316e+308 1.797693134862316e+308 +1.797693134862316e+308 1.797693134862316e+308 1.797693134862316e+308 +1.797693134862316e+308 1.797693134862316e+308 1.797693134862316e+308 +1.797693134862316e+308 1.797693134862316e+308 1.797693134862316e+308 +1.797693134862316e+308 1.797693134862316e+308 1.797693134862316e+308 +1.797693134862316e+308 1.797693134862316e+308 1.797693134862316e+308 +1.797693134862316e+308 1.797693134862316e+308 1.797693134862316e+308 +1.797693134862316e+308 1.797693134862316e+308 1.797693134862316e+308 +1.797693134862316e+308 1.797693134862316e+308 1.797693134862316e+308 +1.797693134862316e+308 1.797693134862316e+308 1.797693134862316e+308 +1.797693134862316e+308 1.797693134862316e+308 1.797693134862316e+308 +1.797693134862316e+308 1.797693134862316e+308 1.797693134862316e+308 +1.797693134862316e+308 1.797693134862316e+308 1.797693134862316e+308 +1.797693134862316e+308 1.797693134862316e+308 1.797693134862316e+308 +1.797693134862316e+308 1.797693134862316e+308 1.797693134862316e+308 +1.797693134862316e+308 1.797693134862316e+308 1.797693134862316e+308 +1.797693134862316e+308 1.797693134862316e+308 1.797693134862316e+308 +1.797693134862316e+308 1.797693134862316e+308 1.797693134862316e+308 +1.797693134862316e+308 1.797693134862316e+308 1.797693134862316e+308 +1.797693134862316e+308 1.797693134862316e+308 1.797693134862316e+308 +1.797693134862316e+308 1.797693134862316e+308 1.797693134862316e+308 +1.797693134862316e+308 1.797693134862316e+308 1.797693134862316e+308 +1.797693134862316e+308 1.797693134862316e+308 1.797693134862316e+308 +1.797693134862316e+308 1.797693134862316e+308 1.797693134862316e+308 +1.797693134862316e+308 1.797693134862316e+308 1.797693134862316e+308 +1.797693134862316e+308 1.797693134862316e+308 1.797693134862316e+308 +1.797693134862316e+308 1.797693134862316e+308 1.797693134862316e+308 +1.797693134862316e+308 1.797693134862316e+308 1.797693134862316e+308 +1.797693134862316e+308 1.797693134862316e+308 1.797693134862316e+308 +1.797693134862316e+308 1.797693134862316e+308 1.797693134862316e+308 +1.797693134862316e+308 1.797693134862316e+308 1.797693134862316e+308 +1.797693134862316e+308 1.797693134862316e+308 1.797693134862316e+308 +1.797693134862316e+308 1.797693134862316e+308 1.797693134862316e+308 +1.797693134862316e+308 1.797693134862316e+308 1.797693134862316e+308 +1.797693134862316e+308 1.797693134862316e+308 1.797693134862316e+308 +1.797693134862316e+308 1.797693134862316e+308 1.797693134862316e+308 +1.797693134862316e+308 1.797693134862316e+308 1.797693134862316e+308 +1.797693134862316e+308 1.797693134862316e+308 1.797693134862316e+308 +1.797693134862316e+308 1.797693134862316e+308 1.797693134862316e+308 +1.797693134862316e+308 1.797693134862316e+308 1.797693134862316e+308 +1.797693134862316e+308 1.797693134862316e+308 1.797693134862316e+308 +1.797693134862316e+308 1.797693134862316e+308 1.797693134862316e+308 +1.797693134862316e+308 1.797693134862316e+308 1.797693134862316e+308 +1.797693134862316e+308 1.797693134862316e+308 1.797693134862316e+308 +1.797693134862316e+308 1.797693134862316e+308 1.797693134862316e+308 +1.797693134862316e+308 1.797693134862316e+308 1.797693134862316e+308 +1.797693134862316e+308 1.797693134862316e+308 1.797693134862316e+308 +1.797693134862316e+308 1.797693134862316e+308 1.797693134862316e+308 +1.797693134862316e+308 1.797693134862316e+308 1.797693134862316e+308 +1.797693134862316e+308 1.797693134862316e+308 1.797693134862316e+308 +1.797693134862316e+308 1.797693134862316e+308 1.797693134862316e+308 +1.797693134862316e+308 1.797693134862316e+308 1.797693134862316e+308 +1.797693134862316e+308 1.797693134862316e+308 1.797693134862316e+308 +1.797693134862316e+308 1.797693134862316e+308 1.797693134862316e+308 +1.797693134862316e+308 1.797693134862316e+308 1.797693134862316e+308 +1.797693134862316e+308 1.797693134862316e+308 1.797693134862316e+308 +1.797693134862316e+308 1.797693134862316e+308 1.797693134862316e+308 +1.797693134862316e+308 1.797693134862316e+308 1.797693134862316e+308 +1.797693134862316e+308 1.797693134862316e+308 1.797693134862316e+308 +1.797693134862316e+308 1.797693134862316e+308 1.797693134862316e+308 +1.797693134862316e+308 1.797693134862316e+308 1.797693134862316e+308 +1.797693134862316e+308 1.797693134862316e+308 1.797693134862316e+308 +1.797693134862316e+308 1.797693134862316e+308 1.797693134862316e+308 +1.797693134862316e+308 1.797693134862316e+308 1.797693134862316e+308 +1.797693134862316e+308 1.797693134862316e+308 1.797693134862316e+308 +1.797693134862316e+308 1.797693134862316e+308 1.797693134862316e+308 +1.797693134862316e+308 1.797693134862316e+308 1.797693134862316e+308 +1.797693134862316e+308 1.797693134862316e+308 1.797693134862316e+308 +1.797693134862316e+308 1.797693134862316e+308 1.797693134862316e+308 +1.797693134862316e+308 1.797693134862316e+308 1.797693134862316e+308 +1.797693134862316e+308 1.797693134862316e+308 1.797693134862316e+308 +1.797693134862316e+308 1.797693134862316e+308 1.797693134862316e+308 +1.797693134862316e+308 1.797693134862316e+308 1.797693134862316e+308 +1.797693134862316e+308 1.797693134862316e+308 1.797693134862316e+308 +1.797693134862316e+308 1.797693134862316e+308 1.797693134862316e+308 +1.797693134862316e+308 1.797693134862316e+308 1.797693134862316e+308 + </DataArray> + <DataArray type="Float32" Name="domain" format="ascii"> +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +0.0 +0.0 +0.0 +0.0 +0.0 +0.0 +0.0 +0.0 +0.0 +0.0 +0.0 +0.0 +0.0 +0.0 +0.0 +0.0 +0.0 +0.0 +0.0 +0.0 +0.0 +0.0 +0.0 +0.0 +0.0 + </DataArray> + </PointData> + </Piece> + </PolyData> +</VTKFile> \ No newline at end of file diff --git a/test_data/vtk_points_with_prp_names_test.vtp b/test_data/vtk_points_with_prp_names_test.vtp new file mode 100644 index 0000000000000000000000000000000000000000..4393c1b3d51591d2e339e4c73b6e551ef8ec8eef --- /dev/null +++ b/test_data/vtk_points_with_prp_names_test.vtp @@ -0,0 +1,624 @@ +<VTKFile type="PolyData" version="1.0" byte_order="LittleEndian" header_type="UInt64"> + <PolyData> + <Piece NumberOfPoints="100" NumberOfVerts="100"> + <Points> + <DataArray type="Float64" Name="Points" NumberOfComponents="3" format="ascii"> +0.1911204835906995 0.542772234863242 0.9391084311347881 +0.9487545881659004 0.1334825662740122 0.8529708579401621 +0.1188459509895901 0.2845806263924667 0.4985478715977874 +0.9494255115513571 0.6571555739933832 0.6820341128939604 +0.9508765056026743 0.8424444010749252 0.1426422709400569 +0.4241600935700535 0.1101104546756901 0.5790348923397088 +0.5015477649860327 0.04978780073589282 0.03034110226186872 +0.2638248311058503 0.2284457291343968 0.5130972196287023 +0.9648814452975609 0.1435169418605431 0.766729206421073 +0.2134401839163899 0.02253608148426931 0.216982922881384 +0.4846284368612671 0.3764420624932078 0.7396733922699125 +0.434735135904171 0.7723949715623656 0.9682584144322861 +0.6559721579980234 0.6113956446706338 0.8041492149680158 +0.4751518510863409 0.1929470751467407 0.4184919060587455 +0.4017422504714959 0.4756998883207795 0.7514191254733973 +0.9741391055406354 0.2777696471764847 0.4677990710047078 +0.516999454695266 0.9837323594914132 0.608973632515886 +0.3183446755547334 0.9775376964930735 0.6614359288190325 +0.2615225984428438 0.05012694930186171 0.9252209889585055 +0.5591805320888849 0.6160347680020916 0.9328642718340903 +0.04511229016580046 0.5636999574193265 0.5631490531083434 +0.01565379462407259 0.6531890539204753 0.103735458057497 +0.4642941765653462 0.2718791541308727 0.7043084240498447 +0.9337424079730443 0.2332228584060339 0.6399922230560369 +0.7918573476877728 0.6276354505086152 0.04991205616392565 +0.7502107521285253 0.3131366773447317 0.19084589686671 +0.2824176602147437 0.9048914376623503 0.9933322411992903 +0.5388570006290185 0.09224505788076433 0.4588159357855022 +0.8111961605906505 0.6670802011307887 0.03299479394546021 +0.1746193030035965 0.0841612028497452 0.7565402906590419 +0.380907387528146 0.7448411319661694 0.3949404352368133 +0.648454847443637 0.01712131452880739 0.2993196659724602 +0.04217496675337899 0.6702125993695983 0.9325986239441677 +0.6025758117425368 0.4584851763404509 0.2484190220719115 +0.5538781934632555 0.1989962173630501 0.09692258569555237 +0.9778993211323864 0.5282861618193396 0.7585052627797679 +0.5747754901765029 0.691994518185037 0.6240177463628269 +0.0190601420965697 0.7858039302351866 0.9718763048425892 +0.9605958913636413 0.02805235491690582 0.8743481741406265 +0.4471376599058799 0.03444629486908843 0.3363611228594737 +0.4855563920058513 0.3467532688068444 0.2504588874287629 +0.06088726592208852 0.8818434477402626 0.487926242180203 +0.7688173331465491 0.3705569287433489 0.2221353998304645 +0.7405553773322351 0.06481964953019299 0.7080947900153255 +0.8248419257230861 0.6032289810929312 0.4147853982100331 +0.5532623224178039 0.069752895240787 0.0198561607301905 +0.62566228042093 0.4756770301723494 0.6153318194601071 +0.7208923044517207 0.8346923942050466 0.1753956968079341 +0.4065047456386943 0.3107938767360552 0.9642820872998414 +0.9813515127257669 0.149576726067077 0.5970122266574706 +0.3234378533328707 0.1816097199071153 0.9438311790843349 +0.1749422833440163 0.1213149930716888 0.7111624725111003 +0.8783871629841685 0.4725254636851486 0.0187902778765232 +0.4984406968585957 0.02645017368418622 0.3047248598631822 +0.5659525538487581 0.5163792266899817 0.5717634367422371 +0.8266589993952499 0.1784595024406633 0.9314455003796864 +0.4677879728992526 0.182904799150813 0.6102538466871466 +0.3493071788226687 0.09579277662756258 0.009829631769177675 +0.06205594210789728 0.8267202231442927 0.4057803021716977 +0.1292980471023833 0.9404694445242782 0.704494049211734 +0.07248080052785538 0.5306594567230626 0.5113654972466801 +0.2669917034138964 0.5267642771234902 0.7767509604912479 +0.107293812740923 0.812279267091174 0.3438141465448709 +0.04641719043887351 0.7293949354303093 0.02774338283215492 +0.9206470803261515 0.302787051162316 0.3680017998591057 +0.5301836635776872 0.2944425315156381 0.7779592353487577 +0.7284318202974127 0.5726061006669858 0.9671572714731296 +0.4387750514136743 0.9036539609526965 0.5150925589189433 +0.1984811508103827 0.58458962613503 0.7387164131557958 +0.06920237975697853 0.3170582590079595 0.540727075170387 +0.3222270524957092 0.6117852739469217 0.7979130857633832 +0.7328473309833337 0.7341872287289299 0.7744654341254079 +0.4964468728301829 0.3467352349093485 0.4469504580148727 +0.2956241772996149 0.239996703928338 0.899591979617443 +0.5312996827851517 0.9626195638148954 0.9197927785945158 +0.1936272575083993 0.04736226888030662 0.3476663842575315 +0.03063651498843147 0.6804258969237907 0.206325862460618 +0.2162310722208437 0.4139981794105851 0.5061119177815915 +0.1279096460771236 0.6331329359053015 0.1726812214252161 +0.03988405711022948 0.8664112489826925 0.7867656302234318 +0.5894753410995587 0.1962015907297835 0.4864680392265003 +0.8337276639259757 0.8855224059030775 0.3408712603427138 +0.3151690930523122 0.8929782123803263 0.1475944068992537 +0.6346838832205702 0.08787252377352094 0.1771221099527915 +0.9483228959383802 0.6885231152695962 0.5423441249680034 +0.04282043429891558 0.9772254175146924 0.4217935090783083 +0.8795632899834014 0.4547318758188133 0.3043951029868819 +0.34115584947115 0.05546112169722974 0.699284599768331 +0.9591583186019406 0.3684492295754844 0.3975495566159722 +0.3693085776784883 0.95955262637718 0.1737343588966251 +0.6930600427123438 0.7623843747366292 0.3009969884059406 +0.8824759452219699 0.2422499767307891 0.4674174208345742 +0.9270398081620038 0.3714305339979797 0.9261723494035321 +0.5638048846443161 0.3253738999714265 0.3944915701195171 +0.2027093844009985 0.467846069499922 0.759130632151323 +0.8118686413802818 0.9446768618912078 0.3963957473652457 +0.6122759172635731 0.9233602513916044 0.3226791018048865 +0.6749615116627135 0.08558142716736467 0.08389654146325935 +0.2640223087444797 0.5175087822054006 0.1233243711184131 +0.058091392946387 0.6857649694728828 0.05399829239863982 + </DataArray> + </Points> + <Verts> + <DataArray type="Int64" Name="connectivity" format="ascii"> +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +36 +37 +38 +39 +40 +41 +42 +43 +44 +45 +46 +47 +48 +49 +50 +51 +52 +53 +54 +55 +56 +57 +58 +59 +60 +61 +62 +63 +64 +65 +66 +67 +68 +69 +70 +71 +72 +73 +74 +75 +76 +77 +78 +79 +80 +81 +82 +83 +84 +85 +86 +87 +88 +89 +90 +91 +92 +93 +94 +95 +96 +97 +98 +99 + </DataArray> + <DataArray type="Int64" Name="offsets" format="ascii"> +1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +36 +37 +38 +39 +40 +41 +42 +43 +44 +45 +46 +47 +48 +49 +50 +51 +52 +53 +54 +55 +56 +57 +58 +59 +60 +61 +62 +63 +64 +65 +66 +67 +68 +69 +70 +71 +72 +73 +74 +75 +76 +77 +78 +79 +80 +81 +82 +83 +84 +85 +86 +87 +88 +89 +90 +91 +92 +93 +94 +95 +96 +97 +98 +99 +100 + </DataArray> + </Verts> + <PointData> + <DataArray type="Float32" Name="scalar" format="ascii"> +0.7380653 +0.9748546 +0.2975725 +0.02518314 +0.7643975 +0.8740048 +0.8805022 +0.4389048 +0.3744993 +0.2436388 +0.03901848 +0.1732561 +0.787833 +0.4825779 +0.5225036 +0.2073478 +0.6223137 +0.4138168 +0.7785255 +0.7964005 +0.7401186 +0.5737079 +0.01387276 +0.6364312 +0.3425626 +0.9988492 +0.6473725 +0.4295211 +0.2624457 +0.7386184 +0.07949429 +0.9886052 +0.2129485 +0.1183546 +0.8314249 +0.1713345 +0.1930341 +0.4657843 +0.517521 +0.2054123 +0.6110951 +0.001340698 +0.7471956 +0.2307277 +0.3041754 +0.1569995 +0.7645034 +0.5317364 +0.7120366 +0.877432 +0.2872201 +0.6655521 +0.9044887 +0.6745987 +0.7498594 +0.3289186 +0.3404088 +0.8011235 +0.9216934 +0.5076056 +0.7365903 +0.5641357 +0.05609748 +0.4667966 +0.4141732 +0.09641074 +0.8019916 +0.6241942 +0.04796845 +0.3872222 +0.4465366 +0.3631405 +0.5434729 +0.2925248 +0.6808926 +0.4539952 +0.9060355 +0.004086397 +0.2966204 +0.4175316 +0.1422059 +0.4069305 +0.5895199 +0.447751 +0.5272425 +0.706947 +0.1126621 +0.9515968 +0.3111648 +0.1312392 +0.2516242 +0.3421274 +0.1825391 +0.7721381 +0.4169663 +0.6607151 +0.2419904 +0.4080551 +0.6292673 +0.3219828 + </DataArray> + <DataArray type="Float32" Name="vector" NumberOfComponents="3" format="ascii"> +0.5990317 0.02347561 0.3951705 +0.182712 0.3535236 0.5873617 +0.02135292 0.6103745 0.9763628 +0.9335228 0.7101471 0.6822569 +0.1723424 0.5220416 0.298533 +0.4655708 0.1824962 0.4190991 +0.2772013 0.250088 0.6072338 +0.9764787 0.9255797 0.3279163 +0.1902463 0.0614199 0.3732455 +0.5941165 0.4579693 0.1034673 +0.1146077 0.700754 0.4361788 +0.42899 0.7911557 0.0911006 +0.001495549 0.7489657 0.283258 +0.9556063 0.5025018 0.1946696 +0.196855 0.2415158 0.1236921 +0.8652724 0.2583924 0.08826474 +0.7392471 0.5954264 0.1863809 +0.2947665 0.6814652 0.666369 +0.9677892 0.5631894 0.486807 +0.7617198 0.8105871 0.6233074 +0.7009468 0.003264953 0.8053668 +0.7683834 0.02258709 0.4571891 +0.5162559 0.08231235 0.2024633 +0.5456192 0.6361949 0.8414957 +0.009091083 0.6885247 0.3157951 +0.6171004 0.4601619 0.2703731 +0.9371002 0.3275327 0.05851735 +0.6082056 0.2555821 0.8083426 +0.5077175 0.2733603 0.2641723 +0.2197255 0.1339068 0.2320302 +0.7756289 0.9963474 0.113348 +0.8657068 0.4348891 0.1796944 +0.3761124 0.06364942 0.7744325 +0.5634099 0.2960636 0.0811892 +0.5605351 0.7096261 0.9665291 +0.6467452 0.5860363 0.006718087 +0.8888776 0.639761 0.562542 +0.6482655 0.467768 0.6943737 +0.7659602 0.2142366 0.9645078 +0.4404316 0.7968533 0.4025637 +0.9418144 0.5460901 0.5123132 +0.90294 0.8647353 0.7937461 +0.8639637 0.9788803 0.5538249 +0.07248071 0.5658061 0.4706749 +0.9830479 0.9705274 0.7998453 +0.1452445 0.8859792 0.6805948 +0.4689904 0.8781258 0.4578618 +0.5520824 0.354637 0.6366761 +0.530658 0.1581565 0.6042695 +0.09299212 0.950583 0.6722253 +0.3226375 0.6785556 0.7117471 +0.7402906 0.689837 0.8888651 +0.6446931 0.3648909 0.6606749 +0.3299919 0.04307922 0.6885765 +0.4013279 0.137207 0.4039625 +0.2358644 0.5446841 0.4405788 +0.9601666 0.6686615 0.1980327 +0.8658391 0.6530218 0.3252512 +0.7306508 0.3393511 0.4878008 +0.7763534 0.3123941 0.4041222 +0.331228 0.3493605 0.2123068 +0.2452836 0.5909495 0.8161697 +0.6068508 0.09419347 0.144959 +0.1525297 0.3657426 0.2149011 +0.8909742 0.2703019 0.7552752 +0.2456609 0.8650802 0.3094309 +0.5690894 0.4480733 0.8299741 +0.1932477 0.9030499 0.4710369 +0.3178722 0.4252766 0.0141347 +0.7888145 0.3960887 0.02404979 +0.325474 0.1589254 0.8040309 +0.9717881 0.56757 0.6420289 +0.460925 0.9577457 0.9691333 +0.5600246 0.08783633 0.4535534 +0.122126 0.6360639 0.9787771 +0.9500107 0.9914594 0.8982705 +0.6311221 0.05721635 0.9487336 +0.1839568 0.3926444 0.06868142 +0.07882256 0.8241018 0.3033241 +0.05246073 0.1561136 0.6536888 +0.3193631 0.08435674 0.354575 +0.7173896 0.1376588 0.4041771 +0.8680261 0.2830056 0.1022792 +0.1134491 0.009212147 0.4017782 +0.3346388 0.3196138 0.6995248 +0.8248349 0.7687701 0.02155638 +0.7309955 0.6262591 0.9880216 +0.08681852 0.002121294 0.5437131 +0.9437472 0.2721777 0.7771147 +0.1797407 0.07638069 0.691466 +0.8043212 0.3238258 0.9396088 +0.8366987 0.4435953 0.9016082 +0.9074928 0.2645595 0.3927977 +0.5846261 0.3812043 0.5862598 +0.6945408 0.1743567 0.8518582 +0.8137829 0.2186289 0.580568 +0.1208917 0.9936497 0.2615958 +0.09439572 0.5357695 0.2788 +0.703697 0.9581603 0.3156907 +0.2391254 0.9066873 0.8127451 + </DataArray> + <DataArray type="Float32" Name="domain" format="ascii"> +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +1.0 +0.0 +0.0 +0.0 +0.0 +0.0 +0.0 +0.0 +0.0 +0.0 +0.0 +0.0 +0.0 +0.0 +0.0 +0.0 +0.0 +0.0 +0.0 +0.0 +0.0 +0.0 +0.0 +0.0 +0.0 +0.0 + </DataArray> + </PointData> + </Piece> + </PolyData> +</VTKFile> \ No newline at end of file